**Refactor imports and improve type annotations**

- Adjusted import statements across the codebase to align with consistent use of `type`.
- Unified usage of `EventSource` initialization.
- Introduced `RootDeps` type for shared dependencies.
- Commented out unused VitePWA configuration.
- Updated proxy target URLs in Vite configuration.
This commit is contained in:
geoffsee
2025-06-18 12:34:16 -04:00
parent 7454c9b54b
commit 3d16bd94b4
16 changed files with 53 additions and 59 deletions

BIN
bun.lockb

Binary file not shown.

View File

@@ -1,6 +1,6 @@
// Function to generate a Markdown representation of the current conversation
import { type IMessage } from "../../../stores/ClientChatStore";
import { Instance } from "mobx-state-tree";
import { type Instance } from "mobx-state-tree";
export function formatConversationMarkdown(
messages: Instance<typeof IMessage>[],

View File

@@ -1,8 +1,8 @@
import React, { KeyboardEvent, useEffect } from "react";
import React, {type KeyboardEvent, useEffect } from "react";
import { Box, Flex, IconButton, Textarea } from "@chakra-ui/react";
import { Check, X } from "lucide-react";
import { observer } from "mobx-react-lite";
import { Instance } from "mobx-state-tree";
import { type Instance } from "mobx-state-tree";
import Message from "../../../models/Message";
import messageEditorStore from "../../../stores/MessageEditorStore";

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect, useCallback, useMemo } from "react";
import React, { useState, useEffect, useCallback } from "react";
import { buildCodeHighlighter } from "./CodeHighlighter";
interface CodeBlockProps {

View File

@@ -8,11 +8,9 @@ import { getModelFamily } from "../../components/chat/lib/SupportedModels";
export default function IndexPage() {
useEffect(() => {
try {
let model = localStorage.getItem("recentModel");
const model = localStorage.getItem("recentModel");
if (getModelFamily(model as string)) {
clientChatStore.setModel(model as string);
}
} catch (_) {
console.log("using default model");
}

View File

@@ -1,17 +1,17 @@
import React, { useContext } from "react";
import { useContext, createContext, type ReactNode } from "react";
import type { PageContext } from "vike/types";
export { PageContextProvider };
export { usePageContext };
const Context = React.createContext<PageContext>(undefined as any);
const Context = createContext<PageContext>(undefined as any);
function PageContextProvider({
pageContext,
children,
}: {
pageContext: PageContext;
children: React.ReactNode;
children: ReactNode;
}) {
return <Context.Provider value={pageContext}>{children}</Context.Provider>;
}

View File

@@ -1,4 +1,4 @@
import {types, Instance} from "mobx-state-tree";
import {types, type Instance} from "mobx-state-tree";
import clientChatStore from "./ClientChatStore";
import UserOptionsStore from "./UserOptionsStore";
import Message from "../models/Message";

View File

@@ -1,7 +1,7 @@
// ---------------------------
// stores/MessagesStore.ts
// ---------------------------
import { Instance, types } from "mobx-state-tree";
import { type Instance, types } from "mobx-state-tree";
import Message from "../models/Message";
export const MessagesStore = types

View File

@@ -2,7 +2,7 @@
// ---------------------------
// stores/ModelStore.ts
// ---------------------------
import { Instance, types } from "mobx-state-tree";
import { type Instance, types } from "mobx-state-tree";
export const ModelStore = types
.model("ModelStore", {

View File

@@ -0,0 +1,5 @@
import type {IMessagesStore} from "./MessagesStore.ts";
import type {IUIStore} from "./UIStore.ts";
import type {IModelStore} from "./ModelStore.ts";
export type RootDeps = IMessagesStore & IUIStore & IModelStore;

View File

@@ -1,24 +1,14 @@
import {
getParent,
Instance,
flow,
types,
applyAction,
} from "mobx-state-tree";
import type { IMessagesStore } from "./MessagesStore";
import type { IUIStore } from "./UIStore";
import type { IModelStore } from "./ModelStore";
import {flow, getParent, type Instance, types} from "mobx-state-tree";
import UserOptionsStore from "./UserOptionsStore";
import Message from "../models/Message";
interface RootDeps extends IMessagesStore, IUIStore, IModelStore {}
import type {RootDeps} from "./RootDeps.ts";
export const StreamStore = types
.model("StreamStore", {
streamId: types.optional(types.string, ""),
})
.volatile(() => ({
eventSource: null as EventSource | null,
eventSource: undefined as unknown as EventSource,
}))
.actions((self: any) => { // ← annotate `self` so it isnt implicitly `any`
let root: RootDeps;
@@ -83,6 +73,7 @@ export const StreamStore = types
}
const { streamUrl } = (yield response.json()) as { streamUrl: string };
setEventSource(new EventSource(streamUrl));
const handleMessage = (event: MessageEvent) => {

View File

@@ -2,7 +2,7 @@
// ---------------------------
// stores/UIStore.ts
// ---------------------------
import { Instance, types } from "mobx-state-tree";
import { type Instance, types } from "mobx-state-tree";
export const UIStore = types
.model("UIStore", {

View File

@@ -1,4 +1,4 @@
import { flow, types } from "mobx-state-tree";
import { types } from "mobx-state-tree";
import ClientChatStore from "./ClientChatStore";
import { runInAction } from "mobx";
import Cookies from "js-cookie";

View File

@@ -39,31 +39,31 @@ export default defineConfig(({command}) => {
})
})
*/
VitePWA({
registerType: 'autoUpdate',
devOptions: {
enabled: false,
},
manifest: {
name: "open-gsio",
short_name: "open-gsio",
description: "Assistant"
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
navigateFallbackDenylist: [/^\/api\//],
}
})
// VitePWA({
// registerType: 'autoUpdate',
// devOptions: {
// enabled: false,
// },
// manifest: {
// name: "open-gsio",
// short_name: "open-gsio",
// description: "Assistant"
// },
// workbox: {
// globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
// navigateFallbackDenylist: [/^\/api\//],
// }
// })
],
server: {
port: 3000,
proxy: {
// proxies requests to worker backend
"/api": {
target: "http://localhost:3001",
target: "http://localhost:3003",
},
"/fonts": {
target: "http://localhost:3001/fonts",
target: "http://localhost:3003/fonts",
},
},
},

View File

@@ -1,5 +1,5 @@
// Base Message
import { Instance, types } from "mobx-state-tree";
import { type Instance, types } from "mobx-state-tree";
export default types
.model("Message", {

View File

@@ -1,17 +1,17 @@
import {flow, getSnapshot, types} from 'mobx-state-tree';
import OpenAI from 'openai';
import ChatSdk from '../lib/chat-sdk.ts';
import Message from "../models/Message.ts";
import O1Message from "../models/O1Message.ts";
import {OpenAiChatSdk} from "../providers/openai.ts";
import {GroqChatSdk} from "../providers/groq.ts";
import {ClaudeChatSdk} from "../providers/claude.ts";
import {FireworksAiChatSdk} from "../providers/fireworks.ts";
import handleStreamData from "../lib/handleStreamData.ts";
import {GoogleChatSdk} from "../providers/google.ts";
import {XaiChatSdk} from "../providers/xai.ts";
import {CerebrasSdk} from "../providers/cerebras.ts";
import {CloudflareAISdk} from "../providers/cloudflareAi.ts";
import ChatSdk from '../lib/chat-sdk';
import Message from "../models/Message";
import O1Message from "../models/O1Message";
import {OpenAiChatSdk} from "../providers/openai";
import {GroqChatSdk} from "../providers/groq";
import {ClaudeChatSdk} from "../providers/claude";
import {FireworksAiChatSdk} from "../providers/fireworks";
import handleStreamData from "../lib/handleStreamData";
import {GoogleChatSdk} from "../providers/google";
import {XaiChatSdk} from "../providers/xai";
import {CerebrasSdk} from "../providers/cerebras";
import {CloudflareAISdk} from "../providers/cloudflareAi";
import {OllamaChatSdk} from "../providers/ollama";
import {MlxOmniChatSdk} from "../providers/mlx-omni";
import {ProviderRepository} from "../providers/_ProviderRepository";