repoburg 1.2.13 → 1.3.0

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 (131) hide show
  1. package/CODEMAP.md +5 -6
  2. package/backend/.env +4 -0
  3. package/backend/dist/src/ai-actions/ai-action-batch.service.d.ts +10 -3
  4. package/backend/dist/src/ai-actions/ai-action-batch.service.js +134 -12
  5. package/backend/dist/src/ai-actions/ai-action-batch.service.js.map +1 -1
  6. package/backend/dist/src/ai-actions/ai-actions.module.js +2 -7
  7. package/backend/dist/src/ai-actions/ai-actions.module.js.map +1 -1
  8. package/backend/dist/src/ai-actions/ai-actions.service.d.ts +16 -3
  9. package/backend/dist/src/ai-actions/ai-actions.service.js +75 -11
  10. package/backend/dist/src/ai-actions/ai-actions.service.js.map +1 -1
  11. package/backend/dist/src/app.module.js +0 -4
  12. package/backend/dist/src/app.module.js.map +1 -1
  13. package/backend/dist/src/llm-orchestration/action-handlers/action-handler.interface.d.ts +7 -0
  14. package/backend/dist/src/llm-orchestration/action-handlers/action-handler.interface.js +3 -0
  15. package/backend/dist/src/llm-orchestration/action-handlers/action-handler.interface.js.map +1 -0
  16. package/backend/dist/src/llm-orchestration/action-handlers/create-file.handler.d.ts +11 -0
  17. package/backend/dist/src/llm-orchestration/action-handlers/create-file.handler.js +65 -0
  18. package/backend/dist/src/llm-orchestration/action-handlers/create-file.handler.js.map +1 -0
  19. package/backend/dist/src/llm-orchestration/action-handlers/delete-file.handler.d.ts +12 -0
  20. package/backend/dist/src/llm-orchestration/action-handlers/delete-file.handler.js +85 -0
  21. package/backend/dist/src/llm-orchestration/action-handlers/delete-file.handler.js.map +1 -0
  22. package/backend/dist/src/llm-orchestration/action-handlers/dto/create-file.args.dto.d.ts +4 -0
  23. package/backend/dist/src/llm-orchestration/action-handlers/dto/create-file.args.dto.js +29 -0
  24. package/backend/dist/src/llm-orchestration/action-handlers/dto/create-file.args.dto.js.map +1 -0
  25. package/backend/dist/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.d.ts +3 -0
  26. package/backend/dist/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.js +22 -0
  27. package/backend/dist/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.js.map +1 -0
  28. package/backend/dist/src/llm-orchestration/action-handlers/dto/edit-file.args.dto.d.ts +4 -0
  29. package/backend/dist/src/llm-orchestration/action-handlers/dto/edit-file.args.dto.js +29 -0
  30. package/backend/dist/src/llm-orchestration/action-handlers/dto/edit-file.args.dto.js.map +1 -0
  31. package/backend/dist/src/llm-orchestration/action-handlers/dto/final.args.dto.d.ts +3 -0
  32. package/backend/dist/src/{llm-response-parser/llm-response-parser.module.js → llm-orchestration/action-handlers/dto/final.args.dto.js} +14 -13
  33. package/backend/dist/src/llm-orchestration/action-handlers/dto/final.args.dto.js.map +1 -0
  34. package/backend/dist/src/llm-orchestration/action-handlers/dto/new-session.args.dto.d.ts +3 -0
  35. package/backend/dist/src/llm-orchestration/action-handlers/dto/new-session.args.dto.js +22 -0
  36. package/backend/dist/src/llm-orchestration/action-handlers/dto/new-session.args.dto.js.map +1 -0
  37. package/backend/dist/src/llm-orchestration/action-handlers/dto/request-context.args.dto.d.ts +11 -0
  38. package/backend/dist/src/llm-orchestration/action-handlers/dto/request-context.args.dto.js +50 -0
  39. package/backend/dist/src/llm-orchestration/action-handlers/dto/request-context.args.dto.js.map +1 -0
  40. package/backend/dist/src/llm-orchestration/action-handlers/dto/run-command.args.dto.d.ts +4 -0
  41. package/backend/dist/src/llm-orchestration/action-handlers/dto/run-command.args.dto.js +27 -0
  42. package/backend/dist/src/llm-orchestration/action-handlers/dto/run-command.args.dto.js.map +1 -0
  43. package/backend/dist/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.d.ts +1 -0
  44. package/backend/dist/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.js +15 -0
  45. package/backend/dist/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.js.map +1 -0
  46. package/backend/dist/src/llm-orchestration/action-handlers/dto/use-mcp-tool.args.dto.d.ts +5 -0
  47. package/backend/dist/src/llm-orchestration/action-handlers/dto/use-mcp-tool.args.dto.js +49 -0
  48. package/backend/dist/src/llm-orchestration/action-handlers/dto/use-mcp-tool.args.dto.js.map +1 -0
  49. package/backend/dist/src/llm-orchestration/action-handlers/edit-file.handler.d.ts +12 -0
  50. package/backend/dist/src/llm-orchestration/action-handlers/edit-file.handler.js +78 -0
  51. package/backend/dist/src/llm-orchestration/action-handlers/edit-file.handler.js.map +1 -0
  52. package/backend/dist/src/llm-orchestration/action-handlers/final.handler.d.ts +8 -0
  53. package/backend/dist/src/llm-orchestration/action-handlers/final.handler.js +40 -0
  54. package/backend/dist/src/llm-orchestration/action-handlers/final.handler.js.map +1 -0
  55. package/backend/dist/src/llm-orchestration/action-handlers/new-session.handler.d.ts +8 -0
  56. package/backend/dist/src/llm-orchestration/action-handlers/new-session.handler.js +45 -0
  57. package/backend/dist/src/llm-orchestration/action-handlers/new-session.handler.js.map +1 -0
  58. package/backend/dist/src/llm-orchestration/action-handlers/request-context.handler.d.ts +8 -0
  59. package/backend/dist/src/llm-orchestration/action-handlers/request-context.handler.js +49 -0
  60. package/backend/dist/src/llm-orchestration/action-handlers/request-context.handler.js.map +1 -0
  61. package/backend/dist/src/llm-orchestration/action-handlers/run-command.handler.d.ts +10 -0
  62. package/backend/dist/src/llm-orchestration/action-handlers/run-command.handler.js +73 -0
  63. package/backend/dist/src/llm-orchestration/action-handlers/run-command.handler.js.map +1 -0
  64. package/backend/dist/src/llm-orchestration/action-handlers/use-mcp-tool.handler.d.ts +12 -0
  65. package/backend/dist/src/llm-orchestration/action-handlers/use-mcp-tool.handler.js +61 -0
  66. package/backend/dist/src/llm-orchestration/action-handlers/use-mcp-tool.handler.js.map +1 -0
  67. package/backend/dist/src/llm-orchestration/errors/handler-validation.error.d.ts +4 -0
  68. package/backend/dist/src/llm-orchestration/errors/handler-validation.error.js +12 -0
  69. package/backend/dist/src/llm-orchestration/errors/handler-validation.error.js.map +1 -0
  70. package/backend/dist/src/llm-orchestration/hooks/follow-up-post-execution.hook.d.ts +25 -0
  71. package/backend/dist/src/llm-orchestration/hooks/follow-up-post-execution.hook.js +144 -0
  72. package/backend/dist/src/llm-orchestration/hooks/follow-up-post-execution.hook.js.map +1 -0
  73. package/backend/dist/src/llm-orchestration/hooks/frontend-notification.hook.d.ts +10 -0
  74. package/backend/dist/src/llm-orchestration/hooks/frontend-notification.hook.js +38 -0
  75. package/backend/dist/src/llm-orchestration/hooks/frontend-notification.hook.js.map +1 -0
  76. package/backend/dist/src/llm-orchestration/hooks/post-execution-hook.interface.d.ts +5 -0
  77. package/backend/dist/src/llm-orchestration/hooks/post-execution-hook.interface.js +3 -0
  78. package/backend/dist/src/llm-orchestration/hooks/post-execution-hook.interface.js.map +1 -0
  79. package/backend/dist/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.d.ts +12 -0
  80. package/backend/dist/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.js +55 -0
  81. package/backend/dist/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.js.map +1 -0
  82. package/backend/dist/src/llm-orchestration/llm-orchestration.interfaces.d.ts +52 -0
  83. package/backend/dist/src/llm-orchestration/llm-orchestration.interfaces.js +13 -0
  84. package/backend/dist/src/llm-orchestration/llm-orchestration.interfaces.js.map +1 -0
  85. package/backend/dist/src/llm-orchestration/llm-orchestration.module.d.ts +2 -0
  86. package/backend/dist/src/llm-orchestration/llm-orchestration.module.js +88 -0
  87. package/backend/dist/src/llm-orchestration/llm-orchestration.module.js.map +1 -0
  88. package/backend/dist/src/llm-orchestration/llm-turn-processor.service.d.ts +20 -0
  89. package/backend/dist/src/llm-orchestration/llm-turn-processor.service.js +156 -0
  90. package/backend/dist/src/llm-orchestration/llm-turn-processor.service.js.map +1 -0
  91. package/backend/dist/src/llm-orchestration/parser/llm-output-parser.service.d.ts +5 -0
  92. package/backend/dist/src/llm-orchestration/parser/llm-output-parser.service.js +105 -0
  93. package/backend/dist/src/llm-orchestration/parser/llm-output-parser.service.js.map +1 -0
  94. package/backend/dist/src/llm-orchestration/parser/parsing.constants.d.ts +7 -0
  95. package/backend/dist/src/llm-orchestration/parser/parsing.constants.js +11 -0
  96. package/backend/dist/src/llm-orchestration/parser/parsing.constants.js.map +1 -0
  97. package/backend/dist/src/llm-responses/llm-responses.module.js +2 -0
  98. package/backend/dist/src/llm-responses/llm-responses.module.js.map +1 -1
  99. package/backend/dist/src/llm-responses/llm-responses.service.d.ts +3 -6
  100. package/backend/dist/src/llm-responses/llm-responses.service.js +9 -112
  101. package/backend/dist/src/llm-responses/llm-responses.service.js.map +1 -1
  102. package/backend/dist/src/seeding/data/system-prompts/carryover-agent.d.ts +1 -1
  103. package/backend/dist/src/seeding/data/system-prompts/carryover-agent.js +8 -8
  104. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.d.ts +1 -1
  105. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js +77 -87
  106. package/backend/dist/src/seeding/data/system-prompts/default_master-agent.js.map +1 -1
  107. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  108. package/package.json +1 -1
  109. package/backend/dist/src/action-execution/action-execution.module.d.ts +0 -2
  110. package/backend/dist/src/action-execution/action-execution.module.js +0 -23
  111. package/backend/dist/src/action-execution/action-execution.module.js.map +0 -1
  112. package/backend/dist/src/action-execution/action-execution.service.d.ts +0 -19
  113. package/backend/dist/src/action-execution/action-execution.service.js +0 -149
  114. package/backend/dist/src/action-execution/action-execution.service.js.map +0 -1
  115. package/backend/dist/src/ai-actions/ai-action-creation.service.d.ts +0 -29
  116. package/backend/dist/src/ai-actions/ai-action-creation.service.js +0 -416
  117. package/backend/dist/src/ai-actions/ai-action-creation.service.js.map +0 -1
  118. package/backend/dist/src/llm-response-parser/dto/ai-action.dto.d.ts +0 -30
  119. package/backend/dist/src/llm-response-parser/dto/ai-action.dto.js +0 -162
  120. package/backend/dist/src/llm-response-parser/dto/ai-action.dto.js.map +0 -1
  121. package/backend/dist/src/llm-response-parser/errors/parsing.error.d.ts +0 -4
  122. package/backend/dist/src/llm-response-parser/errors/parsing.error.js +0 -13
  123. package/backend/dist/src/llm-response-parser/errors/parsing.error.js.map +0 -1
  124. package/backend/dist/src/llm-response-parser/llm-response-parser.module.d.ts +0 -2
  125. package/backend/dist/src/llm-response-parser/llm-response-parser.module.js.map +0 -1
  126. package/backend/dist/src/llm-response-parser/llm-response-parser.service.d.ts +0 -9
  127. package/backend/dist/src/llm-response-parser/llm-response-parser.service.js +0 -215
  128. package/backend/dist/src/llm-response-parser/llm-response-parser.service.js.map +0 -1
  129. package/backend/dist/src/llm-response-parser/parsing.constants.d.ts +0 -20
  130. package/backend/dist/src/llm-response-parser/parsing.constants.js +0 -24
  131. package/backend/dist/src/llm-response-parser/parsing.constants.js.map +0 -1
@@ -0,0 +1,49 @@
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.UseMcpToolArgsDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ class UseMcpToolArgsDto {
16
+ }
17
+ exports.UseMcpToolArgsDto = UseMcpToolArgsDto;
18
+ __decorate([
19
+ (0, class_validator_1.IsString)({ message: 'server_name must be a string.' }),
20
+ (0, class_validator_1.IsNotEmpty)({ message: 'server_name must not be empty.' }),
21
+ __metadata("design:type", String)
22
+ ], UseMcpToolArgsDto.prototype, "server_name", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsString)({ message: 'mcp_tool_name must be a string.' }),
25
+ (0, class_validator_1.IsNotEmpty)({ message: 'mcp_tool_name must not be empty.' }),
26
+ __metadata("design:type", String)
27
+ ], UseMcpToolArgsDto.prototype, "mcp_tool_name", void 0);
28
+ __decorate([
29
+ (0, class_transformer_1.Transform)(({ value }) => {
30
+ if (typeof value !== 'string') {
31
+ return value;
32
+ }
33
+ try {
34
+ const parsed = JSON.parse(value);
35
+ if (typeof parsed === 'object' && parsed !== null) {
36
+ return parsed;
37
+ }
38
+ return value;
39
+ }
40
+ catch (e) {
41
+ return value;
42
+ }
43
+ }),
44
+ (0, class_validator_1.IsObject)({
45
+ message: 'arguments must be a string containing a valid JSON object.',
46
+ }),
47
+ __metadata("design:type", Object)
48
+ ], UseMcpToolArgsDto.prototype, "arguments", void 0);
49
+ //# sourceMappingURL=use-mcp-tool.args.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mcp-tool.args.dto.js","sourceRoot":"","sources":["../../../../../src/llm-orchestration/action-handlers/dto/use-mcp-tool.args.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAiE;AACjE,yDAA8C;AAE9C,MAAa,iBAAiB;CA4B7B;AA5BD,8CA4BC;AAzBC;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACtD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;;sDACtC;AAIpB;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IACxD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;wDACtC;AAoBtB;IAlBC,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACD,IAAA,0BAAQ,EAAC;QACR,OAAO,EAAE,4DAA4D;KACtE,CAAC;;oDACgB"}
@@ -0,0 +1,12 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ export declare class EditFileHandler implements ActionHandler {
4
+ readonly toolName = "edit_file";
5
+ private readonly logger;
6
+ private readonly projectRoot;
7
+ private resolveAndValidatePath;
8
+ private readFileContent;
9
+ execute(args: {
10
+ [key: string]: any;
11
+ }, _context: PlanExecutionContext): Promise<ActionExecutionResult>;
12
+ }
@@ -0,0 +1,78 @@
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 EditFileHandler_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.EditFileHandler = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const fs = require("fs/promises");
13
+ const path = require("path");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
17
+ const edit_file_args_dto_1 = require("./dto/edit-file.args.dto");
18
+ let EditFileHandler = EditFileHandler_1 = class EditFileHandler {
19
+ constructor() {
20
+ this.toolName = 'edit_file';
21
+ this.logger = new common_1.Logger(EditFileHandler_1.name);
22
+ this.projectRoot = process.env.REPOBURG_PROJECT_PATH || process.cwd();
23
+ }
24
+ resolveAndValidatePath(unsafePath) {
25
+ const normalizedPath = path.normalize(unsafePath);
26
+ if (path.isAbsolute(normalizedPath)) {
27
+ throw new common_1.BadRequestException(`Absolute paths are not allowed: ${unsafePath}`);
28
+ }
29
+ const resolvedPath = path.resolve(this.projectRoot, normalizedPath);
30
+ if (!resolvedPath.startsWith(this.projectRoot)) {
31
+ throw new common_1.BadRequestException(`Path traversal is not allowed: ${unsafePath}`);
32
+ }
33
+ return resolvedPath;
34
+ }
35
+ async readFileContent(filePath) {
36
+ try {
37
+ return await fs.readFile(filePath, 'utf8');
38
+ }
39
+ catch (error) {
40
+ if (error.code === 'ENOENT') {
41
+ return null;
42
+ }
43
+ throw error;
44
+ }
45
+ }
46
+ async execute(args, _context) {
47
+ const validatedArgs = (0, class_transformer_1.plainToClass)(edit_file_args_dto_1.EditFileArgsDto, args);
48
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
49
+ if (errors.length > 0) {
50
+ const errorMessages = errors
51
+ .map((err) => Object.values(err.constraints || {}).join(', '))
52
+ .join('; ');
53
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
54
+ }
55
+ const { file_path, content } = validatedArgs;
56
+ const safePath = this.resolveAndValidatePath(file_path);
57
+ const originalContent = await this.readFileContent(safePath);
58
+ try {
59
+ await fs.mkdir(path.dirname(safePath), { recursive: true });
60
+ await fs.writeFile(safePath, content, 'utf8');
61
+ return {
62
+ status: 'SUCCESS',
63
+ summary: `File "${file_path}" edited.`,
64
+ persisted_args: { file_path, content },
65
+ original_content_for_revert: originalContent,
66
+ };
67
+ }
68
+ catch (error) {
69
+ this.logger.error(`Failed to edit file at ${file_path}: ${error.message}`);
70
+ throw new common_1.InternalServerErrorException(`Failed to edit file "${file_path}": ${error.message}`);
71
+ }
72
+ }
73
+ };
74
+ exports.EditFileHandler = EditFileHandler;
75
+ exports.EditFileHandler = EditFileHandler = EditFileHandler_1 = __decorate([
76
+ (0, common_1.Injectable)()
77
+ ], EditFileHandler);
78
+ //# sourceMappingURL=edit-file.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-file.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/edit-file.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ export declare class FinalHandler implements ActionHandler {
4
+ readonly toolName = "final";
5
+ execute(args: {
6
+ [key: string]: any;
7
+ }, context: PlanExecutionContext): Promise<ActionExecutionResult>;
8
+ }
@@ -0,0 +1,40 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FinalHandler = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const final_args_dto_1 = require("./dto/final.args.dto");
12
+ const class_transformer_1 = require("class-transformer");
13
+ const class_validator_1 = require("class-validator");
14
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
15
+ let FinalHandler = class FinalHandler {
16
+ constructor() {
17
+ this.toolName = 'final';
18
+ }
19
+ async execute(args, context) {
20
+ const validatedArgs = (0, class_transformer_1.plainToClass)(final_args_dto_1.FinalArgsDto, args);
21
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
22
+ if (errors.length > 0) {
23
+ const errorMessages = errors
24
+ .map((err) => Object.values(err.constraints || {}).join(', '))
25
+ .join('; ');
26
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
27
+ }
28
+ context.flags.is_final = true;
29
+ return {
30
+ status: 'SUCCESS',
31
+ summary: 'Plan marked as final.',
32
+ persisted_args: validatedArgs,
33
+ };
34
+ }
35
+ };
36
+ exports.FinalHandler = FinalHandler;
37
+ exports.FinalHandler = FinalHandler = __decorate([
38
+ (0, common_1.Injectable)()
39
+ ], FinalHandler);
40
+ //# sourceMappingURL=final.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"final.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/final.handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAM5C,yDAAoD;AACpD,yDAAiD;AACjD,qDAA2C;AAC3C,iFAA4E;AAGrE,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACI,aAAQ,GAAG,OAAO,CAAC;IAuB9B,CAAC;IArBC,KAAK,CAAC,OAAO,CACX,IAA4B,EAC5B,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAA,gCAAY,EAAC,6BAAY,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,iDAAsB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAE9B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,uBAAuB;YAChC,cAAc,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAwBxB"}
@@ -0,0 +1,8 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ export declare class NewSessionHandler implements ActionHandler {
4
+ readonly toolName = "new_session";
5
+ execute(args: {
6
+ [key: string]: any;
7
+ }, context: PlanExecutionContext): Promise<ActionExecutionResult>;
8
+ }
@@ -0,0 +1,45 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NewSessionHandler = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const new_session_args_dto_1 = require("./dto/new-session.args.dto");
12
+ const class_transformer_1 = require("class-transformer");
13
+ const class_validator_1 = require("class-validator");
14
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
15
+ let NewSessionHandler = class NewSessionHandler {
16
+ constructor() {
17
+ this.toolName = 'new_session';
18
+ }
19
+ async execute(args, context) {
20
+ const validatedArgs = (0, class_transformer_1.plainToClass)(new_session_args_dto_1.NewSessionArgsDto, args);
21
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
22
+ if (errors.length > 0) {
23
+ const errorMessages = errors
24
+ .map((err) => Object.values(err.constraints || {}).join(', '))
25
+ .join('; ');
26
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
27
+ }
28
+ context.flags.should_halt = true;
29
+ context.flags.halt_reason = 'NEW_SESSION';
30
+ context.followUpAction = {
31
+ type: 'NEW_SESSION',
32
+ data: { handover_string: validatedArgs.handover_string },
33
+ };
34
+ return {
35
+ status: 'SUCCESS',
36
+ summary: 'Plan halted for session handover.',
37
+ persisted_args: validatedArgs,
38
+ };
39
+ }
40
+ };
41
+ exports.NewSessionHandler = NewSessionHandler;
42
+ exports.NewSessionHandler = NewSessionHandler = __decorate([
43
+ (0, common_1.Injectable)()
44
+ ], NewSessionHandler);
45
+ //# sourceMappingURL=new-session.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-session.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/new-session.handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAM5C,qEAA+D;AAC/D,yDAAiD;AACjD,qDAA2C;AAC3C,iFAA4E;AAGrE,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAAvB;QACI,aAAQ,GAAG,aAAa,CAAC;IA4BpC,CAAC;IA1BC,KAAK,CAAC,OAAO,CACX,IAA4B,EAC5B,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAA,gCAAY,EAAC,wCAAiB,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,iDAAsB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,aAAa,CAAC;QAC1C,OAAO,CAAC,cAAc,GAAG;YACvB,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,eAAe,EAAE;SACzD,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,mCAAmC;YAC5C,cAAc,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AA7BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CA6B7B"}
@@ -0,0 +1,8 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ export declare class RequestContextHandler implements ActionHandler {
4
+ readonly toolName = "request_context";
5
+ execute(args: {
6
+ [key: string]: any;
7
+ }, context: PlanExecutionContext): Promise<ActionExecutionResult>;
8
+ }
@@ -0,0 +1,49 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RequestContextHandler = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const request_context_args_dto_1 = require("./dto/request-context.args.dto");
12
+ const class_transformer_1 = require("class-transformer");
13
+ const class_validator_1 = require("class-validator");
14
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
15
+ let RequestContextHandler = class RequestContextHandler {
16
+ constructor() {
17
+ this.toolName = 'request_context';
18
+ }
19
+ async execute(args, context) {
20
+ const validatedArgs = (0, class_transformer_1.plainToClass)(request_context_args_dto_1.RequestContextArgsDto, args);
21
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
22
+ if (errors.length > 0) {
23
+ const errorMessages = errors
24
+ .map((err) => Object.values(err.constraints || {}).join(', '))
25
+ .join('; ');
26
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
27
+ }
28
+ const { files, folders } = validatedArgs;
29
+ context.flags.should_halt = true;
30
+ context.flags.halt_reason = 'CONTEXT_REQUESTED';
31
+ context.followUpAction = {
32
+ type: 'AUTO_CONTEXT_FETCH',
33
+ data: {
34
+ files: files ? files.split(',').map((f) => f.trim()) : [],
35
+ folders: folders ? folders.split(',').map((f) => f.trim()) : [],
36
+ },
37
+ };
38
+ return {
39
+ status: 'SUCCESS',
40
+ summary: 'Plan halted to fetch additional context.',
41
+ persisted_args: validatedArgs,
42
+ };
43
+ }
44
+ };
45
+ exports.RequestContextHandler = RequestContextHandler;
46
+ exports.RequestContextHandler = RequestContextHandler = __decorate([
47
+ (0, common_1.Injectable)()
48
+ ], RequestContextHandler);
49
+ //# sourceMappingURL=request-context.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/request-context.handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAM5C,6EAAuE;AACvE,yDAAiD;AACjD,qDAA2C;AAC3C,iFAA4E;AAGrE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACI,aAAQ,GAAG,iBAAiB,CAAC;IAiCxC,CAAC;IA/BC,KAAK,CAAC,OAAO,CACX,IAA4B,EAC5B,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAA,gCAAY,EAAC,gDAAqB,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,iDAAsB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAEzC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,mBAAmB,CAAC;QAChD,OAAO,CAAC,cAAc,GAAG;YACvB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;aAChE;SACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,0CAA0C;YACnD,cAAc,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AAlCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAkCjC"}
@@ -0,0 +1,10 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ export declare class RunCommandHandler implements ActionHandler {
4
+ readonly toolName = "run_command";
5
+ private readonly logger;
6
+ private readonly projectRoot;
7
+ execute(args: {
8
+ [key: string]: any;
9
+ }, context: PlanExecutionContext): Promise<ActionExecutionResult>;
10
+ }
@@ -0,0 +1,73 @@
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 RunCommandHandler_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RunCommandHandler = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const child_process_1 = require("child_process");
13
+ const util_1 = require("util");
14
+ const run_command_args_dto_1 = require("./dto/run-command.args.dto");
15
+ const class_transformer_1 = require("class-transformer");
16
+ const class_validator_1 = require("class-validator");
17
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
18
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
19
+ let RunCommandHandler = RunCommandHandler_1 = class RunCommandHandler {
20
+ constructor() {
21
+ this.toolName = 'run_command';
22
+ this.logger = new common_1.Logger(RunCommandHandler_1.name);
23
+ this.projectRoot = process.env.REPOBURG_PROJECT_PATH || process.cwd();
24
+ }
25
+ async execute(args, context) {
26
+ const validatedArgs = (0, class_transformer_1.plainToClass)(run_command_args_dto_1.RunCommandArgsDto, args);
27
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
28
+ if (errors.length > 0) {
29
+ const errorMessages = errors
30
+ .map((err) => Object.values(err.constraints || {}).join(', '))
31
+ .join('; ');
32
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
33
+ }
34
+ const { command_string } = validatedArgs;
35
+ let unifiedOutput;
36
+ let summary;
37
+ let status = 'SUCCESS';
38
+ let errorMessage;
39
+ try {
40
+ const { stdout, stderr } = await execAsync(command_string, {
41
+ cwd: this.projectRoot,
42
+ maxBuffer: 128 * 1024 * 1024,
43
+ timeout: 15000,
44
+ });
45
+ unifiedOutput = stdout || stderr || '(Command produced no output)';
46
+ summary = `Command "${command_string}" executed.`;
47
+ }
48
+ catch (error) {
49
+ const execError = error;
50
+ unifiedOutput = `COMMAND FAILED: ${execError.message}\n\nSTDOUT:\n${execError.stdout || 'N/A'}\n\nSTDERR:\n${execError.stderr || 'N/A'}`;
51
+ summary = `Command "${command_string}" failed.`;
52
+ status = 'FAILURE';
53
+ errorMessage = execError.message;
54
+ this.logger.error(`Error executing command: ${unifiedOutput}`);
55
+ }
56
+ context.outputs.commands.push({
57
+ command: command_string,
58
+ output: unifiedOutput,
59
+ });
60
+ return {
61
+ status,
62
+ summary: `${summary} Output captured.`,
63
+ persisted_args: { command_string },
64
+ error_message: errorMessage,
65
+ execution_log: { output: unifiedOutput, error_message: errorMessage },
66
+ };
67
+ }
68
+ };
69
+ exports.RunCommandHandler = RunCommandHandler;
70
+ exports.RunCommandHandler = RunCommandHandler = RunCommandHandler_1 = __decorate([
71
+ (0, common_1.Injectable)()
72
+ ], RunCommandHandler);
73
+ //# sourceMappingURL=run-command.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-command.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/run-command.handler.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAMpD,iDAAqC;AACrC,+BAAiC;AACjC,qEAA+D;AAC/D,yDAAiD;AACjD,qDAA2C;AAC3C,iFAA4E;AAE5E,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAG3B,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAAvB;QACI,aAAQ,GAAG,aAAa,CAAC;QACjB,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,gBAAW,GAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAqDvD,CAAC;IAnDC,KAAK,CAAC,OAAO,CACX,IAA4B,EAC5B,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAA,gCAAY,EAAC,wCAAiB,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,iDAAsB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC;QACzC,IAAI,aAAqB,CAAC;QAC1B,IAAI,OAAe,CAAC;QACpB,IAAI,MAAM,GAA0B,SAAS,CAAC;QAC9C,IAAI,YAAgC,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE;gBACzD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;gBAC5B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,aAAa,GAAG,MAAM,IAAI,MAAM,IAAI,8BAA8B,CAAC;YACnE,OAAO,GAAG,YAAY,cAAc,aAAa,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,KAAY,CAAC;YAC/B,aAAa,GAAG,mBAAmB,SAAS,CAAC,OAAO,gBAClD,SAAS,CAAC,MAAM,IAAI,KACtB,gBAAgB,SAAS,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC5C,OAAO,GAAG,YAAY,cAAc,WAAW,CAAC;YAChD,MAAM,GAAG,SAAS,CAAC;YACnB,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,OAAO,EAAE,GAAG,OAAO,mBAAmB;YACtC,cAAc,EAAE,EAAE,cAAc,EAAE;YAClC,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE;SACtE,CAAC;IACJ,CAAC;CACF,CAAA;AAzDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAyD7B"}
@@ -0,0 +1,12 @@
1
+ import { ActionHandler } from './action-handler.interface';
2
+ import { ActionExecutionResult, PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ import { McpService } from '../../mcp/mcp.service';
4
+ export declare class UseMcpToolHandler implements ActionHandler {
5
+ private readonly mcpService;
6
+ readonly toolName = "use_mcp_tool";
7
+ private readonly logger;
8
+ constructor(mcpService: McpService);
9
+ execute(args: {
10
+ [key: string]: any;
11
+ }, context: PlanExecutionContext): Promise<ActionExecutionResult>;
12
+ }
@@ -0,0 +1,61 @@
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 UseMcpToolHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.UseMcpToolHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const mcp_service_1 = require("../../mcp/mcp.service");
16
+ const use_mcp_tool_args_dto_1 = require("./dto/use-mcp-tool.args.dto");
17
+ const class_transformer_1 = require("class-transformer");
18
+ const class_validator_1 = require("class-validator");
19
+ const handler_validation_error_1 = require("../errors/handler-validation.error");
20
+ let UseMcpToolHandler = UseMcpToolHandler_1 = class UseMcpToolHandler {
21
+ constructor(mcpService) {
22
+ this.mcpService = mcpService;
23
+ this.toolName = 'use_mcp_tool';
24
+ this.logger = new common_1.Logger(UseMcpToolHandler_1.name);
25
+ }
26
+ async execute(args, context) {
27
+ const validatedArgs = (0, class_transformer_1.plainToClass)(use_mcp_tool_args_dto_1.UseMcpToolArgsDto, args);
28
+ const errors = await (0, class_validator_1.validate)(validatedArgs);
29
+ if (errors.length > 0) {
30
+ const errorMessages = errors
31
+ .map((err) => Object.values(err.constraints || {}).join(', '))
32
+ .join('; ');
33
+ throw new handler_validation_error_1.HandlerValidationError(errorMessages);
34
+ }
35
+ const { server_name, mcp_tool_name, arguments: tool_args } = validatedArgs;
36
+ const { stdout, stderr } = await this.mcpService.executeMcpTool(server_name, mcp_tool_name, tool_args);
37
+ const unifiedOutput = stdout || stderr || '(Tool produced no output)';
38
+ context.outputs.mcp_tools.push({
39
+ tool_name: `${server_name}.${mcp_tool_name}`,
40
+ output: unifiedOutput,
41
+ });
42
+ return {
43
+ status: 'SUCCESS',
44
+ summary: `MCP tool "${server_name}.${mcp_tool_name}" executed. Output captured.`,
45
+ persisted_args: {
46
+ server_name,
47
+ tool_name: mcp_tool_name,
48
+ arguments: JSON.stringify(tool_args),
49
+ },
50
+ execution_log: {
51
+ output: unifiedOutput,
52
+ },
53
+ };
54
+ }
55
+ };
56
+ exports.UseMcpToolHandler = UseMcpToolHandler;
57
+ exports.UseMcpToolHandler = UseMcpToolHandler = UseMcpToolHandler_1 = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __metadata("design:paramtypes", [mcp_service_1.McpService])
60
+ ], UseMcpToolHandler);
61
+ //# sourceMappingURL=use-mcp-tool.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mcp-tool.handler.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/action-handlers/use-mcp-tool.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AAMpD,uDAAmD;AACnD,uEAAgE;AAChE,yDAAiD;AACjD,qDAA2C;AAC3C,iFAA4E;AAGrE,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAI5B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAH1C,aAAQ,GAAG,cAAc,CAAC;QAClB,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAEP,CAAC;IAEvD,KAAK,CAAC,OAAO,CACX,IAA4B,EAC5B,OAA6B;QAE7B,MAAM,aAAa,GAAG,IAAA,gCAAY,EAAC,yCAAiB,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,iDAAsB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QAC3E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAC7D,WAAW,EACX,aAAa,EACb,SAAS,CACV,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,MAAM,IAAI,2BAA2B,CAAC;QACtE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,SAAS,EAAE,GAAG,WAAW,IAAI,aAAa,EAAE;YAC5C,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,aAAa,WAAW,IAAI,aAAa,8BAA8B;YAChF,cAAc,EAAE;gBACd,WAAW;gBACX,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACrC;YACD,aAAa,EAAE;gBACb,MAAM,EAAE,aAAa;aACtB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAK8B,wBAAU;GAJxC,iBAAiB,CA6C7B"}
@@ -0,0 +1,4 @@
1
+ export declare class HandlerValidationError extends Error {
2
+ readonly validationErrors: string;
3
+ constructor(validationErrors: string);
4
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HandlerValidationError = void 0;
4
+ class HandlerValidationError extends Error {
5
+ constructor(validationErrors) {
6
+ super(`Handler validation failed: ${validationErrors}`);
7
+ this.validationErrors = validationErrors;
8
+ this.name = 'HandlerValidationError';
9
+ }
10
+ }
11
+ exports.HandlerValidationError = HandlerValidationError;
12
+ //# sourceMappingURL=handler-validation.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-validation.error.js","sourceRoot":"","sources":["../../../../src/llm-orchestration/errors/handler-validation.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAA4B,gBAAwB;QAClD,KAAK,CAAC,8BAA8B,gBAAgB,EAAE,CAAC,CAAC;QAD9B,qBAAgB,GAAhB,gBAAgB,CAAQ;QAElD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AALD,wDAKC"}
@@ -0,0 +1,25 @@
1
+ import { PostExecutionHook } from './post-execution-hook.interface';
2
+ import { PlanExecutionContext } from '../llm-orchestration.interfaces';
3
+ import { SessionInput } from '../../core-entities';
4
+ import { ChatService } from '../../interactive-chat/chat.service';
5
+ import { SessionInputsService } from '../../session-inputs/session-inputs.service';
6
+ import { EventsGateway } from '../../events/events.gateway';
7
+ import { SystemPromptsService } from '../../system-prompts/system-prompts.service';
8
+ import { SessionsService } from '../../sessions/sessions.service';
9
+ import { ApplicationStateService } from '../../application-state/application-state.service';
10
+ export declare class FollowUpPostExecutionHook implements PostExecutionHook {
11
+ private readonly chatService;
12
+ private readonly sessionInputsService;
13
+ private readonly eventsGateway;
14
+ private readonly systemPromptsService;
15
+ private readonly sessionsService;
16
+ private readonly applicationStateService;
17
+ private readonly logger;
18
+ constructor(chatService: ChatService, sessionInputsService: SessionInputsService, eventsGateway: EventsGateway, systemPromptsService: SystemPromptsService, sessionsService: SessionsService, applicationStateService: ApplicationStateService);
19
+ run(sessionInput: SessionInput, context: PlanExecutionContext): Promise<void>;
20
+ private handleValidationFeedback;
21
+ private handleHaltedPlan;
22
+ private handleAutoContextFetch;
23
+ private handleNewSession;
24
+ private handleCommandOutputs;
25
+ }