@mcp-abap-adt/llm-agent-libs 16.2.0 → 17.0.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 (154) hide show
  1. package/dist/adapters/llm-provider-bridge.js +2 -2
  2. package/dist/adapters/llm-provider-bridge.js.map +1 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +48 -37
  5. package/dist/agent.js.map +1 -1
  6. package/dist/builder.d.ts +10 -0
  7. package/dist/builder.d.ts.map +1 -1
  8. package/dist/builder.js +17 -3
  9. package/dist/builder.js.map +1 -1
  10. package/dist/classifier/llm-classifier.d.ts.map +1 -1
  11. package/dist/classifier/llm-classifier.js +1 -0
  12. package/dist/classifier/llm-classifier.js.map +1 -1
  13. package/dist/coordinator/dag/abort-error-strategy.d.ts +7 -0
  14. package/dist/coordinator/dag/abort-error-strategy.d.ts.map +1 -0
  15. package/dist/coordinator/dag/abort-error-strategy.js +8 -0
  16. package/dist/coordinator/dag/abort-error-strategy.js.map +1 -0
  17. package/dist/coordinator/dag/compose-node-task.d.ts +8 -0
  18. package/dist/coordinator/dag/compose-node-task.d.ts.map +1 -0
  19. package/dist/coordinator/dag/compose-node-task.js +41 -0
  20. package/dist/coordinator/dag/compose-node-task.js.map +1 -0
  21. package/dist/coordinator/dag/dag-plan-interpreter.d.ts +9 -0
  22. package/dist/coordinator/dag/dag-plan-interpreter.d.ts.map +1 -0
  23. package/dist/coordinator/dag/dag-plan-interpreter.js +220 -0
  24. package/dist/coordinator/dag/dag-plan-interpreter.js.map +1 -0
  25. package/dist/coordinator/dag/index.d.ts +5 -0
  26. package/dist/coordinator/dag/index.d.ts.map +1 -0
  27. package/dist/coordinator/dag/index.js +5 -0
  28. package/dist/coordinator/dag/index.js.map +1 -0
  29. package/dist/coordinator/dag/llm-dag-planner.d.ts +17 -0
  30. package/dist/coordinator/dag/llm-dag-planner.d.ts.map +1 -0
  31. package/dist/coordinator/dag/llm-dag-planner.js +152 -0
  32. package/dist/coordinator/dag/llm-dag-planner.js.map +1 -0
  33. package/dist/coordinator/dag/llm-finalizer.d.ts +21 -0
  34. package/dist/coordinator/dag/llm-finalizer.d.ts.map +1 -0
  35. package/dist/coordinator/dag/llm-finalizer.js +77 -0
  36. package/dist/coordinator/dag/llm-finalizer.js.map +1 -0
  37. package/dist/coordinator/dag/llm-review-strategy.d.ts +17 -0
  38. package/dist/coordinator/dag/llm-review-strategy.d.ts.map +1 -0
  39. package/dist/coordinator/dag/llm-review-strategy.js +149 -0
  40. package/dist/coordinator/dag/llm-review-strategy.js.map +1 -0
  41. package/dist/coordinator/dag/noop-review-strategy.d.ts +8 -0
  42. package/dist/coordinator/dag/noop-review-strategy.d.ts.map +1 -0
  43. package/dist/coordinator/dag/noop-review-strategy.js +11 -0
  44. package/dist/coordinator/dag/noop-review-strategy.js.map +1 -0
  45. package/dist/coordinator/dag/passthrough-finalizer.d.ts +11 -0
  46. package/dist/coordinator/dag/passthrough-finalizer.d.ts.map +1 -0
  47. package/dist/coordinator/dag/passthrough-finalizer.js +13 -0
  48. package/dist/coordinator/dag/passthrough-finalizer.js.map +1 -0
  49. package/dist/coordinator/dag/render-ancestor-context.d.ts +8 -0
  50. package/dist/coordinator/dag/render-ancestor-context.d.ts.map +1 -0
  51. package/dist/coordinator/dag/render-ancestor-context.js +27 -0
  52. package/dist/coordinator/dag/render-ancestor-context.js.map +1 -0
  53. package/dist/coordinator/dag/replan-error-strategy.d.ts +15 -0
  54. package/dist/coordinator/dag/replan-error-strategy.d.ts.map +1 -0
  55. package/dist/coordinator/dag/replan-error-strategy.js +32 -0
  56. package/dist/coordinator/dag/replan-error-strategy.js.map +1 -0
  57. package/dist/coordinator/dag/reviewer-error-strategy.d.ts +15 -0
  58. package/dist/coordinator/dag/reviewer-error-strategy.d.ts.map +1 -0
  59. package/dist/coordinator/dag/reviewer-error-strategy.js +38 -0
  60. package/dist/coordinator/dag/reviewer-error-strategy.js.map +1 -0
  61. package/dist/coordinator/dag/splice-sub-plan.d.ts +12 -0
  62. package/dist/coordinator/dag/splice-sub-plan.d.ts.map +1 -0
  63. package/dist/coordinator/dag/splice-sub-plan.js +41 -0
  64. package/dist/coordinator/dag/splice-sub-plan.js.map +1 -0
  65. package/dist/coordinator/dag/subagent-state-oracle.d.ts +19 -0
  66. package/dist/coordinator/dag/subagent-state-oracle.d.ts.map +1 -0
  67. package/dist/coordinator/dag/subagent-state-oracle.js +31 -0
  68. package/dist/coordinator/dag/subagent-state-oracle.js.map +1 -0
  69. package/dist/coordinator/dag/template-finalizer.d.ts +11 -0
  70. package/dist/coordinator/dag/template-finalizer.d.ts.map +1 -0
  71. package/dist/coordinator/dag/template-finalizer.js +17 -0
  72. package/dist/coordinator/dag/template-finalizer.js.map +1 -0
  73. package/dist/coordinator/dispatch/subagent.d.ts.map +1 -1
  74. package/dist/coordinator/dispatch/subagent.js +6 -12
  75. package/dist/coordinator/dispatch/subagent.js.map +1 -1
  76. package/dist/coordinator/index.d.ts +6 -0
  77. package/dist/coordinator/index.d.ts.map +1 -1
  78. package/dist/coordinator/index.js +6 -0
  79. package/dist/coordinator/index.js.map +1 -1
  80. package/dist/coordinator/planning/one-shot.d.ts.map +1 -1
  81. package/dist/coordinator/planning/one-shot.js +14 -7
  82. package/dist/coordinator/planning/one-shot.js.map +1 -1
  83. package/dist/index.d.ts +8 -2
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +5 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/logger/default-request-logger.d.ts +18 -6
  88. package/dist/logger/default-request-logger.d.ts.map +1 -1
  89. package/dist/logger/default-request-logger.js +15 -4
  90. package/dist/logger/default-request-logger.js.map +1 -1
  91. package/dist/logger/noop-request-logger.d.ts +10 -5
  92. package/dist/logger/noop-request-logger.d.ts.map +1 -1
  93. package/dist/logger/noop-request-logger.js +4 -3
  94. package/dist/logger/noop-request-logger.js.map +1 -1
  95. package/dist/logger/session-request-logger.d.ts +50 -0
  96. package/dist/logger/session-request-logger.d.ts.map +1 -0
  97. package/dist/logger/session-request-logger.js +151 -0
  98. package/dist/logger/session-request-logger.js.map +1 -0
  99. package/dist/pipeline/context.d.ts +8 -3
  100. package/dist/pipeline/context.d.ts.map +1 -1
  101. package/dist/pipeline/default-pipeline.d.ts +27 -4
  102. package/dist/pipeline/default-pipeline.d.ts.map +1 -1
  103. package/dist/pipeline/default-pipeline.js +42 -7
  104. package/dist/pipeline/default-pipeline.js.map +1 -1
  105. package/dist/pipeline/handlers/coordinator.d.ts +0 -3
  106. package/dist/pipeline/handlers/coordinator.d.ts.map +1 -1
  107. package/dist/pipeline/handlers/coordinator.js +33 -22
  108. package/dist/pipeline/handlers/coordinator.js.map +1 -1
  109. package/dist/pipeline/handlers/dag-coordinator.d.ts +47 -0
  110. package/dist/pipeline/handlers/dag-coordinator.d.ts.map +1 -0
  111. package/dist/pipeline/handlers/dag-coordinator.js +369 -0
  112. package/dist/pipeline/handlers/dag-coordinator.js.map +1 -0
  113. package/dist/pipeline/handlers/index.d.ts +7 -0
  114. package/dist/pipeline/handlers/index.d.ts.map +1 -1
  115. package/dist/pipeline/handlers/index.js +5 -1
  116. package/dist/pipeline/handlers/index.js.map +1 -1
  117. package/dist/pipeline/handlers/rag-query.d.ts.map +1 -1
  118. package/dist/pipeline/handlers/rag-query.js +1 -0
  119. package/dist/pipeline/handlers/rag-query.js.map +1 -1
  120. package/dist/pipeline/handlers/subagent.d.ts.map +1 -1
  121. package/dist/pipeline/handlers/subagent.js +0 -2
  122. package/dist/pipeline/handlers/subagent.js.map +1 -1
  123. package/dist/pipeline/handlers/summarize.d.ts.map +1 -1
  124. package/dist/pipeline/handlers/summarize.js +5 -0
  125. package/dist/pipeline/handlers/summarize.js.map +1 -1
  126. package/dist/pipeline/handlers/tool-loop.d.ts.map +1 -1
  127. package/dist/pipeline/handlers/tool-loop.js +16 -0
  128. package/dist/pipeline/handlers/tool-loop.js.map +1 -1
  129. package/dist/pipeline/handlers/translate.d.ts.map +1 -1
  130. package/dist/pipeline/handlers/translate.js +1 -0
  131. package/dist/pipeline/handlers/translate.js.map +1 -1
  132. package/dist/pipeline/index.d.ts +2 -1
  133. package/dist/pipeline/index.d.ts.map +1 -1
  134. package/dist/pipeline/index.js +1 -1
  135. package/dist/pipeline/index.js.map +1 -1
  136. package/dist/session/session-graph-factory.d.ts +66 -0
  137. package/dist/session/session-graph-factory.d.ts.map +1 -0
  138. package/dist/session/session-graph-factory.js +63 -0
  139. package/dist/session/session-graph-factory.js.map +1 -0
  140. package/dist/session/session-graph.d.ts +54 -0
  141. package/dist/session/session-graph.d.ts.map +1 -0
  142. package/dist/session/session-graph.js +76 -0
  143. package/dist/session/session-graph.js.map +1 -0
  144. package/dist/session/session-registry.d.ts +89 -0
  145. package/dist/session/session-registry.d.ts.map +1 -0
  146. package/dist/session/session-registry.js +279 -0
  147. package/dist/session/session-registry.js.map +1 -0
  148. package/dist/subagent/direct-llm-subagent.d.ts.map +1 -1
  149. package/dist/subagent/direct-llm-subagent.js +0 -2
  150. package/dist/subagent/direct-llm-subagent.js.map +1 -1
  151. package/dist/subagent/smart-agent-subagent.d.ts.map +1 -1
  152. package/dist/subagent/smart-agent-subagent.js +3 -3
  153. package/dist/subagent/smart-agent-subagent.js.map +1 -1
  154. package/package.json +14 -14
@@ -0,0 +1,15 @@
1
+ import type { ErrorContext, ErrorReaction, IErrorStrategy, IReviewStrategy, PlanNode } from '@mcp-abap-adt/llm-agent';
2
+ /**
3
+ * Error strategy that delegates recovery to the reviewer: on a node failure it
4
+ * asks the reviewer to replan the REMAINING objective against current state
5
+ * (`reviewExecutionFailure`), returning a `revise` reaction (whole-remainder
6
+ * swap) or `abort`. Stateless — the interpreter owns the per-run budget.
7
+ */
8
+ export declare class ReviewerErrorStrategy implements IErrorStrategy {
9
+ private readonly reviewer;
10
+ readonly maxReplans: number;
11
+ readonly name = "reviewer";
12
+ constructor(reviewer: IReviewStrategy, maxReplans?: number);
13
+ onNodeFailure(node: PlanNode, error: unknown, ctx: ErrorContext): Promise<ErrorReaction>;
14
+ }
15
+ //# sourceMappingURL=reviewer-error-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer-error-strategy.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dag/reviewer-error-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAGxD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,UAAU;IAHrB,QAAQ,CAAC,IAAI,cAAc;gBAER,QAAQ,EAAE,eAAe,EACjC,UAAU,SAAI;IAGnB,aAAa,CACjB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,aAAa,CAAC;CAwB1B"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Error strategy that delegates recovery to the reviewer: on a node failure it
3
+ * asks the reviewer to replan the REMAINING objective against current state
4
+ * (`reviewExecutionFailure`), returning a `revise` reaction (whole-remainder
5
+ * swap) or `abort`. Stateless — the interpreter owns the per-run budget.
6
+ */
7
+ export class ReviewerErrorStrategy {
8
+ reviewer;
9
+ maxReplans;
10
+ name = 'reviewer';
11
+ constructor(reviewer, maxReplans = 4) {
12
+ this.reviewer = reviewer;
13
+ this.maxReplans = maxReplans;
14
+ }
15
+ async onNodeFailure(node, error, ctx) {
16
+ if (ctx.remainingReplans <= 0 ||
17
+ !this.reviewer.reviewExecutionFailure ||
18
+ !ctx.plan ||
19
+ !ctx.completedResults) {
20
+ return { action: 'abort' };
21
+ }
22
+ const decision = await this.reviewer.reviewExecutionFailure({
23
+ objective: ctx.plan.objective,
24
+ plan: ctx.plan,
25
+ trace: ctx.completedResults,
26
+ failedNodeId: node.id,
27
+ error: error instanceof Error ? error.message : String(error),
28
+ agents: ctx.agents,
29
+ sessionId: ctx.sessionId,
30
+ signal: ctx.signal,
31
+ });
32
+ if (decision.action === 'revise') {
33
+ return { action: 'revise', revisedPlan: decision.revisedPlan };
34
+ }
35
+ return { action: 'abort' };
36
+ }
37
+ }
38
+ //# sourceMappingURL=reviewer-error-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer-error-strategy.js","sourceRoot":"","sources":["../../../src/coordinator/dag/reviewer-error-strategy.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IAGb;IACR;IAHF,IAAI,GAAG,UAAU,CAAC;IAC3B,YACmB,QAAyB,EACjC,aAAa,CAAC;QADN,aAAQ,GAAR,QAAQ,CAAiB;QACjC,eAAU,GAAV,UAAU,CAAI;IACtB,CAAC;IAEJ,KAAK,CAAC,aAAa,CACjB,IAAc,EACd,KAAc,EACd,GAAiB;QAEjB,IACE,GAAG,CAAC,gBAAgB,IAAI,CAAC;YACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB;YACrC,CAAC,GAAG,CAAC,IAAI;YACT,CAAC,GAAG,CAAC,gBAAgB,EACrB,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC1D,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,gBAAgB;YAC3B,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { DagPlan } from '@mcp-abap-adt/llm-agent';
2
+ /**
3
+ * Replace node `nodeId` in `plan` with the nodes of `subPlan`, flat (no nesting):
4
+ * - sub-plan node ids are namespaced `${nodeId}:${id}` (collision-safe);
5
+ * - sub-plan ROOT nodes (no intra-sub deps) inherit the replaced node's
6
+ * `dependsOn` AND `needsInput`;
7
+ * - consumers that depended on `nodeId` now depend on the sub-plan's TERMINAL
8
+ * nodes (sub nodes nothing else in the sub-plan depends on).
9
+ * Returns a new DagPlan (no mutation of the input).
10
+ */
11
+ export declare function spliceSubPlan(plan: DagPlan, nodeId: string, subPlan: DagPlan): DagPlan;
12
+ //# sourceMappingURL=splice-sub-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splice-sub-plan.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dag/splice-sub-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,OAAO,CAkCT"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Replace node `nodeId` in `plan` with the nodes of `subPlan`, flat (no nesting):
3
+ * - sub-plan node ids are namespaced `${nodeId}:${id}` (collision-safe);
4
+ * - sub-plan ROOT nodes (no intra-sub deps) inherit the replaced node's
5
+ * `dependsOn` AND `needsInput`;
6
+ * - consumers that depended on `nodeId` now depend on the sub-plan's TERMINAL
7
+ * nodes (sub nodes nothing else in the sub-plan depends on).
8
+ * Returns a new DagPlan (no mutation of the input).
9
+ */
10
+ export function spliceSubPlan(plan, nodeId, subPlan) {
11
+ const replaced = plan.nodes.find((n) => n.id === nodeId);
12
+ if (!replaced)
13
+ return plan;
14
+ const ns = (id) => `${nodeId}:${id}`;
15
+ const subDependedOn = new Set(subPlan.nodes.flatMap((n) => n.dependsOn ?? []));
16
+ const terminals = subPlan.nodes
17
+ .filter((n) => !subDependedOn.has(n.id))
18
+ .map((n) => ns(n.id));
19
+ const inheritedDeps = replaced.dependsOn ?? [];
20
+ const splicedSubNodes = subPlan.nodes.map((n) => {
21
+ const intra = (n.dependsOn ?? []).map(ns);
22
+ const isRoot = (n.dependsOn ?? []).length === 0;
23
+ return {
24
+ ...n,
25
+ id: ns(n.id),
26
+ dependsOn: isRoot ? inheritedDeps : intra,
27
+ needsInput: isRoot ? (replaced.needsInput ?? n.needsInput) : n.needsInput,
28
+ };
29
+ });
30
+ const rest = plan.nodes
31
+ .filter((n) => n.id !== nodeId)
32
+ .map((n) => {
33
+ const deps = n.dependsOn ?? [];
34
+ if (!deps.includes(nodeId))
35
+ return n;
36
+ const rewired = deps.filter((d) => d !== nodeId).concat(terminals);
37
+ return { ...n, dependsOn: rewired };
38
+ });
39
+ return { ...plan, nodes: [...rest, ...splicedSubNodes] };
40
+ }
41
+ //# sourceMappingURL=splice-sub-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splice-sub-plan.js","sourceRoot":"","sources":["../../../src/coordinator/dag/splice-sub-plan.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAa,EACb,MAAc,EACd,OAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC;IAE7C,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAChD,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;IAE/C,MAAM,eAAe,GAAe,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAChD,OAAO;YACL,GAAG,CAAC;YACJ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;YACzC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnE,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { IStateOracle, ISubAgent, StateOracleInput, StateOracleResult } from '@mcp-abap-adt/llm-agent';
2
+ /**
3
+ * Adapter wrapping a raw ISubAgent as an IStateOracle. The wrapped
4
+ * subagent runs a full pipeline whose LLM activity is logged by its
5
+ * own handlers under their own component labels (`tool-loop`,
6
+ * `classifier`, …) via the SHARED session requestLogger keyed on the
7
+ * forwarded traceId. To avoid double-counting, this adapter
8
+ * intentionally returns `usage: undefined`; the handler's
9
+ * `logRoleUsage('oracle', …)` is therefore a no-op for subagent-backed
10
+ * oracles. A pure-LLM IStateOracle implementation that bypasses
11
+ * pipeline logging would populate `usage` normally.
12
+ */
13
+ export declare class SubAgentStateOracle implements IStateOracle {
14
+ private readonly inner;
15
+ constructor(inner: ISubAgent);
16
+ get name(): string;
17
+ query(input: StateOracleInput): Promise<StateOracleResult>;
18
+ }
19
+ //# sourceMappingURL=subagent-state-oracle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-state-oracle.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dag/subagent-state-oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAE7C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAUjE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Adapter wrapping a raw ISubAgent as an IStateOracle. The wrapped
3
+ * subagent runs a full pipeline whose LLM activity is logged by its
4
+ * own handlers under their own component labels (`tool-loop`,
5
+ * `classifier`, …) via the SHARED session requestLogger keyed on the
6
+ * forwarded traceId. To avoid double-counting, this adapter
7
+ * intentionally returns `usage: undefined`; the handler's
8
+ * `logRoleUsage('oracle', …)` is therefore a no-op for subagent-backed
9
+ * oracles. A pure-LLM IStateOracle implementation that bypasses
10
+ * pipeline logging would populate `usage` normally.
11
+ */
12
+ export class SubAgentStateOracle {
13
+ inner;
14
+ constructor(inner) {
15
+ this.inner = inner;
16
+ }
17
+ get name() {
18
+ return this.inner.name;
19
+ }
20
+ async query(input) {
21
+ const res = await this.inner.run({
22
+ task: input.query,
23
+ sessionId: input.sessionId,
24
+ signal: input.signal,
25
+ trace: input.trace,
26
+ sessionLogger: input.sessionLogger,
27
+ });
28
+ return { answer: res.output, usage: undefined };
29
+ }
30
+ }
31
+ //# sourceMappingURL=subagent-state-oracle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-state-oracle.js","sourceRoot":"","sources":["../../../src/coordinator/dag/subagent-state-oracle.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;IAAG,CAAC;IAEjD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAuB;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/B,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { FinalizerInput, FinalizerResult, IFinalizer } from '@mcp-abap-adt/llm-agent';
2
+ /**
3
+ * Deterministic markdown join over the execution trace. No LLM. Useful
4
+ * when the plan is already shaped per-section and the answer is just
5
+ * the concatenation of the section outputs.
6
+ */
7
+ export declare class TemplateFinalizer implements IFinalizer {
8
+ readonly name = "template";
9
+ finalize(input: FinalizerInput): Promise<FinalizerResult>;
10
+ }
11
+ //# sourceMappingURL=template-finalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-finalizer.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dag/template-finalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,UAAU,EACX,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,CAAC,IAAI,cAAc;IAErB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;CAQhE"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Deterministic markdown join over the execution trace. No LLM. Useful
3
+ * when the plan is already shaped per-section and the answer is just
4
+ * the concatenation of the section outputs.
5
+ */
6
+ export class TemplateFinalizer {
7
+ name = 'template';
8
+ async finalize(input) {
9
+ let out = '';
10
+ for (const t of input.executionTrace) {
11
+ out += `# Node ${t.nodeId} — ${t.goal}\n${t.output}\n\n`;
12
+ }
13
+ input.onPartial?.({ kind: 'content', delta: out });
14
+ return { output: out };
15
+ }
16
+ }
17
+ //# sourceMappingURL=template-finalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-finalizer.js","sourceRoot":"","sources":["../../../src/coordinator/dag/template-finalizer.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,UAAU,CAAC;IAE3B,KAAK,CAAC,QAAQ,CAAC,KAAqB;QAClC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACrC,GAAG,IAAI,UAAU,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dispatch/subagent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,UAAU,EACX,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IAG5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAF5C,QAAQ,CAAC,IAAI,cAAc;gBAEE,cAAc,CAAC,EAAE,uBAAuB,YAAA;IAE/D,QAAQ,CACZ,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,UAAU,CAAC;CA0GvB"}
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../../src/coordinator/dispatch/subagent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,UAAU,EACX,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IAG5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAF5C,QAAQ,CAAC,IAAI,cAAc;gBAEE,cAAc,CAAC,EAAE,uBAAuB,YAAA;IAE/D,QAAQ,CACZ,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,UAAU,CAAC;CAkGvB"}
@@ -36,14 +36,12 @@ export class SubAgentDispatch {
36
36
  };
37
37
  }
38
38
  const task = composeTask(step, ctx);
39
- const childLayer = (ctx.layer ?? 0) + 1;
40
39
  let context;
41
40
  if (this.contextBuilder) {
42
41
  const built = await this.contextBuilder.build({
43
42
  task,
44
43
  step,
45
44
  agent: sub,
46
- layer: childLayer,
47
45
  inputText: ctx.inputText,
48
46
  sessionId: ctx.sessionId,
49
47
  signal: ctx.signal,
@@ -68,27 +66,23 @@ export class SubAgentDispatch {
68
66
  context,
69
67
  sessionId: ctx.sessionId,
70
68
  signal: ctx.signal,
71
- layer: childLayer,
72
69
  });
73
- // Epicfail propagation: do NOT retry, do NOT transform — preserve trace
74
- // by attaching this layer's frame and passing it upward in StepResult.
70
+ // Epicfail propagation: do NOT retry, do NOT transform — surface the
71
+ // flat trace upward in StepResult unchanged (or build one if absent).
75
72
  if (res.errorClass === 'epicfail') {
76
- const childTrace = res.epicFailTrace;
77
- const wrappedTrace = {
78
- layer: ctx.layer ?? 0,
73
+ const trace = res.epicFailTrace ?? {
79
74
  stepId: step.id,
80
75
  agentName,
81
76
  attempts: [],
82
- originalError: childTrace?.originalError ?? `epicfail from '${agentName}'`,
83
- childTrace,
77
+ originalError: `epicfail from '${agentName}'`,
84
78
  };
85
79
  return {
86
80
  stepId: step.id,
87
81
  output: '',
88
82
  durationMs: Date.now() - started,
89
83
  ok: false,
90
- error: `epicfail from '${agentName}': ${childTrace?.originalError ?? 'unknown'}`,
91
- epicFailTrace: wrappedTrace,
84
+ error: `epicfail from '${agentName}': ${trace.originalError}`,
85
+ epicFailTrace: trace,
92
86
  };
93
87
  }
94
88
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../../src/coordinator/dispatch/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../../src/coordinator/dispatch/subagent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  export { AutoActivation } from './activation/auto.js';
2
2
  export { ExplicitActivation } from './activation/explicit.js';
3
+ export { AbortErrorStrategy } from './dag/abort-error-strategy.js';
4
+ export { DagPlanInterpreter } from './dag/dag-plan-interpreter.js';
5
+ export { LlmDagPlanner } from './dag/llm-dag-planner.js';
6
+ export { LlmReviewStrategy } from './dag/llm-review-strategy.js';
7
+ export { NoopReviewStrategy } from './dag/noop-review-strategy.js';
8
+ export { ReplanErrorStrategy } from './dag/replan-error-strategy.js';
3
9
  export { HybridDispatch } from './dispatch/hybrid.js';
4
10
  export { SelfDispatch } from './dispatch/self.js';
5
11
  export { SubAgentDispatch } from './dispatch/subagent.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,5 +1,11 @@
1
1
  export { AutoActivation } from './activation/auto.js';
2
2
  export { ExplicitActivation } from './activation/explicit.js';
3
+ export { AbortErrorStrategy } from './dag/abort-error-strategy.js';
4
+ export { DagPlanInterpreter } from './dag/dag-plan-interpreter.js';
5
+ export { LlmDagPlanner } from './dag/llm-dag-planner.js';
6
+ export { LlmReviewStrategy } from './dag/llm-review-strategy.js';
7
+ export { NoopReviewStrategy } from './dag/noop-review-strategy.js';
8
+ export { ReplanErrorStrategy } from './dag/replan-error-strategy.js';
3
9
  export { HybridDispatch } from './dispatch/hybrid.js';
4
10
  export { SelfDispatch } from './dispatch/self.js';
5
11
  export { SubAgentDispatch } from './dispatch/subagent.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"one-shot.d.ts","sourceRoot":"","sources":["../../../src/coordinator/planning/one-shot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,IAAI,EACJ,iBAAiB,EACjB,IAAI,EACJ,QAAQ,EACR,UAAU,EACX,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IAG3C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,QAAQ,CAAC,IAAI,cAAc;gBAEE,UAAU,EAAE,IAAI;IAEvC,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2F/D,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO;IAInE,WAAW,CACf,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;CAOjB"}
1
+ {"version":3,"file":"one-shot.d.ts","sourceRoot":"","sources":["../../../src/coordinator/planning/one-shot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,IAAI,EACJ,iBAAiB,EACjB,IAAI,EACJ,QAAQ,EACR,UAAU,EACX,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IAG3C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,QAAQ,CAAC,IAAI,cAAc;gBAEE,UAAU,EAAE,IAAI;IAEvC,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkG/D,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO;IAInE,WAAW,CACf,IAAI,EAAE,mBAAmB,EACzB,SAAS,EAAE,QAAQ,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;CAOjB"}
@@ -24,6 +24,7 @@ review, etc.).
24
24
  Emit a plan-level "objective" (the shared purpose) so all steps stay aligned.
25
25
  For each step, choose the best agent from the list (or omit "agent" if no specialist fits).
26
26
  If the request is too ambiguous to plan, respond with ONLY {"clarification":"<your question>"}.
27
+ If the request needs no decomposition (it can be answered directly without breaking it into steps), return an empty steps array: {"steps":[]}.
27
28
  Otherwise respond with ONLY a JSON object of shape:
28
29
  {"objective":"...","steps":[{"id":"step-1","goal":"...","agent":"optional-name","needsInput":false}],"rationale":"..."}
29
30
 
@@ -37,9 +38,12 @@ ${agentsBlock || '(none — use self-dispatch)'}${skillBlock}`;
37
38
  throw response.error;
38
39
  const jsonText = extractJson(response.value.content);
39
40
  const parsed = JSON.parse(jsonText);
41
+ // A clarification must stand alone. Combined with any steps array (incl. [])
42
+ // it is ambiguous mixed output → fail loud, keeping a clean three-way union:
43
+ // {clarification} | {steps:[...]} | {steps:[]} (answer-directly).
40
44
  if (parsed.clarification) {
41
- if ((parsed.steps?.length ?? 0) > 0) {
42
- throw new Error(`Planner returned both a clarification and steps (ambiguous): ${jsonText.slice(0, 200)}`);
45
+ if (Array.isArray(parsed.steps)) {
46
+ throw new Error(`Planner returned both a clarification and a steps array (ambiguous): ${jsonText.slice(0, 200)}`);
43
47
  }
44
48
  return {
45
49
  steps: [],
@@ -48,11 +52,14 @@ ${agentsBlock || '(none — use self-dispatch)'}${skillBlock}`;
48
52
  source: 'planner-llm',
49
53
  };
50
54
  }
51
- // Without a clarification, a usable plan must carry at least one valid step.
52
- // An empty/malformed plan must fail loud (→ COORDINATOR_PLAN_FAILED) rather
53
- // than silently produce blank coordinator output.
54
- if (!Array.isArray(parsed.steps) || parsed.steps.length === 0) {
55
- throw new Error(`Planner returned neither steps nor a clarification: ${jsonText.slice(0, 200)}`);
55
+ // A missing / non-array `steps` is malformed → fail loud
56
+ // (→ COORDINATOR_PLAN_FAILED). An explicit empty array `steps: []` is the
57
+ // answer-directly signal and is allowed through (the for-loop below is a
58
+ // no-op for it). The empty plan is consumed by the CoordinatorHandler
59
+ // answer-directly branch (#155 Task 2), which self-dispatches the original
60
+ // request; this planner only produces the signal.
61
+ if (!Array.isArray(parsed.steps)) {
62
+ throw new Error(`Planner returned no steps array and no clarification: ${jsonText.slice(0, 200)}`);
56
63
  }
57
64
  for (const s of parsed.steps) {
58
65
  if (typeof s.goal !== 'string' || s.goal.trim() === '') {
@@ -1 +1 @@
1
- {"version":3,"file":"one-shot.js","sourceRoot":"","sources":["../../../src/coordinator/planning/one-shot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"one-shot.js","sourceRoot":"","sources":["../../../src/coordinator/planning/one-shot.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAGG;IAFpB,IAAI,GAAG,UAAU,CAAC;IAE3B,YAA6B,UAAgB;QAAhB,eAAU,GAAV,UAAU,CAAM;IAAG,CAAC;IAEjD,KAAK,CAAC,gBAAgB,CAAC,GAAwB;QAC7C,MAAM,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY;YACjC,CAAC,CAAC,uCAAuC,GAAG,CAAC,YAAY,IAAI;YAC7D,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG;;;;;;;;;;;;;;EAcvB,WAAW,IAAI,4BAA4B,GAAG,UAAU,EAAE,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE;SACzC,EACD,EAAE,EACF,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CACjD,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,QAAQ,CAAC,KAAK,CAAC;QAEvC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAUjC,CAAC;QAEF,6EAA6E;QAC7E,6EAA6E;QAC7E,kEAAkE;QAClE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,wEAAwE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACjG,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,aAAa;aACtB,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,2EAA2E;QAC3E,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAe,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,KAAK;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,IAAyB,EAAE,WAAuB;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAyB,EACzB,SAAqB;QAErB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;CACF;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,iDAAiD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,8 @@ export { NonStreamingLlm } from './adapters/non-streaming-llm.js';
10
10
  export { OrchestratorError, SmartAgent, type SmartAgentConfig, type SmartAgentDeps, type SmartAgentRagStores, type SmartAgentReconfigureOptions, type SmartAgentResponse, type StopReason, } from './agent.js';
11
11
  export { type BuilderMcpConfig, type BuilderPromptsConfig, SmartAgentBuilder, type SmartAgentBuilderConfig, type SmartAgentHandle, } from './builder.js';
12
12
  export { ConfigWatcher, type ConfigWatcherOptions, type HotReloadableConfig, } from './config/config-watcher.js';
13
- export { AutoActivation, ExplicitActivation, HybridDispatch, OneShotPlanning, ReplanOnErrorPlanning, SelfDispatch, SkillStepsPlanning, SubAgentDispatch, } from './coordinator/index.js';
13
+ export { FINALIZER_SYSTEM, LlmFinalizer, PassthroughFinalizer, SubAgentStateOracle, TemplateFinalizer, } from './coordinator/dag/index.js';
14
+ export { AbortErrorStrategy, AutoActivation, DagPlanInterpreter, ExplicitActivation, HybridDispatch, LlmDagPlanner, LlmReviewStrategy, NoopReviewStrategy, OneShotPlanning, ReplanErrorStrategy, ReplanOnErrorPlanning, SelfDispatch, SkillStepsPlanning, SubAgentDispatch, } from './coordinator/index.js';
14
15
  export { HealthChecker, type HealthCheckerDeps, } from './health/health-checker.js';
15
16
  export { HistoryMemory } from './history/history-memory.js';
16
17
  export { HistorySummarizer } from './history/history-summarizer.js';
@@ -20,7 +21,7 @@ export { NoopRequestLogger } from './logger/noop-request-logger.js';
20
21
  export { SessionLogger } from './logger/session-logger.js';
21
22
  export { type CounterSnapshot, type HistogramSnapshot, InMemoryMetrics, type MetricsSnapshot, } from './metrics/in-memory-metrics.js';
22
23
  export { NoopMetrics } from './metrics/noop-metrics.js';
23
- export { type BuiltInStageType, buildDefaultHandlerRegistry, type ControlFlowType, DefaultPipeline, evaluateCondition, type IStageHandler, type PipelineContext, PipelineExecutor, type StageDefinition, type StageType, } from './pipeline/index.js';
24
+ export { type BuiltInStageType, buildDefaultHandlerRegistry, type ControlFlowType, type DagCoordinatorHandlerDeps, DefaultPipeline, type DefaultPipelineOptions, evaluateCondition, type IStageHandler, type PipelineContext, PipelineExecutor, type StageDefinition, type StageType, } from './pipeline/index.js';
24
25
  export { DEFAULT_TOOL_SELECTION, ScoreThresholdToolSelection, TopKToolSelection, } from './pipeline/tool-selection/index.js';
25
26
  export type { IPluginLoader, LoadedPlugins, PluginExports, } from './plugins/index.js';
26
27
  export { emptyLoadedPlugins, FileSystemPluginLoader, type FileSystemPluginLoaderConfig, getDefaultPluginDirs, loadPlugins, mergePluginExports, } from './plugins/index.js';
@@ -31,7 +32,12 @@ export { RateLimiterLlm } from './resilience/rate-limiter-llm.js';
31
32
  export { RetryLlm, type RetryOptions } from './resilience/retry-llm.js';
32
33
  export { type TokenBucketConfig, TokenBucketRateLimiter, } from './resilience/token-bucket-rate-limiter.js';
33
34
  export { NoopSessionManager } from './session/noop-session-manager.js';
35
+ export { SessionGraph } from './session/session-graph.js';
36
+ export type { SessionAgentParts, SessionGraphFactoryOptions, SessionGraphIdentity, } from './session/session-graph-factory.js';
37
+ export { SessionGraphFactory } from './session/session-graph-factory.js';
34
38
  export { SessionManager } from './session/session-manager.js';
39
+ export type { SessionGraphSource, SessionRegistryOptions, } from './session/session-registry.js';
40
+ export { SessionRegistry } from './session/session-registry.js';
35
41
  export { ClaudeSkillManager, CodexSkillManager, FileSystemSkillManager, } from './skills/index.js';
36
42
  export { DefaultSubAgentContextBuilder, type DefaultSubAgentContextBuilderConfig, type SubAgentRetrievalSource, } from './subagent/default-context-builder.js';
37
43
  export { DirectLlmSubAgent, type DirectLlmSubAgentOptions, } from './subagent/direct-llm-subagent.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,10 +19,11 @@ export { SmartAgentBuilder, } from './builder.js';
19
19
  // Config
20
20
  // ---------------------------------------------------------------------------
21
21
  export { ConfigWatcher, } from './config/config-watcher.js';
22
+ export { FINALIZER_SYSTEM, LlmFinalizer, PassthroughFinalizer, SubAgentStateOracle, TemplateFinalizer, } from './coordinator/dag/index.js';
22
23
  // ---------------------------------------------------------------------------
23
24
  // Coordinator strategies
24
25
  // ---------------------------------------------------------------------------
25
- export { AutoActivation, ExplicitActivation, HybridDispatch, OneShotPlanning, ReplanOnErrorPlanning, SelfDispatch, SkillStepsPlanning, SubAgentDispatch, } from './coordinator/index.js';
26
+ export { AbortErrorStrategy, AutoActivation, DagPlanInterpreter, ExplicitActivation, HybridDispatch, LlmDagPlanner, LlmReviewStrategy, NoopReviewStrategy, OneShotPlanning, ReplanErrorStrategy, ReplanOnErrorPlanning, SelfDispatch, SkillStepsPlanning, SubAgentDispatch, } from './coordinator/index.js';
26
27
  // ---------------------------------------------------------------------------
27
28
  // Health
28
29
  // ---------------------------------------------------------------------------
@@ -71,7 +72,10 @@ export { TokenBucketRateLimiter, } from './resilience/token-bucket-rate-limiter.
71
72
  // Session
72
73
  // ---------------------------------------------------------------------------
73
74
  export { NoopSessionManager } from './session/noop-session-manager.js';
75
+ export { SessionGraph } from './session/session-graph.js';
76
+ export { SessionGraphFactory } from './session/session-graph-factory.js';
74
77
  export { SessionManager } from './session/session-manager.js';
78
+ export { SessionRegistry } from './session/session-registry.js';
75
79
  // ---------------------------------------------------------------------------
76
80
  // Skills
77
81
  // ---------------------------------------------------------------------------
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAC9E,OAAO,EAGL,UAAU,GAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,UAAU,GAOX,MAAM,YAAY,CAAC;AACpB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,OAAO,EAGL,iBAAiB,GAGlB,MAAM,cAAc,CAAC;AACtB,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EACL,aAAa,GAGd,MAAM,4BAA4B,CAAC;AACpC,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAC9E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EACL,aAAa,GAEd,MAAM,4BAA4B,CAAC;AACpC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMpE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EAGL,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAC9E,OAAO,EAEL,2BAA2B,EAE3B,eAAe,EACf,iBAAiB,EAGjB,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAM5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAEtB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,OAAO,EACL,oBAAoB,EAEpB,cAAc,EACd,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAqB,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEL,sBAAsB,GACvB,MAAM,2CAA2C,CAAC;AACnD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,6BAA6B,GAG9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAC3C,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAoB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAExE,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- import type { IRequestLogger, LlmCallEntry, RagQueryEntry, RequestSummary, ToolCallEntry } from '@mcp-abap-adt/llm-agent';
1
+ import type { IRequestLogger, LlmCallEntry, LlmComponent, RagQueryEntry, RequestSummary, TokenCategory, ToolCallEntry } from '@mcp-abap-adt/llm-agent';
2
+ /**
3
+ * Component → token category mapping (shared with SessionRequestLogger so
4
+ * /v1/usage categorizes per-session entries the same way single-request
5
+ * deployments do). See review MEDIUM #4.
6
+ */
7
+ export declare const CATEGORY_MAP: Record<LlmComponent, TokenCategory>;
2
8
  export declare class DefaultRequestLogger implements IRequestLogger {
3
9
  private initLlmCalls;
4
10
  private requestLlmCalls;
@@ -6,12 +12,18 @@ export declare class DefaultRequestLogger implements IRequestLogger {
6
12
  private toolCallEntries;
7
13
  private requestStartMs;
8
14
  private requestDurationMs;
9
- startRequest(): void;
10
- endRequest(): void;
15
+ startRequest(_requestId?: string): void;
16
+ endRequest(_requestId?: string): void;
17
+ /** Single-request logger has no nesting/delta map — dropRequest is a no-op. */
18
+ dropRequest(_requestId?: string): void;
11
19
  logLlmCall(entry: LlmCallEntry): void;
12
- logRagQuery(entry: RagQueryEntry): void;
13
- logToolCall(entry: ToolCallEntry): void;
14
- getSummary(): RequestSummary;
20
+ logRagQuery(entry: RagQueryEntry & {
21
+ requestId?: string;
22
+ }): void;
23
+ logToolCall(entry: ToolCallEntry & {
24
+ requestId?: string;
25
+ }): void;
26
+ getSummary(_requestId?: string): RequestSummary;
15
27
  reset(): void;
16
28
  }
17
29
  //# sourceMappingURL=default-request-logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-request-logger.d.ts","sourceRoot":"","sources":["../../src/logger/default-request-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAEZ,aAAa,EACb,cAAc,EAGd,aAAa,EACd,MAAM,yBAAyB,CAAC;AAsBjC,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,YAAY,IAAI,IAAI;IAQpB,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAQrC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvC,UAAU,IAAI,cAAc;IA8B5B,KAAK,IAAI,IAAI;CAQd"}
1
+ {"version":3,"file":"default-request-logger.d.ts","sourceRoot":"","sources":["../../src/logger/default-request-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EAEd,aAAa,EACb,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAW5D,CAAC;AAaF,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAE9B,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAMrC,+EAA+E;IAC/E,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAEtC,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAQrC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIhE,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIhE,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc;IA8B/C,KAAK,IAAI,IAAI;CAQd"}
@@ -1,10 +1,19 @@
1
- const CATEGORY_MAP = {
1
+ /**
2
+ * Component → token category mapping (shared with SessionRequestLogger so
3
+ * /v1/usage categorizes per-session entries the same way single-request
4
+ * deployments do). See review MEDIUM #4.
5
+ */
6
+ export const CATEGORY_MAP = {
2
7
  'tool-loop': 'request',
3
8
  classifier: 'auxiliary',
4
9
  translate: 'auxiliary',
5
10
  'query-expander': 'auxiliary',
6
11
  helper: 'auxiliary',
7
12
  embedding: 'initialization',
13
+ planner: 'auxiliary',
14
+ reviewer: 'auxiliary',
15
+ finalizer: 'auxiliary',
16
+ oracle: 'auxiliary',
8
17
  };
9
18
  function emptyBucket() {
10
19
  return { promptTokens: 0, completionTokens: 0, totalTokens: 0, requests: 0 };
@@ -22,18 +31,20 @@ export class DefaultRequestLogger {
22
31
  toolCallEntries = [];
23
32
  requestStartMs = 0;
24
33
  requestDurationMs = 0;
25
- startRequest() {
34
+ startRequest(_requestId) {
26
35
  this.requestLlmCalls = [];
27
36
  this.ragQueryEntries = [];
28
37
  this.toolCallEntries = [];
29
38
  this.requestDurationMs = 0;
30
39
  this.requestStartMs = Date.now();
31
40
  }
32
- endRequest() {
41
+ endRequest(_requestId) {
33
42
  this.requestDurationMs = this.requestStartMs
34
43
  ? Date.now() - this.requestStartMs
35
44
  : 0;
36
45
  }
46
+ /** Single-request logger has no nesting/delta map — dropRequest is a no-op. */
47
+ dropRequest(_requestId) { }
37
48
  logLlmCall(entry) {
38
49
  if (entry.scope === 'initialization') {
39
50
  this.initLlmCalls.push(entry);
@@ -48,7 +59,7 @@ export class DefaultRequestLogger {
48
59
  logToolCall(entry) {
49
60
  this.toolCallEntries.push(entry);
50
61
  }
51
- getSummary() {
62
+ getSummary(_requestId) {
52
63
  const byModel = {};
53
64
  const byComponent = {};
54
65
  const byCategory = {};