yuangs 3.17.0 → 3.20.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 (71) hide show
  1. package/dist/agent/AgentRuntime.js +68 -1
  2. package/dist/agent/AgentRuntime.js.map +1 -1
  3. package/dist/agent/DualAgentRuntime.d.ts +23 -0
  4. package/dist/agent/DualAgentRuntime.js +265 -0
  5. package/dist/agent/DualAgentRuntime.js.map +1 -0
  6. package/dist/agent/codeSummary.d.ts +34 -0
  7. package/dist/agent/codeSummary.js +370 -0
  8. package/dist/agent/codeSummary.js.map +1 -0
  9. package/dist/agent/contextManager.d.ts +9 -1
  10. package/dist/agent/contextManager.js +16 -1
  11. package/dist/agent/contextManager.js.map +1 -1
  12. package/dist/agent/errorHandling.d.ts +41 -0
  13. package/dist/agent/errorHandling.js +168 -0
  14. package/dist/agent/errorHandling.js.map +1 -0
  15. package/dist/agent/governance/index.d.ts +3 -0
  16. package/dist/agent/governance/index.js +23 -0
  17. package/dist/agent/governance/index.js.map +1 -0
  18. package/dist/agent/index.d.ts +4 -0
  19. package/dist/agent/index.js +7 -1
  20. package/dist/agent/index.js.map +1 -1
  21. package/dist/agent/llm.d.ts +27 -0
  22. package/dist/agent/llm.js +83 -3
  23. package/dist/agent/llm.js.map +1 -1
  24. package/dist/agent/llmAdapter.d.ts +2 -1
  25. package/dist/agent/llmAdapter.js +1 -1
  26. package/dist/agent/llmAdapter.js.map +1 -1
  27. package/dist/agent/preferences.d.ts +21 -0
  28. package/dist/agent/preferences.js +136 -0
  29. package/dist/agent/preferences.js.map +1 -0
  30. package/dist/agent/relevance.d.ts +18 -0
  31. package/dist/agent/relevance.js +120 -0
  32. package/dist/agent/relevance.js.map +1 -0
  33. package/dist/agent/riskDisclosure.d.ts +43 -0
  34. package/dist/agent/riskDisclosure.js +315 -0
  35. package/dist/agent/riskDisclosure.js.map +1 -0
  36. package/dist/agent/smartContextManager.d.ts +23 -0
  37. package/dist/agent/smartContextManager.js +83 -0
  38. package/dist/agent/smartContextManager.js.map +1 -0
  39. package/dist/agent/types.d.ts +16 -0
  40. package/dist/commands/context/ContextAssembler.d.ts +14 -0
  41. package/dist/commands/context/ContextAssembler.js +141 -0
  42. package/dist/commands/context/ContextAssembler.js.map +1 -0
  43. package/dist/commands/context/ContextStore.d.ts +32 -0
  44. package/dist/commands/context/ContextStore.js +179 -0
  45. package/dist/commands/context/ContextStore.js.map +1 -0
  46. package/dist/commands/context/ContextTypes.d.ts +30 -0
  47. package/dist/commands/context/ContextTypes.js +3 -0
  48. package/dist/commands/context/ContextTypes.js.map +1 -0
  49. package/dist/commands/context/index.d.ts +3 -0
  50. package/dist/commands/context/index.js +8 -0
  51. package/dist/commands/context/index.js.map +1 -0
  52. package/dist/commands/contextStorage.d.ts +2 -3
  53. package/dist/commands/contextStorage.js.map +1 -1
  54. package/dist/commands/handleAIChat.js +65 -34
  55. package/dist/commands/handleAIChat.js.map +1 -1
  56. package/dist/engine/agent/governance/CausalTracker.d.ts +4 -0
  57. package/dist/engine/agent/governance/CausalTracker.js +30 -0
  58. package/dist/engine/agent/governance/CausalTracker.js.map +1 -0
  59. package/dist/engine/agent/governance/ObservationRegistry.d.ts +6 -0
  60. package/dist/engine/agent/governance/ObservationRegistry.js +37 -0
  61. package/dist/engine/agent/governance/ObservationRegistry.js.map +1 -0
  62. package/dist/engine/agent/governance/errors.d.ts +3 -0
  63. package/dist/engine/agent/governance/errors.js +12 -0
  64. package/dist/engine/agent/governance/errors.js.map +1 -0
  65. package/dist/engine/agent/knowledgeGraph/index.d.ts +11 -0
  66. package/dist/engine/agent/knowledgeGraph/index.js +76 -0
  67. package/dist/engine/agent/knowledgeGraph/index.js.map +1 -0
  68. package/dist/engine/agent/knowledgeGraph/types.d.ts +23 -0
  69. package/dist/engine/agent/knowledgeGraph/types.js +3 -0
  70. package/dist/engine/agent/knowledgeGraph/types.js.map +1 -0
  71. package/package.json +3 -2
@@ -0,0 +1,23 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Original governance module exports
18
+ __exportStar(require("./bridge"), exports);
19
+ __exportStar(require("./core"), exports);
20
+ __exportStar(require("./ledger"), exports);
21
+ // Note: New causal tracking modules are in src/engine/agent/governance/
22
+ // These are imported directly when needed to avoid circular dependencies
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/governance/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qCAAqC;AACrC,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AAEzB,wEAAwE;AACxE,yEAAyE"}
@@ -1,7 +1,11 @@
1
1
  export { AgentRuntime } from './AgentRuntime';
2
+ export { DualAgentRuntime } from './DualAgentRuntime';
3
+ export { SmartContextManager } from './smartContextManager';
2
4
  export * from './state';
3
5
  export { LLMAdapter } from './llmAdapter';
4
6
  export { GovernanceService } from './governance';
5
7
  export { ToolExecutor } from './executor';
6
8
  export { ContextManager } from './contextManager';
7
9
  export * from './skills';
10
+ export * from './relevance';
11
+ export * from './preferences';
@@ -14,9 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ContextManager = exports.ToolExecutor = exports.GovernanceService = exports.LLMAdapter = exports.AgentRuntime = void 0;
17
+ exports.ContextManager = exports.ToolExecutor = exports.GovernanceService = exports.LLMAdapter = exports.SmartContextManager = exports.DualAgentRuntime = exports.AgentRuntime = void 0;
18
18
  var AgentRuntime_1 = require("./AgentRuntime");
19
19
  Object.defineProperty(exports, "AgentRuntime", { enumerable: true, get: function () { return AgentRuntime_1.AgentRuntime; } });
20
+ var DualAgentRuntime_1 = require("./DualAgentRuntime");
21
+ Object.defineProperty(exports, "DualAgentRuntime", { enumerable: true, get: function () { return DualAgentRuntime_1.DualAgentRuntime; } });
22
+ var smartContextManager_1 = require("./smartContextManager");
23
+ Object.defineProperty(exports, "SmartContextManager", { enumerable: true, get: function () { return smartContextManager_1.SmartContextManager; } });
20
24
  __exportStar(require("./state"), exports);
21
25
  var llmAdapter_1 = require("./llmAdapter");
22
26
  Object.defineProperty(exports, "LLMAdapter", { enumerable: true, get: function () { return llmAdapter_1.LLMAdapter; } });
@@ -27,4 +31,6 @@ Object.defineProperty(exports, "ToolExecutor", { enumerable: true, get: function
27
31
  var contextManager_1 = require("./contextManager");
28
32
  Object.defineProperty(exports, "ContextManager", { enumerable: true, get: function () { return contextManager_1.ContextManager; } });
29
33
  __exportStar(require("./skills"), exports);
34
+ __exportStar(require("./relevance"), exports);
35
+ __exportStar(require("./preferences"), exports);
30
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,0CAAwB;AACxB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,0CAAwB;AACxB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B"}
@@ -1,4 +1,31 @@
1
1
  import { AgentPrompt, LLMResult } from './types';
2
+ import { z } from 'zod';
3
+ export { supportsStructuredOutput };
4
+ export declare const AgentActionSchema: z.ZodObject<{
5
+ action_type: z.ZodEnum<{
6
+ tool_call: "tool_call";
7
+ code_diff: "code_diff";
8
+ shell_cmd: "shell_cmd";
9
+ answer: "answer";
10
+ }>;
11
+ tool_name: z.ZodOptional<z.ZodString>;
12
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
13
+ command: z.ZodOptional<z.ZodString>;
14
+ diff: z.ZodOptional<z.ZodString>;
15
+ risk_level: z.ZodEnum<{
16
+ low: "low";
17
+ medium: "medium";
18
+ high: "high";
19
+ }>;
20
+ risk_explanation: z.ZodOptional<z.ZodString>;
21
+ content: z.ZodOptional<z.ZodString>;
22
+ is_done: z.ZodOptional<z.ZodBoolean>;
23
+ }, z.core.$strip>;
24
+ export type AgentAction = z.infer<typeof AgentActionSchema>;
25
+ /**
26
+ * Check if a model supports native structured output
27
+ */
28
+ declare function supportsStructuredOutput(model: string): boolean;
2
29
  export declare function runLLM({ prompt, model, stream, onChunk, }: {
3
30
  prompt: AgentPrompt;
4
31
  model: string;
package/dist/agent/llm.js CHANGED
@@ -3,6 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AgentActionSchema = void 0;
7
+ exports.supportsStructuredOutput = supportsStructuredOutput;
6
8
  exports.runLLM = runLLM;
7
9
  const client_1 = require("../ai/client");
8
10
  const axios_1 = __importDefault(require("axios"));
@@ -11,7 +13,36 @@ const fs_1 = __importDefault(require("fs"));
11
13
  const path_1 = __importDefault(require("path"));
12
14
  const os_1 = __importDefault(require("os"));
13
15
  const validation_2 = require("../core/validation");
16
+ const zod_1 = require("zod");
14
17
  const CONFIG_FILE = path_1.default.join(os_1.default.homedir(), '.yuangs.json');
18
+ exports.AgentActionSchema = zod_1.z.object({
19
+ action_type: zod_1.z.enum(['tool_call', 'shell_cmd', 'answer', 'code_diff']),
20
+ tool_name: zod_1.z.string().optional(),
21
+ parameters: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(),
22
+ command: zod_1.z.string().optional(),
23
+ diff: zod_1.z.string().optional(),
24
+ risk_level: zod_1.z.enum(['low', 'medium', 'high']),
25
+ risk_explanation: zod_1.z.string().optional(),
26
+ content: zod_1.z.string().optional(),
27
+ is_done: zod_1.z.boolean().optional()
28
+ });
29
+ // Models that support native structured output
30
+ const STRUCTURED_OUTPUT_MODELS = [
31
+ 'gpt-4o',
32
+ 'gpt-4o-mini',
33
+ 'gpt-4-turbo',
34
+ 'claude-3.5-sonnet',
35
+ 'claude-3.5-haiku',
36
+ 'gemini-1.5-pro',
37
+ 'gemini-1.5-flash'
38
+ ];
39
+ /**
40
+ * Check if a model supports native structured output
41
+ */
42
+ function supportsStructuredOutput(model) {
43
+ const modelName = model.toLowerCase();
44
+ return STRUCTURED_OUTPUT_MODELS.some(supported => modelName.includes(supported.toLowerCase()));
45
+ }
15
46
  function getUserConfig() {
16
47
  if (fs_1.default.existsSync(CONFIG_FILE)) {
17
48
  try {
@@ -48,13 +79,62 @@ async function runLLM({ prompt, model, stream, onChunk, }) {
48
79
  'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
49
80
  'Accept': 'application/json'
50
81
  };
51
- const data = {
52
- model: model || config.defaultModel || validation_1.DEFAULT_MODEL,
82
+ // Native Structured Output: Check if model supports it and we're in Agent mode
83
+ const modelUsed = model || config.defaultModel || validation_1.DEFAULT_MODEL;
84
+ const useStructuredOutput = supportsStructuredOutput(modelUsed) && !stream;
85
+ let responseData = {
86
+ model: modelUsed,
53
87
  messages: prompt.system ? [{ role: 'system', content: prompt.system }, ...prompt.messages] : prompt.messages,
54
88
  stream: false
55
89
  };
90
+ if (useStructuredOutput && prompt.system?.includes('SYSTEM PROTOCOL')) {
91
+ responseData.response_format = {
92
+ type: 'json_schema',
93
+ json_schema: {
94
+ name: 'agent_action',
95
+ description: 'Agent action following REACT protocol',
96
+ strict: true,
97
+ schema: {
98
+ type: 'object',
99
+ properties: {
100
+ action_type: {
101
+ type: 'string',
102
+ enum: ['tool_call', 'shell_cmd', 'answer', 'code_diff']
103
+ },
104
+ tool_name: {
105
+ type: 'string'
106
+ },
107
+ parameters: {
108
+ type: 'object',
109
+ additionalProperties: true
110
+ },
111
+ command: {
112
+ type: 'string'
113
+ },
114
+ diff: {
115
+ type: 'string'
116
+ },
117
+ risk_level: {
118
+ type: 'string',
119
+ enum: ['low', 'medium', 'high']
120
+ },
121
+ risk_explanation: {
122
+ type: 'string'
123
+ },
124
+ content: {
125
+ type: 'string'
126
+ },
127
+ is_done: {
128
+ type: 'boolean'
129
+ }
130
+ },
131
+ required: ['action_type', 'risk_level']
132
+ }
133
+ }
134
+ };
135
+ }
56
136
  try {
57
- const response = await axios_1.default.post(url, data, { headers });
137
+ const response = await axios_1.default.post(url, responseData, { headers });
58
138
  const rawText = response.data.choices[0]?.message?.content || '';
59
139
  let parsed = undefined;
60
140
  if (prompt.outputSchema) {
@@ -1 +1 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/agent/llm.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { AgentThought } from './state';
2
2
  import type { AIRequestMessage } from '../core/validation';
3
+ import { ContextManager } from './contextManager';
3
4
  export declare class LLMAdapter {
4
- static think(messages: AIRequestMessage[], mode?: 'chat' | 'command' | 'command+exec', onChunk?: (chunk: string) => void, model?: string, customSystemPrompt?: string): Promise<AgentThought>;
5
+ static think(messages: AIRequestMessage[], mode?: 'chat' | 'command' | 'command+exec', onChunk?: (chunk: string) => void, model?: string, customSystemPrompt?: string, contextManager?: ContextManager): Promise<AgentThought>;
5
6
  static parseThought(raw: string): AgentThought;
6
7
  }
@@ -8,7 +8,7 @@ const llm_1 = require("./llm");
8
8
  const client_1 = require("../ai/client");
9
9
  const json5_1 = __importDefault(require("json5"));
10
10
  class LLMAdapter {
11
- static async think(messages, mode = 'chat', onChunk, model, customSystemPrompt) {
11
+ static async think(messages, mode = 'chat', onChunk, model, customSystemPrompt, contextManager) {
12
12
  // SYSTEM PROTOCOL V2.2 - CoT (Chain of Thought) 显式分离
13
13
  let protocol = `[SYSTEM PROTOCOL V2.2]
14
14
  - ROLE: AUTOMATED EXECUTION AGENT
@@ -1 +1 @@
1
- {"version":3,"file":"llmAdapter.js","sourceRoot":"","sources":["../../src/agent/llmAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llmAdapter.js","sourceRoot":"","sources":["../../src/agent/llmAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface ChatPreferences {
2
+ verbosity: 'concise' | 'normal' | 'detailed';
3
+ language: 'zh-CN' | 'en-US' | 'auto';
4
+ codeStyle: 'functional' | 'imperative' | 'any';
5
+ explanation: 'technical' | 'beginner' | 'adaptive';
6
+ outputFormat: 'markdown' | 'plain' | 'structured';
7
+ autoConfirm: boolean;
8
+ contextStrategy: 'smart' | 'minimal' | 'full';
9
+ }
10
+ export declare class PreferencesManager {
11
+ private static preferences;
12
+ static getPreferences(): ChatPreferences;
13
+ static setPreferences(updates: Partial<ChatPreferences>): void;
14
+ static getPreference<K extends keyof ChatPreferences>(key: K): ChatPreferences[K];
15
+ private static savePreferences;
16
+ static loadPreferences(): void;
17
+ static resetPreferences(): void;
18
+ }
19
+ export declare function buildPersonalizedPrompt(basePrompt: string, preferences?: Partial<ChatPreferences>): string;
20
+ export declare function applyOutputFormat(content: string, format: 'markdown' | 'plain' | 'structured'): string;
21
+ export declare function buildContextStrategyPrompt(strategy: 'smart' | 'minimal' | 'full'): string;
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PreferencesManager = void 0;
4
+ exports.buildPersonalizedPrompt = buildPersonalizedPrompt;
5
+ exports.applyOutputFormat = applyOutputFormat;
6
+ exports.buildContextStrategyPrompt = buildContextStrategyPrompt;
7
+ const DEFAULT_PREFERENCES = {
8
+ verbosity: 'normal',
9
+ language: 'auto',
10
+ codeStyle: 'any',
11
+ explanation: 'adaptive',
12
+ outputFormat: 'markdown',
13
+ autoConfirm: false,
14
+ contextStrategy: 'smart'
15
+ };
16
+ class PreferencesManager {
17
+ static preferences = DEFAULT_PREFERENCES;
18
+ static getPreferences() {
19
+ return { ...this.preferences };
20
+ }
21
+ static setPreferences(updates) {
22
+ this.preferences = { ...this.preferences, ...updates };
23
+ this.savePreferences();
24
+ }
25
+ static getPreference(key) {
26
+ return this.preferences[key];
27
+ }
28
+ static savePreferences() {
29
+ try {
30
+ const fs = require('fs');
31
+ const path = require('path');
32
+ const os = require('os');
33
+ const configPath = path.join(os.homedir(), '.yuangs_preferences.json');
34
+ fs.writeFileSync(configPath, JSON.stringify(this.preferences, null, 2), 'utf8');
35
+ }
36
+ catch (error) {
37
+ console.warn('Failed to save preferences:', error);
38
+ }
39
+ }
40
+ static loadPreferences() {
41
+ try {
42
+ const fs = require('fs');
43
+ const path = require('path');
44
+ const os = require('os');
45
+ const configPath = path.join(os.homedir(), '.yuangs_preferences.json');
46
+ if (fs.existsSync(configPath)) {
47
+ const content = fs.readFileSync(configPath, 'utf8');
48
+ this.preferences = { ...DEFAULT_PREFERENCES, ...JSON.parse(content) };
49
+ }
50
+ }
51
+ catch (error) {
52
+ console.warn('Failed to load preferences, using defaults:', error);
53
+ }
54
+ }
55
+ static resetPreferences() {
56
+ this.preferences = { ...DEFAULT_PREFERENCES };
57
+ this.savePreferences();
58
+ }
59
+ }
60
+ exports.PreferencesManager = PreferencesManager;
61
+ function buildPersonalizedPrompt(basePrompt, preferences) {
62
+ const prefs = { ...DEFAULT_PREFERENCES, ...preferences };
63
+ let personalized = basePrompt;
64
+ if (prefs.verbosity === 'concise') {
65
+ personalized += '\n\n【简洁模式】\n- 只提供直接答案\n- 省略详细解释\n- 除非明确要求';
66
+ }
67
+ else if (prefs.verbosity === 'detailed') {
68
+ personalized += '\n\n【详细模式】\n- 提供全面的解释\n- 包含示例和背景\n- 说明技术细节';
69
+ }
70
+ if (prefs.language !== 'auto') {
71
+ personalized += `\n\n【语言设置】\n请使用 ${prefs.language} 回答`;
72
+ }
73
+ if (prefs.explanation === 'beginner') {
74
+ personalized += '\n\n【新手友好】\n- 避免专业术语\n- 逐步解释概念\n- 提供更多示例';
75
+ }
76
+ else if (prefs.explanation === 'technical') {
77
+ personalized += '\n\n【技术模式】\n- 使用标准术语\n- 直接切入技术细节\n- 省略基础概念解释';
78
+ }
79
+ if (prefs.codeStyle === 'functional') {
80
+ personalized += '\n\n【函数式代码风格】\n- 优先使用纯函数\n- 避免副作用\n- 强调不可变性';
81
+ }
82
+ else if (prefs.codeStyle === 'imperative') {
83
+ personalized += '\n\n【命令式代码风格】\n- 优先使用循环和条件\n- 明确的状态变更\n- 过程化思维';
84
+ }
85
+ return personalized;
86
+ }
87
+ function applyOutputFormat(content, format) {
88
+ switch (format) {
89
+ case 'plain':
90
+ return content
91
+ .replace(/#{1,6}\s/g, '')
92
+ .replace(/\*\*/g, '')
93
+ .replace(/`[^`]+`/g, '$1')
94
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
95
+ .trim();
96
+ case 'structured':
97
+ const sections = content.split(/\n#{2,6}\s+/).filter(s => s.trim());
98
+ if (sections.length > 1) {
99
+ return JSON.stringify({
100
+ sections: sections.map(s => ({
101
+ content: s.trim(),
102
+ length: s.length
103
+ }))
104
+ }, null, 2);
105
+ }
106
+ return content;
107
+ case 'markdown':
108
+ default:
109
+ return content;
110
+ }
111
+ }
112
+ function buildContextStrategyPrompt(strategy) {
113
+ switch (strategy) {
114
+ case 'minimal':
115
+ return `
116
+ 【上下文策略:最小化】
117
+ - 只使用明确引用的文件和目录
118
+ - 不进行隐式文件系统扫描
119
+ - 最小化Token使用`;
120
+ case 'full':
121
+ return `
122
+ 【上下文策略:完全包含】
123
+ - 使用所有可用的上下文
124
+ - 不进行Token限制
125
+ - 包含所有相关信息`;
126
+ case 'smart':
127
+ default:
128
+ return `
129
+ 【上下文策略:智能筛选】
130
+ - 优先使用明确引用的文件 (@, #语法)
131
+ - 其次使用高度相关的文件
132
+ - 根据Token预算动态调整`;
133
+ }
134
+ }
135
+ PreferencesManager.loadPreferences();
136
+ //# sourceMappingURL=preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/agent/preferences.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ContextItem {
2
+ path: string;
3
+ content?: string;
4
+ summary?: string;
5
+ }
6
+ export interface RankedContextItem extends ContextItem {
7
+ relevance: number;
8
+ matchReasons: string[];
9
+ }
10
+ export interface RelevanceConfig {
11
+ keywordsWeight: number;
12
+ pathWeight: number;
13
+ extensionWeight: number;
14
+ recencyWeight: number;
15
+ }
16
+ export declare function rankByRelevance(items: ContextItem[], query: string, config?: Partial<RelevanceConfig>): RankedContextItem[];
17
+ export declare function calculateTotalTokens(items: ContextItem[]): number;
18
+ export declare function filterContextByRelevance(items: ContextItem[], query: string, minRelevance?: number, config?: Partial<RelevanceConfig>): RankedContextItem[];
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rankByRelevance = rankByRelevance;
4
+ exports.calculateTotalTokens = calculateTotalTokens;
5
+ exports.filterContextByRelevance = filterContextByRelevance;
6
+ const DEFAULT_CONFIG = {
7
+ keywordsWeight: 0.4,
8
+ pathWeight: 0.3,
9
+ extensionWeight: 0.2,
10
+ recencyWeight: 0.1
11
+ };
12
+ function extractKeywords(query) {
13
+ const cleaned = query
14
+ .toLowerCase()
15
+ .replace(/[^\w\s\u4e00-\u9fa5]/g, '')
16
+ .trim();
17
+ const words = cleaned.split(/\s+/).filter(w => w.length > 1);
18
+ const keywords = new Set();
19
+ for (const word of words) {
20
+ if (word.length > 2) {
21
+ keywords.add(word);
22
+ }
23
+ if (word.length > 4) {
24
+ for (let i = 3; i < word.length; i++) {
25
+ keywords.add(word.substring(0, i));
26
+ }
27
+ }
28
+ }
29
+ return Array.from(keywords);
30
+ }
31
+ function calculateKeywordMatchScore(content, summary, keywords) {
32
+ const textToMatch = (summary || content).toLowerCase();
33
+ let matches = 0;
34
+ let totalMatches = 0;
35
+ for (const keyword of keywords) {
36
+ const regex = new RegExp(keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
37
+ const keywordMatches = textToMatch.match(regex);
38
+ if (keywordMatches) {
39
+ matches += keywordMatches.length;
40
+ }
41
+ totalMatches++;
42
+ }
43
+ return totalMatches > 0 ? matches / (totalMatches * Math.max(keywords.length, 1)) : 0;
44
+ }
45
+ function calculatePathScore(path, keywords) {
46
+ const pathLower = path.toLowerCase();
47
+ let score = 0;
48
+ for (const keyword of keywords) {
49
+ if (pathLower.includes(keyword)) {
50
+ score += 1;
51
+ const parts = path.split(/[/\\]/);
52
+ const fileName = parts[parts.length - 1].toLowerCase();
53
+ if (fileName.includes(keyword)) {
54
+ score += 1;
55
+ }
56
+ }
57
+ }
58
+ const maxScore = Math.max(keywords.length, 1);
59
+ return Math.min(score / maxScore, 1);
60
+ }
61
+ function calculateExtensionScore(path, query) {
62
+ const pathLower = path.toLowerCase();
63
+ const queryLower = query.toLowerCase();
64
+ const ext = pathLower.split('.').pop() || '';
65
+ const queryExts = ['.ts', '.js', '.py', '.go', '.rs', '.java', '.json', '.md'];
66
+ if (!ext)
67
+ return 0;
68
+ if (queryLower.includes(ext)) {
69
+ return 1;
70
+ }
71
+ if (queryExts.some(e => queryLower.includes(e)) && queryExts.includes(`.${ext}`)) {
72
+ return 0.8;
73
+ }
74
+ return 0;
75
+ }
76
+ function calculateRecencyScore(item) {
77
+ return 0.5;
78
+ }
79
+ function rankByRelevance(items, query, config) {
80
+ const finalConfig = { ...DEFAULT_CONFIG, ...config };
81
+ const keywords = extractKeywords(query);
82
+ return items
83
+ .map(item => {
84
+ const keywordScore = calculateKeywordMatchScore(item.content || '', item.summary || '', keywords);
85
+ const pathScore = calculatePathScore(item.path, keywords);
86
+ const extensionScore = calculateExtensionScore(item.path, query);
87
+ const recencyScore = calculateRecencyScore(item);
88
+ const relevance = (keywordScore * finalConfig.keywordsWeight) +
89
+ (pathScore * finalConfig.pathWeight) +
90
+ (extensionScore * finalConfig.extensionWeight) +
91
+ (recencyScore * finalConfig.recencyWeight);
92
+ const matchReasons = [];
93
+ if (keywordScore > 0.5)
94
+ matchReasons.push('Keywords match');
95
+ if (pathScore > 0.5)
96
+ matchReasons.push('Path match');
97
+ if (extensionScore > 0.5)
98
+ matchReasons.push('Relevant extension');
99
+ return {
100
+ ...item,
101
+ relevance: Math.min(relevance, 1),
102
+ matchReasons
103
+ };
104
+ })
105
+ .filter(item => item.relevance > 0.1)
106
+ .sort((a, b) => b.relevance - a.relevance);
107
+ }
108
+ function calculateTotalTokens(items) {
109
+ let total = 0;
110
+ for (const item of items) {
111
+ const text = item.content || item.summary || '';
112
+ total += text.length;
113
+ }
114
+ return Math.ceil(total / 4);
115
+ }
116
+ function filterContextByRelevance(items, query, minRelevance = 0.3, config) {
117
+ const ranked = rankByRelevance(items, query, config);
118
+ return ranked.filter(item => item.relevance >= minRelevance);
119
+ }
120
+ //# sourceMappingURL=relevance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relevance.js","sourceRoot":"","sources":["../../src/agent/relevance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 风险告知生成器
3
+ * 为高风险操作生成详细的风险告知书,增强Human-in-the-loop安全性
4
+ */
5
+ export interface RiskLevel {
6
+ level: 'low' | 'medium' | 'high';
7
+ score: number;
8
+ }
9
+ export interface RiskFactors {
10
+ commandType: string;
11
+ command?: string;
12
+ filePath?: string;
13
+ fileCount?: number;
14
+ isDestructive: boolean;
15
+ modifiesSystem: boolean;
16
+ requiresNetwork: boolean;
17
+ modifiesGit: boolean;
18
+ }
19
+ export interface RiskDisclosure {
20
+ riskLevel: RiskLevel;
21
+ factors: RiskFactors;
22
+ description: string;
23
+ potentialIssues: string[];
24
+ recommendedActions: string[];
25
+ requireConfirmation: boolean;
26
+ checkpoint?: string;
27
+ }
28
+ /**
29
+ * 分析操作风险等级
30
+ */
31
+ export declare function analyzeRiskLevel(factors: RiskFactors): RiskLevel;
32
+ /**
33
+ * 生成风险告知书
34
+ */
35
+ export declare function generateRiskDisclosure(factors: RiskFactors): RiskDisclosure;
36
+ /**
37
+ * 格式化风险告知书为CLI友好的格式
38
+ */
39
+ export declare function formatRiskDisclosureCLI(disclosure: RiskDisclosure): string;
40
+ /**
41
+ * 从解析的thought生成风险因素
42
+ */
43
+ export declare function extractRiskFactorsFromThought(thought: string): RiskFactors;