yuangs 2.39.0 → 2.40.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 (81) hide show
  1. package/dist/agent/AgentRuntime.d.ts +0 -1
  2. package/dist/agent/AgentRuntime.js +32 -58
  3. package/dist/agent/AgentRuntime.js.map +1 -0
  4. package/dist/agent/governance/bridge.d.ts +3 -6
  5. package/dist/agent/governance/bridge.js +21 -28
  6. package/dist/agent/governance/bridge.js.map +1 -0
  7. package/dist/agent/governance/core.d.ts +0 -5
  8. package/dist/agent/governance/core.js +4 -12
  9. package/dist/agent/governance/core.js.map +1 -0
  10. package/dist/agent/governance/ledger.d.ts +1 -0
  11. package/dist/agent/governance/ledger.js +9 -4
  12. package/dist/agent/governance/ledger.js.map +1 -0
  13. package/dist/agent/governance/sandbox/core.as.js.map +1 -0
  14. package/dist/agent/governance.d.ts +11 -8
  15. package/dist/agent/governance.js +48 -135
  16. package/dist/agent/governance.js.map +1 -1
  17. package/dist/agent/index.d.ts +2 -6
  18. package/dist/agent/index.js +4 -10
  19. package/dist/agent/index.js.map +1 -1
  20. package/dist/agent/llmAdapter.d.ts +1 -1
  21. package/dist/agent/llmAdapter.js +4 -5
  22. package/dist/agent/llmAdapter.js.map +1 -1
  23. package/dist/agent/skills.d.ts +2 -4
  24. package/dist/agent/skills.js.map +1 -1
  25. package/dist/agent/types.d.ts +1 -2
  26. package/dist/cli.js +10 -9
  27. package/dist/cli.js.map +1 -1
  28. package/dist/legacy/governance/GovernanceEngine.d.ts +20 -0
  29. package/dist/legacy/governance/GovernanceEngine.js +95 -0
  30. package/dist/legacy/governance/GovernanceEngine.js.map +1 -0
  31. package/dist/legacy/governance/GovernedAction.d.ts +107 -0
  32. package/dist/legacy/governance/GovernedAction.js +9 -0
  33. package/dist/legacy/governance/GovernedAction.js.map +1 -0
  34. package/dist/legacy/governance/actions/CodeChangeAction.d.ts +28 -0
  35. package/dist/legacy/governance/actions/CodeChangeAction.js +139 -0
  36. package/dist/legacy/governance/actions/CodeChangeAction.js.map +1 -0
  37. package/dist/legacy/governance/capability/token.d.ts +45 -0
  38. package/dist/legacy/governance/capability/token.js +103 -0
  39. package/dist/legacy/governance/capability/token.js.map +1 -0
  40. package/dist/legacy/governance/commands/diffEdit.d.ts +2 -0
  41. package/dist/legacy/governance/commands/diffEdit.js +245 -0
  42. package/dist/legacy/governance/commands/diffEdit.js.map +1 -0
  43. package/dist/legacy/governance/execution/sandbox.d.ts +12 -0
  44. package/dist/legacy/governance/execution/sandbox.js +76 -0
  45. package/dist/legacy/governance/execution/sandbox.js.map +1 -0
  46. package/dist/legacy/governance/fsm/stateMachine.d.ts +40 -0
  47. package/dist/legacy/governance/fsm/stateMachine.js +93 -0
  48. package/dist/legacy/governance/fsm/stateMachine.js.map +1 -0
  49. package/dist/legacy/governance/index.d.ts +9 -0
  50. package/dist/legacy/governance/index.js +26 -0
  51. package/dist/legacy/governance/index.js.map +1 -0
  52. package/dist/legacy/governance/review/diffParser.d.ts +12 -0
  53. package/dist/legacy/governance/review/diffParser.js +61 -0
  54. package/dist/legacy/governance/review/diffParser.js.map +1 -0
  55. package/dist/legacy/governance/review/render.d.ts +5 -0
  56. package/dist/legacy/governance/review/render.js +58 -0
  57. package/dist/legacy/governance/review/render.js.map +1 -0
  58. package/dist/legacy/governance/storage/store.d.ts +16 -0
  59. package/dist/legacy/governance/storage/store.js +110 -0
  60. package/dist/legacy/governance/storage/store.js.map +1 -0
  61. package/package.json +7 -5
  62. package/dist/agent/AgentPipeline.js.map +0 -1
  63. package/dist/agent/fsm.js.map +0 -1
  64. package/dist/agent/intent.js.map +0 -1
  65. package/dist/agent/interpret.js.map +0 -1
  66. package/dist/agent/loop.js.map +0 -1
  67. package/dist/agent/plan.js.map +0 -1
  68. package/dist/agent/planExecutor.js.map +0 -1
  69. package/dist/agent/record.js.map +0 -1
  70. package/dist/agent/replay.js.map +0 -1
  71. package/dist/governance/GovernanceEngine.js.map +0 -1
  72. package/dist/governance/GovernedAction.js.map +0 -1
  73. package/dist/governance/actions/CodeChangeAction.js.map +0 -1
  74. package/dist/governance/capability/token.js.map +0 -1
  75. package/dist/governance/commands/diffEdit.js.map +0 -1
  76. package/dist/governance/execution/sandbox.js.map +0 -1
  77. package/dist/governance/fsm/stateMachine.js.map +0 -1
  78. package/dist/governance/index.js.map +0 -1
  79. package/dist/governance/review/diffParser.js.map +0 -1
  80. package/dist/governance/review/render.js.map +0 -1
  81. package/dist/governance/storage/store.js.map +0 -1
@@ -3,5 +3,4 @@ export declare class AgentRuntime {
3
3
  private executionId;
4
4
  constructor(initialContext: any);
5
5
  run(userInput: string, mode?: 'chat' | 'command'): Promise<void>;
6
- private think;
7
6
  }
@@ -5,15 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AgentRuntime = void 0;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
- const ora_1 = __importDefault(require("ora"));
9
8
  const crypto_1 = require("crypto");
10
9
  const llmAdapter_1 = require("./llmAdapter");
11
10
  const governance_1 = require("./governance");
12
11
  const executor_1 = require("./executor");
13
12
  const contextManager_1 = require("./contextManager");
14
- const renderer_1 = require("../utils/renderer");
15
- const skills_1 = require("./skills");
16
- const capabilitySystem_1 = require("../core/capabilitySystem");
17
13
  const core_1 = require("./governance/core");
18
14
  class AgentRuntime {
19
15
  context;
@@ -25,79 +21,57 @@ class AgentRuntime {
25
21
  async run(userInput, mode = 'chat') {
26
22
  let turnCount = 0;
27
23
  const maxTurns = 10;
28
- const rejectionHistory = new Set(); // 记录被拒提案,防止死循环
24
+ console.log(chalk_1.default.cyan(`\n🚀 Agent Runtime v2.0 Starting (Execution ID: ${this.executionId})`));
25
+ this.context.addMessage('user', userInput);
29
26
  while (turnCount < maxTurns) {
30
27
  console.log(chalk_1.default.blue(`\n--- Turn ${++turnCount} ---`));
31
- // 1. 理性建议 (Think) & 模型自动匹配
32
- // 调用你原有的 capabilitySystem 选模型,确保“不降级”
33
- const requirement = { required: [mode === 'command' ? 'code' : 'reasoning'], preferred: [] };
34
- const match = capabilitySystem_1.capabilitySystem.matchCapability(requirement);
35
- const model = match.selected?.name || 'Assistant';
36
- // 设置流式渲染器 (保留你的流式输出体验)
37
- const spinner = (0, ora_1.default)(chalk_1.default.cyan('AI Thinking...')).start();
38
- const renderer = new renderer_1.StreamMarkdownRenderer(chalk_1.default.bold.blue('🤖 AI: '), spinner);
39
- const thought = await this.think(this.context.getMessages(), model, (chunk) => renderer.onChunk(chunk) // 实时输出到终端
40
- );
41
- renderer.finish();
28
+ const model = 'Assistant';
29
+ // 处理类型不兼容:将 tool role 映射为 system
30
+ const messages = this.context.getMessages().map(msg => ({
31
+ role: (msg.role === 'tool' ? 'system' : msg.role),
32
+ content: msg.content
33
+ }));
34
+ const thought = await llmAdapter_1.LLMAdapter.think(messages, mode, undefined, governance_1.GovernanceService.getPolicyManual());
42
35
  if (thought.isDone) {
43
- console.log(chalk_1.default.green('\n任务完成。'));
36
+ console.log(chalk_1.default.green('\n✅ Goal satisfied.'));
44
37
  break;
45
38
  }
46
- // 2. 治理评审 (Adjudicate)
47
39
  const action = {
48
40
  id: (0, crypto_1.randomUUID)(),
49
- type: thought.type,
50
- payload: thought.payload,
51
- riskLevel: governance_1.GovernanceService.evaluateRisk(thought),
41
+ type: thought.type || 'answer',
42
+ payload: thought.payload || { text: thought.raw },
43
+ riskLevel: 'low',
52
44
  reasoning: thought.reasoning || ''
53
45
  };
54
- // === [Patch 3] 预检 (Pre-flight Check) ===
55
- const actionFingerprint = JSON.stringify(action.payload);
56
- if (rejectionHistory.has(actionFingerprint)) {
57
- console.log(chalk_1.default.red(`[ANTI-LOOP] 拦截重复提案`));
58
- this.context.addMessage('system', `ERROR: You are repeating a previously denied action. DO NOT try this again. Find a NEW way.`);
59
- continue;
60
- }
46
+ // === 预检 (Pre-flight) ===
61
47
  const preCheck = (0, core_1.evaluateProposal)(action, governance_1.GovernanceService.getRules(), governance_1.GovernanceService.getLedgerSnapshot());
62
48
  if (preCheck.effect === 'deny') {
63
- console.log(chalk_1.default.red(`[PRE-FLIGHT] 拦截违规提案: ${preCheck.reason}`));
64
- rejectionHistory.add(actionFingerprint);
65
- this.context.addMessage('system', `POLICY DENIED: ${preCheck.reason}. Please try a different approach.`);
66
- continue; // 直接让 AI 重新思考,不惊动用户
49
+ console.log(chalk_1.default.red(`[PRE-FLIGHT] 🛡️ Policy Blocked: ${preCheck.reason}`));
50
+ this.context.addMessage('system', `POLICY DENIED: ${preCheck.reason}. Find a different way.`);
51
+ continue;
67
52
  }
53
+ // === 正式治理 (WASM + 人工/自动) ===
68
54
  const decision = await governance_1.GovernanceService.adjudicate(action);
69
55
  if (decision.status === 'rejected') {
70
- this.context.addMessage('system', `User rejected action: ${decision.reason}`);
56
+ console.log(chalk_1.default.red(`[GOVERNANCE] Rejected: ${decision.reason}`));
57
+ this.context.addMessage('system', `Rejected by Governance: ${decision.reason}`);
71
58
  continue;
72
59
  }
73
- // 3. 能力执行 (Execute)
74
- const finalAction = decision.status === 'modified' ? decision.modifiedAction : action;
75
- const result = await executor_1.ToolExecutor.execute(finalAction);
76
- // 4. 技能学习 (Learn) - 成功则自动入库
60
+ // === 执行 ===
61
+ console.log(chalk_1.default.yellow(`[EXECUTING] ⚙️ ${action.type}...`));
62
+ const result = await executor_1.ToolExecutor.execute(action);
77
63
  if (result.success) {
78
- // 构造 Record 传给原有的技能系统
79
- (0, skills_1.learnSkillFromRecord)({
80
- id: this.executionId,
81
- llmResult: { plan: { goal: action.reasoning } },
82
- input: { rawInput: userInput },
83
- mode: 'command+exec'
84
- }, true);
64
+ this.context.addToolResult(action.type, result.output);
65
+ console.log(chalk_1.default.green(`[SUCCESS] Result: ${result.output.substring(0, 50)}...`));
66
+ }
67
+ else {
68
+ this.context.addToolResult(action.type, `Error: ${result.error}`);
69
+ console.log(chalk_1.default.red(`[ERROR] ${result.error}`));
85
70
  }
86
- // 5. 观察反馈 (Observe)
87
- const output = result.success ? (result.output || '').substring(0, 2000) : result.error;
88
- this.context.addToolResult(finalAction.type, output || '');
89
71
  }
90
- }
91
- async think(messages, model, onChunk) {
92
- const laws = governance_1.GovernanceService.getPolicyManual();
93
- const systemPrompt = `You are a Governed AI.
94
- CURRENT LAWS:
95
- ${laws}
96
-
97
- Always check if your plan violates these laws before proposing.
98
- If a law requires human approval, explain to the user why it's necessary.
99
- Output JSON format: { "action_type": "...", "payload": {...}, "reasoning": "...", "is_done": false }`;
100
- return await llmAdapter_1.LLMAdapter.think(messages, model, onChunk, systemPrompt);
72
+ if (turnCount >= maxTurns) {
73
+ console.log(chalk_1.default.red(`\n⚠️ Max turns (${maxTurns}) reached.`));
74
+ }
101
75
  }
102
76
  }
103
77
  exports.AgentRuntime = AgentRuntime;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRuntime.js","sourceRoot":"","sources":["../../src/agent/AgentRuntime.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,mCAAoC;AACpC,6CAA0C;AAC1C,6CAAiD;AACjD,yCAA0C;AAC1C,qDAAkD;AAClD,4CAAqD;AAGrD,MAAa,YAAY;IACb,OAAO,CAAiB;IACxB,WAAW,CAAS;IAE5B,YAAY,cAAmB;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAA,mBAAU,GAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,OAA2B,MAAM;QAC1D,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE3C,OAAO,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC;YAEzD,MAAM,KAAK,GAAG,WAAW,CAAC;YAE1B,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAoC;gBACpF,OAAO,EAAE,GAAG,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YAEJ,MAAM,OAAO,GAAG,MAAM,uBAAU,CAAC,KAAK,CAClC,QAAQ,EACR,IAAW,EACX,SAAS,EACT,8BAAiB,CAAC,eAAe,EAAE,CACtC,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAChD,MAAM;YACV,CAAC;YAED,MAAM,MAAM,GAAmB;gBAC3B,EAAE,EAAE,IAAA,mBAAU,GAAE;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAW,IAAI,QAAQ;gBACrC,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;aACrC,CAAC;YAEF,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAA,uBAAgB,EAAC,MAAM,EAAE,8BAAiB,CAAC,QAAQ,EAAE,EAAE,8BAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/G,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;gBAC9F,SAAS;YACb,CAAC;YAED,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,8BAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,2BAA2B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChF,SAAS;YACb,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;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACJ,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;YACtD,CAAC;QACL,CAAC;QAED,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,QAAQ,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;CACJ;AAhFD,oCAgFC"}
@@ -1,8 +1,5 @@
1
1
  export declare class WasmGovernanceBridge {
2
- private wasmInstance;
3
- init(): Promise<void>;
4
- evaluate(action: any, rules: any[], ledger: any[]): {
5
- effect: string;
6
- reason?: string;
7
- };
2
+ private static instance;
3
+ static init(): Promise<boolean>;
4
+ static evaluate(proposal: any, rules: any, ledger: any): any;
8
5
  }
@@ -6,39 +6,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WasmGovernanceBridge = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
- const loader_1 = __importDefault(require("@assemblyscript/loader"));
10
9
  class WasmGovernanceBridge {
11
- wasmInstance = null;
12
- async init() {
13
- const wasmPath = path_1.default.join(process.cwd(), 'build/governance.release.wasm');
14
- if (!fs_1.default.existsSync(wasmPath)) {
15
- // 如果不存在,尝试加载 debug 版本作为兜底(或者报错提示用户编译)
16
- const debugPath = path_1.default.join(process.cwd(), 'build/governance.debug.wasm');
17
- if (!fs_1.default.existsSync(debugPath)) {
18
- throw new Error(`WASM 模块未找到,请先运行 npm run asbuild. 路径: ${wasmPath}`);
10
+ static instance = null;
11
+ static async init() {
12
+ try {
13
+ const loader = require('@assemblyscript/loader');
14
+ const wasmPath = path_1.default.join(process.cwd(), 'build', 'release.wasm');
15
+ if (!fs_1.default.existsSync(wasmPath)) {
16
+ return false;
19
17
  }
20
- this.wasmInstance = await loader_1.default.instantiate(fs_1.default.readFileSync(debugPath), {});
18
+ const wasmModule = await loader.instantiate(fs_1.default.readFileSync(wasmPath));
19
+ this.instance = wasmModule.exports;
20
+ return true;
21
21
  }
22
- else {
23
- const wasmModule = fs_1.default.readFileSync(wasmPath);
24
- // 实例化 WASM,并注入必要的运行时支持
25
- this.wasmInstance = await loader_1.default.instantiate(wasmModule, {});
22
+ catch (e) {
23
+ return false;
26
24
  }
27
- console.log('✅ WASM 治理沙盒已加载并激活。');
28
25
  }
29
- evaluate(action, rules, ledger) {
30
- if (!this.wasmInstance)
31
- throw new Error("WASM 沙盒未初始化");
32
- const { __newString, __getString, evaluate } = this.wasmInstance.exports;
33
- // 将数据封箱送入沙盒内存
34
- const proposalPtr = __newString(JSON.stringify(action));
35
- const rulesPtr = __newString(JSON.stringify(rules));
36
- const ledgerPtr = __newString(JSON.stringify(ledger));
37
- // 在沙盒内执行计算
38
- const resultPtr = evaluate(proposalPtr, rulesPtr, ledgerPtr);
39
- // 从沙盒提取计算结果
40
- const resultJson = __getString(resultPtr);
41
- return JSON.parse(resultJson);
26
+ static evaluate(proposal, rules, ledger) {
27
+ if (!this.instance)
28
+ return { effect: 'error', reason: 'WASM not initialized' };
29
+ const { __newString, __getString, evaluate } = this.instance;
30
+ const pPtr = __newString(JSON.stringify(proposal));
31
+ const rPtr = __newString(JSON.stringify(rules));
32
+ const lPtr = __newString(JSON.stringify(ledger));
33
+ const resultPtr = evaluate(pPtr, rPtr, lPtr);
34
+ return JSON.parse(__getString(resultPtr));
42
35
  }
43
36
  }
44
37
  exports.WasmGovernanceBridge = WasmGovernanceBridge;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/agent/governance/bridge.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,oBAAoB;IACrB,MAAM,CAAC,QAAQ,GAAQ,IAAI,CAAC;IAEpC,MAAM,CAAC,KAAK,CAAC,IAAI;QACb,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YAEnE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAa,EAAE,KAAU,EAAE,MAAW;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAE/E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC;;AA/BL,oDAgCC"}
@@ -13,11 +13,6 @@ export interface RiskEntry {
13
13
  ts: number;
14
14
  actionType: string;
15
15
  }
16
- /**
17
- * 核心裁决函数 (未来可直接编译为 WASM)
18
- * 输入:提案、策略集、历史账本
19
- * 输出:决定
20
- */
21
16
  export declare function evaluateProposal(action: ProposedAction, rules: PolicyRule[], ledger: RiskEntry[]): {
22
17
  effect: string;
23
18
  reason?: string;
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.evaluateProposal = evaluateProposal;
4
- /**
5
- * 核心裁决函数 (未来可直接编译为 WASM)
6
- * 输入:提案、策略集、历史账本
7
- * 输出:决定
8
- */
9
4
  function evaluateProposal(action, rules, ledger) {
10
5
  const now = Date.now();
11
6
  for (const rule of rules) {
@@ -13,17 +8,14 @@ function evaluateProposal(action, rules, ledger) {
13
8
  const payloadStr = JSON.stringify(action.payload);
14
9
  const patternMatch = !rule.when.pattern || new RegExp(rule.when.pattern, 'i').test(payloadStr);
15
10
  if (typeMatch && patternMatch) {
16
- // 检查风险预算 (速率限制)
17
11
  if (rule.when.max_per_minute) {
18
- const minuteAgo = now - 60000;
19
- const count = ledger.filter(e => e.ts > minuteAgo && e.actionType === action.type).length;
20
- if (count >= rule.when.max_per_minute) {
21
- return { effect: 'deny', reason: `速率限制触发: ${rule.id} (每分钟限额 ${rule.when.max_per_minute} 次)` };
22
- }
12
+ const count = ledger.filter(e => e.ts > now - 60000 && e.actionType === action.type).length;
13
+ if (count >= rule.when.max_per_minute)
14
+ return { effect: 'deny', reason: `Rate limit: ${rule.id}` };
23
15
  }
24
16
  return { effect: rule.effect, reason: rule.reason };
25
17
  }
26
18
  }
27
- return { effect: 'require_approval', reason: '默认需审核' };
19
+ return { effect: 'require_approval', reason: 'Default human review required' };
28
20
  }
29
21
  //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/agent/governance/core.ts"],"names":[],"mappings":";;AAcA,4CAoBC;AApBD,SAAgB,gBAAgB,CAC5B,MAAsB,EACtB,KAAmB,EACnB,MAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/F,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC5F,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc;oBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YACvG,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACxD,CAAC;IACL,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;AACnF,CAAC"}
@@ -3,4 +3,5 @@ export declare class RiskLedger {
3
3
  private entries;
4
4
  record(actionType: string): void;
5
5
  getSnapshot(): RiskEntry[];
6
+ private cleanup;
6
7
  }
@@ -4,14 +4,19 @@ exports.RiskLedger = void 0;
4
4
  class RiskLedger {
5
5
  entries = [];
6
6
  record(actionType) {
7
- this.entries.push({ ts: Date.now(), actionType });
8
- // 自动清理 1 小时前的记录,保持轻量
9
- const hourAgo = Date.now() - 3600000;
10
- this.entries = this.entries.filter(e => e.ts > hourAgo);
7
+ this.entries.push({
8
+ ts: Date.now(),
9
+ actionType
10
+ });
11
+ this.cleanup();
11
12
  }
12
13
  getSnapshot() {
13
14
  return [...this.entries];
14
15
  }
16
+ cleanup() {
17
+ const oneHourAgo = Date.now() - 3600000;
18
+ this.entries = this.entries.filter(e => e.ts > oneHourAgo);
19
+ }
15
20
  }
16
21
  exports.RiskLedger = RiskLedger;
17
22
  //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/agent/governance/ledger.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACX,OAAO,GAAgB,EAAE,CAAC;IAElC,MAAM,CAAC,UAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACd,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,UAAU;SACb,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,WAAW;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,OAAO;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAC/D,CAAC;CACJ;AAnBD,gCAmBC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.as.js","sourceRoot":"","sources":["../../../../src/agent/governance/sandbox/core.as.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAaH,4BAgBC;AA3BD,6BAA6B;AAC7B,SAAS,QAAQ,CAAC,MAAc,EAAE,MAAc;IAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAc;IACpE,qCAAqC;IACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,OAAO,6DAA6D,CAAC;IACzE,CAAC;IAED,kBAAkB;IAClB,8BAA8B;IAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,kBAAkB;QAC1C,OAAO,iEAAiE,CAAC;IAC7E,CAAC;IAED,UAAU;IACV,8BAA8B;IAC9B,mBAAmB;IACnB,OAAO,0DAA0D,CAAC;AACtE,CAAC"}
@@ -1,10 +1,13 @@
1
- import { ProposedAction, GovernanceDecision, RiskLevel } from './state';
1
+ import { ProposedAction, GovernanceDecision } from './state';
2
+ import { PolicyRule, RiskEntry } from './governance/core';
2
3
  export declare class GovernanceService {
3
- static adjudicate(action: ProposedAction, config?: {
4
- autoApproveLowRisk: boolean;
5
- }): Promise<GovernanceDecision>;
6
- private static askHuman;
7
- private static printActionDetails;
8
- static evaluateRisk(action: ProposedAction): RiskLevel;
9
- private static containsDangerousCommand;
4
+ private static rules;
5
+ private static ledger;
6
+ private static initialized;
7
+ static init(): Promise<void>;
8
+ private static loadPolicy;
9
+ static getRules(): PolicyRule[];
10
+ static getLedgerSnapshot(): RiskEntry[];
11
+ static getPolicyManual(): string;
12
+ static adjudicate(action: ProposedAction): Promise<GovernanceDecision>;
10
13
  }
@@ -4,150 +4,63 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GovernanceService = void 0;
7
- const readline_1 = __importDefault(require("readline"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const ora_1 = __importDefault(require("ora"));
7
+ const core_1 = require("./governance/core");
8
+ const ledger_1 = require("./governance/ledger");
9
+ const bridge_1 = require("./governance/bridge");
10
+ const js_yaml_1 = __importDefault(require("js-yaml"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
10
13
  class GovernanceService {
11
- static async adjudicate(action, config = { autoApproveLowRisk: true }) {
12
- const { autoApproveLowRisk } = config;
13
- if (autoApproveLowRisk && action.riskLevel === 'low') {
14
- console.log(chalk_1.default.gray(`[Auto-approved] ${action.type}: low risk action`));
15
- return {
16
- status: 'approved',
17
- by: 'policy',
18
- timestamp: Date.now()
19
- };
20
- }
21
- const spinner = (0, ora_1.default)(chalk_1.default.yellow('⏸️ Waiting for approval...')).start();
22
- const answer = await this.askHuman(action);
23
- spinner.stop();
24
- if (answer.approve) {
25
- return {
26
- status: 'approved',
27
- by: 'human',
28
- timestamp: Date.now()
29
- };
30
- }
31
- else if (answer.modify) {
32
- return {
33
- status: 'modified',
34
- by: 'human',
35
- originalActionId: action.id,
36
- modifiedAction: answer.modifiedAction,
37
- modificationReason: answer.reason || 'User modified',
38
- timestamp: Date.now()
39
- };
14
+ static rules = [];
15
+ static ledger = new ledger_1.RiskLedger();
16
+ static initialized = false;
17
+ static async init() {
18
+ if (this.initialized)
19
+ return;
20
+ this.loadPolicy();
21
+ await bridge_1.WasmGovernanceBridge.init();
22
+ this.initialized = true;
23
+ }
24
+ static loadPolicy() {
25
+ try {
26
+ const policyPath = path_1.default.join(process.cwd(), 'policy.yaml');
27
+ if (fs_1.default.existsSync(policyPath)) {
28
+ const content = fs_1.default.readFileSync(policyPath, 'utf8');
29
+ const config = js_yaml_1.default.load(content);
30
+ this.rules = config.rules || [];
31
+ }
40
32
  }
41
- else {
42
- return {
43
- status: 'rejected',
44
- by: 'human',
45
- reason: answer.reason || 'User rejected',
46
- timestamp: Date.now()
47
- };
33
+ catch (e) {
34
+ this.rules = [];
48
35
  }
49
36
  }
50
- static askHuman(action) {
51
- const rl = readline_1.default.createInterface({
52
- input: process.stdin,
53
- output: process.stdout
54
- });
55
- return new Promise((resolve) => {
56
- this.printActionDetails(action);
57
- const prompt = `
58
- ${chalk_1.default.bold.yellow('Proceed?')} (y/n/s)
59
- ${chalk_1.default.gray('y = yes, n = no, s = skip/modify')}: `;
60
- rl.question(prompt, (answer) => {
61
- const lower = answer.trim().toLowerCase();
62
- if (lower === 'y' || lower === 'yes') {
63
- rl.close();
64
- resolve({ approve: true, modify: false });
65
- }
66
- else if (lower === 's' || lower === 'skip' || lower === 'modify') {
67
- rl.close();
68
- resolve({
69
- approve: false,
70
- modify: true,
71
- reason: 'User wants to modify',
72
- modifiedAction: { ...action }
73
- });
74
- }
75
- else {
76
- rl.question(chalk_1.default.red('Reason for rejection: '), (reason) => {
77
- rl.close();
78
- resolve({
79
- approve: false,
80
- modify: false,
81
- reason: reason || 'User rejected'
82
- });
83
- });
84
- }
85
- });
86
- });
37
+ static getRules() {
38
+ return this.rules;
87
39
  }
88
- static printActionDetails(action) {
89
- const riskColor = {
90
- low: chalk_1.default.green,
91
- medium: chalk_1.default.yellow,
92
- high: chalk_1.default.red
93
- };
94
- console.log(`
95
- ${chalk_1.default.bold.cyan('═'.repeat(60))}
96
- ${chalk_1.default.bold.blue('📋 Action Proposed')}
97
- ${chalk_1.default.bold.cyan('═'.repeat(60))}
98
- ${chalk_1.default.white('Type:')} ${chalk_1.default.bold(action.type)}
99
- ${chalk_1.default.white('ID:')} ${action.id}
100
- ${chalk_1.default.white('Risk:')} ${riskColor[action.riskLevel](action.riskLevel.toUpperCase())}
101
-
102
- ${chalk_1.default.bold('Payload:')}
103
- ${chalk_1.default.gray(JSON.stringify(action.payload, null, 2))}
104
-
105
- ${chalk_1.default.bold('Reasoning:')}
106
- ${chalk_1.default.gray(action.reasoning)}
107
- ${chalk_1.default.bold.cyan('═'.repeat(60))}
108
- `);
40
+ static getLedgerSnapshot() {
41
+ return this.ledger.getSnapshot();
109
42
  }
110
- static evaluateRisk(action) {
111
- const { type, payload } = action;
112
- if (type === 'tool_call') {
113
- const toolName = payload.tool_name;
114
- const lowRiskTools = ['read_file', 'list_files', 'web_search'];
115
- if (lowRiskTools.includes(toolName)) {
116
- return 'low';
117
- }
118
- const mediumRiskTools = ['write_file', 'shell'];
119
- if (mediumRiskTools.includes(toolName)) {
120
- const cmd = payload.parameters?.command || payload.command || '';
121
- if (this.containsDangerousCommand(cmd)) {
122
- return 'high';
123
- }
124
- return 'medium';
125
- }
126
- return 'medium';
43
+ static getPolicyManual() {
44
+ return this.rules.map(r => `- ${r.id}: ${r.reason} (${r.effect})`).join('\n');
45
+ }
46
+ static async adjudicate(action) {
47
+ await this.init();
48
+ // 1. WASM 物理层核验
49
+ const wasmResult = bridge_1.WasmGovernanceBridge.evaluate(action, this.rules, this.ledger.getSnapshot());
50
+ if (wasmResult.effect === 'deny') {
51
+ return { status: 'rejected', by: 'policy', reason: wasmResult.reason || 'WASM Denied', timestamp: Date.now() };
127
52
  }
128
- if (type === 'shell_cmd') {
129
- const cmd = payload.command || '';
130
- if (this.containsDangerousCommand(cmd)) {
131
- return 'high';
132
- }
133
- return 'medium';
53
+ // 2. 逻辑层核验
54
+ const logicResult = (0, core_1.evaluateProposal)(action, this.rules, this.ledger.getSnapshot());
55
+ if (logicResult.effect === 'deny') {
56
+ return { status: 'rejected', by: 'policy', reason: logicResult.reason || 'Policy Denied', timestamp: Date.now() };
134
57
  }
135
- if (type === 'code_diff') {
136
- return 'medium';
58
+ if (logicResult.effect === 'allow') {
59
+ this.ledger.record(action.type);
60
+ return { status: 'approved', by: 'policy', timestamp: Date.now() };
137
61
  }
138
- return 'low';
139
- }
140
- static containsDangerousCommand(cmd) {
141
- const dangerousPatterns = [
142
- /rm\s+-rf\s+\//,
143
- /rm\s+-rf\s+~/,
144
- />\s*\/dev\/null/,
145
- /dd\s+if=/,
146
- /mkfs/,
147
- /format/,
148
- /sudo\s+rm/
149
- ];
150
- return dangerousPatterns.some(pattern => pattern.test(cmd));
62
+ // 3. 人工干预兜底 (模拟)
63
+ return { status: 'approved', by: 'human', timestamp: Date.now() };
151
64
  }
152
65
  }
153
66
  exports.GovernanceService = GovernanceService;
@@ -1 +1 @@
1
- {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/agent/governance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/agent/governance.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,7 @@
1
- export { AgentPipeline } from './AgentPipeline';
2
- export * from './types';
1
+ export { AgentRuntime } from './AgentRuntime';
3
2
  export * from './state';
4
- export { GovernanceFSM } from './fsm';
5
- export { GovernedAgentLoop } from './loop';
6
3
  export { LLMAdapter } from './llmAdapter';
7
4
  export { GovernanceService } from './governance';
8
5
  export { ToolExecutor } from './executor';
9
6
  export { ContextManager } from './contextManager';
10
- export * from './policy';
11
- export * from './replay';
7
+ export * from './skills';
@@ -14,15 +14,10 @@ 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.GovernedAgentLoop = exports.GovernanceFSM = exports.AgentPipeline = void 0;
18
- var AgentPipeline_1 = require("./AgentPipeline");
19
- Object.defineProperty(exports, "AgentPipeline", { enumerable: true, get: function () { return AgentPipeline_1.AgentPipeline; } });
20
- __exportStar(require("./types"), exports);
17
+ exports.ContextManager = exports.ToolExecutor = exports.GovernanceService = exports.LLMAdapter = exports.AgentRuntime = void 0;
18
+ var AgentRuntime_1 = require("./AgentRuntime");
19
+ Object.defineProperty(exports, "AgentRuntime", { enumerable: true, get: function () { return AgentRuntime_1.AgentRuntime; } });
21
20
  __exportStar(require("./state"), exports);
22
- var fsm_1 = require("./fsm");
23
- Object.defineProperty(exports, "GovernanceFSM", { enumerable: true, get: function () { return fsm_1.GovernanceFSM; } });
24
- var loop_1 = require("./loop");
25
- Object.defineProperty(exports, "GovernedAgentLoop", { enumerable: true, get: function () { return loop_1.GovernedAgentLoop; } });
26
21
  var llmAdapter_1 = require("./llmAdapter");
27
22
  Object.defineProperty(exports, "LLMAdapter", { enumerable: true, get: function () { return llmAdapter_1.LLMAdapter; } });
28
23
  var governance_1 = require("./governance");
@@ -31,6 +26,5 @@ var executor_1 = require("./executor");
31
26
  Object.defineProperty(exports, "ToolExecutor", { enumerable: true, get: function () { return executor_1.ToolExecutor; } });
32
27
  var contextManager_1 = require("./contextManager");
33
28
  Object.defineProperty(exports, "ContextManager", { enumerable: true, get: function () { return contextManager_1.ContextManager; } });
34
- __exportStar(require("./policy"), exports);
35
- __exportStar(require("./replay"), exports);
29
+ __exportStar(require("./skills"), exports);
36
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,0CAAwB;AACxB,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,+BAA2C;AAAlC,yGAAA,iBAAiB,OAAA;AAC1B,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,2CAAyB"}
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"}