From 9ecaabd87c0e51b8a7408dabb0133a9344586859 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Fri, 22 May 2026 15:24:13 +0900 Subject: feat: agent builder, CWD support, auto-save, UI polish, unavailable tool handling - Agent Builder: full CRUD with card grid, drag-and-drop model reorder, edit/delete - Auto-save on edit with 600ms debounce, AbortController for concurrency, fieldset disabled until name entered - Agent definitions stored as TOML with cwd field, loaded from global/project dirs - Working directory: per-tab CWD override in Chat Settings, agent default CWD, auto-create on first message - CWD validation: check-dir endpoint with ~ expansion, real-time validity indicator - Subagent CWD validated against parent's effective CWD using path.relative - Unavailable tool calls: caught gracefully, shown as tool call with error badge, model retries - UI: tab bar border radius, sidebar border removed, chat input ghost style, scroll-to-bottom rectangle - Skills dir collapse uses CSS rotation, Model Choice renamed to Chat Settings, System Prompt view removed - Reusable SkillsBrowser/ToolPermissions with external mode for Agent Builder - ModelSelector: Agent/Manual toggle, agent list, Agent Settings link - Page router, skills recursive scanning, bin/up gopass removed, docker volume mounts --- packages/core/src/models/registry.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'packages/core/src/models') diff --git a/packages/core/src/models/registry.ts b/packages/core/src/models/registry.ts index 9ea0b32..4a24a51 100644 --- a/packages/core/src/models/registry.ts +++ b/packages/core/src/models/registry.ts @@ -10,10 +10,7 @@ export class ModelRegistry { this._initConfig(keys, new Map()); } - private _initConfig( - keys: KeyDefinition[], - existingStates: Map, - ): void { + private _initConfig(keys: KeyDefinition[], existingStates: Map): void { this.keyOrder = keys.map((k) => k.id); const newStates = new Map(); @@ -83,8 +80,7 @@ export class ModelRegistry { return this.keyOrder .map((id) => this.keyStates.get(id)) .filter( - (state): state is KeyState => - state !== undefined && state.definition.provider === provider, + (state): state is KeyState => state !== undefined && state.definition.provider === provider, ); } } -- cgit v1.2.3