Server: migration prompts, structured logging, heartbeat reaping, and issue-run tracking
Replace auto-migrate-if-empty with interactive migration flow that inspects pending migrations and prompts before applying. Add pino-pretty for structured console + file logging. Add reapOrphanedRuns to clean up stuck heartbeat runs on startup and periodically. Track runId through auth middleware, activity logs, and all mutation routes. Add issue-run cross-reference queries, live-run and active-run endpoints for issues, issue identifier lookup, reopen-via-comment flow, and done/cancelled -> todo status transitions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,11 @@ export function actorMiddleware(db: Db): RequestHandler {
|
||||
return async (req, _res, next) => {
|
||||
req.actor = { type: "board", userId: "board" };
|
||||
|
||||
const runIdHeader = req.header("x-paperclip-run-id");
|
||||
|
||||
const authHeader = req.header("authorization");
|
||||
if (!authHeader?.toLowerCase().startsWith("bearer ")) {
|
||||
if (runIdHeader) req.actor.runId = runIdHeader;
|
||||
next();
|
||||
return;
|
||||
}
|
||||
@@ -60,6 +63,7 @@ export function actorMiddleware(db: Db): RequestHandler {
|
||||
agentId: claims.sub,
|
||||
companyId: claims.company_id,
|
||||
keyId: undefined,
|
||||
runId: runIdHeader || undefined,
|
||||
};
|
||||
next();
|
||||
return;
|
||||
@@ -75,6 +79,7 @@ export function actorMiddleware(db: Db): RequestHandler {
|
||||
agentId: key.agentId,
|
||||
companyId: key.companyId,
|
||||
keyId: key.id,
|
||||
runId: runIdHeader || undefined,
|
||||
};
|
||||
|
||||
next();
|
||||
|
||||
Reference in New Issue
Block a user