@kky42/pievo-server 2.0.3 → 2.1.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 (88) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{LoopView-CCYqXrKq.js → LoopView-Pbp2YtUu.js} +1 -1
  3. package/.output/public/assets/{Modal-BhRzAXQg.js → Modal-B3xpEtcf.js} +1 -1
  4. package/.output/public/assets/{SignIn-CV3jqX_8.js → SignIn-9vsaKv_p.js} +1 -1
  5. package/.output/public/assets/{actionUi-BRtdWVvO.js → actionUi-DDDfD0WX.js} +1 -1
  6. package/.output/public/assets/app-CStTBRt2.css +2 -0
  7. package/.output/public/assets/{artifactView-DekEs5ME.js → artifactView-BV-yQVrj.js} +1 -1
  8. package/.output/public/assets/{index-BATGA0jG.js → index-DT_reRxT.js} +4 -4
  9. package/.output/public/assets/{invite._token-Dp2HL9X5.js → invite._token-5zhVSA26.js} +1 -1
  10. package/.output/public/assets/{invite._token-CQgv8lTC.js → invite._token-C3t4JfAY.js} +1 -1
  11. package/.output/public/assets/{lifecycleUi-C3k2MlX8.js → lifecycleUi-CMFw5Nlj.js} +1 -1
  12. package/.output/public/assets/{loopApi-5s2-kCnu.js → loopApi-C_Dtw-nL.js} +1 -1
  13. package/.output/public/assets/loops._loopId-6JlPOCsY.js +4 -0
  14. package/.output/public/assets/{loops._loopId_.runs._runId-BNN-dLrW.js → loops._loopId_.runs._runId-wFUMHN9w.js} +2 -2
  15. package/.output/public/assets/{notifyFns-DuBElaqG.js → notifyFns-CF12Yboc.js} +1 -1
  16. package/.output/public/assets/{preload-helper-3xcHsDtt.js → preload-helper--VCqDT5m.js} +2 -2
  17. package/.output/public/assets/{routes-CmuCVIIS.js → routes-DsdcURfk.js} +1 -1
  18. package/.output/public/assets/{routes-YnrsFY5X.js → routes-WVPuW976.js} +1 -1
  19. package/.output/public/assets/{t._teamId-BlE4mCSj.js → t._teamId-BdVLnwih.js} +1 -1
  20. package/.output/public/assets/{t._teamId-Bi-C9s5j.js → t._teamId-C9uEyAh_.js} +1 -1
  21. package/.output/public/assets/ui-Gb1413-F.js +1 -0
  22. package/.output/server/_ssr/{DashboardView-2eNPqWcy.mjs → DashboardView-DJMpoucm.mjs} +8 -8
  23. package/.output/server/_ssr/{LoopPlaybook-CnQ8Qgyf.mjs → LoopPlaybook-WFNer22Y.mjs} +3 -3
  24. package/.output/server/_ssr/{LoopView-DM30OPCN.mjs → LoopView-Dsc6oik9.mjs} +7 -7
  25. package/.output/server/_ssr/{Modal-B7gBr5Pm.mjs → Modal-Bc_5TYGr.mjs} +2 -2
  26. package/.output/server/_ssr/{SignIn-CaAi4_mk.mjs → SignIn-2qr-vtR5.mjs} +3 -3
  27. package/.output/server/_ssr/{actionUi-Be7dmMxb.mjs → actionUi-BKF6xI3d.mjs} +2 -2
  28. package/.output/server/_ssr/{adapters-CHURWoZx.mjs → adapters-Bwuh6uek.mjs} +2 -2
  29. package/.output/server/_ssr/{artifactFiles-D6b_RP78.mjs → artifactFiles-Cp1IBHne.mjs} +3 -3
  30. package/.output/server/_ssr/{artifactView-CYV1r48i.mjs → artifactView-DX4P3Krh.mjs} +2 -2
  31. package/.output/server/_ssr/artifacts-9G_Ai7vO.mjs +2 -0
  32. package/.output/server/_ssr/{auth-B_OxPpFr.mjs → auth-uQ19WsD1.mjs} +9 -9
  33. package/.output/server/_ssr/{boot-BNoivm21.mjs → boot-DPoPmSLh.mjs} +1236 -314
  34. package/.output/server/_ssr/boot-Zz5AJgfy.mjs +2 -0
  35. package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-B3RHdVjo.mjs → bun-sqlite-dialect-BW9W1_Ps-CqcLCApi.mjs} +2 -2
  36. package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-DpVe1foU.mjs → d1-sqlite-dialect-BLC8LXE6-AuWb61y8.mjs} +2 -2
  37. package/.output/server/_ssr/db-BMANvbZu.mjs +2 -0
  38. package/.output/server/_ssr/{dist-BTx1ljg7.mjs → dist-CtYTvPCD.mjs} +2 -2
  39. package/.output/server/_ssr/{factory-TSnFcS96.mjs → factory-BtqxMS8a.mjs} +2 -2
  40. package/.output/server/_ssr/{invite._token-CvqaKH2R.mjs → invite._token-BlbVjz-o.mjs} +2 -2
  41. package/.output/server/_ssr/{invite._token-CDpO3cfB.mjs → invite._token-DBttmaDb.mjs} +6 -6
  42. package/.output/server/_ssr/{invite._token-DWOPXXLS.mjs → invite._token-DtAfQyfP.mjs} +5 -5
  43. package/.output/server/_ssr/{kysely-adapter-BWjzeCGK.mjs → kysely-adapter-bSpTlW7Z.mjs} +1 -1
  44. package/.output/server/_ssr/{lifecycleUi-5jMhxINb.mjs → lifecycleUi-Djb44Aj3.mjs} +4 -4
  45. package/.output/server/_ssr/logger-CR1a0flR.mjs +2 -0
  46. package/.output/server/_ssr/{loopApi-BfMnXaKT.mjs → loopApi-7MTSs6hy.mjs} +5 -5
  47. package/.output/server/_ssr/{loopApi-Cpm8YV3U.mjs → loopApi-BXRBFGWh.mjs} +23 -23
  48. package/.output/server/_ssr/{loops._loopId-C-y4Pux_.mjs → loops._loopId-6Q0DMXU0.mjs} +4 -4
  49. package/.output/server/_ssr/{loops._loopId-DfrHw2mZ.mjs → loops._loopId-C0x0SE8F.mjs} +85 -85
  50. package/.output/server/_ssr/{loops._loopId_.runs._runId-BXyyqXwX.mjs → loops._loopId_.runs._runId-BOJBJu_a.mjs} +4 -4
  51. package/.output/server/_ssr/{loops._loopId_.runs._runId-C9d0EC2Q.mjs → loops._loopId_.runs._runId-CkM0-ckn.mjs} +9 -9
  52. package/.output/server/_ssr/{machineFns-CRbwYxD3.mjs → machineFns-CQuvvdXx.mjs} +3 -3
  53. package/.output/server/_ssr/{node-sqlite-dialect-B10G6C4W.mjs → node-sqlite-dialect-ZOyD6D7F.mjs} +2 -2
  54. package/.output/server/_ssr/{notifyFns-DvH4C-GH.mjs → notifyFns-BOeYZDRp.mjs} +3 -3
  55. package/.output/server/_ssr/{notifyFns-CtmSVNmE.mjs → notifyFns-UFZ2j7Fv.mjs} +7 -7
  56. package/.output/server/_ssr/{router-B4ipreZ4.mjs → router-jnPelPNh.mjs} +32 -32
  57. package/.output/server/_ssr/{routes-DKox93l0.mjs → routes-Bx0bRxt9.mjs} +2 -2
  58. package/.output/server/_ssr/{routes-iHT61OkI.mjs → routes-CMAUcUsZ.mjs} +5 -5
  59. package/.output/server/_ssr/{routes-l7tUe3lr.mjs → routes-CXnbFjB_.mjs} +6 -6
  60. package/.output/server/_ssr/runDiff-CDPvl_cY.mjs +2 -0
  61. package/.output/server/_ssr/ssr.mjs +51 -51
  62. package/.output/server/_ssr/store-DDOk2Ty_.mjs +2 -0
  63. package/.output/server/_ssr/{t._teamId-jO8dUmSQ.mjs → t._teamId-36z-mmyw.mjs} +5 -5
  64. package/.output/server/_ssr/{t._teamId-BPK2mrN3.mjs → t._teamId-Bsm4WrJl.mjs} +6 -6
  65. package/.output/server/_ssr/{t._teamId-B3g0Cs8B.mjs → t._teamId-D9nCEa2h.mjs} +2 -2
  66. package/.output/server/_ssr/{teamFns-D4I-0dEB.mjs → teamFns-BBIbatdZ.mjs} +2 -2
  67. package/.output/server/_ssr/{teamFns-6zjFV7lM.mjs → teamFns-DAx4a1z4.mjs} +3 -3
  68. package/.output/server/_ssr/tokens-7KEKpLnu.mjs +2 -0
  69. package/.output/server/_ssr/{ui-CI-OeTr7.mjs → ui-B6mE5-5v.mjs} +6 -6
  70. package/.output/server/{_tanstack-start-manifest_v-CxHUYCv8.mjs → _tanstack-start-manifest_v-5iQOchGB.mjs} +28 -28
  71. package/.output/server/drizzle/0015_run_history_foundation.sql +43 -0
  72. package/.output/server/drizzle/0016_plural_machine_runs.sql +4 -0
  73. package/.output/server/drizzle/meta/_journal.json +14 -0
  74. package/.output/server/index.mjs +118 -118
  75. package/drizzle/0015_run_history_foundation.sql +43 -0
  76. package/drizzle/0016_plural_machine_runs.sql +4 -0
  77. package/drizzle/meta/_journal.json +14 -0
  78. package/package.json +1 -1
  79. package/.output/public/assets/app-B03JVnFn.css +0 -2
  80. package/.output/public/assets/loops._loopId-C9vRjZ8W.js +0 -4
  81. package/.output/public/assets/ui-By58RJgB.js +0 -1
  82. package/.output/server/_ssr/artifacts-CXMpBzMY.mjs +0 -2
  83. package/.output/server/_ssr/boot-C9VAWt9Z.mjs +0 -2
  84. package/.output/server/_ssr/db-C11vQNxP.mjs +0 -2
  85. package/.output/server/_ssr/logger-DE_PU5bE.mjs +0 -2
  86. package/.output/server/_ssr/runDiff-Bohd5W5R.mjs +0 -113
  87. package/.output/server/_ssr/store-Ck7kCAGf.mjs +0 -2
  88. package/.output/server/_ssr/tokens-oJm6yFyt.mjs +0 -2
@@ -0,0 +1,2 @@
1
+ import { U as getArtifactSync, Y as getGateway, q as getCliGateway } from "./boot-DPoPmSLh.mjs";
2
+ export { getArtifactSync, getCliGateway, getGateway };
@@ -1,6 +1,6 @@
1
- import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-B_OxPpFr.mjs";
1
+ import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-uQ19WsD1.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-B3RHdVjo.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/bun-sqlite-dialect-BW9W1_Ps-CqcLCApi.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-B_OxPpFr.mjs";
1
+ import { a as SqliteQueryCompiler, i as SqliteAdapter } from "./auth-uQ19WsD1.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-DpVe1foU.js
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/d1-sqlite-dialect-BLC8LXE6-AuWb61y8.js
4
4
  var D1SqliteAdapter = class extends SqliteAdapter {};
5
5
  var D1SqliteDriver = class {
6
6
  #config;
@@ -0,0 +1,2 @@
1
+ import { j as db } from "./boot-DPoPmSLh.mjs";
2
+ export { db };
@@ -1,5 +1,5 @@
1
- import { _ as logger, o as createAdapterFactory } from "./factory-TSnFcS96.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/dist-BTx1ljg7.js
1
+ import { _ as logger, o as createAdapterFactory } from "./factory-BtqxMS8a.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/dist-CtYTvPCD.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 { R as env, a as BetterAuthError, q as getEnvVar } from "./boot-BNoivm21.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/factory-TSnFcS96.js
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
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,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-Be7dmMxb.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-CvqaKH2R.js
3
+ import { r as LoadErrorCard } from "./actionUi-BKF6xI3d.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-BlbVjz-o.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-CI-OeTr7.mjs";
3
+ import { l as btnPrimary } from "./ui-B6mE5-5v.mjs";
4
4
  import { d as useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
5
- import { i as PievoLogo, s as useSession } from "./LoopPlaybook-CnQ8Qgyf.mjs";
5
+ import { i as PievoLogo, s as useSession } from "./LoopPlaybook-WFNer22Y.mjs";
6
6
  import { t as setActiveTeamCookie } from "./teamCookie-B7hLOIie.mjs";
7
- import { c as redeemTeamInvite } from "./teamFns-D4I-0dEB.mjs";
8
- import { t as Route } from "./invite._token-DWOPXXLS.mjs";
9
- import { t as SignIn } from "./SignIn-CaAi4_mk.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-CDpO3cfB.js
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
11
11
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
12
  var import_jsx_runtime = require_jsx_runtime();
13
13
  /**
@@ -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-BfMnXaKT.mjs";
3
- import { a as authClient } from "./LoopPlaybook-CnQ8Qgyf.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/invite._token-DWOPXXLS.js
5
- var $$splitErrorComponentImporter = () => import("./invite._token-CvqaKH2R.mjs");
6
- var $$splitComponentImporter = () => import("./invite._token-CDpO3cfB.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");
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,2 +1,2 @@
1
- import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-B_OxPpFr.mjs";
1
+ import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-uQ19WsD1.mjs";
2
2
  export { createKyselyAdapter, kyselyAdapter };
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-5jMhxINb.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-Djb44Aj3.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) {
@@ -10,9 +10,9 @@ function deriveLoopLifecycle(job) {
10
10
  return "active";
11
11
  }
12
12
  function daemonStopSupport(protocol) {
13
- return protocol === 2 ? {
13
+ return protocol === 3 ? {
14
14
  supported: true,
15
- label: `Daemon protocol 2 · Stop supported`
15
+ label: `Daemon protocol 3 · Stop supported`
16
16
  } : {
17
17
  supported: false,
18
18
  label: `Daemon protocol ${protocol ?? "unknown"} · upgrade required`
@@ -22,7 +22,7 @@ function daemonStopSupport(protocol) {
22
22
  function lifecycleDisplay(detail) {
23
23
  const state = deriveLoopLifecycle(detail.summary);
24
24
  const running = detail.summary.runs.find((run) => run.running);
25
- if (running && detail.machine.daemonProtocol !== 2) return DAEMON_UPGRADE_REQUIRED;
25
+ if (running && detail.machine.daemonProtocol !== 3) return DAEMON_UPGRADE_REQUIRED;
26
26
  if (state === "stopping" && running && !detail.machine.online) return `Stopping · waiting for ${detail.machine.name || "machine"}`;
27
27
  switch (state) {
28
28
  case "deleting": return "Deleting";
@@ -0,0 +1,2 @@
1
+ import { kt as logger } from "./boot-DPoPmSLh.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-BfMnXaKT.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-7MTSs6hy.js
3
3
  var createSsrRpc = (functionId) => {
4
4
  const url = "/_serverFn/" + functionId;
5
5
  const serverFnMeta = { id: functionId };
@@ -86,9 +86,9 @@ var deleteJob = createServerFn({ method: "POST" }).validator((id) => id).handler
86
86
  createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("0cb2218861830aae4338b814b3819e15100942beab970bc4c188f88b8cb6bc7e"));
87
87
  var runJob = createServerFn({ method: "POST" }).validator((id) => id).handler(createSsrRpc("0c9031f2f6a9ac0b1c60075833169755ef1815324918d1426c966ac8db563798"));
88
88
  var evolveJob = createServerFn({ method: "POST" }).validator((id) => id).handler(createSsrRpc("8a11b8d76ad42203a4bf128db0b8e0f2d6c947300dbee7a51498418404f211cd"));
89
- /** Agent-First edit: durably queue an owner instruction. A pending edit is
90
- * updated in place; an edit already running gets one follow-up. */
91
- var requestEdit = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("1d8c66fa6397951aa72c16551c8fa41a019fce841a5759eb7d67496ef5e0b250"));
89
+ /** Agent-first steer: durably queue an owner instruction. A pending steer is
90
+ * updated in place; a steer already running gets one follow-up. */
91
+ var requestSteer = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("38b831a8de4883e3d877f2169eaebde5864a2f256b1c5c790fa669702968cff9"));
92
92
  /** Dedicated Stop-run operation. Pending work cancels immediately; running work
93
93
  * records intent and stays Running until the daemon reports its actual result. */
94
94
  var stopRun = createServerFn({ method: "POST" }).validator((id) => id).handler(createSsrRpc("6850ba403da9dec5aff45794eb52636ca540ddec2d9e59f5c75ccbb852bfeacb"));
@@ -102,4 +102,4 @@ var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId)
102
102
  /** Poll a claim while the New-loop dialog waits for Claude Code to create the loop. */
103
103
  var claimStatus = createServerFn({ method: "GET" }).validator((token) => token).handler(createSsrRpc("4b0db7d6c8f25383a3526598cb0c1881db6cf413e451e9478687c05666461347"));
104
104
  //#endregion
105
- export { stopJob as C, startJob as S, mintClaim as _, evolveJob as a, requestEdit 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 };
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 };
@@ -1,9 +1,9 @@
1
- import { B as forceDeleteLoop, Et as listRunsBefore, G as getChannel, Gt as requestRunCancel, I as ensureServer, It as normalizeProviderSetting, Lt as pauseLoop, Nt as machinePresence, Ot as listTeamsForUser, Q as getMachine, Wt as requestDeleteLoop, Xt as startLoop, Z as getLoop, Zt as stopLoop, _ as canEvolve, b as coerceUi, en as tryDeleteLoop, in as validateSchema, it as getTeamMember, ot as hasRunningRun, rt as getTeam, tn as updateLoop, tt as getRun, xt as listLoops, y as coerceCodingAgent } from "./boot-BNoivm21.mjs";
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";
2
2
  import { n as createServerFn } from "./ssr.mjs";
3
- import { i as toRunSummary, n as toJobDetail, r as toJobSummary } from "./adapters-CHURWoZx.mjs";
4
- import { canAccessLoop, requestScope } from "./auth-B_OxPpFr.mjs";
3
+ import { i as toRunSummary, n as toJobDetail, r as toJobSummary } from "./adapters-Bwuh6uek.mjs";
4
+ import { canAccessLoop, requestScope } from "./auth-uQ19WsD1.mjs";
5
5
  import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
6
- //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-Cpm8YV3U.js
6
+ //#region node_modules/.nitro/vite/services/ssr/assets/loopApi-BXRBFGWh.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-B_OxPpFr.mjs");
138
+ const { authEnabled } = await import("./auth-uQ19WsD1.mjs");
139
139
  return { enabled: authEnabled };
140
140
  });
141
141
  var getConfig_createServerFn_handler = createServerRpc({
@@ -244,7 +244,7 @@ var getArtifacts_createServerFn_handler = createServerRpc({
244
244
  var getArtifacts = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifacts_createServerFn_handler, async ({ data }) => {
245
245
  await backend();
246
246
  if (!await ownedLoop(data.loopId)) return [];
247
- const { listLoopArtifacts } = await import("./artifactFiles-D6b_RP78.mjs");
247
+ const { listLoopArtifacts } = await import("./artifactFiles-Cp1IBHne.mjs");
248
248
  return listLoopArtifacts(data.loopId);
249
249
  });
250
250
  var getArtifact_createServerFn_handler = createServerRpc({
@@ -255,7 +255,7 @@ var getArtifact_createServerFn_handler = createServerRpc({
255
255
  var getArtifact = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifact_createServerFn_handler, async ({ data }) => {
256
256
  await backend();
257
257
  if (!await ownedLoop(data.loopId)) return { error: "file not found" };
258
- const { readLoopArtifact } = await import("./artifactFiles-D6b_RP78.mjs");
258
+ const { readLoopArtifact } = await import("./artifactFiles-Cp1IBHne.mjs");
259
259
  return readLoopArtifact(data.loopId, data.path);
260
260
  });
261
261
  var getRunDiff_createServerFn_handler = createServerRpc({
@@ -274,7 +274,7 @@ var getRunDiff = createServerFn({ method: "GET" }).validator((d) => d).handler(g
274
274
  hasSnapshot: false,
275
275
  files: []
276
276
  };
277
- const { computeRunDiff } = await import("./runDiff-Bohd5W5R.mjs");
277
+ const { computeRunDiff } = await import("./runDiff-CDPvl_cY.mjs");
278
278
  return computeRunDiff(data.runId);
279
279
  });
280
280
  var listTemplates_createServerFn_handler = createServerRpc({
@@ -367,7 +367,7 @@ var stopJob = createServerFn({ method: "POST" }).validator((id) => id).handler(s
367
367
  const owned = await ownedLoop(id);
368
368
  if (!owned) return { error: "not found" };
369
369
  if (await hasRunningRun(id)) {
370
- if ((await getMachine(owned.loop.machineId))?.daemonProtocol !== 2) return { error: "Daemon upgrade required to stop a running process" };
370
+ if ((await getMachine(owned.loop.machineId))?.daemonProtocol !== 3) return { error: "Daemon upgrade required to stop a running process" };
371
371
  }
372
372
  const stopped = await stopLoop(id);
373
373
  if (!stopped) return { error: "not found" };
@@ -390,12 +390,12 @@ var deleteJob = createServerFn({ method: "POST" }).validator((id) => id).handler
390
390
  const unreachable = machinePresence(machine?.online, machine?.lastSeen) !== "online";
391
391
  const actor = await requestScope();
392
392
  const mayRetireAuthority = !owned.enforce || !!(actor.userId && owned.loop.teamId && (await getTeamMember(owned.loop.teamId, actor.userId))?.role === "owner");
393
- if (!unreachable && await hasRunningRun(id) && machine?.daemonProtocol !== 2) return { error: "Daemon upgrade required to stop a running process" };
393
+ if (!unreachable && await hasRunningRun(id) && machine?.daemonProtocol !== 3) return { error: "Daemon upgrade required to stop a running process" };
394
394
  scheduler.removeLoop(id);
395
395
  if (!await requestDeleteLoop(id)) return { error: "not found" };
396
396
  if (unreachable && mayRetireAuthority) {
397
397
  if (!await forceDeleteLoop(id)) return { error: "delete failed; server data was not deleted" };
398
- const { logger } = await import("./logger-DE_PU5bE.mjs");
398
+ const { logger } = await import("./logger-CR1a0flR.mjs");
399
399
  logger.child({ mod: "loop-lifecycle" }).warn({
400
400
  action: "unreachable-delete",
401
401
  loopId: id,
@@ -435,7 +435,7 @@ var forceDeleteJob = createServerFn({ method: "POST" }).validator((d) => d).hand
435
435
  }
436
436
  scheduler.removeLoop(data.id);
437
437
  if (!await forceDeleteLoop(data.id)) return { error: "force delete failed; server data was not deleted" };
438
- const { logger } = await import("./logger-DE_PU5bE.mjs");
438
+ const { logger } = await import("./logger-CR1a0flR.mjs");
439
439
  logger.child({ mod: "loop-lifecycle" }).warn({
440
440
  action: "force-delete",
441
441
  loopId: data.id,
@@ -483,17 +483,17 @@ var evolveJob = createServerFn({ method: "POST" }).validator((id) => id).handler
483
483
  coalesced: queued.state === "coalesced"
484
484
  };
485
485
  });
486
- var requestEdit_createServerFn_handler = createServerRpc({
487
- id: "1d8c66fa6397951aa72c16551c8fa41a019fce841a5759eb7d67496ef5e0b250",
488
- name: "requestEdit",
486
+ var requestSteer_createServerFn_handler = createServerRpc({
487
+ id: "38b831a8de4883e3d877f2169eaebde5864a2f256b1c5c790fa669702968cff9",
488
+ name: "requestSteer",
489
489
  filename: "src/server/loopApi.ts"
490
- }, (opts) => requestEdit.__executeServer(opts));
491
- var requestEdit = createServerFn({ method: "POST" }).validator((d) => d).handler(requestEdit_createServerFn_handler, async ({ data }) => {
490
+ }, (opts) => requestSteer.__executeServer(opts));
491
+ var requestSteer = createServerFn({ method: "POST" }).validator((d) => d).handler(requestSteer_createServerFn_handler, async ({ data }) => {
492
492
  const { scheduler } = await backend();
493
493
  if (!await ownedLoop(data.id)) return { error: "not found" };
494
- const instruction = data.instruction.trim();
495
- if (!instruction) return { error: "describe what to change" };
496
- const queued = await scheduler.requestEdit(data.id, instruction);
494
+ const instruction = validateSteerInstruction(data.instruction);
495
+ if (!instruction.ok) return { error: instruction.detail };
496
+ const queued = await scheduler.requestSteer(data.id, instruction.value);
497
497
  if (!("run" in queued)) return { error: queued.reason };
498
498
  return {
499
499
  ok: true,
@@ -512,7 +512,7 @@ var stopRun = createServerFn({ method: "POST" }).validator((id) => id).handler(s
512
512
  const run = await getRun(id);
513
513
  const owned = run ? await ownedLoop(run.loopId) : void 0;
514
514
  if (!run || !owned) return { error: "run not found" };
515
- if (run.phase === "running" && (await getMachine(owned.loop.machineId))?.daemonProtocol !== 2) return { error: "Daemon upgrade required to stop a running process" };
515
+ if (run.phase === "running" && (await getMachine(owned.loop.machineId))?.daemonProtocol !== 3) return { error: "Daemon upgrade required to stop a running process" };
516
516
  const result = await requestRunCancel(run.loopId, id);
517
517
  return result ? {
518
518
  ok: true,
@@ -526,7 +526,7 @@ var mintClaim_createServerFn_handler = createServerRpc({
526
526
  }, (opts) => mintClaim.__executeServer(opts));
527
527
  var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId).handler(mintClaim_createServerFn_handler, async ({ data: teamId }) => {
528
528
  await backend();
529
- const { mintDeviceToken, rememberConnectKey } = await import("./tokens-oJm6yFyt.mjs");
529
+ const { mintDeviceToken, rememberConnectKey } = await import("./tokens-7KEKpLnu.mjs");
530
530
  const { userId, teamId: active } = await requestScope(teamId);
531
531
  const owner = userId ?? "shared";
532
532
  const token = mintDeviceToken();
@@ -551,4 +551,4 @@ var claimStatus = createServerFn({ method: "GET" }).validator((token) => token).
551
551
  } : { done: false };
552
552
  });
553
553
  //#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, requestEdit_createServerFn_handler, runJob_createServerFn_handler, startJob_createServerFn_handler, stopJob_createServerFn_handler, stopRun_createServerFn_handler };
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 };
@@ -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-BfMnXaKT.mjs";
3
- import { a as authClient } from "./LoopPlaybook-CnQ8Qgyf.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/loops._loopId-C-y4Pux_.js
5
- var $$splitComponentImporter = () => import("./loops._loopId-DfrHw2mZ.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");
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