Files
open-gsio/packages/server/RequestContext.ts
geoffsee c6e09644e2 **Refactor:** Restructure server package to streamline imports and improve file organization
- Moved `providers`, `services`, `models`, `lib`, and related files to `src` directory within `server` package.
- Adjusted imports across the codebase to reflect the new paths.
- Renamed several `.ts` files for consistency.
- Introduced an `index.ts` in the `ai/providers` package to export all providers.

This improves maintainability and aligns with the project's updated directory structure.
2025-06-24 20:46:15 -04:00

69 lines
2.3 KiB
TypeScript

import { types, type Instance, getMembers } from 'mobx-state-tree';
import AssetService from './src/services/AssetService.ts';
import ChatService from './src/services/ChatService.ts';
import ContactService from './src/services/ContactService.ts';
import FeedbackService from './src/services/FeedbackService.ts';
import MetricsService from './src/services/MetricsService.ts';
import TransactionService from './src/services/TransactionService.ts';
const RequestContext = types
.model('RequestContext', {
chatService: ChatService,
contactService: types.optional(ContactService, {}),
assetService: types.optional(AssetService, {}),
metricsService: types.optional(MetricsService, {}),
transactionService: types.optional(TransactionService, {}),
feedbackService: types.optional(FeedbackService, {}),
})
.actions(self => {
const services = Object.keys(getMembers(self).properties);
return {
setEnv(env: Env) {
services.forEach(service => {
if (typeof self[service]?.setEnv === 'function') {
self[service].setEnv(env);
}
});
},
setCtx(ctx: ExecutionContext) {
services.forEach(service => {
if (typeof self[service]?.setCtx === 'function') {
self[service].setCtx(ctx);
}
});
},
};
});
export type IRootStore = Instance<typeof RequestContext>;
const createRequestContext = (env, ctx) => {
const instance = RequestContext.create({
contactService: ContactService.create({}),
assetService: AssetService.create({}),
transactionService: TransactionService.create({}),
feedbackService: FeedbackService.create({}),
metricsService: MetricsService.create({
isCollectingMetrics: true,
}),
// @ts-expect-error - this is fine
chatService: ChatService.create({
openAIApiKey: env.OPENAI_API_KEY,
openAIBaseURL: env.OPENAI_API_ENDPOINT,
activeStreams: undefined,
maxTokens: 16384,
systemPrompt:
'You are an assistant designed to provide accurate, concise, and context-aware responses while demonstrating your advanced reasoning capabilities.',
}),
});
instance.setEnv(env);
instance.setCtx(ctx);
return instance;
};
export { createRequestContext };
export default RequestContext;