@aevr/agents-ai-sdk 0.2.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/CHANGELOG.md +22 -0
- package/README.md +64 -0
- package/dist/gateway.d.ts +21 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +82 -0
- package/dist/gateway.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/loop.d.ts +21 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +259 -0
- package/dist/loop.js.map +1 -0
- package/dist/mapping.d.ts +35 -0
- package/dist/mapping.d.ts.map +1 -0
- package/dist/mapping.js +112 -0
- package/dist/mapping.js.map +1 -0
- package/package.json +68 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
## [0.2.0] - 2026-08-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Updated the public core peer contract to `@aevr/agents ^0.2.0` for credential-repository and current host integration compatibility.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- First public npm release of the AI SDK v7 inference gateway and bounded loop adapter.
|
|
14
|
+
|
|
15
|
+
## [0.1.0] - Unreleased
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Initial ESM package scaffold, strict TypeScript build, AI SDK v7 peer boundary, Node 22+ runtime contract, release scripts, and package documentation.
|
|
20
|
+
- Portable `InferenceGateway` implementation with injected model resolution/catalogs and AI SDK v7 message, tool, response-schema, result, and usage mappings.
|
|
21
|
+
- Deterministic `MockLanguageModelV4` tests with no network or provider credentials.
|
|
22
|
+
- Bounded generate/stream loop with active tools, immutable execution context, cumulative usage limits, timeout/cancel behavior, approval suspension/resume, structured completion, and normalized failures.
|
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# @aevr/agents-ai-sdk
|
|
2
|
+
|
|
3
|
+
Vercel AI SDK inference and loop adapters for [`@aevr/agents`](https://www.npmjs.com/package/@aevr/agents).
|
|
4
|
+
|
|
5
|
+
## Status
|
|
6
|
+
|
|
7
|
+
The public inference adapter is available. Provider-neutral messages, tools, models, and inference results are mapped without adding AI SDK dependencies to the core package.
|
|
8
|
+
|
|
9
|
+
The adapter targets AI SDK v7 and requires Node.js 22 or newer. Repository development and publication CI use Node.js 24.
|
|
10
|
+
|
|
11
|
+
## Inference gateway
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { AiSdkInferenceGateway } from "@aevr/agents-ai-sdk";
|
|
15
|
+
import { openai } from "@ai-sdk/openai";
|
|
16
|
+
|
|
17
|
+
const gateway = new AiSdkInferenceGateway({
|
|
18
|
+
models: [{ id: "gpt-5", provider: "openai" }],
|
|
19
|
+
resolveModel(modelId) {
|
|
20
|
+
return { model: openai(modelId), provider: "openai" };
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`AiSdkInferenceGateway` implements the portable `InferenceGateway` contract. Applications own provider packages, credentials, and model selection through `resolveModel`; this package never stores provider keys.
|
|
26
|
+
|
|
27
|
+
Mappings include:
|
|
28
|
+
|
|
29
|
+
- Portable system, user, assistant, tool-call, tool-result, and approval-response messages to AI SDK v7 `ModelMessage` values.
|
|
30
|
+
- Portable closed JSON Schema tool definitions to AI SDK tools without executing them.
|
|
31
|
+
- Model catalog and model resolver selection.
|
|
32
|
+
- Text, tool calls, finish reason, request/model IDs, provider, and token usage back to portable inference responses.
|
|
33
|
+
- Allowed-provider metadata, temperature, output-token bounds, abort signals, and response schemas.
|
|
34
|
+
|
|
35
|
+
The gateway performs one model invocation and supports normalized streaming through the portable gateway contract.
|
|
36
|
+
|
|
37
|
+
## Bounded agent loop
|
|
38
|
+
|
|
39
|
+
`AiSdkAgentLoopAdapter` implements the portable `AgentLoopAdapter` contract over any `InferenceGateway`:
|
|
40
|
+
|
|
41
|
+
- Generate or stream mode with one stable invocation ID per model turn.
|
|
42
|
+
- Agent instructions and task fallback prompts without mutating durable input.
|
|
43
|
+
- Active capability schemas and policy-bound `RegisteredTool` execution.
|
|
44
|
+
- Deeply immutable principal/run context passed to tools.
|
|
45
|
+
- Cumulative model/tool step, token, and cost limits.
|
|
46
|
+
- Run-duration/deadline timeout and caller cancellation propagation.
|
|
47
|
+
- Portable model, tool, approval, completion, and failure events.
|
|
48
|
+
- Approval suspension with a persisted tool result and resume from approval-response messages.
|
|
49
|
+
- Structured `RunOutcome` JSON when provided, with safe plain-text completion fallback.
|
|
50
|
+
|
|
51
|
+
The adapter does not persist events, actions, approvals, or checkpoints. Compose it with `@aevr/agents-runtime-local` so the durable runtime remains the authority for leases, action idempotency, approval records, usage reconciliation, and crash recovery.
|
|
52
|
+
|
|
53
|
+
## Development
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pnpm test
|
|
57
|
+
pnpm run typecheck
|
|
58
|
+
pnpm run build
|
|
59
|
+
npm pack --dry-run
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
MIT
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { InferenceAccountContext, InferenceGateway, InferenceEvent, InferenceRequest, InferenceResponse, InferenceRunContext, ModelCatalog, ModelCatalogEntry } from "@aevr/agents";
|
|
2
|
+
import { type LanguageModel } from "ai";
|
|
3
|
+
export interface AiSdkResolvedModel {
|
|
4
|
+
readonly model: LanguageModel;
|
|
5
|
+
readonly provider?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AiSdkInferenceGatewayOptions {
|
|
8
|
+
readonly id?: string;
|
|
9
|
+
readonly models: readonly ModelCatalogEntry[];
|
|
10
|
+
readonly resolveModel: (modelId: string, context: InferenceRunContext) => AiSdkResolvedModel;
|
|
11
|
+
readonly now?: () => string;
|
|
12
|
+
}
|
|
13
|
+
export declare class AiSdkInferenceGateway implements InferenceGateway {
|
|
14
|
+
#private;
|
|
15
|
+
readonly id: string;
|
|
16
|
+
constructor(options: AiSdkInferenceGatewayOptions);
|
|
17
|
+
listModels(_context: InferenceAccountContext): Promise<ModelCatalog>;
|
|
18
|
+
invoke(request: InferenceRequest, context: InferenceRunContext): Promise<InferenceResponse>;
|
|
19
|
+
stream(request: InferenceRequest, context: InferenceRunContext): AsyncIterable<InferenceEvent>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgD,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAGtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,kBAAkB,CAAC;IAC7F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAKR,OAAO,EAAE,4BAA4B;IAO3C,UAAU,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIpE,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoB1F,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAAC,cAAc,CAAC;CAuCtG"}
|
package/dist/gateway.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { generateText, jsonSchema, Output, streamText } from "ai";
|
|
2
|
+
import { fromAiSdkOutput, fromAiSdkResult, toAiSdkMessages, toAiSdkTools, toPortableUsage } from "./mapping.js";
|
|
3
|
+
export class AiSdkInferenceGateway {
|
|
4
|
+
id;
|
|
5
|
+
#models;
|
|
6
|
+
#resolveModel;
|
|
7
|
+
#now;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.id = options.id ?? "aevr.ai-sdk";
|
|
10
|
+
this.#models = Object.freeze(options.models.map((model) => Object.freeze({ ...model })));
|
|
11
|
+
this.#resolveModel = options.resolveModel;
|
|
12
|
+
this.#now = options.now ?? (() => new Date().toISOString());
|
|
13
|
+
}
|
|
14
|
+
async listModels(_context) {
|
|
15
|
+
return { models: this.#models.map((model) => ({ ...model })), fetchedAt: this.#now() };
|
|
16
|
+
}
|
|
17
|
+
async invoke(request, context) {
|
|
18
|
+
const resolved = this.#resolveModel(request.model, context);
|
|
19
|
+
const result = await generateText({
|
|
20
|
+
model: resolved.model,
|
|
21
|
+
messages: toAiSdkMessages(request.messages),
|
|
22
|
+
tools: toAiSdkTools(request.tools),
|
|
23
|
+
...(request.allowedProviders ? { providerOptions: { aevr: { allowedProviders: [...request.allowedProviders] } } } : {}),
|
|
24
|
+
...(request.temperature === undefined ? {} : { temperature: request.temperature }),
|
|
25
|
+
...(request.maxOutputTokens === undefined ? {} : { maxOutputTokens: request.maxOutputTokens }),
|
|
26
|
+
...(request.abortSignal === undefined ? {} : { abortSignal: request.abortSignal }),
|
|
27
|
+
...(request.responseSchema === undefined ? {} : { output: Output.object({ schema: jsonSchema(request.responseSchema) }) }),
|
|
28
|
+
maxRetries: 0,
|
|
29
|
+
});
|
|
30
|
+
return fromAiSdkResult(result, {
|
|
31
|
+
invocationId: context.invocationId,
|
|
32
|
+
requestedModel: request.model,
|
|
33
|
+
provider: resolved.provider,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async *stream(request, context) {
|
|
37
|
+
const resolved = this.#resolveModel(request.model, context);
|
|
38
|
+
const result = streamText({
|
|
39
|
+
model: resolved.model,
|
|
40
|
+
messages: toAiSdkMessages(request.messages),
|
|
41
|
+
tools: toAiSdkTools(request.tools),
|
|
42
|
+
...(request.allowedProviders ? { providerOptions: { aevr: { allowedProviders: [...request.allowedProviders] } } } : {}),
|
|
43
|
+
...(request.temperature === undefined ? {} : { temperature: request.temperature }),
|
|
44
|
+
...(request.maxOutputTokens === undefined ? {} : { maxOutputTokens: request.maxOutputTokens }),
|
|
45
|
+
...(request.abortSignal === undefined ? {} : { abortSignal: request.abortSignal }),
|
|
46
|
+
...(request.responseSchema === undefined ? {} : { output: Output.object({ schema: jsonSchema(request.responseSchema) }) }),
|
|
47
|
+
maxRetries: 0,
|
|
48
|
+
});
|
|
49
|
+
for await (const part of result.fullStream) {
|
|
50
|
+
if (part.type === "text-delta")
|
|
51
|
+
yield { type: "text_delta", text: part.text };
|
|
52
|
+
if (part.type === "error") {
|
|
53
|
+
yield { type: "error", error: normalizeInferenceError(part.error, "AI_SDK_STREAM_FAILED", true) };
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (part.type === "abort") {
|
|
57
|
+
yield { type: "error", error: normalizeInferenceError(part.reason, "AI_SDK_STREAM_ABORTED", false) };
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const response = fromAiSdkOutput({
|
|
62
|
+
text: await result.text,
|
|
63
|
+
toolCalls: await result.toolCalls,
|
|
64
|
+
response: await result.response,
|
|
65
|
+
usage: await result.totalUsage,
|
|
66
|
+
finishReason: await result.finishReason,
|
|
67
|
+
}, {
|
|
68
|
+
invocationId: context.invocationId,
|
|
69
|
+
requestedModel: request.model,
|
|
70
|
+
provider: resolved.provider,
|
|
71
|
+
});
|
|
72
|
+
for (const message of response.messages)
|
|
73
|
+
yield { type: "message", message };
|
|
74
|
+
yield { type: "usage", usage: toPortableUsage(response.usage) };
|
|
75
|
+
yield { type: "completed", response };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function normalizeInferenceError(error, code, retryable) {
|
|
79
|
+
const message = error instanceof Error ? error.message : String(error ?? code);
|
|
80
|
+
return { code, message: message.slice(0, 1_000), retryable };
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAsB,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAchH,MAAM,OAAO,qBAAqB;IACvB,EAAE,CAAS;IACX,OAAO,CAA+B;IACtC,aAAa,CAA+C;IAC5D,IAAI,CAAe;IAE5B,YAAY,OAAqC;QAC/C,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,aAAa,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAiC;QAChD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAyB,EAAE,OAA4B;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3C,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvH,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAC9F,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1H,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QACH,OAAO,eAAe,CAAC,MAAM,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,KAAK;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAyB,EAAE,OAA4B;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3C,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvH,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAC9F,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1H,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;gBAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC;gBAClG,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrG,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC;YAC/B,IAAI,EAAE,MAAM,MAAM,CAAC,IAAI;YACvB,SAAS,EAAE,MAAM,MAAM,CAAC,SAAS;YACjC,QAAQ,EAAE,MAAM,MAAM,CAAC,QAAQ;YAC/B,KAAK,EAAE,MAAM,MAAM,CAAC,UAAU;YAC9B,YAAY,EAAE,MAAM,MAAM,CAAC,YAAY;SACxC,EAAE;YACD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,KAAK;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;YAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC5E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC;CACF;AAED,SAAS,uBAAuB,CAAC,KAAc,EAAE,IAAY,EAAE,SAAkB;IAC/E,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;IAC/E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
package/dist/loop.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type AgentLoopAdapter, type AgentLoopEvent, type AgentLoopInput, type AgentLoopResumeInput, type InferenceGateway } from "@aevr/agents";
|
|
2
|
+
export interface AiSdkLoopIdSource {
|
|
3
|
+
next(prefix: string): string;
|
|
4
|
+
}
|
|
5
|
+
export interface AiSdkAgentLoopOptions {
|
|
6
|
+
readonly id?: string;
|
|
7
|
+
readonly gateway: InferenceGateway;
|
|
8
|
+
readonly ids: AiSdkLoopIdSource;
|
|
9
|
+
readonly accountId: string | ((input: AgentLoopInput) => string);
|
|
10
|
+
readonly mode?: "generate" | "stream";
|
|
11
|
+
readonly timeoutSignal?: (milliseconds: number) => AbortSignal;
|
|
12
|
+
readonly now?: () => number;
|
|
13
|
+
}
|
|
14
|
+
export declare class AiSdkAgentLoopAdapter implements AgentLoopAdapter {
|
|
15
|
+
#private;
|
|
16
|
+
readonly id: string;
|
|
17
|
+
constructor(options: AiSdkAgentLoopOptions);
|
|
18
|
+
run(input: AgentLoopInput): AsyncIterable<AgentLoopEvent>;
|
|
19
|
+
resume(input: AgentLoopResumeInput): AsyncIterable<AgentLoopEvent>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAEzB,KAAK,gBAAgB,EAOtB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,WAAW,CAAC;IAC/D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAQR,OAAO,EAAE,qBAAqB;IAU1C,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IAIzD,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,cAAc,CAAC;CA2InE"}
|
package/dist/loop.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { RunOutcomeSchema, } from "@aevr/agents";
|
|
2
|
+
export class AiSdkAgentLoopAdapter {
|
|
3
|
+
id;
|
|
4
|
+
#gateway;
|
|
5
|
+
#ids;
|
|
6
|
+
#accountId;
|
|
7
|
+
#mode;
|
|
8
|
+
#timeoutSignal;
|
|
9
|
+
#now;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.id = options.id ?? "aevr.ai-sdk-loop";
|
|
12
|
+
this.#gateway = options.gateway;
|
|
13
|
+
this.#ids = options.ids;
|
|
14
|
+
this.#accountId = options.accountId;
|
|
15
|
+
this.#mode = options.mode ?? "generate";
|
|
16
|
+
this.#timeoutSignal = options.timeoutSignal ?? ((milliseconds) => AbortSignal.timeout(milliseconds));
|
|
17
|
+
this.#now = options.now ?? Date.now;
|
|
18
|
+
}
|
|
19
|
+
run(input) {
|
|
20
|
+
return this.#run(input, []);
|
|
21
|
+
}
|
|
22
|
+
resume(input) {
|
|
23
|
+
return this.#run(input, input.approvalResponses);
|
|
24
|
+
}
|
|
25
|
+
async *#run(input, approvalResponses) {
|
|
26
|
+
const runContext = deepFreeze(structuredClone(input.context));
|
|
27
|
+
const timeoutMs = remainingDuration(input, this.#now());
|
|
28
|
+
if (timeoutMs <= 0) {
|
|
29
|
+
yield { type: "failed", error: normalizedError("RUN_DEADLINE_EXCEEDED", "Run deadline has elapsed.", false) };
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const abortSignal = AbortSignal.any([input.abortSignal, this.#timeoutSignal(timeoutMs)]);
|
|
33
|
+
const tools = indexTools(input.tools);
|
|
34
|
+
const messages = initialMessages(input, approvalResponses);
|
|
35
|
+
let usage = structuredClone(input.run.usage);
|
|
36
|
+
while (true) {
|
|
37
|
+
if (abortSignal.aborted) {
|
|
38
|
+
yield { type: "failed", error: normalizedError(input.abortSignal.aborted ? "AGENT_LOOP_ABORTED" : "RUN_TIMEOUT", abortReason(abortSignal), false) };
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (usage.steps >= input.run.limits.maxSteps) {
|
|
42
|
+
yield { type: "failed", error: normalizedError("RUN_STEP_LIMIT", "Run step limit reached.", false) };
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const invocationId = this.#ids.next("invocation");
|
|
46
|
+
yield { type: "model.started", invocationId };
|
|
47
|
+
let response;
|
|
48
|
+
try {
|
|
49
|
+
response = this.#mode === "stream"
|
|
50
|
+
? yield* this.#streamResponse(input, invocationId, messages, abortSignal)
|
|
51
|
+
: await this.#gateway.invoke(buildRequest(input, messages, abortSignal), inferenceContext(input, invocationId, this.#accountId));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
yield { type: "failed", error: normalizedError(abortSignal.aborted
|
|
55
|
+
? input.abortSignal.aborted ? "AGENT_LOOP_ABORTED" : "RUN_TIMEOUT"
|
|
56
|
+
: "MODEL_CALL_FAILED", abortSignal.aborted && !input.abortSignal.aborted ? "Run timed out." : abortSignal.aborted ? abortReason(abortSignal) : errorMessage(error), !abortSignal.aborted) };
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const responseMessage = response.messages.find((message) => message.role === "assistant");
|
|
60
|
+
const toolCalls = responseMessage?.content.filter((part) => part.type === "tool_call") ?? [];
|
|
61
|
+
usage = addModelUsage(usage, response, 1 + toolCalls.length);
|
|
62
|
+
const limitError = checkUsageLimits(input, usage);
|
|
63
|
+
if (limitError) {
|
|
64
|
+
yield { type: "failed", error: limitError };
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
yield { type: "model.completed", invocationId, usage };
|
|
68
|
+
for (const message of response.messages) {
|
|
69
|
+
messages.push(structuredClone(message));
|
|
70
|
+
yield { type: "message", message };
|
|
71
|
+
}
|
|
72
|
+
if (!toolCalls.length) {
|
|
73
|
+
yield { type: "completed", outcome: parseOutcome(responseMessage) };
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
for (const call of toolCalls) {
|
|
77
|
+
yield { type: "tool.requested", toolCallId: call.toolCallId, capabilityId: call.capabilityId, input: call.input };
|
|
78
|
+
const registered = tools.get(call.capabilityId);
|
|
79
|
+
if (!registered) {
|
|
80
|
+
const error = normalizedError("UNKNOWN_CAPABILITY", `Capability ${call.capabilityId} is not active.`, false);
|
|
81
|
+
yield { type: "tool.failed", toolCallId: call.toolCallId, capabilityId: call.capabilityId, error };
|
|
82
|
+
messages.push(toolResult(call, error));
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
let result;
|
|
86
|
+
try {
|
|
87
|
+
const toolSignal = AbortSignal.any([abortSignal, this.#timeoutSignal(registered.descriptor.timeoutMs)]);
|
|
88
|
+
result = await registered.executor.execute(call.input, {
|
|
89
|
+
principal: Object.freeze({
|
|
90
|
+
applicationId: runContext.applicationId,
|
|
91
|
+
subjectId: runContext.subjectId,
|
|
92
|
+
subjectKind: "agent",
|
|
93
|
+
agentId: runContext.agentId,
|
|
94
|
+
}),
|
|
95
|
+
runContext,
|
|
96
|
+
toolCallId: call.toolCallId,
|
|
97
|
+
abortSignal: toolSignal,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const normalized = normalizedError("TOOL_EXECUTION_FAILED", errorMessage(error), true);
|
|
102
|
+
yield { type: "tool.failed", toolCallId: call.toolCallId, capabilityId: call.capabilityId, error: normalized };
|
|
103
|
+
messages.push(toolResult(call, normalized));
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (result.status === "waiting_approval") {
|
|
107
|
+
const approvalId = this.#ids.next("approval");
|
|
108
|
+
const waitingMessage = toolOutput(call, { status: "waiting_approval", approvalId, policyDecision: result.policyDecision });
|
|
109
|
+
messages.push(waitingMessage);
|
|
110
|
+
yield { type: "message", message: waitingMessage };
|
|
111
|
+
yield { type: "approval.requested", approvalId, toolCallId: call.toolCallId };
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (result.status === "success") {
|
|
115
|
+
const output = result.output ?? null;
|
|
116
|
+
yield { type: "tool.completed", toolCallId: call.toolCallId, capabilityId: call.capabilityId, output };
|
|
117
|
+
messages.push(toolOutput(call, output));
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const error = result.error ?? normalizedError(result.status === "denied" ? "TOOL_DENIED" : "TOOL_FAILED", result.status === "denied" ? "Capability execution was denied." : "Capability execution failed.", false);
|
|
121
|
+
yield { type: "tool.failed", toolCallId: call.toolCallId, capabilityId: call.capabilityId, error };
|
|
122
|
+
messages.push(toolResult(call, error));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async *#streamResponse(input, invocationId, messages, abortSignal) {
|
|
127
|
+
if (!this.#gateway.stream)
|
|
128
|
+
throw new Error(`Inference gateway ${this.#gateway.id} does not support streaming.`);
|
|
129
|
+
let response = null;
|
|
130
|
+
for await (const event of this.#gateway.stream(buildRequest(input, messages, abortSignal), inferenceContext(input, invocationId, this.#accountId))) {
|
|
131
|
+
if (event.type === "error")
|
|
132
|
+
throw new Error(event.error.message);
|
|
133
|
+
if (event.type === "completed")
|
|
134
|
+
response = event.response;
|
|
135
|
+
}
|
|
136
|
+
if (!response)
|
|
137
|
+
throw new Error("Inference stream ended without a completed response.");
|
|
138
|
+
return response;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function initialMessages(input, approvalResponses) {
|
|
142
|
+
const messages = [
|
|
143
|
+
{ role: "system", content: [{ type: "text", text: input.agent.instructions }] },
|
|
144
|
+
...input.messages.map((message) => structuredClone(message)),
|
|
145
|
+
];
|
|
146
|
+
if (!messages.some((message) => message.role === "user")) {
|
|
147
|
+
messages.push({
|
|
148
|
+
role: "user",
|
|
149
|
+
content: [{ type: "text", text: [
|
|
150
|
+
`Task: ${input.task.title}`,
|
|
151
|
+
`Goal: ${input.task.goal}`,
|
|
152
|
+
`Constraints: ${input.task.constraints.join("; ") || "none"}`,
|
|
153
|
+
`Acceptance criteria: ${input.task.acceptanceCriteria.join("; ")}`,
|
|
154
|
+
].join("\n") }],
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
messages.push(...approvalResponses.map((message) => structuredClone(message)));
|
|
158
|
+
return messages;
|
|
159
|
+
}
|
|
160
|
+
function buildRequest(input, messages, abortSignal) {
|
|
161
|
+
return {
|
|
162
|
+
model: input.run.model.model,
|
|
163
|
+
messages,
|
|
164
|
+
tools: input.tools.map(({ descriptor }) => ({
|
|
165
|
+
name: descriptor.id,
|
|
166
|
+
description: descriptor.description,
|
|
167
|
+
inputSchema: descriptor.inputSchema,
|
|
168
|
+
})),
|
|
169
|
+
allowedProviders: input.run.model.allowedProviders,
|
|
170
|
+
temperature: input.run.model.temperature,
|
|
171
|
+
maxOutputTokens: input.run.model.maxOutputTokens,
|
|
172
|
+
abortSignal,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function inferenceContext(input, invocationId, accountId) {
|
|
176
|
+
return {
|
|
177
|
+
accountId: typeof accountId === "function" ? accountId(input) : accountId,
|
|
178
|
+
applicationId: input.context.applicationId,
|
|
179
|
+
projectId: input.context.projectId,
|
|
180
|
+
agentId: input.context.agentId,
|
|
181
|
+
subjectId: input.context.subjectId,
|
|
182
|
+
taskId: input.context.taskId,
|
|
183
|
+
runId: input.context.runId,
|
|
184
|
+
invocationId,
|
|
185
|
+
workloadType: "autonomous_member_agent",
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function indexTools(tools) {
|
|
189
|
+
const entries = tools.map((registered) => [registered.descriptor.id, registered]);
|
|
190
|
+
if (new Set(entries.map(([id]) => id)).size !== entries.length)
|
|
191
|
+
throw new RangeError("Active capability IDs must be unique.");
|
|
192
|
+
return new Map(entries);
|
|
193
|
+
}
|
|
194
|
+
function addModelUsage(current, response, steps) {
|
|
195
|
+
return {
|
|
196
|
+
steps: current.steps + steps,
|
|
197
|
+
modelCalls: current.modelCalls + 1,
|
|
198
|
+
toolCalls: current.toolCalls + Math.max(0, steps - 1),
|
|
199
|
+
inputTokens: current.inputTokens + response.usage.inputTokens,
|
|
200
|
+
outputTokens: current.outputTokens + response.usage.outputTokens,
|
|
201
|
+
projectedCostUsd: current.projectedCostUsd + (response.usage.projectedCostUsd ?? 0),
|
|
202
|
+
reconciledCostUsd: current.reconciledCostUsd + (response.usage.chargedCostUsd ?? 0),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function checkUsageLimits(input, usage) {
|
|
206
|
+
const limits = input.run.limits;
|
|
207
|
+
if (usage.steps > limits.maxSteps)
|
|
208
|
+
return normalizedError("RUN_STEP_LIMIT", "Run step limit exceeded.", false);
|
|
209
|
+
if (limits.maxInputTokens !== undefined && usage.inputTokens > limits.maxInputTokens)
|
|
210
|
+
return normalizedError("RUN_INPUT_TOKEN_LIMIT", "Run input token limit exceeded.", false);
|
|
211
|
+
if (limits.maxOutputTokens !== undefined && usage.outputTokens > limits.maxOutputTokens)
|
|
212
|
+
return normalizedError("RUN_OUTPUT_TOKEN_LIMIT", "Run output token limit exceeded.", false);
|
|
213
|
+
if (limits.maxCostUsd !== undefined && Math.max(usage.projectedCostUsd, usage.reconciledCostUsd) > limits.maxCostUsd)
|
|
214
|
+
return normalizedError("RUN_COST_LIMIT", "Run cost limit exceeded.", false);
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
function parseOutcome(message) {
|
|
218
|
+
const text = message?.content.filter((part) => part.type === "text").map((part) => part.text).join("\n").trim() ?? "";
|
|
219
|
+
if (text) {
|
|
220
|
+
try {
|
|
221
|
+
const parsed = RunOutcomeSchema.safeParse(JSON.parse(text));
|
|
222
|
+
if (parsed.success)
|
|
223
|
+
return parsed.data;
|
|
224
|
+
}
|
|
225
|
+
catch { /* plain text completion */ }
|
|
226
|
+
}
|
|
227
|
+
return { status: "completed", summary: text || "Model completed without a textual response.", evidence: [] };
|
|
228
|
+
}
|
|
229
|
+
function toolOutput(call, output) {
|
|
230
|
+
return { role: "tool", content: [{ type: "tool_result", toolCallId: call.toolCallId, capabilityId: call.capabilityId, output }] };
|
|
231
|
+
}
|
|
232
|
+
function toolResult(call, error) {
|
|
233
|
+
return { role: "tool", content: [{ type: "tool_result", toolCallId: call.toolCallId, capabilityId: call.capabilityId, error }] };
|
|
234
|
+
}
|
|
235
|
+
function remainingDuration(input, now) {
|
|
236
|
+
const startedAt = input.run.startedAt ? Date.parse(input.run.startedAt) : now;
|
|
237
|
+
const duration = input.run.limits.maxRunDurationMs - Math.max(0, now - startedAt);
|
|
238
|
+
if (!input.run.limits.deadline)
|
|
239
|
+
return duration;
|
|
240
|
+
return Math.min(duration, Date.parse(input.run.limits.deadline) - now);
|
|
241
|
+
}
|
|
242
|
+
function normalizedError(code, message, retryable) {
|
|
243
|
+
return { code, message: message.slice(0, 1_000), retryable };
|
|
244
|
+
}
|
|
245
|
+
function errorMessage(error) {
|
|
246
|
+
return error instanceof Error ? error.message : String(error ?? "Unknown error");
|
|
247
|
+
}
|
|
248
|
+
function abortReason(signal) {
|
|
249
|
+
return errorMessage(signal.reason ?? "Agent loop aborted.");
|
|
250
|
+
}
|
|
251
|
+
function deepFreeze(value, seen = new Set()) {
|
|
252
|
+
if (value === null || typeof value !== "object" || seen.has(value))
|
|
253
|
+
return value;
|
|
254
|
+
seen.add(value);
|
|
255
|
+
for (const nested of Object.values(value))
|
|
256
|
+
deepFreeze(nested, seen);
|
|
257
|
+
return Object.freeze(value);
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=loop.js.map
|
package/dist/loop.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { InferenceResponse, InferenceToolDefinition, InferenceUsage, PortableMessage } from "@aevr/agents";
|
|
2
|
+
import { generateText, type ModelMessage, type ToolSet } from "ai";
|
|
3
|
+
export declare function toAiSdkMessages(messages: readonly PortableMessage[]): ModelMessage[];
|
|
4
|
+
export declare function toAiSdkTools(definitions: readonly InferenceToolDefinition[] | undefined): ToolSet | undefined;
|
|
5
|
+
export declare function fromAiSdkResult(result: Awaited<ReturnType<typeof generateText>>, input: {
|
|
6
|
+
readonly invocationId: string;
|
|
7
|
+
readonly requestedModel: string;
|
|
8
|
+
readonly provider?: string;
|
|
9
|
+
}): InferenceResponse;
|
|
10
|
+
export declare function fromAiSdkOutput(result: {
|
|
11
|
+
readonly text: string;
|
|
12
|
+
readonly toolCalls: readonly {
|
|
13
|
+
readonly toolCallId: string;
|
|
14
|
+
readonly toolName: string;
|
|
15
|
+
readonly input: unknown;
|
|
16
|
+
}[];
|
|
17
|
+
readonly response: {
|
|
18
|
+
readonly id?: string;
|
|
19
|
+
readonly modelId?: string;
|
|
20
|
+
};
|
|
21
|
+
readonly usage: {
|
|
22
|
+
readonly inputTokens?: number;
|
|
23
|
+
readonly outputTokens?: number;
|
|
24
|
+
};
|
|
25
|
+
readonly finishReason?: string;
|
|
26
|
+
}, input: {
|
|
27
|
+
readonly invocationId: string;
|
|
28
|
+
readonly requestedModel: string;
|
|
29
|
+
readonly provider?: string;
|
|
30
|
+
}): InferenceResponse;
|
|
31
|
+
export declare function toPortableUsage(usage: {
|
|
32
|
+
readonly inputTokens?: number;
|
|
33
|
+
readonly outputTokens?: number;
|
|
34
|
+
}): InferenceUsage;
|
|
35
|
+
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EAGZ,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAEZ,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,YAAY,EAAE,CAEpF;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,SAAS,uBAAuB,EAAE,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAa7G;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,EAChD,KAAK,EAAE;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG,iBAAiB,CAQnB;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IACN,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACnH,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,EACD,KAAK,EAAE;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG,iBAAiB,CAsBnB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAExH"}
|
package/dist/mapping.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { generateText, jsonSchema, tool, } from "ai";
|
|
2
|
+
export function toAiSdkMessages(messages) {
|
|
3
|
+
return messages.map(toAiSdkMessage);
|
|
4
|
+
}
|
|
5
|
+
export function toAiSdkTools(definitions) {
|
|
6
|
+
if (!definitions?.length)
|
|
7
|
+
return undefined;
|
|
8
|
+
const entries = definitions.map((definition) => {
|
|
9
|
+
if (!definition.name.trim())
|
|
10
|
+
throw new RangeError("Inference tool name is required.");
|
|
11
|
+
return [definition.name, tool({
|
|
12
|
+
description: definition.description,
|
|
13
|
+
inputSchema: jsonSchema(definition.inputSchema),
|
|
14
|
+
})];
|
|
15
|
+
});
|
|
16
|
+
if (new Set(entries.map(([name]) => name)).size !== entries.length) {
|
|
17
|
+
throw new RangeError("Inference tool names must be unique.");
|
|
18
|
+
}
|
|
19
|
+
return Object.fromEntries(entries);
|
|
20
|
+
}
|
|
21
|
+
export function fromAiSdkResult(result, input) {
|
|
22
|
+
return fromAiSdkOutput({
|
|
23
|
+
text: result.text,
|
|
24
|
+
toolCalls: result.toolCalls,
|
|
25
|
+
response: result.response,
|
|
26
|
+
usage: result.totalUsage,
|
|
27
|
+
finishReason: result.finishReason,
|
|
28
|
+
}, input);
|
|
29
|
+
}
|
|
30
|
+
export function fromAiSdkOutput(result, input) {
|
|
31
|
+
const content = [];
|
|
32
|
+
if (result.text)
|
|
33
|
+
content.push({ type: "text", text: result.text });
|
|
34
|
+
for (const call of result.toolCalls) {
|
|
35
|
+
content.push({
|
|
36
|
+
type: "tool_call",
|
|
37
|
+
toolCallId: call.toolCallId,
|
|
38
|
+
capabilityId: call.toolName,
|
|
39
|
+
input: call.input,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
requestId: result.response.id ?? input.invocationId,
|
|
44
|
+
model: result.response.modelId ?? input.requestedModel,
|
|
45
|
+
...(input.provider ? { provider: input.provider } : {}),
|
|
46
|
+
messages: content.length ? [{ role: "assistant", content }] : [],
|
|
47
|
+
usage: {
|
|
48
|
+
inputTokens: result.usage.inputTokens ?? 0,
|
|
49
|
+
outputTokens: result.usage.outputTokens ?? 0,
|
|
50
|
+
},
|
|
51
|
+
finishReason: result.finishReason,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function toPortableUsage(usage) {
|
|
55
|
+
return { inputTokens: usage.inputTokens ?? 0, outputTokens: usage.outputTokens ?? 0 };
|
|
56
|
+
}
|
|
57
|
+
function toAiSdkMessage(message) {
|
|
58
|
+
if (message.role === "system") {
|
|
59
|
+
return { role: "system", content: requireTextOnly(message) };
|
|
60
|
+
}
|
|
61
|
+
if (message.role === "user") {
|
|
62
|
+
const content = message.content.map((part) => {
|
|
63
|
+
if (part.type === "text")
|
|
64
|
+
return { type: "text", text: part.text };
|
|
65
|
+
if (part.type === "approval_response") {
|
|
66
|
+
return {
|
|
67
|
+
type: "text",
|
|
68
|
+
text: JSON.stringify({ approvalId: part.approvalId, approved: part.approved, reason: part.reason }),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
throw new TypeError(`User messages cannot contain ${part.type} parts.`);
|
|
72
|
+
});
|
|
73
|
+
return { role: "user", content };
|
|
74
|
+
}
|
|
75
|
+
if (message.role === "assistant") {
|
|
76
|
+
const content = message.content.map((part) => {
|
|
77
|
+
if (part.type === "text")
|
|
78
|
+
return { type: "text", text: part.text };
|
|
79
|
+
if (part.type === "tool_call") {
|
|
80
|
+
return {
|
|
81
|
+
type: "tool-call",
|
|
82
|
+
toolCallId: part.toolCallId,
|
|
83
|
+
toolName: part.capabilityId,
|
|
84
|
+
input: part.input,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
throw new TypeError(`Assistant messages cannot contain ${part.type} parts.`);
|
|
88
|
+
});
|
|
89
|
+
return { role: "assistant", content };
|
|
90
|
+
}
|
|
91
|
+
const content = message.content.map((part) => {
|
|
92
|
+
if (part.type !== "tool_result")
|
|
93
|
+
throw new TypeError(`Tool messages cannot contain ${part.type} parts.`);
|
|
94
|
+
return {
|
|
95
|
+
type: "tool-result",
|
|
96
|
+
toolCallId: part.toolCallId,
|
|
97
|
+
toolName: part.capabilityId,
|
|
98
|
+
output: part.error === undefined
|
|
99
|
+
? { type: "json", value: part.output }
|
|
100
|
+
: { type: "error-json", value: part.error },
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
return { role: "tool", content };
|
|
104
|
+
}
|
|
105
|
+
function requireTextOnly(message) {
|
|
106
|
+
return message.content.map((part) => {
|
|
107
|
+
if (part.type !== "text")
|
|
108
|
+
throw new TypeError(`System messages cannot contain ${part.type} parts.`);
|
|
109
|
+
return part.text;
|
|
110
|
+
}).join("\n");
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aevr/agents-ai-sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Vercel AI SDK inference and loop adapters for @aevr/agents.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"agents",
|
|
7
|
+
"ai",
|
|
8
|
+
"ai-sdk",
|
|
9
|
+
"autonomous-agents",
|
|
10
|
+
"typescript"
|
|
11
|
+
],
|
|
12
|
+
"type": "module",
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist/**/*.js",
|
|
24
|
+
"dist/**/*.js.map",
|
|
25
|
+
"dist/**/*.d.ts",
|
|
26
|
+
"dist/**/*.d.ts.map",
|
|
27
|
+
"README.md",
|
|
28
|
+
"CHANGELOG.md"
|
|
29
|
+
],
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/miracleonyenma/proxmox-management.git",
|
|
36
|
+
"directory": "packages/agents-ai-sdk"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/miracleonyenma/proxmox-management/tree/main/packages/agents-ai-sdk#readme",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/miracleonyenma/proxmox-management/issues"
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=22.0.0"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"@aevr/agents": "^0.2.0",
|
|
48
|
+
"ai": "^7.0.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "22.20.1",
|
|
52
|
+
"ai": "7.0.76",
|
|
53
|
+
"standard-version": "^9.5.0",
|
|
54
|
+
"tsx": "^4.20.6",
|
|
55
|
+
"typescript": "^5.7.2",
|
|
56
|
+
"zod": "^4.4.3",
|
|
57
|
+
"@aevr/agents": "0.2.0"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsc -p .",
|
|
61
|
+
"typecheck": "tsc --noEmit",
|
|
62
|
+
"test": "tsx --test src/*.test.ts src/**/*.test.ts",
|
|
63
|
+
"release": "standard-version --tag-prefix agents-ai-sdk@v",
|
|
64
|
+
"release:patch": "standard-version --release-as patch --tag-prefix agents-ai-sdk@v",
|
|
65
|
+
"release:minor": "standard-version --release-as minor --tag-prefix agents-ai-sdk@v",
|
|
66
|
+
"release:major": "standard-version --release-as major --tag-prefix agents-ai-sdk@v"
|
|
67
|
+
}
|
|
68
|
+
}
|