@backendkit-labs/agent-core 0.20.2 → 0.22.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 (38) hide show
  1. package/README.md +3 -0
  2. package/dist/delegation/DelegationBus.d.ts +15 -7
  3. package/dist/delegation/DelegationBus.d.ts.map +1 -1
  4. package/dist/delegation/DelegationBus.js +33 -12
  5. package/dist/delegation/DelegationBus.js.map +1 -1
  6. package/dist/engine/AgentEngine.d.ts +9 -45
  7. package/dist/engine/AgentEngine.d.ts.map +1 -1
  8. package/dist/engine/AgentEngine.js +125 -431
  9. package/dist/engine/AgentEngine.js.map +1 -1
  10. package/dist/engine/ApprovalGate.d.ts +33 -0
  11. package/dist/engine/ApprovalGate.d.ts.map +1 -0
  12. package/dist/engine/ApprovalGate.js +76 -0
  13. package/dist/engine/ApprovalGate.js.map +1 -0
  14. package/dist/engine/AuditLogger.d.ts +14 -0
  15. package/dist/engine/AuditLogger.d.ts.map +1 -0
  16. package/dist/engine/AuditLogger.js +34 -0
  17. package/dist/engine/AuditLogger.js.map +1 -0
  18. package/dist/engine/HistoryManager.d.ts +42 -0
  19. package/dist/engine/HistoryManager.d.ts.map +1 -0
  20. package/dist/engine/HistoryManager.js +156 -0
  21. package/dist/engine/HistoryManager.js.map +1 -0
  22. package/dist/engine/MCPRegistrar.d.ts +45 -0
  23. package/dist/engine/MCPRegistrar.d.ts.map +1 -0
  24. package/dist/engine/MCPRegistrar.js +217 -0
  25. package/dist/engine/MCPRegistrar.js.map +1 -0
  26. package/dist/engine/qa-orchestrator.js +2 -2
  27. package/dist/engine/qa-orchestrator.js.map +1 -1
  28. package/dist/mcp/MCPClientManager.d.ts +15 -0
  29. package/dist/mcp/MCPClientManager.d.ts.map +1 -1
  30. package/dist/mcp/MCPClientManager.js +62 -8
  31. package/dist/mcp/MCPClientManager.js.map +1 -1
  32. package/dist/qa/qa-service.d.ts.map +1 -1
  33. package/dist/qa/qa-service.js +43 -34
  34. package/dist/qa/qa-service.js.map +1 -1
  35. package/dist/reflection/lessons-memo-generator.d.ts +1 -1
  36. package/dist/reflection/lessons-memo-generator.js +64 -64
  37. package/dist/reflection/lessons-memo-generator.js.map +1 -1
  38. package/package.json +87 -87
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # @backendkit-labs/agent-core
2
2
 
3
+ **Status: core** — required for the enterprise story; changes go through full review.
4
+ See the [subsystem matrix](../../README.md#backendkit-labsagent-core-subsystem-matrix) for per-subsystem status (`qa`, `reflection`, `agent-memory`, `observability`, `triggers` are **experimental** and frozen during the pilot).
5
+
3
6
  Generic multi-agent engine for TypeScript — model-agnostic, transport-agnostic, extensible.
4
7
 
5
8
  ```bash
@@ -1,11 +1,19 @@
1
1
  import type { AgentRegistry } from '../engine/AgentRegistry';
2
- import type { ToolRegistry } from '../engine/ToolRegistry';
2
+ import type { AgentEvent } from '../types';
3
3
  import type { Transport } from '../transport/Transport';
4
4
  export interface DelegationRequest {
5
5
  agentId: string;
6
6
  question: string;
7
7
  context?: string;
8
8
  relevantFiles?: string[];
9
+ /** ID of the agent that initiated this delegation. Used for agent_switch events. */
10
+ fromAgentId?: string;
11
+ /**
12
+ * Nesting depth of this delegation (0 = top-level from run(), 1+ = called from a tool).
13
+ * Nested calls skip the bulkhead semaphore to prevent starvation when all top-level
14
+ * slots are occupied by agents that are themselves waiting for nested delegations.
15
+ */
16
+ depth?: number;
9
17
  }
10
18
  export interface DelegationResult {
11
19
  agentId: string;
@@ -18,10 +26,8 @@ export interface DelegationResult {
18
26
  export interface DelegationBusOptions {
19
27
  maxParallel?: number;
20
28
  agents: AgentRegistry;
21
- tools: ToolRegistry;
22
29
  transport: Transport;
23
- workingDir?: string;
24
- runAgent(agentId: string, question: string, context?: string): Promise<DelegationResult>;
30
+ runAgent(agentId: string, question: string, context?: string, depth?: number, outputBuffer?: AgentEvent[]): Promise<DelegationResult>;
25
31
  }
26
32
  export declare class DelegationBus {
27
33
  private readonly opts;
@@ -30,11 +36,13 @@ export declare class DelegationBus {
30
36
  /**
31
37
  * Runs all requests concurrently, bounded by the bulkhead semaphore.
32
38
  *
33
- * Unlike the previous wave-based approach, slots free up immediately as
34
- * individual agents finish no waiting for the whole wave to complete.
39
+ * Each agent's output events (tokens, tool calls, etc.) are buffered while running
40
+ * in parallel. As each agent finishes, its buffered events are flushed to the
41
+ * real transport atomically — preventing interleaved output from different agents.
42
+ * `agent_switch` and system events always pass through in real-time.
35
43
  */
36
44
  runParallel(requests: DelegationRequest[]): Promise<DelegationResult[]>;
37
- runSingle(request: DelegationRequest): Promise<DelegationResult>;
45
+ runSingle(request: DelegationRequest, outputBuffer?: AgentEvent[]): Promise<DelegationResult>;
38
46
  getBulkheadMetrics(): import("@backendkit-labs/bulkhead").BulkheadMetrics;
39
47
  }
40
48
  //# sourceMappingURL=DelegationBus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DelegationBus.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegationBus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5F;AAED,qBAAa,aAAa;IAGV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAEP,IAAI,EAAE,oBAAoB;IAUvD;;;;;OAKG;IACG,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIvE,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyCtE,kBAAkB;CAGrB"}
1
+ {"version":3,"file":"DelegationBus.d.ts","sourceRoot":"","sources":["../../src/delegation/DelegationBus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,CACJ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,UAAU,EAAE,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAED,qBAAa,aAAa;IAGV,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAEP,IAAI,EAAE,oBAAoB;IAUvD;;;;;;;OAOG;IACG,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgBvE,SAAS,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiDnG,kBAAkB;CAGrB"}
@@ -18,13 +18,25 @@ class DelegationBus {
18
18
  /**
19
19
  * Runs all requests concurrently, bounded by the bulkhead semaphore.
20
20
  *
21
- * Unlike the previous wave-based approach, slots free up immediately as
22
- * individual agents finish no waiting for the whole wave to complete.
21
+ * Each agent's output events (tokens, tool calls, etc.) are buffered while running
22
+ * in parallel. As each agent finishes, its buffered events are flushed to the
23
+ * real transport atomically — preventing interleaved output from different agents.
24
+ * `agent_switch` and system events always pass through in real-time.
23
25
  */
24
26
  async runParallel(requests) {
25
- return Promise.all(requests.map(req => this.runSingle(req)));
27
+ const results = new Array(requests.length);
28
+ await Promise.all(requests.map(async (req, i) => {
29
+ const outputBuffer = [];
30
+ results[i] = await this.runSingle(req, outputBuffer);
31
+ // Flush this agent's buffered output atomically once it finishes.
32
+ // Other agents may still be running — their output hasn't flushed yet.
33
+ for (const event of outputBuffer) {
34
+ this.opts.transport.emit(event);
35
+ }
36
+ }));
37
+ return results;
26
38
  }
27
- async runSingle(request) {
39
+ async runSingle(request, outputBuffer) {
28
40
  const profile = this.opts.agents.get(request.agentId);
29
41
  if (!profile) {
30
42
  return {
@@ -36,15 +48,24 @@ class DelegationBus {
36
48
  error: 'agent_not_found',
37
49
  };
38
50
  }
39
- this.opts.transport.emit({
40
- type: 'agent_switch',
41
- from: 'orchestrator',
42
- to: profile.id,
43
- to_name: profile.name,
44
- to_icon: profile.icon,
45
- });
51
+ const { depth = 0 } = request;
52
+ const execute = () => {
53
+ // agent_switch always goes to the real transport — it tells the renderer
54
+ // that this agent has started, even while its output is buffered.
55
+ this.opts.transport.emit({
56
+ type: 'agent_switch',
57
+ from: request.fromAgentId ?? 'orchestrator',
58
+ to: profile.id,
59
+ to_name: profile.name,
60
+ to_icon: profile.icon,
61
+ });
62
+ return this.opts.runAgent(request.agentId, request.question, request.context, depth, outputBuffer);
63
+ };
46
64
  try {
47
- return await this.bulkhead.execute(() => this.opts.runAgent(request.agentId, request.question, request.context));
65
+ // Nested delegations (depth > 0) skip the bulkhead to prevent starvation.
66
+ return depth > 0
67
+ ? await execute()
68
+ : await this.bulkhead.execute(execute);
48
69
  }
49
70
  catch (err) {
50
71
  const message = err instanceof bulkhead_1.BulkheadRejectedError ? 'Delegation rejected: queue is full' :
@@ -1 +1 @@
1
- {"version":3,"file":"DelegationBus.js","sourceRoot":"","sources":["../../src/delegation/DelegationBus.ts"],"names":[],"mappings":";;;AAAA,wDAAkG;AA8BlG,MAAa,aAAa;IAGO;IAFZ,QAAQ,CAAW;IAEpC,YAA6B,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YACzB,IAAI,EAAE,gBAAgB;YACtB,kBAAkB,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;YACzC,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,OAAO,EAAE,kCAAkC;YAC3D,cAAc,EAAE,KAAK;SACxB,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,QAA6B;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA0B;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,UAAU,OAAO,CAAC,OAAO,yBAAyB;gBAC3D,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,iBAAiB;aAC3B,CAAC;QACN,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,OAAO,EAAE,OAAO,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAC/E,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GACT,GAAG,YAAY,gCAAqB,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;gBAC7E,GAAG,YAAY,+BAAoB,CAAE,CAAC,CAAC,+BAA+B,CAAC,CAAC;oBACxE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO;gBACH,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,UAAU,OAAO,EAAE;gBAC5B,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,OAAO;aACjB,CAAC;QACN,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;CACJ;AAnED,sCAmEC"}
1
+ {"version":3,"file":"DelegationBus.js","sourceRoot":"","sources":["../../src/delegation/DelegationBus.ts"],"names":[],"mappings":";;;AAAA,wDAAkG;AA0ClG,MAAa,aAAa;IAGO;IAFZ,QAAQ,CAAW;IAEpC,YAA6B,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YACzB,IAAI,EAAE,gBAAgB;YACtB,kBAAkB,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;YACzC,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,OAAO,EAAE,kCAAkC;YAC3D,cAAc,EAAE,KAAK;SACxB,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,QAA6B;QAC3C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,YAAY,GAAiB,EAAE,CAAC;YACtC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACrD,kEAAkE;YAClE,uEAAuE;YACvE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC,CAAC,CAAC;QAEJ,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA0B,EAAE,YAA2B;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,UAAU,OAAO,CAAC,OAAO,yBAAyB;gBAC3D,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,iBAAiB;aAC3B,CAAC;QACN,CAAC;QAED,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;QAE9B,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,yEAAyE;YACzE,kEAAkE;YAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,cAAc;gBAC3C,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EAAE,OAAO,CAAC,IAAI;aACxB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACvG,CAAC,CAAC;QAEF,IAAI,CAAC;YACD,0EAA0E;YAC1E,OAAO,KAAK,GAAG,CAAC;gBACZ,CAAC,CAAC,MAAM,OAAO,EAAE;gBACjB,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GACT,GAAG,YAAY,gCAAqB,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;gBAC7E,GAAG,YAAY,+BAAoB,CAAE,CAAC,CAAC,+BAA+B,CAAC,CAAC;oBACxE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO;gBACH,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,UAAU,OAAO,EAAE;gBAC5B,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,OAAO;aACjB,CAAC;QACN,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;CACJ;AAzFD,sCAyFC"}
@@ -89,32 +89,23 @@ export declare class AgentEngine {
89
89
  private readonly memory;
90
90
  private readonly bus;
91
91
  private readonly skillActivator;
92
+ private readonly history;
93
+ private readonly auditLogger;
92
94
  private currentAgentId;
93
- private messages;
94
95
  private aborted;
95
96
  private abortController;
96
97
  private allSkills;
97
98
  private iterationManager;
98
99
  private activeSkillAddition;
99
100
  private yamlSkillsLoaded;
100
- private mcpInitialized;
101
- private mcpInitAttempts;
102
- private mcpRegisteredServers;
103
- private mcpTriggers;
104
- private mcpToolTriggers;
105
- private approvalDisabled;
101
+ private readonly mcpRegistrar;
102
+ private readonly approvalGate;
106
103
  private pendingContextLoad;
107
- private static readonly WRITE_TOOLS;
108
- /** Tracks what each MCP server blocked/assigned so it can be fully reverted on disconnect. */
109
- private mcpAgentBlocks;
110
- /**
111
- * Commands that always require user approval regardless of iteration mode or
112
- * approvalDisabled flag. These are irreversible or high-blast-radius operations:
113
- * installing new packages, removing packages, running destructive npm scripts.
114
- */
115
- private static readonly ALWAYS_ASK_PATTERNS;
116
104
  private agentsLoaded;
105
+ private agentsLoadedPromise;
117
106
  private memoryContextBlock;
107
+ /** Serializes concurrent run() calls — shared mutable state is not reentrant-safe. */
108
+ private runMutex;
118
109
  constructor(opts: AgentEngineOptions);
119
110
  /** Access the observability manager when configured via createBaseEngine({ observability }). */
120
111
  get observability(): ObservabilityManager | undefined;
@@ -162,6 +153,7 @@ export declare class AgentEngine {
162
153
  callLLM(prompt: string): Promise<string>;
163
154
  private getProviderForProfile;
164
155
  run(input: string): Promise<void>;
156
+ private _run;
165
157
  runWorkflow(defOrBuilder: WorkflowDef | WorkflowBuilder, opts?: WorkflowRunOptions): Promise<WorkflowResult>;
166
158
  abort(): void;
167
159
  /** Change the iteration mode at runtime — takes effect on the next run(). */
@@ -170,31 +162,10 @@ export declare class AgentEngine {
170
162
  getIterationMode(): IterationMode;
171
163
  /** Delete persisted history file and reset in-memory conversation. */
172
164
  clearHistory(): void;
173
- /** Serialize current conversation to disk (called automatically after each run). */
174
165
  private saveHistory;
175
- /**
176
- * Trim conversation history to maxContextMessages by dropping oldest messages
177
- * at a user-turn boundary. Preserves all assistant↔tool pairs intact.
178
- */
179
166
  private trimHistory;
180
167
  private ensureAgentsLoaded;
181
- private ensureMCPInitialized;
182
- private registerMCPAgent;
183
- /**
184
- * mode='tools' (default): assigns MCP tools directly to local agent allowedTools.
185
- * Also applies blocksCommands to those agents while the server is connected —
186
- * forcing them to use the MCP tools instead of equivalent shell commands.
187
- * Both tool assignments and command blocks are tracked so they can be
188
- * fully reverted when the server disconnects via unregisterMCPServer().
189
- */
190
- private registerMCPToolPack;
191
- /**
192
- * mode='agent': wraps the MCP server as a delegatable agent in the roster.
193
- * Use only when the remote service has its own reasoning layer or its output
194
- * is so large it needs a dedicated summarization turn.
195
- */
196
- private registerMCPAgentWrapper;
197
- private findMCPRoute;
168
+ private _loadAgentsOnce;
198
169
  switchAgent(agentId: string): void;
199
170
  private getCurrentProfile;
200
171
  private buildAgentRoster;
@@ -222,12 +193,6 @@ export declare class AgentEngine {
222
193
  */
223
194
  private executeToolCall;
224
195
  private runToolDef;
225
- /**
226
- * Returns true when a tool call matches a high-blast-radius pattern that
227
- * always requires explicit approval — cannot be bypassed by approve_all or
228
- * auto iteration mode.
229
- */
230
- private requiresAlwaysAsk;
231
196
  /**
232
197
  * Disconnects an MCP server at runtime — reverts all tool assignments and
233
198
  * command blocks it applied to local agents. After calling this, agents that
@@ -242,7 +207,6 @@ export declare class AgentEngine {
242
207
  disableToolApproval(): void;
243
208
  /** Re-enable approval gate (e.g. after /iteration manual). */
244
209
  enableToolApproval(): void;
245
- private writeAuditRecord;
246
210
  private buildContext;
247
211
  }
248
212
  //# sourceMappingURL=AgentEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentEngine.d.ts","sourceRoot":"","sources":["../../src/engine/AgentEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentEngine.d.ts","sourceRoot":"","sources":["../../src/engine/AgentEngine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,aAAa,EAIb,iBAAiB,EAGpB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS/F,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACrD,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,oEAAoE;IACpE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,sFAAsF;IACtF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC9H;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,4DAA4D;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvE;AAsBD,qBAAa,WAAW;IAsBR,OAAO,CAAC,QAAQ,CAAC,IAAI;IArBjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,kBAAkB,CAAM;IAChC,sFAAsF;IACtF,OAAO,CAAC,QAAQ,CAAoC;gBAEvB,IAAI,EAAE,kBAAkB;IAiCrD,gGAAgG;IAChG,IAAI,aAAa,IAAI,oBAAoB,GAAG,SAAS,CAEpD;IAED,kFAAkF;IAClF,aAAa,IAAI,gBAAgB,GAAG,SAAS;IAI7C;;;;;;;OAOG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAetC;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;;;;;OASG;IACH,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IA4B7C;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB9C,OAAO,CAAC,qBAAqB;IAIvB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAezB,IAAI;IA2FZ,WAAW,CACb,YAAY,EAAE,WAAW,GAAG,eAAe,EAC3C,IAAI,GAAE,kBAAuB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAa1B,KAAK,IAAI,IAAI;IAMb,6EAA6E;IAC7E,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C,0CAA0C;IAC1C,gBAAgB,IAAI,aAAa;IAIjC,sEAAsE;IACtE,YAAY,IAAI,IAAI;IAIpB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;YAaL,kBAAkB;YASlB,eAAe;IAkB7B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,iBAAiB;IAwBzB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAoC/B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAQxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;YASd,OAAO;YA8JP,gBAAgB;IA8F9B;;;;OAIG;YACW,eAAe;YAuCf,UAAU;IAexB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI7C,wEAAwE;IACxE,mBAAmB,IAAI,IAAI;IAE3B,8DAA8D;IAC9D,kBAAkB,IAAI,IAAI;IAG1B,OAAO,CAAC,YAAY;CA2CvB"}