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.
Files changed (65) hide show
  1. package/CODEMAP.md +45 -208
  2. package/backend/.repoburg/data.sqlite +0 -0
  3. package/backend/CODEMAP.md +49 -0
  4. package/backend/dist/src/application-state/application-state.controller.d.ts +8 -0
  5. package/backend/dist/src/application-state/application-state.controller.js +32 -0
  6. package/backend/dist/src/application-state/application-state.controller.js.map +1 -1
  7. package/backend/dist/src/application-state/application-state.service.d.ts +4 -0
  8. package/backend/dist/src/application-state/application-state.service.js +25 -0
  9. package/backend/dist/src/application-state/application-state.service.js.map +1 -1
  10. package/backend/dist/src/application-state/dto/set-openrouter-config.dto.d.ts +3 -0
  11. package/backend/dist/src/application-state/dto/set-openrouter-config.dto.js +21 -0
  12. package/backend/dist/src/application-state/dto/set-openrouter-config.dto.js.map +1 -0
  13. package/backend/dist/src/core-entities/session-input.entity.d.ts +2 -0
  14. package/backend/dist/src/core-entities/session-input.entity.js +8 -0
  15. package/backend/dist/src/core-entities/session-input.entity.js.map +1 -1
  16. package/backend/dist/src/core-entities/session.entity.d.ts +3 -0
  17. package/backend/dist/src/core-entities/session.entity.js +9 -0
  18. package/backend/dist/src/core-entities/session.entity.js.map +1 -1
  19. package/backend/dist/src/events/websocket.events.d.ts +7 -0
  20. package/backend/dist/src/events/websocket.events.js +5 -0
  21. package/backend/dist/src/events/websocket.events.js.map +1 -1
  22. package/backend/dist/src/gemini/gemini-llm.provider.d.ts +4 -2
  23. package/backend/dist/src/gemini/gemini-llm.provider.js +54 -30
  24. package/backend/dist/src/gemini/gemini-llm.provider.js.map +1 -1
  25. package/backend/dist/src/interactive-chat/chat.module.js +6 -2
  26. package/backend/dist/src/interactive-chat/chat.module.js.map +1 -1
  27. package/backend/dist/src/interactive-chat/chat.service.d.ts +6 -1
  28. package/backend/dist/src/interactive-chat/chat.service.js +89 -18
  29. package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
  30. package/backend/dist/src/llm-provider/llm-provider.controller.d.ts +8 -0
  31. package/backend/dist/src/llm-provider/llm-provider.controller.js +39 -0
  32. package/backend/dist/src/llm-provider/llm-provider.controller.js.map +1 -0
  33. package/backend/dist/src/llm-provider/llm-provider.interface.d.ts +36 -1
  34. package/backend/dist/src/llm-provider/llm-provider.interface.js +10 -1
  35. package/backend/dist/src/llm-provider/llm-provider.interface.js.map +1 -1
  36. package/backend/dist/src/llm-provider/llm-provider.module.js +8 -3
  37. package/backend/dist/src/llm-provider/llm-provider.module.js.map +1 -1
  38. package/backend/dist/src/llm-provider/openrouter-llm.provider.d.ts +11 -0
  39. package/backend/dist/src/llm-provider/openrouter-llm.provider.js +186 -0
  40. package/backend/dist/src/llm-provider/openrouter-llm.provider.js.map +1 -0
  41. package/backend/dist/src/llm-provider/proxy-llm.provider.d.ts +10 -0
  42. package/backend/dist/src/llm-provider/proxy-llm.provider.js +43 -0
  43. package/backend/dist/src/llm-provider/proxy-llm.provider.js.map +1 -0
  44. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.d.ts +2 -0
  45. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js +10 -0
  46. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js.map +1 -1
  47. package/backend/dist/src/llm-responses/llm-responses.service.d.ts +2 -0
  48. package/backend/dist/src/llm-responses/llm-responses.service.js +44 -2
  49. package/backend/dist/src/llm-responses/llm-responses.service.js.map +1 -1
  50. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.d.ts +1 -1
  51. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js +6 -0
  52. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js.map +1 -1
  53. package/backend/dist/src/session-inputs/session-inputs.service.js +1 -2
  54. package/backend/dist/src/session-inputs/session-inputs.service.js.map +1 -1
  55. package/backend/dist/src/sessions/dto/session.dto.d.ts +5 -0
  56. package/backend/dist/src/sessions/dto/session.dto.js +21 -0
  57. package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
  58. package/backend/dist/src/sessions/sessions.service.js +15 -0
  59. package/backend/dist/src/sessions/sessions.service.js.map +1 -1
  60. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  61. package/backend/packages/gemini-core/CODEMAP.md +30 -0
  62. package/backend/packages/tokenpatch/CODEMAP.md +25 -0
  63. package/daemon/CODEMAP.md +23 -0
  64. package/package.json +2 -1
  65. 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;AAG/C,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,wBAAU;CA2DtC,CAAA;AA3DY,0BAAO;AAIlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACf;AAO1B;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,wBAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;QACvD,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC1B,wBAAO;wCAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACnB;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACnC,IAAI;yCAAC;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;uCACV;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAChB;AAOzB;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,mCAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE;QAClD,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;8BAC3B,mCAAY;6CAAC;AAG3B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oEACG;AAO5C;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,yCAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,wBAAwB,EAAE;QACrE,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC;8BAC7B,yCAAe;8DAAC;AAG/C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qEACI;AAO7C;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,yCAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,yBAAyB,EAAE;QACtE,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;8BAC7B,yCAAe;+DAAC;AAGhD;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCACtB;AAGnB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,mCAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;;8CACxC;kBAxDnB,OAAO;IADnB,IAAA,gBAAM,EAAC,UAAU,CAAC;GACN,OAAO,CA2DnB"}
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":";;AAyCA,4CA2BC;AA3BD,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;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
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
- generateContent(request: LlmProviderRequest): Promise<string>;
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.5-pro',
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.error('Failed to initialize Gemini LLM Provider during background process.', error);
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 backend logs for authentication errors.');
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 { prompt, systemInstruction, history } = request;
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 generationConfig = {};
95
+ const finalGenerationConfig = {
96
+ ...generationConfig,
97
+ };
64
98
  if (systemInstruction) {
65
- generationConfig.systemInstruction = systemInstruction;
99
+ finalGenerationConfig.systemInstruction = systemInstruction;
66
100
  }
67
- const chat = new index_1.GeminiChat(this.config, generationConfig, history);
68
- const result = await chat.sendMessageStream(this.config.getModel(), { message: prompt }, `prompt-${(0, crypto_1.randomUUID)()}`);
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.logger.log(`Successfully received response from Gemini (length: ${fullResponse.length}).`);
79
- return fullResponse;
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
- let errorMessage = error.message;
83
- if (error.response && error.response.data && error.response.data.error) {
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":"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"}
1
+ {"version":3,"file":"gemini-llm.provider.js","sourceRoot":"","sources":["../../../src/gemini/gemini-llm.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAOlE,gEAI8C;AAC9C,mCAAoC;AAMpC,gGAA4F;AAE5F,SAAS,eAAe,CAAC,QAAiC;IACxD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEzC,IACE,SAAS,CAAC,OAAO;YACjB,SAAS,CAAC,OAAO,CAAC,KAAK;YACvB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAClC,CAAC;YACD,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK;iBAC3B,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iBAChC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGM,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAM5B;QALiB,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;QAG5C,cAAS,GAAG,IAAI,sCAAiB,EAAE,CAAC;QAGnD,IAAI,CAAC,MAAM,GAAG,IAAI,cAAM,CAAC;YACvB,SAAS,EAAE,4BAA4B,IAAA,mBAAU,GAAE,EAAE;YACrD,KAAK,EAAE,kBAAkB;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,8DAA8D,CAC/D,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sFAAsF,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO;YACL;gBACE,EAAE,EAAE,kBAAkB;gBACtB,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,QAAQ;aACnB;YACD;gBACE,EAAE,EAAE,0BAA0B;gBAC9B,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,QAAQ;aACnB;YACD;gBACE,EAAE,EAAE,gBAAgB;gBACpB,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,QAAQ;aACnB;YACD;gBACE,EAAE,EAAE,kBAAkB;gBACtB,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,QAAQ;aACnB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA2B;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,GACrE,OAAO,CAAC;QAGV,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAGzE,IAAI,cAAc,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;QAC/D,IAAI,OAAO,EAAE,CAAC;YACZ,cAAc,IAAI,OAAO;iBACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,qBAAqB,GAA0B;gBACnD,GAAG,gBAAgB;aACpB,CAAC;YACF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,qBAAqB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,kBAAU,CACzB,IAAI,CAAC,MAAM,EACX,qBAAqB,EACrB,OAAoB,CACrB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACzC,KAAK,EACL,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,UAAU,IAAA,mBAAU,GAAE,EAAE,CACzB,CAAC;YAEF,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1C,IAAI,IAAI,EAAE,CAAC;wBACT,YAAY,IAAI,IAAI,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;YAEtE,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE;oBACL,WAAW,EAAE,eAAe;oBAC5B,YAAY,EAAE,gBAAgB;iBAC/B;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF,CAAA;AA9HY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;;GACA,iBAAiB,CA8H7B"}
@@ -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;AAa9D,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IAXjC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uCAAiB;YACjB,4BAAY;YACZ,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yCAAkB,CAAC;YACpC,iDAAsB;YACtB,qCAAgB;SACjB;QACD,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,qBAAqB,CAAG"}
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(`System instruction set for session ${sessionId}`);
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 raw_llm_response = await this.llmProvider.generateContent({
71
- prompt: message,
72
- systemInstruction: state.systemInstruction || '',
73
- history: historyForProvider,
74
- });
75
- state.history.push({
76
- role: 'model',
77
- parts: [{ text: raw_llm_response }],
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
- await this.llmResponsesService.submit({
81
- session: submit_llm_response_dto_1.SessionType.ACTIVE,
82
- execution_strategy: executionStrategy,
83
- raw_llm_response: raw_llm_response,
84
- });
85
- this.eventsGateway.sendToAll('refresh-ui', {});
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":"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"}
1
+ {"version":3,"file":"chat.service.js","sourceRoot":"","sources":["../../../src/interactive-chat/chat.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { LlmProvider, LlmModel } from './llm-provider.interface';
2
+ export declare class LlmProviderController {
3
+ private readonly llmProvider;
4
+ constructor(llmProvider: LlmProvider);
5
+ getModels(): Promise<{
6
+ models: LlmModel[];
7
+ }>;
8
+ }
@@ -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<string>;
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":";;;AAoBa,QAAA,YAAY,GAAG,cAAc,CAAC"}
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"}