repoburg 1.3.22 → 1.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODEMAP.md +45 -208
- package/backend/.repoburg/data.sqlite +0 -0
- package/backend/CODEMAP.md +49 -0
- package/backend/dist/src/application-state/application-state.controller.d.ts +8 -0
- package/backend/dist/src/application-state/application-state.controller.js +32 -0
- package/backend/dist/src/application-state/application-state.controller.js.map +1 -1
- package/backend/dist/src/application-state/application-state.service.d.ts +4 -0
- package/backend/dist/src/application-state/application-state.service.js +25 -0
- package/backend/dist/src/application-state/application-state.service.js.map +1 -1
- package/backend/dist/src/application-state/dto/set-openrouter-config.dto.d.ts +3 -0
- package/backend/dist/src/application-state/dto/set-openrouter-config.dto.js +21 -0
- package/backend/dist/src/application-state/dto/set-openrouter-config.dto.js.map +1 -0
- package/backend/dist/src/core-entities/session-input.entity.d.ts +2 -0
- package/backend/dist/src/core-entities/session-input.entity.js +8 -0
- package/backend/dist/src/core-entities/session-input.entity.js.map +1 -1
- package/backend/dist/src/core-entities/session.entity.d.ts +3 -0
- package/backend/dist/src/core-entities/session.entity.js +9 -0
- package/backend/dist/src/core-entities/session.entity.js.map +1 -1
- package/backend/dist/src/gemini/gemini-llm.provider.d.ts +4 -2
- package/backend/dist/src/gemini/gemini-llm.provider.js +54 -30
- package/backend/dist/src/gemini/gemini-llm.provider.js.map +1 -1
- package/backend/dist/src/interactive-chat/chat.module.js +6 -2
- package/backend/dist/src/interactive-chat/chat.module.js.map +1 -1
- package/backend/dist/src/interactive-chat/chat.service.d.ts +6 -1
- package/backend/dist/src/interactive-chat/chat.service.js +42 -7
- package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
- package/backend/dist/src/llm-provider/llm-provider.controller.d.ts +8 -0
- package/backend/dist/src/llm-provider/llm-provider.controller.js +39 -0
- package/backend/dist/src/llm-provider/llm-provider.controller.js.map +1 -0
- package/backend/dist/src/llm-provider/llm-provider.interface.d.ts +35 -1
- package/backend/dist/src/llm-provider/llm-provider.interface.js +10 -1
- package/backend/dist/src/llm-provider/llm-provider.interface.js.map +1 -1
- package/backend/dist/src/llm-provider/llm-provider.module.js +8 -3
- package/backend/dist/src/llm-provider/llm-provider.module.js.map +1 -1
- package/backend/dist/src/llm-provider/openrouter-llm.provider.d.ts +11 -0
- package/backend/dist/src/llm-provider/openrouter-llm.provider.js +129 -0
- package/backend/dist/src/llm-provider/openrouter-llm.provider.js.map +1 -0
- package/backend/dist/src/llm-provider/proxy-llm.provider.d.ts +10 -0
- package/backend/dist/src/llm-provider/proxy-llm.provider.js +43 -0
- package/backend/dist/src/llm-provider/proxy-llm.provider.js.map +1 -0
- package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.d.ts +2 -0
- package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js +10 -0
- package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js.map +1 -1
- package/backend/dist/src/llm-responses/llm-responses.service.js +9 -1
- package/backend/dist/src/llm-responses/llm-responses.service.js.map +1 -1
- package/backend/dist/src/seeding/data/system-prompts/default_master-agent.d.ts +1 -1
- package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js +6 -0
- package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js.map +1 -1
- package/backend/dist/src/session-inputs/session-inputs.service.js +1 -2
- package/backend/dist/src/session-inputs/session-inputs.service.js.map +1 -1
- package/backend/dist/src/sessions/dto/session.dto.d.ts +5 -0
- package/backend/dist/src/sessions/dto/session.dto.js +21 -0
- package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
- package/backend/dist/src/sessions/sessions.service.js +6 -0
- package/backend/dist/src/sessions/sessions.service.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/backend/packages/gemini-core/CODEMAP.md +30 -0
- package/backend/packages/tokenpatch/CODEMAP.md +25 -0
- package/daemon/CODEMAP.md +23 -0
- package/package.json +2 -1
- package/visual-editor-proxy/CODEMAP.md +21 -0
|
@@ -16,6 +16,7 @@ const project_entity_1 = require("./project.entity");
|
|
|
16
16
|
const context_template_entity_1 = require("./context-template.entity");
|
|
17
17
|
const session_input_entity_1 = require("./session-input.entity");
|
|
18
18
|
const system_prompt_entity_1 = require("./system-prompt.entity");
|
|
19
|
+
const llm_provider_interface_1 = require("../llm-provider/llm-provider.interface");
|
|
19
20
|
let Session = class Session extends base_entity_1.BaseEntity {
|
|
20
21
|
};
|
|
21
22
|
exports.Session = Session;
|
|
@@ -83,6 +84,14 @@ __decorate([
|
|
|
83
84
|
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
84
85
|
__metadata("design:type", String)
|
|
85
86
|
], Session.prototype, "url", void 0);
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
89
|
+
__metadata("design:type", String)
|
|
90
|
+
], Session.prototype, "model_id", void 0);
|
|
91
|
+
__decorate([
|
|
92
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
93
|
+
__metadata("design:type", String)
|
|
94
|
+
], Session.prototype, "reasoning_effort", void 0);
|
|
86
95
|
__decorate([
|
|
87
96
|
(0, typeorm_1.OneToMany)(() => session_input_entity_1.SessionInput, (sessionInput) => sessionInput.session),
|
|
88
97
|
__metadata("design:type", Array)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.entity.js","sourceRoot":"","sources":["../../../src/core-entities/session.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA2E;AAC3E,+CAA2C;AAC3C,qDAA2C;AAC3C,uEAA4D;AAC5D,iEAAsD;AACtD,iEAAsD;
|
|
1
|
+
{"version":3,"file":"session.entity.js","sourceRoot":"","sources":["../../../src/core-entities/session.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
-
import { LlmProvider, LlmProviderRequest } from '../llm-provider/llm-provider.interface';
|
|
2
|
+
import { LlmProvider, LlmProviderRequest, LlmModel, LlmResponse } from '../llm-provider/llm-provider.interface';
|
|
3
3
|
export declare class GeminiLlmProvider implements LlmProvider, OnModuleInit {
|
|
4
4
|
private readonly logger;
|
|
5
5
|
private config;
|
|
6
6
|
private initializationPromise;
|
|
7
|
+
private readonly tokenizer;
|
|
7
8
|
constructor();
|
|
8
9
|
onModuleInit(): void;
|
|
9
10
|
private initialize;
|
|
10
|
-
|
|
11
|
+
getModels(): Promise<LlmModel[]>;
|
|
12
|
+
generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
|
|
11
13
|
}
|
|
@@ -14,6 +14,7 @@ exports.GeminiLlmProvider = void 0;
|
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const index_1 = require("../../packages/gemini-core/src/index");
|
|
16
16
|
const crypto_1 = require("crypto");
|
|
17
|
+
const tiktoken_tokenizer_1 = require("../../packages/tokenpatch/strategies/tiktoken-tokenizer");
|
|
17
18
|
function getResponseText(response) {
|
|
18
19
|
if (response.candidates && response.candidates.length > 0) {
|
|
19
20
|
const candidate = response.candidates[0];
|
|
@@ -31,9 +32,10 @@ function getResponseText(response) {
|
|
|
31
32
|
let GeminiLlmProvider = GeminiLlmProvider_1 = class GeminiLlmProvider {
|
|
32
33
|
constructor() {
|
|
33
34
|
this.logger = new common_1.Logger(GeminiLlmProvider_1.name);
|
|
35
|
+
this.tokenizer = new tiktoken_tokenizer_1.TiktokenTokenizer();
|
|
34
36
|
this.config = new index_1.Config({
|
|
35
37
|
sessionId: `repoburg-backend-session-${(0, crypto_1.randomUUID)()}`,
|
|
36
|
-
model: 'gemini-2.
|
|
38
|
+
model: 'gemini-2.0-flash',
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
41
|
onModuleInit() {
|
|
@@ -46,26 +48,58 @@ let GeminiLlmProvider = GeminiLlmProvider_1 = class GeminiLlmProvider {
|
|
|
46
48
|
this.logger.log('Gemini LLM Provider initialized and authenticated successfully.');
|
|
47
49
|
}
|
|
48
50
|
catch (error) {
|
|
49
|
-
this.logger.
|
|
50
|
-
throw error;
|
|
51
|
+
this.logger.warn('Failed to initialize Gemini LLM Provider (Google Auth). Local Gemini might not work.');
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
async getModels() {
|
|
55
|
+
return [
|
|
56
|
+
{
|
|
57
|
+
id: 'gemini-2.0-flash',
|
|
58
|
+
name: 'Gemini 2.0 Flash (Local)',
|
|
59
|
+
provider: 'gemini',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 'gemini-2.0-pro-exp-02-05',
|
|
63
|
+
name: 'Gemini 2.0 Pro Exp (Local)',
|
|
64
|
+
provider: 'gemini',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'gemini-1.5-pro',
|
|
68
|
+
name: 'Gemini 1.5 Pro (Local)',
|
|
69
|
+
provider: 'gemini',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'gemini-1.5-flash',
|
|
73
|
+
name: 'Gemini 1.5 Flash (Local)',
|
|
74
|
+
provider: 'gemini',
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
}
|
|
53
78
|
async generateContent(request) {
|
|
54
79
|
try {
|
|
55
80
|
await this.initializationPromise;
|
|
56
81
|
}
|
|
57
82
|
catch (error) {
|
|
58
|
-
throw new Error('Gemini LLM Provider failed to initialize. Please check
|
|
83
|
+
throw new Error('Gemini LLM Provider failed to initialize. Please check Google authentication.');
|
|
84
|
+
}
|
|
85
|
+
const { prompt, systemInstruction, history, modelId, generationConfig } = request;
|
|
86
|
+
const model = (modelId || this.config.getModel()).replace('gemini/', '');
|
|
87
|
+
let inputTokenText = (systemInstruction || '') + '\n' + prompt;
|
|
88
|
+
if (history) {
|
|
89
|
+
inputTokenText += history
|
|
90
|
+
.map((h) => h.parts.map((p) => p.text).join(''))
|
|
91
|
+
.join('\n');
|
|
59
92
|
}
|
|
60
|
-
const
|
|
61
|
-
this.logger.log(`Generating content with Gemini. History length: ${history?.length || 0}. System instruction provided: ${!!systemInstruction}.`);
|
|
93
|
+
const inputTokenCount = this.tokenizer.tokenize(inputTokenText).length;
|
|
62
94
|
try {
|
|
63
|
-
const
|
|
95
|
+
const finalGenerationConfig = {
|
|
96
|
+
...generationConfig,
|
|
97
|
+
};
|
|
64
98
|
if (systemInstruction) {
|
|
65
|
-
|
|
99
|
+
finalGenerationConfig.systemInstruction = systemInstruction;
|
|
66
100
|
}
|
|
67
|
-
const chat = new index_1.GeminiChat(this.config,
|
|
68
|
-
const result = await chat.sendMessageStream(
|
|
101
|
+
const chat = new index_1.GeminiChat(this.config, finalGenerationConfig, history);
|
|
102
|
+
const result = await chat.sendMessageStream(model, { message: prompt }, `prompt-${(0, crypto_1.randomUUID)()}`);
|
|
69
103
|
let fullResponse = '';
|
|
70
104
|
for await (const chunk of result) {
|
|
71
105
|
if (chunk.type === 'chunk' && chunk.value) {
|
|
@@ -75,28 +109,18 @@ let GeminiLlmProvider = GeminiLlmProvider_1 = class GeminiLlmProvider {
|
|
|
75
109
|
}
|
|
76
110
|
}
|
|
77
111
|
}
|
|
78
|
-
this.
|
|
79
|
-
return
|
|
112
|
+
const outputTokenCount = this.tokenizer.tokenize(fullResponse).length;
|
|
113
|
+
return {
|
|
114
|
+
text: fullResponse,
|
|
115
|
+
usage: {
|
|
116
|
+
inputTokens: inputTokenCount,
|
|
117
|
+
outputTokens: outputTokenCount,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
80
120
|
}
|
|
81
121
|
catch (error) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const apiError = error.response.data.error;
|
|
85
|
-
errorMessage = `[${apiError.code} ${apiError.status}] ${apiError.message}`;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
try {
|
|
89
|
-
const parsed = JSON.parse(error.message);
|
|
90
|
-
if (Array.isArray(parsed) && parsed[0]?.error) {
|
|
91
|
-
const apiError = parsed[0].error;
|
|
92
|
-
errorMessage = `[${apiError.code} ${apiError.status}] ${apiError.message}`;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
this.logger.error(`Error calling Gemini API: ${errorMessage}`, error.stack);
|
|
99
|
-
throw new Error(`Failed to generate content from Gemini: ${errorMessage}`);
|
|
122
|
+
this.logger.error(`Gemini Error: ${error.message}`);
|
|
123
|
+
throw new Error(`Gemini Error: ${error.message}`);
|
|
100
124
|
}
|
|
101
125
|
}
|
|
102
126
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-llm.provider.js","sourceRoot":"","sources":["../../../src/gemini/gemini-llm.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;
|
|
1
|
+
{"version":3,"file":"gemini-llm.provider.js","sourceRoot":"","sources":["../../../src/gemini/gemini-llm.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,20 +14,24 @@ const events_module_1 = require("../events/events.module");
|
|
|
14
14
|
const llm_responses_module_1 = require("../llm-responses/llm-responses.module");
|
|
15
15
|
const application_state_module_1 = require("../application-state/application-state.module");
|
|
16
16
|
const message_bus_module_1 = require("../message-bus/message-bus.module");
|
|
17
|
+
const sessions_module_1 = require("../sessions/sessions.module");
|
|
18
|
+
const system_prompts_module_1 = require("../system-prompts/system-prompts.module");
|
|
17
19
|
let InteractiveChatModule = class InteractiveChatModule {
|
|
18
20
|
};
|
|
19
21
|
exports.InteractiveChatModule = InteractiveChatModule;
|
|
20
22
|
exports.InteractiveChatModule = InteractiveChatModule = __decorate([
|
|
21
23
|
(0, common_1.Module)({
|
|
22
24
|
imports: [
|
|
23
|
-
llm_provider_module_1.LlmProviderModule,
|
|
25
|
+
(0, common_1.forwardRef)(() => llm_provider_module_1.LlmProviderModule),
|
|
24
26
|
events_module_1.EventsModule,
|
|
25
27
|
(0, common_1.forwardRef)(() => llm_responses_module_1.LlmResponsesModule),
|
|
26
28
|
application_state_module_1.ApplicationStateModule,
|
|
27
29
|
message_bus_module_1.MessageBusModule,
|
|
30
|
+
(0, common_1.forwardRef)(() => sessions_module_1.SessionsModule),
|
|
31
|
+
(0, common_1.forwardRef)(() => system_prompts_module_1.SystemPromptsModule),
|
|
28
32
|
],
|
|
29
33
|
providers: [chat_service_1.ChatService],
|
|
30
|
-
exports: [chat_service_1.ChatService],
|
|
34
|
+
exports: [chat_service_1.ChatService, InteractiveChatModule],
|
|
31
35
|
})
|
|
32
36
|
], InteractiveChatModule);
|
|
33
37
|
//# sourceMappingURL=chat.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.module.js","sourceRoot":"","sources":["../../../src/interactive-chat/chat.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,iDAA6C;AAC7C,6EAAwE;AACxE,2DAAuD;AACvD,gFAA2E;AAC3E,4FAAuF;AACvF,0EAAqE;
|
|
1
|
+
{"version":3,"file":"chat.module.js","sourceRoot":"","sources":["../../../src/interactive-chat/chat.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,iDAA6C;AAC7C,6EAAwE;AACxE,2DAAuD;AACvD,gFAA2E;AAC3E,4FAAuF;AACvF,0EAAqE;AACrE,iEAA6D;AAC7D,mFAA8E;AAevE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IAbjC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,uCAAiB,CAAC;YACnC,4BAAY;YACZ,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yCAAkB,CAAC;YACpC,iDAAsB;YACtB,qCAAgB;YAChB,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC;YAChC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,2CAAmB,CAAC;SACtC;QACD,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,EAAE,qBAAqB,CAAC;KAC9C,CAAC;GACW,qBAAqB,CAAG"}
|
|
@@ -3,17 +3,22 @@ import { EventsGateway } from '../events/events.gateway';
|
|
|
3
3
|
import { LlmResponsesService } from '../llm-responses/llm-responses.service';
|
|
4
4
|
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
5
5
|
import { MessageBusService } from '../message-bus/message-bus.service';
|
|
6
|
+
import { SessionsService } from '../sessions/sessions.service';
|
|
7
|
+
import { SystemPromptsService } from '../system-prompts/system-prompts.service';
|
|
6
8
|
export declare class ChatService {
|
|
7
9
|
private readonly llmProvider;
|
|
8
10
|
private readonly eventsGateway;
|
|
9
11
|
private readonly llmResponsesService;
|
|
10
12
|
private readonly applicationStateService;
|
|
11
13
|
private readonly messageBusService;
|
|
14
|
+
private readonly sessionsService;
|
|
15
|
+
private readonly systemPromptsService;
|
|
12
16
|
private readonly logger;
|
|
13
17
|
private chatStates;
|
|
14
|
-
constructor(llmProvider: LlmProvider, eventsGateway: EventsGateway, llmResponsesService: LlmResponsesService, applicationStateService: ApplicationStateService, messageBusService: MessageBusService);
|
|
18
|
+
constructor(llmProvider: LlmProvider, eventsGateway: EventsGateway, llmResponsesService: LlmResponsesService, applicationStateService: ApplicationStateService, messageBusService: MessageBusService, sessionsService: SessionsService, systemPromptsService: SystemPromptsService);
|
|
15
19
|
private getOrCreateState;
|
|
16
20
|
hasChat(sessionId: string): boolean;
|
|
21
|
+
setSystemPromptId(sessionId: string, promptId: string | null): void;
|
|
17
22
|
setSystemInstruction(sessionId: string, instruction: string | null): void;
|
|
18
23
|
loadHistory(sessionId: string, history: LlmContent[]): void;
|
|
19
24
|
sendMessage(sessionId: string, message: string, isManual: boolean): Promise<void>;
|
|
@@ -21,19 +21,24 @@ const llm_responses_service_1 = require("../llm-responses/llm-responses.service"
|
|
|
21
21
|
const submit_llm_response_dto_1 = require("../llm-responses/dto/submit-llm-response.dto");
|
|
22
22
|
const application_state_service_1 = require("../application-state/application-state.service");
|
|
23
23
|
const message_bus_service_1 = require("../message-bus/message-bus.service");
|
|
24
|
+
const sessions_service_1 = require("../sessions/sessions.service");
|
|
25
|
+
const system_prompts_service_1 = require("../system-prompts/system-prompts.service");
|
|
24
26
|
let ChatService = ChatService_1 = class ChatService {
|
|
25
|
-
constructor(llmProvider, eventsGateway, llmResponsesService, applicationStateService, messageBusService) {
|
|
27
|
+
constructor(llmProvider, eventsGateway, llmResponsesService, applicationStateService, messageBusService, sessionsService, systemPromptsService) {
|
|
26
28
|
this.llmProvider = llmProvider;
|
|
27
29
|
this.eventsGateway = eventsGateway;
|
|
28
30
|
this.llmResponsesService = llmResponsesService;
|
|
29
31
|
this.applicationStateService = applicationStateService;
|
|
30
32
|
this.messageBusService = messageBusService;
|
|
33
|
+
this.sessionsService = sessionsService;
|
|
34
|
+
this.systemPromptsService = systemPromptsService;
|
|
31
35
|
this.logger = new common_1.Logger(ChatService_1.name);
|
|
32
36
|
this.chatStates = new Map();
|
|
33
37
|
}
|
|
34
38
|
getOrCreateState(sessionId) {
|
|
35
39
|
if (!this.chatStates.has(sessionId)) {
|
|
36
40
|
this.chatStates.set(sessionId, {
|
|
41
|
+
systemPromptId: null,
|
|
37
42
|
systemInstruction: null,
|
|
38
43
|
history: [],
|
|
39
44
|
});
|
|
@@ -43,10 +48,15 @@ let ChatService = ChatService_1 = class ChatService {
|
|
|
43
48
|
hasChat(sessionId) {
|
|
44
49
|
return this.chatStates.has(sessionId);
|
|
45
50
|
}
|
|
51
|
+
setSystemPromptId(sessionId, promptId) {
|
|
52
|
+
const state = this.getOrCreateState(sessionId);
|
|
53
|
+
state.systemPromptId = promptId;
|
|
54
|
+
this.logger.log(`System prompt ID set to ${promptId} for session ${sessionId}`);
|
|
55
|
+
}
|
|
46
56
|
setSystemInstruction(sessionId, instruction) {
|
|
47
57
|
const state = this.getOrCreateState(sessionId);
|
|
48
58
|
state.systemInstruction = instruction;
|
|
49
|
-
this.logger.log(`
|
|
59
|
+
this.logger.log(`Static system instruction set for session ${sessionId}`);
|
|
50
60
|
}
|
|
51
61
|
loadHistory(sessionId, history) {
|
|
52
62
|
const state = this.getOrCreateState(sessionId);
|
|
@@ -67,20 +77,41 @@ let ChatService = ChatService_1 = class ChatService {
|
|
|
67
77
|
return;
|
|
68
78
|
}
|
|
69
79
|
try {
|
|
70
|
-
const
|
|
80
|
+
const session = await this.sessionsService.findOne(sessionId);
|
|
81
|
+
let finalSystemInstruction = state.systemInstruction || '';
|
|
82
|
+
const promptIdToRender = state.systemPromptId || session.systemPrompt?.id;
|
|
83
|
+
if (promptIdToRender) {
|
|
84
|
+
this.logger.log(`Lazy rendering system prompt ${promptIdToRender} for turn in session ${sessionId}`);
|
|
85
|
+
const rendered = await this.systemPromptsService.findOne(promptIdToRender);
|
|
86
|
+
finalSystemInstruction = rendered.prompt_content;
|
|
87
|
+
}
|
|
88
|
+
else if (!finalSystemInstruction) {
|
|
89
|
+
this.logger.log(`No system prompt ID or static instruction found for session ${sessionId}. Fetching default.`);
|
|
90
|
+
const defaultPrompt = await this.systemPromptsService.findDefault();
|
|
91
|
+
finalSystemInstruction = defaultPrompt?.prompt_content || '';
|
|
92
|
+
}
|
|
93
|
+
const generationConfig = {};
|
|
94
|
+
if (session.reasoning_effort) {
|
|
95
|
+
generationConfig.reasoning = { effort: session.reasoning_effort };
|
|
96
|
+
}
|
|
97
|
+
const llm_response = await this.llmProvider.generateContent({
|
|
71
98
|
prompt: message,
|
|
72
|
-
systemInstruction:
|
|
99
|
+
systemInstruction: finalSystemInstruction,
|
|
73
100
|
history: historyForProvider,
|
|
101
|
+
modelId: session.model_id,
|
|
102
|
+
generationConfig,
|
|
74
103
|
});
|
|
75
104
|
state.history.push({
|
|
76
105
|
role: 'model',
|
|
77
|
-
parts: [{ text:
|
|
106
|
+
parts: [{ text: llm_response.text }],
|
|
78
107
|
});
|
|
79
108
|
const executionStrategy = await this.applicationStateService.getExecutionStrategy();
|
|
80
109
|
await this.llmResponsesService.submit({
|
|
81
110
|
session: submit_llm_response_dto_1.SessionType.ACTIVE,
|
|
82
111
|
execution_strategy: executionStrategy,
|
|
83
|
-
raw_llm_response:
|
|
112
|
+
raw_llm_response: llm_response.text,
|
|
113
|
+
input_token_count: llm_response.usage?.inputTokens,
|
|
114
|
+
output_token_count: llm_response.usage?.outputTokens,
|
|
84
115
|
});
|
|
85
116
|
this.eventsGateway.sendToAll('refresh-ui', {});
|
|
86
117
|
}
|
|
@@ -95,9 +126,13 @@ exports.ChatService = ChatService = ChatService_1 = __decorate([
|
|
|
95
126
|
(0, common_1.Injectable)(),
|
|
96
127
|
__param(0, (0, common_1.Inject)(llm_provider_interface_1.LLM_PROVIDER)),
|
|
97
128
|
__param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => llm_responses_service_1.LlmResponsesService))),
|
|
129
|
+
__param(5, (0, common_1.Inject)((0, common_1.forwardRef)(() => sessions_service_1.SessionsService))),
|
|
130
|
+
__param(6, (0, common_1.Inject)((0, common_1.forwardRef)(() => system_prompts_service_1.SystemPromptsService))),
|
|
98
131
|
__metadata("design:paramtypes", [Object, events_gateway_1.EventsGateway,
|
|
99
132
|
llm_responses_service_1.LlmResponsesService,
|
|
100
133
|
application_state_service_1.ApplicationStateService,
|
|
101
|
-
message_bus_service_1.MessageBusService
|
|
134
|
+
message_bus_service_1.MessageBusService,
|
|
135
|
+
sessions_service_1.SessionsService,
|
|
136
|
+
system_prompts_service_1.SystemPromptsService])
|
|
102
137
|
], ChatService);
|
|
103
138
|
//# sourceMappingURL=chat.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.service.js","sourceRoot":"","sources":["../../../src/interactive-chat/chat.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"chat.service.js","sourceRoot":"","sources":["../../../src/interactive-chat/chat.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LlmProviderController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const llm_provider_interface_1 = require("./llm-provider.interface");
|
|
18
|
+
let LlmProviderController = class LlmProviderController {
|
|
19
|
+
constructor(llmProvider) {
|
|
20
|
+
this.llmProvider = llmProvider;
|
|
21
|
+
}
|
|
22
|
+
async getModels() {
|
|
23
|
+
const models = await this.llmProvider.getModels();
|
|
24
|
+
return { models };
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.LlmProviderController = LlmProviderController;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, common_1.Get)('models'),
|
|
30
|
+
__metadata("design:type", Function),
|
|
31
|
+
__metadata("design:paramtypes", []),
|
|
32
|
+
__metadata("design:returntype", Promise)
|
|
33
|
+
], LlmProviderController.prototype, "getModels", null);
|
|
34
|
+
exports.LlmProviderController = LlmProviderController = __decorate([
|
|
35
|
+
(0, common_1.Controller)('llm-provider'),
|
|
36
|
+
__param(0, (0, common_1.Inject)(llm_provider_interface_1.LLM_PROVIDER)),
|
|
37
|
+
__metadata("design:paramtypes", [Object])
|
|
38
|
+
], LlmProviderController);
|
|
39
|
+
//# sourceMappingURL=llm-provider.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-provider.controller.js","sourceRoot":"","sources":["../../../src/llm-provider/llm-provider.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyD;AACzD,qEAA+E;AAGxE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YAEmB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IACxC,CAAC;IAGE,AAAN,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF,CAAA;AAXY,sDAAqB;AAO1B;IADL,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;sDAIb;gCAVU,qBAAqB;IADjC,IAAA,mBAAU,EAAC,cAAc,CAAC;IAGtB,WAAA,IAAA,eAAM,EAAC,qCAAY,CAAC,CAAA;;GAFZ,qBAAqB,CAWjC"}
|
|
@@ -5,12 +5,46 @@ export interface LlmContent {
|
|
|
5
5
|
role: 'user' | 'model';
|
|
6
6
|
parts: LlmContentPart[];
|
|
7
7
|
}
|
|
8
|
+
export declare enum ReasoningEffort {
|
|
9
|
+
XHIGH = "xhigh",
|
|
10
|
+
HIGH = "high",
|
|
11
|
+
MEDIUM = "medium",
|
|
12
|
+
LOW = "low",
|
|
13
|
+
MINIMAL = "minimal",
|
|
14
|
+
NONE = "none"
|
|
15
|
+
}
|
|
16
|
+
export interface LlmReasoningConfig {
|
|
17
|
+
effort?: ReasoningEffort;
|
|
18
|
+
}
|
|
19
|
+
export interface LlmGenerationConfig {
|
|
20
|
+
temperature?: number;
|
|
21
|
+
maxOutputTokens?: number;
|
|
22
|
+
topP?: number;
|
|
23
|
+
topK?: number;
|
|
24
|
+
reasoning?: LlmReasoningConfig;
|
|
25
|
+
}
|
|
8
26
|
export interface LlmProviderRequest {
|
|
9
27
|
prompt: string;
|
|
10
28
|
systemInstruction?: string;
|
|
11
29
|
history?: LlmContent[];
|
|
30
|
+
modelId?: string;
|
|
31
|
+
generationConfig?: LlmGenerationConfig;
|
|
32
|
+
}
|
|
33
|
+
export interface LlmModel {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
provider: 'gemini' | 'openrouter';
|
|
37
|
+
}
|
|
38
|
+
export interface LlmUsage {
|
|
39
|
+
inputTokens?: number;
|
|
40
|
+
outputTokens?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface LlmResponse {
|
|
43
|
+
text: string;
|
|
44
|
+
usage?: LlmUsage;
|
|
12
45
|
}
|
|
13
46
|
export interface LlmProvider {
|
|
14
|
-
generateContent(request: LlmProviderRequest): Promise<
|
|
47
|
+
generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
|
|
48
|
+
getModels(): Promise<LlmModel[]>;
|
|
15
49
|
}
|
|
16
50
|
export declare const LLM_PROVIDER = "LLM_PROVIDER";
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LLM_PROVIDER = void 0;
|
|
3
|
+
exports.LLM_PROVIDER = exports.ReasoningEffort = void 0;
|
|
4
|
+
var ReasoningEffort;
|
|
5
|
+
(function (ReasoningEffort) {
|
|
6
|
+
ReasoningEffort["XHIGH"] = "xhigh";
|
|
7
|
+
ReasoningEffort["HIGH"] = "high";
|
|
8
|
+
ReasoningEffort["MEDIUM"] = "medium";
|
|
9
|
+
ReasoningEffort["LOW"] = "low";
|
|
10
|
+
ReasoningEffort["MINIMAL"] = "minimal";
|
|
11
|
+
ReasoningEffort["NONE"] = "none";
|
|
12
|
+
})(ReasoningEffort || (exports.ReasoningEffort = ReasoningEffort = {}));
|
|
4
13
|
exports.LLM_PROVIDER = 'LLM_PROVIDER';
|
|
5
14
|
//# sourceMappingURL=llm-provider.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-provider.interface.js","sourceRoot":"","sources":["../../../src/llm-provider/llm-provider.interface.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"llm-provider.interface.js","sourceRoot":"","sources":["../../../src/llm-provider/llm-provider.interface.ts"],"names":[],"mappings":";;;AAUA,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,gCAAa,CAAA;IACb,oCAAiB,CAAA;IACjB,8BAAW,CAAA;IACX,sCAAmB,CAAA;IACnB,gCAAa,CAAA;AACf,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B;AA2CY,QAAA,YAAY,GAAG,cAAc,CAAC"}
|
|
@@ -10,17 +10,22 @@ exports.LlmProviderModule = void 0;
|
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const llm_provider_interface_1 = require("./llm-provider.interface");
|
|
12
12
|
const gemini_module_1 = require("../gemini/gemini.module");
|
|
13
|
-
const
|
|
13
|
+
const openrouter_llm_provider_1 = require("./openrouter-llm.provider");
|
|
14
|
+
const proxy_llm_provider_1 = require("./proxy-llm.provider");
|
|
15
|
+
const application_state_module_1 = require("../application-state/application-state.module");
|
|
16
|
+
const llm_provider_controller_1 = require("./llm-provider.controller");
|
|
14
17
|
let LlmProviderModule = class LlmProviderModule {
|
|
15
18
|
};
|
|
16
19
|
exports.LlmProviderModule = LlmProviderModule;
|
|
17
20
|
exports.LlmProviderModule = LlmProviderModule = __decorate([
|
|
18
21
|
(0, common_1.Module)({
|
|
19
|
-
imports: [gemini_module_1.GeminiModule],
|
|
22
|
+
imports: [gemini_module_1.GeminiModule, application_state_module_1.ApplicationStateModule],
|
|
23
|
+
controllers: [llm_provider_controller_1.LlmProviderController],
|
|
20
24
|
providers: [
|
|
25
|
+
openrouter_llm_provider_1.OpenRouterLlmProvider,
|
|
21
26
|
{
|
|
22
27
|
provide: llm_provider_interface_1.LLM_PROVIDER,
|
|
23
|
-
useClass:
|
|
28
|
+
useClass: proxy_llm_provider_1.ProxyLlmProvider,
|
|
24
29
|
},
|
|
25
30
|
],
|
|
26
31
|
exports: [llm_provider_interface_1.LLM_PROVIDER],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-provider.module.js","sourceRoot":"","sources":["../../../src/llm-provider/llm-provider.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAwD;AACxD,2DAAuD;AACvD,uEAAkE;
|
|
1
|
+
{"version":3,"file":"llm-provider.module.js","sourceRoot":"","sources":["../../../src/llm-provider/llm-provider.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAwD;AACxD,2DAAuD;AACvD,uEAAkE;AAClE,6DAAwD;AACxD,4FAAuF;AACvF,uEAAkE;AAc3D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAG,CAAA;AAApB,8CAAiB;4BAAjB,iBAAiB;IAZ7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,EAAE,iDAAsB,CAAC;QAC/C,WAAW,EAAE,CAAC,+CAAqB,CAAC;QACpC,SAAS,EAAE;YACT,+CAAqB;YACrB;gBACE,OAAO,EAAE,qCAAY;gBACrB,QAAQ,EAAE,qCAAgB;aAC3B;SACF;QACD,OAAO,EAAE,CAAC,qCAAY,CAAC;KACxB,CAAC;GACW,iBAAiB,CAAG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LlmProvider, LlmProviderRequest, LlmModel, LlmResponse } from './llm-provider.interface';
|
|
2
|
+
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
3
|
+
export declare class OpenRouterLlmProvider implements LlmProvider {
|
|
4
|
+
private readonly applicationStateService;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private readonly tokenizer;
|
|
7
|
+
constructor(applicationStateService: ApplicationStateService);
|
|
8
|
+
private mapHistory;
|
|
9
|
+
getModels(): Promise<LlmModel[]>;
|
|
10
|
+
generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
|
|
11
|
+
}
|