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,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AgentsModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AgentsModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _agentloaderservice = require("./services/agent-loader.service");
13
+ const _agentregistryservice = require("./services/agent-registry.service");
14
+ const _skillsmodule = require("../skills/skills.module");
15
+ const _toolsmodule = require("../tools/tools.module");
16
+ const _mcpmodule = require("../mcp/mcp.module");
17
+ function _ts_decorate(decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ 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;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ }
23
+ let AgentsModule = class AgentsModule {
24
+ };
25
+ AgentsModule = _ts_decorate([
26
+ (0, _common.Module)({
27
+ imports: [
28
+ _skillsmodule.SkillsModule,
29
+ _toolsmodule.ToolsModule,
30
+ _mcpmodule.McpModule
31
+ ],
32
+ providers: [
33
+ _agentloaderservice.AgentLoaderService,
34
+ _agentregistryservice.AgentRegistryService
35
+ ],
36
+ exports: [
37
+ _agentloaderservice.AgentLoaderService,
38
+ _agentregistryservice.AgentRegistryService
39
+ ]
40
+ })
41
+ ], AgentsModule);
42
+
43
+ //# sourceMappingURL=agents.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/modules/agents/agents.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { AgentLoaderService } from './services/agent-loader.service';\nimport { AgentRegistryService } from './services/agent-registry.service';\nimport { SkillsModule } from '../skills/skills.module';\nimport { ToolsModule } from '../tools/tools.module';\nimport { McpModule } from '../mcp/mcp.module';\n\n@Module({\n imports: [SkillsModule, ToolsModule, McpModule],\n providers: [AgentLoaderService, AgentRegistryService],\n exports: [AgentLoaderService, AgentRegistryService],\n})\nexport class AgentsModule {}\n"],"names":["AgentsModule","imports","SkillsModule","ToolsModule","McpModule","providers","AgentLoaderService","AgentRegistryService","exports"],"mappings":";;;;+BAYaA;;;eAAAA;;;wBAZU;oCACY;sCACE;8BACR;6BACD;2BACF;;;;;;;AAOnB,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;QAJzBC,SAAS;YAACC,0BAAY;YAAEC,wBAAW;YAAEC,oBAAS;SAAC;QAC/CC,WAAW;YAACC,sCAAkB;YAAEC,0CAAoB;SAAC;QACrDC,SAAS;YAACF,sCAAkB;YAAEC,0CAAoB;SAAC"}
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: architect
3
+ description: Software architect for designing systems and making architectural decisions
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.2
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - specialized/api-design
10
+ ---
11
+
12
+ # Architect Agent
13
+
14
+ You are a software architect specializing in system design and technical decisions.
15
+
16
+ ## Responsibilities
17
+ - Design system architectures
18
+ - Make technology choices
19
+ - Define patterns and conventions
20
+ - Create technical specifications
21
+ - Review architectural decisions
22
+
23
+ ## Guidelines
24
+ - Consider scalability and maintainability
25
+ - Document trade-offs for decisions
26
+ - Follow SOLID principles
27
+ - Prefer simple solutions over complex ones
28
+ - Consider the team's expertise
29
+
30
+ ## Analysis Approach
31
+ 1. Understand current architecture
32
+ 2. Identify requirements and constraints
33
+ 3. Evaluate multiple approaches
34
+ 4. Recommend with justification
35
+ 5. Define implementation path
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: backend
3
+ description: Backend specialist for API and server-side development
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - specialized/api-design
10
+ - specialized/database-operations
11
+ ---
12
+
13
+ # Backend Agent
14
+
15
+ You are a backend developer specializing in APIs and server-side systems.
16
+
17
+ ## Responsibilities
18
+ - Design and implement APIs
19
+ - Handle data modeling
20
+ - Manage database operations
21
+ - Implement authentication/authorization
22
+ - Optimize queries and performance
23
+
24
+ ## Guidelines
25
+ - Follow REST or GraphQL conventions
26
+ - Validate all inputs
27
+ - Handle errors gracefully
28
+ - Log appropriately
29
+ - Consider rate limiting
30
+ - Implement proper auth checks
31
+
32
+ ## Security Focus
33
+ - Sanitize inputs
34
+ - Use parameterized queries
35
+ - Implement proper CORS
36
+ - Validate JWT tokens
37
+ - Hash passwords correctly
38
+
39
+ ## Database Best Practices
40
+ - Use migrations
41
+ - Index appropriately
42
+ - Avoid N+1 queries
43
+ - Use transactions when needed
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: coder
3
+ description: General purpose coding agent for implementing features and fixing bugs
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - general/git-operations
10
+ ---
11
+
12
+ # Coder Agent
13
+
14
+ You are a skilled software developer focused on writing clean, maintainable code.
15
+
16
+ ## Responsibilities
17
+ - Implement new features following existing patterns
18
+ - Fix bugs with minimal changes
19
+ - Write idiomatic code for the project's language
20
+ - Follow the project's coding conventions
21
+
22
+ ## Guidelines
23
+ - Always read existing code before making changes
24
+ - Preserve indentation and formatting
25
+ - Make minimal, focused changes
26
+ - Do not add unnecessary comments
27
+ - Test your changes when possible
28
+
29
+ ## Process
30
+ 1. Understand the requirement
31
+ 2. Read relevant existing code
32
+ 3. Plan the implementation
33
+ 4. Write the code
34
+ 5. Verify the changes work
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: devops
3
+ description: DevOps specialist for infrastructure and deployment
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - general/git-operations
10
+ ---
11
+
12
+ # DevOps Agent
13
+
14
+ You are a DevOps engineer specializing in infrastructure and CI/CD.
15
+
16
+ ## Responsibilities
17
+ - Configure CI/CD pipelines
18
+ - Manage infrastructure as code
19
+ - Handle containerization
20
+ - Set up monitoring
21
+ - Manage deployments
22
+
23
+ ## Technologies
24
+ - Docker/Kubernetes
25
+ - GitHub Actions/GitLab CI
26
+ - Terraform/Pulumi
27
+ - Cloud platforms (AWS/GCP/Azure)
28
+
29
+ ## Guidelines
30
+ - Infrastructure as code always
31
+ - Automate everything possible
32
+ - Implement proper secrets management
33
+ - Use multi-stage builds
34
+ - Set up proper logging/monitoring
35
+ - Follow least privilege principle
36
+
37
+ ## Deployment Best Practices
38
+ - Use rolling deployments
39
+ - Implement health checks
40
+ - Set up rollback procedures
41
+ - Monitor post-deployment
42
+ - Document runbooks
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: frontend
3
+ description: Frontend specialist for UI/UX implementation
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - specialized/react-patterns
10
+ - specialized/frontend-bootstrap
11
+ mcp:
12
+ - figma
13
+ ---
14
+
15
+ # Frontend Agent
16
+
17
+ You are a frontend developer specializing in modern web interfaces.
18
+
19
+ ## Responsibilities
20
+ - Turn Figma prototypes into production-ready frontend structures
21
+ - Implement UI components
22
+ - Ensure accessibility (WCAG)
23
+ - Optimize performance
24
+ - Handle responsive design
25
+ - Manage client-side state
26
+
27
+ ## Technologies
28
+ - React/Vue/Svelte (per project)
29
+ - TypeScript
30
+ - CSS-in-JS or Tailwind
31
+ - State management libraries
32
+
33
+ ## Guidelines
34
+ - Use semantic HTML
35
+ - Follow component composition patterns
36
+ - Implement proper error boundaries
37
+ - Lazy load when appropriate
38
+ - Use proper ARIA attributes
39
+
40
+ ## When Using Figma MCP
41
+ - Extract primary screens and user flows first
42
+ - Identify core UI primitives (button, input, table, modal, card, nav, layout)
43
+ - Extract design tokens (colors, typography, spacing, radius, shadows)
44
+ - Generate project scaffold, routes, and component library before page wiring
45
+ - Match spacing and typography with responsive behavior
46
+ - Keep reusable components isolated from page-level composition
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: reviewer
3
+ description: Code reviewer for quality assurance and best practices
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ ---
10
+
11
+ # Reviewer Agent
12
+
13
+ You are an experienced code reviewer focused on code quality and best practices.
14
+
15
+ ## Responsibilities
16
+ - Review code for bugs and issues
17
+ - Check for security vulnerabilities
18
+ - Verify coding standards compliance
19
+ - Suggest improvements
20
+ - Ensure test coverage
21
+
22
+ ## Review Checklist
23
+ - Logic correctness
24
+ - Error handling
25
+ - Security (injection, XSS, auth)
26
+ - Performance implications
27
+ - Code readability
28
+ - Test coverage
29
+
30
+ ## Feedback Style
31
+ - Be specific and actionable
32
+ - Explain the "why" behind suggestions
33
+ - Prioritize critical issues
34
+ - Acknowledge good patterns
35
+ - Provide examples when helpful
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: tester
3
+ description: Testing specialist for quality assurance and test automation
4
+ model: gpt-5.1-codex-mini
5
+ temperature: 0.1
6
+ skills:
7
+ - general/file-operations
8
+ - general/search
9
+ - specialized/testing-strategies
10
+ ---
11
+
12
+ # Tester Agent
13
+
14
+ You are a QA engineer specializing in test automation and quality assurance.
15
+
16
+ ## Responsibilities
17
+ - Write unit tests
18
+ - Create integration tests
19
+ - Design E2E test scenarios
20
+ - Identify edge cases
21
+ - Ensure test coverage
22
+
23
+ ## Testing Strategy
24
+ - Unit tests for business logic
25
+ - Integration tests for APIs
26
+ - E2E tests for critical flows
27
+ - Performance tests for bottlenecks
28
+
29
+ ## Guidelines
30
+ - Follow AAA pattern (Arrange, Act, Assert)
31
+ - Test behavior, not implementation
32
+ - Use meaningful test names
33
+ - Mock external dependencies
34
+ - Keep tests independent
35
+ - Aim for deterministic tests
36
+
37
+ ## Coverage Goals
38
+ - Critical paths: 100%
39
+ - Business logic: 80%+
40
+ - Edge cases: comprehensive
41
+ - Error handling: thorough
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./agents.module"), exports);
6
+ _export_star(require("./services/agent-loader.service"), exports);
7
+ _export_star(require("./services/agent-registry.service"), exports);
8
+ _export_star(require("./types"), exports);
9
+ function _export_star(from, to) {
10
+ Object.keys(from).forEach(function(k) {
11
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
12
+ Object.defineProperty(to, k, {
13
+ enumerable: true,
14
+ get: function() {
15
+ return from[k];
16
+ }
17
+ });
18
+ }
19
+ });
20
+ return from;
21
+ }
22
+
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/modules/agents/index.ts"],"sourcesContent":["export * from './agents.module';\nexport * from './services/agent-loader.service';\nexport * from './services/agent-registry.service';\nexport * from './types';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AgentLoaderService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AgentLoaderService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _markdownparserservice = require("../../../common/services/markdown-parser.service");
13
+ const _constants = require("../../../common/constants");
14
+ const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
15
+ function _getRequireWildcardCache(nodeInterop) {
16
+ if (typeof WeakMap !== "function") return null;
17
+ var cacheBabelInterop = new WeakMap();
18
+ var cacheNodeInterop = new WeakMap();
19
+ return (_getRequireWildcardCache = function(nodeInterop) {
20
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
21
+ })(nodeInterop);
22
+ }
23
+ function _interop_require_wildcard(obj, nodeInterop) {
24
+ if (!nodeInterop && obj && obj.__esModule) {
25
+ return obj;
26
+ }
27
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
28
+ return {
29
+ default: obj
30
+ };
31
+ }
32
+ var cache = _getRequireWildcardCache(nodeInterop);
33
+ if (cache && cache.has(obj)) {
34
+ return cache.get(obj);
35
+ }
36
+ var newObj = {
37
+ __proto__: null
38
+ };
39
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
+ for(var key in obj){
41
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
42
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
43
+ if (desc && (desc.get || desc.set)) {
44
+ Object.defineProperty(newObj, key, desc);
45
+ } else {
46
+ newObj[key] = obj[key];
47
+ }
48
+ }
49
+ }
50
+ newObj.default = obj;
51
+ if (cache) {
52
+ cache.set(obj, newObj);
53
+ }
54
+ return newObj;
55
+ }
56
+ function _ts_decorate(decorators, target, key, desc) {
57
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
58
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
59
+ 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;
60
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
61
+ }
62
+ function _ts_metadata(k, v) {
63
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
64
+ }
65
+ let AgentLoaderService = class AgentLoaderService {
66
+ async onModuleInit() {
67
+ await this.loadAgents();
68
+ }
69
+ async loadAgents() {
70
+ const exists = await this.markdownParser.exists(this.definitionsPath);
71
+ if (!exists) {
72
+ return;
73
+ }
74
+ const parsed = await this.markdownParser.parseAll(this.definitionsPath);
75
+ for (const [name, { frontmatter, content }] of parsed){
76
+ this.agents.set(frontmatter.name || name, {
77
+ name: frontmatter.name || name,
78
+ description: frontmatter.description || '',
79
+ model: frontmatter.model || _constants.DEFAULT_MODEL,
80
+ temperature: frontmatter.temperature ?? _constants.DEFAULT_TEMPERATURE,
81
+ skills: frontmatter.skills || [],
82
+ mcp: frontmatter.mcp || [],
83
+ systemPrompt: content
84
+ });
85
+ }
86
+ }
87
+ async loadFromPath(customPath) {
88
+ const exists = await this.markdownParser.exists(customPath);
89
+ if (!exists) {
90
+ return;
91
+ }
92
+ const parsed = await this.markdownParser.parseAll(customPath);
93
+ for (const [name, { frontmatter, content }] of parsed){
94
+ const existingAgent = this.agents.get(frontmatter.name || name);
95
+ if (existingAgent) {
96
+ this.agents.set(frontmatter.name || name, {
97
+ ...existingAgent,
98
+ skills: [
99
+ ...new Set([
100
+ ...existingAgent.skills,
101
+ ...frontmatter.skills || []
102
+ ])
103
+ ],
104
+ mcp: [
105
+ ...new Set([
106
+ ...existingAgent.mcp,
107
+ ...frontmatter.mcp || []
108
+ ])
109
+ ],
110
+ systemPrompt: content || existingAgent.systemPrompt,
111
+ model: frontmatter.model || existingAgent.model,
112
+ temperature: frontmatter.temperature ?? existingAgent.temperature
113
+ });
114
+ } else {
115
+ this.agents.set(frontmatter.name || name, {
116
+ name: frontmatter.name || name,
117
+ description: frontmatter.description || '',
118
+ model: frontmatter.model || _constants.DEFAULT_MODEL,
119
+ temperature: frontmatter.temperature ?? _constants.DEFAULT_TEMPERATURE,
120
+ skills: frontmatter.skills || [],
121
+ mcp: frontmatter.mcp || [],
122
+ systemPrompt: content
123
+ });
124
+ }
125
+ }
126
+ }
127
+ getAgent(name) {
128
+ return this.agents.get(name);
129
+ }
130
+ getAllAgents() {
131
+ return Array.from(this.agents.values());
132
+ }
133
+ getAgentNames() {
134
+ return Array.from(this.agents.keys());
135
+ }
136
+ constructor(markdownParser){
137
+ this.markdownParser = markdownParser;
138
+ this.agents = new Map();
139
+ this.definitionsPath = _path.join(__dirname, '..', 'definitions');
140
+ }
141
+ };
142
+ AgentLoaderService = _ts_decorate([
143
+ (0, _common.Injectable)(),
144
+ _ts_metadata("design:type", Function),
145
+ _ts_metadata("design:paramtypes", [
146
+ typeof _markdownparserservice.MarkdownParserService === "undefined" ? Object : _markdownparserservice.MarkdownParserService
147
+ ])
148
+ ], AgentLoaderService);
149
+
150
+ //# sourceMappingURL=agent-loader.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/agents/services/agent-loader.service.ts"],"sourcesContent":["import { Injectable, OnModuleInit } from '@nestjs/common';\nimport { MarkdownParserService } from '../../../common/services/markdown-parser.service';\nimport { AgentFrontmatter, AgentDefinition } from '../types';\nimport { DEFAULT_MODEL, DEFAULT_TEMPERATURE } from '../../../common/constants';\nimport * as path from 'path';\n\n@Injectable()\nexport class AgentLoaderService implements OnModuleInit {\n private agents: Map<string, AgentDefinition> = 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.loadAgents();\n }\n\n async loadAgents() {\n const exists = await this.markdownParser.exists(this.definitionsPath);\n\n if (!exists) {\n return;\n }\n\n const parsed = await this.markdownParser.parseAll<AgentFrontmatter>(this.definitionsPath);\n\n for (const [name, { frontmatter, content }] of parsed) {\n this.agents.set(frontmatter.name || name, {\n name: frontmatter.name || name,\n description: frontmatter.description || '',\n model: frontmatter.model || DEFAULT_MODEL,\n temperature: frontmatter.temperature ?? DEFAULT_TEMPERATURE,\n skills: frontmatter.skills || [],\n mcp: frontmatter.mcp || [],\n systemPrompt: content,\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<AgentFrontmatter>(customPath);\n\n for (const [name, { frontmatter, content }] of parsed) {\n const existingAgent = this.agents.get(frontmatter.name || name);\n\n if (existingAgent) {\n this.agents.set(frontmatter.name || name, {\n ...existingAgent,\n skills: [...new Set([...existingAgent.skills, ...(frontmatter.skills || [])])],\n mcp: [...new Set([...existingAgent.mcp, ...(frontmatter.mcp || [])])],\n systemPrompt: content || existingAgent.systemPrompt,\n model: frontmatter.model || existingAgent.model,\n temperature: frontmatter.temperature ?? existingAgent.temperature,\n });\n } else {\n this.agents.set(frontmatter.name || name, {\n name: frontmatter.name || name,\n description: frontmatter.description || '',\n model: frontmatter.model || DEFAULT_MODEL,\n temperature: frontmatter.temperature ?? DEFAULT_TEMPERATURE,\n skills: frontmatter.skills || [],\n mcp: frontmatter.mcp || [],\n systemPrompt: content,\n });\n }\n }\n }\n\n getAgent(name: string): AgentDefinition | undefined {\n return this.agents.get(name);\n }\n\n getAllAgents(): AgentDefinition[] {\n return Array.from(this.agents.values());\n }\n\n getAgentNames(): string[] {\n return Array.from(this.agents.keys());\n }\n}\n"],"names":["AgentLoaderService","onModuleInit","loadAgents","exists","markdownParser","definitionsPath","parsed","parseAll","name","frontmatter","content","agents","set","description","model","DEFAULT_MODEL","temperature","DEFAULT_TEMPERATURE","skills","mcp","systemPrompt","loadFromPath","customPath","existingAgent","get","Set","getAgent","getAllAgents","Array","from","values","getAgentNames","keys","Map","path","join","__dirname"],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AgentRegistryService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AgentRegistryService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _agentloaderservice = require("./agent-loader.service");
13
+ const _skillregistryservice = require("../../skills/services/skill-registry.service");
14
+ const _toolsregistryservice = require("../../tools/services/tools-registry.service");
15
+ const _mcpregistryservice = require("../../mcp/services/mcp-registry.service");
16
+ function _ts_decorate(decorators, target, key, desc) {
17
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
18
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19
+ 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;
20
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
21
+ }
22
+ function _ts_metadata(k, v) {
23
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
24
+ }
25
+ const FALLBACK_TOOL_NAMES = [
26
+ 'read_file',
27
+ 'glob',
28
+ 'grep',
29
+ 'ls'
30
+ ];
31
+ let AgentRegistryService = class AgentRegistryService {
32
+ resolveAgent(name, projectContext) {
33
+ const agent = this.agentLoader.getAgent(name);
34
+ if (!agent) {
35
+ return undefined;
36
+ }
37
+ let skillTools = this.skillRegistry.getToolsForSkills(agent.skills);
38
+ const skillGuidelines = this.skillRegistry.getGuidelinesForSkills(agent.skills);
39
+ if (skillTools.length === 0 && agent.skills.length > 0) {
40
+ skillTools = this.toolsRegistry.getTools(FALLBACK_TOOL_NAMES);
41
+ }
42
+ let mcpTools = [];
43
+ if (agent.mcp && agent.mcp.length > 0) {
44
+ for (const mcpName of agent.mcp){
45
+ mcpTools.push(...this.mcpRegistry.getMcpTools(mcpName));
46
+ }
47
+ }
48
+ const allTools = [
49
+ ...skillTools,
50
+ ...mcpTools
51
+ ];
52
+ let systemPrompt = agent.systemPrompt;
53
+ if (skillGuidelines) {
54
+ systemPrompt += `\n\n# Skills Guidelines\n${skillGuidelines}`;
55
+ }
56
+ if (allTools.length > 0) {
57
+ const toolNames = allTools.map((t)=>t.name).join(', ');
58
+ systemPrompt += `\n\n# Your Available Tools\nYou have access to these tools ONLY: ${toolNames}\nDo NOT attempt to use tools not in this list.`;
59
+ }
60
+ if (projectContext) {
61
+ systemPrompt += `\n\n# Project Context\n${projectContext}`;
62
+ }
63
+ return {
64
+ name: agent.name,
65
+ description: agent.description,
66
+ model: agent.model,
67
+ temperature: agent.temperature,
68
+ tools: allTools,
69
+ systemPrompt,
70
+ mcp: agent.mcp
71
+ };
72
+ }
73
+ resolveAllAgents(projectContext) {
74
+ const agents = this.agentLoader.getAllAgents();
75
+ return agents.map((a)=>this.resolveAgent(a.name, projectContext)).filter((a)=>a !== undefined);
76
+ }
77
+ getSubagentDefinitions(projectContext) {
78
+ const agents = this.resolveAllAgents(projectContext);
79
+ return agents.map((agent)=>({
80
+ name: agent.name,
81
+ description: agent.description,
82
+ systemPrompt: agent.systemPrompt,
83
+ tools: agent.tools,
84
+ mcp: agent.mcp
85
+ }));
86
+ }
87
+ async loadProjectAgents(projectPath) {
88
+ await this.agentLoader.loadFromPath(projectPath);
89
+ }
90
+ constructor(agentLoader, skillRegistry, toolsRegistry, mcpRegistry){
91
+ this.agentLoader = agentLoader;
92
+ this.skillRegistry = skillRegistry;
93
+ this.toolsRegistry = toolsRegistry;
94
+ this.mcpRegistry = mcpRegistry;
95
+ }
96
+ };
97
+ AgentRegistryService = _ts_decorate([
98
+ (0, _common.Injectable)(),
99
+ _ts_metadata("design:type", Function),
100
+ _ts_metadata("design:paramtypes", [
101
+ typeof _agentloaderservice.AgentLoaderService === "undefined" ? Object : _agentloaderservice.AgentLoaderService,
102
+ typeof _skillregistryservice.SkillRegistryService === "undefined" ? Object : _skillregistryservice.SkillRegistryService,
103
+ typeof _toolsregistryservice.ToolsRegistryService === "undefined" ? Object : _toolsregistryservice.ToolsRegistryService,
104
+ typeof _mcpregistryservice.McpRegistryService === "undefined" ? Object : _mcpregistryservice.McpRegistryService
105
+ ])
106
+ ], AgentRegistryService);
107
+
108
+ //# sourceMappingURL=agent-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/agents/services/agent-registry.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { StructuredTool } from '@langchain/core/tools';\nimport { AgentLoaderService } from './agent-loader.service';\nimport { SkillRegistryService } from '../../skills/services/skill-registry.service';\nimport { ToolsRegistryService } from '../../tools/services/tools-registry.service';\nimport { McpRegistryService } from '../../mcp/services/mcp-registry.service';\nimport { ResolvedAgent, SubagentDefinition } from '../types';\n\nconst FALLBACK_TOOL_NAMES = ['read_file', 'glob', 'grep', 'ls'];\n\n@Injectable()\nexport class AgentRegistryService {\n constructor(\n private readonly agentLoader: AgentLoaderService,\n private readonly skillRegistry: SkillRegistryService,\n private readonly toolsRegistry: ToolsRegistryService,\n private readonly mcpRegistry: McpRegistryService,\n ) {}\n\n resolveAgent(name: string, projectContext?: string): ResolvedAgent | undefined {\n const agent = this.agentLoader.getAgent(name);\n\n if (!agent) {\n return undefined;\n }\n\n let skillTools = this.skillRegistry.getToolsForSkills(agent.skills);\n const skillGuidelines = this.skillRegistry.getGuidelinesForSkills(agent.skills);\n\n if (skillTools.length === 0 && agent.skills.length > 0) {\n skillTools = this.toolsRegistry.getTools(FALLBACK_TOOL_NAMES);\n }\n\n let mcpTools: StructuredTool[] = [];\n if (agent.mcp && agent.mcp.length > 0) {\n for (const mcpName of agent.mcp) {\n mcpTools.push(...this.mcpRegistry.getMcpTools(mcpName));\n }\n }\n\n const allTools = [...skillTools, ...mcpTools];\n\n let systemPrompt = agent.systemPrompt;\n\n if (skillGuidelines) {\n systemPrompt += `\\n\\n# Skills Guidelines\\n${skillGuidelines}`;\n }\n\n if (allTools.length > 0) {\n const toolNames = allTools.map(t => t.name).join(', ');\n systemPrompt += `\\n\\n# Your Available Tools\\nYou have access to these tools ONLY: ${toolNames}\\nDo NOT attempt to use tools not in this list.`;\n }\n\n if (projectContext) {\n systemPrompt += `\\n\\n# Project Context\\n${projectContext}`;\n }\n\n return {\n name: agent.name,\n description: agent.description,\n model: agent.model,\n temperature: agent.temperature,\n tools: allTools,\n systemPrompt,\n mcp: agent.mcp,\n };\n }\n\n resolveAllAgents(projectContext?: string): ResolvedAgent[] {\n const agents = this.agentLoader.getAllAgents();\n\n return agents\n .map((a) => this.resolveAgent(a.name, projectContext))\n .filter((a): a is ResolvedAgent => a !== undefined);\n }\n\n getSubagentDefinitions(projectContext?: string): SubagentDefinition[] {\n const agents = this.resolveAllAgents(projectContext);\n\n return agents.map((agent) => ({\n name: agent.name,\n description: agent.description,\n systemPrompt: agent.systemPrompt,\n tools: agent.tools,\n mcp: agent.mcp,\n }));\n }\n\n async loadProjectAgents(projectPath: string) {\n await this.agentLoader.loadFromPath(projectPath);\n }\n}\n"],"names":["AgentRegistryService","FALLBACK_TOOL_NAMES","resolveAgent","name","projectContext","agent","agentLoader","getAgent","undefined","skillTools","skillRegistry","getToolsForSkills","skills","skillGuidelines","getGuidelinesForSkills","length","toolsRegistry","getTools","mcpTools","mcp","mcpName","push","mcpRegistry","getMcpTools","allTools","systemPrompt","toolNames","map","t","join","description","model","temperature","tools","resolveAllAgents","agents","getAllAgents","a","filter","getSubagentDefinitions","loadProjectAgents","projectPath","loadFromPath"],"mappings":";;;;+BAWaA;;;eAAAA;;;wBAXc;oCAEQ;sCACE;sCACA;oCACF;;;;;;;;;;AAGnC,MAAMC,sBAAsB;IAAC;IAAa;IAAQ;IAAQ;CAAK;AAGxD,IAAA,AAAMD,uBAAN,MAAMA;IAQXE,aAAaC,IAAY,EAAEC,cAAuB,EAA6B;QAC7E,MAAMC,QAAQ,IAAI,CAACC,WAAW,CAACC,QAAQ,CAACJ;QAExC,IAAI,CAACE,OAAO;YACV,OAAOG;QACT;QAEA,IAAIC,aAAa,IAAI,CAACC,aAAa,CAACC,iBAAiB,CAACN,MAAMO,MAAM;QAClE,MAAMC,kBAAkB,IAAI,CAACH,aAAa,CAACI,sBAAsB,CAACT,MAAMO,MAAM;QAE9E,IAAIH,WAAWM,MAAM,KAAK,KAAKV,MAAMO,MAAM,CAACG,MAAM,GAAG,GAAG;YACtDN,aAAa,IAAI,CAACO,aAAa,CAACC,QAAQ,CAAChB;QAC3C;QAEA,IAAIiB,WAA6B,EAAE;QACnC,IAAIb,MAAMc,GAAG,IAAId,MAAMc,GAAG,CAACJ,MAAM,GAAG,GAAG;YACrC,KAAK,MAAMK,WAAWf,MAAMc,GAAG,CAAE;gBAC/BD,SAASG,IAAI,IAAI,IAAI,CAACC,WAAW,CAACC,WAAW,CAACH;YAChD;QACF;QAEA,MAAMI,WAAW;eAAIf;eAAeS;SAAS;QAE7C,IAAIO,eAAepB,MAAMoB,YAAY;QAErC,IAAIZ,iBAAiB;YACnBY,gBAAgB,CAAC,yBAAyB,EAAEZ,iBAAiB;QAC/D;QAEA,IAAIW,SAAST,MAAM,GAAG,GAAG;YACvB,MAAMW,YAAYF,SAASG,GAAG,CAACC,CAAAA,IAAKA,EAAEzB,IAAI,EAAE0B,IAAI,CAAC;YACjDJ,gBAAgB,CAAC,iEAAiE,EAAEC,UAAU,+CAA+C,CAAC;QAChJ;QAEA,IAAItB,gBAAgB;YAClBqB,gBAAgB,CAAC,uBAAuB,EAAErB,gBAAgB;QAC5D;QAEA,OAAO;YACLD,MAAME,MAAMF,IAAI;YAChB2B,aAAazB,MAAMyB,WAAW;YAC9BC,OAAO1B,MAAM0B,KAAK;YAClBC,aAAa3B,MAAM2B,WAAW;YAC9BC,OAAOT;YACPC;YACAN,KAAKd,MAAMc,GAAG;QAChB;IACF;IAEAe,iBAAiB9B,cAAuB,EAAmB;QACzD,MAAM+B,SAAS,IAAI,CAAC7B,WAAW,CAAC8B,YAAY;QAE5C,OAAOD,OACJR,GAAG,CAAC,CAACU,IAAM,IAAI,CAACnC,YAAY,CAACmC,EAAElC,IAAI,EAAEC,iBACrCkC,MAAM,CAAC,CAACD,IAA0BA,MAAM7B;IAC7C;IAEA+B,uBAAuBnC,cAAuB,EAAwB;QACpE,MAAM+B,SAAS,IAAI,CAACD,gBAAgB,CAAC9B;QAErC,OAAO+B,OAAOR,GAAG,CAAC,CAACtB,QAAW,CAAA;gBAC5BF,MAAME,MAAMF,IAAI;gBAChB2B,aAAazB,MAAMyB,WAAW;gBAC9BL,cAAcpB,MAAMoB,YAAY;gBAChCQ,OAAO5B,MAAM4B,KAAK;gBAClBd,KAAKd,MAAMc,GAAG;YAChB,CAAA;IACF;IAEA,MAAMqB,kBAAkBC,WAAmB,EAAE;QAC3C,MAAM,IAAI,CAACnC,WAAW,CAACoC,YAAY,CAACD;IACtC;IA9EA,YACE,AAAiBnC,WAA+B,EAChD,AAAiBI,aAAmC,EACpD,AAAiBM,aAAmC,EACpD,AAAiBM,WAA+B,CAChD;aAJiBhB,cAAAA;aACAI,gBAAAA;aACAM,gBAAAA;aACAM,cAAAA;IAChB;AA0EL"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=agent.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/agents/types/agent.types.ts"],"names":[],"mappings":""}