create-agentmark 0.2.0 → 0.3.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.js +3 -9
- package/dist/index.js.map +1 -1
- package/dist/utils/examples/create-example-app.d.ts +1 -1
- package/dist/utils/examples/create-example-app.d.ts.map +1 -1
- package/dist/utils/examples/create-example-app.js +49 -20
- package/dist/utils/examples/create-example-app.js.map +1 -1
- package/dist/utils/examples/templates/adapters.d.ts +15 -0
- package/dist/utils/examples/templates/adapters.d.ts.map +1 -0
- package/dist/utils/examples/templates/adapters.js +28 -0
- package/dist/utils/examples/templates/adapters.js.map +1 -0
- package/dist/utils/examples/templates/env.d.ts +1 -1
- package/dist/utils/examples/templates/env.d.ts.map +1 -1
- package/dist/utils/examples/templates/env.js +3 -21
- package/dist/utils/examples/templates/env.js.map +1 -1
- package/dist/utils/examples/templates/index.d.ts +1 -0
- package/dist/utils/examples/templates/index.d.ts.map +1 -1
- package/dist/utils/examples/templates/index.js +1 -0
- package/dist/utils/examples/templates/index.js.map +1 -1
- package/dist/utils/examples/templates/package-setup.d.ts.map +1 -1
- package/dist/utils/examples/templates/package-setup.js +11 -13
- package/dist/utils/examples/templates/package-setup.js.map +1 -1
- package/dist/utils/examples/templates/user-client-config.d.ts.map +1 -1
- package/dist/utils/examples/templates/user-client-config.js +11 -89
- package/dist/utils/examples/templates/user-client-config.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from "fs-extra";
|
|
3
3
|
import prompts from "prompts";
|
|
4
|
-
import {
|
|
5
|
-
import { createExampleApp } from "./utils/examples/create-example-app.js";
|
|
4
|
+
import { createExampleApp } from "./utils/examples/create-example-app";
|
|
6
5
|
const main = async () => {
|
|
7
6
|
const config = {
|
|
8
7
|
$schema: "https://raw.githubusercontent.com/agentmark-ai/agentmark/refs/heads/main/packages/cli/agentmark.schema.json",
|
|
@@ -20,12 +19,7 @@ const main = async () => {
|
|
|
20
19
|
// Create the target folder
|
|
21
20
|
const targetPath = `./${folderName}`;
|
|
22
21
|
fs.ensureDirSync(targetPath);
|
|
23
|
-
|
|
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];
|
|
22
|
+
config.builtInModels = ['gpt-4o'];
|
|
29
23
|
// Prompt only for the OpenAI API key
|
|
30
24
|
let apiKey = "";
|
|
31
25
|
const { providedApiKey } = await prompts({
|
|
@@ -56,7 +50,7 @@ const main = async () => {
|
|
|
56
50
|
{ title: "Skip", value: "skip" },
|
|
57
51
|
],
|
|
58
52
|
});
|
|
59
|
-
await createExampleApp(
|
|
53
|
+
await createExampleApp(client, targetPath, apiKey, adapter);
|
|
60
54
|
// Always generate agentmark.json so config is consistent
|
|
61
55
|
fs.writeJsonSync(`${targetPath}/agentmark.json`, config, { spaces: 2 });
|
|
62
56
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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,
|
|
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,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,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,MAAM,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC;IAElC,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,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;QAChC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,sCAAsC;QAC/C,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC7C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC;KACF,CAAC,CAAC;IAEH,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,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;YAC9C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACpC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;YACrC,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,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5D,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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const createExampleApp: (
|
|
1
|
+
export declare const createExampleApp: (client: string, targetPath?: string, apiKey?: string, adapter?: string) => Promise<void>;
|
|
2
2
|
//# sourceMappingURL=create-example-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-example-app.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/create-example-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-example-app.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/create-example-app.ts"],"names":[],"mappings":"AA0HA,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,MAAM,EACd,aAAY,MAAY,EACxB,SAAQ,MAAW,EACnB,UAAS,MAAiB,kBA0K3B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
|
+
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
2
3
|
import * as path from "path";
|
|
3
4
|
import { Providers } from "../providers.js";
|
|
4
|
-
import { setupPackageJson, installDependencies, getIndexFileContent, getTsConfigContent, getEnvFileContent, createExamplePrompts, getClientConfigContent, } from "./templates/index.js";
|
|
5
|
+
import { setupPackageJson, installDependencies, getIndexFileContent, getTsConfigContent, getEnvFileContent, createExamplePrompts, getClientConfigContent, getAdapterConfig, } from "./templates/index.js";
|
|
5
6
|
import { fetchPromptsFrontmatter, generateTypeDefinitions } from "@agentmark/shared-utils";
|
|
6
7
|
const setupMCPServer = (client, targetPath) => {
|
|
7
8
|
if (client === "skip") {
|
|
@@ -98,8 +99,10 @@ const setupMCPServer = (client, targetPath) => {
|
|
|
98
99
|
return;
|
|
99
100
|
}
|
|
100
101
|
};
|
|
101
|
-
export const createExampleApp = async (
|
|
102
|
+
export const createExampleApp = async (client, targetPath = ".", apiKey = "", adapter = "ai-sdk") => {
|
|
102
103
|
try {
|
|
104
|
+
const modelProvider = 'openai';
|
|
105
|
+
const model = 'gpt-4o';
|
|
103
106
|
console.log("Creating Agent Mark example app...");
|
|
104
107
|
// Keep ./ prefix for display in messages
|
|
105
108
|
const folderName = targetPath;
|
|
@@ -143,34 +146,43 @@ export const createExampleApp = async (modelProvider, model, client, targetPath
|
|
|
143
146
|
console.log("Creating development server entry point...");
|
|
144
147
|
const agentmarkInternalDir = path.join(targetPath, '.agentmark');
|
|
145
148
|
fs.ensureDirSync(agentmarkInternalDir);
|
|
146
|
-
//
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
const devEntryContent = `// Auto-generated
|
|
149
|
+
// Get adapter-specific values from config
|
|
150
|
+
const adapterConfig = getAdapterConfig(adapter);
|
|
151
|
+
const { webhookHandler } = adapterConfig.classes;
|
|
152
|
+
const devEntryContent = `// Auto-generated webhook server entry point
|
|
150
153
|
// To customize, create a dev-server.ts file in your project root
|
|
151
154
|
|
|
152
|
-
import {
|
|
153
|
-
import { ${
|
|
155
|
+
import { createWebhookServer } from '@agentmark/cli/runner-server';
|
|
156
|
+
import { ${webhookHandler} } from '${adapterConfig.package}/runner';
|
|
157
|
+
import { AgentMarkSDK } from '@agentmark/sdk';
|
|
154
158
|
import path from 'path';
|
|
155
159
|
|
|
156
160
|
async function main() {
|
|
157
161
|
const { client } = await import('../agentmark.client.js');
|
|
158
162
|
|
|
159
163
|
const args = process.argv.slice(2);
|
|
160
|
-
const
|
|
161
|
-
const
|
|
164
|
+
const webhookPortArg = args.find(arg => arg.startsWith('--webhook-port='));
|
|
165
|
+
const fileServerPortArg = args.find(arg => arg.startsWith('--file-server-port='));
|
|
162
166
|
|
|
163
|
-
const
|
|
164
|
-
const
|
|
167
|
+
const webhookPort = webhookPortArg ? parseInt(webhookPortArg.split('=')[1]) : 9417;
|
|
168
|
+
const fileServerPort = fileServerPortArg ? parseInt(fileServerPortArg.split('=')[1]) : 9418;
|
|
165
169
|
|
|
166
|
-
|
|
167
|
-
const
|
|
170
|
+
// Initialize OpenTelemetry tracing to export traces to the API server
|
|
171
|
+
const fileServerUrl = \`http://localhost:\${fileServerPort}\`;
|
|
172
|
+
const sdk = new AgentMarkSDK({
|
|
173
|
+
apiKey: '',
|
|
174
|
+
appId: '',
|
|
175
|
+
baseUrl: fileServerUrl,
|
|
176
|
+
});
|
|
177
|
+
sdk.initTracing({ disableBatch: true });
|
|
178
|
+
|
|
179
|
+
const handler = new ${webhookHandler}(client as any);
|
|
168
180
|
const templatesDirectory = path.join(process.cwd(), 'agentmark');
|
|
169
181
|
|
|
170
|
-
await
|
|
171
|
-
port:
|
|
172
|
-
|
|
173
|
-
|
|
182
|
+
await createWebhookServer({
|
|
183
|
+
port: webhookPort,
|
|
184
|
+
handler,
|
|
185
|
+
fileServerUrl,
|
|
174
186
|
templatesDirectory
|
|
175
187
|
});
|
|
176
188
|
}
|
|
@@ -181,6 +193,22 @@ main().catch((err) => {
|
|
|
181
193
|
});
|
|
182
194
|
`;
|
|
183
195
|
fs.writeFileSync(path.join(agentmarkInternalDir, 'dev-entry.ts'), devEntryContent);
|
|
196
|
+
// Create .env file with webhook URL configuration
|
|
197
|
+
// Always use Express runner server (port 9417) for local development
|
|
198
|
+
// regardless of deployment platform
|
|
199
|
+
const webhookUrl = 'http://localhost:9417';
|
|
200
|
+
const envPath = path.join(targetPath, '.env');
|
|
201
|
+
let envContent = '';
|
|
202
|
+
if (existsSync(envPath)) {
|
|
203
|
+
envContent = readFileSync(envPath, 'utf8');
|
|
204
|
+
if (!envContent.includes('AGENTMARK_WEBHOOK_URL')) {
|
|
205
|
+
envContent += `\n# AgentMark runner server URL\nAGENTMARK_WEBHOOK_URL=${webhookUrl}\n`;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
envContent = `# AgentMark runner server URL\nAGENTMARK_WEBHOOK_URL=${webhookUrl}\n\n# Add your API keys here\n# OPENAI_API_KEY=your-key-here\n`;
|
|
210
|
+
}
|
|
211
|
+
writeFileSync(envPath, envContent, 'utf8');
|
|
184
212
|
// Success message
|
|
185
213
|
console.log("\n✅ Agentmark initialization completed successfully!");
|
|
186
214
|
console.log(`
|
|
@@ -195,7 +223,8 @@ main().catch((err) => {
|
|
|
195
223
|
console.log('\n' + '═'.repeat(70));
|
|
196
224
|
console.log('Next Steps');
|
|
197
225
|
console.log('═'.repeat(70));
|
|
198
|
-
|
|
226
|
+
// Simplified instructions - always just "npm run dev"
|
|
227
|
+
console.log('\n Get Started:');
|
|
199
228
|
if (folderName !== "." && folderName !== "./") {
|
|
200
229
|
console.log(` $ cd ${folderName}`);
|
|
201
230
|
}
|
|
@@ -203,7 +232,7 @@ main().catch((err) => {
|
|
|
203
232
|
console.log('─'.repeat(70));
|
|
204
233
|
console.log('Resources');
|
|
205
234
|
console.log('─'.repeat(70));
|
|
206
|
-
console.log('
|
|
235
|
+
console.log(' Documentation: https://docs.agentmark.co');
|
|
207
236
|
console.log('═'.repeat(70) + '\n');
|
|
208
237
|
}
|
|
209
238
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-example-app.js","sourceRoot":"","sources":["../../../src/utils/examples/create-example-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
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,15 @@
|
|
|
1
|
+
export 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
|
+
export declare const ADAPTERS: Record<string, AdapterConfig>;
|
|
14
|
+
export declare function getAdapterConfig(adapter: string): AdapterConfig;
|
|
15
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/adapters.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAmBlD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAM/D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const ADAPTERS = {
|
|
2
|
+
'ai-sdk': {
|
|
3
|
+
package: '@agentmark/ai-sdk-v5-adapter',
|
|
4
|
+
dependencies: ['ai@^5'],
|
|
5
|
+
classes: {
|
|
6
|
+
modelRegistry: 'VercelAIModelRegistry',
|
|
7
|
+
toolRegistry: 'VercelAIToolRegistry',
|
|
8
|
+
webhookHandler: 'VercelAdapterWebhookHandler',
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
'mastra': {
|
|
12
|
+
package: '@agentmark/mastra-v0-adapter',
|
|
13
|
+
dependencies: ['@mastra/core@<0.20.0', '@mastra/mcp@<0.13.4'],
|
|
14
|
+
classes: {
|
|
15
|
+
modelRegistry: 'MastraModelRegistry',
|
|
16
|
+
toolRegistry: 'MastraToolRegistry',
|
|
17
|
+
webhookHandler: 'MastraAdapterWebhookHandler',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export function getAdapterConfig(adapter) {
|
|
22
|
+
const config = ADAPTERS[adapter];
|
|
23
|
+
if (!config) {
|
|
24
|
+
throw new Error(`Unknown adapter: ${adapter}. Available adapters: ${Object.keys(ADAPTERS).join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
return config;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/adapters.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,QAAQ,GAAkC;IACrD,QAAQ,EAAE;QACR,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,OAAO,EAAE;YACP,aAAa,EAAE,uBAAuB;YACtC,YAAY,EAAE,sBAAsB;YACpC,cAAc,EAAE,6BAA6B;SAC9C;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;QAC7D,OAAO,EAAE;YACP,aAAa,EAAE,qBAAqB;YACpC,YAAY,EAAE,oBAAoB;YAClC,cAAc,EAAE,6BAA6B;SAC9C;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,yBAAyB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const getEnvFileContent: (
|
|
1
|
+
export declare const getEnvFileContent: (_modelProvider: string, apiKey?: string) => string;
|
|
2
2
|
//# sourceMappingURL=env.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,GAC5B,gBAAgB,MAAM,EACtB,SAAQ,MAAW,KAClB,MAWF,CAAC"}
|
|
@@ -1,30 +1,12 @@
|
|
|
1
|
-
|
|
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`;
|
|
1
|
+
export const getEnvFileContent = (_modelProvider, apiKey = '') => {
|
|
12
2
|
const apiKeyValue = apiKey || 'your_api_key_here';
|
|
13
|
-
|
|
14
|
-
const needsApiKey = modelProvider !== 'ollama';
|
|
15
|
-
let content = `# Cloud deployment: Set these environment variables
|
|
3
|
+
return `# Cloud deployment: Set these environment variables
|
|
16
4
|
# AGENTMARK_BASE_URL=https://api.agentmark.co
|
|
17
5
|
# AGENTMARK_API_KEY=your_agentmark_api_key
|
|
18
6
|
# AGENTMARK_APP_ID=your_agentmark_app_id
|
|
19
7
|
# Learn more: https://docs.agentmark.co/platform/getting_started/quickstart
|
|
20
8
|
|
|
9
|
+
OPENAI_API_KEY=${apiKeyValue}
|
|
21
10
|
`;
|
|
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
11
|
};
|
|
30
12
|
//# sourceMappingURL=env.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,cAAsB,EACtB,SAAiB,EAAE,EACX,EAAE;IACV,MAAM,WAAW,GAAG,MAAM,IAAI,mBAAmB,CAAC;IAElD,OAAO;;;;;;iBAMQ,WAAW;CAC3B,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,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"}
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-setup.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/package-setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-setup.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/package-setup.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,aAAY,MAAY,SA4BxD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,MAAM,EACrB,aAAY,MAAY,EACxB,UAAS,MAAiB,SAuC3B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
2
|
import { execSync, execFileSync } from "child_process";
|
|
3
|
+
import { getAdapterConfig } from "./adapters.js";
|
|
3
4
|
export const setupPackageJson = (targetPath = ".") => {
|
|
4
5
|
const packageJsonPath = `${targetPath}/package.json`;
|
|
5
6
|
if (!fs.existsSync(packageJsonPath)) {
|
|
@@ -14,10 +15,12 @@ export const setupPackageJson = (targetPath = ".") => {
|
|
|
14
15
|
: pkgJson.name;
|
|
15
16
|
pkgJson.description =
|
|
16
17
|
pkgJson.description || "A simple Node.js app using the Agentmark SDK";
|
|
18
|
+
// All platforms use "agentmark dev" which runs their respective dev-entry.ts
|
|
19
|
+
const devScript = "agentmark dev";
|
|
17
20
|
pkgJson.scripts = {
|
|
18
21
|
...pkgJson.scripts,
|
|
19
22
|
"demo": "npx tsx index.ts",
|
|
20
|
-
"dev":
|
|
23
|
+
"dev": devScript,
|
|
21
24
|
"prompt": "agentmark run-prompt",
|
|
22
25
|
"experiment": "agentmark run-experiment",
|
|
23
26
|
};
|
|
@@ -26,10 +29,12 @@ export const setupPackageJson = (targetPath = ".") => {
|
|
|
26
29
|
export const installDependencies = (modelProvider, targetPath = ".", adapter = "ai-sdk") => {
|
|
27
30
|
console.log("Installing required packages...");
|
|
28
31
|
console.log("This might take a moment...");
|
|
32
|
+
const adapterConfig = getAdapterConfig(adapter);
|
|
29
33
|
try {
|
|
30
34
|
// Install TypeScript, ts-node, CLI, and other dev dependencies
|
|
31
35
|
// CLI needs to be a devDep so dev-entry.ts can import from @agentmark/cli/runner-server
|
|
32
|
-
|
|
36
|
+
const devDepsCmd = "npm install --save-dev typescript ts-node @types/node @agentmark/cli --legacy-peer-deps";
|
|
37
|
+
execSync(devDepsCmd, {
|
|
33
38
|
stdio: "inherit",
|
|
34
39
|
cwd: targetPath,
|
|
35
40
|
});
|
|
@@ -40,18 +45,11 @@ export const installDependencies = (modelProvider, targetPath = ".", adapter = "
|
|
|
40
45
|
"dotenv",
|
|
41
46
|
"@agentmark/prompt-core",
|
|
42
47
|
"@agentmark/sdk",
|
|
48
|
+
adapterConfig.package,
|
|
49
|
+
`@ai-sdk/${modelProvider}@^2`,
|
|
50
|
+
...adapterConfig.dependencies,
|
|
51
|
+
"--legacy-peer-deps",
|
|
43
52
|
];
|
|
44
|
-
// Install adapter-specific packages
|
|
45
|
-
if (adapter === "mastra") {
|
|
46
|
-
const providerPackage = `@ai-sdk/${modelProvider}`;
|
|
47
|
-
installArgs.push("@agentmark/mastra-v0-adapter", "@mastra/core@<0.20.0", "@mastra/mcp@<0.13.4", providerPackage);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// Use different package names for different providers
|
|
51
|
-
// Pin required major versions: ai@v5, @ai-sdk/<provider>@v2
|
|
52
|
-
const providerPackage = `@ai-sdk/${modelProvider}@^2`;
|
|
53
|
-
installArgs.push("@agentmark/ai-sdk-v5-adapter", providerPackage, "ai@^5");
|
|
54
|
-
}
|
|
55
53
|
execFileSync("npm", installArgs, { stdio: "inherit", cwd: targetPath });
|
|
56
54
|
console.log("Packages installed successfully!");
|
|
57
55
|
}
|
|
@@ -1 +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;
|
|
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;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,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,6EAA6E;IAC7E,MAAM,SAAS,GAAG,eAAe,CAAC;IAElC,OAAO,CAAC,OAAO,GAAG;QAChB,GAAG,OAAO,CAAC,OAAO;QAClB,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,SAAS;QAChB,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,UAAkB,QAAQ,EAC1B,EAAE;IACF,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC;QACH,+DAA+D;QAC/D,wFAAwF;QACxF,MAAM,UAAU,GAAG,yFAAyF,CAAC;QAE7G,QAAQ,CAAC,UAAU,EAAE;YACnB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,UAAU;SAChB,CAAC,CAAC;QAEH,8BAA8B;QAC9B,2FAA2F;QAC3F,MAAM,WAAW,GAAG;YAClB,SAAS;YACT,QAAQ;YACR,wBAAwB;YACxB,gBAAgB;YAChB,aAAa,CAAC,OAAO;YACrB,WAAW,aAAa,KAAK;YAC7B,GAAG,aAAa,CAAC,YAAY;YAC7B,oBAAoB;SACrB,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-client-config.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/user-client-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-client-config.d.ts","sourceRoot":"","sources":["../../../../src/utils/examples/templates/user-client-config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,GAAI,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,WAqF9G,CAAC"}
|
|
@@ -1,108 +1,31 @@
|
|
|
1
|
+
import { getAdapterConfig } from "./adapters.js";
|
|
1
2
|
export const getClientConfigContent = (options) => {
|
|
2
3
|
const { provider, languageModels, adapter } = options;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import path from 'node:path';
|
|
9
|
-
import dotenv from 'dotenv';
|
|
10
|
-
dotenv.config({ path: path.resolve(__dirname, '.env') });
|
|
11
|
-
import { createAgentMarkClient, MastraModelRegistry, MastraToolRegistry, EvalRegistry } from "@agentmark/mastra-v0-adapter";
|
|
12
|
-
import { AgentMarkSDK } from "@agentmark/sdk";
|
|
13
|
-
import AgentMarkTypes, { Tools } from './agentmark.types';
|
|
14
|
-
${providerImport}
|
|
15
|
-
|
|
16
|
-
function createModelRegistry() {
|
|
17
|
-
const modelRegistry = new MastraModelRegistry();
|
|
18
|
-
modelRegistry.registerModels(${JSON.stringify(languageModels)}, (name: string) => ${provider}(name));
|
|
19
|
-
return modelRegistry;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function createToolRegistry() {
|
|
23
|
-
const toolRegistry = new MastraToolRegistry<Tools>()
|
|
24
|
-
.register('search_knowledgebase', async ({ query }) => {
|
|
25
|
-
// Simulate search delay
|
|
26
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
27
|
-
|
|
28
|
-
// Return all three knowledge base articles
|
|
29
|
-
// The LLM will select the relevant one based on the query
|
|
30
|
-
return {
|
|
31
|
-
articles: [
|
|
32
|
-
{ topic: 'shipping', content: 'Standard shipping takes 3–5 business days.' },
|
|
33
|
-
{ topic: 'warranty', content: 'All products include a 1-year limited warranty.' },
|
|
34
|
-
{ topic: 'returns', content: 'You can return items within 30 days of delivery.' }
|
|
35
|
-
]
|
|
36
|
-
};
|
|
37
|
-
});
|
|
38
|
-
return toolRegistry;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function createEvalRegistry() {
|
|
42
|
-
const evalRegistry = new EvalRegistry()
|
|
43
|
-
.register('exact_match_json', ({ output, expectedOutput }) => {
|
|
44
|
-
if (!expectedOutput) {
|
|
45
|
-
return { score: 0, label: 'error', reason: 'No expected output provided', passed: false };
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
const ok = JSON.stringify(output) === JSON.stringify(JSON.parse(expectedOutput));
|
|
49
|
-
return {
|
|
50
|
-
score: ok ? 1 : 0,
|
|
51
|
-
label: ok ? 'correct' : 'incorrect',
|
|
52
|
-
reason: ok ? 'Exact match' : 'Mismatch',
|
|
53
|
-
passed: ok
|
|
54
|
-
};
|
|
55
|
-
} catch (e) {
|
|
56
|
-
return { score: 0, label: 'error', reason: 'Failed to parse expected output as JSON', passed: false };
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
return evalRegistry;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function createClient(ctx?: { env?: Record<string,string|undefined> }) {
|
|
63
|
-
const env = (ctx?.env ?? process.env) as Record<string, string | undefined>;
|
|
64
|
-
// For local development, connect to the local agentmark serve instance (default: http://localhost:9418)
|
|
65
|
-
// For cloud deployment, set AGENTMARK_BASE_URL, AGENTMARK_API_KEY, and AGENTMARK_APP_ID
|
|
66
|
-
const baseUrl = env.AGENTMARK_BASE_URL || 'http://localhost:9418';
|
|
67
|
-
const apiKey = env.AGENTMARK_API_KEY || '';
|
|
68
|
-
const appId = env.AGENTMARK_APP_ID || '';
|
|
69
|
-
const sdk = new AgentMarkSDK({ apiKey, appId, baseUrl });
|
|
70
|
-
const fileLoader = sdk.getFileLoader();
|
|
71
|
-
const modelRegistry = createModelRegistry();
|
|
72
|
-
const toolRegistry = createToolRegistry();
|
|
73
|
-
const evalRegistry = createEvalRegistry();
|
|
74
|
-
return createAgentMarkClient<AgentMarkTypes, typeof toolRegistry>({ loader: fileLoader, modelRegistry, toolRegistry, evalRegistry });
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export const client = createClient();
|
|
78
|
-
`;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
const providerImport = provider === 'ollama'
|
|
82
|
-
? "import { ollama } from 'ollama-ai-provider';"
|
|
83
|
-
: `import { ${provider} } from '@ai-sdk/${provider}';`;
|
|
84
|
-
const extraModelRegs = provider === 'openai'
|
|
85
|
-
? `.registerModels(["dall-e-3"], (name: string) => ${provider}.image(name))
|
|
4
|
+
const adapterConfig = getAdapterConfig(adapter);
|
|
5
|
+
const { modelRegistry, toolRegistry } = adapterConfig.classes;
|
|
6
|
+
const providerImport = `import { ${provider} } from '@ai-sdk/${provider}';`;
|
|
7
|
+
const extraModelRegs = provider === 'openai'
|
|
8
|
+
? `.registerModels(["dall-e-3"], (name: string) => ${provider}.image(name))
|
|
86
9
|
.registerModels(["tts-1-hd"], (name: string) => ${provider}.speech(name))`
|
|
87
|
-
|
|
88
|
-
|
|
10
|
+
: '';
|
|
11
|
+
return `// agentmark.client.ts
|
|
89
12
|
import path from 'node:path';
|
|
90
13
|
import dotenv from 'dotenv';
|
|
91
14
|
dotenv.config({ path: path.resolve(__dirname, '.env') });
|
|
92
|
-
import { createAgentMarkClient,
|
|
15
|
+
import { createAgentMarkClient, ${modelRegistry}, ${toolRegistry}, EvalRegistry } from "${adapterConfig.package}";
|
|
93
16
|
import { AgentMarkSDK } from "@agentmark/sdk";
|
|
94
17
|
import AgentMarkTypes, { Tools } from './agentmark.types';
|
|
95
18
|
${providerImport}
|
|
96
19
|
|
|
97
20
|
function createModelRegistry() {
|
|
98
|
-
const modelRegistry = new
|
|
21
|
+
const modelRegistry = new ${modelRegistry}()
|
|
99
22
|
.registerModels(${JSON.stringify(languageModels)}, (name: string) => ${provider}(name))
|
|
100
23
|
${extraModelRegs};
|
|
101
24
|
return modelRegistry;
|
|
102
25
|
}
|
|
103
26
|
|
|
104
27
|
function createToolRegistry() {
|
|
105
|
-
const toolRegistry = new
|
|
28
|
+
const toolRegistry = new ${toolRegistry}<Tools>()
|
|
106
29
|
.register('search_knowledgebase', async ({ query }) => {
|
|
107
30
|
// Simulate search delay
|
|
108
31
|
await new Promise(resolve => setTimeout(resolve, 500));
|
|
@@ -158,6 +81,5 @@ function createClient(ctx?: { env?: Record<string,string|undefined> }) {
|
|
|
158
81
|
|
|
159
82
|
export const client = createClient();
|
|
160
83
|
`;
|
|
161
|
-
}
|
|
162
84
|
};
|
|
163
85
|
//# sourceMappingURL=user-client-config.js.map
|
|
@@ -1 +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,OAAwE,EAAE,EAAE;IACjH,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"user-client-config.js","sourceRoot":"","sources":["../../../../src/utils/examples/templates/user-client-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAwE,EAAE,EAAE;IACjH,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;IAE9D,MAAM,cAAc,GAAG,YAAY,QAAQ,oBAAoB,QAAQ,IAAI,CAAC;IAE5E,MAAM,cAAc,GAAG,QAAQ,KAAK,QAAQ;QAC1C,CAAC,CAAC,mDAAmD,QAAQ;sDACX,QAAQ,gBAAgB;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;kCAIyB,aAAa,KAAK,YAAY,0BAA0B,aAAa,CAAC,OAAO;;;EAG7G,cAAc;;;8BAGc,aAAa;sBACrB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,uBAAuB,QAAQ;MAC7E,cAAc;;;;;6BAKS,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDxC,CAAC;AACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-agentmark",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Create AgentMark projects with npm create agentmark",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "node -e \"require('fs').rmSync('./dist', { recursive: true, force: true })\" && tsc && node -e \"require('fs').chmodSync('dist/index.js', '755')\"",
|
|
14
14
|
"test": "vitest run",
|
|
15
|
+
"lint": "eslint .",
|
|
15
16
|
"prepack": "node -e \"try { require('fs').chmodSync('dist/index.js', '755') } catch {}\"",
|
|
16
17
|
"prepare": "node -e \"try { require('fs').chmodSync('dist/index.js', '755') } catch {}\""
|
|
17
18
|
},
|