@kky42/pievo-server 2.0.3 → 2.0.4
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/.output/nitro.json +1 -1
- package/.output/public/assets/{LoopView-CCYqXrKq.js → LoopView-Pbp2YtUu.js} +1 -1
- package/.output/public/assets/{Modal-BhRzAXQg.js → Modal-B3xpEtcf.js} +1 -1
- package/.output/public/assets/{SignIn-CV3jqX_8.js → SignIn-9vsaKv_p.js} +1 -1
- package/.output/public/assets/{actionUi-BRtdWVvO.js → actionUi-DDDfD0WX.js} +1 -1
- package/.output/public/assets/app-CStTBRt2.css +2 -0
- package/.output/public/assets/{artifactView-DekEs5ME.js → artifactView-BV-yQVrj.js} +1 -1
- package/.output/public/assets/{index-BATGA0jG.js → index-49hAH0gP.js} +4 -4
- package/.output/public/assets/{invite._token-CQgv8lTC.js → invite._token-C3t4JfAY.js} +1 -1
- package/.output/public/assets/{invite._token-Dp2HL9X5.js → invite._token-C891oGkK.js} +1 -1
- package/.output/public/assets/{loopApi-5s2-kCnu.js → loopApi-C_Dtw-nL.js} +1 -1
- package/.output/public/assets/loops._loopId-DD4fKGMu.js +4 -0
- package/.output/public/assets/{loops._loopId_.runs._runId-BNN-dLrW.js → loops._loopId_.runs._runId-DoPcCQy7.js} +1 -1
- package/.output/public/assets/{notifyFns-DuBElaqG.js → notifyFns-BaukhLAg.js} +1 -1
- package/.output/public/assets/{preload-helper-3xcHsDtt.js → preload-helper--VCqDT5m.js} +2 -2
- package/.output/public/assets/{routes-YnrsFY5X.js → routes-BS4N7Lnf.js} +1 -1
- package/.output/public/assets/{routes-CmuCVIIS.js → routes-DsdcURfk.js} +1 -1
- package/.output/public/assets/{t._teamId-Bi-C9s5j.js → t._teamId-C9uEyAh_.js} +1 -1
- package/.output/public/assets/{t._teamId-BlE4mCSj.js → t._teamId-DSYlMX_v.js} +1 -1
- package/.output/public/assets/ui-Gb1413-F.js +1 -0
- package/.output/server/_ssr/{DashboardView-2eNPqWcy.mjs → DashboardView-CQdjYy03.mjs} +7 -7
- package/.output/server/_ssr/{LoopPlaybook-CnQ8Qgyf.mjs → LoopPlaybook-C86vJIjZ.mjs} +3 -3
- package/.output/server/_ssr/{LoopView-DM30OPCN.mjs → LoopView-cDyjmf1B.mjs} +7 -7
- package/.output/server/_ssr/{Modal-B7gBr5Pm.mjs → Modal-Bc_5TYGr.mjs} +2 -2
- package/.output/server/_ssr/{SignIn-CaAi4_mk.mjs → SignIn-BQQiD3Ss.mjs} +3 -3
- package/.output/server/_ssr/{actionUi-Be7dmMxb.mjs → actionUi-BKF6xI3d.mjs} +2 -2
- package/.output/server/_ssr/{adapters-CHURWoZx.mjs → adapters-N4-yQ1vK.mjs} +2 -2
- package/.output/server/_ssr/{artifactFiles-D6b_RP78.mjs → artifactFiles-Dl1EaUtJ.mjs} +3 -3
- package/.output/server/_ssr/{artifactView-CYV1r48i.mjs → artifactView-DX4P3Krh.mjs} +2 -2
- package/.output/server/_ssr/artifacts-DzWJrBxK.mjs +2 -0
- package/.output/server/_ssr/{auth-B_OxPpFr.mjs → auth-CbAfO4Ne.mjs} +9 -9
- package/.output/server/_ssr/{boot-BNoivm21.mjs → boot-BZ-YyUiD.mjs} +1165 -155
- package/.output/server/_ssr/boot-BigKgB8p.mjs +2 -0
- package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-B3RHdVjo.mjs → bun-sqlite-dialect-BW9W1_Ps-B67XLJZt.mjs} +2 -2
- package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-DpVe1foU.mjs → d1-sqlite-dialect-BLC8LXE6-nff_yHzH.mjs} +2 -2
- package/.output/server/_ssr/db-BF8vSovA.mjs +2 -0
- package/.output/server/_ssr/{dist-BTx1ljg7.mjs → dist-BGjVt6NE.mjs} +2 -2
- package/.output/server/_ssr/{factory-TSnFcS96.mjs → factory-DNeo3vVt.mjs} +2 -2
- package/.output/server/_ssr/{invite._token-CDpO3cfB.mjs → invite._token-Bipap1cl.mjs} +6 -6
- package/.output/server/_ssr/{invite._token-CvqaKH2R.mjs → invite._token-BlbVjz-o.mjs} +2 -2
- package/.output/server/_ssr/{invite._token-DWOPXXLS.mjs → invite._token-z3PzCMzb.mjs} +5 -5
- package/.output/server/_ssr/{kysely-adapter-BWjzeCGK.mjs → kysely-adapter-C1ww7PKr.mjs} +1 -1
- package/.output/server/_ssr/logger-C7aewtve.mjs +2 -0
- package/.output/server/_ssr/{loopApi-BfMnXaKT.mjs → loopApi-7MTSs6hy.mjs} +5 -5
- package/.output/server/_ssr/{loopApi-Cpm8YV3U.mjs → loopApi-JzGGZZp2.mjs} +20 -20
- package/.output/server/_ssr/{loops._loopId-C-y4Pux_.mjs → loops._loopId-CJxQ0EG4.mjs} +4 -4
- package/.output/server/_ssr/{loops._loopId-DfrHw2mZ.mjs → loops._loopId-DFkyTJR3.mjs} +84 -84
- package/.output/server/_ssr/{loops._loopId_.runs._runId-C9d0EC2Q.mjs → loops._loopId_.runs._runId-DkG-ZCD1.mjs} +7 -7
- package/.output/server/_ssr/{loops._loopId_.runs._runId-BXyyqXwX.mjs → loops._loopId_.runs._runId-lTigSOmT.mjs} +4 -4
- package/.output/server/_ssr/{machineFns-CRbwYxD3.mjs → machineFns-Dda8-rBY.mjs} +3 -3
- package/.output/server/_ssr/{node-sqlite-dialect-B10G6C4W.mjs → node-sqlite-dialect-BS2OAFJh.mjs} +2 -2
- package/.output/server/_ssr/{notifyFns-CtmSVNmE.mjs → notifyFns-C6eyIFZE.mjs} +5 -5
- package/.output/server/_ssr/{notifyFns-DvH4C-GH.mjs → notifyFns-C9N0QLe3.mjs} +3 -3
- package/.output/server/_ssr/{router-B4ipreZ4.mjs → router-DIfoLu1r.mjs} +30 -30
- package/.output/server/_ssr/{routes-DKox93l0.mjs → routes-Bx0bRxt9.mjs} +2 -2
- package/.output/server/_ssr/{routes-iHT61OkI.mjs → routes-DYJB0rKC.mjs} +5 -5
- package/.output/server/_ssr/{routes-l7tUe3lr.mjs → routes-bWgX0tRE.mjs} +6 -6
- package/.output/server/_ssr/runDiff-B9t7ouYj.mjs +2 -0
- package/.output/server/_ssr/ssr.mjs +51 -51
- package/.output/server/_ssr/store-Dw4LiFjE.mjs +2 -0
- package/.output/server/_ssr/{t._teamId-BPK2mrN3.mjs → t._teamId-B_ieXBNF.mjs} +6 -6
- package/.output/server/_ssr/{t._teamId-jO8dUmSQ.mjs → t._teamId-C_KZZ4Xh.mjs} +5 -5
- package/.output/server/_ssr/{t._teamId-B3g0Cs8B.mjs → t._teamId-D9nCEa2h.mjs} +2 -2
- package/.output/server/_ssr/{teamFns-D4I-0dEB.mjs → teamFns-BBIbatdZ.mjs} +2 -2
- package/.output/server/_ssr/{teamFns-6zjFV7lM.mjs → teamFns-O3ZmtZL2.mjs} +3 -3
- package/.output/server/_ssr/tokens-DI_pklQB.mjs +2 -0
- package/.output/server/_ssr/{ui-CI-OeTr7.mjs → ui-B6mE5-5v.mjs} +6 -6
- package/.output/server/{_tanstack-start-manifest_v-CxHUYCv8.mjs → _tanstack-start-manifest_v-DKnfwHZr.mjs} +27 -27
- package/.output/server/drizzle/0015_run_history_foundation.sql +43 -0
- package/.output/server/drizzle/meta/_journal.json +7 -0
- package/.output/server/index.mjs +107 -107
- package/drizzle/0015_run_history_foundation.sql +43 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/.output/public/assets/app-B03JVnFn.css +0 -2
- package/.output/public/assets/loops._loopId-C9vRjZ8W.js +0 -4
- package/.output/public/assets/ui-By58RJgB.js +0 -1
- package/.output/server/_ssr/artifacts-CXMpBzMY.mjs +0 -2
- package/.output/server/_ssr/boot-C9VAWt9Z.mjs +0 -2
- package/.output/server/_ssr/db-C11vQNxP.mjs +0 -2
- package/.output/server/_ssr/logger-DE_PU5bE.mjs +0 -2
- package/.output/server/_ssr/runDiff-Bohd5W5R.mjs +0 -113
- package/.output/server/_ssr/store-Ck7kCAGf.mjs +0 -2
- package/.output/server/_ssr/tokens-oJm6yFyt.mjs +0 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
-
import { c as getAuthState, h as listTemplates, t as canViewTeam } from "./loopApi-
|
|
3
|
-
import { a as authClient } from "./LoopPlaybook-
|
|
4
|
-
import { n as fetchLiveData } from "./DashboardView-
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-
|
|
6
|
-
var $$splitErrorComponentImporter = () => import("./t._teamId-
|
|
7
|
-
var $$splitComponentImporter = () => import("./t._teamId-
|
|
2
|
+
import { c as getAuthState, h as listTemplates, t as canViewTeam } from "./loopApi-7MTSs6hy.mjs";
|
|
3
|
+
import { a as authClient } from "./LoopPlaybook-C86vJIjZ.mjs";
|
|
4
|
+
import { n as fetchLiveData } from "./DashboardView-CQdjYy03.mjs";
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-B_ieXBNF.js
|
|
6
|
+
var $$splitErrorComponentImporter = () => import("./t._teamId-D9nCEa2h.mjs");
|
|
7
|
+
var $$splitComponentImporter = () => import("./t._teamId-C_KZZ4Xh.mjs");
|
|
8
8
|
/**
|
|
9
9
|
* The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
|
|
10
10
|
* to the team in the PATH, so a view is bookmarkable and each browser tab keeps
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { g as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
|
-
import { s as useSession } from "./LoopPlaybook-
|
|
3
|
-
import { t as SignIn } from "./SignIn-
|
|
4
|
-
import { t as DashboardView } from "./DashboardView-
|
|
5
|
-
import { t as Route } from "./t._teamId-
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-
|
|
2
|
+
import { s as useSession } from "./LoopPlaybook-C86vJIjZ.mjs";
|
|
3
|
+
import { t as SignIn } from "./SignIn-BQQiD3Ss.mjs";
|
|
4
|
+
import { t as DashboardView } from "./DashboardView-CQdjYy03.mjs";
|
|
5
|
+
import { t as Route } from "./t._teamId-B_ieXBNF.mjs";
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-C_KZZ4Xh.js
|
|
7
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
8
8
|
/**
|
|
9
9
|
* The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
2
|
import { f as useRouter } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
3
|
-
import { r as LoadErrorCard } from "./actionUi-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-
|
|
3
|
+
import { r as LoadErrorCard } from "./actionUi-BKF6xI3d.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/t._teamId-D9nCEa2h.js
|
|
5
5
|
var import_jsx_runtime = require_jsx_runtime();
|
|
6
6
|
/**
|
|
7
7
|
* The explicit-team dashboard (`/t/<teamId>`, Phase 2): the same dashboard scoped
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as createServerFn } from "./ssr.mjs";
|
|
2
|
-
import { r as createSsrRpc } from "./loopApi-
|
|
3
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/teamFns-
|
|
2
|
+
import { r as createSsrRpc } from "./loopApi-7MTSs6hy.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/teamFns-BBIbatdZ.js
|
|
4
4
|
/**
|
|
5
5
|
* Team management server functions — the thin RPC surface over `teamAdmin`
|
|
6
6
|
* (which holds all the rules + authorization). Every mutating fn takes an
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { D as createInvite$1, Dt as listTeamMembers, Ht as renameTeam$2, I as deleteTeamCascade, L as ensureServer, Ot as listTeamsForUser, P as deleteInvite, S as countLoopsForTeam, Vt as removeTeamMemberGuarded, Z as getInvite, it as getTeamMember, k as createTeam$2, m as addTeamMember$1, nn as userByEmail, qt as setTeamMemberRoleGuarded, rt as getTeam, ut as isPersonalTeam, wt as listPendingInvites, zt as redeemInviteAtomic } from "./boot-BZ-YyUiD.mjs";
|
|
2
2
|
import { n as createServerFn } from "./ssr.mjs";
|
|
3
|
-
import { authEnabled, currentUserId } from "./auth-
|
|
3
|
+
import { authEnabled, currentUserId } from "./auth-CbAfO4Ne.mjs";
|
|
4
4
|
import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/teamFns-
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/teamFns-O3ZmtZL2.js
|
|
7
7
|
/**
|
|
8
8
|
* Team lifecycle + membership logic (design report §2/§4/§5, all six §7 decisions
|
|
9
9
|
* approved as recommended). This module is the ONE authorization + rules
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as __toESM } from "../_runtime.mjs";
|
|
2
2
|
import { g as require_jsx_runtime, h as require_react } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/ui-
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/ui-B6mE5-5v.js
|
|
4
4
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
5
5
|
var import_jsx_runtime = require_jsx_runtime();
|
|
6
6
|
var fmt = (t) => t ? new Date(t).toLocaleString() : "—";
|
|
@@ -116,9 +116,9 @@ var ST = {
|
|
|
116
116
|
c: "var(--color-run-active-exec)",
|
|
117
117
|
label: "Running…"
|
|
118
118
|
},
|
|
119
|
-
"active-
|
|
120
|
-
c: "var(--color-run-active-
|
|
121
|
-
label: "
|
|
119
|
+
"active-steer": {
|
|
120
|
+
c: "var(--color-run-active-steer)",
|
|
121
|
+
label: "Steering…"
|
|
122
122
|
},
|
|
123
123
|
"active-evolve": {
|
|
124
124
|
c: "var(--color-run-active-evolve)",
|
|
@@ -126,8 +126,8 @@ var ST = {
|
|
|
126
126
|
}
|
|
127
127
|
};
|
|
128
128
|
var statusMeta = (k) => k === "kept" || k === "no-change" || k === "blocked" ? ST[k] : void 0;
|
|
129
|
-
var roleWord = (r) => r.role === "
|
|
130
|
-
var keptLabel = (r) => roleWord(r) === "
|
|
129
|
+
var roleWord = (r) => r.role === "steer" ? "steer" : r.role === "evolve" ? "evolve" : "exec";
|
|
130
|
+
var keptLabel = (r) => roleWord(r) === "steer" ? "Steered" : roleWord(r) === "evolve" ? "Improved" : "Kept";
|
|
131
131
|
function dotColor(r) {
|
|
132
132
|
if (r.running) return ST[`active-${roleWord(r)}`].c;
|
|
133
133
|
if (r.status === "blocked") return ST.blocked.c;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/_tanstack-start-manifest_v-DKnfwHZr.js
|
|
2
2
|
var tsrStartManifest = () => ({ routes: {
|
|
3
3
|
__root__: {
|
|
4
4
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/__root.tsx",
|
|
@@ -25,69 +25,69 @@ var tsrStartManifest = () => ({ routes: {
|
|
|
25
25
|
"/loops/$loopId_/runs/$runId"
|
|
26
26
|
],
|
|
27
27
|
preloads: [
|
|
28
|
-
"/assets/index-
|
|
28
|
+
"/assets/index-49hAH0gP.js",
|
|
29
29
|
"/assets/jsx-runtime-BseJUIpC.js",
|
|
30
|
-
"/assets/preload-helper
|
|
31
|
-
"/assets/Modal-
|
|
32
|
-
"/assets/notifyFns-
|
|
30
|
+
"/assets/preload-helper--VCqDT5m.js",
|
|
31
|
+
"/assets/Modal-B3xpEtcf.js",
|
|
32
|
+
"/assets/notifyFns-BaukhLAg.js",
|
|
33
33
|
"/assets/useRouter-DsjH8G0p.js",
|
|
34
|
-
"/assets/loopApi-
|
|
35
|
-
"/assets/ui-
|
|
34
|
+
"/assets/loopApi-C_Dtw-nL.js",
|
|
35
|
+
"/assets/ui-Gb1413-F.js",
|
|
36
36
|
"/assets/lifecycleUi-C3k2MlX8.js"
|
|
37
37
|
],
|
|
38
38
|
scripts: [{ attrs: {
|
|
39
39
|
type: "module",
|
|
40
40
|
async: !0,
|
|
41
|
-
src: "/assets/index-
|
|
41
|
+
src: "/assets/index-49hAH0gP.js"
|
|
42
42
|
} }]
|
|
43
43
|
},
|
|
44
44
|
"/": {
|
|
45
45
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/index.tsx",
|
|
46
46
|
children: void 0,
|
|
47
47
|
preloads: [
|
|
48
|
-
"/assets/routes-
|
|
49
|
-
"/assets/
|
|
50
|
-
"/assets/routes-
|
|
51
|
-
"/assets/
|
|
48
|
+
"/assets/routes-BS4N7Lnf.js",
|
|
49
|
+
"/assets/SignIn-9vsaKv_p.js",
|
|
50
|
+
"/assets/routes-DsdcURfk.js",
|
|
51
|
+
"/assets/actionUi-DDDfD0WX.js"
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"/invite/$token": {
|
|
55
55
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/invite.$token.tsx",
|
|
56
56
|
children: void 0,
|
|
57
57
|
preloads: [
|
|
58
|
-
"/assets/invite._token-
|
|
59
|
-
"/assets/actionUi-
|
|
60
|
-
"/assets/invite._token-
|
|
61
|
-
"/assets/SignIn-
|
|
58
|
+
"/assets/invite._token-C3t4JfAY.js",
|
|
59
|
+
"/assets/actionUi-DDDfD0WX.js",
|
|
60
|
+
"/assets/invite._token-C891oGkK.js",
|
|
61
|
+
"/assets/SignIn-9vsaKv_p.js"
|
|
62
62
|
]
|
|
63
63
|
},
|
|
64
64
|
"/loops/$loopId": {
|
|
65
65
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/loops.$loopId.tsx",
|
|
66
66
|
children: void 0,
|
|
67
67
|
preloads: [
|
|
68
|
-
"/assets/loops._loopId-
|
|
69
|
-
"/assets/artifactView-
|
|
70
|
-
"/assets/SignIn-
|
|
71
|
-
"/assets/actionUi-
|
|
68
|
+
"/assets/loops._loopId-DD4fKGMu.js",
|
|
69
|
+
"/assets/artifactView-BV-yQVrj.js",
|
|
70
|
+
"/assets/SignIn-9vsaKv_p.js",
|
|
71
|
+
"/assets/actionUi-DDDfD0WX.js"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
74
|
"/t/$teamId": {
|
|
75
75
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/t.$teamId.tsx",
|
|
76
76
|
children: void 0,
|
|
77
77
|
preloads: [
|
|
78
|
-
"/assets/t._teamId-
|
|
79
|
-
"/assets/actionUi-
|
|
80
|
-
"/assets/t._teamId-
|
|
81
|
-
"/assets/SignIn-
|
|
78
|
+
"/assets/t._teamId-C9uEyAh_.js",
|
|
79
|
+
"/assets/actionUi-DDDfD0WX.js",
|
|
80
|
+
"/assets/t._teamId-DSYlMX_v.js",
|
|
81
|
+
"/assets/SignIn-9vsaKv_p.js"
|
|
82
82
|
]
|
|
83
83
|
},
|
|
84
84
|
"/loops/$loopId_/runs/$runId": {
|
|
85
85
|
filePath: "/Users/kky/dev/evo/packages/server/src/routes/loops.$loopId_.runs.$runId.tsx",
|
|
86
86
|
children: void 0,
|
|
87
87
|
preloads: [
|
|
88
|
-
"/assets/loops._loopId_.runs._runId-
|
|
89
|
-
"/assets/SignIn-
|
|
90
|
-
"/assets/actionUi-
|
|
88
|
+
"/assets/loops._loopId_.runs._runId-DoPcCQy7.js",
|
|
89
|
+
"/assets/SignIn-9vsaKv_p.js",
|
|
90
|
+
"/assets/actionUi-DDDfD0WX.js"
|
|
91
91
|
]
|
|
92
92
|
}
|
|
93
93
|
} });
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
-- Complete the breaking run-role rename before new runtime code reads history.
|
|
2
|
+
UPDATE "runs" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
|
|
3
|
+
UPDATE "run_leases" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
|
|
4
|
+
UPDATE "loops"
|
|
5
|
+
SET "pause_cause" = jsonb_set("pause_cause", '{role}', '"steer"'::jsonb)
|
|
6
|
+
WHERE "pause_cause"->>'role' = 'edit';--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "loops" ADD COLUMN "last_run_index" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "runs" ADD COLUMN "run_index" integer;--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "runs" ADD COLUMN "model" text;--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "runs" ADD COLUMN "reasoning_effort" text;--> statement-breakpoint
|
|
11
|
+
-- Terminal rows are durable history. Number them by terminal timestamp + id;
|
|
12
|
+
-- an in-flight row follows all terminal evidence so it keeps the next number.
|
|
13
|
+
WITH ranked AS (
|
|
14
|
+
SELECT "id", row_number() OVER (
|
|
15
|
+
PARTITION BY "loop_id"
|
|
16
|
+
ORDER BY CASE WHEN "phase" IN ('done', 'error', 'canceled') THEN 0 ELSE 1 END,
|
|
17
|
+
"ts", "id"
|
|
18
|
+
)::integer AS "run_index"
|
|
19
|
+
FROM "runs"
|
|
20
|
+
WHERE "phase" IN ('done', 'error', 'canceled', 'running')
|
|
21
|
+
)
|
|
22
|
+
UPDATE "runs" AS r
|
|
23
|
+
SET "run_index" = ranked."run_index"
|
|
24
|
+
FROM ranked
|
|
25
|
+
WHERE r."id" = ranked."id";--> statement-breakpoint
|
|
26
|
+
-- A currently running row was claimed before these snapshot columns existed.
|
|
27
|
+
-- Its loop settings are the closest durable execution profile; completed legacy
|
|
28
|
+
-- rows stay unknown rather than pretending today's config was historical config.
|
|
29
|
+
UPDATE "runs" AS r
|
|
30
|
+
SET "model" = l."model", "reasoning_effort" = l."reasoning_effort"
|
|
31
|
+
FROM "loops" AS l
|
|
32
|
+
WHERE r."loop_id" = l."id" AND r."phase" = 'running';--> statement-breakpoint
|
|
33
|
+
UPDATE "loops" AS l
|
|
34
|
+
SET "last_run_index" = history."last_run_index"
|
|
35
|
+
FROM (
|
|
36
|
+
SELECT "loop_id", max("run_index")::integer AS "last_run_index"
|
|
37
|
+
FROM "runs"
|
|
38
|
+
WHERE "run_index" IS NOT NULL
|
|
39
|
+
GROUP BY "loop_id"
|
|
40
|
+
) AS history
|
|
41
|
+
WHERE l."id" = history."loop_id";--> statement-breakpoint
|
|
42
|
+
CREATE UNIQUE INDEX "runs_loop_run_index_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL;--> statement-breakpoint
|
|
43
|
+
CREATE INDEX "runs_loop_terminal_history_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL AND "phase" IN ('done', 'error', 'canceled');
|
|
@@ -106,6 +106,13 @@
|
|
|
106
106
|
"when": 1784712544157,
|
|
107
107
|
"tag": "0014_luxuriant_scrambler",
|
|
108
108
|
"breakpoints": true
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"idx": 15,
|
|
112
|
+
"version": "7",
|
|
113
|
+
"when": 1784712544158,
|
|
114
|
+
"tag": "0015_run_history_foundation",
|
|
115
|
+
"breakpoints": true
|
|
109
116
|
}
|
|
110
117
|
]
|
|
111
118
|
}
|
package/.output/server/index.mjs
CHANGED
|
@@ -14,177 +14,177 @@ var public_assets_data_default = {
|
|
|
14
14
|
"/favicon.svg": {
|
|
15
15
|
"type": "image/svg+xml",
|
|
16
16
|
"etag": "\"2f9-diQHMODwkdsIQ2ssl9fzDaFKaXE\"",
|
|
17
|
-
"mtime": "2026-07-
|
|
17
|
+
"mtime": "2026-07-22T16:35:35.656Z",
|
|
18
18
|
"size": 761,
|
|
19
19
|
"path": "../public/favicon.svg"
|
|
20
20
|
},
|
|
21
|
-
"/assets/
|
|
21
|
+
"/assets/SignIn-9vsaKv_p.js": {
|
|
22
22
|
"type": "text/javascript; charset=utf-8",
|
|
23
|
-
"etag": "\"
|
|
24
|
-
"mtime": "2026-07-
|
|
23
|
+
"etag": "\"56e-4jYEnfid7ZndDeDjwXhMvTwGiXA\"",
|
|
24
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
25
|
+
"size": 1390,
|
|
26
|
+
"path": "../public/assets/SignIn-9vsaKv_p.js"
|
|
27
|
+
},
|
|
28
|
+
"/assets/actionUi-DDDfD0WX.js": {
|
|
29
|
+
"type": "text/javascript; charset=utf-8",
|
|
30
|
+
"etag": "\"8d4-T51UrrIcx8jtICuIR/SW8x8B76M\"",
|
|
31
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
25
32
|
"size": 2260,
|
|
26
|
-
"path": "../public/assets/actionUi-
|
|
33
|
+
"path": "../public/assets/actionUi-DDDfD0WX.js"
|
|
27
34
|
},
|
|
28
|
-
"/assets/
|
|
35
|
+
"/assets/Modal-B3xpEtcf.js": {
|
|
29
36
|
"type": "text/javascript; charset=utf-8",
|
|
30
|
-
"etag": "\"
|
|
31
|
-
"mtime": "2026-07-
|
|
32
|
-
"size":
|
|
33
|
-
"path": "../public/assets/
|
|
37
|
+
"etag": "\"f440-O5WfIh1wS+DhEmQCrpsHc32OmJU\"",
|
|
38
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
39
|
+
"size": 62528,
|
|
40
|
+
"path": "../public/assets/Modal-B3xpEtcf.js"
|
|
34
41
|
},
|
|
35
|
-
"/assets/app-
|
|
42
|
+
"/assets/app-CStTBRt2.css": {
|
|
36
43
|
"type": "text/css; charset=utf-8",
|
|
37
|
-
"etag": "\"
|
|
38
|
-
"mtime": "2026-07-
|
|
39
|
-
"size":
|
|
40
|
-
"path": "../public/assets/app-
|
|
44
|
+
"etag": "\"d9aa-t0ON5hShc+x9qmJXwPG0/3KRXo0\"",
|
|
45
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
46
|
+
"size": 55722,
|
|
47
|
+
"path": "../public/assets/app-CStTBRt2.css"
|
|
41
48
|
},
|
|
42
|
-
"/assets/artifactView-
|
|
49
|
+
"/assets/artifactView-BV-yQVrj.js": {
|
|
43
50
|
"type": "text/javascript; charset=utf-8",
|
|
44
|
-
"etag": "\"11ea7-
|
|
45
|
-
"mtime": "2026-07-
|
|
51
|
+
"etag": "\"11ea7-M1O0tnQNjnWG4plFk22L9lEof/c\"",
|
|
52
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
46
53
|
"size": 73383,
|
|
47
|
-
"path": "../public/assets/artifactView-
|
|
54
|
+
"path": "../public/assets/artifactView-BV-yQVrj.js"
|
|
48
55
|
},
|
|
49
|
-
"/assets/invite._token-
|
|
56
|
+
"/assets/invite._token-C3t4JfAY.js": {
|
|
50
57
|
"type": "text/javascript; charset=utf-8",
|
|
51
|
-
"etag": "\"
|
|
52
|
-
"mtime": "2026-07-
|
|
53
|
-
"size": 1626,
|
|
54
|
-
"path": "../public/assets/invite._token-Dp2HL9X5.js"
|
|
55
|
-
},
|
|
56
|
-
"/assets/invite._token-CQgv8lTC.js": {
|
|
57
|
-
"type": "text/javascript; charset=utf-8",
|
|
58
|
-
"etag": "\"17a-/gbIk7RHAyLFREfmpqdF7QrahIE\"",
|
|
59
|
-
"mtime": "2026-07-22T11:55:24.186Z",
|
|
58
|
+
"etag": "\"17a-tpcmc7ytNGyRkPmMCJp1g7bfOVE\"",
|
|
59
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
60
60
|
"size": 378,
|
|
61
|
-
"path": "../public/assets/invite._token-
|
|
61
|
+
"path": "../public/assets/invite._token-C3t4JfAY.js"
|
|
62
62
|
},
|
|
63
|
-
"/assets/
|
|
63
|
+
"/assets/LoopView-Pbp2YtUu.js": {
|
|
64
64
|
"type": "text/javascript; charset=utf-8",
|
|
65
|
-
"etag": "\"
|
|
66
|
-
"mtime": "2026-07-
|
|
67
|
-
"size":
|
|
68
|
-
"path": "../public/assets/
|
|
69
|
-
},
|
|
70
|
-
"/assets/lifecycleUi-C3k2MlX8.js": {
|
|
71
|
-
"type": "text/javascript; charset=utf-8",
|
|
72
|
-
"etag": "\"50f-kWJ2CzUjjwKiXb/1i78rmnEKpDA\"",
|
|
73
|
-
"mtime": "2026-07-22T11:55:24.186Z",
|
|
74
|
-
"size": 1295,
|
|
75
|
-
"path": "../public/assets/lifecycleUi-C3k2MlX8.js"
|
|
65
|
+
"etag": "\"63043-RVyp5R61D8mwTqEkn1XChynK/n8\"",
|
|
66
|
+
"mtime": "2026-07-22T16:35:35.139Z",
|
|
67
|
+
"size": 405571,
|
|
68
|
+
"path": "../public/assets/LoopView-Pbp2YtUu.js"
|
|
76
69
|
},
|
|
77
70
|
"/assets/jsx-runtime-BseJUIpC.js": {
|
|
78
71
|
"type": "text/javascript; charset=utf-8",
|
|
79
72
|
"etag": "\"21db-Zc8kSR08Ehf1UdEHwfS1+Mhso7E\"",
|
|
80
|
-
"mtime": "2026-07-
|
|
73
|
+
"mtime": "2026-07-22T16:35:35.142Z",
|
|
81
74
|
"size": 8667,
|
|
82
75
|
"path": "../public/assets/jsx-runtime-BseJUIpC.js"
|
|
83
76
|
},
|
|
84
|
-
"/assets/
|
|
77
|
+
"/assets/invite._token-C891oGkK.js": {
|
|
85
78
|
"type": "text/javascript; charset=utf-8",
|
|
86
|
-
"etag": "\"
|
|
87
|
-
"mtime": "2026-07-
|
|
88
|
-
"size":
|
|
89
|
-
"path": "../public/assets/
|
|
79
|
+
"etag": "\"65a-Qi4QrjSFBaMCBxaNpwfnzjMPhnM\"",
|
|
80
|
+
"mtime": "2026-07-22T16:35:35.141Z",
|
|
81
|
+
"size": 1626,
|
|
82
|
+
"path": "../public/assets/invite._token-C891oGkK.js"
|
|
90
83
|
},
|
|
91
|
-
"/assets/
|
|
84
|
+
"/assets/lifecycleUi-C3k2MlX8.js": {
|
|
92
85
|
"type": "text/javascript; charset=utf-8",
|
|
93
|
-
"etag": "\"
|
|
94
|
-
"mtime": "2026-07-
|
|
95
|
-
"size":
|
|
96
|
-
"path": "../public/assets/
|
|
86
|
+
"etag": "\"50f-kWJ2CzUjjwKiXb/1i78rmnEKpDA\"",
|
|
87
|
+
"mtime": "2026-07-22T16:35:35.142Z",
|
|
88
|
+
"size": 1295,
|
|
89
|
+
"path": "../public/assets/lifecycleUi-C3k2MlX8.js"
|
|
90
|
+
},
|
|
91
|
+
"/assets/loops._loopId-DD4fKGMu.js": {
|
|
92
|
+
"type": "text/javascript; charset=utf-8",
|
|
93
|
+
"etag": "\"81fa-tRfySLcT36KGp0p59BjBUO0Nuyc\"",
|
|
94
|
+
"mtime": "2026-07-22T16:35:35.142Z",
|
|
95
|
+
"size": 33274,
|
|
96
|
+
"path": "../public/assets/loops._loopId-DD4fKGMu.js"
|
|
97
97
|
},
|
|
98
|
-
"/assets/
|
|
98
|
+
"/assets/loopApi-C_Dtw-nL.js": {
|
|
99
99
|
"type": "text/javascript; charset=utf-8",
|
|
100
|
-
"etag": "\"
|
|
101
|
-
"mtime": "2026-07-
|
|
102
|
-
"size":
|
|
103
|
-
"path": "../public/assets/
|
|
100
|
+
"etag": "\"abb6-9KPrkejlYudnh9/pm8jTfOn0daA\"",
|
|
101
|
+
"mtime": "2026-07-22T16:35:35.142Z",
|
|
102
|
+
"size": 43958,
|
|
103
|
+
"path": "../public/assets/loopApi-C_Dtw-nL.js"
|
|
104
104
|
},
|
|
105
|
-
"/assets/loops._loopId_.runs._runId-
|
|
105
|
+
"/assets/loops._loopId_.runs._runId-DoPcCQy7.js": {
|
|
106
106
|
"type": "text/javascript; charset=utf-8",
|
|
107
|
-
"etag": "\"34c0-
|
|
108
|
-
"mtime": "2026-07-
|
|
107
|
+
"etag": "\"34c0-ZXKEClM2fKV5zE/Hae+z6iZMd6g\"",
|
|
108
|
+
"mtime": "2026-07-22T16:35:35.142Z",
|
|
109
109
|
"size": 13504,
|
|
110
|
-
"path": "../public/assets/loops._loopId_.runs._runId-
|
|
110
|
+
"path": "../public/assets/loops._loopId_.runs._runId-DoPcCQy7.js"
|
|
111
111
|
},
|
|
112
|
-
"/assets/
|
|
112
|
+
"/assets/routes-BS4N7Lnf.js": {
|
|
113
113
|
"type": "text/javascript; charset=utf-8",
|
|
114
|
-
"etag": "\"
|
|
115
|
-
"mtime": "2026-07-
|
|
116
|
-
"size":
|
|
117
|
-
"path": "../public/assets/
|
|
114
|
+
"etag": "\"17b-cfX8diTwD8sQyk4ghnMGkPz1PQw\"",
|
|
115
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
116
|
+
"size": 379,
|
|
117
|
+
"path": "../public/assets/routes-BS4N7Lnf.js"
|
|
118
118
|
},
|
|
119
|
-
"/assets/
|
|
119
|
+
"/assets/notifyFns-BaukhLAg.js": {
|
|
120
120
|
"type": "text/javascript; charset=utf-8",
|
|
121
|
-
"etag": "\"
|
|
122
|
-
"mtime": "2026-07-
|
|
123
|
-
"size":
|
|
124
|
-
"path": "../public/assets/
|
|
121
|
+
"etag": "\"fbdc-+m0E3+y/CnFzlvchZqNM/25EmCE\"",
|
|
122
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
123
|
+
"size": 64476,
|
|
124
|
+
"path": "../public/assets/notifyFns-BaukhLAg.js"
|
|
125
125
|
},
|
|
126
|
-
"/assets/t._teamId-
|
|
126
|
+
"/assets/t._teamId-C9uEyAh_.js": {
|
|
127
127
|
"type": "text/javascript; charset=utf-8",
|
|
128
|
-
"etag": "\"178-
|
|
129
|
-
"mtime": "2026-07-
|
|
128
|
+
"etag": "\"178-7H9QBAqObhxeBvui9OTtPY0mnSU\"",
|
|
129
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
130
130
|
"size": 376,
|
|
131
|
-
"path": "../public/assets/t._teamId-
|
|
131
|
+
"path": "../public/assets/t._teamId-C9uEyAh_.js"
|
|
132
132
|
},
|
|
133
|
-
"/assets/routes-
|
|
133
|
+
"/assets/routes-DsdcURfk.js": {
|
|
134
134
|
"type": "text/javascript; charset=utf-8",
|
|
135
|
-
"etag": "\"
|
|
136
|
-
"mtime": "2026-07-
|
|
137
|
-
"size":
|
|
138
|
-
"path": "../public/assets/routes-
|
|
135
|
+
"etag": "\"17c-fwC8gu6Xl/9dCUZKhEPkPadFJmc\"",
|
|
136
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
137
|
+
"size": 380,
|
|
138
|
+
"path": "../public/assets/routes-DsdcURfk.js"
|
|
139
139
|
},
|
|
140
|
-
"/assets/t._teamId-
|
|
140
|
+
"/assets/t._teamId-DSYlMX_v.js": {
|
|
141
141
|
"type": "text/javascript; charset=utf-8",
|
|
142
|
-
"etag": "\"194-
|
|
143
|
-
"mtime": "2026-07-
|
|
142
|
+
"etag": "\"194-UbYEkxRdy/igBSRzweeVfb+EZq0\"",
|
|
143
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
144
144
|
"size": 404,
|
|
145
|
-
"path": "../public/assets/t._teamId-
|
|
145
|
+
"path": "../public/assets/t._teamId-DSYlMX_v.js"
|
|
146
146
|
},
|
|
147
|
-
"/assets/
|
|
147
|
+
"/assets/preload-helper--VCqDT5m.js": {
|
|
148
148
|
"type": "text/javascript; charset=utf-8",
|
|
149
|
-
"etag": "\"
|
|
150
|
-
"mtime": "2026-07-
|
|
151
|
-
"size":
|
|
152
|
-
"path": "../public/assets/
|
|
149
|
+
"etag": "\"14bb4-FAg2bQc2ZEhFKoiDCSsPnCEJ9pY\"",
|
|
150
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
151
|
+
"size": 84916,
|
|
152
|
+
"path": "../public/assets/preload-helper--VCqDT5m.js"
|
|
153
|
+
},
|
|
154
|
+
"/assets/ui-Gb1413-F.js": {
|
|
155
|
+
"type": "text/javascript; charset=utf-8",
|
|
156
|
+
"etag": "\"1b03-Yp1X1lb+G7it59MkrzqgP3+2aCM\"",
|
|
157
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
158
|
+
"size": 6915,
|
|
159
|
+
"path": "../public/assets/ui-Gb1413-F.js"
|
|
153
160
|
},
|
|
154
161
|
"/assets/useRouter-DsjH8G0p.js": {
|
|
155
162
|
"type": "text/javascript; charset=utf-8",
|
|
156
163
|
"etag": "\"97-bwshbj7pN2rnQJllfZOPZLnOIos\"",
|
|
157
|
-
"mtime": "2026-07-
|
|
164
|
+
"mtime": "2026-07-22T16:35:35.143Z",
|
|
158
165
|
"size": 151,
|
|
159
166
|
"path": "../public/assets/useRouter-DsjH8G0p.js"
|
|
160
167
|
},
|
|
161
|
-
"/assets/notifyFns-DuBElaqG.js": {
|
|
162
|
-
"type": "text/javascript; charset=utf-8",
|
|
163
|
-
"etag": "\"fbdc-WJajCz0HryV3sQK0zi65Y0CL6mA\"",
|
|
164
|
-
"mtime": "2026-07-22T11:55:24.187Z",
|
|
165
|
-
"size": 64476,
|
|
166
|
-
"path": "../public/assets/notifyFns-DuBElaqG.js"
|
|
167
|
-
},
|
|
168
168
|
"/fonts/GeistPixel-Square.woff2": {
|
|
169
169
|
"type": "font/woff2",
|
|
170
170
|
"etag": "\"6f7c-IQXyklzDeInO8O/YtOs5/0tckOE\"",
|
|
171
|
-
"mtime": "2026-07-
|
|
171
|
+
"mtime": "2026-07-22T16:35:35.657Z",
|
|
172
172
|
"size": 28540,
|
|
173
173
|
"path": "../public/fonts/GeistPixel-Square.woff2"
|
|
174
174
|
},
|
|
175
|
+
"/assets/index-49hAH0gP.js": {
|
|
176
|
+
"type": "text/javascript; charset=utf-8",
|
|
177
|
+
"etag": "\"49ae2-7OKcjK5FMB4xxtvC/FnH4UNLEO4\"",
|
|
178
|
+
"mtime": "2026-07-22T16:35:35.139Z",
|
|
179
|
+
"size": 301794,
|
|
180
|
+
"path": "../public/assets/index-49hAH0gP.js"
|
|
181
|
+
},
|
|
175
182
|
"/assets/CodeField-dOzyFQNH.js": {
|
|
176
183
|
"type": "text/javascript; charset=utf-8",
|
|
177
184
|
"etag": "\"8c119-K1dNstx4oT3G0gi1kwFhBau674k\"",
|
|
178
|
-
"mtime": "2026-07-
|
|
185
|
+
"mtime": "2026-07-22T16:35:35.139Z",
|
|
179
186
|
"size": 573721,
|
|
180
187
|
"path": "../public/assets/CodeField-dOzyFQNH.js"
|
|
181
|
-
},
|
|
182
|
-
"/assets/preload-helper-3xcHsDtt.js": {
|
|
183
|
-
"type": "text/javascript; charset=utf-8",
|
|
184
|
-
"etag": "\"14b7c-M/KX7EZp3LjBf3kYrAnYj6kmEpc\"",
|
|
185
|
-
"mtime": "2026-07-22T11:55:24.187Z",
|
|
186
|
-
"size": 84860,
|
|
187
|
-
"path": "../public/assets/preload-helper-3xcHsDtt.js"
|
|
188
188
|
}
|
|
189
189
|
};
|
|
190
190
|
//#endregion
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
-- Complete the breaking run-role rename before new runtime code reads history.
|
|
2
|
+
UPDATE "runs" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
|
|
3
|
+
UPDATE "run_leases" SET "role" = 'steer' WHERE "role" = 'edit';--> statement-breakpoint
|
|
4
|
+
UPDATE "loops"
|
|
5
|
+
SET "pause_cause" = jsonb_set("pause_cause", '{role}', '"steer"'::jsonb)
|
|
6
|
+
WHERE "pause_cause"->>'role' = 'edit';--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "loops" ADD COLUMN "last_run_index" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "runs" ADD COLUMN "run_index" integer;--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "runs" ADD COLUMN "model" text;--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "runs" ADD COLUMN "reasoning_effort" text;--> statement-breakpoint
|
|
11
|
+
-- Terminal rows are durable history. Number them by terminal timestamp + id;
|
|
12
|
+
-- an in-flight row follows all terminal evidence so it keeps the next number.
|
|
13
|
+
WITH ranked AS (
|
|
14
|
+
SELECT "id", row_number() OVER (
|
|
15
|
+
PARTITION BY "loop_id"
|
|
16
|
+
ORDER BY CASE WHEN "phase" IN ('done', 'error', 'canceled') THEN 0 ELSE 1 END,
|
|
17
|
+
"ts", "id"
|
|
18
|
+
)::integer AS "run_index"
|
|
19
|
+
FROM "runs"
|
|
20
|
+
WHERE "phase" IN ('done', 'error', 'canceled', 'running')
|
|
21
|
+
)
|
|
22
|
+
UPDATE "runs" AS r
|
|
23
|
+
SET "run_index" = ranked."run_index"
|
|
24
|
+
FROM ranked
|
|
25
|
+
WHERE r."id" = ranked."id";--> statement-breakpoint
|
|
26
|
+
-- A currently running row was claimed before these snapshot columns existed.
|
|
27
|
+
-- Its loop settings are the closest durable execution profile; completed legacy
|
|
28
|
+
-- rows stay unknown rather than pretending today's config was historical config.
|
|
29
|
+
UPDATE "runs" AS r
|
|
30
|
+
SET "model" = l."model", "reasoning_effort" = l."reasoning_effort"
|
|
31
|
+
FROM "loops" AS l
|
|
32
|
+
WHERE r."loop_id" = l."id" AND r."phase" = 'running';--> statement-breakpoint
|
|
33
|
+
UPDATE "loops" AS l
|
|
34
|
+
SET "last_run_index" = history."last_run_index"
|
|
35
|
+
FROM (
|
|
36
|
+
SELECT "loop_id", max("run_index")::integer AS "last_run_index"
|
|
37
|
+
FROM "runs"
|
|
38
|
+
WHERE "run_index" IS NOT NULL
|
|
39
|
+
GROUP BY "loop_id"
|
|
40
|
+
) AS history
|
|
41
|
+
WHERE l."id" = history."loop_id";--> statement-breakpoint
|
|
42
|
+
CREATE UNIQUE INDEX "runs_loop_run_index_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL;--> statement-breakpoint
|
|
43
|
+
CREATE INDEX "runs_loop_terminal_history_idx" ON "runs" USING btree ("loop_id","run_index") WHERE "run_index" IS NOT NULL AND "phase" IN ('done', 'error', 'canceled');
|
|
@@ -106,6 +106,13 @@
|
|
|
106
106
|
"when": 1784712544157,
|
|
107
107
|
"tag": "0014_luxuriant_scrambler",
|
|
108
108
|
"breakpoints": true
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"idx": 15,
|
|
112
|
+
"version": "7",
|
|
113
|
+
"when": 1784712544158,
|
|
114
|
+
"tag": "0015_run_history_foundation",
|
|
115
|
+
"breakpoints": true
|
|
109
116
|
}
|
|
110
117
|
]
|
|
111
118
|
}
|