"use strict"; /** * 执行记录 REST API * Hono路由:Agent执行日志的CRUD接口 * * 接口列表: * GET /api/projects/:id/executions - 获取项目执行记录 * GET /api/projects/:id/executions/:eid - 获取单条执行记录 * POST /api/projects/:id/executions - 创建执行记录 * GET /api/projects/:id/decisions - 获取决策记录 * GET /api/projects/:id/knowledge - 获取知识库摘要 */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.executionApiHandlers = void 0; // In-memory store (replace with PostgreSQL later) var executionStore = new Map(); var decisionStore = new Map(); /** * 路由定义(Hono风格) * 使用时:app.route('/api', executionRoutes) */ exports.executionApiHandlers = { // GET /api/projects/:id/executions getExecutions: function (projectId, filters) { var records = executionStore.get(projectId) || []; if (filters === null || filters === void 0 ? void 0 : filters.agentId) { records = records.filter(function (r) { return r.agentId === filters.agentId; }); } if (filters === null || filters === void 0 ? void 0 : filters.taskId) { records = records.filter(function (r) { return r.taskId === filters.taskId; }); } var offset = (filters === null || filters === void 0 ? void 0 : filters.offset) || 0; var limit = (filters === null || filters === void 0 ? void 0 : filters.limit) || 50; return records.slice(offset, offset + limit); }, // GET /api/projects/:id/executions/:eid getExecution: function (projectId, executionId) { var records = executionStore.get(projectId) || []; return records.find(function (r) { return r.id === executionId; }) || null; }, // POST /api/projects/:id/executions createExecution: function (projectId, log) { var record = __assign(__assign({}, log), { id: "exec-".concat(Date.now(), "-").concat(Math.random().toString(36).slice(2, 8)), createdAt: new Date().toISOString() }); var existing = executionStore.get(projectId) || []; existing.push(record); executionStore.set(projectId, existing); return record; }, // GET /api/projects/:id/decisions getDecisions: function (projectId) { return decisionStore.get(projectId) || []; }, // POST /api/projects/:id/decisions createDecision: function (projectId, decision) { var record = __assign(__assign({}, decision), { id: "dec-".concat(Date.now(), "-").concat(Math.random().toString(36).slice(2, 8)), createdAt: new Date().toISOString() }); var existing = decisionStore.get(projectId) || []; existing.push(record); decisionStore.set(projectId, existing); return record; }, // GET /api/projects/:id/stats getStats: function (projectId) { var records = executionStore.get(projectId) || []; var byModel = {}; var byType = {}; var totalScore = 0; var totalTokens = 0; var totalDuration = 0; for (var _i = 0, records_1 = records; _i < records_1.length; _i++) { var r = records_1[_i]; byModel[r.model] = (byModel[r.model] || 0) + 1; totalScore += r.score; totalTokens += r.tokensUsed; totalDuration += r.durationMs; } return { totalExecutions: records.length, avgScore: records.length > 0 ? Math.round((totalScore / records.length) * 10) / 10 : 0, totalTokens: totalTokens, avgDurationMs: records.length > 0 ? Math.round(totalDuration / records.length) : 0, byModel: byModel, byType: byType, }; }, };