mirror of
https://github.com/geoffsee/open-gsio.git
synced 2025-09-08 22:56:46 +00:00
wip
This commit is contained in:

committed by
Geoff Seemueller

parent
21d6c8604e
commit
554096abb2
70
packages/router/src/request-context.ts
Normal file
70
packages/router/src/request-context.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
ChatService,
|
||||
ContactService,
|
||||
AssetService,
|
||||
MetricsService,
|
||||
TransactionService,
|
||||
FeedbackService,
|
||||
} from '@open-gsio/services';
|
||||
import { types, type Instance, getMembers } from 'mobx-state-tree';
|
||||
|
||||
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 => {
|
||||
// @ts-expect-error - override indexing type error
|
||||
if (typeof self[service]?.setEnv === 'function') {
|
||||
// @ts-expect-error - override indexing type error
|
||||
self[service].setEnv(env);
|
||||
}
|
||||
});
|
||||
},
|
||||
setCtx(ctx: ExecutionContext) {
|
||||
services.forEach(service => {
|
||||
// @ts-expect-error - override indexing type error
|
||||
if (typeof self[service]?.setCtx === 'function') {
|
||||
// @ts-expect-error - override indexing type error
|
||||
self[service].setCtx(ctx);
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
export type RequestContextInstance = Instance<typeof RequestContext>;
|
||||
|
||||
const createRequestContext = (env: Env, ctx: any) => {
|
||||
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 };
|
Reference in New Issue
Block a user