import { AgentMarkSDK } from "@agentmark/sdk";
import {
createAgentMarkClient,
VercelAIModelRegistry,
} from "@agentmark/vercel-ai-v4-adapter";
import { openai } from "@ai-sdk/openai";
import { generateObject } from "ai";
import AgentMarkTypes from "./agentmark.types";
const sdk = new AgentMarkSDK({ apiKey, appId });
// Initialize tracing for observability
const tracer = sdk.initTracing();
const modelRegistry = new VercelAIModelRegistry();
modelRegistry.registerModels(["gpt-4o-mini"], (name: string) => {
return openai(name);
});
const agentMark = createAgentMarkClient<AgentMarkTypes>({
loader: sdk.getFileLoader(),
modelRegistry,
});
const run = async () => {
// Load prompt with type safety
const prompt = await agentMark.loadObjectPrompt("math/addition.prompt.mdx");
// Format to vercel input with type safety and telemetry
const vercelInput = await prompt.format({
props: {
num1: 5,
num2: 3,
},
telemetry: {
isEnabled: true,
functionId: "example-function",
metadata: { userId: "user-123" },
},
});
const result = await generateObject(vercelInput);
// Type-safe access to results
const sum = result.object.sum;
console.log(result.object.explanation); // Also type-safe
};
// Note: You only need to shutdown the tracer for local/short running tasks.
run().then(() => tracer.shutdown());