@agent-harness-experimental/adapter-mastra 0.0.0 → 0.0.1

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 ADDED
@@ -0,0 +1 @@
1
+ Copyright Vercel Inc. Pre-release. Not licensed as OSS yet.
package/README.md CHANGED
@@ -1,3 +1,97 @@
1
- # @agent-harness-experimental/adapter-mastra
1
+ # `@agent-harness-experimental/adapter-mastra`
2
2
 
3
- Placeholder package.
3
+ Adapter for running [Mastra](https://mastra.ai/) agents inside `agent-harness-experimental`.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install agent-harness-experimental @agent-harness-experimental/adapter-mastra
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import { createAgentSession } from "agent-harness-experimental";
15
+ import { mastra } from "@agent-harness-experimental/adapter-mastra";
16
+
17
+ const agent = createAgentSession({
18
+ adapter: mastra(),
19
+ });
20
+
21
+ const result = await agent.generate("Build a REST API for user management");
22
+ console.log(result.text);
23
+ await agent.close("stop");
24
+ ```
25
+
26
+ ## Configuration
27
+
28
+ ```ts
29
+ mastra({
30
+ // Model ID
31
+ model: "claude-sonnet-4",
32
+
33
+ // Model provider
34
+ provider: "anthropic", // 'anthropic' | 'openai'
35
+
36
+ // Maximum conversation turns
37
+ maxTurns: 10,
38
+ });
39
+ ```
40
+
41
+ | Option | Type | Default | Description |
42
+ | --- | --- | --- | --- |
43
+ | `model` | `string` | — | Model ID |
44
+ | `provider` | `'anthropic' \| 'openai'` | — | Model provider |
45
+ | `maxTurns` | `number` | — | Max conversation turns |
46
+ | `auth` | `object` | — | Optional per-adapter auth override matching the selected provider |
47
+
48
+ Sandbox runtime options such as `template`, `timeoutMs`, and `httpHandler`
49
+ belong on `createAgentSession({ sandbox })`.
50
+
51
+ ```ts
52
+ const agent = createAgentSession({
53
+ adapter: mastra({
54
+ model: "claude-sonnet-4",
55
+ provider: "anthropic",
56
+ maxTurns: 10,
57
+ }),
58
+ sandbox: {
59
+ template: "snap_abc123",
60
+ timeoutMs: 60000,
61
+ httpHandler: async (request: Request) => fetch(request),
62
+ },
63
+ });
64
+ ```
65
+
66
+ ## Auth
67
+
68
+ `auth` is optional. If you omit it, Mastra keeps the existing ambient fallback.
69
+ For multi-provider runs, Mastra uses the auth bag matching `provider` or the
70
+ model prefix.
71
+
72
+ ```ts
73
+ mastra({
74
+ provider: "openai",
75
+ model: "gpt-5.4-mini",
76
+ auth: {
77
+ openai: {
78
+ apiKey: { env: "OPENAI_TEAM_B_API_KEY" },
79
+ },
80
+ },
81
+ });
82
+ ```
83
+
84
+ ## Built-in Tools
85
+
86
+ Mastra exposes standardized builtin names through `agent-harness-experimental`. The native runtime names are shown for reference:
87
+
88
+ | Tool | Native Tool | Description |
89
+ | --- | --- | --- |
90
+ | `read` | `read_file` | Read a text file |
91
+
92
+ ## Features
93
+
94
+ - **AI SDK integration**: Uses the Vercel AI SDK for model integration under the
95
+ hood (`@ai-sdk/openai`, `@ai-sdk/anthropic`)
96
+ - **Skills**: Rendered into agent instructions (no file-based skill storage)
97
+ - **Multi-turn**: Supports multi-turn conversations via the Mastra agent loop
@@ -0,0 +1,15 @@
1
+ import type { AgentAdapter, AdapterContext, AnthropicAuthOptions, GatewayAuthOptions, OpenAIAuthOptions, OpenAICompatibleAuthOptions } from 'agent-harness-experimental';
2
+ export interface MastraAdapterOptions {
3
+ model?: string;
4
+ provider?: 'anthropic' | 'openai';
5
+ maxTurns?: number;
6
+ auth?: {
7
+ gateway?: GatewayAuthOptions;
8
+ anthropic?: AnthropicAuthOptions;
9
+ openai?: OpenAIAuthOptions;
10
+ openaiCompatible?: OpenAICompatibleAuthOptions;
11
+ };
12
+ }
13
+ export declare function setupMastraEnv(ctx: AdapterContext, options?: MastraAdapterOptions, env?: NodeJS.ProcessEnv): void;
14
+ export declare function mastra(options?: MastraAdapterOptions): AgentAdapter;
15
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAG5B,MAAM,4BAA4B,CAAC;AAgDpC,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,SAAS,CAAC,EAAE,oBAAoB,CAAC;QACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;KAChD,CAAC;CACH;AA2HD,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAuD9H;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAqGnE"}
@@ -0,0 +1,282 @@
1
+ import { normalizeAdapterError, defineAdapterBuiltinTools, detachSandboxRuntime, getSandboxRuntimeLayout, hasHttpPathRuleForBaseUrl, promptSandboxRuntime, resolveAnthropicHeaders, resolveBearerHeaders, resolveSecretInput, resolveUrlHost, selectConfiguredAuthBag, startSandboxRuntime, stopSandboxRuntime, toSandboxPlaceholderSecret, } from 'agent-harness-experimental';
2
+ import { getSandboxImageName, withVercelSandboxBackend } from '@agent-harness-experimental/sandbox-vercel';
3
+ import { getMastraSandboxSetup } from './setup.js';
4
+ const { tools: MASTRA_BUILTIN_TOOLS, mappings: MASTRA_BUILTIN_TOOL_MAPPINGS } = defineAdapterBuiltinTools([
5
+ {
6
+ name: 'read',
7
+ nativeName: 'read_file',
8
+ description: 'Read a text file from the current workspace',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ path: { type: 'string', description: 'Relative path to the file' },
13
+ },
14
+ required: ['path'],
15
+ },
16
+ },
17
+ {
18
+ name: 'exec_command',
19
+ description: 'Execute a shell command in the workspace',
20
+ inputSchema: {
21
+ type: 'object',
22
+ properties: {
23
+ cmd: { type: 'string', description: 'Command to execute' },
24
+ command: { type: 'string', description: 'Command to execute' },
25
+ workdir: { type: 'string', description: 'Optional working directory relative to the workspace' },
26
+ },
27
+ },
28
+ },
29
+ ]);
30
+ function setEnvValue(target, name, value) {
31
+ if (value !== undefined) {
32
+ target[name] = value;
33
+ }
34
+ }
35
+ function setJsonEnv(target, name, value) {
36
+ if (value && Object.keys(value).length > 0) {
37
+ target[name] = JSON.stringify(value);
38
+ }
39
+ }
40
+ function resolveMastraProvider(options) {
41
+ if (options?.provider) {
42
+ return options.provider;
43
+ }
44
+ if (typeof options?.model === 'string' && options.model.includes('/')) {
45
+ const [provider] = options.model.split('/');
46
+ if (provider === 'anthropic' || provider === 'openai') {
47
+ return provider;
48
+ }
49
+ }
50
+ return 'anthropic';
51
+ }
52
+ function resolveMastraCoreSandboxAccess(options, sandboxConfig, env = process.env) {
53
+ const provider = resolveMastraProvider(options);
54
+ const selectedAuth = selectConfiguredAuthBag(options?.auth, provider === 'openai' ? ['openaiCompatible', 'openai', 'gateway'] : ['anthropic', 'gateway']);
55
+ const forceProxy = Boolean(sandboxConfig?.httpHandler);
56
+ if (selectedAuth === 'openaiCompatible') {
57
+ const auth = options?.auth?.openaiCompatible;
58
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.OPENAI_API_KEY;
59
+ const host = resolveUrlHost(auth?.baseURL ?? env.OPENAI_BASE_URL);
60
+ return {
61
+ ...(forceProxy ? { proxiedHosts: host ? [host] : [] } : { directHosts: host ? [host] : [] }),
62
+ injectedHeaders: host ? [{ domain: host, headers: resolveBearerHeaders(apiKey, auth?.headers) }] : [],
63
+ };
64
+ }
65
+ if (selectedAuth === 'openai') {
66
+ const auth = options?.auth?.openai;
67
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.OPENAI_API_KEY;
68
+ const host = resolveUrlHost(auth?.baseURL ?? env.OPENAI_BASE_URL, 'https://api.openai.com');
69
+ return {
70
+ ...(forceProxy ? { proxiedHosts: host ? [host] : [] } : { directHosts: host ? [host] : [] }),
71
+ injectedHeaders: host ? [{ domain: host, headers: resolveBearerHeaders(apiKey, auth?.headers) }] : [],
72
+ };
73
+ }
74
+ if (selectedAuth === 'anthropic') {
75
+ const auth = options?.auth?.anthropic;
76
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.ANTHROPIC_API_KEY;
77
+ const authToken = resolveSecretInput(auth?.authToken, env) ?? env.ANTHROPIC_AUTH_TOKEN;
78
+ const baseUrl = auth?.baseURL ?? env.ANTHROPIC_BASE_URL;
79
+ const host = resolveUrlHost(baseUrl, 'https://api.anthropic.com');
80
+ if (!host) {
81
+ return undefined;
82
+ }
83
+ if (forceProxy || hasHttpPathRuleForBaseUrl(sandboxConfig?.network?.deny?.urlPrefixes, baseUrl, 'https://api.anthropic.com')) {
84
+ return {
85
+ proxiedHosts: [host],
86
+ injectedHeaders: [{ domain: host, headers: resolveAnthropicHeaders({ apiKey, authToken, headers: auth?.headers }) }],
87
+ };
88
+ }
89
+ return {
90
+ directHosts: [host],
91
+ injectedHeaders: [{ domain: host, headers: resolveAnthropicHeaders({ apiKey, authToken, headers: auth?.headers }) }],
92
+ };
93
+ }
94
+ if (selectedAuth === 'gateway') {
95
+ const auth = options?.auth?.gateway;
96
+ const gatewayKey = resolveSecretInput(auth?.apiKey, env) ?? env.AI_GATEWAY_API_KEY;
97
+ const host = resolveUrlHost(auth?.baseURL ?? env.AI_GATEWAY_BASE_URL, 'https://ai-gateway.vercel.sh');
98
+ return {
99
+ ...(forceProxy ? { proxiedHosts: host ? [host] : [] } : { directHosts: host ? [host] : [] }),
100
+ injectedHeaders: host ? [{ domain: host, headers: resolveBearerHeaders(gatewayKey, auth?.headers) }] : [],
101
+ };
102
+ }
103
+ const gatewayKey = env.AI_GATEWAY_API_KEY || '';
104
+ if (gatewayKey) {
105
+ const host = resolveUrlHost(env.AI_GATEWAY_BASE_URL, 'https://ai-gateway.vercel.sh');
106
+ return {
107
+ ...(forceProxy ? { proxiedHosts: host ? [host] : [] } : { directHosts: host ? [host] : [] }),
108
+ injectedHeaders: host ? [{ domain: host, headers: resolveBearerHeaders(gatewayKey) }] : [],
109
+ };
110
+ }
111
+ if (provider === 'openai') {
112
+ const host = resolveUrlHost(env.OPENAI_BASE_URL, 'https://api.openai.com');
113
+ return {
114
+ ...(forceProxy ? { proxiedHosts: host ? [host] : [] } : { directHosts: host ? [host] : [] }),
115
+ injectedHeaders: host ? [{ domain: host, headers: resolveBearerHeaders(env.OPENAI_API_KEY) }] : [],
116
+ };
117
+ }
118
+ const baseUrl = env.ANTHROPIC_BASE_URL;
119
+ const host = resolveUrlHost(baseUrl, 'https://api.anthropic.com');
120
+ if (!host) {
121
+ return undefined;
122
+ }
123
+ if (forceProxy || hasHttpPathRuleForBaseUrl(sandboxConfig?.network?.deny?.urlPrefixes, baseUrl, 'https://api.anthropic.com')) {
124
+ return {
125
+ proxiedHosts: [host],
126
+ injectedHeaders: [{ domain: host, headers: resolveAnthropicHeaders({ apiKey: env.ANTHROPIC_API_KEY, authToken: env.ANTHROPIC_AUTH_TOKEN }) }],
127
+ };
128
+ }
129
+ return {
130
+ directHosts: [host],
131
+ injectedHeaders: [{ domain: host, headers: resolveAnthropicHeaders({ apiKey: env.ANTHROPIC_API_KEY, authToken: env.ANTHROPIC_AUTH_TOKEN }) }],
132
+ };
133
+ }
134
+ export function setupMastraEnv(ctx, options, env = process.env) {
135
+ const provider = resolveMastraProvider(options);
136
+ const selectedAuth = selectConfiguredAuthBag(options?.auth, provider === 'openai' ? ['openaiCompatible', 'openai', 'gateway'] : ['anthropic', 'gateway']);
137
+ if (selectedAuth === 'openaiCompatible') {
138
+ const auth = options?.auth?.openaiCompatible;
139
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.OPENAI_API_KEY;
140
+ setEnvValue(ctx.env, 'OPENAI_API_KEY', toSandboxPlaceholderSecret(apiKey));
141
+ setEnvValue(ctx.env, 'OPENAI_BASE_URL', auth?.baseURL ?? env.OPENAI_BASE_URL);
142
+ setEnvValue(ctx.env, 'OPENAI_NAME', auth?.name ?? env.OPENAI_NAME);
143
+ setJsonEnv(ctx.env, 'OPENAI_QUERY_PARAMS_JSON', auth?.queryParams);
144
+ }
145
+ else if (selectedAuth === 'openai') {
146
+ const auth = options?.auth?.openai;
147
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.OPENAI_API_KEY;
148
+ setEnvValue(ctx.env, 'OPENAI_API_KEY', toSandboxPlaceholderSecret(apiKey));
149
+ setEnvValue(ctx.env, 'OPENAI_BASE_URL', auth?.baseURL ?? env.OPENAI_BASE_URL);
150
+ setEnvValue(ctx.env, 'OPENAI_NAME', auth?.name ?? env.OPENAI_NAME);
151
+ setEnvValue(ctx.env, 'OPENAI_ORGANIZATION', auth?.organization ?? env.OPENAI_ORGANIZATION);
152
+ setEnvValue(ctx.env, 'OPENAI_PROJECT', auth?.project ?? env.OPENAI_PROJECT);
153
+ }
154
+ else if (selectedAuth === 'anthropic') {
155
+ const auth = options?.auth?.anthropic;
156
+ const apiKey = resolveSecretInput(auth?.apiKey, env) ?? env.ANTHROPIC_API_KEY;
157
+ const authToken = resolveSecretInput(auth?.authToken, env) ?? env.ANTHROPIC_AUTH_TOKEN;
158
+ setEnvValue(ctx.env, 'ANTHROPIC_API_KEY', toSandboxPlaceholderSecret(apiKey));
159
+ setEnvValue(ctx.env, 'ANTHROPIC_AUTH_TOKEN', toSandboxPlaceholderSecret(authToken));
160
+ setEnvValue(ctx.env, 'ANTHROPIC_BASE_URL', auth?.baseURL ?? env.ANTHROPIC_BASE_URL);
161
+ }
162
+ else if (selectedAuth === 'gateway') {
163
+ const auth = options?.auth?.gateway;
164
+ const gatewayKey = resolveSecretInput(auth?.apiKey, env) ?? env.AI_GATEWAY_API_KEY;
165
+ setEnvValue(ctx.env, 'AI_GATEWAY_API_KEY', toSandboxPlaceholderSecret(gatewayKey));
166
+ setEnvValue(ctx.env, 'AI_GATEWAY_BASE_URL', auth?.baseURL ?? env.AI_GATEWAY_BASE_URL);
167
+ }
168
+ else {
169
+ const gatewayKey = env.AI_GATEWAY_API_KEY || '';
170
+ if (gatewayKey) {
171
+ ctx.env.AI_GATEWAY_API_KEY = toSandboxPlaceholderSecret(gatewayKey) ?? '';
172
+ }
173
+ if (env.OPENAI_API_KEY) {
174
+ ctx.env.OPENAI_API_KEY = toSandboxPlaceholderSecret(env.OPENAI_API_KEY) ?? '';
175
+ }
176
+ if (env.OPENAI_BASE_URL) {
177
+ ctx.env.OPENAI_BASE_URL = env.OPENAI_BASE_URL;
178
+ }
179
+ if (env.ANTHROPIC_API_KEY) {
180
+ ctx.env.ANTHROPIC_API_KEY = toSandboxPlaceholderSecret(env.ANTHROPIC_API_KEY) ?? '';
181
+ }
182
+ if (env.ANTHROPIC_AUTH_TOKEN) {
183
+ ctx.env.ANTHROPIC_AUTH_TOKEN = toSandboxPlaceholderSecret(env.ANTHROPIC_AUTH_TOKEN) ?? '';
184
+ }
185
+ if (env.ANTHROPIC_BASE_URL) {
186
+ ctx.env.ANTHROPIC_BASE_URL = env.ANTHROPIC_BASE_URL;
187
+ }
188
+ }
189
+ ctx.env.MASTRA_OFFLINE = env.MASTRA_OFFLINE || 'true';
190
+ ctx.env.MASTRA_TELEMETRY_DISABLED = env.MASTRA_TELEMETRY_DISABLED || 'true';
191
+ }
192
+ export function mastra(options) {
193
+ let state = null;
194
+ const sandboxSetup = getMastraSandboxSetup();
195
+ const sandboxImageName = getSandboxImageName('mastra', sandboxSetup);
196
+ return {
197
+ name: 'mastra',
198
+ supportsResponseFormat: true,
199
+ supportsToolInterception: false,
200
+ supportsHostAccessRequests: true,
201
+ prepareStepSupport: 'step',
202
+ normalizeError(error) {
203
+ return normalizeAdapterError(error, {
204
+ adapter: 'mastra',
205
+ provider: resolveMastraProvider(options),
206
+ model: options?.model,
207
+ });
208
+ },
209
+ builtinTools: MASTRA_BUILTIN_TOOLS,
210
+ getBridgeFiles: () => sandboxSetup.getBridgeFiles(),
211
+ getSandboxFiles: (ctx) => sandboxSetup.getSandboxFiles(ctx),
212
+ resolveSandboxConfig: (sandboxConfig) => withVercelSandboxBackend(sandboxConfig),
213
+ async start(ctx) {
214
+ const sandboxConfig = withVercelSandboxBackend(ctx.sandboxConfig);
215
+ const { workDir } = getSandboxRuntimeLayout('mastra', ctx.sessionId, sandboxConfig);
216
+ state = await startSandboxRuntime(ctx, {
217
+ adapterName: 'mastra',
218
+ sessionId: ctx.sessionId,
219
+ deps: sandboxSetup.deps,
220
+ lockfile: sandboxSetup.lockfile,
221
+ bridgeFiles: sandboxSetup.getBridgeFiles(),
222
+ sandboxFiles: sandboxSetup.getSandboxFiles({
223
+ workDir,
224
+ skills: ctx.skills,
225
+ agents: ctx.agents,
226
+ instructions: ctx.instructions,
227
+ }),
228
+ postInstallCommands: sandboxSetup.postInstallCommands,
229
+ setupEnv(innerCtx) {
230
+ setupMastraEnv(innerCtx, options);
231
+ },
232
+ buildConfig: () => ({
233
+ model: options?.model,
234
+ provider: options?.provider,
235
+ maxTurns: options?.maxTurns,
236
+ builtinToolMappings: MASTRA_BUILTIN_TOOL_MAPPINGS,
237
+ skills: ctx.skills,
238
+ activeSkillNames: ctx.activeSkills?.map((skill) => skill.name),
239
+ forcedSkillNames: ctx.forcedSkills?.map((skill) => skill.name),
240
+ activeTools: ctx.activeTools,
241
+ agents: ctx.agents,
242
+ }),
243
+ imageName: sandboxImageName,
244
+ sandboxConfig,
245
+ coreAccess: resolveMastraCoreSandboxAccess(options, sandboxConfig),
246
+ });
247
+ },
248
+ async prompt(message, ctx) {
249
+ if (!state)
250
+ throw new Error('Adapter not started');
251
+ await promptSandboxRuntime(state, ctx, message, ctx.registeredTools, {
252
+ model: options?.model,
253
+ provider: options?.provider,
254
+ maxTurns: options?.maxTurns,
255
+ builtinToolMappings: MASTRA_BUILTIN_TOOL_MAPPINGS,
256
+ skills: ctx.skills,
257
+ activeSkillNames: ctx.activeSkills?.map((skill) => skill.name),
258
+ forcedSkillNames: ctx.forcedSkills?.map((skill) => skill.name),
259
+ activeTools: ctx.activeTools,
260
+ agents: ctx.agents,
261
+ contextWindow: ctx.contextWindow,
262
+ toolSearchMode: ctx.toolSearchMode,
263
+ traceContext: ctx.traceContext,
264
+ }, { instructions: ctx.instructions });
265
+ },
266
+ async registerTools(tools, ctx) {
267
+ ctx.registeredTools = tools;
268
+ },
269
+ async stop() {
270
+ if (state) {
271
+ await stopSandboxRuntime(state);
272
+ state = null;
273
+ }
274
+ },
275
+ async detach() {
276
+ if (state) {
277
+ await detachSandboxRuntime(state);
278
+ }
279
+ },
280
+ };
281
+ }
282
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '@agent-harness-experimental/bridge/bridge-continuation';
@@ -0,0 +1 @@
1
+ export * from '@agent-harness-experimental/bridge/bridge-delegation';
@@ -0,0 +1,5 @@
1
+ import type { z } from 'zod';
2
+
3
+ export function parseJsonWithSchema<T>(schema: z.ZodType<T>, raw: string): T {
4
+ return schema.parse(JSON.parse(raw));
5
+ }
@@ -0,0 +1 @@
1
+ export * from '@agent-harness-experimental/bridge/bridge-prompt-blocks';
@@ -0,0 +1 @@
1
+ export * from '@agent-harness-experimental/bridge/bridge-tool-policy';
@@ -0,0 +1 @@
1
+ export * from '@agent-harness-experimental/bridge/bridge-ws-server';