mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-15 18:30:39 +09:00
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:
parent
21b7bc8da0
commit
a90063415e
14 changed files with 605 additions and 67 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue