@kky42/pievo-server 2.1.0 → 2.3.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 (89) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/LoopView-DjVHUyrR.js +59 -0
  3. package/.output/public/assets/{Modal-B3xpEtcf.js → Modal-CCRvx959.js} +1 -1
  4. package/.output/public/assets/{SignIn-9vsaKv_p.js → SignIn-Qxw5zDFq.js} +1 -1
  5. package/.output/public/assets/{actionUi-DDDfD0WX.js → actionUi-CXxhzYe2.js} +1 -1
  6. package/.output/public/assets/app-D1cij_NJ.css +2 -0
  7. package/.output/public/assets/{artifactView-BV-yQVrj.js → artifactView-Cd5wWPil.js} +1 -1
  8. package/.output/public/assets/index-BRN_CQ8U.js +12 -0
  9. package/.output/public/assets/{invite._token-5zhVSA26.js → invite._token-BIxr8DlP.js} +1 -1
  10. package/.output/public/assets/{invite._token-C3t4JfAY.js → invite._token-j2BTCeG1.js} +1 -1
  11. package/.output/public/assets/lifecycleUi-Qy_8beQK.js +1 -0
  12. package/.output/public/assets/{loopApi-C_Dtw-nL.js → loopApi-CT1mMhlb.js} +1 -1
  13. package/.output/public/assets/loops._loopId-BRBQzioy.js +4 -0
  14. package/.output/public/assets/loops._loopId_.runs._runId-CMnOJkem.js +3 -0
  15. package/.output/public/assets/{notifyFns-CF12Yboc.js → notifyFns-DYD4EKaG.js} +1 -1
  16. package/.output/public/assets/{preload-helper--VCqDT5m.js → preload-helper-DFkkpP6W.js} +1 -1
  17. package/.output/public/assets/{routes-DsdcURfk.js → routes-3nuEJGdo.js} +1 -1
  18. package/.output/public/assets/{routes-WVPuW976.js → routes-DORLim-C.js} +1 -1
  19. package/.output/public/assets/{t._teamId-BdVLnwih.js → t._teamId-F5f4K8kd.js} +1 -1
  20. package/.output/public/assets/{t._teamId-C9uEyAh_.js → t._teamId-XfE_S1Fo.js} +1 -1
  21. package/.output/public/assets/ui-Dhsx6SW0.js +1 -0
  22. package/.output/server/_libs/d3-shape.mjs +130 -1
  23. package/.output/server/_libs/react-is.mjs +48 -0
  24. package/.output/server/_libs/recharts+victory-vendor.mjs +2210 -782
  25. package/.output/server/_ssr/{DashboardView-DJMpoucm.mjs → DashboardView-BF7PciP7.mjs} +11 -8
  26. package/.output/server/_ssr/{LoopPlaybook-WFNer22Y.mjs → LoopPlaybook-DC7QVvPY.mjs} +2 -2
  27. package/.output/server/_ssr/{LoopView-Dsc6oik9.mjs → LoopView-DwSrm9Ja.mjs} +418 -224
  28. package/.output/server/_ssr/{Modal-Bc_5TYGr.mjs → Modal-MaCG52Pv.mjs} +2 -2
  29. package/.output/server/_ssr/{SignIn-2qr-vtR5.mjs → SignIn-RmpWm9uy.mjs} +3 -3
  30. package/.output/server/_ssr/{actionUi-BKF6xI3d.mjs → actionUi-BN55TNYE.mjs} +2 -2
  31. package/.output/server/_ssr/{adapters-Bwuh6uek.mjs → adapters-BoLkOf1T.mjs} +12 -6
  32. package/.output/server/_ssr/{artifactFiles-Cp1IBHne.mjs → artifactFiles-BCaIIrrT.mjs} +3 -3
  33. package/.output/server/_ssr/{artifactView-DX4P3Krh.mjs → artifactView-iuPsp5aa.mjs} +2 -2
  34. package/.output/server/_ssr/artifacts-jQ-bfdhI.mjs +2 -0
  35. package/.output/server/_ssr/{auth-uQ19WsD1.mjs → auth-30Z4lV1w.mjs} +9 -9
  36. package/.output/server/_ssr/{boot-DPoPmSLh.mjs → boot-3BNKujyp.mjs} +392 -193
  37. package/.output/server/_ssr/boot-CsEFT53K.mjs +2 -0
  38. package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-CqcLCApi.mjs → bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.mjs} +2 -2
  39. package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-AuWb61y8.mjs → d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.mjs} +2 -2
  40. package/.output/server/_ssr/db-CXownd1H.mjs +2 -0
  41. package/.output/server/_ssr/{dist-CtYTvPCD.mjs → dist-Cd6nlLlO.mjs} +2 -2
  42. package/.output/server/_ssr/{factory-BtqxMS8a.mjs → factory-CWWwV7XZ.mjs} +2 -2
  43. package/.output/server/_ssr/{invite._token-DtAfQyfP.mjs → invite._token-BKlz0R2f.mjs} +5 -5
  44. package/.output/server/_ssr/{invite._token-BlbVjz-o.mjs → invite._token-CWl6kipD.mjs} +2 -2
  45. package/.output/server/_ssr/{invite._token-DBttmaDb.mjs → invite._token-SdWXemIc.mjs} +6 -6
  46. package/.output/server/_ssr/{kysely-adapter-bSpTlW7Z.mjs → kysely-adapter-C8iS51DB.mjs} +1 -1
  47. package/.output/server/_ssr/{lifecycleUi-Djb44Aj3.mjs → lifecycleUi-DgBQAYzp.mjs} +2 -1
  48. package/.output/server/_ssr/logger-Gy-47z3k.mjs +2 -0
  49. package/.output/server/_ssr/{loopApi-7MTSs6hy.mjs → loopApi-8_KgBapr.mjs} +6 -2
  50. package/.output/server/_ssr/{loopApi-BXRBFGWh.mjs → loopApi-ABi9SgWS.mjs} +23 -13
  51. package/.output/server/_ssr/{loops._loopId-6Q0DMXU0.mjs → loops._loopId-SON_t43g.mjs} +4 -4
  52. package/.output/server/_ssr/{loops._loopId-C0x0SE8F.mjs → loops._loopId-p1KWsvMM.mjs} +13 -18
  53. package/.output/server/_ssr/{loops._loopId_.runs._runId-CkM0-ckn.mjs → loops._loopId_.runs._runId-PUGBrD5q.mjs} +22 -16
  54. package/.output/server/_ssr/{loops._loopId_.runs._runId-BOJBJu_a.mjs → loops._loopId_.runs._runId-Ymy4lwee.mjs} +4 -4
  55. package/.output/server/_ssr/{machineFns-CQuvvdXx.mjs → machineFns-BZ9puxDt.mjs} +3 -3
  56. package/.output/server/_ssr/{node-sqlite-dialect-ZOyD6D7F.mjs → node-sqlite-dialect-D_3JmkMo.mjs} +2 -2
  57. package/.output/server/_ssr/{notifyFns-BOeYZDRp.mjs → notifyFns-BUCePuF3.mjs} +3 -3
  58. package/.output/server/_ssr/{notifyFns-UFZ2j7Fv.mjs → notifyFns-DuPR1zd7.mjs} +6 -6
  59. package/.output/server/_ssr/{router-jnPelPNh.mjs → router-Czxvra6l.mjs} +44 -37
  60. package/.output/server/_ssr/{routes-CXnbFjB_.mjs → routes-ClZEdsnB.mjs} +6 -6
  61. package/.output/server/_ssr/{routes-Bx0bRxt9.mjs → routes-ComqHvCL.mjs} +2 -2
  62. package/.output/server/_ssr/{routes-CMAUcUsZ.mjs → routes-D5jJJ-30.mjs} +5 -5
  63. package/.output/server/_ssr/runDiff--qLtU4FI.mjs +2 -0
  64. package/.output/server/_ssr/ssr.mjs +52 -48
  65. package/.output/server/_ssr/store-40eVzW1S.mjs +2 -0
  66. package/.output/server/_ssr/{t._teamId-Bsm4WrJl.mjs → t._teamId-BgHV_KFP.mjs} +6 -6
  67. package/.output/server/_ssr/{t._teamId-D9nCEa2h.mjs → t._teamId-DDERNgfn.mjs} +2 -2
  68. package/.output/server/_ssr/{t._teamId-36z-mmyw.mjs → t._teamId-DRJvKHZn.mjs} +5 -5
  69. package/.output/server/_ssr/{teamFns-DAx4a1z4.mjs → teamFns-Bp81UO-x.mjs} +3 -3
  70. package/.output/server/_ssr/{teamFns-BBIbatdZ.mjs → teamFns-bm82twd5.mjs} +2 -2
  71. package/.output/server/_ssr/tokens-CbfoRC_s.mjs +2 -0
  72. package/.output/server/_ssr/{ui-B6mE5-5v.mjs → ui-Ww2tTM2u.mjs} +9 -2
  73. package/.output/server/{_tanstack-start-manifest_v-5iQOchGB.mjs → _tanstack-start-manifest_v-DwKENYCN.mjs} +28 -28
  74. package/.output/server/index.mjs +114 -114
  75. package/package.json +1 -1
  76. package/.output/public/assets/LoopView-Pbp2YtUu.js +0 -55
  77. package/.output/public/assets/app-CStTBRt2.css +0 -2
  78. package/.output/public/assets/index-DT_reRxT.js +0 -12
  79. package/.output/public/assets/lifecycleUi-CMFw5Nlj.js +0 -1
  80. package/.output/public/assets/loops._loopId-6JlPOCsY.js +0 -4
  81. package/.output/public/assets/loops._loopId_.runs._runId-wFUMHN9w.js +0 -3
  82. package/.output/public/assets/ui-Gb1413-F.js +0 -1
  83. package/.output/server/_ssr/artifacts-9G_Ai7vO.mjs +0 -2
  84. package/.output/server/_ssr/boot-Zz5AJgfy.mjs +0 -2
  85. package/.output/server/_ssr/db-BMANvbZu.mjs +0 -2
  86. package/.output/server/_ssr/logger-CR1a0flR.mjs +0 -2
  87. package/.output/server/_ssr/runDiff-CDPvl_cY.mjs +0 -2
  88. package/.output/server/_ssr/store-DDOk2Ty_.mjs +0 -2
  89. package/.output/server/_ssr/tokens-7KEKpLnu.mjs +0 -2
@@ -0,0 +1,2 @@
1
+ import { G as getArtifactSync, Y as getCliGateway, Z as getGateway } from "./boot-3BNKujyp.mjs";
2
+ export { getArtifactSync, getCliGateway, getGateway };
@@ -1,6 +1,6 @@
1
- import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-uQ19WsD1.mjs";
1
+ import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-30Z4lV1w.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-CqcLCApi.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/bun-sqlite-dialect-BW9W1_Ps-_7tfuNRi.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-uQ19WsD1.mjs";
1
+ import { a as SqliteQueryCompiler, i as SqliteAdapter } from "./auth-30Z4lV1w.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-AuWb61y8.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/d1-sqlite-dialect-BLC8LXE6-ucDUbeBk.js
4
4
  var D1SqliteAdapter = class extends SqliteAdapter {};
5
5
  var D1SqliteDriver = class {
6
6
  #config;
@@ -0,0 +1,2 @@
1
+ import { N as db } from "./boot-3BNKujyp.mjs";
2
+ export { db };
@@ -1,5 +1,5 @@
1
- import { _ as logger, o as createAdapterFactory } from "./factory-BtqxMS8a.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/dist-CtYTvPCD.js
1
+ import { _ as logger, o as createAdapterFactory } from "./factory-CWWwV7XZ.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/dist-Cd6nlLlO.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 { J as getEnvVar, a as BetterAuthError, z as env } from "./boot-DPoPmSLh.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/factory-BtqxMS8a.js
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
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) => {
@@ -1,9 +1,9 @@
1
1
  import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
2
- import { c as getAuthState } from "./loopApi-7MTSs6hy.mjs";
3
- import { a as authClient } from "./LoopPlaybook-WFNer22Y.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-DtAfQyfP.js
5
- var $$splitErrorComponentImporter = () => import("./invite._token-BlbVjz-o.mjs");
6
- var $$splitComponentImporter = () => import("./invite._token-DBttmaDb.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
7
  /**
8
8
  * Invite-link redeem (`/invite/<token>`, design §4 option B). The recipient opens
9
9
  * the link the owner shared; if signed out (under the gate) they hit the normal
@@ -1,7 +1,7 @@
1
1
  import { g as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
2
  import { f as useRouter } from "../_libs/@tanstack/react-router+[...].mjs";
3
- import { r as LoadErrorCard } from "./actionUi-BKF6xI3d.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-BlbVjz-o.js
3
+ import { r as LoadErrorCard } from "./actionUi-BN55TNYE.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-CWl6kipD.js
5
5
  var import_jsx_runtime = require_jsx_runtime();
6
6
  /**
7
7
  * Invite-link redeem (`/invite/<token>`, design §4 option B). The recipient opens
@@ -1,13 +1,13 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
2
  import { g as require_jsx_runtime, h as require_react } from "../_libs/@base-ui/react+[...].mjs";
3
- import { l as btnPrimary } from "./ui-B6mE5-5v.mjs";
3
+ import { l as btnPrimary } from "./ui-Ww2tTM2u.mjs";
4
4
  import { d as useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
5
- import { i as PievoLogo, s as useSession } from "./LoopPlaybook-WFNer22Y.mjs";
5
+ import { i as PievoLogo, s as useSession } from "./LoopPlaybook-DC7QVvPY.mjs";
6
6
  import { t as setActiveTeamCookie } from "./teamCookie-B7hLOIie.mjs";
7
- import { c as redeemTeamInvite } from "./teamFns-BBIbatdZ.mjs";
8
- import { t as Route } from "./invite._token-DtAfQyfP.mjs";
9
- import { t as SignIn } from "./SignIn-2qr-vtR5.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-DBttmaDb.js
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
11
11
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
12
  var import_jsx_runtime = require_jsx_runtime();
13
13
  /**
@@ -1,2 +1,2 @@
1
- import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-uQ19WsD1.mjs";
1
+ import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-30Z4lV1w.mjs";
2
2
  export { createKyselyAdapter, kyselyAdapter };
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-Djb44Aj3.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-DgBQAYzp.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
4
  function deriveLoopLifecycle(job) {
@@ -21,6 +21,7 @@ function daemonStopSupport(protocol) {
21
21
  /** Exact user-facing lifecycle wording, including uncertainty boundaries. */
22
22
  function lifecycleDisplay(detail) {
23
23
  const state = deriveLoopLifecycle(detail.summary);
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";
24
25
  const running = detail.summary.runs.find((run) => run.running);
25
26
  if (running && detail.machine.daemonProtocol !== 3) return DAEMON_UPGRADE_REQUIRED;
26
27
  if (state === "stopping" && running && !detail.machine.online) return `Stopping · waiting for ${detail.machine.name || "machine"}`;
@@ -0,0 +1,2 @@
1
+ import { Mt as logger } from "./boot-3BNKujyp.mjs";
2
+ export { logger };
@@ -1,5 +1,5 @@
1
1
  import { n as createServerFn, r as getServerFnById, t as TSS_SERVER_FUNCTION } from "./ssr.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-7MTSs6hy.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-8_KgBapr.js
3
3
  var createSsrRpc = (functionId) => {
4
4
  const url = "/_serverFn/" + functionId;
5
5
  const serverFnMeta = { id: functionId };
@@ -62,6 +62,10 @@ var getJobDetail = createServerFn({ method: "GET" }).validator((id) => id).handl
62
62
  /** GET — one older page of a loop's runs (cursor = `beforeTs`), for the card
63
63
  * timeline's lazy "+N" paging. Chronological (oldest-first), capped. */
64
64
  var loadOlderRuns = createServerFn({ method: "GET" }).validator((d) => d).handler(createSsrRpc("85fdf73d4fee43aed762f93c5d47d33200fbff39e2d082647dc921f610d32698"));
65
+ /** GET — the latest 100 successful exec rows needed by dashboard charts. This is a
66
+ * compact, authorized read: role filtering happens before the fixed limit, and
67
+ * messages/provider telemetry never ride the response. */
68
+ var getChartRuns = createServerFn({ method: "GET" }).validator((d) => d).handler(createSsrRpc("bdf2cf0a884a9dccf99323b84675f048164a726f8347a2b6578a4ed1a350712e"));
65
69
  /** GET — the loop's current live-synced files (metadata only; path-sorted). */
66
70
  var getArtifacts = createServerFn({ method: "GET" }).validator((d) => d).handler(createSsrRpc("b18bbec3d06dfc77714e1e527dfb9172fd7575a64a6c0d6e73ba6dc658dccf0d"));
67
71
  /** GET — one artifact's content: decoded text, or a binary/oversize marker the
@@ -102,4 +106,4 @@ var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId)
102
106
  /** Poll a claim while the New-loop dialog waits for Claude Code to create the loop. */
103
107
  var claimStatus = createServerFn({ method: "GET" }).validator((token) => token).handler(createSsrRpc("4b0db7d6c8f25383a3526598cb0c1881db6cf413e451e9478687c05666461347"));
104
108
  //#endregion
105
- export { stopJob as C, startJob as S, mintClaim as _, evolveJob as a, requestSteer as b, getAuthState as c, getJobDetail as d, getRunDiff as f, loadOlderRuns as g, listTemplates as h, deleteJob as i, getConfig as l, listMyTeams as m, claimStatus as n, getArtifact as o, listJobs as p, createSsrRpc as r, getArtifacts as s, canViewTeam as t, getDefaultTeam as u, patchJob as v, stopRun as w, runJob as x, pauseJob as y };
109
+ export { startJob as C, runJob as S, stopRun as T, loadOlderRuns as _, evolveJob as a, pauseJob as b, getAuthState as c, getDefaultTeam as d, getJobDetail as f, listTemplates as g, listMyTeams as h, deleteJob as i, getChartRuns as l, listJobs as m, claimStatus as n, getArtifact as o, getRunDiff as p, createSsrRpc as r, getArtifacts as s, canViewTeam as t, getConfig as u, mintClaim as v, stopJob as w, requestSteer as x, patchJob as y };
@@ -1,9 +1,9 @@
1
- import { $ as getMachine, $t as tryDeleteLoop, Et as listRunsBefore, It as normalizeProviderSetting, K as getChannel, L as ensureServer, Lt as pauseLoop, Nt as machinePresence, Ot as listTeamsForUser, Q as getLoop, Ut as requestDeleteLoop, V as forceDeleteLoop, Wt as requestRunCancel, Xt as stopLoop, Yt as startLoop, _ as canEvolve, b as coerceUi, en as updateLoop, in as validateSteerInstruction, it as getTeamMember, nt as getRun, ot as hasRunningRun, rn as validateSchema, rt as getTeam, xt as listLoops, y as coerceCodingAgent } from "./boot-DPoPmSLh.mjs";
1
+ import { Ct as listChartRuns, It as machinePresence, J as getChannel, Jt as requestDeleteLoop, U as forceDeleteLoop, Vt as pauseLoop, Yt as requestRunCancel, an as updateLoop, at as getTeam, b as coerceCodingAgent, cn as validateSchema, ct as hasRunningRun, en as startLoop, et as getLoop, in as tryDeleteLoop, it as getRun, jt as listTeamsForUser, kt as listRunsBefore, ln as validateSteerInstruction, ot as getTeamMember, tn as stopLoop, tt as getMachine, v as canEvolve, wt as listLoops, x as coerceUi, z as ensureServer, zt as normalizeProviderSetting } from "./boot-3BNKujyp.mjs";
2
2
  import { n as createServerFn } from "./ssr.mjs";
3
- import { i as toRunSummary, n as toJobDetail, r as toJobSummary } from "./adapters-Bwuh6uek.mjs";
4
- import { canAccessLoop, requestScope } from "./auth-uQ19WsD1.mjs";
3
+ import { i as toRunSummaries, n as toJobDetail, r as toJobSummary } from "./adapters-BoLkOf1T.mjs";
4
+ import { canAccessLoop, requestScope } from "./auth-30Z4lV1w.mjs";
5
5
  import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
6
- //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-BXRBFGWh.js
6
+ //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-ABi9SgWS.js
7
7
  var meta_default$6 = {
8
8
  name: "dependency-triage",
9
9
  label: "Dependency Triage",
@@ -135,7 +135,7 @@ var getAuthState_createServerFn_handler = createServerRpc({
135
135
  filename: "src/server/loopApi.ts"
136
136
  }, (opts) => getAuthState.__executeServer(opts));
137
137
  var getAuthState = createServerFn({ method: "GET" }).handler(getAuthState_createServerFn_handler, async () => {
138
- const { authEnabled } = await import("./auth-uQ19WsD1.mjs");
138
+ const { authEnabled } = await import("./auth-30Z4lV1w.mjs");
139
139
  return { enabled: authEnabled };
140
140
  });
141
141
  var getConfig_createServerFn_handler = createServerRpc({
@@ -234,7 +234,17 @@ var loadOlderRuns = createServerFn({ method: "GET" }).validator((d) => d).handle
234
234
  await backend();
235
235
  if (!await ownedLoop(data.loopId)) return [];
236
236
  const limit = Math.min(Math.max(data.limit ?? 16, 1), 100);
237
- return (await listRunsBefore(data.loopId, data.beforeTs, limit)).map(toRunSummary);
237
+ return toRunSummaries(data.loopId, await listRunsBefore(data.loopId, data.beforeTs, limit));
238
+ });
239
+ var getChartRuns_createServerFn_handler = createServerRpc({
240
+ id: "bdf2cf0a884a9dccf99323b84675f048164a726f8347a2b6578a4ed1a350712e",
241
+ name: "getChartRuns",
242
+ filename: "src/server/loopApi.ts"
243
+ }, (opts) => getChartRuns.__executeServer(opts));
244
+ var getChartRuns = createServerFn({ method: "GET" }).validator((d) => d).handler(getChartRuns_createServerFn_handler, async ({ data }) => {
245
+ await backend();
246
+ if (!await ownedLoop(data.loopId)) return [];
247
+ return listChartRuns(data.loopId, 100);
238
248
  });
239
249
  var getArtifacts_createServerFn_handler = createServerRpc({
240
250
  id: "b18bbec3d06dfc77714e1e527dfb9172fd7575a64a6c0d6e73ba6dc658dccf0d",
@@ -244,7 +254,7 @@ var getArtifacts_createServerFn_handler = createServerRpc({
244
254
  var getArtifacts = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifacts_createServerFn_handler, async ({ data }) => {
245
255
  await backend();
246
256
  if (!await ownedLoop(data.loopId)) return [];
247
- const { listLoopArtifacts } = await import("./artifactFiles-Cp1IBHne.mjs");
257
+ const { listLoopArtifacts } = await import("./artifactFiles-BCaIIrrT.mjs");
248
258
  return listLoopArtifacts(data.loopId);
249
259
  });
250
260
  var getArtifact_createServerFn_handler = createServerRpc({
@@ -255,7 +265,7 @@ var getArtifact_createServerFn_handler = createServerRpc({
255
265
  var getArtifact = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifact_createServerFn_handler, async ({ data }) => {
256
266
  await backend();
257
267
  if (!await ownedLoop(data.loopId)) return { error: "file not found" };
258
- const { readLoopArtifact } = await import("./artifactFiles-Cp1IBHne.mjs");
268
+ const { readLoopArtifact } = await import("./artifactFiles-BCaIIrrT.mjs");
259
269
  return readLoopArtifact(data.loopId, data.path);
260
270
  });
261
271
  var getRunDiff_createServerFn_handler = createServerRpc({
@@ -274,7 +284,7 @@ var getRunDiff = createServerFn({ method: "GET" }).validator((d) => d).handler(g
274
284
  hasSnapshot: false,
275
285
  files: []
276
286
  };
277
- const { computeRunDiff } = await import("./runDiff-CDPvl_cY.mjs");
287
+ const { computeRunDiff } = await import("./runDiff--qLtU4FI.mjs");
278
288
  return computeRunDiff(data.runId);
279
289
  });
280
290
  var listTemplates_createServerFn_handler = createServerRpc({
@@ -395,7 +405,7 @@ var deleteJob = createServerFn({ method: "POST" }).validator((id) => id).handler
395
405
  if (!await requestDeleteLoop(id)) return { error: "not found" };
396
406
  if (unreachable && mayRetireAuthority) {
397
407
  if (!await forceDeleteLoop(id)) return { error: "delete failed; server data was not deleted" };
398
- const { logger } = await import("./logger-CR1a0flR.mjs");
408
+ const { logger } = await import("./logger-Gy-47z3k.mjs");
399
409
  logger.child({ mod: "loop-lifecycle" }).warn({
400
410
  action: "unreachable-delete",
401
411
  loopId: id,
@@ -435,7 +445,7 @@ var forceDeleteJob = createServerFn({ method: "POST" }).validator((d) => d).hand
435
445
  }
436
446
  scheduler.removeLoop(data.id);
437
447
  if (!await forceDeleteLoop(data.id)) return { error: "force delete failed; server data was not deleted" };
438
- const { logger } = await import("./logger-CR1a0flR.mjs");
448
+ const { logger } = await import("./logger-Gy-47z3k.mjs");
439
449
  logger.child({ mod: "loop-lifecycle" }).warn({
440
450
  action: "force-delete",
441
451
  loopId: data.id,
@@ -526,7 +536,7 @@ var mintClaim_createServerFn_handler = createServerRpc({
526
536
  }, (opts) => mintClaim.__executeServer(opts));
527
537
  var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId).handler(mintClaim_createServerFn_handler, async ({ data: teamId }) => {
528
538
  await backend();
529
- const { mintDeviceToken, rememberConnectKey } = await import("./tokens-7KEKpLnu.mjs");
539
+ const { mintDeviceToken, rememberConnectKey } = await import("./tokens-CbfoRC_s.mjs");
530
540
  const { userId, teamId: active } = await requestScope(teamId);
531
541
  const owner = userId ?? "shared";
532
542
  const token = mintDeviceToken();
@@ -551,4 +561,4 @@ var claimStatus = createServerFn({ method: "GET" }).validator((token) => token).
551
561
  } : { done: false };
552
562
  });
553
563
  //#endregion
554
- export { canViewTeam_createServerFn_handler, claimStatus_createServerFn_handler, deleteJob_createServerFn_handler, evolveJob_createServerFn_handler, forceDeleteJob_createServerFn_handler, getArtifact_createServerFn_handler, getArtifacts_createServerFn_handler, getAuthState_createServerFn_handler, getConfig_createServerFn_handler, getDefaultTeam_createServerFn_handler, getJobDetail_createServerFn_handler, getRunDiff_createServerFn_handler, listJobs_createServerFn_handler, listMyTeams_createServerFn_handler, listTemplates_createServerFn_handler, loadOlderRuns_createServerFn_handler, mintClaim_createServerFn_handler, patchJob_createServerFn_handler, pauseJob_createServerFn_handler, requestSteer_createServerFn_handler, runJob_createServerFn_handler, startJob_createServerFn_handler, stopJob_createServerFn_handler, stopRun_createServerFn_handler };
564
+ export { canViewTeam_createServerFn_handler, claimStatus_createServerFn_handler, deleteJob_createServerFn_handler, evolveJob_createServerFn_handler, forceDeleteJob_createServerFn_handler, getArtifact_createServerFn_handler, getArtifacts_createServerFn_handler, getAuthState_createServerFn_handler, getChartRuns_createServerFn_handler, getConfig_createServerFn_handler, getDefaultTeam_createServerFn_handler, getJobDetail_createServerFn_handler, getRunDiff_createServerFn_handler, listJobs_createServerFn_handler, listMyTeams_createServerFn_handler, listTemplates_createServerFn_handler, loadOlderRuns_createServerFn_handler, mintClaim_createServerFn_handler, patchJob_createServerFn_handler, pauseJob_createServerFn_handler, requestSteer_createServerFn_handler, runJob_createServerFn_handler, startJob_createServerFn_handler, stopJob_createServerFn_handler, stopRun_createServerFn_handler };
@@ -1,8 +1,8 @@
1
1
  import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
2
- import { c as getAuthState } from "./loopApi-7MTSs6hy.mjs";
3
- import { a as authClient } from "./LoopPlaybook-WFNer22Y.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId-6Q0DMXU0.js
5
- var $$splitComponentImporter = () => import("./loops._loopId-C0x0SE8F.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-SON_t43g.js
5
+ var $$splitComponentImporter = () => import("./loops._loopId-p1KWsvMM.mjs");
6
6
  /**
7
7
  * Loop detail PAGE — `/loops/$loopId`. The dedicated page that replaced the old
8
8
  * dashboard modal: a loop header + action toolbar, the unified Files panel (task
@@ -1,18 +1,18 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
2
  import { g as require_jsx_runtime, h as require_react } from "../_libs/@base-ui/react+[...].mjs";
3
- import { c as CODING_AGENTS, g as buildFileEntries, mt as isTaskEntry } from "./boot-DPoPmSLh.mjs";
4
- import { A as tsShort, D as runPulseStyle, O as sectionHeadCls, S as labelCls, T as rel, _ as dur, b as humanBytes, c as btnDanger, d as btnQuiet, h as dotLabel, i as Pre, j as until, k as selectCls, l as btnPrimary, m as dotColor, n as Loading, o as btn, p as cronText, r as Pill, s as btnCost, t as ErrorBanner, v as fmt, x as inputCls } from "./ui-B6mE5-5v.mjs";
3
+ import { _ as buildFileEntries, gt as isTaskEntry, l as CODING_AGENTS } from "./boot-3BNKujyp.mjs";
4
+ import { A as tsShort, D as runPulseStyle, O as sectionHeadCls, S as labelCls, T as rel, _ as dur, b as humanBytes, c as btnDanger, d as btnQuiet, h as dotLabel, i as Pre, j as until, k as selectCls, l as btnPrimary, m as dotColor, n as Loading, o as btn, p as cronText, r as Pill, s as btnCost, t as ErrorBanner, v as fmt, x as inputCls } from "./ui-Ww2tTM2u.mjs";
5
5
  import { d as useNavigate, u as Link } from "../_libs/@tanstack/react-router+[...].mjs";
6
- import { C as stopJob, S as startJob, a as evolveJob, b as requestSteer, d as getJobDetail, g as loadOlderRuns, i as deleteJob, s as getArtifacts, v as patchJob, x as runJob, y as pauseJob } from "./loopApi-7MTSs6hy.mjs";
7
- import { n as TaskFileView, r as ViewerHead, t as ArtifactBody } from "./artifactView-DX4P3Krh.mjs";
8
- import { i as useFlash, n as FlashLine, r as LoadErrorCard, t as ConfirmBar } from "./actionUi-BKF6xI3d.mjs";
9
- import { s as useSession } from "./LoopPlaybook-WFNer22Y.mjs";
6
+ import { C as startJob, S as runJob, _ as loadOlderRuns, a as evolveJob, b as pauseJob, f as getJobDetail, i as deleteJob, s as getArtifacts, w as stopJob, x as requestSteer, y as patchJob } from "./loopApi-8_KgBapr.mjs";
7
+ import { n as TaskFileView, r as ViewerHead, t as ArtifactBody } from "./artifactView-iuPsp5aa.mjs";
8
+ import { i as useFlash, n as FlashLine, r as LoadErrorCard, t as ConfirmBar } from "./actionUi-BN55TNYE.mjs";
9
+ import { s as useSession } from "./LoopPlaybook-DC7QVvPY.mjs";
10
10
  import { t as setActiveTeamCookie } from "./teamCookie-B7hLOIie.mjs";
11
- import { t as SignIn } from "./SignIn-2qr-vtR5.mjs";
12
- import { i as lifecycleDisplay, n as daemonStopSupport, r as deriveLoopLifecycle, t as DAEMON_UPGRADE_REQUIRED } from "./lifecycleUi-Djb44Aj3.mjs";
13
- import { a as listChannels, n as Timeline, s as mergeRuns, t as MachinesModal } from "./notifyFns-UFZ2j7Fv.mjs";
14
- import { t as Route } from "./loops._loopId-6Q0DMXU0.mjs";
15
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId-C0x0SE8F.js
11
+ import { t as SignIn } from "./SignIn-RmpWm9uy.mjs";
12
+ import { i as lifecycleDisplay, n as daemonStopSupport, r as deriveLoopLifecycle, t as DAEMON_UPGRADE_REQUIRED } from "./lifecycleUi-DgBQAYzp.mjs";
13
+ import { a as listChannels, n as Timeline, s as mergeRuns, t as MachinesModal } from "./notifyFns-DuPR1zd7.mjs";
14
+ import { t as Route } from "./loops._loopId-SON_t43g.mjs";
15
+ //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId-p1KWsvMM.js
16
16
  var import_react = /* @__PURE__ */ __toESM(require_react());
17
17
  var import_jsx_runtime = require_jsx_runtime();
18
18
  /**
@@ -517,7 +517,7 @@ var LoopForm = (0, import_react.forwardRef)(function LoopForm({ initial, channel
517
517
  value: f.ui,
518
518
  onChange: (v) => set("ui", v),
519
519
  minHeight: "240px",
520
- placeholder: "<h3>{{latest.mrr}}$</h3>\n<loop-chart series=\"mrr:MRR:$\"></loop-chart>"
520
+ placeholder: "<h3>{{latest.mrr}}$</h3>\n<loop-chart type=\"line\" x=\"runIndex\" series=\"mrr:MRR:$\"></loop-chart>"
521
521
  })
522
522
  }),
523
523
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
@@ -556,7 +556,7 @@ var STEER_SEEDS = [
556
556
  seed: "Give this loop a standing objective to optimize toward: "
557
557
  }
558
558
  ];
559
- var LoopView = (0, import_react.lazy)(() => import("./LoopView-Dsc6oik9.mjs").then((m) => ({ default: m.LoopView })));
559
+ var LoopView = (0, import_react.lazy)(() => import("./LoopView-DwSrm9Ja.mjs").then((m) => ({ default: m.LoopView })));
560
560
  /**
561
561
  * Loop detail PAGE body (`/loops/$loopId`) — the redesign of the former modal.
562
562
  * One scrolling page: a loop header (name / status / schedule / agent / machine +
@@ -1174,11 +1174,6 @@ function LoopDetailView({ id }) {
1174
1174
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: `size-1.5 rounded-full ${online ? "bg-rubik-green" : asleep ? "bg-rubik-yellow" : "bg-disabled"}` }), detail.machine.name || "machine"]
1175
1175
  }),
1176
1176
  metaDot,
1177
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1178
- title: "Breaking daemon/server lifecycle protocol",
1179
- children: protocolSupport.label
1180
- }),
1181
- metaDot,
1182
1177
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
1183
1178
  className: "font-mono text-label text-disabled",
1184
1179
  children: s.id
@@ -1,13 +1,13 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
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-B6mE5-5v.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";
4
4
  import { u as Link } from "../_libs/@tanstack/react-router+[...].mjs";
5
- import { d as getJobDetail, f as getRunDiff, g as loadOlderRuns, w as stopRun } from "./loopApi-7MTSs6hy.mjs";
6
- import { r as LoadErrorCard } from "./actionUi-BKF6xI3d.mjs";
7
- import { s as useSession } from "./LoopPlaybook-WFNer22Y.mjs";
8
- import { t as SignIn } from "./SignIn-2qr-vtR5.mjs";
9
- import { t as Route } from "./loops._loopId_.runs._runId-BOJBJu_a.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId_.runs._runId-CkM0-ckn.js
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
11
11
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
12
  var import_jsx_runtime = require_jsx_runtime();
13
13
  /**
@@ -254,6 +254,10 @@ function Field({ k, children }) {
254
254
  })]
255
255
  });
256
256
  }
257
+ function visibleTokenUsage(usage) {
258
+ if (!usage || usage.inputTokens === void 0 && usage.outputTokens === void 0) return null;
259
+ return (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
260
+ }
257
261
  /** Per-run artifact diff vs the previous run (Phase 3), rendered as a colored diff
258
262
  * view. Lazy by runId; degrades to a calm fallback for runs with no snapshot. */
259
263
  function Changes({ run }) {
@@ -385,6 +389,7 @@ function RunDetailView({ loopId, runId }) {
385
389
  load
386
390
  ]);
387
391
  const run = detail?.runs.find((r) => r.id === runId) ?? olderRun;
392
+ const tokenUsage = visibleTokenUsage(run?.usage ?? null);
388
393
  (0, import_react.useEffect)(() => {
389
394
  if (!detail || run || searchDone) return;
390
395
  let alive = true;
@@ -419,7 +424,7 @@ function RunDetailView({ loopId, runId }) {
419
424
  loopId,
420
425
  runId
421
426
  ]);
422
- const running = !!(run?.queued || run?.running);
427
+ const running = !!(run?.queued || run?.running || run?.reconciliation);
423
428
  (0, import_react.useEffect)(() => {
424
429
  if (!running) return;
425
430
  const t = setInterval(() => void poll(), 3e3);
@@ -520,7 +525,13 @@ function RunDetailView({ loopId, runId }) {
520
525
  className: "text-body text-secondary",
521
526
  children: "Queued; it starts when this loop is free and the machine polls."
522
527
  })
523
- }) : run.running ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunningState, { run }) : null,
528
+ }) : run.running ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunningState, { run }) : run.reconciliation ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
529
+ label: "Recovery",
530
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
531
+ className: "text-body text-secondary",
532
+ children: run.reconciliation === "blocking" ? detail.machine.presence === "online" ? "The machine is online and checking an interrupted run. Queued work starts automatically after recovery." : "Waiting for the machine to reconnect and check an interrupted run. Queued work starts automatically; no action is required." : "This interrupted run no longer blocks queued work. Pievo will still accept its saved report if it arrives."
533
+ })
534
+ }) : null,
524
535
  run.reportIncident && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
525
536
  label: "Terminal report rejected",
526
537
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
@@ -635,16 +646,11 @@ function RunDetailView({ loopId, runId }) {
635
646
  k: "Exit code",
636
647
  children: run.exitCode
637
648
  }),
638
- run.usage && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Field, {
649
+ tokenUsage != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Field, {
639
650
  k: "Token usage",
640
651
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
641
652
  className: "text-disabled",
642
- children: [
643
- fnum((run.usage.inputTokens ?? 0) + (run.usage.cacheReadTokens ?? 0) + (run.usage.cacheCreationTokens ?? 0)),
644
- " in · ",
645
- fnum(run.usage.outputTokens ?? 0),
646
- " out"
647
- ]
653
+ children: [fnum(tokenUsage), " tokens"]
648
654
  })
649
655
  }),
650
656
  run.metrics != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Field, {
@@ -1,8 +1,8 @@
1
1
  import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
2
- import { c as getAuthState } from "./loopApi-7MTSs6hy.mjs";
3
- import { a as authClient } from "./LoopPlaybook-WFNer22Y.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId_.runs._runId-BOJBJu_a.js
5
- var $$splitComponentImporter = () => import("./loops._loopId_.runs._runId-CkM0-ckn.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");
6
6
  /**
7
7
  * Run detail PAGE — `/loops/$loopId/runs/$runId`. A standalone page (the trailing
8
8
  * `_` on the `$loopId` segment opts it out of the loop page's component so the run
@@ -1,6 +1,6 @@
1
- import { $ as getMachine, A as daemonNeedsUpdate, Bt as rememberConnectKey, Ct as listMachinesForTeam, F as deleteMachine$1, Jt as sha256, L as ensureServer, Mt as machineIdFromToken, O as createMachine$1, Pt as mintDeviceToken, St as listMachines$1, d as MIN_DAEMON_VERSION, jt as loopsForMachine, tn as updateMachine } from "./boot-DPoPmSLh.mjs";
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";
2
2
  import { n as createServerFn } from "./ssr.mjs";
3
- import { requestScope } from "./auth-uQ19WsD1.mjs";
3
+ import { requestScope } from "./auth-30Z4lV1w.mjs";
4
4
  import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
5
5
  //#region node_modules/.nitro/vite/services/ssr/assets/machineScope-2h-fcKmG.js
6
6
  /**
@@ -28,7 +28,7 @@ function tokenVisibleTo(m, scope) {
28
28
  return !scope.enforce || m.userId === scope.userId;
29
29
  }
30
30
  //#endregion
31
- //#region node_modules/.nitro/vite/services/ssr/assets/machineFns-CQuvvdXx.js
31
+ //#region node_modules/.nitro/vite/services/ssr/assets/machineFns-BZ9puxDt.js
32
32
  /**
33
33
  * Latest published @kky42/pievo version — a cached, fail-silent lookup of the
34
34
  * 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-uQ19WsD1.mjs";
1
+ import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-30Z4lV1w.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-ZOyD6D7F.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/node-sqlite-dialect-D_3JmkMo.js
4
4
  var NodeSqliteAdapter = class {
5
5
  get supportsCreateIfNotExists() {
6
6
  return true;
@@ -1,8 +1,8 @@
1
- import { K as getChannel, L as ensureServer, N as deleteChannel$1, bt as listChannels$1, s as CHANNELS, w as createChannel$1 } from "./boot-DPoPmSLh.mjs";
1
+ import { F as deleteChannel$1, J as getChannel, St as listChannels$1, T as createChannel$1, s as CHANNELS, z as ensureServer } from "./boot-3BNKujyp.mjs";
2
2
  import { n as createServerFn } from "./ssr.mjs";
3
- import { requestScope } from "./auth-uQ19WsD1.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/notifyFns-BOeYZDRp.js
5
+ //#region node_modules/.nitro/vite/services/ssr/assets/notifyFns-BUCePuF3.js
6
6
  /**
7
7
  * Notification-channel server functions. Channels are per-team push targets a
8
8
  * loop can route its run messages to. Secrets (bot token / chat id) live in the
@@ -1,12 +1,12 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
2
  import { a as TooltipTrigger, g as require_jsx_runtime, h as require_react, i as TooltipPortal, n as TooltipPopup, o as TooltipRoot, r as TooltipPositioner } from "../_libs/@base-ui/react+[...].mjs";
3
- import { Nt as machinePresence, lt as isOutdated } from "./boot-DPoPmSLh.mjs";
4
- import { E as runPulseAnim, M as useHydrated, S as labelCls, T as rel, _ as dur, c as btnDanger, g as dotOpacity, h as dotLabel, j as until, l as btnPrimary, m as dotColor, o as btn, t as ErrorBanner, v as fmt, x as inputCls } from "./ui-B6mE5-5v.mjs";
3
+ import { It as machinePresence, dt as isOutdated } from "./boot-3BNKujyp.mjs";
4
+ import { E as runPulseAnim, M as useHydrated, S as labelCls, T as rel, _ as dur, c as btnDanger, g as dotOpacity, h as dotLabel, j as until, l as btnPrimary, m as dotColor, o as btn, t as ErrorBanner, v as fmt, x as inputCls } from "./ui-Ww2tTM2u.mjs";
5
5
  import { n as createServerFn } from "./ssr.mjs";
6
- import { l as getConfig, r as createSsrRpc } from "./loopApi-7MTSs6hy.mjs";
7
- import { n as ModalHead, r as ModalSection, t as Modal } from "./Modal-Bc_5TYGr.mjs";
8
- import { n as daemonStopSupport } from "./lifecycleUi-Djb44Aj3.mjs";
9
- //#region node_modules/.nitro/vite/services/ssr/assets/notifyFns-UFZ2j7Fv.js
6
+ import { r as createSsrRpc, u as getConfig } from "./loopApi-8_KgBapr.mjs";
7
+ import { n as ModalHead, r as ModalSection, t as Modal } from "./Modal-MaCG52Pv.mjs";
8
+ import { n as daemonStopSupport } from "./lifecycleUi-DgBQAYzp.mjs";
9
+ //#region node_modules/.nitro/vite/services/ssr/assets/notifyFns-DuPR1zd7.js
10
10
  var import_react = /* @__PURE__ */ __toESM(require_react());
11
11
  var import_jsx_runtime = require_jsx_runtime();
12
12
  /**