cast-code 1.0.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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +217 -0
  3. package/dist/app.module.js +45 -0
  4. package/dist/app.module.js.map +1 -0
  5. package/dist/common/common.module.js +49 -0
  6. package/dist/common/common.module.js.map +1 -0
  7. package/dist/common/constants/index.js +105 -0
  8. package/dist/common/constants/index.js.map +1 -0
  9. package/dist/common/index.js +24 -0
  10. package/dist/common/index.js.map +1 -0
  11. package/dist/common/services/config.service.js +119 -0
  12. package/dist/common/services/config.service.js.map +1 -0
  13. package/dist/common/services/llm.service.js +56 -0
  14. package/dist/common/services/llm.service.js.map +1 -0
  15. package/dist/common/services/markdown-parser.service.js +101 -0
  16. package/dist/common/services/markdown-parser.service.js.map +1 -0
  17. package/dist/common/services/markdown-renderer.service.js +220 -0
  18. package/dist/common/services/markdown-renderer.service.js.map +1 -0
  19. package/dist/common/services/multi-llm.service.js +115 -0
  20. package/dist/common/services/multi-llm.service.js.map +1 -0
  21. package/dist/common/types/index.js +20 -0
  22. package/dist/common/types/index.js.map +1 -0
  23. package/dist/common/types/markdown.types.js +6 -0
  24. package/dist/common/types/markdown.types.js.map +1 -0
  25. package/dist/main.js +84 -0
  26. package/dist/main.js.map +1 -0
  27. package/dist/modules/agents/agents.module.js +43 -0
  28. package/dist/modules/agents/agents.module.js.map +1 -0
  29. package/dist/modules/agents/definitions/architect.md +35 -0
  30. package/dist/modules/agents/definitions/backend.md +43 -0
  31. package/dist/modules/agents/definitions/coder.md +34 -0
  32. package/dist/modules/agents/definitions/devops.md +42 -0
  33. package/dist/modules/agents/definitions/frontend.md +46 -0
  34. package/dist/modules/agents/definitions/reviewer.md +35 -0
  35. package/dist/modules/agents/definitions/tester.md +41 -0
  36. package/dist/modules/agents/index.js +23 -0
  37. package/dist/modules/agents/index.js.map +1 -0
  38. package/dist/modules/agents/services/agent-loader.service.js +150 -0
  39. package/dist/modules/agents/services/agent-loader.service.js.map +1 -0
  40. package/dist/modules/agents/services/agent-registry.service.js +108 -0
  41. package/dist/modules/agents/services/agent-registry.service.js.map +1 -0
  42. package/dist/modules/agents/types/agent.types.js +6 -0
  43. package/dist/modules/agents/types/agent.types.js.map +1 -0
  44. package/dist/modules/agents/types/index.js +20 -0
  45. package/dist/modules/agents/types/index.js.map +1 -0
  46. package/dist/modules/config/config.module.js +38 -0
  47. package/dist/modules/config/config.module.js.map +1 -0
  48. package/dist/modules/config/index.js +24 -0
  49. package/dist/modules/config/index.js.map +1 -0
  50. package/dist/modules/config/services/config-commands.service.js +405 -0
  51. package/dist/modules/config/services/config-commands.service.js.map +1 -0
  52. package/dist/modules/config/services/config-manager.service.js +175 -0
  53. package/dist/modules/config/services/config-manager.service.js.map +1 -0
  54. package/dist/modules/config/services/init-config.service.js +238 -0
  55. package/dist/modules/config/services/init-config.service.js.map +1 -0
  56. package/dist/modules/config/types/config.types.js +163 -0
  57. package/dist/modules/config/types/config.types.js.map +1 -0
  58. package/dist/modules/config/types/index.js +20 -0
  59. package/dist/modules/config/types/index.js.map +1 -0
  60. package/dist/modules/core/core.module.js +60 -0
  61. package/dist/modules/core/core.module.js.map +1 -0
  62. package/dist/modules/core/index.js +22 -0
  63. package/dist/modules/core/index.js.map +1 -0
  64. package/dist/modules/core/services/deep-agent.service.js +575 -0
  65. package/dist/modules/core/services/deep-agent.service.js.map +1 -0
  66. package/dist/modules/core/services/plan-mode.service.js +225 -0
  67. package/dist/modules/core/services/plan-mode.service.js.map +1 -0
  68. package/dist/modules/git/git.module.js +48 -0
  69. package/dist/modules/git/git.module.js.map +1 -0
  70. package/dist/modules/git/index.js +23 -0
  71. package/dist/modules/git/index.js.map +1 -0
  72. package/dist/modules/git/services/code-review.service.js +330 -0
  73. package/dist/modules/git/services/code-review.service.js.map +1 -0
  74. package/dist/modules/git/services/commit-generator.service.js +403 -0
  75. package/dist/modules/git/services/commit-generator.service.js.map +1 -0
  76. package/dist/modules/git/services/index.js +21 -0
  77. package/dist/modules/git/services/index.js.map +1 -0
  78. package/dist/modules/git/services/monorepo-detector.service.js +338 -0
  79. package/dist/modules/git/services/monorepo-detector.service.js.map +1 -0
  80. package/dist/modules/git/services/pr-generator.service.js +429 -0
  81. package/dist/modules/git/services/pr-generator.service.js.map +1 -0
  82. package/dist/modules/git/services/release-notes.service.js +426 -0
  83. package/dist/modules/git/services/release-notes.service.js.map +1 -0
  84. package/dist/modules/git/types/git.types.js +6 -0
  85. package/dist/modules/git/types/git.types.js.map +1 -0
  86. package/dist/modules/git/types/index.js +20 -0
  87. package/dist/modules/git/types/index.js.map +1 -0
  88. package/dist/modules/mcp/catalog/mcp-templates.js +606 -0
  89. package/dist/modules/mcp/catalog/mcp-templates.js.map +1 -0
  90. package/dist/modules/mcp/index.js +23 -0
  91. package/dist/modules/mcp/index.js.map +1 -0
  92. package/dist/modules/mcp/mcp.module.js +35 -0
  93. package/dist/modules/mcp/mcp.module.js.map +1 -0
  94. package/dist/modules/mcp/services/mcp-client.service.js +289 -0
  95. package/dist/modules/mcp/services/mcp-client.service.js.map +1 -0
  96. package/dist/modules/mcp/services/mcp-registry.service.js +197 -0
  97. package/dist/modules/mcp/services/mcp-registry.service.js.map +1 -0
  98. package/dist/modules/mcp/types/index.js +20 -0
  99. package/dist/modules/mcp/types/index.js.map +1 -0
  100. package/dist/modules/mcp/types/mcp.types.js +6 -0
  101. package/dist/modules/mcp/types/mcp.types.js.map +1 -0
  102. package/dist/modules/memory/index.js +23 -0
  103. package/dist/modules/memory/index.js.map +1 -0
  104. package/dist/modules/memory/memory.module.js +35 -0
  105. package/dist/modules/memory/memory.module.js.map +1 -0
  106. package/dist/modules/memory/services/memory-tools.service.js +78 -0
  107. package/dist/modules/memory/services/memory-tools.service.js.map +1 -0
  108. package/dist/modules/memory/services/memory.service.js +169 -0
  109. package/dist/modules/memory/services/memory.service.js.map +1 -0
  110. package/dist/modules/memory/types/index.js +20 -0
  111. package/dist/modules/memory/types/index.js.map +1 -0
  112. package/dist/modules/memory/types/memory.types.js +6 -0
  113. package/dist/modules/memory/types/memory.types.js.map +1 -0
  114. package/dist/modules/mentions/index.js +22 -0
  115. package/dist/modules/mentions/index.js.map +1 -0
  116. package/dist/modules/mentions/mentions.module.js +32 -0
  117. package/dist/modules/mentions/mentions.module.js.map +1 -0
  118. package/dist/modules/mentions/services/mentions.service.js +336 -0
  119. package/dist/modules/mentions/services/mentions.service.js.map +1 -0
  120. package/dist/modules/mentions/types/index.js +20 -0
  121. package/dist/modules/mentions/types/index.js.map +1 -0
  122. package/dist/modules/mentions/types/mention.types.js +19 -0
  123. package/dist/modules/mentions/types/mention.types.js.map +1 -0
  124. package/dist/modules/permissions/index.js +23 -0
  125. package/dist/modules/permissions/index.js.map +1 -0
  126. package/dist/modules/permissions/permissions.module.js +35 -0
  127. package/dist/modules/permissions/permissions.module.js.map +1 -0
  128. package/dist/modules/permissions/services/permission.service.js +269 -0
  129. package/dist/modules/permissions/services/permission.service.js.map +1 -0
  130. package/dist/modules/permissions/services/prompt.service.js +116 -0
  131. package/dist/modules/permissions/services/prompt.service.js.map +1 -0
  132. package/dist/modules/permissions/types/permission.types.js +32 -0
  133. package/dist/modules/permissions/types/permission.types.js.map +1 -0
  134. package/dist/modules/project/index.js +24 -0
  135. package/dist/modules/project/index.js.map +1 -0
  136. package/dist/modules/project/project.module.js +38 -0
  137. package/dist/modules/project/project.module.js.map +1 -0
  138. package/dist/modules/project/services/project-analyzer.service.js +1063 -0
  139. package/dist/modules/project/services/project-analyzer.service.js.map +1 -0
  140. package/dist/modules/project/services/project-context.service.js +62 -0
  141. package/dist/modules/project/services/project-context.service.js.map +1 -0
  142. package/dist/modules/project/services/project-loader.service.js +147 -0
  143. package/dist/modules/project/services/project-loader.service.js.map +1 -0
  144. package/dist/modules/project/types/index.js +20 -0
  145. package/dist/modules/project/types/index.js.map +1 -0
  146. package/dist/modules/project/types/project.types.js +6 -0
  147. package/dist/modules/project/types/project.types.js.map +1 -0
  148. package/dist/modules/repl/index.js +21 -0
  149. package/dist/modules/repl/index.js.map +1 -0
  150. package/dist/modules/repl/repl.module.js +66 -0
  151. package/dist/modules/repl/repl.module.js.map +1 -0
  152. package/dist/modules/repl/services/commands/agent-commands.service.js +196 -0
  153. package/dist/modules/repl/services/commands/agent-commands.service.js.map +1 -0
  154. package/dist/modules/repl/services/commands/git-commands.service.js +500 -0
  155. package/dist/modules/repl/services/commands/git-commands.service.js.map +1 -0
  156. package/dist/modules/repl/services/commands/mcp-commands.service.js +579 -0
  157. package/dist/modules/repl/services/commands/mcp-commands.service.js.map +1 -0
  158. package/dist/modules/repl/services/commands/project-commands.service.js +226 -0
  159. package/dist/modules/repl/services/commands/project-commands.service.js.map +1 -0
  160. package/dist/modules/repl/services/commands/repl-commands.service.js +254 -0
  161. package/dist/modules/repl/services/commands/repl-commands.service.js.map +1 -0
  162. package/dist/modules/repl/services/repl.service.js +647 -0
  163. package/dist/modules/repl/services/repl.service.js.map +1 -0
  164. package/dist/modules/repl/services/smart-input.js +544 -0
  165. package/dist/modules/repl/services/smart-input.js.map +1 -0
  166. package/dist/modules/repl/services/welcome-screen.service.js +117 -0
  167. package/dist/modules/repl/services/welcome-screen.service.js.map +1 -0
  168. package/dist/modules/repl/utils/prompts-with-esc.js +187 -0
  169. package/dist/modules/repl/utils/prompts-with-esc.js.map +1 -0
  170. package/dist/modules/repl/utils/theme.js +185 -0
  171. package/dist/modules/repl/utils/theme.js.map +1 -0
  172. package/dist/modules/skills/definitions/general/file-operations.md +60 -0
  173. package/dist/modules/skills/definitions/general/git-operations.md +59 -0
  174. package/dist/modules/skills/definitions/general/planning.md +86 -0
  175. package/dist/modules/skills/definitions/general/search.md +59 -0
  176. package/dist/modules/skills/definitions/specialized/api-design.md +85 -0
  177. package/dist/modules/skills/definitions/specialized/database-operations.md +78 -0
  178. package/dist/modules/skills/definitions/specialized/frontend-bootstrap.md +71 -0
  179. package/dist/modules/skills/definitions/specialized/react-patterns.md +77 -0
  180. package/dist/modules/skills/definitions/specialized/testing-strategies.md +79 -0
  181. package/dist/modules/skills/index.js +23 -0
  182. package/dist/modules/skills/index.js.map +1 -0
  183. package/dist/modules/skills/services/skill-loader.service.js +130 -0
  184. package/dist/modules/skills/services/skill-loader.service.js.map +1 -0
  185. package/dist/modules/skills/services/skill-registry.service.js +96 -0
  186. package/dist/modules/skills/services/skill-registry.service.js.map +1 -0
  187. package/dist/modules/skills/skills.module.js +38 -0
  188. package/dist/modules/skills/skills.module.js.map +1 -0
  189. package/dist/modules/skills/types/index.js +20 -0
  190. package/dist/modules/skills/types/index.js.map +1 -0
  191. package/dist/modules/skills/types/skill.types.js +6 -0
  192. package/dist/modules/skills/types/skill.types.js.map +1 -0
  193. package/dist/modules/tasks/index.js +24 -0
  194. package/dist/modules/tasks/index.js.map +1 -0
  195. package/dist/modules/tasks/services/plan-executor.service.js +199 -0
  196. package/dist/modules/tasks/services/plan-executor.service.js.map +1 -0
  197. package/dist/modules/tasks/services/plan-mode.service.js +118 -0
  198. package/dist/modules/tasks/services/plan-mode.service.js.map +1 -0
  199. package/dist/modules/tasks/services/plan-persistence.service.js +148 -0
  200. package/dist/modules/tasks/services/plan-persistence.service.js.map +1 -0
  201. package/dist/modules/tasks/services/task-management.service.js +255 -0
  202. package/dist/modules/tasks/services/task-management.service.js.map +1 -0
  203. package/dist/modules/tasks/services/task-tools.service.js +270 -0
  204. package/dist/modules/tasks/services/task-tools.service.js.map +1 -0
  205. package/dist/modules/tasks/tasks.module.js +49 -0
  206. package/dist/modules/tasks/tasks.module.js.map +1 -0
  207. package/dist/modules/tasks/types/task.types.js +21 -0
  208. package/dist/modules/tasks/types/task.types.js.map +1 -0
  209. package/dist/modules/tools/index.js +24 -0
  210. package/dist/modules/tools/index.js.map +1 -0
  211. package/dist/modules/tools/services/filesystem-tools.service.js +450 -0
  212. package/dist/modules/tools/services/filesystem-tools.service.js.map +1 -0
  213. package/dist/modules/tools/services/search-tools.service.js +63 -0
  214. package/dist/modules/tools/services/search-tools.service.js.map +1 -0
  215. package/dist/modules/tools/services/shell-tools.service.js +194 -0
  216. package/dist/modules/tools/services/shell-tools.service.js.map +1 -0
  217. package/dist/modules/tools/services/tools-registry.service.js +83 -0
  218. package/dist/modules/tools/services/tools-registry.service.js.map +1 -0
  219. package/dist/modules/tools/tools.module.js +46 -0
  220. package/dist/modules/tools/tools.module.js.map +1 -0
  221. package/package.json +74 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "SkillLoaderService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return SkillLoaderService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _markdownparserservice = require("../../../common/services/markdown-parser.service");
13
+ const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
14
+ function _getRequireWildcardCache(nodeInterop) {
15
+ if (typeof WeakMap !== "function") return null;
16
+ var cacheBabelInterop = new WeakMap();
17
+ var cacheNodeInterop = new WeakMap();
18
+ return (_getRequireWildcardCache = function(nodeInterop) {
19
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
20
+ })(nodeInterop);
21
+ }
22
+ function _interop_require_wildcard(obj, nodeInterop) {
23
+ if (!nodeInterop && obj && obj.__esModule) {
24
+ return obj;
25
+ }
26
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
27
+ return {
28
+ default: obj
29
+ };
30
+ }
31
+ var cache = _getRequireWildcardCache(nodeInterop);
32
+ if (cache && cache.has(obj)) {
33
+ return cache.get(obj);
34
+ }
35
+ var newObj = {
36
+ __proto__: null
37
+ };
38
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
39
+ for(var key in obj){
40
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
41
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
42
+ if (desc && (desc.get || desc.set)) {
43
+ Object.defineProperty(newObj, key, desc);
44
+ } else {
45
+ newObj[key] = obj[key];
46
+ }
47
+ }
48
+ }
49
+ newObj.default = obj;
50
+ if (cache) {
51
+ cache.set(obj, newObj);
52
+ }
53
+ return newObj;
54
+ }
55
+ function _ts_decorate(decorators, target, key, desc) {
56
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
57
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
58
+ 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;
59
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
60
+ }
61
+ function _ts_metadata(k, v) {
62
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
63
+ }
64
+ let SkillLoaderService = class SkillLoaderService {
65
+ async onModuleInit() {
66
+ await this.loadSkills();
67
+ }
68
+ async loadSkills() {
69
+ const exists = await this.markdownParser.exists(this.definitionsPath);
70
+ if (!exists) {
71
+ return;
72
+ }
73
+ const parsed = await this.markdownParser.parseAll(this.definitionsPath);
74
+ for (const [relativePath, { frontmatter, content }] of parsed){
75
+ const shortName = frontmatter.name || relativePath.split('/').pop() || relativePath;
76
+ const skillDef = {
77
+ name: shortName,
78
+ description: frontmatter.description || '',
79
+ tools: frontmatter.tools || [],
80
+ guidelines: content
81
+ };
82
+ this.skills.set(relativePath, skillDef);
83
+ if (shortName !== relativePath) {
84
+ this.skills.set(shortName, skillDef);
85
+ }
86
+ }
87
+ }
88
+ async loadFromPath(customPath) {
89
+ const exists = await this.markdownParser.exists(customPath);
90
+ if (!exists) {
91
+ return;
92
+ }
93
+ const parsed = await this.markdownParser.parseAll(customPath);
94
+ for (const [name, { frontmatter, content }] of parsed){
95
+ this.skills.set(name, {
96
+ name: frontmatter.name || name,
97
+ description: frontmatter.description || '',
98
+ tools: frontmatter.tools || [],
99
+ guidelines: content
100
+ });
101
+ }
102
+ }
103
+ getSkill(name) {
104
+ return this.skills.get(name);
105
+ }
106
+ getAllSkills() {
107
+ const unique = new Map();
108
+ for (const skill of this.skills.values()){
109
+ unique.set(skill.name, skill);
110
+ }
111
+ return Array.from(unique.values());
112
+ }
113
+ getSkillNames() {
114
+ return Array.from(this.skills.keys());
115
+ }
116
+ constructor(markdownParser){
117
+ this.markdownParser = markdownParser;
118
+ this.skills = new Map();
119
+ this.definitionsPath = _path.join(__dirname, '..', 'definitions');
120
+ }
121
+ };
122
+ SkillLoaderService = _ts_decorate([
123
+ (0, _common.Injectable)(),
124
+ _ts_metadata("design:type", Function),
125
+ _ts_metadata("design:paramtypes", [
126
+ typeof _markdownparserservice.MarkdownParserService === "undefined" ? Object : _markdownparserservice.MarkdownParserService
127
+ ])
128
+ ], SkillLoaderService);
129
+
130
+ //# sourceMappingURL=skill-loader.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/skills/services/skill-loader.service.ts"],"sourcesContent":["import { Injectable, OnModuleInit } from '@nestjs/common';\nimport { MarkdownParserService } from '../../../common/services/markdown-parser.service';\nimport { SkillFrontmatter, SkillDefinition } from '../types';\nimport * as path from 'path';\n\n@Injectable()\nexport class SkillLoaderService implements OnModuleInit {\n private skills: Map<string, SkillDefinition> = new Map();\n private definitionsPath: string;\n\n constructor(private readonly markdownParser: MarkdownParserService) {\n this.definitionsPath = path.join(__dirname, '..', 'definitions');\n }\n\n async onModuleInit() {\n await this.loadSkills();\n }\n\n async loadSkills() {\n const exists = await this.markdownParser.exists(this.definitionsPath);\n\n if (!exists) {\n return;\n }\n\n const parsed = await this.markdownParser.parseAll<SkillFrontmatter>(this.definitionsPath);\n\n for (const [relativePath, { frontmatter, content }] of parsed) {\n const shortName = frontmatter.name || relativePath.split('/').pop() || relativePath;\n const skillDef: SkillDefinition = {\n name: shortName,\n description: frontmatter.description || '',\n tools: frontmatter.tools || [],\n guidelines: content,\n };\n\n this.skills.set(relativePath, skillDef);\n if (shortName !== relativePath) {\n this.skills.set(shortName, skillDef);\n }\n }\n }\n\n async loadFromPath(customPath: string) {\n const exists = await this.markdownParser.exists(customPath);\n\n if (!exists) {\n return;\n }\n\n const parsed = await this.markdownParser.parseAll<SkillFrontmatter>(customPath);\n\n for (const [name, { frontmatter, content }] of parsed) {\n this.skills.set(name, {\n name: frontmatter.name || name,\n description: frontmatter.description || '',\n tools: frontmatter.tools || [],\n guidelines: content,\n });\n }\n }\n\n getSkill(name: string): SkillDefinition | undefined {\n return this.skills.get(name);\n }\n\n getAllSkills(): SkillDefinition[] {\n const unique = new Map<string, SkillDefinition>();\n for (const skill of this.skills.values()) {\n unique.set(skill.name, skill);\n }\n return Array.from(unique.values());\n }\n\n getSkillNames(): string[] {\n return Array.from(this.skills.keys());\n }\n}\n"],"names":["SkillLoaderService","onModuleInit","loadSkills","exists","markdownParser","definitionsPath","parsed","parseAll","relativePath","frontmatter","content","shortName","name","split","pop","skillDef","description","tools","guidelines","skills","set","loadFromPath","customPath","getSkill","get","getAllSkills","unique","Map","skill","values","Array","from","getSkillNames","keys","path","join","__dirname"],"mappings":";;;;+BAMaA;;;eAAAA;;;wBAN4B;uCACH;8DAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGf,IAAA,AAAMA,qBAAN,MAAMA;IAQX,MAAMC,eAAe;QACnB,MAAM,IAAI,CAACC,UAAU;IACvB;IAEA,MAAMA,aAAa;QACjB,MAAMC,SAAS,MAAM,IAAI,CAACC,cAAc,CAACD,MAAM,CAAC,IAAI,CAACE,eAAe;QAEpE,IAAI,CAACF,QAAQ;YACX;QACF;QAEA,MAAMG,SAAS,MAAM,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAmB,IAAI,CAACF,eAAe;QAExF,KAAK,MAAM,CAACG,cAAc,EAAEC,WAAW,EAAEC,OAAO,EAAE,CAAC,IAAIJ,OAAQ;YAC7D,MAAMK,YAAYF,YAAYG,IAAI,IAAIJ,aAAaK,KAAK,CAAC,KAAKC,GAAG,MAAMN;YACvE,MAAMO,WAA4B;gBAChCH,MAAMD;gBACNK,aAAaP,YAAYO,WAAW,IAAI;gBACxCC,OAAOR,YAAYQ,KAAK,IAAI,EAAE;gBAC9BC,YAAYR;YACd;YAEA,IAAI,CAACS,MAAM,CAACC,GAAG,CAACZ,cAAcO;YAC9B,IAAIJ,cAAcH,cAAc;gBAC9B,IAAI,CAACW,MAAM,CAACC,GAAG,CAACT,WAAWI;YAC7B;QACF;IACF;IAEA,MAAMM,aAAaC,UAAkB,EAAE;QACrC,MAAMnB,SAAS,MAAM,IAAI,CAACC,cAAc,CAACD,MAAM,CAACmB;QAEhD,IAAI,CAACnB,QAAQ;YACX;QACF;QAEA,MAAMG,SAAS,MAAM,IAAI,CAACF,cAAc,CAACG,QAAQ,CAAmBe;QAEpE,KAAK,MAAM,CAACV,MAAM,EAAEH,WAAW,EAAEC,OAAO,EAAE,CAAC,IAAIJ,OAAQ;YACrD,IAAI,CAACa,MAAM,CAACC,GAAG,CAACR,MAAM;gBACpBA,MAAMH,YAAYG,IAAI,IAAIA;gBAC1BI,aAAaP,YAAYO,WAAW,IAAI;gBACxCC,OAAOR,YAAYQ,KAAK,IAAI,EAAE;gBAC9BC,YAAYR;YACd;QACF;IACF;IAEAa,SAASX,IAAY,EAA+B;QAClD,OAAO,IAAI,CAACO,MAAM,CAACK,GAAG,CAACZ;IACzB;IAEAa,eAAkC;QAChC,MAAMC,SAAS,IAAIC;QACnB,KAAK,MAAMC,SAAS,IAAI,CAACT,MAAM,CAACU,MAAM,GAAI;YACxCH,OAAON,GAAG,CAACQ,MAAMhB,IAAI,EAAEgB;QACzB;QACA,OAAOE,MAAMC,IAAI,CAACL,OAAOG,MAAM;IACjC;IAEAG,gBAA0B;QACxB,OAAOF,MAAMC,IAAI,CAAC,IAAI,CAACZ,MAAM,CAACc,IAAI;IACpC;IAlEA,YAAY,AAAiB7B,cAAqC,CAAE;aAAvCA,iBAAAA;aAHrBe,SAAuC,IAAIQ;QAIjD,IAAI,CAACtB,eAAe,GAAG6B,MAAKC,IAAI,CAACC,WAAW,MAAM;IACpD;AAiEF"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "SkillRegistryService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return SkillRegistryService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _skillloaderservice = require("./skill-loader.service");
13
+ const _toolsregistryservice = require("../../tools/services/tools-registry.service");
14
+ function _ts_decorate(decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ 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;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ }
20
+ function _ts_metadata(k, v) {
21
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
+ }
23
+ let SkillRegistryService = class SkillRegistryService {
24
+ resolveSkill(name) {
25
+ const skill = this.skillLoader.getSkill(name);
26
+ if (!skill) {
27
+ return undefined;
28
+ }
29
+ return {
30
+ name: skill.name,
31
+ description: skill.description,
32
+ tools: this.toolsRegistry.getTools(skill.tools),
33
+ guidelines: skill.guidelines
34
+ };
35
+ }
36
+ resolveSkills(names) {
37
+ return names.map((name)=>this.resolveSkill(name)).filter((s)=>s !== undefined);
38
+ }
39
+ getToolsForSkills(skillNames) {
40
+ const skills = this.resolveSkills(skillNames);
41
+ const toolsMap = new Map();
42
+ for (const skill of skills){
43
+ for (const t of skill.tools){
44
+ toolsMap.set(t.name, t);
45
+ }
46
+ }
47
+ return Array.from(toolsMap.values());
48
+ }
49
+ getGuidelinesForSkills(skillNames) {
50
+ const skills = this.resolveSkills(skillNames);
51
+ return skills.map((s)=>`## ${s.name}\n${s.guidelines}`).join('\n\n');
52
+ }
53
+ getAllSkillKnowledge() {
54
+ const skills = this.skillLoader.getAllSkills();
55
+ const seen = new Set();
56
+ const parts = [];
57
+ for (const skill of skills){
58
+ if (seen.has(skill.name)) continue;
59
+ seen.add(skill.name);
60
+ if (skill.guidelines && skill.guidelines.trim()) {
61
+ parts.push(skill.guidelines.trim());
62
+ }
63
+ }
64
+ return parts.join('\n\n---\n\n');
65
+ }
66
+ getAllSkills() {
67
+ return this.skillLoader.getAllSkills();
68
+ }
69
+ getSkillNames() {
70
+ return this.skillLoader.getSkillNames();
71
+ }
72
+ async loadProjectSkills(projectPath) {
73
+ await this.skillLoader.loadFromPath(projectPath);
74
+ }
75
+ getSkillSummaries() {
76
+ const skills = this.skillLoader.getAllSkills();
77
+ return skills.map((s)=>({
78
+ name: s.name,
79
+ description: s.description || 'No description'
80
+ }));
81
+ }
82
+ constructor(skillLoader, toolsRegistry){
83
+ this.skillLoader = skillLoader;
84
+ this.toolsRegistry = toolsRegistry;
85
+ }
86
+ };
87
+ SkillRegistryService = _ts_decorate([
88
+ (0, _common.Injectable)(),
89
+ _ts_metadata("design:type", Function),
90
+ _ts_metadata("design:paramtypes", [
91
+ typeof _skillloaderservice.SkillLoaderService === "undefined" ? Object : _skillloaderservice.SkillLoaderService,
92
+ typeof _toolsregistryservice.ToolsRegistryService === "undefined" ? Object : _toolsregistryservice.ToolsRegistryService
93
+ ])
94
+ ], SkillRegistryService);
95
+
96
+ //# sourceMappingURL=skill-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/skills/services/skill-registry.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { StructuredTool } from '@langchain/core/tools';\nimport { SkillLoaderService } from './skill-loader.service';\nimport { ToolsRegistryService } from '../../tools/services/tools-registry.service';\nimport { ResolvedSkill, SkillDefinition } from '../types';\n\n@Injectable()\nexport class SkillRegistryService {\n constructor(\n private readonly skillLoader: SkillLoaderService,\n private readonly toolsRegistry: ToolsRegistryService,\n ) {}\n\n resolveSkill(name: string): ResolvedSkill | undefined {\n const skill = this.skillLoader.getSkill(name);\n\n if (!skill) {\n return undefined;\n }\n\n return {\n name: skill.name,\n description: skill.description,\n tools: this.toolsRegistry.getTools(skill.tools),\n guidelines: skill.guidelines,\n };\n }\n\n resolveSkills(names: string[]): ResolvedSkill[] {\n return names\n .map((name) => this.resolveSkill(name))\n .filter((s): s is ResolvedSkill => s !== undefined);\n }\n\n getToolsForSkills(skillNames: string[]): StructuredTool[] {\n const skills = this.resolveSkills(skillNames);\n const toolsMap = new Map<string, StructuredTool>();\n\n for (const skill of skills) {\n for (const t of skill.tools as StructuredTool[]) {\n toolsMap.set(t.name, t);\n }\n }\n\n return Array.from(toolsMap.values());\n }\n\n getGuidelinesForSkills(skillNames: string[]): string {\n const skills = this.resolveSkills(skillNames);\n\n return skills.map((s) => `## ${s.name}\\n${s.guidelines}`).join('\\n\\n');\n }\n\n getAllSkillKnowledge(): string {\n const skills = this.skillLoader.getAllSkills();\n const seen = new Set<string>();\n const parts: string[] = [];\n\n for (const skill of skills) {\n if (seen.has(skill.name)) continue;\n seen.add(skill.name);\n\n if (skill.guidelines && skill.guidelines.trim()) {\n parts.push(skill.guidelines.trim());\n }\n }\n\n return parts.join('\\n\\n---\\n\\n');\n }\n\n getAllSkills(): SkillDefinition[] {\n return this.skillLoader.getAllSkills();\n }\n\n getSkillNames(): string[] {\n return this.skillLoader.getSkillNames();\n }\n\n async loadProjectSkills(projectPath: string) {\n await this.skillLoader.loadFromPath(projectPath);\n }\n\n getSkillSummaries(): { name: string; description: string }[] {\n const skills = this.skillLoader.getAllSkills();\n return skills.map(s => ({\n name: s.name,\n description: s.description || 'No description',\n }));\n }\n}\n"],"names":["SkillRegistryService","resolveSkill","name","skill","skillLoader","getSkill","undefined","description","tools","toolsRegistry","getTools","guidelines","resolveSkills","names","map","filter","s","getToolsForSkills","skillNames","skills","toolsMap","Map","t","set","Array","from","values","getGuidelinesForSkills","join","getAllSkillKnowledge","getAllSkills","seen","Set","parts","has","add","trim","push","getSkillNames","loadProjectSkills","projectPath","loadFromPath","getSkillSummaries"],"mappings":";;;;+BAOaA;;;eAAAA;;;wBAPc;oCAEQ;sCACE;;;;;;;;;;AAI9B,IAAA,AAAMA,uBAAN,MAAMA;IAMXC,aAAaC,IAAY,EAA6B;QACpD,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACC,QAAQ,CAACH;QAExC,IAAI,CAACC,OAAO;YACV,OAAOG;QACT;QAEA,OAAO;YACLJ,MAAMC,MAAMD,IAAI;YAChBK,aAAaJ,MAAMI,WAAW;YAC9BC,OAAO,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACP,MAAMK,KAAK;YAC9CG,YAAYR,MAAMQ,UAAU;QAC9B;IACF;IAEAC,cAAcC,KAAe,EAAmB;QAC9C,OAAOA,MACJC,GAAG,CAAC,CAACZ,OAAS,IAAI,CAACD,YAAY,CAACC,OAChCa,MAAM,CAAC,CAACC,IAA0BA,MAAMV;IAC7C;IAEAW,kBAAkBC,UAAoB,EAAoB;QACxD,MAAMC,SAAS,IAAI,CAACP,aAAa,CAACM;QAClC,MAAME,WAAW,IAAIC;QAErB,KAAK,MAAMlB,SAASgB,OAAQ;YAC1B,KAAK,MAAMG,KAAKnB,MAAMK,KAAK,CAAsB;gBAC/CY,SAASG,GAAG,CAACD,EAAEpB,IAAI,EAAEoB;YACvB;QACF;QAEA,OAAOE,MAAMC,IAAI,CAACL,SAASM,MAAM;IACnC;IAEAC,uBAAuBT,UAAoB,EAAU;QACnD,MAAMC,SAAS,IAAI,CAACP,aAAa,CAACM;QAElC,OAAOC,OAAOL,GAAG,CAAC,CAACE,IAAM,CAAC,GAAG,EAAEA,EAAEd,IAAI,CAAC,EAAE,EAAEc,EAAEL,UAAU,EAAE,EAAEiB,IAAI,CAAC;IACjE;IAEAC,uBAA+B;QAC7B,MAAMV,SAAS,IAAI,CAACf,WAAW,CAAC0B,YAAY;QAC5C,MAAMC,OAAO,IAAIC;QACjB,MAAMC,QAAkB,EAAE;QAE1B,KAAK,MAAM9B,SAASgB,OAAQ;YAC1B,IAAIY,KAAKG,GAAG,CAAC/B,MAAMD,IAAI,GAAG;YAC1B6B,KAAKI,GAAG,CAAChC,MAAMD,IAAI;YAEnB,IAAIC,MAAMQ,UAAU,IAAIR,MAAMQ,UAAU,CAACyB,IAAI,IAAI;gBAC/CH,MAAMI,IAAI,CAAClC,MAAMQ,UAAU,CAACyB,IAAI;YAClC;QACF;QAEA,OAAOH,MAAML,IAAI,CAAC;IACpB;IAEAE,eAAkC;QAChC,OAAO,IAAI,CAAC1B,WAAW,CAAC0B,YAAY;IACtC;IAEAQ,gBAA0B;QACxB,OAAO,IAAI,CAAClC,WAAW,CAACkC,aAAa;IACvC;IAEA,MAAMC,kBAAkBC,WAAmB,EAAE;QAC3C,MAAM,IAAI,CAACpC,WAAW,CAACqC,YAAY,CAACD;IACtC;IAEAE,oBAA6D;QAC3D,MAAMvB,SAAS,IAAI,CAACf,WAAW,CAAC0B,YAAY;QAC5C,OAAOX,OAAOL,GAAG,CAACE,CAAAA,IAAM,CAAA;gBACtBd,MAAMc,EAAEd,IAAI;gBACZK,aAAaS,EAAET,WAAW,IAAI;YAChC,CAAA;IACF;IAhFA,YACE,AAAiBH,WAA+B,EAChD,AAAiBK,aAAmC,CACpD;aAFiBL,cAAAA;aACAK,gBAAAA;IAChB;AA8EL"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "SkillsModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return SkillsModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _skillloaderservice = require("./services/skill-loader.service");
13
+ const _skillregistryservice = require("./services/skill-registry.service");
14
+ const _toolsmodule = require("../tools/tools.module");
15
+ function _ts_decorate(decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ 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;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ }
21
+ let SkillsModule = class SkillsModule {
22
+ };
23
+ SkillsModule = _ts_decorate([
24
+ (0, _common.Module)({
25
+ imports: [
26
+ _toolsmodule.ToolsModule
27
+ ],
28
+ providers: [
29
+ _skillloaderservice.SkillLoaderService,
30
+ _skillregistryservice.SkillRegistryService
31
+ ],
32
+ exports: [
33
+ _skillregistryservice.SkillRegistryService
34
+ ]
35
+ })
36
+ ], SkillsModule);
37
+
38
+ //# sourceMappingURL=skills.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/modules/skills/skills.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { SkillLoaderService } from './services/skill-loader.service';\nimport { SkillRegistryService } from './services/skill-registry.service';\nimport { ToolsModule } from '../tools/tools.module';\n\n@Module({\n imports: [ToolsModule],\n providers: [SkillLoaderService, SkillRegistryService],\n exports: [SkillRegistryService],\n})\nexport class SkillsModule {}\n"],"names":["SkillsModule","imports","ToolsModule","providers","SkillLoaderService","SkillRegistryService","exports"],"mappings":";;;;+BAUaA;;;eAAAA;;;wBAVU;oCACY;sCACE;6BACT;;;;;;;AAOrB,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;QAJzBC,SAAS;YAACC,wBAAW;SAAC;QACtBC,WAAW;YAACC,sCAAkB;YAAEC,0CAAoB;SAAC;QACrDC,SAAS;YAACD,0CAAoB;SAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./skill.types"), exports);
6
+ function _export_star(from, to) {
7
+ Object.keys(from).forEach(function(k) {
8
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
9
+ Object.defineProperty(to, k, {
10
+ enumerable: true,
11
+ get: function() {
12
+ return from[k];
13
+ }
14
+ });
15
+ }
16
+ });
17
+ return from;
18
+ }
19
+
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/skills/types/index.ts"],"sourcesContent":["export * from './skill.types';\n"],"names":[],"mappings":";;;;qBAAc"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=skill.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/skills/types/skill.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./tasks.module"), exports);
6
+ _export_star(require("./services/task-management.service"), exports);
7
+ _export_star(require("./services/plan-mode.service"), exports);
8
+ _export_star(require("./services/task-tools.service"), exports);
9
+ _export_star(require("./types/task.types"), exports);
10
+ function _export_star(from, to) {
11
+ Object.keys(from).forEach(function(k) {
12
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
13
+ Object.defineProperty(to, k, {
14
+ enumerable: true,
15
+ get: function() {
16
+ return from[k];
17
+ }
18
+ });
19
+ }
20
+ });
21
+ return from;
22
+ }
23
+
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/modules/tasks/index.ts"],"sourcesContent":["export * from './tasks.module';\nexport * from './services/task-management.service';\nexport * from './services/plan-mode.service';\nexport * from './services/task-tools.service';\nexport * from './types/task.types';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PlanExecutorService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PlanExecutorService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _core = require("@nestjs/core");
13
+ const _taskmanagementservice = require("./task-management.service");
14
+ const _planpersistenceservice = require("./plan-persistence.service");
15
+ const _promptservice = require("../../permissions/services/prompt.service");
16
+ const _theme = require("../../repl/utils/theme");
17
+ const _tasktypes = require("../types/task.types");
18
+ function _getRequireWildcardCache(nodeInterop) {
19
+ if (typeof WeakMap !== "function") return null;
20
+ var cacheBabelInterop = new WeakMap();
21
+ var cacheNodeInterop = new WeakMap();
22
+ return (_getRequireWildcardCache = function(nodeInterop) {
23
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
24
+ })(nodeInterop);
25
+ }
26
+ function _interop_require_wildcard(obj, nodeInterop) {
27
+ if (!nodeInterop && obj && obj.__esModule) {
28
+ return obj;
29
+ }
30
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
31
+ return {
32
+ default: obj
33
+ };
34
+ }
35
+ var cache = _getRequireWildcardCache(nodeInterop);
36
+ if (cache && cache.has(obj)) {
37
+ return cache.get(obj);
38
+ }
39
+ var newObj = {
40
+ __proto__: null
41
+ };
42
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
+ for(var key in obj){
44
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
45
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
46
+ if (desc && (desc.get || desc.set)) {
47
+ Object.defineProperty(newObj, key, desc);
48
+ } else {
49
+ newObj[key] = obj[key];
50
+ }
51
+ }
52
+ }
53
+ newObj.default = obj;
54
+ if (cache) {
55
+ cache.set(obj, newObj);
56
+ }
57
+ return newObj;
58
+ }
59
+ function _ts_decorate(decorators, target, key, desc) {
60
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
61
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
62
+ 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;
63
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
64
+ }
65
+ function _ts_metadata(k, v) {
66
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
67
+ }
68
+ let PlanExecutorService = class PlanExecutorService {
69
+ async getDeepAgent() {
70
+ if (!this.deepAgent) {
71
+ const { DeepAgentService } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../../core/services/deep-agent.service")));
72
+ this.deepAgent = this.moduleRef.get(DeepAgentService, {
73
+ strict: false
74
+ });
75
+ }
76
+ return this.deepAgent;
77
+ }
78
+ async executePlan(planId, autoApprove) {
79
+ const plan = this.taskService.getPlans().get(planId);
80
+ if (!plan) {
81
+ throw new Error('Plan not found');
82
+ }
83
+ // Salvar plano
84
+ this.currentPlanFile = await this.planPersistence.savePlan(plan, autoApprove);
85
+ this.promptService.info(`📝 Plano salvo: ${this.currentPlanFile}`);
86
+ console.log('');
87
+ // Setup Ctrl+C handler
88
+ const ctrlCHandler = ()=>{
89
+ if (this.executing) {
90
+ this.aborted = true;
91
+ console.log(`\n${_theme.Colors.warning}⚠ Interrupção solicitada. Finalizando tarefa atual...${_theme.Colors.reset}\n`);
92
+ }
93
+ };
94
+ process.on('SIGINT', ctrlCHandler);
95
+ this.executing = true;
96
+ plan.status = 'executing';
97
+ const startTime = Date.now();
98
+ const completedTasks = [];
99
+ const errors = [];
100
+ try {
101
+ for(let i = 0; i < plan.tasks.length; i++){
102
+ if (this.aborted) {
103
+ this.promptService.warning('Execução cancelada pelo usuårio');
104
+ break;
105
+ }
106
+ const task = plan.tasks[i];
107
+ // Verificar dependĂȘncias
108
+ const depsSatisfied = task.dependencies.every((depId)=>{
109
+ const dep = this.taskService.getTask(depId);
110
+ return dep && dep.status === _tasktypes.TaskStatus.COMPLETED;
111
+ });
112
+ if (!depsSatisfied) {
113
+ errors.push(`Task ${task.id}: dependĂȘncias nĂŁo satisfeitas`);
114
+ continue;
115
+ }
116
+ // Executar tarefa
117
+ console.log(`${_theme.Colors.primary}â–ș${_theme.Colors.reset} ${_theme.Colors.bold}Executando: ${task.subject}${_theme.Colors.reset}`);
118
+ console.log(` ${_theme.Colors.dim}${task.description}${_theme.Colors.reset}`);
119
+ console.log('');
120
+ this.taskService.updateTask(task.id, {
121
+ status: _tasktypes.TaskStatus.IN_PROGRESS
122
+ });
123
+ // Executar task via DeepAgent
124
+ const deepAgent = await this.getDeepAgent();
125
+ const result = await deepAgent.executeTask(task);
126
+ if (!result.success) {
127
+ errors.push(`Task ${task.id}: ${result.error || 'Falha na execução'}`);
128
+ this.taskService.updateTask(task.id, {
129
+ status: _tasktypes.TaskStatus.FAILED
130
+ });
131
+ } else {
132
+ this.taskService.updateTask(task.id, {
133
+ status: _tasktypes.TaskStatus.COMPLETED
134
+ });
135
+ completedTasks.push(task.id);
136
+ console.log(` ${_theme.Colors.success}✓ Concluído${_theme.Colors.reset}`);
137
+ }
138
+ // Atualizar progresso no arquivo
139
+ await this.planPersistence.updatePlanProgress(this.currentPlanFile, {
140
+ currentTask: i + 1,
141
+ completedTasks: completedTasks.length,
142
+ status: 'executing'
143
+ });
144
+ console.log('');
145
+ }
146
+ // Marcar plano como completo
147
+ plan.status = 'completed';
148
+ const duration = Date.now() - startTime;
149
+ await this.planPersistence.markPlanCompleted(this.currentPlanFile, {
150
+ success: errors.length === 0,
151
+ duration,
152
+ errors: errors.length > 0 ? errors : undefined
153
+ });
154
+ console.log('');
155
+ console.log('='.repeat(60));
156
+ this.promptService.success(`✓ Plano concluído em ${(duration / 1000).toFixed(1)}s`);
157
+ console.log(` ${_theme.Colors.dim}${completedTasks.length}/${plan.tasks.length} tarefas completadas${_theme.Colors.reset}`);
158
+ if (errors.length > 0) {
159
+ console.log(` ${_theme.Colors.warning}${errors.length} erros${_theme.Colors.reset}`);
160
+ }
161
+ console.log('='.repeat(60));
162
+ console.log('');
163
+ } finally{
164
+ this.executing = false;
165
+ this.aborted = false;
166
+ this.currentPlanFile = null;
167
+ this.taskService.clearExecutionContext();
168
+ process.removeListener('SIGINT', ctrlCHandler);
169
+ }
170
+ }
171
+ isExecuting() {
172
+ return this.executing;
173
+ }
174
+ abort() {
175
+ this.aborted = true;
176
+ }
177
+ constructor(taskService, planPersistence, promptService, moduleRef){
178
+ this.taskService = taskService;
179
+ this.planPersistence = planPersistence;
180
+ this.promptService = promptService;
181
+ this.moduleRef = moduleRef;
182
+ this.executing = false;
183
+ this.aborted = false;
184
+ this.currentPlanFile = null;
185
+ this.deepAgent = null;
186
+ }
187
+ };
188
+ PlanExecutorService = _ts_decorate([
189
+ (0, _common.Injectable)(),
190
+ _ts_metadata("design:type", Function),
191
+ _ts_metadata("design:paramtypes", [
192
+ typeof _taskmanagementservice.TaskManagementService === "undefined" ? Object : _taskmanagementservice.TaskManagementService,
193
+ typeof _planpersistenceservice.PlanPersistenceService === "undefined" ? Object : _planpersistenceservice.PlanPersistenceService,
194
+ typeof _promptservice.PromptService === "undefined" ? Object : _promptservice.PromptService,
195
+ typeof _core.ModuleRef === "undefined" ? Object : _core.ModuleRef
196
+ ])
197
+ ], PlanExecutorService);
198
+
199
+ //# sourceMappingURL=plan-executor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/tasks/services/plan-executor.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { ModuleRef } from '@nestjs/core';\nimport { TaskManagementService } from './task-management.service';\nimport { PlanPersistenceService } from './plan-persistence.service';\nimport { PromptService } from '../../permissions/services/prompt.service';\nimport { Colors } from '../../repl/utils/theme';\nimport { Task, TaskStatus } from '../types/task.types';\n\n@Injectable()\nexport class PlanExecutorService {\n private executing = false;\n private aborted = false;\n private currentPlanFile: string | null = null;\n private deepAgent: any = null;\n\n constructor(\n private taskService: TaskManagementService,\n private planPersistence: PlanPersistenceService,\n private promptService: PromptService,\n private moduleRef: ModuleRef,\n ) {}\n\n private async getDeepAgent() {\n if (!this.deepAgent) {\n const { DeepAgentService } = await import('../../core/services/deep-agent.service');\n this.deepAgent = this.moduleRef.get(DeepAgentService, { strict: false });\n }\n return this.deepAgent;\n }\n\n async executePlan(planId: string, autoApprove: boolean): Promise<void> {\n const plan = this.taskService.getPlans().get(planId);\n if (!plan) {\n throw new Error('Plan not found');\n }\n\n // Salvar plano\n this.currentPlanFile = await this.planPersistence.savePlan(plan, autoApprove);\n this.promptService.info(`📝 Plano salvo: ${this.currentPlanFile}`);\n console.log('');\n\n // Setup Ctrl+C handler\n const ctrlCHandler = () => {\n if (this.executing) {\n this.aborted = true;\n console.log(`\\n${Colors.warning}⚠ Interrupção solicitada. Finalizando tarefa atual...${Colors.reset}\\n`);\n }\n };\n process.on('SIGINT', ctrlCHandler);\n\n this.executing = true;\n plan.status = 'executing';\n\n const startTime = Date.now();\n const completedTasks: string[] = [];\n const errors: string[] = [];\n\n try {\n for (let i = 0; i < plan.tasks.length; i++) {\n if (this.aborted) {\n this.promptService.warning('Execução cancelada pelo usuĂĄrio');\n break;\n }\n\n const task = plan.tasks[i];\n\n // Verificar dependĂȘncias\n const depsSatisfied = task.dependencies.every(depId => {\n const dep = this.taskService.getTask(depId);\n return dep && dep.status === TaskStatus.COMPLETED;\n });\n\n if (!depsSatisfied) {\n errors.push(`Task ${task.id}: dependĂȘncias nĂŁo satisfeitas`);\n continue;\n }\n\n // Executar tarefa\n console.log(`${Colors.primary}â–ș${Colors.reset} ${Colors.bold}Executando: ${task.subject}${Colors.reset}`);\n console.log(` ${Colors.dim}${task.description}${Colors.reset}`);\n console.log('');\n\n this.taskService.updateTask(task.id, { status: TaskStatus.IN_PROGRESS });\n\n // Executar task via DeepAgent\n const deepAgent = await this.getDeepAgent();\n const result = await deepAgent.executeTask(task);\n\n if (!result.success) {\n errors.push(`Task ${task.id}: ${result.error || 'Falha na execução'}`);\n this.taskService.updateTask(task.id, { status: TaskStatus.FAILED });\n } else {\n this.taskService.updateTask(task.id, { status: TaskStatus.COMPLETED });\n completedTasks.push(task.id);\n console.log(` ${Colors.success}✓ ConcluĂ­do${Colors.reset}`);\n }\n\n // Atualizar progresso no arquivo\n await this.planPersistence.updatePlanProgress(this.currentPlanFile!, {\n currentTask: i + 1,\n completedTasks: completedTasks.length,\n status: 'executing',\n });\n\n console.log('');\n }\n\n // Marcar plano como completo\n plan.status = 'completed';\n const duration = Date.now() - startTime;\n\n await this.planPersistence.markPlanCompleted(this.currentPlanFile!, {\n success: errors.length === 0,\n duration,\n errors: errors.length > 0 ? errors : undefined,\n });\n\n console.log('');\n console.log('='.repeat(60));\n this.promptService.success(`✓ Plano concluĂ­do em ${(duration / 1000).toFixed(1)}s`);\n console.log(` ${Colors.dim}${completedTasks.length}/${plan.tasks.length} tarefas completadas${Colors.reset}`);\n if (errors.length > 0) {\n console.log(` ${Colors.warning}${errors.length} erros${Colors.reset}`);\n }\n console.log('='.repeat(60));\n console.log('');\n\n } finally {\n this.executing = false;\n this.aborted = false;\n this.currentPlanFile = null;\n this.taskService.clearExecutionContext();\n process.removeListener('SIGINT', ctrlCHandler);\n }\n }\n\n isExecuting(): boolean {\n return this.executing;\n }\n\n abort(): void {\n this.aborted = true;\n }\n}\n"],"names":["PlanExecutorService","getDeepAgent","deepAgent","DeepAgentService","moduleRef","get","strict","executePlan","planId","autoApprove","plan","taskService","getPlans","Error","currentPlanFile","planPersistence","savePlan","promptService","info","console","log","ctrlCHandler","executing","aborted","Colors","warning","reset","process","on","status","startTime","Date","now","completedTasks","errors","i","tasks","length","task","depsSatisfied","dependencies","every","depId","dep","getTask","TaskStatus","COMPLETED","push","id","primary","bold","subject","dim","description","updateTask","IN_PROGRESS","result","executeTask","success","error","FAILED","updatePlanProgress","currentTask","duration","markPlanCompleted","undefined","repeat","toFixed","clearExecutionContext","removeListener","isExecuting","abort"],"mappings":"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"}