yuangs 3.22.0 → 3.26.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.
- package/dist/agent/AgentRuntime.d.ts +2 -1
- package/dist/agent/AgentRuntime.js +69 -4
- package/dist/agent/AgentRuntime.js.map +1 -1
- package/dist/agent/astParser.d.ts +45 -0
- package/dist/agent/astParser.js +232 -0
- package/dist/agent/astParser.js.map +1 -0
- package/dist/agent/codeSummary.d.ts +2 -2
- package/dist/agent/codeSummary.js +36 -76
- package/dist/agent/codeSummary.js.map +1 -1
- package/dist/agent/executor.d.ts +6 -0
- package/dist/agent/executor.js +55 -20
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/llm.d.ts +1 -1
- package/dist/agent/llm.js +56 -3
- package/dist/agent/llm.js.map +1 -1
- package/dist/agent/llmAdapter.d.ts +1 -1
- package/dist/agent/llmAdapter.js +8 -52
- package/dist/agent/llmAdapter.js.map +1 -1
- package/dist/agent/prompt.js +16 -37
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/protocolV2_2.d.ts +22 -0
- package/dist/agent/protocolV2_2.js +217 -0
- package/dist/agent/protocolV2_2.js.map +1 -0
- package/dist/agent/skills.js +14 -6
- package/dist/agent/skills.js.map +1 -1
- package/dist/commands/handleAIChat.js +2 -2
- package/dist/commands/handleAIChat.js.map +1 -1
- package/dist/commands/handleAICommand.js +1 -1
- package/dist/commands/handleAICommand.js.map +1 -1
- package/dist/core/capabilitySystem.d.ts +1 -1
- package/dist/core/capabilitySystem.js +2 -2
- package/dist/core/capabilitySystem.js.map +1 -1
- package/dist/core/executionRecord.d.ts +2 -1
- package/dist/core/executionRecord.js +3 -1
- package/dist/core/executionRecord.js.map +1 -1
- package/dist/core/kernel/ASTParser.d.ts +86 -0
- package/dist/core/kernel/ASTParser.js +208 -0
- package/dist/core/kernel/ASTParser.js.map +1 -0
- package/dist/core/kernel/AtomicTransactionManager.d.ts +119 -0
- package/dist/core/kernel/AtomicTransactionManager.js +268 -0
- package/dist/core/kernel/AtomicTransactionManager.js.map +1 -0
- package/dist/core/kernel/FastScanner.d.ts +77 -0
- package/dist/core/kernel/FastScanner.js +273 -0
- package/dist/core/kernel/FastScanner.js.map +1 -0
- package/dist/core/kernel/PostCheckVerifier.d.ts +86 -0
- package/dist/core/kernel/PostCheckVerifier.js +182 -0
- package/dist/core/kernel/PostCheckVerifier.js.map +1 -0
- package/dist/core/kernel/XResolver.d.ts +76 -0
- package/dist/core/kernel/XResolver.js +217 -0
- package/dist/core/kernel/XResolver.js.map +1 -0
- package/dist/utils/renderer.d.ts +18 -1
- package/dist/utils/renderer.js +56 -8
- package/dist/utils/renderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { StreamMarkdownRenderer } from '../utils/renderer';
|
|
1
2
|
export declare class AgentRuntime {
|
|
2
3
|
private context;
|
|
3
4
|
private executionId;
|
|
4
5
|
constructor(initialContext: any);
|
|
5
|
-
run(userInput: string, mode?: "chat" | "command", onChunk?: (chunk: string) => void, model?: string): Promise<void>;
|
|
6
|
+
run(userInput: string, mode?: "chat" | "command", onChunk?: (chunk: string) => void, model?: string, renderer?: StreamMarkdownRenderer): Promise<void>;
|
|
6
7
|
}
|
|
@@ -51,6 +51,7 @@ const executor_1 = require("./executor");
|
|
|
51
51
|
const smartContextManager_1 = require("./smartContextManager");
|
|
52
52
|
const core_1 = require("./governance/core");
|
|
53
53
|
const dynamicPrompt_1 = require("./dynamicPrompt");
|
|
54
|
+
const renderer_1 = require("../utils/renderer");
|
|
54
55
|
class AgentRuntime {
|
|
55
56
|
context;
|
|
56
57
|
executionId;
|
|
@@ -58,7 +59,7 @@ class AgentRuntime {
|
|
|
58
59
|
this.context = new smartContextManager_1.SmartContextManager(initialContext);
|
|
59
60
|
this.executionId = (0, crypto_1.randomUUID)();
|
|
60
61
|
}
|
|
61
|
-
async run(userInput, mode = "chat", onChunk, model) {
|
|
62
|
+
async run(userInput, mode = "chat", onChunk, model, renderer) {
|
|
62
63
|
let turnCount = 0;
|
|
63
64
|
const maxTurns = 10;
|
|
64
65
|
let lastError;
|
|
@@ -107,7 +108,14 @@ class AgentRuntime {
|
|
|
107
108
|
const basePrompt = governance_1.GovernanceService.getPolicyManual();
|
|
108
109
|
// 注入动态上下文
|
|
109
110
|
const enhancedPrompt = (0, dynamicPrompt_1.injectDynamicContext)(basePrompt, dynamicContext);
|
|
110
|
-
|
|
111
|
+
// Create renderer if not provided but onChunk is available
|
|
112
|
+
let agentRenderer = renderer;
|
|
113
|
+
let agentOnChunk = onChunk;
|
|
114
|
+
if (!agentRenderer && agentOnChunk) {
|
|
115
|
+
agentRenderer = new renderer_1.StreamMarkdownRenderer(chalk_1.default.bgHex('#3b82f6').white.bold(' 🤖 Agent ') + ' ', undefined, { autoFinish: false });
|
|
116
|
+
agentOnChunk = agentRenderer.startChunking();
|
|
117
|
+
}
|
|
118
|
+
const thought = await llmAdapter_1.LLMAdapter.think(messages, mode, agentOnChunk, model, enhancedPrompt, this.context);
|
|
111
119
|
const action = {
|
|
112
120
|
id: (0, crypto_1.randomUUID)(),
|
|
113
121
|
type: thought.type || "answer",
|
|
@@ -122,10 +130,43 @@ class AgentRuntime {
|
|
|
122
130
|
if (thought.isDone || action.type === "answer") {
|
|
123
131
|
const result = await executor_1.ToolExecutor.execute(action);
|
|
124
132
|
if (!onChunk) {
|
|
125
|
-
|
|
126
|
-
|
|
133
|
+
if (agentRenderer) {
|
|
134
|
+
// Stream final answer through renderer
|
|
135
|
+
for (let i = 0; i < result.output.length; i += 10) {
|
|
136
|
+
const chunk = result.output.slice(i, i + 10);
|
|
137
|
+
agentRenderer.onChunk(chunk);
|
|
138
|
+
}
|
|
139
|
+
agentRenderer.finish();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const rendered = (0, marked_1.marked)(result.output);
|
|
143
|
+
console.log(chalk_1.default.green(`\n🤖 AI:\n`) + rendered);
|
|
144
|
+
}
|
|
127
145
|
}
|
|
128
146
|
this.context.addMessage("assistant", result.output);
|
|
147
|
+
// Learn from successful chat
|
|
148
|
+
try {
|
|
149
|
+
const { createExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionRecord')));
|
|
150
|
+
const { inferCapabilityRequirement } = await Promise.resolve().then(() => __importStar(require('../core/capabilityInference')));
|
|
151
|
+
const { saveExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionStore')));
|
|
152
|
+
const record = createExecutionRecord('agent-chat', { required: [], preferred: [] }, {
|
|
153
|
+
aiProxyUrl: { value: '', source: 'built-in' },
|
|
154
|
+
defaultModel: { value: '', source: 'built-in' },
|
|
155
|
+
accountType: { value: 'free', source: 'built-in' }
|
|
156
|
+
}, { selected: null, candidates: [], fallbackOccurred: false }, { success: true }, undefined, userInput, 'chat');
|
|
157
|
+
record.llmResult = { plan: thought.parsedPlan };
|
|
158
|
+
record.input = { rawInput: userInput };
|
|
159
|
+
const savedRecordId = saveExecutionRecord(record);
|
|
160
|
+
const { loadExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionStore')));
|
|
161
|
+
const savedRecord = loadExecutionRecord(savedRecordId);
|
|
162
|
+
if (savedRecord) {
|
|
163
|
+
const { learnSkillFromRecord } = await Promise.resolve().then(() => __importStar(require('./skills')));
|
|
164
|
+
learnSkillFromRecord(savedRecord, true);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.warn(chalk_1.default.yellow(`[Skill Learning] Failed: ${error}`));
|
|
169
|
+
}
|
|
129
170
|
break;
|
|
130
171
|
}
|
|
131
172
|
// === 强制 ACK 校验(Causal Lock) ===
|
|
@@ -187,6 +228,30 @@ class AgentRuntime {
|
|
|
187
228
|
? result.output.substring(0, 300) + '...'
|
|
188
229
|
: result.output;
|
|
189
230
|
console.log(chalk_1.default.green(`[SUCCESS] Result:\n${preview}`));
|
|
231
|
+
// Learn from this successful execution
|
|
232
|
+
try {
|
|
233
|
+
const { createExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionRecord')));
|
|
234
|
+
const { inferCapabilityRequirement } = await Promise.resolve().then(() => __importStar(require('../core/capabilityInference')));
|
|
235
|
+
const { saveExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionStore')));
|
|
236
|
+
const record = createExecutionRecord(`agent-${mode}`, { required: [], preferred: [] }, {
|
|
237
|
+
aiProxyUrl: { value: '', source: 'built-in' },
|
|
238
|
+
defaultModel: { value: '', source: 'built-in' },
|
|
239
|
+
accountType: { value: 'free', source: 'built-in' }
|
|
240
|
+
}, { selected: null, candidates: [], fallbackOccurred: false }, { success: true }, undefined, userInput, mode);
|
|
241
|
+
// Attach thought/plan data for skill learning
|
|
242
|
+
record.llmResult = { plan: thought.parsedPlan };
|
|
243
|
+
record.input = { rawInput: userInput };
|
|
244
|
+
const savedRecordId = saveExecutionRecord(record);
|
|
245
|
+
const { loadExecutionRecord } = await Promise.resolve().then(() => __importStar(require('../core/executionStore')));
|
|
246
|
+
const savedRecord = loadExecutionRecord(savedRecordId);
|
|
247
|
+
if (savedRecord) {
|
|
248
|
+
const { learnSkillFromRecord } = await Promise.resolve().then(() => __importStar(require('./skills')));
|
|
249
|
+
learnSkillFromRecord(savedRecord, true);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
console.warn(chalk_1.default.yellow(`[Skill Learning] Failed: ${error}`));
|
|
254
|
+
}
|
|
190
255
|
}
|
|
191
256
|
else {
|
|
192
257
|
// 失败时记录错误,下次循环会注入错误恢复指导
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRuntime.js","sourceRoot":"","sources":["../../src/agent/AgentRuntime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,mCAAoC;AACpC,mCAAgC;AAChC,sEAA+C;AAE/C,mBAAmB;AACnB,eAAM,CAAC,UAAU,CAAC;IAChB,QAAQ,EAAE,IAAI,yBAAgB,EAAE;CACjC,CAAC,CAAC;AACH,6CAA0C;AAC1C,6CAAiD;AACjD,yCAA0C;AAE1C,+DAA4D;AAC5D,4CAAqD;AAErD,mDAIyB;
|
|
1
|
+
{"version":3,"file":"AgentRuntime.js","sourceRoot":"","sources":["../../src/agent/AgentRuntime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,mCAAoC;AACpC,mCAAgC;AAChC,sEAA+C;AAE/C,mBAAmB;AACnB,eAAM,CAAC,UAAU,CAAC;IAChB,QAAQ,EAAE,IAAI,yBAAgB,EAAE;CACjC,CAAC,CAAC;AACH,6CAA0C;AAC1C,6CAAiD;AACjD,yCAA0C;AAE1C,+DAA4D;AAC5D,4CAAqD;AAErD,mDAIyB;AACzB,gDAA2D;AAE3D,MAAa,YAAY;IACf,OAAO,CAAsB;IAC7B,WAAW,CAAS;IAE5B,YAAY,cAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,yCAAmB,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAA,mBAAU,GAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,SAAiB,EACjB,OAA2B,MAAM,EACjC,OAAiC,EACjC,KAAc,EACd,QAAiC;QAEjC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,SAA6B,CAAC;QAElC,YAAY;QACZ,MAAM,qBAAqB,GAAG,MAAM,IAAA,mCAAmB,GAAE,CAAC;QAE1D,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,EAAE,SAAS,CAAC;YAChC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,WAAW,MAAM,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,4DAA4D;YAC5D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBAC5D,KAAK,EAAE,SAAS;gBAChB,YAAY,EAAE,GAAG;gBACjB,SAAS,EAAE,IAAI;gBACf,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAU,EAAE,CAAC;YAE3B,yCAAyC;YACzC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,eAAe,CAAC,OAAO;iBACjC,CAAC,CAAC;YACL,CAAC;YAED,2BAA2B;YAC3B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;iBAC7G,CAAC,CAAC;YACL,CAAC;YAED,iBAAiB;YACjB,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,qDAAqD;YACrD,MAAM,cAAc,GAAG,MAAM,IAAA,mCAAmB,EAAC,SAAS,CAAC,CAAC;YAE5D,qBAAqB;YACrB,MAAM,UAAU,GAAG,8BAAiB,CAAC,eAAe,EAAE,CAAC;YAEvD,UAAU;YACV,MAAM,cAAc,GAAG,IAAA,oCAAoB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAExE,2DAA2D;YAC3D,IAAI,aAAa,GAAG,QAAQ,CAAC;YAC7B,IAAI,YAAY,GAAG,OAAO,CAAC;YAE3B,IAAI,CAAC,aAAa,IAAI,YAAY,EAAE,CAAC;gBACnC,aAAa,GAAG,IAAI,iCAAsB,CACxC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,EACrD,SAAS,EACT,EAAE,UAAU,EAAE,KAAK,EAAE,CACtB,CAAC;gBACF,YAAY,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,uBAAU,CAAC,KAAK,CACpC,QAAQ,EACR,IAAW,EACX,YAAY,EACZ,KAAK,EACL,cAAc,EACd,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,MAAM,MAAM,GAAmB;gBAC7B,EAAE,EAAE,IAAA,mBAAU,GAAE;gBAChB,IAAI,EAAG,OAAO,CAAC,IAAY,IAAI,QAAQ;gBACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;gBACjD,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;aACnC,CAAC;YAEF,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;YAED,2BAA2B;YAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,uBAAY,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;gBAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,aAAa,EAAE,CAAC;wBAClB,uCAAuC;wBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;4BAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;4BAC7C,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC/B,CAAC;wBACD,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBACN,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEpD,6BAA6B;gBAC7B,IAAI,CAAC;oBACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,yBAAyB,GAAC,CAAC;oBAC1E,MAAM,EAAE,0BAA0B,EAAE,GAAG,wDAAa,6BAA6B,GAAC,CAAC;oBACnF,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;oBAEvE,MAAM,MAAM,GAAG,qBAAqB,CAClC,YAAY,EACZ,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAS,EACtC;wBACE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;wBAC7C,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;wBAC/C,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;qBAC5C,EACR,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAC3D,EAAE,OAAO,EAAE,IAAI,EAAE,EACjB,SAAS,EACT,SAAS,EACT,MAAM,CACP,CAAC;oBAED,MAAc,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBACxD,MAAc,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;oBAEhD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;oBACvE,MAAM,WAAW,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;oBAEvD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;wBAC1D,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM;YACR,CAAC;YAED,iCAAiC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC;YAE7D,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAEpC,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAC5C,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC3E,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,QAAQ,EACR,sGAAsG,CACvG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAA,uBAAgB,EAC/B,MAAM,EACN,8BAAiB,CAAC,QAAQ,EAAE,EAC5B,8BAAiB,CAAC,iBAAiB,EAAE,CACtC,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CACjE,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,QAAQ,EACR,kBAAkB,QAAQ,CAAC,MAAM,yBAAyB,CAC3D,CAAC;gBACF,SAAS;YACX,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,8BAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,QAAQ,EACR,2BAA2B,QAAQ,CAAC,MAAM,EAAE,CAC7C,CAAC;gBACF,SAAS;YACX,CAAC;YAED,oBAAoB;YACpB,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACxE,IAAI,CAAC;oBACH,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,gCAAgC,GAAC,CAAC;oBACtE,UAAU,CAAC;wBACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;wBAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,iBAAwB;wBAC9B,QAAQ,EAAE;4BACR,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yBACtB;qBACF,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACzD,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,+CAA+C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;YAED,aAAa;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,uBAAY,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;YAEzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,YAAY;gBACZ,SAAS,GAAG,SAAS,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;oBACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;oBACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC,CAAC;gBAE1D,uCAAuC;gBACvC,IAAI,CAAC;oBACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,yBAAyB,GAAC,CAAC;oBAC1E,MAAM,EAAE,0BAA0B,EAAE,GAAG,wDAAa,6BAA6B,GAAC,CAAC;oBACnF,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;oBAEvE,MAAM,MAAM,GAAG,qBAAqB,CAClC,SAAS,IAAI,EAAE,EACf,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAS,EACtC;wBACE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;wBAC7C,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;wBAC/C,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;qBAC5C,EACR,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAC3D,EAAE,OAAO,EAAE,IAAI,EAAE,EACjB,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;oBAEF,8CAA8C;oBAC7C,MAAc,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBACxD,MAAc,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;oBAEhD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;oBACvE,MAAM,WAAW,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;oBAEvD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;wBAC1D,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,QAAQ,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AA7SD,oCA6SC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST Parser for TypeScript/JavaScript
|
|
3
|
+
*
|
|
4
|
+
* 使用 TypeScript Compiler API 进行真正的 AST 级别符号提取
|
|
5
|
+
* 替代正则表达式,提供更准确的结构化摘要
|
|
6
|
+
*/
|
|
7
|
+
import { Symbol } from './codeSummary';
|
|
8
|
+
export interface ASTParseResult {
|
|
9
|
+
symbols: Symbol[];
|
|
10
|
+
success: boolean;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* TypeScript/JavaScript AST 解析器
|
|
15
|
+
*/
|
|
16
|
+
export declare class TypeScriptASTParser {
|
|
17
|
+
/**
|
|
18
|
+
* 从源代码提取符号
|
|
19
|
+
*/
|
|
20
|
+
static parse(code: string, filePath: string): ASTParseResult;
|
|
21
|
+
/**
|
|
22
|
+
* 递归遍历 AST 提取符号
|
|
23
|
+
*/
|
|
24
|
+
private static extractSymbols;
|
|
25
|
+
/**
|
|
26
|
+
* 检查节点是否有导出修饰符
|
|
27
|
+
*/
|
|
28
|
+
private static hasExportModifier;
|
|
29
|
+
/**
|
|
30
|
+
* 添加符号到列表
|
|
31
|
+
*/
|
|
32
|
+
private static addSymbol;
|
|
33
|
+
/**
|
|
34
|
+
* 获取节点签名字符串
|
|
35
|
+
*/
|
|
36
|
+
private static getSignature;
|
|
37
|
+
/**
|
|
38
|
+
* 从文件路径解析并返回符号
|
|
39
|
+
*/
|
|
40
|
+
static parseFile(filePath: string): Promise<ASTParseResult>;
|
|
41
|
+
/**
|
|
42
|
+
* 生成紧凑的符号摘要文本
|
|
43
|
+
*/
|
|
44
|
+
static generateCompactSummary(symbols: Symbol[], filePath: string): string;
|
|
45
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AST Parser for TypeScript/JavaScript
|
|
4
|
+
*
|
|
5
|
+
* 使用 TypeScript Compiler API 进行真正的 AST 级别符号提取
|
|
6
|
+
* 替代正则表达式,提供更准确的结构化摘要
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.TypeScriptASTParser = void 0;
|
|
43
|
+
const ts = __importStar(require("typescript"));
|
|
44
|
+
const fs = __importStar(require("fs/promises"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
/**
|
|
47
|
+
* TypeScript/JavaScript AST 解析器
|
|
48
|
+
*/
|
|
49
|
+
class TypeScriptASTParser {
|
|
50
|
+
/**
|
|
51
|
+
* 从源代码提取符号
|
|
52
|
+
*/
|
|
53
|
+
static parse(code, filePath) {
|
|
54
|
+
try {
|
|
55
|
+
const sourceFile = ts.createSourceFile(filePath, code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
56
|
+
const symbols = [];
|
|
57
|
+
this.extractSymbols(sourceFile, symbols);
|
|
58
|
+
return {
|
|
59
|
+
symbols,
|
|
60
|
+
success: true
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return {
|
|
65
|
+
symbols: [],
|
|
66
|
+
success: false,
|
|
67
|
+
error: error instanceof Error ? error.message : 'Unknown parsing error'
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 递归遍历 AST 提取符号
|
|
73
|
+
*/
|
|
74
|
+
static extractSymbols(node, symbols) {
|
|
75
|
+
if (!node)
|
|
76
|
+
return;
|
|
77
|
+
const isExported = this.hasExportModifier(node);
|
|
78
|
+
// 提取导入语句
|
|
79
|
+
if (ts.isImportDeclaration(node)) {
|
|
80
|
+
const moduleSpecifier = node.moduleSpecifier.getText();
|
|
81
|
+
this.addSymbol(symbols, moduleSpecifier, 'import', node);
|
|
82
|
+
}
|
|
83
|
+
else if (ts.isImportEqualsDeclaration(node)) {
|
|
84
|
+
this.addSymbol(symbols, node.name.getText(), 'import', node);
|
|
85
|
+
}
|
|
86
|
+
// 提取导出语句
|
|
87
|
+
else if (ts.isExportDeclaration(node)) {
|
|
88
|
+
const moduleSpecifier = node.moduleSpecifier?.getText();
|
|
89
|
+
if (moduleSpecifier) {
|
|
90
|
+
this.addSymbol(symbols, `export ${moduleSpecifier}`, 'export', node);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// 提取类定义
|
|
94
|
+
else if (ts.isClassDeclaration(node) && node.name) {
|
|
95
|
+
this.addSymbol(symbols, node.name.getText(), isExported ? 'export' : 'class', node, this.getSignature(node));
|
|
96
|
+
}
|
|
97
|
+
// 提取接口定义
|
|
98
|
+
else if (ts.isInterfaceDeclaration(node) && node.name) {
|
|
99
|
+
this.addSymbol(symbols, node.name.getText(), isExported ? 'export' : 'interface', node, this.getSignature(node));
|
|
100
|
+
}
|
|
101
|
+
// 提取类型别名
|
|
102
|
+
else if (ts.isTypeAliasDeclaration(node) && node.name) {
|
|
103
|
+
this.addSymbol(symbols, node.name.getText(), isExported ? 'export' : 'type', node, this.getSignature(node));
|
|
104
|
+
}
|
|
105
|
+
// 提取枚举定义
|
|
106
|
+
else if (ts.isEnumDeclaration(node) && node.name) {
|
|
107
|
+
this.addSymbol(symbols, node.name.getText(), isExported ? 'export' : 'enum', node, this.getSignature(node));
|
|
108
|
+
}
|
|
109
|
+
// 提取函数声明
|
|
110
|
+
else if (ts.isFunctionDeclaration(node) && node.name) {
|
|
111
|
+
this.addSymbol(symbols, node.name.getText(), isExported ? 'export' : 'function', node, this.getSignature(node));
|
|
112
|
+
}
|
|
113
|
+
// 提取方法声明
|
|
114
|
+
else if (ts.isMethodDeclaration(node) && node.name) {
|
|
115
|
+
this.addSymbol(symbols, node.name.getText(), 'function', node, this.getSignature(node));
|
|
116
|
+
}
|
|
117
|
+
// 提取箭头函数赋值
|
|
118
|
+
else if (ts.isVariableStatement(node)) {
|
|
119
|
+
const exported = this.hasExportModifier(node);
|
|
120
|
+
const declaration = node.declarationList.declarations[0];
|
|
121
|
+
if (declaration && ts.isIdentifier(declaration.name)) {
|
|
122
|
+
const init = declaration.initializer;
|
|
123
|
+
if (init && (ts.isArrowFunction(init) || ts.isFunctionExpression(init))) {
|
|
124
|
+
this.addSymbol(symbols, declaration.name.getText(), exported ? 'export' : 'function', node, this.getSignature(node));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.addSymbol(symbols, declaration.name.getText(), exported ? 'export' : 'variable', node, this.getSignature(node));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// 递归处理子节点
|
|
132
|
+
ts.forEachChild(node, (child) => this.extractSymbols(child, symbols));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 检查节点是否有导出修饰符
|
|
136
|
+
*/
|
|
137
|
+
static hasExportModifier(node) {
|
|
138
|
+
if ('modifiers' in node) {
|
|
139
|
+
const modifiers = node.modifiers;
|
|
140
|
+
return modifiers && modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 添加符号到列表
|
|
146
|
+
*/
|
|
147
|
+
static addSymbol(symbols, name, type, node, signature) {
|
|
148
|
+
const sourceFile = node.getSourceFile();
|
|
149
|
+
const { line } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
150
|
+
symbols.push({
|
|
151
|
+
name: name.replace(/['"]/g, ''),
|
|
152
|
+
type,
|
|
153
|
+
line: line + 1,
|
|
154
|
+
signature: signature || node.getText().split('\n')[0].slice(0, 200)
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 获取节点签名字符串
|
|
159
|
+
*/
|
|
160
|
+
static getSignature(node) {
|
|
161
|
+
let signature = '';
|
|
162
|
+
const nodeText = node.getText();
|
|
163
|
+
// 提取第一行或签名部分
|
|
164
|
+
const firstLine = nodeText.split('\n')[0];
|
|
165
|
+
if (firstLine.length < 200) {
|
|
166
|
+
signature = firstLine;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
// 尝试提取签名部分
|
|
170
|
+
const signatureMatch = firstLine.match(/^(.*?)[{;]/);
|
|
171
|
+
if (signatureMatch) {
|
|
172
|
+
signature = signatureMatch[1];
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
signature = firstLine.slice(0, 200);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return signature;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 从文件路径解析并返回符号
|
|
182
|
+
*/
|
|
183
|
+
static async parseFile(filePath) {
|
|
184
|
+
try {
|
|
185
|
+
const code = await fs.readFile(filePath, 'utf-8');
|
|
186
|
+
return this.parse(code, filePath);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
return {
|
|
190
|
+
symbols: [],
|
|
191
|
+
success: false,
|
|
192
|
+
error: error instanceof Error ? error.message : 'File read error'
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* 生成紧凑的符号摘要文本
|
|
198
|
+
*/
|
|
199
|
+
static generateCompactSummary(symbols, filePath) {
|
|
200
|
+
const imports = symbols.filter(s => s.type === 'import');
|
|
201
|
+
const exports = symbols.filter(s => s.type === 'export');
|
|
202
|
+
const types = symbols.filter(s => ['interface', 'type', 'enum'].includes(s.type));
|
|
203
|
+
const classes = symbols.filter(s => s.type === 'class');
|
|
204
|
+
const functions = symbols.filter(s => s.type === 'function');
|
|
205
|
+
const variables = symbols.filter(s => s.type === 'variable');
|
|
206
|
+
let summary = `文件: ${path.basename(filePath)}\n`;
|
|
207
|
+
summary += `统计: ${imports.length}个导入, ${exports.length}个导出, ${types.length}个类型, ${classes.length}个类, ${functions.length}个函数\n`;
|
|
208
|
+
if (symbols.length > 0) {
|
|
209
|
+
summary += '\n主要符号:\n';
|
|
210
|
+
if (classes.length > 0) {
|
|
211
|
+
summary += ' 类: ' + classes.map(s => s.name).join(', ') + '\n';
|
|
212
|
+
}
|
|
213
|
+
if (functions.length > 0) {
|
|
214
|
+
const displayFunctions = functions.slice(0, 10);
|
|
215
|
+
summary += ' 函数: ' + displayFunctions.map(fn => fn.name).join(', ');
|
|
216
|
+
if (functions.length > 10) {
|
|
217
|
+
summary += ` (还有${functions.length - 10}个)`;
|
|
218
|
+
}
|
|
219
|
+
summary += '\n';
|
|
220
|
+
}
|
|
221
|
+
if (imports.length > 0 && imports.length <= 5) {
|
|
222
|
+
summary += ' 导入: ' + imports.map(s => s.name).join(', ') + '\n';
|
|
223
|
+
}
|
|
224
|
+
if (exports.length > 0 && exports.length <= 5) {
|
|
225
|
+
summary += ' 导出: ' + exports.map(s => s.name).join(', ') + '\n';
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return summary;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.TypeScriptASTParser = TypeScriptASTParser;
|
|
232
|
+
//# sourceMappingURL=astParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/agent/astParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ export interface FileSummary {
|
|
|
9
9
|
}
|
|
10
10
|
export interface Symbol {
|
|
11
11
|
name: string;
|
|
12
|
-
type: 'function' | 'class' | 'variable' | 'import' | 'export';
|
|
12
|
+
type: 'function' | 'class' | 'variable' | 'import' | 'export' | 'interface' | 'type' | 'enum';
|
|
13
13
|
line?: number;
|
|
14
14
|
signature?: string;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* 从代码中提取符号(优先AST,回退到正则)
|
|
18
18
|
*/
|
|
19
19
|
export declare function extractSymbols(code: string, filename: string): Symbol[];
|
|
20
20
|
/**
|