**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 // Function to generate a Markdown representation of the current conversation
import { type IMessage } from "../../../stores/ClientChatStore"; import { type IMessage } from "../../../stores/ClientChatStore";
import { Instance } from "mobx-state-tree"; import { type Instance } from "mobx-state-tree";
export function formatConversationMarkdown( export function formatConversationMarkdown(
messages: Instance<typeof IMessage>[], 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 { Box, Flex, IconButton, Textarea } from "@chakra-ui/react";
import { Check, X } from "lucide-react"; import { Check, X } from "lucide-react";
import { observer } from "mobx-react-lite"; 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 Message from "../../../models/Message";
import messageEditorStore from "../../../stores/MessageEditorStore"; 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"; import { buildCodeHighlighter } from "./CodeHighlighter";
interface CodeBlockProps { interface CodeBlockProps {

View File

@@ -8,11 +8,9 @@ import { getModelFamily } from "../../components/chat/lib/SupportedModels";
export default function IndexPage() { export default function IndexPage() {
useEffect(() => { useEffect(() => {
try { try {
let model = localStorage.getItem("recentModel"); const model = localStorage.getItem("recentModel");
if (getModelFamily(model as string)) { clientChatStore.setModel(model as string);
clientChatStore.setModel(model as string);
}
} catch (_) { } catch (_) {
console.log("using default model"); 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"; import type { PageContext } from "vike/types";
export { PageContextProvider }; export { PageContextProvider };
export { usePageContext }; export { usePageContext };
const Context = React.createContext<PageContext>(undefined as any); const Context = createContext<PageContext>(undefined as any);
function PageContextProvider({ function PageContextProvider({
pageContext, pageContext,
children, children,
}: { }: {
pageContext: PageContext; pageContext: PageContext;
children: React.ReactNode; children: ReactNode;
}) { }) {
return <Context.Provider value={pageContext}>{children}</Context.Provider>; 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 clientChatStore from "./ClientChatStore";
import UserOptionsStore from "./UserOptionsStore"; import UserOptionsStore from "./UserOptionsStore";
import Message from "../models/Message"; import Message from "../models/Message";

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
// --------------------------- // ---------------------------
// stores/UIStore.ts // stores/UIStore.ts
// --------------------------- // ---------------------------
import { Instance, types } from "mobx-state-tree"; import { type Instance, types } from "mobx-state-tree";
export const UIStore = types export const UIStore = types
.model("UIStore", { .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 ClientChatStore from "./ClientChatStore";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import Cookies from "js-cookie"; import Cookies from "js-cookie";

View File

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

View File

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

View File

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