Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions apps/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"express": "5.2.1",
"morgan": "1.10.1",
"node-pty": "1.1.0-beta41",
"ws": "8.18.3"
"ws": "8.19.0"
},
"devDependencies": {
"@types/cookie": "0.6.0",
Expand All @@ -50,10 +50,10 @@
"@types/morgan": "1.9.10",
"@types/node": "22.19.3",
"@types/ws": "8.18.1",
"@vitest/coverage-v8": "4.0.16",
"@vitest/ui": "4.0.16",
"@vitest/coverage-v8": "4.0.17",
"@vitest/ui": "4.0.17",
"tsx": "4.21.0",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
17 changes: 17 additions & 0 deletions apps/server/src/lib/request-utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* Request utility functions for handling Express request parameters
*/

/**
* Extracts a string parameter from req.params, handling both string and string[] types.
* If the parameter is an array, returns the first element.
*
* @param param - The parameter value from req.params (string | string[])
* @returns The parameter as a string
*/
export function getStringParam(param: string | string[]): string {
if (Array.isArray(param)) {
return param[0] ?? '';
}
return param;
}
3 changes: 2 additions & 1 deletion apps/server/src/routes/sessions/routes/archive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import type { Request, Response } from 'express';
import { AgentService } from '../../../services/agent-service.js';
import { getErrorMessage, logError } from '../common.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createArchiveHandler(agentService: AgentService) {
return async (req: Request, res: Response): Promise<void> => {
try {
const { sessionId } = req.params;
const sessionId = getStringParam(req.params.sessionId);
const success = await agentService.archiveSession(sessionId);

if (!success) {
Expand Down
3 changes: 2 additions & 1 deletion apps/server/src/routes/sessions/routes/delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import type { Request, Response } from 'express';
import { AgentService } from '../../../services/agent-service.js';
import { getErrorMessage, logError } from '../common.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createDeleteHandler(agentService: AgentService) {
return async (req: Request, res: Response): Promise<void> => {
try {
const { sessionId } = req.params;
const sessionId = getStringParam(req.params.sessionId);
const success = await agentService.deleteSession(sessionId);

if (!success) {
Expand Down
3 changes: 2 additions & 1 deletion apps/server/src/routes/sessions/routes/unarchive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import type { Request, Response } from 'express';
import { AgentService } from '../../../services/agent-service.js';
import { getErrorMessage, logError } from '../common.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createUnarchiveHandler(agentService: AgentService) {
return async (req: Request, res: Response): Promise<void> => {
try {
const { sessionId } = req.params;
const sessionId = getStringParam(req.params.sessionId);
const success = await agentService.unarchiveSession(sessionId);

if (!success) {
Expand Down
3 changes: 2 additions & 1 deletion apps/server/src/routes/sessions/routes/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
import type { Request, Response } from 'express';
import { AgentService } from '../../../services/agent-service.js';
import { getErrorMessage, logError } from '../common.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createUpdateHandler(agentService: AgentService) {
return async (req: Request, res: Response): Promise<void> => {
try {
const { sessionId } = req.params;
const sessionId = getStringParam(req.params.sessionId);
const { name, tags, model } = req.body as {
name?: string;
tags?: string[];
Expand Down
3 changes: 2 additions & 1 deletion apps/server/src/routes/terminal/routes/session-delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@

import type { Request, Response } from 'express';
import { getTerminalService } from '../../../services/terminal-service.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createSessionDeleteHandler() {
return (req: Request, res: Response): void => {
const terminalService = getTerminalService();
const { id } = req.params;
const id = getStringParam(req.params.id);
const killed = terminalService.killSession(id);

if (!killed) {
Expand Down
3 changes: 2 additions & 1 deletion apps/server/src/routes/terminal/routes/session-resize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@

import type { Request, Response } from 'express';
import { getTerminalService } from '../../../services/terminal-service.js';
import { getStringParam } from '../../../lib/request-utils.js';

export function createSessionResizeHandler() {
return (req: Request, res: Response): void => {
const terminalService = getTerminalService();
const { id } = req.params;
const id = getStringParam(req.params.id);
const { cols, rows } = req.body;

if (!cols || !rows) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -518,7 +518,7 @@ Resets in 2h

const promise = ptyService.fetchUsageData();

dataCallback!('authentication_error');
dataCallback!('{"type":"authentication_error"}');

await expect(promise).rejects.toThrow(
"Claude CLI authentication issue. Please run 'claude logout' and then 'claude login' in your terminal to refresh permissions."
Expand Down
46 changes: 23 additions & 23 deletions apps/ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@
"@radix-ui/react-switch": "1.2.6",
"@radix-ui/react-tabs": "1.1.13",
"@radix-ui/react-tooltip": "1.2.8",
"@tanstack/react-query": "5.90.12",
"@tanstack/react-router": "1.141.6",
"@tanstack/react-query": "5.90.18",
"@tanstack/react-router": "1.150.0",
"@uiw/react-codemirror": "4.25.4",
"@xterm/addon-fit": "0.10.0",
"@xterm/addon-search": "0.15.0",
"@xterm/addon-web-links": "0.11.0",
"@xterm/addon-webgl": "0.18.0",
"@xterm/addon-fit": "0.11.0",
"@xterm/addon-search": "0.16.0",
"@xterm/addon-web-links": "0.12.0",
"@xterm/addon-webgl": "0.19.0",
"@xterm/xterm": "5.5.0",
Comment on lines +69 to 73
Copy link
Contributor

@coderabbitai coderabbitai bot Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check peer dependency requirements for specific xterm addon versions
echo "Checking npm peer dependencies for xterm addons..."
for pkg in "@xterm/addon-fit@0.11.0" "@xterm/addon-search@0.16.0" "@xterm/addon-web-links@0.12.0" "@xterm/addon-webgl@0.19.0"; do
  echo "=== $pkg ==="
  npm view "$pkg" peerDependencies --json 2>/dev/null || echo "No peer deps found"
  echo ""
done

Repository: AutoMaker-Org/automaker

Length of output: 260


🏁 Script executed:

#!/bin/bash
# Get full package metadata from npm registry
echo "Checking full package metadata for xterm addons..."
npm view "@xterm/addon-fit@0.11.0" --json 2>/dev/null | jq -r '.peerDependencies, .engines, .dependencies' || echo "Failed to get fit metadata"
echo ""
echo "Checking `@xterm/xterm`@5.5.0 metadata..."
npm view "@xterm/xterm@5.5.0" --json 2>/dev/null | jq -r '.version, .dependencies' || echo "Failed to get xterm metadata"

Repository: AutoMaker-Org/automaker

Length of output: 184


🏁 Script executed:

#!/bin/bash
# Get complete package metadata
echo "=== Full metadata for `@xterm/addon-fit`@0.11.0 ==="
npm view "@xterm/addon-fit@0.11.0" --json 2>/dev/null | head -50

echo ""
echo "=== Checking npm registry URL for addon compatibility info ==="
npm view "@xterm/addon-fit" versions --json 2>/dev/null | tail -20

Repository: AutoMaker-Org/automaker

Length of output: 1620


🏁 Script executed:

#!/bin/bash
# Get specific fields from npm registry that contain dependency info
echo "=== Checking dependencies for addon versions ==="
npm view "@xterm/addon-fit@0.11.0" --json 2>/dev/null | jq '.peerDependencies // "no peer deps" | .dependencies // "no deps"'

echo ""
echo "=== Getting full object keys to understand structure ==="
npm view "@xterm/addon-fit@0.11.0" --json 2>/dev/null | jq 'keys' | head -30

Repository: AutoMaker-Org/automaker

Length of output: 683


🏁 Script executed:

#!/bin/bash
# Search for xterm addons in the codebase to find any package-lock or version info
echo "=== Checking for xterm addon info in node_modules or lock files ==="
cd apps/ui
if [ -f "package-lock.json" ]; then
  echo "Found package-lock.json, checking xterm addon entries..."
  jq '.dependencies[] | select(.name | startswith("@xterm/addon")) | {name, version, requires}' package-lock.json 2>/dev/null | head -100
elif [ -f "yarn.lock" ]; then
  echo "Checking yarn.lock for xterm addons..."
  grep -A 5 "@xterm/addon" yarn.lock | head -50
else
  echo "No lock file found"
fi

Repository: AutoMaker-Org/automaker

Length of output: 153


🏁 Script executed:

#!/bin/bash
# Check the actual package.json content for context
cd apps/ui
echo "=== Full xterm dependency section from package.json ==="
cat package.json | jq '.dependencies | to_entries[] | select(.key | contains("xterm"))' 2>/dev/null

Repository: AutoMaker-Org/automaker

Length of output: 393


🌐 Web query:

xterm addon compatibility with @xterm/xterm 5.5.0 addon-fit addon-search addon-web-links addon-webgl

💡 Result:

For @xterm/xterm 5.5.0 the compatible addon versions are:

  • @xterm/addon-fit: 0.10.0. [1]
  • @xterm/addon-search: 0.15.0. [1]
  • @xterm/addon-web-links: 0.11.0. [1]
  • @xterm/addon-webgl: 0.18.0. [1]

(See xterm.js 5.5.0 release notes / compatible addon table.) [1][2]

Sources:
[1] xtermjs/xterm.js releases (5.5.0) — GitHub.
[2] xterm.js 5.5.0 release summary (NewReleases).


Downgrade xterm addons to versions compatible with @xterm/xterm 5.5.0.

The current addon versions are incompatible with the installed xterm version. According to the official xterm.js 5.5.0 release notes, the following versions must be used:

  • @xterm/addon-fit: change from 0.11.0 to 0.10.0
  • @xterm/addon-search: change from 0.16.0 to 0.15.0
  • @xterm/addon-web-links: change from 0.12.0 to 0.11.0
  • @xterm/addon-webgl: change from 0.19.0 to 0.18.0

Using newer addon versions with xterm 5.5.0 will cause runtime errors in the terminal component.

🤖 Prompt for AI Agents
In `@apps/ui/package.json` around lines 69 - 73, The xterm addon versions in
package.json are incompatible with `@xterm/xterm` 5.5.0; update the dependency
versions for the addons to match the 5.5.0 release: change "@xterm/addon-fit"
from 0.11.0 to 0.10.0, "@xterm/addon-search" from 0.16.0 to 0.15.0,
"@xterm/addon-web-links" from 0.12.0 to 0.11.0, and "@xterm/addon-webgl" from
0.19.0 to 0.18.0 (then run your package manager install to lock the correct
versions).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The peer dependency version for these packages was removed between the 5.5.0 release and the current version. As the tests are passing, it might not be a breaking change internally. Did you check what the changes between those versions are and what the impact might be?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

"@xyflow/react": "12.10.0",
"class-variance-authority": "0.7.1",
Expand All @@ -87,40 +87,40 @@
"sonner": "2.0.7",
"tailwind-merge": "3.4.0",
"usehooks-ts": "3.1.1",
"zustand": "5.0.9"
"zustand": "5.0.10"
},
"optionalDependencies": {
"lightningcss-darwin-arm64": "1.29.2",
"lightningcss-darwin-x64": "1.29.2",
"lightningcss-linux-arm-gnueabihf": "1.29.2",
"lightningcss-linux-arm64-gnu": "1.29.2",
"lightningcss-linux-arm64-musl": "1.29.2",
"lightningcss-linux-x64-gnu": "1.29.2",
"lightningcss-linux-x64-musl": "1.29.2",
"lightningcss-win32-arm64-msvc": "1.29.2",
"lightningcss-win32-x64-msvc": "1.29.2"
"lightningcss-darwin-arm64": "1.30.2",
"lightningcss-darwin-x64": "1.30.2",
"lightningcss-linux-arm-gnueabihf": "1.30.2",
"lightningcss-linux-arm64-gnu": "1.30.2",
"lightningcss-linux-arm64-musl": "1.30.2",
"lightningcss-linux-x64-gnu": "1.30.2",
"lightningcss-linux-x64-musl": "1.30.2",
"lightningcss-win32-arm64-msvc": "1.30.2",
"lightningcss-win32-x64-msvc": "1.30.2"
},
"devDependencies": {
"@electron/rebuild": "4.0.2",
"@eslint/js": "9.0.0",
"@eslint/js": "9.39.2",
"@playwright/test": "1.57.0",
"@tailwindcss/vite": "4.1.18",
"@tanstack/router-plugin": "1.141.7",
"@tanstack/router-plugin": "1.150.0",
"@types/dagre": "0.7.53",
"@types/node": "22.19.3",
"@types/react": "19.2.7",
"@types/react": "19.2.8",
"@types/react-dom": "19.2.3",
"@typescript-eslint/eslint-plugin": "8.50.0",
"@typescript-eslint/parser": "8.50.0",
"@typescript-eslint/eslint-plugin": "8.53.0",
"@typescript-eslint/parser": "8.53.0",
"@vitejs/plugin-react": "5.1.2",
"cross-env": "10.1.0",
"electron": "39.2.7",
"electron-builder": "26.0.12",
"electron-builder": "26.4.0",
"eslint": "9.39.2",
"tailwindcss": "4.1.18",
"tw-animate-css": "1.4.0",
"typescript": "5.9.3",
"vite": "7.3.0",
"vite": "7.3.1",
"vite-plugin-electron": "0.29.0",
"vite-plugin-electron-renderer": "0.14.6"
},
Expand Down
2 changes: 1 addition & 1 deletion libs/dependency-resolver/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
2 changes: 1 addition & 1 deletion libs/git-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
2 changes: 1 addition & 1 deletion libs/model-resolver/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
2 changes: 1 addition & 1 deletion libs/platform/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
2 changes: 1 addition & 1 deletion libs/prompts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
2 changes: 1 addition & 1 deletion libs/utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@
"devDependencies": {
"@types/node": "22.19.3",
"typescript": "5.9.3",
"vitest": "4.0.16"
"vitest": "4.0.17"
}
}
Loading