yuangs 3.16.0 → 3.19.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.
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.extractSymbols = extractSymbols;
37
+ exports.generateFileSummary = generateFileSummary;
38
+ exports.generateMultipleFileSummaries = generateMultipleFileSummaries;
39
+ exports.generateSummaryReport = generateSummaryReport;
40
+ const path = __importStar(require("path"));
41
+ /**
42
+ * 从代码中提取符号(简单正则实现,支持多语言)
43
+ */
44
+ function extractSymbols(code, filename) {
45
+ const symbols = [];
46
+ const lines = code.split('\n');
47
+ // 根据文件扩展名选择提取策略
48
+ const ext = path.extname(filename).toLowerCase();
49
+ if (['.ts', '.js', '.tsx', '.jsx'].includes(ext)) {
50
+ extractJavaScriptSymbols(lines, symbols);
51
+ }
52
+ else if (['.py'].includes(ext)) {
53
+ extractPythonSymbols(lines, symbols);
54
+ }
55
+ else if (['.go'].includes(ext)) {
56
+ extractGoSymbols(lines, symbols);
57
+ }
58
+ else if (['.rs'].includes(ext)) {
59
+ extractRustSymbols(lines, symbols);
60
+ }
61
+ else if (['.java'].includes(ext)) {
62
+ extractJavaSymbols(lines, symbols);
63
+ }
64
+ return symbols;
65
+ }
66
+ /**
67
+ * 提取JavaScript/TypeScript符号
68
+ */
69
+ function extractJavaScriptSymbols(lines, symbols) {
70
+ lines.forEach((line, index) => {
71
+ const lineNum = index + 1;
72
+ const trimmed = line.trim();
73
+ // Imports
74
+ if (trimmed.startsWith('import ')) {
75
+ const match = trimmed.match(/import\s+.*?from\s+['"](.+?)['"]/);
76
+ if (match) {
77
+ symbols.push({
78
+ name: match[1],
79
+ type: 'import',
80
+ line: lineNum
81
+ });
82
+ }
83
+ }
84
+ // Exports
85
+ if (trimmed.startsWith('export ')) {
86
+ if (trimmed.includes('function ')) {
87
+ const match = trimmed.match(/function\s+(\w+)/);
88
+ if (match) {
89
+ symbols.push({
90
+ name: match[1],
91
+ type: 'export',
92
+ line: lineNum,
93
+ signature: trimmed
94
+ });
95
+ }
96
+ }
97
+ else if (trimmed.includes('class ')) {
98
+ const match = trimmed.match(/class\s+(\w+)/);
99
+ if (match) {
100
+ symbols.push({
101
+ name: match[1],
102
+ type: 'class',
103
+ line: lineNum,
104
+ signature: trimmed
105
+ });
106
+ }
107
+ }
108
+ }
109
+ // Classes
110
+ const classMatch = trimmed.match(/^class\s+(\w+)/);
111
+ if (classMatch) {
112
+ symbols.push({
113
+ name: classMatch[1],
114
+ type: 'class',
115
+ line: lineNum,
116
+ signature: trimmed
117
+ });
118
+ }
119
+ // Functions
120
+ const funcMatch = trimmed.match(/^function\s+(\w+)/);
121
+ if (funcMatch) {
122
+ symbols.push({
123
+ name: funcMatch[1],
124
+ type: 'function',
125
+ line: lineNum,
126
+ signature: trimmed
127
+ });
128
+ }
129
+ // Methods
130
+ const methodMatch = trimmed.match(/^\s*(async\s+)?(public|private|protected)?\s*(static)?\s*(\w+)\s*\(/);
131
+ if (methodMatch && !trimmed.includes('function ')) {
132
+ symbols.push({
133
+ name: methodMatch[4],
134
+ type: 'function',
135
+ line: lineNum,
136
+ signature: trimmed
137
+ });
138
+ }
139
+ // Arrow functions
140
+ const arrowMatch = trimmed.match(/^const\s+(\w+)\s*=\s*(async\s+)?\(/);
141
+ if (arrowMatch) {
142
+ symbols.push({
143
+ name: arrowMatch[1],
144
+ type: 'function',
145
+ line: lineNum,
146
+ signature: trimmed
147
+ });
148
+ }
149
+ });
150
+ }
151
+ /**
152
+ * 提取Python符号
153
+ */
154
+ function extractPythonSymbols(lines, symbols) {
155
+ lines.forEach((line, index) => {
156
+ const lineNum = index + 1;
157
+ const trimmed = line.trim();
158
+ // Imports
159
+ if (trimmed.startsWith('import ') || trimmed.startsWith('from ')) {
160
+ symbols.push({
161
+ name: trimmed,
162
+ type: 'import',
163
+ line: lineNum
164
+ });
165
+ }
166
+ // Classes
167
+ const classMatch = trimmed.match(/^class\s+(\w+)/);
168
+ if (classMatch) {
169
+ symbols.push({
170
+ name: classMatch[1],
171
+ type: 'class',
172
+ line: lineNum,
173
+ signature: trimmed
174
+ });
175
+ }
176
+ // Functions
177
+ const funcMatch = trimmed.match(/^def\s+(\w+)/);
178
+ if (funcMatch) {
179
+ symbols.push({
180
+ name: funcMatch[1],
181
+ type: 'function',
182
+ line: lineNum,
183
+ signature: trimmed
184
+ });
185
+ }
186
+ });
187
+ }
188
+ /**
189
+ * 提取Go符号
190
+ */
191
+ function extractGoSymbols(lines, symbols) {
192
+ lines.forEach((line, index) => {
193
+ const lineNum = index + 1;
194
+ const trimmed = line.trim();
195
+ // Imports
196
+ if (trimmed.startsWith('import ')) {
197
+ symbols.push({
198
+ name: trimmed,
199
+ type: 'import',
200
+ line: lineNum
201
+ });
202
+ }
203
+ // Types/Interfaces
204
+ const typeMatch = trimmed.match(/^(type|interface)\s+(\w+)/);
205
+ if (typeMatch) {
206
+ symbols.push({
207
+ name: typeMatch[2],
208
+ type: 'class',
209
+ line: lineNum,
210
+ signature: trimmed
211
+ });
212
+ }
213
+ // Functions
214
+ const funcMatch = trimmed.match(/^func\s+(\w+)/);
215
+ if (funcMatch) {
216
+ symbols.push({
217
+ name: funcMatch[1],
218
+ type: 'function',
219
+ line: lineNum,
220
+ signature: trimmed
221
+ });
222
+ }
223
+ });
224
+ }
225
+ /**
226
+ * 提取Rust符号
227
+ */
228
+ function extractRustSymbols(lines, symbols) {
229
+ lines.forEach((line, index) => {
230
+ const lineNum = index + 1;
231
+ const trimmed = line.trim();
232
+ // Uses
233
+ if (trimmed.startsWith('use ')) {
234
+ symbols.push({
235
+ name: trimmed,
236
+ type: 'import',
237
+ line: lineNum
238
+ });
239
+ }
240
+ // Structs
241
+ const structMatch = trimmed.match(/^struct\s+(\w+)/);
242
+ if (structMatch) {
243
+ symbols.push({
244
+ name: structMatch[1],
245
+ type: 'class',
246
+ line: lineNum,
247
+ signature: trimmed
248
+ });
249
+ }
250
+ // Functions
251
+ const funcMatch = trimmed.match(/^fn\s+(\w+)/);
252
+ if (funcMatch) {
253
+ symbols.push({
254
+ name: funcMatch[1],
255
+ type: 'function',
256
+ line: lineNum,
257
+ signature: trimmed
258
+ });
259
+ }
260
+ });
261
+ }
262
+ /**
263
+ * 提取Java符号
264
+ */
265
+ function extractJavaSymbols(lines, symbols) {
266
+ lines.forEach((line, index) => {
267
+ const lineNum = index + 1;
268
+ const trimmed = line.trim();
269
+ // Imports
270
+ if (trimmed.startsWith('import ')) {
271
+ symbols.push({
272
+ name: trimmed,
273
+ type: 'import',
274
+ line: lineNum
275
+ });
276
+ }
277
+ // Classes
278
+ const classMatch = trimmed.match(/^class\s+(\w+)/);
279
+ if (classMatch) {
280
+ symbols.push({
281
+ name: classMatch[1],
282
+ type: 'class',
283
+ line: lineNum,
284
+ signature: trimmed
285
+ });
286
+ }
287
+ // Methods
288
+ const methodMatch = trimmed.match(/^\s*(public|private|protected)?\s*(static)?\s*\w+\s+(\w+)\s*\(/);
289
+ if (methodMatch) {
290
+ symbols.push({
291
+ name: methodMatch[2],
292
+ type: 'function',
293
+ line: lineNum,
294
+ signature: trimmed
295
+ });
296
+ }
297
+ });
298
+ }
299
+ /**
300
+ * 生成文件摘要
301
+ */
302
+ function generateFileSummary(filePath, content) {
303
+ const symbols = extractSymbols(content, filePath);
304
+ // 统计符号类型
305
+ const stats = {
306
+ imports: symbols.filter(s => s.type === 'import').length,
307
+ exports: symbols.filter(s => s.type === 'export').length,
308
+ classes: symbols.filter(s => s.type === 'class').length,
309
+ functions: symbols.filter(s => s.type === 'function').length,
310
+ };
311
+ // 生成摘要文本
312
+ let summary = `文件: ${path.basename(filePath)}\n`;
313
+ summary += `统计: ${stats.imports}个导入, ${stats.exports}个导出, ${stats.classes}个类, ${stats.functions}个函数\n`;
314
+ if (symbols.length > 0) {
315
+ summary += '\n主要符号:\n';
316
+ // 按类型分组
317
+ const classes = symbols.filter(s => s.type === 'class');
318
+ const functions = symbols.filter(s => s.type === 'function');
319
+ const imports = symbols.filter(s => s.type === 'import');
320
+ const exports = symbols.filter(s => s.type === 'export');
321
+ if (classes.length > 0) {
322
+ summary += ' 类: ' + classes.map(s => s.name).join(', ') + '\n';
323
+ }
324
+ if (functions.length > 0) {
325
+ summary += ' 函数: ' + functions.slice(0, 10).map(s => s.name).join(', ');
326
+ if (functions.length > 10) {
327
+ summary += ` (还有${functions.length - 10}个)`;
328
+ }
329
+ summary += '\n';
330
+ }
331
+ if (imports.length > 0 && imports.length <= 5) {
332
+ summary += ' 导入: ' + imports.map(s => s.name).join(', ') + '\n';
333
+ }
334
+ }
335
+ return {
336
+ path: filePath,
337
+ summary,
338
+ symbols
339
+ };
340
+ }
341
+ /**
342
+ * 生成多文件摘要
343
+ */
344
+ async function generateMultipleFileSummaries(files) {
345
+ const summaries = [];
346
+ for (const file of files) {
347
+ const summary = generateFileSummary(file.path, file.content);
348
+ summaries.push(summary);
349
+ }
350
+ return summaries;
351
+ }
352
+ /**
353
+ * 生成摘要报告(用于注入到Prompt)
354
+ */
355
+ function generateSummaryReport(summaries, maxLength = 2000) {
356
+ let report = '[CODE STRUCTURE SUMMARY]\n';
357
+ for (const summary of summaries) {
358
+ // 如果超过最大长度,截断
359
+ if (report.length + summary.summary.length > maxLength) {
360
+ const remaining = maxLength - report.length - 20;
361
+ if (remaining > 0) {
362
+ report += `\n... (还有${summaries.length - summaries.indexOf(summary)}个文件未显示,可按需查看详情)`;
363
+ }
364
+ break;
365
+ }
366
+ report += '\n' + summary.summary;
367
+ }
368
+ return report;
369
+ }
370
+ //# sourceMappingURL=codeSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeSummary.js","sourceRoot":"","sources":["../../src/agent/codeSummary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 动态Prompt生成器
3
+ * 根据运行时状态动态注入Prompt片段
4
+ */
5
+ export interface DynamicContext {
6
+ gitContext?: string;
7
+ techStack?: string[];
8
+ lastError?: string;
9
+ errorRecovery?: string;
10
+ }
11
+ /**
12
+ * 检测Git上下文(增强版,支持子目录检测)
13
+ */
14
+ export declare function detectGitContext(): Promise<string | null>;
15
+ /**
16
+ * 检测技术栈(使用Promise.all并发检测,提升性能)
17
+ */
18
+ export declare function detectTechStack(): Promise<string[]>;
19
+ /**
20
+ * 生成技术栈指导
21
+ */
22
+ export declare function generateTechStackGuidance(stacks: string[]): string;
23
+ /**
24
+ * 生成错误恢复指导
25
+ */
26
+ export declare function generateErrorRecovery(lastError: string): string;
27
+ /**
28
+ * 构建动态上下文
29
+ */
30
+ export declare function buildDynamicContext(lastError?: string, includeTechStack?: boolean): Promise<DynamicContext>;
31
+ /**
32
+ * 将动态上下文注入到Prompt
33
+ */
34
+ export declare function injectDynamicContext(basePrompt: string, context: DynamicContext): string;
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.detectGitContext = detectGitContext;
37
+ exports.detectTechStack = detectTechStack;
38
+ exports.generateTechStackGuidance = generateTechStackGuidance;
39
+ exports.generateErrorRecovery = generateErrorRecovery;
40
+ exports.buildDynamicContext = buildDynamicContext;
41
+ exports.injectDynamicContext = injectDynamicContext;
42
+ const fs = __importStar(require("fs/promises"));
43
+ const child_process_1 = require("child_process");
44
+ const util_1 = require("util");
45
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
46
+ /**
47
+ * 缓存检测结果,避免重复IO操作
48
+ */
49
+ let cachedGitContext = null;
50
+ let cachedTechStack = null;
51
+ let lastCheckTimestamp = 0;
52
+ const CACHE_TTL = 5000; // 5秒缓存
53
+ /**
54
+ * 检测Git上下文(增强版,支持子目录检测)
55
+ */
56
+ async function detectGitContext() {
57
+ // 使用git命令检测,支持在项目子目录中运行
58
+ try {
59
+ const { stdout } = await execAsync('git rev-parse --is-inside-work-tree', {
60
+ cwd: process.cwd(),
61
+ timeout: 2000
62
+ });
63
+ if (stdout.trim() === 'true') {
64
+ return `
65
+ [GIT CONTEXT]
66
+ 当前目录在一个Git仓库中。
67
+ - 优先使用 \`git ls-files\` 列出文件(遵守.gitignore)
68
+ - 使用 \`git diff\` 查看未提交的更改
69
+ - 使用 \`git log\` 查看最近历史
70
+ - 谨慎操作版本控制文件
71
+ `;
72
+ }
73
+ }
74
+ catch {
75
+ // git命令失败,回退到文件系统检测
76
+ try {
77
+ await fs.access('.git');
78
+ return `
79
+ [GIT CONTEXT]
80
+ 当前目录是一个Git仓库。
81
+ - 优先使用 \`git ls-files\` 列出文件(遵守.gitignore)
82
+ - 使用 \`git diff\` 查看未提交的更改
83
+ - 使用 \`git log\` 查看最近历史
84
+ - 谨慎操作版本控制文件
85
+ `;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ return null;
92
+ }
93
+ /**
94
+ * 检测技术栈(使用Promise.all并发检测,提升性能)
95
+ */
96
+ async function detectTechStack() {
97
+ const filesToCheck = [
98
+ { file: 'package.json', stack: 'Node.js' },
99
+ { file: 'Cargo.toml', stack: 'Rust' },
100
+ { file: 'go.mod', stack: 'Go' },
101
+ { file: 'requirements.txt', stack: 'Python' },
102
+ { file: 'pom.xml', stack: 'Java/Maven' },
103
+ { file: 'build.gradle', stack: 'Java/Gradle' },
104
+ { file: 'Gemfile', stack: 'Ruby' },
105
+ { file: 'composer.json', stack: 'PHP' },
106
+ { file: 'Dockerfile', stack: 'Docker' },
107
+ ];
108
+ // 并发检测所有文件,提升性能
109
+ const results = await Promise.all(filesToCheck.map(async ({ file, stack }) => {
110
+ try {
111
+ await fs.access(file);
112
+ return stack;
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }));
118
+ // 过滤掉null值并去重
119
+ return results.filter((stack) => stack !== null);
120
+ }
121
+ /**
122
+ * 生成技术栈指导
123
+ */
124
+ function generateTechStackGuidance(stacks) {
125
+ if (stacks.length === 0) {
126
+ return '';
127
+ }
128
+ const guidance = [];
129
+ if (stacks.includes('Node.js')) {
130
+ guidance.push(`
131
+ [TECH STACK: Node.js]
132
+ - 使用 \`npm\` 或 \`yarn\` 进行包管理
133
+ - 检查 package.json 可用的脚本命令
134
+ - 生成代码时使用TypeScript严格模式
135
+ - 使用ESLint和Prettier进行代码格式化`);
136
+ }
137
+ if (stacks.includes('Python')) {
138
+ guidance.push(`
139
+ [TECH STACK: Python]
140
+ - 使用 \`pip\` 或 \`poetry\` 进行包管理
141
+ - 检查 requirements.txt 或 pyproject.toml
142
+ - 遵循PEP 8代码风格指南
143
+ - 使用虚拟环境隔离依赖`);
144
+ }
145
+ if (stacks.includes('Go')) {
146
+ guidance.push(`
147
+ [TECH STACK: Go]
148
+ - 使用 \`go mod\` 进行模块管理
149
+ - 检查 go.mod 文件了解依赖
150
+ - 遵循Go惯用模式和错误处理
151
+ - 使用 \`go test\` 运行测试`);
152
+ }
153
+ if (stacks.includes('Rust')) {
154
+ guidance.push(`
155
+ [TECH STACK: Rust]
156
+ - 使用 \`cargo\` 进行包管理
157
+ - 检查 Cargo.toml 了解依赖
158
+ - 遵循Rust所有权和借用规则
159
+ - 使用 \`cargo clippy\` 进行代码检查`);
160
+ }
161
+ if (stacks.includes('Docker')) {
162
+ guidance.push(`
163
+ [TECH STACK: Docker]
164
+ - 检查 Dockerfile 和 docker-compose.yml
165
+ - 容器化运行和测试命令
166
+ - 注意多阶段构建优化
167
+ - 管理容器网络和卷`);
168
+ }
169
+ return guidance.join('\n');
170
+ }
171
+ /**
172
+ * 生成错误恢复指导
173
+ */
174
+ function generateErrorRecovery(lastError) {
175
+ return `
176
+ [ERROR RECOVERY]
177
+ 上一步操作失败: ${lastError}
178
+ 你必须尝试不同的方法或验证前置条件。
179
+
180
+ 考虑以下选项:
181
+ - 检查命令语法是否正确
182
+ - 验证文件/路径是否存在
183
+ - 使用不同的标志或工具
184
+ - 检查依赖是否已安装
185
+ - 查看错误日志获取更多信息
186
+
187
+ 如果仍然失败,切换到 "answer" 模式向用户说明问题`;
188
+ }
189
+ /**
190
+ * 构建动态上下文
191
+ */
192
+ async function buildDynamicContext(lastError, includeTechStack = true) {
193
+ const context = {};
194
+ // 检测Git上下文
195
+ const gitContext = await detectGitContext();
196
+ if (gitContext) {
197
+ context.gitContext = gitContext;
198
+ }
199
+ // 检测技术栈
200
+ if (includeTechStack) {
201
+ const techStack = await detectTechStack();
202
+ if (techStack.length > 0) {
203
+ context.techStack = techStack;
204
+ }
205
+ }
206
+ // 错误恢复
207
+ if (lastError) {
208
+ context.lastError = lastError;
209
+ context.errorRecovery = generateErrorRecovery(lastError);
210
+ }
211
+ return context;
212
+ }
213
+ /**
214
+ * 将动态上下文注入到Prompt
215
+ */
216
+ function injectDynamicContext(basePrompt, context) {
217
+ let prompt = basePrompt;
218
+ // 注入Git上下文
219
+ if (context.gitContext) {
220
+ prompt += `\n${context.gitContext}`;
221
+ }
222
+ // 注入技术栈指导
223
+ if (context.techStack && context.techStack.length > 0) {
224
+ const guidance = generateTechStackGuidance(context.techStack);
225
+ prompt += `\n${guidance}`;
226
+ }
227
+ // 注入错误恢复
228
+ if (context.errorRecovery) {
229
+ prompt += `\n${context.errorRecovery}`;
230
+ }
231
+ return prompt;
232
+ }
233
+ //# sourceMappingURL=dynamicPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicPrompt.js","sourceRoot":"","sources":["../../src/agent/dynamicPrompt.ts"],"names":[],"mappings":"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"}