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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-relay-server",
3
- "version": "0.30.0",
3
+ "version": "0.30.1",
4
4
  "description": "Lightweight HTTP message relay for inter-agent communication across machines",
5
5
  "module": "src/index.ts",
6
6
  "type": "module",
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-dvh sticky top-0 flex-col border-r border-border bg-card",
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 h-auto max-w-none rounded-none p-0 bg-background border-border gap-0 overflow-hidden",
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-dvh",
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-dvh overflow-y-auto",
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\(--header-h\)\] {
161765
- height: var(--header-h);
161785
+ .h-\[calc\(100dvh-var\(--sat\)\)\] {
161786
+ height: calc(100dvh - var(--sat));
161766
161787
  }
161767
161788
 
161768
- .h-auto {
161769
- height: auto;
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-dvh {
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 (options.noRestart) {
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 (options.noRestart) {
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",