* server : extend file_glob_search for UI pickers * ui : add per-conversation working directory with picker * ui : add path navigation and search scope to cwd picker Treat path-like queries (starting with / or ~) as directory navigation instead of glob-matching the whole query: search the parent for the last segment, and descend into an exactly-typed directory by listing its children. Show the effective search scope in the footer and auto-search on open so the current directory and its siblings appear immediately. Assisted-by: Claude * db : persist per-call tool cwd on tool result messages * ui : abbreviate tool paths under home with a tilde * ui : show the per-call cwd on exec shell rows * ui : clarify the synthetic cwd message for the model * ui : reuse the trailing cwd row on a repeated pick * ui : don't jump when a cwd row is injected mid-chat * chore: Formatting * refactor: Cleanup comments * ui : unify working directory naming and add a synthetic-message flag * ui : render synthetic cwd rows without a scroll jump * ui : decouple the working directory picker into utils and sub-components * ui : add get_info tool call block * chore: Formatting * refactor: Cleanup * refactor: Cleanup * refactor: Cleanup * fix: UI * server : harden file_glob_search listing (kind enum, timeout, symlink guard, absolute base) * ui : use persisted isSynthetic flag for cwd rows, drop legacy formats * ui : cache picker search, fail visibly on native resolve * ui : escape glob metacharacters in picker search glob * ui : simplify auto-scroll pin * chore: Format * fix: Use `SvelteMap` * refactor: Post-review fixes * ui: accept Windows roots in the working directory picker recognize a drive root (C:) and a UNC share (//host/share) as path navigation, alongside the POSIX root and ~, so a query like D:\repos lists that directory instead of glob-matching it under the home dir split below the root, so a bare drive resolves to its root rather than to a drive-relative prefix rewrite backslashes into forward slashes only when the query carries a Windows root, since a backslash is a legal POSIX filename character paths keep travelling with forward slashes, which is what the server returns and what Windows accepts --------- Co-authored-by: Pascal <admin@serveurperso.com>
23 lines
940 B
TypeScript
23 lines
940 B
TypeScript
/**
|
|
* Constants for synthetic working-directory messages.
|
|
*
|
|
* The synthetic cwd-change message is text the UI renders as a folder row
|
|
* and the model sees as a turn reminder. The prefix and cleared marker keep
|
|
* the human-readable wording; the file-link regexes parse the
|
|
* `[file:///abs/path](display)` payload back out on the UI side.
|
|
*/
|
|
|
|
import { UrlProtocol } from '$lib/enums';
|
|
|
|
export const CWD_CHANGED_PREFIX = 'Set working directory to ';
|
|
export const CWD_CLEARED_TEXT = 'Working directory cleared';
|
|
|
|
export const HOME_TILDE = '~';
|
|
export const HOME_TILDE_PREFIX = '~/'; // tilde plus path separator
|
|
|
|
/** Scheme prefix of the file link embedded in a synthetic cwd message. */
|
|
export const FILE_URI_PREFIX = `${UrlProtocol.FILE}//`;
|
|
|
|
/** Matches the leading `[file:///abs/path](display)` link; not anchored to the end so trailing guidance may follow. */
|
|
export const CWD_LINK_REGEX = /^\[file:\/\/([\s\S]*?)\]\(([\s\S]*?)\)/;
|