@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.
Files changed (197) hide show
  1. package/.output/nitro.json +17 -0
  2. package/.output/public/assets/CodeField-dOzyFQNH.js +34 -0
  3. package/.output/public/assets/LoopView-B4H9QibC.js +55 -0
  4. package/.output/public/assets/Modal-D33gNSgx.js +1 -0
  5. package/.output/public/assets/SignIn-SHuRRyOv.js +1 -0
  6. package/.output/public/assets/actionUi-ChGGALzg.js +1 -0
  7. package/.output/public/assets/app-DElSo_jy.css +2 -0
  8. package/.output/public/assets/artifactView-DFuubXLJ.js +66 -0
  9. package/.output/public/assets/index-DfpTWRSz.js +12 -0
  10. package/.output/public/assets/invite._token-DJtd-XE2.js +1 -0
  11. package/.output/public/assets/invite._token-T8oo4Qtw.js +1 -0
  12. package/.output/public/assets/jsx-runtime-BseJUIpC.js +1 -0
  13. package/.output/public/assets/lifecycleUi-DKkChdnU.js +1 -0
  14. package/.output/public/assets/loopApi-BM2nj71x.js +3 -0
  15. package/.output/public/assets/loops._loopId-B19Jw7jC.js +5 -0
  16. package/.output/public/assets/loops._loopId_.runs._runId-_CflHV38.js +3 -0
  17. package/.output/public/assets/notifyFns-DCubjpRy.js +1 -0
  18. package/.output/public/assets/preload-helper-CKUiEq3b.js +3 -0
  19. package/.output/public/assets/routes-B9tgli5f.js +1 -0
  20. package/.output/public/assets/routes-CTtlM_qt.js +1 -0
  21. package/.output/public/assets/t._teamId-Bm21mngW.js +1 -0
  22. package/.output/public/assets/t._teamId-gR7BVKkR.js +1 -0
  23. package/.output/public/assets/ui-Dp88qUWh.js +1 -0
  24. package/.output/public/assets/useRouter-DsjH8G0p.js +1 -0
  25. package/.output/public/favicon.svg +12 -0
  26. package/.output/public/fonts/GeistPixel-Square.woff2 +0 -0
  27. package/.output/server/_chunks/ssr-renderer.mjs +26 -0
  28. package/.output/server/_libs/@aws-crypto/crc32+[...].mjs +419 -0
  29. package/.output/server/_libs/@aws-sdk/checksums+[...].mjs +10732 -0
  30. package/.output/server/_libs/@aws-sdk/client-s3+[...].mjs +9475 -0
  31. package/.output/server/_libs/@aws-sdk/credential-provider-http+[...].mjs +137 -0
  32. package/.output/server/_libs/@aws-sdk/credential-provider-ini+[...].mjs +440 -0
  33. package/.output/server/_libs/@aws-sdk/credential-provider-process+[...].mjs +62 -0
  34. package/.output/server/_libs/@aws-sdk/credential-provider-sso+[...].mjs +818 -0
  35. package/.output/server/_libs/@aws-sdk/credential-provider-web-identity+[...].mjs +59 -0
  36. package/.output/server/_libs/@base-ui/react+[...].mjs +11125 -0
  37. package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +19713 -0
  38. package/.output/server/_libs/@codemirror/lang-css+[...].mjs +2636 -0
  39. package/.output/server/_libs/@codemirror/lang-html+[...].mjs +2247 -0
  40. package/.output/server/_libs/@codemirror/lang-json+[...].mjs +79 -0
  41. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1736 -0
  42. package/.output/server/_libs/@smithy/credential-provider-imds+[...].mjs +342 -0
  43. package/.output/server/_libs/@tanstack/react-router+[...].mjs +14300 -0
  44. package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +76 -0
  45. package/.output/server/_libs/atomic-sleep.mjs +27 -0
  46. package/.output/server/_libs/aws-crypto__crc32c.mjs +314 -0
  47. package/.output/server/_libs/aws-sdk__nested-clients.mjs +2671 -0
  48. package/.output/server/_libs/babel__runtime.mjs +30 -0
  49. package/.output/server/_libs/clsx.mjs +16 -0
  50. package/.output/server/_libs/codemirror__commands.mjs +1725 -0
  51. package/.output/server/_libs/codemirror__lint.mjs +565 -0
  52. package/.output/server/_libs/codemirror__search.mjs +1138 -0
  53. package/.output/server/_libs/codemirror__theme-one-dark.mjs +161 -0
  54. package/.output/server/_libs/colorette.mjs +129 -0
  55. package/.output/server/_libs/croner.mjs +735 -0
  56. package/.output/server/_libs/d3-array.mjs +231 -0
  57. package/.output/server/_libs/d3-color.mjs +330 -0
  58. package/.output/server/_libs/d3-format.mjs +252 -0
  59. package/.output/server/_libs/d3-interpolate.mjs +163 -0
  60. package/.output/server/_libs/d3-path.mjs +77 -0
  61. package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
  62. package/.output/server/_libs/d3-shape.mjs +689 -0
  63. package/.output/server/_libs/dateformat.mjs +341 -0
  64. package/.output/server/_libs/decimal.js-light.mjs +884 -0
  65. package/.output/server/_libs/diff.mjs +732 -0
  66. package/.output/server/_libs/dom-serializer+[...].mjs +708 -0
  67. package/.output/server/_libs/domhandler.mjs +461 -0
  68. package/.output/server/_libs/dompurify.mjs +2111 -0
  69. package/.output/server/_libs/domutils.mjs +868 -0
  70. package/.output/server/_libs/drizzle-orm+postgres.mjs +7689 -0
  71. package/.output/server/_libs/electric-sql__pglite.mjs +14674 -0
  72. package/.output/server/_libs/end-of-stream+once+wrappy.mjs +145 -0
  73. package/.output/server/_libs/es-toolkit.mjs +1737 -0
  74. package/.output/server/_libs/eventemitter3.mjs +236 -0
  75. package/.output/server/_libs/fast-copy.mjs +285 -0
  76. package/.output/server/_libs/fast-safe-stringify.mjs +172 -0
  77. package/.output/server/_libs/h3+rou3+srvx.mjs +1201 -0
  78. package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +1560 -0
  79. package/.output/server/_libs/html-react-parser+[...].mjs +1360 -0
  80. package/.output/server/_libs/initdb.wasm +0 -0
  81. package/.output/server/_libs/marked.mjs +1548 -0
  82. package/.output/server/_libs/on-exit-leak-free.mjs +80 -0
  83. package/.output/server/_libs/pglite.data +37667 -8
  84. package/.output/server/_libs/pglite.wasm +0 -0
  85. package/.output/server/_libs/pino+[...].mjs +3196 -0
  86. package/.output/server/_libs/pino-abstract-transport+split2.mjs +194 -0
  87. package/.output/server/_libs/pino-pretty+[...].mjs +1623 -0
  88. package/.output/server/_libs/pinojs__redact.mjs +280 -0
  89. package/.output/server/_libs/react-redux+[...].mjs +205 -0
  90. package/.output/server/_libs/recharts+victory-vendor.mjs +15875 -0
  91. package/.output/server/_libs/tanstack__history.mjs +342 -0
  92. package/.output/server/_libs/ufo.mjs +64 -0
  93. package/.output/server/_libs/uiw__codemirror-themes.mjs +32 -0
  94. package/.output/server/_libs/uiw__react-codemirror.mjs +354 -0
  95. package/.output/server/_runtime.mjs +37 -0
  96. package/.output/server/_ssr/CodeField-tm4rr6G3.mjs +143 -0
  97. package/.output/server/_ssr/DashboardView-CC7htv28.mjs +2795 -0
  98. package/.output/server/_ssr/LoopPlaybook-BXH8mhiX.mjs +2105 -0
  99. package/.output/server/_ssr/LoopView-DCugEbHx.mjs +1106 -0
  100. package/.output/server/_ssr/Modal-DpKZHLZK.mjs +49 -0
  101. package/.output/server/_ssr/SignIn-dTndU6Hw.mjs +67 -0
  102. package/.output/server/_ssr/actionUi-CZbEixbf.mjs +119 -0
  103. package/.output/server/_ssr/adapters-BS8XosjF.mjs +130 -0
  104. package/.output/server/_ssr/artifactFiles-Cagtj7J0.mjs +61 -0
  105. package/.output/server/_ssr/artifactKind-BW0isV8L.mjs +37 -0
  106. package/.output/server/_ssr/artifactView-DS4O22wl.mjs +304 -0
  107. package/.output/server/_ssr/artifacts-DngKyW2u.mjs +2 -0
  108. package/.output/server/_ssr/auth-DY1DuYZd.mjs +38429 -0
  109. package/.output/server/_ssr/boot-BbtG0ImW.mjs +9010 -0
  110. package/.output/server/_ssr/boot-CMHTxQpJ.mjs +2 -0
  111. package/.output/server/_ssr/bun-sqlite-dialect-BW9W1_Ps-CU1Spd6z.mjs +162 -0
  112. package/.output/server/_ssr/core-RrmWoKne.mjs +5 -0
  113. package/.output/server/_ssr/createServerRpc-BD8Xn_0_.mjs +12 -0
  114. package/.output/server/_ssr/d1-sqlite-dialect-BLC8LXE6-DfG7tB8s.mjs +112 -0
  115. package/.output/server/_ssr/db-DWAuZq1o.mjs +2 -0
  116. package/.output/server/_ssr/dist-BIxFFVZg.mjs +342 -0
  117. package/.output/server/_ssr/empty-plugin-adapters-DKUlnwwl.mjs +5 -0
  118. package/.output/server/_ssr/factory-Blq0DYfT.mjs +6903 -0
  119. package/.output/server/_ssr/invite._token-BRCo9LGB.mjs +36 -0
  120. package/.output/server/_ssr/invite._token-DJxGLILJ.mjs +28 -0
  121. package/.output/server/_ssr/invite._token-NewFt27g.mjs +92 -0
  122. package/.output/server/_ssr/kysely-adapter-D3XTe64J.mjs +2 -0
  123. package/.output/server/_ssr/kysely-migration-tables-JkVUjPF_-bPAX9LR_.mjs +19 -0
  124. package/.output/server/_ssr/lifecycleUi-C9lg1r3r.mjs +38 -0
  125. package/.output/server/_ssr/logger-Dw82jNjH.mjs +2 -0
  126. package/.output/server/_ssr/loopApi-BtfkZQYK.mjs +532 -0
  127. package/.output/server/_ssr/loopApi-Cxe8WyOB.mjs +105 -0
  128. package/.output/server/_ssr/loops._loopId-7NQJPB9W.mjs +30 -0
  129. package/.output/server/_ssr/loops._loopId-DhnArGdL.mjs +1635 -0
  130. package/.output/server/_ssr/loops._loopId_.runs._runId-Bvuo2nki.mjs +29 -0
  131. package/.output/server/_ssr/loops._loopId_.runs._runId-Dip5Xk-q.mjs +674 -0
  132. package/.output/server/_ssr/machineFns-Dvr5ICUy.mjs +266 -0
  133. package/.output/server/_ssr/node-sqlite-dialect-DhyOpJTX.mjs +162 -0
  134. package/.output/server/_ssr/notifyFns-BcMRY5kP.mjs +118 -0
  135. package/.output/server/_ssr/notifyFns-Q458pZmE.mjs +580 -0
  136. package/.output/server/_ssr/router-J8KZ30xw.mjs +678 -0
  137. package/.output/server/_ssr/routes-Bcs4T1ox.mjs +28 -0
  138. package/.output/server/_ssr/routes-BoGrcf-b.mjs +43 -0
  139. package/.output/server/_ssr/routes-D4am3Zff.mjs +28 -0
  140. package/.output/server/_ssr/runDiff-CpEFqo7G.mjs +113 -0
  141. package/.output/server/_ssr/ssr.mjs +5837 -0
  142. package/.output/server/_ssr/start-4ifArtKx.mjs +4 -0
  143. package/.output/server/_ssr/store-b3JcQ08F.mjs +2 -0
  144. package/.output/server/_ssr/t._teamId-CeUhzgzT.mjs +32 -0
  145. package/.output/server/_ssr/t._teamId-DR-hQK7o.mjs +47 -0
  146. package/.output/server/_ssr/t._teamId-Dy_McbRt.mjs +31 -0
  147. package/.output/server/_ssr/teamCookie-B7hLOIie.mjs +10 -0
  148. package/.output/server/_ssr/teamFns-BIDnsg2A.mjs +473 -0
  149. package/.output/server/_ssr/teamFns-DA4ovI5g.mjs +33 -0
  150. package/.output/server/_ssr/tokens-ytd60FUt.mjs +2 -0
  151. package/.output/server/_ssr/ui-Dej2qjuS.mjs +267 -0
  152. package/.output/server/_tanstack-start-manifest_v-CVS6c7re.mjs +95 -0
  153. package/.output/server/drizzle/0000_round_marauders.sql +193 -0
  154. package/.output/server/drizzle/0001_naive_silver_fox.sql +25 -0
  155. package/.output/server/drizzle/0002_funny_sage.sql +12 -0
  156. package/.output/server/drizzle/0003_optimal_slapstick.sql +102 -0
  157. package/.output/server/drizzle/0004_remove_grok_agent.sql +5 -0
  158. package/.output/server/drizzle/0005_heavy_gauntlet.sql +8 -0
  159. package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +1 -0
  160. package/.output/server/drizzle/0007_faulty_starbolt.sql +30 -0
  161. package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +15 -0
  162. package/.output/server/drizzle/meta/0000_snapshot.json +1333 -0
  163. package/.output/server/drizzle/meta/0001_snapshot.json +1498 -0
  164. package/.output/server/drizzle/meta/0002_snapshot.json +1576 -0
  165. package/.output/server/drizzle/meta/0003_snapshot.json +1666 -0
  166. package/.output/server/drizzle/meta/0005_snapshot.json +1666 -0
  167. package/.output/server/drizzle/meta/0006_snapshot.json +1672 -0
  168. package/.output/server/drizzle/meta/0007_snapshot.json +1787 -0
  169. package/.output/server/drizzle/meta/_journal.json +69 -0
  170. package/.output/server/index.mjs +464 -0
  171. package/.output/server/node_modules/tslib/modules/index.js +70 -0
  172. package/.output/server/node_modules/tslib/modules/package.json +3 -0
  173. package/.output/server/node_modules/tslib/package.json +47 -0
  174. package/.output/server/node_modules/tslib/tslib.js +484 -0
  175. package/.output/server/package.json +9 -0
  176. package/LICENSE +21 -0
  177. package/drizzle/0000_round_marauders.sql +193 -0
  178. package/drizzle/0001_naive_silver_fox.sql +25 -0
  179. package/drizzle/0002_funny_sage.sql +12 -0
  180. package/drizzle/0003_optimal_slapstick.sql +102 -0
  181. package/drizzle/0004_remove_grok_agent.sql +5 -0
  182. package/drizzle/0005_heavy_gauntlet.sql +8 -0
  183. package/drizzle/0006_tranquil_sharon_carter.sql +1 -0
  184. package/drizzle/0007_faulty_starbolt.sql +30 -0
  185. package/drizzle/0008_durable_lifecycle_evidence.sql +15 -0
  186. package/drizzle/meta/0000_snapshot.json +1333 -0
  187. package/drizzle/meta/0001_snapshot.json +1498 -0
  188. package/drizzle/meta/0002_snapshot.json +1576 -0
  189. package/drizzle/meta/0003_snapshot.json +1666 -0
  190. package/drizzle/meta/0005_snapshot.json +1666 -0
  191. package/drizzle/meta/0006_snapshot.json +1672 -0
  192. package/drizzle/meta/0007_snapshot.json +1787 -0
  193. package/drizzle/meta/_journal.json +69 -0
  194. package/package.json +84 -0
  195. package/scripts/pievo-server.mjs +390 -0
  196. package/scripts/prestart.mjs +66 -0
  197. package/scripts/server-cli-lib.mjs +451 -0
@@ -0,0 +1,193 @@
1
+ CREATE TABLE "artifact_files" (
2
+ "id" text PRIMARY KEY NOT NULL,
3
+ "loop_id" text NOT NULL,
4
+ "path" text NOT NULL,
5
+ "hash" text,
6
+ "size" integer,
7
+ "binary" boolean DEFAULT false NOT NULL,
8
+ "oversize" boolean DEFAULT false NOT NULL,
9
+ "deleted" boolean DEFAULT false NOT NULL,
10
+ "updated_at" text NOT NULL,
11
+ "last_run_id" text
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE TABLE "blobs" (
15
+ "hash" text PRIMARY KEY NOT NULL,
16
+ "size" integer NOT NULL,
17
+ "binary" boolean DEFAULT false NOT NULL,
18
+ "meta" jsonb,
19
+ "created_at" text NOT NULL
20
+ );
21
+ --> statement-breakpoint
22
+ CREATE TABLE "loops" (
23
+ "id" text PRIMARY KEY NOT NULL,
24
+ "user_id" text NOT NULL,
25
+ "team_id" text,
26
+ "channel_id" text,
27
+ "machine_id" text NOT NULL,
28
+ "name" text,
29
+ "cron" text NOT NULL,
30
+ "timezone" text,
31
+ "workdir" text,
32
+ "task_file" text,
33
+ "task_file_content" text,
34
+ "task_file_synced_at" text,
35
+ "workflow" text,
36
+ "ui" text,
37
+ "state_schema" jsonb,
38
+ "notify" text DEFAULT 'auto' NOT NULL,
39
+ "allow_control" boolean DEFAULT true NOT NULL,
40
+ "goal" text,
41
+ "completed_at" text,
42
+ "completion_reason" text,
43
+ "model" text,
44
+ "agent" text DEFAULT 'claude-code' NOT NULL,
45
+ "enabled" boolean DEFAULT true NOT NULL,
46
+ "next_run_at" text,
47
+ "state" jsonb,
48
+ "evolved_run_count" integer,
49
+ "evolve_due" boolean,
50
+ "edit_request" text,
51
+ "created_at" text NOT NULL,
52
+ "updated_at" text NOT NULL
53
+ );
54
+ --> statement-breakpoint
55
+ CREATE TABLE "machines" (
56
+ "id" text PRIMARY KEY NOT NULL,
57
+ "user_id" text NOT NULL,
58
+ "team_id" text,
59
+ "name" text NOT NULL,
60
+ "hostname" text,
61
+ "platform" text,
62
+ "arch" text,
63
+ "daemon_version" text,
64
+ "token_hash" text NOT NULL,
65
+ "token" text,
66
+ "roots" jsonb,
67
+ "last_seen" text,
68
+ "online" boolean DEFAULT false NOT NULL,
69
+ "created_at" text NOT NULL
70
+ );
71
+ --> statement-breakpoint
72
+ CREATE TABLE "notification_channels" (
73
+ "id" text PRIMARY KEY NOT NULL,
74
+ "team_id" text NOT NULL,
75
+ "type" text NOT NULL,
76
+ "name" text NOT NULL,
77
+ "config" jsonb NOT NULL,
78
+ "created_at" text NOT NULL
79
+ );
80
+ --> statement-breakpoint
81
+ CREATE TABLE "run_snapshots" (
82
+ "run_id" text PRIMARY KEY NOT NULL,
83
+ "loop_id" text NOT NULL,
84
+ "manifest" jsonb NOT NULL,
85
+ "created_at" text NOT NULL
86
+ );
87
+ --> statement-breakpoint
88
+ CREATE TABLE "runs" (
89
+ "id" text PRIMARY KEY NOT NULL,
90
+ "loop_id" text NOT NULL,
91
+ "user_id" text NOT NULL,
92
+ "machine_id" text NOT NULL,
93
+ "phase" text NOT NULL,
94
+ "role" text NOT NULL,
95
+ "ts" text NOT NULL,
96
+ "outcome" text,
97
+ "status" text,
98
+ "message" text,
99
+ "duration_ms" integer,
100
+ "error" text,
101
+ "state" jsonb,
102
+ "control" jsonb,
103
+ "session_id" text,
104
+ "cost_usd" double precision,
105
+ "usage" jsonb,
106
+ "artifacts" jsonb,
107
+ "transcript" jsonb,
108
+ "progress" jsonb
109
+ );
110
+ --> statement-breakpoint
111
+ CREATE TABLE "team_members" (
112
+ "id" text PRIMARY KEY NOT NULL,
113
+ "team_id" text NOT NULL,
114
+ "user_id" text NOT NULL,
115
+ "role" text DEFAULT 'member' NOT NULL,
116
+ "created_at" text NOT NULL
117
+ );
118
+ --> statement-breakpoint
119
+ CREATE TABLE "teams" (
120
+ "id" text PRIMARY KEY NOT NULL,
121
+ "name" text NOT NULL,
122
+ "owner_user_id" text,
123
+ "created_at" text NOT NULL
124
+ );
125
+ --> statement-breakpoint
126
+ CREATE TABLE "account" (
127
+ "id" text PRIMARY KEY NOT NULL,
128
+ "account_id" text NOT NULL,
129
+ "provider_id" text NOT NULL,
130
+ "user_id" text NOT NULL,
131
+ "access_token" text,
132
+ "refresh_token" text,
133
+ "id_token" text,
134
+ "access_token_expires_at" timestamp,
135
+ "refresh_token_expires_at" timestamp,
136
+ "scope" text,
137
+ "password" text,
138
+ "created_at" timestamp DEFAULT now() NOT NULL,
139
+ "updated_at" timestamp NOT NULL
140
+ );
141
+ --> statement-breakpoint
142
+ CREATE TABLE "session" (
143
+ "id" text PRIMARY KEY NOT NULL,
144
+ "expires_at" timestamp NOT NULL,
145
+ "token" text NOT NULL,
146
+ "created_at" timestamp DEFAULT now() NOT NULL,
147
+ "updated_at" timestamp NOT NULL,
148
+ "ip_address" text,
149
+ "user_agent" text,
150
+ "user_id" text NOT NULL,
151
+ CONSTRAINT "session_token_unique" UNIQUE("token")
152
+ );
153
+ --> statement-breakpoint
154
+ CREATE TABLE "user" (
155
+ "id" text PRIMARY KEY NOT NULL,
156
+ "name" text NOT NULL,
157
+ "email" text NOT NULL,
158
+ "email_verified" boolean DEFAULT false NOT NULL,
159
+ "image" text,
160
+ "created_at" timestamp DEFAULT now() NOT NULL,
161
+ "updated_at" timestamp DEFAULT now() NOT NULL,
162
+ CONSTRAINT "user_email_unique" UNIQUE("email")
163
+ );
164
+ --> statement-breakpoint
165
+ CREATE TABLE "verification" (
166
+ "id" text PRIMARY KEY NOT NULL,
167
+ "identifier" text NOT NULL,
168
+ "value" text NOT NULL,
169
+ "expires_at" timestamp NOT NULL,
170
+ "created_at" timestamp DEFAULT now() NOT NULL,
171
+ "updated_at" timestamp DEFAULT now() NOT NULL
172
+ );
173
+ --> statement-breakpoint
174
+ ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
175
+ ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
176
+ CREATE INDEX "artifact_files_loop_idx" ON "artifact_files" USING btree ("loop_id");--> statement-breakpoint
177
+ CREATE UNIQUE INDEX "artifact_files_loop_path_idx" ON "artifact_files" USING btree ("loop_id","path");--> statement-breakpoint
178
+ CREATE INDEX "artifact_files_hash_idx" ON "artifact_files" USING btree ("hash");--> statement-breakpoint
179
+ CREATE INDEX "loops_user_idx" ON "loops" USING btree ("user_id");--> statement-breakpoint
180
+ CREATE INDEX "loops_team_idx" ON "loops" USING btree ("team_id");--> statement-breakpoint
181
+ CREATE INDEX "loops_machine_idx" ON "loops" USING btree ("machine_id");--> statement-breakpoint
182
+ CREATE INDEX "machines_user_idx" ON "machines" USING btree ("user_id");--> statement-breakpoint
183
+ CREATE INDEX "machines_team_idx" ON "machines" USING btree ("team_id");--> statement-breakpoint
184
+ CREATE INDEX "notification_channels_team_idx" ON "notification_channels" USING btree ("team_id");--> statement-breakpoint
185
+ CREATE INDEX "run_snapshots_loop_idx" ON "run_snapshots" USING btree ("loop_id");--> statement-breakpoint
186
+ CREATE INDEX "runs_loop_idx" ON "runs" USING btree ("loop_id");--> statement-breakpoint
187
+ CREATE INDEX "runs_phase_idx" ON "runs" USING btree ("phase");--> statement-breakpoint
188
+ CREATE INDEX "runs_loop_ts_idx" ON "runs" USING btree ("loop_id","ts");--> statement-breakpoint
189
+ CREATE INDEX "team_members_team_idx" ON "team_members" USING btree ("team_id");--> statement-breakpoint
190
+ CREATE INDEX "team_members_user_idx" ON "team_members" USING btree ("user_id");--> statement-breakpoint
191
+ CREATE INDEX "account_userId_idx" ON "account" USING btree ("user_id");--> statement-breakpoint
192
+ CREATE INDEX "session_userId_idx" ON "session" USING btree ("user_id");--> statement-breakpoint
193
+ CREATE INDEX "verification_identifier_idx" ON "verification" USING btree ("identifier");
@@ -0,0 +1,25 @@
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");
@@ -0,0 +1,12 @@
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");
@@ -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,5 @@
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';
@@ -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';