@fllf/agent-sdk 0.1.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 +240 -0
- package/dist/agent/Agent.d.ts +34 -0
- package/dist/agent/Agent.d.ts.map +1 -0
- package/dist/agent/Agent.js +168 -0
- package/dist/agent/Agent.js.map +1 -0
- package/dist/agent/createAgent.d.ts +4 -0
- package/dist/agent/createAgent.d.ts.map +1 -0
- package/dist/agent/createAgent.js +8 -0
- package/dist/agent/createAgent.js.map +1 -0
- package/dist/agent/index.d.ts +4 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/types.d.ts +23 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +3 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/config/config.d.ts +35 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +123 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/executors/base.d.ts +44 -0
- package/dist/executors/base.d.ts.map +1 -0
- package/dist/executors/base.js +3 -0
- package/dist/executors/base.js.map +1 -0
- package/dist/executors/index.d.ts +7 -0
- package/dist/executors/index.d.ts.map +1 -0
- package/dist/executors/index.js +10 -0
- package/dist/executors/index.js.map +1 -0
- package/dist/executors/rag-executor.d.ts +16 -0
- package/dist/executors/rag-executor.d.ts.map +1 -0
- package/dist/executors/rag-executor.js +120 -0
- package/dist/executors/rag-executor.js.map +1 -0
- package/dist/executors/simple-chat-executor.d.ts +5 -0
- package/dist/executors/simple-chat-executor.d.ts.map +1 -0
- package/dist/executors/simple-chat-executor.js +77 -0
- package/dist/executors/simple-chat-executor.js.map +1 -0
- package/dist/executors/tool-calling-executor.d.ts +10 -0
- package/dist/executors/tool-calling-executor.d.ts.map +1 -0
- package/dist/executors/tool-calling-executor.js +151 -0
- package/dist/executors/tool-calling-executor.js.map +1 -0
- package/dist/history/base.d.ts +16 -0
- package/dist/history/base.d.ts.map +1 -0
- package/dist/history/base.js +10 -0
- package/dist/history/base.js.map +1 -0
- package/dist/history/in-memory.d.ts +26 -0
- package/dist/history/in-memory.d.ts.map +1 -0
- package/dist/history/in-memory.js +88 -0
- package/dist/history/in-memory.js.map +1 -0
- package/dist/history/index.d.ts +5 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +10 -0
- package/dist/history/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/LLM.d.ts +23 -0
- package/dist/llm/LLM.d.ts.map +1 -0
- package/dist/llm/LLM.js +404 -0
- package/dist/llm/LLM.js.map +1 -0
- package/dist/llm/errors.d.ts +43 -0
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +128 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/factory.d.ts +9 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +28 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/index.d.ts +6 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +18 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/providers/base.d.ts +3 -0
- package/dist/llm/providers/base.d.ts.map +1 -0
- package/dist/llm/providers/base.js +3 -0
- package/dist/llm/providers/base.js.map +1 -0
- package/dist/llm/providers/local.d.ts +6 -0
- package/dist/llm/providers/local.d.ts.map +1 -0
- package/dist/llm/providers/local.js +19 -0
- package/dist/llm/providers/local.js.map +1 -0
- package/dist/llm/providers/openai-compatible.d.ts +13 -0
- package/dist/llm/providers/openai-compatible.d.ts.map +1 -0
- package/dist/llm/providers/openai-compatible.js +176 -0
- package/dist/llm/providers/openai-compatible.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +6 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +23 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/types.d.ts +116 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +3 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/messages/index.d.ts +3 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +6 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/messages/message.d.ts +25 -0
- package/dist/messages/message.d.ts.map +1 -0
- package/dist/messages/message.js +110 -0
- package/dist/messages/message.js.map +1 -0
- package/dist/messages/types.d.ts +20 -0
- package/dist/messages/types.d.ts.map +1 -0
- package/dist/messages/types.js +3 -0
- package/dist/messages/types.js.map +1 -0
- package/dist/observability/console-observer.d.ts +10 -0
- package/dist/observability/console-observer.d.ts.map +1 -0
- package/dist/observability/console-observer.js +28 -0
- package/dist/observability/console-observer.js.map +1 -0
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +11 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/observer.d.ts +8 -0
- package/dist/observability/observer.d.ts.map +1 -0
- package/dist/observability/observer.js +46 -0
- package/dist/observability/observer.js.map +1 -0
- package/dist/observability/types.d.ts +34 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +3 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/rag/chunking/auto-chunker.d.ts +25 -0
- package/dist/rag/chunking/auto-chunker.d.ts.map +1 -0
- package/dist/rag/chunking/auto-chunker.js +101 -0
- package/dist/rag/chunking/auto-chunker.js.map +1 -0
- package/dist/rag/chunking/chunker.d.ts +44 -0
- package/dist/rag/chunking/chunker.d.ts.map +1 -0
- package/dist/rag/chunking/chunker.js +162 -0
- package/dist/rag/chunking/chunker.js.map +1 -0
- package/dist/rag/chunking/index.d.ts +6 -0
- package/dist/rag/chunking/index.d.ts.map +1 -0
- package/dist/rag/chunking/index.js +22 -0
- package/dist/rag/chunking/index.js.map +1 -0
- package/dist/rag/chunking/markdown-chunker.d.ts +13 -0
- package/dist/rag/chunking/markdown-chunker.d.ts.map +1 -0
- package/dist/rag/chunking/markdown-chunker.js +144 -0
- package/dist/rag/chunking/markdown-chunker.js.map +1 -0
- package/dist/rag/chunking/parent-child.d.ts +16 -0
- package/dist/rag/chunking/parent-child.d.ts.map +1 -0
- package/dist/rag/chunking/parent-child.js +76 -0
- package/dist/rag/chunking/parent-child.js.map +1 -0
- package/dist/rag/chunking/recursive-chunker.d.ts +11 -0
- package/dist/rag/chunking/recursive-chunker.d.ts.map +1 -0
- package/dist/rag/chunking/recursive-chunker.js +27 -0
- package/dist/rag/chunking/recursive-chunker.js.map +1 -0
- package/dist/rag/embeddings/embedder.d.ts +24 -0
- package/dist/rag/embeddings/embedder.d.ts.map +1 -0
- package/dist/rag/embeddings/embedder.js +73 -0
- package/dist/rag/embeddings/embedder.js.map +1 -0
- package/dist/rag/embeddings/embedding-cache.d.ts +40 -0
- package/dist/rag/embeddings/embedding-cache.d.ts.map +1 -0
- package/dist/rag/embeddings/embedding-cache.js +118 -0
- package/dist/rag/embeddings/embedding-cache.js.map +1 -0
- package/dist/rag/embeddings/fake-embedder.d.ts +20 -0
- package/dist/rag/embeddings/fake-embedder.d.ts.map +1 -0
- package/dist/rag/embeddings/fake-embedder.js +55 -0
- package/dist/rag/embeddings/fake-embedder.js.map +1 -0
- package/dist/rag/embeddings/index.d.ts +5 -0
- package/dist/rag/embeddings/index.d.ts.map +1 -0
- package/dist/rag/embeddings/index.js +21 -0
- package/dist/rag/embeddings/index.js.map +1 -0
- package/dist/rag/embeddings/openai-compatible-embedder.d.ts +46 -0
- package/dist/rag/embeddings/openai-compatible-embedder.d.ts.map +1 -0
- package/dist/rag/embeddings/openai-compatible-embedder.js +145 -0
- package/dist/rag/embeddings/openai-compatible-embedder.js.map +1 -0
- package/dist/rag/generation/context-builder.d.ts +22 -0
- package/dist/rag/generation/context-builder.d.ts.map +1 -0
- package/dist/rag/generation/context-builder.js +166 -0
- package/dist/rag/generation/context-builder.js.map +1 -0
- package/dist/rag/generation/generator.d.ts +25 -0
- package/dist/rag/generation/generator.d.ts.map +1 -0
- package/dist/rag/generation/generator.js +185 -0
- package/dist/rag/generation/generator.js.map +1 -0
- package/dist/rag/generation/index.d.ts +4 -0
- package/dist/rag/generation/index.d.ts.map +1 -0
- package/dist/rag/generation/index.js +20 -0
- package/dist/rag/generation/index.js.map +1 -0
- package/dist/rag/generation/verifier.d.ts +13 -0
- package/dist/rag/generation/verifier.d.ts.map +1 -0
- package/dist/rag/generation/verifier.js +43 -0
- package/dist/rag/generation/verifier.js.map +1 -0
- package/dist/rag/index.d.ts +9 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +25 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/rag/ingestion/index.d.ts +4 -0
- package/dist/rag/ingestion/index.d.ts.map +1 -0
- package/dist/rag/ingestion/index.js +20 -0
- package/dist/rag/ingestion/index.js.map +1 -0
- package/dist/rag/ingestion/loaders.d.ts +69 -0
- package/dist/rag/ingestion/loaders.d.ts.map +1 -0
- package/dist/rag/ingestion/loaders.js +653 -0
- package/dist/rag/ingestion/loaders.js.map +1 -0
- package/dist/rag/ingestion/metadata.d.ts +31 -0
- package/dist/rag/ingestion/metadata.d.ts.map +1 -0
- package/dist/rag/ingestion/metadata.js +81 -0
- package/dist/rag/ingestion/metadata.js.map +1 -0
- package/dist/rag/ingestion/normalizer.d.ts +20 -0
- package/dist/rag/ingestion/normalizer.d.ts.map +1 -0
- package/dist/rag/ingestion/normalizer.js +161 -0
- package/dist/rag/ingestion/normalizer.js.map +1 -0
- package/dist/rag/pipeline.d.ts +62 -0
- package/dist/rag/pipeline.d.ts.map +1 -0
- package/dist/rag/pipeline.js +75 -0
- package/dist/rag/pipeline.js.map +1 -0
- package/dist/rag/retrieval/dense-retriever.d.ts +17 -0
- package/dist/rag/retrieval/dense-retriever.d.ts.map +1 -0
- package/dist/rag/retrieval/dense-retriever.js +21 -0
- package/dist/rag/retrieval/dense-retriever.js.map +1 -0
- package/dist/rag/retrieval/fusion.d.ts +12 -0
- package/dist/rag/retrieval/fusion.d.ts.map +1 -0
- package/dist/rag/retrieval/fusion.js +54 -0
- package/dist/rag/retrieval/fusion.js.map +1 -0
- package/dist/rag/retrieval/http-rerank-model-client.d.ts +41 -0
- package/dist/rag/retrieval/http-rerank-model-client.d.ts.map +1 -0
- package/dist/rag/retrieval/http-rerank-model-client.js +130 -0
- package/dist/rag/retrieval/http-rerank-model-client.js.map +1 -0
- package/dist/rag/retrieval/hybrid-retriever.d.ts +22 -0
- package/dist/rag/retrieval/hybrid-retriever.d.ts.map +1 -0
- package/dist/rag/retrieval/hybrid-retriever.js +49 -0
- package/dist/rag/retrieval/hybrid-retriever.js.map +1 -0
- package/dist/rag/retrieval/index.d.ts +8 -0
- package/dist/rag/retrieval/index.d.ts.map +1 -0
- package/dist/rag/retrieval/index.js +24 -0
- package/dist/rag/retrieval/index.js.map +1 -0
- package/dist/rag/retrieval/reranker.d.ts +30 -0
- package/dist/rag/retrieval/reranker.d.ts.map +1 -0
- package/dist/rag/retrieval/reranker.js +85 -0
- package/dist/rag/retrieval/reranker.js.map +1 -0
- package/dist/rag/retrieval/sparse-retriever.d.ts +14 -0
- package/dist/rag/retrieval/sparse-retriever.d.ts.map +1 -0
- package/dist/rag/retrieval/sparse-retriever.js +18 -0
- package/dist/rag/retrieval/sparse-retriever.js.map +1 -0
- package/dist/rag/retrieval/types.d.ts +11 -0
- package/dist/rag/retrieval/types.d.ts.map +1 -0
- package/dist/rag/retrieval/types.js +10 -0
- package/dist/rag/retrieval/types.js.map +1 -0
- package/dist/rag/retrieval/utils.d.ts +8 -0
- package/dist/rag/retrieval/utils.d.ts.map +1 -0
- package/dist/rag/retrieval/utils.js +114 -0
- package/dist/rag/retrieval/utils.js.map +1 -0
- package/dist/rag/stores/in-memory-document-store.d.ts +14 -0
- package/dist/rag/stores/in-memory-document-store.d.ts.map +1 -0
- package/dist/rag/stores/in-memory-document-store.js +64 -0
- package/dist/rag/stores/in-memory-document-store.js.map +1 -0
- package/dist/rag/stores/in-memory-keyword-store.d.ts +10 -0
- package/dist/rag/stores/in-memory-keyword-store.d.ts.map +1 -0
- package/dist/rag/stores/in-memory-keyword-store.js +99 -0
- package/dist/rag/stores/in-memory-keyword-store.js.map +1 -0
- package/dist/rag/stores/in-memory-vector-store.d.ts +14 -0
- package/dist/rag/stores/in-memory-vector-store.d.ts.map +1 -0
- package/dist/rag/stores/in-memory-vector-store.js +61 -0
- package/dist/rag/stores/in-memory-vector-store.js.map +1 -0
- package/dist/rag/stores/index.d.ts +6 -0
- package/dist/rag/stores/index.d.ts.map +1 -0
- package/dist/rag/stores/index.js +22 -0
- package/dist/rag/stores/index.js.map +1 -0
- package/dist/rag/stores/postgres/index.d.ts +6 -0
- package/dist/rag/stores/postgres/index.d.ts.map +1 -0
- package/dist/rag/stores/postgres/index.js +22 -0
- package/dist/rag/stores/postgres/index.js.map +1 -0
- package/dist/rag/stores/postgres/pg-vector-store.d.ts +16 -0
- package/dist/rag/stores/postgres/pg-vector-store.d.ts.map +1 -0
- package/dist/rag/stores/postgres/pg-vector-store.js +77 -0
- package/dist/rag/stores/postgres/pg-vector-store.js.map +1 -0
- package/dist/rag/stores/postgres/postgres-document-store.d.ts +15 -0
- package/dist/rag/stores/postgres/postgres-document-store.d.ts.map +1 -0
- package/dist/rag/stores/postgres/postgres-document-store.js +174 -0
- package/dist/rag/stores/postgres/postgres-document-store.js.map +1 -0
- package/dist/rag/stores/postgres/postgres-keyword-store.d.ts +15 -0
- package/dist/rag/stores/postgres/postgres-keyword-store.d.ts.map +1 -0
- package/dist/rag/stores/postgres/postgres-keyword-store.js +163 -0
- package/dist/rag/stores/postgres/postgres-keyword-store.js.map +1 -0
- package/dist/rag/stores/postgres/schema.d.ts +8 -0
- package/dist/rag/stores/postgres/schema.d.ts.map +1 -0
- package/dist/rag/stores/postgres/schema.js +91 -0
- package/dist/rag/stores/postgres/schema.js.map +1 -0
- package/dist/rag/stores/postgres/sql.d.ts +23 -0
- package/dist/rag/stores/postgres/sql.d.ts.map +1 -0
- package/dist/rag/stores/postgres/sql.js +177 -0
- package/dist/rag/stores/postgres/sql.js.map +1 -0
- package/dist/rag/stores/postgres/types.d.ts +17 -0
- package/dist/rag/stores/postgres/types.d.ts.map +1 -0
- package/dist/rag/stores/postgres/types.js +3 -0
- package/dist/rag/stores/postgres/types.js.map +1 -0
- package/dist/rag/stores/types.d.ts +36 -0
- package/dist/rag/stores/types.d.ts.map +1 -0
- package/dist/rag/stores/types.js +3 -0
- package/dist/rag/stores/types.js.map +1 -0
- package/dist/rag/stores/utils.d.ts +11 -0
- package/dist/rag/stores/utils.d.ts.map +1 -0
- package/dist/rag/stores/utils.js +200 -0
- package/dist/rag/stores/utils.js.map +1 -0
- package/dist/rag/types.d.ts +174 -0
- package/dist/rag/types.d.ts.map +1 -0
- package/dist/rag/types.js +3 -0
- package/dist/rag/types.js.map +1 -0
- package/dist/tools/base.d.ts +28 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +68 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/builtin/advancedSearchTool.d.ts +24 -0
- package/dist/tools/builtin/advancedSearchTool.d.ts.map +1 -0
- package/dist/tools/builtin/advancedSearchTool.js +134 -0
- package/dist/tools/builtin/advancedSearchTool.js.map +1 -0
- package/dist/tools/builtin/ragSearchTool.d.ts +29 -0
- package/dist/tools/builtin/ragSearchTool.d.ts.map +1 -0
- package/dist/tools/builtin/ragSearchTool.js +91 -0
- package/dist/tools/builtin/ragSearchTool.js.map +1 -0
- package/dist/tools/executor.d.ts +10 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +86 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +16 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +35 -0
- package/dist/tools/registry.js.map +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# FAgent
|
|
2
|
+
|
|
3
|
+
FAgent is a composable TypeScript foundation for building Agent runtimes.
|
|
4
|
+
|
|
5
|
+
It provides the shared building blocks for an Agent instead of forcing users to subclass a base class. An Agent is assembled from an LLM, session-scoped message history, tools, config, and an executor.
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
The project is in an early runtime-foundation stage. The core architecture is in place:
|
|
10
|
+
|
|
11
|
+
- Composable `Agent`
|
|
12
|
+
- Unified `LLM.chat()` interface
|
|
13
|
+
- OpenAI and local OpenAI-compatible providers
|
|
14
|
+
- Streaming support through `LLM.stream()`
|
|
15
|
+
- Timeout, retry, abort, and normalized LLM errors
|
|
16
|
+
- `generateObject()` structured output with Zod validation
|
|
17
|
+
- Session-scoped message history with an in-memory store
|
|
18
|
+
- Simple chat and tool-calling executors
|
|
19
|
+
- Zod-driven tool system
|
|
20
|
+
- Optional observer events for debugging and tracing
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Scripts
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm test
|
|
32
|
+
npm run typecheck
|
|
33
|
+
npm run build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm run example:simple-chat
|
|
40
|
+
npm run example:tool-calling
|
|
41
|
+
npm run example:local-ollama
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Environment
|
|
45
|
+
|
|
46
|
+
OpenAI:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
OPENAI_API_KEY=...
|
|
50
|
+
OPENAI_MODEL=gpt-4o-mini
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Local OpenAI-compatible runtime, such as Ollama, LM Studio, vLLM, or compatible services:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
LOCAL_BASE_URL=http://127.0.0.1:11434/v1
|
|
57
|
+
LOCAL_MODEL=llama3
|
|
58
|
+
LOCAL_API_KEY=local-key
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If no OpenAI key is configured, FAgent falls back to the local provider.
|
|
62
|
+
|
|
63
|
+
## Basic Usage
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { Agent } from 'fagent';
|
|
67
|
+
|
|
68
|
+
const agent = new Agent({
|
|
69
|
+
name: 'simple-chat',
|
|
70
|
+
systemPrompt: 'You are a concise assistant.',
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const result = await agent.run('What is FAgent?');
|
|
74
|
+
console.log(result.output);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Sessions
|
|
78
|
+
|
|
79
|
+
FAgent uses LangChain-style session-scoped message history. The `Agent` is the reusable runtime, and `sessionId` selects the conversation context.
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
const agent = new Agent({
|
|
83
|
+
name: 'support-bot',
|
|
84
|
+
systemPrompt: 'You are a helpful support assistant.',
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
await agent.run('Hi, I need help with an order.', {
|
|
88
|
+
sessionId: 'session_a',
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
await agent.run('Start a separate conversation.', {
|
|
92
|
+
sessionId: 'session_b',
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Runs from different sessions can proceed concurrently. Runs for the same session are serialized so the conversation history stays ordered.
|
|
97
|
+
|
|
98
|
+
If `sessionId` is omitted or blank, FAgent uses the shared `default` session. For production apps where every request should belong to an explicit user, tenant, or conversation, enable strict session ids:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
const agent = new Agent({
|
|
102
|
+
name: 'support-bot',
|
|
103
|
+
requireSessionId: true,
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
await agent.run('Hi, I need help with an order.', {
|
|
107
|
+
sessionId: 'user_123:order_456',
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
With `requireSessionId: true`, `run`, `addMessage`, `clearHistory`, and `getHistory` reject missing or blank session ids instead of falling back to `default`.
|
|
112
|
+
|
|
113
|
+
Recoverable tool failures stay inside the agent loop: FAgent records the failure as a `tool` message, sends it back to the model, and commits the full turn if the executor completes successfully. If the run cannot continue because the model/provider fails before producing a response, FAgent leaves that session's history unchanged and reports the failure through runtime events such as `agent:error` and `llm:error`.
|
|
114
|
+
|
|
115
|
+
For the built-in `InMemoryMessageHistoryStore`, `clear(sessionId)` empties a session while keeping its history entry alive. Use `deleteSession(sessionId)` to release one session entry, or `clearAll()` to release every in-memory session entry.
|
|
116
|
+
|
|
117
|
+
## Tool Calling
|
|
118
|
+
|
|
119
|
+
Tools are defined with Zod schemas. The framework turns the schema into an OpenAI-compatible tool schema and validates model-supplied arguments before running the tool.
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
import { z } from 'zod';
|
|
123
|
+
import { Agent, Tool, ToolCallingExecutor } from 'fagent';
|
|
124
|
+
|
|
125
|
+
const AddToolSchema = z.object({
|
|
126
|
+
left: z.number().describe('Left number.'),
|
|
127
|
+
right: z.number().describe('Right number.'),
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
class AddTool extends Tool<typeof AddToolSchema, number> {
|
|
131
|
+
constructor() {
|
|
132
|
+
super({
|
|
133
|
+
name: 'add',
|
|
134
|
+
description: 'Adds two numbers.',
|
|
135
|
+
schema: AddToolSchema,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
protected run(input: z.infer<typeof AddToolSchema>): number {
|
|
140
|
+
return input.left + input.right;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const agent = new Agent({
|
|
145
|
+
name: 'tool-agent',
|
|
146
|
+
tools: [new AddTool()],
|
|
147
|
+
executor: new ToolCallingExecutor(),
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const result = await agent.run('Use the add tool to calculate 19 + 23.');
|
|
151
|
+
console.log(result.output);
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Structured Output
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
import { z } from 'zod';
|
|
158
|
+
import { LLM } from 'fagent';
|
|
159
|
+
|
|
160
|
+
const llm = new LLM();
|
|
161
|
+
|
|
162
|
+
const result = await llm.generateObject({
|
|
163
|
+
messages: [
|
|
164
|
+
{ role: 'user', content: 'Return a short project summary.' },
|
|
165
|
+
],
|
|
166
|
+
schema: z.object({
|
|
167
|
+
summary: z.string(),
|
|
168
|
+
confidence: z.number(),
|
|
169
|
+
}),
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
console.log(result.value);
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Observability
|
|
176
|
+
|
|
177
|
+
FAgent emits structured runtime events, but it does not print anything by default. Pass an observer when you want to debug or forward events to a logging system.
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
import { Agent, ConsoleObserver } from 'fagent';
|
|
181
|
+
|
|
182
|
+
const agent = new Agent({
|
|
183
|
+
name: 'debug-agent',
|
|
184
|
+
observer: new ConsoleObserver(),
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
await agent.run('Hello');
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Events include:
|
|
191
|
+
|
|
192
|
+
- `agent:start`
|
|
193
|
+
- `agent:end`
|
|
194
|
+
- `agent:error`
|
|
195
|
+
- `llm:start`
|
|
196
|
+
- `llm:end`
|
|
197
|
+
- `llm:error`
|
|
198
|
+
- `tool:start`
|
|
199
|
+
- `tool:end`
|
|
200
|
+
- `tool:error`
|
|
201
|
+
|
|
202
|
+
Custom observers can send events anywhere:
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
const observer = {
|
|
206
|
+
onEvent(event) {
|
|
207
|
+
myLogger.info(event);
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Architecture
|
|
213
|
+
|
|
214
|
+
```txt
|
|
215
|
+
Agent
|
|
216
|
+
-> Executor
|
|
217
|
+
-> LLM
|
|
218
|
+
-> MessageHistory(sessionId)
|
|
219
|
+
-> ToolRegistry
|
|
220
|
+
-> ToolExecutor
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Main responsibilities:
|
|
224
|
+
|
|
225
|
+
- `Agent`: assembles runtime components and delegates execution.
|
|
226
|
+
- `Executor`: controls the run strategy, such as simple chat or tool calling.
|
|
227
|
+
- `LLM`: provides a unified model interface with timeout, retry, abort, and structured output support.
|
|
228
|
+
- `Provider`: adapts OpenAI-compatible SDK calls to the unified LLM interface.
|
|
229
|
+
- `MessageHistoryStore`: stores conversation history by `sessionId`.
|
|
230
|
+
- `Tool`: defines external capabilities with Zod schemas.
|
|
231
|
+
|
|
232
|
+
## Public Entry
|
|
233
|
+
|
|
234
|
+
All public APIs are exported from:
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
import { Agent, LLM, Tool } from 'fagent';
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
During local development, examples import from `../src` so they can run without building first.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Config } from '../config';
|
|
2
|
+
import type { AgentExecutor, AgentResult, AgentRunOptions } from '../executors';
|
|
3
|
+
import type { MessageHistoryStore } from '../history';
|
|
4
|
+
import type { ChatModel } from '../llm';
|
|
5
|
+
import type { Message } from '../messages';
|
|
6
|
+
import type { Observer } from '../observability';
|
|
7
|
+
import { ToolRegistry } from '../tools';
|
|
8
|
+
import type { AgentComponents } from './types';
|
|
9
|
+
export declare class Agent {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly llm: ChatModel;
|
|
12
|
+
readonly historyStore: MessageHistoryStore;
|
|
13
|
+
readonly tools: ToolRegistry;
|
|
14
|
+
readonly systemPrompt: string | undefined;
|
|
15
|
+
readonly config: Config;
|
|
16
|
+
readonly executor: AgentExecutor;
|
|
17
|
+
readonly observer: Observer | undefined;
|
|
18
|
+
readonly requireSessionId: boolean;
|
|
19
|
+
private readonly sessionQueues;
|
|
20
|
+
constructor(components: AgentComponents);
|
|
21
|
+
/**
|
|
22
|
+
* Agent 只负责组装上下文并交给 executor。
|
|
23
|
+
* 不同 Agent 行为通过替换 executor / historyStore / tools / llm 实现。
|
|
24
|
+
*/
|
|
25
|
+
run(input: string, options?: AgentRunOptions): Promise<AgentResult>;
|
|
26
|
+
private runWithSession;
|
|
27
|
+
addMessage(message: Message, sessionId?: string): Promise<void>;
|
|
28
|
+
clearHistory(sessionId?: string): Promise<void>;
|
|
29
|
+
getHistory(sessionId?: string): Promise<Message[]>;
|
|
30
|
+
toString(): string;
|
|
31
|
+
private runInSessionQueue;
|
|
32
|
+
private resolveSessionId;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=Agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,qBAAa,KAAK;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;gBAEtD,UAAU,EAAE,eAAe;IAcvC;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;YAS/D,cAAc;IA2DtB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQxD,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;CAO3B"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Agent = void 0;
|
|
4
|
+
const config_1 = require("../config");
|
|
5
|
+
const executors_1 = require("../executors");
|
|
6
|
+
const history_1 = require("../history");
|
|
7
|
+
const llm_1 = require("../llm");
|
|
8
|
+
const observability_1 = require("../observability");
|
|
9
|
+
const tools_1 = require("../tools");
|
|
10
|
+
class Agent {
|
|
11
|
+
name;
|
|
12
|
+
llm;
|
|
13
|
+
historyStore;
|
|
14
|
+
tools;
|
|
15
|
+
systemPrompt;
|
|
16
|
+
config;
|
|
17
|
+
executor;
|
|
18
|
+
observer;
|
|
19
|
+
requireSessionId;
|
|
20
|
+
sessionQueues = new Map();
|
|
21
|
+
constructor(components) {
|
|
22
|
+
this.name = components.name;
|
|
23
|
+
this.config = components.config ?? new config_1.Config();
|
|
24
|
+
this.llm = components.llm ?? createLLM(components.llmConfig, this.config);
|
|
25
|
+
this.historyStore = components.historyStore ?? new history_1.InMemoryMessageHistoryStore({
|
|
26
|
+
maxMessages: this.config.maxHistoryLength,
|
|
27
|
+
});
|
|
28
|
+
this.tools = normalizeTools(components.tools);
|
|
29
|
+
this.systemPrompt = components.systemPrompt;
|
|
30
|
+
this.executor = components.executor ?? new executors_1.SimpleChatExecutor();
|
|
31
|
+
this.observer = components.observer;
|
|
32
|
+
this.requireSessionId = components.requireSessionId ?? false;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Agent 只负责组装上下文并交给 executor。
|
|
36
|
+
* 不同 Agent 行为通过替换 executor / historyStore / tools / llm 实现。
|
|
37
|
+
*/
|
|
38
|
+
async run(input, options = {}) {
|
|
39
|
+
const sessionId = this.resolveSessionId(options.sessionId);
|
|
40
|
+
return this.runInSessionQueue(sessionId, () => this.runWithSession(input, {
|
|
41
|
+
...options,
|
|
42
|
+
sessionId,
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
async runWithSession(input, options) {
|
|
46
|
+
const sessionId = (0, history_1.normalizeSessionId)(options.sessionId);
|
|
47
|
+
const runId = options.runId ?? (0, observability_1.createRunId)();
|
|
48
|
+
const observer = options.observer ?? this.observer;
|
|
49
|
+
const startedAt = Date.now();
|
|
50
|
+
const history = this.historyStore.get(sessionId);
|
|
51
|
+
await (0, observability_1.emitRuntimeEvent)(observer, {
|
|
52
|
+
type: 'agent:start',
|
|
53
|
+
runId,
|
|
54
|
+
timestamp: new Date(),
|
|
55
|
+
agentName: this.name,
|
|
56
|
+
sessionId,
|
|
57
|
+
metadata: options.metadata,
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
const result = await this.executor.run({
|
|
61
|
+
runId,
|
|
62
|
+
agentName: this.name,
|
|
63
|
+
sessionId,
|
|
64
|
+
input,
|
|
65
|
+
options,
|
|
66
|
+
llm: this.llm,
|
|
67
|
+
history,
|
|
68
|
+
tools: this.tools,
|
|
69
|
+
observer,
|
|
70
|
+
systemPrompt: this.systemPrompt,
|
|
71
|
+
config: this.config,
|
|
72
|
+
});
|
|
73
|
+
await (0, observability_1.emitRuntimeEvent)(observer, {
|
|
74
|
+
type: 'agent:end',
|
|
75
|
+
runId,
|
|
76
|
+
timestamp: new Date(),
|
|
77
|
+
durationMs: Date.now() - startedAt,
|
|
78
|
+
agentName: this.name,
|
|
79
|
+
sessionId,
|
|
80
|
+
outputLength: result.output.length,
|
|
81
|
+
});
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
await (0, observability_1.emitRuntimeEvent)(observer, {
|
|
86
|
+
type: 'agent:error',
|
|
87
|
+
runId,
|
|
88
|
+
timestamp: new Date(),
|
|
89
|
+
durationMs: Date.now() - startedAt,
|
|
90
|
+
agentName: this.name,
|
|
91
|
+
sessionId,
|
|
92
|
+
error: (0, observability_1.toObservedError)(error),
|
|
93
|
+
});
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async addMessage(message, sessionId) {
|
|
98
|
+
const resolvedSessionId = this.resolveSessionId(sessionId);
|
|
99
|
+
return this.runInSessionQueue(resolvedSessionId, () => (this.historyStore.get(resolvedSessionId).add(message)));
|
|
100
|
+
}
|
|
101
|
+
async clearHistory(sessionId) {
|
|
102
|
+
const resolvedSessionId = this.resolveSessionId(sessionId);
|
|
103
|
+
await this.runInSessionQueue(resolvedSessionId, () => (this.historyStore.clear(resolvedSessionId)));
|
|
104
|
+
}
|
|
105
|
+
async getHistory(sessionId) {
|
|
106
|
+
const resolvedSessionId = this.resolveSessionId(sessionId);
|
|
107
|
+
return await this.runInSessionQueue(resolvedSessionId, () => (this.historyStore.get(resolvedSessionId).get()));
|
|
108
|
+
}
|
|
109
|
+
toString() {
|
|
110
|
+
return `Agent(name=${this.name}, provider=${this.llm.name}, model=${this.llm.model})`;
|
|
111
|
+
}
|
|
112
|
+
runInSessionQueue(sessionId, operation) {
|
|
113
|
+
const previous = this.sessionQueues.get(sessionId) ?? Promise.resolve();
|
|
114
|
+
const result = previous.catch(() => undefined).then(operation);
|
|
115
|
+
let queued;
|
|
116
|
+
queued = result.then(() => undefined, () => undefined).finally(() => {
|
|
117
|
+
if (this.sessionQueues.get(sessionId) === queued) {
|
|
118
|
+
this.sessionQueues.delete(sessionId);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
this.sessionQueues.set(sessionId, queued);
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
resolveSessionId(sessionId) {
|
|
125
|
+
if (this.requireSessionId && !hasExplicitSessionId(sessionId)) {
|
|
126
|
+
throw new Error('Agent requires a non-empty sessionId.');
|
|
127
|
+
}
|
|
128
|
+
return (0, history_1.normalizeSessionId)(sessionId);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.Agent = Agent;
|
|
132
|
+
function createLLM(llmConfig, config) {
|
|
133
|
+
const resolvedConfig = {
|
|
134
|
+
...llmConfig,
|
|
135
|
+
};
|
|
136
|
+
if (!resolvedConfig.provider && config.defaultProvider) {
|
|
137
|
+
resolvedConfig.provider = config.defaultProvider;
|
|
138
|
+
}
|
|
139
|
+
if (!resolvedConfig.model && config.defaultModel) {
|
|
140
|
+
resolvedConfig.model = config.defaultModel;
|
|
141
|
+
}
|
|
142
|
+
if (resolvedConfig.timeoutMs === undefined && config.requestTimeoutMs !== undefined) {
|
|
143
|
+
resolvedConfig.timeoutMs = config.requestTimeoutMs;
|
|
144
|
+
}
|
|
145
|
+
if (resolvedConfig.maxRetries === undefined && config.maxRetries !== undefined) {
|
|
146
|
+
resolvedConfig.maxRetries = config.maxRetries;
|
|
147
|
+
}
|
|
148
|
+
if (resolvedConfig.retryDelayMs === undefined && config.retryDelayMs !== undefined) {
|
|
149
|
+
resolvedConfig.retryDelayMs = config.retryDelayMs;
|
|
150
|
+
}
|
|
151
|
+
if (resolvedConfig.retryMaxDelayMs === undefined && config.retryMaxDelayMs !== undefined) {
|
|
152
|
+
resolvedConfig.retryMaxDelayMs = config.retryMaxDelayMs;
|
|
153
|
+
}
|
|
154
|
+
return new llm_1.LLM(resolvedConfig);
|
|
155
|
+
}
|
|
156
|
+
function normalizeTools(tools) {
|
|
157
|
+
if (tools instanceof tools_1.ToolRegistry) {
|
|
158
|
+
return tools;
|
|
159
|
+
}
|
|
160
|
+
if (Array.isArray(tools)) {
|
|
161
|
+
return new tools_1.ToolRegistry(tools);
|
|
162
|
+
}
|
|
163
|
+
return new tools_1.ToolRegistry();
|
|
164
|
+
}
|
|
165
|
+
function hasExplicitSessionId(sessionId) {
|
|
166
|
+
return sessionId !== undefined && sessionId.trim().length > 0;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=Agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../src/agent/Agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAgent.d.ts","sourceRoot":"","sources":["../../src/agent/createAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,KAAK,CAE9D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAgent = createAgent;
|
|
4
|
+
const Agent_1 = require("./Agent");
|
|
5
|
+
function createAgent(components) {
|
|
6
|
+
return new Agent_1.Agent(components);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=createAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAgent.js","sourceRoot":"","sources":["../../src/agent/createAgent.ts"],"names":[],"mappings":";;AAGA,kCAEC;AALD,mCAAgC;AAGhC,SAAgB,WAAW,CAAC,UAA2B;IACnD,OAAO,IAAI,aAAK,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACR,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,GAClB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAgent = exports.Agent = void 0;
|
|
4
|
+
var Agent_1 = require("./Agent");
|
|
5
|
+
Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return Agent_1.Agent; } });
|
|
6
|
+
var createAgent_1 = require("./createAgent");
|
|
7
|
+
Object.defineProperty(exports, "createAgent", { enumerable: true, get: function () { return createAgent_1.createAgent; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Config } from '../config';
|
|
2
|
+
import type { AgentExecutor, AgentResult, AgentRunOptions } from '../executors';
|
|
3
|
+
import type { MessageHistoryStore } from '../history';
|
|
4
|
+
import type { ChatModel, LLMConfig } from '../llm';
|
|
5
|
+
import type { Observer } from '../observability';
|
|
6
|
+
import type { Tool, ToolRegistry } from '../tools';
|
|
7
|
+
export interface AgentComponents {
|
|
8
|
+
name: string;
|
|
9
|
+
llm?: ChatModel;
|
|
10
|
+
llmConfig?: LLMConfig;
|
|
11
|
+
historyStore?: MessageHistoryStore;
|
|
12
|
+
requireSessionId?: boolean;
|
|
13
|
+
tools?: ToolRegistry | Tool[];
|
|
14
|
+
systemPrompt?: string;
|
|
15
|
+
config?: Config;
|
|
16
|
+
executor?: AgentExecutor;
|
|
17
|
+
observer?: Observer;
|
|
18
|
+
}
|
|
19
|
+
export interface AgentLike {
|
|
20
|
+
run(input: string, options?: AgentRunOptions): Promise<AgentResult>;
|
|
21
|
+
}
|
|
22
|
+
export type { AgentResult, AgentRunOptions, };
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACtB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACvE;AAED,YAAY,EACR,WAAW,EACX,eAAe,GAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ModelProviderName } from '../llm/types';
|
|
2
|
+
export interface ConfigOptions {
|
|
3
|
+
defaultModel?: string;
|
|
4
|
+
defaultProvider?: ModelProviderName;
|
|
5
|
+
temperature?: number;
|
|
6
|
+
maxTokens?: number;
|
|
7
|
+
requestTimeoutMs?: number;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
retryDelayMs?: number;
|
|
10
|
+
retryMaxDelayMs?: number;
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
logLevel?: string;
|
|
13
|
+
maxHistoryLength?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class Config {
|
|
16
|
+
readonly defaultModel: string | undefined;
|
|
17
|
+
readonly defaultProvider: ModelProviderName | undefined;
|
|
18
|
+
readonly temperature: number;
|
|
19
|
+
readonly maxTokens: number | undefined;
|
|
20
|
+
readonly requestTimeoutMs: number | undefined;
|
|
21
|
+
readonly maxRetries: number | undefined;
|
|
22
|
+
readonly retryDelayMs: number | undefined;
|
|
23
|
+
readonly retryMaxDelayMs: number | undefined;
|
|
24
|
+
readonly debug: boolean;
|
|
25
|
+
readonly logLevel: string;
|
|
26
|
+
readonly maxHistoryLength: number;
|
|
27
|
+
constructor(options?: ConfigOptions);
|
|
28
|
+
/**
|
|
29
|
+
* 环境变量只负责覆盖运行参数。
|
|
30
|
+
* 如果没有显式 MODEL,就让 LLM provider 使用自己的默认模型。
|
|
31
|
+
*/
|
|
32
|
+
static fromEnv(): Config;
|
|
33
|
+
toJSON(): ConfigOptions;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,MAAM;IACf,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEtB,OAAO,GAAE,aAAkB;IAcvC;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,MAAM;IAuExB,MAAM,IAAI,aAAa;CAgC1B"}
|