refactor(desktop): colocate hook/component families into scoped folders

Single-scoped helpers/sub-files were sitting flat in shared/grab-bag dirs.
Fold each family into its own folder (index = the export, dir resolution keeps
public import paths intact), dropping the now-redundant filename prefix:

- session/hooks/use-prompt-actions.ts (+ -utils, + tests)
  -> use-prompt-actions/{index,utils}.ts (+ tests)
- components/assistant-ui/thread* + assistant/system/user message renderers
  -> assistant-ui/thread/{index,content,status,message-parts,timestamp,types,
     list,timeline,timeline-data,assistant-message,system-message,user-message,
     user-edit-composer,user-message-text} (+ tests)
- components/assistant-ui/tool-fallback(+model)/tool-approval
  -> assistant-ui/tool/{fallback,fallback-model,approval} (+ tests)

Pure move + import rewrites; no behaviour change. App-wide shared primitives
(markdown-text, directive-text, tooltip-icon-button, clarify-tool, ansi-text,
message-render-boundary) stay flat. desktop-controller intentionally left in
app/ (route root; foldering would churn ~80 relative imports for no gain).
This commit is contained in:
Brooklyn Nicholson 2026-06-30 02:42:07 -05:00
parent c9269fbfb6
commit fa7bce0789
32 changed files with 40 additions and 40 deletions

View file

@ -8,7 +8,7 @@ import { $composerAttachments, type ComposerAttachment } from '@/store/composer'
import { $busy, $connection, $messages, $sessions, setSessions } from '@/store/session'
import type { SessionInfo } from '@/types/hermes'
import { uploadComposerAttachment, usePromptActions } from './use-prompt-actions'
import { uploadComposerAttachment, usePromptActions } from '.'
vi.mock('@/hermes', () => ({
getProfiles: vi.fn(async () => ({ profiles: [] })),

View file

@ -72,7 +72,7 @@ import type {
SessionSteerResponse,
SessionTitleResponse,
SlashExecResponse
} from '../../types'
} from '../../../types'
import {
_submitInFlight,
@ -93,7 +93,7 @@ import {
visibleUserIndexAtOrdinal,
visibleUserOrdinal,
withSessionBusyRetry
} from './use-prompt-actions-utils'
} from './utils'
interface HandoffResult {
ok: boolean

View file

@ -15,7 +15,7 @@ import {
slashStatusText,
visibleUserIndexAtOrdinal,
visibleUserOrdinal
} from './use-prompt-actions-utils'
} from './utils'
describe('isSessionIdCandidate', () => {
it('accepts the timestamped and hex id forms', () => {