@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,13 +1,12 @@
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 { D as runPulseStyle, O as sectionHeadCls, _ as dur, a as StatusPill, b as humanBytes, c as btnDanger, n as Loading, o as btn, r as Pill, v as fmt, y as fnum } from "./ui-Ww2tTM2u.mjs";
2
+ import { g as require_react, h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { C as runPulseStyle, _ as humanBytes, a as btn, g as fnum, h as fmt, i as StatusPill, m as dur, n as Loading, o as btnDanger, r as Pill, w as sectionHeadCls } from "./ui-D5KWstlb.mjs";
4
+ import { r as LoadErrorCard } from "./actionUi-DJBWuNwr.mjs";
4
5
  import { u as Link } from "../_libs/@tanstack/react-router+[...].mjs";
5
- import { T as stopRun, _ as loadOlderRuns, f as getJobDetail, p as getRunDiff } from "./loopApi-8_KgBapr.mjs";
6
- import { r as LoadErrorCard } from "./actionUi-BN55TNYE.mjs";
7
- import { s as useSession } from "./LoopPlaybook-DC7QVvPY.mjs";
8
- import { t as SignIn } from "./SignIn-RmpWm9uy.mjs";
9
- import { t as Route } from "./loops._loopId_.runs._runId-Ymy4lwee.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId_.runs._runId-PUGBrD5q.js
6
+ import { E as useSession, T as stopRun, _ as loadOlderRuns, m as getRunDiff, p as getLoopDetail } from "./SocialLinks-Cm4H8pUJ.mjs";
7
+ import { t as SignIn } from "./SignIn-DEGrvJvb.mjs";
8
+ import { t as Route } from "./loops._loopId_.runs._runId-CduETLqH.mjs";
9
+ //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId_.runs._runId-BEJI6iK5.js
11
10
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
11
  var import_jsx_runtime = require_jsx_runtime();
13
12
  /**
@@ -258,12 +257,12 @@ function visibleTokenUsage(usage) {
258
257
  if (!usage || usage.inputTokens === void 0 && usage.outputTokens === void 0) return null;
259
258
  return (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
260
259
  }
261
- /** Per-run artifact diff vs the previous run (Phase 3), rendered as a colored diff
260
+ /** Per-run artifact diff vs the previous run, rendered as a colored diff
262
261
  * view. Lazy by runId; degrades to a calm fallback for runs with no snapshot. */
263
262
  function Changes({ run }) {
264
263
  const [data, setData] = (0, import_react.useState)(null);
265
264
  (0, import_react.useEffect)(() => {
266
- if (run.queued || run.running) return;
265
+ if (run.phase === "pending" || run.phase === "running") return;
267
266
  let alive = true;
268
267
  getRunDiff({ data: { runId: run.id } }).then((d) => alive && setData(d)).catch(() => alive && setData({
269
268
  hasSnapshot: false,
@@ -272,12 +271,8 @@ function Changes({ run }) {
272
271
  return () => {
273
272
  alive = false;
274
273
  };
275
- }, [
276
- run.id,
277
- run.queued,
278
- run.running
279
- ]);
280
- if (run.queued || run.running) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
274
+ }, [run.id, run.phase]);
275
+ if (run.phase === "pending" || run.phase === "running") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
281
276
  label: "Changes",
282
277
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
283
278
  className: "text-body text-disabled",
@@ -349,7 +344,7 @@ function SessionId({ id }) {
349
344
  var MAX_OLDER_PAGES = 64;
350
345
  /**
351
346
  * Run detail PAGE body — its own route (`/loops/$loopId/runs/$runId`). Resolves
352
- * the run by id from the loop's detail payload (reusing getJobDetail, no new
347
+ * the run by id from the loop's detail payload (reusing getLoopDetail, no new
353
348
  * backend); a run older than that latest window is located by paging backward
354
349
  * with the existing `loadOlderRuns` cursor fn. Self-polls while it's in flight.
355
350
  *
@@ -366,7 +361,7 @@ function RunDetailView({ loopId, runId }) {
366
361
  const [err, setErr] = (0, import_react.useState)(null);
367
362
  const load = (0, import_react.useCallback)(async () => {
368
363
  try {
369
- setDetail(await getJobDetail({ data: loopId }));
364
+ setDetail(await getLoopDetail({ data: loopId }));
370
365
  setErr(null);
371
366
  } catch (e) {
372
367
  setErr(String(e));
@@ -374,7 +369,7 @@ function RunDetailView({ loopId, runId }) {
374
369
  }, [loopId]);
375
370
  const poll = (0, import_react.useCallback)(async () => {
376
371
  try {
377
- setDetail(await getJobDetail({ data: loopId }));
372
+ setDetail(await getLoopDetail({ data: loopId }));
378
373
  } catch {}
379
374
  }, [loopId]);
380
375
  (0, import_react.useEffect)(() => {
@@ -424,7 +419,7 @@ function RunDetailView({ loopId, runId }) {
424
419
  loopId,
425
420
  runId
426
421
  ]);
427
- const running = !!(run?.queued || run?.running || run?.reconciliation);
422
+ const running = !!run && (run.phase === "pending" || run.phase === "running" || !!run.reconciliation);
428
423
  (0, import_react.useEffect)(() => {
429
424
  if (!running) return;
430
425
  const t = setInterval(() => void poll(), 3e3);
@@ -458,8 +453,7 @@ function RunDetailView({ loopId, runId }) {
458
453
  children: "← Back to the loop"
459
454
  })]
460
455
  });
461
- const jobName = detail.summary.name;
462
- const roleChip = run.role || null;
456
+ const loopName = detail.summary.name;
463
457
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", {
464
458
  className: "rounded-card border border-hairline bg-surface px-6 pb-5 pt-[22px] shadow-card",
465
459
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
@@ -470,7 +464,7 @@ function RunDetailView({ loopId, runId }) {
470
464
  className: "flex flex-wrap items-center gap-3",
471
465
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h1", {
472
466
  className: "text-[26px] font-medium leading-tight tracking-tight text-display",
473
- children: ["Run · ", jobName]
467
+ children: ["Run · ", loopName]
474
468
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusPill, {
475
469
  run,
476
470
  colorText: true
@@ -486,7 +480,6 @@ function RunDetailView({ loopId, runId }) {
486
480
  className: "text-wire",
487
481
  children: "·"
488
482
  }),
489
- roleChip && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pill, { children: roleChip }),
490
483
  run.durationMs != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pill, {
491
484
  tone: "ink",
492
485
  children: dur(run.durationMs)
@@ -505,12 +498,12 @@ function RunDetailView({ loopId, runId }) {
505
498
  params: { loopId },
506
499
  className: btn,
507
500
  children: "View the whole loop →"
508
- }), (run.queued || run.running) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
501
+ }), (run.phase === "pending" || run.phase === "running") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
509
502
  type: "button",
510
503
  onClick: onStop,
511
504
  className: btnDanger,
512
- disabled: !!run.running && detail.machine.daemonProtocol !== 3,
513
- title: run.running && detail.machine.daemonProtocol !== 3 ? "Daemon upgrade required to stop a running process. Run `npm install -g @kky42/pievo@latest`, then `pievo daemon restart`." : void 0,
505
+ disabled: run.phase === "running" && detail.machine.daemonProtocol !== 4,
506
+ title: run.phase === "running" && detail.machine.daemonProtocol !== 4 ? "Daemon upgrade required to stop a running process. Run `npm install -g @kky42/pievo@latest`, then `pievo daemon restart`." : void 0,
514
507
  children: "Stop run"
515
508
  })]
516
509
  })]
@@ -519,13 +512,13 @@ function RunDetailView({ loopId, runId }) {
519
512
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
520
513
  className: "flex min-w-0 flex-col gap-6",
521
514
  children: [
522
- run.queued ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
515
+ run.phase === "pending" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
523
516
  label: "Activity",
524
517
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
525
518
  className: "text-body text-secondary",
526
519
  children: "Queued; it starts when this loop is free and the machine polls."
527
520
  })
528
- }) : run.running ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunningState, { run }) : run.reconciliation ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
521
+ }) : run.phase === "running" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunningState, { run }) : run.reconciliation ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
529
522
  label: "Recovery",
530
523
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
531
524
  className: "text-body text-secondary",
@@ -582,43 +575,6 @@ function RunDetailView({ loopId, runId }) {
582
575
  })
583
576
  }),
584
577
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Changes, { run }),
585
- run.control && run.control.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
586
- label: "Control actions",
587
- count: run.control.length,
588
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
589
- className: "space-y-1.5",
590
- children: run.control.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
591
- className: "flex flex-wrap items-baseline gap-x-2 gap-y-0.5 font-mono text-label",
592
- children: [
593
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
594
- className: "text-display",
595
- children: c.command
596
- }),
597
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
598
- className: "min-w-0 break-all text-secondary",
599
- children: JSON.stringify(c.args)
600
- }),
601
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
602
- "aria-hidden": true,
603
- className: "text-wire",
604
- children: "→"
605
- }),
606
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
607
- className: "text-primary",
608
- children: c.result
609
- }),
610
- c.detail && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
611
- className: "text-disabled",
612
- children: [
613
- "(",
614
- c.detail,
615
- ")"
616
- ]
617
- })
618
- ]
619
- }, i))
620
- })
621
- }),
622
578
  run.finalText && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
623
579
  label: "Final output",
624
580
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
@@ -653,13 +609,6 @@ function RunDetailView({ loopId, runId }) {
653
609
  children: [fnum(tokenUsage), " tokens"]
654
610
  })
655
611
  }),
656
- run.metrics != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Field, {
657
- k: "Run metrics",
658
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
659
- className: "block break-all font-mono text-label text-secondary",
660
- children: JSON.stringify(run.metrics)
661
- })
662
- }),
663
612
  run.error && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Field, {
664
613
  k: "Error",
665
614
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
@@ -683,7 +632,7 @@ function RunDetailView({ loopId, runId }) {
683
632
  * `_` on the `$loopId` segment opts it out of the loop page's component so the run
684
633
  * gets its own full surface, deep-linkable + browser-back friendly) rather than a
685
634
  * modal or an inline panel. It resolves the run from the loop's detail payload
686
- * (reusing getJobDetail — no new backend) and reuses the Phase 3 artifact diff.
635
+ * (reusing getLoopDetail) and the existing artifact diff.
687
636
  *
688
637
  * Auth-gated like the dashboard (`/`) so a logged-out/expired DEEP LINK shows the
689
638
  * sign-in CTA instead of a raw `loop not found` error from the blocked fetch.
@@ -1,14 +1,13 @@
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/loops._loopId_.runs._runId-Ymy4lwee.js
5
- var $$splitComponentImporter = () => import("./loops._loopId_.runs._runId-PUGBrD5q.mjs");
2
+ import { i as authClient, u as getAuthState } from "./SocialLinks-Cm4H8pUJ.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId_.runs._runId-CduETLqH.js
4
+ var $$splitComponentImporter = () => import("./loops._loopId_.runs._runId-BEJI6iK5.mjs");
6
5
  /**
7
6
  * Run detail PAGE — `/loops/$loopId/runs/$runId`. A standalone page (the trailing
8
7
  * `_` on the `$loopId` segment opts it out of the loop page's component so the run
9
8
  * gets its own full surface, deep-linkable + browser-back friendly) rather than a
10
9
  * modal or an inline panel. It resolves the run from the loop's detail payload
11
- * (reusing getJobDetail — no new backend) and reuses the Phase 3 artifact diff.
10
+ * (reusing getLoopDetail) and the existing artifact diff.
12
11
  *
13
12
  * Auth-gated like the dashboard (`/`) so a logged-out/expired DEEP LINK shows the
14
13
  * sign-in CTA instead of a raw `loop not found` error from the blocked fetch.
@@ -1,8 +1,8 @@
1
- import { $t as sha256, Et as listMachinesForTeam, Ft as machineIdFromToken, Gt as rememberConnectKey, L as deleteMachine$1, Lt as mintDeviceToken, Pt as loopsForMachine, Tt as listMachines$1, f as MIN_DAEMON_VERSION, j as daemonNeedsUpdate, k as createMachine$1, on as updateMachine, tt as getMachine, z as ensureServer } from "./boot-3BNKujyp.mjs";
1
+ import { Bt as sha256, C as createMachine$1, Ct as mintDeviceToken, G as getMachine, Jt as updateMachine, T as daemonNeedsUpdate, bt as loopsForMachine, dt as listMachines$1, ft as listMachinesForTeam, j as ensureServer, jt as rememberConnectKey, k as deleteMachine$1, u as MIN_DAEMON_VERSION, xt as machineIdFromToken } from "./boot-sNlIkoLe.mjs";
2
+ import { requestScope } from "./auth-C0zoZCGe.mjs";
2
3
  import { n as createServerFn } from "./ssr.mjs";
3
- import { requestScope } from "./auth-30Z4lV1w.mjs";
4
4
  import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
5
- //#region node_modules/.nitro/vite/services/ssr/assets/machineScope-2h-fcKmG.js
5
+ //#region node_modules/.nitro/vite/services/ssr/assets/machineFns-ByMsgG12.js
6
6
  /**
7
7
  * Whether a machine is visible/actionable in the request scope. Mirrors
8
8
  * listMachines: open mode sees everything; otherwise the requester must own the
@@ -27,8 +27,6 @@ function machineInScope(m, scope, teamMachineIds) {
27
27
  function tokenVisibleTo(m, scope) {
28
28
  return !scope.enforce || m.userId === scope.userId;
29
29
  }
30
- //#endregion
31
- //#region node_modules/.nitro/vite/services/ssr/assets/machineFns-BZ9puxDt.js
32
30
  /**
33
31
  * Latest published @kky42/pievo version — a cached, fail-silent lookup of the
34
32
  * npm dist-tag `latest`, so the web can tell a user their daemon is outdated and
@@ -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/node-sqlite-dialect-D_3JmkMo.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/node-sqlite-dialect-CjNineno.js
4
4
  var NodeSqliteAdapter = class {
5
5
  get supportsCreateIfNotExists() {
6
6
  return true;