repoburg 1.2.7 → 1.2.8

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 (24) hide show
  1. package/CODEMAP.md +5 -4
  2. package/backend/dist/src/core-entities/session-input.entity.d.ts +4 -0
  3. package/backend/dist/src/core-entities/session-input.entity.js +20 -3
  4. package/backend/dist/src/core-entities/session-input.entity.js.map +1 -1
  5. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.d.ts +2 -0
  6. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js +10 -0
  7. package/backend/dist/src/llm-responses/dto/submit-llm-response.dto.js.map +1 -1
  8. package/backend/dist/src/llm-responses/dto/sync-conversation.dto.d.ts +13 -0
  9. package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js +60 -0
  10. package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js.map +1 -0
  11. package/backend/dist/src/llm-responses/llm-responses.controller.d.ts +5 -0
  12. package/backend/dist/src/llm-responses/llm-responses.controller.js +13 -0
  13. package/backend/dist/src/llm-responses/llm-responses.controller.js.map +1 -1
  14. package/backend/dist/src/llm-responses/llm-responses.module.js +1 -1
  15. package/backend/dist/src/llm-responses/llm-responses.module.js.map +1 -1
  16. package/backend/dist/src/llm-responses/llm-responses.service.d.ts +5 -2
  17. package/backend/dist/src/llm-responses/llm-responses.service.js +116 -5
  18. package/backend/dist/src/llm-responses/llm-responses.service.js.map +1 -1
  19. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.d.ts +1 -1
  20. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js +4 -1
  21. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js.map +1 -1
  22. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  23. package/package.json +1 -1
  24. package/visual-editor-proxy/.repoburg/data.sqlite +0 -0
package/CODEMAP.md CHANGED
@@ -35,7 +35,7 @@ The local server that contains the core application logic.
35
35
  - **`/session-inputs`**: Handles a single turn of interaction (prompt creation, context generation).
36
36
  - **`/session-followup`**: Handles creating new sessions that inherit context from previous ones.
37
37
  - **`/session-transfer`**: Manages the import and export of session data.
38
- - **`/llm-responses`**: Receives and processes raw text responses from the LLM.
38
+ - **`/llm-responses`**: Receives and processes raw text responses from the LLM. Also includes an endpoint (`/sync-conversation`) to receive and process entire conversation histories from external tools like the userscript.
39
39
  - **`/llm-response-parser`**: Parses raw LLM text into structured actions.
40
40
  - **`/ai-actions`**: Manages the individual actions (`create_file`, `run_command`) proposed by the AI.
41
41
  - **`/action-execution`**: Performs the file system operations or runs shell commands.
@@ -98,13 +98,14 @@ The userscript that bridges AI Studio with the local backend for the "manual mod
98
98
 
99
99
  ### ✨ Key Files (`userscripts/src`)
100
100
  - **`index.ts`**: The main entry point. It initializes all features and connects to the `daemon` to find the active `backend` port.
101
+ - **`network-interceptor.ts`**: The core of the new sync feature. It monkey-patches `fetch` and `XMLHttpRequest` to intercept network traffic from AI Studio, enabling it to capture the full conversation state.
102
+ - **`conversation-parser.ts`**: A helper module to parse the raw, complex data from an intercepted request into a clean, structured `Conversation` object.
101
103
  - **`webSocketHandler.ts`**: Manages the persistent WebSocket connection to the `backend`'s `/events` gateway to receive commands (e.g., prompts to paste).
102
- - **`clipboardInterceptor.ts`**: Patches the browser's native clipboard APIs to reliably capture text copied from AI Studio. This is crucial for the "Copy & Submit" workflow.
104
+ - **`clipboardInterceptor.ts`**: Patches the browser's native clipboard APIs to reliably capture text copied from AI Studio. This is used for the manual "Copy & Submit" workflow.
103
105
  - **`hotkeys.ts`**: Binds keyboard shortcuts (e.g., `Cmd+\`) to trigger actions.
104
106
  - **Core Actions**:
105
107
  - `copyAndSubmit.ts`: Implements the "Copy & Submit" workflow, which captures the AI's response and sends it to the `backend`.
106
108
  - `pasteAndRun.ts`: Implements the "Paste & Run" workflow, which takes text (from clipboard or WebSocket) and pastes it into the AI Studio prompt input.
107
- - `scrollAndCopy.ts`: A helper action that scrolls to the bottom of the AI response and copies it.
108
109
  - **`settingsManager.ts` & `settingsUI.ts`**: Create and manage a settings panel injected directly into the AI Studio page.
109
110
 
110
111
  ---
@@ -198,7 +199,7 @@ A lightweight proxy server that enables the in-context visual editing feature.
198
199
  ### Core AI Workflow
199
200
  - **Backend <-> Frontend**: The `frontend` makes API calls to a specific `backend` instance. It knows the correct port via the `bport` URL query parameter. Real-time updates are sent from backend to frontend via WebSocket.
200
201
  - **Backend <-> Userscript**: In manual mode, the `backend` sends `llm-input-generated` events to the `userscript` via WebSocket, telling it to paste a new prompt into AI Studio.
201
- - **Data from Userscript (HTTP)**: The `userscript` sends the AI's raw response back to the `backend`'s `/llm-responses/submit-external` endpoint.
202
+ - **Data from Userscript (HTTP)**: The `userscript`'s network interceptor sends the entire parsed conversation to the `backend`'s `/llm-responses/sync-conversation` endpoint. The older `copyAndSubmit` function sends a single response to `/llm-responses/submit-external`.
202
203
 
203
204
  ### Visual Editor Workflow
204
205
  - **CLI -> visual-editor-proxy**: The `repoburg start-live` command spawns the `visual-editor-proxy` process, passing the target application URL and the active backend port as environment variables.
@@ -16,4 +16,8 @@ export declare class SessionInput extends BaseEntity {
16
16
  idempotency_key: string | null;
17
17
  is_context_carrier: boolean;
18
18
  aiActions: AIAction[];
19
+ thoughts: string | null;
20
+ role: string | null;
21
+ external_conversation_id: string | null;
22
+ external_turn_id: string | null;
19
23
  }
@@ -31,7 +31,7 @@ __decorate([
31
31
  __metadata("design:type", session_entity_1.Session)
32
32
  ], SessionInput.prototype, "session", void 0);
33
33
  __decorate([
34
- (0, typeorm_1.Column)({ type: 'text' }),
34
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
35
35
  __metadata("design:type", String)
36
36
  ], SessionInput.prototype, "user_prompt", void 0);
37
37
  __decorate([
@@ -51,11 +51,11 @@ __decorate([
51
51
  __metadata("design:type", String)
52
52
  ], SessionInput.prototype, "ad_hoc_context_definition", void 0);
53
53
  __decorate([
54
- (0, typeorm_1.Column)({ type: 'text' }),
54
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
55
55
  __metadata("design:type", String)
56
56
  ], SessionInput.prototype, "generated_context_string", void 0);
57
57
  __decorate([
58
- (0, typeorm_1.Column)({ type: 'text' }),
58
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
59
59
  __metadata("design:type", String)
60
60
  ], SessionInput.prototype, "execution_strategy", void 0);
61
61
  __decorate([
@@ -78,6 +78,23 @@ __decorate([
78
78
  (0, typeorm_1.OneToMany)(() => ai_action_entity_1.AIAction, (aiAction) => aiAction.sessionInput),
79
79
  __metadata("design:type", Array)
80
80
  ], SessionInput.prototype, "aiActions", void 0);
81
+ __decorate([
82
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
83
+ __metadata("design:type", String)
84
+ ], SessionInput.prototype, "thoughts", void 0);
85
+ __decorate([
86
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
87
+ __metadata("design:type", String)
88
+ ], SessionInput.prototype, "role", void 0);
89
+ __decorate([
90
+ (0, typeorm_1.Index)(),
91
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
92
+ __metadata("design:type", String)
93
+ ], SessionInput.prototype, "external_conversation_id", void 0);
94
+ __decorate([
95
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
96
+ __metadata("design:type", String)
97
+ ], SessionInput.prototype, "external_turn_id", void 0);
81
98
  exports.SessionInput = SessionInput = __decorate([
82
99
  (0, typeorm_1.Entity)('session_inputs'),
83
100
  (0, typeorm_1.Index)(['session_id', 'idempotency_key'], {
@@ -1 +1 @@
1
- {"version":3,"file":"session-input.entity.js","sourceRoot":"","sources":["../../../src/core-entities/session-input.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,+CAA2C;AAC3C,qDAA2C;AAC3C,uEAA4D;AAC5D,yDAA8C;AAOvC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,wBAAU;CAiD3C,CAAA;AAjDY,oCAAY;AAIvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDACN;AAOnB;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,wBAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE;QAC5D,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC1B,wBAAO;6CAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;iDACL;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACN;AAOnC;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,yCAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE;QAC1D,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;8BAC3B,yCAAe;qDAAC;AAGjC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+DACA;AAGzC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8DACQ;AAGjC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDACE;AAG3B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACT;AAGhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8DACD;AAGxC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACV;AAG/B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;wDAChB;AAG5B;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,2BAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;;+CACzC;uBAhDX,YAAY;IALxB,IAAA,gBAAM,EAAC,gBAAgB,CAAC;IACxB,IAAA,eAAK,EAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE;QACxC,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,+BAA+B;KACvC,CAAC;GACW,YAAY,CAiDxB"}
1
+ {"version":3,"file":"session-input.entity.js","sourceRoot":"","sources":["../../../src/core-entities/session-input.entity.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,6 @@ export declare class SubmitLlmResponseDto {
9
9
  session?: SessionType;
10
10
  idempotency_key?: string;
11
11
  url?: string;
12
+ user_prompt?: string;
13
+ external_turn_id?: string;
12
14
  }
@@ -52,4 +52,14 @@ __decorate([
52
52
  (0, class_validator_1.IsUrl)(),
53
53
  __metadata("design:type", String)
54
54
  ], SubmitLlmResponseDto.prototype, "url", void 0);
55
+ __decorate([
56
+ (0, class_validator_1.IsOptional)(),
57
+ (0, class_validator_1.IsString)(),
58
+ __metadata("design:type", String)
59
+ ], SubmitLlmResponseDto.prototype, "user_prompt", void 0);
60
+ __decorate([
61
+ (0, class_validator_1.IsOptional)(),
62
+ (0, class_validator_1.IsString)(),
63
+ __metadata("design:type", String)
64
+ ], SubmitLlmResponseDto.prototype, "external_turn_id", void 0);
55
65
  //# sourceMappingURL=submit-llm-response.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit-llm-response.dto.js","sourceRoot":"","sources":["../../../../src/llm-responses/dto/submit-llm-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAQyB;AAEzB,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;AACnB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAa,oBAAoB;CA2BhC;AA3BD,oDA2BC;AAxBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8DACY;AAIzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;;qDACQ;AAMjB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;gEACF;AAK5B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,WAAW,CAAC;IACnB,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;qDACR;AAItB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;;6DACgB;AAIzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACK"}
1
+ {"version":3,"file":"submit-llm-response.dto.js","sourceRoot":"","sources":["../../../../src/llm-responses/dto/submit-llm-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAQyB;AAEzB,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;AACnB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAa,oBAAoB;CAmChC;AAnCD,oDAmCC;AAhCC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8DACY;AAIzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;;qDACQ;AAMjB;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;gEACF;AAK5B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,WAAW,CAAC;IACnB,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;;qDACR;AAItB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;;6DACgB;AAIzB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACK;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;yDACU;AAIrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8DACe"}
@@ -0,0 +1,13 @@
1
+ declare class TurnDto {
2
+ id: string;
3
+ role: 'user' | 'model';
4
+ content: string;
5
+ thoughts?: string;
6
+ }
7
+ export declare class SyncConversationDto {
8
+ id?: string;
9
+ title: string;
10
+ model: string;
11
+ turns: TurnDto[];
12
+ }
13
+ export {};
@@ -0,0 +1,60 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SyncConversationDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ class TurnDto {
16
+ }
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ (0, class_validator_1.IsNotEmpty)(),
20
+ __metadata("design:type", String)
21
+ ], TurnDto.prototype, "id", void 0);
22
+ __decorate([
23
+ (0, class_validator_1.IsIn)(['user', 'model']),
24
+ __metadata("design:type", String)
25
+ ], TurnDto.prototype, "role", void 0);
26
+ __decorate([
27
+ (0, class_validator_1.IsString)(),
28
+ (0, class_validator_1.IsNotEmpty)(),
29
+ __metadata("design:type", String)
30
+ ], TurnDto.prototype, "content", void 0);
31
+ __decorate([
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_validator_1.IsString)(),
34
+ __metadata("design:type", String)
35
+ ], TurnDto.prototype, "thoughts", void 0);
36
+ class SyncConversationDto {
37
+ }
38
+ exports.SyncConversationDto = SyncConversationDto;
39
+ __decorate([
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsString)(),
42
+ __metadata("design:type", String)
43
+ ], SyncConversationDto.prototype, "id", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsString)(),
46
+ (0, class_validator_1.IsNotEmpty)(),
47
+ __metadata("design:type", String)
48
+ ], SyncConversationDto.prototype, "title", void 0);
49
+ __decorate([
50
+ (0, class_validator_1.IsString)(),
51
+ (0, class_validator_1.IsNotEmpty)(),
52
+ __metadata("design:type", String)
53
+ ], SyncConversationDto.prototype, "model", void 0);
54
+ __decorate([
55
+ (0, class_validator_1.IsArray)(),
56
+ (0, class_validator_1.ValidateNested)({ each: true }),
57
+ (0, class_transformer_1.Type)(() => TurnDto),
58
+ __metadata("design:type", Array)
59
+ ], SyncConversationDto.prototype, "turns", void 0);
60
+ //# sourceMappingURL=sync-conversation.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-conversation.dto.js","sourceRoot":"","sources":["../../../../src/llm-responses/dto/sync-conversation.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,yDAAyC;AAEzC,MAAM,OAAO;CAeZ;AAZC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;mCACF;AAGX;IADC,IAAA,sBAAI,EAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;qCACD;AAIvB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wCACG;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;yCACO;AAGpB,MAAa,mBAAmB;CAiB/B;AAjBD,kDAiBC;AAdC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;+CACC;AAIZ;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kDACC;AAId;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kDACC;AAKd;IAHC,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;kDACH"}
@@ -1,9 +1,14 @@
1
1
  import { LlmResponsesService } from './llm-responses.service';
2
2
  import { SubmitLlmResponseDto } from './dto/submit-llm-response.dto';
3
3
  import { SessionInput } from '../core-entities';
4
+ import { SyncConversationDto } from './dto/sync-conversation.dto';
4
5
  export declare class LlmResponsesController {
5
6
  private readonly llmResponsesService;
6
7
  constructor(llmResponsesService: LlmResponsesService);
7
8
  submit(dto: SubmitLlmResponseDto): Promise<SessionInput>;
8
9
  submitExternal(dto: SubmitLlmResponseDto): Promise<SessionInput>;
10
+ syncConversation(dto: SyncConversationDto): Promise<{
11
+ status: string;
12
+ sessionId: string;
13
+ }>;
9
14
  }
@@ -16,6 +16,7 @@ exports.LlmResponsesController = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const llm_responses_service_1 = require("./llm-responses.service");
18
18
  const submit_llm_response_dto_1 = require("./dto/submit-llm-response.dto");
19
+ const sync_conversation_dto_1 = require("./dto/sync-conversation.dto");
19
20
  let LlmResponsesController = class LlmResponsesController {
20
21
  constructor(llmResponsesService) {
21
22
  this.llmResponsesService = llmResponsesService;
@@ -26,6 +27,10 @@ let LlmResponsesController = class LlmResponsesController {
26
27
  async submitExternal(dto) {
27
28
  return this.llmResponsesService.submitExternal(dto);
28
29
  }
30
+ async syncConversation(dto) {
31
+ const sessionId = await this.llmResponsesService.syncConversation(dto);
32
+ return { status: 'ok', sessionId };
33
+ }
29
34
  };
30
35
  exports.LlmResponsesController = LlmResponsesController;
31
36
  __decorate([
@@ -44,6 +49,14 @@ __decorate([
44
49
  __metadata("design:paramtypes", [submit_llm_response_dto_1.SubmitLlmResponseDto]),
45
50
  __metadata("design:returntype", Promise)
46
51
  ], LlmResponsesController.prototype, "submitExternal", null);
52
+ __decorate([
53
+ (0, common_1.Post)('sync-conversation'),
54
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
55
+ __param(0, (0, common_1.Body)()),
56
+ __metadata("design:type", Function),
57
+ __metadata("design:paramtypes", [sync_conversation_dto_1.SyncConversationDto]),
58
+ __metadata("design:returntype", Promise)
59
+ ], LlmResponsesController.prototype, "syncConversation", null);
47
60
  exports.LlmResponsesController = LlmResponsesController = __decorate([
48
61
  (0, common_1.Controller)('llm-responses'),
49
62
  __metadata("design:paramtypes", [llm_responses_service_1.LlmResponsesService])
@@ -1 +1 @@
1
- {"version":3,"file":"llm-responses.controller.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8E;AAC9E,mEAA8D;AAC9D,2EAAqE;AAI9D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAInE,AAAN,KAAK,CAAC,MAAM,CAAS,GAAyB;QAC5C,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAIK,AAAN,KAAK,CAAC,cAAc,CACV,GAAyB;QAEjC,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AAhBY,wDAAsB;AAK3B;IAFL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACV,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,8CAAoB;;oDAE7C;AAIK;IAFL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,8CAAoB;;4DAGlC;iCAfU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAEwB,2CAAmB;GAD1D,sBAAsB,CAgBlC"}
1
+ {"version":3,"file":"llm-responses.controller.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8E;AAC9E,mEAA8D;AAC9D,2EAAqE;AAErE,uEAAkE;AAG3D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAInE,AAAN,KAAK,CAAC,MAAM,CAAS,GAAyB;QAC5C,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAIK,AAAN,KAAK,CAAC,cAAc,CACV,GAAyB;QAEjC,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAIK,AAAN,KAAK,CAAC,gBAAgB,CAAS,GAAwB;QAIrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AA1BY,wDAAsB;AAK3B;IAFL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACV,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,8CAAoB;;oDAE7C;AAIK;IAFL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IAErB,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,8CAAoB;;4DAGlC;AAIK;IAFL,IAAA,aAAI,EAAC,mBAAmB,CAAC;IACzB,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACA,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,2CAAmB;;8DAMtD;iCAzBU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAEwB,2CAAmB;GAD1D,sBAAsB,CA0BlC"}
@@ -26,7 +26,7 @@ exports.LlmResponsesModule = LlmResponsesModule;
26
26
  exports.LlmResponsesModule = LlmResponsesModule = __decorate([
27
27
  (0, common_1.Module)({
28
28
  imports: [
29
- typeorm_1.TypeOrmModule.forFeature([core_entities_1.SessionInput]),
29
+ typeorm_1.TypeOrmModule.forFeature([core_entities_1.Session, core_entities_1.SessionInput]),
30
30
  sessions_module_1.SessionsModule,
31
31
  application_state_module_1.ApplicationStateModule,
32
32
  (0, common_1.forwardRef)(() => session_inputs_module_1.SessionInputsModule),
@@ -1 +1 @@
1
- {"version":3,"file":"llm-responses.module.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,yEAAoE;AACpE,mEAA8D;AAC9D,iEAA6D;AAC7D,4FAAuF;AACvF,mFAA8E;AAC9E,6CAAgD;AAChD,oDAAgD;AAChD,2DAAuD;AACvD,oEAAgE;AAChE,iEAAwE;AACxE,uEAAkE;AAClE,mFAA8E;AAkBvE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAhB9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,4BAAY,CAAC,CAAC;YACxC,gCAAc;YACd,iDAAsB;YACtB,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,2CAAmB,CAAC;YACrC,4BAAY;YACZ,kCAAe;YACf,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAqB,CAAC;YACvC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAe,CAAC;YACjC,2CAAmB;SACpB;QACD,WAAW,EAAE,CAAC,iDAAsB,CAAC;QACrC,SAAS,EAAE,CAAC,2CAAmB,CAAC;QAChC,OAAO,EAAE,CAAC,2CAAmB,CAAC;KAC/B,CAAC;GACW,kBAAkB,CAAG"}
1
+ {"version":3,"file":"llm-responses.module.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,yEAAoE;AACpE,mEAA8D;AAC9D,iEAA6D;AAC7D,4FAAuF;AACvF,mFAA8E;AAC9E,6CAAgD;AAChD,oDAAyD;AACzD,2DAAuD;AACvD,oEAAgE;AAChE,iEAAwE;AACxE,uEAAkE;AAClE,mFAA8E;AAkBvE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAhB9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,uBAAO,EAAE,4BAAY,CAAC,CAAC;YACjD,gCAAc;YACd,iDAAsB;YACtB,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,2CAAmB,CAAC;YACrC,4BAAY;YACZ,kCAAe;YACf,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAqB,CAAC;YACvC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,mCAAe,CAAC;YACjC,2CAAmB;SACpB;QACD,WAAW,EAAE,CAAC,iDAAsB,CAAC;QACrC,SAAS,EAAE,CAAC,2CAAmB,CAAC;QAChC,OAAO,EAAE,CAAC,2CAAmB,CAAC;KAC/B,CAAC;GACW,kBAAkB,CAAG"}
@@ -2,13 +2,15 @@ import { SessionsService } from '../sessions/sessions.service';
2
2
  import { ApplicationStateService } from '../application-state/application-state.service';
3
3
  import { SessionInputsService } from '../session-inputs/session-inputs.service';
4
4
  import { SubmitLlmResponseDto } from './dto/submit-llm-response.dto';
5
- import { SessionInput } from '../core-entities';
5
+ import { Session, SessionInput } from '../core-entities';
6
6
  import { Repository } from 'typeorm';
7
7
  import { EventsGateway } from '../events/events.gateway';
8
8
  import { AIActionCreationService } from '../ai-actions/ai-action-creation.service';
9
9
  import { ChatService } from '../interactive-chat/chat.service';
10
10
  import { SystemPromptsService } from '../system-prompts/system-prompts.service';
11
+ import { SyncConversationDto } from './dto/sync-conversation.dto';
11
12
  export declare class LlmResponsesService {
13
+ private sessionsRepository;
12
14
  private sessionInputsRepository;
13
15
  private readonly systemPromptsService;
14
16
  private readonly sessionsService;
@@ -18,7 +20,7 @@ export declare class LlmResponsesService {
18
20
  private readonly aiActionCreationService;
19
21
  private readonly chatService;
20
22
  private readonly logger;
21
- constructor(sessionInputsRepository: Repository<SessionInput>, systemPromptsService: SystemPromptsService, sessionsService: SessionsService, applicationStateService: ApplicationStateService, sessionInputsService: SessionInputsService, eventsGateway: EventsGateway, aiActionCreationService: AIActionCreationService, chatService: ChatService);
23
+ constructor(sessionsRepository: Repository<Session>, sessionInputsRepository: Repository<SessionInput>, systemPromptsService: SystemPromptsService, sessionsService: SessionsService, applicationStateService: ApplicationStateService, sessionInputsService: SessionInputsService, eventsGateway: EventsGateway, aiActionCreationService: AIActionCreationService, chatService: ChatService);
22
24
  private extractAndUpdateSessionTitle;
23
25
  submit(dto: SubmitLlmResponseDto): Promise<SessionInput>;
24
26
  private createInputForExternalSubmission;
@@ -26,4 +28,5 @@ export declare class LlmResponsesService {
26
28
  private handleAutoContextFetch;
27
29
  private handleNewSessionAction;
28
30
  submitExternal(dto: SubmitLlmResponseDto): Promise<SessionInput>;
31
+ syncConversation(dto: SyncConversationDto): Promise<string>;
29
32
  }
@@ -30,7 +30,8 @@ const parsing_constants_1 = require("../llm-response-parser/parsing.constants");
30
30
  const chat_service_1 = require("../interactive-chat/chat.service");
31
31
  const system_prompts_service_1 = require("../system-prompts/system-prompts.service");
32
32
  let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
33
- constructor(sessionInputsRepository, systemPromptsService, sessionsService, applicationStateService, sessionInputsService, eventsGateway, aiActionCreationService, chatService) {
33
+ constructor(sessionsRepository, sessionInputsRepository, systemPromptsService, sessionsService, applicationStateService, sessionInputsService, eventsGateway, aiActionCreationService, chatService) {
34
+ this.sessionsRepository = sessionsRepository;
34
35
  this.sessionInputsRepository = sessionInputsRepository;
35
36
  this.systemPromptsService = systemPromptsService;
36
37
  this.sessionsService = sessionsService;
@@ -74,6 +75,9 @@ let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
74
75
  this.logger.log('Processing LLM response for external submission.');
75
76
  sessionInput = await this.createInputForExternalSubmission(dto);
76
77
  }
78
+ if (!sessionInput.execution_strategy && dto.execution_strategy) {
79
+ sessionInput.execution_strategy = dto.execution_strategy;
80
+ }
77
81
  const cleanedLlmResponse = await this.extractAndUpdateSessionTitle(sessionInput.session_id, raw_llm_response);
78
82
  sessionInput.raw_llm_response = cleanedLlmResponse;
79
83
  const updatedSessionInput = await this.sessionInputsRepository.save(sessionInput);
@@ -124,10 +128,11 @@ let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
124
128
  }
125
129
  const newSessionInput = this.sessionInputsRepository.create({
126
130
  session: { id: sessionId },
127
- user_prompt: dto.inputId || 'Pasted LLM response directly.',
131
+ user_prompt: dto.user_prompt || 'Pasted LLM response directly.',
128
132
  execution_strategy: dto.execution_strategy,
129
133
  generated_context_string: '',
130
134
  idempotency_key: dto.idempotency_key,
135
+ external_turn_id: dto.idempotency_key,
131
136
  });
132
137
  if (dto.url) {
133
138
  await this.sessionsService.update(sessionId, { url: dto.url });
@@ -135,6 +140,8 @@ let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
135
140
  return this.sessionInputsRepository.save(newSessionInput);
136
141
  }
137
142
  async processLlmResponse(sessionInput) {
143
+ if (!sessionInput.execution_strategy)
144
+ return [];
138
145
  if (sessionInput.execution_strategy === 'review_first') {
139
146
  return this.aiActionCreationService.createActionsFromLlmResponse(sessionInput, ai_actions_service_1.AIActionStatus.PROPOSED);
140
147
  }
@@ -216,14 +223,118 @@ let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
216
223
  const result = await this.submit(dto);
217
224
  return result;
218
225
  }
226
+ async syncConversation(dto) {
227
+ this.logger.log(`Syncing conversation. External ID: ${dto.id ?? 'N/A'}. Title: ${dto.title}`);
228
+ let session = await this.sessionsService.findActive();
229
+ if (!session) {
230
+ this.logger.log('No active session found. Creating a new one.');
231
+ session = await this.sessionsService.create({
232
+ session_title: dto.title,
233
+ });
234
+ }
235
+ else {
236
+ this.logger.log(`Syncing conversation into active session ${session.id}`);
237
+ if (session.session_title !== dto.title) {
238
+ await this.sessionsService.update(session.id, {
239
+ session_title: dto.title,
240
+ });
241
+ }
242
+ }
243
+ const existingInputs = await this.sessionInputsRepository.findBy({
244
+ session_id: session.id,
245
+ });
246
+ const existingInputsMap = new Map(existingInputs.map((input) => [input.external_turn_id, input]));
247
+ const inputsToSave = [];
248
+ for (const turn of dto.turns) {
249
+ const existingInput = existingInputsMap.get(turn.id);
250
+ if (existingInput) {
251
+ let needsUpdate = false;
252
+ const newContent = turn.role === 'user' ? turn.content : existingInput.user_prompt;
253
+ const newResponse = turn.role === 'model' ? turn.content : existingInput.raw_llm_response;
254
+ const newThoughts = turn.role === 'model'
255
+ ? (turn.thoughts ?? null)
256
+ : existingInput.thoughts;
257
+ if (existingInput.user_prompt !== newContent) {
258
+ existingInput.user_prompt = newContent;
259
+ needsUpdate = true;
260
+ }
261
+ if (existingInput.raw_llm_response !== newResponse) {
262
+ existingInput.raw_llm_response = newResponse;
263
+ needsUpdate = true;
264
+ }
265
+ if (existingInput.thoughts !== newThoughts) {
266
+ existingInput.thoughts = newThoughts;
267
+ needsUpdate = true;
268
+ }
269
+ if (dto.id && existingInput.external_conversation_id !== dto.id) {
270
+ existingInput.external_conversation_id = dto.id;
271
+ needsUpdate = true;
272
+ }
273
+ if (needsUpdate) {
274
+ inputsToSave.push(existingInput);
275
+ }
276
+ existingInputsMap.delete(turn.id);
277
+ }
278
+ else {
279
+ const newInput = this.sessionInputsRepository.create({
280
+ session_id: session.id,
281
+ role: turn.role,
282
+ user_prompt: turn.role === 'user' ? turn.content : null,
283
+ raw_llm_response: turn.role === 'model' ? turn.content : null,
284
+ thoughts: turn.role === 'model' ? (turn.thoughts ?? null) : null,
285
+ external_conversation_id: dto.id,
286
+ external_turn_id: turn.id,
287
+ });
288
+ inputsToSave.push(newInput);
289
+ }
290
+ }
291
+ const idsToDelete = Array.from(existingInputsMap.values())
292
+ .map((i) => i.id)
293
+ .filter((id) => id);
294
+ if (inputsToSave.length > 0) {
295
+ await this.sessionInputsRepository.save(inputsToSave);
296
+ this.logger.log(`Saved ${inputsToSave.length} session inputs.`);
297
+ }
298
+ if (idsToDelete.length > 0) {
299
+ await this.sessionInputsRepository.delete(idsToDelete);
300
+ this.logger.log(`Deleted ${idsToDelete.length} session inputs.`);
301
+ }
302
+ const lastTurn = dto.turns.length > 0 ? dto.turns[dto.turns.length - 1] : null;
303
+ if (lastTurn && lastTurn.role === 'model') {
304
+ const lastModelTurn = lastTurn;
305
+ this.logger.log(`Found last model turn ${lastModelTurn.id}, processing for actions.`);
306
+ const lastModelInput = await this.sessionInputsRepository.findOneBy({
307
+ external_turn_id: lastModelTurn.id,
308
+ session_id: session.id,
309
+ });
310
+ if (lastModelInput) {
311
+ const executionStrategy = await this.applicationStateService.getExecutionStrategy();
312
+ await this.submit({
313
+ inputId: lastModelInput.id,
314
+ raw_llm_response: lastModelInput.raw_llm_response,
315
+ execution_strategy: executionStrategy,
316
+ });
317
+ }
318
+ else {
319
+ this.logger.warn(`Could not find the session input for the last model turn ${lastModelTurn.id} after sync.`);
320
+ }
321
+ }
322
+ else {
323
+ this.eventsGateway.sendToAll('refresh-ui', { sessionId: session.id });
324
+ }
325
+ this.logger.log(`Sync complete for session ${session.id}`);
326
+ return session.id;
327
+ }
219
328
  };
220
329
  exports.LlmResponsesService = LlmResponsesService;
221
330
  exports.LlmResponsesService = LlmResponsesService = LlmResponsesService_1 = __decorate([
222
331
  (0, common_1.Injectable)(),
223
- __param(0, (0, typeorm_1.InjectRepository)(core_entities_1.SessionInput)),
224
- __param(4, (0, common_1.Inject)((0, common_1.forwardRef)(() => session_inputs_service_1.SessionInputsService))),
225
- __param(7, (0, common_1.Inject)((0, common_1.forwardRef)(() => chat_service_1.ChatService))),
332
+ __param(0, (0, typeorm_1.InjectRepository)(core_entities_1.Session)),
333
+ __param(1, (0, typeorm_1.InjectRepository)(core_entities_1.SessionInput)),
334
+ __param(5, (0, common_1.Inject)((0, common_1.forwardRef)(() => session_inputs_service_1.SessionInputsService))),
335
+ __param(8, (0, common_1.Inject)((0, common_1.forwardRef)(() => chat_service_1.ChatService))),
226
336
  __metadata("design:paramtypes", [typeorm_2.Repository,
337
+ typeorm_2.Repository,
227
338
  system_prompts_service_1.SystemPromptsService,
228
339
  sessions_service_1.SessionsService,
229
340
  application_state_service_1.ApplicationStateService,
@@ -1 +1 @@
1
- {"version":3,"file":"llm-responses.service.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,mEAA+D;AAC/D,8FAAyF;AACzF,qFAAgF;AAChF,2EAGuC;AACvC,oDAA0D;AAC1D,6CAAmD;AACnD,qCAAqC;AACrC,6DAAyD;AACzD,4EAAwE;AAExE,yFAAmF;AACnF,yEAAkE;AAClE,gFAGkD;AAClD,mEAA+D;AAC/D,qFAAgF;AAGzE,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAG9B,YAEE,uBAAyD,EACxC,oBAA0C,EAC1C,eAAgC,EAChC,uBAAgD,EAEjE,oBAA2D,EAC1C,aAA4B,EAC5B,uBAAgD,EAEjE,WAAyC;QATjC,4BAAuB,GAAvB,uBAAuB,CAA0B;QACxC,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,oBAAe,GAAf,eAAe,CAAiB;QAChC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAEhD,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,kBAAa,GAAb,aAAa,CAAe;QAC5B,4BAAuB,GAAvB,uBAAuB,CAAyB;QAEhD,gBAAW,GAAX,WAAW,CAAa;QAb1B,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAc5D,CAAC;IAEI,KAAK,CAAC,4BAA4B,CACxC,SAAiB,EACjB,WAAmB;QAEnB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,mCAAe,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,iCAAa,CAAC,CAAC;QAEpD,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,WAAW;iBACtB,SAAS,CAAC,UAAU,GAAG,mCAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACxD,IAAI,EAAE,CAAC;YAEV,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,6BAA6B,KAAK,oBAAoB,SAAS,EAAE,CAClE,CAAC;gBACF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,eAAe,GACnB,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;gBACpC,WAAW,CAAC,SAAS,CAAC,QAAQ,GAAG,iCAAa,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAyB;QACpC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC;QAC1C,IAAI,YAA0B,CAAC;QAE/B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;YACzE,YAAY,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC1D,EAAE,EAAE,OAAO;aACZ,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,0BAAiB,CACzB,yBAAyB,OAAO,cAAc,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YACpE,YAAY,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;QAGD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAChE,YAAY,CAAC,UAAU,EACvB,gBAAgB,CACjB,CAAC;QACF,YAAY,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;QACnD,MAAM,mBAAmB,GACvB,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAGxD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAC5E,mBAAmB,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAGjD,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,4BAAY,CAAC,eAAe,CAAC;QAEnE,MAAM,uBAAuB,GAC3B,MAAM,IAAI,CAAC,uBAAuB,CAAC,0BAA0B,EAAE,CAAC;QAElE,IAAI,gBAAgB,IAAI,uBAAuB,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,0CAA0C,mBAAmB,CAAC,EAAE,EAAE,CACnE,CAAC;YAEF,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QAGD,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,4BAAY,CAAC,WAAW,CAAC;QAE/D,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,yCAAyC,mBAAmB,CAAC,EAAE,GAAG,CACnE,CAAC;YAEF,IAAI,CAAC,sBAAsB,CACzB,mBAAmB,EACnB,gBAAgB,CAAC,CAAC,CAAC,CACpB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sCAAsC,GAAG,CAAC,OAAO,EAAE,EACnD,GAAG,CAAC,KAAK,CACV,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAGD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,EAAE;YACzC,SAAS,EAAE,mBAAmB,CAAC,UAAU;YACzC,OAAO,EAAE,mBAAmB,CAAC,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,GAAyB;QAEzB,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,GAAG,CAAC,OAAO,KAAK,qCAAW,CAAC,MAAM,EAAE,CAAC;YACvC,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,qCAAW,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa;gBAChB,MAAM,IAAI,0BAAiB,CAAC,0CAA0C,CAAC,CAAC;YAC1E,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;gBAC1D,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE;gBACtE,SAAS,EAAE,CAAC,WAAW,CAAC;aACzB,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,mCAAmC,SAAS,8BAA8B,QAAQ,CAAC,EAAE,GAAG,CACzF,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YAC1B,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,+BAA+B;YAC3D,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,wBAAwB,EAAE,EAAE;YAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,YAA0B;QAE1B,IAAI,YAAY,CAAC,kBAAkB,KAAK,cAAc,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,uBAAuB,CAAC,4BAA4B,CAC9D,YAAY,EACZ,mCAAc,CAAC,QAAQ,CACxB,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,CAAC,kBAAkB,KAAK,cAAc,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,uBAAuB,CAAC,gCAAgC,CAClE,YAAY,CACb,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,CAAC,kBAAkB,KAAK,YAAY,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,uBAAuB,CAAC,yBAAyB,CAC3D,YAAY,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,4BAAmB,CAC3B,mCAAmC,YAAY,CAAC,kBAAkB,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,mBAAiC;QAEjC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GACT,MAAM,CAAC,KAAK;YACV,EAAE,KAAK,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,OAAO,GACX,MAAM,CAAC,OAAO;YACZ,EAAE,KAAK,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YAC7D,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE;YACrD,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YAC7B,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,mBAAmB,CAAC,EAAE,CACvC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sEAAsE,mBAAmB,CAAC,UAAU,aAAa,CAClH,CAAC;YACF,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAChD,mBAAmB,CAAC,UAAU,CAC/B,CAAC;QACF,MAAM,MAAM,GAA0B;YACpC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;YACpD,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC7D,mBAAmB,EAAE,OAAO,CAAC,oCAAoC;SAClE,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,0DAA0D,mBAAmB,CAAC,UAAU,GAAG,CAC5F,CAAC;QAGF,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CACrC,mBAAmB,CAAC,UAAU,EAC9B,MAAM,CACP,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,aAA2B,EAC3B,gBAA0B;QAG1B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAGzD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,mBAAmB,GAAG,mBAAmB,EAAE,cAAc,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAExE,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,EAAE;gBACnD,OAAO,EAAE,mBAAmB;aAC7B,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YACnD,aAAa,EAAE,kBAAkB;SAClC,CAAC,CAAC;QAGH,MAAM,cAAc,GAAG,gBAAgB,CAAC,eAAe,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;QACtD,IAAI,cAAc,EAAE,CAAC;YAEnB,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC;YAE5D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,oBAAoB;iBACtB,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE;gBACrB,WAAW,EAAE,cAAc;gBAC3B,kBAAkB,EAAE,iBAAiB;gBACrC,mBAAmB,EAAE,UAAU,CAAC,mCAAmC;aACpE,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uDAAuD,GAAG,CAAC,OAAO,EAAE,EACpE,GAAG,CAAC,KAAK,CACV,CAAC;YACJ,CAAC,CAAC,CAAC;QACP,CAAC;QAGD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC9C,SAAS,EAAE,UAAU,CAAC,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAyB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAGtC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AA7SY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,0BAAgB,EAAC,4BAAY,CAAC,CAAA;IAK9B,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,6CAAoB,CAAC,CAAC,CAAA;IAI9C,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC,CAAC,CAAA;qCARL,oBAAU;QACJ,6CAAoB;QACzB,kCAAe;QACP,mDAAuB;QAE1B,6CAAoB;QAC3B,8BAAa;QACH,oDAAuB;QAEnC,0BAAW;GAdhC,mBAAmB,CA6S/B"}
1
+ {"version":3,"file":"llm-responses.service.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.service.ts"],"names":[],"mappings":"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"}