yuangs 6.3.0 → 6.4.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 +7 -27
- package/dist/agent/AgentRuntime.js +31 -583
- package/dist/agent/AgentRuntime.js.map +1 -1
- package/dist/agent/DualAgentRuntime.js +16 -16
- package/dist/agent/DualAgentRuntime.js.map +1 -1
- package/dist/agent/ExecutionCompleter.d.ts +31 -0
- package/dist/agent/ExecutionCompleter.js +83 -0
- package/dist/agent/ExecutionCompleter.js.map +1 -0
- package/dist/agent/ExecutionHandler.d.ts +34 -0
- package/dist/agent/ExecutionHandler.js +227 -0
- package/dist/agent/ExecutionHandler.js.map +1 -0
- package/dist/agent/ExecutionLearning.d.ts +8 -0
- package/dist/agent/ExecutionLearning.js +31 -0
- package/dist/agent/ExecutionLearning.js.map +1 -0
- package/dist/agent/ExecutionRecovery.d.ts +26 -0
- package/dist/agent/ExecutionRecovery.js +99 -0
- package/dist/agent/ExecutionRecovery.js.map +1 -0
- package/dist/agent/ExecutionStabilizer.d.ts +20 -0
- package/dist/agent/ExecutionStabilizer.js +101 -0
- package/dist/agent/ExecutionStabilizer.js.map +1 -0
- package/dist/agent/ExecutionTypes.d.ts +13 -0
- package/dist/agent/ExecutionTypes.js +9 -0
- package/dist/agent/ExecutionTypes.js.map +1 -0
- package/dist/agent/LLMCaller.d.ts +19 -0
- package/dist/agent/LLMCaller.js +103 -0
- package/dist/agent/LLMCaller.js.map +1 -0
- package/dist/agent/PreFlightChecker.d.ts +51 -0
- package/dist/agent/PreFlightChecker.js +148 -0
- package/dist/agent/PreFlightChecker.js.map +1 -0
- package/dist/agent/commandSemantics.js +12 -0
- package/dist/agent/commandSemantics.js.map +1 -1
- package/dist/agent/errorTracker.d.ts +10 -0
- package/dist/agent/errorTracker.js +36 -0
- package/dist/agent/errorTracker.js.map +1 -1
- package/dist/agent/executor.d.ts +12 -90
- package/dist/agent/executor.js +59 -881
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/governance/core.js.map +1 -1
- package/dist/agent/governance/riskScoring.js +6 -3
- package/dist/agent/governance/riskScoring.js.map +1 -1
- package/dist/agent/governance.js +4 -36
- package/dist/agent/governance.js.map +1 -1
- package/dist/agent/llm.js +11 -17
- package/dist/agent/llm.js.map +1 -1
- package/dist/agent/policy/engine.d.ts +2 -5
- package/dist/agent/policy/engine.js.map +1 -1
- package/dist/agent/policy/index.d.ts +1 -0
- package/dist/agent/policy/index.js +1 -0
- package/dist/agent/policy/index.js.map +1 -1
- package/dist/agent/policy/policies/WorkdirWrite.d.ts +11 -0
- package/dist/agent/policy/policies/WorkdirWrite.js +65 -0
- package/dist/agent/policy/policies/WorkdirWrite.js.map +1 -0
- package/dist/agent/policy/policies/noDangerousShell.js +1 -1
- package/dist/agent/policy/policies/noDangerousShell.js.map +1 -1
- package/dist/agent/policy/types.d.ts +6 -4
- package/dist/agent/skills.d.ts +12 -17
- package/dist/agent/skills.js +45 -52
- package/dist/agent/skills.js.map +1 -1
- package/dist/agent/state.d.ts +33 -3
- package/dist/agent/state.js +14 -0
- package/dist/agent/state.js.map +1 -1
- package/dist/agent/tools/AnalyzeDependencies.d.ts +9 -0
- package/dist/agent/tools/AnalyzeDependencies.js +91 -0
- package/dist/agent/tools/AnalyzeDependencies.js.map +1 -0
- package/dist/agent/tools/AppendFile.d.ts +8 -0
- package/dist/agent/tools/AppendFile.js +36 -0
- package/dist/agent/tools/AppendFile.js.map +1 -0
- package/dist/agent/tools/CodeDiff.d.ts +8 -0
- package/dist/agent/tools/CodeDiff.js +36 -0
- package/dist/agent/tools/CodeDiff.js.map +1 -0
- package/dist/agent/tools/ContinueReading.d.ts +8 -0
- package/dist/agent/tools/ContinueReading.js +59 -0
- package/dist/agent/tools/ContinueReading.js.map +1 -0
- package/dist/agent/tools/FileInfo.d.ts +8 -0
- package/dist/agent/tools/FileInfo.js +43 -0
- package/dist/agent/tools/FileInfo.js.map +1 -0
- package/dist/agent/tools/GitDiff.d.ts +8 -0
- package/dist/agent/tools/GitDiff.js +40 -0
- package/dist/agent/tools/GitDiff.js.map +1 -0
- package/dist/agent/tools/GitLog.d.ts +8 -0
- package/dist/agent/tools/GitLog.js +36 -0
- package/dist/agent/tools/GitLog.js.map +1 -0
- package/dist/agent/tools/GitStatus.d.ts +8 -0
- package/dist/agent/tools/GitStatus.js +38 -0
- package/dist/agent/tools/GitStatus.js.map +1 -0
- package/dist/agent/tools/ListDirectoryTree.d.ts +9 -0
- package/dist/agent/tools/ListDirectoryTree.js +63 -0
- package/dist/agent/tools/ListDirectoryTree.js.map +1 -0
- package/dist/agent/tools/ListFiles.d.ts +9 -0
- package/dist/agent/tools/ListFiles.js +53 -0
- package/dist/agent/tools/ListFiles.js.map +1 -0
- package/dist/agent/tools/ReadFile.d.ts +8 -0
- package/dist/agent/tools/ReadFile.js +33 -0
- package/dist/agent/tools/ReadFile.js.map +1 -0
- package/dist/agent/tools/ReadFileLines.d.ts +8 -0
- package/dist/agent/tools/ReadFileLines.js +45 -0
- package/dist/agent/tools/ReadFileLines.js.map +1 -0
- package/dist/agent/tools/ReadFileLinesFromEnd.d.ts +8 -0
- package/dist/agent/tools/ReadFileLinesFromEnd.js +48 -0
- package/dist/agent/tools/ReadFileLinesFromEnd.js.map +1 -0
- package/dist/agent/tools/SearchInFiles.d.ts +8 -0
- package/dist/agent/tools/SearchInFiles.js +70 -0
- package/dist/agent/tools/SearchInFiles.js.map +1 -0
- package/dist/agent/tools/SearchSymbol.d.ts +8 -0
- package/dist/agent/tools/SearchSymbol.js +62 -0
- package/dist/agent/tools/SearchSymbol.js.map +1 -0
- package/dist/agent/tools/ShellCmd.d.ts +8 -0
- package/dist/agent/tools/ShellCmd.js +40 -0
- package/dist/agent/tools/ShellCmd.js.map +1 -0
- package/dist/agent/tools/WriteFile.d.ts +8 -0
- package/dist/agent/tools/WriteFile.js +35 -0
- package/dist/agent/tools/WriteFile.js.map +1 -0
- package/dist/agent/tools/index.d.ts +20 -0
- package/dist/agent/tools/index.js +50 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/tools/pathSafety.d.ts +9 -0
- package/dist/agent/tools/pathSafety.js +85 -0
- package/dist/agent/tools/pathSafety.js.map +1 -0
- package/dist/agent/tools/registry.d.ts +40 -0
- package/dist/agent/tools/registry.js +77 -0
- package/dist/agent/tools/registry.js.map +1 -0
- package/dist/agent/tools/types.d.ts +21 -0
- package/dist/agent/tools/types.js +3 -0
- package/dist/agent/tools/types.js.map +1 -0
- package/dist/agent/tools/utils.d.ts +43 -0
- package/dist/agent/tools/utils.js +158 -0
- package/dist/agent/tools/utils.js.map +1 -0
- package/dist/agent/types.d.ts +5 -3
- package/dist/ai/client.d.ts +2 -2
- package/dist/ai/client.js +16 -23
- package/dist/ai/client.js.map +1 -1
- package/dist/audit/timeline.js +7 -5
- package/dist/audit/timeline.js.map +1 -1
- package/dist/cli.js +12 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/handleAIChat.js +1 -1
- package/dist/commands/handleAIChat.js.map +1 -1
- package/dist/commands/handleAICommand.js +3 -3
- package/dist/commands/handleAICommand.js.map +1 -1
- package/dist/commands/skillsCommands.js +4 -42
- package/dist/commands/skillsCommands.js.map +1 -1
- package/dist/core/ConfigService.d.ts +87 -0
- package/dist/core/ConfigService.js +259 -0
- package/dist/core/ConfigService.js.map +1 -0
- package/dist/core/executionRecord.d.ts +1 -1
- package/dist/core/explain.js +2 -2
- package/dist/core/explain.js.map +1 -1
- package/dist/core/git/BackupManager.d.ts +30 -0
- package/dist/core/git/BackupManager.js +153 -0
- package/dist/core/git/BackupManager.js.map +1 -0
- package/dist/core/git/ConflictResolver.js.map +1 -1
- package/dist/core/replayDiff.js +5 -5
- package/dist/core/replayDiff.js.map +1 -1
- package/dist/core/skillTypes.d.ts +22 -0
- package/dist/core/skillTypes.js +17 -0
- package/dist/core/skillTypes.js.map +1 -0
- package/dist/utils/Logger.d.ts +24 -5
- package/dist/utils/Logger.js +89 -63
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/storage.d.ts +22 -0
- package/dist/utils/storage.js +62 -0
- package/dist/utils/storage.js.map +1 -0
- package/package.json +3 -1
- package/dist/core/ConfigManager.d.ts +0 -39
- package/dist/core/ConfigManager.js +0 -127
- package/dist/core/ConfigManager.js.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PreFlightChecker = void 0;
|
|
4
|
+
const errorTracker_1 = require("./errorTracker");
|
|
5
|
+
const core_1 = require("./governance/core");
|
|
6
|
+
const governance_1 = require("./governance");
|
|
7
|
+
const Logger_1 = require("../utils/Logger");
|
|
8
|
+
const policy_1 = require("./policy");
|
|
9
|
+
const log = Logger_1.logger.child('PreFlightChecker');
|
|
10
|
+
/**
|
|
11
|
+
* Pre-flight checks before executing an action.
|
|
12
|
+
* Handles duplicate detection, write-mode caching, governance, and causal ACK verification.
|
|
13
|
+
*/
|
|
14
|
+
class PreFlightChecker {
|
|
15
|
+
context;
|
|
16
|
+
constructor(context) {
|
|
17
|
+
this.context = context;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Verify causal ACK matches the last observation.
|
|
21
|
+
* Returns false if ACK mismatches and the loop should skip.
|
|
22
|
+
*/
|
|
23
|
+
verifyAckCausality(thought) {
|
|
24
|
+
const lastObs = this.context.getLastAckableObservation();
|
|
25
|
+
const ackText = thought.parsedPlan?.acknowledged_observation;
|
|
26
|
+
if (lastObs && ackText && ackText !== 'NONE') {
|
|
27
|
+
if (lastObs.content.trim() !== ackText.trim()) {
|
|
28
|
+
log.error('ACK mismatch', {
|
|
29
|
+
expected: lastObs.content.trim().substring(0, 100),
|
|
30
|
+
received: ackText.trim().substring(0, 100),
|
|
31
|
+
});
|
|
32
|
+
this.context.addMessage("system", `CAUSAL BREAK: ACK does not match physical Observation. Cannot proceed without acknowledging reality.`);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
log.debug('ACK verified');
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Run governance checks. Returns false if the action is denied.
|
|
41
|
+
*/
|
|
42
|
+
async passGovernance(action) {
|
|
43
|
+
const preCheck = (0, core_1.evaluateProposal)(action, governance_1.GovernanceService.getRules(), governance_1.GovernanceService.getLedgerSnapshot());
|
|
44
|
+
if (preCheck.effect === "deny") {
|
|
45
|
+
log.warn('Policy blocked', { reason: preCheck.reason });
|
|
46
|
+
this.context.addMessage("system", `POLICY DENIED: ${preCheck.reason}. Find a different way.`);
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const decision = await governance_1.GovernanceService.adjudicate(action);
|
|
50
|
+
if (decision.status === "rejected") {
|
|
51
|
+
log.warn('Governance rejected', { reason: decision.reason });
|
|
52
|
+
this.context.addMessage("system", `Rejected by Governance: ${decision.reason}`);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Record knowledge graph edge between observation and action.
|
|
59
|
+
*/
|
|
60
|
+
async recordKnowledgeGraphEdge(thought, action) {
|
|
61
|
+
// TODO: implement knowledge graph integration when module is available
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if execution should be blocked.
|
|
65
|
+
* Returns:
|
|
66
|
+
* - 'blocked': skip this turn
|
|
67
|
+
* - 'force_break': break the loop entirely
|
|
68
|
+
* - cached result object: use cached output instead of executing
|
|
69
|
+
* - null: proceed with execution
|
|
70
|
+
*/
|
|
71
|
+
check(action, writeModeState, lastToolCall) {
|
|
72
|
+
if (action.type !== 'tool_call')
|
|
73
|
+
return null;
|
|
74
|
+
const toolParams = action.payload;
|
|
75
|
+
const toolName = toolParams.tool_name;
|
|
76
|
+
const params = toolName === 'shell_cmd'
|
|
77
|
+
? { command: (toolParams.tool_name === 'shell_cmd' ? '' : toolParams.parameters?.command || '') }
|
|
78
|
+
: (toolParams.parameters || {});
|
|
79
|
+
// Duplicate detection
|
|
80
|
+
if (lastToolCall) {
|
|
81
|
+
const isExactDuplicate = lastToolCall.tool === toolName &&
|
|
82
|
+
JSON.stringify(lastToolCall.params) === JSON.stringify(params);
|
|
83
|
+
if (isExactDuplicate) {
|
|
84
|
+
lastToolCall.blockCount = (lastToolCall.blockCount || 0) + 1;
|
|
85
|
+
if (lastToolCall.blockCount >= 2) {
|
|
86
|
+
log.warn('Force break: duplicate tool call', { tool: toolName, blockCount: lastToolCall.blockCount });
|
|
87
|
+
return 'force_break';
|
|
88
|
+
}
|
|
89
|
+
log.debug('Duplicate pre-block', { tool: toolName });
|
|
90
|
+
this.context.addMessage('system', `你已经刚刚调用过 ${toolName},结果没有变化。你已经有足够的数据,请使用 'answer' 类型返回结果给用户,不要再调用 ${toolName}。`);
|
|
91
|
+
return 'blocked';
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Write-mode cache
|
|
95
|
+
if (writeModeState && toolName === 'read_file') {
|
|
96
|
+
const filePath = toolParams.parameters?.path;
|
|
97
|
+
if (filePath === writeModeState.filePath && writeModeState.content) {
|
|
98
|
+
log.debug('File content cached', { filePath });
|
|
99
|
+
return { success: true, output: writeModeState.content, artifacts: [filePath] };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Policy engine check
|
|
103
|
+
const policyCtx = {
|
|
104
|
+
action,
|
|
105
|
+
cwd: process.cwd(),
|
|
106
|
+
mode: 'command+exec',
|
|
107
|
+
history: []
|
|
108
|
+
};
|
|
109
|
+
// Register policies on first use
|
|
110
|
+
if (!policy_1.policyEngine['policies'].size) {
|
|
111
|
+
policy_1.policyEngine.registerPolicy(policy_1.noDangerousShellPolicy);
|
|
112
|
+
policy_1.policyEngine.registerPolicy(policy_1.workdirWritePolicy);
|
|
113
|
+
}
|
|
114
|
+
// Synchronous check: policy evaluation is sync for these policies
|
|
115
|
+
const policyResult = this.evaluatePolicySync(policyCtx);
|
|
116
|
+
if (policyResult && !policyResult.allowed) {
|
|
117
|
+
log.warn('Policy blocked', { policy: policyResult.reason });
|
|
118
|
+
this.context.addMessage('system', `BLOCKED: ${policyResult.reason}. ${policyResult.suggestedActions?.join(' ') || ''}`);
|
|
119
|
+
return 'blocked';
|
|
120
|
+
}
|
|
121
|
+
// Error tracker block
|
|
122
|
+
const blockCheck = errorTracker_1.ErrorTracker.shouldBlockExecution(toolName, toolParams.parameters);
|
|
123
|
+
if (blockCheck.blocked) {
|
|
124
|
+
log.warn('Execution blocked by error tracker', { tool: toolName, reason: blockCheck.reason });
|
|
125
|
+
this.context.addMessage("system", `BLOCKED: ${blockCheck.reason}. 建议尝试不同的方法。`);
|
|
126
|
+
return 'blocked';
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/** Synchronous policy evaluation (for sync check method) */
|
|
131
|
+
evaluatePolicySync(ctx) {
|
|
132
|
+
// Direct synchronous evaluation since current policies are sync
|
|
133
|
+
const policies = [policy_1.noDangerousShellPolicy, policy_1.workdirWritePolicy];
|
|
134
|
+
for (const policy of policies) {
|
|
135
|
+
const result = policy.evaluate(ctx);
|
|
136
|
+
if (result instanceof Promise) {
|
|
137
|
+
// Should not happen for current policies
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (!result.allowed) {
|
|
141
|
+
return { allowed: false, reason: result.reason, suggestedActions: result.suggestedActions };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { allowed: true };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.PreFlightChecker = PreFlightChecker;
|
|
148
|
+
//# sourceMappingURL=PreFlightChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreFlightChecker.js","sourceRoot":"","sources":["../../src/agent/PreFlightChecker.ts"],"names":[],"mappings":";;;AAEA,iDAA8C;AAE9C,4CAAqD;AACrD,6CAAiD;AACjD,4CAAyC;AACzC,qCAAiH;AAEjH,MAAM,GAAG,GAAG,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAgB7C;;;GAGG;AACH,MAAa,gBAAgB;IACP;IAApB,YAAoB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAEpD;;;OAGG;IACH,kBAAkB,CAAC,OAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC;QAE7D,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE;oBACxB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAClD,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;iBAC3C,CAAC,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,QAAQ,EACR,sGAAsG,CACvG,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YACC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAsB;QACzC,MAAM,QAAQ,GAAG,IAAA,uBAAgB,EAAC,MAAM,EAAE,8BAAiB,CAAC,QAAQ,EAAE,EAAE,8BAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC/G,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,8BAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,2BAA2B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAChF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAAY,EAAE,MAAsB;QACjE,uEAAuE;IACzE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,MAAsB,EACtB,cAAqC,EACrC,YAAmC;QAEnC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAqC,CAAC;QAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,KAAK,WAAW;YACrC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,UAAU,CAAC,UAAsC,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE;YAC9H,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAElC,sBAAsB;QACtB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,KAAK,QAAQ;gBACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,YAAY,CAAC,UAAU,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7D,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;oBACjC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtG,OAAO,aAAa,CAAC;gBACvB,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,QAAQ,kDAAkD,QAAQ,GAAG,CAAC,CAAC;gBACrH,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,cAAc,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAI,UAAU,CAAC,UAAsC,EAAE,IAAc,CAAC;YACpF,IAAI,QAAQ,KAAK,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBACnE,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClF,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,SAAS,GAAkB;YAC/B,MAAM;YACN,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,iCAAiC;QACjC,IAAI,CAAC,qBAAY,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,qBAAY,CAAC,cAAc,CAAC,+BAAsB,CAAC,CAAC;YACpD,qBAAY,CAAC,cAAc,CAAC,2BAAkB,CAAC,CAAC;QAClD,CAAC;QAED,kEAAkE;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxH,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,2BAAY,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QACtF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,UAAU,CAAC,MAAM,cAAc,CAAC,CAAC;YAC/E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IACpD,kBAAkB,CAAC,GAAkB;QAC3C,gEAAgE;QAChE,MAAM,QAAQ,GAAG,CAAC,+BAAsB,EAAE,2BAAkB,CAAC,CAAC;QAC9D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,yCAAyC;gBACzC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF;AAtJD,4CAsJC"}
|
|
@@ -66,6 +66,18 @@ const DANGEROUS_PATTERNS = [
|
|
|
66
66
|
{ pattern: /\bchown\s+-R\s+.*\s+\/\b/, reason: '递归更改全局所有权' },
|
|
67
67
|
{ pattern: /\bsudo\s+rm\s+-rf\s+\/\b/, reason: 'sudo 删除根目录' },
|
|
68
68
|
{ pattern: />\s*\/etc\/(passwd|shadow|sudoers)/, reason: '写入系统认证文件' },
|
|
69
|
+
// === 绕过变体 ===
|
|
70
|
+
{ pattern: /\brm\s+(-r\s+-f|-f\s+-r|--recursive\s+-f|-r\s+--force|--force\s+-r)\s+\/\s*$/, reason: '删除根目录(参数拆分绕过)' },
|
|
71
|
+
{ pattern: /\benv\s+rm\s+-rf\s+\/\b/, reason: 'env 前缀绕过删除根目录' },
|
|
72
|
+
{ pattern: /\bsudo\s+env\s+rm\s+-rf\s+\/\b/, reason: 'sudo env 前缀绕过删除根目录' },
|
|
73
|
+
{ pattern: /\bbase64\s+(-d|--decode)\s*\|.*\b(sh|bash|zsh)\b/i, reason: 'base64 解码后脚本执行' },
|
|
74
|
+
{ pattern: /\bxargs\s+(rm\s+-rf|dd|mkfs|chmod|chown)\b/i, reason: 'xargs 管道破坏命令' },
|
|
75
|
+
{ pattern: /\bfind\s+\/[^&|;\s]*\s+-exec\s+(rm|dd|mkfs|chmod)\b/i, reason: 'find -exec 系统目录破坏' },
|
|
76
|
+
{ pattern: /`\s*(rm\s+-rf|dd|mkfs)/i, reason: '反引号注入破坏命令' },
|
|
77
|
+
{ pattern: /\$\(.*\b(rm\s+-rf|dd|mkfs)\b.*\)/i, reason: '子命令注入破坏命令' },
|
|
78
|
+
{ pattern: /\bwget\s+-O-.*\|\s*(sh|bash|zsh)\b/i, reason: 'wget 远程脚本执行(变体)' },
|
|
79
|
+
{ pattern: /\bcurl\s+-sL.*\|\s*(sh|bash|zsh)\b/i, reason: 'curl 远程脚本执行(变体)' },
|
|
80
|
+
{ pattern: /\beval\s+.*\b(rm\s+-rf|dd|mkfs|chmod\s+777)\b/i, reason: 'eval 执行破坏命令' },
|
|
69
81
|
];
|
|
70
82
|
// ============================================================================
|
|
71
83
|
// 核心分析函数
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandSemantics.js","sourceRoot":"","sources":["../../src/agent/commandSemantics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;
|
|
1
|
+
{"version":3,"file":"commandSemantics.js","sourceRoot":"","sources":["../../src/agent/commandSemantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,16 @@ export declare class ErrorTracker {
|
|
|
46
46
|
private static errors;
|
|
47
47
|
private static errorPatterns;
|
|
48
48
|
private static maxHistorySize;
|
|
49
|
+
private static storage;
|
|
50
|
+
private static initialized;
|
|
51
|
+
/**
|
|
52
|
+
* 懒加载持久化数据
|
|
53
|
+
*/
|
|
54
|
+
private static ensureInitialized;
|
|
55
|
+
/**
|
|
56
|
+
* 保存到磁盘
|
|
57
|
+
*/
|
|
58
|
+
private static persist;
|
|
49
59
|
/**
|
|
50
60
|
* 记录工具执行错误
|
|
51
61
|
*/
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.ErrorTracker = void 0;
|
|
15
15
|
const crypto_1 = require("crypto");
|
|
16
|
+
const storage_1 = require("../utils/storage");
|
|
16
17
|
/**
|
|
17
18
|
* 错误追踪器类
|
|
18
19
|
*/
|
|
@@ -20,10 +21,40 @@ class ErrorTracker {
|
|
|
20
21
|
static errors = new Map();
|
|
21
22
|
static errorPatterns = new Map();
|
|
22
23
|
static maxHistorySize = 1000;
|
|
24
|
+
static storage = storage_1.FileStorage.forYuangs('error-tracker.json');
|
|
25
|
+
static initialized = false;
|
|
26
|
+
/**
|
|
27
|
+
* 懒加载持久化数据
|
|
28
|
+
*/
|
|
29
|
+
static ensureInitialized() {
|
|
30
|
+
if (this.initialized)
|
|
31
|
+
return;
|
|
32
|
+
this.initialized = true;
|
|
33
|
+
const data = this.storage.read();
|
|
34
|
+
if (!data)
|
|
35
|
+
return;
|
|
36
|
+
for (const record of data.errors || []) {
|
|
37
|
+
this.errors.set(record.id, record);
|
|
38
|
+
}
|
|
39
|
+
for (const pattern of data.patterns || []) {
|
|
40
|
+
this.errorPatterns.set(pattern.pattern, pattern);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 保存到磁盘
|
|
45
|
+
*/
|
|
46
|
+
static persist() {
|
|
47
|
+
const data = {
|
|
48
|
+
errors: Array.from(this.errors.values()),
|
|
49
|
+
patterns: Array.from(this.errorPatterns.values()),
|
|
50
|
+
};
|
|
51
|
+
this.storage.write(data);
|
|
52
|
+
}
|
|
23
53
|
/**
|
|
24
54
|
* 记录工具执行错误
|
|
25
55
|
*/
|
|
26
56
|
static recordError(toolName, parameters, errorMessage, context) {
|
|
57
|
+
this.ensureInitialized();
|
|
27
58
|
// 生成错误指纹(用于检测重复)
|
|
28
59
|
const fingerprint = this.generateFingerprint(toolName, parameters, errorMessage);
|
|
29
60
|
// 检查是否已存在相同错误
|
|
@@ -58,12 +89,14 @@ class ErrorTracker {
|
|
|
58
89
|
}
|
|
59
90
|
// 更新错误模式
|
|
60
91
|
this.updateErrorPatterns(record);
|
|
92
|
+
this.persist();
|
|
61
93
|
return record;
|
|
62
94
|
}
|
|
63
95
|
/**
|
|
64
96
|
* 检查是否应该阻止执行(防止重复错误)
|
|
65
97
|
*/
|
|
66
98
|
static shouldBlockExecution(toolName, parameters, maxRetries = 3) {
|
|
99
|
+
this.ensureInitialized();
|
|
67
100
|
const existing = this.findSimilarError(toolName, parameters, '');
|
|
68
101
|
if (existing) {
|
|
69
102
|
// 对于 BUFFER_OVERFLOW 错误,立即阻止(重试不会有效)
|
|
@@ -196,11 +229,13 @@ class ErrorTracker {
|
|
|
196
229
|
this.errors.delete(id);
|
|
197
230
|
}
|
|
198
231
|
}
|
|
232
|
+
this.persist();
|
|
199
233
|
}
|
|
200
234
|
/**
|
|
201
235
|
* 获取错误统计
|
|
202
236
|
*/
|
|
203
237
|
static getErrorStats() {
|
|
238
|
+
this.ensureInitialized();
|
|
204
239
|
const errorsByTool = {};
|
|
205
240
|
const errorsByType = {};
|
|
206
241
|
for (const record of this.errors.values()) {
|
|
@@ -229,6 +264,7 @@ class ErrorTracker {
|
|
|
229
264
|
static clear() {
|
|
230
265
|
this.errors.clear();
|
|
231
266
|
this.errorPatterns.clear();
|
|
267
|
+
this.storage.delete();
|
|
232
268
|
}
|
|
233
269
|
/**
|
|
234
270
|
* 获取特定工具的错误历史
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorTracker.js","sourceRoot":"","sources":["../../src/agent/errorTracker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,mCAAoC;
|
|
1
|
+
{"version":3,"file":"errorTracker.js","sourceRoot":"","sources":["../../src/agent/errorTracker.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/executor.d.ts
CHANGED
|
@@ -1,119 +1,41 @@
|
|
|
1
1
|
import { ProposedAction, ToolExecutionResult } from './state';
|
|
2
2
|
import { CapabilityLevel } from '../core/capability/CapabilityLevel';
|
|
3
|
+
import { ToolRegistry } from './tools';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 集成能力感知的工具调用
|
|
7
|
-
* 集成命令语义分析和路径安全验证
|
|
5
|
+
* ToolExecutor — thin facade over ToolRegistry.
|
|
6
|
+
* Maintains backward compatibility for existing callers (AgentRuntime, DualAgentRuntime).
|
|
8
7
|
*/
|
|
9
8
|
export declare class ToolExecutor {
|
|
10
9
|
private static readonly MAX_OUTPUT_LENGTH;
|
|
11
|
-
private static readonly READ_POSITIONS;
|
|
12
10
|
private static currentCapabilityLevel;
|
|
13
11
|
private static allowedCwd;
|
|
14
12
|
/**
|
|
15
|
-
*
|
|
13
|
+
* Expose the registry for external registration of custom tools.
|
|
16
14
|
*/
|
|
15
|
+
static getRegistry(): ToolRegistry;
|
|
17
16
|
static setAllowedCwd(cwd: string): void;
|
|
18
|
-
|
|
19
|
-
* 使用命令语义分析检查命令安全性
|
|
20
|
-
*/
|
|
17
|
+
static getAllowedCwd(): string;
|
|
21
18
|
private static analyzeCommandSafety;
|
|
22
|
-
/**
|
|
23
|
-
* 设置当前能力等级
|
|
24
|
-
*/
|
|
25
19
|
static setCapabilityLevel(level: CapabilityLevel): void;
|
|
26
|
-
/**
|
|
27
|
-
* 获取当前能力等级
|
|
28
|
-
*/
|
|
29
20
|
static getCapabilityLevel(): CapabilityLevel;
|
|
30
|
-
/**
|
|
31
|
-
* 检查工具是否可以被当前能力等级执行
|
|
32
|
-
*/
|
|
33
21
|
static checkToolCapability(toolName: string): {
|
|
34
22
|
allowed: boolean;
|
|
35
23
|
required?: CapabilityLevel;
|
|
36
24
|
current?: CapabilityLevel;
|
|
37
25
|
};
|
|
38
|
-
/**
|
|
39
|
-
* 获取指定能力等级下可用的工具列表
|
|
40
|
-
*/
|
|
41
26
|
static getAvailableTools(): string[];
|
|
42
|
-
/**
|
|
43
|
-
* 获取能力等级的可读名称
|
|
44
|
-
*/
|
|
45
27
|
private static getCapabilityName;
|
|
46
|
-
/**
|
|
47
|
-
* 智能截断输出
|
|
48
|
-
* 当输出过长时,返回特殊标记和继续读取的提示
|
|
49
|
-
*/
|
|
50
|
-
private static maybeTruncate;
|
|
51
28
|
static execute(action: ProposedAction): Promise<ToolExecutionResult>;
|
|
52
29
|
private static executeAction;
|
|
53
30
|
private static executeTool;
|
|
54
|
-
private static toolReadFile;
|
|
55
|
-
private static toolWriteFile;
|
|
56
|
-
private static toolListFiles;
|
|
57
|
-
private static getFiles;
|
|
58
|
-
private static executeShell;
|
|
59
|
-
private static executeDiff;
|
|
60
|
-
/**
|
|
61
|
-
* 读取文件的指定行范围
|
|
62
|
-
*/
|
|
63
|
-
private static toolReadFileLines;
|
|
64
|
-
/**
|
|
65
|
-
* 从文件末尾读取指定行数(倒数行)
|
|
66
|
-
* 例如:count=5 表示读取最后5行,count=5, start_offset=2 表示读取倒数第2到5行
|
|
67
|
-
*/
|
|
68
|
-
private static toolReadFileLinesFromEnd;
|
|
69
|
-
/**
|
|
70
|
-
* 向文件末尾追加内容
|
|
71
|
-
*/
|
|
72
|
-
private static toolAppendFile;
|
|
73
|
-
/**
|
|
74
|
-
* 生成目录结构的树形展示
|
|
75
|
-
*/
|
|
76
|
-
private static toolListDirectoryTree;
|
|
77
|
-
private static buildDirectoryTree;
|
|
78
|
-
/**
|
|
79
|
-
* 在文件中搜索指定内容(类似 grep)
|
|
80
|
-
*/
|
|
81
|
-
private static toolSearchInFiles;
|
|
82
|
-
/**
|
|
83
|
-
* 搜索代码符号(函数、类、变量等)
|
|
84
|
-
* 使用 grep 进行简化搜索
|
|
85
|
-
*/
|
|
86
|
-
private static toolSearchSymbol;
|
|
87
|
-
/**
|
|
88
|
-
* 分析文件的依赖关系(import/require)
|
|
89
|
-
*/
|
|
90
|
-
private static toolAnalyzeDependencies;
|
|
91
|
-
/**
|
|
92
|
-
* Git 状态
|
|
93
|
-
*/
|
|
94
|
-
private static toolGitStatus;
|
|
95
31
|
/**
|
|
96
|
-
*
|
|
32
|
+
* Execute shell command — delegates to ShellCmd tool but retains
|
|
33
|
+
* the command safety analysis that was part of the original executor.
|
|
97
34
|
*/
|
|
98
|
-
private static
|
|
99
|
-
/**
|
|
100
|
-
* Git 日志
|
|
101
|
-
*/
|
|
102
|
-
private static toolGitLog;
|
|
103
|
-
/**
|
|
104
|
-
* 继续读取之前被截断的文件内容
|
|
105
|
-
*/
|
|
106
|
-
private static toolContinueReading;
|
|
107
|
-
/**
|
|
108
|
-
* 获取文件元信息
|
|
109
|
-
*/
|
|
110
|
-
private static toolFileInfo;
|
|
111
|
-
/**
|
|
112
|
-
* 格式化字节数
|
|
113
|
-
*/
|
|
114
|
-
private static formatBytes;
|
|
35
|
+
private static executeShell;
|
|
115
36
|
/**
|
|
116
|
-
*
|
|
37
|
+
* Execute diff — delegates to CodeDiff tool.
|
|
117
38
|
*/
|
|
118
|
-
private static
|
|
39
|
+
private static executeDiff;
|
|
40
|
+
private static maybeTruncate;
|
|
119
41
|
}
|