Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
// HUD mode's renderer URL. The pure, Electron-free piece lives here so it can
|
||||
// be unit-tested (same split as session-windows.ts, and for the same reason:
|
||||
// the contract below is invisible until it breaks at runtime).
|
||||
|
||||
import { pathToFileURL } from 'node:url'
|
||||
|
||||
/**
|
||||
* Build the renderer URL for the HUD window.
|
||||
*
|
||||
* Same query-before-hash contract as `buildSessionWindowUrl`: `?win=hud` and
|
||||
* the optional `profile=` MUST sit in the search string before the '#', or
|
||||
* HashRouter swallows them as part of the route.
|
||||
*
|
||||
* The profile is what the HUD renderer adopts at boot. Session ids are scoped
|
||||
* per profile, so without it a HUD opened on a non-primary conversation
|
||||
* resolves the id against the primary backend, misses, and falls back to that
|
||||
* backend's last session (#82285). Absent/blank means no override — ordinary
|
||||
* single-profile boots are unchanged.
|
||||
*/
|
||||
export function buildHudWindowUrl(
|
||||
sessionId: null | string | undefined,
|
||||
{
|
||||
devServer,
|
||||
profile,
|
||||
rendererIndexPath
|
||||
}: { devServer?: null | string; profile?: null | string; rendererIndexPath?: string } = {}
|
||||
): string {
|
||||
const profileKey = typeof profile === 'string' ? profile.trim() : ''
|
||||
const query = `?win=hud${profileKey ? `&profile=${encodeURIComponent(profileKey)}` : ''}`
|
||||
const route = sessionId ? `#/${encodeURIComponent(sessionId)}` : '#/'
|
||||
|
||||
if (devServer) {
|
||||
const base = devServer.endsWith('/') ? devServer.slice(0, -1) : devServer
|
||||
|
||||
return `${base}/${query}${route}`
|
||||
}
|
||||
|
||||
return `${pathToFileURL(rendererIndexPath!).toString()}${query}${route}`
|
||||
}
|
||||
Reference in New Issue
Block a user