@kky42/pievo-server 2.4.13 → 3.0.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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{actionUi-D8m1FDHO.js → actionUi-BZrLpgHT.js} +1 -1
- package/.output/public/assets/app-DXLuQNb9.css +2 -0
- package/.output/public/assets/index-Di_wpAtL.js +10 -0
- package/.output/public/assets/loops._loopId-X3ClNPMY.js +67 -0
- package/.output/public/assets/loops._loopId_.runs._runId-ByU2BSyF.js +3 -0
- package/.output/public/assets/preload-helper-hRTYB_ju.js +3 -0
- package/.output/public/assets/{routes-79D939J4.js → routes-BIOJZsig.js} +1 -1
- package/.output/public/assets/routes-K8D5uBiV.js +1 -0
- package/.output/server/_chunks/ssr-renderer.mjs +1 -1
- package/.output/server/_libs/{drizzle-orm+postgres.mjs → drizzle-orm.mjs} +93 -2218
- package/.output/server/_ssr/{MachinesModal-DBIP648Z.mjs → MachinesModal-CmVMec6B.mjs} +52 -46
- package/.output/server/_ssr/{actionUi-C_WswNb1.mjs → actionUi-DE-Pb2tv.mjs} +4 -5
- package/.output/server/_ssr/{artifactFiles-BvVmixrs.mjs → artifactFiles-Di1xDKvX.mjs} +5 -7
- package/.output/server/_ssr/{artifactKind-DRCbYHZU.mjs → artifactKind-DqpmtxDU.mjs} +3 -9
- package/.output/server/_ssr/{boot-U-CFI65B.mjs → boot-CYRi-wez.mjs} +531 -1976
- package/.output/server/_ssr/lifecycleUi-BsbUsi5K.mjs +106 -0
- package/.output/server/_ssr/{loopApi-C4nN0msL.mjs → loopApi-Bez1rHV0.mjs} +50 -65
- package/.output/server/_ssr/{loopProjection-DMSNHux6.mjs → loopProjection-esCjyZJg.mjs} +4 -20
- package/.output/server/_ssr/{loops._loopId-Q4pRYPip.mjs → loops._loopId-KUezNY69.mjs} +133 -24
- package/.output/server/_ssr/{loops._loopId_.runs._runId-DNXVmCt5.mjs → loops._loopId_.runs._runId-BFP9oMrp.mjs} +2 -7
- package/.output/server/_ssr/{loops._loopId_.runs._runId-ty3AhkOi.mjs → loops._loopId_.runs._runId-DOkUEesG.mjs} +18 -33
- package/.output/server/_ssr/{machineFns-CkNms3zA.mjs → machineFns-CniGcY8s.mjs} +13 -49
- package/.output/server/_ssr/networkAccess-CIlK3ION.mjs +30 -0
- package/.output/server/_ssr/router-BFIH2UAE.mjs +362 -0
- package/.output/server/_ssr/routes-BSVBANI3.mjs +12 -0
- package/.output/server/_ssr/{routes-BaanDO41.mjs → routes-DnE7XDe_.mjs} +242 -77
- package/.output/server/_ssr/{routes-B3fulW5I.mjs → routes-ngpX7h8D.mjs} +2 -4
- package/.output/server/_ssr/ssr.mjs +25 -34
- package/.output/server/_ssr/start-B5_9Z5W-.mjs +35 -0
- package/.output/server/{_tanstack-start-manifest_v-DkmxsHDK.mjs → _tanstack-start-manifest_v-DnwAupbZ.mjs} +8 -13
- package/.output/server/drizzle/0000_baseline.sql +6 -97
- package/.output/server/drizzle/meta/_journal.json +2 -16
- package/.output/server/index.mjs +43 -50
- package/drizzle/0000_baseline.sql +6 -97
- package/drizzle/meta/_journal.json +2 -16
- package/package.json +4 -8
- package/scripts/pievo-server.mjs +49 -47
- package/scripts/server-cli-lib.mjs +21 -12
- package/scripts/server-network.mjs +139 -0
- package/.output/public/assets/SignIn-CDCdDD1a.js +0 -1
- package/.output/public/assets/app-PPhgN9iN.css +0 -2
- package/.output/public/assets/index-c0XPWXuz.js +0 -10
- package/.output/public/assets/loops._loopId-D7i_BGiE.js +0 -67
- package/.output/public/assets/loops._loopId_.runs._runId-CksSrEY7.js +0 -3
- package/.output/public/assets/preload-helper-Zcmr31XG.js +0 -5
- package/.output/public/assets/routes-BYgl3Tmv.js +0 -1
- package/.output/server/_libs/@aws-crypto/crc32+[...].mjs +0 -419
- package/.output/server/_libs/@aws-sdk/checksums+[...].mjs +0 -10732
- package/.output/server/_libs/@aws-sdk/client-s3+[...].mjs +0 -9475
- package/.output/server/_libs/@aws-sdk/credential-provider-http+[...].mjs +0 -137
- package/.output/server/_libs/@aws-sdk/credential-provider-ini+[...].mjs +0 -440
- package/.output/server/_libs/@aws-sdk/credential-provider-process+[...].mjs +0 -62
- package/.output/server/_libs/@aws-sdk/credential-provider-sso+[...].mjs +0 -818
- package/.output/server/_libs/@aws-sdk/credential-provider-web-identity+[...].mjs +0 -59
- package/.output/server/_libs/@smithy/credential-provider-imds+[...].mjs +0 -342
- package/.output/server/_libs/aws-crypto__crc32c.mjs +0 -314
- package/.output/server/_libs/aws-sdk__nested-clients.mjs +0 -2671
- package/.output/server/_ssr/SignIn-Bp3uWaCQ.mjs +0 -53
- package/.output/server/_ssr/artifacts-CzDJLaa6.mjs +0 -2
- package/.output/server/_ssr/auth-BV0MxVdo.mjs +0 -38355
- package/.output/server/_ssr/auth-client-RTpMpT4L.mjs +0 -1070
- package/.output/server/_ssr/boot-CsLXrLEa.mjs +0 -2
- package/.output/server/_ssr/bun-sqlite-dialect-BW9W1_Ps-D9KUBJ-L.mjs +0 -162
- package/.output/server/_ssr/core-RrmWoKne.mjs +0 -5
- package/.output/server/_ssr/d1-sqlite-dialect-BLC8LXE6-CVHRzH1n.mjs +0 -112
- package/.output/server/_ssr/db-BTX-xORB.mjs +0 -2
- package/.output/server/_ssr/dist-D7UDVZ5G.mjs +0 -342
- package/.output/server/_ssr/factory-DYFx1fg-.mjs +0 -6903
- package/.output/server/_ssr/kysely-adapter-CwdB7yBh.mjs +0 -2
- package/.output/server/_ssr/kysely-migration-tables-JkVUjPF_-bPAX9LR_.mjs +0 -19
- package/.output/server/_ssr/logger-CwiKSMp6.mjs +0 -2
- package/.output/server/_ssr/node-sqlite-dialect-B_g92oFK.mjs +0 -162
- package/.output/server/_ssr/router-DCNZ2xLm.mjs +0 -543
- package/.output/server/_ssr/routes-8JSF7bX_.mjs +0 -27
- package/.output/server/_ssr/runDiff-D7CxAgYL.mjs +0 -2
- package/.output/server/_ssr/start-4ifArtKx.mjs +0 -4
- package/.output/server/_ssr/store-DSNbXxqz.mjs +0 -2
- package/.output/server/_ssr/tokens-DzUv7CCp.mjs +0 -2
- package/.output/server/drizzle/0001_add_pi_agent.sql +0 -9
- package/.output/server/drizzle/0002_remove_teams.sql +0 -15
- package/.output/server/node_modules/tslib/modules/index.js +0 -70
- package/.output/server/node_modules/tslib/modules/package.json +0 -3
- package/.output/server/node_modules/tslib/package.json +0 -47
- package/.output/server/node_modules/tslib/tslib.js +0 -484
- package/.output/server/package.json +0 -9
- package/drizzle/0001_add_pi_agent.sql +0 -9
- package/drizzle/0002_remove_teams.sql +0 -15
- package/scripts/prestart.mjs +0 -66
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
import { o as __toESM } from "../_runtime.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { D as isOutdated, I as machinePresence } from "./boot-CYRi-wez.mjs";
|
|
3
3
|
import { a as DialogClose, c as TooltipPopup, d as TooltipTrigger, f as TooltipRoot, g as require_react, h as require_jsx_runtime, i as DialogPopup, l as TooltipPositioner, n as DialogRoot, o as DialogBackdrop, r as DialogPortal, t as DialogTitle, u as TooltipPortal } from "../_libs/@base-ui/react+[...].mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/MachinesModal-
|
|
4
|
+
import { r as createServerFn } from "./ssr.mjs";
|
|
5
|
+
import { c as getConfig, d as lifecyclePresentation, n as createSsrRpc, r as daemonStopSupport } from "./lifecycleUi-BsbUsi5K.mjs";
|
|
6
|
+
import { C as lastRunOf, D as scheduleText, N as useHydrated, O as sectionHeadCls, S as labelCls, T as runPulseAnim, _ as fmt, c as btn, g as dur, h as dotOpacity, j as until, l as btnDanger, m as dotLabel, n as ErrorBanner, o as Pill, p as dotColor, t as ConfirmBar, u as btnPrimary, v as fnum, w as rel, x as inputCls } from "./actionUi-DE-Pb2tv.mjs";
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/MachinesModal-CmVMec6B.js
|
|
8
8
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
9
9
|
var import_jsx_runtime = require_jsx_runtime();
|
|
10
10
|
/**
|
|
11
|
-
* Machine-management server functions.
|
|
12
|
-
*
|
|
13
|
-
* administration, including reconnect tokens.
|
|
11
|
+
* Machine-management server functions. Pievo is single-user: anyone who can
|
|
12
|
+
* reach the dashboard administers every machine, including reconnect tokens.
|
|
14
13
|
*/
|
|
15
|
-
/** Missing and out-of-scope machines both resolve to undefined. */
|
|
16
14
|
var listMachines = createServerFn({ method: "GET" }).handler(createSsrRpc("aa46310016bb8a58b273a648ffd498c87f1f450d12827e30110a3b83ba6a27d9"));
|
|
17
15
|
var createMachine = createServerFn({ method: "POST" }).handler(createSsrRpc("ed679b4e1e05e903a5d4ba4a70d9b9d883991ab22ed59b4d2d69078941818415"));
|
|
18
16
|
var machineStatus = createServerFn({ method: "GET" }).validator((id) => id).handler(createSsrRpc("169566e7637a22599b4eb32ee3775574e99677406922bbef7482a102036c33dd"));
|
|
19
17
|
var finalizeMachine = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("27d7eba0b6a2257949392fdd56057275a5c5366484ae01faf3b5897a225ecd83"));
|
|
20
|
-
/**
|
|
21
|
-
* Delete server-owned machine data without touching local project files. The
|
|
22
|
-
* store rechecks ownership under the deletion lock in auth mode.
|
|
23
|
-
*/
|
|
18
|
+
/** Delete server-owned machine data without touching local project files. */
|
|
24
19
|
var deleteMachine = createServerFn({ method: "POST" }).validator((id) => id).handler(createSsrRpc("a6384dc7154d9930422d29396f5de64b3ac69c62ad3824bc4a22d745fc07b293"));
|
|
25
20
|
/** Merge two chronological (oldest-first) run lists, dedup by id (the first
|
|
26
21
|
* occurrence wins, so pass the fresher list first), re-sorted by ts ascending.
|
|
@@ -259,6 +254,12 @@ function LoopOverview({ loop, runs, onLoadMore, onPickRun, onOpen, extraPill })
|
|
|
259
254
|
tone: "outline",
|
|
260
255
|
children: AGENT_LABEL[loop.agent]
|
|
261
256
|
}),
|
|
257
|
+
loop.tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pill, {
|
|
258
|
+
tone: "neutral",
|
|
259
|
+
title: tag,
|
|
260
|
+
className: "max-w-44 truncate",
|
|
261
|
+
children: tag
|
|
262
|
+
}, tag)),
|
|
262
263
|
extraPill,
|
|
263
264
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
264
265
|
className: "ml-auto min-w-0",
|
|
@@ -339,12 +340,24 @@ function daemonConnectCommand(origin, token, cli, customCli) {
|
|
|
339
340
|
const start = `${cli} daemon connect --server-url ${origin} --connect-key ${token}`;
|
|
340
341
|
return customCli ? start : `npm install -g @kky42/pievo@latest && ${start}`;
|
|
341
342
|
}
|
|
343
|
+
/** The server URL other devices should use. A dashboard opened on the server
|
|
344
|
+
* itself sees a loopback origin, which no other device can reach, so prefer the
|
|
345
|
+
* launcher-published network URL there. */
|
|
346
|
+
function connectServerUrl(origin, publicUrl) {
|
|
347
|
+
if (!publicUrl) return origin;
|
|
348
|
+
try {
|
|
349
|
+
const host = new URL(origin).hostname;
|
|
350
|
+
return host === "localhost" || host === "[::1]" || host.startsWith("127.") ? publicUrl : origin;
|
|
351
|
+
} catch {
|
|
352
|
+
return publicUrl;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
342
355
|
function daemonUpgradeCommand(cli, customCli) {
|
|
343
356
|
const restart = `${cli} daemon restart`;
|
|
344
357
|
return customCli ? restart : `npm install -g @kky42/pievo@latest && ${restart}`;
|
|
345
358
|
}
|
|
346
|
-
function connectCmd(token,
|
|
347
|
-
return daemonConnectCommand(typeof window !== "undefined" ? window.location.origin : "http://127.0.0.1:3000", token,
|
|
359
|
+
function connectCmd(token, config) {
|
|
360
|
+
return daemonConnectCommand(connectServerUrl(typeof window !== "undefined" ? window.location.origin : "http://127.0.0.1:3000", config.publicUrl), token, config.pievoCli, config.customCli);
|
|
348
361
|
}
|
|
349
362
|
function CopyButton({ text }) {
|
|
350
363
|
const [done, setDone] = (0, import_react.useState)(false);
|
|
@@ -358,6 +371,19 @@ function CopyButton({ text }) {
|
|
|
358
371
|
children: done ? "Copied ✓" : "Copy"
|
|
359
372
|
});
|
|
360
373
|
}
|
|
374
|
+
function UpgradeCommand({ cliConfig, configErr }) {
|
|
375
|
+
const command = cliConfig ? daemonUpgradeCommand(cliConfig.pievoCli, cliConfig.customCli) : null;
|
|
376
|
+
return command ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
377
|
+
className: "flex items-start gap-2",
|
|
378
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
|
|
379
|
+
className: "flex-1 overflow-x-auto whitespace-pre-wrap break-all rounded-control bg-display p-3 font-mono text-caption leading-relaxed text-paper",
|
|
380
|
+
children: command
|
|
381
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: command })]
|
|
382
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
383
|
+
className: "text-label text-secondary",
|
|
384
|
+
children: configErr ? "Could not load the upgrade command. Close and try again." : "Loading upgrade command…"
|
|
385
|
+
});
|
|
386
|
+
}
|
|
361
387
|
function machineOrder(a, b) {
|
|
362
388
|
return a.name.localeCompare(b.name, void 0, {
|
|
363
389
|
numeric: true,
|
|
@@ -436,10 +462,6 @@ function MachinesModal({ open, onClose }) {
|
|
|
436
462
|
setDelErr(null);
|
|
437
463
|
try {
|
|
438
464
|
const r = await createMachine();
|
|
439
|
-
if ("error" in r) {
|
|
440
|
-
setDelErr(r.error);
|
|
441
|
-
return;
|
|
442
|
-
}
|
|
443
465
|
setStatus(null);
|
|
444
466
|
setName("");
|
|
445
467
|
setPending(r);
|
|
@@ -493,8 +515,8 @@ function MachinesModal({ open, onClose }) {
|
|
|
493
515
|
className: "mt-2 flex items-start gap-2",
|
|
494
516
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
|
|
495
517
|
className: "flex-1 overflow-x-auto whitespace-pre-wrap break-all rounded-control bg-display p-4 font-mono text-label leading-relaxed text-paper",
|
|
496
|
-
children: connectCmd(pending.token, cliConfig
|
|
497
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: connectCmd(pending.token, cliConfig
|
|
518
|
+
children: connectCmd(pending.token, cliConfig)
|
|
519
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: connectCmd(pending.token, cliConfig) })]
|
|
498
520
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
499
521
|
className: "mt-2 text-body text-secondary",
|
|
500
522
|
children: configErr ? "Could not load the connection command. Close and try again." : "Loading connection command…"
|
|
@@ -632,10 +654,6 @@ function MachinesModal({ open, onClose }) {
|
|
|
632
654
|
className: "text-label text-accent",
|
|
633
655
|
children: "Daemon upgrade required to stop a running process"
|
|
634
656
|
}),
|
|
635
|
-
!m.online && !m.token && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
636
|
-
className: "text-label text-secondary",
|
|
637
|
-
children: "Reconnect command available from the machine owner's account."
|
|
638
|
-
}),
|
|
639
657
|
!m.online && m.token && !cliConfig && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
640
658
|
className: "text-label text-secondary",
|
|
641
659
|
children: configErr ? "Could not load the reconnect command. Close and try again." : "Loading reconnect command…"
|
|
@@ -647,8 +665,8 @@ function MachinesModal({ open, onClose }) {
|
|
|
647
665
|
className: "mt-2 flex items-start gap-2",
|
|
648
666
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
|
|
649
667
|
className: "flex-1 overflow-x-auto whitespace-pre-wrap break-all rounded-control bg-display p-3 font-mono text-caption leading-relaxed text-paper",
|
|
650
|
-
children: connectCmd(m.token, cliConfig
|
|
651
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: connectCmd(m.token, cliConfig
|
|
668
|
+
children: connectCmd(m.token, cliConfig)
|
|
669
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: connectCmd(m.token, cliConfig) })]
|
|
652
670
|
})] }),
|
|
653
671
|
m.needsUpdate && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
654
672
|
className: "flex flex-col gap-1.5 rounded-control border border-warn/40 bg-warn/10 p-3",
|
|
@@ -666,15 +684,9 @@ function MachinesModal({ open, onClose }) {
|
|
|
666
684
|
m.requiredDaemonVersion
|
|
667
685
|
]
|
|
668
686
|
}),
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
className: "flex-1 overflow-x-auto whitespace-pre-wrap break-all rounded-control bg-display p-3 font-mono text-caption leading-relaxed text-paper",
|
|
673
|
-
children: daemonUpgradeCommand(cliConfig.pievoCli, cliConfig.customCli)
|
|
674
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: daemonUpgradeCommand(cliConfig.pievoCli, cliConfig.customCli) })]
|
|
675
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
676
|
-
className: "text-label text-secondary",
|
|
677
|
-
children: configErr ? "Could not load the upgrade command. Close and try again." : "Loading upgrade command…"
|
|
687
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(UpgradeCommand, {
|
|
688
|
+
cliConfig,
|
|
689
|
+
configErr
|
|
678
690
|
})
|
|
679
691
|
]
|
|
680
692
|
}),
|
|
@@ -689,15 +701,9 @@ function MachinesModal({ open, onClose }) {
|
|
|
689
701
|
m.latestDaemonVersion,
|
|
690
702
|
")"
|
|
691
703
|
]
|
|
692
|
-
}),
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
className: "flex-1 overflow-x-auto whitespace-pre-wrap break-all rounded-control bg-display p-3 font-mono text-caption leading-relaxed text-paper",
|
|
696
|
-
children: daemonUpgradeCommand(cliConfig.pievoCli, cliConfig.customCli)
|
|
697
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { text: daemonUpgradeCommand(cliConfig.pievoCli, cliConfig.customCli) })]
|
|
698
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
699
|
-
className: "text-label text-secondary",
|
|
700
|
-
children: configErr ? "Could not load the upgrade command. Close and try again." : "Loading upgrade command…"
|
|
704
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UpgradeCommand, {
|
|
705
|
+
cliConfig,
|
|
706
|
+
configErr
|
|
701
707
|
})]
|
|
702
708
|
})
|
|
703
709
|
]
|
|
@@ -717,4 +723,4 @@ function MachinesModal({ open, onClose }) {
|
|
|
717
723
|
});
|
|
718
724
|
}
|
|
719
725
|
//#endregion
|
|
720
|
-
export { Timeline as a,
|
|
726
|
+
export { Timeline as a, listMachines as c, ModalHead as i, mergeRuns as l, MachinesModal as n, connectServerUrl as o, Modal as r, daemonConnectCommand as s, LoopOverview as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as __toESM } from "../_runtime.mjs";
|
|
2
2
|
import { g as require_react, h as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/actionUi-
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/actionUi-DE-Pb2tv.js
|
|
4
4
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
5
5
|
var import_jsx_runtime = require_jsx_runtime();
|
|
6
6
|
var fmt = (t) => t ? new Date(t).toLocaleString() : "—";
|
|
@@ -169,7 +169,6 @@ var btn = `${btnBase} border border-wire bg-surface text-primary hover:bg-raised
|
|
|
169
169
|
var btnPrimary = `${btnBase} border border-display bg-display text-paper hover:opacity-85`;
|
|
170
170
|
var btnDanger = `${btnBase} border border-transparent bg-rubik-red text-white hover:opacity-85`;
|
|
171
171
|
var btnSm = `inline-flex shrink-0 cursor-pointer items-center gap-1 rounded-full border border-wire bg-surface px-3 py-1 text-label font-medium text-primary transition-colors duration-150 hover:bg-raised disabled:cursor-default disabled:opacity-40 ${focusRing}`;
|
|
172
|
-
`${focusRing}`;
|
|
173
172
|
var btnQuiet = "inline-flex cursor-pointer items-center gap-1.5 border-none bg-transparent p-0 text-meta font-medium text-secondary transition-colors hover:text-display";
|
|
174
173
|
var sectionHeadCls = "text-label font-semibold text-secondary";
|
|
175
174
|
var labelCls = "mb-1.5 mt-3 block text-label font-medium text-secondary";
|
|
@@ -213,10 +212,10 @@ var PILL_TONES = {
|
|
|
213
212
|
accent: "bg-accent-soft text-accent",
|
|
214
213
|
warn: "bg-warn-soft text-warn"
|
|
215
214
|
};
|
|
216
|
-
function Pill({ tone = "neutral", dot, title, children }) {
|
|
215
|
+
function Pill({ tone = "neutral", dot, title, className = "", children }) {
|
|
217
216
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
218
217
|
title,
|
|
219
|
-
className: `inline-flex h-[22px] items-center gap-1.5 rounded-full px-2.5 text-caption font-medium ${PILL_TONES[tone]}`,
|
|
218
|
+
className: `inline-flex h-[22px] items-center gap-1.5 rounded-full px-2.5 text-caption font-medium ${PILL_TONES[tone]} ${className}`,
|
|
220
219
|
children: [dot && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
221
220
|
className: "size-1.5 rounded-full",
|
|
222
221
|
style: dot === "pulse" ? runPulseStyle : { background: "var(--color-rubik-green)" }
|
|
@@ -354,4 +353,4 @@ function useFlash() {
|
|
|
354
353
|
return [flash, setFlash];
|
|
355
354
|
}
|
|
356
355
|
//#endregion
|
|
357
|
-
export {
|
|
356
|
+
export { tsShort as A, lastRunOf as C, scheduleText as D, runPulseStyle as E, useFlash as M, useHydrated as N, sectionHeadCls as O, labelCls as S, runPulseAnim as T, fmt as _, Loading as a, humanBytes as b, btn as c, btnQuiet as d, btnSm as f, dur as g, dotOpacity as h, LoadErrorCard as i, until as j, selectCls as k, btnDanger as l, dotLabel as m, ErrorBanner as n, Pill as o, dotColor as p, FlashLine as r, StatusPill as s, ConfirmBar as t, btnPrimary as u, fnum as v, rel as w, inputCls as x, focusRing as y };
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { O as
|
|
2
|
-
import { n as toArtifactSummary } from "./loopProjection-
|
|
3
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/artifactFiles-
|
|
1
|
+
import { O as listArtifacts, U as safeRelPath, l as getArtifactSync, x as getArtifactFile } from "./boot-CYRi-wez.mjs";
|
|
2
|
+
import { n as toArtifactSummary } from "./loopProjection-esCjyZJg.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/artifactFiles-Di1xDKvX.js
|
|
4
4
|
/**
|
|
5
5
|
* Server-side reads over a loop's current exact artifacts. Pure helpers
|
|
6
6
|
* (no request/session context) so they're shared by the lazy server fns
|
|
7
7
|
* (`getArtifacts` / `getArtifact` in loopApi) AND the download route, and are
|
|
8
|
-
* directly unit-testable against an injected blob store
|
|
9
|
-
* caller's loop (the server fn via `ownedLoop`, the route via `canAccessLoop`).
|
|
8
|
+
* directly unit-testable against an injected blob store.
|
|
10
9
|
*
|
|
11
|
-
* The bytes live in the gateway's BlobStore
|
|
12
|
-
* here we only read them — never write — so the feature is strictly read-only and
|
|
10
|
+
* The bytes live in the gateway's local BlobStore; here we only read them — never write — so the feature is strictly read-only and
|
|
13
11
|
* the server's zero-exec invariant holds (it decodes text, never interprets it).
|
|
14
12
|
*/
|
|
15
13
|
async function listLoopArtifacts(loopId) {
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { c as createFileRoute, s as lazyRouteComponent } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var $$splitComponentImporter = () => import("./loops._loopId-Q4pRYPip.mjs");
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/artifactKind-DqpmtxDU.js
|
|
3
|
+
var $$splitComponentImporter = () => import("./loops._loopId-KUezNY69.mjs");
|
|
5
4
|
/**
|
|
6
5
|
* Loop detail page — `/loops/$loopId`: a loop header and action toolbar, the
|
|
7
6
|
* exact artifact Files panel, and the runs timeline. The view owns its own
|
|
8
|
-
* data + self-poll
|
|
9
|
-
* like the dashboard loader). Run rows link on to `/loops/$loopId/runs/$runId`.
|
|
10
|
-
*
|
|
11
|
-
* Auth-gated exactly like the dashboard (`/`): Better Auth's session hook keeps a
|
|
12
|
-
* logged-out or expired deep link from mounting the ownership-scoped data view.
|
|
7
|
+
* data + self-poll. Run rows link on to `/loops/$loopId/runs/$runId`.
|
|
13
8
|
*/
|
|
14
9
|
var Route = createFileRoute("/loops/$loopId")({
|
|
15
10
|
ssr: false,
|
|
16
|
-
loader: async () => ({ auth: await getAuthState() }),
|
|
17
11
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
18
12
|
});
|
|
19
13
|
/** Extension → MIME for the image types we serve inline. This is an ALLOWLIST:
|