// agentmark.client.ts
import { createAgentMarkClient, VercelAIModelRegistry, VercelAIToolRegistry } from "@agentmark/ai-sdk-v4-adapter";
import { AgentMarkSDK } from "@agentmark/sdk";
import { EvalRegistry } from "@agentmark/prompt-core";
import { openai } from '@ai-sdk/openai';
import AgentMarkTypes from './agentmark.types';
function createModelRegistry() {
return new VercelAIModelRegistry()
.registerModels(["gpt-4o"], (name) => openai(name))
.registerModels(["dall-e-3"], (name) => openai.image(name));
}
function createToolRegistry() {
return new VercelAIToolRegistry()
.register('search', async ({ query }) => {
return { results: [] };
});
}
function createEvalRegistry() {
return new EvalRegistry()
.register('exact_match', ({ output, expectedOutput }) => ({
score: output === expectedOutput ? 1 : 0,
passed: output === expectedOutput
}));
}
function createClient() {
const sdk = new AgentMarkSDK({
baseUrl: process.env.AGENTMARK_BASE_URL || 'http://localhost:9418',
apiKey: process.env.AGENTMARK_API_KEY || '',
appId: process.env.AGENTMARK_APP_ID || '',
mcpServers: {
filesystem: {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "./data"]
}
}
});
return createAgentMarkClient<AgentMarkTypes>({
loader: sdk.getFileLoader(),
modelRegistry: createModelRegistry(),
toolRegistry: createToolRegistry(),
evalRegistry: createEvalRegistry()
});
}
export const client = createClient();