create-agentmark 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.
Files changed (65) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +59 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/utils/examples/create-example-app.d.ts +2 -0
  6. package/dist/utils/examples/create-example-app.d.ts.map +1 -0
  7. package/dist/utils/examples/create-example-app.js +191 -0
  8. package/dist/utils/examples/create-example-app.js.map +1 -0
  9. package/dist/utils/examples/templates/animal-drawing-prompt.d.ts +2 -0
  10. package/dist/utils/examples/templates/animal-drawing-prompt.d.ts.map +1 -0
  11. package/dist/utils/examples/templates/animal-drawing-prompt.js +19 -0
  12. package/dist/utils/examples/templates/animal-drawing-prompt.js.map +1 -0
  13. package/dist/utils/examples/templates/app-index.d.ts +2 -0
  14. package/dist/utils/examples/templates/app-index.d.ts.map +1 -0
  15. package/dist/utils/examples/templates/app-index.js +44 -0
  16. package/dist/utils/examples/templates/app-index.js.map +1 -0
  17. package/dist/utils/examples/templates/customer-support-prompt.d.ts +2 -0
  18. package/dist/utils/examples/templates/customer-support-prompt.d.ts.map +1 -0
  19. package/dist/utils/examples/templates/customer-support-prompt.js +40 -0
  20. package/dist/utils/examples/templates/customer-support-prompt.js.map +1 -0
  21. package/dist/utils/examples/templates/datasets.d.ts +5 -0
  22. package/dist/utils/examples/templates/datasets.d.ts.map +1 -0
  23. package/dist/utils/examples/templates/datasets.js +21 -0
  24. package/dist/utils/examples/templates/datasets.js.map +1 -0
  25. package/dist/utils/examples/templates/dev-server.d.ts +2 -0
  26. package/dist/utils/examples/templates/dev-server.d.ts.map +1 -0
  27. package/dist/utils/examples/templates/dev-server.js +38 -0
  28. package/dist/utils/examples/templates/dev-server.js.map +1 -0
  29. package/dist/utils/examples/templates/env.d.ts +2 -0
  30. package/dist/utils/examples/templates/env.d.ts.map +1 -0
  31. package/dist/utils/examples/templates/env.js +30 -0
  32. package/dist/utils/examples/templates/env.js.map +1 -0
  33. package/dist/utils/examples/templates/example-prompts.d.ts +2 -0
  34. package/dist/utils/examples/templates/example-prompts.d.ts.map +1 -0
  35. package/dist/utils/examples/templates/example-prompts.js +32 -0
  36. package/dist/utils/examples/templates/example-prompts.js.map +1 -0
  37. package/dist/utils/examples/templates/index.d.ts +13 -0
  38. package/dist/utils/examples/templates/index.d.ts.map +1 -0
  39. package/dist/utils/examples/templates/index.js +13 -0
  40. package/dist/utils/examples/templates/index.js.map +1 -0
  41. package/dist/utils/examples/templates/package-setup.d.ts +3 -0
  42. package/dist/utils/examples/templates/package-setup.d.ts.map +1 -0
  43. package/dist/utils/examples/templates/package-setup.js +58 -0
  44. package/dist/utils/examples/templates/package-setup.js.map +1 -0
  45. package/dist/utils/examples/templates/party-planner-prompt.d.ts +2 -0
  46. package/dist/utils/examples/templates/party-planner-prompt.d.ts.map +1 -0
  47. package/dist/utils/examples/templates/party-planner-prompt.js +40 -0
  48. package/dist/utils/examples/templates/party-planner-prompt.js.map +1 -0
  49. package/dist/utils/examples/templates/story-teller-prompt.d.ts +2 -0
  50. package/dist/utils/examples/templates/story-teller-prompt.d.ts.map +1 -0
  51. package/dist/utils/examples/templates/story-teller-prompt.js +23 -0
  52. package/dist/utils/examples/templates/story-teller-prompt.js.map +1 -0
  53. package/dist/utils/examples/templates/tsconfig.d.ts +2 -0
  54. package/dist/utils/examples/templates/tsconfig.d.ts.map +1 -0
  55. package/dist/utils/examples/templates/tsconfig.js +14 -0
  56. package/dist/utils/examples/templates/tsconfig.js.map +1 -0
  57. package/dist/utils/examples/templates/user-client-config.d.ts +5 -0
  58. package/dist/utils/examples/templates/user-client-config.d.ts.map +1 -0
  59. package/dist/utils/examples/templates/user-client-config.js +85 -0
  60. package/dist/utils/examples/templates/user-client-config.js.map +1 -0
  61. package/dist/utils/providers.d.ts +9 -0
  62. package/dist/utils/providers.d.ts.map +1 -0
  63. package/dist/utils/providers.js +16 -0
  64. package/dist/utils/providers.js.map +1 -0
  65. package/package.json +42 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs-extra";
3
+ import prompts from "prompts";
4
+ import { Providers } from "./utils/providers.js";
5
+ import { createExampleApp } from "./utils/examples/create-example-app.js";
6
+ const main = async () => {
7
+ const config = {
8
+ $schema: "https://raw.githubusercontent.com/agentmark-ai/agentmark/refs/heads/main/packages/cli/agentmark.schema.json",
9
+ version: "2.0.0",
10
+ mdxVersion: "1.0",
11
+ agentmarkPath: ".",
12
+ };
13
+ console.log("Initializing project.");
14
+ const { folderName } = await prompts({
15
+ name: "folderName",
16
+ type: "text",
17
+ message: "Where would you like to create your AgentMark app?",
18
+ initial: "my-agentmark-app",
19
+ });
20
+ // Create the target folder
21
+ const targetPath = `./${folderName}`;
22
+ fs.ensureDirSync(targetPath);
23
+ // Force OpenAI provider for initial setup to streamline onboarding
24
+ const provider = 'openai';
25
+ // Default to the first language model of the chosen provider
26
+ const model = Providers[provider].languageModels[0];
27
+ // Model is selected implicitly for setup; no need to log
28
+ config.builtInModels = [model];
29
+ // Prompt only for the OpenAI API key
30
+ let apiKey = "";
31
+ const { providedApiKey } = await prompts({
32
+ name: "providedApiKey",
33
+ type: "password",
34
+ message: `Enter your OpenAI API key (or press Enter to skip):`,
35
+ initial: "",
36
+ });
37
+ apiKey = providedApiKey || "";
38
+ const { client } = await prompts({
39
+ name: "client",
40
+ type: "select",
41
+ message: "Make your IDE an AgentMark expert",
42
+ choices: [
43
+ { title: "Claude", value: "claude" },
44
+ { title: "Cursor", value: "cursor" },
45
+ { title: "VS Code", value: "vscode" },
46
+ { title: "Windsurf", value: "windsurf" },
47
+ { title: "Zed", value: "zed" },
48
+ { title: "Skip", value: "skip" },
49
+ ],
50
+ });
51
+ await createExampleApp(provider, model, client, targetPath, apiKey);
52
+ // Always generate agentmark.json so config is consistent
53
+ fs.writeJsonSync(`${targetPath}/agentmark.json`, config, { spaces: 2 });
54
+ };
55
+ main().catch((error) => {
56
+ console.error("Error:", error);
57
+ process.exit(1);
58
+ });
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,MAAM,GAAQ;QAClB,OAAO,EACL,6GAA6G;QAC/G,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,GAAG;KACnB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,UAAU,GAAG,KAAK,UAAU,EAAE,CAAC;IACrC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE7B,mEAAmE;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAE1B,6DAA6D;IAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,QAAkC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAE9E,yDAAyD;IAEzD,MAAM,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC;IAE/B,qCAAqC;IACrC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC;QACvC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,qDAAqD;QAC9D,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IACH,MAAM,GAAG,cAAc,IAAI,EAAE,CAAC;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACpC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACpC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;YACrC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;YACxC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC;KACF,CAAC,CAAC;IAEH,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEpE,yDAAyD;IACzD,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,iBAAiB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const createExampleApp: (modelProvider: string, model: string, client: string, targetPath?: string, apiKey?: string) => Promise<void>;
2
+ //# sourceMappingURL=create-example-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-example-app.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/create-example-app.ts"],"names":[],"mappings":"AA2FA,eAAO,MAAM,gBAAgB,GAC3B,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,aAAY,MAAY,EACxB,SAAQ,MAAW,kBA0IpB,CAAC"}
@@ -0,0 +1,191 @@
1
+ import fs from "fs-extra";
2
+ import * as path from "path";
3
+ import { execSync } from "child_process";
4
+ import { Providers } from "../providers.js";
5
+ import { setupPackageJson, installDependencies, getIndexFileContent, getTsConfigContent, getEnvFileContent, createExamplePrompts, getClientConfigContent, } from "./templates/index.js";
6
+ import { fetchPromptsFrontmatter, generateTypeDefinitions } from "@agentmark/shared-utils";
7
+ const setupMCPServer = (client, targetPath) => {
8
+ if (client === "skip") {
9
+ console.log("Skipping MCP server setup.");
10
+ return;
11
+ }
12
+ const folderName = targetPath.replace("./", "");
13
+ // Handle VS Code separately since mint-mcp doesn't support it
14
+ if (client === "vscode") {
15
+ try {
16
+ console.log(`Setting up MCP server for VS Code in ${folderName}...`);
17
+ const vscodeDir = path.join(targetPath, ".vscode");
18
+ fs.ensureDirSync(vscodeDir);
19
+ const mcpConfig = {
20
+ servers: {
21
+ "agentmark-docs": {
22
+ command: "npx",
23
+ args: ["-y", "@mintlify/mcp", "docs.agentmark.co"]
24
+ }
25
+ }
26
+ };
27
+ fs.writeJsonSync(path.join(vscodeDir, "mcp.json"), mcpConfig, { spaces: 2 });
28
+ console.log(`✅ MCP server configured for VS Code in ${folderName}/.vscode/mcp.json`);
29
+ }
30
+ catch (error) {
31
+ console.warn(`Warning: Could not set up MCP server for VS Code:`, error);
32
+ console.log("You can manually create .vscode/mcp.json with the AgentMark docs MCP server configuration.");
33
+ }
34
+ return;
35
+ }
36
+ // Handle Zed separately since mint-mcp doesn't support it
37
+ if (client === "zed") {
38
+ try {
39
+ console.log(`Setting up MCP server for Zed in ${folderName}...`);
40
+ const zedDir = path.join(targetPath, ".zed");
41
+ fs.ensureDirSync(zedDir);
42
+ const zedConfig = {
43
+ context_servers: {
44
+ "agentmark-docs": {
45
+ source: "custom",
46
+ command: "npx",
47
+ args: ["-y", "@mintlify/mcp", "docs.agentmark.co"],
48
+ env: {}
49
+ }
50
+ }
51
+ };
52
+ fs.writeJsonSync(path.join(zedDir, "settings.json"), zedConfig, { spaces: 2 });
53
+ console.log(`✅ MCP server configured for Zed in ${folderName}/.zed/settings.json`);
54
+ }
55
+ catch (error) {
56
+ console.warn(`Warning: Could not set up MCP server for Zed:`, error);
57
+ console.log("You can manually create .zed/settings.json with the AgentMark docs MCP server configuration.");
58
+ }
59
+ return;
60
+ }
61
+ // Handle other clients via mint-mcp
62
+ try {
63
+ console.log(`Setting up MCP server for ${client} in ${folderName}...`);
64
+ execSync(`npx mint-mcp add docs.agentmark.co --client ${client}`, {
65
+ stdio: "inherit",
66
+ cwd: targetPath,
67
+ });
68
+ console.log(`✅ MCP server configured for ${client} in ${folderName}`);
69
+ }
70
+ catch (error) {
71
+ console.warn(`Warning: Could not set up MCP server for ${client}:`, error);
72
+ console.log("You can manually set it up later by running this command in your project folder:");
73
+ console.log(`cd ${folderName}`);
74
+ console.log(`npx mint-mcp add docs.agentmark.co --client ${client}`);
75
+ }
76
+ };
77
+ export const createExampleApp = async (modelProvider, model, client, targetPath = ".", apiKey = "") => {
78
+ try {
79
+ console.log("Creating Agent Mark example app...");
80
+ // Create directory structure
81
+ fs.ensureDirSync(`${targetPath}/agentmark`);
82
+ setupMCPServer(client, targetPath);
83
+ // Create example prompts
84
+ createExamplePrompts(model, targetPath);
85
+ // Create user client config at project root
86
+ // Prefer TS for dev ergonomics
87
+ const langModels = Providers[modelProvider].languageModels.slice(0, 1);
88
+ fs.writeFileSync(`${targetPath}/agentmark.config.ts`, getClientConfigContent({ provider: modelProvider, languageModels: langModels }));
89
+ // Create .env file
90
+ fs.writeFileSync(`${targetPath}/.env`, getEnvFileContent(modelProvider, apiKey));
91
+ // Create .gitignore
92
+ const gitignore = ['node_modules', '.env', '*.agentmark-outputs/', '.agentmark'].join('\n');
93
+ fs.writeFileSync(`${targetPath}/.gitignore`, gitignore);
94
+ // Create the main application file
95
+ fs.writeFileSync(`${targetPath}/index.ts`, getIndexFileContent());
96
+ // Create tsconfig.json
97
+ fs.writeJsonSync(`${targetPath}/tsconfig.json`, getTsConfigContent(), { spaces: 2 });
98
+ // Setup package.json and install dependencies
99
+ setupPackageJson(targetPath);
100
+ installDependencies(modelProvider, targetPath);
101
+ // Generate types file using the type generation library
102
+ console.log("Generating types from prompts...");
103
+ try {
104
+ const agentmarkDir = path.join(targetPath, 'agentmark');
105
+ const prompts = await fetchPromptsFrontmatter({ rootDir: agentmarkDir });
106
+ const typeDefinitions = await generateTypeDefinitions(prompts);
107
+ fs.writeFileSync(`${targetPath}/agentmark.types.ts`, typeDefinitions);
108
+ }
109
+ catch (error) {
110
+ console.warn("Warning: Could not generate types automatically:", error);
111
+ console.log("You can generate types later by running: npx agentmark generate-types --root-dir agentmark");
112
+ // Create a placeholder types file
113
+ 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`);
114
+ }
115
+ // Create .agentmark directory and dev-entry.ts
116
+ console.log("Creating development server entry point...");
117
+ const agentmarkInternalDir = path.join(targetPath, '.agentmark');
118
+ fs.ensureDirSync(agentmarkInternalDir);
119
+ // For now, hardcode to vercel-ai-v4 adapter (will be configurable in future)
120
+ const adapterName = 'vercel-ai-v4';
121
+ const runnerClassName = 'VercelAdapterRunner';
122
+ const devEntryContent = `// Auto-generated runner server entry point
123
+ // To customize, create a dev-server.ts file in your project root
124
+
125
+ import { createRunnerServer } from '@agentmark/cli/runner-server';
126
+ import { ${runnerClassName} } from '@agentmark/${adapterName}-adapter/runner';
127
+ import path from 'path';
128
+
129
+ async function main() {
130
+ const { client } = await import('../agentmark.config.js');
131
+
132
+ const args = process.argv.slice(2);
133
+ const runnerPortArg = args.find(arg => arg.startsWith('--runner-port='));
134
+ const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));
135
+
136
+ const runnerPort = runnerPortArg ? parseInt(runnerPortArg.split('=')[1]) : 9417;
137
+ const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;
138
+
139
+ const runner = new ${runnerClassName}(client);
140
+ const fileServerUrl = \`http://localhost:\${fileServerPort}\`;
141
+ const templatesDirectory = path.join(process.cwd(), 'agentmark');
142
+
143
+ await createRunnerServer({
144
+ port: runnerPort,
145
+ runner,
146
+ fileServerUrl,
147
+ templatesDirectory
148
+ });
149
+ }
150
+
151
+ main().catch((err) => {
152
+ console.error(err);
153
+ process.exit(1);
154
+ });
155
+ `;
156
+ fs.writeFileSync(path.join(agentmarkInternalDir, 'dev-entry.ts'), devEntryContent);
157
+ // Success message
158
+ console.log("\n✅ Agentmark initialization completed successfully!");
159
+ console.log(`
160
+ █████╗ ██████╗ ███████╗███╗ ██╗████████╗███╗ ███╗ █████╗ ██████╗ ██╗ ██╗
161
+ ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝████╗ ████║██╔══██╗██╔══██╗██║ ██╔╝
162
+ ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ██╔████╔██║███████║██████╔╝█████╔╝
163
+ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██║╚██╔╝██║██╔══██║██╔══██╗██╔═██╗
164
+ ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██╗
165
+ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝
166
+
167
+ `);
168
+ const folderName = targetPath.replace("./", "");
169
+ console.log('\n' + '═'.repeat(70));
170
+ console.log('Next Steps');
171
+ console.log('═'.repeat(70));
172
+ console.log('\n Initialize Server:');
173
+ if (folderName !== ".") {
174
+ console.log(` $ cd ${folderName}`);
175
+ }
176
+ console.log(' $ npm run dev\n');
177
+ console.log(' Run app demo:');
178
+ console.log(' $ npm run demo');
179
+ console.log('');
180
+ console.log('─'.repeat(70));
181
+ console.log('Resources');
182
+ console.log('─'.repeat(70));
183
+ console.log(' Deploy to Production: https://docs.agentmark.co/platform/getting_started/quickstart');
184
+ console.log('═'.repeat(70) + '\n');
185
+ }
186
+ catch (error) {
187
+ console.error("Error creating example app:", error);
188
+ throw error;
189
+ }
190
+ };
191
+ //# sourceMappingURL=create-example-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-example-app.js","sourceRoot":"","sources":["../../../src/utils/examples/create-example-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const getAnimalDrawingPrompt: () => string;
2
+ //# sourceMappingURL=animal-drawing-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animal-drawing-prompt.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/animal-drawing-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,QAAO,MAiBzC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const getAnimalDrawingPrompt = () => {
2
+ return `---
3
+ name: animal-drawing
4
+ image_config:
5
+ model_name: dall-e-3
6
+ num_images: 1
7
+ size: 1024x1024
8
+ aspect_ratio: 1:1
9
+ test_settings:
10
+ dataset: animal.jsonl
11
+ props:
12
+ animal: "cat"
13
+ ---
14
+
15
+ <ImagePrompt>
16
+ Draw a hyper-realistic picture of a {props.animal}
17
+ </ImagePrompt>`;
18
+ };
19
+ //# sourceMappingURL=animal-drawing-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animal-drawing-prompt.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/animal-drawing-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE;IACjD,OAAO;;;;;;;;;;;;;;;eAeM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getIndexFileContent: () => string;
2
+ //# sourceMappingURL=app-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-index.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/app-index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAAO,MA0CtC,CAAC"}
@@ -0,0 +1,44 @@
1
+ export const getIndexFileContent = () => {
2
+ return `import "dotenv/config";
3
+ import { generateText } from "ai";
4
+ import { client } from "./agentmark.config";
5
+
6
+ const telemetry = {
7
+ isEnabled: true,
8
+ metadata: {
9
+ traceId: "trace-123",
10
+ traceName: "customer-support",
11
+ userId: "user-123",
12
+ sessionId: "session-123",
13
+ sessionName: "my-first-session",
14
+ },
15
+ };
16
+
17
+ const runCustomerSupport = async (customer_message: string) => {
18
+ const prompt = await client.loadTextPrompt("customer-support-agent.prompt.mdx");
19
+ const vercelInput = await prompt.format({
20
+ props: {
21
+ customer_question: customer_message,
22
+ },
23
+ telemetry,
24
+ });
25
+
26
+ const resp = await generateText(vercelInput);
27
+
28
+ return resp.text;
29
+ };
30
+
31
+ const main = async () => {
32
+ try {
33
+ const user_message = "How long does shipping take?";
34
+ const assistant = await runCustomerSupport(user_message);
35
+ console.log("Customer support response:", assistant);
36
+ } catch (error) {
37
+ console.error(error);
38
+ }
39
+ };
40
+
41
+ main();
42
+ `;
43
+ };
44
+ //# sourceMappingURL=app-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-index.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/app-index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCR,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getCustomerSupportPrompt: (model: string) => string;
2
+ //# sourceMappingURL=customer-support-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer-support-prompt.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/customer-support-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MAsCxD,CAAC"}
@@ -0,0 +1,40 @@
1
+ export const getCustomerSupportPrompt = (model) => {
2
+ return `---
3
+ name: customer-reply
4
+ text_config:
5
+ model_name: ${model}
6
+ max_calls: 2
7
+ tools:
8
+ search_knowledgebase:
9
+ description: Search the company knowledgebase for information about shipping, warranty, and returns policies.
10
+ parameters:
11
+ type: object
12
+ properties:
13
+ query:
14
+ type: string
15
+ description: The search query to find relevant information
16
+ required: [query]
17
+ test_settings:
18
+ dataset: customer-query.jsonl
19
+ props:
20
+ customer_question: "I'm having trouble with my order. How long does shipping take?"
21
+ input_schema:
22
+ type: object
23
+ properties:
24
+ customer_question:
25
+ type: string
26
+ description: "The customer's question"
27
+ required:
28
+ - customer_question
29
+ ---
30
+
31
+ <System>
32
+ You 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.
33
+
34
+ You have access to the following tool:
35
+ - search_knowledgebase: Search the company knowledgebase for information about shipping, warranty, and returns. Use this when customers ask about these topics.
36
+ </System>
37
+
38
+ <User>{props.customer_question}</User>`;
39
+ };
40
+ //# sourceMappingURL=customer-support-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer-support-prompt.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/customer-support-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAU,EAAE;IAChE,OAAO;;;gBAGO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAiCkB,CAAC;AACxC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const getAnimalDataset: () => string;
2
+ export declare const getCustomerQueryDataset: () => string;
3
+ export declare const getPartyDataset: () => string;
4
+ export declare const getStoryDataset: () => string;
5
+ //# sourceMappingURL=datasets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/datasets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAO,MAInC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,MAI1C,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,MAIlC,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,MAIlC,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const getAnimalDataset = () => {
2
+ return `{"input": {"animal": "cat"}, "expected_output": "A realistic picture of a cat"}
3
+ {"input": {"animal": "dog"}, "expected_output": "A realistic picture of a dog"}
4
+ {"input": {"animal": "bird"}, "expected_output": "A realistic picture of a bird"}`;
5
+ };
6
+ export const getCustomerQueryDataset = () => {
7
+ return `{"input": {"customer_question": "My package hasn't arrived yet. Can you help me track it?"}}
8
+ {"input": {"customer_question": "I received the wrong item in my order. What should I do?"}}
9
+ {"input": {"customer_question": "How do I return a product that I purchased last week?"}}`;
10
+ };
11
+ export const getPartyDataset = () => {
12
+ return `{"input": {"party_text": "We're having a party with Alice, Bob, and Carol."}, "expected_output": "{\\"names\\": [\\"Alice\\", \\"Bob\\", \\"Carol\\"]}"}
13
+ {"input": {"party_text": "The guest list includes Dave, Emma, and Frank."}, "expected_output": "{\\"names\\": [\\"Dave\\", \\"Emma\\", \\"Frank\\"]}"}
14
+ {"input": {"party_text": "Join us for a celebration with Grace, Henry, and Isla."}, "expected_output": "{\\"names\\": [\\"Grace\\", \\"Henry\\", \\"Isla\\"]}"}`;
15
+ };
16
+ export const getStoryDataset = () => {
17
+ 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."}}
18
+ {"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."}}
19
+ {"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."}}`;
20
+ };
21
+ //# sourceMappingURL=datasets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/datasets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC3C,OAAO;;kFAEyE,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAW,EAAE;IAClD,OAAO;;0FAEiF,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,OAAO;;gKAEuJ,CAAC;AACjK,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,OAAO;;maAE0Z,CAAC;AACpa,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getDevServerContent: () => string;
2
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/dev-server.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,cAoC/B,CAAC"}
@@ -0,0 +1,38 @@
1
+ export const getDevServerContent = () => {
2
+ return `// dev-server.ts
3
+ // This file starts the AgentMark development servers
4
+ // Run with: npm run dev (or agentmark dev)
5
+
6
+ import { client } from './agentmark.config';
7
+ import { createRunnerServer } from '@agentmark/cli/runner-server';
8
+ import { VercelAdapterRunner } from '@agentmark/vercel-ai-v4-adapter/runner';
9
+ import path from 'path';
10
+
11
+ // Parse command line arguments
12
+ const args = process.argv.slice(2);
13
+ const runnerPortArg = args.find(arg => arg.startsWith('--runner-port='));
14
+ const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));
15
+
16
+ const runnerPort = runnerPortArg ? parseInt(runnerPortArg.split('=')[1]) : 9417;
17
+ const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;
18
+
19
+ async function main() {
20
+ const runner = new VercelAdapterRunner(client as any);
21
+ const fileServerUrl = \`http://localhost:\${fileServerPort}\`;
22
+ const templatesDirectory = path.join(process.cwd(), 'agentmark');
23
+
24
+ await createRunnerServer({
25
+ port: runnerPort,
26
+ runner,
27
+ fileServerUrl,
28
+ templatesDirectory
29
+ });
30
+ }
31
+
32
+ main().catch(err => {
33
+ console.error(err);
34
+ process.exit(1);
35
+ });
36
+ `;
37
+ };
38
+ //# sourceMappingURL=dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/dev-server.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCR,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getEnvFileContent: (modelProvider: string, apiKey?: string) => string;
2
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,SAAQ,MAAW,KAClB,MAsBF,CAAC"}
@@ -0,0 +1,30 @@
1
+ // Map providers to their correct environment variable names
2
+ const providerApiKeyMap = {
3
+ openai: "OPENAI_API_KEY",
4
+ anthropic: "ANTHROPIC_API_KEY",
5
+ google: "GOOGLE_GENERATIVE_AI_API_KEY",
6
+ groq: "GROQ_API_KEY",
7
+ xai: "XAI_API_KEY",
8
+ ollama: "" // Ollama doesn't need an API key for local usage
9
+ };
10
+ export const getEnvFileContent = (modelProvider, apiKey = '') => {
11
+ const envVarName = providerApiKeyMap[modelProvider] || `${modelProvider.toUpperCase()}_API_KEY`;
12
+ const apiKeyValue = apiKey || 'your_api_key_here';
13
+ // Ollama doesn't need an API key for local usage
14
+ const needsApiKey = modelProvider !== 'ollama';
15
+ let content = `# Cloud deployment: Set these environment variables
16
+ # AGENTMARK_BASE_URL=https://api.agentmark.co
17
+ # AGENTMARK_API_KEY=your_agentmark_api_key
18
+ # AGENTMARK_APP_ID=your_agentmark_app_id
19
+ # Learn more: https://docs.agentmark.co/platform/getting_started/quickstart
20
+
21
+ `;
22
+ if (needsApiKey) {
23
+ content += `${envVarName}=${apiKeyValue}\n`;
24
+ }
25
+ else {
26
+ content += `# No API key needed for ${modelProvider}\n`;
27
+ }
28
+ return content;
29
+ };
30
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,iBAAiB,GAA2B;IAChD,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,8BAA8B;IACtC,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,EAAE,CAAC,iDAAiD;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAAqB,EACrB,SAAiB,EAAE,EACX,EAAE;IACV,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;IAChG,MAAM,WAAW,GAAG,MAAM,IAAI,mBAAmB,CAAC;IAElD,iDAAiD;IACjD,MAAM,WAAW,GAAG,aAAa,KAAK,QAAQ,CAAC;IAE/C,IAAI,OAAO,GAAG;;;;;;CAMf,CAAC;IAEA,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,GAAG,UAAU,IAAI,WAAW,IAAI,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,2BAA2B,aAAa,IAAI,CAAC;IAC1D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const createExamplePrompts: (model: string, targetPath?: string) => void;
2
+ //# sourceMappingURL=example-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-prompts.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/example-prompts.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,aAAY,MAAY,SA6B3E,CAAC"}
@@ -0,0 +1,32 @@
1
+ import fs from 'fs-extra';
2
+ import { getAnimalDrawingPrompt } from './animal-drawing-prompt.js';
3
+ import { getCustomerSupportPrompt } from './customer-support-prompt.js';
4
+ import { getPartyPlannerPrompt } from './party-planner-prompt.js';
5
+ import { getStoryTellerPrompt } from './story-teller-prompt.js';
6
+ import { getAnimalDataset, getCustomerQueryDataset, getPartyDataset, getStoryDataset } from './datasets.js';
7
+ export const createExamplePrompts = (model, targetPath = ".") => {
8
+ // Ensure the templates directory exists
9
+ fs.ensureDirSync(`${targetPath}/agentmark`);
10
+ // Create animal drawing prompt and dataset
11
+ const animalDrawingPrompt = getAnimalDrawingPrompt();
12
+ fs.writeFileSync(`${targetPath}/agentmark/animal-drawing.prompt.mdx`, animalDrawingPrompt);
13
+ const animalDataset = getAnimalDataset();
14
+ fs.writeFileSync(`${targetPath}/agentmark/animal.jsonl`, animalDataset);
15
+ // Create customer support prompt and dataset
16
+ const customerSupportPrompt = getCustomerSupportPrompt(model);
17
+ fs.writeFileSync(`${targetPath}/agentmark/customer-support-agent.prompt.mdx`, customerSupportPrompt);
18
+ const customerQueryDataset = getCustomerQueryDataset();
19
+ fs.writeFileSync(`${targetPath}/agentmark/customer-query.jsonl`, customerQueryDataset);
20
+ // Create party planner prompt and dataset
21
+ const partyPlannerPrompt = getPartyPlannerPrompt(model);
22
+ fs.writeFileSync(`${targetPath}/agentmark/party-planner.prompt.mdx`, partyPlannerPrompt);
23
+ const partyDataset = getPartyDataset();
24
+ fs.writeFileSync(`${targetPath}/agentmark/party.jsonl`, partyDataset);
25
+ // Create story teller prompt and dataset
26
+ const storyTellerPrompt = getStoryTellerPrompt();
27
+ fs.writeFileSync(`${targetPath}/agentmark/story-teller.prompt.mdx`, storyTellerPrompt);
28
+ const storyDataset = getStoryDataset();
29
+ fs.writeFileSync(`${targetPath}/agentmark/story.jsonl`, storyDataset);
30
+ console.log('✅ Example prompts and datasets created in agentmark folder');
31
+ };
32
+ //# sourceMappingURL=example-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-prompts.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/example-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE5G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,aAAqB,GAAG,EAAE,EAAE;IAC9E,wCAAwC;IACxC,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,YAAY,CAAC,CAAC;IAE5C,2CAA2C;IAC3C,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;IACrD,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,sCAAsC,EAAE,mBAAmB,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,yBAAyB,EAAE,aAAa,CAAC,CAAC;IAExE,6CAA6C;IAC7C,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC9D,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,8CAA8C,EAAE,qBAAqB,CAAC,CAAC;IACrG,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;IACvD,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,iCAAiC,EAAE,oBAAoB,CAAC,CAAC;IAEvF,0CAA0C;IAC1C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACxD,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,qCAAqC,EAAE,kBAAkB,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAEtE,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,oCAAoC,EAAE,iBAAiB,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,GAAG,UAAU,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAC5E,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from './app-index.js';
2
+ export * from './env.js';
3
+ export * from './package-setup.js';
4
+ export * from './tsconfig.js';
5
+ export * from './animal-drawing-prompt.js';
6
+ export * from './customer-support-prompt.js';
7
+ export * from './party-planner-prompt.js';
8
+ export * from './story-teller-prompt.js';
9
+ export * from './datasets.js';
10
+ export * from './example-prompts.js';
11
+ export * from './user-client-config.js';
12
+ export * from './dev-server.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from './app-index.js';
2
+ export * from './env.js';
3
+ export * from './package-setup.js';
4
+ export * from './tsconfig.js';
5
+ export * from './animal-drawing-prompt.js';
6
+ export * from './customer-support-prompt.js';
7
+ export * from './party-planner-prompt.js';
8
+ export * from './story-teller-prompt.js';
9
+ export * from './datasets.js';
10
+ export * from './example-prompts.js';
11
+ export * from './user-client-config.js';
12
+ export * from './dev-server.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const setupPackageJson: (targetPath?: string) => void;
2
+ export declare const installDependencies: (modelProvider: string, targetPath?: string) => void;
3
+ //# sourceMappingURL=package-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-setup.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/package-setup.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,GAAI,aAAY,MAAY,SAyBxD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,MAAM,EACrB,aAAY,MAAY,SAqCzB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import fs from "fs-extra";
2
+ import { execSync, execFileSync } from "child_process";
3
+ export const setupPackageJson = (targetPath = ".") => {
4
+ const packageJsonPath = `${targetPath}/package.json`;
5
+ if (!fs.existsSync(packageJsonPath)) {
6
+ console.log("Creating package.json...");
7
+ execSync("npm init -y", { cwd: targetPath });
8
+ }
9
+ // Update the created package.json with additional information
10
+ const pkgJson = fs.readJsonSync(packageJsonPath);
11
+ pkgJson.name =
12
+ pkgJson.name === "test" || !pkgJson.name
13
+ ? "agentmark-example-app"
14
+ : pkgJson.name;
15
+ pkgJson.description =
16
+ pkgJson.description || "A simple Node.js app using the Agentmark SDK";
17
+ pkgJson.scripts = {
18
+ ...pkgJson.scripts,
19
+ "demo": "npx tsx index.ts",
20
+ "dev": "agentmark dev",
21
+ "prompt": "agentmark run-prompt",
22
+ "experiment": "agentmark run-experiment",
23
+ };
24
+ fs.writeJsonSync(packageJsonPath, pkgJson, { spaces: 2 });
25
+ };
26
+ export const installDependencies = (modelProvider, targetPath = ".") => {
27
+ console.log("Installing required packages...");
28
+ console.log("This might take a moment...");
29
+ try {
30
+ // Install TypeScript, ts-node, CLI, and other dev dependencies
31
+ // CLI needs to be a devDep so dev-entry.ts can import from @agentmark/cli/runner-server
32
+ execSync("npm install --save-dev typescript ts-node @types/node @agentmark/cli", {
33
+ stdio: "inherit",
34
+ cwd: targetPath,
35
+ });
36
+ // Install the common packages
37
+ // Use different package names for different providers
38
+ // Pin required major versions: ai@v4, @ai-sdk/<provider>@v1
39
+ const providerPackage = modelProvider === "ollama" ? "ollama-ai-provider" : `@ai-sdk/${modelProvider}@^1`;
40
+ // SDK is required for both local (connects to agentmark serve) and cloud (connects to API)
41
+ const installArgs = [
42
+ "install",
43
+ "dotenv",
44
+ "@agentmark/prompt-core",
45
+ "@agentmark/vercel-ai-v4-adapter",
46
+ "@agentmark/sdk",
47
+ providerPackage,
48
+ "ai@^4",
49
+ ];
50
+ execFileSync("npm", installArgs, { stdio: "inherit", cwd: targetPath });
51
+ console.log("Packages installed successfully!");
52
+ }
53
+ catch (error) {
54
+ console.error("Error installing packages:", error);
55
+ throw new Error("Failed to install required packages. Please check your network connection and try again.");
56
+ }
57
+ };
58
+ //# sourceMappingURL=package-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-setup.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/package-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,aAAqB,GAAG,EAAE,EAAE;IAC3D,MAAM,eAAe,GAAG,GAAG,UAAU,eAAe,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,8DAA8D;IAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI;QACV,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI;YACtC,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnB,OAAO,CAAC,WAAW;QACjB,OAAO,CAAC,WAAW,IAAI,8CAA8C,CAAC;IAExE,OAAO,CAAC,OAAO,GAAG;QAChB,GAAG,OAAO,CAAC,OAAO;QAClB,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,sBAAsB;QAChC,YAAY,EAAE,0BAA0B;KACzC,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,aAAqB,EACrB,aAAqB,GAAG,EACxB,EAAE;IACF,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,+DAA+D;QAC/D,wFAAwF;QACxF,QAAQ,CAAC,sEAAsE,EAAE;YAC/E,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,UAAU;SAChB,CAAC,CAAC;QAEH,8BAA8B;QAC9B,sDAAsD;QACtD,4DAA4D;QAC5D,MAAM,eAAe,GAAG,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,aAAa,KAAK,CAAC;QAC1G,2FAA2F;QAC3F,MAAM,WAAW,GAAG;YAClB,SAAS;YACT,QAAQ;YACR,wBAAwB;YACxB,iCAAiC;YACjC,gBAAgB;YAChB,eAAe;YACf,OAAO;SACR,CAAC;QAEF,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getPartyPlannerPrompt: (model: string) => string;
2
+ //# sourceMappingURL=party-planner-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party-planner-prompt.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/party-planner-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAsCrD,CAAC"}
@@ -0,0 +1,40 @@
1
+ export const getPartyPlannerPrompt = (model) => {
2
+ return `---
3
+ name: party-planner
4
+ object_config:
5
+ model_name: ${model}
6
+ schema:
7
+ type: object
8
+ properties:
9
+ names:
10
+ type: array
11
+ description: "List of names of people attending the party."
12
+ items:
13
+ type: string
14
+ required:
15
+ - names
16
+ test_settings:
17
+ dataset: party.jsonl
18
+ evals:
19
+ - exact_match_json
20
+ props:
21
+ party_text: "We're having a party with Alice, Bob, and Carol."
22
+ input_schema:
23
+ type: object
24
+ properties:
25
+ party_text:
26
+ type: string
27
+ description: "A block of text describing the upcoming party and attendees."
28
+ required:
29
+ - party_text
30
+ ---
31
+
32
+ <System>
33
+ Extract the names of all people attending the party from the following text. Respond with a list of names only.
34
+ </System>
35
+
36
+ <User>
37
+ Text: {props.party_text}
38
+ </User>`;
39
+ };
40
+ //# sourceMappingURL=party-planner-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party-planner-prompt.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/party-planner-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC7D,OAAO;;;gBAGO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiCb,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getStoryTellerPrompt: () => string;
2
+ //# sourceMappingURL=story-teller-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-teller-prompt.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/story-teller-prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAO,MAqBvC,CAAC"}
@@ -0,0 +1,23 @@
1
+ export const getStoryTellerPrompt = () => {
2
+ return `---
3
+ name: story-teller
4
+ speech_config:
5
+ model_name: tts-1-hd
6
+ voice: "nova"
7
+ speed: 1.0
8
+ output_format: "mp3"
9
+ test_settings:
10
+ dataset: story.jsonl
11
+ props:
12
+ story: "Once upon a time, there was a cat who loved to play with a ball."
13
+ ---
14
+
15
+ <System>
16
+ You are a storyteller for children. Make sure your story is engaging and interesting.
17
+ </System>
18
+
19
+ <SpeechPrompt>
20
+ - {props.story}
21
+ </SpeechPrompt>`;
22
+ };
23
+ //# sourceMappingURL=story-teller-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-teller-prompt.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/story-teller-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAW,EAAE;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;gBAmBO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getTsConfigContent: () => object;
2
+ //# sourceMappingURL=tsconfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/tsconfig.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAAO,MAYrC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const getTsConfigContent = () => {
2
+ return {
3
+ "compilerOptions": {
4
+ "target": "ES2020",
5
+ "module": "NodeNext",
6
+ "moduleResolution": "NodeNext",
7
+ "esModuleInterop": true,
8
+ "forceConsistentCasingInFileNames": true,
9
+ "strict": true,
10
+ "skipLibCheck": true
11
+ }
12
+ };
13
+ };
14
+ //# sourceMappingURL=tsconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/tsconfig.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,OAAO;QACL,iBAAiB,EAAE;YACjB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,kBAAkB,EAAE,UAAU;YAC9B,iBAAiB,EAAE,IAAI;YACvB,kCAAkC,EAAE,IAAI;YACxC,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const getClientConfigContent: (options: {
2
+ provider: string;
3
+ languageModels: string[];
4
+ }) => string;
5
+ //# sourceMappingURL=user-client-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client-config.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/user-client-config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,GAAI,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,WAoF7F,CAAC"}
@@ -0,0 +1,85 @@
1
+ export const getClientConfigContent = (options) => {
2
+ const { provider, languageModels } = options;
3
+ const providerImport = provider === 'ollama'
4
+ ? "import { ollama } from 'ollama-ai-provider';"
5
+ : `import { ${provider} } from '@ai-sdk/${provider}';`;
6
+ const extraModelRegs = provider === 'openai'
7
+ ? `.registerModels(["dall-e-3"], (name: string) => ${provider}.image(name))
8
+ .registerModels(["tts-1-hd"], (name: string) => ${provider}.speech(name))`
9
+ : '';
10
+ return `// agentmark.config.ts
11
+ import path from 'node:path';
12
+ import dotenv from 'dotenv';
13
+ dotenv.config({ path: path.resolve(__dirname, '.env') });
14
+ import { EvalRegistry } from "@agentmark/prompt-core";
15
+ import { createAgentMarkClient, VercelAIModelRegistry, VercelAIToolRegistry } from "@agentmark/vercel-ai-v4-adapter";
16
+ import { AgentMarkSDK } from "@agentmark/sdk";
17
+ import AgentMarkTypes, { Tools } from './agentmark.types';
18
+ ${providerImport}
19
+
20
+ function createModelRegistry() {
21
+ const modelRegistry = new VercelAIModelRegistry()
22
+ .registerModels(${JSON.stringify(languageModels)}, (name: string) => ${provider}(name))
23
+ ${extraModelRegs};
24
+ return modelRegistry;
25
+ }
26
+
27
+ function createToolRegistry() {
28
+ const toolRegistry = new VercelAIToolRegistry<Tools>()
29
+ .register('search_knowledgebase', async ({ query }) => {
30
+ // Simulate search delay
31
+ await new Promise(resolve => setTimeout(resolve, 500));
32
+
33
+ // Return all three knowledge base articles
34
+ // The LLM will select the relevant one based on the query
35
+ return {
36
+ articles: [
37
+ { topic: 'shipping', content: 'Standard shipping takes 3–5 business days.' },
38
+ { topic: 'warranty', content: 'All products include a 1-year limited warranty.' },
39
+ { topic: 'returns', content: 'You can return items within 30 days of delivery.' }
40
+ ]
41
+ };
42
+ });
43
+ return toolRegistry;
44
+ }
45
+
46
+ function createEvalRegistry() {
47
+ const evalRegistry = new EvalRegistry()
48
+ .register('exact_match_json', ({ output, expectedOutput }) => {
49
+ if (!expectedOutput) {
50
+ return { score: 0, label: 'error', reason: 'No expected output provided', passed: false };
51
+ }
52
+ try {
53
+ const ok = JSON.stringify(output) === JSON.stringify(JSON.parse(expectedOutput));
54
+ return {
55
+ score: ok ? 1 : 0,
56
+ label: ok ? 'correct' : 'incorrect',
57
+ reason: ok ? 'Exact match' : 'Mismatch',
58
+ passed: ok
59
+ };
60
+ } catch (e) {
61
+ return { score: 0, label: 'error', reason: 'Failed to parse expected output as JSON', passed: false };
62
+ }
63
+ });
64
+ return evalRegistry;
65
+ }
66
+
67
+ function createClient(ctx?: { env?: Record<string,string|undefined> }) {
68
+ const env = (ctx?.env ?? process.env) as Record<string, string | undefined>;
69
+ // For local development, connect to the local agentmark serve instance (default: http://localhost:9418)
70
+ // For cloud deployment, set AGENTMARK_BASE_URL, AGENTMARK_API_KEY, and AGENTMARK_APP_ID
71
+ const baseUrl = env.AGENTMARK_BASE_URL || 'http://localhost:9418';
72
+ const apiKey = env.AGENTMARK_API_KEY || '';
73
+ const appId = env.AGENTMARK_APP_ID || '';
74
+ const sdk = new AgentMarkSDK({ apiKey, appId, baseUrl });
75
+ const fileLoader = sdk.getFileLoader();
76
+ const modelRegistry = createModelRegistry();
77
+ const toolRegistry = createToolRegistry();
78
+ const evalRegistry = createEvalRegistry();
79
+ return createAgentMarkClient<AgentMarkTypes>({ loader: fileLoader, modelRegistry, toolRegistry, evalRegistry });
80
+ }
81
+
82
+ export const client = createClient();
83
+ `;
84
+ };
85
+ //# sourceMappingURL=user-client-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-client-config.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/user-client-config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAuD,EAAE,EAAE;IAChG,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,cAAc,GAAG,QAAQ,KAAK,QAAQ;QAC1C,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,YAAY,QAAQ,oBAAoB,QAAQ,IAAI,CAAC;IACzD,MAAM,cAAc,GAAG,QAAQ,KAAK,QAAQ;QAC1C,CAAC,CAAC,mDAAmD,QAAQ;sDACX,QAAQ,gBAAgB;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;;;EAQP,cAAc;;;;sBAIM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,uBAAuB,QAAQ;MAC7E,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DnB,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const Providers: {
2
+ openai: {
3
+ label: string;
4
+ languageModels: string[];
5
+ imageModels: string[];
6
+ speechModels: string[];
7
+ };
8
+ };
9
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/utils/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;CAcrB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const Providers = {
2
+ openai: {
3
+ label: "OpenAI",
4
+ languageModels: [
5
+ "gpt-4o",
6
+ "gpt-4o-mini",
7
+ "gpt-4",
8
+ "gpt-5",
9
+ "gpt-4-turbo",
10
+ "gpt-3.5-turbo",
11
+ ],
12
+ imageModels: ["dall-e-3", "dall-e-2"],
13
+ speechModels: ["tts-1", "tts-1-hd"],
14
+ },
15
+ };
16
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/utils/providers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE;QACN,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE;YACd,QAAQ;YACR,aAAa;YACb,OAAO;YACP,OAAO;YACP,aAAa;YACb,eAAe;SAChB;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QACrC,YAAY,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;KACpC;CACF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "create-agentmark",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "description": "Create AgentMark projects with npm create agentmark",
6
+ "main": "dist/index.js",
7
+ "bin": "dist/index.js",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./templates": "./dist/utils/examples/templates/index.js"
11
+ },
12
+ "scripts": {
13
+ "build": "node -e \"require('fs').rmSync('./dist', { recursive: true, force: true })\" && tsc && node -e \"require('fs').chmodSync('dist/index.js', '755')\"",
14
+ "test": "vitest run",
15
+ "prepack": "node -e \"try { require('fs').chmodSync('dist/index.js', '755') } catch {}\"",
16
+ "prepare": "node -e \"try { require('fs').chmodSync('dist/index.js', '755') } catch {}\""
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "keywords": [
22
+ "agentmark",
23
+ "ai",
24
+ "agents",
25
+ "create-agentmark",
26
+ "scaffolding"
27
+ ],
28
+ "author": "",
29
+ "license": "MIT",
30
+ "dependencies": {
31
+ "@agentmark/shared-utils": "*",
32
+ "fs-extra": "^11.2.0",
33
+ "prompts": "^2.4.2"
34
+ },
35
+ "devDependencies": {
36
+ "@types/fs-extra": "^11.0.4",
37
+ "@types/node": "^20",
38
+ "@types/prompts": "^2.4.9",
39
+ "typescript": "^5",
40
+ "vitest": "^3.1.4"
41
+ }
42
+ }