repoburg 1.3.22 → 1.3.24
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/events/websocket.events.d.ts +7 -0
- package/backend/dist/src/events/websocket.events.js +5 -0
- package/backend/dist/src/events/websocket.events.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 +89 -18
- 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 +36 -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 +186 -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.d.ts +2 -0
- package/backend/dist/src/llm-responses/llm-responses.service.js +44 -2
- 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 +15 -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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"}
|
|
@@ -44,6 +44,13 @@ export type WebSocketEvent = {
|
|
|
44
44
|
data: {
|
|
45
45
|
prompt: string;
|
|
46
46
|
};
|
|
47
|
+
} | {
|
|
48
|
+
event: 'llm-stream-chunk';
|
|
49
|
+
data: {
|
|
50
|
+
sessionInputId: string;
|
|
51
|
+
chunk: string;
|
|
52
|
+
isFirst: boolean;
|
|
53
|
+
};
|
|
47
54
|
};
|
|
48
55
|
export type WebSocketEventName = WebSocketEvent['event'];
|
|
49
56
|
export declare function isWebSocketEvent(obj: unknown): obj is WebSocketEvent;
|
|
@@ -24,6 +24,11 @@ function isWebSocketEvent(obj) {
|
|
|
24
24
|
return data !== null && 'sessionId' in data;
|
|
25
25
|
case 'llm-input-generated':
|
|
26
26
|
return data !== null && 'prompt' in data;
|
|
27
|
+
case 'llm-stream-chunk':
|
|
28
|
+
return (data !== null &&
|
|
29
|
+
'sessionInputId' in data &&
|
|
30
|
+
'chunk' in data &&
|
|
31
|
+
'isFirst' in data);
|
|
27
32
|
default:
|
|
28
33
|
return false;
|
|
29
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.events.js","sourceRoot":"","sources":["../../../src/events/websocket.events.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"websocket.events.js","sourceRoot":"","sources":["../../../src/events/websocket.events.ts"],"names":[],"mappings":";;AA6CA,4CAkCC;AAlCD,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAuC,CAAC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,YAAY;YACf,OAAO,IAAI,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,IAAI,KAAK,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC;QAChD,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,CAAC;QAC1E,KAAK,sBAAsB;YACzB,OAAO,IAAI,CAAC;QACd,KAAK,sBAAsB;YACzB,OAAO,IAAI,KAAK,IAAI,IAAI,cAAc,IAAI,IAAI,CAAC;QACjD,KAAK,iBAAiB;YACpB,OAAO,IAAI,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC;QAC9C,KAAK,qBAAqB;YACxB,OAAO,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;QAC3C,KAAK,kBAAkB;YACrB,OAAO,CACL,IAAI,KAAK,IAAI;gBACb,gBAAgB,IAAI,IAAI;gBACxB,OAAO,IAAI,IAAI;gBACf,SAAS,IAAI,IAAI,CAClB,CAAC;QACJ;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -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,22 +77,79 @@ let ChatService = ChatService_1 = class ChatService {
|
|
|
67
77
|
return;
|
|
68
78
|
}
|
|
69
79
|
try {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
+
}
|
|
79
93
|
const executionStrategy = await this.applicationStateService.getExecutionStrategy();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
const isStreaming = session.model_id?.includes('/');
|
|
95
|
+
if (isStreaming) {
|
|
96
|
+
const pendingInput = await this.llmResponsesService.createPendingAiInput(sessionId, executionStrategy);
|
|
97
|
+
const onToken = (chunk, isFirst) => {
|
|
98
|
+
this.eventsGateway.sendToAll('llm-stream-chunk', {
|
|
99
|
+
sessionInputId: pendingInput.id,
|
|
100
|
+
chunk,
|
|
101
|
+
isFirst,
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const generationConfig = {};
|
|
105
|
+
if (session.reasoning_effort) {
|
|
106
|
+
generationConfig.reasoning = { effort: session.reasoning_effort };
|
|
107
|
+
}
|
|
108
|
+
const llm_response = await this.llmProvider.generateContent({
|
|
109
|
+
prompt: message,
|
|
110
|
+
systemInstruction: finalSystemInstruction,
|
|
111
|
+
history: historyForProvider,
|
|
112
|
+
modelId: session.model_id,
|
|
113
|
+
generationConfig,
|
|
114
|
+
onToken,
|
|
115
|
+
});
|
|
116
|
+
state.history.push({
|
|
117
|
+
role: 'model',
|
|
118
|
+
parts: [{ text: llm_response.text }],
|
|
119
|
+
});
|
|
120
|
+
await this.llmResponsesService.finalizePendingAiInput(pendingInput.id, {
|
|
121
|
+
raw_llm_response: llm_response.text,
|
|
122
|
+
execution_strategy: executionStrategy,
|
|
123
|
+
input_token_count: llm_response.usage?.inputTokens,
|
|
124
|
+
output_token_count: llm_response.usage?.outputTokens,
|
|
125
|
+
});
|
|
126
|
+
this.eventsGateway.sendToAll('refresh-ui', {});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const generationConfig = {};
|
|
130
|
+
if (session.reasoning_effort) {
|
|
131
|
+
generationConfig.reasoning = { effort: session.reasoning_effort };
|
|
132
|
+
}
|
|
133
|
+
const llm_response = await this.llmProvider.generateContent({
|
|
134
|
+
prompt: message,
|
|
135
|
+
systemInstruction: finalSystemInstruction,
|
|
136
|
+
history: historyForProvider,
|
|
137
|
+
modelId: session.model_id,
|
|
138
|
+
generationConfig,
|
|
139
|
+
});
|
|
140
|
+
state.history.push({
|
|
141
|
+
role: 'model',
|
|
142
|
+
parts: [{ text: llm_response.text }],
|
|
143
|
+
});
|
|
144
|
+
await this.llmResponsesService.submit({
|
|
145
|
+
session: submit_llm_response_dto_1.SessionType.ACTIVE,
|
|
146
|
+
execution_strategy: executionStrategy,
|
|
147
|
+
raw_llm_response: llm_response.text,
|
|
148
|
+
input_token_count: llm_response.usage?.inputTokens,
|
|
149
|
+
output_token_count: llm_response.usage?.outputTokens,
|
|
150
|
+
});
|
|
151
|
+
this.eventsGateway.sendToAll('refresh-ui', {});
|
|
152
|
+
}
|
|
86
153
|
}
|
|
87
154
|
catch (error) {
|
|
88
155
|
this.logger.error(`Error in sendMessage integrated flow for session ${sessionId}: ${error.message}`, error.stack);
|
|
@@ -95,9 +162,13 @@ exports.ChatService = ChatService = ChatService_1 = __decorate([
|
|
|
95
162
|
(0, common_1.Injectable)(),
|
|
96
163
|
__param(0, (0, common_1.Inject)(llm_provider_interface_1.LLM_PROVIDER)),
|
|
97
164
|
__param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => llm_responses_service_1.LlmResponsesService))),
|
|
165
|
+
__param(5, (0, common_1.Inject)((0, common_1.forwardRef)(() => sessions_service_1.SessionsService))),
|
|
166
|
+
__param(6, (0, common_1.Inject)((0, common_1.forwardRef)(() => system_prompts_service_1.SystemPromptsService))),
|
|
98
167
|
__metadata("design:paramtypes", [Object, events_gateway_1.EventsGateway,
|
|
99
168
|
llm_responses_service_1.LlmResponsesService,
|
|
100
169
|
application_state_service_1.ApplicationStateService,
|
|
101
|
-
message_bus_service_1.MessageBusService
|
|
170
|
+
message_bus_service_1.MessageBusService,
|
|
171
|
+
sessions_service_1.SessionsService,
|
|
172
|
+
system_prompts_service_1.SystemPromptsService])
|
|
102
173
|
], ChatService);
|
|
103
174
|
//# 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,47 @@ 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
|
+
onToken?: (token: string, isFirst: boolean) => void;
|
|
33
|
+
}
|
|
34
|
+
export interface LlmModel {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
provider: 'gemini' | 'openrouter';
|
|
38
|
+
}
|
|
39
|
+
export interface LlmUsage {
|
|
40
|
+
inputTokens?: number;
|
|
41
|
+
outputTokens?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface LlmResponse {
|
|
44
|
+
text: string;
|
|
45
|
+
usage?: LlmUsage;
|
|
12
46
|
}
|
|
13
47
|
export interface LlmProvider {
|
|
14
|
-
generateContent(request: LlmProviderRequest): Promise<
|
|
48
|
+
generateContent(request: LlmProviderRequest): Promise<LlmResponse>;
|
|
49
|
+
getModels(): Promise<LlmModel[]>;
|
|
15
50
|
}
|
|
16
51
|
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;AA4CY,QAAA,YAAY,GAAG,cAAc,CAAC"}
|