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,336 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "MentionsService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return MentionsService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
13
+ const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
14
+ const _child_process = require("child_process");
15
+ const _util = require("util");
16
+ const _types = require("../types");
17
+ function _getRequireWildcardCache(nodeInterop) {
18
+ if (typeof WeakMap !== "function") return null;
19
+ var cacheBabelInterop = new WeakMap();
20
+ var cacheNodeInterop = new WeakMap();
21
+ return (_getRequireWildcardCache = function(nodeInterop) {
22
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
23
+ })(nodeInterop);
24
+ }
25
+ function _interop_require_wildcard(obj, nodeInterop) {
26
+ if (!nodeInterop && obj && obj.__esModule) {
27
+ return obj;
28
+ }
29
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
30
+ return {
31
+ default: obj
32
+ };
33
+ }
34
+ var cache = _getRequireWildcardCache(nodeInterop);
35
+ if (cache && cache.has(obj)) {
36
+ return cache.get(obj);
37
+ }
38
+ var newObj = {
39
+ __proto__: null
40
+ };
41
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
42
+ for(var key in obj){
43
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
44
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
45
+ if (desc && (desc.get || desc.set)) {
46
+ Object.defineProperty(newObj, key, desc);
47
+ } else {
48
+ newObj[key] = obj[key];
49
+ }
50
+ }
51
+ }
52
+ newObj.default = obj;
53
+ if (cache) {
54
+ cache.set(obj, newObj);
55
+ }
56
+ return newObj;
57
+ }
58
+ function _ts_decorate(decorators, target, key, desc) {
59
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
60
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
61
+ 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;
62
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
63
+ }
64
+ const execAsync = (0, _util.promisify)(_child_process.exec);
65
+ let MentionsService = class MentionsService {
66
+ async processMessage(message) {
67
+ const mentions = this.parseMentions(message);
68
+ if (mentions.length === 0) {
69
+ return {
70
+ expandedMessage: message,
71
+ mentions: [],
72
+ originalMessage: message
73
+ };
74
+ }
75
+ const resolved = await Promise.all(mentions.map((m)=>this.resolveMention(m)));
76
+ const expandedMessage = this.buildExpandedMessage(message, resolved);
77
+ return {
78
+ expandedMessage,
79
+ mentions: resolved,
80
+ originalMessage: message
81
+ };
82
+ }
83
+ parseMentions(message) {
84
+ const mentions = [];
85
+ const mentionRegex = /(?:^|\s)@((?:https?:\/\/\S+)|(?:git:[a-z]+)|(?:\.?\/?[\w./-]+\.[\w]+)|(?:\.?\/?[\w./-]+\/))/g;
86
+ let match;
87
+ while((match = mentionRegex.exec(message)) !== null){
88
+ const target = match[1];
89
+ const raw = '@' + target;
90
+ let type;
91
+ let resolved;
92
+ if (target.startsWith('http://') || target.startsWith('https://')) {
93
+ type = _types.MentionType.URL;
94
+ resolved = target;
95
+ } else if (target.startsWith('git:')) {
96
+ type = _types.MentionType.GIT;
97
+ resolved = target;
98
+ } else if (target.endsWith('/')) {
99
+ type = _types.MentionType.DIRECTORY;
100
+ resolved = _path.resolve(process.cwd(), target);
101
+ } else {
102
+ type = _types.MentionType.FILE;
103
+ resolved = _path.resolve(process.cwd(), target);
104
+ }
105
+ mentions.push({
106
+ type,
107
+ raw,
108
+ target,
109
+ resolved
110
+ });
111
+ }
112
+ return mentions;
113
+ }
114
+ async resolveMention(mention) {
115
+ try {
116
+ switch(mention.type){
117
+ case _types.MentionType.FILE:
118
+ return await this.resolveFile(mention);
119
+ case _types.MentionType.DIRECTORY:
120
+ return await this.resolveDirectory(mention);
121
+ case _types.MentionType.URL:
122
+ return await this.resolveUrl(mention);
123
+ case _types.MentionType.GIT:
124
+ return await this.resolveGit(mention);
125
+ default:
126
+ return {
127
+ ...mention,
128
+ content: '',
129
+ error: 'Unknown mention type'
130
+ };
131
+ }
132
+ } catch (error) {
133
+ return {
134
+ ...mention,
135
+ content: '',
136
+ error: `Failed to resolve: ${error.message}`
137
+ };
138
+ }
139
+ }
140
+ async resolveFile(mention) {
141
+ const filePath = mention.resolved;
142
+ try {
143
+ const stat = await _promises.stat(filePath);
144
+ if (stat.isDirectory()) {
145
+ return this.resolveDirectory({
146
+ ...mention,
147
+ type: _types.MentionType.DIRECTORY
148
+ });
149
+ }
150
+ if (stat.size > this.MAX_FILE_SIZE) {
151
+ const content = await _promises.readFile(filePath, 'utf-8');
152
+ const lines = content.split('\n').slice(0, this.MAX_FILE_LINES);
153
+ const numbered = lines.map((l, i)=>`${i + 1}: ${l}`).join('\n');
154
+ return {
155
+ ...mention,
156
+ content: numbered + `\n... (truncated, file is ${Math.round(stat.size / 1024)}KB)`
157
+ };
158
+ }
159
+ const content = await _promises.readFile(filePath, 'utf-8');
160
+ const lines = content.split('\n');
161
+ const numbered = lines.map((l, i)=>`${i + 1}: ${l}`).join('\n');
162
+ return {
163
+ ...mention,
164
+ content: numbered
165
+ };
166
+ } catch (error) {
167
+ const err = error;
168
+ if (err.code === 'ENOENT') {
169
+ return {
170
+ ...mention,
171
+ content: '',
172
+ error: `File not found: ${filePath}`
173
+ };
174
+ }
175
+ throw error;
176
+ }
177
+ }
178
+ async resolveDirectory(mention) {
179
+ const dirPath = mention.resolved;
180
+ try {
181
+ const entries = await _promises.readdir(dirPath, {
182
+ withFileTypes: true
183
+ });
184
+ const limited = entries.slice(0, this.MAX_DIR_ENTRIES);
185
+ const lines = limited.map((e)=>{
186
+ const prefix = e.isDirectory() ? 'd' : 'f';
187
+ return `${prefix} ${e.name}`;
188
+ });
189
+ let content = lines.join('\n');
190
+ if (entries.length > this.MAX_DIR_ENTRIES) {
191
+ content += `\n... (${entries.length - this.MAX_DIR_ENTRIES} more entries)`;
192
+ }
193
+ return {
194
+ ...mention,
195
+ content
196
+ };
197
+ } catch (error) {
198
+ const err = error;
199
+ if (err.code === 'ENOENT') {
200
+ return {
201
+ ...mention,
202
+ content: '',
203
+ error: `Directory not found: ${dirPath}`
204
+ };
205
+ }
206
+ throw error;
207
+ }
208
+ }
209
+ async resolveUrl(mention) {
210
+ try {
211
+ const response = await fetch(mention.resolved, {
212
+ headers: {
213
+ 'User-Agent': 'Cast-Code/1.0'
214
+ },
215
+ signal: AbortSignal.timeout(10000)
216
+ });
217
+ if (!response.ok) {
218
+ return {
219
+ ...mention,
220
+ content: '',
221
+ error: `HTTP ${response.status}: ${response.statusText}`
222
+ };
223
+ }
224
+ let text = await response.text();
225
+ if (text.length > this.MAX_URL_LENGTH) {
226
+ text = text.slice(0, this.MAX_URL_LENGTH) + '\n... (truncated)';
227
+ }
228
+ return {
229
+ ...mention,
230
+ content: text
231
+ };
232
+ } catch (error) {
233
+ return {
234
+ ...mention,
235
+ content: '',
236
+ error: `Fetch failed: ${error.message}`
237
+ };
238
+ }
239
+ }
240
+ async resolveGit(mention) {
241
+ const command = mention.target.replace('git:', '');
242
+ const gitCommands = {
243
+ status: 'git status',
244
+ diff: 'git diff',
245
+ log: 'git log --oneline -20',
246
+ branch: 'git branch -a',
247
+ stash: 'git stash list'
248
+ };
249
+ const cmd = gitCommands[command];
250
+ if (!cmd) {
251
+ return {
252
+ ...mention,
253
+ content: '',
254
+ error: `Unknown git command: ${command}. Available: ${Object.keys(gitCommands).join(', ')}`
255
+ };
256
+ }
257
+ try {
258
+ const { stdout, stderr } = await execAsync(cmd, {
259
+ cwd: process.cwd(),
260
+ timeout: 10000
261
+ });
262
+ return {
263
+ ...mention,
264
+ content: stdout || stderr || '(no output)'
265
+ };
266
+ } catch (error) {
267
+ return {
268
+ ...mention,
269
+ content: '',
270
+ error: `Git command failed: ${error.message}`
271
+ };
272
+ }
273
+ }
274
+ buildExpandedMessage(originalMessage, mentions) {
275
+ let expanded = originalMessage;
276
+ for (const mention of mentions){
277
+ expanded = expanded.replace(mention.raw, '').trim();
278
+ }
279
+ const contextParts = [];
280
+ for (const mention of mentions){
281
+ if (mention.error) {
282
+ contextParts.push(`<mention_error target="${mention.target}">\n${mention.error}\n</mention_error>`);
283
+ continue;
284
+ }
285
+ switch(mention.type){
286
+ case _types.MentionType.FILE:
287
+ contextParts.push(`<file path="${mention.target}">\n${mention.content}\n</file>`);
288
+ break;
289
+ case _types.MentionType.DIRECTORY:
290
+ contextParts.push(`<directory path="${mention.target}">\n${mention.content}\n</directory>`);
291
+ break;
292
+ case _types.MentionType.URL:
293
+ contextParts.push(`<url href="${mention.target}">\n${mention.content}\n</url>`);
294
+ break;
295
+ case _types.MentionType.GIT:
296
+ contextParts.push(`<git command="${mention.target.replace('git:', '')}">\n${mention.content}\n</git>`);
297
+ break;
298
+ }
299
+ }
300
+ if (contextParts.length > 0) {
301
+ return expanded + '\n\n' + contextParts.join('\n\n');
302
+ }
303
+ return expanded;
304
+ }
305
+ getMentionsSummary(mentions) {
306
+ return mentions.map((m)=>{
307
+ if (m.error) {
308
+ return ` ✗ ${m.raw} → ${m.error}`;
309
+ }
310
+ const lines = m.content.split('\n').length;
311
+ switch(m.type){
312
+ case _types.MentionType.FILE:
313
+ return ` ✓ ${m.raw} (${lines} lines)`;
314
+ case _types.MentionType.DIRECTORY:
315
+ return ` ✓ ${m.raw} (${lines} entries)`;
316
+ case _types.MentionType.URL:
317
+ return ` ✓ ${m.raw} (${m.content.length} chars)`;
318
+ case _types.MentionType.GIT:
319
+ return ` ✓ ${m.raw}`;
320
+ default:
321
+ return ` ✓ ${m.raw}`;
322
+ }
323
+ });
324
+ }
325
+ constructor(){
326
+ this.MAX_FILE_LINES = 500;
327
+ this.MAX_FILE_SIZE = 100 * 1024; // 100KB
328
+ this.MAX_DIR_ENTRIES = 100;
329
+ this.MAX_URL_LENGTH = 50000;
330
+ }
331
+ };
332
+ MentionsService = _ts_decorate([
333
+ (0, _common.Injectable)()
334
+ ], MentionsService);
335
+
336
+ //# sourceMappingURL=mentions.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/mentions/services/mentions.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n MentionType,\n ParsedMention,\n ResolvedMention,\n MentionResult,\n} from '../types';\n\nconst execAsync = promisify(exec);\n\n@Injectable()\nexport class MentionsService {\n private readonly MAX_FILE_LINES = 500;\n private readonly MAX_FILE_SIZE = 100 * 1024; // 100KB\n private readonly MAX_DIR_ENTRIES = 100;\n private readonly MAX_URL_LENGTH = 50000;\n\n async processMessage(message: string): Promise<MentionResult> {\n const mentions = this.parseMentions(message);\n\n if (mentions.length === 0) {\n return {\n expandedMessage: message,\n mentions: [],\n originalMessage: message,\n };\n }\n\n const resolved = await Promise.all(\n mentions.map((m) => this.resolveMention(m)),\n );\n\n const expandedMessage = this.buildExpandedMessage(message, resolved);\n\n return {\n expandedMessage,\n mentions: resolved,\n originalMessage: message,\n };\n }\n\n private parseMentions(message: string): ParsedMention[] {\n const mentions: ParsedMention[] = [];\n\n const mentionRegex = /(?:^|\\s)@((?:https?:\\/\\/\\S+)|(?:git:[a-z]+)|(?:\\.?\\/?[\\w./-]+\\.[\\w]+)|(?:\\.?\\/?[\\w./-]+\\/))/g;\n\n let match: RegExpExecArray | null;\n\n while ((match = mentionRegex.exec(message)) !== null) {\n const target = match[1];\n const raw = '@' + target;\n\n let type: MentionType;\n let resolved: string;\n\n if (target.startsWith('http://') || target.startsWith('https://')) {\n type = MentionType.URL;\n resolved = target;\n } else if (target.startsWith('git:')) {\n type = MentionType.GIT;\n resolved = target;\n } else if (target.endsWith('/')) {\n type = MentionType.DIRECTORY;\n resolved = path.resolve(process.cwd(), target);\n } else {\n type = MentionType.FILE;\n resolved = path.resolve(process.cwd(), target);\n }\n\n mentions.push({ type, raw, target, resolved });\n }\n\n return mentions;\n }\n\n private async resolveMention(mention: ParsedMention): Promise<ResolvedMention> {\n try {\n switch (mention.type) {\n case MentionType.FILE:\n return await this.resolveFile(mention);\n case MentionType.DIRECTORY:\n return await this.resolveDirectory(mention);\n case MentionType.URL:\n return await this.resolveUrl(mention);\n case MentionType.GIT:\n return await this.resolveGit(mention);\n default:\n return { ...mention, content: '', error: 'Unknown mention type' };\n }\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Failed to resolve: ${(error as Error).message}`,\n };\n }\n }\n\n private async resolveFile(mention: ParsedMention): Promise<ResolvedMention> {\n const filePath = mention.resolved;\n\n try {\n const stat = await fs.stat(filePath);\n\n if (stat.isDirectory()) {\n return this.resolveDirectory({\n ...mention,\n type: MentionType.DIRECTORY,\n });\n }\n\n if (stat.size > this.MAX_FILE_SIZE) {\n const content = await fs.readFile(filePath, 'utf-8');\n const lines = content.split('\\n').slice(0, this.MAX_FILE_LINES);\n const numbered = lines.map((l, i) => `${i + 1}: ${l}`).join('\\n');\n return {\n ...mention,\n content: numbered + `\\n... (truncated, file is ${Math.round(stat.size / 1024)}KB)`,\n };\n }\n\n const content = await fs.readFile(filePath, 'utf-8');\n const lines = content.split('\\n');\n const numbered = lines.map((l, i) => `${i + 1}: ${l}`).join('\\n');\n\n return { ...mention, content: numbered };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === 'ENOENT') {\n return { ...mention, content: '', error: `File not found: ${filePath}` };\n }\n throw error;\n }\n }\n\n private async resolveDirectory(mention: ParsedMention): Promise<ResolvedMention> {\n const dirPath = mention.resolved;\n\n try {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n const limited = entries.slice(0, this.MAX_DIR_ENTRIES);\n\n const lines = limited.map((e) => {\n const prefix = e.isDirectory() ? 'd' : 'f';\n return `${prefix} ${e.name}`;\n });\n\n let content = lines.join('\\n');\n\n if (entries.length > this.MAX_DIR_ENTRIES) {\n content += `\\n... (${entries.length - this.MAX_DIR_ENTRIES} more entries)`;\n }\n\n return { ...mention, content };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === 'ENOENT') {\n return { ...mention, content: '', error: `Directory not found: ${dirPath}` };\n }\n throw error;\n }\n }\n\n private async resolveUrl(mention: ParsedMention): Promise<ResolvedMention> {\n try {\n const response = await fetch(mention.resolved, {\n headers: { 'User-Agent': 'Cast-Code/1.0' },\n signal: AbortSignal.timeout(10000),\n });\n\n if (!response.ok) {\n return {\n ...mention,\n content: '',\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n\n let text = await response.text();\n\n if (text.length > this.MAX_URL_LENGTH) {\n text = text.slice(0, this.MAX_URL_LENGTH) + '\\n... (truncated)';\n }\n\n return { ...mention, content: text };\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Fetch failed: ${(error as Error).message}`,\n };\n }\n }\n\n private async resolveGit(mention: ParsedMention): Promise<ResolvedMention> {\n const command = mention.target.replace('git:', '');\n\n const gitCommands: Record<string, string> = {\n status: 'git status',\n diff: 'git diff',\n log: 'git log --oneline -20',\n branch: 'git branch -a',\n stash: 'git stash list',\n };\n\n const cmd = gitCommands[command];\n\n if (!cmd) {\n return {\n ...mention,\n content: '',\n error: `Unknown git command: ${command}. Available: ${Object.keys(gitCommands).join(', ')}`,\n };\n }\n\n try {\n const { stdout, stderr } = await execAsync(cmd, {\n cwd: process.cwd(),\n timeout: 10000,\n });\n\n return { ...mention, content: stdout || stderr || '(no output)' };\n } catch (error) {\n return {\n ...mention,\n content: '',\n error: `Git command failed: ${(error as Error).message}`,\n };\n }\n }\n\n private buildExpandedMessage(\n originalMessage: string,\n mentions: ResolvedMention[],\n ): string {\n let expanded = originalMessage;\n\n for (const mention of mentions) {\n expanded = expanded.replace(mention.raw, '').trim();\n }\n\n const contextParts: string[] = [];\n\n for (const mention of mentions) {\n if (mention.error) {\n contextParts.push(\n `<mention_error target=\"${mention.target}\">\\n${mention.error}\\n</mention_error>`,\n );\n continue;\n }\n\n switch (mention.type) {\n case MentionType.FILE:\n contextParts.push(\n `<file path=\"${mention.target}\">\\n${mention.content}\\n</file>`,\n );\n break;\n case MentionType.DIRECTORY:\n contextParts.push(\n `<directory path=\"${mention.target}\">\\n${mention.content}\\n</directory>`,\n );\n break;\n case MentionType.URL:\n contextParts.push(\n `<url href=\"${mention.target}\">\\n${mention.content}\\n</url>`,\n );\n break;\n case MentionType.GIT:\n contextParts.push(\n `<git command=\"${mention.target.replace('git:', '')}\">\\n${mention.content}\\n</git>`,\n );\n break;\n }\n }\n\n if (contextParts.length > 0) {\n return expanded + '\\n\\n' + contextParts.join('\\n\\n');\n }\n\n return expanded;\n }\n\n getMentionsSummary(mentions: ResolvedMention[]): string[] {\n return mentions.map((m) => {\n if (m.error) {\n return ` ✗ ${m.raw} → ${m.error}`;\n }\n\n const lines = m.content.split('\\n').length;\n switch (m.type) {\n case MentionType.FILE:\n return ` ✓ ${m.raw} (${lines} lines)`;\n case MentionType.DIRECTORY:\n return ` ✓ ${m.raw} (${lines} entries)`;\n case MentionType.URL:\n return ` ✓ ${m.raw} (${m.content.length} chars)`;\n case MentionType.GIT:\n return ` ✓ ${m.raw}`;\n default:\n return ` ✓ ${m.raw}`;\n }\n });\n }\n}\n"],"names":["MentionsService","execAsync","promisify","exec","processMessage","message","mentions","parseMentions","length","expandedMessage","originalMessage","resolved","Promise","all","map","m","resolveMention","buildExpandedMessage","mentionRegex","match","target","raw","type","startsWith","MentionType","URL","GIT","endsWith","DIRECTORY","path","resolve","process","cwd","FILE","push","mention","resolveFile","resolveDirectory","resolveUrl","resolveGit","content","error","filePath","stat","fs","isDirectory","size","MAX_FILE_SIZE","readFile","lines","split","slice","MAX_FILE_LINES","numbered","l","i","join","Math","round","err","code","dirPath","entries","readdir","withFileTypes","limited","MAX_DIR_ENTRIES","e","prefix","name","response","fetch","headers","signal","AbortSignal","timeout","ok","status","statusText","text","MAX_URL_LENGTH","command","replace","gitCommands","diff","log","branch","stash","cmd","Object","keys","stdout","stderr","expanded","trim","contextParts","getMentionsSummary"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./mention.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/mentions/types/index.ts"],"sourcesContent":["export * from './mention.types';\n"],"names":[],"mappings":";;;;qBAAc"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "MentionType", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return MentionType;
9
+ }
10
+ });
11
+ var MentionType = /*#__PURE__*/ function(MentionType) {
12
+ MentionType["FILE"] = "file";
13
+ MentionType["DIRECTORY"] = "directory";
14
+ MentionType["URL"] = "url";
15
+ MentionType["GIT"] = "git";
16
+ return MentionType;
17
+ }({});
18
+
19
+ //# sourceMappingURL=mention.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/mentions/types/mention.types.ts"],"sourcesContent":["export enum MentionType {\n FILE = 'file',\n DIRECTORY = 'directory',\n URL = 'url',\n GIT = 'git',\n}\n\nexport interface ParsedMention {\n type: MentionType;\n raw: string;\n target: string;\n resolved: string;\n}\n\nexport interface ResolvedMention extends ParsedMention {\n content: string;\n error?: string;\n}\n\nexport interface MentionResult {\n expandedMessage: string;\n mentions: ResolvedMention[];\n originalMessage: string;\n}\n"],"names":["MentionType"],"mappings":";;;;+BAAYA;;;eAAAA;;;AAAL,IAAA,AAAKA,qCAAAA;;;;;WAAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./permissions.module"), exports);
6
+ _export_star(require("./services/permission.service"), exports);
7
+ _export_star(require("./services/prompt.service"), exports);
8
+ _export_star(require("./types/permission.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/permissions/index.ts"],"sourcesContent":["export * from './permissions.module';\nexport * from './services/permission.service';\nexport * from './services/prompt.service';\nexport * from './types/permission.types';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PermissionsModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PermissionsModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _permissionservice = require("./services/permission.service");
13
+ const _promptservice = require("./services/prompt.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
+ let PermissionsModule = class PermissionsModule {
21
+ };
22
+ PermissionsModule = _ts_decorate([
23
+ (0, _common.Module)({
24
+ providers: [
25
+ _permissionservice.PermissionService,
26
+ _promptservice.PromptService
27
+ ],
28
+ exports: [
29
+ _permissionservice.PermissionService,
30
+ _promptservice.PromptService
31
+ ]
32
+ })
33
+ ], PermissionsModule);
34
+
35
+ //# sourceMappingURL=permissions.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/modules/permissions/permissions.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { PermissionService } from './services/permission.service';\nimport { PromptService } from './services/prompt.service';\n\n@Module({\n providers: [PermissionService, PromptService],\n exports: [PermissionService, PromptService],\n})\nexport class PermissionsModule {}\n"],"names":["PermissionsModule","providers","PermissionService","PromptService","exports"],"mappings":";;;;+BAQaA;;;eAAAA;;;wBARU;mCACW;+BACJ;;;;;;;AAMvB,IAAA,AAAMA,oBAAN,MAAMA;AAAmB;;;QAH9BC,WAAW;YAACC,oCAAiB;YAAEC,4BAAa;SAAC;QAC7CC,SAAS;YAACF,oCAAiB;YAAEC,4BAAa;SAAC"}