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.
Files changed (44) hide show
  1. package/dist/agent/AgentRuntime.js +68 -1
  2. package/dist/agent/AgentRuntime.js.map +1 -1
  3. package/dist/agent/contextManager.d.ts +9 -1
  4. package/dist/agent/contextManager.js +16 -1
  5. package/dist/agent/contextManager.js.map +1 -1
  6. package/dist/agent/governance/index.d.ts +3 -0
  7. package/dist/agent/governance/index.js +23 -0
  8. package/dist/agent/governance/index.js.map +1 -0
  9. package/dist/agent/llmAdapter.d.ts +2 -1
  10. package/dist/agent/llmAdapter.js +1 -1
  11. package/dist/agent/llmAdapter.js.map +1 -1
  12. package/dist/agent/types.d.ts +1 -0
  13. package/dist/commands/context/ContextAssembler.d.ts +14 -0
  14. package/dist/commands/context/ContextAssembler.js +141 -0
  15. package/dist/commands/context/ContextAssembler.js.map +1 -0
  16. package/dist/commands/context/ContextStore.d.ts +32 -0
  17. package/dist/commands/context/ContextStore.js +179 -0
  18. package/dist/commands/context/ContextStore.js.map +1 -0
  19. package/dist/commands/context/ContextTypes.d.ts +30 -0
  20. package/dist/commands/context/ContextTypes.js +3 -0
  21. package/dist/commands/context/ContextTypes.js.map +1 -0
  22. package/dist/commands/context/index.d.ts +3 -0
  23. package/dist/commands/context/index.js +8 -0
  24. package/dist/commands/context/index.js.map +1 -0
  25. package/dist/commands/contextStorage.d.ts +2 -3
  26. package/dist/commands/contextStorage.js.map +1 -1
  27. package/dist/commands/handleAIChat.js +65 -34
  28. package/dist/commands/handleAIChat.js.map +1 -1
  29. package/dist/engine/agent/governance/CausalTracker.d.ts +4 -0
  30. package/dist/engine/agent/governance/CausalTracker.js +30 -0
  31. package/dist/engine/agent/governance/CausalTracker.js.map +1 -0
  32. package/dist/engine/agent/governance/ObservationRegistry.d.ts +6 -0
  33. package/dist/engine/agent/governance/ObservationRegistry.js +37 -0
  34. package/dist/engine/agent/governance/ObservationRegistry.js.map +1 -0
  35. package/dist/engine/agent/governance/errors.d.ts +3 -0
  36. package/dist/engine/agent/governance/errors.js +12 -0
  37. package/dist/engine/agent/governance/errors.js.map +1 -0
  38. package/dist/engine/agent/knowledgeGraph/index.d.ts +11 -0
  39. package/dist/engine/agent/knowledgeGraph/index.js +76 -0
  40. package/dist/engine/agent/knowledgeGraph/index.js.map +1 -0
  41. package/dist/engine/agent/knowledgeGraph/types.d.ts +23 -0
  42. package/dist/engine/agent/knowledgeGraph/types.js +3 -0
  43. package/dist/engine/agent/knowledgeGraph/types.js.map +1 -0
  44. 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":"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"}
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;AAC1C,qDAAkD;AAClD,4CAAqD;AAErD,mDAIyB;AAEzB,MAAa,YAAY;IACf,OAAO,CAAiB;IACxB,WAAW,CAAS;IAE5B,YAAY,cAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAA,mBAAU,GAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,SAAiB,EACjB,OAA2B,MAAM,EACjC,OAAiC,EACjC,KAAc;QAEd,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,oBAAoB;YACpB,MAAM,cAAc,GAAG,MAAM,IAAA,mCAAmB,EAAC,SAAS,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxD,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAGjC;gBACf,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YAEJ,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,MAAM,OAAO,GAAG,MAAM,uBAAU,CAAC,KAAK,CACpC,QAAQ,EACR,IAAW,EACX,OAAO,EACP,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;gBACzD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpD,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;YAC5D,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;AAhLD,oCAgLC"}
@@ -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): void;
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;AAG5B,MAAa,cAAc;IACjB,QAAQ,GAAgE,EAAE,CAAC;IAC3E,cAAc,GAAG,EAAE,CAAC;IAE5B,YAAY,cAAkC;QAC5C,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjD,GAAG,GAAG;gBACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,cAAc,EAAE,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAe;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,QAAgB,EAAE,MAAc;QAC5C,MAAM,OAAO,GAAG,QAAQ,QAAQ,eAAe,MAAM,EAAE,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,IAAgD;YACtD,OAAO;SACR,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,WAAW;QACT,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;YACzB,mBAAmB,EAAE,QAAQ;YAC7B,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAlED,wCAkEC"}
1
+ {"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../src/agent/contextManager.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAQ5B,MAAa,cAAc;IACjB,QAAQ,GAA4F,EAAE,CAAC;IACvG,cAAc,GAAG,EAAE,CAAC;IAE5B,YAAY,cAAkC;QAC5C,IAAI,cAAc,EAAE,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjD,GAAG,GAAG;gBACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,cAAc,EAAE,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAe;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,QAAgB,EAAE,MAAc;QAC5C,MAAM,OAAO,GAAG,QAAQ,QAAQ,eAAe,MAAM,EAAE,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CACZ,WAAmB,EACnB,OAAuD,aAAa,EACpE,mBAA4B;QAE5B,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAE5E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB;QACvB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACjD,OAAO;oBACL,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,IAAgD;YACtD,OAAO;SACR,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,WAAW;QACT,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;YACzB,mBAAmB,EAAE,QAAQ;YAC7B,cAAc,EAAE,QAAQ;YACxB,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAvFD,wCAuFC"}
@@ -0,0 +1,3 @@
1
+ export * from './bridge';
2
+ export * from './core';
3
+ export * from './ledger';
@@ -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
  }
@@ -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":";;;;;;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"}
@@ -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":";;;AAIA,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEpE,MAAM,eAAe,GAIhB;IACD;QACI,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,oBAAoB;KACpC;IACD;QACI,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,wCAAwC;QACjD,WAAW,EAAE,eAAe;KAC/B;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,+EAA+E;QACxF,WAAW,EAAE,wBAAwB;KACxC;CACJ,CAAC;AAEF,MAAa,gBAAgB;IACjB,SAAS,GAAG,KAAK,CAAC;IAE1B,QAAQ,CAAC,KAAmB,EAAE,SAAiB;QAC3C,IAAI,KAAK,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAC;QAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC;aACtF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAClF,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtG,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAE,EAAE,CACpC,KAAK;aACA,GAAG,CAAC,CAAC,CAAC,EAAE;YACL,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;gBACjB,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG;gBACjD,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1C,OAAO,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC;QACzC,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,kBAAkB,GAAG,CAAC,KAAoB,EAAE,EAAE,CAChD,KAAK;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3B,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,kBAAkB,GAAG,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,kBAAkB,GAAG;;;EAG/B,kBAAkB,CAAC,YAAY,CAAC;;CAEjC,CAAC;QACM,CAAC;QAED,OAAO;;EAEb,MAAM,CAAC,MAAM,CAAC;;;EAGd,MAAM,CAAC,MAAM,CAAC;;;EAGd,MAAM,CAAC,SAAS,CAAC;EACjB,kBAAkB;;EAElB,SAAS;CACV,CAAC;IACE,CAAC;IAED,eAAe,CAAC,OAAe;QAC3B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,IAAI,MAAM,GAAG,OAAO,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxD,QAAQ,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,OAAO,CAAC,MAAM;iBACxB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,iBAAiB,CAAC,KAAmB,EAAE,KAAa;QAChD,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,KAAK;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;aAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAEjD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3C,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG;gBAAE,MAAM;QAC1D,CAAC;IACL,CAAC;IAEO,iBAAiB,CACrB,IAAiB,EACjB,KAAa,EACb,GAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAC9C,CAAC;QAEF,MAAM,QAAQ,GACV,IAAI,CAAC,OAAO,IAAI,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtD,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU;YACX,GAAG,GAAG,OAAO;gBACb,GAAG,GAAG,QAAQ;gBACd,GAAG,GAAG,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,IAAiB,EAAE,GAAW;QACxC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;QACpC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IAEO,uBAAuB,CAAC,KAAoB,EAAE,GAAW;QAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;gBAAE,SAAS;YAExE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;gBAAE,SAAS;YAErC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE;gBAAE,SAAS;YAErD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;IACL,CAAC;CACJ;AAtJD,4CAsJC"}
@@ -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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"}