- Android: fetch installed apps via PackageManager, send to server on connect - Android: add QUERY_ALL_PACKAGES permission for full app visibility - Android: fix duplicate Intent import, increase accessibility retry window - Android: default server URL to ws:// instead of wss:// - Server: store installed apps in device metadata JSONB - Server: inject installed apps context into LLM prompt - Server: preprocessor resolves app names from device's actual installed apps - Server: add POST /goals/stop endpoint with AbortController cancellation - Server: rewrite session middleware to direct DB token lookup - Server: goals route fetches user's saved LLM config from DB - Web: show installed apps in device detail Overview tab with search - Web: add Stop button for running goals - Web: replace API routes with remote commands (submitGoal, stopGoal) - Web: add error display for goal submission failures - Shared: add InstalledApp type and apps message to protocol
25 lines
880 B
TypeScript
25 lines
880 B
TypeScript
import { svelteKitHandler } from 'better-auth/svelte-kit';
|
|
import { auth } from '$lib/server/auth';
|
|
import { building } from '$app/environment';
|
|
import type { Handle } from '@sveltejs/kit';
|
|
|
|
export const handle: Handle = async ({ event, resolve }) => {
|
|
try {
|
|
const session = await auth.api.getSession({
|
|
headers: event.request.headers
|
|
});
|
|
|
|
if (session) {
|
|
event.locals.session = session.session;
|
|
event.locals.user = session.user;
|
|
} else if (event.url.pathname.startsWith('/api/')) {
|
|
console.log(`[Auth] No session for ${event.request.method} ${event.url.pathname}`);
|
|
console.log(`[Auth] Cookie header: ${event.request.headers.get('cookie')?.slice(0, 80) ?? 'NONE'}`);
|
|
}
|
|
} catch (err) {
|
|
console.error(`[Auth] getSession error for ${event.request.method} ${event.url.pathname}:`, err);
|
|
}
|
|
|
|
return svelteKitHandler({ event, resolve, auth, building });
|
|
};
|