@framers/agentos 0.1.75 → 0.1.77
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 +148 -38
- package/dist/api/agent.d.ts +13 -3
- package/dist/api/agent.d.ts.map +1 -1
- package/dist/api/agent.js +1 -0
- package/dist/api/agent.js.map +1 -1
- package/dist/api/generateImage.d.ts +11 -2
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +2 -2
- package/dist/api/generateImage.js.map +1 -1
- package/dist/api/generateText.d.ts +13 -3
- package/dist/api/generateText.d.ts.map +1 -1
- package/dist/api/generateText.js +2 -2
- package/dist/api/generateText.js.map +1 -1
- package/dist/api/model.d.ts +53 -0
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +58 -0
- package/dist/api/model.js.map +1 -1
- package/dist/api/provider-defaults.d.ts +40 -0
- package/dist/api/provider-defaults.d.ts.map +1 -0
- package/dist/api/provider-defaults.js +73 -0
- package/dist/api/provider-defaults.js.map +1 -0
- package/dist/api/streamText.js +2 -2
- package/dist/api/streamText.js.map +1 -1
- package/dist/core/agency/AgentCommunicationBus.d.ts +1 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -1
- package/dist/core/agency/AgentCommunicationBus.js +62 -8
- package/dist/core/agency/AgentCommunicationBus.js.map +1 -1
- package/dist/core/agency/IAgentCommunicationBus.d.ts +1 -1
- package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -1
- package/dist/orchestration/runtime/LoopController.d.ts +10 -10
- package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
- package/dist/orchestration/runtime/LoopController.js +1 -1
- package/dist/orchestration/runtime/LoopController.js.map +1 -1
- package/dist/orchestration/runtime/index.d.ts +1 -1
- package/dist/orchestration/runtime/index.d.ts.map +1 -1
- package/dist/orchestration/runtime/index.js.map +1 -1
- package/dist/speech/FallbackProxy.d.ts +104 -0
- package/dist/speech/FallbackProxy.d.ts.map +1 -0
- package/dist/speech/FallbackProxy.js +151 -0
- package/dist/speech/FallbackProxy.js.map +1 -0
- package/dist/speech/SpeechProviderResolver.d.ts +103 -0
- package/dist/speech/SpeechProviderResolver.d.ts.map +1 -0
- package/dist/speech/SpeechProviderResolver.js +256 -0
- package/dist/speech/SpeechProviderResolver.js.map +1 -0
- package/dist/speech/SpeechRuntime.d.ts +23 -1
- package/dist/speech/SpeechRuntime.d.ts.map +1 -1
- package/dist/speech/SpeechRuntime.js +82 -8
- package/dist/speech/SpeechRuntime.js.map +1 -1
- package/dist/speech/index.d.ts +6 -0
- package/dist/speech/index.d.ts.map +1 -1
- package/dist/speech/index.js +6 -0
- package/dist/speech/index.js.map +1 -1
- package/dist/speech/providerCatalog.d.ts.map +1 -1
- package/dist/speech/providerCatalog.js +15 -1
- package/dist/speech/providerCatalog.js.map +1 -1
- package/dist/speech/providers/AssemblyAISTTProvider.d.ts +49 -0
- package/dist/speech/providers/AssemblyAISTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js +151 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.d.ts +48 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.js +90 -0
- package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.d.ts +60 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.d.ts.map +1 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.js +127 -0
- package/dist/speech/providers/AzureSpeechTTSProvider.js.map +1 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts +55 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts.map +1 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.js +102 -0
- package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -0
- package/dist/speech/types.d.ts +35 -0
- package/dist/speech/types.d.ts.map +1 -1
- package/dist/voice/CallManager.d.ts +1 -1
- package/dist/voice/CallManager.d.ts.map +1 -1
- package/dist/voice/CallManager.js +9 -0
- package/dist/voice/CallManager.js.map +1 -1
- package/dist/voice/MediaStreamParser.d.ts +83 -0
- package/dist/voice/MediaStreamParser.d.ts.map +1 -0
- package/dist/voice/MediaStreamParser.js +2 -0
- package/dist/voice/MediaStreamParser.js.map +1 -0
- package/dist/voice/TelephonyStreamTransport.d.ts +112 -0
- package/dist/voice/TelephonyStreamTransport.d.ts.map +1 -0
- package/dist/voice/TelephonyStreamTransport.js +208 -0
- package/dist/voice/TelephonyStreamTransport.js.map +1 -0
- package/dist/voice/index.d.ts +10 -0
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +11 -0
- package/dist/voice/index.js.map +1 -1
- package/dist/voice/parsers/PlivoMediaStreamParser.d.ts +43 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.js +92 -0
- package/dist/voice/parsers/PlivoMediaStreamParser.js.map +1 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts +51 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.js +103 -0
- package/dist/voice/parsers/TelnyxMediaStreamParser.js.map +1 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.d.ts +50 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.d.ts.map +1 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.js +144 -0
- package/dist/voice/parsers/TwilioMediaStreamParser.js.map +1 -0
- package/dist/voice/providers/plivo.d.ts +77 -0
- package/dist/voice/providers/plivo.d.ts.map +1 -0
- package/dist/voice/providers/plivo.js +180 -0
- package/dist/voice/providers/plivo.js.map +1 -0
- package/dist/voice/providers/telnyx.d.ts +93 -0
- package/dist/voice/providers/telnyx.d.ts.map +1 -0
- package/dist/voice/providers/telnyx.js +193 -0
- package/dist/voice/providers/telnyx.js.map +1 -0
- package/dist/voice/providers/twilio.d.ts +79 -0
- package/dist/voice/providers/twilio.d.ts.map +1 -0
- package/dist/voice/providers/twilio.js +191 -0
- package/dist/voice/providers/twilio.js.map +1 -0
- package/dist/voice/twiml.d.ts +69 -0
- package/dist/voice/twiml.d.ts.map +1 -0
- package/dist/voice/twiml.js +92 -0
- package/dist/voice/twiml.js.map +1 -0
- package/dist/voice/types.d.ts +9 -1
- package/dist/voice/types.d.ts.map +1 -1
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts +90 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts.map +1 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.js +123 -0
- package/dist/voice-pipeline/AcousticEndpointDetector.js.map +1 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.d.ts +67 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.d.ts.map +1 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.js +55 -0
- package/dist/voice-pipeline/HardCutBargeinHandler.js.map +1 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts +128 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts.map +1 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.js +240 -0
- package/dist/voice-pipeline/HeuristicEndpointDetector.js.map +1 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts +96 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts.map +1 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.js +69 -0
- package/dist/voice-pipeline/SoftFadeBargeinHandler.js.map +1 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts +122 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js +317 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.d.ts +148 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.d.ts.map +1 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.js +207 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.js.map +1 -0
- package/dist/voice-pipeline/index.d.ts +13 -0
- package/dist/voice-pipeline/index.d.ts.map +1 -0
- package/dist/voice-pipeline/index.js +13 -0
- package/dist/voice-pipeline/index.js.map +1 -0
- package/dist/voice-pipeline/types.d.ts +905 -0
- package/dist/voice-pipeline/types.d.ts.map +1 -0
- package/dist/voice-pipeline/types.js +23 -0
- package/dist/voice-pipeline/types.js.map +1 -0
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
- [IGuardrailService](#iguardrailservice)
|
|
64
64
|
- [IHumanInteractionManager](#ihumaninteractionmanager)
|
|
65
65
|
- [Usage Examples](#usage-examples)
|
|
66
|
+
- [Orchestration Patterns](#orchestration-patterns)
|
|
66
67
|
- [Streaming Chat](#streaming-chat)
|
|
67
68
|
- [Adding Tools](#adding-tools)
|
|
68
69
|
- [Multi-Agent Collaboration](#multi-agent-collaboration)
|
|
@@ -159,15 +160,17 @@ Use the streamlined APIs when you want AI SDK-style text generation, image gener
|
|
|
159
160
|
```typescript
|
|
160
161
|
import { agent, generateImage, generateText, streamText } from '@framers/agentos';
|
|
161
162
|
|
|
163
|
+
// Provider-first: set provider, AgentOS picks the best default model automatically.
|
|
164
|
+
// Requires OPENAI_API_KEY (or the matching env var) to be set.
|
|
162
165
|
const quick = await generateText({
|
|
163
|
-
|
|
166
|
+
provider: 'openai',
|
|
164
167
|
prompt: 'Explain how TCP handshakes work in 3 bullets.',
|
|
165
168
|
});
|
|
166
169
|
|
|
167
170
|
console.log(quick.text);
|
|
168
171
|
|
|
169
172
|
const live = streamText({
|
|
170
|
-
|
|
173
|
+
provider: 'openai',
|
|
171
174
|
prompt: 'Stream a short explanation of SYN, SYN-ACK, ACK.',
|
|
172
175
|
});
|
|
173
176
|
|
|
@@ -176,14 +179,14 @@ for await (const delta of live.textStream) {
|
|
|
176
179
|
}
|
|
177
180
|
|
|
178
181
|
const image = await generateImage({
|
|
179
|
-
|
|
182
|
+
provider: 'openai',
|
|
180
183
|
prompt: 'A cinematic neon city skyline reflected in rain at night.',
|
|
181
184
|
});
|
|
182
185
|
|
|
183
186
|
console.log(image.images[0]?.mimeType);
|
|
184
187
|
|
|
185
188
|
const assistant = agent({
|
|
186
|
-
|
|
189
|
+
provider: 'openai',
|
|
187
190
|
instructions: 'You are a concise networking tutor.',
|
|
188
191
|
maxSteps: 3,
|
|
189
192
|
});
|
|
@@ -191,6 +194,9 @@ const assistant = agent({
|
|
|
191
194
|
const session = assistant.session('tcp-demo');
|
|
192
195
|
const reply = await session.send('Now compare TCP and UDP.');
|
|
193
196
|
console.log(reply.text);
|
|
197
|
+
|
|
198
|
+
// Legacy format — still supported:
|
|
199
|
+
// const result = await generateText({ model: 'openai:gpt-4o', prompt: '...' });
|
|
194
200
|
```
|
|
195
201
|
|
|
196
202
|
Built-in image providers: `openai`, `openrouter`, `stability`, and `replicate`.
|
|
@@ -926,19 +932,17 @@ Three authoring APIs compile to one `CompiledExecutionGraph` IR executed by a si
|
|
|
926
932
|
import { AgentGraph, toolNode, gmiNode, START, END } from '@framers/agentos/orchestration';
|
|
927
933
|
import { z } from 'zod';
|
|
928
934
|
|
|
929
|
-
// Low-level: explicit graph with
|
|
935
|
+
// Low-level: explicit graph with checkpoints
|
|
930
936
|
const graph = new AgentGraph({
|
|
931
937
|
input: z.object({ topic: z.string() }),
|
|
932
|
-
scratch: z.object({
|
|
933
|
-
artifacts: z.object({ summary: z.string() }),
|
|
938
|
+
scratch: z.object({ draft: z.string().optional() }),
|
|
939
|
+
artifacts: z.object({ status: z.string().optional(), summary: z.string().optional() }),
|
|
934
940
|
})
|
|
935
|
-
.addNode('
|
|
936
|
-
.addNode('
|
|
937
|
-
.
|
|
938
|
-
.addEdge(
|
|
939
|
-
.addEdge('
|
|
940
|
-
.addConditionalEdge('evaluate', (s) => s.scratch.confidence > 0.8 ? 'summarize' : 'search')
|
|
941
|
-
.addEdge('summarize', END)
|
|
941
|
+
.addNode('draft', gmiNode({ instructions: 'Draft a concise summary', executionMode: 'single_turn' }))
|
|
942
|
+
.addNode('publish', toolNode('publish_report'))
|
|
943
|
+
.addEdge(START, 'draft')
|
|
944
|
+
.addEdge('draft', 'publish')
|
|
945
|
+
.addEdge('publish', END)
|
|
942
946
|
.compile();
|
|
943
947
|
|
|
944
948
|
const result = await graph.invoke({ topic: 'quantum computing' });
|
|
@@ -968,6 +972,8 @@ const plan = await researcher.explain({ topic: 'AI safety' }); // preview plan w
|
|
|
968
972
|
|
|
969
973
|
See [`docs/UNIFIED_ORCHESTRATION.md`](docs/UNIFIED_ORCHESTRATION.md), [`docs/AGENT_GRAPH.md`](docs/AGENT_GRAPH.md), [`docs/WORKFLOW_DSL.md`](docs/WORKFLOW_DSL.md), [`docs/MISSION_API.md`](docs/MISSION_API.md), [`docs/CHECKPOINTING.md`](docs/CHECKPOINTING.md).
|
|
970
974
|
|
|
975
|
+
Runnable examples: [`examples/agent-graph.mjs`](./examples/agent-graph.mjs), [`examples/workflow-dsl.mjs`](./examples/workflow-dsl.mjs), [`examples/mission-api.mjs`](./examples/mission-api.mjs)
|
|
976
|
+
|
|
971
977
|
#### Legacy WorkflowEngine
|
|
972
978
|
|
|
973
979
|
The original `WorkflowEngine` (`src/core/workflows/`) continues to work for existing consumers. The new orchestration layer is opt-in and runs alongside it.
|
|
@@ -1311,6 +1317,71 @@ interface IHumanInteractionManager {
|
|
|
1311
1317
|
|
|
1312
1318
|
## Usage Examples
|
|
1313
1319
|
|
|
1320
|
+
### Orchestration Patterns
|
|
1321
|
+
|
|
1322
|
+
Use the new orchestration layer based on how much control you need:
|
|
1323
|
+
|
|
1324
|
+
- `workflow()` for deterministic sequential/parallel DAGs
|
|
1325
|
+
- `AgentGraph` for explicit cycles, retries, and custom routing
|
|
1326
|
+
- `mission()` when you know the goal but want the planner to decide the steps
|
|
1327
|
+
|
|
1328
|
+
```typescript
|
|
1329
|
+
import {
|
|
1330
|
+
AgentGraph,
|
|
1331
|
+
END,
|
|
1332
|
+
START,
|
|
1333
|
+
gmiNode,
|
|
1334
|
+
mission,
|
|
1335
|
+
toolNode,
|
|
1336
|
+
workflow,
|
|
1337
|
+
} from '@framers/agentos/orchestration';
|
|
1338
|
+
import { z } from 'zod';
|
|
1339
|
+
|
|
1340
|
+
// 1. Deterministic DAG: sequential steps with a parallel fan-out/join
|
|
1341
|
+
const onboarding = workflow('user-onboarding')
|
|
1342
|
+
.input(z.object({ email: z.string().email() }))
|
|
1343
|
+
.returns(z.object({ userId: z.string() }))
|
|
1344
|
+
.step('validate', { tool: 'email_validator' })
|
|
1345
|
+
.then('create-account', { tool: 'user_service' })
|
|
1346
|
+
.parallel(
|
|
1347
|
+
[
|
|
1348
|
+
{ tool: 'send_welcome_email' },
|
|
1349
|
+
{ tool: 'provision_default_workspace' },
|
|
1350
|
+
],
|
|
1351
|
+
{
|
|
1352
|
+
strategy: 'all',
|
|
1353
|
+
merge: { 'scratch.completedTasks': 'concat' },
|
|
1354
|
+
},
|
|
1355
|
+
)
|
|
1356
|
+
.compile();
|
|
1357
|
+
|
|
1358
|
+
// 2. Explicit graph: fixed publish pipeline with explicit nodes and edges
|
|
1359
|
+
const reviewGraph = new AgentGraph({
|
|
1360
|
+
input: z.object({ topic: z.string() }),
|
|
1361
|
+
scratch: z.object({ draft: z.string().optional() }),
|
|
1362
|
+
artifacts: z.object({ status: z.string().optional(), summary: z.string().optional() }),
|
|
1363
|
+
})
|
|
1364
|
+
.addNode('draft', gmiNode({ instructions: 'Draft the release note.', executionMode: 'single_turn' }))
|
|
1365
|
+
.addNode('publish', toolNode('publish_report'))
|
|
1366
|
+
.addEdge(START, 'draft')
|
|
1367
|
+
.addEdge('draft', 'publish')
|
|
1368
|
+
.addEdge('publish', END)
|
|
1369
|
+
.compile();
|
|
1370
|
+
|
|
1371
|
+
// 3. Goal-first mission: preview the generated plan before running it
|
|
1372
|
+
const researcher = mission('deep-research')
|
|
1373
|
+
.input(z.object({ topic: z.string() }))
|
|
1374
|
+
.goal('Research {{topic}} thoroughly and produce a cited summary')
|
|
1375
|
+
.returns(z.object({ summary: z.string() }))
|
|
1376
|
+
.planner({ strategy: 'plan_and_execute', maxSteps: 8 })
|
|
1377
|
+
.compile();
|
|
1378
|
+
|
|
1379
|
+
const preview = await researcher.explain({ topic: 'AI safety' });
|
|
1380
|
+
console.log(preview.steps.map((step) => step.id));
|
|
1381
|
+
```
|
|
1382
|
+
|
|
1383
|
+
For deeper examples, see [`docs/AGENT_GRAPH.md`](docs/AGENT_GRAPH.md), [`docs/WORKFLOW_DSL.md`](docs/WORKFLOW_DSL.md), [`docs/MISSION_API.md`](docs/MISSION_API.md), the runnable examples [`examples/agent-graph.mjs`](./examples/agent-graph.mjs), [`examples/workflow-dsl.mjs`](./examples/workflow-dsl.mjs), [`examples/mission-api.mjs`](./examples/mission-api.mjs), and the legacy dependency-ordered example [`examples/multi-agent-workflow.mjs`](./examples/multi-agent-workflow.mjs).
|
|
1384
|
+
|
|
1314
1385
|
### Streaming Chat
|
|
1315
1386
|
|
|
1316
1387
|
```typescript
|
|
@@ -1399,38 +1470,77 @@ for await (const chunk of agent.processRequest({
|
|
|
1399
1470
|
### Multi-Agent Collaboration
|
|
1400
1471
|
|
|
1401
1472
|
```typescript
|
|
1402
|
-
import {
|
|
1403
|
-
import { createTestAgentOSConfig } from '@framers/agentos/config/AgentOSConfig';
|
|
1404
|
-
|
|
1405
|
-
const config = await createTestAgentOSConfig();
|
|
1473
|
+
import { AgentCommunicationBus } from '@framers/agentos';
|
|
1406
1474
|
|
|
1407
|
-
const
|
|
1408
|
-
|
|
1475
|
+
const bus = new AgentCommunicationBus({
|
|
1476
|
+
routingConfig: { enableRoleRouting: true, enableLoadBalancing: true },
|
|
1477
|
+
});
|
|
1409
1478
|
|
|
1410
|
-
|
|
1411
|
-
|
|
1479
|
+
bus.registerAgent('coordinator-gmi', 'agency-docs', 'coordinator');
|
|
1480
|
+
bus.registerAgent('researcher-gmi', 'agency-docs', 'researcher');
|
|
1481
|
+
bus.registerAgent('writer-gmi', 'agency-docs', 'writer');
|
|
1482
|
+
|
|
1483
|
+
bus.subscribe(
|
|
1484
|
+
'researcher-gmi',
|
|
1485
|
+
async (message) => {
|
|
1486
|
+
if (message.type !== 'question') return;
|
|
1487
|
+
await bus.sendToAgent(message.fromAgentId, {
|
|
1488
|
+
type: 'answer',
|
|
1489
|
+
fromAgentId: 'researcher-gmi',
|
|
1490
|
+
content: { findings: ['auth edge cases', 'missing audit trail', 'weak retry policy'] },
|
|
1491
|
+
inReplyTo: message.messageId,
|
|
1492
|
+
priority: 'normal',
|
|
1493
|
+
});
|
|
1494
|
+
},
|
|
1495
|
+
{ messageTypes: ['question'] },
|
|
1496
|
+
);
|
|
1497
|
+
|
|
1498
|
+
bus.subscribe(
|
|
1499
|
+
'writer-gmi',
|
|
1500
|
+
async (message) => {
|
|
1501
|
+
if (message.type !== 'task_delegation') return;
|
|
1502
|
+
await bus.sendToAgent(message.fromAgentId, {
|
|
1503
|
+
type: 'answer',
|
|
1504
|
+
fromAgentId: 'writer-gmi',
|
|
1505
|
+
content: { accepted: true },
|
|
1506
|
+
inReplyTo: message.messageId,
|
|
1507
|
+
priority: 'normal',
|
|
1508
|
+
});
|
|
1509
|
+
},
|
|
1510
|
+
{ messageTypes: ['task_delegation'] },
|
|
1511
|
+
);
|
|
1512
|
+
|
|
1513
|
+
await bus.sendToRole('agency-docs', 'researcher', {
|
|
1514
|
+
type: 'task_delegation',
|
|
1515
|
+
fromAgentId: 'coordinator-gmi',
|
|
1516
|
+
content: { topic: 'auth module', instructions: 'Find the risky edge cases.' },
|
|
1517
|
+
priority: 'high',
|
|
1518
|
+
});
|
|
1412
1519
|
|
|
1413
|
-
const
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1520
|
+
const review = await bus.requestResponse('researcher-gmi', {
|
|
1521
|
+
type: 'question',
|
|
1522
|
+
fromAgentId: 'coordinator-gmi',
|
|
1523
|
+
content: 'What are the top three findings?',
|
|
1524
|
+
priority: 'high',
|
|
1525
|
+
timeoutMs: 30_000,
|
|
1526
|
+
});
|
|
1417
1527
|
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1528
|
+
const handoff = await bus.handoff('researcher-gmi', 'writer-gmi', {
|
|
1529
|
+
taskId: 'auth-audit',
|
|
1530
|
+
taskDescription: 'Turn the findings into a release note draft',
|
|
1531
|
+
progress: 0.8,
|
|
1532
|
+
completedWork: [review.content],
|
|
1533
|
+
remainingWork: ['Write polished summary'],
|
|
1534
|
+
context: { audience: 'engineering' },
|
|
1535
|
+
reason: 'completion',
|
|
1536
|
+
instructions: 'Summarize the findings in concise release-note style.',
|
|
1425
1537
|
});
|
|
1426
1538
|
|
|
1427
|
-
|
|
1428
|
-
userId: 'system',
|
|
1429
|
-
sessionId: 'collab-1',
|
|
1430
|
-
textInput: 'Analyze the authentication module',
|
|
1431
|
-
})) { /* handle chunks */ }
|
|
1539
|
+
console.log(handoff.accepted);
|
|
1432
1540
|
```
|
|
1433
1541
|
|
|
1542
|
+
Runnable example: [`examples/agent-communication-bus.mjs`](./examples/agent-communication-bus.mjs)
|
|
1543
|
+
|
|
1434
1544
|
### Human-in-the-Loop Approvals
|
|
1435
1545
|
|
|
1436
1546
|
```typescript
|
package/dist/api/agent.d.ts
CHANGED
|
@@ -15,10 +15,20 @@ import type { ToolDefinitionMap } from './toolAdapter.js';
|
|
|
15
15
|
*/
|
|
16
16
|
export interface AgentOptions {
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Provider name. When supplied without `model`, the default text model for
|
|
19
|
+
* the provider is resolved automatically from the built-in defaults registry.
|
|
20
|
+
*
|
|
21
|
+
* @example `"openai"`, `"anthropic"`, `"ollama"`
|
|
22
|
+
*/
|
|
23
|
+
provider?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Model used for every call made by this agent. Accepted in two formats:
|
|
26
|
+
* - `"provider:model"` — legacy format (e.g. `"openai:gpt-4o"`), still fully supported.
|
|
27
|
+
* - Plain model name (e.g. `"gpt-4o-mini"`) when `provider` is also set.
|
|
28
|
+
*
|
|
29
|
+
* Either `provider` or `model` (or an API key env var for auto-detection) is required.
|
|
20
30
|
*/
|
|
21
|
-
model
|
|
31
|
+
model?: string;
|
|
22
32
|
/** Display name injected into the system prompt (e.g. `"Aria"`). */
|
|
23
33
|
name?: string;
|
|
24
34
|
/** Free-form system instructions prepended before personality and name lines. */
|
package/dist/api/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAC5D,aAAa,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;KACpE,CAAC,CAAC;IACH;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,IAAI,OAAO,EAAE,CAAC;IACtB,uDAAuD;IACvD,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3F;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,gBAAgB,CAAC;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,+DAA+D;IAC/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK,CAiF/C"}
|
package/dist/api/agent.js
CHANGED
package/dist/api/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAmE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,UAAU,EAAyB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,19 @@ import type { GeneratedImage, ImageGenerationResult, ImageProviderOptionBag, Ima
|
|
|
4
4
|
*/
|
|
5
5
|
export interface GenerateImageOptions {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Provider name. When supplied without `model`, the default image model for
|
|
8
|
+
* the provider is resolved automatically from the built-in defaults registry.
|
|
9
|
+
*
|
|
10
|
+
* @example `"openai"`, `"stability"`, `"replicate"`
|
|
11
|
+
*/
|
|
12
|
+
provider?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Model in `provider:model` format (legacy) or plain model name when `provider` is set.
|
|
8
15
|
* @example `"openai:dall-e-3"`, `"stability:stable-diffusion-xl-1024-v1-0"`
|
|
16
|
+
*
|
|
17
|
+
* Either `provider` or `model` (or an API key env var for auto-detection) is required.
|
|
9
18
|
*/
|
|
10
|
-
model
|
|
19
|
+
model?: string;
|
|
11
20
|
/** Text description of the desired image. */
|
|
12
21
|
prompt: string;
|
|
13
22
|
/** Output modalities requested from the provider (provider-dependent). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateImage.d.ts","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC
|
|
1
|
+
{"version":3,"file":"generateImage.d.ts","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,wEAAwE;IACxE,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,qEAAqE;IACrE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwC5F"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* (e.g. OpenAI DALL-E, Stability AI, Replicate).
|
|
8
8
|
*/
|
|
9
9
|
import { createImageProvider } from '../core/images/index.js';
|
|
10
|
-
import {
|
|
10
|
+
import { resolveModelOption, resolveMediaProvider } from './model.js';
|
|
11
11
|
/**
|
|
12
12
|
* Generates one or more images using a provider-agnostic `provider:model` string.
|
|
13
13
|
*
|
|
@@ -28,7 +28,7 @@ import { parseModelString, resolveMediaProvider } from './model.js';
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
export async function generateImage(opts) {
|
|
31
|
-
const { providerId, modelId } =
|
|
31
|
+
const { providerId, modelId } = resolveModelOption(opts, 'image');
|
|
32
32
|
const resolved = resolveMediaProvider(providerId, modelId, {
|
|
33
33
|
apiKey: opts.apiKey,
|
|
34
34
|
baseUrl: opts.baseUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAU9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAU9D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAwEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE;QACzD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,QAAQ,CAAC,UAAU,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,cAAc,EAAE,QAAQ,CAAC,OAAO;KACjC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC;QAC1C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -41,10 +41,20 @@ export interface TokenUsage {
|
|
|
41
41
|
*/
|
|
42
42
|
export interface GenerateTextOptions {
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
44
|
+
* Provider name. When supplied without `model`, the default text model for
|
|
45
|
+
* the provider is resolved automatically from the built-in defaults registry.
|
|
46
|
+
*
|
|
47
|
+
* @example `"openai"`, `"anthropic"`, `"ollama"`
|
|
46
48
|
*/
|
|
47
|
-
|
|
49
|
+
provider?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Model identifier. Accepted in two formats:
|
|
52
|
+
* - `"provider:model"` — legacy format (e.g. `"openai:gpt-4o"`), still fully supported.
|
|
53
|
+
* - Plain model name (e.g. `"gpt-4o-mini"`) when `provider` is also set.
|
|
54
|
+
*
|
|
55
|
+
* Either `provider` or `model` (or an API key env var for auto-detection) is required.
|
|
56
|
+
*/
|
|
57
|
+
model?: string;
|
|
48
58
|
/** Single user turn to append after any `messages`. Convenience alternative to building a `messages` array. */
|
|
49
59
|
prompt?: string;
|
|
50
60
|
/** System prompt injected as the first message. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateText.d.ts","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC
|
|
1
|
+
{"version":3,"file":"generateText.d.ts","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,OAAO,CAAC;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+GAA+G;IAC/G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyHzF"}
|
package/dist/api/generateText.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* endpoint. Multi-step tool calling is supported: the loop continues until the
|
|
8
8
|
* model produces a plain-text reply or `maxSteps` is exhausted.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { resolveModelOption, resolveProvider, createProviderManager } from './model.js';
|
|
11
11
|
import { adaptTools } from './toolAdapter.js';
|
|
12
12
|
/**
|
|
13
13
|
* Stateless text generation with optional multi-step tool calling.
|
|
@@ -30,7 +30,7 @@ import { adaptTools } from './toolAdapter.js';
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export async function generateText(opts) {
|
|
33
|
-
const { providerId, modelId } =
|
|
33
|
+
const { providerId, modelId } = resolveModelOption(opts, 'text');
|
|
34
34
|
const resolved = resolveProvider(providerId, modelId, { apiKey: opts.apiKey, baseUrl: opts.baseUrl });
|
|
35
35
|
const manager = await createProviderManager(resolved);
|
|
36
36
|
const provider = manager.getProvider(resolved.providerId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateText.js","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generateText.js","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"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"}
|
package/dist/api/model.d.ts
CHANGED
|
@@ -83,6 +83,59 @@ export declare function resolveMediaProvider(providerId: string, modelId: string
|
|
|
83
83
|
apiKey?: string;
|
|
84
84
|
baseUrl?: string;
|
|
85
85
|
}): ResolvedProvider;
|
|
86
|
+
/**
|
|
87
|
+
* Supported task types used when looking up a provider's default model.
|
|
88
|
+
*
|
|
89
|
+
* - `"text"` — text completion / chat (generateText, streamText, agent)
|
|
90
|
+
* - `"image"` — image generation (generateImage)
|
|
91
|
+
* - `"embedding"` — embedding generation
|
|
92
|
+
*/
|
|
93
|
+
export type TaskType = 'text' | 'image' | 'embedding';
|
|
94
|
+
/**
|
|
95
|
+
* Flexible model option accepted by the high-level API functions.
|
|
96
|
+
*
|
|
97
|
+
* At least one of `provider` or `model` must be supplied, or an appropriate
|
|
98
|
+
* API key environment variable must be set for auto-detection.
|
|
99
|
+
*/
|
|
100
|
+
export interface ModelOption {
|
|
101
|
+
/**
|
|
102
|
+
* Provider name. When set without `model`, the default model for the
|
|
103
|
+
* requested task is looked up in {@link PROVIDER_DEFAULTS}.
|
|
104
|
+
*
|
|
105
|
+
* @example `"openai"`, `"anthropic"`, `"ollama"`
|
|
106
|
+
*/
|
|
107
|
+
provider?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Explicit model identifier. Accepted in two formats:
|
|
110
|
+
* - `"provider:model"` — legacy format (e.g. `"openai:gpt-4o"`). `provider` is ignored.
|
|
111
|
+
* - `"model"` — plain name (e.g. `"gpt-4o-mini"`). Requires `provider` or env-var auto-detect.
|
|
112
|
+
*/
|
|
113
|
+
model?: string;
|
|
114
|
+
/** API key override (takes precedence over environment variables). */
|
|
115
|
+
apiKey?: string;
|
|
116
|
+
/** Base URL override (useful for local proxies or Ollama). */
|
|
117
|
+
baseUrl?: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Resolves a `{ providerId, modelId }` pair from flexible caller-supplied options.
|
|
121
|
+
*
|
|
122
|
+
* Resolution priority:
|
|
123
|
+
* 1. **Explicit `model` string** — if it contains `":"` it is split directly
|
|
124
|
+
* (backwards-compatible `provider:model` format). If it is a plain name and
|
|
125
|
+
* `provider` is set, the pair is used as-is. If neither, auto-detection
|
|
126
|
+
* from env vars is attempted.
|
|
127
|
+
* 2. **`provider` only** — default model for the requested `task` is looked up
|
|
128
|
+
* in {@link PROVIDER_DEFAULTS}.
|
|
129
|
+
* 3. **Neither** — auto-detect the first provider with a set API key/URL env
|
|
130
|
+
* var and use its default model for the requested `task`.
|
|
131
|
+
*
|
|
132
|
+
* @param opts - Caller options containing optional `provider` and/or `model`.
|
|
133
|
+
* @param task - Task type used to select the correct default model. Defaults to `"text"`.
|
|
134
|
+
* @returns A {@link ParsedModel} with `providerId` and `modelId`.
|
|
135
|
+
* @throws {Error} When no provider can be determined, the provider is unknown,
|
|
136
|
+
* or the provider has no default model for the requested task.
|
|
137
|
+
*/
|
|
138
|
+
export declare function resolveModelOption(opts: ModelOption, task?: TaskType): ParsedModel;
|
|
86
139
|
/**
|
|
87
140
|
* Instantiates and initialises an {@link AIModelProviderManager} for a single provider.
|
|
88
141
|
*
|
package/dist/api/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAGzF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAY3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CA4BlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CAmBlB;AAMD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,QAAiB,GAAG,WAAW,CA2C1F;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAoBjC"}
|
package/dist/api/model.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* {@link streamText}.
|
|
9
9
|
*/
|
|
10
10
|
import { AIModelProviderManager } from '../core/llm/providers/AIModelProviderManager.js';
|
|
11
|
+
import { PROVIDER_DEFAULTS, autoDetectProvider } from './provider-defaults.js';
|
|
11
12
|
const ENV_KEY_MAP = {
|
|
12
13
|
openai: 'OPENAI_API_KEY',
|
|
13
14
|
anthropic: 'ANTHROPIC_API_KEY',
|
|
@@ -120,6 +121,63 @@ export function resolveMediaProvider(providerId, modelId, overrides) {
|
|
|
120
121
|
}
|
|
121
122
|
return { providerId, modelId, apiKey, baseUrl };
|
|
122
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Resolves a `{ providerId, modelId }` pair from flexible caller-supplied options.
|
|
126
|
+
*
|
|
127
|
+
* Resolution priority:
|
|
128
|
+
* 1. **Explicit `model` string** — if it contains `":"` it is split directly
|
|
129
|
+
* (backwards-compatible `provider:model` format). If it is a plain name and
|
|
130
|
+
* `provider` is set, the pair is used as-is. If neither, auto-detection
|
|
131
|
+
* from env vars is attempted.
|
|
132
|
+
* 2. **`provider` only** — default model for the requested `task` is looked up
|
|
133
|
+
* in {@link PROVIDER_DEFAULTS}.
|
|
134
|
+
* 3. **Neither** — auto-detect the first provider with a set API key/URL env
|
|
135
|
+
* var and use its default model for the requested `task`.
|
|
136
|
+
*
|
|
137
|
+
* @param opts - Caller options containing optional `provider` and/or `model`.
|
|
138
|
+
* @param task - Task type used to select the correct default model. Defaults to `"text"`.
|
|
139
|
+
* @returns A {@link ParsedModel} with `providerId` and `modelId`.
|
|
140
|
+
* @throws {Error} When no provider can be determined, the provider is unknown,
|
|
141
|
+
* or the provider has no default model for the requested task.
|
|
142
|
+
*/
|
|
143
|
+
export function resolveModelOption(opts, task = 'text') {
|
|
144
|
+
// 1. Explicit model string (backwards compat and direct override)
|
|
145
|
+
if (opts.model) {
|
|
146
|
+
// Legacy "provider:model" format
|
|
147
|
+
if (opts.model.includes(':'))
|
|
148
|
+
return parseModelString(opts.model);
|
|
149
|
+
// Plain model name with explicit provider
|
|
150
|
+
if (opts.provider)
|
|
151
|
+
return { providerId: opts.provider, modelId: opts.model };
|
|
152
|
+
// Plain model name — try auto-detect for provider
|
|
153
|
+
const detected = autoDetectProvider();
|
|
154
|
+
if (detected)
|
|
155
|
+
return { providerId: detected, modelId: opts.model };
|
|
156
|
+
throw new Error('model without ":" requires either a provider option or a configured env var (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.).');
|
|
157
|
+
}
|
|
158
|
+
// 2. Provider specified without model — look up default model for task
|
|
159
|
+
if (opts.provider) {
|
|
160
|
+
const defaults = PROVIDER_DEFAULTS[opts.provider];
|
|
161
|
+
if (!defaults) {
|
|
162
|
+
throw new Error(`Unknown provider "${opts.provider}". Known providers: ${Object.keys(PROVIDER_DEFAULTS).join(', ')}.`);
|
|
163
|
+
}
|
|
164
|
+
const modelId = defaults[task];
|
|
165
|
+
if (!modelId) {
|
|
166
|
+
throw new Error(`Provider "${opts.provider}" has no default ${task} model. Specify model explicitly.`);
|
|
167
|
+
}
|
|
168
|
+
return { providerId: opts.provider, modelId };
|
|
169
|
+
}
|
|
170
|
+
// 3. Neither — auto-detect provider from environment
|
|
171
|
+
const detected = autoDetectProvider();
|
|
172
|
+
if (detected) {
|
|
173
|
+
const defaults = PROVIDER_DEFAULTS[detected];
|
|
174
|
+
const modelId = defaults?.[task];
|
|
175
|
+
if (modelId)
|
|
176
|
+
return { providerId: detected, modelId };
|
|
177
|
+
}
|
|
178
|
+
throw new Error('Either "provider" or "model" is required. Or set an API key env var (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.).');
|
|
179
|
+
}
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
123
181
|
/**
|
|
124
182
|
* Instantiates and initialises an {@link AIModelProviderManager} for a single provider.
|
|
125
183
|
*
|
package/dist/api/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"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"}
|