create-agentmark 0.3.1 → 0.4.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/dist/index.d.ts +2 -1
- package/dist/index.js +65 -48
- package/dist/index.js.map +1 -1
- package/dist/utils/examples/templates/index.d.ts +47 -0
- package/dist/utils/examples/templates/index.js +505 -0
- package/dist/utils/examples/templates/index.js.map +1 -0
- package/package.json +1 -1
- package/dist/index.cjs +0 -803
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
export { }
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,6 @@ import prompts from "prompts";
|
|
|
6
6
|
|
|
7
7
|
// src/utils/examples/create-example-app.ts
|
|
8
8
|
import fs3 from "fs-extra";
|
|
9
|
-
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
10
9
|
import * as path from "path";
|
|
11
10
|
|
|
12
11
|
// src/utils/providers.ts
|
|
@@ -84,7 +83,7 @@ const telemetry = {
|
|
|
84
83
|
};
|
|
85
84
|
|
|
86
85
|
const runCustomerSupport = async (customer_message: string) => {
|
|
87
|
-
const prompt = await client.loadTextPrompt("customer-support-agent
|
|
86
|
+
const prompt = await client.loadTextPrompt("customer-support-agent");
|
|
88
87
|
const agentConfig = await prompt.formatAgent({
|
|
89
88
|
options: {
|
|
90
89
|
telemetry,
|
|
@@ -132,7 +131,7 @@ const telemetry = {
|
|
|
132
131
|
};
|
|
133
132
|
|
|
134
133
|
const runCustomerSupport = async (customer_message: string) => {
|
|
135
|
-
const prompt = await client.loadTextPrompt("customer-support-agent
|
|
134
|
+
const prompt = await client.loadTextPrompt("customer-support-agent");
|
|
136
135
|
const vercelInput = await prompt.format({
|
|
137
136
|
props: {
|
|
138
137
|
customer_question: customer_message,
|
|
@@ -176,7 +175,7 @@ OPENAI_API_KEY=${apiKeyValue}
|
|
|
176
175
|
// src/utils/examples/templates/package-setup.ts
|
|
177
176
|
import fs from "fs-extra";
|
|
178
177
|
import { execSync, execFileSync } from "child_process";
|
|
179
|
-
var setupPackageJson = (targetPath = ".") => {
|
|
178
|
+
var setupPackageJson = (targetPath = ".", deploymentMode = "cloud") => {
|
|
180
179
|
const packageJsonPath = `${targetPath}/package.json`;
|
|
181
180
|
if (!fs.existsSync(packageJsonPath)) {
|
|
182
181
|
console.log("Creating package.json...");
|
|
@@ -186,16 +185,24 @@ var setupPackageJson = (targetPath = ".") => {
|
|
|
186
185
|
pkgJson.name = pkgJson.name === "test" || !pkgJson.name ? "agentmark-example-app" : pkgJson.name;
|
|
187
186
|
pkgJson.description = pkgJson.description || "A simple Node.js app using the Agentmark SDK";
|
|
188
187
|
const devScript = "agentmark dev";
|
|
189
|
-
|
|
188
|
+
const scripts = {
|
|
190
189
|
...pkgJson.scripts,
|
|
191
190
|
"demo": "npx tsx index.ts",
|
|
192
191
|
"dev": devScript,
|
|
193
192
|
"prompt": "agentmark run-prompt",
|
|
194
193
|
"experiment": "agentmark run-experiment"
|
|
195
194
|
};
|
|
195
|
+
if (deploymentMode === "static") {
|
|
196
|
+
scripts["build"] = "agentmark build --out dist/agentmark";
|
|
197
|
+
}
|
|
198
|
+
pkgJson.scripts = scripts;
|
|
199
|
+
pkgJson.overrides = {
|
|
200
|
+
...pkgJson.overrides,
|
|
201
|
+
"axios": "^1.7.9"
|
|
202
|
+
};
|
|
196
203
|
fs.writeJsonSync(packageJsonPath, pkgJson, { spaces: 2 });
|
|
197
204
|
};
|
|
198
|
-
var installDependencies = (modelProvider, targetPath = ".", adapter = "ai-sdk") => {
|
|
205
|
+
var installDependencies = (modelProvider, targetPath = ".", adapter = "ai-sdk", deploymentMode = "cloud") => {
|
|
199
206
|
console.log("Installing required packages...");
|
|
200
207
|
console.log("This might take a moment...");
|
|
201
208
|
const adapterConfig = getAdapterConfig(adapter, modelProvider);
|
|
@@ -205,12 +212,14 @@ var installDependencies = (modelProvider, targetPath = ".", adapter = "ai-sdk")
|
|
|
205
212
|
stdio: "inherit",
|
|
206
213
|
cwd: targetPath
|
|
207
214
|
});
|
|
215
|
+
const loaderPackages = deploymentMode === "static" ? ["@agentmark/loader-api", "@agentmark/loader-file"] : ["@agentmark/loader-api"];
|
|
208
216
|
const installArgs = [
|
|
209
217
|
"install",
|
|
210
218
|
"dotenv",
|
|
211
219
|
"@agentmark/prompt-core",
|
|
212
220
|
"@agentmark/sdk",
|
|
213
221
|
adapterConfig.package,
|
|
222
|
+
...loaderPackages,
|
|
214
223
|
...adapterConfig.dependencies,
|
|
215
224
|
"--legacy-peer-deps"
|
|
216
225
|
];
|
|
@@ -415,18 +424,31 @@ var createExamplePrompts = (model, targetPath = ".", adapter = "ai-sdk") => {
|
|
|
415
424
|
|
|
416
425
|
// src/utils/examples/templates/user-client-config.ts
|
|
417
426
|
var getClientConfigContent = (options) => {
|
|
418
|
-
const { provider, languageModels, adapter } = options;
|
|
419
|
-
const adapterConfig = getAdapterConfig(adapter);
|
|
427
|
+
const { provider, languageModels, adapter, deploymentMode = "cloud" } = options;
|
|
428
|
+
const adapterConfig = getAdapterConfig(adapter, provider);
|
|
420
429
|
const { modelRegistry, toolRegistry } = adapterConfig.classes;
|
|
421
430
|
const providerImport = `import { ${provider} } from '@ai-sdk/${provider}';`;
|
|
422
431
|
const extraModelRegs = provider === "openai" ? `.registerModels(["dall-e-3"], (name: string) => ${provider}.image(name))
|
|
423
432
|
.registerModels(["tts-1-hd"], (name: string) => ${provider}.speech(name))` : "";
|
|
433
|
+
const loaderImport = deploymentMode === "cloud" ? `import { ApiLoader } from "@agentmark/loader-api";` : `import { ApiLoader } from "@agentmark/loader-api";
|
|
434
|
+
import { FileLoader } from "@agentmark/loader-file";`;
|
|
435
|
+
const loaderSetup = deploymentMode === "cloud" ? ` // ApiLoader works for both development and production
|
|
436
|
+
// - Development: 'agentmark dev' sets AGENTMARK_BASE_URL to localhost
|
|
437
|
+
// - Production: Set AGENTMARK_API_KEY and AGENTMARK_APP_ID for cloud
|
|
438
|
+
const loader = process.env.NODE_ENV === 'development'
|
|
439
|
+
? ApiLoader.local({ baseUrl: process.env.AGENTMARK_BASE_URL || 'http://localhost:9418' })
|
|
440
|
+
: ApiLoader.cloud({
|
|
441
|
+
apiKey: process.env.AGENTMARK_API_KEY!,
|
|
442
|
+
appId: process.env.AGENTMARK_APP_ID!,
|
|
443
|
+
});` : ` const loader = process.env.NODE_ENV === 'development'
|
|
444
|
+
? ApiLoader.local({ baseUrl: process.env.AGENTMARK_BASE_URL || 'http://localhost:9418' })
|
|
445
|
+
: new FileLoader('./dist/agentmark');`;
|
|
424
446
|
return `// agentmark.client.ts
|
|
425
447
|
import path from 'node:path';
|
|
426
448
|
import dotenv from 'dotenv';
|
|
427
449
|
dotenv.config({ path: path.resolve(__dirname, '.env') });
|
|
428
450
|
import { createAgentMarkClient, ${modelRegistry}, ${toolRegistry}, EvalRegistry } from "${adapterConfig.package}";
|
|
429
|
-
|
|
451
|
+
${loaderImport}
|
|
430
452
|
import AgentMarkTypes, { Tools } from './agentmark.types';
|
|
431
453
|
${providerImport}
|
|
432
454
|
|
|
@@ -477,19 +499,12 @@ function createEvalRegistry() {
|
|
|
477
499
|
return evalRegistry;
|
|
478
500
|
}
|
|
479
501
|
|
|
480
|
-
function createClient(
|
|
481
|
-
|
|
482
|
-
// For local development, connect to the local agentmark serve instance (default: http://localhost:9418)
|
|
483
|
-
// For cloud deployment, set AGENTMARK_BASE_URL, AGENTMARK_API_KEY, and AGENTMARK_APP_ID
|
|
484
|
-
const baseUrl = env.AGENTMARK_BASE_URL || 'http://localhost:9418';
|
|
485
|
-
const apiKey = env.AGENTMARK_API_KEY || '';
|
|
486
|
-
const appId = env.AGENTMARK_APP_ID || '';
|
|
487
|
-
const sdk = new AgentMarkSDK({ apiKey, appId, baseUrl });
|
|
488
|
-
const fileLoader = sdk.getFileLoader();
|
|
502
|
+
function createClient() {
|
|
503
|
+
${loaderSetup}
|
|
489
504
|
const modelRegistry = createModelRegistry();
|
|
490
505
|
const toolRegistry = createToolRegistry();
|
|
491
506
|
const evalRegistry = createEvalRegistry();
|
|
492
|
-
return createAgentMarkClient<AgentMarkTypes, typeof toolRegistry>({ loader
|
|
507
|
+
return createAgentMarkClient<AgentMarkTypes, typeof toolRegistry>({ loader, modelRegistry, toolRegistry, evalRegistry });
|
|
493
508
|
}
|
|
494
509
|
|
|
495
510
|
export const client = createClient();
|
|
@@ -584,7 +599,7 @@ var setupMCPServer = (client, targetPath) => {
|
|
|
584
599
|
return;
|
|
585
600
|
}
|
|
586
601
|
};
|
|
587
|
-
var createExampleApp = async (client, targetPath = ".", apiKey = "", adapter = "ai-sdk") => {
|
|
602
|
+
var createExampleApp = async (client, targetPath = ".", apiKey = "", adapter = "ai-sdk", deploymentMode = "cloud") => {
|
|
588
603
|
try {
|
|
589
604
|
const modelProvider = "openai";
|
|
590
605
|
const model = "gpt-4o";
|
|
@@ -597,18 +612,18 @@ var createExampleApp = async (client, targetPath = ".", apiKey = "", adapter = "
|
|
|
597
612
|
const langModels = Providers[modelProvider].languageModels.slice(0, 1);
|
|
598
613
|
fs3.writeFileSync(
|
|
599
614
|
`${targetPath}/agentmark.client.ts`,
|
|
600
|
-
getClientConfigContent({ provider: modelProvider, languageModels: langModels, adapter })
|
|
615
|
+
getClientConfigContent({ provider: modelProvider, languageModels: langModels, adapter, deploymentMode })
|
|
601
616
|
);
|
|
602
617
|
fs3.writeFileSync(`${targetPath}/.env`, getEnvFileContent(modelProvider, apiKey));
|
|
603
|
-
const gitignore = ["node_modules", ".env", "*.agentmark-outputs/", ".agentmark"].join("\n");
|
|
618
|
+
const gitignore = ["node_modules", ".env", "*.agentmark-outputs/", ".agentmark", "dist"].join("\n");
|
|
604
619
|
fs3.writeFileSync(`${targetPath}/.gitignore`, gitignore);
|
|
605
620
|
fs3.writeFileSync(
|
|
606
621
|
`${targetPath}/index.ts`,
|
|
607
622
|
getIndexFileContent(adapter)
|
|
608
623
|
);
|
|
609
624
|
fs3.writeJsonSync(`${targetPath}/tsconfig.json`, getTsConfigContent(), { spaces: 2 });
|
|
610
|
-
setupPackageJson(targetPath);
|
|
611
|
-
installDependencies(modelProvider, targetPath, adapter);
|
|
625
|
+
setupPackageJson(targetPath, deploymentMode);
|
|
626
|
+
installDependencies(modelProvider, targetPath, adapter, deploymentMode);
|
|
612
627
|
console.log("Generating types from prompts...");
|
|
613
628
|
try {
|
|
614
629
|
const agentmarkDir = path.join(targetPath, "agentmark");
|
|
@@ -637,17 +652,22 @@ import { AgentMarkSDK } from '@agentmark/sdk';
|
|
|
637
652
|
import path from 'path';
|
|
638
653
|
|
|
639
654
|
async function main() {
|
|
640
|
-
const { client } = await import('../agentmark.client.js');
|
|
641
|
-
|
|
642
655
|
const args = process.argv.slice(2);
|
|
643
656
|
const webhookPortArg = args.find(arg => arg.startsWith('--webhook-port='));
|
|
644
657
|
const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));
|
|
645
658
|
|
|
646
659
|
const webhookPort = webhookPortArg ? parseInt(webhookPortArg.split('=')[1]) : 9417;
|
|
647
660
|
const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;
|
|
661
|
+
const fileServerUrl = \`http://localhost:\${fileServerPort}\`;
|
|
662
|
+
|
|
663
|
+
// Set environment for development mode before importing client
|
|
664
|
+
process.env.NODE_ENV = 'development';
|
|
665
|
+
process.env.AGENTMARK_BASE_URL = fileServerUrl;
|
|
666
|
+
|
|
667
|
+
// Now import client - it will pick up the dev environment
|
|
668
|
+
const { client } = await import('../agentmark.client.js');
|
|
648
669
|
|
|
649
670
|
// Initialize OpenTelemetry tracing to export traces to the API server
|
|
650
|
-
const fileServerUrl = \`http://localhost:\${fileServerPort}\`;
|
|
651
671
|
const sdk = new AgentMarkSDK({
|
|
652
672
|
apiKey: '',
|
|
653
673
|
appId: '',
|
|
@@ -672,26 +692,6 @@ main().catch((err) => {
|
|
|
672
692
|
});
|
|
673
693
|
`;
|
|
674
694
|
fs3.writeFileSync(path.join(agentmarkInternalDir, "dev-entry.ts"), devEntryContent);
|
|
675
|
-
const webhookUrl = "http://localhost:9417";
|
|
676
|
-
const envPath = path.join(targetPath, ".env");
|
|
677
|
-
let envContent = "";
|
|
678
|
-
if (existsSync(envPath)) {
|
|
679
|
-
envContent = readFileSync(envPath, "utf8");
|
|
680
|
-
if (!envContent.includes("AGENTMARK_WEBHOOK_URL")) {
|
|
681
|
-
envContent += `
|
|
682
|
-
# AgentMark runner server URL
|
|
683
|
-
AGENTMARK_WEBHOOK_URL=${webhookUrl}
|
|
684
|
-
`;
|
|
685
|
-
}
|
|
686
|
-
} else {
|
|
687
|
-
envContent = `# AgentMark runner server URL
|
|
688
|
-
AGENTMARK_WEBHOOK_URL=${webhookUrl}
|
|
689
|
-
|
|
690
|
-
# Add your API keys here
|
|
691
|
-
# OPENAI_API_KEY=your-key-here
|
|
692
|
-
`;
|
|
693
|
-
}
|
|
694
|
-
writeFileSync(envPath, envContent, "utf8");
|
|
695
695
|
console.log("\n\u2705 Agentmark initialization completed successfully!");
|
|
696
696
|
console.log(
|
|
697
697
|
`
|
|
@@ -758,6 +758,23 @@ var main = async () => {
|
|
|
758
758
|
{ title: "Mastra", value: "mastra" }
|
|
759
759
|
]
|
|
760
760
|
});
|
|
761
|
+
const { deploymentMode } = await prompts({
|
|
762
|
+
name: "deploymentMode",
|
|
763
|
+
type: "select",
|
|
764
|
+
message: "Use AgentMark Cloud or manage yourself?",
|
|
765
|
+
choices: [
|
|
766
|
+
{
|
|
767
|
+
title: "AgentMark Cloud (recommended)",
|
|
768
|
+
value: "cloud",
|
|
769
|
+
description: "Have AgentMark cloud manage prompts, datasets, traces, experiments, alerts & more"
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
title: "Self-hosted",
|
|
773
|
+
value: "static",
|
|
774
|
+
description: "Self-manage your prompts, datasets, traces & experiments"
|
|
775
|
+
}
|
|
776
|
+
]
|
|
777
|
+
});
|
|
761
778
|
const { client } = await prompts({
|
|
762
779
|
name: "client",
|
|
763
780
|
type: "select",
|
|
@@ -770,7 +787,7 @@ var main = async () => {
|
|
|
770
787
|
{ title: "Skip", value: "skip" }
|
|
771
788
|
]
|
|
772
789
|
});
|
|
773
|
-
await createExampleApp(client, targetPath, apiKey, adapter);
|
|
790
|
+
await createExampleApp(client, targetPath, apiKey, adapter, deploymentMode);
|
|
774
791
|
fs4.writeJsonSync(`${targetPath}/agentmark.json`, config, { spaces: 2 });
|
|
775
792
|
};
|
|
776
793
|
main().catch((error) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/examples/create-example-app.ts","../src/utils/providers.ts","../src/utils/examples/templates/adapters.ts","../src/utils/examples/templates/app-index.ts","../src/utils/examples/templates/env.ts","../src/utils/examples/templates/package-setup.ts","../src/utils/examples/templates/tsconfig.ts","../src/utils/examples/templates/animal-drawing-prompt.ts","../src/utils/examples/templates/customer-support-prompt.ts","../src/utils/examples/templates/party-planner-prompt.ts","../src/utils/examples/templates/story-teller-prompt.ts","../src/utils/examples/templates/datasets.ts","../src/utils/examples/templates/example-prompts.ts","../src/utils/examples/templates/user-client-config.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from \"fs-extra\";\nimport prompts from \"prompts\";\nimport { createExampleApp } from \"./utils/examples/create-example-app\";\n\nconst main = async () => {\n const config: any = {\n $schema:\n \"https://raw.githubusercontent.com/agentmark-ai/agentmark/refs/heads/main/packages/cli/agentmark.schema.json\",\n version: \"2.0.0\",\n mdxVersion: \"1.0\",\n agentmarkPath: \".\",\n };\n console.log(\"Initializing project.\");\n\n const { folderName } = await prompts({\n name: \"folderName\",\n type: \"text\",\n message: \"Where would you like to create your AgentMark app?\",\n initial: \"my-agentmark-app\",\n });\n\n // Create the target folder\n const targetPath = `./${folderName}`;\n fs.ensureDirSync(targetPath);\n\n config.builtInModels = ['gpt-4o'];\n\n // Prompt only for the OpenAI API key\n let apiKey = \"\";\n const { providedApiKey } = await prompts({\n name: \"providedApiKey\",\n type: \"password\",\n message: `Enter your OpenAI API key (or press Enter to skip):`,\n initial: \"\",\n });\n apiKey = providedApiKey || \"\";\n\n const { adapter } = await prompts({\n name: \"adapter\",\n type: \"select\",\n message: \"Which adapter would you like to use?\",\n choices: [\n { title: \"AI SDK (Vercel)\", value: \"ai-sdk\" },\n { title: \"Mastra\", value: \"mastra\" },\n ],\n });\n\n const { client } = await prompts({\n name: \"client\",\n type: \"select\",\n message: \"Make your IDE an AgentMark expert\",\n choices: [\n { title: \"Claude Code\", value: \"claude-code\" },\n { title: \"Cursor\", value: \"cursor\" },\n { title: \"VS Code\", value: \"vscode\" },\n { title: \"Zed\", value: \"zed\" },\n { title: \"Skip\", value: \"skip\" },\n ],\n });\n\n await createExampleApp(client, targetPath, apiKey, adapter);\n\n // Always generate agentmark.json so config is consistent\n fs.writeJsonSync(`${targetPath}/agentmark.json`, config, { spaces: 2 });\n};\n\nmain().catch((error) => {\n console.error(\"Error:\", error);\n process.exit(1);\n});\n","import fs from \"fs-extra\";\nimport { readFileSync, writeFileSync, existsSync } from \"fs\";\nimport * as path from \"path\";\nimport { Providers } from \"../providers.js\";\nimport {\n setupPackageJson,\n installDependencies,\n getIndexFileContent,\n getTsConfigContent,\n getEnvFileContent,\n createExamplePrompts,\n getClientConfigContent,\n getAdapterConfig,\n} from \"./templates/index.js\";\nimport { fetchPromptsFrontmatter, generateTypeDefinitions } from \"@agentmark/shared-utils\";\n\nconst setupMCPServer = (client: string, targetPath: string) => {\n if (client === \"skip\") {\n console.log(\"Skipping MCP server setup.\");\n return;\n }\n\n // Keep ./ prefix for display in messages\n const folderName = targetPath;\n\n // Handle VS Code\n if (client === \"vscode\") {\n try {\n console.log(`Setting up MCP server for VS Code in ${folderName}...`);\n const vscodeDir = path.join(targetPath, \".vscode\");\n fs.ensureDirSync(vscodeDir);\n\n const mcpConfig = {\n servers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(vscodeDir, \"mcp.json\"), mcpConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for VS Code in ${folderName}/.vscode/mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for VS Code:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Zed\n if (client === \"zed\") {\n try {\n console.log(`Setting up MCP server for Zed in ${folderName}...`);\n const zedDir = path.join(targetPath, \".zed\");\n fs.ensureDirSync(zedDir);\n\n const zedConfig = {\n context_servers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(zedDir, \"settings.json\"), zedConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Zed in ${folderName}/.zed/settings.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Zed:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Cursor\n if (client === \"cursor\") {\n try {\n console.log(`Setting up MCP server for Cursor in ${folderName}...`);\n const cursorDir = path.join(targetPath, \".cursor\");\n fs.ensureDirSync(cursorDir);\n\n const cursorConfig = {\n mcpServers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(cursorDir, \"mcp.json\"), cursorConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Cursor in ${folderName}/.cursor/mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Cursor:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Claude Code\n if (client === \"claude-code\") {\n try {\n console.log(`Setting up MCP server for Claude Code in ${folderName}...`);\n\n const mcpConfig = {\n mcpServers: {\n \"agentmark-docs\": {\n type: \"http\",\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(targetPath, \".mcp.json\"), mcpConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Claude Code in ${folderName}/.mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Claude Code:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n};\n\n\nexport const createExampleApp = async (\n client: string,\n targetPath: string = \".\",\n apiKey: string = \"\",\n adapter: string = \"ai-sdk\"\n) => {\n try {\n const modelProvider = 'openai';\n const model = 'gpt-4o';\n console.log(\"Creating Agent Mark example app...\");\n\n // Keep ./ prefix for display in messages\n const folderName = targetPath;\n\n // Create directory structure\n fs.ensureDirSync(`${targetPath}/agentmark`);\n\n setupMCPServer(client, targetPath);\n\n // Create example prompts\n createExamplePrompts(model, targetPath, adapter);\n console.log(`✅ Example prompts and datasets created in ${folderName}/agentmark/`);\n\n // Create user client config at project root\n // Prefer TS for dev ergonomics\n const langModels = Providers[modelProvider as keyof typeof Providers].languageModels.slice(0, 1);\n fs.writeFileSync(\n `${targetPath}/agentmark.client.ts`,\n getClientConfigContent({ provider: modelProvider, languageModels: langModels, adapter })\n );\n\n // Create .env file\n fs.writeFileSync(`${targetPath}/.env`, getEnvFileContent(modelProvider, apiKey));\n\n // Create .gitignore\n const gitignore = ['node_modules', '.env', '*.agentmark-outputs/', '.agentmark'].join('\\n');\n fs.writeFileSync(`${targetPath}/.gitignore`, gitignore);\n\n // Create the main application file\n fs.writeFileSync(\n `${targetPath}/index.ts`,\n getIndexFileContent(adapter)\n );\n\n // Create tsconfig.json\n fs.writeJsonSync(`${targetPath}/tsconfig.json`, getTsConfigContent(), { spaces: 2 });\n\n // Setup package.json and install dependencies\n setupPackageJson(targetPath);\n installDependencies(modelProvider, targetPath, adapter);\n\n // Generate types file using the type generation library\n console.log(\"Generating types from prompts...\");\n try {\n const agentmarkDir = path.join(targetPath, 'agentmark');\n const prompts = await fetchPromptsFrontmatter({ rootDir: agentmarkDir });\n const typeDefinitions = await generateTypeDefinitions(prompts);\n fs.writeFileSync(`${targetPath}/agentmark.types.ts`, typeDefinitions);\n } catch (error) {\n console.warn(\"Warning: Could not generate types automatically:\", error);\n console.log(\"You can generate types later by running: npx agentmark generate-types --root-dir agentmark\");\n // Create a placeholder types file\n fs.writeFileSync(`${targetPath}/agentmark.types.ts`, `// Auto-generated types from AgentMark\\n// Run 'npx agentmark generate-types --root-dir agentmark' to generate types\\nexport default interface AgentmarkTypes {}\\n`);\n }\n\n // Create .agentmark directory and dev-entry.ts\n console.log(\"Creating development server entry point...\");\n const agentmarkInternalDir = path.join(targetPath, '.agentmark');\n fs.ensureDirSync(agentmarkInternalDir);\n\n // Get adapter-specific values from config\n const adapterConfig = getAdapterConfig(adapter);\n const { webhookHandler } = adapterConfig.classes;\n\n const devEntryContent = `// Auto-generated webhook server entry point\n// To customize, create a dev-server.ts file in your project root\n\nimport { createWebhookServer } from '@agentmark/cli/runner-server';\nimport { ${webhookHandler} } from '${adapterConfig.package}/runner';\nimport { AgentMarkSDK } from '@agentmark/sdk';\nimport path from 'path';\n\nasync function main() {\n const { client } = await import('../agentmark.client.js');\n\n const args = process.argv.slice(2);\n const webhookPortArg = args.find(arg => arg.startsWith('--webhook-port='));\n const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));\n\n const webhookPort = webhookPortArg ? parseInt(webhookPortArg.split('=')[1]) : 9417;\n const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;\n\n // Initialize OpenTelemetry tracing to export traces to the API server\n const fileServerUrl = \\`http://localhost:\\${fileServerPort}\\`;\n const sdk = new AgentMarkSDK({\n apiKey: '',\n appId: '',\n baseUrl: fileServerUrl,\n });\n sdk.initTracing({ disableBatch: true });\n\n const handler = new ${webhookHandler}(client as any);\n const templatesDirectory = path.join(process.cwd(), 'agentmark');\n\n await createWebhookServer({\n port: webhookPort,\n handler,\n fileServerUrl,\n templatesDirectory\n });\n}\n\nmain().catch((err) => {\n console.error(err);\n process.exit(1);\n});\n`;\n\n fs.writeFileSync(path.join(agentmarkInternalDir, 'dev-entry.ts'), devEntryContent);\n\n // Create .env file with webhook URL configuration\n // Always use Express runner server (port 9417) for local development\n // regardless of deployment platform\n const webhookUrl = 'http://localhost:9417';\n\n const envPath = path.join(targetPath, '.env');\n let envContent = '';\n\n if (existsSync(envPath)) {\n envContent = readFileSync(envPath, 'utf8');\n if (!envContent.includes('AGENTMARK_WEBHOOK_URL')) {\n envContent += `\\n# AgentMark runner server URL\\nAGENTMARK_WEBHOOK_URL=${webhookUrl}\\n`;\n }\n } else {\n envContent = `# AgentMark runner server URL\\nAGENTMARK_WEBHOOK_URL=${webhookUrl}\\n\\n# Add your API keys here\\n# OPENAI_API_KEY=your-key-here\\n`;\n }\n\n writeFileSync(envPath, envContent, 'utf8');\n\n // Success message\n console.log(\"\\n✅ Agentmark initialization completed successfully!\");\n\n console.log(\n `\n █████╗ ██████╗ ███████╗███╗ ██╗████████╗███╗ ███╗ █████╗ ██████╗ ██╗ ██╗\n██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝████╗ ████║██╔══██╗██╔══██╗██║ ██╔╝\n███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ██╔████╔██║███████║██████╔╝█████╔╝\n██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██║╚██╔╝██║██╔══██║██╔══██╗██╔═██╗\n██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██╗\n╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝\n\n `\n );\n\n console.log('\\n' + '═'.repeat(70));\n console.log('Next Steps');\n console.log('═'.repeat(70));\n\n // Simplified instructions - always just \"npm run dev\"\n console.log('\\n Get Started:');\n if (folderName !== \".\" && folderName !== \"./\") {\n console.log(` $ cd ${folderName}`);\n }\n console.log(' $ npm run dev\\n');\n\n console.log('─'.repeat(70));\n console.log('Resources');\n console.log('─'.repeat(70));\n console.log(' Documentation: https://docs.agentmark.co');\n console.log('═'.repeat(70) + '\\n');\n } catch (error) {\n console.error(\"Error creating example app:\", error);\n throw error;\n }\n};\n","export const Providers = {\n openai: {\n label: \"OpenAI\",\n languageModels: [\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-4\",\n \"gpt-5\",\n \"gpt-4-turbo\",\n \"gpt-3.5-turbo\",\n ],\n imageModels: [\"dall-e-3\", \"dall-e-2\"],\n speechModels: [\"tts-1\", \"tts-1-hd\"],\n },\n};\n","export interface AdapterConfig {\n /** npm package name for the adapter */\n package: string;\n /** Additional npm packages required by this adapter */\n dependencies: string[];\n /** Class names used in generated code */\n classes: {\n modelRegistry: string;\n toolRegistry: string;\n webhookHandler: string;\n };\n}\n\nexport const createAdapterConfig = (\n provider: string\n): Record<string, AdapterConfig> => {\n return {\n \"ai-sdk\": {\n package: \"@agentmark/ai-sdk-v5-adapter\",\n dependencies: [\"ai@^5\", `@ai-sdk/${provider}@^2`],\n classes: {\n modelRegistry: \"VercelAIModelRegistry\",\n toolRegistry: \"VercelAIToolRegistry\",\n webhookHandler: \"VercelAdapterWebhookHandler\",\n },\n },\n mastra: {\n package: \"@agentmark/mastra-v0-adapter\",\n dependencies: [\n \"@mastra/core@<0.20.0\",\n \"@mastra/mcp@<0.13.4\",\n `@ai-sdk/${provider}@<2`,\n ],\n classes: {\n modelRegistry: \"MastraModelRegistry\",\n toolRegistry: \"MastraToolRegistry\",\n webhookHandler: \"MastraAdapterWebhookHandler\",\n },\n },\n };\n};\n\nexport function getAdapterConfig(\n adapter: string,\n provider: string\n): AdapterConfig {\n const config = createAdapterConfig(provider)[adapter];\n if (!config) {\n throw new Error(\n `Unknown adapter: ${adapter}. Available adapters: ${Object.keys(\n createAdapterConfig(provider)\n ).join(\", \")}`\n );\n }\n return config;\n}\n","export const getIndexFileContent = (adapter: string = \"ai-sdk\"): string => {\n if (adapter === \"mastra\") {\n return `import \"dotenv/config\";\nimport { Agent } from \"@mastra/core/agent\";\nimport { client } from \"./agentmark.client\";\n\nconst telemetry = {\n isEnabled: true,\n metadata: {\n traceId: \"trace-123\",\n traceName: \"customer-support\",\n userId: \"user-123\",\n sessionId: \"session-123\",\n sessionName: \"my-first-session\",\n },\n};\n\nconst runCustomerSupport = async (customer_message: string) => {\n const prompt = await client.loadTextPrompt(\"customer-support-agent.prompt.mdx\");\n const agentConfig = await prompt.formatAgent({\n options: {\n telemetry,\n },\n });\n\n const [messages, generateOptions] = await agentConfig.formatMessages({\n props: {\n customer_question: customer_message,\n },\n });\n\n const agent = new Agent(agentConfig);\n const response = await agent.generate(messages, generateOptions);\n\n return (response as any).text || (response as any).content || String(response);\n};\n\nconst main = async () => {\n try {\n const user_message = \"How long does shipping take?\";\n const assistant = await runCustomerSupport(user_message);\n console.log(\"Customer support response:\", assistant);\n } catch (error) {\n console.error(error);\n }\n};\n\nmain();\n`;\n } else {\n return `import \"dotenv/config\";\nimport { generateText } from \"ai\";\nimport { client } from \"./agentmark.client\";\n\nconst telemetry = {\n isEnabled: true,\n metadata: {\n traceId: \"trace-123\",\n traceName: \"customer-support\",\n userId: \"user-123\",\n sessionId: \"session-123\",\n sessionName: \"my-first-session\",\n },\n};\n\nconst runCustomerSupport = async (customer_message: string) => {\n const prompt = await client.loadTextPrompt(\"customer-support-agent.prompt.mdx\");\n const vercelInput = await prompt.format({\n props: {\n customer_question: customer_message,\n },\n telemetry,\n });\n\n const resp = await generateText(vercelInput);\n\n return resp.text;\n};\n\nconst main = async () => {\n try {\n const user_message = \"How long does shipping take?\";\n const assistant = await runCustomerSupport(user_message);\n console.log(\"Customer support response:\", assistant);\n } catch (error) {\n console.error(error);\n }\n};\n\nmain();\n`;\n }\n}; ","export const getEnvFileContent = (\n _modelProvider: string,\n apiKey: string = ''\n): string => {\n const apiKeyValue = apiKey || 'your_api_key_here';\n\n return `# Cloud deployment: Set these environment variables\n# AGENTMARK_BASE_URL=https://api.agentmark.co\n# AGENTMARK_API_KEY=your_agentmark_api_key\n# AGENTMARK_APP_ID=your_agentmark_app_id\n# Learn more: https://docs.agentmark.co/platform/getting_started/quickstart\n\nOPENAI_API_KEY=${apiKeyValue}\n`;\n};\n","import fs from \"fs-extra\";\nimport { execSync, execFileSync } from \"child_process\";\nimport { getAdapterConfig } from \"./adapters.js\";\n\nexport const setupPackageJson = (targetPath: string = \".\") => {\n const packageJsonPath = `${targetPath}/package.json`;\n\n if (!fs.existsSync(packageJsonPath)) {\n console.log(\"Creating package.json...\");\n execSync(\"npm init -y\", { cwd: targetPath });\n }\n\n // Update the created package.json with additional information\n const pkgJson = fs.readJsonSync(packageJsonPath);\n pkgJson.name =\n pkgJson.name === \"test\" || !pkgJson.name\n ? \"agentmark-example-app\"\n : pkgJson.name;\n pkgJson.description =\n pkgJson.description || \"A simple Node.js app using the Agentmark SDK\";\n\n // All platforms use \"agentmark dev\" which runs their respective dev-entry.ts\n const devScript = \"agentmark dev\";\n\n pkgJson.scripts = {\n ...pkgJson.scripts,\n \"demo\": \"npx tsx index.ts\",\n \"dev\": devScript,\n \"prompt\": \"agentmark run-prompt\",\n \"experiment\": \"agentmark run-experiment\",\n };\n fs.writeJsonSync(packageJsonPath, pkgJson, { spaces: 2 });\n};\n\nexport const installDependencies = (\n modelProvider: string,\n targetPath: string = \".\",\n adapter: string = \"ai-sdk\"\n) => {\n console.log(\"Installing required packages...\");\n console.log(\"This might take a moment...\");\n\n const adapterConfig = getAdapterConfig(adapter, modelProvider);\n\n try {\n // Install TypeScript, ts-node, CLI, and other dev dependencies\n // CLI needs to be a devDep so dev-entry.ts can import from @agentmark/cli/runner-server\n const devDepsCmd = \"npm install --save-dev typescript ts-node @types/node @agentmark/cli --legacy-peer-deps\";\n\n execSync(devDepsCmd, {\n stdio: \"inherit\",\n cwd: targetPath,\n });\n\n // Install the common packages\n // SDK is required for both local (connects to agentmark serve) and cloud (connects to API)\n const installArgs = [\n \"install\",\n \"dotenv\",\n \"@agentmark/prompt-core\",\n \"@agentmark/sdk\",\n adapterConfig.package,\n ...adapterConfig.dependencies,\n \"--legacy-peer-deps\",\n ];\n\n execFileSync(\"npm\", installArgs, { stdio: \"inherit\", cwd: targetPath });\n\n console.log(\"Packages installed successfully!\");\n } catch (error) {\n console.error(\"Error installing packages:\", error);\n throw new Error(\n \"Failed to install required packages. Please check your network connection and try again.\"\n );\n }\n};\n","export const getTsConfigContent = (): object => {\n return {\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"module\": \"NodeNext\",\n \"moduleResolution\": \"NodeNext\",\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n }\n };\n}; ","export const getAnimalDrawingPrompt = (): string => {\n return `---\nname: animal-drawing\nimage_config:\n model_name: dall-e-3\n num_images: 1\n size: 1024x1024\n aspect_ratio: 1:1\ntest_settings:\n dataset: animal.jsonl\n props:\n animal: \"cat\"\n---\n\n<ImagePrompt>\nDraw a hyper-realistic picture of a {props.animal}\n</ImagePrompt>`;\n};","export const getCustomerSupportPrompt = (model: string): string => {\n return `---\nname: customer-support-agent\ntext_config:\n model_name: ${model}\n max_calls: 2\n tools:\n search_knowledgebase:\n description: Search the company knowledgebase for information about shipping, warranty, and returns policies.\n parameters:\n type: object\n properties:\n query:\n type: string\n description: The search query to find relevant information\n required: [query]\ntest_settings:\n dataset: customer-query.jsonl\n props:\n customer_question: \"I'm having trouble with my order. How long does shipping take?\"\ninput_schema:\n type: object\n properties:\n customer_question:\n type: string\n description: \"The customer's question\"\n required:\n - customer_question\n---\n\n<System>\nYou are a customer service agent for a company that sells products online. You are given a customer's question and you need to respond to the customer. You need to be friendly, professional, and helpful.\n\nYou have access to the following tool:\n- search_knowledgebase: Search the company knowledgebase for information about shipping, warranty, and returns. Use this when customers ask about these topics.\n</System>\n\n<User>{props.customer_question}</User>`;\n};","export const getPartyPlannerPrompt = (model: string): string => {\n return `---\nname: party-planner\nobject_config:\n model_name: ${model}\n schema:\n type: object\n properties:\n names:\n type: array\n description: \"List of names of people attending the party.\"\n items:\n type: string\n required:\n - names\ntest_settings:\n dataset: party.jsonl\n evals:\n - exact_match_json\n props:\n party_text: \"We're having a party with Alice, Bob, and Carol.\"\ninput_schema:\n type: object\n properties:\n party_text:\n type: string\n description: \"A block of text describing the upcoming party and attendees.\"\n required:\n - party_text\n---\n\n<System>\nExtract the names of all people attending the party from the following text. Respond with a list of names only.\n</System>\n\n<User>\nText: {props.party_text}\n</User>`;\n};","export const getStoryTellerPrompt = (): string => {\n return `---\nname: story-teller\nspeech_config:\n model_name: tts-1-hd\n voice: \"nova\"\n speed: 1.0\n output_format: \"mp3\"\ntest_settings:\n dataset: story.jsonl\n props:\n story: \"Once upon a time, there was a cat who loved to play with a ball.\"\n---\n\n<System>\nYou are a storyteller for children. Make sure your story is engaging and interesting.\n</System>\n\n<SpeechPrompt>\n- {props.story}\n</SpeechPrompt>`;\n};","export const getAnimalDataset = (): string => {\n return `{\"input\": {\"animal\": \"cat\"}, \"expected_output\": \"A realistic picture of a cat\"}\n{\"input\": {\"animal\": \"dog\"}, \"expected_output\": \"A realistic picture of a dog\"}\n{\"input\": {\"animal\": \"bird\"}, \"expected_output\": \"A realistic picture of a bird\"}`;\n};\n\nexport const getCustomerQueryDataset = (): string => {\n return `{\"input\": {\"customer_question\": \"My package hasn't arrived yet. Can you help me track it?\"}}\n{\"input\": {\"customer_question\": \"I received the wrong item in my order. What should I do?\"}}\n{\"input\": {\"customer_question\": \"How do I return a product that I purchased last week?\"}}`;\n};\n\nexport const getPartyDataset = (): string => {\n return `{\"input\": {\"party_text\": \"We're having a party with Alice, Bob, and Carol.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Alice\\\\\", \\\\\"Bob\\\\\", \\\\\"Carol\\\\\"]}\"}\n{\"input\": {\"party_text\": \"The guest list includes Dave, Emma, and Frank.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Dave\\\\\", \\\\\"Emma\\\\\", \\\\\"Frank\\\\\"]}\"}\n{\"input\": {\"party_text\": \"Join us for a celebration with Grace, Henry, and Isla.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Grace\\\\\", \\\\\"Henry\\\\\", \\\\\"Isla\\\\\"]}\"}`;\n};\n\nexport const getStoryDataset = (): string => {\n return `{\"input\": {\"story\": \"Once upon a time, the Moon woke up and found her glow missing! She floated around the sky asking stars, clouds, and even comets if they'd seen her light. It wasn't until she peeked into a mountain lake that she saw her glow shining back—hidden in her own reflection! Laughing, she realized she had never lost it—it was with her all along, just hiding beneath a cloudy sky.\"}}\n{\"input\": {\"story\": \"Benny was no ordinary banana—he dreamed of becoming a superhero. One day, when a monkey slipped in the jungle and cried for help, Benny rolled into action, dodging vines and swinging from branches using his peel like a lasso. The monkey was saved, and from that day on, Benny was known as \\\\\"The Peel of Justice,\\\\\" the bravest fruit in the whole rainforest.\"}}\n{\"input\": {\"story\": \"In the town of Maplebrook, there was a library that whispered stories when no one was looking. Curious little Nia tiptoed in one rainy day and heard the books giggling softly. She opened one called The Secret Tunnel, and to her surprise, it sucked her in! She found herself riding a dragon through glittering caves. When she returned, the book winked shut—waiting for its next reader to listen.\"}}`;\n};","import fs from 'fs-extra';\nimport { getAnimalDrawingPrompt } from './animal-drawing-prompt.js';\nimport { getCustomerSupportPrompt } from './customer-support-prompt.js';\nimport { getPartyPlannerPrompt } from './party-planner-prompt.js';\nimport { getStoryTellerPrompt } from './story-teller-prompt.js';\nimport { getAnimalDataset, getCustomerQueryDataset, getPartyDataset, getStoryDataset } from './datasets.js';\n\nexport const createExamplePrompts = (model: string, targetPath: string = \".\", adapter: string = \"ai-sdk\") => {\n // Ensure the templates directory exists\n fs.ensureDirSync(`${targetPath}/agentmark`);\n \n // Create animal drawing prompt and dataset (skip for mastra adapter)\n if (adapter !== \"mastra\") {\n const animalDrawingPrompt = getAnimalDrawingPrompt();\n fs.writeFileSync(`${targetPath}/agentmark/animal-drawing.prompt.mdx`, animalDrawingPrompt);\n const animalDataset = getAnimalDataset();\n fs.writeFileSync(`${targetPath}/agentmark/animal.jsonl`, animalDataset);\n }\n \n // Create customer support prompt and dataset\n const customerSupportPrompt = getCustomerSupportPrompt(model);\n fs.writeFileSync(`${targetPath}/agentmark/customer-support-agent.prompt.mdx`, customerSupportPrompt);\n const customerQueryDataset = getCustomerQueryDataset();\n fs.writeFileSync(`${targetPath}/agentmark/customer-query.jsonl`, customerQueryDataset);\n \n // Create party planner prompt and dataset\n const partyPlannerPrompt = getPartyPlannerPrompt(model);\n fs.writeFileSync(`${targetPath}/agentmark/party-planner.prompt.mdx`, partyPlannerPrompt);\n const partyDataset = getPartyDataset();\n fs.writeFileSync(`${targetPath}/agentmark/party.jsonl`, partyDataset);\n \n // Create story teller prompt and dataset (skip for mastra adapter)\n if (adapter !== \"mastra\") {\n const storyTellerPrompt = getStoryTellerPrompt();\n fs.writeFileSync(`${targetPath}/agentmark/story-teller.prompt.mdx`, storyTellerPrompt);\n const storyDataset = getStoryDataset();\n fs.writeFileSync(`${targetPath}/agentmark/story.jsonl`, storyDataset);\n }\n};","import { getAdapterConfig } from \"./adapters.js\";\n\nexport const getClientConfigContent = (options: { provider: string; languageModels: string[]; adapter: string }) => {\n const { provider, languageModels, adapter } = options;\n const adapterConfig = getAdapterConfig(adapter);\n const { modelRegistry, toolRegistry } = adapterConfig.classes;\n\n const providerImport = `import { ${provider} } from '@ai-sdk/${provider}';`;\n\n const extraModelRegs = provider === 'openai'\n ? `.registerModels([\"dall-e-3\"], (name: string) => ${provider}.image(name))\n .registerModels([\"tts-1-hd\"], (name: string) => ${provider}.speech(name))`\n : '';\n\n return `// agentmark.client.ts\nimport path from 'node:path';\nimport dotenv from 'dotenv';\ndotenv.config({ path: path.resolve(__dirname, '.env') });\nimport { createAgentMarkClient, ${modelRegistry}, ${toolRegistry}, EvalRegistry } from \"${adapterConfig.package}\";\nimport { AgentMarkSDK } from \"@agentmark/sdk\";\nimport AgentMarkTypes, { Tools } from './agentmark.types';\n${providerImport}\n\nfunction createModelRegistry() {\n const modelRegistry = new ${modelRegistry}()\n .registerModels(${JSON.stringify(languageModels)}, (name: string) => ${provider}(name))\n ${extraModelRegs};\n return modelRegistry;\n}\n\nfunction createToolRegistry() {\n const toolRegistry = new ${toolRegistry}<Tools>()\n .register('search_knowledgebase', async ({ query }) => {\n // Simulate search delay\n await new Promise(resolve => setTimeout(resolve, 500));\n\n // Return all three knowledge base articles\n // The LLM will select the relevant one based on the query\n return {\n articles: [\n { topic: 'shipping', content: 'Standard shipping takes 3–5 business days.' },\n { topic: 'warranty', content: 'All products include a 1-year limited warranty.' },\n { topic: 'returns', content: 'You can return items within 30 days of delivery.' }\n ]\n };\n });\n return toolRegistry;\n}\n\nfunction createEvalRegistry() {\n const evalRegistry = new EvalRegistry()\n .register('exact_match_json', ({ output, expectedOutput }) => {\n if (!expectedOutput) {\n return { score: 0, label: 'error', reason: 'No expected output provided', passed: false };\n }\n try {\n const ok = JSON.stringify(output) === JSON.stringify(JSON.parse(expectedOutput));\n return {\n score: ok ? 1 : 0,\n label: ok ? 'correct' : 'incorrect',\n reason: ok ? 'Exact match' : 'Mismatch',\n passed: ok\n };\n } catch (e) {\n return { score: 0, label: 'error', reason: 'Failed to parse expected output as JSON', passed: false };\n }\n });\n return evalRegistry;\n}\n\nfunction createClient(ctx?: { env?: Record<string,string|undefined> }) {\n const env = (ctx?.env ?? process.env) as Record<string, string | undefined>;\n // For local development, connect to the local agentmark serve instance (default: http://localhost:9418)\n // For cloud deployment, set AGENTMARK_BASE_URL, AGENTMARK_API_KEY, and AGENTMARK_APP_ID\n const baseUrl = env.AGENTMARK_BASE_URL || 'http://localhost:9418';\n const apiKey = env.AGENTMARK_API_KEY || '';\n const appId = env.AGENTMARK_APP_ID || '';\n const sdk = new AgentMarkSDK({ apiKey, appId, baseUrl });\n const fileLoader = sdk.getFileLoader();\n const modelRegistry = createModelRegistry();\n const toolRegistry = createToolRegistry();\n const evalRegistry = createEvalRegistry();\n return createAgentMarkClient<AgentMarkTypes, typeof toolRegistry>({ loader: fileLoader, modelRegistry, toolRegistry, evalRegistry });\n}\n\nexport const client = createClient();\n`;\n};\n"],"mappings":"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","names":["fs","fs","fs","fs","fs","prompts","fs"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils/examples/create-example-app.ts","../src/utils/providers.ts","../src/utils/examples/templates/adapters.ts","../src/utils/examples/templates/app-index.ts","../src/utils/examples/templates/env.ts","../src/utils/examples/templates/package-setup.ts","../src/utils/examples/templates/tsconfig.ts","../src/utils/examples/templates/animal-drawing-prompt.ts","../src/utils/examples/templates/customer-support-prompt.ts","../src/utils/examples/templates/party-planner-prompt.ts","../src/utils/examples/templates/story-teller-prompt.ts","../src/utils/examples/templates/datasets.ts","../src/utils/examples/templates/example-prompts.ts","../src/utils/examples/templates/user-client-config.ts"],"sourcesContent":["import fs from \"fs-extra\";\nimport prompts from \"prompts\";\nimport { createExampleApp } from \"./utils/examples/create-example-app\";\n\nconst main = async () => {\n const config: any = {\n $schema:\n \"https://raw.githubusercontent.com/agentmark-ai/agentmark/refs/heads/main/packages/cli/agentmark.schema.json\",\n version: \"2.0.0\",\n mdxVersion: \"1.0\",\n agentmarkPath: \".\",\n };\n console.log(\"Initializing project.\");\n\n const { folderName } = await prompts({\n name: \"folderName\",\n type: \"text\",\n message: \"Where would you like to create your AgentMark app?\",\n initial: \"my-agentmark-app\",\n });\n\n // Create the target folder\n const targetPath = `./${folderName}`;\n fs.ensureDirSync(targetPath);\n\n config.builtInModels = ['gpt-4o'];\n\n // Prompt only for the OpenAI API key\n let apiKey = \"\";\n const { providedApiKey } = await prompts({\n name: \"providedApiKey\",\n type: \"password\",\n message: `Enter your OpenAI API key (or press Enter to skip):`,\n initial: \"\",\n });\n apiKey = providedApiKey || \"\";\n\n const { adapter } = await prompts({\n name: \"adapter\",\n type: \"select\",\n message: \"Which adapter would you like to use?\",\n choices: [\n { title: \"AI SDK (Vercel)\", value: \"ai-sdk\" },\n { title: \"Mastra\", value: \"mastra\" },\n ],\n });\n\n const { deploymentMode } = await prompts({\n name: \"deploymentMode\",\n type: \"select\",\n message: \"Use AgentMark Cloud or manage yourself?\",\n choices: [\n {\n title: \"AgentMark Cloud (recommended)\",\n value: \"cloud\",\n description: \"Have AgentMark cloud manage prompts, datasets, traces, experiments, alerts & more\"\n },\n {\n title: \"Self-hosted\",\n value: \"static\",\n description: \"Self-manage your prompts, datasets, traces & experiments\"\n },\n ],\n });\n\n const { client } = await prompts({\n name: \"client\",\n type: \"select\",\n message: \"Make your IDE an AgentMark expert\",\n choices: [\n { title: \"Claude Code\", value: \"claude-code\" },\n { title: \"Cursor\", value: \"cursor\" },\n { title: \"VS Code\", value: \"vscode\" },\n { title: \"Zed\", value: \"zed\" },\n { title: \"Skip\", value: \"skip\" },\n ],\n });\n\n await createExampleApp(client, targetPath, apiKey, adapter, deploymentMode);\n\n // Always generate agentmark.json so config is consistent\n fs.writeJsonSync(`${targetPath}/agentmark.json`, config, { spaces: 2 });\n};\n\nmain().catch((error) => {\n console.error(\"Error:\", error);\n process.exit(1);\n});\n","import fs from \"fs-extra\";\nimport * as path from \"path\";\nimport { Providers } from \"../providers.js\";\nimport {\n setupPackageJson,\n installDependencies,\n getIndexFileContent,\n getTsConfigContent,\n getEnvFileContent,\n createExamplePrompts,\n getClientConfigContent,\n getAdapterConfig,\n} from \"./templates/index.js\";\nimport { fetchPromptsFrontmatter, generateTypeDefinitions } from \"@agentmark/shared-utils\";\n\nconst setupMCPServer = (client: string, targetPath: string) => {\n if (client === \"skip\") {\n console.log(\"Skipping MCP server setup.\");\n return;\n }\n\n // Keep ./ prefix for display in messages\n const folderName = targetPath;\n\n // Handle VS Code\n if (client === \"vscode\") {\n try {\n console.log(`Setting up MCP server for VS Code in ${folderName}...`);\n const vscodeDir = path.join(targetPath, \".vscode\");\n fs.ensureDirSync(vscodeDir);\n\n const mcpConfig = {\n servers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(vscodeDir, \"mcp.json\"), mcpConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for VS Code in ${folderName}/.vscode/mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for VS Code:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Zed\n if (client === \"zed\") {\n try {\n console.log(`Setting up MCP server for Zed in ${folderName}...`);\n const zedDir = path.join(targetPath, \".zed\");\n fs.ensureDirSync(zedDir);\n\n const zedConfig = {\n context_servers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(zedDir, \"settings.json\"), zedConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Zed in ${folderName}/.zed/settings.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Zed:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Cursor\n if (client === \"cursor\") {\n try {\n console.log(`Setting up MCP server for Cursor in ${folderName}...`);\n const cursorDir = path.join(targetPath, \".cursor\");\n fs.ensureDirSync(cursorDir);\n\n const cursorConfig = {\n mcpServers: {\n \"agentmark-docs\": {\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(cursorDir, \"mcp.json\"), cursorConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Cursor in ${folderName}/.cursor/mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Cursor:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n\n // Handle Claude Code\n if (client === \"claude-code\") {\n try {\n console.log(`Setting up MCP server for Claude Code in ${folderName}...`);\n\n const mcpConfig = {\n mcpServers: {\n \"agentmark-docs\": {\n type: \"http\",\n url: \"https://docs.agentmark.co/mcp\"\n }\n }\n };\n\n fs.writeJsonSync(path.join(targetPath, \".mcp.json\"), mcpConfig, { spaces: 2 });\n console.log(`✅ MCP server configured for Claude Code in ${folderName}/.mcp.json`);\n } catch (error) {\n console.warn(`Warning: Could not set up MCP server for Claude Code:`, error);\n console.log(\"See https://docs.agentmark.co/agentmark/further_reference/agentmark-mcp for setup instructions.\");\n }\n return;\n }\n};\n\n\nexport const createExampleApp = async (\n client: string,\n targetPath: string = \".\",\n apiKey: string = \"\",\n adapter: string = \"ai-sdk\",\n deploymentMode: \"cloud\" | \"static\" = \"cloud\"\n) => {\n try {\n const modelProvider = 'openai';\n const model = 'gpt-4o';\n console.log(\"Creating Agent Mark example app...\");\n\n // Keep ./ prefix for display in messages\n const folderName = targetPath;\n\n // Create directory structure\n fs.ensureDirSync(`${targetPath}/agentmark`);\n\n setupMCPServer(client, targetPath);\n\n // Create example prompts\n createExamplePrompts(model, targetPath, adapter);\n console.log(`✅ Example prompts and datasets created in ${folderName}/agentmark/`);\n\n // Create user client config at project root\n // Prefer TS for dev ergonomics\n const langModels = Providers[modelProvider as keyof typeof Providers].languageModels.slice(0, 1);\n fs.writeFileSync(\n `${targetPath}/agentmark.client.ts`,\n getClientConfigContent({ provider: modelProvider, languageModels: langModels, adapter, deploymentMode })\n );\n\n // Create .env file\n fs.writeFileSync(`${targetPath}/.env`, getEnvFileContent(modelProvider, apiKey));\n\n // Create .gitignore\n const gitignore = ['node_modules', '.env', '*.agentmark-outputs/', '.agentmark', 'dist'].join('\\n');\n fs.writeFileSync(`${targetPath}/.gitignore`, gitignore);\n\n // Create the main application file\n fs.writeFileSync(\n `${targetPath}/index.ts`,\n getIndexFileContent(adapter)\n );\n\n // Create tsconfig.json\n fs.writeJsonSync(`${targetPath}/tsconfig.json`, getTsConfigContent(), { spaces: 2 });\n\n // Setup package.json and install dependencies\n setupPackageJson(targetPath, deploymentMode);\n installDependencies(modelProvider, targetPath, adapter, deploymentMode);\n\n // Generate types file using the type generation library\n console.log(\"Generating types from prompts...\");\n try {\n const agentmarkDir = path.join(targetPath, 'agentmark');\n const prompts = await fetchPromptsFrontmatter({ rootDir: agentmarkDir });\n const typeDefinitions = await generateTypeDefinitions(prompts);\n fs.writeFileSync(`${targetPath}/agentmark.types.ts`, typeDefinitions);\n } catch (error) {\n console.warn(\"Warning: Could not generate types automatically:\", error);\n console.log(\"You can generate types later by running: npx agentmark generate-types --root-dir agentmark\");\n // Create a placeholder types file\n fs.writeFileSync(`${targetPath}/agentmark.types.ts`, `// Auto-generated types from AgentMark\\n// Run 'npx agentmark generate-types --root-dir agentmark' to generate types\\nexport default interface AgentmarkTypes {}\\n`);\n }\n\n // Create .agentmark directory and dev-entry.ts\n console.log(\"Creating development server entry point...\");\n const agentmarkInternalDir = path.join(targetPath, '.agentmark');\n fs.ensureDirSync(agentmarkInternalDir);\n\n // Get adapter-specific values from config\n const adapterConfig = getAdapterConfig(adapter);\n const { webhookHandler } = adapterConfig.classes;\n\n const devEntryContent = `// Auto-generated webhook server entry point\n// To customize, create a dev-server.ts file in your project root\n\nimport { createWebhookServer } from '@agentmark/cli/runner-server';\nimport { ${webhookHandler} } from '${adapterConfig.package}/runner';\nimport { AgentMarkSDK } from '@agentmark/sdk';\nimport path from 'path';\n\nasync function main() {\n const args = process.argv.slice(2);\n const webhookPortArg = args.find(arg => arg.startsWith('--webhook-port='));\n const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));\n\n const webhookPort = webhookPortArg ? parseInt(webhookPortArg.split('=')[1]) : 9417;\n const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;\n const fileServerUrl = \\`http://localhost:\\${fileServerPort}\\`;\n\n // Set environment for development mode before importing client\n process.env.NODE_ENV = 'development';\n process.env.AGENTMARK_BASE_URL = fileServerUrl;\n\n // Now import client - it will pick up the dev environment\n const { client } = await import('../agentmark.client.js');\n\n // Initialize OpenTelemetry tracing to export traces to the API server\n const sdk = new AgentMarkSDK({\n apiKey: '',\n appId: '',\n baseUrl: fileServerUrl,\n });\n sdk.initTracing({ disableBatch: true });\n\n const handler = new ${webhookHandler}(client as any);\n const templatesDirectory = path.join(process.cwd(), 'agentmark');\n\n await createWebhookServer({\n port: webhookPort,\n handler,\n fileServerUrl,\n templatesDirectory\n });\n}\n\nmain().catch((err) => {\n console.error(err);\n process.exit(1);\n});\n`;\n\n fs.writeFileSync(path.join(agentmarkInternalDir, 'dev-entry.ts'), devEntryContent);\n\n // Success message\n console.log(\"\\n✅ Agentmark initialization completed successfully!\");\n\n console.log(\n `\n █████╗ ██████╗ ███████╗███╗ ██╗████████╗███╗ ███╗ █████╗ ██████╗ ██╗ ██╗\n██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝████╗ ████║██╔══██╗██╔══██╗██║ ██╔╝\n███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ██╔████╔██║███████║██████╔╝█████╔╝\n██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██║╚██╔╝██║██╔══██║██╔══██╗██╔═██╗\n██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██╗\n╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝\n\n `\n );\n\n console.log('\\n' + '═'.repeat(70));\n console.log('Next Steps');\n console.log('═'.repeat(70));\n\n // Simplified instructions - always just \"npm run dev\"\n console.log('\\n Get Started:');\n if (folderName !== \".\" && folderName !== \"./\") {\n console.log(` $ cd ${folderName}`);\n }\n console.log(' $ npm run dev\\n');\n\n console.log('─'.repeat(70));\n console.log('Resources');\n console.log('─'.repeat(70));\n console.log(' Documentation: https://docs.agentmark.co');\n console.log('═'.repeat(70) + '\\n');\n } catch (error) {\n console.error(\"Error creating example app:\", error);\n throw error;\n }\n};\n","export const Providers = {\n openai: {\n label: \"OpenAI\",\n languageModels: [\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-4\",\n \"gpt-5\",\n \"gpt-4-turbo\",\n \"gpt-3.5-turbo\",\n ],\n imageModels: [\"dall-e-3\", \"dall-e-2\"],\n speechModels: [\"tts-1\", \"tts-1-hd\"],\n },\n};\n","export interface AdapterConfig {\n /** npm package name for the adapter */\n package: string;\n /** Additional npm packages required by this adapter */\n dependencies: string[];\n /** Class names used in generated code */\n classes: {\n modelRegistry: string;\n toolRegistry: string;\n webhookHandler: string;\n };\n}\n\nexport const createAdapterConfig = (\n provider: string\n): Record<string, AdapterConfig> => {\n return {\n \"ai-sdk\": {\n package: \"@agentmark/ai-sdk-v5-adapter\",\n dependencies: [\"ai@^5\", `@ai-sdk/${provider}@^2`],\n classes: {\n modelRegistry: \"VercelAIModelRegistry\",\n toolRegistry: \"VercelAIToolRegistry\",\n webhookHandler: \"VercelAdapterWebhookHandler\",\n },\n },\n mastra: {\n package: \"@agentmark/mastra-v0-adapter\",\n dependencies: [\n \"@mastra/core@<0.20.0\",\n \"@mastra/mcp@<0.13.4\",\n `@ai-sdk/${provider}@<2`,\n ],\n classes: {\n modelRegistry: \"MastraModelRegistry\",\n toolRegistry: \"MastraToolRegistry\",\n webhookHandler: \"MastraAdapterWebhookHandler\",\n },\n },\n };\n};\n\nexport function getAdapterConfig(\n adapter: string,\n provider: string\n): AdapterConfig {\n const config = createAdapterConfig(provider)[adapter];\n if (!config) {\n throw new Error(\n `Unknown adapter: ${adapter}. Available adapters: ${Object.keys(\n createAdapterConfig(provider)\n ).join(\", \")}`\n );\n }\n return config;\n}\n","export const getIndexFileContent = (adapter: string = \"ai-sdk\"): string => {\n if (adapter === \"mastra\") {\n return `import \"dotenv/config\";\nimport { Agent } from \"@mastra/core/agent\";\nimport { client } from \"./agentmark.client\";\n\nconst telemetry = {\n isEnabled: true,\n metadata: {\n traceId: \"trace-123\",\n traceName: \"customer-support\",\n userId: \"user-123\",\n sessionId: \"session-123\",\n sessionName: \"my-first-session\",\n },\n};\n\nconst runCustomerSupport = async (customer_message: string) => {\n const prompt = await client.loadTextPrompt(\"customer-support-agent\");\n const agentConfig = await prompt.formatAgent({\n options: {\n telemetry,\n },\n });\n\n const [messages, generateOptions] = await agentConfig.formatMessages({\n props: {\n customer_question: customer_message,\n },\n });\n\n const agent = new Agent(agentConfig);\n const response = await agent.generate(messages, generateOptions);\n\n return (response as any).text || (response as any).content || String(response);\n};\n\nconst main = async () => {\n try {\n const user_message = \"How long does shipping take?\";\n const assistant = await runCustomerSupport(user_message);\n console.log(\"Customer support response:\", assistant);\n } catch (error) {\n console.error(error);\n }\n};\n\nmain();\n`;\n } else {\n return `import \"dotenv/config\";\nimport { generateText } from \"ai\";\nimport { client } from \"./agentmark.client\";\n\nconst telemetry = {\n isEnabled: true,\n metadata: {\n traceId: \"trace-123\",\n traceName: \"customer-support\",\n userId: \"user-123\",\n sessionId: \"session-123\",\n sessionName: \"my-first-session\",\n },\n};\n\nconst runCustomerSupport = async (customer_message: string) => {\n const prompt = await client.loadTextPrompt(\"customer-support-agent\");\n const vercelInput = await prompt.format({\n props: {\n customer_question: customer_message,\n },\n telemetry,\n });\n\n const resp = await generateText(vercelInput);\n\n return resp.text;\n};\n\nconst main = async () => {\n try {\n const user_message = \"How long does shipping take?\";\n const assistant = await runCustomerSupport(user_message);\n console.log(\"Customer support response:\", assistant);\n } catch (error) {\n console.error(error);\n }\n};\n\nmain();\n`;\n }\n}; ","export const getEnvFileContent = (\n _modelProvider: string,\n apiKey: string = ''\n): string => {\n const apiKeyValue = apiKey || 'your_api_key_here';\n\n return `# Cloud deployment: Set these environment variables\n# AGENTMARK_BASE_URL=https://api.agentmark.co\n# AGENTMARK_API_KEY=your_agentmark_api_key\n# AGENTMARK_APP_ID=your_agentmark_app_id\n# Learn more: https://docs.agentmark.co/platform/getting_started/quickstart\n\nOPENAI_API_KEY=${apiKeyValue}\n`;\n};\n","import fs from \"fs-extra\";\nimport { execSync, execFileSync } from \"child_process\";\nimport { getAdapterConfig } from \"./adapters.js\";\n\nexport const setupPackageJson = (targetPath: string = \".\", deploymentMode: \"cloud\" | \"static\" = \"cloud\") => {\n const packageJsonPath = `${targetPath}/package.json`;\n\n if (!fs.existsSync(packageJsonPath)) {\n console.log(\"Creating package.json...\");\n execSync(\"npm init -y\", { cwd: targetPath });\n }\n\n // Update the created package.json with additional information\n const pkgJson = fs.readJsonSync(packageJsonPath);\n pkgJson.name =\n pkgJson.name === \"test\" || !pkgJson.name\n ? \"agentmark-example-app\"\n : pkgJson.name;\n pkgJson.description =\n pkgJson.description || \"A simple Node.js app using the Agentmark SDK\";\n\n // All platforms use \"agentmark dev\" which runs their respective dev-entry.ts\n const devScript = \"agentmark dev\";\n\n // Base scripts for all modes\n const scripts: Record<string, string> = {\n ...pkgJson.scripts,\n \"demo\": \"npx tsx index.ts\",\n \"dev\": devScript,\n \"prompt\": \"agentmark run-prompt\",\n \"experiment\": \"agentmark run-experiment\",\n };\n\n // For static/self-hosted mode, add the build script\n if (deploymentMode === \"static\") {\n scripts[\"build\"] = \"agentmark build --out dist/agentmark\";\n }\n\n pkgJson.scripts = scripts;\n\n // Add overrides to fix vulnerabilities in transitive dependencies\n // localtunnel (used by @agentmark/cli) depends on axios@0.21.4 which has vulnerabilities\n pkgJson.overrides = {\n ...pkgJson.overrides,\n \"axios\": \"^1.7.9\"\n };\n\n fs.writeJsonSync(packageJsonPath, pkgJson, { spaces: 2 });\n};\n\nexport const installDependencies = (\n modelProvider: string,\n targetPath: string = \".\",\n adapter: string = \"ai-sdk\",\n deploymentMode: \"cloud\" | \"static\" = \"cloud\"\n) => {\n console.log(\"Installing required packages...\");\n console.log(\"This might take a moment...\");\n\n const adapterConfig = getAdapterConfig(adapter, modelProvider);\n\n try {\n // Install TypeScript, ts-node, CLI, and other dev dependencies\n // CLI needs to be a devDep so dev-entry.ts can import from @agentmark/cli/runner-server\n const devDepsCmd = \"npm install --save-dev typescript ts-node @types/node @agentmark/cli --legacy-peer-deps\";\n\n execSync(devDepsCmd, {\n stdio: \"inherit\",\n cwd: targetPath,\n });\n\n // Install the common packages\n // SDK is required for both local (connects to agentmark serve) and cloud (connects to API)\n // Loader packages are imported directly - ApiLoader always needed, FileLoader only for static mode\n const loaderPackages = deploymentMode === \"static\"\n ? [\"@agentmark/loader-api\", \"@agentmark/loader-file\"]\n : [\"@agentmark/loader-api\"];\n\n const installArgs = [\n \"install\",\n \"dotenv\",\n \"@agentmark/prompt-core\",\n \"@agentmark/sdk\",\n adapterConfig.package,\n ...loaderPackages,\n ...adapterConfig.dependencies,\n \"--legacy-peer-deps\",\n ];\n\n execFileSync(\"npm\", installArgs, { stdio: \"inherit\", cwd: targetPath });\n\n console.log(\"Packages installed successfully!\");\n } catch (error) {\n console.error(\"Error installing packages:\", error);\n throw new Error(\n \"Failed to install required packages. Please check your network connection and try again.\"\n );\n }\n};\n","export const getTsConfigContent = (): object => {\n return {\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"module\": \"NodeNext\",\n \"moduleResolution\": \"NodeNext\",\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n }\n };\n}; ","export const getAnimalDrawingPrompt = (): string => {\n return `---\nname: animal-drawing\nimage_config:\n model_name: dall-e-3\n num_images: 1\n size: 1024x1024\n aspect_ratio: 1:1\ntest_settings:\n dataset: animal.jsonl\n props:\n animal: \"cat\"\n---\n\n<ImagePrompt>\nDraw a hyper-realistic picture of a {props.animal}\n</ImagePrompt>`;\n};","export const getCustomerSupportPrompt = (model: string): string => {\n return `---\nname: customer-support-agent\ntext_config:\n model_name: ${model}\n max_calls: 2\n tools:\n search_knowledgebase:\n description: Search the company knowledgebase for information about shipping, warranty, and returns policies.\n parameters:\n type: object\n properties:\n query:\n type: string\n description: The search query to find relevant information\n required: [query]\ntest_settings:\n dataset: customer-query.jsonl\n props:\n customer_question: \"I'm having trouble with my order. How long does shipping take?\"\ninput_schema:\n type: object\n properties:\n customer_question:\n type: string\n description: \"The customer's question\"\n required:\n - customer_question\n---\n\n<System>\nYou are a customer service agent for a company that sells products online. You are given a customer's question and you need to respond to the customer. You need to be friendly, professional, and helpful.\n\nYou have access to the following tool:\n- search_knowledgebase: Search the company knowledgebase for information about shipping, warranty, and returns. Use this when customers ask about these topics.\n</System>\n\n<User>{props.customer_question}</User>`;\n};","export const getPartyPlannerPrompt = (model: string): string => {\n return `---\nname: party-planner\nobject_config:\n model_name: ${model}\n schema:\n type: object\n properties:\n names:\n type: array\n description: \"List of names of people attending the party.\"\n items:\n type: string\n required:\n - names\ntest_settings:\n dataset: party.jsonl\n evals:\n - exact_match_json\n props:\n party_text: \"We're having a party with Alice, Bob, and Carol.\"\ninput_schema:\n type: object\n properties:\n party_text:\n type: string\n description: \"A block of text describing the upcoming party and attendees.\"\n required:\n - party_text\n---\n\n<System>\nExtract the names of all people attending the party from the following text. Respond with a list of names only.\n</System>\n\n<User>\nText: {props.party_text}\n</User>`;\n};","export const getStoryTellerPrompt = (): string => {\n return `---\nname: story-teller\nspeech_config:\n model_name: tts-1-hd\n voice: \"nova\"\n speed: 1.0\n output_format: \"mp3\"\ntest_settings:\n dataset: story.jsonl\n props:\n story: \"Once upon a time, there was a cat who loved to play with a ball.\"\n---\n\n<System>\nYou are a storyteller for children. Make sure your story is engaging and interesting.\n</System>\n\n<SpeechPrompt>\n- {props.story}\n</SpeechPrompt>`;\n};","export const getAnimalDataset = (): string => {\n return `{\"input\": {\"animal\": \"cat\"}, \"expected_output\": \"A realistic picture of a cat\"}\n{\"input\": {\"animal\": \"dog\"}, \"expected_output\": \"A realistic picture of a dog\"}\n{\"input\": {\"animal\": \"bird\"}, \"expected_output\": \"A realistic picture of a bird\"}`;\n};\n\nexport const getCustomerQueryDataset = (): string => {\n return `{\"input\": {\"customer_question\": \"My package hasn't arrived yet. Can you help me track it?\"}}\n{\"input\": {\"customer_question\": \"I received the wrong item in my order. What should I do?\"}}\n{\"input\": {\"customer_question\": \"How do I return a product that I purchased last week?\"}}`;\n};\n\nexport const getPartyDataset = (): string => {\n return `{\"input\": {\"party_text\": \"We're having a party with Alice, Bob, and Carol.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Alice\\\\\", \\\\\"Bob\\\\\", \\\\\"Carol\\\\\"]}\"}\n{\"input\": {\"party_text\": \"The guest list includes Dave, Emma, and Frank.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Dave\\\\\", \\\\\"Emma\\\\\", \\\\\"Frank\\\\\"]}\"}\n{\"input\": {\"party_text\": \"Join us for a celebration with Grace, Henry, and Isla.\"}, \"expected_output\": \"{\\\\\"names\\\\\": [\\\\\"Grace\\\\\", \\\\\"Henry\\\\\", \\\\\"Isla\\\\\"]}\"}`;\n};\n\nexport const getStoryDataset = (): string => {\n return `{\"input\": {\"story\": \"Once upon a time, the Moon woke up and found her glow missing! She floated around the sky asking stars, clouds, and even comets if they'd seen her light. It wasn't until she peeked into a mountain lake that she saw her glow shining back—hidden in her own reflection! Laughing, she realized she had never lost it—it was with her all along, just hiding beneath a cloudy sky.\"}}\n{\"input\": {\"story\": \"Benny was no ordinary banana—he dreamed of becoming a superhero. One day, when a monkey slipped in the jungle and cried for help, Benny rolled into action, dodging vines and swinging from branches using his peel like a lasso. The monkey was saved, and from that day on, Benny was known as \\\\\"The Peel of Justice,\\\\\" the bravest fruit in the whole rainforest.\"}}\n{\"input\": {\"story\": \"In the town of Maplebrook, there was a library that whispered stories when no one was looking. Curious little Nia tiptoed in one rainy day and heard the books giggling softly. She opened one called The Secret Tunnel, and to her surprise, it sucked her in! She found herself riding a dragon through glittering caves. When she returned, the book winked shut—waiting for its next reader to listen.\"}}`;\n};","import fs from 'fs-extra';\nimport { getAnimalDrawingPrompt } from './animal-drawing-prompt.js';\nimport { getCustomerSupportPrompt } from './customer-support-prompt.js';\nimport { getPartyPlannerPrompt } from './party-planner-prompt.js';\nimport { getStoryTellerPrompt } from './story-teller-prompt.js';\nimport { getAnimalDataset, getCustomerQueryDataset, getPartyDataset, getStoryDataset } from './datasets.js';\n\nexport const createExamplePrompts = (model: string, targetPath: string = \".\", adapter: string = \"ai-sdk\") => {\n // Ensure the templates directory exists\n fs.ensureDirSync(`${targetPath}/agentmark`);\n \n // Create animal drawing prompt and dataset (skip for mastra adapter)\n if (adapter !== \"mastra\") {\n const animalDrawingPrompt = getAnimalDrawingPrompt();\n fs.writeFileSync(`${targetPath}/agentmark/animal-drawing.prompt.mdx`, animalDrawingPrompt);\n const animalDataset = getAnimalDataset();\n fs.writeFileSync(`${targetPath}/agentmark/animal.jsonl`, animalDataset);\n }\n \n // Create customer support prompt and dataset\n const customerSupportPrompt = getCustomerSupportPrompt(model);\n fs.writeFileSync(`${targetPath}/agentmark/customer-support-agent.prompt.mdx`, customerSupportPrompt);\n const customerQueryDataset = getCustomerQueryDataset();\n fs.writeFileSync(`${targetPath}/agentmark/customer-query.jsonl`, customerQueryDataset);\n \n // Create party planner prompt and dataset\n const partyPlannerPrompt = getPartyPlannerPrompt(model);\n fs.writeFileSync(`${targetPath}/agentmark/party-planner.prompt.mdx`, partyPlannerPrompt);\n const partyDataset = getPartyDataset();\n fs.writeFileSync(`${targetPath}/agentmark/party.jsonl`, partyDataset);\n \n // Create story teller prompt and dataset (skip for mastra adapter)\n if (adapter !== \"mastra\") {\n const storyTellerPrompt = getStoryTellerPrompt();\n fs.writeFileSync(`${targetPath}/agentmark/story-teller.prompt.mdx`, storyTellerPrompt);\n const storyDataset = getStoryDataset();\n fs.writeFileSync(`${targetPath}/agentmark/story.jsonl`, storyDataset);\n }\n};","import { getAdapterConfig } from \"./adapters.js\";\n\nexport const getClientConfigContent = (options: { provider: string; languageModels: string[]; adapter: string; deploymentMode?: \"cloud\" | \"static\" }) => {\n const { provider, languageModels, adapter, deploymentMode = \"cloud\" } = options;\n const adapterConfig = getAdapterConfig(adapter, provider);\n const { modelRegistry, toolRegistry } = adapterConfig.classes;\n\n const providerImport = `import { ${provider} } from '@ai-sdk/${provider}';`;\n\n const extraModelRegs = provider === 'openai'\n ? `.registerModels([\"dall-e-3\"], (name: string) => ${provider}.image(name))\n .registerModels([\"tts-1-hd\"], (name: string) => ${provider}.speech(name))`\n : '';\n\n // Import loaders from dedicated packages\n const loaderImport = deploymentMode === \"cloud\"\n ? `import { ApiLoader } from \"@agentmark/loader-api\";`\n : `import { ApiLoader } from \"@agentmark/loader-api\";\nimport { FileLoader } from \"@agentmark/loader-file\";`;\n\n const loaderSetup = deploymentMode === \"cloud\"\n ? ` // ApiLoader works for both development and production\n // - Development: 'agentmark dev' sets AGENTMARK_BASE_URL to localhost\n // - Production: Set AGENTMARK_API_KEY and AGENTMARK_APP_ID for cloud\n const loader = process.env.NODE_ENV === 'development'\n ? ApiLoader.local({ baseUrl: process.env.AGENTMARK_BASE_URL || 'http://localhost:9418' })\n : ApiLoader.cloud({\n apiKey: process.env.AGENTMARK_API_KEY!,\n appId: process.env.AGENTMARK_APP_ID!,\n });`\n : ` const loader = process.env.NODE_ENV === 'development'\n ? ApiLoader.local({ baseUrl: process.env.AGENTMARK_BASE_URL || 'http://localhost:9418' })\n : new FileLoader('./dist/agentmark');`;\n\n return `// agentmark.client.ts\nimport path from 'node:path';\nimport dotenv from 'dotenv';\ndotenv.config({ path: path.resolve(__dirname, '.env') });\nimport { createAgentMarkClient, ${modelRegistry}, ${toolRegistry}, EvalRegistry } from \"${adapterConfig.package}\";\n${loaderImport}\nimport AgentMarkTypes, { Tools } from './agentmark.types';\n${providerImport}\n\nfunction createModelRegistry() {\n const modelRegistry = new ${modelRegistry}()\n .registerModels(${JSON.stringify(languageModels)}, (name: string) => ${provider}(name))\n ${extraModelRegs};\n return modelRegistry;\n}\n\nfunction createToolRegistry() {\n const toolRegistry = new ${toolRegistry}<Tools>()\n .register('search_knowledgebase', async ({ query }) => {\n // Simulate search delay\n await new Promise(resolve => setTimeout(resolve, 500));\n\n // Return all three knowledge base articles\n // The LLM will select the relevant one based on the query\n return {\n articles: [\n { topic: 'shipping', content: 'Standard shipping takes 3–5 business days.' },\n { topic: 'warranty', content: 'All products include a 1-year limited warranty.' },\n { topic: 'returns', content: 'You can return items within 30 days of delivery.' }\n ]\n };\n });\n return toolRegistry;\n}\n\nfunction createEvalRegistry() {\n const evalRegistry = new EvalRegistry()\n .register('exact_match_json', ({ output, expectedOutput }) => {\n if (!expectedOutput) {\n return { score: 0, label: 'error', reason: 'No expected output provided', passed: false };\n }\n try {\n const ok = JSON.stringify(output) === JSON.stringify(JSON.parse(expectedOutput));\n return {\n score: ok ? 1 : 0,\n label: ok ? 'correct' : 'incorrect',\n reason: ok ? 'Exact match' : 'Mismatch',\n passed: ok\n };\n } catch (e) {\n return { score: 0, label: 'error', reason: 'Failed to parse expected output as JSON', passed: false };\n }\n });\n return evalRegistry;\n}\n\nfunction createClient() {\n${loaderSetup}\n const modelRegistry = createModelRegistry();\n const toolRegistry = createToolRegistry();\n const evalRegistry = createEvalRegistry();\n return createAgentMarkClient<AgentMarkTypes, typeof toolRegistry>({ loader, modelRegistry, toolRegistry, evalRegistry });\n}\n\nexport const client = createClient();\n`;\n};\n"],"mappings":"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","names":["fs","fs","fs","fs","fs","prompts","fs"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
interface AdapterConfig {
|
|
2
|
+
/** npm package name for the adapter */
|
|
3
|
+
package: string;
|
|
4
|
+
/** Additional npm packages required by this adapter */
|
|
5
|
+
dependencies: string[];
|
|
6
|
+
/** Class names used in generated code */
|
|
7
|
+
classes: {
|
|
8
|
+
modelRegistry: string;
|
|
9
|
+
toolRegistry: string;
|
|
10
|
+
webhookHandler: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare const createAdapterConfig: (provider: string) => Record<string, AdapterConfig>;
|
|
14
|
+
declare function getAdapterConfig(adapter: string, provider: string): AdapterConfig;
|
|
15
|
+
|
|
16
|
+
declare const getIndexFileContent: (adapter?: string) => string;
|
|
17
|
+
|
|
18
|
+
declare const getEnvFileContent: (_modelProvider: string, apiKey?: string) => string;
|
|
19
|
+
|
|
20
|
+
declare const setupPackageJson: (targetPath?: string, deploymentMode?: "cloud" | "static") => void;
|
|
21
|
+
declare const installDependencies: (modelProvider: string, targetPath?: string, adapter?: string, deploymentMode?: "cloud" | "static") => void;
|
|
22
|
+
|
|
23
|
+
declare const getTsConfigContent: () => object;
|
|
24
|
+
|
|
25
|
+
declare const getAnimalDrawingPrompt: () => string;
|
|
26
|
+
|
|
27
|
+
declare const getCustomerSupportPrompt: (model: string) => string;
|
|
28
|
+
|
|
29
|
+
declare const getPartyPlannerPrompt: (model: string) => string;
|
|
30
|
+
|
|
31
|
+
declare const getStoryTellerPrompt: () => string;
|
|
32
|
+
|
|
33
|
+
declare const getAnimalDataset: () => string;
|
|
34
|
+
declare const getCustomerQueryDataset: () => string;
|
|
35
|
+
declare const getPartyDataset: () => string;
|
|
36
|
+
declare const getStoryDataset: () => string;
|
|
37
|
+
|
|
38
|
+
declare const createExamplePrompts: (model: string, targetPath?: string, adapter?: string) => void;
|
|
39
|
+
|
|
40
|
+
declare const getClientConfigContent: (options: {
|
|
41
|
+
provider: string;
|
|
42
|
+
languageModels: string[];
|
|
43
|
+
adapter: string;
|
|
44
|
+
deploymentMode?: "cloud" | "static";
|
|
45
|
+
}) => string;
|
|
46
|
+
|
|
47
|
+
export { type AdapterConfig, createAdapterConfig, createExamplePrompts, getAdapterConfig, getAnimalDataset, getAnimalDrawingPrompt, getClientConfigContent, getCustomerQueryDataset, getCustomerSupportPrompt, getEnvFileContent, getIndexFileContent, getPartyDataset, getPartyPlannerPrompt, getStoryDataset, getStoryTellerPrompt, getTsConfigContent, installDependencies, setupPackageJson };
|