@kky42/pievo-server 2.3.0 → 2.4.2
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/MachinesModal-CSbnrUER.js +1 -0
- package/.output/public/assets/SignIn-0Tjqs-Ma.js +1 -0
- package/.output/public/assets/actionUi-DpwGIGpw.js +1 -0
- package/.output/public/assets/app-CaZpuwOS.css +2 -0
- package/.output/public/assets/index-CaS_SmDq.js +10 -0
- package/.output/public/assets/invite._token-Btg_0aLp.js +1 -0
- package/.output/public/assets/invite._token-KMD2JAgE.js +1 -0
- package/.output/public/assets/lifecycleUi-C7dwHtbw.js +1 -0
- package/.output/public/assets/loops._loopId-D5usF3DO.js +67 -0
- package/.output/public/assets/loops._loopId_.runs._runId-DRCgXaCq.js +3 -0
- package/.output/public/assets/preload-helper-DsxECZIS.js +5 -0
- package/.output/public/assets/routes-CtFgwdgW.js +1 -0
- package/.output/public/assets/routes-LDbnnQ3f.js +1 -0
- package/.output/public/assets/t._teamId-D41xcbsF.js +1 -0
- package/.output/public/assets/t._teamId-DUena1pV.js +1 -0
- package/.output/public/assets/ui-Do4gqMyP.js +1 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +4130 -4130
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
- package/.output/server/_libs/drizzle-orm+postgres.mjs +28 -1
- package/.output/server/_ssr/DashboardView-C2LdV6J0.mjs +914 -0
- package/.output/server/_ssr/{notifyFns-DuPR1zd7.mjs → MachinesModal-BjkcVjjx.mjs} +55 -35
- package/.output/server/_ssr/{SignIn-RmpWm9uy.mjs → SignIn-DEGrvJvb.mjs} +10 -24
- package/.output/server/_ssr/SocialLinks-Cm4H8pUJ.mjs +1044 -0
- package/.output/server/_ssr/{actionUi-BN55TNYE.mjs → actionUi-DJBWuNwr.mjs} +3 -3
- package/.output/server/_ssr/{artifactFiles-BCaIIrrT.mjs → artifactFiles-DtpRidFZ.mjs} +7 -8
- package/.output/server/_ssr/{artifactKind-BW0isV8L.mjs → artifactKind-FBYbgSuf.mjs} +27 -2
- package/.output/server/_ssr/artifacts-BR3jj0NC.mjs +2 -0
- package/.output/server/_ssr/{auth-30Z4lV1w.mjs → auth-C0zoZCGe.mjs} +16 -19
- package/.output/server/_ssr/boot-CdOO4xOo.mjs +2 -0
- package/.output/server/_ssr/{boot-3BNKujyp.mjs → boot-sNlIkoLe.mjs} +1331 -3927
- package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.mjs → bun-sqlite-dialect-BW9W1_Ps-DmlZWqO7.mjs} +2 -2
- package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.mjs → d1-sqlite-dialect-BLC8LXE6-CCNzqZwZ.mjs} +2 -2
- package/.output/server/_ssr/db-CwLD-5w1.mjs +2 -0
- package/.output/server/_ssr/{dist-Cd6nlLlO.mjs → dist-B3SxDOpW.mjs} +2 -2
- package/.output/server/_ssr/{factory-CWWwV7XZ.mjs → factory-Dv3Zopis.mjs} +2 -2
- package/.output/server/_ssr/invite._token-CJ6-H-s3.mjs +20 -0
- package/.output/server/_ssr/{invite._token-SdWXemIc.mjs → invite._token-dLKDJKVs.mjs} +9 -17
- package/.output/server/_ssr/{invite._token-BKlz0R2f.mjs → invite._token-l1SjouDz.mjs} +6 -15
- package/.output/server/_ssr/{kysely-adapter-C8iS51DB.mjs → kysely-adapter-nL7WKSgw.mjs} +1 -1
- package/.output/server/_ssr/{lifecycleUi-DgBQAYzp.mjs → lifecycleUi-Dad3hvhm.mjs} +11 -11
- package/.output/server/_ssr/logger-B8m8F1Qu.mjs +2 -0
- package/.output/server/_ssr/loopApi-BKyFB4KM.mjs +342 -0
- package/.output/server/_ssr/{adapters-BoLkOf1T.mjs → loopProjection-B8a829ij.mjs} +25 -55
- package/.output/server/_ssr/loops._loopId-DS16Phmq.mjs +1271 -0
- package/.output/server/_ssr/{loops._loopId_.runs._runId-PUGBrD5q.mjs → loops._loopId_.runs._runId-BEJI6iK5.mjs} +23 -74
- package/.output/server/_ssr/{loops._loopId_.runs._runId-Ymy4lwee.mjs → loops._loopId_.runs._runId-CduETLqH.mjs} +4 -5
- package/.output/server/_ssr/{machineFns-BZ9puxDt.mjs → machineFns-ByMsgG12.mjs} +3 -5
- package/.output/server/_ssr/{node-sqlite-dialect-D_3JmkMo.mjs → node-sqlite-dialect-CjNineno.mjs} +2 -2
- package/.output/server/_ssr/router-CXyrnvx-.mjs +565 -0
- package/.output/server/_ssr/{routes-ClZEdsnB.mjs → routes-BulNEUEE.mjs} +6 -10
- package/.output/server/_ssr/{routes-ComqHvCL.mjs → routes-DD94baie.mjs} +3 -3
- package/.output/server/_ssr/{routes-D5jJJ-30.mjs → routes-Wjexi35W.mjs} +6 -6
- package/.output/server/_ssr/runDiff-Ba8Lg1vg.mjs +2 -0
- package/.output/server/_ssr/ssr.mjs +60 -100
- package/.output/server/_ssr/store-Cujtg2QE.mjs +2 -0
- package/.output/server/_ssr/{t._teamId-BgHV_KFP.mjs → t._teamId-1CreIlPV.mjs} +7 -11
- package/.output/server/_ssr/{t._teamId-DDERNgfn.mjs → t._teamId-Bd6-zZsy.mjs} +4 -4
- package/.output/server/_ssr/{t._teamId-DRJvKHZn.mjs → t._teamId-COuMKQ4r.mjs} +7 -7
- package/.output/server/_ssr/{teamFns-Bp81UO-x.mjs → teamFns-H438WnZC.mjs} +12 -30
- package/.output/server/_ssr/{teamFns-bm82twd5.mjs → teamFns-j2JKjorZ.mjs} +2 -2
- package/.output/server/_ssr/tokens-DgG_Syq3.mjs +2 -0
- package/.output/server/_ssr/{ui-Ww2tTM2u.mjs → ui-D5KWstlb.mjs} +26 -48
- package/.output/server/{_tanstack-start-manifest_v-DwKENYCN.mjs → _tanstack-start-manifest_v-3H7yBKLz.mjs} +25 -35
- package/{drizzle/0000_round_marauders.sql → .output/server/drizzle/0000_baseline.sql} +102 -44
- package/.output/server/drizzle/meta/_journal.json +3 -115
- package/.output/server/index.mjs +83 -132
- package/{.output/server/drizzle/0000_round_marauders.sql → drizzle/0000_baseline.sql} +102 -44
- package/drizzle/meta/_journal.json +3 -115
- package/package.json +2 -11
- package/scripts/pievo-server.mjs +3 -1
- package/scripts/server-cli-lib.mjs +23 -16
- package/.output/public/assets/CodeField-dOzyFQNH.js +0 -34
- package/.output/public/assets/LoopView-DjVHUyrR.js +0 -59
- package/.output/public/assets/Modal-CCRvx959.js +0 -1
- package/.output/public/assets/SignIn-Qxw5zDFq.js +0 -1
- package/.output/public/assets/actionUi-CXxhzYe2.js +0 -1
- package/.output/public/assets/app-D1cij_NJ.css +0 -2
- package/.output/public/assets/artifactView-Cd5wWPil.js +0 -66
- package/.output/public/assets/index-BRN_CQ8U.js +0 -12
- package/.output/public/assets/invite._token-BIxr8DlP.js +0 -1
- package/.output/public/assets/invite._token-j2BTCeG1.js +0 -1
- package/.output/public/assets/jsx-runtime-BseJUIpC.js +0 -1
- package/.output/public/assets/lifecycleUi-Qy_8beQK.js +0 -1
- package/.output/public/assets/loopApi-CT1mMhlb.js +0 -3
- package/.output/public/assets/loops._loopId-BRBQzioy.js +0 -4
- package/.output/public/assets/loops._loopId_.runs._runId-CMnOJkem.js +0 -3
- package/.output/public/assets/notifyFns-DYD4EKaG.js +0 -1
- package/.output/public/assets/preload-helper-DFkkpP6W.js +0 -3
- package/.output/public/assets/routes-3nuEJGdo.js +0 -1
- package/.output/public/assets/routes-DORLim-C.js +0 -1
- package/.output/public/assets/t._teamId-F5f4K8kd.js +0 -1
- package/.output/public/assets/t._teamId-XfE_S1Fo.js +0 -1
- package/.output/public/assets/ui-Dhsx6SW0.js +0 -1
- package/.output/public/assets/useRouter-DsjH8G0p.js +0 -1
- package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +0 -19713
- package/.output/server/_libs/@codemirror/lang-css+[...].mjs +0 -2636
- package/.output/server/_libs/@codemirror/lang-html+[...].mjs +0 -2247
- package/.output/server/_libs/@codemirror/lang-json+[...].mjs +0 -79
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +0 -1736
- package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +0 -76
- package/.output/server/_libs/babel__runtime.mjs +0 -30
- package/.output/server/_libs/clsx.mjs +0 -16
- package/.output/server/_libs/codemirror__commands.mjs +0 -1725
- package/.output/server/_libs/codemirror__lint.mjs +0 -565
- package/.output/server/_libs/codemirror__search.mjs +0 -1138
- package/.output/server/_libs/codemirror__theme-one-dark.mjs +0 -161
- package/.output/server/_libs/d3-array.mjs +0 -231
- package/.output/server/_libs/d3-color.mjs +0 -330
- package/.output/server/_libs/d3-format.mjs +0 -252
- package/.output/server/_libs/d3-interpolate.mjs +0 -163
- package/.output/server/_libs/d3-path.mjs +0 -77
- package/.output/server/_libs/d3-scale+[...].mjs +0 -1907
- package/.output/server/_libs/d3-shape.mjs +0 -818
- package/.output/server/_libs/decimal.js-light.mjs +0 -884
- package/.output/server/_libs/dom-serializer+[...].mjs +0 -708
- package/.output/server/_libs/domhandler.mjs +0 -461
- package/.output/server/_libs/domutils.mjs +0 -868
- package/.output/server/_libs/es-toolkit.mjs +0 -1737
- package/.output/server/_libs/eventemitter3.mjs +0 -236
- package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +0 -1560
- package/.output/server/_libs/html-react-parser+[...].mjs +0 -1360
- package/.output/server/_libs/react-is.mjs +0 -48
- package/.output/server/_libs/react-redux+[...].mjs +0 -205
- package/.output/server/_libs/recharts+victory-vendor.mjs +0 -17303
- package/.output/server/_libs/uiw__codemirror-themes.mjs +0 -32
- package/.output/server/_libs/uiw__react-codemirror.mjs +0 -354
- package/.output/server/_ssr/CodeField-B7oOmmwH.mjs +0 -143
- package/.output/server/_ssr/DashboardView-BF7PciP7.mjs +0 -2736
- package/.output/server/_ssr/LoopPlaybook-DC7QVvPY.mjs +0 -2105
- package/.output/server/_ssr/LoopView-DwSrm9Ja.mjs +0 -1300
- package/.output/server/_ssr/Modal-MaCG52Pv.mjs +0 -49
- package/.output/server/_ssr/artifactView-iuPsp5aa.mjs +0 -304
- package/.output/server/_ssr/artifacts-jQ-bfdhI.mjs +0 -2
- package/.output/server/_ssr/boot-CsEFT53K.mjs +0 -2
- package/.output/server/_ssr/db-CXownd1H.mjs +0 -2
- package/.output/server/_ssr/invite._token-CWl6kipD.mjs +0 -28
- package/.output/server/_ssr/logger-Gy-47z3k.mjs +0 -2
- package/.output/server/_ssr/loopApi-8_KgBapr.mjs +0 -109
- package/.output/server/_ssr/loopApi-ABi9SgWS.mjs +0 -564
- package/.output/server/_ssr/loops._loopId-SON_t43g.mjs +0 -30
- package/.output/server/_ssr/loops._loopId-p1KWsvMM.mjs +0 -1477
- package/.output/server/_ssr/notifyFns-BUCePuF3.mjs +0 -118
- package/.output/server/_ssr/router-Czxvra6l.mjs +0 -685
- package/.output/server/_ssr/runDiff--qLtU4FI.mjs +0 -2
- package/.output/server/_ssr/store-40eVzW1S.mjs +0 -2
- package/.output/server/_ssr/tokens-CbfoRC_s.mjs +0 -2
- package/.output/server/drizzle/0001_naive_silver_fox.sql +0 -25
- package/.output/server/drizzle/0002_funny_sage.sql +0 -12
- package/.output/server/drizzle/0003_optimal_slapstick.sql +0 -102
- package/.output/server/drizzle/0004_remove_grok_agent.sql +0 -5
- package/.output/server/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/.output/server/drizzle/0007_faulty_starbolt.sql +0 -30
- package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/.output/server/drizzle/0009_ordinary_electro.sql +0 -1
- package/.output/server/drizzle/0010_workable_rage.sql +0 -14
- package/.output/server/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/.output/server/drizzle/0012_blocked_run_status.sql +0 -12
- package/.output/server/drizzle/0013_drop_run_outcome.sql +0 -2
- package/.output/server/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/.output/server/drizzle/0015_run_history_foundation.sql +0 -43
- package/.output/server/drizzle/0016_plural_machine_runs.sql +0 -4
- package/.output/server/drizzle/meta/0000_snapshot.json +0 -1333
- package/.output/server/drizzle/meta/0001_snapshot.json +0 -1498
- package/.output/server/drizzle/meta/0002_snapshot.json +0 -1576
- package/.output/server/drizzle/meta/0003_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0005_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0006_snapshot.json +0 -1672
- package/.output/server/drizzle/meta/0007_snapshot.json +0 -1787
- package/.output/server/drizzle/meta/0009_snapshot.json +0 -1793
- package/.output/server/drizzle/meta/0010_snapshot.json +0 -1891
- package/.output/server/drizzle/meta/0011_snapshot.json +0 -1872
- package/drizzle/0001_naive_silver_fox.sql +0 -25
- package/drizzle/0002_funny_sage.sql +0 -12
- package/drizzle/0003_optimal_slapstick.sql +0 -102
- package/drizzle/0004_remove_grok_agent.sql +0 -5
- package/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/drizzle/0007_faulty_starbolt.sql +0 -30
- package/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/drizzle/0009_ordinary_electro.sql +0 -1
- package/drizzle/0010_workable_rage.sql +0 -14
- package/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/drizzle/0012_blocked_run_status.sql +0 -12
- package/drizzle/0013_drop_run_outcome.sql +0 -2
- package/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/drizzle/0015_run_history_foundation.sql +0 -43
- package/drizzle/0016_plural_machine_runs.sql +0 -4
- package/drizzle/meta/0000_snapshot.json +0 -1333
- package/drizzle/meta/0001_snapshot.json +0 -1498
- package/drizzle/meta/0002_snapshot.json +0 -1576
- package/drizzle/meta/0003_snapshot.json +0 -1666
- package/drizzle/meta/0005_snapshot.json +0 -1666
- package/drizzle/meta/0006_snapshot.json +0 -1672
- package/drizzle/meta/0007_snapshot.json +0 -1787
- package/drizzle/meta/0009_snapshot.json +0 -1793
- package/drizzle/meta/0010_snapshot.json +0 -1891
- package/drizzle/meta/0011_snapshot.json +0 -1872
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
CREATE TABLE "connect_keys" (
|
|
2
|
-
"machine_id" text PRIMARY KEY NOT NULL,
|
|
3
|
-
"user_id" text NOT NULL,
|
|
4
|
-
"team_id" text,
|
|
5
|
-
"minted_at" text NOT NULL
|
|
6
|
-
);
|
|
7
|
-
--> statement-breakpoint
|
|
8
|
-
CREATE TABLE "run_leases" (
|
|
9
|
-
"token_hash" text PRIMARY KEY NOT NULL,
|
|
10
|
-
"run_id" text NOT NULL,
|
|
11
|
-
"loop_id" text NOT NULL,
|
|
12
|
-
"machine_id" text NOT NULL,
|
|
13
|
-
"role" text NOT NULL,
|
|
14
|
-
"allow_control" boolean DEFAULT false NOT NULL,
|
|
15
|
-
"can_set_ui" boolean DEFAULT false NOT NULL,
|
|
16
|
-
"can_set_schema" boolean DEFAULT false NOT NULL,
|
|
17
|
-
"can_set_workflow" boolean DEFAULT false NOT NULL,
|
|
18
|
-
"can_finish" boolean DEFAULT false NOT NULL,
|
|
19
|
-
"state" text DEFAULT 'active' NOT NULL,
|
|
20
|
-
"expires_at" text,
|
|
21
|
-
"created_at" text NOT NULL
|
|
22
|
-
);
|
|
23
|
-
--> statement-breakpoint
|
|
24
|
-
CREATE INDEX "run_leases_run_idx" ON "run_leases" USING btree ("run_id");--> statement-breakpoint
|
|
25
|
-
CREATE INDEX "run_leases_loop_idx" ON "run_leases" USING btree ("loop_id");
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
CREATE TABLE "team_invites" (
|
|
2
|
-
"token" text PRIMARY KEY NOT NULL,
|
|
3
|
-
"team_id" text NOT NULL,
|
|
4
|
-
"role" text DEFAULT 'member' NOT NULL,
|
|
5
|
-
"invited_by_user_id" text NOT NULL,
|
|
6
|
-
"expires_at" text NOT NULL,
|
|
7
|
-
"redeemed_at" text,
|
|
8
|
-
"redeemed_by_user_id" text,
|
|
9
|
-
"created_at" text NOT NULL
|
|
10
|
-
);
|
|
11
|
-
--> statement-breakpoint
|
|
12
|
-
CREATE INDEX "team_invites_team_idx" ON "team_invites" USING btree ("team_id");
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "loops" ADD COLUMN "schedule_mode" text DEFAULT 'cron' NOT NULL;--> statement-breakpoint
|
|
2
|
-
ALTER TABLE "loops" ADD COLUMN "continuous_delay_minutes" integer DEFAULT 1 NOT NULL;--> statement-breakpoint
|
|
3
|
-
ALTER TABLE "loops" ADD COLUMN "next_cadence_at" text;--> statement-breakpoint
|
|
4
|
-
ALTER TABLE "runs" ADD COLUMN "requested_by" text DEFAULT 'system' NOT NULL;--> statement-breakpoint
|
|
5
|
-
ALTER TABLE "runs" ADD COLUMN "request_text" text;--> statement-breakpoint
|
|
6
|
-
ALTER TABLE "runs" ADD COLUMN "created_at" text;--> statement-breakpoint
|
|
7
|
-
ALTER TABLE "runs" ADD COLUMN "updated_at" text;--> statement-breakpoint
|
|
8
|
-
-- Runs previously had one mutable timestamp. Preserve it as the immutable age
|
|
9
|
-
-- anchor and mutation stamp so existing history remains ordered and pending-row
|
|
10
|
-
-- retention never depends on a coalescing refresh.
|
|
11
|
-
UPDATE "runs" SET "created_at" = "ts", "updated_at" = "ts";--> statement-breakpoint
|
|
12
|
-
ALTER TABLE "runs" ALTER COLUMN "created_at" SET NOT NULL;--> statement-breakpoint
|
|
13
|
-
ALTER TABLE "runs" ALTER COLUMN "created_at" SET DEFAULT CURRENT_TIMESTAMP::text;--> statement-breakpoint
|
|
14
|
-
ALTER TABLE "runs" ALTER COLUMN "updated_at" SET NOT NULL;--> statement-breakpoint
|
|
15
|
-
ALTER TABLE "runs" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP::text;--> statement-breakpoint
|
|
16
|
-
-- Convert the two legacy loop markers exactly once. An already-open role owns the
|
|
17
|
-
-- marker conservatively; otherwise persist one queue row before clearing the
|
|
18
|
-
-- marker. Every legacy edit is owner authority.
|
|
19
|
-
UPDATE "runs" SET "requested_by" = 'owner' WHERE "role" = 'edit';--> statement-breakpoint
|
|
20
|
-
UPDATE "runs" AS r
|
|
21
|
-
SET "requested_by" = 'owner', "request_text" = l."edit_request", "updated_at" = l."updated_at"
|
|
22
|
-
FROM "loops" AS l
|
|
23
|
-
WHERE r."loop_id" = l."id" AND r."role" = 'edit' AND r."phase" = 'pending'
|
|
24
|
-
AND l."edit_request" IS NOT NULL;--> statement-breakpoint
|
|
25
|
-
INSERT INTO "runs" (
|
|
26
|
-
"id", "loop_id", "user_id", "machine_id", "phase", "role", "requested_by",
|
|
27
|
-
"request_text", "ts", "created_at", "updated_at"
|
|
28
|
-
)
|
|
29
|
-
SELECT
|
|
30
|
-
'legacy-edit-' || l."id", l."id", l."user_id", l."machine_id", 'pending', 'edit',
|
|
31
|
-
'owner', l."edit_request", l."updated_at", l."updated_at", l."updated_at"
|
|
32
|
-
FROM "loops" AS l
|
|
33
|
-
WHERE l."edit_request" IS NOT NULL
|
|
34
|
-
AND NOT EXISTS (
|
|
35
|
-
SELECT 1 FROM "runs" AS r
|
|
36
|
-
WHERE r."loop_id" = l."id" AND r."role" = 'edit' AND r."phase" IN ('pending', 'running')
|
|
37
|
-
);--> statement-breakpoint
|
|
38
|
-
INSERT INTO "runs" (
|
|
39
|
-
"id", "loop_id", "user_id", "machine_id", "phase", "role", "requested_by",
|
|
40
|
-
"ts", "created_at", "updated_at"
|
|
41
|
-
)
|
|
42
|
-
SELECT
|
|
43
|
-
'legacy-evolve-' || l."id", l."id", l."user_id", l."machine_id", 'pending', 'evolve',
|
|
44
|
-
'system', l."updated_at", l."updated_at", l."updated_at"
|
|
45
|
-
FROM "loops" AS l
|
|
46
|
-
WHERE l."evolve_due" = true
|
|
47
|
-
AND NOT EXISTS (
|
|
48
|
-
SELECT 1 FROM "runs" AS r
|
|
49
|
-
WHERE r."loop_id" = l."id" AND r."role" = 'evolve' AND r."phase" IN ('pending', 'running')
|
|
50
|
-
);--> statement-breakpoint
|
|
51
|
-
-- Legacy edit/evolve markers sometimes borrowed next_run_at as their wake-up.
|
|
52
|
-
-- Clear only a due/past pin at migration time. Every future pin is preserved:
|
|
53
|
-
-- losing a genuine self-reschedule is worse than retaining an ambiguous old wake.
|
|
54
|
-
UPDATE "loops" AS l
|
|
55
|
-
SET "next_run_at" = NULL
|
|
56
|
-
WHERE (l."edit_request" IS NOT NULL OR l."evolve_due" = true)
|
|
57
|
-
AND l."next_run_at" IS NOT NULL
|
|
58
|
-
AND l."next_run_at"::timestamptz <= CURRENT_TIMESTAMP;--> statement-breakpoint
|
|
59
|
-
-- Retain deprecated columns/defaults to reduce old-image SELECT/INSERT breakage,
|
|
60
|
-
-- then clear converted values. This is not a rollback protocol: an old image that
|
|
61
|
-
-- writes markers after this forward-only migration is unsupported and they will
|
|
62
|
-
-- not be drained by the new runtime.
|
|
63
|
-
UPDATE "loops" SET "edit_request" = NULL, "evolve_due" = false
|
|
64
|
-
WHERE "edit_request" IS NOT NULL OR "evolve_due" = true;--> statement-breakpoint
|
|
65
|
-
-- Normalize lifecycle state before installing the queue uniqueness invariant.
|
|
66
|
-
UPDATE "runs" AS r
|
|
67
|
-
SET "phase" = 'canceled', "outcome" = 'skipped',
|
|
68
|
-
"message" = 'canceled - loop completed before this queued run was claimed',
|
|
69
|
-
"updated_at" = l."updated_at", "ts" = l."updated_at"
|
|
70
|
-
FROM "loops" AS l
|
|
71
|
-
WHERE r."loop_id" = l."id" AND r."phase" = 'pending'
|
|
72
|
-
AND l."completed_at" IS NOT NULL
|
|
73
|
-
AND (r."role" IN ('exec', 'evolve') OR (r."role" = 'edit' AND r."requested_by" = 'system'));--> statement-breakpoint
|
|
74
|
-
UPDATE "runs" AS r
|
|
75
|
-
SET "phase" = 'canceled', "outcome" = 'skipped',
|
|
76
|
-
"message" = 'canceled - loop paused before this system run was claimed',
|
|
77
|
-
"updated_at" = l."updated_at", "ts" = l."updated_at"
|
|
78
|
-
FROM "loops" AS l
|
|
79
|
-
WHERE r."loop_id" = l."id" AND r."phase" = 'pending'
|
|
80
|
-
AND l."enabled" = false AND r."requested_by" = 'system';--> statement-breakpoint
|
|
81
|
-
WITH ranked AS (
|
|
82
|
-
SELECT "id", row_number() OVER (
|
|
83
|
-
PARTITION BY "loop_id", "role"
|
|
84
|
-
ORDER BY CASE "requested_by" WHEN 'owner' THEN 0 ELSE 1 END, "updated_at" DESC, "id" DESC
|
|
85
|
-
) AS n
|
|
86
|
-
FROM "runs"
|
|
87
|
-
WHERE "phase" = 'pending'
|
|
88
|
-
)
|
|
89
|
-
UPDATE "runs" AS r
|
|
90
|
-
SET "phase" = 'canceled', "outcome" = 'skipped',
|
|
91
|
-
"message" = 'canceled - coalesced during durable queue migration'
|
|
92
|
-
FROM ranked
|
|
93
|
-
WHERE r."id" = ranked."id" AND ranked.n > 1;--> statement-breakpoint
|
|
94
|
-
-- Auto-evolve now counts terminal exec evidence only.
|
|
95
|
-
UPDATE "loops" AS l
|
|
96
|
-
SET "evolved_run_count" = (
|
|
97
|
-
SELECT count(*)::integer FROM "runs" AS r
|
|
98
|
-
WHERE r."loop_id" = l."id" AND r."role" = 'exec' AND r."phase" IN ('done', 'error')
|
|
99
|
-
)
|
|
100
|
-
WHERE l."evolved_run_count" IS NOT NULL;--> statement-breakpoint
|
|
101
|
-
CREATE INDEX "runs_machine_phase_ready_idx" ON "runs" USING btree ("machine_id","phase");--> statement-breakpoint
|
|
102
|
-
CREATE UNIQUE INDEX "runs_loop_role_pending_idx" ON "runs" USING btree ("loop_id","role") WHERE "runs"."phase" = 'pending';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "runs" ADD COLUMN "exit_code" integer;--> statement-breakpoint
|
|
2
|
-
ALTER TABLE "runs" ADD COLUMN "final_text" text;--> statement-breakpoint
|
|
3
|
-
ALTER TABLE "runs" ADD COLUMN "heartbeat_at" text;--> statement-breakpoint
|
|
4
|
-
ALTER TABLE "runs" ADD COLUMN "deferred_at" text;--> statement-breakpoint
|
|
5
|
-
ALTER TABLE "runs" DROP COLUMN "cost_usd";--> statement-breakpoint
|
|
6
|
-
ALTER TABLE "runs" DROP COLUMN "artifacts";--> statement-breakpoint
|
|
7
|
-
ALTER TABLE "runs" DROP COLUMN "transcript";--> statement-breakpoint
|
|
8
|
-
ALTER TABLE "runs" DROP COLUMN "progress";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "runs" ADD COLUMN "agent" text;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
CREATE TABLE "run_report_receipts" (
|
|
2
|
-
"report_id" text PRIMARY KEY NOT NULL,
|
|
3
|
-
"run_id" text NOT NULL,
|
|
4
|
-
"payload_digest" text NOT NULL,
|
|
5
|
-
"ack_status" integer NOT NULL,
|
|
6
|
-
"ack_body" jsonb NOT NULL,
|
|
7
|
-
"created_at" timestamp with time zone NOT NULL
|
|
8
|
-
);
|
|
9
|
-
--> statement-breakpoint
|
|
10
|
-
ALTER TABLE "loops" ADD COLUMN "delete_requested_at" timestamp with time zone;--> statement-breakpoint
|
|
11
|
-
ALTER TABLE "machines" ADD COLUMN "daemon_protocol" integer;--> statement-breakpoint
|
|
12
|
-
ALTER TABLE "runs" ADD COLUMN "cancel_requested_at" timestamp with time zone;--> statement-breakpoint
|
|
13
|
-
CREATE INDEX "report_receipts_created" ON "run_report_receipts" USING btree ("created_at");--> statement-breakpoint
|
|
14
|
-
CREATE INDEX "delete_requested_loops" ON "loops" USING btree ("delete_requested_at") WHERE "loops"."delete_requested_at" IS NOT NULL;--> statement-breakpoint
|
|
15
|
-
-- Pre-v2 servers could run one row per loop on the same machine. Conservatively
|
|
16
|
-
-- terminalize every extra row before installing the machine-wide invariant; its
|
|
17
|
-
-- lease remains in grace, so a late real report can still reconcile it and the
|
|
18
|
-
-- machine stays blocked rather than multiplying uncertain execution.
|
|
19
|
-
WITH ranked AS (
|
|
20
|
-
SELECT id, row_number() OVER (PARTITION BY machine_id ORDER BY ts, id) AS n
|
|
21
|
-
FROM runs WHERE phase = 'running'
|
|
22
|
-
), extras AS (
|
|
23
|
-
UPDATE runs SET phase = 'error', outcome = 'error', error = 'protocol v2 migration: overlapping machine run', updated_at = CURRENT_TIMESTAMP::text
|
|
24
|
-
WHERE id IN (SELECT id FROM ranked WHERE n > 1)
|
|
25
|
-
RETURNING id
|
|
26
|
-
)
|
|
27
|
-
UPDATE run_leases SET state = 'terminal-grace', expires_at = to_char(CURRENT_TIMESTAMP + interval '24 hours', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')
|
|
28
|
-
WHERE run_id IN (SELECT id FROM extras) AND state = 'active';
|
|
29
|
-
--> statement-breakpoint
|
|
30
|
-
CREATE UNIQUE INDEX "one_running_run_per_machine" ON "runs" USING btree ("machine_id") WHERE "runs"."phase" = 'running';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
-- A terminal run can never retain active machine authority. Give any legacy or
|
|
2
|
-
-- crash-window row the same short enrichment window as a freshly-finished run.
|
|
3
|
-
UPDATE "run_leases"
|
|
4
|
-
SET "state" = 'terminal-grace',
|
|
5
|
-
"expires_at" = to_char((CURRENT_TIMESTAMP AT TIME ZONE 'UTC') + interval '10 minutes', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')
|
|
6
|
-
WHERE "state" = 'active'
|
|
7
|
-
AND EXISTS (
|
|
8
|
-
SELECT 1 FROM "runs"
|
|
9
|
-
WHERE "runs"."id" = "run_leases"."run_id"
|
|
10
|
-
AND "runs"."phase" IN ('done', 'error', 'canceled')
|
|
11
|
-
);
|
|
12
|
-
--> statement-breakpoint
|
|
13
|
-
-- Retired rows are durable non-authorizing tombstones. Their only deletion path
|
|
14
|
-
-- is the transaction that commits a matching 410 report receipt.
|
|
15
|
-
UPDATE "run_leases" SET "expires_at" = NULL WHERE "state" = 'retired';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "loops" ADD COLUMN "reasoning_effort" text;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
CREATE TABLE "terminal_report_incidents" (
|
|
2
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
3
|
-
"run_id" text NOT NULL,
|
|
4
|
-
"report_id" text NOT NULL,
|
|
5
|
-
"payload_digest" text NOT NULL,
|
|
6
|
-
"disposition" text NOT NULL,
|
|
7
|
-
"ack_body" jsonb NOT NULL,
|
|
8
|
-
"created_at" timestamp with time zone NOT NULL
|
|
9
|
-
);
|
|
10
|
-
--> statement-breakpoint
|
|
11
|
-
ALTER TABLE "loops" ADD COLUMN "pause_cause" jsonb;--> statement-breakpoint
|
|
12
|
-
ALTER TABLE "runs" ADD COLUMN "report_incident" jsonb;--> statement-breakpoint
|
|
13
|
-
CREATE INDEX "terminal_report_incidents_report_id" ON "terminal_report_incidents" USING btree ("report_id");--> statement-breakpoint
|
|
14
|
-
CREATE INDEX "terminal_report_incidents_created" ON "terminal_report_incidents" USING btree ("created_at");
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
-- Redesign run status as the agent's business result across exec/edit/evolve.
|
|
2
|
-
-- The column is plain text (Drizzle enum is TS-only), so this is a data migration
|
|
3
|
-
-- for existing history rather than a DDL constraint change.
|
|
4
|
-
UPDATE "runs"
|
|
5
|
-
SET "status" = CASE "status"
|
|
6
|
-
WHEN 'new' THEN 'kept'
|
|
7
|
-
WHEN 'resolved' THEN 'kept'
|
|
8
|
-
WHEN 'nothing-new' THEN 'no-change'
|
|
9
|
-
ELSE NULL
|
|
10
|
-
END
|
|
11
|
-
WHERE "status" IS NOT NULL
|
|
12
|
-
AND "status" NOT IN ('kept', 'no-change', 'blocked');
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "loops" RENAME COLUMN "state_schema" TO "metric_schema";--> statement-breakpoint
|
|
2
|
-
ALTER TABLE "runs" RENAME COLUMN "state" TO "metrics";--> statement-breakpoint
|
|
3
|
-
ALTER TABLE "loops" DROP COLUMN "completed_at";--> statement-breakpoint
|
|
4
|
-
ALTER TABLE "loops" DROP COLUMN "completion_reason";--> statement-breakpoint
|
|
5
|
-
ALTER TABLE "run_leases" DROP COLUMN "can_finish";
|
|
@@ -1,43 +0,0 @@
|
|
|
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');
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
-- Execution serialization belongs to a loop, not to its machine. Existing data
|
|
2
|
-
-- satisfies the new invariant because the old machine-wide index was stronger.
|
|
3
|
-
DROP INDEX "one_running_run_per_machine";--> statement-breakpoint
|
|
4
|
-
CREATE UNIQUE INDEX "one_running_run_per_loop" ON "runs" USING btree ("loop_id") WHERE "runs"."phase" = 'running';
|