@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.
Files changed (199) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/MachinesModal-CSbnrUER.js +1 -0
  3. package/.output/public/assets/SignIn-0Tjqs-Ma.js +1 -0
  4. package/.output/public/assets/actionUi-DpwGIGpw.js +1 -0
  5. package/.output/public/assets/app-CaZpuwOS.css +2 -0
  6. package/.output/public/assets/index-CaS_SmDq.js +10 -0
  7. package/.output/public/assets/invite._token-Btg_0aLp.js +1 -0
  8. package/.output/public/assets/invite._token-KMD2JAgE.js +1 -0
  9. package/.output/public/assets/lifecycleUi-C7dwHtbw.js +1 -0
  10. package/.output/public/assets/loops._loopId-D5usF3DO.js +67 -0
  11. package/.output/public/assets/loops._loopId_.runs._runId-DRCgXaCq.js +3 -0
  12. package/.output/public/assets/preload-helper-DsxECZIS.js +5 -0
  13. package/.output/public/assets/routes-CtFgwdgW.js +1 -0
  14. package/.output/public/assets/routes-LDbnnQ3f.js +1 -0
  15. package/.output/public/assets/t._teamId-D41xcbsF.js +1 -0
  16. package/.output/public/assets/t._teamId-DUena1pV.js +1 -0
  17. package/.output/public/assets/ui-Do4gqMyP.js +1 -0
  18. package/.output/server/_libs/@base-ui/react+[...].mjs +4130 -4130
  19. package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
  20. package/.output/server/_libs/drizzle-orm+postgres.mjs +28 -1
  21. package/.output/server/_ssr/DashboardView-C2LdV6J0.mjs +914 -0
  22. package/.output/server/_ssr/{notifyFns-DuPR1zd7.mjs → MachinesModal-BjkcVjjx.mjs} +55 -35
  23. package/.output/server/_ssr/{SignIn-RmpWm9uy.mjs → SignIn-DEGrvJvb.mjs} +10 -24
  24. package/.output/server/_ssr/SocialLinks-Cm4H8pUJ.mjs +1044 -0
  25. package/.output/server/_ssr/{actionUi-BN55TNYE.mjs → actionUi-DJBWuNwr.mjs} +3 -3
  26. package/.output/server/_ssr/{artifactFiles-BCaIIrrT.mjs → artifactFiles-DtpRidFZ.mjs} +7 -8
  27. package/.output/server/_ssr/{artifactKind-BW0isV8L.mjs → artifactKind-FBYbgSuf.mjs} +27 -2
  28. package/.output/server/_ssr/artifacts-BR3jj0NC.mjs +2 -0
  29. package/.output/server/_ssr/{auth-30Z4lV1w.mjs → auth-C0zoZCGe.mjs} +16 -19
  30. package/.output/server/_ssr/boot-CdOO4xOo.mjs +2 -0
  31. package/.output/server/_ssr/{boot-3BNKujyp.mjs → boot-sNlIkoLe.mjs} +1331 -3927
  32. package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.mjs → bun-sqlite-dialect-BW9W1_Ps-DmlZWqO7.mjs} +2 -2
  33. package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.mjs → d1-sqlite-dialect-BLC8LXE6-CCNzqZwZ.mjs} +2 -2
  34. package/.output/server/_ssr/db-CwLD-5w1.mjs +2 -0
  35. package/.output/server/_ssr/{dist-Cd6nlLlO.mjs → dist-B3SxDOpW.mjs} +2 -2
  36. package/.output/server/_ssr/{factory-CWWwV7XZ.mjs → factory-Dv3Zopis.mjs} +2 -2
  37. package/.output/server/_ssr/invite._token-CJ6-H-s3.mjs +20 -0
  38. package/.output/server/_ssr/{invite._token-SdWXemIc.mjs → invite._token-dLKDJKVs.mjs} +9 -17
  39. package/.output/server/_ssr/{invite._token-BKlz0R2f.mjs → invite._token-l1SjouDz.mjs} +6 -15
  40. package/.output/server/_ssr/{kysely-adapter-C8iS51DB.mjs → kysely-adapter-nL7WKSgw.mjs} +1 -1
  41. package/.output/server/_ssr/{lifecycleUi-DgBQAYzp.mjs → lifecycleUi-Dad3hvhm.mjs} +11 -11
  42. package/.output/server/_ssr/logger-B8m8F1Qu.mjs +2 -0
  43. package/.output/server/_ssr/loopApi-BKyFB4KM.mjs +342 -0
  44. package/.output/server/_ssr/{adapters-BoLkOf1T.mjs → loopProjection-B8a829ij.mjs} +25 -55
  45. package/.output/server/_ssr/loops._loopId-DS16Phmq.mjs +1271 -0
  46. package/.output/server/_ssr/{loops._loopId_.runs._runId-PUGBrD5q.mjs → loops._loopId_.runs._runId-BEJI6iK5.mjs} +23 -74
  47. package/.output/server/_ssr/{loops._loopId_.runs._runId-Ymy4lwee.mjs → loops._loopId_.runs._runId-CduETLqH.mjs} +4 -5
  48. package/.output/server/_ssr/{machineFns-BZ9puxDt.mjs → machineFns-ByMsgG12.mjs} +3 -5
  49. package/.output/server/_ssr/{node-sqlite-dialect-D_3JmkMo.mjs → node-sqlite-dialect-CjNineno.mjs} +2 -2
  50. package/.output/server/_ssr/router-CXyrnvx-.mjs +565 -0
  51. package/.output/server/_ssr/{routes-ClZEdsnB.mjs → routes-BulNEUEE.mjs} +6 -10
  52. package/.output/server/_ssr/{routes-ComqHvCL.mjs → routes-DD94baie.mjs} +3 -3
  53. package/.output/server/_ssr/{routes-D5jJJ-30.mjs → routes-Wjexi35W.mjs} +6 -6
  54. package/.output/server/_ssr/runDiff-Ba8Lg1vg.mjs +2 -0
  55. package/.output/server/_ssr/ssr.mjs +60 -100
  56. package/.output/server/_ssr/store-Cujtg2QE.mjs +2 -0
  57. package/.output/server/_ssr/{t._teamId-BgHV_KFP.mjs → t._teamId-1CreIlPV.mjs} +7 -11
  58. package/.output/server/_ssr/{t._teamId-DDERNgfn.mjs → t._teamId-Bd6-zZsy.mjs} +4 -4
  59. package/.output/server/_ssr/{t._teamId-DRJvKHZn.mjs → t._teamId-COuMKQ4r.mjs} +7 -7
  60. package/.output/server/_ssr/{teamFns-Bp81UO-x.mjs → teamFns-H438WnZC.mjs} +12 -30
  61. package/.output/server/_ssr/{teamFns-bm82twd5.mjs → teamFns-j2JKjorZ.mjs} +2 -2
  62. package/.output/server/_ssr/tokens-DgG_Syq3.mjs +2 -0
  63. package/.output/server/_ssr/{ui-Ww2tTM2u.mjs → ui-D5KWstlb.mjs} +26 -48
  64. package/.output/server/{_tanstack-start-manifest_v-DwKENYCN.mjs → _tanstack-start-manifest_v-3H7yBKLz.mjs} +25 -35
  65. package/{drizzle/0000_round_marauders.sql → .output/server/drizzle/0000_baseline.sql} +102 -44
  66. package/.output/server/drizzle/meta/_journal.json +3 -115
  67. package/.output/server/index.mjs +83 -132
  68. package/{.output/server/drizzle/0000_round_marauders.sql → drizzle/0000_baseline.sql} +102 -44
  69. package/drizzle/meta/_journal.json +3 -115
  70. package/package.json +2 -11
  71. package/scripts/pievo-server.mjs +3 -1
  72. package/scripts/server-cli-lib.mjs +23 -16
  73. package/.output/public/assets/CodeField-dOzyFQNH.js +0 -34
  74. package/.output/public/assets/LoopView-DjVHUyrR.js +0 -59
  75. package/.output/public/assets/Modal-CCRvx959.js +0 -1
  76. package/.output/public/assets/SignIn-Qxw5zDFq.js +0 -1
  77. package/.output/public/assets/actionUi-CXxhzYe2.js +0 -1
  78. package/.output/public/assets/app-D1cij_NJ.css +0 -2
  79. package/.output/public/assets/artifactView-Cd5wWPil.js +0 -66
  80. package/.output/public/assets/index-BRN_CQ8U.js +0 -12
  81. package/.output/public/assets/invite._token-BIxr8DlP.js +0 -1
  82. package/.output/public/assets/invite._token-j2BTCeG1.js +0 -1
  83. package/.output/public/assets/jsx-runtime-BseJUIpC.js +0 -1
  84. package/.output/public/assets/lifecycleUi-Qy_8beQK.js +0 -1
  85. package/.output/public/assets/loopApi-CT1mMhlb.js +0 -3
  86. package/.output/public/assets/loops._loopId-BRBQzioy.js +0 -4
  87. package/.output/public/assets/loops._loopId_.runs._runId-CMnOJkem.js +0 -3
  88. package/.output/public/assets/notifyFns-DYD4EKaG.js +0 -1
  89. package/.output/public/assets/preload-helper-DFkkpP6W.js +0 -3
  90. package/.output/public/assets/routes-3nuEJGdo.js +0 -1
  91. package/.output/public/assets/routes-DORLim-C.js +0 -1
  92. package/.output/public/assets/t._teamId-F5f4K8kd.js +0 -1
  93. package/.output/public/assets/t._teamId-XfE_S1Fo.js +0 -1
  94. package/.output/public/assets/ui-Dhsx6SW0.js +0 -1
  95. package/.output/public/assets/useRouter-DsjH8G0p.js +0 -1
  96. package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +0 -19713
  97. package/.output/server/_libs/@codemirror/lang-css+[...].mjs +0 -2636
  98. package/.output/server/_libs/@codemirror/lang-html+[...].mjs +0 -2247
  99. package/.output/server/_libs/@codemirror/lang-json+[...].mjs +0 -79
  100. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +0 -1736
  101. package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +0 -76
  102. package/.output/server/_libs/babel__runtime.mjs +0 -30
  103. package/.output/server/_libs/clsx.mjs +0 -16
  104. package/.output/server/_libs/codemirror__commands.mjs +0 -1725
  105. package/.output/server/_libs/codemirror__lint.mjs +0 -565
  106. package/.output/server/_libs/codemirror__search.mjs +0 -1138
  107. package/.output/server/_libs/codemirror__theme-one-dark.mjs +0 -161
  108. package/.output/server/_libs/d3-array.mjs +0 -231
  109. package/.output/server/_libs/d3-color.mjs +0 -330
  110. package/.output/server/_libs/d3-format.mjs +0 -252
  111. package/.output/server/_libs/d3-interpolate.mjs +0 -163
  112. package/.output/server/_libs/d3-path.mjs +0 -77
  113. package/.output/server/_libs/d3-scale+[...].mjs +0 -1907
  114. package/.output/server/_libs/d3-shape.mjs +0 -818
  115. package/.output/server/_libs/decimal.js-light.mjs +0 -884
  116. package/.output/server/_libs/dom-serializer+[...].mjs +0 -708
  117. package/.output/server/_libs/domhandler.mjs +0 -461
  118. package/.output/server/_libs/domutils.mjs +0 -868
  119. package/.output/server/_libs/es-toolkit.mjs +0 -1737
  120. package/.output/server/_libs/eventemitter3.mjs +0 -236
  121. package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +0 -1560
  122. package/.output/server/_libs/html-react-parser+[...].mjs +0 -1360
  123. package/.output/server/_libs/react-is.mjs +0 -48
  124. package/.output/server/_libs/react-redux+[...].mjs +0 -205
  125. package/.output/server/_libs/recharts+victory-vendor.mjs +0 -17303
  126. package/.output/server/_libs/uiw__codemirror-themes.mjs +0 -32
  127. package/.output/server/_libs/uiw__react-codemirror.mjs +0 -354
  128. package/.output/server/_ssr/CodeField-B7oOmmwH.mjs +0 -143
  129. package/.output/server/_ssr/DashboardView-BF7PciP7.mjs +0 -2736
  130. package/.output/server/_ssr/LoopPlaybook-DC7QVvPY.mjs +0 -2105
  131. package/.output/server/_ssr/LoopView-DwSrm9Ja.mjs +0 -1300
  132. package/.output/server/_ssr/Modal-MaCG52Pv.mjs +0 -49
  133. package/.output/server/_ssr/artifactView-iuPsp5aa.mjs +0 -304
  134. package/.output/server/_ssr/artifacts-jQ-bfdhI.mjs +0 -2
  135. package/.output/server/_ssr/boot-CsEFT53K.mjs +0 -2
  136. package/.output/server/_ssr/db-CXownd1H.mjs +0 -2
  137. package/.output/server/_ssr/invite._token-CWl6kipD.mjs +0 -28
  138. package/.output/server/_ssr/logger-Gy-47z3k.mjs +0 -2
  139. package/.output/server/_ssr/loopApi-8_KgBapr.mjs +0 -109
  140. package/.output/server/_ssr/loopApi-ABi9SgWS.mjs +0 -564
  141. package/.output/server/_ssr/loops._loopId-SON_t43g.mjs +0 -30
  142. package/.output/server/_ssr/loops._loopId-p1KWsvMM.mjs +0 -1477
  143. package/.output/server/_ssr/notifyFns-BUCePuF3.mjs +0 -118
  144. package/.output/server/_ssr/router-Czxvra6l.mjs +0 -685
  145. package/.output/server/_ssr/runDiff--qLtU4FI.mjs +0 -2
  146. package/.output/server/_ssr/store-40eVzW1S.mjs +0 -2
  147. package/.output/server/_ssr/tokens-CbfoRC_s.mjs +0 -2
  148. package/.output/server/drizzle/0001_naive_silver_fox.sql +0 -25
  149. package/.output/server/drizzle/0002_funny_sage.sql +0 -12
  150. package/.output/server/drizzle/0003_optimal_slapstick.sql +0 -102
  151. package/.output/server/drizzle/0004_remove_grok_agent.sql +0 -5
  152. package/.output/server/drizzle/0005_heavy_gauntlet.sql +0 -8
  153. package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +0 -1
  154. package/.output/server/drizzle/0007_faulty_starbolt.sql +0 -30
  155. package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
  156. package/.output/server/drizzle/0009_ordinary_electro.sql +0 -1
  157. package/.output/server/drizzle/0010_workable_rage.sql +0 -14
  158. package/.output/server/drizzle/0011_steep_marvel_zombies.sql +0 -3
  159. package/.output/server/drizzle/0012_blocked_run_status.sql +0 -12
  160. package/.output/server/drizzle/0013_drop_run_outcome.sql +0 -2
  161. package/.output/server/drizzle/0014_luxuriant_scrambler.sql +0 -5
  162. package/.output/server/drizzle/0015_run_history_foundation.sql +0 -43
  163. package/.output/server/drizzle/0016_plural_machine_runs.sql +0 -4
  164. package/.output/server/drizzle/meta/0000_snapshot.json +0 -1333
  165. package/.output/server/drizzle/meta/0001_snapshot.json +0 -1498
  166. package/.output/server/drizzle/meta/0002_snapshot.json +0 -1576
  167. package/.output/server/drizzle/meta/0003_snapshot.json +0 -1666
  168. package/.output/server/drizzle/meta/0005_snapshot.json +0 -1666
  169. package/.output/server/drizzle/meta/0006_snapshot.json +0 -1672
  170. package/.output/server/drizzle/meta/0007_snapshot.json +0 -1787
  171. package/.output/server/drizzle/meta/0009_snapshot.json +0 -1793
  172. package/.output/server/drizzle/meta/0010_snapshot.json +0 -1891
  173. package/.output/server/drizzle/meta/0011_snapshot.json +0 -1872
  174. package/drizzle/0001_naive_silver_fox.sql +0 -25
  175. package/drizzle/0002_funny_sage.sql +0 -12
  176. package/drizzle/0003_optimal_slapstick.sql +0 -102
  177. package/drizzle/0004_remove_grok_agent.sql +0 -5
  178. package/drizzle/0005_heavy_gauntlet.sql +0 -8
  179. package/drizzle/0006_tranquil_sharon_carter.sql +0 -1
  180. package/drizzle/0007_faulty_starbolt.sql +0 -30
  181. package/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
  182. package/drizzle/0009_ordinary_electro.sql +0 -1
  183. package/drizzle/0010_workable_rage.sql +0 -14
  184. package/drizzle/0011_steep_marvel_zombies.sql +0 -3
  185. package/drizzle/0012_blocked_run_status.sql +0 -12
  186. package/drizzle/0013_drop_run_outcome.sql +0 -2
  187. package/drizzle/0014_luxuriant_scrambler.sql +0 -5
  188. package/drizzle/0015_run_history_foundation.sql +0 -43
  189. package/drizzle/0016_plural_machine_runs.sql +0 -4
  190. package/drizzle/meta/0000_snapshot.json +0 -1333
  191. package/drizzle/meta/0001_snapshot.json +0 -1498
  192. package/drizzle/meta/0002_snapshot.json +0 -1576
  193. package/drizzle/meta/0003_snapshot.json +0 -1666
  194. package/drizzle/meta/0005_snapshot.json +0 -1666
  195. package/drizzle/meta/0006_snapshot.json +0 -1672
  196. package/drizzle/meta/0007_snapshot.json +0 -1787
  197. package/drizzle/meta/0009_snapshot.json +0 -1793
  198. package/drizzle/meta/0010_snapshot.json +0 -1891
  199. 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,5 +0,0 @@
1
- -- Grok CLI execution support was removed. Existing loops must remain runnable,
2
- -- so move the retired agent value to the default supported executor.
3
- UPDATE "loops"
4
- SET "agent" = 'claude-code', "model" = NULL
5
- WHERE "agent" = 'grok';
@@ -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,3 +0,0 @@
1
- ALTER TABLE "loops" DROP COLUMN "workflow";--> statement-breakpoint
2
- ALTER TABLE "loops" DROP COLUMN "state";--> statement-breakpoint
3
- ALTER TABLE "run_leases" DROP COLUMN "can_set_workflow";
@@ -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,2 +0,0 @@
1
- -- Breaking change: run display/result is derived from role + phase + status.
2
- ALTER TABLE "runs" DROP COLUMN IF EXISTS "outcome";
@@ -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';