streaming, markdown, model selecting, and lots more
This commit is contained in:
+22
-10
@@ -1,10 +1,22 @@
|
||||
export default defineNuxtPlugin(async (nuxtApp) => {
|
||||
if (!nuxtApp.payload.serverRendered) {
|
||||
await useAuth().fetchSession()
|
||||
} else if (Boolean(nuxtApp.payload.prerenderedAt) || Boolean(nuxtApp.payload.isCached)) {
|
||||
// To avoid hydration mismatch
|
||||
nuxtApp.hook('app:mounted', async () => {
|
||||
await useAuth().fetchSession()
|
||||
})
|
||||
}
|
||||
})
|
||||
export default defineNuxtPlugin({
|
||||
name: 'better-auth-triplit',
|
||||
enforce: 'pre',
|
||||
async setup(nuxtApp) {
|
||||
if (import.meta.client) {
|
||||
const triplit = useTriplitClient();
|
||||
const { session, fetchSession } = useAuth();
|
||||
|
||||
nuxtApp.hook('app:mounted', async () => {
|
||||
if (!session.value) {
|
||||
await fetchSession();
|
||||
}
|
||||
|
||||
if (!session.value) return;
|
||||
|
||||
if ('startSession' in triplit) {
|
||||
await triplit.startSession(session.value.token);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -2,10 +2,24 @@ export default defineNuxtPlugin({
|
||||
name: 'better-auth-fetch-plugin',
|
||||
enforce: 'pre',
|
||||
async setup(nuxtApp) {
|
||||
const triplit = useTriplitClient();
|
||||
|
||||
// Flag if request is cached
|
||||
nuxtApp.payload.isCached = Boolean(useRequestEvent()?.context.cache)
|
||||
nuxtApp.payload.isCached = Boolean(useRequestEvent()?.context.cache);
|
||||
if (nuxtApp.payload.serverRendered && !nuxtApp.payload.prerenderedAt && !nuxtApp.payload.isCached) {
|
||||
await useAuth().fetchSession()
|
||||
const { session, fetchSession } = useAuth();
|
||||
|
||||
if (!session.value) {
|
||||
await fetchSession();
|
||||
}
|
||||
|
||||
if (!session.value) return;
|
||||
|
||||
if ('updateOptions' in triplit) {
|
||||
triplit.updateOptions({
|
||||
token: session.value.token,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
});
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { unified } from 'unified';
|
||||
import remarkParse from 'remark-parse';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
import remarkRehype from 'remark-rehype';
|
||||
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
const remark =
|
||||
unified()
|
||||
.use(remarkParse)
|
||||
.use(remarkGfm)
|
||||
.use(remarkRehype, { allowDangerousHtml: true });
|
||||
|
||||
return {
|
||||
provide: {
|
||||
remark,
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -1,34 +0,0 @@
|
||||
/**
|
||||
* Plugin to sync appState with route changes
|
||||
* Ensures that activeAgentId and activeTopicId stay in sync with the URL
|
||||
*/
|
||||
export default defineNuxtPlugin(() => {
|
||||
const route = useRoute();
|
||||
const appState = useAppState();
|
||||
|
||||
// Sync agent ID from route params
|
||||
watch(
|
||||
() => route.params.id,
|
||||
(newId) => {
|
||||
if (newId) {
|
||||
const agentId = Array.isArray(newId) ? newId[0] : newId;
|
||||
appState.setActiveAgent(agentId);
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
// Sync topic ID from route params
|
||||
watch(
|
||||
() => route.params.topicId,
|
||||
(newId) => {
|
||||
if (newId) {
|
||||
const topicId = Array.isArray(newId) ? newId[0] : newId;
|
||||
appState.setActiveTopic(topicId);
|
||||
} else {
|
||||
appState.setActiveTopic(null);
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
});
|
||||
@@ -1,14 +0,0 @@
|
||||
export default defineNuxtPlugin(() => {
|
||||
const route = useRoute();
|
||||
const appState = useAppState();
|
||||
|
||||
if (route.params.id) {
|
||||
const agentId = Array.isArray(route.params.id) ? route.params.id[0] : route.params.id;
|
||||
appState.setActiveAgent(agentId);
|
||||
}
|
||||
|
||||
if (route.params.topicId) {
|
||||
const topicId = Array.isArray(route.params.topicId) ? route.params.topicId[0] : route.params.topicId;
|
||||
appState.setActiveTopic(topicId);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user