agent-relay-server 0.30.0 → 0.30.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/package.json +1 -1
- package/public/index.html +39 -17
- package/src/cli.ts +5 -1
- package/src/upgrade.ts +15 -4
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -77210,7 +77210,7 @@ function SidebarContent() {
|
|
|
77210
77210
|
}
|
|
77211
77211
|
function Sidebar() {
|
|
77212
77212
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("aside", {
|
|
77213
|
-
className: "hidden xl:flex w-[250px] min-w-[250px] h-
|
|
77213
|
+
className: "hidden xl:flex w-[250px] min-w-[250px] h-[calc(100dvh-var(--sat))] sticky top-[var(--sat)] flex-col border-r border-border bg-card",
|
|
77214
77214
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
77215
77215
|
className: "px-5 py-4 font-bold text-base border-b border-border flex items-center gap-2",
|
|
77216
77216
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Radio, { className: "w-4 h-4 text-primary" }), "Agent Relay"]
|
|
@@ -77232,7 +77232,7 @@ function MobileDrawer() {
|
|
|
77232
77232
|
className: cn$2("xl:hidden fixed inset-0 z-40 bg-black/50 transition-opacity duration-200", open ? "opacity-100" : "opacity-0 pointer-events-none"),
|
|
77233
77233
|
onClick: () => set({ mobileMenuOpen: false })
|
|
77234
77234
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("aside", {
|
|
77235
|
-
className: cn$2("xl:hidden fixed inset-y-0 left-0 z-50 w-[280px] flex flex-col bg-card border-r border-border transition-transform duration-200 ease-out", open ? "translate-x-0" : "-translate-x-full"),
|
|
77235
|
+
className: cn$2("xl:hidden fixed inset-y-0 left-0 z-50 w-[280px] flex flex-col pt-[var(--sat)] bg-card border-r border-border transition-transform duration-200 ease-out", open ? "translate-x-0" : "-translate-x-full"),
|
|
77236
77236
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
77237
77237
|
className: "px-5 py-4 font-bold text-base border-b border-border flex items-center gap-2",
|
|
77238
77238
|
children: [
|
|
@@ -126441,11 +126441,24 @@ function TerminalViewer({ orchestratorId, session, interactive: initialInteracti
|
|
|
126441
126441
|
});
|
|
126442
126442
|
}
|
|
126443
126443
|
function TerminalDialog({ open, onOpenChange, orchestratorId, session, interactive }) {
|
|
126444
|
+
const [vpHeight, setVpHeight] = (0, import_react.useState)(null);
|
|
126445
|
+
(0, import_react.useEffect)(() => {
|
|
126446
|
+
if (!open) return;
|
|
126447
|
+
const vv = window.visualViewport;
|
|
126448
|
+
if (!vv) return;
|
|
126449
|
+
function onResize() {
|
|
126450
|
+
setVpHeight(vv.height);
|
|
126451
|
+
}
|
|
126452
|
+
onResize();
|
|
126453
|
+
vv.addEventListener("resize", onResize);
|
|
126454
|
+
return () => vv.removeEventListener("resize", onResize);
|
|
126455
|
+
}, [open]);
|
|
126444
126456
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Dialog, {
|
|
126445
126457
|
open,
|
|
126446
126458
|
onOpenChange,
|
|
126447
126459
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogContent, {
|
|
126448
|
-
className: "inset-0 translate-x-0 translate-y-0 w-auto
|
|
126460
|
+
className: "inset-x-0 top-0 translate-x-0 translate-y-0 w-auto max-w-none rounded-none p-0 pt-[var(--sat)] bg-background border-border gap-0 overflow-hidden",
|
|
126461
|
+
style: { height: vpHeight ? `${vpHeight}px` : "100dvh" },
|
|
126449
126462
|
showCloseButton: false,
|
|
126450
126463
|
blurOverlay: false,
|
|
126451
126464
|
onEscapeKeyDown: (e) => e.preventDefault(),
|
|
@@ -130113,7 +130126,7 @@ function ChatView() {
|
|
|
130113
130126
|
}
|
|
130114
130127
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
130115
130128
|
className: "flex -m-4 md:-m-6",
|
|
130116
|
-
style: { height: "calc(100dvh - var(--header-h))" },
|
|
130129
|
+
style: { height: "calc(100dvh - var(--header-h) - var(--sat))" },
|
|
130117
130130
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
130118
130131
|
className: "hidden md:flex w-full",
|
|
130119
130132
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -130149,7 +130162,7 @@ function MobileChatContainer({ children }) {
|
|
|
130149
130162
|
return () => vv.removeEventListener("resize", onResize);
|
|
130150
130163
|
}, []);
|
|
130151
130164
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
130152
|
-
className: "fixed inset-x-0 top-0 z-40 flex flex-col bg-background",
|
|
130165
|
+
className: "fixed inset-x-0 top-0 z-40 flex flex-col bg-background pt-[var(--sat)]",
|
|
130153
130166
|
style: { height: height ? `${height}px` : "100dvh" },
|
|
130154
130167
|
children
|
|
130155
130168
|
});
|
|
@@ -160677,12 +160690,12 @@ function App() {
|
|
|
160677
160690
|
}, [commandPaletteOpen]);
|
|
160678
160691
|
const ViewComponent = views[view] || OverviewView;
|
|
160679
160692
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
160680
|
-
className: "flex min-h-
|
|
160693
|
+
className: "flex min-h-[calc(100dvh-var(--sat))] mt-[var(--sat)]",
|
|
160681
160694
|
children: [
|
|
160682
160695
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Sidebar, {}),
|
|
160683
160696
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MobileDrawer, {}),
|
|
160684
160697
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("main", {
|
|
160685
|
-
className: "flex-1 h-
|
|
160698
|
+
className: "flex-1 h-[calc(100dvh-var(--sat))] overflow-y-auto",
|
|
160686
160699
|
children: [
|
|
160687
160700
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MobileNav, {}),
|
|
160688
160701
|
!authNeeded && connectionError && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -161305,6 +161318,10 @@ if ("serviceWorker" in navigator) {
|
|
|
161305
161318
|
top: calc(var(--header-h, 3rem) + .5rem);
|
|
161306
161319
|
}
|
|
161307
161320
|
|
|
161321
|
+
.top-\[var\(--sat\)\] {
|
|
161322
|
+
top: var(--sat);
|
|
161323
|
+
}
|
|
161324
|
+
|
|
161308
161325
|
.-right-0\.5 {
|
|
161309
161326
|
right: calc(var(--spacing) * -.5);
|
|
161310
161327
|
}
|
|
@@ -161507,6 +161524,10 @@ if ("serviceWorker" in navigator) {
|
|
|
161507
161524
|
margin-top: calc(var(--spacing) * 4);
|
|
161508
161525
|
}
|
|
161509
161526
|
|
|
161527
|
+
.mt-\[var\(--sat\)\] {
|
|
161528
|
+
margin-top: var(--sat);
|
|
161529
|
+
}
|
|
161530
|
+
|
|
161510
161531
|
.mt-auto {
|
|
161511
161532
|
margin-top: auto;
|
|
161512
161533
|
}
|
|
@@ -161761,16 +161782,12 @@ if ("serviceWorker" in navigator) {
|
|
|
161761
161782
|
height: calc(100dvh - 24rem);
|
|
161762
161783
|
}
|
|
161763
161784
|
|
|
161764
|
-
.h-\[var\(--
|
|
161765
|
-
height: var(--
|
|
161785
|
+
.h-\[calc\(100dvh-var\(--sat\)\)\] {
|
|
161786
|
+
height: calc(100dvh - var(--sat));
|
|
161766
161787
|
}
|
|
161767
161788
|
|
|
161768
|
-
.h-
|
|
161769
|
-
height:
|
|
161770
|
-
}
|
|
161771
|
-
|
|
161772
|
-
.h-dvh {
|
|
161773
|
-
height: 100dvh;
|
|
161789
|
+
.h-\[var\(--header-h\)\] {
|
|
161790
|
+
height: var(--header-h);
|
|
161774
161791
|
}
|
|
161775
161792
|
|
|
161776
161793
|
.h-fit {
|
|
@@ -161893,8 +161910,8 @@ if ("serviceWorker" in navigator) {
|
|
|
161893
161910
|
min-height: 360px;
|
|
161894
161911
|
}
|
|
161895
161912
|
|
|
161896
|
-
.min-h-
|
|
161897
|
-
min-height: 100dvh;
|
|
161913
|
+
.min-h-\[calc\(100dvh-var\(--sat\)\)\] {
|
|
161914
|
+
min-height: calc(100dvh - var(--sat));
|
|
161898
161915
|
}
|
|
161899
161916
|
|
|
161900
161917
|
.w-\(--radix-dropdown-menu-trigger-width\) {
|
|
@@ -163913,6 +163930,10 @@ if ("serviceWorker" in navigator) {
|
|
|
163913
163930
|
padding-top: 15vh;
|
|
163914
163931
|
}
|
|
163915
163932
|
|
|
163933
|
+
.pt-\[var\(--sat\)\] {
|
|
163934
|
+
padding-top: var(--sat);
|
|
163935
|
+
}
|
|
163936
|
+
|
|
163916
163937
|
.pr-2 {
|
|
163917
163938
|
padding-right: calc(var(--spacing) * 2);
|
|
163918
163939
|
}
|
|
@@ -167103,6 +167124,7 @@ if ("serviceWorker" in navigator) {
|
|
|
167103
167124
|
|
|
167104
167125
|
:root {
|
|
167105
167126
|
--header-h: 3rem;
|
|
167127
|
+
--sat: env(safe-area-inset-top, 0px);
|
|
167106
167128
|
}
|
|
167107
167129
|
|
|
167108
167130
|
.code-preview .shiki {
|
package/src/cli.ts
CHANGED
|
@@ -143,7 +143,8 @@ Upgrade options:
|
|
|
143
143
|
--providers LIST Provider integrations to upgrade: auto, all, codex, claude, orchestrator
|
|
144
144
|
--host ID Upgrade a remote orchestrator host over the relay (repeatable). Skips the local upgrade
|
|
145
145
|
--all-hosts Upgrade this host, then fan out to every connected remote host that is behind
|
|
146
|
-
--no-restart Do not restart agent-relay.service
|
|
146
|
+
--no-restart Do not restart agent-relay.service (warns you to restart it manually)
|
|
147
|
+
--restart-deferred Like --no-restart, but the caller restarts the services itself; suppresses the manual-restart warning (used by the release script)
|
|
147
148
|
--dry-run Print detected state and planned commands
|
|
148
149
|
--yes Skip confirmation prompts
|
|
149
150
|
|
|
@@ -402,6 +403,7 @@ async function handleUpgradeCommand(args: string[]): Promise<void> {
|
|
|
402
403
|
let targetVersion: string | undefined;
|
|
403
404
|
let dryRun = false;
|
|
404
405
|
let noRestart = false;
|
|
406
|
+
let restartDeferred = false;
|
|
405
407
|
let yes = false;
|
|
406
408
|
let json = false;
|
|
407
409
|
let runtimePrefix: string | undefined;
|
|
@@ -425,6 +427,7 @@ async function handleUpgradeCommand(args: string[]): Promise<void> {
|
|
|
425
427
|
else if (arg === "--all") providers.push("all");
|
|
426
428
|
else if (arg === "--dry-run") dryRun = true;
|
|
427
429
|
else if (arg === "--no-restart") noRestart = true;
|
|
430
|
+
else if (arg === "--restart-deferred") restartDeferred = true;
|
|
428
431
|
else if (arg === "--yes" || arg === "-y") yes = true;
|
|
429
432
|
else if (arg === "--json") json = true;
|
|
430
433
|
else throw new Error(`Unknown upgrade option "${arg}"`);
|
|
@@ -449,6 +452,7 @@ async function handleUpgradeCommand(args: string[]): Promise<void> {
|
|
|
449
452
|
...(runtimePrefix ? { runtimePrefix } : {}),
|
|
450
453
|
providers,
|
|
451
454
|
noRestart,
|
|
455
|
+
restartDeferred,
|
|
452
456
|
});
|
|
453
457
|
|
|
454
458
|
if (json) {
|
package/src/upgrade.ts
CHANGED
|
@@ -13,6 +13,13 @@ type UpgradeOptions = {
|
|
|
13
13
|
targetVersion?: string;
|
|
14
14
|
providers?: UpgradeProvider[];
|
|
15
15
|
noRestart?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Like `noRestart` (no restart action → no premature post-restart verify),
|
|
18
|
+
* but the caller restarts the services itself right after install (the
|
|
19
|
+
* release script does). Suppresses the "restart manually" warning, which is
|
|
20
|
+
* a false alarm in that flow — only the caller knows the restart is coming.
|
|
21
|
+
*/
|
|
22
|
+
restartDeferred?: boolean;
|
|
16
23
|
runtimePrefix?: string;
|
|
17
24
|
};
|
|
18
25
|
|
|
@@ -206,10 +213,14 @@ export function createUpgradePlan(snapshot: UpgradeSnapshot, options: UpgradeOpt
|
|
|
206
213
|
warnings.push("Agent Relay orchestrator not detected; skipping orchestrator package upgrade.");
|
|
207
214
|
}
|
|
208
215
|
|
|
216
|
+
// `restartDeferred` means a caller restarts for us — skip the restart action
|
|
217
|
+
// (and thus the post-restart verify) exactly like `noRestart`, but without the
|
|
218
|
+
// "restart manually" warning, which would be a false alarm in that flow.
|
|
219
|
+
const deferRestart = Boolean(options.noRestart || options.restartDeferred);
|
|
209
220
|
const serverRestartNeeded = serverPackageUpdated || Boolean(snapshot.runningServerVersion && snapshot.runningServerVersion !== targetVersion);
|
|
210
221
|
if (snapshot.hasSystemdUserService && serverRestartNeeded) {
|
|
211
|
-
if (
|
|
212
|
-
warnings.push("agent-relay.service detected but --no-restart was set; restart manually to run the upgraded server.");
|
|
222
|
+
if (deferRestart) {
|
|
223
|
+
if (!options.restartDeferred) warnings.push("agent-relay.service detected but --no-restart was set; restart manually to run the upgraded server.");
|
|
213
224
|
} else {
|
|
214
225
|
actions.push({
|
|
215
226
|
label: "Restart Agent Relay service",
|
|
@@ -226,8 +237,8 @@ export function createUpgradePlan(snapshot: UpgradeSnapshot, options: UpgradeOpt
|
|
|
226
237
|
Boolean((orch.version && orch.version !== targetVersion) || orch.health?.restartRequired)
|
|
227
238
|
);
|
|
228
239
|
if (snapshot.hasSystemdUserOrchestratorService && orchestratorRestartNeeded) {
|
|
229
|
-
if (
|
|
230
|
-
warnings.push("agent-relay-orchestrator.service detected but --no-restart was set; restart manually to run the upgraded orchestrator.");
|
|
240
|
+
if (deferRestart) {
|
|
241
|
+
if (!options.restartDeferred) warnings.push("agent-relay-orchestrator.service detected but --no-restart was set; restart manually to run the upgraded orchestrator.");
|
|
231
242
|
} else {
|
|
232
243
|
actions.push({
|
|
233
244
|
label: "Restart Agent Relay orchestrator service",
|