@kky42/pievo-server 1.0.0
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 +17 -0
- package/.output/public/assets/CodeField-dOzyFQNH.js +34 -0
- package/.output/public/assets/LoopView-B4H9QibC.js +55 -0
- package/.output/public/assets/Modal-D33gNSgx.js +1 -0
- package/.output/public/assets/SignIn-SHuRRyOv.js +1 -0
- package/.output/public/assets/actionUi-ChGGALzg.js +1 -0
- package/.output/public/assets/app-DElSo_jy.css +2 -0
- package/.output/public/assets/artifactView-DFuubXLJ.js +66 -0
- package/.output/public/assets/index-DfpTWRSz.js +12 -0
- package/.output/public/assets/invite._token-DJtd-XE2.js +1 -0
- package/.output/public/assets/invite._token-T8oo4Qtw.js +1 -0
- package/.output/public/assets/jsx-runtime-BseJUIpC.js +1 -0
- package/.output/public/assets/lifecycleUi-DKkChdnU.js +1 -0
- package/.output/public/assets/loopApi-BM2nj71x.js +3 -0
- package/.output/public/assets/loops._loopId-B19Jw7jC.js +5 -0
- package/.output/public/assets/loops._loopId_.runs._runId-_CflHV38.js +3 -0
- package/.output/public/assets/notifyFns-DCubjpRy.js +1 -0
- package/.output/public/assets/preload-helper-CKUiEq3b.js +3 -0
- package/.output/public/assets/routes-B9tgli5f.js +1 -0
- package/.output/public/assets/routes-CTtlM_qt.js +1 -0
- package/.output/public/assets/t._teamId-Bm21mngW.js +1 -0
- package/.output/public/assets/t._teamId-gR7BVKkR.js +1 -0
- package/.output/public/assets/ui-Dp88qUWh.js +1 -0
- package/.output/public/assets/useRouter-DsjH8G0p.js +1 -0
- package/.output/public/favicon.svg +12 -0
- package/.output/public/fonts/GeistPixel-Square.woff2 +0 -0
- package/.output/server/_chunks/ssr-renderer.mjs +26 -0
- package/.output/server/_libs/@aws-crypto/crc32+[...].mjs +419 -0
- package/.output/server/_libs/@aws-sdk/checksums+[...].mjs +10732 -0
- package/.output/server/_libs/@aws-sdk/client-s3+[...].mjs +9475 -0
- package/.output/server/_libs/@aws-sdk/credential-provider-http+[...].mjs +137 -0
- package/.output/server/_libs/@aws-sdk/credential-provider-ini+[...].mjs +440 -0
- package/.output/server/_libs/@aws-sdk/credential-provider-process+[...].mjs +62 -0
- package/.output/server/_libs/@aws-sdk/credential-provider-sso+[...].mjs +818 -0
- package/.output/server/_libs/@aws-sdk/credential-provider-web-identity+[...].mjs +59 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +11125 -0
- package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +19713 -0
- package/.output/server/_libs/@codemirror/lang-css+[...].mjs +2636 -0
- package/.output/server/_libs/@codemirror/lang-html+[...].mjs +2247 -0
- package/.output/server/_libs/@codemirror/lang-json+[...].mjs +79 -0
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1736 -0
- package/.output/server/_libs/@smithy/credential-provider-imds+[...].mjs +342 -0
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +14300 -0
- package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +76 -0
- package/.output/server/_libs/atomic-sleep.mjs +27 -0
- package/.output/server/_libs/aws-crypto__crc32c.mjs +314 -0
- package/.output/server/_libs/aws-sdk__nested-clients.mjs +2671 -0
- package/.output/server/_libs/babel__runtime.mjs +30 -0
- package/.output/server/_libs/clsx.mjs +16 -0
- package/.output/server/_libs/codemirror__commands.mjs +1725 -0
- package/.output/server/_libs/codemirror__lint.mjs +565 -0
- package/.output/server/_libs/codemirror__search.mjs +1138 -0
- package/.output/server/_libs/codemirror__theme-one-dark.mjs +161 -0
- package/.output/server/_libs/colorette.mjs +129 -0
- package/.output/server/_libs/croner.mjs +735 -0
- package/.output/server/_libs/d3-array.mjs +231 -0
- package/.output/server/_libs/d3-color.mjs +330 -0
- package/.output/server/_libs/d3-format.mjs +252 -0
- package/.output/server/_libs/d3-interpolate.mjs +163 -0
- package/.output/server/_libs/d3-path.mjs +77 -0
- package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
- package/.output/server/_libs/d3-shape.mjs +689 -0
- package/.output/server/_libs/dateformat.mjs +341 -0
- package/.output/server/_libs/decimal.js-light.mjs +884 -0
- package/.output/server/_libs/diff.mjs +732 -0
- package/.output/server/_libs/dom-serializer+[...].mjs +708 -0
- package/.output/server/_libs/domhandler.mjs +461 -0
- package/.output/server/_libs/dompurify.mjs +2111 -0
- package/.output/server/_libs/domutils.mjs +868 -0
- package/.output/server/_libs/drizzle-orm+postgres.mjs +7689 -0
- package/.output/server/_libs/electric-sql__pglite.mjs +14674 -0
- package/.output/server/_libs/end-of-stream+once+wrappy.mjs +145 -0
- package/.output/server/_libs/es-toolkit.mjs +1737 -0
- package/.output/server/_libs/eventemitter3.mjs +236 -0
- package/.output/server/_libs/fast-copy.mjs +285 -0
- package/.output/server/_libs/fast-safe-stringify.mjs +172 -0
- package/.output/server/_libs/h3+rou3+srvx.mjs +1201 -0
- package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +1560 -0
- package/.output/server/_libs/html-react-parser+[...].mjs +1360 -0
- package/.output/server/_libs/initdb.wasm +0 -0
- package/.output/server/_libs/marked.mjs +1548 -0
- package/.output/server/_libs/on-exit-leak-free.mjs +80 -0
- package/.output/server/_libs/pglite.data +37667 -8
- package/.output/server/_libs/pglite.wasm +0 -0
- package/.output/server/_libs/pino+[...].mjs +3196 -0
- package/.output/server/_libs/pino-abstract-transport+split2.mjs +194 -0
- package/.output/server/_libs/pino-pretty+[...].mjs +1623 -0
- package/.output/server/_libs/pinojs__redact.mjs +280 -0
- package/.output/server/_libs/react-redux+[...].mjs +205 -0
- package/.output/server/_libs/recharts+victory-vendor.mjs +15875 -0
- package/.output/server/_libs/tanstack__history.mjs +342 -0
- package/.output/server/_libs/ufo.mjs +64 -0
- package/.output/server/_libs/uiw__codemirror-themes.mjs +32 -0
- package/.output/server/_libs/uiw__react-codemirror.mjs +354 -0
- package/.output/server/_runtime.mjs +37 -0
- package/.output/server/_ssr/CodeField-tm4rr6G3.mjs +143 -0
- package/.output/server/_ssr/DashboardView-CC7htv28.mjs +2795 -0
- package/.output/server/_ssr/LoopPlaybook-BXH8mhiX.mjs +2105 -0
- package/.output/server/_ssr/LoopView-DCugEbHx.mjs +1106 -0
- package/.output/server/_ssr/Modal-DpKZHLZK.mjs +49 -0
- package/.output/server/_ssr/SignIn-dTndU6Hw.mjs +67 -0
- package/.output/server/_ssr/actionUi-CZbEixbf.mjs +119 -0
- package/.output/server/_ssr/adapters-BS8XosjF.mjs +130 -0
- package/.output/server/_ssr/artifactFiles-Cagtj7J0.mjs +61 -0
- package/.output/server/_ssr/artifactKind-BW0isV8L.mjs +37 -0
- package/.output/server/_ssr/artifactView-DS4O22wl.mjs +304 -0
- package/.output/server/_ssr/artifacts-DngKyW2u.mjs +2 -0
- package/.output/server/_ssr/auth-DY1DuYZd.mjs +38429 -0
- package/.output/server/_ssr/boot-BbtG0ImW.mjs +9010 -0
- package/.output/server/_ssr/boot-CMHTxQpJ.mjs +2 -0
- package/.output/server/_ssr/bun-sqlite-dialect-BW9W1_Ps-CU1Spd6z.mjs +162 -0
- package/.output/server/_ssr/core-RrmWoKne.mjs +5 -0
- package/.output/server/_ssr/createServerRpc-BD8Xn_0_.mjs +12 -0
- package/.output/server/_ssr/d1-sqlite-dialect-BLC8LXE6-DfG7tB8s.mjs +112 -0
- package/.output/server/_ssr/db-DWAuZq1o.mjs +2 -0
- package/.output/server/_ssr/dist-BIxFFVZg.mjs +342 -0
- package/.output/server/_ssr/empty-plugin-adapters-DKUlnwwl.mjs +5 -0
- package/.output/server/_ssr/factory-Blq0DYfT.mjs +6903 -0
- package/.output/server/_ssr/invite._token-BRCo9LGB.mjs +36 -0
- package/.output/server/_ssr/invite._token-DJxGLILJ.mjs +28 -0
- package/.output/server/_ssr/invite._token-NewFt27g.mjs +92 -0
- package/.output/server/_ssr/kysely-adapter-D3XTe64J.mjs +2 -0
- package/.output/server/_ssr/kysely-migration-tables-JkVUjPF_-bPAX9LR_.mjs +19 -0
- package/.output/server/_ssr/lifecycleUi-C9lg1r3r.mjs +38 -0
- package/.output/server/_ssr/logger-Dw82jNjH.mjs +2 -0
- package/.output/server/_ssr/loopApi-BtfkZQYK.mjs +532 -0
- package/.output/server/_ssr/loopApi-Cxe8WyOB.mjs +105 -0
- package/.output/server/_ssr/loops._loopId-7NQJPB9W.mjs +30 -0
- package/.output/server/_ssr/loops._loopId-DhnArGdL.mjs +1635 -0
- package/.output/server/_ssr/loops._loopId_.runs._runId-Bvuo2nki.mjs +29 -0
- package/.output/server/_ssr/loops._loopId_.runs._runId-Dip5Xk-q.mjs +674 -0
- package/.output/server/_ssr/machineFns-Dvr5ICUy.mjs +266 -0
- package/.output/server/_ssr/node-sqlite-dialect-DhyOpJTX.mjs +162 -0
- package/.output/server/_ssr/notifyFns-BcMRY5kP.mjs +118 -0
- package/.output/server/_ssr/notifyFns-Q458pZmE.mjs +580 -0
- package/.output/server/_ssr/router-J8KZ30xw.mjs +678 -0
- package/.output/server/_ssr/routes-Bcs4T1ox.mjs +28 -0
- package/.output/server/_ssr/routes-BoGrcf-b.mjs +43 -0
- package/.output/server/_ssr/routes-D4am3Zff.mjs +28 -0
- package/.output/server/_ssr/runDiff-CpEFqo7G.mjs +113 -0
- package/.output/server/_ssr/ssr.mjs +5837 -0
- package/.output/server/_ssr/start-4ifArtKx.mjs +4 -0
- package/.output/server/_ssr/store-b3JcQ08F.mjs +2 -0
- package/.output/server/_ssr/t._teamId-CeUhzgzT.mjs +32 -0
- package/.output/server/_ssr/t._teamId-DR-hQK7o.mjs +47 -0
- package/.output/server/_ssr/t._teamId-Dy_McbRt.mjs +31 -0
- package/.output/server/_ssr/teamCookie-B7hLOIie.mjs +10 -0
- package/.output/server/_ssr/teamFns-BIDnsg2A.mjs +473 -0
- package/.output/server/_ssr/teamFns-DA4ovI5g.mjs +33 -0
- package/.output/server/_ssr/tokens-ytd60FUt.mjs +2 -0
- package/.output/server/_ssr/ui-Dej2qjuS.mjs +267 -0
- package/.output/server/_tanstack-start-manifest_v-CVS6c7re.mjs +95 -0
- package/.output/server/drizzle/0000_round_marauders.sql +193 -0
- package/.output/server/drizzle/0001_naive_silver_fox.sql +25 -0
- package/.output/server/drizzle/0002_funny_sage.sql +12 -0
- package/.output/server/drizzle/0003_optimal_slapstick.sql +102 -0
- package/.output/server/drizzle/0004_remove_grok_agent.sql +5 -0
- package/.output/server/drizzle/0005_heavy_gauntlet.sql +8 -0
- package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +1 -0
- package/.output/server/drizzle/0007_faulty_starbolt.sql +30 -0
- package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +15 -0
- package/.output/server/drizzle/meta/0000_snapshot.json +1333 -0
- package/.output/server/drizzle/meta/0001_snapshot.json +1498 -0
- package/.output/server/drizzle/meta/0002_snapshot.json +1576 -0
- package/.output/server/drizzle/meta/0003_snapshot.json +1666 -0
- package/.output/server/drizzle/meta/0005_snapshot.json +1666 -0
- package/.output/server/drizzle/meta/0006_snapshot.json +1672 -0
- package/.output/server/drizzle/meta/0007_snapshot.json +1787 -0
- package/.output/server/drizzle/meta/_journal.json +69 -0
- package/.output/server/index.mjs +464 -0
- package/.output/server/node_modules/tslib/modules/index.js +70 -0
- package/.output/server/node_modules/tslib/modules/package.json +3 -0
- package/.output/server/node_modules/tslib/package.json +47 -0
- package/.output/server/node_modules/tslib/tslib.js +484 -0
- package/.output/server/package.json +9 -0
- package/LICENSE +21 -0
- package/drizzle/0000_round_marauders.sql +193 -0
- package/drizzle/0001_naive_silver_fox.sql +25 -0
- package/drizzle/0002_funny_sage.sql +12 -0
- package/drizzle/0003_optimal_slapstick.sql +102 -0
- package/drizzle/0004_remove_grok_agent.sql +5 -0
- package/drizzle/0005_heavy_gauntlet.sql +8 -0
- package/drizzle/0006_tranquil_sharon_carter.sql +1 -0
- package/drizzle/0007_faulty_starbolt.sql +30 -0
- package/drizzle/0008_durable_lifecycle_evidence.sql +15 -0
- package/drizzle/meta/0000_snapshot.json +1333 -0
- package/drizzle/meta/0001_snapshot.json +1498 -0
- package/drizzle/meta/0002_snapshot.json +1576 -0
- package/drizzle/meta/0003_snapshot.json +1666 -0
- package/drizzle/meta/0005_snapshot.json +1666 -0
- package/drizzle/meta/0006_snapshot.json +1672 -0
- package/drizzle/meta/0007_snapshot.json +1787 -0
- package/drizzle/meta/_journal.json +69 -0
- package/package.json +84 -0
- package/scripts/pievo-server.mjs +390 -0
- package/scripts/prestart.mjs +66 -0
- package/scripts/server-cli-lib.mjs +451 -0
|
@@ -0,0 +1,102 @@
|
|
|
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';
|
|
@@ -0,0 +1,8 @@
|
|
|
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";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "runs" ADD COLUMN "agent" text;
|
|
@@ -0,0 +1,30 @@
|
|
|
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';
|
|
@@ -0,0 +1,15 @@
|
|
|
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';
|