repoburg 1.2.7 → 1.2.9

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 +117 -6
  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
  }
@@ -170,7 +177,7 @@ let LlmResponsesService = LlmResponsesService_1 = class LlmResponsesService {
170
177
  }
171
178
  const session = await this.sessionsService.findOne(requestContextInput.session_id);
172
179
  const newDto = {
173
- user_prompt: originalInput.user_prompt,
180
+ user_prompt: '',
174
181
  execution_strategy: originalInput.execution_strategy,
175
182
  ad_hoc_context_definition: JSON.stringify({ files, folders }),
176
183
  context_template_id: session.default_followup_context_template_id,
@@ -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":"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"}
1
+ {"version":3,"file":"llm-responses.service.js","sourceRoot":"","sources":["../../../src/llm-responses/llm-responses.service.ts"],"names":[],"mappings":"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"}