@saadnvd1/agent-os 0.3.758 → 0.3.761

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.
@@ -66,10 +66,13 @@ export function ComposerMenu({
66
66
  ref={listRef}
67
67
  role="listbox"
68
68
  aria-label={label}
69
- className="popover-surface absolute right-0 bottom-full left-0 mb-2 max-h-[min(55vh,340px)] overflow-x-hidden overflow-y-auto rounded-xl p-1.5"
69
+ className={cn(
70
+ "popover-surface absolute right-0 bottom-full left-0 mb-2 max-h-[min(55vh,340px)] overflow-x-hidden overflow-y-auto rounded-xl px-1.5 pb-1.5",
71
+ !refresh && "pt-1.5"
72
+ )}
70
73
  >
71
74
  {refresh && (
72
- <div className="flex items-center justify-between pl-2.5">
75
+ <div className="bg-popover sticky top-0 z-20 flex items-center justify-between pt-1.5 pl-2.5">
73
76
  <span className="text-muted-foreground text-xs">{label}</span>
74
77
  <button
75
78
  type="button"
@@ -92,7 +95,13 @@ export function ComposerMenu({
92
95
  options.map((o, i) => (
93
96
  <Fragment key={o.key}>
94
97
  {o.group && o.group !== options[i - 1]?.group && (
95
- <div className="text-muted-foreground px-2.5 pt-2 pb-0.5 text-[11px] tracking-wide uppercase">
98
+ <div
99
+ className={cn(
100
+ "bg-popover text-muted-foreground sticky z-10 px-2.5 pt-2 pb-0.5 text-[11px] tracking-wide uppercase",
101
+ // Sit below the pinned header row (6px + h-11 / md:h-7).
102
+ refresh ? "top-[50px] md:top-[34px]" : "top-0"
103
+ )}
104
+ >
96
105
  {o.group}
97
106
  </div>
98
107
  )}
@@ -114,7 +123,7 @@ export function ComposerMenu({
114
123
  >
115
124
  <span className="flex w-full min-w-0 items-center gap-2">
116
125
  {o.icon}
117
- <span className="max-w-[65%] shrink-0 truncate font-mono text-sm">
126
+ <span className="max-w-full min-w-0 shrink-0 font-mono text-sm break-all">
118
127
  {o.icon ? (
119
128
  o.label
120
129
  ) : (
@@ -122,7 +131,7 @@ export function ComposerMenu({
122
131
  )}
123
132
  </span>
124
133
  {o.hint && (
125
- <span className="text-muted-foreground/70 min-w-0 truncate font-mono text-xs">
134
+ <span className="text-muted-foreground/70 min-w-0 flex-1 truncate font-mono text-xs">
126
135
  {o.hint}
127
136
  </span>
128
137
  )}
@@ -11,6 +11,15 @@ export function slashQuery(
11
11
  return { query: m[2].toLowerCase(), start: m.index + m[1].length };
12
12
  }
13
13
 
14
+ // The SDK ends a description with where the command comes from, "(user)",
15
+ // "(project)" or "(plugin-name)"; the menu's group header says that already.
16
+ export function stripSourceSuffix(description: string): string {
17
+ return description.replace(
18
+ /\s*\((?:user|project|builtin|plugin|[\w.-]+@[\w.-]+)\)\s*$/i,
19
+ ""
20
+ );
21
+ }
22
+
14
23
  function isSubsequence(q: string, s: string): boolean {
15
24
  let i = 0;
16
25
  for (const ch of s) if (ch === q[i]) i++;
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from "crypto";
2
2
  import type { ChatCommand, ChatItem, DriverEvent } from "../events";
3
3
  import { clipOutput, toolDiff, toolTitle } from "../tools";
4
- import { leadingCommand } from "../commands";
4
+ import { leadingCommand, stripSourceSuffix } from "../commands";
5
5
  import { usageTotals } from "../context";
6
6
 
7
7
  // Loose views of the SDK's message shapes: only what the mapper reads.
@@ -93,7 +93,7 @@ export type SdkCommand = {
93
93
  export function toCommand(c: SdkCommand): ChatCommand {
94
94
  return {
95
95
  name: c.name,
96
- description: c.description ?? "",
96
+ description: stripSourceSuffix(c.description ?? ""),
97
97
  argumentHint: c.argumentHint || undefined,
98
98
  builtin: c.builtin,
99
99
  };
package/next.config.ts CHANGED
@@ -7,6 +7,12 @@ const nextConfig: NextConfig = {
7
7
  // so the live server never serves a half-written build.
8
8
  distDir: process.env.AGENTOS_DIST_DIR || ".next",
9
9
  devIndicators: false,
10
+ // Next 16.4 stops `next dev` once under an agent to print an upgrade
11
+ // nudge, which kills every task's dev server. Upgrades go through
12
+ // Dependabot and tasks instead.
13
+ experimental: {
14
+ agentUpgrade: false,
15
+ },
10
16
  turbopack: {
11
17
  root: resolve(import.meta.dirname),
12
18
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saadnvd1/agent-os",
3
- "version": "0.3.758",
3
+ "version": "0.3.761",
4
4
  "description": "Self-hosted web UI for managing Claude Code sessions",
5
5
  "bin": {
6
6
  "agent-os": "scripts/agent-os"
@@ -136,7 +136,7 @@
136
136
  "mermaid": "^12.2.0",
137
137
  "micromark-extension-gfm": "^3.0.0",
138
138
  "monaco-editor": "^0.57.0",
139
- "next": "^16.3.8",
139
+ "next": "^16.4.2",
140
140
  "next-themes": "^0.4.6",
141
141
  "node-pty": "^1.2.0-beta.6",
142
142
  "playwright": "^1.63.0",
@@ -167,7 +167,7 @@
167
167
  "@types/react-dom": "^19.2.3",
168
168
  "@types/ws": "^8.18.1",
169
169
  "eslint": "^9.39.5",
170
- "eslint-config-next": "^16.3.8",
170
+ "eslint-config-next": "^16.4.2",
171
171
  "husky": "^9.1.7",
172
172
  "jsdom": "^30.1.2",
173
173
  "prettier": "^3.7.4",