@introspection-sdk/introspection-pi 0.7.1 → 0.8.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.
package/README.md CHANGED
@@ -19,6 +19,7 @@ npm install @introspection-sdk/introspection-pi \
19
19
  ```ts
20
20
  import { trace } from "@opentelemetry/api";
21
21
  import { Agent } from "@earendil-works/pi-agent-core";
22
+ import { getBuiltinModel } from "@earendil-works/pi-ai/providers/all";
22
23
  import {
23
24
  instrumentAgent,
24
25
  instrumentStream,
@@ -32,7 +33,12 @@ const meta: AgentMeta = {
32
33
  agentName: "Support",
33
34
  };
34
35
 
35
- const agent = new Agent({/* … */});
36
+ const agent = new Agent({
37
+ initialState: {
38
+ model: getBuiltinModel("anthropic", "claude-sonnet-4-6"),
39
+ systemPrompt: "You are a helpful support agent.",
40
+ },
41
+ });
36
42
 
37
43
  // One chat span per LLM call
38
44
  agent.streamFn = instrumentStream(agent.streamFn, { tracer, meta });
@@ -40,6 +46,8 @@ agent.streamFn = instrumentStream(agent.streamFn, { tracer, meta });
40
46
  // One execute_tool span per tool call
41
47
  const tools = instrumentAgent(agent, { tracer, meta });
42
48
 
49
+ await agent.prompt("Help me understand my latest invoice.");
50
+
43
51
  // Later, on shutdown:
44
52
  tools.stop();
45
53
  ```
@@ -8,6 +8,11 @@
8
8
  import type { Attributes } from "@opentelemetry/api";
9
9
  import type { AssistantMessage, Context, Model, SimpleStreamOptions } from "@earendil-works/pi-ai";
10
10
  import { type ConvertOptions } from "./convert.js";
11
+ /**
12
+ * `server.address` / `server.port` derived from the model's base URL.
13
+ * Returns an empty record when the URL cannot be parsed.
14
+ */
15
+ export declare function serverAttributes(baseUrl: string): Attributes;
11
16
  /** Metadata that the consumer attaches to every chat / tool span. */
12
17
  export interface AgentMeta {
13
18
  conversationId: string;
@@ -27,7 +32,16 @@ export declare function chatRequestAttributes(model: Model<string>, context: Con
27
32
  */
28
33
  export declare function chatResponseAttributes(message: AssistantMessage): Attributes;
29
34
  /** Common attributes for an execute_tool span (set at start). */
30
- export declare function executeToolAttributes(toolName: string, toolCallId: string, args: unknown, meta: AgentMeta): Attributes;
35
+ export declare function executeToolAttributes(toolName: string, toolCallId: string, args: unknown, meta: AgentMeta, description?: string): Attributes;
36
+ /**
37
+ * Attributes for an `invoke_agent` span (set at start).
38
+ *
39
+ * Per the semconv agent-span table for in-process invocation, model and
40
+ * provider are intentionally NOT recorded: pi agents can switch models
41
+ * mid-run, and the spec says `gen_ai.request.model` SHOULD NOT be
42
+ * populated for agents that support dynamic model selection.
43
+ */
44
+ export declare function invokeAgentAttributes(meta: AgentMeta): Attributes;
31
45
  /** Result attribute for an execute_tool span (set at end). */
32
46
  export declare function executeToolResultAttribute(result: unknown): Attributes;
33
47
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,KAAK,EACL,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAItB,qEAAqE;AACrE,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,2BAA4B,SAAQ,cAAc;IAC1D,aAAa,CAAC,EAAE,IAAI,CAClB,mBAAmB,EACnB,aAAa,GAAG,WAAW,GAAG,WAAW,CAC1C,CAAC;CACH;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,2BAA2B,GACpC,UAAU,CAiDZ;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAyC5E;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,SAAS,GACd,UAAU,CAcZ;AAED,8DAA8D;AAC9D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAGtE"}
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,KAAK,EACL,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAItB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAY5D;AAED,qEAAqE;AACrE,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,2BAA4B,SAAQ,cAAc;IAC1D,aAAa,CAAC,EAAE,IAAI,CAClB,mBAAmB,EACnB,aAAa,GAAG,WAAW,GAAG,WAAW,CAC1C,CAAC;CACH;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,2BAA2B,GACpC,UAAU,CAwDZ;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU,CAyC5E;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,SAAS,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU,CAiBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAOjE;AAED,8DAA8D;AAC9D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAGtE"}
@@ -5,9 +5,27 @@
5
5
  * can inspect, log, and merge with their own attributes (`extraAttributes`
6
6
  * hook, environment-derived tenant labels, etc.).
7
7
  */
8
- import { GenAi } from "@introspection-sdk/types";
9
- import { assistantToOutputMessages, messagesToInputMessages, systemPromptToInstructions, } from "./convert.js";
8
+ import { GenAi, } from "@introspection-sdk/types";
9
+ import { assistantToOutputMessages, messagesToInputMessages, semconvFinishReason, systemPromptToInstructions, } from "./convert.js";
10
10
  const MAX_BYTES = 64_000;
11
+ /**
12
+ * `server.address` / `server.port` derived from the model's base URL.
13
+ * Returns an empty record when the URL cannot be parsed.
14
+ */
15
+ export function serverAttributes(baseUrl) {
16
+ try {
17
+ const url = new URL(baseUrl);
18
+ const port = url.port
19
+ ? Number(url.port)
20
+ : url.protocol === "http:"
21
+ ? 80
22
+ : 443;
23
+ return { "server.address": url.hostname, "server.port": port };
24
+ }
25
+ catch {
26
+ return {};
27
+ }
28
+ }
11
29
  /** Attributes set on a chat span at request time, before the model has streamed. */
12
30
  export function chatRequestAttributes(model, context, meta, options) {
13
31
  const attributes = {
@@ -18,6 +36,7 @@ export function chatRequestAttributes(model, context, meta, options) {
18
36
  [GenAi.PROVIDER_NAME]: model.provider,
19
37
  [GenAi.REQUEST_MODEL]: model.id,
20
38
  "gen_ai.request.stream": true,
39
+ ...serverAttributes(model.baseUrl),
21
40
  };
22
41
  if (context.systemPrompt) {
23
42
  const serialized = serializeWithCap(() => JSON.stringify(systemPromptToInstructions(context.systemPrompt)), () => undefined, GenAi.SYSTEM_INSTRUCTIONS);
@@ -30,7 +49,10 @@ export function chatRequestAttributes(model, context, meta, options) {
30
49
  attributes[GenAi.TOOL_DEFINITIONS] = toolDefinitions;
31
50
  }
32
51
  const inputMessages = messagesToInputMessages(context.messages, options);
33
- attributes[GenAi.INPUT_MESSAGES] = JSON.stringify(inputMessages);
52
+ const serializedInput = serializeMessagesWithCap(inputMessages, GenAi.INPUT_MESSAGES);
53
+ if (serializedInput) {
54
+ attributes[GenAi.INPUT_MESSAGES] = serializedInput;
55
+ }
34
56
  if (inputMessages.some((message) => message.parts.some((part) => part.type === "compaction"))) {
35
57
  attributes["gen_ai.conversation.compacted"] = true;
36
58
  }
@@ -55,11 +77,17 @@ export function chatRequestAttributes(model, context, meta, options) {
55
77
  */
56
78
  export function chatResponseAttributes(message) {
57
79
  const attributes = {
58
- [GenAi.OUTPUT_MESSAGES]: JSON.stringify(assistantToOutputMessages(message)),
59
- [GenAi.RESPONSE_FINISH_REASONS]: [message.stopReason],
60
- [GenAi.USAGE_INPUT_TOKENS]: message.usage.input,
80
+ [GenAi.RESPONSE_FINISH_REASONS]: [semconvFinishReason(message.stopReason)],
81
+ // Anthropic reports uncached, cache-read, and cache-creation input
82
+ // separately. Semconv defines both cache attributes as subsets of the
83
+ // total input token count.
84
+ [GenAi.USAGE_INPUT_TOKENS]: message.usage.input + message.usage.cacheRead + message.usage.cacheWrite,
61
85
  [GenAi.USAGE_OUTPUT_TOKENS]: message.usage.output,
62
86
  };
87
+ const serializedOutput = serializeMessagesWithCap(assistantToOutputMessages(message), GenAi.OUTPUT_MESSAGES);
88
+ if (serializedOutput) {
89
+ attributes[GenAi.OUTPUT_MESSAGES] = serializedOutput;
90
+ }
63
91
  if (message.usage.cacheRead > 0) {
64
92
  attributes[GenAi.USAGE_CACHE_READ_INPUT_TOKENS] = message.usage.cacheRead;
65
93
  }
@@ -70,10 +98,9 @@ export function chatResponseAttributes(message) {
70
98
  if (message.usage.cost?.total) {
71
99
  attributes[GenAi.COST_USD] = message.usage.cost.total;
72
100
  }
73
- const reasoningOutputTokens = message.usage.reasoningOutputTokens ??
74
- message.usage.reasoningOutput;
75
- if (typeof reasoningOutputTokens === "number" && reasoningOutputTokens > 0) {
76
- attributes["gen_ai.usage.reasoning.output_tokens"] = reasoningOutputTokens;
101
+ const reasoningTokens = message.usage.reasoning;
102
+ if (typeof reasoningTokens === "number" && reasoningTokens > 0) {
103
+ attributes[GenAi.USAGE_REASONING_TOKENS] = reasoningTokens;
77
104
  }
78
105
  if (message.responseId) {
79
106
  attributes[GenAi.RESPONSE_ID] = message.responseId;
@@ -84,7 +111,7 @@ export function chatResponseAttributes(message) {
84
111
  return attributes;
85
112
  }
86
113
  /** Common attributes for an execute_tool span (set at start). */
87
- export function executeToolAttributes(toolName, toolCallId, args, meta) {
114
+ export function executeToolAttributes(toolName, toolCallId, args, meta, description) {
88
115
  const attributes = {
89
116
  [GenAi.CONVERSATION_ID]: meta.conversationId,
90
117
  [GenAi.AGENT_ID]: meta.agentId,
@@ -94,11 +121,30 @@ export function executeToolAttributes(toolName, toolCallId, args, meta) {
94
121
  [GenAi.TOOL_TYPE]: "function",
95
122
  [GenAi.TOOL_CALL_ID]: toolCallId,
96
123
  };
124
+ if (description) {
125
+ attributes[GenAi.TOOL_DESCRIPTION] = description;
126
+ }
97
127
  if (args !== undefined) {
98
128
  attributes[GenAi.TOOL_CALL_ARGUMENTS] = stringify(args);
99
129
  }
100
130
  return attributes;
101
131
  }
132
+ /**
133
+ * Attributes for an `invoke_agent` span (set at start).
134
+ *
135
+ * Per the semconv agent-span table for in-process invocation, model and
136
+ * provider are intentionally NOT recorded: pi agents can switch models
137
+ * mid-run, and the spec says `gen_ai.request.model` SHOULD NOT be
138
+ * populated for agents that support dynamic model selection.
139
+ */
140
+ export function invokeAgentAttributes(meta) {
141
+ return {
142
+ [GenAi.CONVERSATION_ID]: meta.conversationId,
143
+ [GenAi.AGENT_ID]: meta.agentId,
144
+ [GenAi.AGENT_NAME]: meta.agentName,
145
+ [GenAi.OPERATION_NAME]: "invoke_agent",
146
+ };
147
+ }
102
148
  /** Result attribute for an execute_tool span (set at end). */
103
149
  export function executeToolResultAttribute(result) {
104
150
  if (result === undefined)
@@ -112,11 +158,44 @@ function serializeToolDefinitions(tools) {
112
158
  if (!tools || tools.length === 0)
113
159
  return undefined;
114
160
  const detailed = tools.map((tool) => ({
161
+ type: "function",
115
162
  name: tool.name,
116
163
  description: tool.description,
117
164
  parameters: tool.parameters,
118
165
  }));
119
- return serializeWithCap(() => JSON.stringify(detailed.map((def) => ({ type: "function", ...def }))), () => JSON.stringify(detailed.map((def) => ({ type: "function", name: def.name }))), GenAi.TOOL_DEFINITIONS);
166
+ return serializeWithCap(() => JSON.stringify(detailed), () => JSON.stringify(detailed.map((def) => ({ type: def.type, name: def.name }))), GenAi.TOOL_DEFINITIONS);
167
+ }
168
+ /**
169
+ * Cap chars per part-content string in the truncation fallback for
170
+ * `gen_ai.input.messages` / `gen_ai.output.messages`. Chosen so even long
171
+ * transcripts stay within MAX_BYTES once every part is clamped.
172
+ */
173
+ const MAX_PART_CONTENT_CHARS = 8_000;
174
+ /**
175
+ * Serialize an input/output message array under the size cap, per the
176
+ * semconv guidance that instrumentations may truncate individual message
177
+ * contents while preserving JSON structure: full payload first, then a
178
+ * fallback with each part's content clamped, then drop the attribute.
179
+ */
180
+ function serializeMessagesWithCap(messages, attributeName) {
181
+ return serializeWithCap(() => JSON.stringify(messages), () => JSON.stringify(messages.map(truncateMessageParts)), attributeName);
182
+ }
183
+ function truncateMessageParts(message) {
184
+ return {
185
+ ...message,
186
+ parts: message.parts.map((part) => {
187
+ const truncated = { ...part };
188
+ for (const key of ["content", "response"]) {
189
+ const value = truncated[key];
190
+ if (typeof value === "string" &&
191
+ value.length > MAX_PART_CONTENT_CHARS) {
192
+ truncated[key] =
193
+ value.slice(0, MAX_PART_CONTENT_CHARS) + "…[truncated]";
194
+ }
195
+ }
196
+ return truncated;
197
+ }),
198
+ };
120
199
  }
121
200
  /**
122
201
  * Try the detailed serializer; if it exceeds the cap, try a compact fallback;
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../src/attributes.ts"],"names":[],"mappings":"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"}
package/dist/convert.d.ts CHANGED
@@ -27,6 +27,14 @@ export declare function messagesToInputMessages(messages: readonly Message[], op
27
27
  export declare function assistantToOutputMessages(message: AssistantMessage): OutputMessage[];
28
28
  /** Wrap a system prompt in the semconv shape used for `gen_ai.system_instructions`. */
29
29
  export declare function systemPromptToInstructions(systemPrompt: string): SystemInstruction[];
30
+ /**
31
+ * Map a pi-ai stop reason to the semconv `FinishReason` value
32
+ * (gen-ai-output-messages.json). Only `"toolUse"` needs translation — the
33
+ * schema enum calls it `"tool_call"`. The remaining pi values are either
34
+ * enum members already (`stop`, `length`, `error`) or intentionally kept
35
+ * as custom strings (`aborted`; the schema allows free-form values).
36
+ */
37
+ export declare function semconvFinishReason(stopReason: string): string;
30
38
  /**
31
39
  * Hydrate an array of semconv messages back into pi-ai `Message[]`.
32
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EAMR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAEV,YAAY,EAEZ,aAAa,EAEb,iBAAiB,EAIlB,MAAM,0BAA0B,CAAC;AAqBlC,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAMD,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,EAAE,CAOhB;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,aAAa,EAAE,CAGjB;AAED,uFAAuF;AACvF,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CAErB;AAiMD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,OAAO,EAAE,CAoEX"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EAMR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAGV,YAAY,EAEZ,aAAa,EAEb,iBAAiB,EAIlB,MAAM,0BAA0B,CAAC;AAqBlC,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAMD,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,EAAE,CAOhB;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,aAAa,EAAE,CAGjB;AAED,uFAAuF;AACvF,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CAErB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAyND;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,OAAO,EAAE,CAoEX"}
package/dist/convert.js CHANGED
@@ -44,6 +44,16 @@ export function assistantToOutputMessages(message) {
44
44
  export function systemPromptToInstructions(systemPrompt) {
45
45
  return [{ type: "text", content: systemPrompt }];
46
46
  }
47
+ /**
48
+ * Map a pi-ai stop reason to the semconv `FinishReason` value
49
+ * (gen-ai-output-messages.json). Only `"toolUse"` needs translation — the
50
+ * schema enum calls it `"tool_call"`. The remaining pi values are either
51
+ * enum members already (`stop`, `length`, `error`) or intentionally kept
52
+ * as custom strings (`aborted`; the schema allows free-form values).
53
+ */
54
+ export function semconvFinishReason(stopReason) {
55
+ return stopReason === "toolUse" ? "tool_call" : stopReason;
56
+ }
47
57
  function messageToSemconv(message, options) {
48
58
  switch (message.role) {
49
59
  case "user":
@@ -69,10 +79,35 @@ function userMessageToSemconv(message, options) {
69
79
  parts: [{ type: "compaction", content: summary }],
70
80
  };
71
81
  }
72
- return {
73
- role: "user",
74
- parts: [{ type: "text", content: text }],
75
- };
82
+ if (typeof message.content === "string") {
83
+ return {
84
+ role: "user",
85
+ parts: [{ type: "text", content: message.content }],
86
+ };
87
+ }
88
+ // Block-array content: preserve part order, including image payloads.
89
+ // The bounded message serializer truncates oversized content later.
90
+ const parts = [];
91
+ for (const block of message.content) {
92
+ if (block.type === "text") {
93
+ if (block.text)
94
+ parts.push({ type: "text", content: block.text });
95
+ }
96
+ else {
97
+ const blob = {
98
+ type: "blob",
99
+ modality: "image",
100
+ content: block.data,
101
+ };
102
+ if (block.mimeType)
103
+ blob.mime_type = block.mimeType;
104
+ parts.push(blob);
105
+ }
106
+ }
107
+ if (parts.length === 0) {
108
+ parts.push({ type: "text", content: "" });
109
+ }
110
+ return { role: "user", parts };
76
111
  }
77
112
  /**
78
113
  * Identify a user message as a rendered compaction summary.
@@ -105,8 +140,9 @@ function assistantMessageToSemconv(message) {
105
140
  parts.push(part);
106
141
  }
107
142
  const result = { parts };
108
- if (message.stopReason)
109
- result.finish_reason = message.stopReason;
143
+ if (message.stopReason) {
144
+ result.finish_reason = semconvFinishReason(message.stopReason);
145
+ }
110
146
  if (message.api)
111
147
  result.api = message.api;
112
148
  if (message.provider)
@@ -163,7 +199,7 @@ function assistantBlockToPart(block) {
163
199
  if (!block.thinking && !block.thinkingSignature)
164
200
  return null;
165
201
  const part = {
166
- type: "thinking",
202
+ type: "reasoning",
167
203
  content: block.thinking ?? "",
168
204
  };
169
205
  if (block.thinkingSignature) {
@@ -401,7 +437,7 @@ function isCompactionPart(part) {
401
437
  return part.type === "compaction";
402
438
  }
403
439
  function isReasoningPart(part) {
404
- return part.type === "thinking";
440
+ return part.type === "reasoning";
405
441
  }
406
442
  function isToolCallRequestPart(part) {
407
443
  return part.type === "tool_call";
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Best-effort `error.type` classification per the semconv guidance: prefer
3
+ * the provider's error code (HTTP status) or the canonical exception name,
4
+ * falling back to a documented low-cardinality label.
5
+ *
6
+ * Values this instrumentation reports:
7
+ * - a 4xx/5xx HTTP status extracted from the provider error message
8
+ * - the thrown exception's class name (when it is a subclass of Error)
9
+ * - `"model_error"` — the stream ended with a provider-reported error
10
+ * - `"exception"` — the stream function itself threw
11
+ * - `"tool_error"` — a tool execution returned an error result
12
+ */
13
+ export declare function classifyErrorType(message: string | undefined, fallback: string): string;
14
+ /** classifyErrorType for a thrown value: status code → class name → fallback. */
15
+ export declare function classifyThrownErrorType(error: unknown): string;
16
+ //# sourceMappingURL=error-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-type.d.ts","sourceRoot":"","sources":["../src/error-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GACf,MAAM,CAMR;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQ9D"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Best-effort `error.type` classification per the semconv guidance: prefer
3
+ * the provider's error code (HTTP status) or the canonical exception name,
4
+ * falling back to a documented low-cardinality label.
5
+ *
6
+ * Values this instrumentation reports:
7
+ * - a 4xx/5xx HTTP status extracted from the provider error message
8
+ * - the thrown exception's class name (when it is a subclass of Error)
9
+ * - `"model_error"` — the stream ended with a provider-reported error
10
+ * - `"exception"` — the stream function itself threw
11
+ * - `"tool_error"` — a tool execution returned an error result
12
+ */
13
+ export function classifyErrorType(message, fallback) {
14
+ if (message) {
15
+ const status = /\b([45]\d{2})\b/.exec(message);
16
+ if (status?.[1])
17
+ return status[1];
18
+ }
19
+ return fallback;
20
+ }
21
+ /** classifyErrorType for a thrown value: status code → class name → fallback. */
22
+ export function classifyThrownErrorType(error) {
23
+ const message = error instanceof Error ? error.message : String(error);
24
+ const status = /\b([45]\d{2})\b/.exec(message);
25
+ if (status?.[1])
26
+ return status[1];
27
+ if (error instanceof Error && error.name && error.name !== "Error") {
28
+ return error.name;
29
+ }
30
+ return "exception";
31
+ }
32
+ //# sourceMappingURL=error-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-type.js","sourceRoot":"","sources":["../src/error-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA2B,EAC3B,QAAgB;IAEhB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,9 @@
5
5
  * (`@earendil-works/pi-ai`, `@earendil-works/pi-agent-core`).
6
6
  *
7
7
  * Emits OTel GenAI semantic-convention spans for chat completions
8
- * (`chat ${provider}`) and tool execution (`execute_tool ${tool_name}`).
8
+ * (`chat ${model}`), tool execution (`execute_tool ${tool_name}`), and —
9
+ * optionally — agent runs (`invoke_agent ${agent_name}`), plus the GenAI
10
+ * client metrics when a meter is provided.
9
11
  *
10
12
  * @example
11
13
  * ```ts
@@ -19,8 +21,9 @@
19
21
  */
20
22
  export { instrumentStream, type InstrumentStreamOptions, } from "./instrument-stream.js";
21
23
  export { instrumentAgent, type AgentInstrumentation, type InstrumentAgentOptions, } from "./instrument-agent.js";
22
- export { chatRequestAttributes, chatResponseAttributes, executeToolAttributes, executeToolResultAttribute, type AgentMeta, } from "./attributes.js";
23
- export { assistantToOutputMessages, inputMessagesToMessages, messagesToInputMessages, systemPromptToInstructions, type ConvertOptions, } from "./convert.js";
24
+ export { chatRequestAttributes, chatResponseAttributes, executeToolAttributes, executeToolResultAttribute, invokeAgentAttributes, serverAttributes, type AgentMeta, } from "./attributes.js";
25
+ export { genAiMetrics, type GenAiMetrics } from "./metrics.js";
26
+ export { assistantToOutputMessages, inputMessagesToMessages, messagesToInputMessages, semconvFinishReason, systemPromptToInstructions, type ConvertOptions, } from "./convert.js";
24
27
  export type { AbortTerminationReason, GenAiAttributes, InputMessage, MessagePart, MessageRole, OutputMessage, ReasoningPart, SystemInstruction, TextPart, ToolCallRequestPart, ToolCallResponsePart, ToolDefinition, } from "@introspection-sdk/types";
25
28
  export { GenAi, GenAiSpanName, IntrospectionAttr, toAttributes, } from "@introspection-sdk/types";
26
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAK/D,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,9 @@
5
5
  * (`@earendil-works/pi-ai`, `@earendil-works/pi-agent-core`).
6
6
  *
7
7
  * Emits OTel GenAI semantic-convention spans for chat completions
8
- * (`chat ${provider}`) and tool execution (`execute_tool ${tool_name}`).
8
+ * (`chat ${model}`), tool execution (`execute_tool ${tool_name}`), and —
9
+ * optionally — agent runs (`invoke_agent ${agent_name}`), plus the GenAI
10
+ * client metrics when a meter is provided.
9
11
  *
10
12
  * @example
11
13
  * ```ts
@@ -21,10 +23,12 @@
21
23
  export { instrumentStream, } from "./instrument-stream.js";
22
24
  export { instrumentAgent, } from "./instrument-agent.js";
23
25
  // Attribute builders — exposed for callers that want to compose their own spans
24
- export { chatRequestAttributes, chatResponseAttributes, executeToolAttributes, executeToolResultAttribute, } from "./attributes.js";
26
+ export { chatRequestAttributes, chatResponseAttributes, executeToolAttributes, executeToolResultAttribute, invokeAgentAttributes, serverAttributes, } from "./attributes.js";
27
+ // Metric instruments — exposed for callers that record their own measurements
28
+ export { genAiMetrics } from "./metrics.js";
25
29
  // Converters — exposed for telemetry replay (rebuilding pi-ai message arrays
26
30
  // from stored span attributes) and downstream consumers that want the raw
27
31
  // semconv shapes.
28
- export { assistantToOutputMessages, inputMessagesToMessages, messagesToInputMessages, systemPromptToInstructions, } from "./convert.js";
32
+ export { assistantToOutputMessages, inputMessagesToMessages, messagesToInputMessages, semconvFinishReason, systemPromptToInstructions, } from "./convert.js";
29
33
  export { GenAi, GenAiSpanName, IntrospectionAttr, toAttributes, } from "@introspection-sdk/types";
30
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,kBAAkB;AAClB,OAAO,EACL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,gFAAgF;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,iBAAiB,CAAC;AAEzB,6EAA6E;AAC7E,0EAA0E;AAC1E,kBAAkB;AAClB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,GAE3B,MAAM,cAAc,CAAC;AAiBtB,OAAO,EACL,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,kBAAkB;AAClB,OAAO,EACL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,gFAAgF;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,GAEjB,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAE/D,6EAA6E;AAC7E,0EAA0E;AAC1E,kBAAkB;AAClB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,GAE3B,MAAM,cAAc,CAAC;AAiBtB,OAAO,EACL,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,0BAA0B,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Subscribe to a pi-agent {@link Agent} to emit `execute_tool` spans for every
3
- * tool call the loop runs.
3
+ * tool call the loop runs, and (optionally) one `invoke_agent` span per run.
4
4
  */
5
- import { type Attributes, type Context as OtelContext, type Tracer } from "@opentelemetry/api";
5
+ import { type Attributes, type Context as OtelContext, type Meter, type Tracer } from "@opentelemetry/api";
6
6
  import type { Agent, AgentEvent } from "@earendil-works/pi-agent-core";
7
7
  import { type AgentMeta } from "./attributes.js";
8
8
  export interface InstrumentAgentOptions {
@@ -10,9 +10,31 @@ export interface InstrumentAgentOptions {
10
10
  tracer: Tracer;
11
11
  /** Required metadata stamped onto every execute_tool span. */
12
12
  meta: AgentMeta;
13
+ /**
14
+ * Optional meter. When set, the wrapper also records
15
+ * `gen_ai.execute_tool.duration` per tool call and (when `runSpans` is
16
+ * enabled) `gen_ai.invoke_agent.duration` per run.
17
+ */
18
+ meter?: Meter;
19
+ /**
20
+ * Emit one `invoke_agent {agent.name}` span per agent run
21
+ * (`agent_start` → `agent_end`), carrying conversation/agent identity
22
+ * and the final finish reason. Usage attributes stay on the chat spans
23
+ * only, so aggregations that sum a whole trace don't double-count.
24
+ *
25
+ * Off by default: hosts that already create their own turn/run spans
26
+ * (and parent chat spans onto them via `getParentContext`) would get
27
+ * duplicate run spans otherwise. When enabled, wire the chat spans under
28
+ * the run span with
29
+ * `instrumentStream(fn, { getParentContext: () => handle.getRunContext() })`;
30
+ * tool spans parent onto the run span automatically unless
31
+ * `getParentContext` is provided.
32
+ */
33
+ runSpans?: boolean;
13
34
  /**
14
35
  * Returns the parent OTel context for the next tool span. If undefined or
15
- * returns null, `context.active()` is used at the time the start event fires.
36
+ * returns null, the active run span (when `runSpans` is enabled) or
37
+ * `context.active()` is used at the time the start event fires.
16
38
  */
17
39
  getParentContext?: () => OtelContext | null | undefined;
18
40
  /**
@@ -26,13 +48,20 @@ export interface InstrumentAgentOptions {
26
48
  spanName?: (toolName: string) => string;
27
49
  }
28
50
  export interface AgentInstrumentation {
29
- /** Stop subscribing and finalize any tool spans still open. */
51
+ /** Stop subscribing and finalize any spans still open. */
30
52
  stop: () => void;
53
+ /**
54
+ * OTel context of the active `invoke_agent` span, when `runSpans` is
55
+ * enabled and a run is in flight. Pass to `instrumentStream`'s
56
+ * `getParentContext` so chat spans nest under the run span.
57
+ */
58
+ getRunContext: () => OtelContext | undefined;
31
59
  }
32
60
  /**
33
61
  * Subscribe to {@link Agent.subscribe} and emit one `execute_tool ${name}`
34
- * span per tool call. Returns a handle whose `stop()` unsubscribes and
35
- * finalizes any still-open spans.
62
+ * span per tool call (plus one `invoke_agent` span per run when enabled).
63
+ * Returns a handle whose `stop()` unsubscribes and finalizes any still-open
64
+ * spans.
36
65
  *
37
66
  * Tool call IDs are assumed unique per agent run; concurrent tool execution
38
67
  * (`ToolExecutionMode = "parallel"`) is supported because each id keys its