@azure/ai-projects 2.8.0 → 2.9.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 (215) hide show
  1. package/README.md +73 -5
  2. package/dist/browser/aiProjectClient.d.ts.map +1 -1
  3. package/dist/browser/aiProjectClient.js +1 -1
  4. package/dist/browser/aiProjectClient.js.map +1 -1
  5. package/dist/browser/classic/beta/agents/index.d.ts +2 -1
  6. package/dist/browser/classic/beta/agents/index.d.ts.map +1 -1
  7. package/dist/browser/classic/beta/agents/index.js +3 -2
  8. package/dist/browser/classic/beta/agents/index.js.map +1 -1
  9. package/dist/browser/classic/beta/index.d.ts +2 -1
  10. package/dist/browser/classic/beta/index.d.ts.map +1 -1
  11. package/dist/browser/classic/beta/index.js +3 -3
  12. package/dist/browser/classic/beta/index.js.map +1 -1
  13. package/dist/browser/classic/beta/voiceAgents/conversations/index.d.ts +2 -1
  14. package/dist/browser/classic/beta/voiceAgents/conversations/index.d.ts.map +1 -1
  15. package/dist/browser/classic/beta/voiceAgents/conversations/index.js +5 -4
  16. package/dist/browser/classic/beta/voiceAgents/conversations/index.js.map +1 -1
  17. package/dist/browser/classic/beta/voiceAgents/index.d.ts +3 -2
  18. package/dist/browser/classic/beta/voiceAgents/index.d.ts.map +1 -1
  19. package/dist/browser/classic/beta/voiceAgents/index.js +5 -5
  20. package/dist/browser/classic/beta/voiceAgents/index.js.map +1 -1
  21. package/dist/browser/classic/beta/voiceAgents/telephony/index.d.ts +2 -1
  22. package/dist/browser/classic/beta/voiceAgents/telephony/index.d.ts.map +1 -1
  23. package/dist/browser/classic/beta/voiceAgents/telephony/index.js +16 -11
  24. package/dist/browser/classic/beta/voiceAgents/telephony/index.js.map +1 -1
  25. package/dist/browser/constants.d.ts +1 -1
  26. package/dist/browser/constants.js +1 -1
  27. package/dist/browser/constants.js.map +1 -1
  28. package/dist/browser/index.d.ts +1 -1
  29. package/dist/browser/index.d.ts.map +1 -1
  30. package/dist/browser/index.js.map +1 -1
  31. package/dist/browser/models/index.d.ts +1 -1
  32. package/dist/browser/models/index.d.ts.map +1 -1
  33. package/dist/browser/models/index.js.map +1 -1
  34. package/dist/browser/models/models.d.ts +203 -158
  35. package/dist/browser/models/models.d.ts.map +1 -1
  36. package/dist/browser/models/models.js +129 -120
  37. package/dist/browser/models/models.js.map +1 -1
  38. package/dist/browser/package.json +1 -1
  39. package/dist/browser/realtime/voiceAgentRealtimeClient.d.ts +3 -0
  40. package/dist/browser/realtime/voiceAgentRealtimeClient.d.ts.map +1 -1
  41. package/dist/browser/realtime/voiceAgentRealtimeClient.js +39 -8
  42. package/dist/browser/realtime/voiceAgentRealtimeClient.js.map +1 -1
  43. package/dist/browser/tracing/configuration.d.ts +3 -5
  44. package/dist/browser/tracing/configuration.d.ts.map +1 -1
  45. package/dist/browser/tracing/configuration.js +8 -6
  46. package/dist/browser/tracing/configuration.js.map +1 -1
  47. package/dist/browser/tracing/tracingClient.d.ts +1 -1
  48. package/dist/browser/tracing/tracingClient.d.ts.map +1 -1
  49. package/dist/browser/tracing/tracingClient.js +2 -2
  50. package/dist/browser/tracing/tracingClient.js.map +1 -1
  51. package/dist/browser/tracing/voiceAgentTracing.d.ts +63 -0
  52. package/dist/browser/tracing/voiceAgentTracing.d.ts.map +1 -0
  53. package/dist/browser/tracing/voiceAgentTracing.js +740 -0
  54. package/dist/browser/tracing/voiceAgentTracing.js.map +1 -0
  55. package/dist/commonjs/aiProjectClient.d.ts.map +1 -1
  56. package/dist/commonjs/aiProjectClient.js +2 -1
  57. package/dist/commonjs/aiProjectClient.js.map +2 -2
  58. package/dist/commonjs/classic/beta/agents/index.d.ts +2 -1
  59. package/dist/commonjs/classic/beta/agents/index.d.ts.map +1 -1
  60. package/dist/commonjs/classic/beta/agents/index.js +9 -2
  61. package/dist/commonjs/classic/beta/agents/index.js.map +2 -2
  62. package/dist/commonjs/classic/beta/index.d.ts +2 -1
  63. package/dist/commonjs/classic/beta/index.d.ts.map +1 -1
  64. package/dist/commonjs/classic/beta/index.js +9 -3
  65. package/dist/commonjs/classic/beta/index.js.map +2 -2
  66. package/dist/commonjs/classic/beta/voiceAgents/conversations/index.d.ts +2 -1
  67. package/dist/commonjs/classic/beta/voiceAgents/conversations/index.d.ts.map +1 -1
  68. package/dist/commonjs/classic/beta/voiceAgents/conversations/index.js +10 -4
  69. package/dist/commonjs/classic/beta/voiceAgents/conversations/index.js.map +2 -2
  70. package/dist/commonjs/classic/beta/voiceAgents/index.d.ts +3 -2
  71. package/dist/commonjs/classic/beta/voiceAgents/index.d.ts.map +1 -1
  72. package/dist/commonjs/classic/beta/voiceAgents/index.js +4 -4
  73. package/dist/commonjs/classic/beta/voiceAgents/index.js.map +2 -2
  74. package/dist/commonjs/classic/beta/voiceAgents/telephony/index.d.ts +2 -1
  75. package/dist/commonjs/classic/beta/voiceAgents/telephony/index.d.ts.map +1 -1
  76. package/dist/commonjs/classic/beta/voiceAgents/telephony/index.js +33 -11
  77. package/dist/commonjs/classic/beta/voiceAgents/telephony/index.js.map +2 -2
  78. package/dist/commonjs/constants.d.ts +1 -1
  79. package/dist/commonjs/constants.js +1 -1
  80. package/dist/commonjs/constants.js.map +1 -1
  81. package/dist/commonjs/index.d.ts +1 -1
  82. package/dist/commonjs/index.d.ts.map +1 -1
  83. package/dist/commonjs/index.js.map +1 -1
  84. package/dist/commonjs/models/index.d.ts +1 -1
  85. package/dist/commonjs/models/index.d.ts.map +1 -1
  86. package/dist/commonjs/models/index.js.map +1 -1
  87. package/dist/commonjs/models/models.d.ts +203 -158
  88. package/dist/commonjs/models/models.d.ts.map +1 -1
  89. package/dist/commonjs/models/models.js +145 -106
  90. package/dist/commonjs/models/models.js.map +2 -2
  91. package/dist/commonjs/package.json +1 -1
  92. package/dist/commonjs/realtime/voiceAgentRealtimeClient.d.ts +3 -0
  93. package/dist/commonjs/realtime/voiceAgentRealtimeClient.d.ts.map +1 -1
  94. package/dist/commonjs/realtime/voiceAgentRealtimeClient.js +45 -17
  95. package/dist/commonjs/realtime/voiceAgentRealtimeClient.js.map +2 -2
  96. package/dist/commonjs/tracing/configuration.d.ts +3 -5
  97. package/dist/commonjs/tracing/configuration.d.ts.map +1 -1
  98. package/dist/commonjs/tracing/configuration.js +5 -1
  99. package/dist/commonjs/tracing/configuration.js.map +2 -2
  100. package/dist/commonjs/tracing/tracingClient.d.ts +1 -1
  101. package/dist/commonjs/tracing/tracingClient.d.ts.map +1 -1
  102. package/dist/commonjs/tracing/tracingClient.js +2 -2
  103. package/dist/commonjs/tracing/tracingClient.js.map +2 -2
  104. package/dist/commonjs/tracing/voiceAgentTracing.d.ts +63 -0
  105. package/dist/commonjs/tracing/voiceAgentTracing.d.ts.map +1 -0
  106. package/dist/commonjs/tracing/voiceAgentTracing.js +705 -0
  107. package/dist/commonjs/tracing/voiceAgentTracing.js.map +7 -0
  108. package/dist/commonjs/tsdoc-metadata.json +1 -1
  109. package/dist/esm/aiProjectClient.d.ts.map +1 -1
  110. package/dist/esm/aiProjectClient.js +1 -1
  111. package/dist/esm/aiProjectClient.js.map +1 -1
  112. package/dist/esm/classic/beta/agents/index.d.ts +2 -1
  113. package/dist/esm/classic/beta/agents/index.d.ts.map +1 -1
  114. package/dist/esm/classic/beta/agents/index.js +3 -2
  115. package/dist/esm/classic/beta/agents/index.js.map +1 -1
  116. package/dist/esm/classic/beta/index.d.ts +2 -1
  117. package/dist/esm/classic/beta/index.d.ts.map +1 -1
  118. package/dist/esm/classic/beta/index.js +3 -3
  119. package/dist/esm/classic/beta/index.js.map +1 -1
  120. package/dist/esm/classic/beta/voiceAgents/conversations/index.d.ts +2 -1
  121. package/dist/esm/classic/beta/voiceAgents/conversations/index.d.ts.map +1 -1
  122. package/dist/esm/classic/beta/voiceAgents/conversations/index.js +5 -4
  123. package/dist/esm/classic/beta/voiceAgents/conversations/index.js.map +1 -1
  124. package/dist/esm/classic/beta/voiceAgents/index.d.ts +3 -2
  125. package/dist/esm/classic/beta/voiceAgents/index.d.ts.map +1 -1
  126. package/dist/esm/classic/beta/voiceAgents/index.js +5 -5
  127. package/dist/esm/classic/beta/voiceAgents/index.js.map +1 -1
  128. package/dist/esm/classic/beta/voiceAgents/telephony/index.d.ts +2 -1
  129. package/dist/esm/classic/beta/voiceAgents/telephony/index.d.ts.map +1 -1
  130. package/dist/esm/classic/beta/voiceAgents/telephony/index.js +16 -11
  131. package/dist/esm/classic/beta/voiceAgents/telephony/index.js.map +1 -1
  132. package/dist/esm/constants.d.ts +1 -1
  133. package/dist/esm/constants.js +1 -1
  134. package/dist/esm/constants.js.map +1 -1
  135. package/dist/esm/index.d.ts +1 -1
  136. package/dist/esm/index.d.ts.map +1 -1
  137. package/dist/esm/index.js.map +1 -1
  138. package/dist/esm/models/index.d.ts +1 -1
  139. package/dist/esm/models/index.d.ts.map +1 -1
  140. package/dist/esm/models/index.js.map +1 -1
  141. package/dist/esm/models/models.d.ts +203 -158
  142. package/dist/esm/models/models.d.ts.map +1 -1
  143. package/dist/esm/models/models.js +129 -120
  144. package/dist/esm/models/models.js.map +1 -1
  145. package/dist/esm/package.json +1 -1
  146. package/dist/esm/realtime/voiceAgentRealtimeClient.d.ts +3 -0
  147. package/dist/esm/realtime/voiceAgentRealtimeClient.d.ts.map +1 -1
  148. package/dist/esm/realtime/voiceAgentRealtimeClient.js +39 -8
  149. package/dist/esm/realtime/voiceAgentRealtimeClient.js.map +1 -1
  150. package/dist/esm/tracing/configuration.d.ts +3 -5
  151. package/dist/esm/tracing/configuration.d.ts.map +1 -1
  152. package/dist/esm/tracing/configuration.js +8 -6
  153. package/dist/esm/tracing/configuration.js.map +1 -1
  154. package/dist/esm/tracing/tracingClient.d.ts +1 -1
  155. package/dist/esm/tracing/tracingClient.d.ts.map +1 -1
  156. package/dist/esm/tracing/tracingClient.js +2 -2
  157. package/dist/esm/tracing/tracingClient.js.map +1 -1
  158. package/dist/esm/tracing/voiceAgentTracing.d.ts +63 -0
  159. package/dist/esm/tracing/voiceAgentTracing.d.ts.map +1 -0
  160. package/dist/esm/tracing/voiceAgentTracing.js +740 -0
  161. package/dist/esm/tracing/voiceAgentTracing.js.map +1 -0
  162. package/dist/react-native/aiProjectClient.d.ts.map +1 -1
  163. package/dist/react-native/aiProjectClient.js +1 -1
  164. package/dist/react-native/aiProjectClient.js.map +1 -1
  165. package/dist/react-native/classic/beta/agents/index.d.ts +2 -1
  166. package/dist/react-native/classic/beta/agents/index.d.ts.map +1 -1
  167. package/dist/react-native/classic/beta/agents/index.js +3 -2
  168. package/dist/react-native/classic/beta/agents/index.js.map +1 -1
  169. package/dist/react-native/classic/beta/index.d.ts +2 -1
  170. package/dist/react-native/classic/beta/index.d.ts.map +1 -1
  171. package/dist/react-native/classic/beta/index.js +3 -3
  172. package/dist/react-native/classic/beta/index.js.map +1 -1
  173. package/dist/react-native/classic/beta/voiceAgents/conversations/index.d.ts +2 -1
  174. package/dist/react-native/classic/beta/voiceAgents/conversations/index.d.ts.map +1 -1
  175. package/dist/react-native/classic/beta/voiceAgents/conversations/index.js +5 -4
  176. package/dist/react-native/classic/beta/voiceAgents/conversations/index.js.map +1 -1
  177. package/dist/react-native/classic/beta/voiceAgents/index.d.ts +3 -2
  178. package/dist/react-native/classic/beta/voiceAgents/index.d.ts.map +1 -1
  179. package/dist/react-native/classic/beta/voiceAgents/index.js +5 -5
  180. package/dist/react-native/classic/beta/voiceAgents/index.js.map +1 -1
  181. package/dist/react-native/classic/beta/voiceAgents/telephony/index.d.ts +2 -1
  182. package/dist/react-native/classic/beta/voiceAgents/telephony/index.d.ts.map +1 -1
  183. package/dist/react-native/classic/beta/voiceAgents/telephony/index.js +16 -11
  184. package/dist/react-native/classic/beta/voiceAgents/telephony/index.js.map +1 -1
  185. package/dist/react-native/constants.d.ts +1 -1
  186. package/dist/react-native/constants.js +1 -1
  187. package/dist/react-native/constants.js.map +1 -1
  188. package/dist/react-native/index.d.ts +1 -1
  189. package/dist/react-native/index.d.ts.map +1 -1
  190. package/dist/react-native/index.js.map +1 -1
  191. package/dist/react-native/models/index.d.ts +1 -1
  192. package/dist/react-native/models/index.d.ts.map +1 -1
  193. package/dist/react-native/models/index.js.map +1 -1
  194. package/dist/react-native/models/models.d.ts +203 -158
  195. package/dist/react-native/models/models.d.ts.map +1 -1
  196. package/dist/react-native/models/models.js +129 -120
  197. package/dist/react-native/models/models.js.map +1 -1
  198. package/dist/react-native/package.json +1 -1
  199. package/dist/react-native/realtime/voiceAgentRealtimeClient.d.ts +3 -0
  200. package/dist/react-native/realtime/voiceAgentRealtimeClient.d.ts.map +1 -1
  201. package/dist/react-native/realtime/voiceAgentRealtimeClient.js +39 -8
  202. package/dist/react-native/realtime/voiceAgentRealtimeClient.js.map +1 -1
  203. package/dist/react-native/tracing/configuration.d.ts +3 -5
  204. package/dist/react-native/tracing/configuration.d.ts.map +1 -1
  205. package/dist/react-native/tracing/configuration.js +8 -6
  206. package/dist/react-native/tracing/configuration.js.map +1 -1
  207. package/dist/react-native/tracing/tracingClient.d.ts +1 -1
  208. package/dist/react-native/tracing/tracingClient.d.ts.map +1 -1
  209. package/dist/react-native/tracing/tracingClient.js +2 -2
  210. package/dist/react-native/tracing/tracingClient.js.map +1 -1
  211. package/dist/react-native/tracing/voiceAgentTracing.d.ts +63 -0
  212. package/dist/react-native/tracing/voiceAgentTracing.d.ts.map +1 -0
  213. package/dist/react-native/tracing/voiceAgentTracing.js +740 -0
  214. package/dist/react-native/tracing/voiceAgentTracing.js.map +1 -0
  215. package/package.json +6 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceAgentTracing.js","sourceRoot":"","sources":["../../../src/tracing/voiceAgentTracing.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Attributes, Context, Span } from \"@opentelemetry/api\";\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nimport { isRestError } from \"@azure/core-rest-pipeline\";\nimport type { ResolvedTracingConfig } from \"./configuration.js\";\nimport type {\n VoiceAgentClientEvent,\n VoiceAgentRealtimeResponse,\n VoiceAgentTransport,\n} from \"../models/models.js\";\nimport type { VoiceAgentRealtimeEvent } from \"../realtime/events.js\";\nimport { logger } from \"../logger.js\";\nimport { setServerAttributes, parseEndpoint } from \"./attributes.js\";\nimport { startSpan, runInSpanContext } from \"./tracingClient.js\";\nimport { recordOperationDuration, recordTokenUsage } from \"./metrics.js\";\nimport {\n AGENTS_PROVIDER,\n AZ_NAMESPACE,\n AZ_NAMESPACE_VALUE,\n GEN_AI_PROVIDER_NAME,\n GEN_AI_OPERATION_NAME,\n GEN_AI_INPUT_MESSAGES,\n GEN_AI_OUTPUT_MESSAGES,\n GEN_AI_REQUEST_MODEL,\n GEN_AI_RESPONSE_ID,\n GEN_AI_CONVERSATION_ID,\n GEN_AI_USAGE_INPUT_TOKENS,\n GEN_AI_USAGE_OUTPUT_TOKENS,\n GEN_AI_TOOL_CALL_ID,\n ERROR_TYPE,\n} from \"./constants.js\";\n\nconst prefix = \"az.ai.voice_agents.\";\nconst maxResponses = 64;\nconst maxInputItems = 64;\nconst maxParts = 32;\nconst maxContentLength = 4096;\nconst safeErrorTypes = new Set([\n \"Error\",\n \"TypeError\",\n \"AbortError\",\n \"RestError\",\n \"VoiceAgentAuthenticationError\",\n \"VoiceAgentConnectionError\",\n \"VoiceAgentProtocolError\",\n \"invalid_request_error\",\n \"server_error\",\n \"authentication_error\",\n \"rate_limit_error\",\n]);\nconst safeErrorCodes = new Set([\n \"agent_disabled\",\n \"invalid_request\",\n \"invalid_request_error\",\n \"invalid_event\",\n \"invalid_state\",\n \"rate_limit_exceeded\",\n \"insufficient_quota\",\n \"session_expired\",\n \"authentication_error\",\n \"permission_denied\",\n \"server_error\",\n]);\n\nfunction serverErrorAttributes(type: unknown, code?: unknown): Attributes {\n const attributes: Attributes = {\n [ERROR_TYPE]: typeof type === \"string\" && safeErrorTypes.has(type) ? type : \"Error\",\n };\n if (typeof code === \"string\" && safeErrorCodes.has(code)) {\n attributes[`${prefix}error.code`] = code;\n }\n return attributes;\n}\n\n// Exporter/provider failures must not change a service operation's result.\nfunction recordTelemetry(action: () => void): void {\n try {\n action();\n } catch {\n logger.warning(\"Unable to record Voice Agents telemetry.\");\n }\n}\n\nfunction commonAttributes(span: Span, endpoint: string): void {\n span.setAttribute(GEN_AI_PROVIDER_NAME, AGENTS_PROVIDER);\n span.setAttribute(AZ_NAMESPACE, AZ_NAMESPACE_VALUE);\n setServerAttributes(span, endpoint);\n}\n\nfunction fail(span: Span, error: unknown): void {\n const type = isRestError(error)\n ? \"RestError\"\n : error instanceof Error && safeErrorTypes.has(error.name)\n ? error.name\n : \"Error\";\n span.setAttribute(ERROR_TYPE, type);\n if (isRestError(error) && error.statusCode !== undefined) {\n span.setAttribute(\"http.response.status_code\", error.statusCode);\n }\n span.setStatus({ code: SpanStatusCode.ERROR });\n}\n\n/** @internal */\nexport async function traceVoiceAgentOperation<T>(\n operationName: string,\n endpoint: string,\n config: ResolvedTracingConfig | undefined,\n operation: () => Promise<T>,\n resultAttributes?: (result: T) => Attributes,\n): Promise<T> {\n if (!config?.enabled) {\n return operation();\n }\n let recording: { span: Span; ctx: Context } | undefined;\n recordTelemetry(() => {\n recording = startSpan(operationName);\n commonAttributes(recording.span, endpoint);\n recording.span.setAttribute(\n operationName === \"create_agent\" ? GEN_AI_OPERATION_NAME : `${prefix}operation`,\n operationName.slice(operationName.lastIndexOf(\".\") + 1),\n );\n });\n if (!recording) return operation();\n const { span, ctx } = recording;\n try {\n const result = await runInSpanContext(ctx, operation);\n recordTelemetry(() => {\n if (resultAttributes) span.setAttributes(resultAttributes(result));\n });\n return result;\n } catch (error) {\n recordTelemetry(() => {\n if (!(error instanceof Error && error.name === \"AbortError\")) fail(span, error);\n else span.setAttribute(`${prefix}cancelled`, true);\n });\n throw error;\n } finally {\n recordTelemetry(() => span.end());\n }\n}\n\ninterface TrackedResponse {\n span: Span;\n started: number;\n firstAudioInSeconds?: number;\n audioBytes: number;\n model?: string;\n outputMessages: Map<string, MessageSummary>;\n outputParts: Map<string, { itemId: string; contentIndex: number; part: Record<string, unknown> }>;\n}\n\ninterface TrackedInputAudio {\n sequence: number;\n itemId?: string;\n pendingQueue?: PendingInputAudio;\n pendingSkipped?: boolean;\n pendingSend?: boolean;\n pendingTranscript?: string;\n}\n\ninterface PendingInputAudio {\n items: TrackedInputAudio[];\n skipped: number;\n}\n\ninterface ReservedInput {\n sequence: number;\n audio?: TrackedInputAudio;\n}\n\ninterface MessageSummary {\n role: \"system\" | \"user\" | \"assistant\" | \"tool\";\n parts: Record<string, unknown>[];\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction limitedContent(value: unknown): string | undefined {\n return typeof value === \"string\" ? value.slice(0, maxContentLength) : undefined;\n}\n\nfunction messagePart(\n value: unknown,\n contentRecording: boolean,\n): Record<string, unknown> | undefined {\n const part = asRecord(value);\n const type = part?.type;\n if (\n !part ||\n typeof type !== \"string\" ||\n ![\"input_text\", \"output_text\", \"text\", \"input_audio\", \"output_audio\", \"audio\"].includes(type)\n ) {\n return undefined;\n }\n const audio = type.includes(\"audio\");\n const summary: Record<string, unknown> = { type: audio ? \"audio\" : \"text\" };\n if (contentRecording) {\n const content = limitedContent(audio ? part.transcript : part.text);\n if (content !== undefined) summary.content = content;\n }\n return summary;\n}\n\nfunction messages(item: unknown, contentRecording: boolean): MessageSummary | undefined {\n const record = asRecord(item);\n if (!record) return undefined;\n if (\n record.type === \"function_call\" ||\n record.type === \"function_call_output\" ||\n record.type === \"mcp_call\"\n ) {\n const part: Record<string, unknown> = {\n type: record.type === \"function_call_output\" ? \"tool_call_response\" : \"tool_call\",\n };\n if (typeof record.call_id === \"string\") part.id = record.call_id;\n if (contentRecording) {\n if (typeof record.name === \"string\") part.name = limitedContent(record.name);\n if (typeof record.arguments === \"string\") part.arguments = limitedContent(record.arguments);\n if (typeof record.output === \"string\") part.result = limitedContent(record.output);\n }\n return { role: record.type === \"function_call_output\" ? \"tool\" : \"assistant\", parts: [part] };\n }\n if (record.type !== \"message\") return undefined;\n const parts: Record<string, unknown>[] = [];\n if (Array.isArray(record.content)) {\n for (const value of record.content.slice(0, maxParts)) {\n const summary = messagePart(value, contentRecording);\n if (summary) parts.push(summary);\n }\n }\n const role = record.role === \"system\" || record.role === \"user\" ? record.role : \"assistant\";\n return parts.length ? { role, parts } : undefined;\n}\n\n/** Tracks SDK-observed realtime work, independently of the user's event iterator. @internal */\nexport class VoiceAgentRealtimeTracing {\n private readonly responses = new Map<string, TrackedResponse>();\n private session?: { span: Span; ctx: Context };\n private connectSpan?: Span;\n private ended = false;\n private connected = false;\n private model?: string;\n private inputAudioBytes = 0;\n private inputSequence = 0;\n private nextInputSequence = 0;\n private inputAudioBuffer?: TrackedInputAudio;\n private readonly inputAudioItems = new Map<string, TrackedInputAudio>();\n private readonly pendingAudioCommits: PendingInputAudio = { items: [], skipped: 0 };\n private readonly pendingAudioMessages: PendingInputAudio = { items: [], skipped: 0 };\n private pendingAudioClears = 0;\n private untrackedInputItems = 0;\n private finishedResponses = 0;\n private untrackedResponses = 0;\n\n public constructor(\n private readonly endpoint: string,\n private readonly config: ResolvedTracingConfig,\n transport: VoiceAgentTransport = \"websocket\",\n ) {\n recordTelemetry(() => {\n this.session = startSpan(\"voice_agents.realtime.session\");\n commonAttributes(this.session.span, endpoint);\n this.session.span.setAttribute(`${prefix}connection.transport`, transport);\n this.connectSpan = startSpan(\"voice_agents.realtime.connect\", this.session.ctx).span;\n commonAttributes(this.connectSpan, endpoint);\n this.connectSpan.setAttribute(`${prefix}connection.transport`, transport);\n });\n }\n\n public opened(): void {\n recordTelemetry(() => {\n if (this.ended) return;\n this.connected = true;\n this.connectSpan?.end();\n this.connectSpan = undefined;\n });\n }\n\n public reserveSend(event: VoiceAgentClientEvent): ReservedInput | undefined {\n let reservation: ReservedInput | undefined;\n recordTelemetry(() => {\n if (this.ended || !this.session || event.type !== \"conversation.item.create\") return;\n const summary = messages(event.item, this.config.contentRecording);\n const item = asRecord(event.item);\n if (!summary) return;\n reservation = { sequence: ++this.nextInputSequence };\n if (\n summary.role !== \"user\" ||\n !summary.parts.some((part) => part.type === \"audio\") ||\n typeof item?.id === \"string\" ||\n this.pendingAudioMessages.items.length >= maxInputItems ||\n this.pendingAudioMessages.skipped > 0\n ) {\n return;\n }\n reservation.audio = { sequence: reservation.sequence, pendingSend: true };\n this.enqueueInputAudio(this.pendingAudioMessages, reservation.audio);\n });\n return reservation;\n }\n\n public sent(event: VoiceAgentClientEvent, reservation?: ReservedInput): void {\n recordTelemetry(() => {\n if (this.ended || !this.session) return;\n if (event.type === \"input_audio_buffer.append\") {\n // Count decoded bytes without retaining or decoding the media.\n this.inputAudioBytes += Math.max(\n 0,\n Math.floor((event.audio.length * 3) / 4) -\n (event.audio.endsWith(\"==\") ? 2 : event.audio.endsWith(\"=\") ? 1 : 0),\n );\n if (!this.inputAudioBuffer) {\n this.inputAudioBuffer = this.startInputAudio();\n } else if (this.inputAudioBuffer.sequence !== this.inputSequence) {\n this.inputSequence = ++this.nextInputSequence;\n this.inputAudioBuffer.sequence = this.inputSequence;\n this.setInputAudioSummary();\n }\n } else if (event.type === \"input_audio_buffer.commit\") {\n if (this.inputAudioBuffer) {\n this.enqueueInputAudio(this.pendingAudioCommits, this.inputAudioBuffer);\n this.inputAudioBuffer = undefined;\n }\n } else if (event.type === \"input_audio_buffer.clear\") {\n this.inputAudioBuffer = undefined;\n this.pendingAudioClears++;\n } else if (event.type === \"conversation.item.create\") {\n const summary = messages(event.item, this.config.contentRecording);\n const item = asRecord(event.item);\n if (summary) {\n const sequence = reservation?.sequence ?? ++this.nextInputSequence;\n if (summary.role === \"user\" && summary.parts.some((part) => part.type === \"audio\")) {\n const input = reservation?.audio ?? { sequence };\n input.pendingSend = undefined;\n if (!reservation?.audio) {\n if (typeof item?.id === \"string\") {\n this.rememberInputAudio(item.id, input);\n } else {\n this.enqueueInputAudio(this.pendingAudioMessages, input);\n }\n }\n }\n if (sequence >= this.inputSequence) {\n this.inputSequence = sequence;\n this.session.span.setAttribute(GEN_AI_INPUT_MESSAGES, JSON.stringify([summary]));\n if (reservation?.audio?.pendingTranscript !== undefined) {\n this.setInputAudioSummary(reservation.audio.pendingTranscript);\n }\n }\n }\n if (item?.type === \"function_call_output\" && typeof item.call_id === \"string\") {\n this.session.span.addEvent(\"voice_agents.tool.output_sent\", {\n [GEN_AI_TOOL_CALL_ID]: item.call_id,\n });\n }\n } else if (event.type === \"response.cancel\") {\n this.session.span.addEvent(\"voice_agents.response.cancel_requested\");\n }\n });\n }\n\n public sendFailed(error: unknown, reservation?: ReservedInput): void {\n recordTelemetry(() => {\n if (reservation?.audio) this.rollbackPendingAudioMessage(reservation.audio);\n if (!this.ended) {\n this.session?.span.addEvent(\"voice_agents.send.failed\", {\n [ERROR_TYPE]:\n error instanceof Error && safeErrorTypes.has(error.name) ? error.name : \"Error\",\n });\n }\n });\n }\n\n public received(event: VoiceAgentRealtimeEvent): void {\n recordTelemetry(() => {\n if (this.ended || !this.session || event.type === \"unknown\") return;\n switch (event.type) {\n case \"session.created\":\n case \"session.updated\":\n this.model = event.session.model;\n this.session.span.setAttribute(`${prefix}session.id`, event.session.id);\n if (event.type === \"session.created\" && event.conversation_id) {\n this.session.span.setAttribute(GEN_AI_CONVERSATION_ID, event.conversation_id);\n }\n if (this.model) this.session.span.setAttribute(GEN_AI_REQUEST_MODEL, this.model);\n break;\n case \"input_audio_buffer.speech_started\":\n if (!this.inputAudioItems.has(event.item_id)) {\n const buffer = this.inputAudioBuffer;\n const input = buffer && buffer.itemId === undefined ? buffer : this.startInputAudio();\n this.rememberInputAudio(event.item_id, input);\n this.inputAudioBuffer = input;\n }\n break;\n case \"input_audio_buffer.committed\": {\n const pending =\n this.pendingAudioCommits.items.length > 0 || this.pendingAudioCommits.skipped > 0;\n let input = this.matchInputAudio(this.pendingAudioCommits, event.item_id);\n if (!input) {\n if (pending) break;\n input = this.inputAudioBuffer ?? this.startInputAudio();\n this.rememberInputAudio(event.item_id, input);\n }\n if (this.inputAudioBuffer === input) this.inputAudioBuffer = undefined;\n break;\n }\n case \"input_audio_buffer.cleared\":\n if (this.pendingAudioClears > 0) this.pendingAudioClears--;\n else this.inputAudioBuffer = undefined;\n break;\n case \"conversation.item.added\":\n case \"conversation.item.created\": {\n const item = asRecord(event.item);\n const summary = messages(event.item, false);\n if (\n typeof item?.id === \"string\" &&\n summary?.role === \"user\" &&\n summary.parts.some((part) => part.type === \"audio\")\n ) {\n this.matchInputAudio(this.pendingAudioMessages, item.id);\n }\n break;\n }\n case \"response.created\":\n this.beginResponse(event.response);\n break;\n case \"response.output_audio.delta\": {\n const tracked = this.responses.get(event.response_id);\n if (tracked) {\n tracked.audioBytes += event.delta.byteLength;\n if (event.delta.byteLength > 0) {\n tracked.firstAudioInSeconds ??= (performance.now() - tracked.started) / 1000;\n }\n }\n break;\n }\n case \"response.done\":\n this.endResponse(event.response);\n break;\n case \"response.output_text.done\":\n case \"response.output_audio_transcript.done\": {\n const tracked = this.responses.get(event.response_id);\n if (tracked) {\n const part: Record<string, unknown> = {\n type: event.type === \"response.output_text.done\" ? \"text\" : \"audio\",\n };\n if (this.config.contentRecording) {\n part.content = limitedContent(\n event.type === \"response.output_text.done\" ? event.text : event.transcript,\n );\n }\n this.recordOutputPart(tracked, event.item_id, event.content_index, part);\n }\n break;\n }\n case \"response.output_audio.done\": {\n const tracked = this.responses.get(event.response_id);\n if (tracked) {\n this.recordOutputPart(tracked, event.item_id, event.content_index, { type: \"audio\" });\n }\n break;\n }\n case \"response.function_call_arguments.done\": {\n const span = this.responses.get(event.response_id)?.span ?? this.session.span;\n const attributes: Attributes = {\n [GEN_AI_TOOL_CALL_ID]: event.call_id,\n [`${prefix}tool.kind`]: \"function\",\n };\n if (this.config.contentRecording) {\n attributes[\"gen_ai.tool.name\"] = limitedContent(event.name);\n attributes[`${prefix}tool.arguments`] = limitedContent(event.arguments);\n }\n span.addEvent(\"voice_agents.tool.requested\", attributes);\n const tracked = this.responses.get(event.response_id);\n const summary = messages(\n {\n type: \"function_call\",\n call_id: event.call_id,\n name: event.name,\n arguments: event.arguments,\n },\n this.config.contentRecording,\n );\n if (tracked && summary && tracked.outputMessages.size < maxParts) {\n tracked.outputMessages.set(`tool:${event.call_id}`, summary);\n }\n break;\n }\n case \"response.mcp_call.completed\":\n case \"response.mcp_call.failed\":\n this.session.span.addEvent(event.type, { [`${prefix}item.id`]: event.item_id });\n break;\n case \"session.subagent.started\":\n case \"session.subagent.completed\":\n case \"session.subagent.aborted\": {\n const attributes: Attributes = {\n [`${prefix}subagent.consultation.id`]: event.consultation_id,\n };\n if (\n event.type === \"session.subagent.aborted\" &&\n [\n \"unknown_target\",\n \"timeout\",\n \"cancelled\",\n \"stopped_by_user\",\n \"superseded\",\n \"failed\",\n ].includes(event.reason)\n ) {\n attributes[`${prefix}subagent.abort_reason`] = event.reason;\n }\n this.session.span.addEvent(event.type, attributes);\n break;\n }\n case \"error\":\n this.session.span.addEvent(\n \"voice_agents.server_error\",\n serverErrorAttributes(event.error.type, event.error.code),\n );\n break;\n case \"warning\":\n this.session.span.addEvent(\"voice_agents.warning\");\n break;\n case \"rtc.call.error\":\n this.session.span.addEvent(\n \"rtc.call.error\",\n serverErrorAttributes(event.error.type, event.error.code),\n );\n break;\n case \"conversation.item.input_audio_transcription.completed\": {\n const input = this.inputAudioItems.get(event.item_id);\n if (input?.pendingSend) {\n input.pendingTranscript = event.transcript;\n } else if (input?.sequence === this.inputSequence) {\n this.setInputAudioSummary(event.transcript);\n }\n this.session.span.addEvent(\"voice_agents.transcription.completed\");\n break;\n }\n case \"conversation.item.input_audio_transcription.failed\": {\n const input = this.inputAudioItems.get(event.item_id);\n if (input?.sequence === this.inputSequence) {\n this.setInputAudioSummary();\n }\n this.session.span.addEvent(\"voice_agents.transcription.failed\");\n break;\n }\n }\n });\n }\n\n private startInputAudio(): TrackedInputAudio {\n const input = { sequence: ++this.nextInputSequence };\n this.inputSequence = input.sequence;\n this.setInputAudioSummary();\n return input;\n }\n\n private enqueueInputAudio(queue: PendingInputAudio, input: TrackedInputAudio): void {\n input.pendingQueue = queue;\n if (queue.items.length >= maxInputItems || queue.skipped > 0) {\n input.pendingSkipped = true;\n queue.skipped++;\n this.untrackedInputItems++;\n } else {\n queue.items.push(input);\n }\n }\n\n private rollbackPendingAudioMessage(input: TrackedInputAudio): void {\n if (input.pendingQueue) {\n const index = input.pendingQueue.items.indexOf(input);\n if (index !== -1) {\n input.pendingQueue.items.splice(index, 1);\n } else if (input.pendingSkipped && input.pendingQueue.skipped > 0) {\n input.pendingQueue.skipped--;\n this.untrackedInputItems--;\n }\n input.pendingQueue = undefined;\n input.pendingSkipped = undefined;\n }\n if (input.itemId && this.inputAudioItems.get(input.itemId) === input) {\n this.inputAudioItems.delete(input.itemId);\n }\n input.pendingSend = undefined;\n input.pendingTranscript = undefined;\n }\n\n private matchInputAudio(queue: PendingInputAudio, itemId: string): TrackedInputAudio | undefined {\n const known = this.inputAudioItems.get(itemId);\n if (known) {\n if (known.pendingQueue === queue) {\n const index = queue.items.indexOf(known);\n if (index !== -1) queue.items.splice(index, 1);\n else if (known.pendingSkipped && queue.skipped > 0) queue.skipped--;\n known.pendingQueue = undefined;\n known.pendingSkipped = undefined;\n }\n return known;\n }\n // Match ordered commit/create acknowledgements, never asynchronous ASR completion order.\n const input = queue.items.shift();\n if (input) {\n input.pendingQueue = undefined;\n this.rememberInputAudio(itemId, input);\n return input;\n }\n if (queue.skipped > 0) queue.skipped--;\n return undefined;\n }\n\n private rememberInputAudio(itemId: string, input: TrackedInputAudio): void {\n input.itemId = itemId;\n this.inputAudioItems.set(itemId, input);\n if (this.inputAudioItems.size > maxInputItems) {\n for (const [id, tracked] of this.inputAudioItems) {\n if (tracked.sequence !== this.inputSequence || id !== tracked.itemId) {\n this.inputAudioItems.delete(id);\n break;\n }\n }\n }\n }\n\n private setInputAudioSummary(transcript?: string): void {\n const parts: Record<string, unknown>[] = [{ type: \"audio\" }];\n if (this.config.contentRecording && transcript !== undefined) {\n parts[0].content = limitedContent(transcript);\n }\n this.session?.span.setAttribute(\n GEN_AI_INPUT_MESSAGES,\n JSON.stringify([{ role: \"user\", parts }]),\n );\n }\n\n private recordOutputPart(\n tracked: TrackedResponse,\n itemId: string,\n contentIndex: number,\n part: Record<string, unknown>,\n ): void {\n const key = `${itemId}:${contentIndex}:${part.type}`;\n const existing = tracked.outputParts.get(key);\n if (existing) {\n if (part.content !== undefined) existing.part.content = part.content;\n } else if (tracked.outputParts.size < maxParts) {\n tracked.outputParts.set(key, { itemId, contentIndex, part });\n }\n }\n\n private beginResponse(response: VoiceAgentRealtimeResponse): void {\n const id = response.id;\n if (!id || !this.session || this.responses.has(id)) return;\n if (this.responses.size >= maxResponses) {\n this.untrackedResponses++;\n return;\n }\n const { span } = startSpan(\"invoke_agent\", this.session.ctx);\n commonAttributes(span, this.endpoint);\n span.setAttribute(GEN_AI_OPERATION_NAME, \"invoke_agent\");\n span.setAttribute(GEN_AI_RESPONSE_ID, id);\n if (this.model) span.setAttribute(GEN_AI_REQUEST_MODEL, this.model);\n if (response.conversation_id) {\n span.setAttribute(GEN_AI_CONVERSATION_ID, response.conversation_id);\n }\n this.responses.set(id, {\n span,\n started: performance.now(),\n audioBytes: 0,\n model: this.model,\n outputMessages: new Map(),\n outputParts: new Map(),\n });\n }\n\n private endResponse(response: VoiceAgentRealtimeResponse): void {\n const id = response.id;\n const tracked = id ? this.responses.get(id) : undefined;\n if (!tracked || !id) return;\n this.responses.delete(id);\n const durationInSeconds = (performance.now() - tracked.started) / 1000;\n const { span } = tracked;\n if (response.status) span.setAttribute(`${prefix}response.status`, response.status);\n if (response.output_modalities) {\n span.setAttribute(`${prefix}response.output_modalities`, response.output_modalities);\n }\n if (response.usage?.input_tokens !== undefined) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, response.usage.input_tokens);\n }\n if (response.usage?.output_tokens !== undefined) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, response.usage.output_tokens);\n }\n this.flushObservedResponse(tracked, response);\n if (response.status === \"failed\") {\n span.setAttribute(ERROR_TYPE, \"response_failed\");\n span.setStatus({ code: SpanStatusCode.ERROR });\n } else if (response.status === \"completed\") {\n span.setStatus({ code: SpanStatusCode.OK });\n }\n const dimensions = {\n operationName: \"invoke_agent\",\n ...parseEndpoint(this.endpoint),\n responseModel: tracked.model,\n ...(response.status === \"failed\" ? { errorType: \"response_failed\" } : {}),\n };\n span.end();\n this.finishedResponses++;\n recordOperationDuration(durationInSeconds, dimensions);\n recordTokenUsage(response.usage?.input_tokens, response.usage?.output_tokens, dimensions);\n }\n\n private flushObservedResponse(\n tracked: TrackedResponse,\n response?: VoiceAgentRealtimeResponse,\n ): void {\n const { span } = tracked;\n span.setAttribute(`${prefix}output.audio.bytes`, tracked.audioBytes);\n if (tracked.firstAudioInSeconds !== undefined) {\n span.setAttribute(\n `${prefix}response.time_to_first_audio_seconds`,\n tracked.firstAudioInSeconds,\n );\n }\n const fallback = new Map(tracked.outputMessages);\n for (const observed of [...tracked.outputParts.values()].sort(\n (a, b) => a.contentIndex - b.contentIndex,\n )) {\n const message: MessageSummary = fallback.get(observed.itemId) ?? {\n role: \"assistant\",\n parts: [],\n };\n message.parts.push(observed.part);\n fallback.set(observed.itemId, message);\n }\n const output: MessageSummary[] = [];\n let unkeyedFinalItem = false;\n for (const item of response?.output?.slice(0, maxParts) ?? []) {\n const summary = messages(item, this.config.contentRecording);\n if (!summary) continue;\n const record = asRecord(item);\n const itemId =\n record?.type === \"function_call\" && typeof record.call_id === \"string\"\n ? `tool:${record.call_id}`\n : typeof record?.id === \"string\"\n ? record.id\n : typeof record?.call_id === \"string\"\n ? record.call_id\n : undefined;\n if (itemId) {\n fallback.delete(itemId);\n if (record?.type === \"message\" && Array.isArray(record.content)) {\n summary.parts = record.content.slice(0, maxParts).flatMap((value, index) => {\n const part = messagePart(value, this.config.contentRecording);\n if (!part) return [];\n const observed = tracked.outputParts.get(`${itemId}:${index}:${part.type}`);\n if (part.content === undefined && observed?.part.content !== undefined) {\n part.content = observed.part.content;\n }\n return [part];\n });\n }\n } else {\n // Final output is authoritative; don't guess identities for items without an ID.\n unkeyedFinalItem = true;\n }\n output.push(summary);\n }\n if (!unkeyedFinalItem) output.push(...fallback.values());\n if (output.length) {\n span.setAttribute(GEN_AI_OUTPUT_MESSAGES, JSON.stringify(output.slice(0, maxParts)));\n }\n }\n\n public close(code: number | undefined, wasClean: boolean, error?: unknown): void {\n if (this.ended) return;\n this.ended = true;\n recordTelemetry(() => {\n const cancelled = asRecord(error)?.code === \"operationCancelled\";\n if (this.connectSpan) {\n if (error && !cancelled) fail(this.connectSpan, error);\n this.connectSpan.end();\n this.connectSpan = undefined;\n }\n for (const tracked of this.responses.values()) {\n this.flushObservedResponse(tracked);\n tracked.span.setAttribute(`${prefix}response.status`, \"interrupted\");\n if (error && !cancelled) fail(tracked.span, error);\n tracked.span.end();\n recordOperationDuration((performance.now() - tracked.started) / 1000, {\n operationName: \"invoke_agent\",\n ...parseEndpoint(this.endpoint),\n responseModel: tracked.model,\n ...(error && !cancelled ? { errorType: \"response_interrupted\" } : {}),\n });\n }\n this.responses.clear();\n this.inputAudioItems.clear();\n this.pendingAudioCommits.items.length = 0;\n this.pendingAudioMessages.items.length = 0;\n this.inputAudioBuffer = undefined;\n if (!this.session) return;\n if (error && !cancelled) fail(this.session.span, error);\n if (cancelled) this.session.span.setAttribute(`${prefix}cancelled`, true);\n if (code !== undefined) this.session.span.setAttribute(`${prefix}close.code`, code);\n this.session.span.setAttribute(`${prefix}close.was_clean`, wasClean);\n this.session.span.setAttribute(`${prefix}input.audio.bytes`, this.inputAudioBytes);\n if (this.untrackedInputItems) {\n this.session.span.setAttribute(`${prefix}input.items.untracked`, this.untrackedInputItems);\n }\n this.session.span.setAttribute(`${prefix}responses.finished`, this.finishedResponses);\n if (this.untrackedResponses) {\n this.session.span.setAttribute(`${prefix}responses.untracked`, this.untrackedResponses);\n }\n this.session.span.setAttribute(`${prefix}connected`, this.connected);\n this.session.span.end();\n });\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure/ai-projects",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "Azure AI Projects client library.",
5
5
  "engines": {
6
6
  "node": ">=22.0.0"
@@ -54,10 +54,10 @@
54
54
  "@azure/logger": "^1.1.4",
55
55
  "@azure/storage-blob": "^12.26.0",
56
56
  "@opentelemetry/api": "^1.9.1",
57
- "https-proxy-agent": "^7.0.1",
58
- "openai": "^6.16.0",
57
+ "https-proxy-agent": "^9.1.0",
58
+ "openai": "^7.28.0",
59
59
  "tslib": "^2.6.2",
60
- "ws": "^8.18.3"
60
+ "ws": "^8.21.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@azure-rest/ai-inference": "^1.0.0-beta.6",
@@ -78,12 +78,12 @@
78
78
  "@vitest/browser-playwright": "^5.0.0",
79
79
  "@vitest/coverage-istanbul": "^5.0.0",
80
80
  "cross-env": "^10.1.0",
81
- "dotenv": "^16.6.1",
81
+ "dotenv": "^18.0.5",
82
82
  "eslint": "^10.8.0",
83
83
  "mkdirp": "^3.0.1",
84
84
  "playwright": "^1.60.0",
85
85
  "prettier": "^3.9.1",
86
- "react-native": "^0.84.1",
86
+ "react-native": "^0.87.1",
87
87
  "rimraf": "^6.1.0",
88
88
  "typescript": "~6.0.2",
89
89
  "vite": "^8.0.0",