@open-multi-agent/core 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/LICENSE +21 -0
- package/README.md +373 -0
- package/dist/agent/agent.d.ts +153 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +559 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/loop-detector.d.ts +39 -0
- package/dist/agent/loop-detector.d.ts.map +1 -0
- package/dist/agent/loop-detector.js +122 -0
- package/dist/agent/loop-detector.js.map +1 -0
- package/dist/agent/pool.d.ts +158 -0
- package/dist/agent/pool.d.ts.map +1 -0
- package/dist/agent/pool.js +320 -0
- package/dist/agent/pool.js.map +1 -0
- package/dist/agent/runner.d.ts +242 -0
- package/dist/agent/runner.d.ts.map +1 -0
- package/dist/agent/runner.js +943 -0
- package/dist/agent/runner.js.map +1 -0
- package/dist/agent/structured-output.d.ts +33 -0
- package/dist/agent/structured-output.d.ts.map +1 -0
- package/dist/agent/structured-output.js +116 -0
- package/dist/agent/structured-output.js.map +1 -0
- package/dist/cli/oma.d.ts +30 -0
- package/dist/cli/oma.d.ts.map +1 -0
- package/dist/cli/oma.js +433 -0
- package/dist/cli/oma.js.map +1 -0
- package/dist/dashboard/layout-tasks.d.ts +23 -0
- package/dist/dashboard/layout-tasks.d.ts.map +1 -0
- package/dist/dashboard/layout-tasks.js +79 -0
- package/dist/dashboard/layout-tasks.js.map +1 -0
- package/dist/dashboard/render-team-run-dashboard.d.ts +11 -0
- package/dist/dashboard/render-team-run-dashboard.d.ts.map +1 -0
- package/dist/dashboard/render-team-run-dashboard.js +456 -0
- package/dist/dashboard/render-team-run-dashboard.js.map +1 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +20 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/adapter.d.ts +54 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +101 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/anthropic.d.ts +57 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +432 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/azure-openai.d.ts +74 -0
- package/dist/llm/azure-openai.d.ts.map +1 -0
- package/dist/llm/azure-openai.js +267 -0
- package/dist/llm/azure-openai.js.map +1 -0
- package/dist/llm/bedrock.d.ts +41 -0
- package/dist/llm/bedrock.d.ts.map +1 -0
- package/dist/llm/bedrock.js +345 -0
- package/dist/llm/bedrock.js.map +1 -0
- package/dist/llm/copilot.d.ts +92 -0
- package/dist/llm/copilot.d.ts.map +1 -0
- package/dist/llm/copilot.js +433 -0
- package/dist/llm/copilot.js.map +1 -0
- package/dist/llm/deepseek.d.ts +21 -0
- package/dist/llm/deepseek.d.ts.map +1 -0
- package/dist/llm/deepseek.js +24 -0
- package/dist/llm/deepseek.js.map +1 -0
- package/dist/llm/gemini.d.ts +65 -0
- package/dist/llm/gemini.d.ts.map +1 -0
- package/dist/llm/gemini.js +427 -0
- package/dist/llm/gemini.js.map +1 -0
- package/dist/llm/grok.d.ts +21 -0
- package/dist/llm/grok.d.ts.map +1 -0
- package/dist/llm/grok.js +24 -0
- package/dist/llm/grok.js.map +1 -0
- package/dist/llm/minimax.d.ts +21 -0
- package/dist/llm/minimax.d.ts.map +1 -0
- package/dist/llm/minimax.js +24 -0
- package/dist/llm/minimax.js.map +1 -0
- package/dist/llm/openai-common.d.ts +65 -0
- package/dist/llm/openai-common.d.ts.map +1 -0
- package/dist/llm/openai-common.js +286 -0
- package/dist/llm/openai-common.js.map +1 -0
- package/dist/llm/openai.d.ts +63 -0
- package/dist/llm/openai.d.ts.map +1 -0
- package/dist/llm/openai.js +256 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/llm/qiniu.d.ts +21 -0
- package/dist/llm/qiniu.d.ts.map +1 -0
- package/dist/llm/qiniu.js +24 -0
- package/dist/llm/qiniu.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +2 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory/shared.d.ts +162 -0
- package/dist/memory/shared.d.ts.map +1 -0
- package/dist/memory/shared.js +294 -0
- package/dist/memory/shared.js.map +1 -0
- package/dist/memory/store.d.ts +72 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +121 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +245 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +1400 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/scheduler.d.ts +112 -0
- package/dist/orchestrator/scheduler.d.ts.map +1 -0
- package/dist/orchestrator/scheduler.js +256 -0
- package/dist/orchestrator/scheduler.js.map +1 -0
- package/dist/task/queue.d.ts +191 -0
- package/dist/task/queue.d.ts.map +1 -0
- package/dist/task/queue.js +408 -0
- package/dist/task/queue.js.map +1 -0
- package/dist/task/task.d.ts +90 -0
- package/dist/task/task.d.ts.map +1 -0
- package/dist/task/task.js +206 -0
- package/dist/task/task.js.map +1 -0
- package/dist/team/messaging.d.ts +106 -0
- package/dist/team/messaging.d.ts.map +1 -0
- package/dist/team/messaging.js +183 -0
- package/dist/team/messaging.js.map +1 -0
- package/dist/team/team.d.ts +141 -0
- package/dist/team/team.d.ts.map +1 -0
- package/dist/team/team.js +293 -0
- package/dist/team/team.js.map +1 -0
- package/dist/tool/built-in/bash.d.ts +12 -0
- package/dist/tool/built-in/bash.d.ts.map +1 -0
- package/dist/tool/built-in/bash.js +133 -0
- package/dist/tool/built-in/bash.js.map +1 -0
- package/dist/tool/built-in/delegate.d.ts +29 -0
- package/dist/tool/built-in/delegate.d.ts.map +1 -0
- package/dist/tool/built-in/delegate.js +92 -0
- package/dist/tool/built-in/delegate.js.map +1 -0
- package/dist/tool/built-in/file-edit.d.ts +14 -0
- package/dist/tool/built-in/file-edit.d.ts.map +1 -0
- package/dist/tool/built-in/file-edit.js +130 -0
- package/dist/tool/built-in/file-edit.js.map +1 -0
- package/dist/tool/built-in/file-read.d.ts +12 -0
- package/dist/tool/built-in/file-read.d.ts.map +1 -0
- package/dist/tool/built-in/file-read.js +82 -0
- package/dist/tool/built-in/file-read.js.map +1 -0
- package/dist/tool/built-in/file-write.d.ts +11 -0
- package/dist/tool/built-in/file-write.d.ts.map +1 -0
- package/dist/tool/built-in/file-write.js +70 -0
- package/dist/tool/built-in/file-write.js.map +1 -0
- package/dist/tool/built-in/fs-walk.d.ts +23 -0
- package/dist/tool/built-in/fs-walk.d.ts.map +1 -0
- package/dist/tool/built-in/fs-walk.js +78 -0
- package/dist/tool/built-in/fs-walk.js.map +1 -0
- package/dist/tool/built-in/glob.d.ts +12 -0
- package/dist/tool/built-in/glob.d.ts.map +1 -0
- package/dist/tool/built-in/glob.js +82 -0
- package/dist/tool/built-in/glob.js.map +1 -0
- package/dist/tool/built-in/grep.d.ts +15 -0
- package/dist/tool/built-in/grep.d.ts.map +1 -0
- package/dist/tool/built-in/grep.js +218 -0
- package/dist/tool/built-in/grep.js.map +1 -0
- package/dist/tool/built-in/index.d.ts +48 -0
- package/dist/tool/built-in/index.d.ts.map +1 -0
- package/dist/tool/built-in/index.js +56 -0
- package/dist/tool/built-in/index.js.map +1 -0
- package/dist/tool/executor.d.ts +100 -0
- package/dist/tool/executor.d.ts.map +1 -0
- package/dist/tool/executor.js +184 -0
- package/dist/tool/executor.js.map +1 -0
- package/dist/tool/framework.d.ts +167 -0
- package/dist/tool/framework.d.ts.map +1 -0
- package/dist/tool/framework.js +402 -0
- package/dist/tool/framework.js.map +1 -0
- package/dist/tool/mcp.d.ts +31 -0
- package/dist/tool/mcp.d.ts.map +1 -0
- package/dist/tool/mcp.js +175 -0
- package/dist/tool/mcp.js.map +1 -0
- package/dist/tool/text-tool-extractor.d.ts +32 -0
- package/dist/tool/text-tool-extractor.d.ts.map +1 -0
- package/dist/tool/text-tool-extractor.js +195 -0
- package/dist/tool/text-tool-extractor.js.map +1 -0
- package/dist/types.d.ts +916 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/keywords.d.ts +18 -0
- package/dist/utils/keywords.d.ts.map +1 -0
- package/dist/utils/keywords.js +32 -0
- package/dist/utils/keywords.js.map +1 -0
- package/dist/utils/semaphore.d.ts +49 -0
- package/dist/utils/semaphore.d.ts.map +1 -0
- package/dist/utils/semaphore.js +89 -0
- package/dist/utils/semaphore.js.map +1 -0
- package/dist/utils/tokens.d.ts +7 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +30 -0
- package/dist/utils/tokens.js.map +1 -0
- package/dist/utils/trace.d.ts +12 -0
- package/dist/utils/trace.d.ts.map +1 -0
- package/dist/utils/trace.js +30 -0
- package/dist/utils/trace.js.map +1 -0
- package/docs/DECISIONS.md +49 -0
- package/docs/cli.md +265 -0
- package/docs/context-management.md +24 -0
- package/docs/featured-partner.md +28 -0
- package/docs/observability.md +56 -0
- package/docs/providers.md +78 -0
- package/docs/shared-memory.md +27 -0
- package/docs/tool-configuration.md +152 -0
- package/package.json +96 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview open-multi-agent — public API surface.
|
|
3
|
+
*
|
|
4
|
+
* Import from `'@open-multi-agent/core'` to access everything you need:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { OpenMultiAgent, Agent, Team, defineTool } from '@open-multi-agent/core'
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* ## Quickstart
|
|
11
|
+
*
|
|
12
|
+
* ### Single agent
|
|
13
|
+
* ```ts
|
|
14
|
+
* const orchestrator = new OpenMultiAgent({ defaultModel: 'claude-opus-4-6' })
|
|
15
|
+
* const result = await orchestrator.runAgent(
|
|
16
|
+
* { name: 'assistant', model: 'claude-opus-4-6' },
|
|
17
|
+
* 'Explain monads in one paragraph.',
|
|
18
|
+
* )
|
|
19
|
+
* console.log(result.output)
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* ### Multi-agent team (auto-orchestrated)
|
|
23
|
+
* ```ts
|
|
24
|
+
* const orchestrator = new OpenMultiAgent()
|
|
25
|
+
* const team = orchestrator.createTeam('writers', {
|
|
26
|
+
* name: 'writers',
|
|
27
|
+
* agents: [
|
|
28
|
+
* { name: 'researcher', model: 'claude-opus-4-6', systemPrompt: 'You research topics thoroughly.' },
|
|
29
|
+
* { name: 'writer', model: 'claude-opus-4-6', systemPrompt: 'You write clear documentation.' },
|
|
30
|
+
* ],
|
|
31
|
+
* sharedMemory: true,
|
|
32
|
+
* })
|
|
33
|
+
* const result = await orchestrator.runTeam(team, 'Write a guide on TypeScript generics.')
|
|
34
|
+
* console.log(result.agentResults.get('coordinator')?.output)
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* ### Custom tools
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { z } from 'zod'
|
|
40
|
+
*
|
|
41
|
+
* const myTool = defineTool({
|
|
42
|
+
* name: 'fetch_data',
|
|
43
|
+
* description: 'Fetch JSON data from a URL.',
|
|
44
|
+
* inputSchema: z.object({ url: z.string().url() }),
|
|
45
|
+
* execute: async ({ url }) => {
|
|
46
|
+
* const res = await fetch(url)
|
|
47
|
+
* return { data: await res.text() }
|
|
48
|
+
* },
|
|
49
|
+
* })
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Orchestrator (primary entry point)
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
export { OpenMultiAgent, executeWithRetry, computeRetryDelay } from './orchestrator/orchestrator.js';
|
|
56
|
+
export { Scheduler } from './orchestrator/scheduler.js';
|
|
57
|
+
export { renderTeamRunDashboard } from './dashboard/render-team-run-dashboard.js';
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Agent layer
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
export { Agent } from './agent/agent.js';
|
|
62
|
+
export { LoopDetector } from './agent/loop-detector.js';
|
|
63
|
+
export { buildStructuredOutputInstruction, extractJSON, validateOutput } from './agent/structured-output.js';
|
|
64
|
+
export { AgentPool, Semaphore } from './agent/pool.js';
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// Team layer
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
export { Team } from './team/team.js';
|
|
69
|
+
export { MessageBus } from './team/messaging.js';
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Task layer
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
export { TaskQueue } from './task/queue.js';
|
|
74
|
+
export { createTask, isTaskReady, getTaskDependencyOrder, validateTaskDependencies } from './task/task.js';
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Tool system
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
export { defineTool, ToolRegistry, zodToJsonSchema } from './tool/framework.js';
|
|
79
|
+
export { ToolExecutor, truncateToolOutput } from './tool/executor.js';
|
|
80
|
+
export { registerBuiltInTools, BUILT_IN_TOOLS, ALL_BUILT_IN_TOOLS_WITH_DELEGATE, bashTool, delegateToAgentTool, fileReadTool, fileWriteTool, fileEditTool, globTool, grepTool, } from './tool/built-in/index.js';
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// LLM adapters
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
export { createAdapter } from './llm/adapter.js';
|
|
85
|
+
export { TokenBudgetExceededError } from './errors.js';
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Memory
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
export { InMemoryStore } from './memory/store.js';
|
|
90
|
+
export { SharedMemory } from './memory/shared.js';
|
|
91
|
+
export { generateRunId } from './utils/trace.js';
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAGvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAEjF,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGtD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAG1G,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gCAAgC,EAChC,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,0BAA0B,CAAA;AAGjC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AA6EjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LLM adapter factory.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the {@link LLMAdapter} interface and provides a
|
|
5
|
+
* {@link createAdapter} factory that returns the correct concrete
|
|
6
|
+
* implementation based on the requested provider.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createAdapter } from './adapter.js'
|
|
11
|
+
*
|
|
12
|
+
* const anthropic = createAdapter('anthropic')
|
|
13
|
+
* const openai = createAdapter('openai', process.env.OPENAI_API_KEY)
|
|
14
|
+
* const gemini = createAdapter('gemini', process.env.GEMINI_API_KEY)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export type { LLMAdapter, LLMChatOptions, LLMStreamOptions, LLMToolDef, LLMMessage, LLMResponse, StreamEvent, TokenUsage, ContentBlock, TextBlock, ToolUseBlock, ToolResultBlock, ImageBlock, } from '../types.js';
|
|
18
|
+
import type { LLMAdapter } from '../types.js';
|
|
19
|
+
/**
|
|
20
|
+
* The set of LLM providers supported out of the box.
|
|
21
|
+
* Additional providers can be integrated by implementing {@link LLMAdapter}
|
|
22
|
+
* directly and bypassing this factory.
|
|
23
|
+
*/
|
|
24
|
+
export type SupportedProvider = 'anthropic' | 'azure-openai' | 'bedrock' | 'copilot' | 'deepseek' | 'grok' | 'minimax' | 'openai' | 'gemini' | 'qiniu';
|
|
25
|
+
/**
|
|
26
|
+
* Instantiate the appropriate {@link LLMAdapter} for the given provider.
|
|
27
|
+
*
|
|
28
|
+
* API keys fall back to the standard environment variables when not supplied
|
|
29
|
+
* explicitly:
|
|
30
|
+
* - `anthropic` → `ANTHROPIC_API_KEY`
|
|
31
|
+
* - `azure-openai` → `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_VERSION`, `AZURE_OPENAI_DEPLOYMENT`
|
|
32
|
+
* - `openai` → `OPENAI_API_KEY`
|
|
33
|
+
* - `gemini` → `GEMINI_API_KEY` / `GOOGLE_API_KEY`
|
|
34
|
+
* - `grok` → `XAI_API_KEY`
|
|
35
|
+
* - `minimax` → `MINIMAX_API_KEY`
|
|
36
|
+
* - `deepseek` → `DEEPSEEK_API_KEY`
|
|
37
|
+
* - `qiniu` → `QINIU_API_KEY`
|
|
38
|
+
* - `bedrock` → no API key; credentials via AWS SDK default provider chain
|
|
39
|
+
* (env vars, shared config, IAM role). Pass `region` (4th arg)
|
|
40
|
+
* or set `AWS_REGION`; falls back to `'us-east-1'`.
|
|
41
|
+
* - `copilot` → `GITHUB_COPILOT_TOKEN` / `GITHUB_TOKEN`, or interactive
|
|
42
|
+
* OAuth2 device flow if neither is set
|
|
43
|
+
*
|
|
44
|
+
* Adapters are imported lazily so that projects using only one provider
|
|
45
|
+
* are not forced to install the SDK for the other.
|
|
46
|
+
*
|
|
47
|
+
* @param provider - Which LLM provider to target.
|
|
48
|
+
* @param apiKey - Optional API key override; falls back to env var. Not used for `bedrock`.
|
|
49
|
+
* @param baseURL - Optional base URL for OpenAI-compatible APIs (Ollama, vLLM, etc.). Not used for `bedrock`.
|
|
50
|
+
* @param region - Optional AWS region for `bedrock`; falls back to `AWS_REGION` env var, then `'us-east-1'`. Ignored by all other providers.
|
|
51
|
+
* @throws {Error} When the provider string is not recognised.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createAdapter(provider: SupportedProvider, apiKey?: string, baseURL?: string, region?: string): Promise<LLMAdapter>;
|
|
54
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtJ;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAsDrB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LLM adapter factory.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the {@link LLMAdapter} interface and provides a
|
|
5
|
+
* {@link createAdapter} factory that returns the correct concrete
|
|
6
|
+
* implementation based on the requested provider.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createAdapter } from './adapter.js'
|
|
11
|
+
*
|
|
12
|
+
* const anthropic = createAdapter('anthropic')
|
|
13
|
+
* const openai = createAdapter('openai', process.env.OPENAI_API_KEY)
|
|
14
|
+
* const gemini = createAdapter('gemini', process.env.GEMINI_API_KEY)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Instantiate the appropriate {@link LLMAdapter} for the given provider.
|
|
19
|
+
*
|
|
20
|
+
* API keys fall back to the standard environment variables when not supplied
|
|
21
|
+
* explicitly:
|
|
22
|
+
* - `anthropic` → `ANTHROPIC_API_KEY`
|
|
23
|
+
* - `azure-openai` → `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_VERSION`, `AZURE_OPENAI_DEPLOYMENT`
|
|
24
|
+
* - `openai` → `OPENAI_API_KEY`
|
|
25
|
+
* - `gemini` → `GEMINI_API_KEY` / `GOOGLE_API_KEY`
|
|
26
|
+
* - `grok` → `XAI_API_KEY`
|
|
27
|
+
* - `minimax` → `MINIMAX_API_KEY`
|
|
28
|
+
* - `deepseek` → `DEEPSEEK_API_KEY`
|
|
29
|
+
* - `qiniu` → `QINIU_API_KEY`
|
|
30
|
+
* - `bedrock` → no API key; credentials via AWS SDK default provider chain
|
|
31
|
+
* (env vars, shared config, IAM role). Pass `region` (4th arg)
|
|
32
|
+
* or set `AWS_REGION`; falls back to `'us-east-1'`.
|
|
33
|
+
* - `copilot` → `GITHUB_COPILOT_TOKEN` / `GITHUB_TOKEN`, or interactive
|
|
34
|
+
* OAuth2 device flow if neither is set
|
|
35
|
+
*
|
|
36
|
+
* Adapters are imported lazily so that projects using only one provider
|
|
37
|
+
* are not forced to install the SDK for the other.
|
|
38
|
+
*
|
|
39
|
+
* @param provider - Which LLM provider to target.
|
|
40
|
+
* @param apiKey - Optional API key override; falls back to env var. Not used for `bedrock`.
|
|
41
|
+
* @param baseURL - Optional base URL for OpenAI-compatible APIs (Ollama, vLLM, etc.). Not used for `bedrock`.
|
|
42
|
+
* @param region - Optional AWS region for `bedrock`; falls back to `AWS_REGION` env var, then `'us-east-1'`. Ignored by all other providers.
|
|
43
|
+
* @throws {Error} When the provider string is not recognised.
|
|
44
|
+
*/
|
|
45
|
+
export async function createAdapter(provider, apiKey, baseURL, region) {
|
|
46
|
+
switch (provider) {
|
|
47
|
+
case 'anthropic': {
|
|
48
|
+
const { AnthropicAdapter } = await import('./anthropic.js');
|
|
49
|
+
return new AnthropicAdapter(apiKey, baseURL);
|
|
50
|
+
}
|
|
51
|
+
case 'copilot': {
|
|
52
|
+
if (baseURL) {
|
|
53
|
+
console.warn('[open-multi-agent] baseURL is not supported for the copilot provider and will be ignored.');
|
|
54
|
+
}
|
|
55
|
+
const { CopilotAdapter } = await import('./copilot.js');
|
|
56
|
+
return new CopilotAdapter(apiKey);
|
|
57
|
+
}
|
|
58
|
+
case 'gemini': {
|
|
59
|
+
const { GeminiAdapter } = await import('./gemini.js');
|
|
60
|
+
return new GeminiAdapter(apiKey);
|
|
61
|
+
}
|
|
62
|
+
case 'openai': {
|
|
63
|
+
const { OpenAIAdapter } = await import('./openai.js');
|
|
64
|
+
return new OpenAIAdapter(apiKey, baseURL);
|
|
65
|
+
}
|
|
66
|
+
case 'grok': {
|
|
67
|
+
const { GrokAdapter } = await import('./grok.js');
|
|
68
|
+
return new GrokAdapter(apiKey, baseURL);
|
|
69
|
+
}
|
|
70
|
+
case 'minimax': {
|
|
71
|
+
const { MiniMaxAdapter } = await import('./minimax.js');
|
|
72
|
+
return new MiniMaxAdapter(apiKey, baseURL);
|
|
73
|
+
}
|
|
74
|
+
case 'deepseek': {
|
|
75
|
+
const { DeepSeekAdapter } = await import('./deepseek.js');
|
|
76
|
+
return new DeepSeekAdapter(apiKey, baseURL);
|
|
77
|
+
}
|
|
78
|
+
case 'qiniu': {
|
|
79
|
+
const { QiniuAdapter } = await import('./qiniu.js');
|
|
80
|
+
return new QiniuAdapter(apiKey, baseURL);
|
|
81
|
+
}
|
|
82
|
+
case 'azure-openai': {
|
|
83
|
+
// For azure-openai, the `baseURL` parameter serves as the Azure endpoint URL.
|
|
84
|
+
// To override the API version, set AZURE_OPENAI_API_VERSION env var.
|
|
85
|
+
const { AzureOpenAIAdapter } = await import('./azure-openai.js');
|
|
86
|
+
return new AzureOpenAIAdapter(apiKey, baseURL);
|
|
87
|
+
}
|
|
88
|
+
case 'bedrock': {
|
|
89
|
+
if (baseURL)
|
|
90
|
+
console.warn('[open-multi-agent] baseURL is ignored for bedrock; pass region as the fourth arg or set AWS_REGION.');
|
|
91
|
+
const { BedrockAdapter } = await import('./bedrock.js');
|
|
92
|
+
return new BedrockAdapter(region);
|
|
93
|
+
}
|
|
94
|
+
default: {
|
|
95
|
+
// The `never` cast here makes TypeScript enforce exhaustiveness.
|
|
96
|
+
const _exhaustive = provider;
|
|
97
|
+
throw new Error(`Unsupported LLM provider: ${String(_exhaustive)}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/llm/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA2BH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA2B,EAC3B,MAAe,EACf,OAAgB,EAChB,MAAe;IAEf,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC3D,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9C,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;YAC3G,CAAC;YACD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACrD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;QAClC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACrD,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACjD,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzD,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7C,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YACnD,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,8EAA8E;YAC9E,qEAAqE;YACrE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAChE,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAA;YAChI,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YACvD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,iEAAiE;YACjE,MAAM,WAAW,GAAU,QAAQ,CAAA;YACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Anthropic Claude adapter implementing {@link LLMAdapter}.
|
|
3
|
+
*
|
|
4
|
+
* Converts between the framework's internal {@link ContentBlock} types and the
|
|
5
|
+
* Anthropic SDK's wire format, handling tool definitions, system prompts, and
|
|
6
|
+
* both batch and streaming response paths.
|
|
7
|
+
*
|
|
8
|
+
* API key resolution order:
|
|
9
|
+
* 1. `apiKey` constructor argument
|
|
10
|
+
* 2. `ANTHROPIC_API_KEY` environment variable
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { AnthropicAdapter } from './anthropic.js'
|
|
15
|
+
*
|
|
16
|
+
* const adapter = new AnthropicAdapter()
|
|
17
|
+
* const response = await adapter.chat(messages, {
|
|
18
|
+
* model: 'claude-opus-4-6',
|
|
19
|
+
* maxTokens: 1024,
|
|
20
|
+
* })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import type { ContentBlock, ImageBlock, LLMAdapter, LLMChatOptions, LLMMessage, LLMResponse, LLMStreamOptions, LLMToolDef, StreamEvent, TextBlock, ToolResultBlock, ToolUseBlock } from '../types.js';
|
|
24
|
+
/**
|
|
25
|
+
* LLM adapter backed by the Anthropic Claude API.
|
|
26
|
+
*
|
|
27
|
+
* Thread-safe — a single instance may be shared across concurrent agent runs.
|
|
28
|
+
* The underlying SDK client is stateless across requests.
|
|
29
|
+
*/
|
|
30
|
+
export declare class AnthropicAdapter implements LLMAdapter {
|
|
31
|
+
#private;
|
|
32
|
+
readonly name = "anthropic";
|
|
33
|
+
constructor(apiKey?: string, baseURL?: string);
|
|
34
|
+
/**
|
|
35
|
+
* Send a synchronous (non-streaming) chat request and return the complete
|
|
36
|
+
* {@link LLMResponse}.
|
|
37
|
+
*
|
|
38
|
+
* Throws an `Anthropic.APIError` on non-2xx responses. Callers should catch
|
|
39
|
+
* and handle these (e.g. rate limits, context window exceeded).
|
|
40
|
+
*/
|
|
41
|
+
chat(messages: LLMMessage[], options: LLMChatOptions): Promise<LLMResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Send a streaming chat request and yield {@link StreamEvent}s as they
|
|
44
|
+
* arrive from the API.
|
|
45
|
+
*
|
|
46
|
+
* Sequence guarantees:
|
|
47
|
+
* - Zero or more `text` events containing incremental deltas
|
|
48
|
+
* - Zero or more `reasoning` events containing incremental thinking deltas
|
|
49
|
+
* - Zero or more `tool_use` events when the model calls a tool (emitted once
|
|
50
|
+
* per tool use, after input JSON has been fully assembled)
|
|
51
|
+
* - Exactly one terminal event: `done` (with the complete {@link LLMResponse}
|
|
52
|
+
* as `data`) or `error` (with an `Error` as `data`)
|
|
53
|
+
*/
|
|
54
|
+
stream(messages: LLMMessage[], options: LLMStreamOptions): AsyncIterable<StreamEvent>;
|
|
55
|
+
}
|
|
56
|
+
export type { ContentBlock, ImageBlock, LLMAdapter, LLMChatOptions, LLMMessage, LLMResponse, LLMStreamOptions, LLMToolDef, StreamEvent, TextBlock, ToolResultBlock, ToolUseBlock, };
|
|
57
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAEhB,UAAU,EACV,WAAW,EACX,SAAS,EAET,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAA;AA6OpB;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,UAAU;;IACjD,QAAQ,CAAC,IAAI,eAAc;gBAIf,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAW7C;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IA4CjF;;;;;;;;;;;OAWG;IACI,MAAM,CACX,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,gBAAgB,GACxB,aAAa,CAAC,WAAW,CAAC;CAoI9B;AAGD,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,YAAY,GACb,CAAA"}
|