mirror of
https://github.com/geoffsee/open-gsio.git
synced 2025-09-08 22:56:46 +00:00
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import { types, Instance, getMembers } from 'mobx-state-tree';
|
|
|
|
import AssetService from './services/AssetService.ts';
|
|
import ChatService from './services/ChatService.ts';
|
|
import ContactService from './services/ContactService.ts';
|
|
import FeedbackService from './services/FeedbackService.ts';
|
|
import MetricsService from './services/MetricsService.ts';
|
|
import TransactionService from './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,
|
|
}),
|
|
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;
|