@agentmark-ai/cli 0.1.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.
Files changed (180) hide show
  1. package/README.md +1 -0
  2. package/dist/.next/BUILD_ID +1 -0
  3. package/dist/.next/app-build-manifest.json +66 -0
  4. package/dist/.next/app-path-routes-manifest.json +7 -0
  5. package/dist/.next/build-manifest.json +33 -0
  6. package/dist/.next/cache/.previewinfo +1 -0
  7. package/dist/.next/cache/.rscinfo +1 -0
  8. package/dist/.next/cache/.tsbuildinfo +1 -0
  9. package/dist/.next/cache/config.json +7 -0
  10. package/dist/.next/cache/webpack/client-production/0.pack +0 -0
  11. package/dist/.next/cache/webpack/client-production/index.pack +0 -0
  12. package/dist/.next/cache/webpack/edge-server-production/0.pack +0 -0
  13. package/dist/.next/cache/webpack/edge-server-production/index.pack +0 -0
  14. package/dist/.next/cache/webpack/server-production/0.pack +0 -0
  15. package/dist/.next/cache/webpack/server-production/index.pack +0 -0
  16. package/dist/.next/diagnostics/build-diagnostics.json +6 -0
  17. package/dist/.next/diagnostics/framework.json +1 -0
  18. package/dist/.next/export-marker.json +6 -0
  19. package/dist/.next/images-manifest.json +57 -0
  20. package/dist/.next/next-minimal-server.js.nft.json +1 -0
  21. package/dist/.next/next-server.js.nft.json +1 -0
  22. package/dist/.next/package.json +1 -0
  23. package/dist/.next/prerender-manifest.json +133 -0
  24. package/dist/.next/react-loadable-manifest.json +1 -0
  25. package/dist/.next/required-server-files.json +325 -0
  26. package/dist/.next/routes-manifest.json +77 -0
  27. package/dist/.next/server/app/_not-found/page.js +2 -0
  28. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -0
  29. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  30. package/dist/.next/server/app/_not-found.html +1 -0
  31. package/dist/.next/server/app/_not-found.meta +8 -0
  32. package/dist/.next/server/app/_not-found.rsc +19 -0
  33. package/dist/.next/server/app/index.html +1 -0
  34. package/dist/.next/server/app/index.meta +7 -0
  35. package/dist/.next/server/app/index.rsc +20 -0
  36. package/dist/.next/server/app/page.js +2 -0
  37. package/dist/.next/server/app/page.js.nft.json +1 -0
  38. package/dist/.next/server/app/page_client-reference-manifest.js +1 -0
  39. package/dist/.next/server/app/requests/page.js +2 -0
  40. package/dist/.next/server/app/requests/page.js.nft.json +1 -0
  41. package/dist/.next/server/app/requests/page_client-reference-manifest.js +1 -0
  42. package/dist/.next/server/app/requests.html +1 -0
  43. package/dist/.next/server/app/requests.meta +7 -0
  44. package/dist/.next/server/app/requests.rsc +25 -0
  45. package/dist/.next/server/app/sessions/page.js +2 -0
  46. package/dist/.next/server/app/sessions/page.js.nft.json +1 -0
  47. package/dist/.next/server/app/sessions/page_client-reference-manifest.js +1 -0
  48. package/dist/.next/server/app/sessions.html +1 -0
  49. package/dist/.next/server/app/sessions.meta +7 -0
  50. package/dist/.next/server/app/sessions.rsc +25 -0
  51. package/dist/.next/server/app/traces/page.js +2 -0
  52. package/dist/.next/server/app/traces/page.js.nft.json +1 -0
  53. package/dist/.next/server/app/traces/page_client-reference-manifest.js +1 -0
  54. package/dist/.next/server/app/traces.html +1 -0
  55. package/dist/.next/server/app/traces.meta +7 -0
  56. package/dist/.next/server/app/traces.rsc +25 -0
  57. package/dist/.next/server/app-paths-manifest.json +7 -0
  58. package/dist/.next/server/chunks/18.js +198 -0
  59. package/dist/.next/server/chunks/383.js +6 -0
  60. package/dist/.next/server/chunks/478.js +22 -0
  61. package/dist/.next/server/chunks/547.js +1 -0
  62. package/dist/.next/server/chunks/84.js +138 -0
  63. package/dist/.next/server/functions-config-manifest.json +4 -0
  64. package/dist/.next/server/interception-route-rewrite-manifest.js +1 -0
  65. package/dist/.next/server/middleware-build-manifest.js +1 -0
  66. package/dist/.next/server/middleware-manifest.json +6 -0
  67. package/dist/.next/server/middleware-react-loadable-manifest.js +1 -0
  68. package/dist/.next/server/next-font-manifest.js +1 -0
  69. package/dist/.next/server/next-font-manifest.json +1 -0
  70. package/dist/.next/server/pages/404.html +1 -0
  71. package/dist/.next/server/pages/500.html +1 -0
  72. package/dist/.next/server/pages/_app.js +1 -0
  73. package/dist/.next/server/pages/_app.js.nft.json +1 -0
  74. package/dist/.next/server/pages/_document.js +1 -0
  75. package/dist/.next/server/pages/_document.js.nft.json +1 -0
  76. package/dist/.next/server/pages/_error.js +19 -0
  77. package/dist/.next/server/pages/_error.js.nft.json +1 -0
  78. package/dist/.next/server/pages-manifest.json +6 -0
  79. package/dist/.next/server/server-reference-manifest.js +1 -0
  80. package/dist/.next/server/server-reference-manifest.json +1 -0
  81. package/dist/.next/server/webpack-runtime.js +1 -0
  82. package/dist/.next/static/WXGM4V1PBw_hLKICZoZaB/_buildManifest.js +1 -0
  83. package/dist/.next/static/WXGM4V1PBw_hLKICZoZaB/_ssgManifest.js +1 -0
  84. package/dist/.next/static/chunks/18-57c2d8d3aff89bcb.js +1 -0
  85. package/dist/.next/static/chunks/248-9028c24b6529c0c7.js +77 -0
  86. package/dist/.next/static/chunks/41-1291c1f5f295280d.js +1 -0
  87. package/dist/.next/static/chunks/602-7e76e1ee986e97d5.js +28 -0
  88. package/dist/.next/static/chunks/6b3bb038-67c653ff0a93a5bd.js +1 -0
  89. package/dist/.next/static/chunks/87c73c54-09e1ba5c70e60a51.js +1 -0
  90. package/dist/.next/static/chunks/902-50df3a419e9a9cef.js +1 -0
  91. package/dist/.next/static/chunks/app/_not-found/page-6711055aaf38bfb8.js +1 -0
  92. package/dist/.next/static/chunks/app/layout-eaddb6da201ab019.js +1 -0
  93. package/dist/.next/static/chunks/app/page-93d2401dc395548b.js +1 -0
  94. package/dist/.next/static/chunks/app/requests/page-20818b6519923653.js +1 -0
  95. package/dist/.next/static/chunks/app/sessions/page-cff6cd4b8819d0e5.js +1 -0
  96. package/dist/.next/static/chunks/app/traces/page-e556a466332fc75b.js +1 -0
  97. package/dist/.next/static/chunks/baeaa4ff-0a317ff4d32584cd.js +1 -0
  98. package/dist/.next/static/chunks/framework-3c3dfe0642f415ba.js +1 -0
  99. package/dist/.next/static/chunks/main-314a36b6249f35e5.js +1 -0
  100. package/dist/.next/static/chunks/main-app-0b5725cb98f081b4.js +1 -0
  101. package/dist/.next/static/chunks/pages/_app-d6f6b3bbc3d81ee1.js +1 -0
  102. package/dist/.next/static/chunks/pages/_error-75a96cf1997cc3b9.js +1 -0
  103. package/dist/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  104. package/dist/.next/static/chunks/webpack-f10b0ea54196b48e.js +1 -0
  105. package/dist/.next/static/css/a00826fc162bd22d.css +31 -0
  106. package/dist/.next/trace +51 -0
  107. package/dist/.next/types/app/layout.ts +84 -0
  108. package/dist/.next/types/app/page.ts +84 -0
  109. package/dist/.next/types/app/requests/page.ts +84 -0
  110. package/dist/.next/types/app/sessions/page.ts +84 -0
  111. package/dist/.next/types/app/traces/page.ts +84 -0
  112. package/dist/.next/types/cache-life.d.ts +141 -0
  113. package/dist/.next/types/package.json +1 -0
  114. package/dist/.next/types/routes.d.ts +60 -0
  115. package/dist/.next/types/validator.ts +88 -0
  116. package/dist/api-server.d.ts +1 -0
  117. package/dist/api-server.js +545 -0
  118. package/dist/api-server.js.map +1 -0
  119. package/dist/commands/build.d.ts +9 -0
  120. package/dist/commands/build.js +206 -0
  121. package/dist/commands/build.js.map +1 -0
  122. package/dist/commands/dev.d.ts +7 -0
  123. package/dist/commands/dev.js +406 -0
  124. package/dist/commands/dev.js.map +1 -0
  125. package/dist/commands/generate-types.d.ts +7 -0
  126. package/dist/commands/generate-types.js +31 -0
  127. package/dist/commands/generate-types.js.map +1 -0
  128. package/dist/commands/pull-models.d.ts +2 -0
  129. package/dist/commands/pull-models.js +105 -0
  130. package/dist/commands/pull-models.js.map +1 -0
  131. package/dist/commands/run-experiment.d.ts +7 -0
  132. package/dist/commands/run-experiment.js +579 -0
  133. package/dist/commands/run-experiment.js.map +1 -0
  134. package/dist/commands/run-prompt.d.ts +8 -0
  135. package/dist/commands/run-prompt.js +397 -0
  136. package/dist/commands/run-prompt.js.map +1 -0
  137. package/dist/config.d.ts +23 -0
  138. package/dist/config.js +170 -0
  139. package/dist/config.js.map +1 -0
  140. package/dist/cost-mapping/cost-mapping.d.ts +7 -0
  141. package/dist/cost-mapping/cost-mapping.js +36 -0
  142. package/dist/cost-mapping/cost-mapping.js.map +1 -0
  143. package/dist/index.d.ts +2 -0
  144. package/dist/index.js +127 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/runner-server/core.d.ts +15 -0
  147. package/dist/runner-server/core.js +180 -0
  148. package/dist/runner-server/core.js.map +1 -0
  149. package/dist/runner-server/middleware/signature-verification.d.ts +37 -0
  150. package/dist/runner-server/middleware/signature-verification.js +55 -0
  151. package/dist/runner-server/middleware/signature-verification.js.map +1 -0
  152. package/dist/runner-server/types.d.ts +67 -0
  153. package/dist/runner-server/types.js +7 -0
  154. package/dist/runner-server/types.js.map +1 -0
  155. package/dist/runner-server.d.ts +32 -0
  156. package/dist/runner-server.js +376 -0
  157. package/dist/runner-server.js.map +1 -0
  158. package/dist/server/database/index.d.ts +3 -0
  159. package/dist/server/database/index.js +97 -0
  160. package/dist/server/database/index.js.map +1 -0
  161. package/dist/server/routes/scores/index.d.ts +14 -0
  162. package/dist/server/routes/scores/index.js +60 -0
  163. package/dist/server/routes/scores/index.js.map +1 -0
  164. package/dist/server/routes/traces/index.d.ts +50 -0
  165. package/dist/server/routes/traces/index.js +614 -0
  166. package/dist/server/routes/traces/index.js.map +1 -0
  167. package/dist/tunnel.d.ts +19 -0
  168. package/dist/tunnel.js +134 -0
  169. package/dist/tunnel.js.map +1 -0
  170. package/dist/utils/prompt-detection.d.ts +8 -0
  171. package/dist/utils/prompt-detection.js +24 -0
  172. package/dist/utils/prompt-detection.js.map +1 -0
  173. package/dist/utils/providers.d.ts +38 -0
  174. package/dist/utils/providers.js +82 -0
  175. package/dist/utils/providers.js.map +1 -0
  176. package/next.config.ts +18 -0
  177. package/package.json +90 -0
  178. package/public/favicon.ico +0 -0
  179. package/public/file.svg +1 -0
  180. package/public/logo.svg +1 -0
@@ -0,0 +1,579 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.default = runExperiment;
16
+ const path_1 = __importDefault(require("path"));
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const url_1 = require("url");
19
+ const prompt_detection_js_1 = require("../utils/prompt-detection.js");
20
+ /**
21
+ * Loads an AST from either a pre-built JSON file or an MDX file.
22
+ * @param resolvedFilepath - Absolute path to the file
23
+ * @returns The AST, prompt name, and dataset path (if available)
24
+ */
25
+ function loadAst(resolvedFilepath) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ var _a, _b, _c, _d, _e, _f, _g, _h;
28
+ if (resolvedFilepath.endsWith('.json')) {
29
+ // Load pre-built AST from JSON file
30
+ const content = fs_1.default.readFileSync(resolvedFilepath, 'utf-8');
31
+ const built = JSON.parse(content);
32
+ if (!built.ast) {
33
+ throw new Error('Invalid pre-built prompt file: missing "ast" field');
34
+ }
35
+ // Extract dataset path from the AST's frontmatter
36
+ let datasetPath;
37
+ try {
38
+ const yamlNode = (_b = (_a = built.ast) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.find((n) => (n === null || n === void 0 ? void 0 : n.type) === 'yaml');
39
+ if (yamlNode) {
40
+ const { parse: parseYaml } = yield import('yaml');
41
+ datasetPath = (_d = (_c = parseYaml(yamlNode.value)) === null || _c === void 0 ? void 0 : _c.test_settings) === null || _d === void 0 ? void 0 : _d.dataset;
42
+ }
43
+ }
44
+ catch (_j) {
45
+ // Ignore errors when parsing dataset path
46
+ }
47
+ return {
48
+ ast: built.ast,
49
+ promptName: (_e = built.metadata) === null || _e === void 0 ? void 0 : _e.name,
50
+ datasetPath
51
+ };
52
+ }
53
+ else if (resolvedFilepath.endsWith('.mdx')) {
54
+ // Parse MDX file using prompt-core's TemplateDX instances (which have tags registered)
55
+ const { getTemplateDXInstance } = yield import("@agentmark-ai/prompt-core");
56
+ // Read content to detect prompt type
57
+ const content = fs_1.default.readFileSync(resolvedFilepath, 'utf-8');
58
+ const parserType = (0, prompt_detection_js_1.detectPromptTypeFromContent)(content);
59
+ // Get the appropriate TemplateDX instance with AgentMark tags registered
60
+ const templateDX = getTemplateDXInstance(parserType);
61
+ // Create content loader for resolving imports
62
+ const baseDir = path_1.default.dirname(resolvedFilepath);
63
+ const contentLoader = (filePath) => __awaiter(this, void 0, void 0, function* () {
64
+ const { readFile } = yield import('fs/promises');
65
+ const resolvedPath = path_1.default.resolve(baseDir, filePath);
66
+ return readFile(resolvedPath, 'utf-8');
67
+ });
68
+ // Parse the MDX content
69
+ const ast = yield templateDX.parse(content, baseDir, contentLoader);
70
+ const frontmatter = templateDX.getFrontMatter(ast);
71
+ // Extract dataset path from frontmatter
72
+ let datasetPath;
73
+ try {
74
+ const yamlNode = (_f = ast === null || ast === void 0 ? void 0 : ast.children) === null || _f === void 0 ? void 0 : _f.find((n) => (n === null || n === void 0 ? void 0 : n.type) === 'yaml');
75
+ if (yamlNode) {
76
+ const { parse: parseYaml } = yield import('yaml');
77
+ datasetPath = (_h = (_g = parseYaml(yamlNode.value)) === null || _g === void 0 ? void 0 : _g.test_settings) === null || _h === void 0 ? void 0 : _h.dataset;
78
+ }
79
+ }
80
+ catch (_k) {
81
+ // Ignore errors when parsing dataset path
82
+ }
83
+ return {
84
+ ast,
85
+ promptName: frontmatter.name,
86
+ datasetPath
87
+ };
88
+ }
89
+ else {
90
+ throw new Error('File must be an .mdx or .json file');
91
+ }
92
+ });
93
+ }
94
+ // Lazy-load cli-table3 so other commands (e.g., serve) don't pull ESM deps
95
+ let _Table;
96
+ function getTable() {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ if (_Table)
99
+ return _Table;
100
+ const mod = yield import('cli-table3');
101
+ _Table = mod.default || mod;
102
+ return _Table;
103
+ });
104
+ }
105
+ const getTerminalWidth = () => {
106
+ const cols = process.stdout.columns;
107
+ return typeof cols === 'number' && cols > 0 ? cols : 120;
108
+ };
109
+ const computeLayout = (baseHead, evalNames = [], _sampleRows = []) => {
110
+ const head = [...baseHead, ...evalNames];
111
+ const terminalWidth = getTerminalWidth();
112
+ const overhead = (head.length + 1) * 3;
113
+ const available = terminalWidth - overhead;
114
+ // Set absolute minimums based on column type (bare minimum for readability)
115
+ const absoluteMins = head.map((h, idx) => {
116
+ if (idx === 0)
117
+ return 3; // # column
118
+ if (h === 'Input' || h === 'AI Result' || h === 'Expected Output')
119
+ return 20; // Data columns
120
+ return 15; // Eval columns
121
+ });
122
+ // Define weights for space distribution
123
+ const weights = head.map((h, idx) => {
124
+ if (idx === 0)
125
+ return 1;
126
+ if (h === 'AI Result')
127
+ return 8;
128
+ if (h === 'Input' || h === 'Expected Output')
129
+ return 6;
130
+ return 2; // Eval columns
131
+ });
132
+ // Calculate total weight and minimum space needed
133
+ const sumAbsoluteMins = absoluteMins.reduce((a, b) => a + b, 0);
134
+ // If we don't have enough space for even the minimums, scale everything down proportionally
135
+ if (available <= sumAbsoluteMins) {
136
+ const scaleFactor = available / sumAbsoluteMins;
137
+ return {
138
+ head,
139
+ colWidths: absoluteMins.map((min, idx) => Math.max(idx === 0 ? 3 : 10, // Never go below 3 for #, 10 for others
140
+ Math.floor(min * scaleFactor)))
141
+ };
142
+ }
143
+ // We have space - distribute it proportionally based on weights
144
+ const weightSum = weights.reduce((a, b) => a + b, 0);
145
+ const widths = weights.map((weight, idx) => {
146
+ const proportionalWidth = Math.floor((available * weight) / weightSum);
147
+ return Math.max(absoluteMins[idx], proportionalWidth);
148
+ });
149
+ // Adjust for rounding errors
150
+ const diff = available - widths.reduce((a, b) => a + b, 0);
151
+ if (diff !== 0) {
152
+ widths[widths.length - 1] += diff;
153
+ }
154
+ return { head, colWidths: widths };
155
+ };
156
+ /**
157
+ * Resolves a path against the current working directory or PWD environment variable.
158
+ * @param inputPath - The path to resolve
159
+ * @returns Resolved absolute path
160
+ * @throws Error if the working directory is invalid and the path is relative
161
+ */
162
+ function resolveAgainstCwdOrEnv(inputPath) {
163
+ if (path_1.default.isAbsolute(inputPath))
164
+ return inputPath;
165
+ let base;
166
+ try {
167
+ base = process.cwd();
168
+ }
169
+ catch (_a) {
170
+ base = process.env.PWD;
171
+ }
172
+ if (!base) {
173
+ throw new Error('Invalid working directory. Unable to resolve relative path.\n' +
174
+ 'Please provide an absolute path or ensure PWD environment variable is set.');
175
+ }
176
+ return path_1.default.resolve(base, inputPath);
177
+ }
178
+ // Format helper functions
179
+ function escapeCSV(value) {
180
+ // Escape double quotes and wrap in quotes if contains comma, newline, or quote
181
+ if (value.includes(',') || value.includes('\n') || value.includes('"')) {
182
+ return `"${value.replace(/"/g, '""')}"`;
183
+ }
184
+ return value;
185
+ }
186
+ function getExperimentConfig() {
187
+ return {
188
+ outputDir: '.agentmark-outputs',
189
+ };
190
+ }
191
+ function runExperiment(filepath, options) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
194
+ const evalEnabled = !options.skipEval;
195
+ const format = options.format || 'table';
196
+ const config = getExperimentConfig();
197
+ const resolvedFilepath = resolveAgainstCwdOrEnv(filepath);
198
+ if (!fs_1.default.existsSync(resolvedFilepath)) {
199
+ throw new Error(`Prompt file not found: ${resolvedFilepath}\n` +
200
+ `Please check that the file exists and the path is correct.`);
201
+ }
202
+ if (!resolvedFilepath.endsWith('.mdx') && !resolvedFilepath.endsWith('.json')) {
203
+ throw new Error('File must be an .mdx or .json file');
204
+ }
205
+ // Load webhook secret BEFORE changing directory
206
+ // (so we get it from the project root, not the prompt directory)
207
+ let webhookSecret = process.env.AGENTMARK_WEBHOOK_SECRET;
208
+ if (!webhookSecret) {
209
+ try {
210
+ const { loadLocalConfig } = yield import('../config.js');
211
+ const config = loadLocalConfig();
212
+ if (config && config.webhookSecret) {
213
+ webhookSecret = config.webhookSecret;
214
+ }
215
+ }
216
+ catch (_l) {
217
+ // No config file, continue without signature
218
+ }
219
+ }
220
+ // Ensure runner client resolves prompt-relative resources (datasets, etc.)
221
+ try {
222
+ process.env.AGENTMARK_ROOT = path_1.default.dirname(resolvedFilepath);
223
+ }
224
+ catch (_m) {
225
+ // Ignore errors when setting environment variable
226
+ }
227
+ // If current cwd is invalid, switch to the prompt's directory to stabilize deps that use process.cwd()
228
+ try {
229
+ process.chdir(path_1.default.dirname(resolvedFilepath));
230
+ }
231
+ catch (_o) {
232
+ // Ignore errors when changing directory
233
+ }
234
+ // Load AST from MDX or pre-built JSON file
235
+ const { ast, promptName, datasetPath } = yield loadAst(resolvedFilepath);
236
+ // Determine prompt type from frontmatter (Text/Object/Image/Speech)
237
+ let promptType = 'Text';
238
+ try {
239
+ const yamlNode = (_a = ast === null || ast === void 0 ? void 0 : ast.children) === null || _a === void 0 ? void 0 : _a.find((n) => (n === null || n === void 0 ? void 0 : n.type) === 'yaml');
240
+ if (yamlNode && typeof yamlNode.value === 'string') {
241
+ const { parse: parseYaml } = yield import('yaml');
242
+ const fm = parseYaml(yamlNode.value) || {};
243
+ // Determine prompt type
244
+ if (fm.object_config)
245
+ promptType = 'Object';
246
+ else if (fm.image_config)
247
+ promptType = 'Image';
248
+ else if (fm.speech_config)
249
+ promptType = 'Speech';
250
+ else
251
+ promptType = 'Text';
252
+ }
253
+ }
254
+ catch (_p) {
255
+ // Ignore errors when parsing prompt type
256
+ }
257
+ const server = options.server || process.env.AGENTMARK_WEBHOOK_URL || 'http://localhost:9417';
258
+ if (!server || !/^https?:\/\//i.test(server)) {
259
+ throw new Error('Invalid or missing server URL.\n' +
260
+ 'Please ensure the AgentMark dev server is running with: agentmark dev\n' +
261
+ `Expected format: http://localhost:9417 (got: ${server || 'undefined'})`);
262
+ }
263
+ // Only show status messages for table format
264
+ if (format === 'table') {
265
+ console.log("Running prompt with dataset...");
266
+ if (evalEnabled)
267
+ console.log("🧪 Evaluations enabled");
268
+ }
269
+ const body = JSON.stringify({ type: 'dataset-run', data: { ast, promptPath: promptName, datasetPath, experimentId: promptName } });
270
+ // Add webhook signature if secret is available
271
+ const headers = { 'Content-Type': 'application/json' };
272
+ if (webhookSecret) {
273
+ const { createSignature } = yield import('@agentmark-ai/shared-utils');
274
+ const signature = yield createSignature(webhookSecret, body);
275
+ headers['x-agentmark-signature-256'] = signature;
276
+ }
277
+ let res;
278
+ try {
279
+ res = yield fetch(server, {
280
+ method: 'POST',
281
+ headers,
282
+ body
283
+ });
284
+ }
285
+ catch (fetchError) {
286
+ // Network-level errors (server not running, connection refused, etc.)
287
+ const isConnectionError = ((_b = fetchError.message) === null || _b === void 0 ? void 0 : _b.includes('ECONNREFUSED')) ||
288
+ ((_c = fetchError.message) === null || _c === void 0 ? void 0 : _c.includes('fetch failed')) ||
289
+ ((_d = fetchError.cause) === null || _d === void 0 ? void 0 : _d.code) === 'ECONNREFUSED';
290
+ if (isConnectionError) {
291
+ throw new Error(`āŒ Could not connect to AgentMark server at ${server}\n\n` +
292
+ `The server is not running or not reachable.\n\n` +
293
+ `To start the server, run:\n` +
294
+ ` agentmark dev\n\n` +
295
+ `Or specify a different server URL with:\n` +
296
+ ` agentmark run-experiment <filepath> --server <url>`);
297
+ }
298
+ // Re-throw other network errors with context
299
+ throw new Error(`Network error connecting to ${server}: ${fetchError.message}`);
300
+ }
301
+ if (!res.ok) {
302
+ let raw = '';
303
+ try {
304
+ raw = yield res.text();
305
+ }
306
+ catch (_q) {
307
+ // Ignore errors when reading response text
308
+ }
309
+ let parsed = null;
310
+ try {
311
+ parsed = JSON.parse(raw);
312
+ }
313
+ catch (_r) {
314
+ // Ignore errors when parsing JSON
315
+ }
316
+ const ct = res.headers.get('content-type') || '';
317
+ const statusLine = `${res.status}${res.statusText ? ' ' + res.statusText : ''}`;
318
+ const errMsg = (parsed === null || parsed === void 0 ? void 0 : parsed.error) || (parsed === null || parsed === void 0 ? void 0 : parsed.message) || ((_e = raw === null || raw === void 0 ? void 0 : raw.slice) === null || _e === void 0 ? void 0 : _e.call(raw, 0, 2000)) || 'Unknown error';
319
+ // Provide more helpful error messages based on status code
320
+ let helpText = '';
321
+ if (res.status === 404) {
322
+ helpText = '\n\nTip: The dev server endpoint was not found. Make sure you are running the latest version.';
323
+ }
324
+ else if (res.status === 400) {
325
+ helpText = '\n\nTip: The request was malformed. Check that your prompt file and dataset are valid.';
326
+ }
327
+ else if (res.status === 500) {
328
+ helpText = '\n\nTip: The server encountered an error. Check the dev server logs for more details.';
329
+ }
330
+ else if (res.status === 503 || res.status === 502) {
331
+ helpText = '\n\nTip: The server is unavailable. Make sure the dev server is running with: agentmark dev';
332
+ }
333
+ const details = `HTTP ${statusLine} — Content-Type: ${ct}`;
334
+ const msg = `Runner request failed. ${details}\nURL: ${server}\nError: ${errMsg}${helpText}`;
335
+ console.error(msg);
336
+ throw new Error(msg);
337
+ }
338
+ const stream = res.body;
339
+ let index = 1;
340
+ let totalEvals = 0;
341
+ let passedEvals = 0;
342
+ let evalNames = [];
343
+ let tableInitialized = false;
344
+ let Table;
345
+ let table;
346
+ const jsonRows = []; // For buffering JSON format output
347
+ let experimentRunId; // Capture run ID for linking to all traces
348
+ const reader = stream.getReader();
349
+ const decoder = new TextDecoder();
350
+ let buffered = '';
351
+ // Stream and render rows as they arrive
352
+ try {
353
+ while (true) {
354
+ const { done, value } = yield reader.read();
355
+ if (done)
356
+ break;
357
+ if (typeof value === 'string')
358
+ buffered += value;
359
+ else
360
+ buffered += decoder.decode(value, { stream: true });
361
+ let idx;
362
+ while ((idx = buffered.indexOf('\n')) !== -1) {
363
+ const line = buffered.slice(0, idx);
364
+ buffered = buffered.slice(idx + 1);
365
+ if (!line.trim())
366
+ continue;
367
+ try {
368
+ const evt = JSON.parse(line);
369
+ if (evt.type === 'error' && evt.error) {
370
+ const errorMsg = typeof evt.error === 'string'
371
+ ? evt.error
372
+ : (evt.error.message || JSON.stringify(evt.error, null, 2));
373
+ console.error(`āŒ ${errorMsg}`);
374
+ continue;
375
+ }
376
+ if (evt.type !== 'dataset')
377
+ continue;
378
+ const r = evt.result || {};
379
+ if (evt.runId && !experimentRunId)
380
+ experimentRunId = evt.runId;
381
+ const input = JSON.stringify((_f = r.input) !== null && _f !== void 0 ? _f : {}, null, 0);
382
+ const expected = (_g = r.expectedOutput) !== null && _g !== void 0 ? _g : 'N/A';
383
+ // Coerce AI result column, saving media to files and printing IDE-clickable paths
384
+ let actual;
385
+ const extraPaths = [];
386
+ const hyperlink = (label, url) => `\u001B]8;;${url}\u0007${label}\u001B]8;;\u0007`;
387
+ const outDir = path_1.default.join(process.cwd(), config.outputDir);
388
+ const ensureOutDir = () => {
389
+ try {
390
+ fs_1.default.mkdirSync(outDir, { recursive: true });
391
+ }
392
+ catch (_a) {
393
+ // Ignore errors when creating output directory
394
+ }
395
+ };
396
+ const ao = r.actualOutput;
397
+ if (Array.isArray(ao) && ao.length > 0 && ao.every((x) => x && typeof x.base64 === 'string')) {
398
+ // Image array output
399
+ ensureOutDir();
400
+ const timestamp = Date.now();
401
+ const linkLabels = [];
402
+ ao.forEach((img, idx) => {
403
+ var _a, _b, _c;
404
+ const ext = ((_c = (_b = (_a = img.mimeType) === null || _a === void 0 ? void 0 : _a.split) === null || _b === void 0 ? void 0 : _b.call(_a, '/')) === null || _c === void 0 ? void 0 : _c[1]) || 'png';
405
+ const filePath = path_1.default.join(outDir, `image-${index}-${idx + 1}-${timestamp}.${ext}`);
406
+ try {
407
+ fs_1.default.writeFileSync(filePath, Buffer.from(img.base64, 'base64'));
408
+ }
409
+ catch (_d) {
410
+ // Ignore errors when writing image file
411
+ }
412
+ extraPaths.push({ rel: filePath, kind: 'image' });
413
+ const url = (0, url_1.pathToFileURL)(filePath).href;
414
+ linkLabels.push(hyperlink(`View Image ${idx + 1}`, url));
415
+ });
416
+ if (linkLabels.length) {
417
+ actual = linkLabels.join(', ');
418
+ }
419
+ else {
420
+ actual = '(no content)';
421
+ }
422
+ }
423
+ else if (ao && typeof ao === 'object' && typeof ao.base64 === 'string') {
424
+ // Audio object output
425
+ ensureOutDir();
426
+ const timestamp = Date.now();
427
+ const ext = ao.format || (((_k = (_j = (_h = ao.mimeType) === null || _h === void 0 ? void 0 : _h.split) === null || _j === void 0 ? void 0 : _j.call(_h, '/')) === null || _k === void 0 ? void 0 : _k[1]) || 'mp3');
428
+ const filePath = path_1.default.join(outDir, `audio-${index}-${timestamp}.${ext}`);
429
+ try {
430
+ fs_1.default.writeFileSync(filePath, Buffer.from(ao.base64, 'base64'));
431
+ }
432
+ catch (_s) {
433
+ // Ignore errors when writing audio file
434
+ }
435
+ const url = (0, url_1.pathToFileURL)(filePath).href;
436
+ actual = hyperlink('Play Audio', url);
437
+ extraPaths.push({ rel: filePath, kind: 'audio' });
438
+ }
439
+ else {
440
+ actual = typeof ao === 'string' ? ao : JSON.stringify(ao !== null && ao !== void 0 ? ao : '');
441
+ }
442
+ const evals = Array.isArray(r.evals) ? r.evals : [];
443
+ // Initialize table on first row
444
+ if (!tableInitialized) {
445
+ evalNames = evalEnabled ? evals.map((e) => e.name).filter(Boolean) : [];
446
+ const layout = computeLayout(['#', 'Input', 'AI Result', 'Expected Output'], evalNames, []);
447
+ Table = yield getTable();
448
+ table = new Table({
449
+ head: layout.head,
450
+ colWidths: layout.colWidths,
451
+ wordWrap: true
452
+ });
453
+ tableInitialized = true;
454
+ }
455
+ // Build and render row immediately
456
+ const row = [String(index), input, actual, expected];
457
+ // Add eval columns
458
+ for (const name of evalNames) {
459
+ const e = evals.find((ev) => ev.name === name);
460
+ if (e) {
461
+ if (typeof e.passed === 'boolean') {
462
+ const isPass = e.passed;
463
+ const verdictText = isPass ? 'PASS' : 'FAIL';
464
+ const scorePart = typeof e.score === 'number' ? e.score.toFixed(2) : '';
465
+ const reasonPart = typeof e.reason === 'string' && e.reason ? ` - ${e.reason}` : '';
466
+ const suffix = scorePart || reasonPart ? ` (${scorePart}${reasonPart})` : '';
467
+ row.push(`${verdictText}${suffix}`);
468
+ totalEvals += 1;
469
+ if (isPass)
470
+ passedEvals += 1;
471
+ }
472
+ else {
473
+ const parts = [];
474
+ if (typeof e.score === 'number')
475
+ parts.push(`score: ${e.score.toFixed(2)}`);
476
+ if (typeof e.label === 'string' && e.label)
477
+ parts.push(`label: ${e.label}`);
478
+ if (typeof e.reason === 'string' && e.reason)
479
+ parts.push(`reason: ${e.reason}`);
480
+ row.push(parts.length > 0 ? parts.join(', ') : 'N/A');
481
+ }
482
+ }
483
+ else {
484
+ row.push('N/A');
485
+ }
486
+ }
487
+ // Print row immediately
488
+ if (format === 'table') {
489
+ table.push(row);
490
+ // Print just the header + current row (first time) or just the new row
491
+ if (index === 1) {
492
+ console.log(table.toString());
493
+ }
494
+ else {
495
+ // For subsequent rows, print the row content with bottom border (separator line)
496
+ const tempTable = new Table({
497
+ head: [],
498
+ colWidths: table.options.colWidths,
499
+ wordWrap: true,
500
+ style: { head: [], border: table.options.style.border }
501
+ });
502
+ tempTable.push(row);
503
+ const lines = tempTable.toString().split('\n');
504
+ // Skip only the top border (line 0), keep row content and bottom border
505
+ console.log(lines.slice(1).join('\n'));
506
+ }
507
+ }
508
+ else if (format === 'csv') {
509
+ const headers = ['#', 'Input', 'AI Result', 'Expected Output', ...evalNames];
510
+ if (index === 1) {
511
+ console.log(headers.map(h => escapeCSV(h)).join(','));
512
+ }
513
+ console.log(row.map(cell => escapeCSV(cell)).join(','));
514
+ }
515
+ else if (format === 'json') {
516
+ // Buffer for JSON format since it needs to be a valid array
517
+ const headers = ['#', 'Input', 'AI Result', 'Expected Output', ...evalNames];
518
+ const obj = {};
519
+ headers.forEach((header, idx) => {
520
+ obj[header] = row[idx] || '';
521
+ });
522
+ jsonRows.push(obj);
523
+ }
524
+ else if (format === 'jsonl') {
525
+ // Output each row as a JSON line immediately
526
+ const headers = ['#', 'Input', 'AI Result', 'Expected Output', ...evalNames];
527
+ const obj = {};
528
+ headers.forEach((header, idx) => {
529
+ obj[header] = row[idx] || '';
530
+ });
531
+ console.log(JSON.stringify(obj));
532
+ }
533
+ // Print media paths immediately
534
+ if (extraPaths.length) {
535
+ for (const p of extraPaths) {
536
+ const label = p.kind === 'image' ? 'Image path' : 'Audio path';
537
+ console.log(`${label}: ${p.rel}`);
538
+ }
539
+ }
540
+ index += 1;
541
+ }
542
+ catch (_t) {
543
+ // Ignore errors when processing dataset events
544
+ }
545
+ }
546
+ }
547
+ }
548
+ finally {
549
+ reader.releaseLock();
550
+ }
551
+ // Output JSON format after streaming is complete
552
+ if (format === 'json' && jsonRows.length > 0) {
553
+ console.log(JSON.stringify(jsonRows, null, 2));
554
+ }
555
+ // Display link to view all experiment traces (only for text or object prompts)
556
+ if (experimentRunId && format === 'table' && (promptType === 'Text' || promptType === 'Object')) {
557
+ console.log(`\nšŸ“Š View traces: http://localhost:3000/traces?runId=${experimentRunId}`);
558
+ }
559
+ if (evalEnabled && totalEvals > 0 && options.thresholdPercent !== undefined) {
560
+ const t = options.thresholdPercent;
561
+ if (!Number.isFinite(t) || t < 0 || t > 100) {
562
+ throw new Error(`Invalid threshold value: ${t}\n` +
563
+ 'Threshold must be a number between 0 and 100 (representing percentage).');
564
+ }
565
+ const passPct = Math.floor((passedEvals / totalEvals) * 100);
566
+ if (passPct < t) {
567
+ console.error(`āŒ Experiment failed threshold check\n` +
568
+ ` Pass rate: ${passPct}% (${passedEvals}/${totalEvals} evaluations passed)\n` +
569
+ ` Threshold: ${t}%\n` +
570
+ ` Difference: ${passPct - t}%`);
571
+ throw new Error(`Experiment failed: pass rate ${passPct}% is below threshold ${t}%`);
572
+ }
573
+ console.log(`āœ… Experiment passed threshold check\n` +
574
+ ` Pass rate: ${passPct}% (${passedEvals}/${totalEvals} evaluations passed)\n` +
575
+ ` Threshold: ${t}%`);
576
+ }
577
+ });
578
+ }
579
+ //# sourceMappingURL=run-experiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-experiment.js","sourceRoot":"","sources":["../../cli-src/commands/run-experiment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface RunPromptOptions {
2
+ props?: string;
3
+ propsFile?: string;
4
+ server?: string;
5
+ saveOutput?: string;
6
+ }
7
+ declare const runPrompt: (filepath: string, options?: RunPromptOptions) => Promise<void>;
8
+ export default runPrompt;