@sapiom/harness 0.1.3 → 0.1.5
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/CHANGELOG.md +57 -0
- package/dist/core/adapters/adapter.d.ts +9 -0
- package/dist/core/adapters/adapter.d.ts.map +1 -1
- package/dist/core/adapters/claude-code-info.d.ts.map +1 -1
- package/dist/core/adapters/claude-code-info.js +2 -0
- package/dist/core/adapters/claude-code-info.js.map +1 -1
- package/dist/core/adapters/claude-code.d.ts +4 -0
- package/dist/core/adapters/claude-code.d.ts.map +1 -1
- package/dist/core/adapters/claude-code.js +133 -47
- package/dist/core/adapters/claude-code.js.map +1 -1
- package/dist/core/adapters/codex-info.d.ts.map +1 -1
- package/dist/core/adapters/codex-info.js +2 -0
- package/dist/core/adapters/codex-info.js.map +1 -1
- package/dist/core/adapters/conductor.d.ts.map +1 -1
- package/dist/core/adapters/conductor.js +2 -0
- package/dist/core/adapters/conductor.js.map +1 -1
- package/dist/core/adapters/opencode.d.ts.map +1 -1
- package/dist/core/adapters/opencode.js +2 -0
- package/dist/core/adapters/opencode.js.map +1 -1
- package/dist/core/adapters/pi.d.ts.map +1 -1
- package/dist/core/adapters/pi.js +2 -0
- package/dist/core/adapters/pi.js.map +1 -1
- package/dist/core/canvas-run-state.d.ts +95 -0
- package/dist/core/canvas-run-state.d.ts.map +1 -0
- package/dist/core/canvas-run-state.js +162 -0
- package/dist/core/canvas-run-state.js.map +1 -0
- package/dist/core/canvas-svg.d.ts.map +1 -1
- package/dist/core/canvas-svg.js +28 -8
- package/dist/core/canvas-svg.js.map +1 -1
- package/dist/core/canvas-template.d.ts +4 -3
- package/dist/core/canvas-template.d.ts.map +1 -1
- package/dist/core/canvas-template.js +75 -3
- package/dist/core/canvas-template.js.map +1 -1
- package/dist/core/definition-slug-resolver.d.ts +33 -0
- package/dist/core/definition-slug-resolver.d.ts.map +1 -0
- package/dist/core/definition-slug-resolver.js +81 -0
- package/dist/core/definition-slug-resolver.js.map +1 -0
- package/dist/core/execution-detector.d.ts +59 -0
- package/dist/core/execution-detector.d.ts.map +1 -0
- package/dist/core/execution-detector.js +110 -0
- package/dist/core/execution-detector.js.map +1 -0
- package/dist/core/inject/mcp-config.d.ts.map +1 -1
- package/dist/core/inject/mcp-config.js +9 -1
- package/dist/core/inject/mcp-config.js.map +1 -1
- package/dist/core/render-run-state.d.ts +9 -0
- package/dist/core/render-run-state.d.ts.map +1 -0
- package/dist/core/render-run-state.js +139 -0
- package/dist/core/render-run-state.js.map +1 -0
- package/dist/core/run-spend.d.ts +55 -0
- package/dist/core/run-spend.d.ts.map +1 -0
- package/dist/core/run-spend.js +109 -0
- package/dist/core/run-spend.js.map +1 -0
- package/dist/core/run-state.d.ts +45 -0
- package/dist/core/run-state.d.ts.map +1 -0
- package/dist/core/run-state.js +72 -0
- package/dist/core/run-state.js.map +1 -0
- package/dist/core/run-transactions.d.ts +60 -0
- package/dist/core/run-transactions.d.ts.map +1 -0
- package/dist/core/run-transactions.js +129 -0
- package/dist/core/run-transactions.js.map +1 -0
- package/dist/core/workflow-registry.d.ts +12 -1
- package/dist/core/workflow-registry.d.ts.map +1 -1
- package/dist/core/workflow-registry.js +2 -0
- package/dist/core/workflow-registry.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +0 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/rest.d.ts +5 -0
- package/dist/server/rest.d.ts.map +1 -1
- package/dist/server/rest.js +151 -12
- package/dist/server/rest.js.map +1 -1
- package/dist/server/runs.d.ts +33 -0
- package/dist/server/runs.d.ts.map +1 -0
- package/dist/server/runs.js +124 -0
- package/dist/server/runs.js.map +1 -0
- package/dist/shared/types.d.ts +157 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +30 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/web/assets/index-DM84J83Y.js +234 -0
- package/dist/web/assets/index-DemtWW4L.css +32 -0
- package/dist/web/index.html +2 -2
- package/package.json +4 -4
- package/dist/web/assets/index-BTm-QNRt.css +0 -32
- package/dist/web/assets/index-CvNiFngP.js +0 -204
package/dist/server/rest.js
CHANGED
|
@@ -4,13 +4,35 @@
|
|
|
4
4
|
* macros and settings are mounted by other workstreams alongside this one.
|
|
5
5
|
*/
|
|
6
6
|
import express, { Router } from "express";
|
|
7
|
+
import rateLimit from "express-rate-limit";
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
import { randomUUID } from "node:crypto";
|
|
9
|
-
import
|
|
10
|
+
import * as fs from "node:fs/promises";
|
|
11
|
+
import * as path from "node:path";
|
|
12
|
+
import { ALLOWED_IMAGE_MEDIA_TYPES, HARNESS_UPLOADS_DIR, JSON_BODY_LIMIT_BYTES, MAX_IMAGE_UPLOAD_BYTES, SPAWNABLE_HARNESS_KINDS, } from "../shared/types.js";
|
|
10
13
|
import { AdapterNotFoundError, ExternalHarnessError, SessionAlreadyLiveError, SessionNotResumeableError } from "../core/errors.js";
|
|
11
14
|
import { SessionNotReadyError, UnknownSessionError } from "../core/session-manager.js";
|
|
12
|
-
import { listHarnessAdapters } from "../core/adapters/registry.js";
|
|
15
|
+
import { getHarnessAdapter, listHarnessAdapters } from "../core/adapters/registry.js";
|
|
16
|
+
import { resolveWithinRoot } from "../core/path-safety.js";
|
|
13
17
|
import { loadSettings, saveSettings } from "../cli/settings.js";
|
|
18
|
+
// Cap image attaches per client so a runaway paste/drop loop can't fill the
|
|
19
|
+
// disk or wedge the pty — the route is otherwise unauthenticated beyond the
|
|
20
|
+
// boot token. (Added by CodeQL's rate-limiting finding.)
|
|
21
|
+
const imageUploadRateLimiter = rateLimit({
|
|
22
|
+
windowMs: 60 * 1000,
|
|
23
|
+
max: 30,
|
|
24
|
+
standardHeaders: true,
|
|
25
|
+
legacyHeaders: false,
|
|
26
|
+
});
|
|
27
|
+
/** File extension to store an accepted image under, keyed by media type. */
|
|
28
|
+
const IMAGE_EXTENSIONS = {
|
|
29
|
+
"image/png": "png",
|
|
30
|
+
"image/jpeg": "jpg",
|
|
31
|
+
"image/gif": "gif",
|
|
32
|
+
"image/webp": "webp",
|
|
33
|
+
};
|
|
34
|
+
/** `data:<mediaType>;base64,<payload>` — captures the media type and payload. */
|
|
35
|
+
const DATA_URL_RE = /^data:([a-z0-9.+/-]+);base64,([\s\S]+)$/i;
|
|
14
36
|
// Derived from SPAWNABLE_HARNESS_KINDS (shared/types.ts) so the zod
|
|
15
37
|
// validation and the TypeScript type can never drift from each other.
|
|
16
38
|
// Adding a new spawnable harness means updating that one constant; the
|
|
@@ -24,6 +46,10 @@ const injectInputSchema = z.object({
|
|
|
24
46
|
text: z.string(),
|
|
25
47
|
submit: z.boolean().optional(),
|
|
26
48
|
});
|
|
49
|
+
const attachImageSchema = z.object({
|
|
50
|
+
dataUrl: z.string().min(1),
|
|
51
|
+
filename: z.string().optional(),
|
|
52
|
+
});
|
|
27
53
|
const bindWorkflowSchema = z.object({
|
|
28
54
|
workflowPath: z.string().min(1).nullable(),
|
|
29
55
|
});
|
|
@@ -48,17 +74,25 @@ const UI_EVENT_NAMES = [
|
|
|
48
74
|
* carry arbitrary content). Keyed and value length-capped so the endpoint
|
|
49
75
|
* cannot be used as a vector to push large payloads through the remote batcher.
|
|
50
76
|
*/
|
|
51
|
-
const uiTrackDataValue = z.union([
|
|
52
|
-
|
|
77
|
+
const uiTrackDataValue = z.union([
|
|
78
|
+
z.string().max(256),
|
|
79
|
+
z.number(),
|
|
80
|
+
z.boolean(),
|
|
81
|
+
]);
|
|
82
|
+
const uiTrackDataSchema = z
|
|
83
|
+
.record(z.string().max(64), uiTrackDataValue)
|
|
84
|
+
.refine((obj) => Object.keys(obj).length <= 20, {
|
|
85
|
+
message: "data must have at most 20 keys",
|
|
86
|
+
});
|
|
53
87
|
const uiTrackSchema = z.object({
|
|
54
88
|
event: z.enum(UI_EVENT_NAMES),
|
|
55
89
|
data: uiTrackDataSchema.optional(),
|
|
56
90
|
harnessSessionId: z.string().optional(),
|
|
57
91
|
});
|
|
58
92
|
export function createRestRouter(options) {
|
|
59
|
-
const { sessionManager, adapters, version, identity, listWorkflows, listMacros } = options;
|
|
93
|
+
const { sessionManager, adapters, version, identity, listWorkflows, listMacros, } = options;
|
|
60
94
|
const router = Router();
|
|
61
|
-
router.use(express.json());
|
|
95
|
+
router.use(express.json({ limit: JSON_BODY_LIMIT_BYTES }));
|
|
62
96
|
router.get("/state", async (_req, res, next) => {
|
|
63
97
|
try {
|
|
64
98
|
const settings = await loadSettings(options.settingsPath);
|
|
@@ -72,11 +106,22 @@ export function createRestRouter(options) {
|
|
|
72
106
|
workflows: await listWorkflows(),
|
|
73
107
|
macros: listMacros(),
|
|
74
108
|
launchDir: options.launchDir,
|
|
75
|
-
...(options.availableHarnesses
|
|
109
|
+
...(options.availableHarnesses
|
|
110
|
+
? { availableHarnesses: options.availableHarnesses }
|
|
111
|
+
: {}),
|
|
76
112
|
...(options.listTasks ? { tasks: options.listTasks() } : {}),
|
|
77
|
-
...(options.firstRun !== undefined
|
|
78
|
-
|
|
79
|
-
|
|
113
|
+
...(options.firstRun !== undefined
|
|
114
|
+
? { firstRun: options.firstRun }
|
|
115
|
+
: {}),
|
|
116
|
+
...(options.consentSource !== undefined
|
|
117
|
+
? { consentSource: options.consentSource }
|
|
118
|
+
: {}),
|
|
119
|
+
...(options.consentEnvReason !== undefined
|
|
120
|
+
? { consentEnvReason: options.consentEnvReason }
|
|
121
|
+
: {}),
|
|
122
|
+
...(options.agentsBaseUrl
|
|
123
|
+
? { agentsBaseUrl: options.agentsBaseUrl }
|
|
124
|
+
: {}),
|
|
80
125
|
};
|
|
81
126
|
res.json(state);
|
|
82
127
|
}
|
|
@@ -118,7 +163,11 @@ export function createRestRouter(options) {
|
|
|
118
163
|
// existing session-creation path.
|
|
119
164
|
router.post("/sample-project", async (_req, res, next) => {
|
|
120
165
|
if (!options.seedSampleProject) {
|
|
121
|
-
res
|
|
166
|
+
res
|
|
167
|
+
.status(501)
|
|
168
|
+
.json({
|
|
169
|
+
error: "sample project seeding is not available on this server",
|
|
170
|
+
});
|
|
122
171
|
return;
|
|
123
172
|
}
|
|
124
173
|
try {
|
|
@@ -151,6 +200,7 @@ export function createRestRouter(options) {
|
|
|
151
200
|
experimental: adapter.experimental ?? false,
|
|
152
201
|
installed: await adapter.detectInstalled(),
|
|
153
202
|
installMcpPrompt: adapter.installMcpPrompt(),
|
|
203
|
+
imageInput: adapter.imageInput,
|
|
154
204
|
})));
|
|
155
205
|
res.json(entries);
|
|
156
206
|
}
|
|
@@ -272,7 +322,9 @@ export function createRestRouter(options) {
|
|
|
272
322
|
if (err instanceof ExternalHarnessError ||
|
|
273
323
|
err instanceof SessionAlreadyLiveError ||
|
|
274
324
|
err instanceof SessionNotResumeableError) {
|
|
275
|
-
res
|
|
325
|
+
res
|
|
326
|
+
.status(409)
|
|
327
|
+
.json({ error: err.message, code: err.code });
|
|
276
328
|
return;
|
|
277
329
|
}
|
|
278
330
|
next(err);
|
|
@@ -302,6 +354,93 @@ export function createRestRouter(options) {
|
|
|
302
354
|
}
|
|
303
355
|
res.json({ ok: true });
|
|
304
356
|
}
|
|
357
|
+
catch (err) {
|
|
358
|
+
if (err instanceof SessionNotReadyError ||
|
|
359
|
+
err instanceof ExternalHarnessError) {
|
|
360
|
+
res.status(409).json({ error: err.message, code: err.code });
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
next(err);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
/**
|
|
367
|
+
* POST /api/sessions/:id/image — attach an image (composer file picker,
|
|
368
|
+
* paste, or drag-drop) and relay it to the agent.
|
|
369
|
+
*
|
|
370
|
+
* The harness has no direct image-content-block channel to a CLI agent, so
|
|
371
|
+
* "relay as an image" means: write the decoded image into the session's
|
|
372
|
+
* project directory (under HARNESS_UPLOADS_DIR) and inject its absolute path
|
|
373
|
+
* into the pty (submit:false) — the supported agents read an image referenced
|
|
374
|
+
* by path in their prompt. The attach is only offered/accepted for harnesses
|
|
375
|
+
* whose adapter declares `imageInput`, so an image never gets relayed to an
|
|
376
|
+
* agent that can't consume it.
|
|
377
|
+
*/
|
|
378
|
+
router.post("/sessions/:id/image", imageUploadRateLimiter, async (req, res, next) => {
|
|
379
|
+
const parsed = attachImageSchema.safeParse(req.body);
|
|
380
|
+
if (!parsed.success) {
|
|
381
|
+
res.status(400).json({ error: parsed.error.message });
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
const session = sessionManager.get(req.params.id);
|
|
385
|
+
if (!session) {
|
|
386
|
+
res.status(404).json({ error: "session not found" });
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
// Respect the adapter's declared image support — reject rather than write a
|
|
390
|
+
// file the agent will never look at.
|
|
391
|
+
if (!getHarnessAdapter(session.harness).imageInput) {
|
|
392
|
+
res.status(400).json({ error: `Harness '${session.harness}' does not support image input` });
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const match = DATA_URL_RE.exec(parsed.data.dataUrl);
|
|
396
|
+
if (!match) {
|
|
397
|
+
res.status(400).json({ error: "dataUrl must be a base64 data: URL" });
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
const mediaType = match[1].toLowerCase();
|
|
401
|
+
if (!ALLOWED_IMAGE_MEDIA_TYPES.includes(mediaType)) {
|
|
402
|
+
res.status(400).json({
|
|
403
|
+
error: `Unsupported image type '${mediaType}' — allowed: ${ALLOWED_IMAGE_MEDIA_TYPES.join(", ")}`,
|
|
404
|
+
});
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
const buffer = Buffer.from(match[2], "base64");
|
|
408
|
+
if (buffer.byteLength === 0) {
|
|
409
|
+
res.status(400).json({ error: "image payload is empty" });
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
if (buffer.byteLength > MAX_IMAGE_UPLOAD_BYTES) {
|
|
413
|
+
res.status(413).json({
|
|
414
|
+
error: `Image is ${buffer.byteLength} bytes; the limit is ${MAX_IMAGE_UPLOAD_BYTES} bytes`,
|
|
415
|
+
});
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
// Confine the write to the session cwd; the stored name is a fresh uuid
|
|
419
|
+
// (never the client-supplied filename) so an image can't be written outside
|
|
420
|
+
// the uploads directory regardless of what the browser reported.
|
|
421
|
+
const uploadsDir = resolveWithinRoot(session.cwd, HARNESS_UPLOADS_DIR);
|
|
422
|
+
if (!uploadsDir) {
|
|
423
|
+
res.status(500).json({ error: "could not resolve the uploads directory" });
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
const ext = IMAGE_EXTENSIONS[mediaType];
|
|
427
|
+
const filePath = path.join(uploadsDir, `${randomUUID()}.${ext}`);
|
|
428
|
+
try {
|
|
429
|
+
await fs.mkdir(uploadsDir, { recursive: true });
|
|
430
|
+
await fs.writeFile(filePath, buffer);
|
|
431
|
+
// A trailing space so the user's own message doesn't run into the path.
|
|
432
|
+
const injected = await sessionManager.submitInput(req.params.id, `${filePath} `, false);
|
|
433
|
+
if (!injected) {
|
|
434
|
+
res.status(404).json({ error: "session not found or has no live pty" });
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
const response = {
|
|
438
|
+
path: filePath,
|
|
439
|
+
mediaType: mediaType,
|
|
440
|
+
bytes: buffer.byteLength,
|
|
441
|
+
};
|
|
442
|
+
res.json(response);
|
|
443
|
+
}
|
|
305
444
|
catch (err) {
|
|
306
445
|
if (err instanceof SessionNotReadyError || err instanceof ExternalHarnessError) {
|
|
307
446
|
res.status(409).json({ error: err.message, code: err.code });
|
package/dist/server/rest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/server/rest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/server/rest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs router — backs GET /api/runs/:executionId/{state,spend,transactions}.
|
|
3
|
+
*
|
|
4
|
+
* Returns a {@link RunView} (live status), {@link RunSpend} (per-step cost), or
|
|
5
|
+
* per-call {@link RunCall}[] (cost drill-down) for a running or finished prod
|
|
6
|
+
* agents execution, so the web canvas can poll live status, cost, and the
|
|
7
|
+
* "why is this costly" breakdown. The Sapiom API key is held server-side and
|
|
8
|
+
* never forwarded to the browser — the router fetches on behalf of the canvas
|
|
9
|
+
* via {@link createRunStateFetcher}, {@link createRunSpendFetcher}, and
|
|
10
|
+
* {@link createRunTransactionsFetcher}.
|
|
11
|
+
*/
|
|
12
|
+
import { Router } from "express";
|
|
13
|
+
export interface RunsRouterOpts {
|
|
14
|
+
/** Sapiom API key for the agents surface; null when the harness is not authenticated. */
|
|
15
|
+
apiKey: string | null;
|
|
16
|
+
/** Override the agents base URL (resolved from env by default). Test seam. */
|
|
17
|
+
baseUrl?: string;
|
|
18
|
+
/** Override the core base URL for the spend endpoint (resolved from env by default). Test seam. */
|
|
19
|
+
coreBaseUrl?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Injectable fetch implementation forwarded to the fetcher. Undocumented for
|
|
22
|
+
* prod — exists as a test seam only, mirroring the pattern used elsewhere in
|
|
23
|
+
* the harness resolver suite.
|
|
24
|
+
*/
|
|
25
|
+
fetchImpl?: typeof fetch;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create the runs router. Mounts `GET /api/runs/:executionId/state` and
|
|
29
|
+
* `GET /api/runs/:executionId/spend`, delegating to the respective fetchers
|
|
30
|
+
* for each upstream call.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createRunsRouter(opts: RunsRouterOpts): Router;
|
|
33
|
+
//# sourceMappingURL=runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/server/runs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMjC,MAAM,WAAW,cAAc;IAC7B,yFAAyF;IACzF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CA0G7D"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs router — backs GET /api/runs/:executionId/{state,spend,transactions}.
|
|
3
|
+
*
|
|
4
|
+
* Returns a {@link RunView} (live status), {@link RunSpend} (per-step cost), or
|
|
5
|
+
* per-call {@link RunCall}[] (cost drill-down) for a running or finished prod
|
|
6
|
+
* agents execution, so the web canvas can poll live status, cost, and the
|
|
7
|
+
* "why is this costly" breakdown. The Sapiom API key is held server-side and
|
|
8
|
+
* never forwarded to the browser — the router fetches on behalf of the canvas
|
|
9
|
+
* via {@link createRunStateFetcher}, {@link createRunSpendFetcher}, and
|
|
10
|
+
* {@link createRunTransactionsFetcher}.
|
|
11
|
+
*/
|
|
12
|
+
import { Router } from "express";
|
|
13
|
+
import { createRunStateFetcher } from "../core/run-state.js";
|
|
14
|
+
import { createRunSpendFetcher } from "../core/run-spend.js";
|
|
15
|
+
import { createRunTransactionsFetcher } from "../core/run-transactions.js";
|
|
16
|
+
/**
|
|
17
|
+
* Create the runs router. Mounts `GET /api/runs/:executionId/state` and
|
|
18
|
+
* `GET /api/runs/:executionId/spend`, delegating to the respective fetchers
|
|
19
|
+
* for each upstream call.
|
|
20
|
+
*/
|
|
21
|
+
export function createRunsRouter(opts) {
|
|
22
|
+
const router = Router();
|
|
23
|
+
const stateFetcher = createRunStateFetcher({
|
|
24
|
+
apiKey: opts.apiKey,
|
|
25
|
+
baseUrl: opts.baseUrl,
|
|
26
|
+
fetchImpl: opts.fetchImpl,
|
|
27
|
+
});
|
|
28
|
+
const spendFetcher = createRunSpendFetcher({
|
|
29
|
+
apiKey: opts.apiKey,
|
|
30
|
+
baseUrl: opts.coreBaseUrl,
|
|
31
|
+
fetchImpl: opts.fetchImpl,
|
|
32
|
+
});
|
|
33
|
+
const transactionsFetcher = createRunTransactionsFetcher({
|
|
34
|
+
apiKey: opts.apiKey,
|
|
35
|
+
baseUrl: opts.coreBaseUrl,
|
|
36
|
+
fetchImpl: opts.fetchImpl,
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* GET /api/runs/:executionId/state
|
|
40
|
+
*
|
|
41
|
+
* Returns a {@link RunView} for the given execution id. The harness fetches
|
|
42
|
+
* the execution projection from the agents surface (key stays server-side)
|
|
43
|
+
* and maps it through decodeExecutionProjection → renderRunState before
|
|
44
|
+
* responding. Designed for polling by the web canvas.
|
|
45
|
+
*
|
|
46
|
+
* 200 RunView JSON — execution found and decoded
|
|
47
|
+
* 400 executionId missing or empty
|
|
48
|
+
* 404 execution not found on the agents surface
|
|
49
|
+
* 502 upstream error or decode failure
|
|
50
|
+
* 503 harness is not signed in to Sapiom
|
|
51
|
+
*/
|
|
52
|
+
router.get("/api/runs/:executionId/state", async (req, res) => {
|
|
53
|
+
const id = req.params.executionId;
|
|
54
|
+
if (!id || typeof id !== "string" || id.trim() === "") {
|
|
55
|
+
res.status(400).json({ error: "executionId is required" });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const result = await stateFetcher.fetch(id);
|
|
59
|
+
if (result.ok) {
|
|
60
|
+
res.json(result.runView);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
res.status(result.status).json({ error: result.error });
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* GET /api/runs/:executionId/spend
|
|
68
|
+
*
|
|
69
|
+
* Returns a {@link RunSpend} for the given execution id, fetched from the
|
|
70
|
+
* core surface (api.sapiom.ai). Cost settles just after a run finishes, so
|
|
71
|
+
* the SPA polls this endpoint a few extra times after terminal state. The key
|
|
72
|
+
* stays server-side and never reaches the browser.
|
|
73
|
+
*
|
|
74
|
+
* 200 RunSpend JSON — spend found and decoded
|
|
75
|
+
* 400 executionId missing or empty
|
|
76
|
+
* 404 spend not found on the core surface
|
|
77
|
+
* 502 upstream error or decode failure
|
|
78
|
+
* 503 harness is not signed in to Sapiom
|
|
79
|
+
*/
|
|
80
|
+
router.get("/api/runs/:executionId/spend", async (req, res) => {
|
|
81
|
+
const id = req.params.executionId;
|
|
82
|
+
if (!id || typeof id !== "string" || id.trim() === "") {
|
|
83
|
+
res.status(400).json({ error: "executionId is required" });
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const result = await spendFetcher.fetch(id);
|
|
87
|
+
if (result.ok) {
|
|
88
|
+
res.json(result.spend);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
res.status(result.status).json({ error: result.error });
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* GET /api/runs/:executionId/transactions
|
|
96
|
+
*
|
|
97
|
+
* Returns the per-call cost drill-down ({@link RunCall}[]) for the given
|
|
98
|
+
* execution — the individual billable capability calls behind each step's
|
|
99
|
+
* cost, so the canvas can answer "why is this step costly". Provider-agnostic
|
|
100
|
+
* (capability labels only) and key-safe (fetched server-side).
|
|
101
|
+
*
|
|
102
|
+
* 200 RunCall[] JSON — transactions found and mapped
|
|
103
|
+
* 400 executionId missing or empty
|
|
104
|
+
* 404 transactions not found on the core surface
|
|
105
|
+
* 502 upstream error or decode failure
|
|
106
|
+
* 503 harness is not signed in to Sapiom
|
|
107
|
+
*/
|
|
108
|
+
router.get("/api/runs/:executionId/transactions", async (req, res) => {
|
|
109
|
+
const id = req.params.executionId;
|
|
110
|
+
if (!id || typeof id !== "string" || id.trim() === "") {
|
|
111
|
+
res.status(400).json({ error: "executionId is required" });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const result = await transactionsFetcher.fetch(id);
|
|
115
|
+
if (result.ok) {
|
|
116
|
+
res.json(result.calls);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
res.status(result.status).json({ error: result.error });
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
return router;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/server/runs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAiB3E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,WAAW;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;QACvD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,WAAW;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACnE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|