@sentry/junior-dashboard 0.272.0 → 0.273.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +2 -2
- package/dist/client.js +69 -67
- package/dist/index.js +2 -2
- package/dist/tailwind.css +1 -1
- package/package.json +4 -4
- package/src/client/App.tsx +440 -430
- package/src/client/components/JuniorLogo.tsx +1 -1
- package/src/client/components/ProfileMenu.tsx +4 -41
- package/src/client/components/layout/DashboardChrome.tsx +9 -4
- package/src/client/components/layout/DashboardHeader.tsx +11 -51
- package/src/client/components/layout/NavRail.tsx +156 -0
- package/src/client/components/ui/sidebar.tsx +336 -0
- package/src/client/conversations/ConversationPage.tsx +3 -0
- package/src/client/conversations/PendingMailboxStack.tsx +22 -9
- package/src/client/conversations/TranscriptMessageShell.tsx +19 -8
- package/src/client/conversations/TranscriptMessageView.tsx +8 -1
- package/src/client/conversations/TranscriptTurnContextView.tsx +1 -1
- package/src/client/conversations/conversationOutbox.ts +19 -0
- package/src/client/conversations/eventTranscript.ts +6 -0
- package/src/client/conversations/queries.ts +1 -17
- package/src/client/conversations/transcript.ts +12 -2
- package/src/client/format.ts +8 -1
- package/src/client/review-desk/ReviewDeskPage.tsx +5 -1
- package/src/client/review-desk/queries.ts +4 -1
- package/src/client/types.ts +2 -0
package/src/client/App.tsx
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
DashboardChromeProvider,
|
|
22
22
|
} from "./components/layout/DashboardChrome";
|
|
23
23
|
import { DashboardHeader } from "./components/layout/DashboardHeader";
|
|
24
|
+
import { NavRail, NavRailProvider } from "./components/layout/NavRail";
|
|
24
25
|
import { VisualViewportShell } from "./components/layout/VisualViewportShell";
|
|
25
26
|
import {
|
|
26
27
|
automationPath,
|
|
@@ -201,463 +202,472 @@ export function DashboardShell() {
|
|
|
201
202
|
|
|
202
203
|
return (
|
|
203
204
|
<DashboardChromeProvider>
|
|
204
|
-
<
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
<VersionDriftBanner serverVersion={serverVersion} />
|
|
217
|
-
<ConnectionBanner />
|
|
218
|
-
</>
|
|
205
|
+
<NavRailProvider>
|
|
206
|
+
<NavRail
|
|
207
|
+
navItems={primaryNavItems}
|
|
208
|
+
profile={
|
|
209
|
+
loggedIn ? (
|
|
210
|
+
<ProfileMenu
|
|
211
|
+
identity={data!.me}
|
|
212
|
+
onSignOut={signOut}
|
|
213
|
+
spend={personalSpendQuery.data}
|
|
214
|
+
userPages={userPages}
|
|
215
|
+
/>
|
|
216
|
+
) : undefined
|
|
219
217
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
218
|
+
workspaceActive={workspace}
|
|
219
|
+
/>
|
|
220
|
+
<VisualViewportShell
|
|
221
|
+
className="min-w-0 flex-1 bg-dashboard-bg"
|
|
222
|
+
enabled={
|
|
223
|
+
workspace ||
|
|
224
|
+
location.pathname === "/review" ||
|
|
225
|
+
hasAutomationDetailsFrame(location.pathname) ||
|
|
226
|
+
isMemoryLibraryPath(location.pathname)
|
|
227
|
+
}
|
|
228
|
+
>
|
|
229
|
+
<DashboardChrome
|
|
230
|
+
banner={
|
|
231
|
+
<>
|
|
232
|
+
<VersionDriftBanner serverVersion={serverVersion} />
|
|
233
|
+
<ConnectionBanner />
|
|
234
|
+
</>
|
|
235
|
+
}
|
|
236
|
+
header={
|
|
237
|
+
<DashboardHeader
|
|
238
|
+
mobileBackTo={conversationId ? "/" : undefined}
|
|
239
|
+
mobileTitle={mobileConversationTitle}
|
|
240
|
+
mobileNavigationOpen={mobileNavigationOpen}
|
|
241
|
+
navItems={primaryNavItems}
|
|
242
|
+
onMobileNavigationOpenChange={setMobileNavigationOpen}
|
|
243
|
+
mobileIdentity={
|
|
244
|
+
loggedIn ? (
|
|
245
|
+
<ProfileMenu
|
|
246
|
+
identity={data!.me}
|
|
247
|
+
onSignOut={signOut}
|
|
248
|
+
spend={personalSpendQuery.data}
|
|
249
|
+
userPages={userPages}
|
|
250
|
+
variant="sheet-identity"
|
|
251
|
+
/>
|
|
252
|
+
) : undefined
|
|
253
|
+
}
|
|
254
|
+
mobileProfile={
|
|
255
|
+
loggedIn ? (
|
|
256
|
+
<ProfileMenu
|
|
257
|
+
identity={data!.me}
|
|
258
|
+
onSignOut={signOut}
|
|
259
|
+
spend={personalSpendQuery.data}
|
|
260
|
+
userPages={userPages}
|
|
261
|
+
variant="sheet-links"
|
|
262
|
+
/>
|
|
263
|
+
) : undefined
|
|
264
|
+
}
|
|
265
|
+
mobileSpend={
|
|
266
|
+
loggedIn ? (
|
|
267
|
+
<ProfileMenu
|
|
268
|
+
identity={data!.me}
|
|
269
|
+
onSignOut={signOut}
|
|
270
|
+
spend={personalSpendQuery.data}
|
|
271
|
+
userPages={userPages}
|
|
272
|
+
variant="sheet-spend"
|
|
273
|
+
/>
|
|
274
|
+
) : undefined
|
|
275
|
+
}
|
|
276
|
+
version={data?.config.version}
|
|
277
|
+
workspaceActive={workspace}
|
|
278
|
+
/>
|
|
279
|
+
}
|
|
280
|
+
/>
|
|
281
|
+
<Routes>
|
|
282
|
+
<Route element={<LegacyAutomationsRedirect />} path="/tasks" />
|
|
283
|
+
<Route element={<LegacyAutomationsRedirect />} path="/tasks/*" />
|
|
284
|
+
<Route
|
|
285
|
+
element={<LegacyAutomationExecutionsRedirect />}
|
|
286
|
+
path="/automations/:automationId/executions"
|
|
287
|
+
/>
|
|
288
|
+
<Route
|
|
289
|
+
element={
|
|
290
|
+
loading || loggedIn ? (
|
|
291
|
+
<AutomationPage enabled={loggedIn} tab="runs" />
|
|
292
|
+
) : (
|
|
293
|
+
<Navigate replace to="/" />
|
|
294
|
+
)
|
|
295
|
+
}
|
|
296
|
+
path="/automations/:automationId/runs"
|
|
297
|
+
/>
|
|
298
|
+
<Route
|
|
299
|
+
element={
|
|
300
|
+
loading || loggedIn ? (
|
|
301
|
+
<AutomationPage enabled={loggedIn} tab="versions" />
|
|
302
|
+
) : (
|
|
303
|
+
<Navigate replace to="/" />
|
|
304
|
+
)
|
|
305
|
+
}
|
|
306
|
+
path="/automations/:automationId/versions"
|
|
307
|
+
/>
|
|
308
|
+
<Route
|
|
309
|
+
element={
|
|
310
|
+
loading || loggedIn ? (
|
|
311
|
+
<AutomationPage enabled={loggedIn} tab="edit" />
|
|
312
|
+
) : (
|
|
313
|
+
<Navigate replace to="/" />
|
|
314
|
+
)
|
|
315
|
+
}
|
|
316
|
+
path="/automations/:automationId/edit"
|
|
317
|
+
/>
|
|
318
|
+
<Route
|
|
319
|
+
element={
|
|
320
|
+
loading ? (
|
|
321
|
+
<AutomationsPageLayout>
|
|
322
|
+
<AutomationsRouteLoading
|
|
323
|
+
description="Newest runs across your automations and automations in public destinations."
|
|
324
|
+
label="Loading automation runs"
|
|
325
|
+
title="Runs"
|
|
326
|
+
variant="list"
|
|
327
|
+
/>
|
|
328
|
+
</AutomationsPageLayout>
|
|
329
|
+
) : loggedIn ? (
|
|
330
|
+
<AutomationsPageLayout>
|
|
331
|
+
<AutomationRunsPage enabled={loggedIn} />
|
|
332
|
+
</AutomationsPageLayout>
|
|
333
|
+
) : (
|
|
334
|
+
<Navigate replace to="/" />
|
|
335
|
+
)
|
|
336
|
+
}
|
|
337
|
+
path="/automations/runs"
|
|
338
|
+
/>
|
|
339
|
+
<Route
|
|
340
|
+
element={
|
|
341
|
+
loading ? (
|
|
342
|
+
<AutomationsPageLayout>
|
|
343
|
+
<AutomationsRouteLoading
|
|
344
|
+
description="Find and manage automations across your linked workspaces."
|
|
345
|
+
label="Loading automations"
|
|
346
|
+
title="All automations"
|
|
347
|
+
variant="list"
|
|
348
|
+
/>
|
|
349
|
+
</AutomationsPageLayout>
|
|
350
|
+
) : loggedIn ? (
|
|
351
|
+
<AutomationsPageLayout>
|
|
352
|
+
<AutomationsPage enabled={loggedIn} view="list" />
|
|
353
|
+
</AutomationsPageLayout>
|
|
354
|
+
) : (
|
|
355
|
+
<Navigate replace to="/" />
|
|
356
|
+
)
|
|
357
|
+
}
|
|
358
|
+
path="/automations/list"
|
|
359
|
+
/>
|
|
360
|
+
<Route
|
|
361
|
+
element={
|
|
362
|
+
loading || loggedIn ? (
|
|
363
|
+
<AutomationPage enabled={loggedIn} tab="overview" />
|
|
364
|
+
) : (
|
|
365
|
+
<Navigate replace to="/" />
|
|
366
|
+
)
|
|
367
|
+
}
|
|
368
|
+
path="/automations/:automationId"
|
|
369
|
+
/>
|
|
370
|
+
<Route
|
|
371
|
+
element={
|
|
372
|
+
loading ? (
|
|
373
|
+
<AutomationsPageLayout>
|
|
374
|
+
<AutomationsRouteLoading
|
|
375
|
+
description="Scheduled and event-driven work created by users."
|
|
376
|
+
label="Loading automations"
|
|
377
|
+
title="Automations"
|
|
378
|
+
variant="stats"
|
|
379
|
+
/>
|
|
380
|
+
</AutomationsPageLayout>
|
|
381
|
+
) : loggedIn ? (
|
|
382
|
+
<AutomationsPageLayout>
|
|
383
|
+
<AutomationsPage enabled={loggedIn} view="overview" />
|
|
384
|
+
</AutomationsPageLayout>
|
|
385
|
+
) : (
|
|
386
|
+
<Navigate replace to="/" />
|
|
387
|
+
)
|
|
388
|
+
}
|
|
389
|
+
path="/automations"
|
|
390
|
+
/>
|
|
391
|
+
<Route
|
|
392
|
+
element={<LegacySystemRedirect section="locations" />}
|
|
393
|
+
path="/locations"
|
|
394
|
+
/>
|
|
395
|
+
<Route
|
|
396
|
+
element={<LegacySystemRedirect section="locations" />}
|
|
397
|
+
path="/locations/:locationId"
|
|
398
|
+
/>
|
|
399
|
+
<Route
|
|
400
|
+
element={
|
|
401
|
+
loading ? (
|
|
402
|
+
<SystemRouteLoading
|
|
403
|
+
description="Public destinations and their conversation activity."
|
|
404
|
+
label="Loading locations"
|
|
405
|
+
title="Locations"
|
|
406
|
+
variant="stats"
|
|
235
407
|
/>
|
|
236
|
-
) :
|
|
408
|
+
) : (
|
|
409
|
+
<LocationsPage />
|
|
410
|
+
)
|
|
237
411
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
412
|
+
path="/system/locations"
|
|
413
|
+
/>
|
|
414
|
+
<Route
|
|
415
|
+
element={
|
|
416
|
+
loading ? (
|
|
417
|
+
<SystemPageLayout>
|
|
418
|
+
<LoadingView label="Loading location" />
|
|
419
|
+
</SystemPageLayout>
|
|
420
|
+
) : (
|
|
421
|
+
<LocationDetailPage />
|
|
422
|
+
)
|
|
423
|
+
}
|
|
424
|
+
path="/system/locations/:locationId"
|
|
425
|
+
/>
|
|
426
|
+
<Route
|
|
427
|
+
element={
|
|
428
|
+
loading ? (
|
|
429
|
+
<ConversationWorkspaceLoading detail={false} />
|
|
430
|
+
) : data ? (
|
|
431
|
+
<ConversationWorkspace />
|
|
432
|
+
) : (
|
|
433
|
+
<LoadingView
|
|
434
|
+
label={query.error?.message ?? "Dashboard unavailable"}
|
|
246
435
|
/>
|
|
247
|
-
)
|
|
436
|
+
)
|
|
248
437
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
438
|
+
path="/"
|
|
439
|
+
/>
|
|
440
|
+
<Route
|
|
441
|
+
element={
|
|
442
|
+
loading ? (
|
|
443
|
+
<ReviewDeskLoading />
|
|
444
|
+
) : loggedIn ? (
|
|
445
|
+
<ReviewDeskPage />
|
|
446
|
+
) : (
|
|
447
|
+
<Navigate replace to="/" />
|
|
448
|
+
)
|
|
449
|
+
}
|
|
450
|
+
path="/review"
|
|
451
|
+
/>
|
|
452
|
+
<Route element={<CodePage />} path="/code" />
|
|
453
|
+
{codeRepositoryTabs.map((tab) => (
|
|
454
|
+
<Route
|
|
455
|
+
element={<RepositoryPage tab={tab} />}
|
|
456
|
+
key={tab}
|
|
457
|
+
path={
|
|
458
|
+
tab === "overview"
|
|
459
|
+
? "/code/:repositoryId"
|
|
460
|
+
: `/code/:repositoryId/${tab}`
|
|
461
|
+
}
|
|
462
|
+
/>
|
|
463
|
+
))}
|
|
464
|
+
<Route
|
|
465
|
+
element={<Navigate replace to="/" />}
|
|
466
|
+
path="/conversations/new"
|
|
467
|
+
/>
|
|
468
|
+
<Route
|
|
469
|
+
element={
|
|
470
|
+
loading ? (
|
|
471
|
+
<ConversationWorkspaceLoading detail />
|
|
472
|
+
) : data ? (
|
|
473
|
+
<ConversationWorkspace />
|
|
474
|
+
) : (
|
|
475
|
+
<LoadingView
|
|
476
|
+
label={query.error?.message ?? "Dashboard unavailable"}
|
|
257
477
|
/>
|
|
258
|
-
)
|
|
478
|
+
)
|
|
479
|
+
}
|
|
480
|
+
path="/conversations/:conversationId"
|
|
481
|
+
/>
|
|
482
|
+
<Route
|
|
483
|
+
element={<Navigate replace to="/" />}
|
|
484
|
+
path="/conversations"
|
|
485
|
+
/>
|
|
486
|
+
<Route
|
|
487
|
+
element={<LegacySystemRedirect section="people" />}
|
|
488
|
+
path="/people"
|
|
489
|
+
/>
|
|
490
|
+
<Route
|
|
491
|
+
element={
|
|
492
|
+
loading ? (
|
|
493
|
+
<LoadingView label="Loading profile" />
|
|
494
|
+
) : (
|
|
495
|
+
<PersonProfilePage />
|
|
496
|
+
)
|
|
259
497
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
498
|
+
path="/people/:email"
|
|
499
|
+
/>
|
|
500
|
+
<Route
|
|
501
|
+
element={
|
|
502
|
+
loading ? (
|
|
503
|
+
<SystemRouteLoading
|
|
504
|
+
description="People, activity, and model spend."
|
|
505
|
+
label="Loading people"
|
|
506
|
+
title="People"
|
|
507
|
+
variant="stats"
|
|
267
508
|
/>
|
|
268
|
-
) :
|
|
509
|
+
) : (
|
|
510
|
+
<PeoplePage />
|
|
511
|
+
)
|
|
269
512
|
}
|
|
270
|
-
|
|
271
|
-
workspaceActive={workspace}
|
|
513
|
+
path="/system/people"
|
|
272
514
|
/>
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
path="/automations/:automationId/executions"
|
|
281
|
-
/>
|
|
282
|
-
<Route
|
|
283
|
-
element={
|
|
284
|
-
loading || loggedIn ? (
|
|
285
|
-
<AutomationPage enabled={loggedIn} tab="runs" />
|
|
286
|
-
) : (
|
|
287
|
-
<Navigate replace to="/" />
|
|
288
|
-
)
|
|
289
|
-
}
|
|
290
|
-
path="/automations/:automationId/runs"
|
|
291
|
-
/>
|
|
292
|
-
<Route
|
|
293
|
-
element={
|
|
294
|
-
loading || loggedIn ? (
|
|
295
|
-
<AutomationPage enabled={loggedIn} tab="versions" />
|
|
296
|
-
) : (
|
|
297
|
-
<Navigate replace to="/" />
|
|
298
|
-
)
|
|
299
|
-
}
|
|
300
|
-
path="/automations/:automationId/versions"
|
|
301
|
-
/>
|
|
302
|
-
<Route
|
|
303
|
-
element={
|
|
304
|
-
loading || loggedIn ? (
|
|
305
|
-
<AutomationPage enabled={loggedIn} tab="edit" />
|
|
306
|
-
) : (
|
|
307
|
-
<Navigate replace to="/" />
|
|
308
|
-
)
|
|
309
|
-
}
|
|
310
|
-
path="/automations/:automationId/edit"
|
|
311
|
-
/>
|
|
312
|
-
<Route
|
|
313
|
-
element={
|
|
314
|
-
loading ? (
|
|
315
|
-
<AutomationsPageLayout>
|
|
316
|
-
<AutomationsRouteLoading
|
|
317
|
-
description="Newest runs across your automations and automations in public destinations."
|
|
318
|
-
label="Loading automation runs"
|
|
319
|
-
title="Runs"
|
|
515
|
+
<Route
|
|
516
|
+
element={
|
|
517
|
+
loading ? (
|
|
518
|
+
<SystemRouteLoading
|
|
519
|
+
description="Repository recipes Junior can switch into."
|
|
520
|
+
label="Loading Workspaces"
|
|
521
|
+
title="Workspaces"
|
|
320
522
|
variant="list"
|
|
321
523
|
/>
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
524
|
+
) : (
|
|
525
|
+
<WorkspacesPage />
|
|
526
|
+
)
|
|
527
|
+
}
|
|
528
|
+
path="/system/workspaces"
|
|
529
|
+
/>
|
|
530
|
+
<Route
|
|
531
|
+
element={
|
|
532
|
+
loading ? (
|
|
533
|
+
<SystemPageLayout>
|
|
534
|
+
<LoadingView label="Loading Workspace" />
|
|
535
|
+
</SystemPageLayout>
|
|
536
|
+
) : (
|
|
537
|
+
<WorkspaceFormPage />
|
|
538
|
+
)
|
|
539
|
+
}
|
|
540
|
+
path="/system/workspaces/new"
|
|
541
|
+
/>
|
|
542
|
+
<Route
|
|
543
|
+
element={
|
|
544
|
+
loading ? (
|
|
545
|
+
<SystemRouteLoading
|
|
546
|
+
description="Repository recipes Junior can switch into."
|
|
547
|
+
label="Loading Workspaces"
|
|
548
|
+
title="Workspaces"
|
|
341
549
|
variant="list"
|
|
342
550
|
/>
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
<Navigate replace to="/" />
|
|
350
|
-
)
|
|
351
|
-
}
|
|
352
|
-
path="/automations/list"
|
|
353
|
-
/>
|
|
354
|
-
<Route
|
|
355
|
-
element={
|
|
356
|
-
loading || loggedIn ? (
|
|
357
|
-
<AutomationPage enabled={loggedIn} tab="overview" />
|
|
358
|
-
) : (
|
|
359
|
-
<Navigate replace to="/" />
|
|
360
|
-
)
|
|
361
|
-
}
|
|
362
|
-
path="/automations/:automationId"
|
|
363
|
-
/>
|
|
364
|
-
<Route
|
|
365
|
-
element={
|
|
366
|
-
loading ? (
|
|
367
|
-
<AutomationsPageLayout>
|
|
368
|
-
<AutomationsRouteLoading
|
|
369
|
-
description="Scheduled and event-driven work created by users."
|
|
370
|
-
label="Loading automations"
|
|
371
|
-
title="Automations"
|
|
372
|
-
variant="stats"
|
|
373
|
-
/>
|
|
374
|
-
</AutomationsPageLayout>
|
|
375
|
-
) : loggedIn ? (
|
|
376
|
-
<AutomationsPageLayout>
|
|
377
|
-
<AutomationsPage enabled={loggedIn} view="overview" />
|
|
378
|
-
</AutomationsPageLayout>
|
|
379
|
-
) : (
|
|
380
|
-
<Navigate replace to="/" />
|
|
381
|
-
)
|
|
382
|
-
}
|
|
383
|
-
path="/automations"
|
|
384
|
-
/>
|
|
385
|
-
<Route
|
|
386
|
-
element={<LegacySystemRedirect section="locations" />}
|
|
387
|
-
path="/locations"
|
|
388
|
-
/>
|
|
389
|
-
<Route
|
|
390
|
-
element={<LegacySystemRedirect section="locations" />}
|
|
391
|
-
path="/locations/:locationId"
|
|
392
|
-
/>
|
|
393
|
-
<Route
|
|
394
|
-
element={
|
|
395
|
-
loading ? (
|
|
396
|
-
<SystemRouteLoading
|
|
397
|
-
description="Public destinations and their conversation activity."
|
|
398
|
-
label="Loading locations"
|
|
399
|
-
title="Locations"
|
|
400
|
-
variant="stats"
|
|
401
|
-
/>
|
|
402
|
-
) : (
|
|
403
|
-
<LocationsPage />
|
|
404
|
-
)
|
|
405
|
-
}
|
|
406
|
-
path="/system/locations"
|
|
407
|
-
/>
|
|
408
|
-
<Route
|
|
409
|
-
element={
|
|
410
|
-
loading ? (
|
|
411
|
-
<SystemPageLayout>
|
|
412
|
-
<LoadingView label="Loading location" />
|
|
413
|
-
</SystemPageLayout>
|
|
414
|
-
) : (
|
|
415
|
-
<LocationDetailPage />
|
|
416
|
-
)
|
|
417
|
-
}
|
|
418
|
-
path="/system/locations/:locationId"
|
|
419
|
-
/>
|
|
420
|
-
<Route
|
|
421
|
-
element={
|
|
422
|
-
loading ? (
|
|
423
|
-
<ConversationWorkspaceLoading detail={false} />
|
|
424
|
-
) : data ? (
|
|
425
|
-
<ConversationWorkspace />
|
|
426
|
-
) : (
|
|
427
|
-
<LoadingView
|
|
428
|
-
label={query.error?.message ?? "Dashboard unavailable"}
|
|
429
|
-
/>
|
|
430
|
-
)
|
|
431
|
-
}
|
|
432
|
-
path="/"
|
|
433
|
-
/>
|
|
434
|
-
<Route
|
|
435
|
-
element={
|
|
436
|
-
loading ? (
|
|
437
|
-
<ReviewDeskLoading />
|
|
438
|
-
) : loggedIn ? (
|
|
439
|
-
<ReviewDeskPage />
|
|
440
|
-
) : (
|
|
441
|
-
<Navigate replace to="/" />
|
|
442
|
-
)
|
|
443
|
-
}
|
|
444
|
-
path="/review"
|
|
445
|
-
/>
|
|
446
|
-
<Route element={<CodePage />} path="/code" />
|
|
447
|
-
{codeRepositoryTabs.map((tab) => (
|
|
551
|
+
) : (
|
|
552
|
+
<WorkspacesPage />
|
|
553
|
+
)
|
|
554
|
+
}
|
|
555
|
+
path="/system/workspaces/:workspaceId"
|
|
556
|
+
/>
|
|
448
557
|
<Route
|
|
449
|
-
element={
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
558
|
+
element={
|
|
559
|
+
loading ? (
|
|
560
|
+
<SystemPageLayout>
|
|
561
|
+
<LoadingView label="Loading Workspace" />
|
|
562
|
+
</SystemPageLayout>
|
|
563
|
+
) : (
|
|
564
|
+
<WorkspaceFormPage />
|
|
565
|
+
)
|
|
455
566
|
}
|
|
567
|
+
path="/system/workspaces/:workspaceId/edit"
|
|
456
568
|
/>
|
|
457
|
-
))}
|
|
458
|
-
<Route
|
|
459
|
-
element={<Navigate replace to="/" />}
|
|
460
|
-
path="/conversations/new"
|
|
461
|
-
/>
|
|
462
|
-
<Route
|
|
463
|
-
element={
|
|
464
|
-
loading ? (
|
|
465
|
-
<ConversationWorkspaceLoading detail />
|
|
466
|
-
) : data ? (
|
|
467
|
-
<ConversationWorkspace />
|
|
468
|
-
) : (
|
|
469
|
-
<LoadingView
|
|
470
|
-
label={query.error?.message ?? "Dashboard unavailable"}
|
|
471
|
-
/>
|
|
472
|
-
)
|
|
473
|
-
}
|
|
474
|
-
path="/conversations/:conversationId"
|
|
475
|
-
/>
|
|
476
|
-
<Route element={<Navigate replace to="/" />} path="/conversations" />
|
|
477
|
-
<Route
|
|
478
|
-
element={<LegacySystemRedirect section="people" />}
|
|
479
|
-
path="/people"
|
|
480
|
-
/>
|
|
481
|
-
<Route
|
|
482
|
-
element={
|
|
483
|
-
loading ? (
|
|
484
|
-
<LoadingView label="Loading profile" />
|
|
485
|
-
) : (
|
|
486
|
-
<PersonProfilePage />
|
|
487
|
-
)
|
|
488
|
-
}
|
|
489
|
-
path="/people/:email"
|
|
490
|
-
/>
|
|
491
|
-
<Route
|
|
492
|
-
element={
|
|
493
|
-
loading ? (
|
|
494
|
-
<SystemRouteLoading
|
|
495
|
-
description="People, activity, and model spend."
|
|
496
|
-
label="Loading people"
|
|
497
|
-
title="People"
|
|
498
|
-
variant="stats"
|
|
499
|
-
/>
|
|
500
|
-
) : (
|
|
501
|
-
<PeoplePage />
|
|
502
|
-
)
|
|
503
|
-
}
|
|
504
|
-
path="/system/people"
|
|
505
|
-
/>
|
|
506
|
-
<Route
|
|
507
|
-
element={
|
|
508
|
-
loading ? (
|
|
509
|
-
<SystemRouteLoading
|
|
510
|
-
description="Repository recipes Junior can switch into."
|
|
511
|
-
label="Loading Workspaces"
|
|
512
|
-
title="Workspaces"
|
|
513
|
-
variant="list"
|
|
514
|
-
/>
|
|
515
|
-
) : (
|
|
516
|
-
<WorkspacesPage />
|
|
517
|
-
)
|
|
518
|
-
}
|
|
519
|
-
path="/system/workspaces"
|
|
520
|
-
/>
|
|
521
|
-
<Route
|
|
522
|
-
element={
|
|
523
|
-
loading ? (
|
|
524
|
-
<SystemPageLayout>
|
|
525
|
-
<LoadingView label="Loading Workspace" />
|
|
526
|
-
</SystemPageLayout>
|
|
527
|
-
) : (
|
|
528
|
-
<WorkspaceFormPage />
|
|
529
|
-
)
|
|
530
|
-
}
|
|
531
|
-
path="/system/workspaces/new"
|
|
532
|
-
/>
|
|
533
|
-
<Route
|
|
534
|
-
element={
|
|
535
|
-
loading ? (
|
|
536
|
-
<SystemRouteLoading
|
|
537
|
-
description="Repository recipes Junior can switch into."
|
|
538
|
-
label="Loading Workspaces"
|
|
539
|
-
title="Workspaces"
|
|
540
|
-
variant="list"
|
|
541
|
-
/>
|
|
542
|
-
) : (
|
|
543
|
-
<WorkspacesPage />
|
|
544
|
-
)
|
|
545
|
-
}
|
|
546
|
-
path="/system/workspaces/:workspaceId"
|
|
547
|
-
/>
|
|
548
|
-
<Route
|
|
549
|
-
element={
|
|
550
|
-
loading ? (
|
|
551
|
-
<SystemPageLayout>
|
|
552
|
-
<LoadingView label="Loading Workspace" />
|
|
553
|
-
</SystemPageLayout>
|
|
554
|
-
) : (
|
|
555
|
-
<WorkspaceFormPage />
|
|
556
|
-
)
|
|
557
|
-
}
|
|
558
|
-
path="/system/workspaces/:workspaceId/edit"
|
|
559
|
-
/>
|
|
560
|
-
<Route
|
|
561
|
-
element={
|
|
562
|
-
loading ? (
|
|
563
|
-
<SystemRouteLoading
|
|
564
|
-
description="Runtime health, model usage, and loaded capabilities."
|
|
565
|
-
label="Loading system"
|
|
566
|
-
title="System"
|
|
567
|
-
variant="overview"
|
|
568
|
-
/>
|
|
569
|
-
) : data ? (
|
|
570
|
-
<SystemRoute coreData={data} />
|
|
571
|
-
) : (
|
|
572
|
-
<SystemPageLayout>
|
|
573
|
-
<LoadingView
|
|
574
|
-
label={query.error?.message ?? "Dashboard unavailable"}
|
|
575
|
-
/>
|
|
576
|
-
</SystemPageLayout>
|
|
577
|
-
)
|
|
578
|
-
}
|
|
579
|
-
path="/system/*"
|
|
580
|
-
/>
|
|
581
|
-
{settingsRoutes.map((route) => (
|
|
582
569
|
<Route
|
|
583
570
|
element={
|
|
584
571
|
loading ? (
|
|
585
|
-
<
|
|
586
|
-
description=
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
572
|
+
<SystemRouteLoading
|
|
573
|
+
description="Runtime health, model usage, and loaded capabilities."
|
|
574
|
+
label="Loading system"
|
|
575
|
+
title="System"
|
|
576
|
+
variant="overview"
|
|
577
|
+
/>
|
|
578
|
+
) : data ? (
|
|
579
|
+
<SystemRoute coreData={data} />
|
|
580
|
+
) : (
|
|
581
|
+
<SystemPageLayout>
|
|
582
|
+
<LoadingView
|
|
583
|
+
label={query.error?.message ?? "Dashboard unavailable"}
|
|
592
584
|
/>
|
|
593
|
-
</
|
|
594
|
-
)
|
|
595
|
-
|
|
585
|
+
</SystemPageLayout>
|
|
586
|
+
)
|
|
587
|
+
}
|
|
588
|
+
path="/system/*"
|
|
589
|
+
/>
|
|
590
|
+
{settingsRoutes.map((route) => (
|
|
591
|
+
<Route
|
|
592
|
+
element={
|
|
593
|
+
loading ? (
|
|
594
|
+
<SettingsPageLayout
|
|
595
|
+
description={route.loading.description}
|
|
596
|
+
title={route.loading.title}
|
|
597
|
+
>
|
|
598
|
+
<PageContentSkeleton
|
|
599
|
+
label={route.loading.label}
|
|
600
|
+
variant={route.loading.variant}
|
|
601
|
+
/>
|
|
602
|
+
</SettingsPageLayout>
|
|
603
|
+
) : loggedIn ? (
|
|
604
|
+
route.render(data!)
|
|
605
|
+
) : (
|
|
606
|
+
<Navigate replace to="/" />
|
|
607
|
+
)
|
|
608
|
+
}
|
|
609
|
+
key={route.path}
|
|
610
|
+
path={route.path}
|
|
611
|
+
/>
|
|
612
|
+
))}
|
|
613
|
+
<Route
|
|
614
|
+
element={
|
|
615
|
+
loading || userPagesQuery.isPending ? (
|
|
616
|
+
<MemoryRouteLoading label="Loading memories" />
|
|
617
|
+
) : loggedIn && userPagesQuery.data ? (
|
|
618
|
+
<MemoryPermalinkRoute pages={userPagesQuery.data} />
|
|
596
619
|
) : (
|
|
597
620
|
<Navigate replace to="/" />
|
|
598
621
|
)
|
|
599
622
|
}
|
|
600
|
-
|
|
601
|
-
path={route.path}
|
|
623
|
+
path="/memories/library"
|
|
602
624
|
/>
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
) : (
|
|
647
|
-
<Navigate replace to="/" />
|
|
648
|
-
)
|
|
649
|
-
}
|
|
650
|
-
path="/admin"
|
|
625
|
+
<Route
|
|
626
|
+
element={
|
|
627
|
+
loading || userPagesQuery.isPending ? (
|
|
628
|
+
<MemoryRouteLoading label="Loading memory" />
|
|
629
|
+
) : loggedIn && userPagesQuery.data ? (
|
|
630
|
+
<MemoryPermalinkRoute pages={userPagesQuery.data} />
|
|
631
|
+
) : (
|
|
632
|
+
<Navigate replace to="/" />
|
|
633
|
+
)
|
|
634
|
+
}
|
|
635
|
+
path="/memories/:memoryId?"
|
|
636
|
+
/>
|
|
637
|
+
<Route
|
|
638
|
+
element={
|
|
639
|
+
loading || userPagesQuery.isPending ? (
|
|
640
|
+
<LoadingView label="Loading page" />
|
|
641
|
+
) : loggedIn && userPagesQuery.data ? (
|
|
642
|
+
<PluginUserPageRoute pages={userPagesQuery.data} />
|
|
643
|
+
) : (
|
|
644
|
+
<Navigate replace to="/" />
|
|
645
|
+
)
|
|
646
|
+
}
|
|
647
|
+
path="/plugins/:pluginName/:pageId/*"
|
|
648
|
+
/>
|
|
649
|
+
<Route
|
|
650
|
+
element={
|
|
651
|
+
loading || userPagesQuery.isPending ? (
|
|
652
|
+
<LoadingView label="Loading admin" />
|
|
653
|
+
) : loggedIn && data!.me.user.isAdmin && userPagesQuery.data ? (
|
|
654
|
+
<AdminPage pages={userPagesQuery.data} />
|
|
655
|
+
) : (
|
|
656
|
+
<Navigate replace to="/" />
|
|
657
|
+
)
|
|
658
|
+
}
|
|
659
|
+
path="/admin"
|
|
660
|
+
/>
|
|
661
|
+
<Route element={<Navigate replace to="/" />} path="*" />
|
|
662
|
+
</Routes>
|
|
663
|
+
<span
|
|
664
|
+
aria-hidden="true"
|
|
665
|
+
className="pointer-events-none fixed inset-0 z-50 block opacity-[0.018]"
|
|
666
|
+
data-dashboard-noise=""
|
|
667
|
+
style={dashboardNoise}
|
|
651
668
|
/>
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
<span
|
|
655
|
-
aria-hidden="true"
|
|
656
|
-
className="pointer-events-none fixed inset-0 z-50 block opacity-[0.018]"
|
|
657
|
-
data-dashboard-noise=""
|
|
658
|
-
style={dashboardNoise}
|
|
659
|
-
/>
|
|
660
|
-
</VisualViewportShell>
|
|
669
|
+
</VisualViewportShell>
|
|
670
|
+
</NavRailProvider>
|
|
661
671
|
</DashboardChromeProvider>
|
|
662
672
|
);
|
|
663
673
|
}
|