@dongowu/git-ai-cli 1.0.21 → 2.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 (82) hide show
  1. package/README.md +200 -157
  2. package/bin/git-ai.cjs +57 -0
  3. package/install.cjs +50 -0
  4. package/package.json +27 -28
  5. package/.claude/settings.local.json +0 -17
  6. package/CHANGELOG.md +0 -46
  7. package/README_EN.md +0 -264
  8. package/dist/cli.d.ts +0 -3
  9. package/dist/cli.d.ts.map +0 -1
  10. package/dist/cli.js +0 -17
  11. package/dist/cli.js.map +0 -1
  12. package/dist/cli_main.d.ts +0 -2
  13. package/dist/cli_main.d.ts.map +0 -1
  14. package/dist/cli_main.js +0 -255
  15. package/dist/cli_main.js.map +0 -1
  16. package/dist/commands/branch.d.ts +0 -11
  17. package/dist/commands/branch.d.ts.map +0 -1
  18. package/dist/commands/branch.js +0 -279
  19. package/dist/commands/branch.js.map +0 -1
  20. package/dist/commands/commit.d.ts +0 -9
  21. package/dist/commands/commit.d.ts.map +0 -1
  22. package/dist/commands/commit.js +0 -326
  23. package/dist/commands/commit.js.map +0 -1
  24. package/dist/commands/config.d.ts +0 -2
  25. package/dist/commands/config.d.ts.map +0 -1
  26. package/dist/commands/config.js +0 -164
  27. package/dist/commands/config.js.map +0 -1
  28. package/dist/commands/config_manage.d.ts +0 -14
  29. package/dist/commands/config_manage.d.ts.map +0 -1
  30. package/dist/commands/config_manage.js +0 -394
  31. package/dist/commands/config_manage.js.map +0 -1
  32. package/dist/commands/hook.d.ts +0 -5
  33. package/dist/commands/hook.d.ts.map +0 -1
  34. package/dist/commands/hook.js +0 -528
  35. package/dist/commands/hook.js.map +0 -1
  36. package/dist/commands/msg.d.ts +0 -20
  37. package/dist/commands/msg.d.ts.map +0 -1
  38. package/dist/commands/msg.js +0 -148
  39. package/dist/commands/msg.js.map +0 -1
  40. package/dist/commands/pr.d.ts +0 -8
  41. package/dist/commands/pr.d.ts.map +0 -1
  42. package/dist/commands/pr.js +0 -96
  43. package/dist/commands/pr.js.map +0 -1
  44. package/dist/commands/release.d.ts +0 -8
  45. package/dist/commands/release.d.ts.map +0 -1
  46. package/dist/commands/release.js +0 -95
  47. package/dist/commands/release.js.map +0 -1
  48. package/dist/commands/report.d.ts +0 -9
  49. package/dist/commands/report.d.ts.map +0 -1
  50. package/dist/commands/report.js +0 -162
  51. package/dist/commands/report.js.map +0 -1
  52. package/dist/types.d.ts +0 -46
  53. package/dist/types.d.ts.map +0 -1
  54. package/dist/types.js +0 -86
  55. package/dist/types.js.map +0 -1
  56. package/dist/utils/agent.d.ts +0 -5
  57. package/dist/utils/agent.d.ts.map +0 -1
  58. package/dist/utils/agent.js +0 -308
  59. package/dist/utils/agent.js.map +0 -1
  60. package/dist/utils/agent_lite.d.ts +0 -5
  61. package/dist/utils/agent_lite.d.ts.map +0 -1
  62. package/dist/utils/agent_lite.js +0 -263
  63. package/dist/utils/agent_lite.js.map +0 -1
  64. package/dist/utils/ai.d.ts +0 -43
  65. package/dist/utils/ai.d.ts.map +0 -1
  66. package/dist/utils/ai.js +0 -1103
  67. package/dist/utils/ai.js.map +0 -1
  68. package/dist/utils/config.d.ts +0 -11
  69. package/dist/utils/config.d.ts.map +0 -1
  70. package/dist/utils/config.js +0 -239
  71. package/dist/utils/config.js.map +0 -1
  72. package/dist/utils/git.d.ts +0 -42
  73. package/dist/utils/git.d.ts.map +0 -1
  74. package/dist/utils/git.js +0 -456
  75. package/dist/utils/git.js.map +0 -1
  76. package/dist/utils/update.d.ts +0 -4
  77. package/dist/utils/update.d.ts.map +0 -1
  78. package/dist/utils/update.js +0 -122
  79. package/dist/utils/update.js.map +0 -1
  80. package/release_notes.md +0 -9
  81. package/scripts/release.sh +0 -34
  82. package/test_agent_feature.ts +0 -1
package/dist/types.js DELETED
@@ -1,86 +0,0 @@
1
- export const PROVIDER_PRESETS = {
2
- // 国内大模型 (推荐)
3
- deepseek: {
4
- name: 'DeepSeek (深度求索)',
5
- baseUrl: 'https://api.deepseek.com/v1',
6
- defaultModel: 'deepseek-chat',
7
- requiresKey: true,
8
- },
9
- qwen: {
10
- name: 'Qwen (通义千问)',
11
- baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
12
- defaultModel: 'qwen-turbo',
13
- requiresKey: true,
14
- },
15
- zhipu: {
16
- name: 'Zhipu (智谱 GLM)',
17
- baseUrl: 'https://open.bigmodel.cn/api/paas/v4',
18
- defaultModel: 'glm-4-flash',
19
- requiresKey: true,
20
- },
21
- moonshot: {
22
- name: 'Moonshot (月之暗面 Kimi)',
23
- baseUrl: 'https://api.moonshot.cn/v1',
24
- defaultModel: 'moonshot-v1-8k',
25
- requiresKey: true,
26
- },
27
- baichuan: {
28
- name: 'Baichuan (百川)',
29
- baseUrl: 'https://api.baichuan-ai.com/v1',
30
- defaultModel: 'Baichuan4',
31
- requiresKey: true,
32
- },
33
- yi: {
34
- name: 'Yi (零一万物)',
35
- baseUrl: 'https://api.lingyiwanwu.com/v1',
36
- defaultModel: 'yi-lightning',
37
- requiresKey: true,
38
- },
39
- // 国际大模型
40
- openai: {
41
- name: 'OpenAI',
42
- baseUrl: 'https://api.openai.com/v1',
43
- defaultModel: 'gpt-4o-mini',
44
- requiresKey: true,
45
- },
46
- silicon: {
47
- name: 'SiliconFlow (硅基流动)',
48
- baseUrl: 'https://api.siliconflow.cn/v1',
49
- defaultModel: 'Qwen/Qwen2.5-7B-Instruct',
50
- requiresKey: true,
51
- },
52
- // 本地部署
53
- ollama: {
54
- name: 'Ollama (本地部署)',
55
- baseUrl: 'http://localhost:11434/v1',
56
- defaultModel: 'qwen2.5:7b',
57
- requiresKey: false,
58
- },
59
- lmstudio: {
60
- name: 'LM Studio (本地部署)',
61
- baseUrl: 'http://localhost:1234/v1',
62
- defaultModel: 'local-model',
63
- requiresKey: false,
64
- },
65
- // 自定义
66
- custom: {
67
- name: 'Custom (自定义)',
68
- baseUrl: '',
69
- defaultModel: '',
70
- requiresKey: true,
71
- },
72
- };
73
- export const DIFF_BLACKLIST = [
74
- 'package-lock.json',
75
- 'yarn.lock',
76
- 'pnpm-lock.yaml',
77
- 'bun.lockb',
78
- '*.min.js',
79
- '*.min.css',
80
- '*.map',
81
- 'dist/',
82
- 'build/',
83
- '.next/',
84
- ];
85
- export const MAX_DIFF_LENGTH = 5000;
86
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,aAAa;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,IAAI;KAClB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,mDAAmD;QAC5D,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI;KAClB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,4BAA4B;QACrC,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,gCAAgC;QACzC,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,IAAI;KAClB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,gCAAgC;QACzC,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ;IACR,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,IAAI;KAClB;IACD,OAAO;IACP,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,KAAK;KACnB;IACD,MAAM;IACN,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,mBAAmB;IACnB,WAAW;IACX,gBAAgB;IAChB,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC"}
@@ -1,5 +0,0 @@
1
- import OpenAI from 'openai';
2
- import { FileStat } from './git.js';
3
- import { AIConfig } from '../types.js';
4
- export declare function runAgentLoop(client: OpenAI, config: AIConfig, stats: FileStat[], branchName?: string, quiet?: boolean, modelOverride?: string): Promise<string>;
5
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAe,QAAQ,EAA6B,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgJvC,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,UAAQ,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAyLjB"}
@@ -1,308 +0,0 @@
1
- import { getFileDiff, isBlacklisted, searchCode } from './git.js';
2
- import ora from 'ora';
3
- const AGENT_SYSTEM_PROMPT = `You are an intelligent Git Assistant with access to tools.
4
- Your goal is to write a high-quality Git commit message following Conventional Commits format.
5
-
6
- Process:
7
- 1. Analyze the PRE-LOADED diffs for the most important files (already provided in the context).
8
- 2. Look for:
9
- - Core logic changes (new features, bug fixes)
10
- - API signature changes
11
- - Breaking changes
12
- 3. If you need additional context about function usages, use the search_code tool.
13
- 4. Synthesize a commit message based on ALL available information.
14
-
15
- Output Format:
16
- <type>(<scope>): <subject>
17
-
18
- Where:
19
- - type: feat, fix, docs, style, refactor, perf, test, chore, build, ci
20
- - scope: the affected component/module (inferred from file paths or branch name)
21
- - subject: concise description under 50 chars, imperative mood, no period
22
-
23
- Optional: Add a blank line and body for detailed explanation if needed.
24
-
25
- IMPORTANT: DO NOT use markdown code blocks (no \`\`\`). Return raw text only.
26
- Reply with just the commit message when done.`;
27
- const MAX_TOOL_CALLS = 10;
28
- const MAX_TOOL_DIFF_CHARS = 5000;
29
- const MAX_TOOL_SEARCH_CHARS = 5000;
30
- function truncateText(text, maxChars, suffix) {
31
- if (text.length <= maxChars)
32
- return text;
33
- return text.slice(0, maxChars) + suffix;
34
- }
35
- function parseToolArgs(raw) {
36
- if (!raw)
37
- return {};
38
- if (typeof raw === 'string') {
39
- try {
40
- const parsed = JSON.parse(raw);
41
- if (parsed && typeof parsed === 'object')
42
- return parsed;
43
- return {};
44
- }
45
- catch {
46
- return {};
47
- }
48
- }
49
- if (typeof raw === 'object')
50
- return raw;
51
- return {};
52
- }
53
- function analyzeFileImportance(stats) {
54
- const sorted = [...stats].sort((a, b) => {
55
- const scoreA = a.insertions + a.deletions;
56
- const scoreB = b.insertions + b.deletions;
57
- return scoreB - scoreA;
58
- });
59
- const priority = [];
60
- let totalLines = 0;
61
- for (const stat of sorted) {
62
- totalLines += stat.insertions + stat.deletions;
63
- }
64
- let accumulated = 0;
65
- for (const stat of sorted) {
66
- const score = stat.insertions + stat.deletions;
67
- accumulated += score;
68
- if (accumulated < totalLines * 0.8 && priority.length < 5) {
69
- priority.push(stat);
70
- }
71
- }
72
- return { priority, others: sorted.slice(priority.length) };
73
- }
74
- function extractScopeFromBranch(branchName) {
75
- if (!branchName)
76
- return null;
77
- const patterns = [
78
- /^(?:feature|bugfix|hotfix|release|dev)\/([a-zA-Z0-9_-]+)/,
79
- /^(?:feat|fix|chore|docs)\/([a-zA-Z0-9_-]+)/,
80
- /^[A-Z]+-\d+/,
81
- ];
82
- for (const pattern of patterns) {
83
- const match = branchName.match(pattern);
84
- if (match) {
85
- return match[1].toLowerCase().replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
86
- }
87
- }
88
- return null;
89
- }
90
- function getBranchWarning(branchName) {
91
- if (/^hotfix\//.test(branchName)) {
92
- return '\n⚠️ WARNING: This is a HOTFIX branch. Changes will be deployed immediately. Ensure all tests pass.';
93
- }
94
- if (/^release\//.test(branchName)) {
95
- return '\n⚠️ WARNING: This is a RELEASE branch. Review changes carefully before committing.';
96
- }
97
- return '';
98
- }
99
- const tools = [
100
- {
101
- type: 'function',
102
- function: {
103
- name: 'get_file_diff',
104
- description: 'Get the git diff for a specific file to understand the detailed changes.',
105
- parameters: {
106
- type: 'object',
107
- properties: {
108
- path: {
109
- type: 'string',
110
- description: 'The file path to get diff for',
111
- },
112
- },
113
- required: ['path'],
114
- },
115
- },
116
- },
117
- {
118
- type: 'function',
119
- function: {
120
- name: 'search_code',
121
- description: 'Search for a string or pattern across the codebase (tracked files). Useful for finding usages of a function or variable.',
122
- parameters: {
123
- type: 'object',
124
- properties: {
125
- pattern: {
126
- type: 'string',
127
- description: 'The string or regex pattern to search for',
128
- },
129
- },
130
- required: ['pattern'],
131
- },
132
- },
133
- },
134
- ];
135
- export async function runAgentLoop(client, config, stats, branchName, quiet = false, modelOverride) {
136
- const { priority, others } = analyzeFileImportance(stats);
137
- const spinner = !quiet ? ora('Agent is pre-analyzing important files...').start() : null;
138
- const diffCache = new Map();
139
- const searchCache = new Map();
140
- async function loadPriorityDiffs() {
141
- const promises = priority.map(async (stat) => {
142
- if (isBlacklisted(stat.file))
143
- return;
144
- try {
145
- const diff = await getFileDiff(stat.file);
146
- if (diff) {
147
- diffCache.set(stat.file, truncateText(diff, MAX_TOOL_DIFF_CHARS, '\n...[Diff truncated]'));
148
- }
149
- }
150
- catch {
151
- // ignore
152
- }
153
- });
154
- await Promise.all(promises);
155
- }
156
- await loadPriorityDiffs();
157
- if (spinner)
158
- spinner.text = 'Agent is analyzing changes...';
159
- const priorityDiffs = [...diffCache.entries()].map(([file, diff]) => `=== ${file} ===\n${diff}`).join('\n\n');
160
- const otherFiles = others.filter(s => !isBlacklisted(s.file)).map(s => s.file);
161
- const scope = extractScopeFromBranch(branchName || '');
162
- const warning = getBranchWarning(branchName || '');
163
- const initialContent = `Current Branch: ${branchName || 'unknown'}${warning}
164
- ${scope ? `Inferred scope from branch: ${scope}` : ''}
165
-
166
- Files Summary (priority order):
167
- ${stats.slice(0, 15).map((s) => `${s.file} (+${s.insertions}, -${s.deletions})`).join('\n')}
168
- ${stats.length > 15 ? `... and ${stats.length - 15} more files` : ''}
169
-
170
- === Priority File Diffs ===
171
- ${priorityDiffs || '(No diffs loaded)'}
172
-
173
- ${otherFiles.length > 0 ? `=== Other Changed Files (not loaded) ===\n${otherFiles.slice(0, 10).join('\n')}` : ''}
174
-
175
- Based on the above information, generate a commit message. Use tools only if you need additional context about function/variable usages that are not clear from the diffs.`;
176
- const messages = [
177
- { role: 'system', content: AGENT_SYSTEM_PROMPT },
178
- { role: 'user', content: initialContent },
179
- ];
180
- let toolCalls = 0;
181
- let forceFinal = false;
182
- let toolBudgetNotified = false;
183
- let firstRound = true;
184
- const MAX_ITERATIONS = 5;
185
- for (let i = 0; i < MAX_ITERATIONS; i++) {
186
- try {
187
- const response = await client.chat.completions.create({
188
- model: modelOverride || config.model,
189
- messages,
190
- tools,
191
- tool_choice: firstRound ? 'none' : (forceFinal ? 'none' : undefined),
192
- temperature: 0.3,
193
- });
194
- firstRound = false;
195
- const message = response.choices[0]?.message;
196
- if (!message) {
197
- throw new Error('Empty response from AI');
198
- }
199
- messages.push(message);
200
- if (message.tool_calls?.length) {
201
- for (const toolCall of message.tool_calls) {
202
- const canUseTool = toolCalls < MAX_TOOL_CALLS;
203
- if (toolCall.function.name === 'get_file_diff') {
204
- if (spinner)
205
- spinner.text = `Agent is inspecting diffs...`;
206
- let content = '(No diff)';
207
- if (!canUseTool) {
208
- forceFinal = true;
209
- content = '(Tool budget exceeded. Return final commit message.)';
210
- }
211
- else {
212
- let path = '';
213
- try {
214
- const args = parseToolArgs(toolCall.function.arguments);
215
- path = typeof args.path === 'string' ? args.path : '';
216
- }
217
- catch {
218
- path = '';
219
- }
220
- if (!path) {
221
- content = '(Invalid file path)';
222
- }
223
- else if (isBlacklisted(path)) {
224
- content = '(Diff skipped: ignored file)';
225
- }
226
- else if (diffCache.has(path)) {
227
- content = diffCache.get(path) || '(No diff)';
228
- }
229
- else {
230
- const diffContent = await getFileDiff(path);
231
- content = diffContent || '(No diff)';
232
- content = truncateText(content, MAX_TOOL_DIFF_CHARS, '\n...[Diff truncated]');
233
- diffCache.set(path, content);
234
- }
235
- toolCalls++;
236
- }
237
- messages.push({
238
- role: 'tool',
239
- tool_call_id: toolCall.id,
240
- content,
241
- });
242
- }
243
- else if (toolCall.function.name === 'search_code') {
244
- if (spinner)
245
- spinner.text = `Agent is searching codebase...`;
246
- let content = 'No matches found.';
247
- if (!canUseTool) {
248
- forceFinal = true;
249
- content = '(Tool budget exceeded. Return final commit message.)';
250
- }
251
- else {
252
- let pattern = '';
253
- try {
254
- const args = parseToolArgs(toolCall.function.arguments);
255
- pattern = typeof args.pattern === 'string' ? args.pattern : '';
256
- }
257
- catch {
258
- pattern = '';
259
- }
260
- if (!pattern) {
261
- content = '(Invalid search pattern)';
262
- }
263
- else if (searchCache.has(pattern)) {
264
- content = searchCache.get(pattern) || 'No matches found.';
265
- }
266
- else {
267
- const searchResult = await searchCode(pattern);
268
- content = truncateText(searchResult || 'No matches found.', MAX_TOOL_SEARCH_CHARS, '\n...[Search output truncated]');
269
- searchCache.set(pattern, content);
270
- }
271
- toolCalls++;
272
- }
273
- messages.push({
274
- role: 'tool',
275
- tool_call_id: toolCall.id,
276
- content,
277
- });
278
- }
279
- }
280
- if (forceFinal && !toolBudgetNotified) {
281
- messages.push({
282
- role: 'user',
283
- content: 'Tool budget reached. Please return the final commit message now.',
284
- });
285
- toolBudgetNotified = true;
286
- }
287
- continue;
288
- }
289
- if (message.content) {
290
- if (spinner)
291
- spinner.stop();
292
- return message.content
293
- .replace(/^```[a-z]*\n/i, '')
294
- .replace(/```$/, '')
295
- .trim();
296
- }
297
- }
298
- catch (error) {
299
- if (spinner)
300
- spinner.fail('Agent loop failed.');
301
- throw error;
302
- }
303
- }
304
- if (spinner)
305
- spinner.fail('Agent exceeded maximum iterations.');
306
- throw new Error('Agent exceeded maximum iterations.');
307
- }
308
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import OpenAI from 'openai';
2
- import { FileStat } from './git.js';
3
- import { AIConfig } from '../types.js';
4
- export declare function runAgentLite(client: OpenAI, config: AIConfig, stats: FileStat[], branchName?: string, quiet?: boolean, modelOverride?: string): Promise<string>;
5
- //# sourceMappingURL=agent_lite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent_lite.d.ts","sourceRoot":"","sources":["../../src/utils/agent_lite.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAe,QAAQ,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAoMvC,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,UAAQ,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAwGjB"}