@n8n/instance-ai 1.7.2 → 1.8.1

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 (363) hide show
  1. package/dist/agent/instance-agent.d.ts +1 -1
  2. package/dist/agent/instance-agent.js +88 -75
  3. package/dist/agent/instance-agent.js.map +1 -1
  4. package/dist/agent/mcp-tool-name-validation.d.ts +4 -2
  5. package/dist/agent/mcp-tool-name-validation.js +2 -2
  6. package/dist/agent/mcp-tool-name-validation.js.map +1 -1
  7. package/dist/agent/runtime-workspace.d.ts +6 -0
  8. package/dist/agent/runtime-workspace.js +14 -0
  9. package/dist/agent/runtime-workspace.js.map +1 -0
  10. package/dist/agent/sanitize-mcp-schemas.d.ts +4 -3
  11. package/dist/agent/sanitize-mcp-schemas.js +53 -24
  12. package/dist/agent/sanitize-mcp-schemas.js.map +1 -1
  13. package/dist/agent/sub-agent-debriefing.d.ts +2 -2
  14. package/dist/agent/sub-agent-factory.d.ts +7 -4
  15. package/dist/agent/sub-agent-factory.js +24 -13
  16. package/dist/agent/sub-agent-factory.js.map +1 -1
  17. package/dist/agent/system-prompt.js +18 -15
  18. package/dist/agent/system-prompt.js.map +1 -1
  19. package/dist/build.tsbuildinfo +1 -1
  20. package/dist/constants/max-steps.d.ts +1 -1
  21. package/dist/constants/max-steps.js +1 -1
  22. package/dist/constants/max-steps.js.map +1 -1
  23. package/dist/domain-access/domain-gating.d.ts +2 -2
  24. package/dist/error-formatting.d.ts +1 -0
  25. package/dist/error-formatting.js +159 -0
  26. package/dist/error-formatting.js.map +1 -0
  27. package/dist/index.d.ts +65 -24
  28. package/dist/index.js +96 -52
  29. package/dist/index.js.map +1 -1
  30. package/dist/mcp/mcp-client-manager.d.ts +5 -4
  31. package/dist/mcp/mcp-client-manager.js +42 -17
  32. package/dist/mcp/mcp-client-manager.js.map +1 -1
  33. package/dist/memory/title-utils.d.ts +4 -1
  34. package/dist/memory/title-utils.js +10 -2
  35. package/dist/memory/title-utils.js.map +1 -1
  36. package/dist/parsers/structured-file-parser.d.ts +5 -2
  37. package/dist/parsers/structured-file-parser.js +9 -2
  38. package/dist/parsers/structured-file-parser.js.map +1 -1
  39. package/dist/planned-tasks/planned-task-permissions.js +3 -5
  40. package/dist/planned-tasks/planned-task-permissions.js.map +1 -1
  41. package/dist/planned-tasks/planned-task-service.d.ts +1 -0
  42. package/dist/planned-tasks/planned-task-service.js +8 -0
  43. package/dist/planned-tasks/planned-task-service.js.map +1 -1
  44. package/dist/runtime/background-task-manager.d.ts +9 -2
  45. package/dist/runtime/background-task-manager.js +7 -2
  46. package/dist/runtime/background-task-manager.js.map +1 -1
  47. package/dist/runtime/liveness-policy.js +4 -3
  48. package/dist/runtime/liveness-policy.js.map +1 -1
  49. package/dist/runtime/resumable-stream-executor.d.ts +4 -24
  50. package/dist/runtime/resumable-stream-executor.js +103 -1318
  51. package/dist/runtime/resumable-stream-executor.js.map +1 -1
  52. package/dist/runtime/run-state-registry.d.ts +8 -2
  53. package/dist/runtime/run-state-registry.js +19 -1
  54. package/dist/runtime/run-state-registry.js.map +1 -1
  55. package/dist/runtime/stream-runner.d.ts +4 -4
  56. package/dist/runtime/stream-runner.js +11 -25
  57. package/dist/runtime/stream-runner.js.map +1 -1
  58. package/dist/skills/materialize-runtime-skills.d.ts +62 -0
  59. package/dist/skills/materialize-runtime-skills.js +467 -0
  60. package/dist/skills/materialize-runtime-skills.js.map +1 -0
  61. package/dist/skills/runtime-skills.d.ts +4 -0
  62. package/dist/skills/runtime-skills.js +17 -0
  63. package/dist/skills/runtime-skills.js.map +1 -0
  64. package/dist/source-map-filter.d.ts +17 -0
  65. package/dist/source-map-filter.js +39 -0
  66. package/dist/source-map-filter.js.map +1 -0
  67. package/dist/storage/agent-tree-snapshot.d.ts +2 -0
  68. package/dist/storage/index.d.ts +3 -3
  69. package/dist/storage/index.js +8 -7
  70. package/dist/storage/index.js.map +1 -1
  71. package/dist/storage/planned-task-storage.d.ts +3 -3
  72. package/dist/storage/planned-task-storage.js +3 -8
  73. package/dist/storage/planned-task-storage.js.map +1 -1
  74. package/dist/storage/terminal-outcome-storage.d.ts +4 -4
  75. package/dist/storage/terminal-outcome-storage.js +1 -1
  76. package/dist/storage/terminal-outcome-storage.js.map +1 -1
  77. package/dist/storage/{mastra-iteration-log-storage.d.ts → thread-iteration-log-storage.d.ts} +3 -3
  78. package/dist/storage/{mastra-iteration-log-storage.js → thread-iteration-log-storage.js} +5 -5
  79. package/dist/storage/thread-iteration-log-storage.js.map +1 -0
  80. package/dist/storage/thread-patch.d.ts +16 -10
  81. package/dist/storage/thread-patch.js +37 -36
  82. package/dist/storage/thread-patch.js.map +1 -1
  83. package/dist/storage/{mastra-task-storage.d.ts → thread-task-storage.d.ts} +3 -3
  84. package/dist/storage/{mastra-task-storage.js → thread-task-storage.js} +5 -5
  85. package/dist/storage/thread-task-storage.js.map +1 -0
  86. package/dist/storage/workflow-loop-storage.d.ts +28 -28
  87. package/dist/storage/workflow-loop-storage.js +1 -1
  88. package/dist/storage/workflow-loop-storage.js.map +1 -1
  89. package/dist/stream/consume-with-hitl.d.ts +11 -11
  90. package/dist/stream/consume-with-hitl.js +27 -15
  91. package/dist/stream/consume-with-hitl.js.map +1 -1
  92. package/dist/stream/map-chunk.d.ts +1 -1
  93. package/dist/stream/map-chunk.js +153 -36
  94. package/dist/stream/map-chunk.js.map +1 -1
  95. package/dist/tool-registry.d.ts +8 -0
  96. package/dist/tool-registry.js +45 -0
  97. package/dist/tool-registry.js.map +1 -0
  98. package/dist/tools/attachments/parse-file.tool.d.ts +42 -45
  99. package/dist/tools/attachments/parse-file.tool.js +140 -97
  100. package/dist/tools/attachments/parse-file.tool.js.map +1 -1
  101. package/dist/tools/credentials.tool.d.ts +5 -5
  102. package/dist/tools/credentials.tool.js +31 -34
  103. package/dist/tools/credentials.tool.js.map +1 -1
  104. package/dist/tools/data-tables.tool.d.ts +3 -2
  105. package/dist/tools/data-tables.tool.js +99 -100
  106. package/dist/tools/data-tables.tool.js.map +1 -1
  107. package/dist/tools/evals/apply-pin-data.service.d.ts +3 -0
  108. package/dist/tools/evals/apply-pin-data.service.js +19 -0
  109. package/dist/tools/evals/apply-pin-data.service.js.map +1 -0
  110. package/dist/tools/evals/column-ref-utils.d.ts +3 -0
  111. package/dist/tools/evals/column-ref-utils.js +205 -48
  112. package/dist/tools/evals/column-ref-utils.js.map +1 -1
  113. package/dist/tools/evals/detect-agent-named-refs.service.js +20 -4
  114. package/dist/tools/evals/detect-agent-named-refs.service.js.map +1 -1
  115. package/dist/tools/evals/ensure-eval-data-table.service.d.ts +15 -0
  116. package/dist/tools/evals/ensure-eval-data-table.service.js +83 -0
  117. package/dist/tools/evals/ensure-eval-data-table.service.js.map +1 -0
  118. package/dist/tools/evals/eval-data-requirements.service.d.ts +1 -0
  119. package/dist/tools/evals/eval-data-requirements.service.js +23 -4
  120. package/dist/tools/evals/eval-data-requirements.service.js.map +1 -1
  121. package/dist/tools/evals/evals.tool.d.ts +2 -0
  122. package/dist/tools/evals/evals.tool.js +452 -0
  123. package/dist/tools/evals/evals.tool.js.map +1 -0
  124. package/dist/tools/evals/extract-rows-from-history.service.d.ts +17 -0
  125. package/dist/tools/evals/extract-rows-from-history.service.js +103 -0
  126. package/dist/tools/evals/extract-rows-from-history.service.js.map +1 -0
  127. package/dist/tools/evals/format-eval-setup-task.d.ts +16 -0
  128. package/dist/tools/evals/format-eval-setup-task.js +167 -0
  129. package/dist/tools/evals/format-eval-setup-task.js.map +1 -0
  130. package/dist/tools/evals/generate-sample-rows.service.d.ts +35 -0
  131. package/dist/tools/evals/generate-sample-rows.service.js +278 -0
  132. package/dist/tools/evals/generate-sample-rows.service.js.map +1 -0
  133. package/dist/tools/evals/generate-tool-ref-pin-data.service.d.ts +11 -0
  134. package/dist/tools/evals/generate-tool-ref-pin-data.service.js +125 -0
  135. package/dist/tools/evals/generate-tool-ref-pin-data.service.js.map +1 -0
  136. package/dist/tools/evals/metric-catalog.d.ts +10 -4
  137. package/dist/tools/evals/metric-catalog.js.map +1 -1
  138. package/dist/tools/executions.tool.d.ts +1 -1
  139. package/dist/tools/executions.tool.js +25 -34
  140. package/dist/tools/executions.tool.js.map +1 -1
  141. package/dist/tools/filesystem/create-tools-from-mcp-server.d.ts +2 -3
  142. package/dist/tools/filesystem/create-tools-from-mcp-server.js +129 -67
  143. package/dist/tools/filesystem/create-tools-from-mcp-server.js.map +1 -1
  144. package/dist/tools/index.d.ts +4 -16
  145. package/dist/tools/index.js +102 -92
  146. package/dist/tools/index.js.map +1 -1
  147. package/dist/tools/nodes.tool.d.ts +1 -1
  148. package/dist/tools/nodes.tool.js +31 -33
  149. package/dist/tools/nodes.tool.js.map +1 -1
  150. package/dist/tools/orchestration/add-plan-item.tool.d.ts +2 -2
  151. package/dist/tools/orchestration/add-plan-item.tool.js +45 -49
  152. package/dist/tools/orchestration/add-plan-item.tool.js.map +1 -1
  153. package/dist/tools/orchestration/agent-persistence.d.ts +14 -0
  154. package/dist/tools/orchestration/agent-persistence.js +43 -0
  155. package/dist/tools/orchestration/agent-persistence.js.map +1 -0
  156. package/dist/tools/orchestration/blueprint-accumulator.d.ts +4 -8
  157. package/dist/tools/orchestration/blueprint-accumulator.js +11 -78
  158. package/dist/tools/orchestration/blueprint-accumulator.js.map +1 -1
  159. package/dist/tools/orchestration/blueprint.schema.d.ts +13 -147
  160. package/dist/tools/orchestration/blueprint.schema.js +4 -23
  161. package/dist/tools/orchestration/blueprint.schema.js.map +1 -1
  162. package/dist/tools/orchestration/browser-credential-setup.nudge.d.ts +2 -4
  163. package/dist/tools/orchestration/browser-credential-setup.nudge.js +1 -1
  164. package/dist/tools/orchestration/browser-credential-setup.nudge.js.map +1 -1
  165. package/dist/tools/orchestration/browser-credential-setup.tool.d.ts +10 -2
  166. package/dist/tools/orchestration/browser-credential-setup.tool.js +299 -270
  167. package/dist/tools/orchestration/browser-credential-setup.tool.js.map +1 -1
  168. package/dist/tools/orchestration/build-workflow-agent.prompt.d.ts +7 -1
  169. package/dist/tools/orchestration/build-workflow-agent.prompt.js +46 -20
  170. package/dist/tools/orchestration/build-workflow-agent.prompt.js.map +1 -1
  171. package/dist/tools/orchestration/build-workflow-agent.tool.d.ts +50 -5
  172. package/dist/tools/orchestration/build-workflow-agent.tool.js +748 -605
  173. package/dist/tools/orchestration/build-workflow-agent.tool.js.map +1 -1
  174. package/dist/tools/orchestration/builder-memory-compaction.d.ts +6 -2
  175. package/dist/tools/orchestration/builder-memory-compaction.js +32 -46
  176. package/dist/tools/orchestration/builder-memory-compaction.js.map +1 -1
  177. package/dist/tools/orchestration/complete-checkpoint.tool.d.ts +1 -1
  178. package/dist/tools/orchestration/complete-checkpoint.tool.js +46 -47
  179. package/dist/tools/orchestration/complete-checkpoint.tool.js.map +1 -1
  180. package/dist/tools/orchestration/delegate.tool.d.ts +1 -1
  181. package/dist/tools/orchestration/delegate.tool.js +170 -166
  182. package/dist/tools/orchestration/delegate.tool.js.map +1 -1
  183. package/dist/tools/orchestration/eval-data-agent.tool.d.ts +2 -0
  184. package/dist/tools/orchestration/eval-data-agent.tool.js +183 -0
  185. package/dist/tools/orchestration/eval-data-agent.tool.js.map +1 -0
  186. package/dist/tools/orchestration/eval-setup-agent.prompt.d.ts +1 -0
  187. package/dist/tools/orchestration/eval-setup-agent.prompt.js +238 -0
  188. package/dist/tools/orchestration/eval-setup-agent.prompt.js.map +1 -0
  189. package/dist/tools/orchestration/eval-setup-agent.tool.d.ts +31 -0
  190. package/dist/tools/orchestration/eval-setup-agent.tool.js +204 -0
  191. package/dist/tools/orchestration/eval-setup-agent.tool.js.map +1 -0
  192. package/dist/tools/orchestration/plan-agent-prompt.d.ts +1 -1
  193. package/dist/tools/orchestration/plan-agent-prompt.js +9 -9
  194. package/dist/tools/orchestration/plan-with-agent.tool.d.ts +1 -1
  195. package/dist/tools/orchestration/plan-with-agent.tool.js +210 -179
  196. package/dist/tools/orchestration/plan-with-agent.tool.js.map +1 -1
  197. package/dist/tools/orchestration/plan.tool.d.ts +5 -2
  198. package/dist/tools/orchestration/plan.tool.js +125 -105
  199. package/dist/tools/orchestration/plan.tool.js.map +1 -1
  200. package/dist/tools/orchestration/report-verification-verdict.tool.d.ts +3 -3
  201. package/dist/tools/orchestration/report-verification-verdict.tool.js +65 -66
  202. package/dist/tools/orchestration/report-verification-verdict.tool.js.map +1 -1
  203. package/dist/tools/orchestration/submit-plan.tool.d.ts +1 -1
  204. package/dist/tools/orchestration/submit-plan.tool.js +83 -66
  205. package/dist/tools/orchestration/submit-plan.tool.js.map +1 -1
  206. package/dist/tools/orchestration/tracing-utils.d.ts +3 -2
  207. package/dist/tools/orchestration/tracing-utils.js +58 -39
  208. package/dist/tools/orchestration/tracing-utils.js.map +1 -1
  209. package/dist/tools/orchestration/verify-built-workflow.tool.d.ts +5 -5
  210. package/dist/tools/orchestration/verify-built-workflow.tool.js +166 -166
  211. package/dist/tools/orchestration/verify-built-workflow.tool.js.map +1 -1
  212. package/dist/tools/research.tool.d.ts +1 -1
  213. package/dist/tools/research.tool.js +59 -27
  214. package/dist/tools/research.tool.js.map +1 -1
  215. package/dist/tools/shared/ask-user.tool.d.ts +3 -2
  216. package/dist/tools/shared/ask-user.tool.js +61 -63
  217. package/dist/tools/shared/ask-user.tool.js.map +1 -1
  218. package/dist/tools/task-control.tool.d.ts +1 -1
  219. package/dist/tools/task-control.tool.js +15 -16
  220. package/dist/tools/task-control.tool.js.map +1 -1
  221. package/dist/tools/templates.tool.d.ts +1 -1
  222. package/dist/tools/templates.tool.js +6 -7
  223. package/dist/tools/templates.tool.js.map +1 -1
  224. package/dist/tools/tool-ids.d.ts +40 -0
  225. package/dist/tools/tool-ids.js +62 -0
  226. package/dist/tools/tool-ids.js.map +1 -0
  227. package/dist/tools/workflows/apply-workflow-credentials.tool.d.ts +3 -3
  228. package/dist/tools/workflows/apply-workflow-credentials.tool.js +72 -73
  229. package/dist/tools/workflows/apply-workflow-credentials.tool.js.map +1 -1
  230. package/dist/tools/workflows/build-workflow.tool.d.ts +3 -3
  231. package/dist/tools/workflows/build-workflow.tool.js +113 -114
  232. package/dist/tools/workflows/build-workflow.tool.js.map +1 -1
  233. package/dist/tools/workflows/materialize-node-type.tool.d.ts +6 -6
  234. package/dist/tools/workflows/materialize-node-type.tool.js +64 -65
  235. package/dist/tools/workflows/materialize-node-type.tool.js.map +1 -1
  236. package/dist/tools/workflows/resolve-credentials.d.ts +3 -5
  237. package/dist/tools/workflows/resolve-credentials.js +15 -6
  238. package/dist/tools/workflows/resolve-credentials.js.map +1 -1
  239. package/dist/tools/workflows/setup-workflow.schema.d.ts +2 -2
  240. package/dist/tools/workflows/submit-workflow-identity.d.ts +8 -9
  241. package/dist/tools/workflows/submit-workflow-identity.js +41 -27
  242. package/dist/tools/workflows/submit-workflow-identity.js.map +1 -1
  243. package/dist/tools/workflows/submit-workflow.tool.d.ts +10 -7
  244. package/dist/tools/workflows/submit-workflow.tool.js +224 -191
  245. package/dist/tools/workflows/submit-workflow.tool.js.map +1 -1
  246. package/dist/tools/workflows/validate-workflow.service.d.ts +15 -0
  247. package/dist/tools/workflows/validate-workflow.service.js +289 -0
  248. package/dist/tools/workflows/validate-workflow.service.js.map +1 -0
  249. package/dist/tools/workflows/write-sandbox-file.tool.d.ts +2 -2
  250. package/dist/tools/workflows/write-sandbox-file.tool.js +29 -30
  251. package/dist/tools/workflows/write-sandbox-file.tool.js.map +1 -1
  252. package/dist/tools/workflows.tool.d.ts +5 -2
  253. package/dist/tools/workflows.tool.js +184 -85
  254. package/dist/tools/workflows.tool.js.map +1 -1
  255. package/dist/tools/workspace.tool.d.ts +1 -1
  256. package/dist/tools/workspace.tool.js +49 -65
  257. package/dist/tools/workspace.tool.js.map +1 -1
  258. package/dist/tracing/langsmith-tracing.d.ts +17 -18
  259. package/dist/tracing/langsmith-tracing.js +941 -677
  260. package/dist/tracing/langsmith-tracing.js.map +1 -1
  261. package/dist/tracing/trace-labels.d.ts +5 -0
  262. package/dist/tracing/trace-labels.js +36 -0
  263. package/dist/tracing/trace-labels.js.map +1 -0
  264. package/dist/tracing/trace-payloads.d.ts +23 -0
  265. package/dist/tracing/trace-payloads.js +1008 -0
  266. package/dist/tracing/trace-payloads.js.map +1 -0
  267. package/dist/types.d.ts +57 -25
  268. package/dist/types.js +3 -0
  269. package/dist/types.js.map +1 -1
  270. package/dist/utils/eval-agents.js +1 -1
  271. package/dist/utils/eval-agents.js.map +1 -1
  272. package/dist/utils/scrub-secrets.js +1 -1
  273. package/dist/utils/scrub-secrets.js.map +1 -1
  274. package/dist/utils/stream-helpers.d.ts +2 -5
  275. package/dist/utils/stream-helpers.js +12 -1
  276. package/dist/utils/stream-helpers.js.map +1 -1
  277. package/dist/workflow-loop/workflow-loop-state.d.ts +18 -18
  278. package/dist/workspace/builder-templates-service.d.ts +54 -0
  279. package/dist/workspace/builder-templates-service.js +442 -0
  280. package/dist/workspace/builder-templates-service.js.map +1 -0
  281. package/dist/workspace/create-workspace.d.ts +16 -3
  282. package/dist/workspace/create-workspace.js +45 -21
  283. package/dist/workspace/create-workspace.js.map +1 -1
  284. package/dist/workspace/daytona-auth-manager.d.ts +26 -0
  285. package/dist/workspace/daytona-auth-manager.js +90 -0
  286. package/dist/workspace/daytona-auth-manager.js.map +1 -0
  287. package/dist/workspace/daytona-filesystem.d.ts +5 -4
  288. package/dist/workspace/daytona-filesystem.js +25 -15
  289. package/dist/workspace/daytona-filesystem.js.map +1 -1
  290. package/dist/workspace/daytona-sandbox.d.ts +65 -0
  291. package/dist/workspace/daytona-sandbox.js +314 -0
  292. package/dist/workspace/daytona-sandbox.js.map +1 -0
  293. package/dist/workspace/lazy-daytona.d.ts +2 -0
  294. package/dist/workspace/lazy-daytona.js +12 -0
  295. package/dist/workspace/lazy-daytona.js.map +1 -0
  296. package/dist/workspace/lazy-runtime-workspace.d.ts +8 -0
  297. package/dist/workspace/lazy-runtime-workspace.js +246 -0
  298. package/dist/workspace/lazy-runtime-workspace.js.map +1 -0
  299. package/dist/workspace/local-filesystem.d.ts +48 -0
  300. package/dist/workspace/local-filesystem.js +250 -0
  301. package/dist/workspace/local-filesystem.js.map +1 -0
  302. package/dist/workspace/local-sandbox.d.ts +28 -0
  303. package/dist/workspace/local-sandbox.js +121 -0
  304. package/dist/workspace/local-sandbox.js.map +1 -0
  305. package/dist/workspace/n8n-sandbox-filesystem.d.ts +3 -3
  306. package/dist/workspace/n8n-sandbox-filesystem.js +3 -3
  307. package/dist/workspace/n8n-sandbox-filesystem.js.map +1 -1
  308. package/dist/workspace/n8n-sandbox-sandbox.d.ts +12 -3
  309. package/dist/workspace/n8n-sandbox-sandbox.js +54 -10
  310. package/dist/workspace/n8n-sandbox-sandbox.js.map +1 -1
  311. package/dist/workspace/sandbox-fs.d.ts +35 -4
  312. package/dist/workspace/sandbox-fs.js +1 -1
  313. package/dist/workspace/sandbox-fs.js.map +1 -1
  314. package/dist/workspace/sandbox-setup.d.ts +13 -4
  315. package/dist/workspace/sandbox-setup.js +250 -36
  316. package/dist/workspace/sandbox-setup.js.map +1 -1
  317. package/dist/workspace/scoped-workspace.d.ts +2 -0
  318. package/dist/workspace/scoped-workspace.js +141 -0
  319. package/dist/workspace/scoped-workspace.js.map +1 -0
  320. package/dist/workspace/snapshot-manager.d.ts +11 -5
  321. package/dist/workspace/snapshot-manager.js +64 -17
  322. package/dist/workspace/snapshot-manager.js.map +1 -1
  323. package/dist/workspace/template-telemetry.d.ts +4 -4
  324. package/dist/workspace/template-telemetry.js +18 -6
  325. package/dist/workspace/template-telemetry.js.map +1 -1
  326. package/package.json +12 -15
  327. package/skills/data-table-manager/SKILL.md +119 -0
  328. package/skills/data-table-manager/references/data-table-playbook.md +212 -0
  329. package/dist/agent/register-with-mastra.d.ts +0 -3
  330. package/dist/agent/register-with-mastra.js +0 -15
  331. package/dist/agent/register-with-mastra.js.map +0 -1
  332. package/dist/compaction/compaction-helper.d.ts +0 -9
  333. package/dist/compaction/compaction-helper.js +0 -58
  334. package/dist/compaction/compaction-helper.js.map +0 -1
  335. package/dist/compaction/index.d.ts +0 -2
  336. package/dist/compaction/index.js +0 -6
  337. package/dist/compaction/index.js.map +0 -1
  338. package/dist/memory/memory-config.d.ts +0 -3
  339. package/dist/memory/memory-config.js +0 -27
  340. package/dist/memory/memory-config.js.map +0 -1
  341. package/dist/runtime/builder-sandbox-session-registry.d.ts +0 -47
  342. package/dist/runtime/builder-sandbox-session-registry.js +0 -166
  343. package/dist/runtime/builder-sandbox-session-registry.js.map +0 -1
  344. package/dist/storage/mastra-iteration-log-storage.js.map +0 -1
  345. package/dist/storage/mastra-task-storage.js.map +0 -1
  346. package/dist/tools/orchestration/data-table-agent.prompt.d.ts +0 -1
  347. package/dist/tools/orchestration/data-table-agent.prompt.js +0 -47
  348. package/dist/tools/orchestration/data-table-agent.prompt.js.map +0 -1
  349. package/dist/tools/orchestration/data-table-agent.tool.d.ts +0 -26
  350. package/dist/tools/orchestration/data-table-agent.tool.js +0 -174
  351. package/dist/tools/orchestration/data-table-agent.tool.js.map +0 -1
  352. package/dist/tools/orchestration/research-agent-prompt.d.ts +0 -1
  353. package/dist/tools/orchestration/research-agent-prompt.js +0 -26
  354. package/dist/tools/orchestration/research-agent-prompt.js.map +0 -1
  355. package/dist/tools/orchestration/research-with-agent.tool.d.ts +0 -30
  356. package/dist/tools/orchestration/research-with-agent.tool.js +0 -179
  357. package/dist/tools/orchestration/research-with-agent.tool.js.map +0 -1
  358. package/dist/workspace/builder-sandbox-factory.d.ts +0 -30
  359. package/dist/workspace/builder-sandbox-factory.js +0 -289
  360. package/dist/workspace/builder-sandbox-factory.js.map +0 -1
  361. package/dist/workspace/guarded-filesystem.d.ts +0 -10
  362. package/dist/workspace/guarded-filesystem.js +0 -136
  363. package/dist/workspace/guarded-filesystem.js.map +0 -1
@@ -0,0 +1,1008 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GEN_AI_COMPLETION = exports.GEN_AI_PROMPT = void 0;
4
+ exports.toTelemetryAttributeValue = toTelemetryAttributeValue;
5
+ exports.toTelemetryMetadata = toTelemetryMetadata;
6
+ exports.redactLangSmithTelemetrySpan = redactLangSmithTelemetrySpan;
7
+ exports.sanitizeTraceValue = sanitizeTraceValue;
8
+ exports.sanitizeTracePayload = sanitizeTracePayload;
9
+ exports.serializeModelIdForTrace = serializeModelIdForTrace;
10
+ exports.mergeTraceInputs = mergeTraceInputs;
11
+ exports.buildAgentTraceInputs = buildAgentTraceInputs;
12
+ const node_crypto_1 = require("node:crypto");
13
+ const tool_ids_1 = require("../tools/tool-ids");
14
+ const trace_labels_1 = require("./trace-labels");
15
+ const scrub_secrets_1 = require("../utils/scrub-secrets");
16
+ const stream_helpers_1 = require("../utils/stream-helpers");
17
+ const MAX_TRACE_DEPTH = 4;
18
+ const MAX_PROMPT_SCHEMA_TRACE_DEPTH = 12;
19
+ const MAX_TOOL_IO_TRACE_DEPTH = 8;
20
+ const MAX_TRACE_STRING_LENGTH = 2_000;
21
+ const MAX_TOOL_ACTION_DISPLAY_LENGTH = 64;
22
+ const MAX_TRACE_ARRAY_ITEMS = 20;
23
+ const MAX_TRACE_OBJECT_KEYS = 30;
24
+ const SENSITIVE_TELEMETRY_KEY_PATTERN = /(api[_-]?key|authorization|bearer|cookie|credentials?|password|secret|access[_-]?token|refresh[_-]?token|id[_-]?token|session[_-]?token|auth[_-]?token|(?:^|[._-])token$)/i;
25
+ const LANGSMITH_TRACE_NAME = 'langsmith.trace.name';
26
+ const LANGSMITH_SPAN_KIND = 'langsmith.span.kind';
27
+ const LANGSMITH_USAGE_METADATA = 'langsmith.usage_metadata';
28
+ exports.GEN_AI_PROMPT = 'gen_ai.prompt';
29
+ exports.GEN_AI_COMPLETION = 'gen_ai.completion';
30
+ const GEN_AI_OPERATION_NAME = 'gen_ai.operation.name';
31
+ const GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens';
32
+ const GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens';
33
+ const GEN_AI_USAGE_TOTAL_TOKENS = 'gen_ai.usage.total_tokens';
34
+ const GEN_AI_USAGE_INPUT_TOKEN_DETAILS = 'gen_ai.usage.input_token_details';
35
+ const AI_OPERATION_ID = 'ai.operationId';
36
+ const LLM_AI_SDK_OPERATION_IDS = new Set([
37
+ 'ai.generateText.doGenerate',
38
+ 'ai.streamText.doStream',
39
+ 'ai.generateObject.doGenerate',
40
+ 'ai.streamObject.doStream',
41
+ ]);
42
+ function truncateString(value) {
43
+ if (value.length <= MAX_TRACE_STRING_LENGTH) {
44
+ return value;
45
+ }
46
+ return `${value.slice(0, MAX_TRACE_STRING_LENGTH)}...`;
47
+ }
48
+ function toTelemetryAttributeValue(value) {
49
+ if (value === undefined || value === null) {
50
+ return undefined;
51
+ }
52
+ if (typeof value === 'string') {
53
+ return truncateString(value);
54
+ }
55
+ if (typeof value === 'number' || typeof value === 'boolean') {
56
+ return value;
57
+ }
58
+ if (Array.isArray(value)) {
59
+ if (value.every((entry) => typeof entry === 'string')) {
60
+ return value.map((entry) => truncateString(entry));
61
+ }
62
+ if (value.every((entry) => typeof entry === 'number')) {
63
+ return value;
64
+ }
65
+ if (value.every((entry) => typeof entry === 'boolean')) {
66
+ return value;
67
+ }
68
+ return value.map((entry) => truncateString(String(sanitizeTraceValue(entry))));
69
+ }
70
+ const sanitized = sanitizeTraceValue(value);
71
+ if (typeof sanitized === 'string') {
72
+ return sanitized;
73
+ }
74
+ if (typeof sanitized === 'number' || typeof sanitized === 'boolean') {
75
+ return sanitized;
76
+ }
77
+ return truncateString(JSON.stringify(sanitized));
78
+ }
79
+ function toTelemetryMetadata(...records) {
80
+ const metadata = {};
81
+ for (const record of records) {
82
+ if (!record)
83
+ continue;
84
+ for (const [key, value] of Object.entries(record)) {
85
+ if (key.startsWith('langsmith.metadata.')) {
86
+ continue;
87
+ }
88
+ const attributeValue = toTelemetryAttributeValue(value);
89
+ if (attributeValue !== undefined) {
90
+ metadata[key] = attributeValue;
91
+ }
92
+ }
93
+ }
94
+ return metadata;
95
+ }
96
+ function redactTelemetryJsonValue(value, keyHint, depth = 0, maxDepth = MAX_TRACE_DEPTH) {
97
+ if (depth > maxDepth) {
98
+ return '[redacted-depth-limit]';
99
+ }
100
+ if (keyHint && SENSITIVE_TELEMETRY_KEY_PATTERN.test(keyHint)) {
101
+ return '[redacted]';
102
+ }
103
+ if (typeof value === 'string') {
104
+ return (0, scrub_secrets_1.scrubSecretsInText)(value);
105
+ }
106
+ if (typeof value === 'number' || typeof value === 'boolean' || value === null) {
107
+ return value;
108
+ }
109
+ if (Array.isArray(value)) {
110
+ return value.map((entry) => redactTelemetryJsonValue(entry, keyHint, depth + 1, maxDepth));
111
+ }
112
+ if ((0, stream_helpers_1.isRecord)(value)) {
113
+ const redacted = {};
114
+ for (const [key, entryValue] of Object.entries(value)) {
115
+ redacted[key] = redactTelemetryJsonValue(entryValue, key, depth + 1, maxDepth);
116
+ }
117
+ return redacted;
118
+ }
119
+ return sanitizeTraceValue(value);
120
+ }
121
+ function maxRedactionDepthForAttribute(key) {
122
+ if (key === 'ai.prompt.messages' || key === exports.GEN_AI_PROMPT) {
123
+ return MAX_PROMPT_SCHEMA_TRACE_DEPTH;
124
+ }
125
+ if (key === 'ai.toolCall.args' || key === 'ai.toolCall.result' || key === exports.GEN_AI_COMPLETION) {
126
+ return MAX_TOOL_IO_TRACE_DEPTH;
127
+ }
128
+ return MAX_TRACE_DEPTH;
129
+ }
130
+ function redactTelemetryAttribute(key, value) {
131
+ if (SENSITIVE_TELEMETRY_KEY_PATTERN.test(key)) {
132
+ return '[redacted]';
133
+ }
134
+ const maxDepth = maxRedactionDepthForAttribute(key);
135
+ if (typeof value !== 'string') {
136
+ return redactTelemetryJsonValue(value, key, 0, maxDepth);
137
+ }
138
+ const trimmed = value.trim();
139
+ if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
140
+ (trimmed.startsWith('[') && trimmed.endsWith(']'))) {
141
+ try {
142
+ const parsed = JSON.parse(trimmed);
143
+ return JSON.stringify(redactTelemetryJsonValue(parsed, key, 0, maxDepth));
144
+ }
145
+ catch {
146
+ return (0, scrub_secrets_1.scrubSecretsInText)(value);
147
+ }
148
+ }
149
+ return (0, scrub_secrets_1.scrubSecretsInText)(value);
150
+ }
151
+ function parseTelemetryJson(value) {
152
+ if (typeof value !== 'string') {
153
+ return undefined;
154
+ }
155
+ try {
156
+ const parsed = JSON.parse(value);
157
+ return parsed;
158
+ }
159
+ catch {
160
+ return undefined;
161
+ }
162
+ }
163
+ function parseTelemetryTools(value) {
164
+ if (!Array.isArray(value)) {
165
+ const parsed = parseTelemetryJson(value);
166
+ return Array.isArray(parsed) ? parseTelemetryTools(parsed) : undefined;
167
+ }
168
+ const entries = value;
169
+ const tools = [];
170
+ for (const entry of entries) {
171
+ tools.push(typeof entry === 'string' ? (parseTelemetryJson(entry) ?? entry) : entry);
172
+ }
173
+ return tools.length > 0 ? tools : undefined;
174
+ }
175
+ function readToolCallPayload(part) {
176
+ if ('input' in part)
177
+ return part.input;
178
+ if ('args' in part)
179
+ return part.args;
180
+ if ('arguments' in part)
181
+ return part.arguments;
182
+ return {};
183
+ }
184
+ function readToolResultPayload(part) {
185
+ if ('output' in part)
186
+ return part.output;
187
+ if ('result' in part)
188
+ return part.result;
189
+ if ('content' in part)
190
+ return part.content;
191
+ return '';
192
+ }
193
+ function stringifyToolPayload(value) {
194
+ if (value === undefined || value === null) {
195
+ return '';
196
+ }
197
+ if (typeof value === 'string') {
198
+ return value;
199
+ }
200
+ try {
201
+ return JSON.stringify(value) ?? '';
202
+ }
203
+ catch {
204
+ return '[unserializable]';
205
+ }
206
+ }
207
+ function normalizeAssistantMessageForLangSmith(message) {
208
+ const content = message.content;
209
+ if (!Array.isArray(content)) {
210
+ return message;
211
+ }
212
+ const textParts = [];
213
+ const toolCalls = [];
214
+ for (const part of content) {
215
+ if (!(0, stream_helpers_1.isRecord)(part))
216
+ continue;
217
+ if (part.type === 'text' && typeof part.text === 'string') {
218
+ textParts.push(part.text);
219
+ continue;
220
+ }
221
+ if (part.type !== 'tool-call')
222
+ continue;
223
+ const toolCallId = typeof part.toolCallId === 'string'
224
+ ? part.toolCallId
225
+ : typeof part.id === 'string'
226
+ ? part.id
227
+ : undefined;
228
+ const toolName = typeof part.toolName === 'string'
229
+ ? part.toolName
230
+ : typeof part.name === 'string'
231
+ ? part.name
232
+ : undefined;
233
+ if (!toolCallId || !toolName)
234
+ continue;
235
+ toolCalls.push({
236
+ id: toolCallId,
237
+ type: 'function',
238
+ function: {
239
+ name: toolName,
240
+ arguments: stringifyToolPayload(readToolCallPayload(part)),
241
+ },
242
+ });
243
+ }
244
+ if (toolCalls.length === 0) {
245
+ return message;
246
+ }
247
+ return {
248
+ role: 'assistant',
249
+ content: textParts.join('\n'),
250
+ tool_calls: toolCalls,
251
+ };
252
+ }
253
+ function normalizeToolMessageForLangSmith(message) {
254
+ const content = message.content;
255
+ if (!Array.isArray(content)) {
256
+ return [message];
257
+ }
258
+ const normalizedMessages = [];
259
+ for (const part of content) {
260
+ if (!(0, stream_helpers_1.isRecord)(part) || part.type !== 'tool-result') {
261
+ continue;
262
+ }
263
+ const toolCallId = typeof part.toolCallId === 'string'
264
+ ? part.toolCallId
265
+ : typeof part.id === 'string'
266
+ ? part.id
267
+ : undefined;
268
+ const toolName = typeof part.toolName === 'string'
269
+ ? part.toolName
270
+ : typeof part.name === 'string'
271
+ ? part.name
272
+ : undefined;
273
+ if (!toolCallId)
274
+ continue;
275
+ normalizedMessages.push({
276
+ role: 'tool',
277
+ tool_call_id: toolCallId,
278
+ ...(toolName ? { name: toolName } : {}),
279
+ content: stringifyToolPayload(readToolResultPayload(part)),
280
+ });
281
+ }
282
+ return normalizedMessages.length > 0 ? normalizedMessages : [message];
283
+ }
284
+ function normalizeMessagesForLangSmith(messages) {
285
+ const normalizedMessages = [];
286
+ for (const message of messages) {
287
+ if (!(0, stream_helpers_1.isRecord)(message) || typeof message.role !== 'string') {
288
+ normalizedMessages.push(message);
289
+ continue;
290
+ }
291
+ if (message.role === 'assistant') {
292
+ normalizedMessages.push(normalizeAssistantMessageForLangSmith(message));
293
+ continue;
294
+ }
295
+ if (message.role === 'tool') {
296
+ normalizedMessages.push(...normalizeToolMessageForLangSmith(message));
297
+ continue;
298
+ }
299
+ normalizedMessages.push(message);
300
+ }
301
+ return normalizedMessages;
302
+ }
303
+ function stableStringify(value) {
304
+ if (Array.isArray(value)) {
305
+ return `[${value.map((entry) => stableStringify(entry)).join(',')}]`;
306
+ }
307
+ if ((0, stream_helpers_1.isRecord)(value)) {
308
+ const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
309
+ return `{${entries
310
+ .map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`)
311
+ .join(',')}}`;
312
+ }
313
+ return JSON.stringify(value);
314
+ }
315
+ function stableHash(value) {
316
+ return (0, node_crypto_1.createHash)('sha256').update(stableStringify(value)).digest('hex');
317
+ }
318
+ function toolNameFromDefinition(tool) {
319
+ if (!(0, stream_helpers_1.isRecord)(tool))
320
+ return undefined;
321
+ if (typeof tool.name === 'string')
322
+ return tool.name;
323
+ if (typeof tool.id === 'string')
324
+ return tool.id;
325
+ if ((0, stream_helpers_1.isRecord)(tool.function) && typeof tool.function.name === 'string') {
326
+ return tool.function.name;
327
+ }
328
+ return undefined;
329
+ }
330
+ function enrichLangSmithToolAttributes(attributes) {
331
+ const tools = parseTelemetryTools(attributes['ai.prompt.tools']);
332
+ if (!tools) {
333
+ return undefined;
334
+ }
335
+ const redactedTools = redactTelemetryJsonValue(tools, undefined, 0, MAX_PROMPT_SCHEMA_TRACE_DEPTH);
336
+ const normalizedTools = Array.isArray(redactedTools) ? redactedTools : tools;
337
+ const toolNames = normalizedTools
338
+ .map(toolNameFromDefinition)
339
+ .filter((name) => name !== undefined);
340
+ const serializedTools = JSON.stringify(normalizedTools);
341
+ const schemaHash = stableHash(normalizedTools);
342
+ attributes['llm.available_tool_count'] = normalizedTools.length;
343
+ attributes['llm.available_tool_names'] = toolNames;
344
+ attributes['llm.tool_manifest_ref'] = schemaHash;
345
+ attributes['llm.tool_schema_hash'] = schemaHash;
346
+ attributes.tools = serializedTools;
347
+ attributes['invocation_params.tools'] = serializedTools;
348
+ const toolChoice = parseTelemetryJson(attributes['ai.prompt.toolChoice']);
349
+ if (toolChoice !== undefined) {
350
+ const redactedToolChoice = redactTelemetryJsonValue(toolChoice, undefined, 0, MAX_PROMPT_SCHEMA_TRACE_DEPTH);
351
+ attributes['llm.tool_choice'] = JSON.stringify(redactedToolChoice);
352
+ attributes['invocation_params.tool_choice'] = JSON.stringify(redactedToolChoice);
353
+ }
354
+ return normalizedTools;
355
+ }
356
+ function enrichLangSmithPromptAttribute(attributes) {
357
+ const tools = enrichLangSmithToolAttributes(attributes);
358
+ if (attributes['gen_ai.prompt'] !== undefined) {
359
+ return;
360
+ }
361
+ const messages = parseTelemetryJson(attributes['ai.prompt.messages']);
362
+ if (!Array.isArray(messages)) {
363
+ return;
364
+ }
365
+ const toolChoice = parseTelemetryJson(attributes['ai.prompt.toolChoice']);
366
+ if (!tools && toolChoice === undefined) {
367
+ return;
368
+ }
369
+ const prompt = { input: normalizeMessagesForLangSmith(messages) };
370
+ if (tools) {
371
+ prompt.tools = tools;
372
+ }
373
+ if (toolChoice !== undefined) {
374
+ prompt.tool_choice = toolChoice;
375
+ }
376
+ attributes['gen_ai.prompt'] = JSON.stringify(redactTelemetryJsonValue(prompt, undefined, 0, MAX_PROMPT_SCHEMA_TRACE_DEPTH));
377
+ }
378
+ function numberFromAttribute(value) {
379
+ if (typeof value === 'number' && Number.isFinite(value)) {
380
+ return value;
381
+ }
382
+ if (typeof value === 'string' && value.trim()) {
383
+ const parsed = Number(value);
384
+ return Number.isFinite(parsed) ? parsed : undefined;
385
+ }
386
+ return undefined;
387
+ }
388
+ function readTokenDetail(details, keys) {
389
+ const parsedDetails = typeof details === 'string' ? parseTelemetryJson(details) : details;
390
+ if (!(0, stream_helpers_1.isRecord)(parsedDetails)) {
391
+ return undefined;
392
+ }
393
+ for (const key of keys) {
394
+ const value = numberFromAttribute(parsedDetails[key]);
395
+ if (value !== undefined) {
396
+ return value;
397
+ }
398
+ }
399
+ return undefined;
400
+ }
401
+ function readNestedRecord(record, keys) {
402
+ let current = record;
403
+ for (const key of keys) {
404
+ if (!(0, stream_helpers_1.isRecord)(current)) {
405
+ return {};
406
+ }
407
+ current = current[key];
408
+ }
409
+ return (0, stream_helpers_1.isRecord)(current) ? current : {};
410
+ }
411
+ function readProviderAnthropicUsage(attributes) {
412
+ const providerMetadata = parseTelemetryJson(attributes['ai.response.providerMetadata']);
413
+ return (0, stream_helpers_1.isRecord)(providerMetadata)
414
+ ? readNestedRecord(providerMetadata, ['anthropic', 'usage'])
415
+ : {};
416
+ }
417
+ function firstNumberAttribute(attributes, keys) {
418
+ for (const key of keys) {
419
+ const value = numberFromAttribute(attributes[key]);
420
+ if (value !== undefined) {
421
+ return value;
422
+ }
423
+ }
424
+ return undefined;
425
+ }
426
+ function calculateInputTokenAccounting(inputTokens, cacheReadTokens, cacheCreationTokens) {
427
+ const cachedInputTokens = cacheReadTokens + cacheCreationTokens;
428
+ const observedInputTokens = inputTokens ?? 0;
429
+ const regularInputTokens = observedInputTokens >= cachedInputTokens
430
+ ? Math.max(0, observedInputTokens - cachedInputTokens)
431
+ : observedInputTokens;
432
+ return {
433
+ regularInputTokens,
434
+ totalInputTokens: regularInputTokens + cachedInputTokens,
435
+ };
436
+ }
437
+ function buildLangSmithUsageMetadata(attributes) {
438
+ const inputTokens = firstNumberAttribute(attributes, [
439
+ GEN_AI_USAGE_INPUT_TOKENS,
440
+ 'ai.usage.inputTokens',
441
+ 'ai.usage.promptTokens',
442
+ ]);
443
+ const outputTokens = firstNumberAttribute(attributes, [
444
+ GEN_AI_USAGE_OUTPUT_TOKENS,
445
+ 'ai.usage.outputTokens',
446
+ 'ai.usage.completionTokens',
447
+ ]) ?? 0;
448
+ if (inputTokens === undefined && outputTokens === 0) {
449
+ return;
450
+ }
451
+ const providerAnthropicUsage = readProviderAnthropicUsage(attributes);
452
+ const inputDetails = attributes[GEN_AI_USAGE_INPUT_TOKEN_DETAILS];
453
+ const cacheReadTokens = firstNumberAttribute(attributes, [
454
+ 'ai.usage.inputTokenDetails.cacheReadTokens',
455
+ 'ai.usage.cachedInputTokens',
456
+ 'ai.usage.cacheReadInputTokens',
457
+ ]) ??
458
+ firstNumberAttribute(providerAnthropicUsage, ['cache_read_input_tokens']) ??
459
+ readTokenDetail(inputDetails, [
460
+ 'cache_read',
461
+ 'cache_read_tokens',
462
+ 'cache_read_input_tokens',
463
+ 'cached_tokens',
464
+ ]) ??
465
+ 0;
466
+ const cacheCreationTokens = firstNumberAttribute(attributes, [
467
+ 'ai.usage.inputTokenDetails.cacheCreationTokens',
468
+ 'ai.usage.cacheCreationInputTokens',
469
+ 'ai.usage.inputTokenDetails.cacheWriteTokens',
470
+ 'ai.usage.cacheWriteInputTokens',
471
+ ]) ??
472
+ firstNumberAttribute(providerAnthropicUsage, [
473
+ 'cache_creation_input_tokens',
474
+ 'cache_write_input_tokens',
475
+ ]) ??
476
+ readTokenDetail(inputDetails, [
477
+ 'cache_creation',
478
+ 'cache_creation_tokens',
479
+ 'cache_creation_input_tokens',
480
+ 'cache_write',
481
+ 'cache_write_tokens',
482
+ 'cache_write_input_tokens',
483
+ ]) ??
484
+ 0;
485
+ const { totalInputTokens } = calculateInputTokenAccounting(inputTokens, cacheReadTokens, cacheCreationTokens);
486
+ const inputTokenDetails = {};
487
+ if (cacheReadTokens > 0) {
488
+ inputTokenDetails.cache_read = cacheReadTokens;
489
+ }
490
+ if (cacheCreationTokens > 0) {
491
+ inputTokenDetails.cache_creation = cacheCreationTokens;
492
+ inputTokenDetails.ephemeral_5m_input_tokens = cacheCreationTokens;
493
+ }
494
+ return {
495
+ input_tokens: totalInputTokens,
496
+ output_tokens: outputTokens,
497
+ total_tokens: totalInputTokens + outputTokens,
498
+ ...(Object.keys(inputTokenDetails).length > 0
499
+ ? { input_token_details: inputTokenDetails }
500
+ : {}),
501
+ };
502
+ }
503
+ function normalizeUsageForLangSmith(attributes) {
504
+ const usageMetadata = buildLangSmithUsageMetadata(attributes);
505
+ if (!usageMetadata) {
506
+ return;
507
+ }
508
+ const inputTokens = firstNumberAttribute(attributes, [
509
+ GEN_AI_USAGE_INPUT_TOKENS,
510
+ 'ai.usage.inputTokens',
511
+ 'ai.usage.promptTokens',
512
+ ]);
513
+ const outputTokens = numberFromAttribute(usageMetadata.output_tokens) ?? 0;
514
+ const inputTokenDetails = (0, stream_helpers_1.isRecord)(usageMetadata.input_token_details)
515
+ ? usageMetadata.input_token_details
516
+ : {};
517
+ const cacheReadTokens = numberFromAttribute(inputTokenDetails.cache_read) ?? 0;
518
+ const cacheCreationTokens = numberFromAttribute(inputTokenDetails.cache_creation) ??
519
+ numberFromAttribute(inputTokenDetails.ephemeral_5m_input_tokens) ??
520
+ 0;
521
+ const totalInputTokens = numberFromAttribute(usageMetadata.input_tokens) ?? 0;
522
+ const { regularInputTokens } = calculateInputTokenAccounting(inputTokens, cacheReadTokens, cacheCreationTokens);
523
+ attributes[GEN_AI_USAGE_INPUT_TOKENS] = totalInputTokens;
524
+ attributes[GEN_AI_USAGE_OUTPUT_TOKENS] = outputTokens;
525
+ attributes[GEN_AI_USAGE_TOTAL_TOKENS] = totalInputTokens + outputTokens;
526
+ attributes['ai.usage.inputTokens'] = totalInputTokens;
527
+ attributes[LANGSMITH_USAGE_METADATA] = JSON.stringify(usageMetadata);
528
+ if (inputTokens !== undefined) {
529
+ attributes['langsmith.metadata.original_input_tokens'] = inputTokens;
530
+ attributes['langsmith.metadata.anthropic_original_input_tokens'] = inputTokens;
531
+ }
532
+ attributes['langsmith.metadata.total_input_tokens'] = totalInputTokens;
533
+ attributes['langsmith.metadata.regular_input_tokens'] = regularInputTokens;
534
+ attributes['langsmith.metadata.cache_read_input_tokens'] = cacheReadTokens;
535
+ attributes['langsmith.metadata.cache_creation_input_tokens'] = cacheCreationTokens;
536
+ attributes['langsmith.metadata.anthropic_total_input_tokens'] = totalInputTokens;
537
+ attributes['langsmith.metadata.anthropic_regular_input_tokens'] = regularInputTokens;
538
+ attributes['langsmith.metadata.anthropic_cache_read_input_tokens'] = cacheReadTokens;
539
+ attributes['langsmith.metadata.anthropic_cache_creation_input_tokens'] = cacheCreationTokens;
540
+ attributes[GEN_AI_USAGE_INPUT_TOKEN_DETAILS] = JSON.stringify({
541
+ cache_read: cacheReadTokens,
542
+ cache_creation: cacheCreationTokens,
543
+ regular: regularInputTokens,
544
+ ...(inputTokens !== undefined ? { original_input_tokens: inputTokens } : {}),
545
+ });
546
+ }
547
+ function readStringAttribute(attributes, keys) {
548
+ for (const key of keys) {
549
+ const value = attributes[key];
550
+ if (typeof value === 'string' && value.length > 0) {
551
+ return value;
552
+ }
553
+ }
554
+ return undefined;
555
+ }
556
+ function inferNativeLlmRole(attributes) {
557
+ return readStringAttribute(attributes, [
558
+ 'ai.telemetry.metadata.agent_role',
559
+ 'langsmith.metadata.agent_role',
560
+ 'agent_role',
561
+ ]);
562
+ }
563
+ function displayNameForNativeLlmSpan(attributes) {
564
+ const role = inferNativeLlmRole(attributes);
565
+ if (role === 'thread_title') {
566
+ return 'llm: title';
567
+ }
568
+ if (role) {
569
+ return `llm: ${(0, trace_labels_1.formatAgentRoleLabel)(role)}`;
570
+ }
571
+ const functionId = readStringAttribute(attributes, [
572
+ 'ai.telemetry.functionId',
573
+ 'resource.name',
574
+ 'operation.name',
575
+ ]);
576
+ if (functionId) {
577
+ return `llm: ${(0, trace_labels_1.formatAgentRoleLabel)(functionId.replace(/^instance-ai[._-]?/, ''))}`;
578
+ }
579
+ return 'llm';
580
+ }
581
+ function parseTelemetryObject(value) {
582
+ const parsed = typeof value === 'string' ? parseTelemetryJson(value) : value;
583
+ return (0, stream_helpers_1.isRecord)(parsed) ? parsed : undefined;
584
+ }
585
+ function sanitizeToolActionForDisplay(action) {
586
+ const sanitized = action
587
+ .trim()
588
+ .slice(0, MAX_TOOL_ACTION_DISPLAY_LENGTH)
589
+ .replace(/[^\w.-]+/g, '_')
590
+ .replace(/^_+|_+$/g, '');
591
+ return sanitized.length > 0 ? sanitized : undefined;
592
+ }
593
+ function toolActionForNativeToolSpan(attributes) {
594
+ const args = parseTelemetryObject(attributes['ai.toolCall.args']);
595
+ if (!args || typeof args.action !== 'string') {
596
+ return undefined;
597
+ }
598
+ return sanitizeToolActionForDisplay(args.action);
599
+ }
600
+ function setLangSmithMetadataAttribute(attributes, key, value) {
601
+ attributes[key] = value;
602
+ if (!key.startsWith('langsmith.metadata.')) {
603
+ attributes[`langsmith.metadata.${key}`] = value;
604
+ }
605
+ }
606
+ function renameNativeLlmSpanForLangSmith(span, attributes) {
607
+ const operationId = readStringAttribute(attributes, [AI_OPERATION_ID]);
608
+ if (!operationId || !LLM_AI_SDK_OPERATION_IDS.has(operationId)) {
609
+ return;
610
+ }
611
+ const displayName = displayNameForNativeLlmSpan(attributes);
612
+ span.name = displayName;
613
+ attributes[LANGSMITH_TRACE_NAME] = displayName;
614
+ attributes[LANGSMITH_SPAN_KIND] = 'llm';
615
+ attributes[GEN_AI_OPERATION_NAME] = 'chat';
616
+ const displayGroup = inferNativeLlmRole(attributes);
617
+ setLangSmithMetadataAttribute(attributes, 'display_name', displayName);
618
+ setLangSmithMetadataAttribute(attributes, 'display_kind', 'llm');
619
+ setLangSmithMetadataAttribute(attributes, 'display_group', displayGroup ? (0, trace_labels_1.formatAgentRoleLabel)(displayGroup) : 'llm');
620
+ const executionMode = readStringAttribute(attributes, [
621
+ 'ai.telemetry.metadata.execution_mode',
622
+ 'langsmith.metadata.execution_mode',
623
+ 'execution_mode',
624
+ ]);
625
+ if (executionMode) {
626
+ setLangSmithMetadataAttribute(attributes, 'display_phase', (0, trace_labels_1.formatTraceLabel)(executionMode));
627
+ }
628
+ setLangSmithMetadataAttribute(attributes, 'ai_sdk.operation', operationId);
629
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.display_name', displayName);
630
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.canonical_name', operationId);
631
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.run_name', operationId);
632
+ delete attributes[AI_OPERATION_ID];
633
+ }
634
+ function renameNativeToolSpanForLangSmith(span, attributes) {
635
+ const toolName = readStringAttribute(attributes, ['ai.toolCall.name']);
636
+ if (!toolName) {
637
+ return;
638
+ }
639
+ const operationId = readStringAttribute(attributes, [AI_OPERATION_ID]);
640
+ if (operationId && operationId !== 'ai.toolCall') {
641
+ return;
642
+ }
643
+ const action = toolActionForNativeToolSpan(attributes);
644
+ const displayName = action ? `${toolName}[${action}]` : toolName;
645
+ span.name = displayName;
646
+ attributes[LANGSMITH_TRACE_NAME] = displayName;
647
+ attributes[LANGSMITH_SPAN_KIND] = 'tool';
648
+ attributes['ai.toolCall.display_name'] = displayName;
649
+ if (action) {
650
+ attributes['ai.toolCall.action'] = action;
651
+ setLangSmithMetadataAttribute(attributes, 'display_action', action);
652
+ }
653
+ setLangSmithMetadataAttribute(attributes, 'display_name', displayName);
654
+ setLangSmithMetadataAttribute(attributes, 'display_kind', 'tool');
655
+ setLangSmithMetadataAttribute(attributes, 'display_group', toolName);
656
+ setLangSmithMetadataAttribute(attributes, 'ai_sdk.operation', operationId ?? 'ai.toolCall');
657
+ attributes['langsmith.metadata.ls_run_name'] = displayName;
658
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.display_name', displayName);
659
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.canonical_name', toolName);
660
+ setLangSmithMetadataAttribute(attributes, 'instance_ai.run_name', displayName);
661
+ }
662
+ function isLangSmithLlmSpan(attributes) {
663
+ const operationId = readStringAttribute(attributes, [AI_OPERATION_ID]);
664
+ return (attributes[LANGSMITH_SPAN_KIND] === 'llm' ||
665
+ attributes.display_kind === 'llm' ||
666
+ (typeof operationId === 'string' && LLM_AI_SDK_OPERATION_IDS.has(operationId)));
667
+ }
668
+ function isCountedUsageAttribute(key) {
669
+ return (key === LANGSMITH_USAGE_METADATA ||
670
+ key === 'usage_metadata' ||
671
+ key === 'prompt_tokens' ||
672
+ key === 'completion_tokens' ||
673
+ key === 'total_tokens' ||
674
+ key === 'input_tokens' ||
675
+ key === 'output_tokens' ||
676
+ key.startsWith('gen_ai.usage.') ||
677
+ key.startsWith('ai.usage.') ||
678
+ key.startsWith('llm.usage.'));
679
+ }
680
+ function neutralUsageAttributeKey(key) {
681
+ return `instance_ai.usage.${key}`;
682
+ }
683
+ function moveNonLlmUsageAttributes(attributes) {
684
+ if (isLangSmithLlmSpan(attributes)) {
685
+ return;
686
+ }
687
+ for (const key of Object.keys(attributes)) {
688
+ if (!isCountedUsageAttribute(key)) {
689
+ continue;
690
+ }
691
+ attributes[neutralUsageAttributeKey(key)] = attributes[key];
692
+ delete attributes[key];
693
+ }
694
+ }
695
+ function redactLangSmithTelemetrySpan(span) {
696
+ if (!(0, stream_helpers_1.isRecord)(span) || !(0, stream_helpers_1.isRecord)(span.attributes)) {
697
+ return span;
698
+ }
699
+ const attributes = {};
700
+ for (const [key, value] of Object.entries(span.attributes)) {
701
+ attributes[key] = redactTelemetryAttribute(key, value);
702
+ }
703
+ enrichLangSmithPromptAttribute(attributes);
704
+ normalizeUsageForLangSmith(attributes);
705
+ renameNativeLlmSpanForLangSmith(span, attributes);
706
+ renameNativeToolSpanForLangSmith(span, attributes);
707
+ moveNonLlmUsageAttributes(attributes);
708
+ span.attributes = attributes;
709
+ return span;
710
+ }
711
+ function splitTraceText(value) {
712
+ if (value.length <= MAX_TRACE_STRING_LENGTH) {
713
+ return [value];
714
+ }
715
+ const chunks = [];
716
+ let remaining = value;
717
+ while (remaining.length > MAX_TRACE_STRING_LENGTH) {
718
+ const candidate = remaining.slice(0, MAX_TRACE_STRING_LENGTH);
719
+ const splitIndex = candidate.lastIndexOf('\n');
720
+ const chunkEnd = splitIndex >= MAX_TRACE_STRING_LENGTH / 2 ? splitIndex + 1 : MAX_TRACE_STRING_LENGTH;
721
+ chunks.push(remaining.slice(0, chunkEnd));
722
+ remaining = remaining.slice(chunkEnd);
723
+ }
724
+ if (remaining.length > 0) {
725
+ chunks.push(remaining);
726
+ }
727
+ return chunks;
728
+ }
729
+ function serializeTraceText(value) {
730
+ const chunks = splitTraceText(value);
731
+ if (chunks.length === 1) {
732
+ return chunks[0];
733
+ }
734
+ return Object.fromEntries(chunks.map((chunk, index) => [`part_${String(index + 1).padStart(2, '0')}`, chunk]));
735
+ }
736
+ function summarizeToolDescription(tool) {
737
+ if (!(0, stream_helpers_1.isRecord)(tool)) {
738
+ return undefined;
739
+ }
740
+ return typeof tool.description === 'string' ? tool.description : undefined;
741
+ }
742
+ function classifyToolSource(name, toolRecord) {
743
+ if (toolRecord.mcpTool === true) {
744
+ return typeof toolRecord.mcpServerName === 'string' &&
745
+ toolRecord.mcpServerName.toLowerCase().includes('local')
746
+ ? 'local-mcp'
747
+ : 'mcp';
748
+ }
749
+ if (name.startsWith('workspace_') ||
750
+ name === tool_ids_1.WORKSPACE_TOOL_IDS.WRITE_FILE ||
751
+ name === tool_ids_1.WORKSPACE_TOOL_IDS.SUBMIT_WORKFLOW ||
752
+ name === tool_ids_1.ORCHESTRATION_TOOL_IDS.APPLY_WORKFLOW_CREDENTIALS) {
753
+ return 'workspace';
754
+ }
755
+ if (tool_ids_1.ORCHESTRATION_TOOL_NAMES.has(name)) {
756
+ return 'orchestration';
757
+ }
758
+ return 'domain';
759
+ }
760
+ function classifyToolCategory(name) {
761
+ if (name.includes('credential'))
762
+ return 'credential';
763
+ if (name.includes('browser'))
764
+ return 'browser';
765
+ if (name.includes('data-table'))
766
+ return 'data-table';
767
+ if (name.includes('workflow') ||
768
+ name === tool_ids_1.DOMAIN_TOOL_IDS.BUILD_WORKFLOW ||
769
+ name === tool_ids_1.WORKSPACE_TOOL_IDS.SUBMIT_WORKFLOW) {
770
+ return 'workflow';
771
+ }
772
+ if (name === tool_ids_1.DOMAIN_TOOL_IDS.NODES || name === 'materialize-node-type')
773
+ return 'node';
774
+ if (name === tool_ids_1.DOMAIN_TOOL_IDS.EXECUTIONS)
775
+ return 'execution';
776
+ if (name.includes('research'))
777
+ return 'research';
778
+ if (name === tool_ids_1.ORCHESTRATION_TOOL_IDS.PLAN ||
779
+ name.includes('plan') ||
780
+ name === tool_ids_1.ORCHESTRATION_TOOL_IDS.CREATE_TASKS) {
781
+ return 'planning';
782
+ }
783
+ if (name.startsWith('workspace_'))
784
+ return 'workspace';
785
+ if (name.includes('file') || name.includes('filesystem'))
786
+ return 'filesystem';
787
+ return 'other';
788
+ }
789
+ function classifyToolSideEffect(name) {
790
+ if (name.includes('browser'))
791
+ return 'browser';
792
+ if (name.includes('research'))
793
+ return 'network';
794
+ if (name === tool_ids_1.DOMAIN_TOOL_IDS.EXECUTIONS || name.includes('execute') || name.includes('run')) {
795
+ return 'execute';
796
+ }
797
+ if (name.includes('write') ||
798
+ name.includes('submit') ||
799
+ name.includes('apply') ||
800
+ name.includes('build') ||
801
+ name.includes('create') ||
802
+ name.includes('update') ||
803
+ name.includes('delete') ||
804
+ name.includes('remove') ||
805
+ name.includes('complete')) {
806
+ return 'write';
807
+ }
808
+ if (name.includes(tool_ids_1.DOMAIN_TOOL_IDS.ASK_USER) || name.includes('pause-for-user'))
809
+ return 'none';
810
+ return 'read';
811
+ }
812
+ function getToolInputSchema(tool) {
813
+ if (!(0, stream_helpers_1.isRecord)(tool)) {
814
+ return undefined;
815
+ }
816
+ const inputSchema = tool.inputSchema;
817
+ if (inputSchema === undefined) {
818
+ return undefined;
819
+ }
820
+ const toJSONSchema = (0, stream_helpers_1.isRecord)(inputSchema) ? inputSchema.toJSONSchema : undefined;
821
+ if (typeof toJSONSchema === 'function' && toJSONSchema.length === 0) {
822
+ try {
823
+ const schema = Reflect.apply(toJSONSchema, inputSchema, []);
824
+ return schema;
825
+ }
826
+ catch {
827
+ return { type: 'zod', conversion: 'failed' };
828
+ }
829
+ }
830
+ if ((0, stream_helpers_1.isRecord)(inputSchema) && typeof inputSchema.safeParse === 'function') {
831
+ return { type: 'zod' };
832
+ }
833
+ return inputSchema;
834
+ }
835
+ function summarizeToolForManifest(name, tool) {
836
+ const schema = getToolInputSchema(tool);
837
+ const redactedSchema = schema === undefined
838
+ ? undefined
839
+ : redactTelemetryJsonValue(schema, undefined, 0, MAX_PROMPT_SCHEMA_TRACE_DEPTH);
840
+ const toolRecord = (0, stream_helpers_1.isRecord)(tool) ? tool : {};
841
+ const description = summarizeToolDescription(tool);
842
+ const providerOptions = (0, stream_helpers_1.isRecord)(toolRecord.providerOptions)
843
+ ? redactTelemetryJsonValue(toolRecord.providerOptions)
844
+ : undefined;
845
+ return {
846
+ name,
847
+ ...(description ? { description } : {}),
848
+ kind: toolRecord.mcpTool === true ? 'mcp' : 'local',
849
+ source: classifyToolSource(name, toolRecord),
850
+ category: classifyToolCategory(name),
851
+ side_effect: classifyToolSideEffect(name),
852
+ ...(typeof toolRecord.mcpServerName === 'string'
853
+ ? { mcp_server_name: toolRecord.mcpServerName }
854
+ : {}),
855
+ approval: {
856
+ default_approval: toolRecord.withDefaultApproval === true,
857
+ suspend: toolRecord.suspendSchema !== undefined,
858
+ resume: toolRecord.resumeSchema !== undefined,
859
+ },
860
+ ...(redactedSchema !== undefined ? { input_schema: redactedSchema } : {}),
861
+ ...(providerOptions !== undefined ? { provider_options: providerOptions } : {}),
862
+ };
863
+ }
864
+ function summarizeToolSet(fieldPrefix, tools) {
865
+ if (!tools || tools.size === 0) {
866
+ return {};
867
+ }
868
+ const toolEntries = Array.from(tools);
869
+ const summaries = toolEntries.map(([name, tool]) => summarizeToolForManifest(name, tool));
870
+ const manifestHash = stableHash(summaries);
871
+ const toolNames = toolEntries.map(([name]) => name);
872
+ if (fieldPrefix === 'loaded') {
873
+ return {
874
+ assigned_tool_count: summaries.length,
875
+ assigned_tool_names: toolNames,
876
+ assigned_tool_schema_hash: manifestHash,
877
+ };
878
+ }
879
+ return {
880
+ [`${fieldPrefix}_tool_count`]: summaries.length,
881
+ [`${fieldPrefix}_tool_names`]: toolNames,
882
+ [`${fieldPrefix}_tool_schema_hash`]: manifestHash,
883
+ };
884
+ }
885
+ function summarizeMemoryBinding(memory) {
886
+ if (!(0, stream_helpers_1.isRecord)(memory)) {
887
+ return {};
888
+ }
889
+ return {
890
+ memory_enabled: true,
891
+ ...(typeof memory.resource === 'string' ? { memory_resource_id: memory.resource } : {}),
892
+ ...(typeof memory.thread === 'string' ? { memory_thread_id: memory.thread } : {}),
893
+ };
894
+ }
895
+ function summarizeRuntimeSkillRegistry(registry) {
896
+ if (!registry || registry.skills.length === 0) {
897
+ return {};
898
+ }
899
+ const categories = Array.from(new Set(registry.skills
900
+ .map((skill) => skill.category)
901
+ .filter((category) => typeof category === 'string'))).sort();
902
+ return {
903
+ runtime_skill_count: registry.skills.length,
904
+ runtime_skill_names: registry.skills.map((skill) => skill.name),
905
+ runtime_skill_registry_hash: registry.skillsHash,
906
+ ...(categories.length > 0 ? { runtime_skill_categories: categories } : {}),
907
+ };
908
+ }
909
+ function sanitizeTraceValue(value, depth = 0) {
910
+ if (value === null || value === undefined) {
911
+ return value;
912
+ }
913
+ if (typeof value === 'string') {
914
+ return truncateString(value);
915
+ }
916
+ if (typeof value === 'number' || typeof value === 'boolean') {
917
+ return value;
918
+ }
919
+ if (typeof value === 'bigint') {
920
+ return value.toString();
921
+ }
922
+ if (typeof value === 'function') {
923
+ return `[function ${value.name || 'anonymous'}]`;
924
+ }
925
+ if (value instanceof Date) {
926
+ return value.toISOString();
927
+ }
928
+ if (value instanceof Error) {
929
+ return {
930
+ name: value.name,
931
+ message: truncateString(value.message),
932
+ };
933
+ }
934
+ if (value instanceof Uint8Array) {
935
+ return `[binary ${value.byteLength} bytes]`;
936
+ }
937
+ if (Array.isArray(value)) {
938
+ if (depth >= MAX_TRACE_DEPTH) {
939
+ return `[array(${value.length})]`;
940
+ }
941
+ return value
942
+ .slice(0, MAX_TRACE_ARRAY_ITEMS)
943
+ .map((entry) => sanitizeTraceValue(entry, depth + 1));
944
+ }
945
+ if ((0, stream_helpers_1.isRecord)(value)) {
946
+ if (depth >= MAX_TRACE_DEPTH) {
947
+ return `[object ${Object.keys(value).length} keys]`;
948
+ }
949
+ const entries = Object.entries(value).slice(0, MAX_TRACE_OBJECT_KEYS);
950
+ const sanitized = {};
951
+ for (const [key, entryValue] of entries) {
952
+ sanitized[key] = sanitizeTraceValue(entryValue, depth + 1);
953
+ }
954
+ if (Object.keys(value).length > entries.length) {
955
+ sanitized.__truncatedKeys = Object.keys(value).length - entries.length;
956
+ }
957
+ return sanitized;
958
+ }
959
+ if (typeof value === 'symbol') {
960
+ return value.toString();
961
+ }
962
+ return truncateString(Object.prototype.toString.call(value));
963
+ }
964
+ function sanitizeTracePayload(value) {
965
+ if ((0, stream_helpers_1.isRecord)(value)) {
966
+ const sanitized = {};
967
+ for (const [key, entryValue] of Object.entries(value)) {
968
+ sanitized[key] = sanitizeTraceValue(entryValue);
969
+ }
970
+ return sanitized;
971
+ }
972
+ if (value === undefined) {
973
+ return {};
974
+ }
975
+ return { value: sanitizeTraceValue(value) };
976
+ }
977
+ function serializeModelIdForTrace(modelId) {
978
+ if (typeof modelId === 'string' && modelId.length > 0) {
979
+ return truncateString(modelId);
980
+ }
981
+ if ((0, stream_helpers_1.isRecord)(modelId) && typeof modelId.id === 'string') {
982
+ return truncateString(modelId.id);
983
+ }
984
+ return sanitizeTraceValue(modelId);
985
+ }
986
+ function mergeTraceInputs(baseInputs, inputs) {
987
+ const existingInputs = (0, stream_helpers_1.isRecord)(baseInputs) && !Array.isArray(baseInputs) ? { ...baseInputs } : {};
988
+ return {
989
+ ...existingInputs,
990
+ ...(inputs ?? {}),
991
+ };
992
+ }
993
+ function buildAgentTraceInputs(options) {
994
+ return sanitizeTracePayload({
995
+ ...(options.systemPrompt ? { system_prompt: serializeTraceText(options.systemPrompt) } : {}),
996
+ ...(options.modelId !== undefined ? { model: serializeModelIdForTrace(options.modelId) } : {}),
997
+ ...(options.toolSearchEnabled !== undefined
998
+ ? { tool_search_enabled: options.toolSearchEnabled }
999
+ : {}),
1000
+ ...(options.inputProcessors?.length ? { input_processors: options.inputProcessors } : {}),
1001
+ ...summarizeMemoryBinding(options.memory),
1002
+ ...summarizeToolSet('loaded', options.tools),
1003
+ ...summarizeToolSet('deferred', options.deferredTools),
1004
+ ...summarizeToolSet('runtime', options.runtimeTools),
1005
+ ...summarizeRuntimeSkillRegistry(options.runtimeSkills),
1006
+ });
1007
+ }
1008
+ //# sourceMappingURL=trace-payloads.js.map