Add OIDC logout, fix OpenAPI schema types, expose end_session_endpoint
All checks were successful
CI / build (push) Successful in 1m8s
CI / docker (push) Successful in 51s
CI / deploy (push) Successful in 29s

Backend:
- Expose end_session_endpoint from OIDC provider metadata in /auth/oidc/config
- Add getEndSessionEndpoint() to OidcTokenExchanger

Frontend:
- On OIDC logout, redirect to provider's end_session_endpoint to clear SSO session
- Strip /api/v1 prefix from OpenAPI paths to match client baseUrl convention
- Add schema-types.ts with convenience type re-exports from generated schema
- Fix all type imports to use schema-types instead of raw generated schema
- Fix optional field access (processors, children, duration) with proper typing
- Fix AgentInstance.state → status field name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-14 14:43:18 +01:00
parent 0d82304cf0
commit 50bb22d6f6
15 changed files with 1755 additions and 53 deletions

View File

@@ -1,4 +1,4 @@
import type { ExecutionSummary, AgentInstance } from '../../api/schema';
import type { ExecutionSummary, AgentInstance } from '../../api/schema-types';
import type { PaletteResult, RouteInfo } from './use-palette-search';
import { highlightMatch, formatRelativeTime } from './utils';
import { AppBadge } from '../shared/AppBadge';
@@ -93,7 +93,7 @@ function ApplicationResult({ data, query }: { data: AgentInstance; query: string
<div className={styles.resultBody}>
<div className={styles.resultTitle}>
<HighlightedText text={data.id} query={query} />
<span className={stateBadgeClass(data.state)}>{data.state}</span>
<span className={stateBadgeClass(data.status)}>{data.status}</span>
</div>
<div className={styles.resultMeta}>
<span>group: {data.group}</span>

View File

@@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query';
import { api } from '../../api/client';
import type { ExecutionSummary, AgentInstance } from '../../api/schema';
import type { ExecutionSummary, AgentInstance } from '../../api/schema-types';
import { useCommandPalette, type PaletteScope } from './use-command-palette';
import { useDebouncedValue } from './utils';
@@ -51,7 +51,7 @@ export function usePaletteSearch() {
},
});
if (error) throw new Error('Search failed');
return data!;
return data as unknown as { data: ExecutionSummary[]; total: number };
},
enabled: isOpen && isExecutionScope(scope),
placeholderData: (prev) => prev,
@@ -64,7 +64,7 @@ export function usePaletteSearch() {
params: { query: {} },
});
if (error) throw new Error('Failed to load agents');
return data!;
return data as unknown as AgentInstance[];
},
enabled: isOpen && (isApplicationScope(scope) || isRouteScope(scope)),
staleTime: 30_000,