@migor/agentia 0.10.1 → 0.10.3

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 (135) hide show
  1. package/CHANGELOG.md +917 -34
  2. package/README.en.md +6 -4
  3. package/README.md +4 -3
  4. package/dist/AGENTS.md +106 -33
  5. package/dist/core/limits.d.ts +33 -1
  6. package/dist/core/limits.js +37 -1
  7. package/dist/core/limits.js.map +1 -1
  8. package/dist/core/run.d.ts +2 -2
  9. package/dist/core/timeout.d.ts +5 -5
  10. package/dist/core/timeout.js +5 -5
  11. package/dist/core/tool.d.ts +2 -2
  12. package/dist/core/trace.d.ts +10 -1
  13. package/dist/core/trace.js +10 -1
  14. package/dist/core/trace.js.map +1 -1
  15. package/dist/engine/concurrency.d.ts +1 -1
  16. package/dist/engine/concurrency.js +1 -1
  17. package/dist/engine/errors.d.ts +2 -2
  18. package/dist/engine/errors.js +2 -2
  19. package/dist/engine/loop-result.d.ts +2 -2
  20. package/dist/engine/loop.js +91 -56
  21. package/dist/engine/loop.js.map +1 -1
  22. package/dist/engine/mcp-server-http.js +69 -36
  23. package/dist/engine/mcp-server-http.js.map +1 -1
  24. package/dist/engine/mcp-server-stdio.d.ts +0 -13
  25. package/dist/engine/mcp-server-stdio.js +42 -25
  26. package/dist/engine/mcp-server-stdio.js.map +1 -1
  27. package/dist/engine/mcp-server.d.ts +15 -0
  28. package/dist/engine/mcp-server.js +39 -8
  29. package/dist/engine/mcp-server.js.map +1 -1
  30. package/dist/engine/resume-input.d.ts +1 -1
  31. package/dist/engine/resume-input.js +1 -1
  32. package/dist/engine/retry.d.ts +15 -0
  33. package/dist/engine/retry.js +51 -2
  34. package/dist/engine/retry.js.map +1 -1
  35. package/dist/engine/span-scope.d.ts +15 -0
  36. package/dist/engine/span-scope.js +8 -1
  37. package/dist/engine/span-scope.js.map +1 -1
  38. package/dist/engine/spec.d.ts +5 -1
  39. package/dist/engine/spec.js.map +1 -1
  40. package/dist/engine/tracer.d.ts +8 -4
  41. package/dist/engine/tracer.js +24 -17
  42. package/dist/engine/tracer.js.map +1 -1
  43. package/dist/engine/turn.d.ts +2 -2
  44. package/dist/engine/turn.js +19 -4
  45. package/dist/engine/turn.js.map +1 -1
  46. package/dist/engine/types.d.ts +8 -3
  47. package/dist/eval/export.js +2 -2
  48. package/dist/eval/export.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.js +2 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/integrations/anthropic.d.ts +1 -1
  53. package/dist/integrations/anthropic.js +1 -1
  54. package/dist/integrations/anthropic.js.map +1 -1
  55. package/dist/integrations/file-sink.d.ts +2 -2
  56. package/dist/integrations/file-sink.js +2 -2
  57. package/dist/integrations/mcp-http.js +15 -88
  58. package/dist/integrations/mcp-http.js.map +1 -1
  59. package/dist/integrations/mcp-protocol.d.ts +86 -10
  60. package/dist/integrations/mcp-protocol.js +147 -1
  61. package/dist/integrations/mcp-protocol.js.map +1 -1
  62. package/dist/integrations/mcp-stdio.js +87 -52
  63. package/dist/integrations/mcp-stdio.js.map +1 -1
  64. package/dist/integrations/mcp.d.ts +1 -1
  65. package/dist/integrations/mcp.js +19 -3
  66. package/dist/integrations/mcp.js.map +1 -1
  67. package/dist/integrations/metrics-otlp.d.ts +1 -1
  68. package/dist/integrations/metrics-otlp.js +8 -2
  69. package/dist/integrations/metrics-otlp.js.map +1 -1
  70. package/dist/integrations/metrics-render.js +1 -1
  71. package/dist/integrations/metrics-render.js.map +1 -1
  72. package/dist/integrations/metrics-state.d.ts +2 -2
  73. package/dist/integrations/metrics-state.js +4 -4
  74. package/dist/integrations/metrics-state.js.map +1 -1
  75. package/dist/integrations/metrics.d.ts +2 -2
  76. package/dist/integrations/openai.d.ts +4 -1
  77. package/dist/integrations/openai.js +25 -6
  78. package/dist/integrations/openai.js.map +1 -1
  79. package/dist/integrations/otlp.d.ts +29 -6
  80. package/dist/integrations/otlp.js +128 -7
  81. package/dist/integrations/otlp.js.map +1 -1
  82. package/dist/integrations/report.d.ts +14 -2
  83. package/dist/integrations/report.js +39 -6
  84. package/dist/integrations/report.js.map +1 -1
  85. package/dist/runtime/memory.d.ts +5 -0
  86. package/dist/runtime/memory.js.map +1 -1
  87. package/dist/store/fsStore.js +9 -5
  88. package/dist/store/fsStore.js.map +1 -1
  89. package/dist/store/record.d.ts +2 -2
  90. package/dist/store/record.js +1 -1
  91. package/dist/store/sqliteStore.d.ts +2 -2
  92. package/dist/store/sqliteStore.js +3 -3
  93. package/dist/store/sqliteStore.js.map +1 -1
  94. package/dist/store/store.d.ts +32 -6
  95. package/dist/store/store.js +36 -5
  96. package/dist/store/store.js.map +1 -1
  97. package/dist/toolkit/collect.d.ts +11 -5
  98. package/dist/toolkit/collect.js +10 -4
  99. package/dist/toolkit/collect.js.map +1 -1
  100. package/dist/toolkit/module.js +78 -1
  101. package/dist/toolkit/module.js.map +1 -1
  102. package/dist/toolkit/prompt.d.ts +1 -1
  103. package/dist/toolkit/prompt.js +2 -2
  104. package/dist/toolkit/prompt.js.map +1 -1
  105. package/dist/toolkit/subagent.js +17 -3
  106. package/dist/toolkit/subagent.js.map +1 -1
  107. package/dist/transport/approval-policy.js +1 -1
  108. package/dist/transport/approval-policy.js.map +1 -1
  109. package/dist/transport/approval-supervisor.d.ts +8 -0
  110. package/dist/transport/approval-supervisor.js +23 -3
  111. package/dist/transport/approval-supervisor.js.map +1 -1
  112. package/dist/transport/async.d.ts +5 -4
  113. package/dist/transport/async.js +166 -145
  114. package/dist/transport/async.js.map +1 -1
  115. package/dist/transport/http-endpoints.js +1 -1
  116. package/dist/transport/http-route.js +2 -2
  117. package/dist/transport/http-route.js.map +1 -1
  118. package/dist/transport/http-shapes.d.ts +1 -1
  119. package/dist/transport/http-shapes.js +1 -1
  120. package/dist/transport/resume-scanner.d.ts +7 -0
  121. package/dist/transport/resume-scanner.js +40 -9
  122. package/dist/transport/resume-scanner.js.map +1 -1
  123. package/dist/transport/run-call-options.d.ts +77 -0
  124. package/dist/transport/run-call-options.js +76 -0
  125. package/dist/transport/run-call-options.js.map +1 -0
  126. package/dist/transport/run-outcome.d.ts +109 -0
  127. package/dist/transport/run-outcome.js +100 -0
  128. package/dist/transport/run-outcome.js.map +1 -0
  129. package/dist/transport/scheduler.js +5 -0
  130. package/dist/transport/scheduler.js.map +1 -1
  131. package/dist/transport/signal-supervisor.d.ts +10 -2
  132. package/dist/transport/signal-supervisor.js +15 -2
  133. package/dist/transport/signal-supervisor.js.map +1 -1
  134. package/dist/transport/wake-policy.d.ts +1 -1
  135. package/package.json +2 -2
@@ -59,7 +59,7 @@ export interface MetricsSinkOptions {
59
59
  * 的 run 收尾永久挂起。超时按导出失败处理(交 onExportError)——观测失败不击穿业务。
60
60
  */
61
61
  timeoutMs?: number;
62
- /** 导出失败回调(缺省吞掉 —— 观测失败不得击穿业务) */
62
+ /** 导出失败回调(缺省每次失败落一条 console.warn —— 与 traces 侧 flushSinks 同款;失败不抛出,观测不得击穿业务) */
63
63
  onExportError?: (err: unknown) => void;
64
64
  /**
65
65
  * 时长分位保留的样本数(环形窗口,缺省 1024,**run / 能力 / 模型各自独立**)。
@@ -129,7 +129,7 @@ export interface MetricsSinkOptions {
129
129
  * 为什么需要它:`maxLabelValues` 封的是**每个键的值域**,而进内存的是键的组合 ——
130
130
  * 组合数是叉乘(`(maxLabelValues+1)^labelKeys.length`),缺省值域 100 配 3 个键就是
131
131
  * 一百万条常驻条目,且 `droppedLabelValues` 只报每键的折叠数、看不出组合已经爆了
132
- * (2026-09-27 ⑧ 实测的静默失效)。这道上限与 `maxCapabilities` / `maxModels` /
132
+ * (2026-09-27 ref-menu-drift-signals 实测的静默失效)。这道上限与 `maxCapabilities` / `maxModels` /
133
133
  * `maxScores` 同款:超限后**新的组合**折叠进一个全 `__other__` 的桶(量照收,只丢
134
134
  * 标签粒度),被折叠的组合数见 `snapshot().droppedLabelCombos` 与
135
135
  * `agentia_dropped_keys{kind="label:combos"}`。**不可关** —— 内存不变量要求每个新
@@ -7,7 +7,10 @@ import type { ModelClient } from '../core/tool.js';
7
7
  * executeRun / runAgent 的 client 选项。兼容端点(DeepSeek 等)换 baseURL 即可。
8
8
  *
9
9
  * 剩余边界(**协议层面无法对齐**,不是没做):
10
- * - cache token 恒 0:OpenAI 形态没有 prompt cache 计量字段;
10
+ * - cache_creation 恒 0:OpenAI 形态没有「缓存写」计量字段;
11
+ * 但 DeepSeek 的 `prompt_cache_hit_tokens` 会映射进 `cache_read_input_tokens`
12
+ * (且从 input_tokens 里**拆出**,不双计 —— 见 `inputUsageOf`);纯 OpenAI 端点
13
+ * 没有这两个字段,cache_read 仍恒 0;
11
14
  * - refusal 为近似:finish_reason=content_filter 近似映射为 'refusal',
12
15
  * 语义上接近但不等同 Anthropic 的流式分类器干预。
13
16
  *
@@ -347,6 +347,23 @@ function applyChunk(acc, chunk, textCallbacks) {
347
347
  if (choice.finish_reason)
348
348
  acc.finish = choice.finish_reason;
349
349
  }
350
+ /**
351
+ * OpenAI usage → `Message.usage` 输入侧口径对齐(DeepSeek 缓存计量,2026-10-09 外部审查)。
352
+ *
353
+ * DeepSeek 在 usage 里多回 `prompt_cache_hit_tokens`(agent loop 场景前缀缓存命中率常达
354
+ * 80–95%),此前被整个丢弃、cache_read 恒 0 ⇒ 成本/记账系统性失真。映射时的关键口径:
355
+ * **`prompt_tokens` 已含命中部分**(官方口径 `prompt_tokens = hit + miss`),而 Anthropic 形态的
356
+ * `input_tokens` **不含** cache_read、`costEstimate` 对两者分别计价 —— 直接透传会让命中部分
357
+ * 被计两次(一次全价 in、一次 0.1× cache_read)。所以拆出来:`input_tokens` 只留未命中部分
358
+ * (= prompt_tokens − hit,与 miss 同值),`cache_read_input_tokens` 记命中数。
359
+ * 纯 OpenAI 端点没有这两个字段 ⇒ hit 取 0,行为与旧版逐字一致。
360
+ */
361
+ function inputUsageOf(u) {
362
+ const prompt = u?.prompt_tokens ?? 0;
363
+ const hit = typeof u?.prompt_cache_hit_tokens === 'number' ? u.prompt_cache_hit_tokens : 0;
364
+ // Math.max 只兜畸形回报(hit > prompt_tokens):宁可不拆,也别把 input_tokens 弄成负数
365
+ return { inputTokens: Math.max(0, prompt - hit), cacheReadTokens: hit };
366
+ }
350
367
  /** 累积器 → Message */
351
368
  function accumulatorToMessage(acc, fallbackModel) {
352
369
  const content = [];
@@ -366,6 +383,7 @@ function accumulatorToMessage(acc, fallbackModel) {
366
383
  });
367
384
  }
368
385
  const hasToolCalls = calls.length > 0;
386
+ const { inputTokens, cacheReadTokens } = inputUsageOf(acc.usage);
369
387
  return {
370
388
  id: acc.id ?? 'chatcmpl-unknown',
371
389
  type: 'message',
@@ -375,11 +393,11 @@ function accumulatorToMessage(acc, fallbackModel) {
375
393
  stop_reason: mapStopReason(acc.finish, hasToolCalls),
376
394
  stop_sequence: null,
377
395
  usage: {
378
- input_tokens: acc.usage?.prompt_tokens ?? 0,
396
+ input_tokens: inputTokens,
379
397
  output_tokens: acc.usage?.completion_tokens ?? 0,
380
- // OpenAI 形态无 cache 计量:恒 0
398
+ // OpenAI 形态无「缓存写」计量:恒 0;缓存读见 inputUsageOf(DeepSeek 命中数)
381
399
  cache_creation_input_tokens: 0,
382
- cache_read_input_tokens: 0,
400
+ cache_read_input_tokens: cacheReadTokens,
383
401
  // 端点忽略了 stream_options.include_usage(或压根没回)⇒ 上面是**替身 0**,
384
402
  // 如实标出来让「成本恒 0」有信号(2026-09-28 外部深评 S2)
385
403
  ...(acc.usage ? {} : { unreported: true }),
@@ -428,6 +446,7 @@ function toAnthropicMessage(data, model) {
428
446
  throw new OpenAICompatApiError(500, `OpenAI 兼容端点返回空补全(id=${data.id ?? 'unknown'},finish=${choice?.finish_reason ?? '缺失'});` +
429
447
  '响应无可用补全,按上游故障处理');
430
448
  }
449
+ const { inputTokens, cacheReadTokens } = inputUsageOf(data.usage);
431
450
  return {
432
451
  id: data.id ?? 'chatcmpl-unknown',
433
452
  type: 'message',
@@ -437,11 +456,11 @@ function toAnthropicMessage(data, model) {
437
456
  stop_reason: mapStopReason(choice?.finish_reason, (msg.tool_calls?.length ?? 0) > 0),
438
457
  stop_sequence: null,
439
458
  usage: {
440
- input_tokens: data.usage?.prompt_tokens ?? 0,
459
+ input_tokens: inputTokens,
441
460
  output_tokens: data.usage?.completion_tokens ?? 0,
442
- // OpenAI 形态无 cache 计量:恒 0
461
+ // OpenAI 形态无「缓存写」计量:恒 0;缓存读见 inputUsageOf(DeepSeek 命中数)
443
462
  cache_creation_input_tokens: 0,
444
- cache_read_input_tokens: 0,
463
+ cache_read_input_tokens: cacheReadTokens,
445
464
  // 非流式同理:没回 usage 时不静默填 0(2026-09-28 外部深评 S2)
446
465
  ...(data.usage ? {} : { unreported: true }),
447
466
  },
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/integrations/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/integrations/openai.ts"],"names":[],"mappings":"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"}
@@ -12,14 +12,23 @@ import { type Trace } from '../core/trace.js';
12
12
  * - events → OTLP events(body 的原始类型字段进 attributes,其余 JSON 化)。
13
13
  *
14
14
  * GenAI 语义约定(R7 质量闭环,**additive** —— 只追加 gen_ai.* 键,既有键一律保留):
15
- * - 对齐基准:OTel GenAI semconv **v1.37** —— 该版本里 `gen_ai.client` 侧
16
- * (chat / execute_tool / gen_ai.request.model / gen_ai.usage.*)已 stable,
17
- * agent 侧(invoke_agent / gen_ai.agent.name / gen_ai.conversation.id / evaluation 事件)
18
- * 仍是 experimental;选 stable 键优先、experimental 键补齐 agent 语义,
19
- * 是因为下游(Datadog / Axiom 等)已按 1.37+ 识别这批键做 GenAI 专项视图。
20
- * - **全部映射集中在 `genAiAttributes` / `mapEvent` 两处**,升级基准版本时只改本模块;
15
+ * - 对齐基准:**`open-telemetry/semantic-conventions-genai` @ `6fd0d763`(2026-10-09)**。
16
+ * GenAI 约定自 **v1.42(2026-06-12)移出语义约定主线**到该独立仓;该仓**全篇 Development、
17
+ * 无 tag、未版本化**,所以基准只能钉 commit(官方口径也是「记录你 instrument 的 commit/日期」)。
18
+ * ⚠️ 2026-10-12 更正:此前这里写「v1.37 时 `gen_ai.client` 侧已 stable」——**回源核为假**
19
+ * (v1.37 的 `docs/gen-ai/gen-ai-spans.md` / `gen-ai-metrics.md` 文首均为 `Status: [Development]`,
20
+ * 且本模块映射的 7 个 `gen_ai.*` 键逐条 `[Development]`),已删。
21
+ * 决策链与证据见 `docs/spec.md` §10 2026-10-12。
22
+ * - **全部映射集中在 `genAiAttributes` / `mapEvent` 两处**,升级基准时只改本模块;
21
23
  * 键前缀冲突不存在(自有键一律 `agentia.*` 或无前缀),所以 additive 是安全的。
22
24
  * - 保留 `usage.inputTokens` 等旧键:既有看板/告警已消费它们,双发成本极低。
25
+ * - 缓存计量双发 semconv 键(`gen_ai.usage.cache_read/cache_write.input_tokens`),
26
+ * **只在 > 0 时发**(上游口径「When applicable」:0 = 该次往返没走缓存,不留键);
27
+ * 父 span 上有早于本回合开始的 `context.budget` 事件 ⇒ llm.turn 追加
28
+ * `gen_ai.conversation.compacted: true`(上游:只在能可靠判定时置真,**不设 false**)。
29
+ * - 普通 @Tool 不建 span(记账侧刻意口径,core/trace.ts)——要 `execute_tool` span 的
30
+ * 后端开 `projectToolSpans`(**默认关**):把 llm.turn 上按 `tool_use_id` 配对的
31
+ * `tool.input`/`tool.output` 事件投影成 child span(导出侧概念,engine 不动)。
23
32
  *
24
33
  * 非 2xx 抛 `OtlpExportError`(带**数值** status 与响应前 200 字符)。导出失败不影响 run
25
34
  * 本身 —— 调用方自行取舍;但对「要不要重试」的判定必须可判:状态码只写进文案、对象没有
@@ -50,6 +59,20 @@ export interface OtlpExporterOptions {
50
59
  * 「导出其实少了一半数据」这类**带分类的**消息要有人能收到。
51
60
  */
52
61
  onExportError?: (err: unknown) => void;
62
+ /**
63
+ * 把 span 上按 `tool_use_id` 配对的 `tool.input` / `tool.output` 事件对**投影**成
64
+ * `execute_tool` child span,缺省 **false**(关闭时导出产物与既往版本一致)。
65
+ *
66
+ * 普通 @Tool 刻意不建 span(记账侧口径,见 core/trace.ts 的 SpanKind 注释)——投影是
67
+ * **导出侧**的概念:本地 trace 形状不变、engine 记账点一行不动、原事件保留在父 span 上。
68
+ * 开启后每次工具调用多一条 span:name 为 `execute_tool <工具名>`,attributes 带
69
+ * `gen_ai.operation.name: execute_tool` 与 `gen_ai.tool.name`;start 取 `tool.input`
70
+ * 事件时刻、end 取 `tool.output` 事件时刻(都是真实记账时刻);`ok: false` →
71
+ * status Error + `error.type` = errorKind(有值时)。孤儿 input(`traceLimits.maxEvents`
72
+ * 截断可造出只有 input 的对)→ 投影成**无 `endTimeUnixNano`、无 status** 的 span
73
+ * 并带 `agentia.projection.orphan: true` —— 不编零时长、不编成败。
74
+ */
75
+ projectToolSpans?: boolean;
53
76
  }
54
77
  export interface OtlpExporter {
55
78
  export(trace: Trace): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  // 内部 id → 线缆形态的投射**单一真源**在 core/trace.ts(与 parseTraceparent 同处)——
2
2
  // 出站 traceparent 用的是同一份,改这里就等于同时改出站(见 core/trace.ts 的注释)。
3
- import { wireSpanId, wireTraceId } from '../core/trace.js';
3
+ import { createHash } from 'node:crypto';
4
+ import { CONTEXT_BUDGET_EVENT, TOOL_INPUT_EVENT, TOOL_OUTPUT_EVENT, wireSpanId, wireTraceId, } from '../core/trace.js';
4
5
  import { otlpPartialSuccess, readOtlpResponseBody } from './otlp-partial.js';
5
6
  /**
6
7
  * OTLP 导出失败(非 2xx 或流内失败)。带**数值 `status`** —— 不是装饰:
@@ -38,7 +39,7 @@ function nanos(ms) {
38
39
  * GenAI semconv 追加属性(additive,见模块头注释)。
39
40
  * 返回的键与 span.attributes 自有键不同名(gen_ai.* 前缀),直接 push 不查重。
40
41
  */
41
- function genAiAttributes(span) {
42
+ function genAiAttributes(span, view) {
42
43
  const attrs = [];
43
44
  const str = (key, v) => ({ key, value: { stringValue: v } });
44
45
  if (span.kind === 'run') {
@@ -53,6 +54,30 @@ function genAiAttributes(span) {
53
54
  attrs.push(str('gen_ai.operation.name', 'chat'), str('gen_ai.request.model', span.name));
54
55
  if (span.usage) {
55
56
  attrs.push({ key: 'gen_ai.usage.input_tokens', value: toValue(span.usage.inputTokens) }, { key: 'gen_ai.usage.output_tokens', value: toValue(span.usage.outputTokens) });
57
+ // 缓存计量的上游级别是「Recommended when applicable」:0 = 该次往返没走缓存 ⇒ 不留键
58
+ if (span.usage.cacheReadTokens > 0) {
59
+ attrs.push({
60
+ key: 'gen_ai.usage.cache_read.input_tokens',
61
+ value: toValue(span.usage.cacheReadTokens),
62
+ });
63
+ }
64
+ if (span.usage.cacheCreationTokens > 0) {
65
+ attrs.push({
66
+ key: 'gen_ai.usage.cache_write.input_tokens',
67
+ value: toValue(span.usage.cacheCreationTokens),
68
+ });
69
+ }
70
+ }
71
+ // 上游注 [14]:「只在能可靠判定压缩已应用时置 true;否则**不设**,连 false 都不发」——
72
+ // 判据:父 span 上有时刻 ≤ 本回合开始的 context.budget 事件(它带 {from,to,model},
73
+ // 是「压缩真的发生了」的记账点)。本回合及之后各回合的生效上下文都是压缩视图。
74
+ if (span.parentSpanId) {
75
+ const compacted = view.byId
76
+ .get(span.parentSpanId)
77
+ ?.events.some((e) => e.name === CONTEXT_BUDGET_EVENT && e.time <= span.startedAt);
78
+ if (compacted) {
79
+ attrs.push({ key: 'gen_ai.conversation.compacted', value: { boolValue: true } });
80
+ }
56
81
  }
57
82
  }
58
83
  else if (span.kind === 'capability') {
@@ -74,12 +99,12 @@ function genAiAttributes(span) {
74
99
  }
75
100
  return attrs;
76
101
  }
77
- function spanAttributes(span) {
102
+ function spanAttributes(span, view) {
78
103
  const attrs = Object.entries(span.attributes).map(([key, v]) => ({
79
104
  key,
80
105
  value: toValue(v),
81
106
  }));
82
- attrs.push(...genAiAttributes(span));
107
+ attrs.push(...genAiAttributes(span, view));
83
108
  if (span.usage) {
84
109
  const u = span.usage;
85
110
  attrs.push({ key: 'usage.inputTokens', value: toValue(u.inputTokens) }, { key: 'usage.outputTokens', value: toValue(u.outputTokens) }, { key: 'usage.cacheReadTokens', value: toValue(u.cacheReadTokens) }, { key: 'usage.cacheCreationTokens', value: toValue(u.cacheCreationTokens) });
@@ -146,7 +171,7 @@ function mapEvent(e) {
146
171
  attributes: eventAttributes(e.body),
147
172
  };
148
173
  }
149
- function mapSpan(span) {
174
+ function mapSpan(span, view) {
150
175
  return {
151
176
  traceId: wireTraceId(span.traceId),
152
177
  spanId: wireSpanId(span.spanId),
@@ -167,7 +192,7 @@ function mapSpan(span) {
167
192
  kind: 1, // SPAN_KIND_INTERNAL
168
193
  startTimeUnixNano: nanos(span.startedAt),
169
194
  ...(span.endedAt !== undefined ? { endTimeUnixNano: nanos(span.endedAt) } : {}),
170
- attributes: spanAttributes(span),
195
+ attributes: spanAttributes(span, view),
171
196
  events: span.events.map(mapEvent),
172
197
  status: span.status === 'error'
173
198
  ? {
@@ -181,14 +206,109 @@ function mapSpan(span) {
181
206
  : { code: 1 },
182
207
  };
183
208
  }
209
+ /**
210
+ * 投影 span 的 id:`sha256(父 spanId \0 tool_use_id)` 的前 16 位 hex ——
211
+ * 与既有 span id 同宽(8 字节),且同一条 trace 重复导出幂等(id 稳定)。
212
+ */
213
+ function projectedSpanId(parentSpanId, toolUseId) {
214
+ return createHash('sha256')
215
+ .update(parentSpanId)
216
+ .update('\0')
217
+ .update(toolUseId)
218
+ .digest('hex')
219
+ .slice(0, 16);
220
+ }
221
+ /**
222
+ * `projectToolSpans` 开启时的投影本体:把 span 的 events 里按 `tool_use_id` 配对的
223
+ * `tool.input` / `tool.output` 投影成 `execute_tool` child span(依据
224
+ * docs/reviews/2026-10-12/observability-deep-dive.md §3 G2;engine 记账点不动、
225
+ * 原事件保留在父 span 上 —— 投影是**多**出来的 span,不是把事件搬走)。
226
+ *
227
+ * 口径:
228
+ * - start = `tool.input` 事件时刻、end = `tool.output` 事件时刻 —— 两条都是真实记账时刻
229
+ * (engine/tool-events.ts:input 记在执行开始前、output 记在执行结束后);output 的
230
+ * `durationMs` 与二者之差同源,不另发;
231
+ * - 配对键是 `tool_use_id`(**不是**工具名):同名工具并行各配各的;
232
+ * - `ok: false` → status Error(`errorKind` 有值时进 `error.type` 属性并当 status message);
233
+ * - **孤儿 input**(`traceLimits.maxEvents` 超限停记可造出只有 input 的对)→ 投影但
234
+ * **不写 `endTimeUnixNano`、不写 status**,并带 `agentia.projection.orphan: true`;
235
+ * - 孤儿 output(无配对 input ⇒ 没有诚实的 start)→ 跳过(事件本体仍在父 span 上原样导出);
236
+ * - body 形状不符(非对象 / 缺 `tool_use_id` 等)→ 跳过该条,观测不击穿导出。
237
+ */
238
+ function projectToolSpans(span) {
239
+ const inputs = new Map();
240
+ const outputs = new Map();
241
+ for (const e of span.events) {
242
+ if (e.name !== TOOL_INPUT_EVENT && e.name !== TOOL_OUTPUT_EVENT)
243
+ continue;
244
+ const body = e.body;
245
+ if (!body || typeof body !== 'object' || Array.isArray(body))
246
+ continue;
247
+ const b = body;
248
+ if (typeof b.tool_use_id !== 'string')
249
+ continue;
250
+ if (e.name === TOOL_INPUT_EVENT) {
251
+ if (typeof b.tool !== 'string' || inputs.has(b.tool_use_id))
252
+ continue;
253
+ inputs.set(b.tool_use_id, { time: e.time, tool: b.tool });
254
+ }
255
+ else {
256
+ if (typeof b.ok !== 'boolean' || outputs.has(b.tool_use_id))
257
+ continue;
258
+ outputs.set(b.tool_use_id, {
259
+ time: e.time,
260
+ ok: b.ok,
261
+ ...(typeof b.errorKind === 'string' ? { errorKind: b.errorKind } : {}),
262
+ });
263
+ }
264
+ }
265
+ const projected = [];
266
+ for (const [toolUseId, input] of inputs) {
267
+ const output = outputs.get(toolUseId);
268
+ const attributes = [
269
+ { key: 'gen_ai.operation.name', value: { stringValue: 'execute_tool' } },
270
+ { key: 'gen_ai.tool.name', value: { stringValue: input.tool } },
271
+ ];
272
+ if (output === undefined) {
273
+ attributes.push({ key: 'agentia.projection.orphan', value: { boolValue: true } });
274
+ }
275
+ else if (!output.ok && output.errorKind !== undefined) {
276
+ attributes.push({ key: 'error.type', value: { stringValue: output.errorKind } });
277
+ }
278
+ projected.push({
279
+ traceId: wireTraceId(span.traceId),
280
+ spanId: projectedSpanId(span.spanId, toolUseId),
281
+ parentSpanId: wireSpanId(span.spanId),
282
+ name: `execute_tool ${input.tool}`,
283
+ kind: 1,
284
+ startTimeUnixNano: nanos(input.time),
285
+ ...(output ? { endTimeUnixNano: nanos(output.time) } : {}),
286
+ attributes,
287
+ events: [],
288
+ ...(output === undefined
289
+ ? {}
290
+ : {
291
+ status: output.ok
292
+ ? { code: 1 }
293
+ : {
294
+ code: 2,
295
+ ...(output.errorKind !== undefined ? { message: output.errorKind } : {}),
296
+ },
297
+ }),
298
+ });
299
+ }
300
+ return projected;
301
+ }
184
302
  export function createOtlpExporter(opts) {
185
303
  const endpoint = opts.endpoint.replace(/\/+$/, '');
186
304
  const serviceName = opts.serviceName ?? 'agentia';
187
305
  const timeoutMs = opts.timeoutMs ?? 10_000;
306
+ const projectTools = opts.projectToolSpans === true;
188
307
  // 真正发请求的那条路径:一切失败都**抛**(非 2xx / 超时 / 200 但部分接收)。
189
308
  // 外面那层 `export` 决定抛给谁:有 onExportError 就交给它,否则保持既有行为(抛出去,
190
309
  // 由 flushSinks 吞掉 —— 观测失败不得击穿业务)。
191
310
  const send = async (trace) => {
311
+ const view = { byId: new Map(trace.spans.map((s) => [s.spanId, s])) };
192
312
  const payload = {
193
313
  resourceSpans: [
194
314
  {
@@ -198,7 +318,8 @@ export function createOtlpExporter(opts) {
198
318
  scopeSpans: [
199
319
  {
200
320
  scope: { name: 'agentia' },
201
- spans: trace.spans.map(mapSpan),
321
+ // 投影的 child span 紧跟其父(数组顺序对 collector 无语义,只为 payload 可读)
322
+ spans: trace.spans.flatMap((s) => projectTools ? [mapSpan(s, view), ...projectToolSpans(s)] : [mapSpan(s, view)]),
202
323
  },
203
324
  ],
204
325
  },
@@ -1 +1 @@
1
- {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../../src/integrations/otlp.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,0DAA0D;AAC1D,OAAO,EAAyC,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA4D7E;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,MAAM,CAAS;IACxB,YAAY,MAAc,EAAE,OAAe;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAaD,SAAS,OAAO,CAAC,CAA4B;IAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IACrD,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACpD,iCAAiC;IACjC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AAEH,oEAAoE;AACpE,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,QAAU,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,CAAS,EAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxB,qDAAqD;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,+DAA+D;QAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CACR,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAC5E,EAAE,GAAG,EAAE,4BAA4B,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACtC,2EAA2E;QAC3E,8EAA8E;QAC9E,+EAA+E;QAC/E,wFAAwF;QACxF,4EAA4E;QAC5E,oEAAoE;QACpE,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/F,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAU;IAChC,MAAM,KAAK,GAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChF,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;KAClB,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,IAAI,CACR,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAC3D,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAC7D,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EACnE,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAC5E,CAAC;QACF,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAAa;IACpC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;YACvE,+EAA+E;YAC/E,wEAAwE;YACxE,+DAA+D;YAC/D,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC9B,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG;gBACH,KAAK,EACH,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS;oBACtE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;aACzC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,QAAQ,CAAC,CAAY;IAC5B,uEAAuE;IACvE,wEAAwE;IACxE,2CAA2C;IAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,CAAC,CAAE,CAAC,CAAC,IAAgC;YACrC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,8EAA8E;YAC9E,0FAA0F;YAC1F,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,sDAAsD;YACtD,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,+BAA+B;gBACpC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;IACvF,CAAC;IACD,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAU;IACzB,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,+DAA+D;QAC/D,0DAA0D;QAC1D,oDAAoD;QACpD,+CAA+C;QAC/C,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC/B,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,CAAC,EAAE,qBAAqB;QAC9B,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,MAAM,EACJ,IAAI,CAAC,MAAM,KAAK,OAAO;YACrB,CAAC,CAAC;gBACE,sDAAsD;gBACtD,8DAA8D;gBAC9D,4DAA4D;gBAC5D,yCAAyC;gBACzC,IAAI,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAyB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAE3C,iDAAiD;IACjD,yDAAyD;IACzD,kCAAkC;IAClC,MAAM,IAAI,GAAG,KAAK,EAAE,KAAY,EAAiB,EAAE;QACjD,MAAM,OAAO,GAAG;YACd,aAAa,EAAE;gBACb;oBACE,QAAQ,EAAE;wBACR,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC;qBAC3E;oBACD,UAAU,EAAE;wBACV;4BACE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;yBAChC;qBACF;iBACF;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,YAAY,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;aAChB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,mDAAmD;YACnD,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,sEAAsE;QACtE,wDAAwD;QACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,oBAAoB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAY;YACvB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../../src/integrations/otlp.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,12 @@ import type { Trace, Usage } from '../core/trace.js';
8
8
  *
9
9
  * 数据全部从既有 trace 派生,**纯函数、无副作用、不联网**:
10
10
  * - 能力级:`tool` 读 turn 上的 `tool.output` 事件(E1 补的 `durationMs`/`ok`),
11
- * `skill`/`subagent` 读 `capability` span(tracer 已聚合其子孙 usage);
11
+ * `skill`/`subagent` 读 `capability` span(tracer 已聚合其子孙 usage)。
12
+ * ⚠️ **usage 只认顶层 capability**(没有 capability 祖先的):capability.usage 是其
13
+ * 子孙 llm.turn 的聚合,嵌套时(@SubAgent 套 @Skill)外层与内层带着同一批 token
14
+ * ⇒ 逐行累加会重复计数。嵌套行仍计 calls/errors/耗时(它自己这次调用的真账),
15
+ * tokens/costUsd 留给顶层行 ⇒ 各行可加总。与 `core/trace.ts`「capability 聚合不进
16
+ * totalUsage」、trace-view `summarizeTrace` 同一条纪律(三处口径一致)。
12
17
  * - 模型级:读 `llm.turn` span(`name` 即模型 id)。
13
18
  *
14
19
  * ⚠️ **单条 run 的分位没有统计意义**(样本常 < 5):报告以 `total` / `max` 为主,
@@ -79,7 +84,14 @@ export interface RunReport {
79
84
  }
80
85
  /** 从一条 Trace 生成报告(纯函数) */
81
86
  export declare function buildRunReport(trace: Trace): RunReport;
82
- /** 汇总多条报告(跨 run 的能力排行才有统计意义)。空数组 → 空报告。 */
87
+ /**
88
+ * 汇总多条报告(跨 run 的能力排行才有统计意义)。空数组 → 空报告。
89
+ *
90
+ * **按 `traceId` 去重、同一 traceId 只留最后一份**(与 CLI `agentia report` 同口径,
91
+ * 依据见 docs/spec.md §10 2026-10-12 ref-report-dedupe-traceid):append-only 的 trace 落盘(FileTaskStore 每次
92
+ * save 追加一行)会把同一棵挂起段 trace 写多次,不去重则 runs / 成本按行数翻倍。
93
+ * `merged(n runs)` 是合并报告的合成 id(不是身份),不参与去重。
94
+ */
83
95
  export declare function mergeRunReports(reports: readonly RunReport[]): RunReport;
84
96
  /** 人类可读的纯文本报告(CLI `agentia report` 与日志用;零依赖手写) */
85
97
  export declare function renderRunReport(report: RunReport): string;
@@ -41,6 +41,25 @@ export function buildRunReport(trace) {
41
41
  const models = new Map();
42
42
  const unpriced = new Set();
43
43
  const usageMissing = new Set();
44
+ // 嵌套判定(沿 parentSpanId 上爬;seen 防手写 trace 的环)——与 trace-view 的
45
+ // summarizeTrace 同款:usage 只计顶层 capability,嵌套行的 token 是它外层祖先行那笔。
46
+ const byId = new Map();
47
+ for (const s of trace.spans)
48
+ byId.set(s.spanId, s);
49
+ const hasCapabilityAncestor = (span) => {
50
+ let p = span.parentSpanId;
51
+ const seen = new Set();
52
+ while (p != null && !seen.has(p)) {
53
+ seen.add(p);
54
+ const ps = byId.get(p);
55
+ if (!ps)
56
+ return false;
57
+ if (ps.kind === 'capability')
58
+ return true;
59
+ p = ps.parentSpanId;
60
+ }
61
+ return false;
62
+ };
44
63
  for (const span of trace.spans) {
45
64
  if (span.kind === 'capability') {
46
65
  const a = acc(`${capabilityKindOf(span)}:${span.name}`);
@@ -49,7 +68,7 @@ export function buildRunReport(trace) {
49
68
  a.errors++;
50
69
  if (span.endedAt !== undefined)
51
70
  a.durations.push(Math.max(0, span.endedAt - span.startedAt));
52
- if (span.usage) {
71
+ if (span.usage && !hasCapabilityAncestor(span)) {
53
72
  a.tokens = a.tokens ? { ...a.tokens } : emptyUsage();
54
73
  addUsage(a.tokens, span.usage);
55
74
  if (span.usage.costEstimate != null)
@@ -140,24 +159,38 @@ export function buildRunReport(trace) {
140
159
  runs: 1,
141
160
  };
142
161
  }
143
- /** 汇总多条报告(跨 run 的能力排行才有统计意义)。空数组 → 空报告。 */
162
+ /**
163
+ * 汇总多条报告(跨 run 的能力排行才有统计意义)。空数组 → 空报告。
164
+ *
165
+ * **按 `traceId` 去重、同一 traceId 只留最后一份**(与 CLI `agentia report` 同口径,
166
+ * 依据见 docs/spec.md §10 2026-10-12 ref-report-dedupe-traceid):append-only 的 trace 落盘(FileTaskStore 每次
167
+ * save 追加一行)会把同一棵挂起段 trace 写多次,不去重则 runs / 成本按行数翻倍。
168
+ * `merged(n runs)` 是合并报告的合成 id(不是身份),不参与去重。
169
+ */
144
170
  export function mergeRunReports(reports) {
171
+ // 各 traceId 在输入里最后一次出现的位置;过滤保序(输出顺序与直觉一致)
172
+ const lastByTraceId = new Map();
173
+ reports.forEach((r, i) => {
174
+ if (!r.traceId.startsWith('merged('))
175
+ lastByTraceId.set(r.traceId, i);
176
+ });
177
+ const deduped = reports.filter((r, i) => r.traceId.startsWith('merged(') || lastByTraceId.get(r.traceId) === i);
145
178
  const total = {
146
- traceId: `merged(${reports.length} runs)`,
147
- status: reports.some((r) => r.status === 'error') ? 'error' : 'ok',
179
+ traceId: `merged(${deduped.length} runs)`,
180
+ status: deduped.some((r) => r.status === 'error') ? 'error' : 'ok',
148
181
  durationMs: 0,
149
182
  totalUsage: emptyUsage(),
150
183
  models: [],
151
184
  capabilities: [],
152
185
  unpricedModels: [],
153
186
  usageMissingModels: [],
154
- runs: reports.length,
187
+ runs: deduped.length,
155
188
  };
156
189
  const capabilities = new Map();
157
190
  const models = new Map();
158
191
  const unpriced = new Set();
159
192
  const usageMissing = new Set();
160
- for (const r of reports) {
193
+ for (const r of deduped) {
161
194
  total.durationMs += r.durationMs;
162
195
  addUsage(total.totalUsage, r.totalUsage);
163
196
  for (const m of r.models) {