yuangs 3.19.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.
- package/dist/agent/AgentRuntime.js +68 -1
- package/dist/agent/AgentRuntime.js.map +1 -1
- package/dist/agent/contextManager.d.ts +9 -1
- package/dist/agent/contextManager.js +16 -1
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/governance/index.d.ts +3 -0
- package/dist/agent/governance/index.js +23 -0
- package/dist/agent/governance/index.js.map +1 -0
- package/dist/agent/llmAdapter.d.ts +2 -1
- package/dist/agent/llmAdapter.js +1 -1
- package/dist/agent/llmAdapter.js.map +1 -1
- package/dist/agent/types.d.ts +1 -0
- package/dist/commands/context/ContextAssembler.d.ts +14 -0
- package/dist/commands/context/ContextAssembler.js +141 -0
- package/dist/commands/context/ContextAssembler.js.map +1 -0
- package/dist/commands/context/ContextStore.d.ts +32 -0
- package/dist/commands/context/ContextStore.js +179 -0
- package/dist/commands/context/ContextStore.js.map +1 -0
- package/dist/commands/context/ContextTypes.d.ts +30 -0
- package/dist/commands/context/ContextTypes.js +3 -0
- package/dist/commands/context/ContextTypes.js.map +1 -0
- package/dist/commands/context/index.d.ts +3 -0
- package/dist/commands/context/index.js +8 -0
- package/dist/commands/context/index.js.map +1 -0
- package/dist/commands/contextStorage.d.ts +2 -3
- package/dist/commands/contextStorage.js.map +1 -1
- package/dist/commands/handleAIChat.js +65 -34
- package/dist/commands/handleAIChat.js.map +1 -1
- package/dist/engine/agent/governance/CausalTracker.d.ts +4 -0
- package/dist/engine/agent/governance/CausalTracker.js +30 -0
- package/dist/engine/agent/governance/CausalTracker.js.map +1 -0
- package/dist/engine/agent/governance/ObservationRegistry.d.ts +6 -0
- package/dist/engine/agent/governance/ObservationRegistry.js +37 -0
- package/dist/engine/agent/governance/ObservationRegistry.js.map +1 -0
- package/dist/engine/agent/governance/errors.d.ts +3 -0
- package/dist/engine/agent/governance/errors.js +12 -0
- package/dist/engine/agent/governance/errors.js.map +1 -0
- package/dist/engine/agent/knowledgeGraph/index.d.ts +11 -0
- package/dist/engine/agent/knowledgeGraph/index.js +76 -0
- package/dist/engine/agent/knowledgeGraph/index.js.map +1 -0
- package/dist/engine/agent/knowledgeGraph/types.d.ts +23 -0
- package/dist/engine/agent/knowledgeGraph/types.js +3 -0
- package/dist/engine/agent/knowledgeGraph/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -49,7 +82,7 @@ class AgentRuntime {
|
|
|
49
82
|
const basePrompt = governance_1.GovernanceService.getPolicyManual();
|
|
50
83
|
// 注入动态上下文
|
|
51
84
|
const enhancedPrompt = (0, dynamicPrompt_1.injectDynamicContext)(basePrompt, dynamicContext);
|
|
52
|
-
const thought = await llmAdapter_1.LLMAdapter.think(messages, mode, onChunk, model, enhancedPrompt);
|
|
85
|
+
const thought = await llmAdapter_1.LLMAdapter.think(messages, mode, onChunk, model, enhancedPrompt, this.context);
|
|
53
86
|
const action = {
|
|
54
87
|
id: (0, crypto_1.randomUUID)(),
|
|
55
88
|
type: thought.type || "answer",
|
|
@@ -70,6 +103,21 @@ class AgentRuntime {
|
|
|
70
103
|
this.context.addMessage("assistant", result.output);
|
|
71
104
|
break;
|
|
72
105
|
}
|
|
106
|
+
// === 强制 ACK 校验(Causal Lock) ===
|
|
107
|
+
const lastObs = this.context.getLastAckableObservation();
|
|
108
|
+
const ackText = thought.parsedPlan?.acknowledged_observation;
|
|
109
|
+
if (lastObs && ackText && ackText !== 'NONE') {
|
|
110
|
+
const actualContent = lastObs.content.trim();
|
|
111
|
+
const ackedContent = ackText.trim();
|
|
112
|
+
if (actualContent !== ackedContent) {
|
|
113
|
+
console.log(chalk_1.default.red(`[CAUSAL BREAK] ❌ ACK mismatch!`));
|
|
114
|
+
console.log(chalk_1.default.red(` Expected: ${actualContent.substring(0, 100)}...`));
|
|
115
|
+
console.log(chalk_1.default.red(` Received: ${ackedContent.substring(0, 100)}...`));
|
|
116
|
+
this.context.addMessage("system", `CAUSAL BREAK: ACK does not match physical Observation. Cannot proceed without acknowledging reality.`);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
console.log(chalk_1.default.green(`[CAUSAL LOCK] ✅ ACK verified`));
|
|
120
|
+
}
|
|
73
121
|
// === 预检 (Pre-flight) ===
|
|
74
122
|
const preCheck = (0, core_1.evaluateProposal)(action, governance_1.GovernanceService.getRules(), governance_1.GovernanceService.getLedgerSnapshot());
|
|
75
123
|
if (preCheck.effect === "deny") {
|
|
@@ -84,6 +132,25 @@ class AgentRuntime {
|
|
|
84
132
|
this.context.addMessage("system", `Rejected by Governance: ${decision.reason}`);
|
|
85
133
|
continue;
|
|
86
134
|
}
|
|
135
|
+
// === 记录因果边到 KG ===
|
|
136
|
+
if (lastObs && lastObs.metadata?.obsId && ackText && ackText !== 'NONE') {
|
|
137
|
+
try {
|
|
138
|
+
const { recordEdge } = await Promise.resolve().then(() => __importStar(require('../engine/agent/knowledgeGraph')));
|
|
139
|
+
recordEdge({
|
|
140
|
+
from: lastObs.metadata.obsId,
|
|
141
|
+
to: action.id,
|
|
142
|
+
type: 'ACKNOWLEDGED_BY',
|
|
143
|
+
metadata: {
|
|
144
|
+
verified: true,
|
|
145
|
+
timestamp: Date.now()
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
console.log(chalk_1.default.gray(`[KG] ⚓ Causal edge recorded`));
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.warn(chalk_1.default.yellow(`[KG] Warning: Failed to record causal edge: ${error.message}`));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
87
154
|
// === 执行 ===
|
|
88
155
|
console.log(chalk_1.default.yellow(`[EXECUTING] ⚙️ ${action.type}...`));
|
|
89
156
|
const result = await executor_1.ToolExecutor.execute(action);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentRuntime.js","sourceRoot":"","sources":["../../src/agent/AgentRuntime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentRuntime.js","sourceRoot":"","sources":["../../src/agent/AgentRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { GovernanceContext } from './state';
|
|
2
|
+
export interface MessageMetadata {
|
|
3
|
+
kind?: string;
|
|
4
|
+
obsId?: string;
|
|
5
|
+
}
|
|
2
6
|
export declare class ContextManager {
|
|
3
7
|
private messages;
|
|
4
8
|
private maxHistorySize;
|
|
5
9
|
constructor(initialContext?: GovernanceContext);
|
|
6
10
|
addMessage(role: string, content: string): void;
|
|
7
11
|
addToolResult(toolName: string, result: string): void;
|
|
8
|
-
addObservation(observation: string):
|
|
12
|
+
addObservation(observation: string, kind?: 'tool_result' | 'system_note' | 'manual_input', originatingActionId?: string): string;
|
|
13
|
+
getLastAckableObservation(): {
|
|
14
|
+
content: string;
|
|
15
|
+
metadata?: MessageMetadata;
|
|
16
|
+
} | null;
|
|
9
17
|
getMessages(): Array<{
|
|
10
18
|
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
11
19
|
content: string;
|
|
@@ -33,8 +33,23 @@ class ContextManager {
|
|
|
33
33
|
const content = `Tool ${toolName} returned:\n${result}`;
|
|
34
34
|
this.addMessage('tool', content);
|
|
35
35
|
}
|
|
36
|
-
addObservation(observation) {
|
|
36
|
+
addObservation(observation, kind = 'system_note', originatingActionId) {
|
|
37
|
+
const obsId = `obs_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`;
|
|
37
38
|
this.addMessage('system', observation);
|
|
39
|
+
this.messages[this.messages.length - 1].metadata = { kind, obsId };
|
|
40
|
+
return obsId;
|
|
41
|
+
}
|
|
42
|
+
getLastAckableObservation() {
|
|
43
|
+
for (let i = this.messages.length - 1; i >= 0; i--) {
|
|
44
|
+
const msg = this.messages[i];
|
|
45
|
+
if (msg.role === 'system' && msg.metadata?.obsId) {
|
|
46
|
+
return {
|
|
47
|
+
content: msg.content,
|
|
48
|
+
metadata: msg.metadata
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
38
53
|
}
|
|
39
54
|
getMessages() {
|
|
40
55
|
return this.messages.map(({ role, content }) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../src/agent/contextManager.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;
|
|
1
|
+
{"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../src/agent/contextManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,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
|
}
|
package/dist/agent/llmAdapter.js
CHANGED
|
@@ -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":";;;;;;AACA,+BAA+B;AAG/B,yCAA6C;AAC7C,kDAA0B;
|
|
1
|
+
{"version":3,"file":"llmAdapter.js","sourceRoot":"","sources":["../../src/agent/llmAdapter.ts"],"names":[],"mappings":";;;;;;AACA,+BAA+B;AAG/B,yCAA6C;AAC7C,kDAA0B;AAG1B,MAAa,UAAU;IACrB,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,QAA4B,EAC5B,OAA4C,MAAM,EAClD,OAAiC,EACjC,KAAc,EACd,kBAA2B,EAC3B,cAA+B;QAE/B,qDAAqD;QACrD,IAAI,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDZ,CAAC;QAEJ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAClD,QAAQ,IAAI;;;gCAGc,CAAC;QAC7B,CAAC;QAED,MAAM,MAAM,GAAgB;YAC1B,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,2BAA2B,kBAAkB,EAAE,CAAC,CAAC,CAAC,QAAQ;YAClG,QAAQ;SACT,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,IAAI,MAAM,CAAC,YAAY,IAAI,WAAW,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,IAAA,YAAM,EAAC;YAC1B,MAAM;YACN,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,CAAC,CAAC,OAAO;YACjB,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAW;QAC7B,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEpF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzD,oBAAoB;gBACpB,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAElE,oCAAoC;gBACpC,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC/D,OAAO;wBACL,GAAG;wBACH,UAAU,EAAE,MAAM;wBAClB,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE;4BACP,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;yBACrE;wBACD,SAAS,EAAE,cAAc;qBAC1B,CAAC;gBACJ,CAAC;gBAED,yCAAyC;gBACzC,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;gBACtC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI;wBAAE,YAAY,GAAG,WAAW,CAAC;yBAC3D,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG;wBAAE,YAAY,GAAG,WAAW,CAAC;yBAC7D,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK;wBAAE,YAAY,GAAG,WAAW,CAAC;;wBAC5D,YAAY,GAAG,QAAQ,CAAC;gBAC/B,CAAC;gBAED,OAAO;oBACL,GAAG;oBACH,UAAU,EAAE,MAAM;oBAClB,MAAM,EAAE,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;oBAC5D,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;wBAChD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE;wBACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE;wBAC3C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;wBACvC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;wBAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;wBACtC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;qBAChD;oBACD,SAAS,EAAE,cAAc,CAAC,gBAAgB;iBAC3C,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB;QACvB,CAAC;QAED,OAAO;YACL,GAAG;YACH,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YACzB,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF;AAvJD,gCAuJC"}
|
package/dist/agent/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AIRequestMessage } from '../core/validation';
|
|
2
2
|
export type AgentMode = 'chat' | 'command' | 'command+exec';
|
|
3
|
+
export type ObservationKind = 'tool_result' | 'system_note' | 'manual_input' | 'error' | 'none';
|
|
3
4
|
export interface AgentInput {
|
|
4
5
|
rawInput: string;
|
|
5
6
|
stdin?: string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ContextStore } from './ContextStore';
|
|
2
|
+
import { RedactionFinding } from './ContextTypes';
|
|
3
|
+
export declare class ContextAssembler {
|
|
4
|
+
private maxTokens;
|
|
5
|
+
assemble(store: ContextStore, userInput: string): string;
|
|
6
|
+
sanitizeContent(content: string): {
|
|
7
|
+
sanitized: string;
|
|
8
|
+
findings: RedactionFinding[];
|
|
9
|
+
};
|
|
10
|
+
optimizeForTokens(store: ContextStore, ratio: number): void;
|
|
11
|
+
private computeImportance;
|
|
12
|
+
private decay;
|
|
13
|
+
private promoteToMemoryIfNeeded;
|
|
14
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextAssembler = void 0;
|
|
4
|
+
const estimateTokens = (text) => Math.ceil(text.length / 4);
|
|
5
|
+
const REDACTION_RULES = [
|
|
6
|
+
{
|
|
7
|
+
name: 'OpenAI Key',
|
|
8
|
+
pattern: /sk-[a-zA-Z0-9]{20,}/g,
|
|
9
|
+
replacement: '[REDACTED_API_KEY]'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'Password',
|
|
13
|
+
pattern: /(password|passwd|secret)\s*[:=]\s*.+/gi,
|
|
14
|
+
replacement: '$1=[REDACTED]'
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'Private Key Block',
|
|
18
|
+
pattern: /-----BEGIN [\s\S]*?PRIVATE KEY-----[\s\S]*?-----END [\s\S]*?PRIVATE KEY-----/g,
|
|
19
|
+
replacement: '[REDACTED_PRIVATE_KEY]'
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
class ContextAssembler {
|
|
23
|
+
maxTokens = 32000;
|
|
24
|
+
assemble(store, userInput) {
|
|
25
|
+
if (store.isEmpty())
|
|
26
|
+
return userInput;
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
const items = store.all();
|
|
29
|
+
for (const item of items) {
|
|
30
|
+
this.decay(item, now);
|
|
31
|
+
this.computeImportance(item, userInput, now);
|
|
32
|
+
}
|
|
33
|
+
this.promoteToMemoryIfNeeded(items, now);
|
|
34
|
+
const memory = items.filter(i => i.status === 'memory');
|
|
35
|
+
const active = items
|
|
36
|
+
.filter(i => i.importance > 0.6 && i.status !== 'memory' && i.source !== 'antipattern')
|
|
37
|
+
.sort((a, b) => b.importance - a.importance)
|
|
38
|
+
.slice(0, 6);
|
|
39
|
+
const reference = items.filter(i => !active.includes(i) && i.status !== 'memory' && i.source !== 'antipattern');
|
|
40
|
+
const antiPatterns = items.filter(i => i.status === 'active' && i.source === 'antipattern').slice(-3);
|
|
41
|
+
const render = (items) => items
|
|
42
|
+
.map(i => {
|
|
43
|
+
const title = i.alias
|
|
44
|
+
? `[Context] ${i.source}: ${i.alias} (${i.path})`
|
|
45
|
+
: `[Context] ${i.source}: ${i.path}`;
|
|
46
|
+
const body = i.summary ?? i.content ?? '';
|
|
47
|
+
return `${title}\n---\n${body}\n---`;
|
|
48
|
+
})
|
|
49
|
+
.join('\n\n');
|
|
50
|
+
const renderAntiPatterns = (items) => items
|
|
51
|
+
.map(i => `⚠️ ${i.content}`)
|
|
52
|
+
.join('\n\n');
|
|
53
|
+
let antiPatternSection = '';
|
|
54
|
+
if (antiPatterns.length > 0) {
|
|
55
|
+
antiPatternSection = `
|
|
56
|
+
# Anti-Pattern Warnings
|
|
57
|
+
以下模式曾导致执行失败,请避免:
|
|
58
|
+
${renderAntiPatterns(antiPatterns)}
|
|
59
|
+
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
return `
|
|
63
|
+
# System Memory
|
|
64
|
+
${render(memory)}
|
|
65
|
+
|
|
66
|
+
# Active Context
|
|
67
|
+
${render(active)}
|
|
68
|
+
|
|
69
|
+
# Reference Context
|
|
70
|
+
${render(reference)}
|
|
71
|
+
${antiPatternSection}
|
|
72
|
+
用户问题:
|
|
73
|
+
${userInput}
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
sanitizeContent(content) {
|
|
77
|
+
const findings = [];
|
|
78
|
+
let result = content;
|
|
79
|
+
for (const rule of REDACTION_RULES) {
|
|
80
|
+
const matches = result.match(rule.pattern);
|
|
81
|
+
if (matches) {
|
|
82
|
+
result = result.replace(rule.pattern, rule.replacement);
|
|
83
|
+
findings.push({
|
|
84
|
+
rule: rule.name,
|
|
85
|
+
count: matches.length
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return { sanitized: result, findings };
|
|
90
|
+
}
|
|
91
|
+
optimizeForTokens(store, ratio) {
|
|
92
|
+
if (ratio < 0.7)
|
|
93
|
+
return;
|
|
94
|
+
const items = store.all();
|
|
95
|
+
const victims = items
|
|
96
|
+
.filter(i => i.content && !i.pinned && i.status !== 'memory')
|
|
97
|
+
.sort((a, b) => a.importance - b.importance);
|
|
98
|
+
for (const item of victims) {
|
|
99
|
+
item.summary = item.summary ?? item.content.slice(0, 500) + '...';
|
|
100
|
+
item.content = undefined;
|
|
101
|
+
item.tokens = estimateTokens(item.summary);
|
|
102
|
+
if (store.totalTokens() / this.maxTokens < 0.6)
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
computeImportance(item, query, now) {
|
|
107
|
+
const recency = Math.exp(-(now - item.lastUsedAt) / (1000 * 60 * 30));
|
|
108
|
+
const semantic = item.content && query
|
|
109
|
+
? item.content.toLowerCase().includes(query.toLowerCase())
|
|
110
|
+
? 1
|
|
111
|
+
: 0
|
|
112
|
+
: 0;
|
|
113
|
+
const pinned = item.pinned ? 1 : 0;
|
|
114
|
+
item.importance =
|
|
115
|
+
0.5 * recency +
|
|
116
|
+
0.3 * semantic +
|
|
117
|
+
0.2 * pinned;
|
|
118
|
+
}
|
|
119
|
+
decay(item, now) {
|
|
120
|
+
if (item.pinned)
|
|
121
|
+
return;
|
|
122
|
+
const last = item.lastUsedAt ?? now;
|
|
123
|
+
const hours = (now - last) / 36e5;
|
|
124
|
+
const rate = item.decayRate ?? 0.95;
|
|
125
|
+
item.importance = (item.importance ?? 0.5) * Math.pow(rate, hours);
|
|
126
|
+
}
|
|
127
|
+
promoteToMemoryIfNeeded(items, now) {
|
|
128
|
+
for (const item of items) {
|
|
129
|
+
if (item.source === 'memory' || item.source === 'antipattern')
|
|
130
|
+
continue;
|
|
131
|
+
if (item.importance < 0.85)
|
|
132
|
+
continue;
|
|
133
|
+
if (now - item.lastUsedAt > 1000 * 60 * 10)
|
|
134
|
+
continue;
|
|
135
|
+
item.status = 'memory';
|
|
136
|
+
item.pinned = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.ContextAssembler = ContextAssembler;
|
|
141
|
+
//# sourceMappingURL=ContextAssembler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextAssembler.js","sourceRoot":"","sources":["../../../src/commands/context/ContextAssembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ContextItem, ContextStatus, DriftReport } from './ContextTypes';
|
|
2
|
+
export declare class ContextStore {
|
|
3
|
+
private items;
|
|
4
|
+
private maxTokens;
|
|
5
|
+
add(item: ContextItem): void;
|
|
6
|
+
update(id: string, patch: Partial<ContextItem>): void;
|
|
7
|
+
remove(id: string): void;
|
|
8
|
+
get(id: string): ContextItem | undefined;
|
|
9
|
+
list(status?: ContextStatus): {
|
|
10
|
+
index: number;
|
|
11
|
+
source: import("./ContextTypes").ContextSource;
|
|
12
|
+
path: string;
|
|
13
|
+
alias: string | undefined;
|
|
14
|
+
tokens: number;
|
|
15
|
+
importance: string;
|
|
16
|
+
pinned: string;
|
|
17
|
+
ageMin: number;
|
|
18
|
+
summary: string | undefined;
|
|
19
|
+
status: ContextStatus;
|
|
20
|
+
}[];
|
|
21
|
+
all(): ContextItem[];
|
|
22
|
+
clear(): void;
|
|
23
|
+
isEmpty(): boolean;
|
|
24
|
+
totalTokens(): number;
|
|
25
|
+
enforceTTL(now?: number): void;
|
|
26
|
+
gc(): void;
|
|
27
|
+
detectDrift(): DriftReport[];
|
|
28
|
+
markAsDrifted(id: string): void;
|
|
29
|
+
refreshItem(id: string): void;
|
|
30
|
+
export(): ContextItem[];
|
|
31
|
+
import(items: any[]): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ContextStore = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
+
class ContextStore {
|
|
10
|
+
items = new Map();
|
|
11
|
+
maxTokens = 32000;
|
|
12
|
+
add(item) {
|
|
13
|
+
this.items.set(item.id, item);
|
|
14
|
+
}
|
|
15
|
+
update(id, patch) {
|
|
16
|
+
const item = this.items.get(id);
|
|
17
|
+
if (!item)
|
|
18
|
+
return;
|
|
19
|
+
Object.assign(item, patch);
|
|
20
|
+
}
|
|
21
|
+
remove(id) {
|
|
22
|
+
this.items.delete(id);
|
|
23
|
+
}
|
|
24
|
+
get(id) {
|
|
25
|
+
return this.items.get(id);
|
|
26
|
+
}
|
|
27
|
+
list(status) {
|
|
28
|
+
return [...this.items.values()]
|
|
29
|
+
.filter(i => !status || i.status === status)
|
|
30
|
+
.map((item, i) => ({
|
|
31
|
+
index: i + 1,
|
|
32
|
+
source: item.source,
|
|
33
|
+
path: item.path,
|
|
34
|
+
alias: item.alias,
|
|
35
|
+
tokens: item.tokens,
|
|
36
|
+
importance: item.importance.toFixed(2),
|
|
37
|
+
pinned: item.pinned ? '📌' : '',
|
|
38
|
+
ageMin: Math.floor((Date.now() - item.lastUsedAt) / 60000),
|
|
39
|
+
summary: item.summary,
|
|
40
|
+
status: item.status
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
all() {
|
|
44
|
+
return [...this.items.values()];
|
|
45
|
+
}
|
|
46
|
+
clear() {
|
|
47
|
+
this.items.clear();
|
|
48
|
+
}
|
|
49
|
+
isEmpty() {
|
|
50
|
+
return this.items.size === 0;
|
|
51
|
+
}
|
|
52
|
+
totalTokens() {
|
|
53
|
+
return [...this.items.values()].reduce((s, i) => s + i.tokens, 0);
|
|
54
|
+
}
|
|
55
|
+
enforceTTL(now = Date.now()) {
|
|
56
|
+
for (const item of this.items.values()) {
|
|
57
|
+
if (item.pinned || !item.ttlMs)
|
|
58
|
+
continue;
|
|
59
|
+
if (now - item.lastUsedAt > item.ttlMs) {
|
|
60
|
+
item.status = 'expired';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
gc() {
|
|
65
|
+
for (const [id, item] of this.items) {
|
|
66
|
+
if (item.status === 'expired') {
|
|
67
|
+
this.items.delete(id);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
detectDrift() {
|
|
72
|
+
const reports = [];
|
|
73
|
+
for (const item of this.items.values()) {
|
|
74
|
+
if (item.source !== 'file')
|
|
75
|
+
continue;
|
|
76
|
+
if (!fs_1.default.existsSync(item.path))
|
|
77
|
+
continue;
|
|
78
|
+
try {
|
|
79
|
+
const currentContent = fs_1.default.readFileSync(item.path, 'utf-8');
|
|
80
|
+
const currentHash = sha256(currentContent);
|
|
81
|
+
if (currentHash !== item.hash) {
|
|
82
|
+
reports.push({
|
|
83
|
+
id: item.id,
|
|
84
|
+
path: item.path,
|
|
85
|
+
reason: 'hash_changed'
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return reports;
|
|
94
|
+
}
|
|
95
|
+
markAsDrifted(id) {
|
|
96
|
+
const item = this.items.get(id);
|
|
97
|
+
if (item) {
|
|
98
|
+
item.status = 'stale';
|
|
99
|
+
item.drifted = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
refreshItem(id) {
|
|
103
|
+
const item = this.items.get(id);
|
|
104
|
+
if (!item || item.source !== 'file')
|
|
105
|
+
return;
|
|
106
|
+
if (!fs_1.default.existsSync(item.path))
|
|
107
|
+
return;
|
|
108
|
+
const raw = fs_1.default.readFileSync(item.path, 'utf-8');
|
|
109
|
+
const content = redact(raw).redacted;
|
|
110
|
+
const hash = sha256(content);
|
|
111
|
+
item.content = content;
|
|
112
|
+
item.hash = hash;
|
|
113
|
+
item.status = 'active';
|
|
114
|
+
item.drifted = false;
|
|
115
|
+
item.lastUsedAt = Date.now();
|
|
116
|
+
}
|
|
117
|
+
export() {
|
|
118
|
+
return this.all();
|
|
119
|
+
}
|
|
120
|
+
import(items) {
|
|
121
|
+
this.items.clear();
|
|
122
|
+
for (const item of items) {
|
|
123
|
+
const itemId = item.id || `${item.source || item.type}:${item.path}`;
|
|
124
|
+
const normalized = {
|
|
125
|
+
id: itemId,
|
|
126
|
+
source: (item.source || item.type),
|
|
127
|
+
path: item.path,
|
|
128
|
+
alias: item.alias,
|
|
129
|
+
content: item.content,
|
|
130
|
+
summary: item.summary,
|
|
131
|
+
tokens: item.tokens,
|
|
132
|
+
importance: item.importance ?? 0.5,
|
|
133
|
+
lastUsedAt: item.lastUsedAt ?? Date.now(),
|
|
134
|
+
addedAt: item.addedAt ?? Date.now(),
|
|
135
|
+
status: item.status ?? 'active',
|
|
136
|
+
pinned: item.pinned,
|
|
137
|
+
tags: item.tags,
|
|
138
|
+
decayRate: item.decayRate,
|
|
139
|
+
hash: item.hash,
|
|
140
|
+
ttlMs: item.ttlMs,
|
|
141
|
+
drifted: item.drifted
|
|
142
|
+
};
|
|
143
|
+
this.items.set(itemId, normalized);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.ContextStore = ContextStore;
|
|
148
|
+
function sha256(input) {
|
|
149
|
+
return crypto_1.default.createHash('sha256').update(input).digest('hex');
|
|
150
|
+
}
|
|
151
|
+
const REDACTION_RULES = [
|
|
152
|
+
{
|
|
153
|
+
name: 'OpenAI Key',
|
|
154
|
+
pattern: /sk-[a-zA-Z0-9]{20,}/g,
|
|
155
|
+
replacement: '[REDACTED_API_KEY]'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'Password',
|
|
159
|
+
pattern: /(password|passwd|secret)\s*[:=]\s*.+/gi,
|
|
160
|
+
replacement: '$1=[REDACTED]'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'Private Key Block',
|
|
164
|
+
pattern: /-----BEGIN [\s\S]*?PRIVATE KEY-----[\s\S]*?-----END [\s\S]*?PRIVATE KEY-----/g,
|
|
165
|
+
replacement: '[REDACTED_PRIVATE_KEY]'
|
|
166
|
+
}
|
|
167
|
+
];
|
|
168
|
+
function redact(text) {
|
|
169
|
+
let result = text;
|
|
170
|
+
const applied = [];
|
|
171
|
+
for (const rule of REDACTION_RULES) {
|
|
172
|
+
if (rule.pattern.test(result)) {
|
|
173
|
+
result = result.replace(rule.pattern, rule.replacement);
|
|
174
|
+
applied.push(rule.name);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return { redacted: result, applied };
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=ContextStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextStore.js","sourceRoot":"","sources":["../../../src/commands/context/ContextStore.ts"],"names":[],"mappings":"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"}
|