@kky42/pievo-server 2.2.0 → 2.4.1
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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/MachinesModal-CEddj7la.js +1 -0
- package/.output/public/assets/SignIn-BdkKWOSs.js +1 -0
- package/.output/public/assets/actionUi-BYBeYy7U.js +1 -0
- package/.output/public/assets/app-BAgHQVvr.css +2 -0
- package/.output/public/assets/index-BZLqD3JI.js +12 -0
- package/.output/public/assets/invite._token-BCLgmTO7.js +1 -0
- package/.output/public/assets/invite._token-ZnVQqqq4.js +1 -0
- package/.output/public/assets/lifecycleUi-C7dwHtbw.js +1 -0
- package/.output/public/assets/loops._loopId-X8PSlgdB.js +67 -0
- package/.output/public/assets/loops._loopId_.runs._runId-CA0-q1y5.js +3 -0
- package/.output/public/assets/preload-helper-CUIO87nJ.js +5 -0
- package/.output/public/assets/routes-BjKcDy6D.js +1 -0
- package/.output/public/assets/routes-bfMcArTT.js +1 -0
- package/.output/public/assets/t._teamId-B75J8h0x.js +1 -0
- package/.output/public/assets/t._teamId-D7WVPMDr.js +1 -0
- package/.output/public/assets/ui-DGOT8AoZ.js +1 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +4130 -4130
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
- package/.output/server/_libs/drizzle-orm+postgres.mjs +28 -1
- package/.output/server/_ssr/DashboardView-D_hKsCsv.mjs +1098 -0
- package/.output/server/_ssr/{notifyFns-DXMbgYu2.mjs → MachinesModal-DZ_9ErAU.mjs} +57 -35
- package/.output/server/_ssr/{SignIn-C4fSJl_j.mjs → SignIn-DjSrg0nO.mjs} +10 -24
- package/.output/server/_ssr/SocialLinks-BTjsnVOm.mjs +1051 -0
- package/.output/server/_ssr/{actionUi-BKF6xI3d.mjs → actionUi-D15R8L7R.mjs} +3 -3
- package/.output/server/_ssr/{artifactFiles-C8PQKN6V.mjs → artifactFiles-CV3OXxRD.mjs} +7 -8
- package/.output/server/_ssr/{artifactKind-BW0isV8L.mjs → artifactKind-ByzVa7fg.mjs} +27 -2
- package/.output/server/_ssr/artifacts-BhQvaGjF.mjs +2 -0
- package/.output/server/_ssr/{auth-Sie6sQHF.mjs → auth-CPCDf6Wr.mjs} +16 -19
- package/.output/server/_ssr/{boot-akwC2sQg.mjs → boot-BbWxaF-z.mjs} +1359 -3843
- package/.output/server/_ssr/boot-COHf8Gv3.mjs +2 -0
- package/.output/server/_ssr/{bun-sqlite-dialect-BW9W1_Ps-CLY8cORt.mjs → bun-sqlite-dialect-BW9W1_Ps-8MIh9jN1.mjs} +2 -2
- package/.output/server/_ssr/{d1-sqlite-dialect-BLC8LXE6-CRsXQNRe.mjs → d1-sqlite-dialect-BLC8LXE6-CcMQ01_d.mjs} +2 -2
- package/.output/server/_ssr/db-dw61xIt1.mjs +2 -0
- package/.output/server/_ssr/{dist-Cc_x6bBb.mjs → dist-AxCsRawm.mjs} +2 -2
- package/.output/server/_ssr/{factory-CDwHL_zY.mjs → factory-S7MaMVC2.mjs} +2 -2
- package/.output/server/_ssr/{invite._token-BlbVjz-o.mjs → invite._token-B1UgMbNQ.mjs} +3 -3
- package/.output/server/_ssr/{invite._token-BE_QUAVb.mjs → invite._token-BliJIGk4.mjs} +4 -5
- package/.output/server/_ssr/{invite._token-C7GjrJxr.mjs → invite._token-D296YVGd.mjs} +7 -7
- package/.output/server/_ssr/{kysely-adapter-zflsyYBA.mjs → kysely-adapter-DUdpqcCJ.mjs} +1 -1
- package/.output/server/_ssr/{lifecycleUi-Djb44Aj3.mjs → lifecycleUi-Dad3hvhm.mjs} +12 -11
- package/.output/server/_ssr/logger-DdUWuMdh.mjs +2 -0
- package/.output/server/_ssr/loopApi-Dy8ztANM.mjs +389 -0
- package/.output/server/_ssr/loopProjection-BZ1_IYCr.mjs +110 -0
- package/.output/server/_ssr/loops._loopId-CKsAnxMl.mjs +1255 -0
- package/.output/server/_ssr/{loops._loopId_.runs._runId-rBHW41dx.mjs → loops._loopId_.runs._runId-DG405pQs.mjs} +29 -74
- package/.output/server/_ssr/{loops._loopId_.runs._runId-Dk1QY49p.mjs → loops._loopId_.runs._runId-a_SyY8rX.mjs} +4 -5
- package/.output/server/_ssr/{machineFns-CoqLRLRh.mjs → machineFns-BSaE7K88.mjs} +3 -5
- package/.output/server/_ssr/{node-sqlite-dialect-dmrazfbM.mjs → node-sqlite-dialect-rWwVyt2J.mjs} +2 -2
- package/.output/server/_ssr/router-lMkobh5r.mjs +618 -0
- package/.output/server/_ssr/{routes-DebVUmCS.mjs → routes-CRHc9cLG.mjs} +6 -10
- package/.output/server/_ssr/{routes-Bx0bRxt9.mjs → routes-DNCZrs8z.mjs} +3 -3
- package/.output/server/_ssr/{routes-dQCBLTxY.mjs → routes-ufPbrGHs.mjs} +6 -6
- package/.output/server/_ssr/runDiff-CrZzjokj.mjs +2 -0
- package/.output/server/_ssr/ssr.mjs +65 -97
- package/.output/server/_ssr/store-CirPHuib.mjs +2 -0
- package/.output/server/_ssr/{t._teamId-BqOUF-0J.mjs → t._teamId-BoBoYEHL.mjs} +7 -7
- package/.output/server/_ssr/{t._teamId-D9nCEa2h.mjs → t._teamId-DcWOYjPf.mjs} +4 -4
- package/.output/server/_ssr/{t._teamId-BzWy4Ft2.mjs → t._teamId-QD2nN0wn.mjs} +7 -11
- package/.output/server/_ssr/{teamFns-BcnGMC-g.mjs → teamFns-BsmconJ1.mjs} +4 -4
- package/.output/server/_ssr/{teamFns-bm82twd5.mjs → teamFns-DcoVuWyH.mjs} +2 -2
- package/.output/server/_ssr/tokens-XngoyCU8.mjs +2 -0
- package/.output/server/_ssr/{ui-B6mE5-5v.mjs → ui-DmFKW2H_.mjs} +33 -47
- package/.output/server/{_tanstack-start-manifest_v-COr27bxK.mjs → _tanstack-start-manifest_v-Xd5bMpJe.mjs} +25 -33
- package/.output/server/drizzle/{0000_round_marauders.sql → 0000_baseline.sql} +102 -44
- package/.output/server/drizzle/meta/_journal.json +3 -115
- package/.output/server/index.mjs +82 -131
- package/drizzle/{0000_round_marauders.sql → 0000_baseline.sql} +102 -44
- package/drizzle/meta/_journal.json +3 -115
- package/package.json +2 -10
- package/scripts/pievo-server.mjs +3 -1
- package/scripts/server-cli-lib.mjs +23 -16
- package/.output/public/assets/CodeField-dOzyFQNH.js +0 -34
- package/.output/public/assets/LoopView-BTXoqfzM.js +0 -59
- package/.output/public/assets/Modal-Ba36NAkv.js +0 -1
- package/.output/public/assets/SignIn-Cc1zxGnA.js +0 -1
- package/.output/public/assets/actionUi-DDDfD0WX.js +0 -1
- package/.output/public/assets/app-D1cij_NJ.css +0 -2
- package/.output/public/assets/artifactView-Cd5wWPil.js +0 -66
- package/.output/public/assets/index-BGM1XGY0.js +0 -12
- package/.output/public/assets/invite._token-C3t4JfAY.js +0 -1
- package/.output/public/assets/invite._token-CUCNcN89.js +0 -1
- package/.output/public/assets/jsx-runtime-BseJUIpC.js +0 -1
- package/.output/public/assets/lifecycleUi-CMFw5Nlj.js +0 -1
- package/.output/public/assets/loopApi-CT1mMhlb.js +0 -3
- package/.output/public/assets/loops._loopId-CrSSvSVl.js +0 -4
- package/.output/public/assets/loops._loopId_.runs._runId-B5Qacloe.js +0 -3
- package/.output/public/assets/notifyFns-CYiZT7CK.js +0 -1
- package/.output/public/assets/preload-helper-DFkkpP6W.js +0 -3
- package/.output/public/assets/routes-B6Kg4mFC.js +0 -1
- package/.output/public/assets/routes-DsdcURfk.js +0 -1
- package/.output/public/assets/t._teamId-C9uEyAh_.js +0 -1
- package/.output/public/assets/t._teamId-Cmm4xdKj.js +0 -1
- package/.output/public/assets/ui-Gb1413-F.js +0 -1
- package/.output/public/assets/useRouter-DsjH8G0p.js +0 -1
- package/.output/server/_libs/@codemirror/autocomplete+[...].mjs +0 -19713
- package/.output/server/_libs/@codemirror/lang-css+[...].mjs +0 -2636
- package/.output/server/_libs/@codemirror/lang-html+[...].mjs +0 -2247
- package/.output/server/_libs/@codemirror/lang-json+[...].mjs +0 -79
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +0 -1736
- package/.output/server/_libs/@uiw/codemirror-extensions-basic-setup+[...].mjs +0 -76
- package/.output/server/_libs/babel__runtime.mjs +0 -30
- package/.output/server/_libs/clsx.mjs +0 -16
- package/.output/server/_libs/codemirror__commands.mjs +0 -1725
- package/.output/server/_libs/codemirror__lint.mjs +0 -565
- package/.output/server/_libs/codemirror__search.mjs +0 -1138
- package/.output/server/_libs/codemirror__theme-one-dark.mjs +0 -161
- package/.output/server/_libs/d3-array.mjs +0 -231
- package/.output/server/_libs/d3-color.mjs +0 -330
- package/.output/server/_libs/d3-format.mjs +0 -252
- package/.output/server/_libs/d3-interpolate.mjs +0 -163
- package/.output/server/_libs/d3-path.mjs +0 -77
- package/.output/server/_libs/d3-scale+[...].mjs +0 -1907
- package/.output/server/_libs/d3-shape.mjs +0 -818
- package/.output/server/_libs/decimal.js-light.mjs +0 -884
- package/.output/server/_libs/dom-serializer+[...].mjs +0 -708
- package/.output/server/_libs/domhandler.mjs +0 -461
- package/.output/server/_libs/domutils.mjs +0 -868
- package/.output/server/_libs/es-toolkit.mjs +0 -1737
- package/.output/server/_libs/eventemitter3.mjs +0 -236
- package/.output/server/_libs/html-dom-parser+htmlparser2.mjs +0 -1560
- package/.output/server/_libs/html-react-parser+[...].mjs +0 -1360
- package/.output/server/_libs/react-is.mjs +0 -48
- package/.output/server/_libs/react-redux+[...].mjs +0 -205
- package/.output/server/_libs/recharts+victory-vendor.mjs +0 -17303
- package/.output/server/_libs/uiw__codemirror-themes.mjs +0 -32
- package/.output/server/_libs/uiw__react-codemirror.mjs +0 -354
- package/.output/server/_ssr/CodeField-B7oOmmwH.mjs +0 -143
- package/.output/server/_ssr/DashboardView-0yoKh8Em.mjs +0 -2733
- package/.output/server/_ssr/LoopPlaybook-uq_sFfgU.mjs +0 -2105
- package/.output/server/_ssr/LoopView-BlOY-jfJ.mjs +0 -1300
- package/.output/server/_ssr/Modal-Bc_5TYGr.mjs +0 -49
- package/.output/server/_ssr/adapters-RReIIwAx.mjs +0 -134
- package/.output/server/_ssr/artifactView-iuPsp5aa.mjs +0 -304
- package/.output/server/_ssr/artifacts-B_F6vSih.mjs +0 -2
- package/.output/server/_ssr/boot-pVS0wjd0.mjs +0 -2
- package/.output/server/_ssr/db-Bdm9PFZF.mjs +0 -2
- package/.output/server/_ssr/logger-tfiliKTi.mjs +0 -2
- package/.output/server/_ssr/loopApi-8_KgBapr.mjs +0 -109
- package/.output/server/_ssr/loopApi-JzmqWENY.mjs +0 -564
- package/.output/server/_ssr/loops._loopId-D-aCCtrX.mjs +0 -1477
- package/.output/server/_ssr/loops._loopId-DZ-FjscA.mjs +0 -30
- package/.output/server/_ssr/notifyFns-CH7-bcmd.mjs +0 -118
- package/.output/server/_ssr/router-BFPzSTFx.mjs +0 -679
- package/.output/server/_ssr/runDiff-qA1C8R_L.mjs +0 -2
- package/.output/server/_ssr/store-DWUdkIq2.mjs +0 -2
- package/.output/server/_ssr/tokens-DG8z1GIg.mjs +0 -2
- package/.output/server/drizzle/0001_naive_silver_fox.sql +0 -25
- package/.output/server/drizzle/0002_funny_sage.sql +0 -12
- package/.output/server/drizzle/0003_optimal_slapstick.sql +0 -102
- package/.output/server/drizzle/0004_remove_grok_agent.sql +0 -5
- package/.output/server/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/.output/server/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/.output/server/drizzle/0007_faulty_starbolt.sql +0 -30
- package/.output/server/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/.output/server/drizzle/0009_ordinary_electro.sql +0 -1
- package/.output/server/drizzle/0010_workable_rage.sql +0 -14
- package/.output/server/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/.output/server/drizzle/0012_blocked_run_status.sql +0 -12
- package/.output/server/drizzle/0013_drop_run_outcome.sql +0 -2
- package/.output/server/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/.output/server/drizzle/0015_run_history_foundation.sql +0 -43
- package/.output/server/drizzle/0016_plural_machine_runs.sql +0 -4
- package/.output/server/drizzle/meta/0000_snapshot.json +0 -1333
- package/.output/server/drizzle/meta/0001_snapshot.json +0 -1498
- package/.output/server/drizzle/meta/0002_snapshot.json +0 -1576
- package/.output/server/drizzle/meta/0003_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0005_snapshot.json +0 -1666
- package/.output/server/drizzle/meta/0006_snapshot.json +0 -1672
- package/.output/server/drizzle/meta/0007_snapshot.json +0 -1787
- package/.output/server/drizzle/meta/0009_snapshot.json +0 -1793
- package/.output/server/drizzle/meta/0010_snapshot.json +0 -1891
- package/.output/server/drizzle/meta/0011_snapshot.json +0 -1872
- package/drizzle/0001_naive_silver_fox.sql +0 -25
- package/drizzle/0002_funny_sage.sql +0 -12
- package/drizzle/0003_optimal_slapstick.sql +0 -102
- package/drizzle/0004_remove_grok_agent.sql +0 -5
- package/drizzle/0005_heavy_gauntlet.sql +0 -8
- package/drizzle/0006_tranquil_sharon_carter.sql +0 -1
- package/drizzle/0007_faulty_starbolt.sql +0 -30
- package/drizzle/0008_durable_lifecycle_evidence.sql +0 -15
- package/drizzle/0009_ordinary_electro.sql +0 -1
- package/drizzle/0010_workable_rage.sql +0 -14
- package/drizzle/0011_steep_marvel_zombies.sql +0 -3
- package/drizzle/0012_blocked_run_status.sql +0 -12
- package/drizzle/0013_drop_run_outcome.sql +0 -2
- package/drizzle/0014_luxuriant_scrambler.sql +0 -5
- package/drizzle/0015_run_history_foundation.sql +0 -43
- package/drizzle/0016_plural_machine_runs.sql +0 -4
- package/drizzle/meta/0000_snapshot.json +0 -1333
- package/drizzle/meta/0001_snapshot.json +0 -1498
- package/drizzle/meta/0002_snapshot.json +0 -1576
- package/drizzle/meta/0003_snapshot.json +0 -1666
- package/drizzle/meta/0005_snapshot.json +0 -1666
- package/drizzle/meta/0006_snapshot.json +0 -1672
- package/drizzle/meta/0007_snapshot.json +0 -1787
- package/drizzle/meta/0009_snapshot.json +0 -1793
- package/drizzle/meta/0010_snapshot.json +0 -1891
- package/drizzle/meta/0011_snapshot.json +0 -1872
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-
|
|
1
|
+
import { n as DefaultQueryCompiler, o as CompiledQuery, s as sql$1 } from "./auth-CPCDf6Wr.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-
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/bun-sqlite-dialect-BW9W1_Ps-8MIh9jN1.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-
|
|
1
|
+
import { a as SqliteQueryCompiler, i as SqliteAdapter } from "./auth-CPCDf6Wr.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-
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/d1-sqlite-dialect-BLC8LXE6-CcMQ01_d.js
|
|
4
4
|
var D1SqliteAdapter = class extends SqliteAdapter {};
|
|
5
5
|
var D1SqliteDriver = class {
|
|
6
6
|
#config;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as logger, o as createAdapterFactory } from "./factory-
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/dist-
|
|
1
|
+
import { _ as logger, o as createAdapterFactory } from "./factory-S7MaMVC2.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/dist-AxCsRawm.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 {
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/factory-
|
|
1
|
+
import { M as env, a as BetterAuthError, z as getEnvVar } from "./boot-BbWxaF-z.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/factory-S7MaMVC2.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
|
-
import {
|
|
1
|
+
import { h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
|
+
import { r as LoadErrorCard } from "./actionUi-D15R8L7R.mjs";
|
|
2
3
|
import { f as useRouter } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
3
|
-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/invite._token-BlbVjz-o.js
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/invite._token-B1UgMbNQ.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,9 +1,8 @@
|
|
|
1
1
|
import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var $$
|
|
6
|
-
var $$splitComponentImporter = () => import("./invite._token-C7GjrJxr.mjs");
|
|
2
|
+
import { d as getAuthState, i as authClient } from "./SocialLinks-BTjsnVOm.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/invite._token-BliJIGk4.js
|
|
4
|
+
var $$splitErrorComponentImporter = () => import("./invite._token-B1UgMbNQ.mjs");
|
|
5
|
+
var $$splitComponentImporter = () => import("./invite._token-D296YVGd.mjs");
|
|
7
6
|
/**
|
|
8
7
|
* Invite-link redeem (`/invite/<token>`, design §4 option B). The recipient opens
|
|
9
8
|
* the link the owner shared; if signed out (under the gate) they hit the normal
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { o as __toESM } from "../_runtime.mjs";
|
|
2
|
-
import { g as
|
|
3
|
-
import {
|
|
2
|
+
import { g as require_react, h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
+
import { s as btnPrimary } from "./ui-DmFKW2H_.mjs";
|
|
4
4
|
import { d as useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { D as useSession, r as PievoLogo } from "./SocialLinks-BTjsnVOm.mjs";
|
|
6
6
|
import { t as setActiveTeamCookie } from "./teamCookie-B7hLOIie.mjs";
|
|
7
|
-
import { c as redeemTeamInvite } from "./teamFns-
|
|
8
|
-
import { t as Route } from "./invite._token-
|
|
9
|
-
import { t as SignIn } from "./SignIn-
|
|
10
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/invite._token-
|
|
7
|
+
import { c as redeemTeamInvite } from "./teamFns-DcoVuWyH.mjs";
|
|
8
|
+
import { t as Route } from "./invite._token-BliJIGk4.mjs";
|
|
9
|
+
import { t as SignIn } from "./SignIn-DjSrg0nO.mjs";
|
|
10
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/invite._token-D296YVGd.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-
|
|
1
|
+
import { r as kyselyAdapter, t as createKyselyAdapter } from "./auth-CPCDf6Wr.mjs";
|
|
2
2
|
export { createKyselyAdapter, kyselyAdapter };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/lifecycleUi-Dad3hvhm.js
|
|
2
2
|
var DAEMON_UPGRADE_REQUIRED = "Daemon upgrade required to stop a running process. Run `npm install -g @kky42/pievo@latest`, then `pievo daemon restart`.";
|
|
3
3
|
/** Derive product lifecycle state only from durable server facts. */
|
|
4
|
-
function deriveLoopLifecycle(
|
|
5
|
-
if (
|
|
6
|
-
const running =
|
|
7
|
-
if (!
|
|
8
|
-
if (!
|
|
9
|
-
if (!
|
|
4
|
+
function deriveLoopLifecycle(loop) {
|
|
5
|
+
if (loop.deleteRequestedAt != null) return "deleting";
|
|
6
|
+
const running = loop.runs.find((run) => run.phase === "running");
|
|
7
|
+
if (!loop.enabled && running?.cancelRequested) return "stopping";
|
|
8
|
+
if (!loop.enabled && (loop.running || running)) return "paused-finishing";
|
|
9
|
+
if (!loop.enabled) return "paused";
|
|
10
10
|
return "active";
|
|
11
11
|
}
|
|
12
12
|
function daemonStopSupport(protocol) {
|
|
13
|
-
return protocol ===
|
|
13
|
+
return protocol === 4 ? {
|
|
14
14
|
supported: true,
|
|
15
|
-
label: `Daemon protocol
|
|
15
|
+
label: `Daemon protocol 4 · Stop supported`
|
|
16
16
|
} : {
|
|
17
17
|
supported: false,
|
|
18
18
|
label: `Daemon protocol ${protocol ?? "unknown"} · upgrade required`
|
|
@@ -21,8 +21,9 @@ 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
|
-
|
|
25
|
-
|
|
24
|
+
if (detail.summary.queued && detail.summary.reconciliationBlocking) return detail.machine.presence === "online" ? "Queued · machine is checking an interrupted run" : "Queued · waiting for machine recovery";
|
|
25
|
+
const running = detail.summary.runs.find((run) => run.phase === "running");
|
|
26
|
+
if (running && detail.machine.daemonProtocol !== 4) return DAEMON_UPGRADE_REQUIRED;
|
|
26
27
|
if (state === "stopping" && running && !detail.machine.online) return `Stopping · waiting for ${detail.machine.name || "machine"}`;
|
|
27
28
|
switch (state) {
|
|
28
29
|
case "deleting": return "Deleting";
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { A as ensureServer, Bt as startLoop$1, Gt as tryDeleteLoop, Ht as stopLoop$1, J as getTeam, Kt as updateLoop, N as forceDeleteLoop$1, Nt as requestDeleteLoop, Pt as requestRunCancel, Tt as pauseLoop$1, U as getLoop, W as getMachine, Xt as validateLoopEdit, Y as getTeamMember, Z as hasRunningRun, gt as listTeamsForUser, lt as listLoops$1, mt as listRunsBefore, q as getRun, xt as machinePresence } from "./boot-BbWxaF-z.mjs";
|
|
2
|
+
import { i as toRunSummaries, n as toLoopDetail, r as toLoopSummary } from "./loopProjection-BZ1_IYCr.mjs";
|
|
3
|
+
import { canAccessLoop, requestScope } from "./auth-CPCDf6Wr.mjs";
|
|
4
|
+
import { n as createServerFn } from "./ssr.mjs";
|
|
5
|
+
import { t as createServerRpc } from "./createServerRpc-BD8Xn_0_.mjs";
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/loopApi-Dy8ztANM.js
|
|
7
|
+
/**
|
|
8
|
+
* Server functions backing the dashboard. They run server-side (createServerFn
|
|
9
|
+
* → RPC) and call the IN-PROCESS scheduler + store directly — the scheduler
|
|
10
|
+
* lives in this same TanStack process (booted on first call via ensureServer).
|
|
11
|
+
* The machine-facing poll, CLI, report, and artifact-sync endpoints are sibling
|
|
12
|
+
* server routes in this same process, so one process owns the single scheduler.
|
|
13
|
+
*
|
|
14
|
+
* Reads and writes are scoped through requestScope/ownedLoop so users only see
|
|
15
|
+
* teams and loops their current session is authorized to access.
|
|
16
|
+
*/
|
|
17
|
+
function backend() {
|
|
18
|
+
return ensureServer();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve a loop and authorize the request against its owner. Returns the loop,
|
|
22
|
+
* or undefined when it's missing OR (gate on) owned by a different user — callers
|
|
23
|
+
* treat both as "not found" so existence never leaks across users.
|
|
24
|
+
*/
|
|
25
|
+
async function ownedLoop(id) {
|
|
26
|
+
const loop = await getLoop(id);
|
|
27
|
+
if (!loop) return void 0;
|
|
28
|
+
const scope = await requestScope();
|
|
29
|
+
if (!await canAccessLoop(loop.teamId, scope)) return void 0;
|
|
30
|
+
return {
|
|
31
|
+
loop,
|
|
32
|
+
enforce: scope.enforce,
|
|
33
|
+
teamId: scope.teamId
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Whether the auth gate is active (a GitHub OAuth app is configured). */
|
|
37
|
+
var getAuthState_createServerFn_handler = createServerRpc({
|
|
38
|
+
id: "b8119d5fe6ca1ed9f609702aa2133b5ac5337030c0bdcf92dc7eba889d6bd2e6",
|
|
39
|
+
name: "getAuthState",
|
|
40
|
+
filename: "src/server/loopApi.ts"
|
|
41
|
+
}, (opts) => getAuthState.__executeServer(opts));
|
|
42
|
+
var getAuthState = createServerFn({ method: "GET" }).handler(getAuthState_createServerFn_handler, async () => {
|
|
43
|
+
const { authEnabled } = await import("./auth-CPCDf6Wr.mjs");
|
|
44
|
+
return { enabled: authEnabled };
|
|
45
|
+
});
|
|
46
|
+
var getConfig_createServerFn_handler = createServerRpc({
|
|
47
|
+
id: "cbb6a1b09b309459bbba3dc3851ae85fc468658b3cda77e22b6c6f3e28b65af4",
|
|
48
|
+
name: "getConfig",
|
|
49
|
+
filename: "src/server/loopApi.ts"
|
|
50
|
+
}, (opts) => getConfig.__executeServer(opts));
|
|
51
|
+
var getConfig = createServerFn({ method: "GET" }).handler(getConfig_createServerFn_handler, () => {
|
|
52
|
+
const custom = process.env.PIEVO_CLI?.trim();
|
|
53
|
+
return {
|
|
54
|
+
pievoCli: custom || "pievo",
|
|
55
|
+
/** True when a non-default (dev) CLI is configured — the New-loop paste then
|
|
56
|
+
* carries an explicit `pievo-cli:` line so Claude Code uses it verbatim. */
|
|
57
|
+
customCli: !!custom
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
var listMyTeams_createServerFn_handler = createServerRpc({
|
|
61
|
+
id: "0fe12e769203c42f432a927b9cbf13a967a0f9db567b61843598f734afb4f5c6",
|
|
62
|
+
name: "listMyTeams",
|
|
63
|
+
filename: "src/server/loopApi.ts"
|
|
64
|
+
}, (opts) => listMyTeams.__executeServer(opts));
|
|
65
|
+
var listMyTeams = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(listMyTeams_createServerFn_handler, async ({ data: teamId }) => {
|
|
66
|
+
await backend();
|
|
67
|
+
const { enforce, userId, teamId: active } = await requestScope(teamId);
|
|
68
|
+
if (!enforce || !userId) return {
|
|
69
|
+
teams: [],
|
|
70
|
+
activeTeamId: active
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
teams: (await listTeamsForUser(userId)).map((t) => ({
|
|
74
|
+
id: t.id,
|
|
75
|
+
name: t.name
|
|
76
|
+
})),
|
|
77
|
+
activeTeamId: active
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
var canViewTeam_createServerFn_handler = createServerRpc({
|
|
81
|
+
id: "7cc22b3a0f6b1c4c73463c3401e981ad42caf6487b479b738ee5aeacb11710da",
|
|
82
|
+
name: "canViewTeam",
|
|
83
|
+
filename: "src/server/loopApi.ts"
|
|
84
|
+
}, (opts) => canViewTeam.__executeServer(opts));
|
|
85
|
+
var canViewTeam = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(canViewTeam_createServerFn_handler, async ({ data: teamId }) => {
|
|
86
|
+
await backend();
|
|
87
|
+
const scope = await requestScope(teamId);
|
|
88
|
+
if (!scope.enforce) return true;
|
|
89
|
+
if (!scope.userId) return false;
|
|
90
|
+
return scope.teamId === teamId;
|
|
91
|
+
});
|
|
92
|
+
var getDefaultTeam_createServerFn_handler = createServerRpc({
|
|
93
|
+
id: "dc0ec955d0d53a150a3e9a4673f98f3509cfb4bd411c512079ae4e94c561b70c",
|
|
94
|
+
name: "getDefaultTeam",
|
|
95
|
+
filename: "src/server/loopApi.ts"
|
|
96
|
+
}, (opts) => getDefaultTeam.__executeServer(opts));
|
|
97
|
+
var getDefaultTeam = createServerFn({ method: "GET" }).handler(getDefaultTeam_createServerFn_handler, async () => {
|
|
98
|
+
await backend();
|
|
99
|
+
return (await requestScope()).teamId;
|
|
100
|
+
});
|
|
101
|
+
var listLoops_createServerFn_handler = createServerRpc({
|
|
102
|
+
id: "23e290b2b7483ceea6fe669024c35b12c2c4ddd76649f6fab21c958ceda02940",
|
|
103
|
+
name: "listLoops",
|
|
104
|
+
filename: "src/server/loopApi.ts"
|
|
105
|
+
}, (opts) => listLoops.__executeServer(opts));
|
|
106
|
+
var listLoops = createServerFn({ method: "GET" }).validator((teamId) => teamId).handler(listLoops_createServerFn_handler, async ({ data: teamId }) => {
|
|
107
|
+
await backend();
|
|
108
|
+
const { enforce, userId, teamId: active } = await requestScope(teamId);
|
|
109
|
+
if (enforce && !userId) return [];
|
|
110
|
+
const loops = (await listLoops$1(enforce ? active : void 0)).sort((a, b) => a.createdAt < b.createdAt ? 1 : -1);
|
|
111
|
+
return await Promise.all(loops.map(toLoopSummary));
|
|
112
|
+
});
|
|
113
|
+
var getLoopDetail_createServerFn_handler = createServerRpc({
|
|
114
|
+
id: "b050455aacc84dd2a2c9a45517826ad10f91d8f1545e87cc7015784cc7116a97",
|
|
115
|
+
name: "getLoopDetail",
|
|
116
|
+
filename: "src/server/loopApi.ts"
|
|
117
|
+
}, (opts) => getLoopDetail.__executeServer(opts));
|
|
118
|
+
var getLoopDetail = createServerFn({ method: "GET" }).validator((id) => id).handler(getLoopDetail_createServerFn_handler, async ({ data: id }) => {
|
|
119
|
+
await backend();
|
|
120
|
+
const owned = await ownedLoop(id);
|
|
121
|
+
if (!owned) throw new Error("This loop does not exist, or you do not have access to it.");
|
|
122
|
+
const detail = await toLoopDetail(owned.loop);
|
|
123
|
+
if (owned.enforce) {
|
|
124
|
+
const team = await getTeam(owned.loop.teamId);
|
|
125
|
+
if (!team) throw new Error(`invariant: loop ${owned.loop.id} references missing team ${owned.loop.teamId}`);
|
|
126
|
+
detail.team = {
|
|
127
|
+
id: owned.loop.teamId,
|
|
128
|
+
name: team.name,
|
|
129
|
+
isActive: owned.loop.teamId === owned.teamId
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return detail;
|
|
133
|
+
});
|
|
134
|
+
var loadOlderRuns_createServerFn_handler = createServerRpc({
|
|
135
|
+
id: "85fdf73d4fee43aed762f93c5d47d33200fbff39e2d082647dc921f610d32698",
|
|
136
|
+
name: "loadOlderRuns",
|
|
137
|
+
filename: "src/server/loopApi.ts"
|
|
138
|
+
}, (opts) => loadOlderRuns.__executeServer(opts));
|
|
139
|
+
var loadOlderRuns = createServerFn({ method: "GET" }).validator((d) => d).handler(loadOlderRuns_createServerFn_handler, async ({ data }) => {
|
|
140
|
+
await backend();
|
|
141
|
+
if (!await ownedLoop(data.loopId)) return [];
|
|
142
|
+
const limit = Math.min(Math.max(data.limit ?? 16, 1), 100);
|
|
143
|
+
return toRunSummaries(data.loopId, await listRunsBefore(data.loopId, data.beforeTs, limit));
|
|
144
|
+
});
|
|
145
|
+
var getArtifacts_createServerFn_handler = createServerRpc({
|
|
146
|
+
id: "b18bbec3d06dfc77714e1e527dfb9172fd7575a64a6c0d6e73ba6dc658dccf0d",
|
|
147
|
+
name: "getArtifacts",
|
|
148
|
+
filename: "src/server/loopApi.ts"
|
|
149
|
+
}, (opts) => getArtifacts.__executeServer(opts));
|
|
150
|
+
var getArtifacts = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifacts_createServerFn_handler, async ({ data }) => {
|
|
151
|
+
await backend();
|
|
152
|
+
if (!await ownedLoop(data.loopId)) return [];
|
|
153
|
+
const { listLoopArtifacts } = await import("./artifactFiles-CV3OXxRD.mjs");
|
|
154
|
+
return listLoopArtifacts(data.loopId);
|
|
155
|
+
});
|
|
156
|
+
var getArtifact_createServerFn_handler = createServerRpc({
|
|
157
|
+
id: "ed10d5fe79208e5e0e4e18e4a17b18d7f7db4dd16204c00c3ac90c4644668841",
|
|
158
|
+
name: "getArtifact",
|
|
159
|
+
filename: "src/server/loopApi.ts"
|
|
160
|
+
}, (opts) => getArtifact.__executeServer(opts));
|
|
161
|
+
var getArtifact = createServerFn({ method: "GET" }).validator((d) => d).handler(getArtifact_createServerFn_handler, async ({ data }) => {
|
|
162
|
+
await backend();
|
|
163
|
+
if (!await ownedLoop(data.loopId)) return { error: "file not found" };
|
|
164
|
+
const { readLoopArtifact } = await import("./artifactFiles-CV3OXxRD.mjs");
|
|
165
|
+
return readLoopArtifact(data.loopId, data.path);
|
|
166
|
+
});
|
|
167
|
+
var getRunDiff_createServerFn_handler = createServerRpc({
|
|
168
|
+
id: "08c28b892712a1b491b120b74c7dcb81761988d31ccea60216d1807b73c1182c",
|
|
169
|
+
name: "getRunDiff",
|
|
170
|
+
filename: "src/server/loopApi.ts"
|
|
171
|
+
}, (opts) => getRunDiff.__executeServer(opts));
|
|
172
|
+
var getRunDiff = createServerFn({ method: "GET" }).validator((d) => d).handler(getRunDiff_createServerFn_handler, async ({ data }) => {
|
|
173
|
+
await backend();
|
|
174
|
+
const run = await getRun(data.runId);
|
|
175
|
+
if (!run) return {
|
|
176
|
+
hasSnapshot: false,
|
|
177
|
+
files: []
|
|
178
|
+
};
|
|
179
|
+
if (!await ownedLoop(run.loopId)) return {
|
|
180
|
+
hasSnapshot: false,
|
|
181
|
+
files: []
|
|
182
|
+
};
|
|
183
|
+
const { computeRunDiff } = await import("./runDiff-CrZzjokj.mjs");
|
|
184
|
+
return computeRunDiff(data.runId);
|
|
185
|
+
});
|
|
186
|
+
var patchLoop_createServerFn_handler = createServerRpc({
|
|
187
|
+
id: "9befe6b8d67ccbbd7aa9b538bde2a161a9894761c8936761a9503fda1a88c0fc",
|
|
188
|
+
name: "patchLoop",
|
|
189
|
+
filename: "src/server/loopApi.ts"
|
|
190
|
+
}, (opts) => patchLoop.__executeServer(opts));
|
|
191
|
+
var patchLoop = createServerFn({ method: "POST" }).validator((d) => d).handler(patchLoop_createServerFn_handler, async ({ data }) => {
|
|
192
|
+
const { scheduler } = await backend();
|
|
193
|
+
const owned = await ownedLoop(data.id);
|
|
194
|
+
if (!owned) return { error: "not found" };
|
|
195
|
+
const p = data.patch;
|
|
196
|
+
{
|
|
197
|
+
const validated = validateLoopEdit(owned.loop, p);
|
|
198
|
+
if (!validated.ok) return { error: validated.detail };
|
|
199
|
+
const loop = await updateLoop(data.id, validated.value);
|
|
200
|
+
if (!loop) return { error: "not found" };
|
|
201
|
+
if (loop.enabled) scheduler.addLoop(loop);
|
|
202
|
+
else scheduler.removeLoop(loop.id);
|
|
203
|
+
return { ok: true };
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
var pauseLoop_createServerFn_handler = createServerRpc({
|
|
207
|
+
id: "95b7483b333d7649e70c848319417e83c2af6a0327bbcda2d0e331f626dffe05",
|
|
208
|
+
name: "pauseLoop",
|
|
209
|
+
filename: "src/server/loopApi.ts"
|
|
210
|
+
}, (opts) => pauseLoop.__executeServer(opts));
|
|
211
|
+
var pauseLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(pauseLoop_createServerFn_handler, async ({ data: id }) => {
|
|
212
|
+
const { scheduler } = await backend();
|
|
213
|
+
if (!await ownedLoop(id)) return { error: "not found" };
|
|
214
|
+
if (!await pauseLoop$1(id)) return { error: "not found" };
|
|
215
|
+
scheduler.removeLoop(id);
|
|
216
|
+
return { ok: true };
|
|
217
|
+
});
|
|
218
|
+
var startLoop_createServerFn_handler = createServerRpc({
|
|
219
|
+
id: "5660ea82ea5ff2549e0ce2f8f070c54f3e9e24fee84d547601ef5d6ef49a4016",
|
|
220
|
+
name: "startLoop",
|
|
221
|
+
filename: "src/server/loopApi.ts"
|
|
222
|
+
}, (opts) => startLoop.__executeServer(opts));
|
|
223
|
+
var startLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(startLoop_createServerFn_handler, async ({ data: id }) => {
|
|
224
|
+
const { scheduler } = await backend();
|
|
225
|
+
const owned = await ownedLoop(id);
|
|
226
|
+
if (!owned) return { error: "not found" };
|
|
227
|
+
if (owned.loop.deleteRequestedAt) return { error: "loop is being deleted" };
|
|
228
|
+
const loop = await startLoop$1(id);
|
|
229
|
+
if (!loop) return { error: "not found" };
|
|
230
|
+
scheduler.addLoop(loop);
|
|
231
|
+
return { ok: true };
|
|
232
|
+
});
|
|
233
|
+
var stopLoop_createServerFn_handler = createServerRpc({
|
|
234
|
+
id: "e233a461e4526dec3cc4cbaa891a7c3621d5967ce7f32b4fb17e9fb645857b9a",
|
|
235
|
+
name: "stopLoop",
|
|
236
|
+
filename: "src/server/loopApi.ts"
|
|
237
|
+
}, (opts) => stopLoop.__executeServer(opts));
|
|
238
|
+
var stopLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(stopLoop_createServerFn_handler, async ({ data: id }) => {
|
|
239
|
+
const { scheduler } = await backend();
|
|
240
|
+
const owned = await ownedLoop(id);
|
|
241
|
+
if (!owned) return { error: "not found" };
|
|
242
|
+
if (await hasRunningRun(id)) {
|
|
243
|
+
if ((await getMachine(owned.loop.machineId))?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
|
|
244
|
+
}
|
|
245
|
+
const stopped = await stopLoop$1(id);
|
|
246
|
+
if (!stopped) return { error: "not found" };
|
|
247
|
+
scheduler.removeLoop(id);
|
|
248
|
+
return {
|
|
249
|
+
ok: true,
|
|
250
|
+
waiting: !!stopped.running
|
|
251
|
+
};
|
|
252
|
+
});
|
|
253
|
+
var deleteLoop_createServerFn_handler = createServerRpc({
|
|
254
|
+
id: "5e0d6b55f5629faac2f55a68661eeb82668b2be752192b16264ffb5cd1e6fabe",
|
|
255
|
+
name: "deleteLoop",
|
|
256
|
+
filename: "src/server/loopApi.ts"
|
|
257
|
+
}, (opts) => deleteLoop.__executeServer(opts));
|
|
258
|
+
var deleteLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(deleteLoop_createServerFn_handler, async ({ data: id }) => {
|
|
259
|
+
const { scheduler } = await backend();
|
|
260
|
+
const owned = await ownedLoop(id);
|
|
261
|
+
if (!owned) return { error: "not found" };
|
|
262
|
+
const machine = await getMachine(owned.loop.machineId);
|
|
263
|
+
const unreachable = machinePresence(machine?.online, machine?.lastSeen) !== "online";
|
|
264
|
+
const actor = await requestScope();
|
|
265
|
+
const mayRetireAuthority = !owned.enforce || !!(actor.userId && owned.loop.teamId && (await getTeamMember(owned.loop.teamId, actor.userId))?.role === "owner");
|
|
266
|
+
if (!unreachable && await hasRunningRun(id) && machine?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
|
|
267
|
+
scheduler.removeLoop(id);
|
|
268
|
+
if (!await requestDeleteLoop(id)) return { error: "not found" };
|
|
269
|
+
if (unreachable && mayRetireAuthority) {
|
|
270
|
+
if (!await forceDeleteLoop$1(id)) return { error: "delete failed; server data was not deleted" };
|
|
271
|
+
const { logger } = await import("./logger-DdUWuMdh.mjs");
|
|
272
|
+
logger.child({ mod: "loop-lifecycle" }).warn({
|
|
273
|
+
action: "unreachable-delete",
|
|
274
|
+
loopId: id,
|
|
275
|
+
actorUserId: actor.userId,
|
|
276
|
+
machineId: owned.loop.machineId
|
|
277
|
+
}, "unreachable-machine delete: retired execution authority and removed server data");
|
|
278
|
+
return {
|
|
279
|
+
ok: true,
|
|
280
|
+
deleted: true
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const deleted = await tryDeleteLoop(id);
|
|
284
|
+
return {
|
|
285
|
+
ok: true,
|
|
286
|
+
deleted,
|
|
287
|
+
waiting: !deleted
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
var FORCE_DELETE_CONFIRMATION = "delete-server-data-anyway";
|
|
291
|
+
/** Destructive uncertainty escape hatch. Team owners only; the explicit marker
|
|
292
|
+
* is the server-side half of the Dashboard's second confirmation. */
|
|
293
|
+
var forceDeleteLoop_createServerFn_handler = createServerRpc({
|
|
294
|
+
id: "199e1c98d1946048b76a18a86c6d252d87776e70fefa62e4af66089244acb9de",
|
|
295
|
+
name: "forceDeleteLoop",
|
|
296
|
+
filename: "src/server/loopApi.ts"
|
|
297
|
+
}, (opts) => forceDeleteLoop.__executeServer(opts));
|
|
298
|
+
var forceDeleteLoop = createServerFn({ method: "POST" }).validator((d) => d).handler(forceDeleteLoop_createServerFn_handler, async ({ data }) => {
|
|
299
|
+
const { scheduler } = await backend();
|
|
300
|
+
const owned = await ownedLoop(data.id);
|
|
301
|
+
if (!owned) return { error: "not found" };
|
|
302
|
+
if (!owned.loop.deleteRequestedAt) return { error: "delete must be requested first" };
|
|
303
|
+
if (data.confirmation !== FORCE_DELETE_CONFIRMATION) return { error: "force delete confirmation required" };
|
|
304
|
+
if (owned.enforce) {
|
|
305
|
+
if (!owned.loop.teamId) return { error: "only a team owner can force delete this loop" };
|
|
306
|
+
const actor = (await requestScope()).userId;
|
|
307
|
+
if (!actor || (await getTeamMember(owned.loop.teamId, actor))?.role !== "owner") return { error: "only a team owner can force delete this loop" };
|
|
308
|
+
}
|
|
309
|
+
scheduler.removeLoop(data.id);
|
|
310
|
+
if (!await forceDeleteLoop$1(data.id)) return { error: "force delete failed; server data was not deleted" };
|
|
311
|
+
const { logger } = await import("./logger-DdUWuMdh.mjs");
|
|
312
|
+
logger.child({ mod: "loop-lifecycle" }).warn({
|
|
313
|
+
action: "force-delete",
|
|
314
|
+
loopId: data.id,
|
|
315
|
+
actorUserId: (await requestScope()).userId,
|
|
316
|
+
machineId: owned.loop.machineId
|
|
317
|
+
}, "force-delete: destructive server authority removal");
|
|
318
|
+
return {
|
|
319
|
+
ok: true,
|
|
320
|
+
deleted: true
|
|
321
|
+
};
|
|
322
|
+
});
|
|
323
|
+
var runLoop_createServerFn_handler = createServerRpc({
|
|
324
|
+
id: "08565e35f6a3dd06ef25401de0343976c47f7ae319d3baed6320b56dd3718311",
|
|
325
|
+
name: "runLoop",
|
|
326
|
+
filename: "src/server/loopApi.ts"
|
|
327
|
+
}, (opts) => runLoop.__executeServer(opts));
|
|
328
|
+
var runLoop = createServerFn({ method: "POST" }).validator((id) => id).handler(runLoop_createServerFn_handler, async ({ data: id }) => {
|
|
329
|
+
const { scheduler } = await backend();
|
|
330
|
+
if (!await ownedLoop(id)) return { error: "not found" };
|
|
331
|
+
const queued = await scheduler.runNow(id);
|
|
332
|
+
if (!("run" in queued)) return { error: queued.reason };
|
|
333
|
+
return {
|
|
334
|
+
ok: true,
|
|
335
|
+
runId: queued.run.id,
|
|
336
|
+
queued: true,
|
|
337
|
+
coalesced: queued.state === "coalesced"
|
|
338
|
+
};
|
|
339
|
+
});
|
|
340
|
+
var stopRun_createServerFn_handler = createServerRpc({
|
|
341
|
+
id: "6850ba403da9dec5aff45794eb52636ca540ddec2d9e59f5c75ccbb852bfeacb",
|
|
342
|
+
name: "stopRun",
|
|
343
|
+
filename: "src/server/loopApi.ts"
|
|
344
|
+
}, (opts) => stopRun.__executeServer(opts));
|
|
345
|
+
var stopRun = createServerFn({ method: "POST" }).validator((id) => id).handler(stopRun_createServerFn_handler, async ({ data: id }) => {
|
|
346
|
+
await backend();
|
|
347
|
+
const run = await getRun(id);
|
|
348
|
+
const owned = run ? await ownedLoop(run.loopId) : void 0;
|
|
349
|
+
if (!run || !owned) return { error: "run not found" };
|
|
350
|
+
if (run.phase === "running" && (await getMachine(owned.loop.machineId))?.daemonProtocol !== 4) return { error: "Daemon upgrade required to stop a running process" };
|
|
351
|
+
const result = await requestRunCancel(run.loopId, id);
|
|
352
|
+
return result ? {
|
|
353
|
+
ok: true,
|
|
354
|
+
waiting: result.phase === "running"
|
|
355
|
+
} : { error: "run not found" };
|
|
356
|
+
});
|
|
357
|
+
var mintClaim_createServerFn_handler = createServerRpc({
|
|
358
|
+
id: "4646f52fb09b83c9c9cef34836f3c9d03416423c879d9e5ceffcafd9a71ecba6",
|
|
359
|
+
name: "mintClaim",
|
|
360
|
+
filename: "src/server/loopApi.ts"
|
|
361
|
+
}, (opts) => mintClaim.__executeServer(opts));
|
|
362
|
+
var mintClaim = createServerFn({ method: "POST" }).validator((teamId) => teamId).handler(mintClaim_createServerFn_handler, async ({ data: teamId }) => {
|
|
363
|
+
await backend();
|
|
364
|
+
const { mintDeviceToken, rememberConnectKey } = await import("./tokens-XngoyCU8.mjs");
|
|
365
|
+
const { userId, teamId: active } = await requestScope(teamId);
|
|
366
|
+
const owner = userId ?? "shared";
|
|
367
|
+
const token = mintDeviceToken();
|
|
368
|
+
await rememberConnectKey(token, {
|
|
369
|
+
userId: owner,
|
|
370
|
+
teamId: active
|
|
371
|
+
});
|
|
372
|
+
return { token };
|
|
373
|
+
});
|
|
374
|
+
var claimStatus_createServerFn_handler = createServerRpc({
|
|
375
|
+
id: "4b0db7d6c8f25383a3526598cb0c1881db6cf413e451e9478687c05666461347",
|
|
376
|
+
name: "claimStatus",
|
|
377
|
+
filename: "src/server/loopApi.ts"
|
|
378
|
+
}, (opts) => claimStatus.__executeServer(opts));
|
|
379
|
+
var claimStatus = createServerFn({ method: "GET" }).validator((token) => token).handler(claimStatus_createServerFn_handler, async ({ data: token }) => {
|
|
380
|
+
const r = (await backend()).gateway.claimStatus(token);
|
|
381
|
+
return r ? {
|
|
382
|
+
done: true,
|
|
383
|
+
id: r.loopId,
|
|
384
|
+
name: r.name,
|
|
385
|
+
agent: r.agent
|
|
386
|
+
} : { done: false };
|
|
387
|
+
});
|
|
388
|
+
//#endregion
|
|
389
|
+
export { canViewTeam_createServerFn_handler, claimStatus_createServerFn_handler, deleteLoop_createServerFn_handler, forceDeleteLoop_createServerFn_handler, getArtifact_createServerFn_handler, getArtifacts_createServerFn_handler, getAuthState_createServerFn_handler, getConfig_createServerFn_handler, getDefaultTeam_createServerFn_handler, getLoopDetail_createServerFn_handler, getRunDiff_createServerFn_handler, listLoops_createServerFn_handler, listMyTeams_createServerFn_handler, loadOlderRuns_createServerFn_handler, mintClaim_createServerFn_handler, patchLoop_createServerFn_handler, pauseLoop_createServerFn_handler, runLoop_createServerFn_handler, startLoop_createServerFn_handler, stopLoop_createServerFn_handler, stopRun_createServerFn_handler };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Lt as scheduleFromLoop, Ot as reconciliationStatesForRuns, Vt as statusDefinitionsFromLoop, W as getMachine, X as hasPendingRun, Z as hasRunningRun, pt as listRuns, u as MIN_DAEMON_VERSION, v as countRuns, w as daemonNeedsUpdate, xt as machinePresence } from "./boot-BbWxaF-z.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/loopProjection-BZ1_IYCr.js
|
|
3
|
+
/** Canonical client projections for persisted loops and runs. */
|
|
4
|
+
var SUMMARY_RUNS = 18;
|
|
5
|
+
function nextRun(loop) {
|
|
6
|
+
return [loop.nextRunAt, loop.nextCadenceAt].filter((v) => v != null).sort()[0] ?? null;
|
|
7
|
+
}
|
|
8
|
+
function toRunSummary(r, reconciliation) {
|
|
9
|
+
return {
|
|
10
|
+
id: r.id,
|
|
11
|
+
loopId: r.loopId,
|
|
12
|
+
ts: r.ts,
|
|
13
|
+
phase: r.phase,
|
|
14
|
+
...reconciliation ? { reconciliation } : {},
|
|
15
|
+
requestedBy: r.requestedBy,
|
|
16
|
+
cancelRequested: r.cancelRequestedAt != null,
|
|
17
|
+
agent: r.agent ?? null,
|
|
18
|
+
status: r.status ?? null,
|
|
19
|
+
message: r.message ?? null,
|
|
20
|
+
durationMs: r.durationMs ?? null,
|
|
21
|
+
exitCode: r.exitCode ?? null,
|
|
22
|
+
finalText: r.finalText ?? null,
|
|
23
|
+
usage: r.usage ? {
|
|
24
|
+
inputTokens: r.usage.inputTokens,
|
|
25
|
+
outputTokens: r.usage.outputTokens,
|
|
26
|
+
cacheReadTokens: r.usage.cacheReadTokens,
|
|
27
|
+
cacheCreationTokens: r.usage.cacheCreationTokens
|
|
28
|
+
} : null,
|
|
29
|
+
error: r.error ?? null,
|
|
30
|
+
sessionId: r.sessionId ?? null,
|
|
31
|
+
reportIncident: r.reportIncident ?? null
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async function toRunSummaries(loopId, rows) {
|
|
35
|
+
const states = await reconciliationStatesForRuns(loopId, rows.map((run) => run.id));
|
|
36
|
+
return rows.map((run) => toRunSummary(run, states.get(run.id)));
|
|
37
|
+
}
|
|
38
|
+
/** One live artifact_files row → compact UI metadata. */
|
|
39
|
+
function toArtifactSummary(row) {
|
|
40
|
+
return {
|
|
41
|
+
path: row.path,
|
|
42
|
+
size: row.size ?? null,
|
|
43
|
+
updatedAt: row.updatedAt,
|
|
44
|
+
binary: row.binary,
|
|
45
|
+
oversize: row.oversize
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function toLoopSummary(loop) {
|
|
49
|
+
const runs = await toRunSummaries(loop.id, await listRuns(loop.id, SUMMARY_RUNS));
|
|
50
|
+
return {
|
|
51
|
+
id: loop.id,
|
|
52
|
+
name: loop.name,
|
|
53
|
+
schedule: scheduleFromLoop(loop),
|
|
54
|
+
workdir: loop.workdir,
|
|
55
|
+
agent: loop.agent,
|
|
56
|
+
model: loop.model ?? null,
|
|
57
|
+
reasoningEffort: loop.reasoningEffort ?? null,
|
|
58
|
+
enabled: loop.enabled,
|
|
59
|
+
nextRun: nextRun(loop),
|
|
60
|
+
running: await hasRunningRun(loop.id),
|
|
61
|
+
queued: await hasPendingRun(loop.id),
|
|
62
|
+
reconciliationBlocking: runs.some((run) => run.reconciliation === "blocking"),
|
|
63
|
+
lastRunTs: runs.length ? runs[runs.length - 1].ts : null,
|
|
64
|
+
deleteRequestedAt: loop.deleteRequestedAt ?? null,
|
|
65
|
+
pauseCause: loop.pauseCause ?? null,
|
|
66
|
+
runs,
|
|
67
|
+
runCount: await countRuns(loop.id)
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function toLoopFull(loop) {
|
|
71
|
+
return {
|
|
72
|
+
id: loop.id,
|
|
73
|
+
name: loop.name,
|
|
74
|
+
schedule: scheduleFromLoop(loop),
|
|
75
|
+
workdir: loop.workdir,
|
|
76
|
+
agent: loop.agent,
|
|
77
|
+
model: loop.model ?? null,
|
|
78
|
+
reasoningEffort: loop.reasoningEffort ?? null,
|
|
79
|
+
prompt: loop.prompt,
|
|
80
|
+
statusDefinitions: statusDefinitionsFromLoop(loop),
|
|
81
|
+
artifacts: loop.artifacts,
|
|
82
|
+
enabled: loop.enabled,
|
|
83
|
+
pauseCause: loop.pauseCause ?? null,
|
|
84
|
+
createdAt: loop.createdAt,
|
|
85
|
+
updatedAt: loop.updatedAt
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
async function toLoopDetail(loop) {
|
|
89
|
+
const fullRuns = (await toRunSummaries(loop.id, await listRuns(loop.id, 100))).reverse();
|
|
90
|
+
const m = await getMachine(loop.machineId);
|
|
91
|
+
const presence = machinePresence(m?.online, m?.lastSeen);
|
|
92
|
+
return {
|
|
93
|
+
loop: toLoopFull(loop),
|
|
94
|
+
summary: await toLoopSummary(loop),
|
|
95
|
+
machine: {
|
|
96
|
+
id: loop.machineId,
|
|
97
|
+
name: m?.name || "",
|
|
98
|
+
online: presence === "online",
|
|
99
|
+
presence,
|
|
100
|
+
lastSeen: m?.lastSeen ?? null,
|
|
101
|
+
daemonProtocol: m?.daemonProtocol ?? null,
|
|
102
|
+
daemonVersion: m?.daemonVersion ?? null,
|
|
103
|
+
needsUpdate: daemonNeedsUpdate(m?.daemonVersion),
|
|
104
|
+
requiredDaemonVersion: MIN_DAEMON_VERSION
|
|
105
|
+
},
|
|
106
|
+
runs: fullRuns
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { toRunSummaries as i, toLoopDetail as n, toLoopSummary as r, toArtifactSummary as t };
|