import { D1Store } from '@mastra/cloudflare-d1';
import { Agent } from '@mastra/core/agent';
import { SamplingStrategyType } from '@mastra/core/ai-tracing';
import type { AITracingExporter } from '@mastra/core/ai-tracing';
import { Mastra } from '@mastra/core/mastra';
import { LangfuseExporter } from '@mastra/langfuse';
import { LibSQLStore } from '@mastra/libsql';
import { basicWorkflow } from './workflows/basic';
function buildExporters(env?: Env): AITracingExporter[] {
const exporters: AITracingExporter[] = [];
if (env?.LANGFUSE_PUBLIC_KEY && env?.LANGFUSE_SECRET_KEY) {
exporters.push(
new LangfuseExporter({
...
}),
);
}
return exporters;
}
function buildStorage(env?: Env) {
if (env?.DB) {
return new D1Store({ binding: env.DB });
}
return new LibSQLStore({ url: ':memory:' });
}
const defaultAgent = new Agent({
name: 'default-agent',
instructions: 'You are a helpful assistant.',
model: 'openai/gpt-4o-mini',
});
export function createMastra(env?: Env) {
const exporters = buildExporters(env);
const storage = buildStorage(env);
return new Mastra({
agents: { defaultAgent },
workflows: { basicWorkflow },
storage,
telemetry: {
enabled: false,
},
observability: {
default: { enabled: Boolean(exporters.length) },
configs: {
main: {
exporters,
},
},
configSelector: () => 'main',
},
});
}
export const mastra = createMastra();
import { D1Store } from '@mastra/cloudflare-d1';
import { Agent } from '@mastra/core/agent';
import { SamplingStrategyType } from '@mastra/core/ai-tracing';
import type { AITracingExporter } from '@mastra/core/ai-tracing';
import { Mastra } from '@mastra/core/mastra';
import { LangfuseExporter } from '@mastra/langfuse';
import { LibSQLStore } from '@mastra/libsql';
import { basicWorkflow } from './workflows/basic';
function buildExporters(env?: Env): AITracingExporter[] {
const exporters: AITracingExporter[] = [];
if (env?.LANGFUSE_PUBLIC_KEY && env?.LANGFUSE_SECRET_KEY) {
exporters.push(
new LangfuseExporter({
...
}),
);
}
return exporters;
}
function buildStorage(env?: Env) {
if (env?.DB) {
return new D1Store({ binding: env.DB });
}
return new LibSQLStore({ url: ':memory:' });
}
const defaultAgent = new Agent({
name: 'default-agent',
instructions: 'You are a helpful assistant.',
model: 'openai/gpt-4o-mini',
});
export function createMastra(env?: Env) {
const exporters = buildExporters(env);
const storage = buildStorage(env);
return new Mastra({
agents: { defaultAgent },
workflows: { basicWorkflow },
storage,
telemetry: {
enabled: false,
},
observability: {
default: { enabled: Boolean(exporters.length) },
configs: {
main: {
exporters,
},
},
configSelector: () => 'main',
},
});
}
export const mastra = createMastra();