Initial import NDC_1C
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.buildAccountingAgentRouter = buildAccountingAgentRouter;
|
||||
const express_1 = require("express");
|
||||
const http_1 = require("../utils/http");
|
||||
const PREFIX = "/api/accounting-agent/v1";
|
||||
function buildAccountingAgentRouter(services) {
|
||||
const router = (0, express_1.Router)();
|
||||
const runtime = services.runtimeAdapter;
|
||||
router.post(`${PREFIX}/runs/start`, (req, res, next) => {
|
||||
try {
|
||||
const body = (req.body ?? {});
|
||||
const run = runtime.startRun({
|
||||
sessionId: body.sessionId ? String(body.sessionId) : undefined,
|
||||
initiator: body.initiator ? String(body.initiator) : "operator",
|
||||
source: body.source ? String(body.source) : "gui",
|
||||
metadata: (body.metadata ?? {}),
|
||||
idempotencyKey: body.idempotencyKey ? String(body.idempotencyKey) : undefined
|
||||
});
|
||||
(0, http_1.created)(res, {
|
||||
ok: true,
|
||||
sessionId: run.sessionId,
|
||||
runId: run.runId,
|
||||
status: run.status,
|
||||
run
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.post(`${PREFIX}/runs/finish`, (req, res, next) => {
|
||||
try {
|
||||
const body = (req.body ?? {});
|
||||
const status = String(body.status ?? "DONE");
|
||||
if (!["DONE", "ERROR", "CANCELLED"].includes(status)) {
|
||||
throw new http_1.ApiError("INVALID_STATUS", `Invalid finish status: ${status}`, 400);
|
||||
}
|
||||
const run = runtime.finishRun({
|
||||
runId: String(body.runId ?? ""),
|
||||
status,
|
||||
source: body.source ? String(body.source) : "gui",
|
||||
reason: body.reason ? String(body.reason) : undefined,
|
||||
metadata: (body.metadata ?? {}),
|
||||
idempotencyKey: body.idempotencyKey ? String(body.idempotencyKey) : undefined
|
||||
});
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
run
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.get(`${PREFIX}/runs`, (_req, res) => {
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
items: runtime.listRuns()
|
||||
});
|
||||
});
|
||||
router.get(`${PREFIX}/runs/:runId`, (req, res, next) => {
|
||||
try {
|
||||
const run = runtime.getRun(String(req.params.runId));
|
||||
if (!run) {
|
||||
throw new http_1.ApiError("RUN_NOT_FOUND", `Run not found: ${req.params.runId}`, 404);
|
||||
}
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
run
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.post(`${PREFIX}/tasks/enqueue`, (req, res, next) => {
|
||||
try {
|
||||
const body = (req.body ?? {});
|
||||
const task = runtime.enqueueTask({
|
||||
runId: String(body.runId ?? ""),
|
||||
payload: (body.payload ?? {}),
|
||||
source: body.source ? String(body.source) : "gui",
|
||||
idempotencyKey: body.idempotencyKey ? String(body.idempotencyKey) : undefined
|
||||
});
|
||||
(0, http_1.created)(res, {
|
||||
ok: true,
|
||||
task
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.post(`${PREFIX}/tasks/claim`, (_req, res) => {
|
||||
const task = runtime.claimTask();
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
task
|
||||
});
|
||||
});
|
||||
router.post(`${PREFIX}/tasks/:taskId/complete`, (req, res, next) => {
|
||||
try {
|
||||
const body = (req.body ?? {});
|
||||
const task = runtime.completeTask({
|
||||
taskId: String(req.params.taskId),
|
||||
result: (body.result ?? {}),
|
||||
source: body.source ? String(body.source) : "worker",
|
||||
idempotencyKey: body.idempotencyKey ? String(body.idempotencyKey) : undefined
|
||||
});
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
task
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.post(`${PREFIX}/tasks/:taskId/error`, (req, res, next) => {
|
||||
try {
|
||||
const body = (req.body ?? {});
|
||||
const task = runtime.failTask({
|
||||
taskId: String(req.params.taskId),
|
||||
error: {
|
||||
code: String(body.code ?? "TASK_ERROR"),
|
||||
message: String(body.message ?? "Task failed"),
|
||||
details: body.details
|
||||
},
|
||||
source: body.source ? String(body.source) : "worker",
|
||||
idempotencyKey: body.idempotencyKey ? String(body.idempotencyKey) : undefined
|
||||
});
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
task
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
next(error);
|
||||
}
|
||||
});
|
||||
router.get(`${PREFIX}/results`, (_req, res) => {
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
items: runtime.getResults()
|
||||
});
|
||||
});
|
||||
router.get(`${PREFIX}/trace/run/:runId`, (req, res) => {
|
||||
(0, http_1.ok)(res, {
|
||||
ok: true,
|
||||
items: runtime.getRunTrace(String(req.params.runId))
|
||||
});
|
||||
});
|
||||
router.get(`${PREFIX}/health`, (_req, res) => {
|
||||
(0, http_1.ok)(res, runtime.health());
|
||||
});
|
||||
return router;
|
||||
}
|
||||
Reference in New Issue
Block a user