@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,6 +1,6 @@
1
- import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-30Z4lV1w.mjs";
1
+ import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-C0zoZCGe.mjs";
2
2
  import { n as DEFAULT_MIGRATION_TABLE, t as DEFAULT_MIGRATION_LOCK_TABLE } from "./kysely-migration-tables-JkVUjPF_-bPAX9LR_.mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/bun-sqlite-dialect-BW9W1_Ps-DmlZWqO7.js
4
4
  var BunSqliteAdapter = class {
5
5
  get supportsCreateIfNotExists() {
6
6
  return true;
@@ -1,6 +1,6 @@
1
- import { a as SqliteQueryCompiler, i as SqliteAdapter } from "./auth-30Z4lV1w.mjs";
1
+ import { a as SqliteQueryCompiler, i as SqliteAdapter } from "./auth-C0zoZCGe.mjs";
2
2
  import { n as DEFAULT_MIGRATION_TABLE, t as DEFAULT_MIGRATION_LOCK_TABLE } from "./kysely-migration-tables-JkVUjPF_-bPAX9LR_.mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/d1-sqlite-dialect-BLC8LXE6-CCNzqZwZ.js
4
4
  var D1SqliteAdapter = class extends SqliteAdapter {};
5
5
  var D1SqliteDriver = class {
6
6
  #config;
@@ -0,0 +1,2 @@
1
+ import { E as db } from "./boot-sNlIkoLe.mjs";
2
+ export { db };
@@ -1,5 +1,5 @@
1
- import { _ as logger, o as createAdapterFactory } from "./factory-CWWwV7XZ.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/dist-Cd6nlLlO.js
1
+ import { _ as logger, o as createAdapterFactory } from "./factory-Dv3Zopis.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/dist-B3SxDOpW.js
3
3
  /**
4
4
  * Case-insensitive in-memory comparison helpers.
5
5
  * Used when evaluating where clauses in the memory adapter.
@@ -1,5 +1,5 @@
1
- import { V as env, X as getEnvVar, a as BetterAuthError } from "./boot-3BNKujyp.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/factory-CWWwV7XZ.js
1
+ import { B as getEnvVar, N as env, a as BetterAuthError } from "./boot-sNlIkoLe.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/factory-Dv3Zopis.js
3
3
  var __defProp = Object.defineProperty;
4
4
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
5
5
  var __exportAll = (all, no_symbols) => {
@@ -0,0 +1,20 @@
1
+ import { h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { r as LoadErrorCard } from "./actionUi-DJBWuNwr.mjs";
3
+ import { f as useRouter } from "../_libs/@tanstack/react-router+[...].mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-CJ6-H-s3.js
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ /** Redeem a team invite after normal gated sign-in. Invites grant membership but
7
+ * never bypass the login allowlist; open mode has no invite identity to redeem. */
8
+ function LoadError({ error }) {
9
+ const router = useRouter();
10
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("main", {
11
+ className: "mx-auto max-w-[1180px] px-8 pt-12",
12
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadErrorCard, {
13
+ title: "Couldn't open this invite.",
14
+ detail: String(error),
15
+ onRetry: () => void router.invalidate()
16
+ })
17
+ });
18
+ }
19
+ //#endregion
20
+ export { LoadError as errorComponent };
@@ -1,25 +1,17 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
- import { g as require_jsx_runtime, h as require_react } from "../_libs/@base-ui/react+[...].mjs";
3
- import { l as btnPrimary } from "./ui-Ww2tTM2u.mjs";
2
+ import { g as require_react, h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { s as btnPrimary } from "./ui-D5KWstlb.mjs";
4
4
  import { d as useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
5
- import { i as PievoLogo, s as useSession } from "./LoopPlaybook-DC7QVvPY.mjs";
5
+ import { E as useSession, r as PievoLogo } from "./SocialLinks-Cm4H8pUJ.mjs";
6
6
  import { t as setActiveTeamCookie } from "./teamCookie-B7hLOIie.mjs";
7
- import { c as redeemTeamInvite } from "./teamFns-bm82twd5.mjs";
8
- import { t as Route } from "./invite._token-BKlz0R2f.mjs";
9
- import { t as SignIn } from "./SignIn-RmpWm9uy.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-SdWXemIc.js
7
+ import { c as redeemTeamInvite } from "./teamFns-j2JKjorZ.mjs";
8
+ import { t as Route } from "./invite._token-l1SjouDz.mjs";
9
+ import { t as SignIn } from "./SignIn-DEGrvJvb.mjs";
10
+ //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-dLKDJKVs.js
11
11
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
12
  var import_jsx_runtime = require_jsx_runtime();
13
- /**
14
- * Invite-link redeem (`/invite/<token>`, design §4 option B). The recipient opens
15
- * the link the owner shared; if signed out (under the gate) they hit the normal
16
- * gated GitHub sign-in and return here — the invite NEVER bypasses the login
17
- * allowlist (decision 3), it only grants membership once they already have an
18
- * account. On redeem we navigate to the team's dashboard.
19
- *
20
- * Open mode has no identities, so an invite is meaningless there — it renders a
21
- * calm explanation rather than a broken redeem.
22
- */
13
+ /** Redeem a team invite after normal gated sign-in. Invites grant membership but
14
+ * never bypass the login allowlist; open mode has no invite identity to redeem. */
23
15
  function Shell({ children }) {
24
16
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
25
17
  className: "mx-auto mt-32 max-w-sm text-center",
@@ -1,19 +1,10 @@
1
1
  import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
2
- import { c as getAuthState } from "./loopApi-8_KgBapr.mjs";
3
- import { a as authClient } from "./LoopPlaybook-DC7QVvPY.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-BKlz0R2f.js
5
- var $$splitErrorComponentImporter = () => import("./invite._token-CWl6kipD.mjs");
6
- var $$splitComponentImporter = () => import("./invite._token-SdWXemIc.mjs");
7
- /**
8
- * Invite-link redeem (`/invite/<token>`, design §4 option B). The recipient opens
9
- * the link the owner shared; if signed out (under the gate) they hit the normal
10
- * gated GitHub sign-in and return here — the invite NEVER bypasses the login
11
- * allowlist (decision 3), it only grants membership once they already have an
12
- * account. On redeem we navigate to the team's dashboard.
13
- *
14
- * Open mode has no identities, so an invite is meaningless there — it renders a
15
- * calm explanation rather than a broken redeem.
16
- */
2
+ import { i as authClient, u as getAuthState } from "./SocialLinks-Cm4H8pUJ.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-l1SjouDz.js
4
+ var $$splitErrorComponentImporter = () => import("./invite._token-CJ6-H-s3.mjs");
5
+ var $$splitComponentImporter = () => import("./invite._token-dLKDJKVs.mjs");
6
+ /** Redeem a team invite after normal gated sign-in. Invites grant membership but
7
+ * never bypass the login allowlist; open mode has no invite identity to redeem. */
17
8
  var Route = createFileRoute("/invite/$token")({
18
9
  ssr: false,
19
10
  loader: async ({ params }) => {
@@ -1,2 +1,2 @@
1
- import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-30Z4lV1w.mjs";
1
+ import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-C0zoZCGe.mjs";
2
2
  export { createKyselyAdapter, kyselyAdapter };
@@ -1,18 +1,18 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-DgBQAYzp.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-Dad3hvhm.js
2
2
  var DAEMON_UPGRADE_REQUIRED = "Daemon upgrade required to stop a running process. Run `npm install -g @kky42/pievo@latest`, then `pievo daemon restart`.";
3
3
  /** Derive product lifecycle state only from durable server facts. */
4
- function deriveLoopLifecycle(job) {
5
- if (job.deleteRequestedAt != null) return "deleting";
6
- const running = job.runs.find((run) => run.running);
7
- if (!job.enabled && running?.cancelRequested) return "stopping";
8
- if (!job.enabled && (job.running || running)) return "paused-finishing";
9
- if (!job.enabled) return "paused";
4
+ function deriveLoopLifecycle(loop) {
5
+ if (loop.deleteRequestedAt != null) return "deleting";
6
+ const running = loop.runs.find((run) => run.phase === "running");
7
+ if (!loop.enabled && running?.cancelRequested) return "stopping";
8
+ if (!loop.enabled && (loop.running || running)) return "paused-finishing";
9
+ if (!loop.enabled) return "paused";
10
10
  return "active";
11
11
  }
12
12
  function daemonStopSupport(protocol) {
13
- return protocol === 3 ? {
13
+ return protocol === 4 ? {
14
14
  supported: true,
15
- label: `Daemon protocol 3 · Stop supported`
15
+ label: `Daemon protocol 4 · Stop supported`
16
16
  } : {
17
17
  supported: false,
18
18
  label: `Daemon protocol ${protocol ?? "unknown"} · upgrade required`
@@ -22,8 +22,8 @@ function daemonStopSupport(protocol) {
22
22
  function lifecycleDisplay(detail) {
23
23
  const state = deriveLoopLifecycle(detail.summary);
24
24
  if (detail.summary.queued && detail.summary.reconciliationBlocking) return detail.machine.presence === "online" ? "Queued · machine is checking an interrupted run" : "Queued · waiting for machine recovery";
25
- const running = detail.summary.runs.find((run) => run.running);
26
- if (running && detail.machine.daemonProtocol !== 3) return DAEMON_UPGRADE_REQUIRED;
25
+ const running = detail.summary.runs.find((run) => run.phase === "running");
26
+ if (running && detail.machine.daemonProtocol !== 4) return DAEMON_UPGRADE_REQUIRED;
27
27
  if (state === "stopping" && running && !detail.machine.online) return `Stopping · waiting for ${detail.machine.name || "machine"}`;
28
28
  switch (state) {
29
29
  case "deleting": return "Deleting";
@@ -0,0 +1,2 @@
1
+ import { vt as logger } from "./boot-sNlIkoLe.mjs";
2
+ export { logger };
@@ -0,0 +1,342 @@
1
+ import { $t as validateLoopEdit, Et as pauseLoop$1, Ft as requestRunCancel, G as getMachine, J as getRun, Kt as tryDeleteLoop, P as forceDeleteLoop, Pt as requestDeleteLoop, Q as hasRunningRun, St as machinePresence, Ut as stopLoop$1, Vt as startLoop$1, W as getLoop, X as getTeamMember, Y as getTeam, _t as listTeamsForUser, ht as listRunsBefore, j as ensureServer, qt as updateLoop, ut as listLoops$1 } from "./boot-sNlIkoLe.mjs";
2
+ import { i as toRunSummaries, n as toLoopDetail, r as toLoopSummary } from "./loopProjection-B8a829ij.mjs";
3
+ import { canAccessLoop, requestScope } from "./auth-C0zoZCGe.mjs";
4
+ import { n as createServerFn } from "./ssr.mjs";
5
+ import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
6
+ //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-BKyFB4KM.js
7
+ /**
8
+ * Server functions backing the dashboard. They run server-side (createServerFn
9
+ * → RPC) and call the IN-PROCESS scheduler + store directly — the scheduler
10
+ * lives in this same TanStack process (booted on first call via ensureServer).
11
+ * The machine-facing poll, CLI, report, and artifact-sync endpoints are sibling
12
+ * server routes in this same process, so one process owns the single scheduler.
13
+ *
14
+ * Reads and writes are scoped through requestScope/ownedLoop so users only see
15
+ * teams and loops their current session is authorized to access.
16
+ */
17
+ function backend() {
18
+ return ensureServer();
19
+ }
20
+ /**
21
+ * Resolve a loop and authorize the request against its owner. Returns the loop,
22
+ * or undefined when it's missing OR (gate on) owned by a different user — callers
23
+ * treat both as "not found" so existence never leaks across users.
24
+ */
25
+ async function ownedLoop(id) {
26
+ const loop = await getLoop(id);
27
+ if (!loop) return void 0;
28
+ const scope = await requestScope();
29
+ if (!await canAccessLoop(loop.teamId, scope)) return void 0;
30
+ return {
31
+ loop,
32
+ enforce: scope.enforce,
33
+ teamId: scope.teamId
34
+ };
35
+ }
36
+ /** Whether the auth gate is active (a GitHub OAuth app is configured). */
37
+ var getAuthState_createServerFn_handler = createServerRpc({
38
+ id: "b8119d5fe6ca1ed9f609702aa2133b5ac5337030c0bdcf92dc7eba889d6bd2e6",
39
+ name: "getAuthState",
40
+ filename: "src/server/loopApi.ts"
41
+ }, (opts) => getAuthState.__executeServer(opts));
42
+ var getAuthState = createServerFn({ method: "GET" }).handler(getAuthState_createServerFn_handler, async () => {
43
+ const { authEnabled } = await import("./auth-C0zoZCGe.mjs");
44
+ return { enabled: authEnabled };
45
+ });
46
+ var getConfig_createServerFn_handler = createServerRpc({
47
+ id: "cbb6a1b09b309459bbba3dc3851ae85fc468658b3cda77e22b6c6f3e28b65af4",
48
+ name: "getConfig",
49
+ filename: "src/server/loopApi.ts"
50
+ }, (opts) => getConfig.__executeServer(opts));
51
+ var getConfig = createServerFn({ method: "GET" }).handler(getConfig_createServerFn_handler, () => {
52
+ const custom = process.env.PIEVO_CLI?.trim();
53
+ return {
54
+ pievoCli: custom || "pievo",
55
+ /** True when a non-default (dev) CLI is configured — the New-loop paste then
56
+ * carries an explicit `pievo-cli:` line so Claude Code uses it verbatim. */
57
+ customCli: !!custom
58
+ };
59
+ });
60
+ var listMyTeams_createServerFn_handler = createServerRpc({
61
+ id: "0fe12e769203c42f432a927b9cbf13a967a0f9db567b61843598f734afb4f5c6",
62
+ name: "listMyTeams",
63
+ filename: "src/server/loopApi.ts"
64
+ }, (opts) => listMyTeams.__executeServer(opts));
65
+ var listMyTeams = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(listMyTeams_createServerFn_handler, async ({ data: teamId }) => {
66
+ await backend();
67
+ const { enforce, userId, teamId: active } = await requestScope(teamId);
68
+ if (!enforce || !userId) return {
69
+ teams: [],
70
+ activeTeamId: active
71
+ };
72
+ return {
73
+ teams: (await listTeamsForUser(userId)).map((t) => ({
74
+ id: t.id,
75
+ name: t.name
76
+ })),
77
+ activeTeamId: active
78
+ };
79
+ });
80
+ var canViewTeam_createServerFn_handler = createServerRpc({
81
+ id: "7cc22b3a0f6b1c4c73463c3401e981ad42caf6487b479b738ee5aeacb11710da",
82
+ name: "canViewTeam",
83
+ filename: "src/server/loopApi.ts"
84
+ }, (opts) => canViewTeam.__executeServer(opts));
85
+ var canViewTeam = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(canViewTeam_createServerFn_handler, async ({ data: teamId }) => {
86
+ await backend();
87
+ const scope = await requestScope(teamId);
88
+ if (!scope.enforce) return true;
89
+ if (!scope.userId) return false;
90
+ return scope.teamId === teamId;
91
+ });
92
+ var getDefaultTeam_createServerFn_handler = createServerRpc({
93
+ id: "dc0ec955d0d53a150a3e9a4673f98f3509cfb4bd411c512079ae4e94c561b70c",
94
+ name: "getDefaultTeam",
95
+ filename: "src/server/loopApi.ts"
96
+ }, (opts) => getDefaultTeam.__executeServer(opts));
97
+ var getDefaultTeam = createServerFn({ method: "GET" }).handler(getDefaultTeam_createServerFn_handler, async () => {
98
+ await backend();
99
+ return (await requestScope()).teamId;
100
+ });
101
+ var listLoops_createServerFn_handler = createServerRpc({
102
+ id: "23e290b2b7483ceea6fe669024c35b12c2c4ddd76649f6fab21c958ceda02940",
103
+ name: "listLoops",
104
+ filename: "src/server/loopApi.ts"
105
+ }, (opts) => listLoops.__executeServer(opts));
106
+ var listLoops = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(listLoops_createServerFn_handler, async ({ data: teamId }) => {
107
+ await backend();
108
+ const { enforce, userId, teamId: active } = await requestScope(teamId);
109
+ if (enforce && !userId) return [];
110
+ const loops = (await listLoops$1(enforce ? active : void 0)).sort((a, b) => a.createdAt < b.createdAt ? 1 : -1);
111
+ return await Promise.all(loops.map(toLoopSummary));
112
+ });
113
+ var getLoopDetail_createServerFn_handler = createServerRpc({
114
+ id: "b050455aacc84dd2a2c9a45517826ad10f91d8f1545e87cc7015784cc7116a97",
115
+ name: "getLoopDetail",
116
+ filename: "src/server/loopApi.ts"
117
+ }, (opts) => getLoopDetail.__executeServer(opts));
118
+ var getLoopDetail = createServerFn({ method: "GET" }).validator((id) => id).handler(getLoopDetail_createServerFn_handler, async ({ data: id }) => {
119
+ await backend();
120
+ const owned = await ownedLoop(id);
121
+ if (!owned) throw new Error("This loop does not exist, or you do not have access to it.");
122
+ const detail = await toLoopDetail(owned.loop);
123
+ if (owned.enforce) {
124
+ const team = await getTeam(owned.loop.teamId);
125
+ if (!team) throw new Error(`invariant: loop ${owned.loop.id} references missing team ${owned.loop.teamId}`);
126
+ detail.team = {
127
+ id: owned.loop.teamId,
128
+ name: team.name,
129
+ isActive: owned.loop.teamId === owned.teamId
130
+ };
131
+ }
132
+ return detail;
133
+ });
134
+ var loadOlderRuns_createServerFn_handler = createServerRpc({
135
+ id: "85fdf73d4fee43aed762f93c5d47d33200fbff39e2d082647dc921f610d32698",
136
+ name: "loadOlderRuns",
137
+ filename: "src/server/loopApi.ts"
138
+ }, (opts) => loadOlderRuns.__executeServer(opts));
139
+ var loadOlderRuns = createServerFn({ method: "GET" }).validator((d) => d).handler(loadOlderRuns_createServerFn_handler, async ({ data }) => {
140
+ await backend();
141
+ if (!await ownedLoop(data.loopId)) return [];
142
+ const limit = Math.min(Math.max(data.limit ?? 16, 1), 100);
143
+ return toRunSummaries(data.loopId, await listRunsBefore(data.loopId, data.beforeTs, limit));
144
+ });
145
+ var getArtifacts_createServerFn_handler = createServerRpc({
146
+ id: "b18bbec3d06dfc77714e1e527dfb9172fd7575a64a6c0d6e73ba6dc658dccf0d",
147
+ name: "getArtifacts",
148
+ filename: "src/server/loopApi.ts"
149
+ }, (opts) => getArtifacts.__executeServer(opts));
150
+ var getArtifacts = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifacts_createServerFn_handler, async ({ data }) => {
151
+ await backend();
152
+ if (!await ownedLoop(data.loopId)) return [];
153
+ const { listLoopArtifacts } = await import("./artifactFiles-DtpRidFZ.mjs");
154
+ return listLoopArtifacts(data.loopId);
155
+ });
156
+ var getArtifact_createServerFn_handler = createServerRpc({
157
+ id: "ed10d5fe79208e5e0e4e18e4a17b18d7f7db4dd16204c00c3ac90c4644668841",
158
+ name: "getArtifact",
159
+ filename: "src/server/loopApi.ts"
160
+ }, (opts) => getArtifact.__executeServer(opts));
161
+ var getArtifact = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifact_createServerFn_handler, async ({ data }) => {
162
+ await backend();
163
+ if (!await ownedLoop(data.loopId)) return { error: "file not found" };
164
+ const { readLoopArtifact } = await import("./artifactFiles-DtpRidFZ.mjs");
165
+ return readLoopArtifact(data.loopId, data.path);
166
+ });
167
+ var getRunDiff_createServerFn_handler = createServerRpc({
168
+ id: "08c28b892712a1b491b120b74c7dcb81761988d31ccea60216d1807b73c1182c",
169
+ name: "getRunDiff",
170
+ filename: "src/server/loopApi.ts"
171
+ }, (opts) => getRunDiff.__executeServer(opts));
172
+ var getRunDiff = createServerFn({ method: "GET" }).validator((d) => d).handler(getRunDiff_createServerFn_handler, async ({ data }) => {
173
+ await backend();
174
+ const run = await getRun(data.runId);
175
+ if (!run) return {
176
+ hasSnapshot: false,
177
+ files: []
178
+ };
179
+ if (!await ownedLoop(run.loopId)) return {
180
+ hasSnapshot: false,
181
+ files: []
182
+ };
183
+ const { computeRunDiff } = await import("./runDiff-Ba8Lg1vg.mjs");
184
+ return computeRunDiff(data.runId);
185
+ });
186
+ var patchLoop_createServerFn_handler = createServerRpc({
187
+ id: "9befe6b8d67ccbbd7aa9b538bde2a161a9894761c8936761a9503fda1a88c0fc",
188
+ name: "patchLoop",
189
+ filename: "src/server/loopApi.ts"
190
+ }, (opts) => patchLoop.__executeServer(opts));
191
+ var patchLoop = createServerFn({ method: "POST" }).validator((d) => d).handler(patchLoop_createServerFn_handler, async ({ data }) => {
192
+ const { scheduler } = await backend();
193
+ const owned = await ownedLoop(data.id);
194
+ if (!owned) return { error: "not found" };
195
+ const p = data.patch;
196
+ {
197
+ const validated = validateLoopEdit(owned.loop, p);
198
+ if (!validated.ok) return { error: validated.detail };
199
+ const loop = await updateLoop(data.id, validated.value);
200
+ if (!loop) return { error: "not found" };
201
+ if (loop.enabled) scheduler.addLoop(loop);
202
+ else scheduler.removeLoop(loop.id);
203
+ return { ok: true };
204
+ }
205
+ });
206
+ var pauseLoop_createServerFn_handler = createServerRpc({
207
+ id: "95b7483b333d7649e70c848319417e83c2af6a0327bbcda2d0e331f626dffe05",
208
+ name: "pauseLoop",
209
+ filename: "src/server/loopApi.ts"
210
+ }, (opts) => pauseLoop.__executeServer(opts));
211
+ var pauseLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(pauseLoop_createServerFn_handler, async ({ data: id }) => {
212
+ const { scheduler } = await backend();
213
+ if (!await ownedLoop(id)) return { error: "not found" };
214
+ if (!await pauseLoop$1(id)) return { error: "not found" };
215
+ scheduler.removeLoop(id);
216
+ return { ok: true };
217
+ });
218
+ var startLoop_createServerFn_handler = createServerRpc({
219
+ id: "5660ea82ea5ff2549e0ce2f8f070c54f3e9e24fee84d547601ef5d6ef49a4016",
220
+ name: "startLoop",
221
+ filename: "src/server/loopApi.ts"
222
+ }, (opts) => startLoop.__executeServer(opts));
223
+ var startLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(startLoop_createServerFn_handler, async ({ data: id }) => {
224
+ const { scheduler } = await backend();
225
+ const owned = await ownedLoop(id);
226
+ if (!owned) return { error: "not found" };
227
+ if (owned.loop.deleteRequestedAt) return { error: "loop is being deleted" };
228
+ const loop = await startLoop$1(id);
229
+ if (!loop) return { error: "not found" };
230
+ scheduler.addLoop(loop);
231
+ return { ok: true };
232
+ });
233
+ var stopLoop_createServerFn_handler = createServerRpc({
234
+ id: "e233a461e4526dec3cc4cbaa891a7c3621d5967ce7f32b4fb17e9fb645857b9a",
235
+ name: "stopLoop",
236
+ filename: "src/server/loopApi.ts"
237
+ }, (opts) => stopLoop.__executeServer(opts));
238
+ var stopLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(stopLoop_createServerFn_handler, async ({ data: id }) => {
239
+ const { scheduler } = await backend();
240
+ const owned = await ownedLoop(id);
241
+ if (!owned) return { error: "not found" };
242
+ if (await hasRunningRun(id)) {
243
+ if ((await getMachine(owned.loop.machineId))?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
244
+ }
245
+ const stopped = await stopLoop$1(id);
246
+ if (!stopped) return { error: "not found" };
247
+ scheduler.removeLoop(id);
248
+ return {
249
+ ok: true,
250
+ waiting: !!stopped.running
251
+ };
252
+ });
253
+ var deleteLoop_createServerFn_handler = createServerRpc({
254
+ id: "5e0d6b55f5629faac2f55a68661eeb82668b2be752192b16264ffb5cd1e6fabe",
255
+ name: "deleteLoop",
256
+ filename: "src/server/loopApi.ts"
257
+ }, (opts) => deleteLoop.__executeServer(opts));
258
+ var deleteLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(deleteLoop_createServerFn_handler, async ({ data: id }) => {
259
+ const { scheduler } = await backend();
260
+ const owned = await ownedLoop(id);
261
+ if (!owned) return { error: "not found" };
262
+ const machine = await getMachine(owned.loop.machineId);
263
+ const unreachable = machinePresence(machine?.online, machine?.lastSeen) !== "online";
264
+ const actor = await requestScope();
265
+ const mayRetireAuthority = !owned.enforce || !!(actor.userId && owned.loop.teamId && (await getTeamMember(owned.loop.teamId, actor.userId))?.role === "owner");
266
+ if (!unreachable && await hasRunningRun(id) && machine?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
267
+ scheduler.removeLoop(id);
268
+ if (!await requestDeleteLoop(id)) return { error: "not found" };
269
+ if (unreachable && mayRetireAuthority) {
270
+ if (!await forceDeleteLoop(id)) return { error: "delete failed; server data was not deleted" };
271
+ const { logger } = await import("./logger-B8m8F1Qu.mjs");
272
+ logger.child({ mod: "loop-lifecycle" }).warn({
273
+ action: "unreachable-delete",
274
+ loopId: id,
275
+ actorUserId: actor.userId,
276
+ machineId: owned.loop.machineId
277
+ }, "unreachable-machine delete: retired execution authority and removed server data");
278
+ return {
279
+ ok: true,
280
+ deleted: true
281
+ };
282
+ }
283
+ const deleted = await tryDeleteLoop(id);
284
+ return {
285
+ ok: true,
286
+ deleted,
287
+ waiting: !deleted
288
+ };
289
+ });
290
+ var runLoop_createServerFn_handler = createServerRpc({
291
+ id: "08565e35f6a3dd06ef25401de0343976c47f7ae319d3baed6320b56dd3718311",
292
+ name: "runLoop",
293
+ filename: "src/server/loopApi.ts"
294
+ }, (opts) => runLoop.__executeServer(opts));
295
+ var runLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(runLoop_createServerFn_handler, async ({ data: id }) => {
296
+ const { scheduler } = await backend();
297
+ if (!await ownedLoop(id)) return { error: "not found" };
298
+ const queued = await scheduler.runNow(id);
299
+ if (!("run" in queued)) return { error: queued.reason };
300
+ return {
301
+ ok: true,
302
+ runId: queued.run.id,
303
+ queued: true,
304
+ coalesced: queued.state === "coalesced"
305
+ };
306
+ });
307
+ var stopRun_createServerFn_handler = createServerRpc({
308
+ id: "6850ba403da9dec5aff45794eb52636ca540ddec2d9e59f5c75ccbb852bfeacb",
309
+ name: "stopRun",
310
+ filename: "src/server/loopApi.ts"
311
+ }, (opts) => stopRun.__executeServer(opts));
312
+ var stopRun = createServerFn({ method: "POST" }).validator((id) => id).handler(stopRun_createServerFn_handler, async ({ data: id }) => {
313
+ await backend();
314
+ const run = await getRun(id);
315
+ const owned = run ? await ownedLoop(run.loopId) : void 0;
316
+ if (!run || !owned) return { error: "run not found" };
317
+ if (run.phase === "running" && (await getMachine(owned.loop.machineId))?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
318
+ const result = await requestRunCancel(run.loopId, id);
319
+ return result ? {
320
+ ok: true,
321
+ waiting: result.phase === "running"
322
+ } : { error: "run not found" };
323
+ });
324
+ var mintClaim_createServerFn_handler = createServerRpc({
325
+ id: "4646f52fb09b83c9c9cef34836f3c9d03416423c879d9e5ceffcafd9a71ecba6",
326
+ name: "mintClaim",
327
+ filename: "src/server/loopApi.ts"
328
+ }, (opts) => mintClaim.__executeServer(opts));
329
+ var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId).handler(mintClaim_createServerFn_handler, async ({ data: teamId }) => {
330
+ await backend();
331
+ const { mintDeviceToken, rememberConnectKey } = await import("./tokens-DgG_Syq3.mjs");
332
+ const { userId, teamId: active } = await requestScope(teamId);
333
+ const owner = userId ?? "shared";
334
+ const token = mintDeviceToken();
335
+ await rememberConnectKey(token, {
336
+ userId: owner,
337
+ teamId: active
338
+ });
339
+ return { token };
340
+ });
341
+ //#endregion
342
+ export { canViewTeam_createServerFn_handler, deleteLoop_createServerFn_handler, getArtifact_createServerFn_handler, getArtifacts_createServerFn_handler, getAuthState_createServerFn_handler, getConfig_createServerFn_handler, getDefaultTeam_createServerFn_handler, getLoopDetail_createServerFn_handler, getRunDiff_createServerFn_handler, listLoops_createServerFn_handler, listMyTeams_createServerFn_handler, loadOlderRuns_createServerFn_handler, mintClaim_createServerFn_handler, patchLoop_createServerFn_handler, pauseLoop_createServerFn_handler, runLoop_createServerFn_handler, startLoop_createServerFn_handler, stopLoop_createServerFn_handler, stopRun_createServerFn_handler };