@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,88 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+ // This file validates that all pages and layouts export the correct types
4
+
5
+ import type { AppRoutes, LayoutRoutes, ParamMap } from "./routes.js"
6
+ import type { ResolvingMetadata, ResolvingViewport } from "next/types.js"
7
+
8
+ type AppPageConfig<Route extends AppRoutes = AppRoutes> = {
9
+ default: React.ComponentType<{ params: Promise<ParamMap[Route]> } & any> | ((props: { params: Promise<ParamMap[Route]> } & any) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
10
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
11
+ generateMetadata?: (
12
+ props: { params: Promise<ParamMap[Route]> } & any,
13
+ parent: ResolvingMetadata
14
+ ) => Promise<any> | any
15
+ generateViewport?: (
16
+ props: { params: Promise<ParamMap[Route]> } & any,
17
+ parent: ResolvingViewport
18
+ ) => Promise<any> | any
19
+ metadata?: any
20
+ viewport?: any
21
+ }
22
+
23
+ type LayoutConfig<Route extends LayoutRoutes = LayoutRoutes> = {
24
+ default: React.ComponentType<LayoutProps<Route>> | ((props: LayoutProps<Route>) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
25
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
26
+ generateMetadata?: (
27
+ props: { params: Promise<ParamMap[Route]> } & any,
28
+ parent: ResolvingMetadata
29
+ ) => Promise<any> | any
30
+ generateViewport?: (
31
+ props: { params: Promise<ParamMap[Route]> } & any,
32
+ parent: ResolvingViewport
33
+ ) => Promise<any> | any
34
+ metadata?: any
35
+ viewport?: any
36
+ }
37
+
38
+
39
+ // Validate ../../../src/app/page.tsx
40
+ {
41
+ type __IsExpected<Specific extends AppPageConfig<"/">> = Specific
42
+ const handler = {} as typeof import("../../../src/app/page.js")
43
+ type __Check = __IsExpected<typeof handler>
44
+ // @ts-ignore
45
+ type __Unused = __Check
46
+ }
47
+
48
+ // Validate ../../../src/app/requests/page.tsx
49
+ {
50
+ type __IsExpected<Specific extends AppPageConfig<"/requests">> = Specific
51
+ const handler = {} as typeof import("../../../src/app/requests/page.js")
52
+ type __Check = __IsExpected<typeof handler>
53
+ // @ts-ignore
54
+ type __Unused = __Check
55
+ }
56
+
57
+ // Validate ../../../src/app/sessions/page.tsx
58
+ {
59
+ type __IsExpected<Specific extends AppPageConfig<"/sessions">> = Specific
60
+ const handler = {} as typeof import("../../../src/app/sessions/page.js")
61
+ type __Check = __IsExpected<typeof handler>
62
+ // @ts-ignore
63
+ type __Unused = __Check
64
+ }
65
+
66
+ // Validate ../../../src/app/traces/page.tsx
67
+ {
68
+ type __IsExpected<Specific extends AppPageConfig<"/traces">> = Specific
69
+ const handler = {} as typeof import("../../../src/app/traces/page.js")
70
+ type __Check = __IsExpected<typeof handler>
71
+ // @ts-ignore
72
+ type __Unused = __Check
73
+ }
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ // Validate ../../../src/app/layout.tsx
82
+ {
83
+ type __IsExpected<Specific extends LayoutConfig<"/">> = Specific
84
+ const handler = {} as typeof import("../../../src/app/layout.js")
85
+ type __Check = __IsExpected<typeof handler>
86
+ // @ts-ignore
87
+ type __Unused = __Check
88
+ }
@@ -0,0 +1 @@
1
+ export declare function createApiServer(port: number): Promise<unknown>;
@@ -0,0 +1,545 @@
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.createApiServer = createApiServer;
16
+ const express_1 = __importDefault(require("express"));
17
+ const fs_1 = __importDefault(require("fs"));
18
+ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
19
+ const path_1 = __importDefault(require("path"));
20
+ const shared_utils_1 = require("@agentmark-ai/shared-utils");
21
+ const cors_1 = __importDefault(require("cors"));
22
+ const traces_1 = require("./server/routes/traces");
23
+ const scores_1 = require("./server/routes/scores");
24
+ function safePath() {
25
+ try {
26
+ return process.cwd();
27
+ }
28
+ catch (_a) {
29
+ return process.env.PWD || process.env.INIT_CWD || ".";
30
+ }
31
+ }
32
+ function createApiServer(port) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const app = (0, express_1.default)();
35
+ // Trust first proxy hop (for tunnels like ngrok, cloudflare, etc.)
36
+ app.set('trust proxy', 1);
37
+ app.use(express_1.default.json());
38
+ app.use((0, cors_1.default)());
39
+ const currentPath = safePath();
40
+ const basePath = path_1.default.join(currentPath);
41
+ let agentmarkTemplatesBase = path_1.default.join(basePath, "agentmark");
42
+ try {
43
+ const jsonPath = path_1.default.join(currentPath, "agentmark.json");
44
+ if (fs_1.default.existsSync(jsonPath)) {
45
+ const agentmarkJson = JSON.parse(fs_1.default.readFileSync(jsonPath, "utf-8"));
46
+ if (agentmarkJson === null || agentmarkJson === void 0 ? void 0 : agentmarkJson.agentmarkPath) {
47
+ agentmarkTemplatesBase = path_1.default.join(basePath, agentmarkJson.agentmarkPath, "agentmark");
48
+ }
49
+ }
50
+ }
51
+ catch (_a) {
52
+ // Ignore errors when reading agentmark.json
53
+ }
54
+ // Landing page for browser access
55
+ app.get("/", (_req, res) => __awaiter(this, void 0, void 0, function* () {
56
+ let promptsList = "";
57
+ try {
58
+ const promptFiles = yield (0, shared_utils_1.findPromptFiles)(agentmarkTemplatesBase);
59
+ if (promptFiles.length > 0) {
60
+ const relativePaths = promptFiles.map((file) => path_1.default.relative(agentmarkTemplatesBase, file));
61
+ promptsList = relativePaths
62
+ .map((p) => ` <li><code>${p}</code></li>`)
63
+ .join("\n");
64
+ }
65
+ else {
66
+ promptsList = ' <li style="color: #64748b;">No prompts found</li>';
67
+ }
68
+ }
69
+ catch (_a) {
70
+ promptsList =
71
+ ' <li style="color: #ef4444;">Error listing prompts</li>';
72
+ }
73
+ res.setHeader("Content-Type", "text/html; charset=utf-8");
74
+ res.send(`
75
+ <!DOCTYPE html>
76
+ <html lang="en">
77
+ <head>
78
+ <meta charset="UTF-8">
79
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
80
+ <title>AgentMark API Server</title>
81
+ <style>
82
+ body {
83
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
84
+ max-width: 900px;
85
+ margin: 40px auto;
86
+ padding: 20px;
87
+ line-height: 1.6;
88
+ color: #333;
89
+ }
90
+ h1 { color: #2563eb; margin-bottom: 10px; }
91
+ .subtitle { color: #64748b; margin-bottom: 30px; }
92
+ .status {
93
+ background: #dcfce7;
94
+ border-left: 4px solid #22c55e;
95
+ padding: 15px;
96
+ margin: 20px 0;
97
+ border-radius: 4px;
98
+ }
99
+ .info-box {
100
+ background: #f0f9ff;
101
+ border-left: 4px solid #2563eb;
102
+ padding: 15px;
103
+ margin: 20px 0;
104
+ border-radius: 4px;
105
+ }
106
+ .endpoint {
107
+ background: #f8fafc;
108
+ border: 1px solid #e2e8f0;
109
+ border-radius: 6px;
110
+ padding: 15px;
111
+ margin: 15px 0;
112
+ }
113
+ .endpoint-title {
114
+ font-weight: 600;
115
+ color: #1e293b;
116
+ margin-bottom: 8px;
117
+ }
118
+ .endpoint-method {
119
+ display: inline-block;
120
+ background: #22c55e;
121
+ color: white;
122
+ padding: 2px 8px;
123
+ border-radius: 3px;
124
+ font-size: 12px;
125
+ font-weight: 600;
126
+ margin-right: 8px;
127
+ }
128
+ .endpoint-method.post {
129
+ background: #3b82f6;
130
+ }
131
+ .endpoint-desc {
132
+ color: #64748b;
133
+ font-size: 14px;
134
+ margin-top: 8px;
135
+ }
136
+ code {
137
+ background: #1e293b;
138
+ color: #e2e8f0;
139
+ padding: 2px 6px;
140
+ border-radius: 3px;
141
+ font-size: 13px;
142
+ }
143
+ ul {
144
+ margin: 10px 0;
145
+ }
146
+ li {
147
+ margin: 5px 0;
148
+ }
149
+ a { color: #2563eb; text-decoration: none; }
150
+ a:hover { text-decoration: underline; }
151
+ footer {
152
+ margin-top: 40px;
153
+ padding-top: 20px;
154
+ border-top: 1px solid #e2e8f0;
155
+ color: #64748b;
156
+ font-size: 14px;
157
+ }
158
+ </style>
159
+ </head>
160
+ <body>
161
+ <h1>AgentMark API Server</h1>
162
+ <div class="subtitle">Local development server for serving prompts and datasets</div>
163
+
164
+ <div class="status">
165
+ <strong>✓ Server Status:</strong> Running on port ${port}
166
+ </div>
167
+
168
+ <div class="info-box">
169
+ <strong>📁 Templates Directory:</strong><br>
170
+ <code>${agentmarkTemplatesBase}</code>
171
+ </div>
172
+
173
+ <h2>What is this?</h2>
174
+ <p>
175
+ This is the <strong>AgentMark API Server</strong>, an internal development server that provides
176
+ HTTP access to your local prompt files and datasets. It's automatically started when you run
177
+ <code>agentmark dev</code> and enables your development runner to load templates and data.
178
+ </p>
179
+
180
+ <h2>Available Endpoints</h2>
181
+
182
+ <div class="endpoint">
183
+ <div class="endpoint-title">
184
+ <span class="endpoint-method">GET</span>
185
+ /v1/templates?path=your-prompt.prompt.mdx
186
+ </div>
187
+ <div class="endpoint-desc">
188
+ Fetch and parse a prompt file, returning the AST (Abstract Syntax Tree)
189
+ </div>
190
+ </div>
191
+
192
+ <div class="endpoint">
193
+ <div class="endpoint-title">
194
+ <span class="endpoint-method">GET</span>
195
+ /v1/templates?path=your-dataset.jsonl
196
+ </div>
197
+ <div class="endpoint-desc">
198
+ Fetch a dataset file in JSONL format (supports both array and streaming responses)
199
+ </div>
200
+ </div>
201
+
202
+ <div class="endpoint">
203
+ <div class="endpoint-title">
204
+ <span class="endpoint-method">GET</span>
205
+ /v1/prompts
206
+ </div>
207
+ <div class="endpoint-desc">
208
+ List all available prompt files in the templates directory
209
+ </div>
210
+ </div>
211
+
212
+ <div class="endpoint">
213
+ <div class="endpoint-title">
214
+ <span class="endpoint-method post">POST</span>
215
+ /v1/traces
216
+ </div>
217
+ <div class="endpoint-desc">
218
+ Accept OpenTelemetry traces in OTLP JSON format
219
+ </div>
220
+ </div>
221
+
222
+ <div class="endpoint">
223
+ <div class="endpoint-title">
224
+ <span class="endpoint-method">GET</span>
225
+ /v1/traces
226
+ </div>
227
+ <div class="endpoint-desc">
228
+ Get list of all traces with aggregated metadata (name, status, latency, cost, tokens, start, end)
229
+ </div>
230
+ </div>
231
+
232
+ <div class="endpoint">
233
+ <div class="endpoint-title">
234
+ <span class="endpoint-method">GET</span>
235
+ /v1/traces/:traceId
236
+ </div>
237
+ <div class="endpoint-desc">
238
+ Get a single trace with all its spans in TraceData format
239
+ </div>
240
+ </div>
241
+
242
+ <div class="endpoint">
243
+ <div class="endpoint-title">
244
+ <span class="endpoint-method">GET</span>
245
+ /v1/traces/:traceId/graph
246
+ </div>
247
+ <div class="endpoint-desc">
248
+ Get graph data for a trace (nodes and edges for visualization)
249
+ </div>
250
+ </div>
251
+
252
+ <div class="endpoint">
253
+ <div class="endpoint-title">
254
+ <span class="endpoint-method post">POST</span>
255
+ /v1/score
256
+ </div>
257
+ <div class="endpoint-desc">
258
+ Create a new evaluation score for a span or trace
259
+ </div>
260
+ </div>
261
+
262
+ <div class="endpoint">
263
+ <div class="endpoint-title">
264
+ <span class="endpoint-method">GET</span>
265
+ /v1/score?resourceId=xxx
266
+ </div>
267
+ <div class="endpoint-desc">
268
+ Get all evaluation scores for a specific span or trace resource
269
+ </div>
270
+ </div>
271
+
272
+ <h2>Your Prompts</h2>
273
+ <ul>
274
+ ${promptsList}
275
+ </ul>
276
+
277
+ <h2>Usage</h2>
278
+ <p>
279
+ This server is accessed automatically by your development runner. You don't need to make
280
+ HTTP requests directly. Just run your prompts using CLI commands:
281
+ </p>
282
+ <p>
283
+ <code>agentmark run-prompt &lt;file&gt;</code> or <code>agentmark run-experiment &lt;file&gt;</code>
284
+ </p>
285
+
286
+ <footer>
287
+ <div><strong>AgentMark Development Server</strong></div>
288
+ <div>Learn more: <a href="https://docs.agentmark.co" target="_blank">docs.agentmark.co</a></div>
289
+ </footer>
290
+ </body>
291
+ </html>
292
+ `.trim());
293
+ }));
294
+ // Rate limiter: 100 requests per 15 minutes per IP for file system endpoint
295
+ const templatesRateLimiter = (0, express_rate_limit_1.default)({
296
+ windowMs: 15 * 60 * 1000,
297
+ max: 100,
298
+ standardHeaders: true,
299
+ legacyHeaders: false,
300
+ message: { error: "Too many requests. Please try again later." },
301
+ });
302
+ app.get("/v1/templates", templatesRateLimiter, (req, res) => __awaiter(this, void 0, void 0, function* () {
303
+ const filePath = req.query.path;
304
+ if (!filePath || typeof filePath !== "string") {
305
+ return res
306
+ .status(400)
307
+ .json({ error: "Path query parameter must be a single string value" });
308
+ }
309
+ // Reject absolute paths
310
+ if (path_1.default.isAbsolute(filePath)) {
311
+ return res.status(400).json({ error: "Absolute paths are not allowed" });
312
+ }
313
+ // Normalize the path and remove leading ./
314
+ const normalizedPath = path_1.default.normalize(filePath.startsWith("./") ? filePath.slice(2) : filePath);
315
+ // Prevent path traversal with .. sequences
316
+ if (normalizedPath.includes("..") || normalizedPath.startsWith("/")) {
317
+ return res
318
+ .status(400)
319
+ .json({ error: "Invalid path: path traversal detected" });
320
+ }
321
+ // Join with base path
322
+ let fullPath = path_1.default.join(agentmarkTemplatesBase, normalizedPath);
323
+ // Verify the resolved path is still within the base directory
324
+ const resolvedPath = path_1.default.resolve(fullPath);
325
+ const resolvedBase = path_1.default.resolve(agentmarkTemplatesBase);
326
+ if (!resolvedPath.startsWith(resolvedBase + path_1.default.sep) &&
327
+ resolvedPath !== resolvedBase) {
328
+ return res
329
+ .status(403)
330
+ .json({ error: "Access denied: path outside allowed directory" });
331
+ }
332
+ // Try alternative path for .jsonl files in templates directory
333
+ if (!fs_1.default.existsSync(fullPath) && filePath.endsWith(".jsonl")) {
334
+ const altPath = path_1.default.join(agentmarkTemplatesBase, "templates", path_1.default.basename(filePath));
335
+ const resolvedAltPath = path_1.default.resolve(altPath);
336
+ if (resolvedAltPath.startsWith(resolvedBase + path_1.default.sep) &&
337
+ fs_1.default.existsSync(altPath)) {
338
+ fullPath = altPath;
339
+ }
340
+ }
341
+ try {
342
+ if (fullPath.endsWith(".jsonl")) {
343
+ // Dataset: default to JSON array unless client explicitly requests NDJSON
344
+ if (!fs_1.default.existsSync(fullPath))
345
+ return res.status(404).json({ error: "Dataset not found" });
346
+ const accept = (req.get("accept") || "").toLowerCase();
347
+ const explicitlyNdjson = accept.includes("application/x-ndjson");
348
+ const wantsJsonArray = req.query.format === "json" || !explicitlyNdjson;
349
+ if (wantsJsonArray) {
350
+ try {
351
+ const lines = fs_1.default
352
+ .readFileSync(fullPath, "utf-8")
353
+ .split(/\r?\n/)
354
+ .filter(Boolean);
355
+ const arr = lines.map((l) => JSON.parse(l));
356
+ return res.json(arr);
357
+ }
358
+ catch (_e) {
359
+ return res.status(500).json({ error: "Failed to read dataset" });
360
+ }
361
+ }
362
+ res.setHeader("Content-Type", "application/x-ndjson; charset=utf-8");
363
+ return fs_1.default.createReadStream(fullPath).pipe(res);
364
+ }
365
+ // Prompt: parse and return AST (no datasetUrl coupling)
366
+ const { parse } = yield import("@agentmark-ai/templatedx");
367
+ const fileContent = fs_1.default.readFileSync(fullPath, "utf-8");
368
+ const data = yield parse(fileContent, path_1.default.dirname(fullPath), (p) => __awaiter(this, void 0, void 0, function* () {
369
+ const resolved = path_1.default.isAbsolute(p)
370
+ ? p
371
+ : path_1.default.join(path_1.default.dirname(fullPath), p);
372
+ // Validate that the resolved path is within the base directory
373
+ const resolvedImportPath = path_1.default.resolve(resolved);
374
+ const resolvedBase = path_1.default.resolve(agentmarkTemplatesBase);
375
+ if (!resolvedImportPath.startsWith(resolvedBase + path_1.default.sep) &&
376
+ resolvedImportPath !== resolvedBase) {
377
+ throw new Error("Access denied: import path outside allowed directory");
378
+ }
379
+ return fs_1.default.readFileSync(resolvedImportPath, "utf-8");
380
+ }));
381
+ return res.json({ data });
382
+ }
383
+ catch (_error) {
384
+ return res.status(404).json({ error: "File not found or invalid" });
385
+ }
386
+ }));
387
+ app.post("/v1/traces", (req, res) => __awaiter(this, void 0, void 0, function* () {
388
+ try {
389
+ // Parse OTLP ExportTraceServiceRequest
390
+ const body = req.body;
391
+ if (!body || !body.resourceSpans || !Array.isArray(body.resourceSpans)) {
392
+ return res.status(400).json({
393
+ error: "Invalid OTLP payload: expected ExportTraceServiceRequest with resourceSpans array"
394
+ });
395
+ }
396
+ // Normalize OTLP spans using shared normalizer
397
+ const normalizedSpans = (0, shared_utils_1.normalizeOtlpSpans)(body.resourceSpans);
398
+ // Write normalized spans to SQLite
399
+ yield (0, traces_1.exportTraces)(normalizedSpans);
400
+ return res.json({ success: true });
401
+ }
402
+ catch (error) {
403
+ console.error("Error processing traces:", error);
404
+ return res.status(500).json({ error: error.message || "Failed to export traces" });
405
+ }
406
+ }));
407
+ app.get("/v1/requests", (_req, res) => __awaiter(this, void 0, void 0, function* () {
408
+ try {
409
+ const requests = yield (0, traces_1.getRequests)();
410
+ return res.json({ requests });
411
+ }
412
+ catch (error) {
413
+ console.error("Error getting requests:", error);
414
+ return res.status(500).json({ error: "Failed to get requests" });
415
+ }
416
+ }));
417
+ app.get("/v1/prompts", (_req, res) => __awaiter(this, void 0, void 0, function* () {
418
+ try {
419
+ const promptFiles = yield (0, shared_utils_1.findPromptFiles)(agentmarkTemplatesBase);
420
+ const paths = promptFiles.map((file) => path_1.default.relative(agentmarkTemplatesBase, file));
421
+ res.json({ paths });
422
+ }
423
+ catch (_error) {
424
+ res.status(500).json({ error: "Failed to list prompts" });
425
+ }
426
+ }));
427
+ app.get("/v1/traces", (_req, res) => __awaiter(this, void 0, void 0, function* () {
428
+ try {
429
+ const traces = yield (0, traces_1.getTraces)();
430
+ return res.json({ traces });
431
+ }
432
+ catch (error) {
433
+ console.error("Error getting traces:", error);
434
+ return res.status(500).json({ error: "Failed to get traces" });
435
+ }
436
+ }));
437
+ app.get("/v1/traces/:traceId", (req, res) => __awaiter(this, void 0, void 0, function* () {
438
+ try {
439
+ const { traceId } = req.params;
440
+ if (!traceId) {
441
+ return res.status(400).json({ error: "traceId parameter is required" });
442
+ }
443
+ const trace = yield (0, traces_1.getTraceById)(traceId);
444
+ if (!trace) {
445
+ return res.status(404).json({ error: "Trace not found" });
446
+ }
447
+ return res.json({ trace });
448
+ }
449
+ catch (error) {
450
+ console.error("Error getting trace:", error);
451
+ return res.status(500).json({ error: "Failed to get trace" });
452
+ }
453
+ }));
454
+ app.get("/v1/traces/:traceId/graph", (req, res) => __awaiter(this, void 0, void 0, function* () {
455
+ try {
456
+ const { traceId } = req.params;
457
+ if (!traceId) {
458
+ return res.status(400).json({ error: "traceId parameter is required" });
459
+ }
460
+ const graphData = yield (0, traces_1.getTraceGraph)(traceId);
461
+ return res.json({ graphData });
462
+ }
463
+ catch (error) {
464
+ console.error("Error getting trace graph:", error);
465
+ return res.status(500).json({ error: "Failed to get trace graph" });
466
+ }
467
+ }));
468
+ app.post("/v1/score", (req, res) => __awaiter(this, void 0, void 0, function* () {
469
+ try {
470
+ const body = req.body;
471
+ if (!body.resourceId) {
472
+ return res.status(400).json({ error: "resourceId is required" });
473
+ }
474
+ const result = yield (0, scores_1.createScore)(body);
475
+ return res.json(result);
476
+ }
477
+ catch (error) {
478
+ console.error("Error creating score:", error);
479
+ return res
480
+ .status(500)
481
+ .json({ error: error.message || "Failed to create score" });
482
+ }
483
+ }));
484
+ app.get("/v1/score", (req, res) => __awaiter(this, void 0, void 0, function* () {
485
+ try {
486
+ const resourceId = req.query.resourceId;
487
+ if (!resourceId) {
488
+ return res
489
+ .status(400)
490
+ .json({ error: "resourceId query parameter is required" });
491
+ }
492
+ const scores = yield (0, scores_1.getScoresByResourceId)(resourceId);
493
+ return res.json({ scores });
494
+ }
495
+ catch (error) {
496
+ console.error("Error getting scores:", error);
497
+ return res.status(500).json({ error: "Failed to get scores" });
498
+ }
499
+ }));
500
+ app.get("/v1/sessions", (_req, res) => __awaiter(this, void 0, void 0, function* () {
501
+ try {
502
+ const sessions = yield (0, traces_1.getSessions)();
503
+ return res.json({ sessions });
504
+ }
505
+ catch (error) {
506
+ console.error("Error getting sessions:", error);
507
+ return res.status(500).json({ error: "Failed to get sessions" });
508
+ }
509
+ }));
510
+ app.get("/v1/sessions/:sessionId/traces", (req, res) => __awaiter(this, void 0, void 0, function* () {
511
+ try {
512
+ const { sessionId } = req.params;
513
+ if (!sessionId) {
514
+ return res.status(400).json({ error: "sessionId parameter is required" });
515
+ }
516
+ const traces = yield (0, traces_1.getTracesBySessionId)(sessionId);
517
+ return res.json({ traces });
518
+ }
519
+ catch (error) {
520
+ console.error("Error getting traces for session:", error);
521
+ return res.status(500).json({ error: "Failed to get traces for session" });
522
+ }
523
+ }));
524
+ app.get("/v1/runs/:runId/traces", (req, res) => __awaiter(this, void 0, void 0, function* () {
525
+ try {
526
+ const { runId } = req.params;
527
+ if (!runId) {
528
+ return res.status(400).json({ error: "runId parameter is required" });
529
+ }
530
+ const traces = yield (0, traces_1.getTracesByRunId)(runId);
531
+ return res.json({ traces });
532
+ }
533
+ catch (error) {
534
+ console.error("Error getting traces for run:", error);
535
+ return res.status(500).json({ error: "Failed to get traces for run" });
536
+ }
537
+ }));
538
+ return new Promise((resolve) => {
539
+ const server = app.listen(port, () => {
540
+ resolve(server);
541
+ });
542
+ });
543
+ });
544
+ }
545
+ //# sourceMappingURL=api-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-server.js","sourceRoot":"","sources":["../cli-src/api-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface BuildOptions {
2
+ outDir?: string;
3
+ }
4
+ /**
5
+ * Build command - compiles all .prompt.mdx files to pre-built AST JSON files.
6
+ * Also copies dataset files (.jsonl) to the output directory.
7
+ */
8
+ declare const build: (options?: BuildOptions) => Promise<void>;
9
+ export default build;