2026-04-24 21:30:48 -05:00
|
|
|
/* eslint-disable */
|
|
|
|
|
|
|
|
|
|
// @ts-nocheck
|
|
|
|
|
|
|
|
|
|
// noinspection JSUnusedGlobalSymbols
|
|
|
|
|
|
|
|
|
|
// This file was automatically generated by TanStack Router.
|
|
|
|
|
// You should NOT make any changes in this file as it will be overwritten.
|
|
|
|
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
|
|
|
|
|
|
|
|
import { Route as rootRouteImport } from './routes/__root'
|
|
|
|
|
import { Route as WorkspacesRouteImport } from './routes/workspaces'
|
|
|
|
|
import { Route as SettingsRouteImport } from './routes/settings'
|
2026-05-24 18:28:23 +01:00
|
|
|
import { Route as SeedKitsRouteImport } from './routes/seed-kits'
|
2026-05-24 17:21:14 +01:00
|
|
|
import { Route as FleetRouteImport } from './routes/fleet'
|
2026-05-04 10:12:25 -05:00
|
|
|
import { Route as ExploreRouteImport } from './routes/explore'
|
2026-04-24 21:30:48 -05:00
|
|
|
import { Route as IndexRouteImport } from './routes/index'
|
|
|
|
|
import { Route as WorkspacesWorkspaceIdRouteImport } from './routes/workspaces_.$workspaceId'
|
2026-05-24 18:29:37 +01:00
|
|
|
import { Route as DevDreamProgressRouteImport } from './routes/_dev.dream-progress'
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
import { Route as WorkspacesWorkspaceIdWebhooksRouteImport } from './routes/workspaces_.$workspaceId_.webhooks'
|
2026-04-24 21:30:48 -05:00
|
|
|
import { Route as WorkspacesWorkspaceIdSessionsRouteImport } from './routes/workspaces_.$workspaceId_.sessions'
|
2026-05-24 18:29:37 +01:00
|
|
|
import { Route as WorkspacesWorkspaceIdQueueRouteImport } from './routes/workspaces_.$workspaceId_.queue'
|
2026-04-24 21:30:48 -05:00
|
|
|
import { Route as WorkspacesWorkspaceIdPeersRouteImport } from './routes/workspaces_.$workspaceId_.peers'
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
import { Route as WorkspacesWorkspaceIdDreamsRouteImport } from './routes/workspaces_.$workspaceId_.dreams'
|
2026-04-24 21:30:48 -05:00
|
|
|
import { Route as WorkspacesWorkspaceIdConclusionsRouteImport } from './routes/workspaces_.$workspaceId_.conclusions'
|
|
|
|
|
import { Route as WorkspacesWorkspaceIdSessionsSessionIdRouteImport } from './routes/workspaces_.$workspaceId_.sessions_.$sessionId'
|
|
|
|
|
import { Route as WorkspacesWorkspaceIdPeersPeerIdRouteImport } from './routes/workspaces_.$workspaceId_.peers_.$peerId'
|
2026-05-24 18:31:16 +01:00
|
|
|
import { Route as WorkspacesWorkspaceIdPeersPeerIdPlaygroundRouteImport } from './routes/workspaces_.$workspaceId_.peers_.$peerId_.playground'
|
2026-04-24 21:30:48 -05:00
|
|
|
import { Route as WorkspacesWorkspaceIdPeersPeerIdChatRouteImport } from './routes/workspaces_.$workspaceId_.peers_.$peerId_.chat'
|
|
|
|
|
|
|
|
|
|
const WorkspacesRoute = WorkspacesRouteImport.update({
|
|
|
|
|
id: '/workspaces',
|
|
|
|
|
path: '/workspaces',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
|
|
|
|
const SettingsRoute = SettingsRouteImport.update({
|
|
|
|
|
id: '/settings',
|
|
|
|
|
path: '/settings',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-24 18:28:23 +01:00
|
|
|
const SeedKitsRoute = SeedKitsRouteImport.update({
|
|
|
|
|
id: '/seed-kits',
|
|
|
|
|
path: '/seed-kits',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-24 17:21:14 +01:00
|
|
|
const FleetRoute = FleetRouteImport.update({
|
|
|
|
|
id: '/fleet',
|
|
|
|
|
path: '/fleet',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-04 10:12:25 -05:00
|
|
|
const ExploreRoute = ExploreRouteImport.update({
|
|
|
|
|
id: '/explore',
|
|
|
|
|
path: '/explore',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-04-24 21:30:48 -05:00
|
|
|
const IndexRoute = IndexRouteImport.update({
|
|
|
|
|
id: '/',
|
|
|
|
|
path: '/',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
|
|
|
|
const WorkspacesWorkspaceIdRoute = WorkspacesWorkspaceIdRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId',
|
|
|
|
|
path: '/workspaces/$workspaceId',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-24 18:29:37 +01:00
|
|
|
const DevDreamProgressRoute = DevDreamProgressRouteImport.update({
|
|
|
|
|
id: '/_dev/dream-progress',
|
|
|
|
|
path: '/dream-progress',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
const WorkspacesWorkspaceIdWebhooksRoute =
|
|
|
|
|
WorkspacesWorkspaceIdWebhooksRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/webhooks',
|
|
|
|
|
path: '/workspaces/$workspaceId/webhooks',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-04-24 21:30:48 -05:00
|
|
|
const WorkspacesWorkspaceIdSessionsRoute =
|
|
|
|
|
WorkspacesWorkspaceIdSessionsRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/sessions',
|
|
|
|
|
path: '/workspaces/$workspaceId/sessions',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-24 18:29:37 +01:00
|
|
|
const WorkspacesWorkspaceIdQueueRoute =
|
|
|
|
|
WorkspacesWorkspaceIdQueueRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/queue',
|
|
|
|
|
path: '/workspaces/$workspaceId/queue',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-04-24 21:30:48 -05:00
|
|
|
const WorkspacesWorkspaceIdPeersRoute =
|
|
|
|
|
WorkspacesWorkspaceIdPeersRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers',
|
|
|
|
|
path: '/workspaces/$workspaceId/peers',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
const WorkspacesWorkspaceIdDreamsRoute =
|
|
|
|
|
WorkspacesWorkspaceIdDreamsRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/dreams',
|
|
|
|
|
path: '/workspaces/$workspaceId/dreams',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-04-24 21:30:48 -05:00
|
|
|
const WorkspacesWorkspaceIdConclusionsRoute =
|
|
|
|
|
WorkspacesWorkspaceIdConclusionsRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/conclusions',
|
|
|
|
|
path: '/workspaces/$workspaceId/conclusions',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
|
|
|
|
const WorkspacesWorkspaceIdSessionsSessionIdRoute =
|
|
|
|
|
WorkspacesWorkspaceIdSessionsSessionIdRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/sessions_/$sessionId',
|
|
|
|
|
path: '/workspaces/$workspaceId/sessions/$sessionId',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
|
|
|
|
const WorkspacesWorkspaceIdPeersPeerIdRoute =
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId',
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-05-24 18:31:16 +01:00
|
|
|
const WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute =
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdPlaygroundRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId_/playground',
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId/playground',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
2026-04-24 21:30:48 -05:00
|
|
|
const WorkspacesWorkspaceIdPeersPeerIdChatRoute =
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdChatRouteImport.update({
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId_/chat',
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId/chat',
|
|
|
|
|
getParentRoute: () => rootRouteImport,
|
|
|
|
|
} as any)
|
|
|
|
|
|
|
|
|
|
export interface FileRoutesByFullPath {
|
|
|
|
|
'/': typeof IndexRoute
|
2026-05-04 10:12:25 -05:00
|
|
|
'/explore': typeof ExploreRoute
|
2026-05-24 17:21:14 +01:00
|
|
|
'/fleet': typeof FleetRoute
|
2026-05-24 18:28:23 +01:00
|
|
|
'/seed-kits': typeof SeedKitsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/settings': typeof SettingsRoute
|
|
|
|
|
'/workspaces': typeof WorkspacesRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/dream-progress': typeof DevDreamProgressRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId': typeof WorkspacesWorkspaceIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/conclusions': typeof WorkspacesWorkspaceIdConclusionsRoute
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
'/workspaces/$workspaceId/dreams': typeof WorkspacesWorkspaceIdDreamsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/peers': typeof WorkspacesWorkspaceIdPeersRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/workspaces/$workspaceId/queue': typeof WorkspacesWorkspaceIdQueueRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/sessions': typeof WorkspacesWorkspaceIdSessionsRoute
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
'/workspaces/$workspaceId/webhooks': typeof WorkspacesWorkspaceIdWebhooksRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/peers/$peerId': typeof WorkspacesWorkspaceIdPeersPeerIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/sessions/$sessionId': typeof WorkspacesWorkspaceIdSessionsSessionIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/peers/$peerId/chat': typeof WorkspacesWorkspaceIdPeersPeerIdChatRoute
|
2026-05-24 18:31:16 +01:00
|
|
|
'/workspaces/$workspaceId/peers/$peerId/playground': typeof WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
}
|
|
|
|
|
export interface FileRoutesByTo {
|
|
|
|
|
'/': typeof IndexRoute
|
2026-05-04 10:12:25 -05:00
|
|
|
'/explore': typeof ExploreRoute
|
2026-05-24 17:21:14 +01:00
|
|
|
'/fleet': typeof FleetRoute
|
2026-05-24 18:28:23 +01:00
|
|
|
'/seed-kits': typeof SeedKitsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/settings': typeof SettingsRoute
|
|
|
|
|
'/workspaces': typeof WorkspacesRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/dream-progress': typeof DevDreamProgressRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId': typeof WorkspacesWorkspaceIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/conclusions': typeof WorkspacesWorkspaceIdConclusionsRoute
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
'/workspaces/$workspaceId/dreams': typeof WorkspacesWorkspaceIdDreamsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/peers': typeof WorkspacesWorkspaceIdPeersRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/workspaces/$workspaceId/queue': typeof WorkspacesWorkspaceIdQueueRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/sessions': typeof WorkspacesWorkspaceIdSessionsRoute
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
'/workspaces/$workspaceId/webhooks': typeof WorkspacesWorkspaceIdWebhooksRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces/$workspaceId/peers/$peerId': typeof WorkspacesWorkspaceIdPeersPeerIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/sessions/$sessionId': typeof WorkspacesWorkspaceIdSessionsSessionIdRoute
|
|
|
|
|
'/workspaces/$workspaceId/peers/$peerId/chat': typeof WorkspacesWorkspaceIdPeersPeerIdChatRoute
|
2026-05-24 18:31:16 +01:00
|
|
|
'/workspaces/$workspaceId/peers/$peerId/playground': typeof WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
}
|
|
|
|
|
export interface FileRoutesById {
|
|
|
|
|
__root__: typeof rootRouteImport
|
|
|
|
|
'/': typeof IndexRoute
|
2026-05-04 10:12:25 -05:00
|
|
|
'/explore': typeof ExploreRoute
|
2026-05-24 17:21:14 +01:00
|
|
|
'/fleet': typeof FleetRoute
|
2026-05-24 18:28:23 +01:00
|
|
|
'/seed-kits': typeof SeedKitsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/settings': typeof SettingsRoute
|
|
|
|
|
'/workspaces': typeof WorkspacesRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/_dev/dream-progress': typeof DevDreamProgressRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId': typeof WorkspacesWorkspaceIdRoute
|
|
|
|
|
'/workspaces_/$workspaceId_/conclusions': typeof WorkspacesWorkspaceIdConclusionsRoute
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
'/workspaces_/$workspaceId_/dreams': typeof WorkspacesWorkspaceIdDreamsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/peers': typeof WorkspacesWorkspaceIdPeersRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
'/workspaces_/$workspaceId_/queue': typeof WorkspacesWorkspaceIdQueueRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/sessions': typeof WorkspacesWorkspaceIdSessionsRoute
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
'/workspaces_/$workspaceId_/webhooks': typeof WorkspacesWorkspaceIdWebhooksRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId': typeof WorkspacesWorkspaceIdPeersPeerIdRoute
|
|
|
|
|
'/workspaces_/$workspaceId_/sessions_/$sessionId': typeof WorkspacesWorkspaceIdSessionsSessionIdRoute
|
|
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId_/chat': typeof WorkspacesWorkspaceIdPeersPeerIdChatRoute
|
2026-05-24 18:31:16 +01:00
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId_/playground': typeof WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
}
|
|
|
|
|
export interface FileRouteTypes {
|
|
|
|
|
fileRoutesByFullPath: FileRoutesByFullPath
|
|
|
|
|
fullPaths:
|
|
|
|
|
| '/'
|
2026-05-04 10:12:25 -05:00
|
|
|
| '/explore'
|
2026-05-24 17:21:14 +01:00
|
|
|
| '/fleet'
|
2026-05-24 18:28:23 +01:00
|
|
|
| '/seed-kits'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/settings'
|
|
|
|
|
| '/workspaces'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/dream-progress'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId'
|
|
|
|
|
| '/workspaces/$workspaceId/conclusions'
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
| '/workspaces/$workspaceId/dreams'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/peers'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/workspaces/$workspaceId/queue'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/sessions'
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
| '/workspaces/$workspaceId/webhooks'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/peers/$peerId'
|
|
|
|
|
| '/workspaces/$workspaceId/sessions/$sessionId'
|
|
|
|
|
| '/workspaces/$workspaceId/peers/$peerId/chat'
|
2026-05-24 18:31:16 +01:00
|
|
|
| '/workspaces/$workspaceId/peers/$peerId/playground'
|
2026-04-24 21:30:48 -05:00
|
|
|
fileRoutesByTo: FileRoutesByTo
|
|
|
|
|
to:
|
|
|
|
|
| '/'
|
2026-05-04 10:12:25 -05:00
|
|
|
| '/explore'
|
2026-05-24 17:21:14 +01:00
|
|
|
| '/fleet'
|
2026-05-24 18:28:23 +01:00
|
|
|
| '/seed-kits'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/settings'
|
|
|
|
|
| '/workspaces'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/dream-progress'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId'
|
|
|
|
|
| '/workspaces/$workspaceId/conclusions'
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
| '/workspaces/$workspaceId/dreams'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/peers'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/workspaces/$workspaceId/queue'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/sessions'
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
| '/workspaces/$workspaceId/webhooks'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces/$workspaceId/peers/$peerId'
|
|
|
|
|
| '/workspaces/$workspaceId/sessions/$sessionId'
|
|
|
|
|
| '/workspaces/$workspaceId/peers/$peerId/chat'
|
2026-05-24 18:31:16 +01:00
|
|
|
| '/workspaces/$workspaceId/peers/$peerId/playground'
|
2026-04-24 21:30:48 -05:00
|
|
|
id:
|
|
|
|
|
| '__root__'
|
|
|
|
|
| '/'
|
2026-05-04 10:12:25 -05:00
|
|
|
| '/explore'
|
2026-05-24 17:21:14 +01:00
|
|
|
| '/fleet'
|
2026-05-24 18:28:23 +01:00
|
|
|
| '/seed-kits'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/settings'
|
|
|
|
|
| '/workspaces'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/_dev/dream-progress'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces_/$workspaceId'
|
|
|
|
|
| '/workspaces_/$workspaceId_/conclusions'
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
| '/workspaces_/$workspaceId_/dreams'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces_/$workspaceId_/peers'
|
2026-05-24 18:29:37 +01:00
|
|
|
| '/workspaces_/$workspaceId_/queue'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces_/$workspaceId_/sessions'
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
| '/workspaces_/$workspaceId_/webhooks'
|
2026-04-24 21:30:48 -05:00
|
|
|
| '/workspaces_/$workspaceId_/peers_/$peerId'
|
|
|
|
|
| '/workspaces_/$workspaceId_/sessions_/$sessionId'
|
|
|
|
|
| '/workspaces_/$workspaceId_/peers_/$peerId_/chat'
|
2026-05-24 18:31:16 +01:00
|
|
|
| '/workspaces_/$workspaceId_/peers_/$peerId_/playground'
|
2026-04-24 21:30:48 -05:00
|
|
|
fileRoutesById: FileRoutesById
|
|
|
|
|
}
|
|
|
|
|
export interface RootRouteChildren {
|
|
|
|
|
IndexRoute: typeof IndexRoute
|
2026-05-04 10:12:25 -05:00
|
|
|
ExploreRoute: typeof ExploreRoute
|
2026-05-24 17:21:14 +01:00
|
|
|
FleetRoute: typeof FleetRoute
|
2026-05-24 18:28:23 +01:00
|
|
|
SeedKitsRoute: typeof SeedKitsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
SettingsRoute: typeof SettingsRoute
|
|
|
|
|
WorkspacesRoute: typeof WorkspacesRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
DevDreamProgressRoute: typeof DevDreamProgressRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdRoute: typeof WorkspacesWorkspaceIdRoute
|
|
|
|
|
WorkspacesWorkspaceIdConclusionsRoute: typeof WorkspacesWorkspaceIdConclusionsRoute
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
WorkspacesWorkspaceIdDreamsRoute: typeof WorkspacesWorkspaceIdDreamsRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdPeersRoute: typeof WorkspacesWorkspaceIdPeersRoute
|
2026-05-24 18:29:37 +01:00
|
|
|
WorkspacesWorkspaceIdQueueRoute: typeof WorkspacesWorkspaceIdQueueRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdSessionsRoute: typeof WorkspacesWorkspaceIdSessionsRoute
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
WorkspacesWorkspaceIdWebhooksRoute: typeof WorkspacesWorkspaceIdWebhooksRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdPeersPeerIdRoute: typeof WorkspacesWorkspaceIdPeersPeerIdRoute
|
|
|
|
|
WorkspacesWorkspaceIdSessionsSessionIdRoute: typeof WorkspacesWorkspaceIdSessionsSessionIdRoute
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdChatRoute: typeof WorkspacesWorkspaceIdPeersPeerIdChatRoute
|
2026-05-24 18:31:16 +01:00
|
|
|
WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute: typeof WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute
|
2026-04-24 21:30:48 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
declare module '@tanstack/react-router' {
|
|
|
|
|
interface FileRoutesByPath {
|
|
|
|
|
'/workspaces': {
|
|
|
|
|
id: '/workspaces'
|
|
|
|
|
path: '/workspaces'
|
|
|
|
|
fullPath: '/workspaces'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
|
|
|
|
'/settings': {
|
|
|
|
|
id: '/settings'
|
|
|
|
|
path: '/settings'
|
|
|
|
|
fullPath: '/settings'
|
|
|
|
|
preLoaderRoute: typeof SettingsRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-24 18:28:23 +01:00
|
|
|
'/seed-kits': {
|
|
|
|
|
id: '/seed-kits'
|
|
|
|
|
path: '/seed-kits'
|
|
|
|
|
fullPath: '/seed-kits'
|
|
|
|
|
preLoaderRoute: typeof SeedKitsRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-24 17:21:14 +01:00
|
|
|
'/fleet': {
|
|
|
|
|
id: '/fleet'
|
|
|
|
|
path: '/fleet'
|
|
|
|
|
fullPath: '/fleet'
|
|
|
|
|
preLoaderRoute: typeof FleetRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-04 10:12:25 -05:00
|
|
|
'/explore': {
|
|
|
|
|
id: '/explore'
|
|
|
|
|
path: '/explore'
|
|
|
|
|
fullPath: '/explore'
|
|
|
|
|
preLoaderRoute: typeof ExploreRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-04-24 21:30:48 -05:00
|
|
|
'/': {
|
|
|
|
|
id: '/'
|
|
|
|
|
path: '/'
|
|
|
|
|
fullPath: '/'
|
|
|
|
|
preLoaderRoute: typeof IndexRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
|
|
|
|
'/workspaces_/$workspaceId': {
|
|
|
|
|
id: '/workspaces_/$workspaceId'
|
|
|
|
|
path: '/workspaces/$workspaceId'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-24 18:29:37 +01:00
|
|
|
'/_dev/dream-progress': {
|
|
|
|
|
id: '/_dev/dream-progress'
|
|
|
|
|
path: '/dream-progress'
|
|
|
|
|
fullPath: '/dream-progress'
|
|
|
|
|
preLoaderRoute: typeof DevDreamProgressRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
'/workspaces_/$workspaceId_/webhooks': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/webhooks'
|
|
|
|
|
path: '/workspaces/$workspaceId/webhooks'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/webhooks'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdWebhooksRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/sessions': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/sessions'
|
|
|
|
|
path: '/workspaces/$workspaceId/sessions'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/sessions'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdSessionsRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-24 18:29:37 +01:00
|
|
|
'/workspaces_/$workspaceId_/queue': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/queue'
|
|
|
|
|
path: '/workspaces/$workspaceId/queue'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/queue'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdQueueRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/peers': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers'
|
|
|
|
|
path: '/workspaces/$workspaceId/peers'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/peers'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdPeersRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
'/workspaces_/$workspaceId_/dreams': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/dreams'
|
|
|
|
|
path: '/workspaces/$workspaceId/dreams'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/dreams'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdDreamsRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/conclusions': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/conclusions'
|
|
|
|
|
path: '/workspaces/$workspaceId/conclusions'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/conclusions'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdConclusionsRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
|
|
|
|
'/workspaces_/$workspaceId_/sessions_/$sessionId': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/sessions_/$sessionId'
|
|
|
|
|
path: '/workspaces/$workspaceId/sessions/$sessionId'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/sessions/$sessionId'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdSessionsSessionIdRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
|
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId'
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/peers/$peerId'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdPeersPeerIdRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-05-24 18:31:16 +01:00
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId_/playground': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId_/playground'
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId/playground'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/peers/$peerId/playground'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdPeersPeerIdPlaygroundRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
2026-04-24 21:30:48 -05:00
|
|
|
'/workspaces_/$workspaceId_/peers_/$peerId_/chat': {
|
|
|
|
|
id: '/workspaces_/$workspaceId_/peers_/$peerId_/chat'
|
|
|
|
|
path: '/workspaces/$workspaceId/peers/$peerId/chat'
|
|
|
|
|
fullPath: '/workspaces/$workspaceId/peers/$peerId/chat'
|
|
|
|
|
preLoaderRoute: typeof WorkspacesWorkspaceIdPeersPeerIdChatRouteImport
|
|
|
|
|
parentRoute: typeof rootRouteImport
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const rootRouteChildren: RootRouteChildren = {
|
|
|
|
|
IndexRoute: IndexRoute,
|
2026-05-04 10:12:25 -05:00
|
|
|
ExploreRoute: ExploreRoute,
|
2026-05-24 17:21:14 +01:00
|
|
|
FleetRoute: FleetRoute,
|
2026-05-24 18:28:23 +01:00
|
|
|
SeedKitsRoute: SeedKitsRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
SettingsRoute: SettingsRoute,
|
|
|
|
|
WorkspacesRoute: WorkspacesRoute,
|
2026-05-24 18:29:37 +01:00
|
|
|
DevDreamProgressRoute: DevDreamProgressRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdRoute: WorkspacesWorkspaceIdRoute,
|
|
|
|
|
WorkspacesWorkspaceIdConclusionsRoute: WorkspacesWorkspaceIdConclusionsRoute,
|
feat(web): add Dream Output Viewer
Dreams are currently a black box — to benchmark Tier L models on dreamer
induction quality we need to see what each model produced. This adds a
workspace-scoped /dreams route that surfaces every dream run as a
group of conclusions split into explicit / deductive / inductive
columns, with click-to-expand premise trees.
What's here:
- `lib/dreams.ts`: pure helpers. `clusterConclusionsIntoDreams` groups a
raw conclusions list into per-pair bursts using a configurable time
window (default 60s). `expandPremiseTree` walks `reasoning_tree` first
and falls back to a flat `premises` ID list, with cycle detection and
a depth cap. Defines an `ExtendedConclusion` type that augments the
generated schema with `conclusion_type`, `premises`, and
`reasoning_tree` — Honcho's migration f1a2b3c4d5e6 added those
columns but `schema.d.ts` doesn't expose them yet, so the UI degrades
gracefully (unknown types fall into "explicit").
- `api/queries.ts`: new `useDreams` hook that paginates the conclusions
list endpoint up to a configurable cap (default 400) and hands the
raw list to the UI for clustering. New `dreams` query key.
- `components/dreams/`:
- `DreamList.tsx` — route entry. Shows recent dreams as rows with
timestamp, observer→observed pair, and per-type counts. Selecting
a row expands an inline detail panel above the list.
- `DreamDetail.tsx` — three-column view (explicit / deductive /
inductive). Each inductive conclusion has a "Show premises" button
that expands the reasoning chain.
- `PremiseTree.tsx` — recursive premise renderer with type badges,
cycle indicator, and graceful handling of premises that fall
outside the loaded page.
- Routing: `routes/workspaces_.$workspaceId_.dreams.tsx` registers the
page; routeTree.gen.ts regenerated.
- Sidebar: new "Dreams" entry between Conclusions and Webhooks
(MoonStar icon to distinguish from the dark-mode Moon).
- Breadcrumb: "dreams" added to SECTION_LABELS so the trail resolves.
Tests (vitest, 14 new):
- clustering: empty input; same-pair burst within window; gap exceeds
threshold → split; different pairs don't merge even with overlapping
timestamps; custom gap window; newest-first ordering; counts default
unknown types to explicit.
- premise tree: empty children for no premises; flat list → direct
children; multi-level reasoning_tree recursion; missing premise
flagged (not in loaded page); cycle detection halts recursion;
maxDepth cap; reasoning_tree preferred over flat premises.
Verified manually in the preview: route mounts, sidebar/breadcrumb
resolve, error path renders cleanly, typecheck + lint + dream tests
all clean. The unrelated `app.test.tsx` failure is pre-existing on
main.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:29:26 +01:00
|
|
|
WorkspacesWorkspaceIdDreamsRoute: WorkspacesWorkspaceIdDreamsRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdPeersRoute: WorkspacesWorkspaceIdPeersRoute,
|
2026-05-24 18:29:37 +01:00
|
|
|
WorkspacesWorkspaceIdQueueRoute: WorkspacesWorkspaceIdQueueRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdSessionsRoute: WorkspacesWorkspaceIdSessionsRoute,
|
feat: wire all remaining API endpoints
- src/api/keys.ts: QK singleton for all 20+ query key patterns
- src/api/queries.ts: rewritten with QK + full mutation coverage:
deleteWorkspace, updateWorkspace, scheduleDream,
updatePeer, setPeerCard, searchPeer,
deleteSession, updateSession, cloneSession, searchSession,
createMessages, updateMessage,
useSessionPeers, addPeersToSession, setSessionPeers,
removePeersFromSession, setPeerConfig,
createConclusion, deleteConclusion,
useWebhooks, createWebhook, deleteWebhook, testWebhook,
createKey
Shared primitives (just-in-time):
- ConfirmDialog: animated modal with keyboard/click-out dismiss
- FormModal: reusable modal shell
- InlineEditor: click-to-edit with commit/cancel
New surfaces:
- WorkspaceDetail: delete + schedule dream buttons
- ScheduleDreamModal: Zod-validated observer/session form
- WebhookManager: full CRUD + test emit (new /webhooks route)
- SessionDetail: delete, clone, session search, peer membership tab
- PeerDetail: editable peer card, semantic search tab
- ConclusionBrowser: create conclusion modal (Zod), per-row delete
2026-04-24 11:25:19 -05:00
|
|
|
WorkspacesWorkspaceIdWebhooksRoute: WorkspacesWorkspaceIdWebhooksRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
WorkspacesWorkspaceIdPeersPeerIdRoute: WorkspacesWorkspaceIdPeersPeerIdRoute,
|
|
|
|
|
WorkspacesWorkspaceIdSessionsSessionIdRoute:
|
|
|
|
|
WorkspacesWorkspaceIdSessionsSessionIdRoute,
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdChatRoute:
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdChatRoute,
|
2026-05-24 18:31:16 +01:00
|
|
|
WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute:
|
|
|
|
|
WorkspacesWorkspaceIdPeersPeerIdPlaygroundRoute,
|
2026-04-24 21:30:48 -05:00
|
|
|
}
|
|
|
|
|
export const routeTree = rootRouteImport
|
|
|
|
|
._addFileChildren(rootRouteChildren)
|
|
|
|
|
._addFileTypes<FileRouteTypes>()
|