@anvia/core 1.5.1 → 1.6.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 (147) hide show
  1. package/README.md +112 -1
  2. package/dist/agent/agent-tool.js +7 -7
  3. package/dist/agent/agent.js +25 -25
  4. package/dist/agent/index.js +29 -29
  5. package/dist/agent/resolve-options.js +10 -10
  6. package/dist/agent/resolved-agent.js +26 -26
  7. package/dist/agent/team/agent-team.js +29 -29
  8. package/dist/agent/team/index.js +29 -29
  9. package/dist/agent/tool-catalog.js +9 -9
  10. package/dist/{chunk-QHGYCYV6.js → chunk-3FIX7GLM.js} +2 -2
  11. package/dist/{chunk-SIXS4CCU.js → chunk-4IOC4SP6.js} +4 -4
  12. package/dist/chunk-4IOC4SP6.js.map +1 -0
  13. package/dist/{chunk-JMMZICU7.js → chunk-4OSA3MMA.js} +39 -5
  14. package/dist/chunk-4OSA3MMA.js.map +1 -0
  15. package/dist/{chunk-Y365ABZY.js → chunk-4WSICA6D.js} +2 -2
  16. package/dist/{chunk-YOLOFTAY.js → chunk-57AUTEQ6.js} +57 -5
  17. package/dist/chunk-57AUTEQ6.js.map +1 -0
  18. package/dist/{chunk-647TQE3E.js → chunk-5BO4OTTK.js} +5 -5
  19. package/dist/{chunk-ZQC6M22O.js → chunk-7LBUXGJI.js} +2 -2
  20. package/dist/{chunk-NDAGW32C.js → chunk-7OHHMYRO.js} +2 -2
  21. package/dist/{chunk-DXW37JLZ.js → chunk-AMPQJMDG.js} +5 -5
  22. package/dist/{chunk-HAAGSIZH.js → chunk-CB2L2NIQ.js} +2 -2
  23. package/dist/{chunk-3SUEXGRA.js → chunk-D6FK5ZQR.js} +5 -5
  24. package/dist/{chunk-B57NNDEF.js → chunk-FTK6YRLN.js} +5 -5
  25. package/dist/{chunk-T3ZOZEAB.js → chunk-GB4SRUT7.js} +2 -2
  26. package/dist/{chunk-KX2TRKO2.js → chunk-GNBPXJC6.js} +2 -2
  27. package/dist/{chunk-PZ7ATNR6.js → chunk-GRI4EFNG.js} +15 -15
  28. package/dist/chunk-GRI4EFNG.js.map +1 -0
  29. package/dist/{chunk-CJKGTEN4.js → chunk-HDL5TXF7.js} +2 -2
  30. package/dist/{chunk-YMTBHHLQ.js → chunk-HG6ASDNI.js} +3 -3
  31. package/dist/{chunk-XAVSWLX5.js → chunk-IMSM4HHI.js} +3 -3
  32. package/dist/{chunk-TK2VXQVZ.js → chunk-KGVDUYZV.js} +3 -3
  33. package/dist/{chunk-PPMK7CG4.js → chunk-LW6F3IGP.js} +2 -2
  34. package/dist/{chunk-PWWKX2HA.js → chunk-MJAM7HZB.js} +8 -8
  35. package/dist/{chunk-2JZV4LUS.js → chunk-MKY7KTZY.js} +3 -13
  36. package/dist/chunk-MKY7KTZY.js.map +1 -0
  37. package/dist/{chunk-RFFOL6ON.js → chunk-MWG2PMTE.js} +18 -5
  38. package/dist/chunk-MWG2PMTE.js.map +1 -0
  39. package/dist/{chunk-JMNIWUFV.js → chunk-NKSXYOUM.js} +3 -3
  40. package/dist/{chunk-4VDDYI6P.js → chunk-OBTD3GPY.js} +2 -2
  41. package/dist/{chunk-GDY2Z2SZ.js → chunk-PFJN5OIQ.js} +2 -2
  42. package/dist/chunk-PZC5UHIN.js +190 -0
  43. package/dist/chunk-PZC5UHIN.js.map +1 -0
  44. package/dist/{chunk-UYODZ7OE.js → chunk-STEAW4JD.js} +2 -2
  45. package/dist/{chunk-LJGQ6VQB.js → chunk-TD2VYYUT.js} +90 -31
  46. package/dist/chunk-TD2VYYUT.js.map +1 -0
  47. package/dist/{chunk-AJC6YRVB.js → chunk-TOJSC4GI.js} +3 -3
  48. package/dist/{chunk-V5DWNXVH.js → chunk-W2XPREWL.js} +135 -26
  49. package/dist/chunk-W2XPREWL.js.map +1 -0
  50. package/dist/chunk-W6V63YPY.js +96 -0
  51. package/dist/chunk-W6V63YPY.js.map +1 -0
  52. package/dist/{chunk-F4BOW76L.js → chunk-XQTTPQWA.js} +4 -4
  53. package/dist/{chunk-HHMLE3TZ.js → chunk-YCTXTOOQ.js} +7 -16
  54. package/dist/chunk-YCTXTOOQ.js.map +1 -0
  55. package/dist/{chunk-7TUAAGVR.js → chunk-YKWUFYXT.js} +2 -2
  56. package/dist/{chunk-5SJBSCG2.js → chunk-YSR6KLCS.js} +8 -2
  57. package/dist/chunk-YSR6KLCS.js.map +1 -0
  58. package/dist/{chunk-6E6ABRJ6.js → chunk-ZJ4T7CEX.js} +2 -2
  59. package/dist/completion/generate-completion.js +3 -3
  60. package/dist/completion/index.js +3 -3
  61. package/dist/completion/stream-accumulator.js +1 -1
  62. package/dist/embeddings/embed.js +1 -1
  63. package/dist/embeddings/index.js +1 -1
  64. package/dist/evals/advanced-metrics.js +6 -6
  65. package/dist/evals/agent-target.js +2 -1
  66. package/dist/evals/cli.js +6 -6
  67. package/dist/evals/execution.js +3 -1
  68. package/dist/evals/index.js +12 -12
  69. package/dist/evals/judge.js +5 -5
  70. package/dist/evals/metrics.js +6 -6
  71. package/dist/evals/runner.js +5 -5
  72. package/dist/extractor/extractor.js +4 -4
  73. package/dist/extractor/index.js +4 -4
  74. package/dist/guardrails/index.js +4 -4
  75. package/dist/index.js +34 -34
  76. package/dist/internal/agent-runtime/agent-run.js +21 -21
  77. package/dist/internal/agent-runtime/continuation-state.js +3 -3
  78. package/dist/internal/agent-runtime/interaction-suspension.js +3 -3
  79. package/dist/internal/agent-runtime/memory.js +5 -5
  80. package/dist/internal/agent-runtime/prepared-tool-call.js +2 -2
  81. package/dist/internal/agent-runtime/retrieval.js +8 -8
  82. package/dist/internal/agent-runtime/tool-execution.js +15 -15
  83. package/dist/internal/agent.js +26 -26
  84. package/dist/internal/team-runtime/member.js +3 -3
  85. package/dist/internal/team-runtime/run.js +28 -28
  86. package/dist/internal/team-runtime/tools.js +4 -4
  87. package/dist/memory/compaction.js +4 -4
  88. package/dist/memory/index.js +4 -4
  89. package/dist/observability/group.js +3 -3
  90. package/dist/observability/index.js +3 -3
  91. package/dist/pipeline/index.js +6 -6
  92. package/dist/pipeline/pipeline.js +6 -6
  93. package/dist/schema/standard-json-schema.js +1 -1
  94. package/dist/skills/index.js +13 -13
  95. package/dist/skills/load.js +13 -13
  96. package/dist/skills/tools.js +12 -12
  97. package/dist/streaming/index.d.ts +2 -1
  98. package/dist/streaming/index.js +2 -1
  99. package/dist/streaming/readable-stream.js +2 -1
  100. package/dist/tool/create-tool.js +3 -3
  101. package/dist/tool/dynamic-tools.js +8 -8
  102. package/dist/tool/index.js +14 -14
  103. package/dist/tool/question-tool.js +4 -4
  104. package/dist/tool/think-tool.js +4 -4
  105. package/dist/vector-store/index.js +7 -7
  106. package/dist/vector-store/ingest.js +2 -2
  107. package/dist/vector-store/retrieve.js +2 -2
  108. package/package.json +1 -1
  109. package/dist/chunk-2JZV4LUS.js.map +0 -1
  110. package/dist/chunk-54ZZJRP2.js +0 -57
  111. package/dist/chunk-54ZZJRP2.js.map +0 -1
  112. package/dist/chunk-5SJBSCG2.js.map +0 -1
  113. package/dist/chunk-HHMLE3TZ.js.map +0 -1
  114. package/dist/chunk-JMMZICU7.js.map +0 -1
  115. package/dist/chunk-LJGQ6VQB.js.map +0 -1
  116. package/dist/chunk-NNEKBZSM.js +0 -66
  117. package/dist/chunk-NNEKBZSM.js.map +0 -1
  118. package/dist/chunk-PZ7ATNR6.js.map +0 -1
  119. package/dist/chunk-RFFOL6ON.js.map +0 -1
  120. package/dist/chunk-SIXS4CCU.js.map +0 -1
  121. package/dist/chunk-V5DWNXVH.js.map +0 -1
  122. package/dist/chunk-YOLOFTAY.js.map +0 -1
  123. /package/dist/{chunk-QHGYCYV6.js.map → chunk-3FIX7GLM.js.map} +0 -0
  124. /package/dist/{chunk-Y365ABZY.js.map → chunk-4WSICA6D.js.map} +0 -0
  125. /package/dist/{chunk-647TQE3E.js.map → chunk-5BO4OTTK.js.map} +0 -0
  126. /package/dist/{chunk-ZQC6M22O.js.map → chunk-7LBUXGJI.js.map} +0 -0
  127. /package/dist/{chunk-NDAGW32C.js.map → chunk-7OHHMYRO.js.map} +0 -0
  128. /package/dist/{chunk-DXW37JLZ.js.map → chunk-AMPQJMDG.js.map} +0 -0
  129. /package/dist/{chunk-HAAGSIZH.js.map → chunk-CB2L2NIQ.js.map} +0 -0
  130. /package/dist/{chunk-3SUEXGRA.js.map → chunk-D6FK5ZQR.js.map} +0 -0
  131. /package/dist/{chunk-B57NNDEF.js.map → chunk-FTK6YRLN.js.map} +0 -0
  132. /package/dist/{chunk-T3ZOZEAB.js.map → chunk-GB4SRUT7.js.map} +0 -0
  133. /package/dist/{chunk-KX2TRKO2.js.map → chunk-GNBPXJC6.js.map} +0 -0
  134. /package/dist/{chunk-CJKGTEN4.js.map → chunk-HDL5TXF7.js.map} +0 -0
  135. /package/dist/{chunk-YMTBHHLQ.js.map → chunk-HG6ASDNI.js.map} +0 -0
  136. /package/dist/{chunk-XAVSWLX5.js.map → chunk-IMSM4HHI.js.map} +0 -0
  137. /package/dist/{chunk-TK2VXQVZ.js.map → chunk-KGVDUYZV.js.map} +0 -0
  138. /package/dist/{chunk-PPMK7CG4.js.map → chunk-LW6F3IGP.js.map} +0 -0
  139. /package/dist/{chunk-PWWKX2HA.js.map → chunk-MJAM7HZB.js.map} +0 -0
  140. /package/dist/{chunk-JMNIWUFV.js.map → chunk-NKSXYOUM.js.map} +0 -0
  141. /package/dist/{chunk-4VDDYI6P.js.map → chunk-OBTD3GPY.js.map} +0 -0
  142. /package/dist/{chunk-GDY2Z2SZ.js.map → chunk-PFJN5OIQ.js.map} +0 -0
  143. /package/dist/{chunk-UYODZ7OE.js.map → chunk-STEAW4JD.js.map} +0 -0
  144. /package/dist/{chunk-AJC6YRVB.js.map → chunk-TOJSC4GI.js.map} +0 -0
  145. /package/dist/{chunk-F4BOW76L.js.map → chunk-XQTTPQWA.js.map} +0 -0
  146. /package/dist/{chunk-7TUAAGVR.js.map → chunk-YKWUFYXT.js.map} +0 -0
  147. /package/dist/{chunk-6E6ABRJ6.js.map → chunk-ZJ4T7CEX.js.map} +0 -0
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  createSkillTools
3
- } from "../chunk-LJGQ6VQB.js";
4
- import "../chunk-2NLINXRF.js";
3
+ } from "../chunk-TD2VYYUT.js";
5
4
  import "../chunk-JMJFK3A4.js";
6
5
  import "../chunk-4AW2633B.js";
7
- import "../chunk-T3ZOZEAB.js";
8
- import "../chunk-6E6ABRJ6.js";
9
- import "../chunk-F4BOW76L.js";
10
- import "../chunk-XAVSWLX5.js";
6
+ import "../chunk-GB4SRUT7.js";
7
+ import "../chunk-2NLINXRF.js";
8
+ import "../chunk-ZJ4T7CEX.js";
9
+ import "../chunk-XQTTPQWA.js";
10
+ import "../chunk-IMSM4HHI.js";
11
11
  import "../chunk-5WLIHNNJ.js";
12
- import "../chunk-QHGYCYV6.js";
12
+ import "../chunk-3FIX7GLM.js";
13
13
  import "../chunk-ESOFEAYK.js";
14
- import "../chunk-HAAGSIZH.js";
14
+ import "../chunk-CB2L2NIQ.js";
15
15
  import "../chunk-ERN7P6Q4.js";
16
16
  import "../chunk-7F53DOML.js";
17
- import "../chunk-HHMLE3TZ.js";
17
+ import "../chunk-YCTXTOOQ.js";
18
18
  import "../chunk-DU4WA6LQ.js";
19
19
  import "../chunk-4FIVU53H.js";
20
20
  import "../chunk-KO5NMTAM.js";
21
21
  import "../chunk-TFIOU6UR.js";
22
22
  import "../chunk-GPVXCY5I.js";
23
23
  import "../chunk-5V533R7F.js";
24
- import "../chunk-Y365ABZY.js";
25
- import "../chunk-647TQE3E.js";
24
+ import "../chunk-4WSICA6D.js";
25
+ import "../chunk-5BO4OTTK.js";
26
26
  import "../chunk-YZVFIW5D.js";
27
- import "../chunk-SCFWN3T2.js";
28
27
  import "../chunk-J6S6MT7O.js";
28
+ import "../chunk-SCFWN3T2.js";
29
29
  import "../chunk-BONQTXRQ.js";
30
30
  import "../chunk-4C7AXYOM.js";
31
31
  import "../chunk-SQAAVYJG.js";
@@ -1,6 +1,7 @@
1
1
  type ReadableStreamOptions = {
2
2
  format?: "jsonl";
3
+ errorSerialization?: "anvia";
3
4
  };
4
- declare function toReadableStream<T>(events: AsyncIterable<T>, _options?: ReadableStreamOptions): ReadableStream<Uint8Array>;
5
+ declare function toReadableStream<T>(events: AsyncIterable<T>, options?: ReadableStreamOptions): ReadableStream<Uint8Array>;
5
6
 
6
7
  export { type ReadableStreamOptions, toReadableStream };
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  toReadableStream
3
- } from "../chunk-54ZZJRP2.js";
3
+ } from "../chunk-PZC5UHIN.js";
4
+ import "../chunk-XQV3XNVT.js";
4
5
  import "../chunk-4C7AXYOM.js";
5
6
  export {
6
7
  toReadableStream
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  toReadableStream
3
- } from "../chunk-54ZZJRP2.js";
3
+ } from "../chunk-PZC5UHIN.js";
4
+ import "../chunk-XQV3XNVT.js";
4
5
  import "../chunk-4C7AXYOM.js";
5
6
  export {
6
7
  toReadableStream
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createTool
3
- } from "../chunk-Y365ABZY.js";
4
- import "../chunk-647TQE3E.js";
3
+ } from "../chunk-4WSICA6D.js";
4
+ import "../chunk-5BO4OTTK.js";
5
5
  import "../chunk-YZVFIW5D.js";
6
- import "../chunk-SCFWN3T2.js";
7
6
  import "../chunk-J6S6MT7O.js";
7
+ import "../chunk-SCFWN3T2.js";
8
8
  import "../chunk-BONQTXRQ.js";
9
9
  import "../chunk-4C7AXYOM.js";
10
10
  import "../chunk-SQAAVYJG.js";
@@ -2,26 +2,26 @@ import {
2
2
  createToolIndex,
3
3
  embedTools,
4
4
  isToolIndex
5
- } from "../chunk-F4BOW76L.js";
6
- import "../chunk-XAVSWLX5.js";
5
+ } from "../chunk-XQTTPQWA.js";
6
+ import "../chunk-IMSM4HHI.js";
7
7
  import "../chunk-5WLIHNNJ.js";
8
- import "../chunk-QHGYCYV6.js";
8
+ import "../chunk-3FIX7GLM.js";
9
9
  import "../chunk-ESOFEAYK.js";
10
- import "../chunk-HAAGSIZH.js";
10
+ import "../chunk-CB2L2NIQ.js";
11
11
  import "../chunk-ERN7P6Q4.js";
12
12
  import "../chunk-7F53DOML.js";
13
- import "../chunk-HHMLE3TZ.js";
13
+ import "../chunk-YCTXTOOQ.js";
14
14
  import "../chunk-DU4WA6LQ.js";
15
15
  import "../chunk-4FIVU53H.js";
16
16
  import "../chunk-KO5NMTAM.js";
17
17
  import "../chunk-TFIOU6UR.js";
18
18
  import "../chunk-GPVXCY5I.js";
19
19
  import "../chunk-5V533R7F.js";
20
- import "../chunk-Y365ABZY.js";
21
- import "../chunk-647TQE3E.js";
20
+ import "../chunk-4WSICA6D.js";
21
+ import "../chunk-5BO4OTTK.js";
22
22
  import "../chunk-YZVFIW5D.js";
23
- import "../chunk-SCFWN3T2.js";
24
23
  import "../chunk-J6S6MT7O.js";
24
+ import "../chunk-SCFWN3T2.js";
25
25
  import "../chunk-BONQTXRQ.js";
26
26
  import "../chunk-4C7AXYOM.js";
27
27
  import "../chunk-SQAAVYJG.js";
@@ -5,23 +5,23 @@ import {
5
5
  import {
6
6
  createQuestionTool,
7
7
  isQuestionTool
8
- } from "../chunk-T3ZOZEAB.js";
8
+ } from "../chunk-GB4SRUT7.js";
9
9
  import {
10
10
  createThinkTool
11
- } from "../chunk-6E6ABRJ6.js";
11
+ } from "../chunk-ZJ4T7CEX.js";
12
12
  import {
13
13
  createToolIndex,
14
14
  embedTools,
15
15
  isToolIndex
16
- } from "../chunk-F4BOW76L.js";
17
- import "../chunk-XAVSWLX5.js";
16
+ } from "../chunk-XQTTPQWA.js";
17
+ import "../chunk-IMSM4HHI.js";
18
18
  import "../chunk-5WLIHNNJ.js";
19
- import "../chunk-QHGYCYV6.js";
19
+ import "../chunk-3FIX7GLM.js";
20
20
  import "../chunk-ESOFEAYK.js";
21
- import "../chunk-HAAGSIZH.js";
21
+ import "../chunk-CB2L2NIQ.js";
22
22
  import "../chunk-ERN7P6Q4.js";
23
23
  import "../chunk-7F53DOML.js";
24
- import "../chunk-HHMLE3TZ.js";
24
+ import "../chunk-YCTXTOOQ.js";
25
25
  import "../chunk-DU4WA6LQ.js";
26
26
  import "../chunk-4FIVU53H.js";
27
27
  import "../chunk-KO5NMTAM.js";
@@ -30,9 +30,14 @@ import "../chunk-GPVXCY5I.js";
30
30
  import "../chunk-5V533R7F.js";
31
31
  import {
32
32
  createTool
33
- } from "../chunk-Y365ABZY.js";
34
- import "../chunk-647TQE3E.js";
33
+ } from "../chunk-4WSICA6D.js";
34
+ import "../chunk-5BO4OTTK.js";
35
35
  import "../chunk-YZVFIW5D.js";
36
+ import {
37
+ ToolCallError,
38
+ ToolJsonError,
39
+ ToolNotFoundError
40
+ } from "../chunk-J6S6MT7O.js";
36
41
  import {
37
42
  ToolOutput,
38
43
  ToolResultSerializationError,
@@ -40,11 +45,6 @@ import {
40
45
  parseToolArgs,
41
46
  toolResultContentToText
42
47
  } from "../chunk-SCFWN3T2.js";
43
- import {
44
- ToolCallError,
45
- ToolJsonError,
46
- ToolNotFoundError
47
- } from "../chunk-J6S6MT7O.js";
48
48
  import "../chunk-BONQTXRQ.js";
49
49
  import "../chunk-4C7AXYOM.js";
50
50
  import "../chunk-SQAAVYJG.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createQuestionTool,
3
3
  isQuestionTool
4
- } from "../chunk-T3ZOZEAB.js";
5
- import "../chunk-Y365ABZY.js";
6
- import "../chunk-647TQE3E.js";
4
+ } from "../chunk-GB4SRUT7.js";
5
+ import "../chunk-4WSICA6D.js";
6
+ import "../chunk-5BO4OTTK.js";
7
7
  import "../chunk-YZVFIW5D.js";
8
- import "../chunk-SCFWN3T2.js";
9
8
  import "../chunk-J6S6MT7O.js";
9
+ import "../chunk-SCFWN3T2.js";
10
10
  import "../chunk-BONQTXRQ.js";
11
11
  import "../chunk-4C7AXYOM.js";
12
12
  import "../chunk-SQAAVYJG.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createThinkTool
3
- } from "../chunk-6E6ABRJ6.js";
4
- import "../chunk-Y365ABZY.js";
5
- import "../chunk-647TQE3E.js";
3
+ } from "../chunk-ZJ4T7CEX.js";
4
+ import "../chunk-4WSICA6D.js";
5
+ import "../chunk-5BO4OTTK.js";
6
6
  import "../chunk-YZVFIW5D.js";
7
- import "../chunk-SCFWN3T2.js";
8
7
  import "../chunk-J6S6MT7O.js";
8
+ import "../chunk-SCFWN3T2.js";
9
9
  import "../chunk-BONQTXRQ.js";
10
10
  import "../chunk-4C7AXYOM.js";
11
11
  import "../chunk-SQAAVYJG.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  InMemoryVectorStore,
3
3
  createVectorSearchTool
4
- } from "../chunk-XAVSWLX5.js";
4
+ } from "../chunk-IMSM4HHI.js";
5
5
  import {
6
6
  matchesVectorFilter,
7
7
  vectorFilter
@@ -9,25 +9,25 @@ import {
9
9
  import {
10
10
  ingestVectorDocuments,
11
11
  ingestVectorText
12
- } from "../chunk-QHGYCYV6.js";
12
+ } from "../chunk-3FIX7GLM.js";
13
13
  import "../chunk-ESOFEAYK.js";
14
14
  import {
15
15
  retrieveDocuments
16
- } from "../chunk-HAAGSIZH.js";
16
+ } from "../chunk-CB2L2NIQ.js";
17
17
  import "../chunk-ERN7P6Q4.js";
18
18
  import "../chunk-7F53DOML.js";
19
- import "../chunk-HHMLE3TZ.js";
19
+ import "../chunk-YCTXTOOQ.js";
20
20
  import "../chunk-DU4WA6LQ.js";
21
21
  import "../chunk-4FIVU53H.js";
22
22
  import "../chunk-KO5NMTAM.js";
23
23
  import "../chunk-TFIOU6UR.js";
24
24
  import "../chunk-GPVXCY5I.js";
25
25
  import "../chunk-5V533R7F.js";
26
- import "../chunk-Y365ABZY.js";
27
- import "../chunk-647TQE3E.js";
26
+ import "../chunk-4WSICA6D.js";
27
+ import "../chunk-5BO4OTTK.js";
28
28
  import "../chunk-YZVFIW5D.js";
29
- import "../chunk-SCFWN3T2.js";
30
29
  import "../chunk-J6S6MT7O.js";
30
+ import "../chunk-SCFWN3T2.js";
31
31
  import "../chunk-BONQTXRQ.js";
32
32
  import "../chunk-4C7AXYOM.js";
33
33
  import "../chunk-SQAAVYJG.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ingestVectorDocuments,
3
3
  ingestVectorText
4
- } from "../chunk-QHGYCYV6.js";
4
+ } from "../chunk-3FIX7GLM.js";
5
5
  import "../chunk-ERN7P6Q4.js";
6
6
  import "../chunk-7F53DOML.js";
7
- import "../chunk-HHMLE3TZ.js";
7
+ import "../chunk-YCTXTOOQ.js";
8
8
  import "../chunk-DU4WA6LQ.js";
9
9
  import "../chunk-4FIVU53H.js";
10
10
  import "../chunk-KO5NMTAM.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  retrieveDocuments
3
- } from "../chunk-HAAGSIZH.js";
3
+ } from "../chunk-CB2L2NIQ.js";
4
4
  import "../chunk-ERN7P6Q4.js";
5
5
  import "../chunk-7F53DOML.js";
6
- import "../chunk-HHMLE3TZ.js";
6
+ import "../chunk-YCTXTOOQ.js";
7
7
  import "../chunk-DU4WA6LQ.js";
8
8
  import "../chunk-4FIVU53H.js";
9
9
  import "../chunk-5V533R7F.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvia/core",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Core runtime primitives for context-aware Anvia agents.",
5
5
  "author": "anvia",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/completion/stream-accumulator.ts"],"sourcesContent":["import { isJsonValue } from \"./json\";\nimport { CompletionProviderOutputError } from \"./provider-output-error\";\nimport type {\n AssistantContentPart,\n CompletionModelStreamEvent,\n CompletionResponse,\n CompletionSource,\n CompletionStreamPart,\n JsonValue,\n ProviderToolCall,\n ReasoningDetail,\n ToolCallPart,\n} from \"./types\";\nimport { Usage } from \"./types\";\n\ntype AccumulatedStreamEvent = Exclude<\n CompletionStreamPart,\n { type: \"tool_call_delta\" } | { type: \"message_id\" }\n>;\n\ntype ReasoningState = {\n id?: string;\n text: string;\n details?: ReasoningDetail[];\n};\n\ntype PartialToolCall = {\n id: string;\n callId?: string;\n name: string;\n argumentsText: string;\n argumentsSnapshotSeen: boolean;\n signature?: string;\n fullCallSeen: boolean;\n};\n\ntype OrderedPartRef =\n | { type: \"text\"; key: string }\n | { type: \"reasoning\"; key: string }\n | { type: \"tool_call\"; key: string };\n\nexport class CompletionStreamAccumulator<RawResponse = unknown> {\n private orderedParts: OrderedPartRef[] = [];\n private textParts = new Map<string, string>();\n private reasoningByKey = new Map<string, ReasoningState>();\n private reasoningKeyById = new Map<string, string>();\n private toolCalls = new Map<string, PartialToolCall>();\n private sources = new Map<string, CompletionSource>();\n private providerToolCalls = new Map<string, ProviderToolCall>();\n private finalResponse: CompletionResponse<RawResponse> | undefined;\n private messageId: string | undefined;\n private nextTextKey = 0;\n private nextReasoningKey = 0;\n\n accept(event: CompletionModelStreamEvent<RawResponse>): AccumulatedStreamEvent | undefined {\n if (event.type === \"text_delta\") {\n if (typeof event.delta !== \"string\") {\n throw new CompletionProviderOutputError({ kind: \"invalid-stream-event\" });\n }\n this.appendText(event.delta);\n return { type: \"text_delta\", delta: event.delta };\n }\n\n if (event.type === \"reasoning_delta\") {\n if (\n typeof event.delta !== \"string\" ||\n (event.id !== undefined && !isNonblankString(event.id)) ||\n (event.signature !== undefined && !isNonblankString(event.signature)) ||\n (event.contentType !== undefined && !isReasoningContentType(event.contentType))\n ) {\n throw new CompletionProviderOutputError({ kind: \"invalid-stream-event\" });\n }\n const reasoning = this.reasoningStateForEvent(event);\n this.appendReasoning(reasoning, event);\n return reasoningDeltaEvent(event);\n }\n\n if (event.type === \"tool_call_delta\") {\n if (!isNonblankString(event.id)) {\n throw new CompletionProviderOutputError({ kind: \"invalid-tool-call\" });\n }\n const toolCall = this.toolCallStateForId(event.id);\n if (toolCall.fullCallSeen) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n if (event.callId !== undefined) {\n if (!isNonblankString(event.callId)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n if (toolCall.callId !== undefined && toolCall.callId !== event.callId) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n toolCall.callId = event.callId;\n }\n if (event.name !== undefined) {\n if (!isNonblankString(event.name)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n if (toolCall.name.length > 0 && toolCall.name !== event.name) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n toolCall.name = event.name;\n }\n if (event.signature !== undefined) {\n if (\n !isNonblankString(event.signature) ||\n (toolCall.signature !== undefined && toolCall.signature !== event.signature)\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n toolCall.signature = event.signature;\n }\n if (\n event.argumentsMode !== undefined &&\n event.argumentsMode !== \"append\" &&\n event.argumentsMode !== \"replace\"\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-stream-event\",\n toolCallId: toolCall.id,\n });\n }\n if (event.argumentsMode !== undefined && event.argumentsDelta === undefined) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-stream-event\",\n toolCallId: toolCall.id,\n });\n }\n if (event.argumentsDelta !== undefined) {\n if (typeof event.argumentsDelta !== \"string\") {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-arguments\",\n toolCallId: toolCall.id,\n });\n }\n if (event.argumentsMode === \"replace\") {\n if (\n toolCall.argumentsText.length > 0 &&\n toolCall.argumentsText !== event.argumentsDelta &&\n (toolCall.argumentsSnapshotSeen ||\n !event.argumentsDelta.startsWith(toolCall.argumentsText))\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n toolCall.argumentsText = event.argumentsDelta;\n toolCall.argumentsSnapshotSeen = true;\n } else {\n if (toolCall.argumentsSnapshotSeen) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.id,\n });\n }\n toolCall.argumentsText += event.argumentsDelta;\n }\n }\n return undefined;\n }\n\n if (event.type === \"tool_call\") {\n this.upsertToolCall(event.toolCall);\n return { type: \"tool_call\", toolCall: event.toolCall };\n }\n\n if (event.type === \"source\") {\n this.sources.set(sourceKey(event.source), event.source);\n return { type: \"source\", source: event.source };\n }\n\n if (event.type === \"provider_tool_call\") {\n this.providerToolCalls.set(event.toolCall.id, event.toolCall);\n return { type: \"provider_tool_call\", toolCall: event.toolCall };\n }\n\n if (event.type === \"message_id\") {\n if (!isNonblankString(event.id)) {\n throw new CompletionProviderOutputError({ kind: \"invalid-stream-event\" });\n }\n this.messageId = event.id;\n return undefined;\n }\n\n if (event.type === \"final\") {\n this.finalResponse = event.response;\n return undefined;\n }\n\n return undefined;\n }\n\n response(): CompletionResponse<RawResponse> {\n this.assertAccumulatedFinishReason();\n let accumulatedResponse: CompletionResponse<RawResponse>;\n try {\n accumulatedResponse = this.buildAccumulatedResponse();\n } catch (error) {\n if (error instanceof CompletionProviderOutputError && this.finalResponse !== undefined) {\n throw providerOutputErrorWithUsage(error, this.finalResponse.usage);\n }\n throw error;\n }\n if (this.finalResponse !== undefined) {\n if (accumulatedResponse.choice.length === 0) {\n return this.withAccumulatedArtifacts(this.finalResponse, accumulatedResponse);\n }\n return this.mergeFinalResponse(accumulatedResponse, this.finalResponse);\n }\n\n return accumulatedResponse;\n }\n\n private assertAccumulatedFinishReason(): void {\n if (this.finalResponse === undefined) {\n if (this.toolCalls.size === 0) {\n throw new CompletionProviderOutputError({ kind: \"incomplete-stream\" });\n }\n const toolCallId = this.toolCalls.size === 1 ? this.toolCalls.keys().next().value : undefined;\n throw new CompletionProviderOutputError({\n kind: \"incomplete-tool-call\",\n toolCallId,\n });\n }\n if (this.toolCalls.size === 0) return;\n const finishReason = this.finalResponse.finishReason;\n if (finishReason === \"length\") {\n throw new CompletionProviderOutputError({\n kind: \"truncated-tool-call\",\n finishReason,\n usage: this.finalResponse.usage,\n });\n }\n if (finishReason === \"content-filter\") {\n throw new CompletionProviderOutputError({\n kind: \"filtered-tool-call\",\n finishReason,\n usage: this.finalResponse.usage,\n });\n }\n if (finishReason !== undefined && finishReason !== \"stop\" && finishReason !== \"tool-calls\") {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n usage: this.finalResponse.usage,\n });\n }\n }\n\n private buildAccumulatedResponse(): CompletionResponse<RawResponse> {\n const choice: AssistantContentPart[] = [];\n\n for (const part of this.orderedParts) {\n if (part.type === \"text\") {\n const text = this.textParts.get(part.key) ?? \"\";\n if (text.length > 0) {\n choice.push({ type: \"text\", text });\n }\n continue;\n }\n\n if (part.type === \"reasoning\") {\n const reasoning = this.reasoningByKey.get(part.key);\n if (reasoning !== undefined) {\n choice.push(reasoningContent(reasoning));\n }\n continue;\n }\n\n const toolCall = this.toolCalls.get(part.key);\n if (toolCall !== undefined) {\n choice.push(toolCallContent(toolCall));\n }\n }\n\n const response: CompletionResponse<RawResponse> = {\n choice,\n usage: Usage.empty(),\n rawResponse: undefined as RawResponse,\n };\n if (this.messageId !== undefined) {\n response.messageId = this.messageId;\n }\n const sources = [...this.sources.values()];\n if (sources.length > 0) {\n response.sources = sources;\n }\n const providerToolCalls = [...this.providerToolCalls.values()];\n if (providerToolCalls.length > 0) {\n response.providerToolCalls = providerToolCalls;\n }\n return response;\n }\n\n private upsertToolCall(toolCall: ToolCallPart): void {\n if (\n !isNonblankString(toolCall.toolCallId) ||\n !isNonblankString(toolCall.toolName) ||\n (toolCall.callId !== undefined && !isNonblankString(toolCall.callId)) ||\n (toolCall.signature !== undefined && !isNonblankString(toolCall.signature))\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: isNonblankString(toolCall.toolCallId) ? toolCall.toolCallId : undefined,\n });\n }\n if (!isJsonValue(toolCall.input)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-arguments\",\n toolCallId: toolCall.toolCallId,\n });\n }\n const existing = this.toolCalls.get(toolCall.toolCallId);\n if (existing !== undefined) {\n if (existing.fullCallSeen) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.toolCallId,\n });\n }\n if (\n (existing.name.length > 0 && existing.name !== toolCall.toolName) ||\n (existing.callId !== undefined && existing.callId !== toolCall.callId) ||\n (existing.signature !== undefined &&\n toolCall.signature !== undefined &&\n existing.signature !== toolCall.signature)\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.toolCallId,\n });\n }\n if (existing.argumentsText.length > 0) {\n const accumulatedInput = parseToolArguments(existing.id, existing.argumentsText);\n if (!jsonValuesEqual(accumulatedInput, toolCall.input)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: toolCall.toolCallId,\n });\n }\n }\n }\n if (!this.toolCalls.has(toolCall.toolCallId)) {\n this.orderedParts.push({ type: \"tool_call\", key: toolCall.toolCallId });\n }\n const partial: PartialToolCall = {\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n argumentsText: JSON.stringify(toolCall.input),\n argumentsSnapshotSeen: true,\n fullCallSeen: true,\n };\n if (toolCall.callId !== undefined) {\n partial.callId = toolCall.callId;\n }\n const signature = toolCall.signature ?? existing?.signature;\n if (signature !== undefined) {\n partial.signature = signature;\n }\n this.toolCalls.set(toolCall.toolCallId, partial);\n }\n\n private mergeFinalResponse(\n accumulatedResponse: CompletionResponse<RawResponse>,\n finalResponse: CompletionResponse<RawResponse>,\n ): CompletionResponse<RawResponse> {\n if (finalResponse.choice.length === 0) {\n const mergedResponse: CompletionResponse<RawResponse> = {\n ...accumulatedResponse,\n usage: finalResponse.usage,\n rawResponse: finalResponse.rawResponse,\n };\n if (finalResponse.finishReason !== undefined) {\n mergedResponse.finishReason = finalResponse.finishReason;\n }\n if (finalResponse.providerFinishReason !== undefined) {\n mergedResponse.providerFinishReason = finalResponse.providerFinishReason;\n }\n if (finalResponse.messageId !== undefined) {\n mergedResponse.messageId = finalResponse.messageId;\n }\n return this.withAccumulatedArtifacts(mergedResponse, accumulatedResponse);\n }\n\n const accumulatedNonTool = accumulatedResponse.choice.filter(\n (content) => content.type !== \"tool-call\",\n );\n const finalNonTool = finalResponse.choice.filter((content) => content.type !== \"tool-call\");\n if (accumulatedNonTool.length > 0 && !nonToolPartsEqual(accumulatedNonTool, finalNonTool)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-stream-event\",\n usage: finalResponse.usage,\n });\n }\n\n const accumulatedById = new Map<string, ToolCallPart>();\n const accumulatedByCallId = new Map<string, ToolCallPart>();\n for (const content of accumulatedResponse.choice) {\n if (content.type !== \"tool-call\") continue;\n accumulatedById.set(content.toolCallId, content);\n if (content.callId !== undefined) accumulatedByCallId.set(content.callId, content);\n }\n\n const matchedAccumulatedToolCalls = new Set<ToolCallPart>();\n const choice = finalResponse.choice.map((content) => {\n if (content.type !== \"tool-call\") return content;\n const accumulated = accumulatedById.get(content.toolCallId);\n if (accumulated === undefined) {\n const changedIdentity =\n content.callId === undefined ? undefined : accumulatedByCallId.get(content.callId);\n if (changedIdentity !== undefined) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: changedIdentity.toolCallId,\n usage: finalResponse.usage,\n });\n }\n return content;\n }\n matchedAccumulatedToolCalls.add(accumulated);\n return mergeFinalToolCall(accumulated, content, finalResponse.usage);\n });\n\n for (const accumulated of accumulatedById.values()) {\n if (!matchedAccumulatedToolCalls.has(accumulated)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: accumulated.toolCallId,\n usage: finalResponse.usage,\n });\n }\n }\n\n return this.withAccumulatedArtifacts({ ...finalResponse, choice }, accumulatedResponse);\n }\n\n private appendText(delta: string): void {\n const lastPart = this.orderedParts.at(-1);\n const key = lastPart?.type === \"text\" ? lastPart.key : this.createTextKey();\n if (lastPart?.type !== \"text\") {\n this.orderedParts.push({ type: \"text\", key });\n }\n this.textParts.set(key, `${this.textParts.get(key) ?? \"\"}${delta}`);\n }\n\n private reasoningStateForEvent(\n event: Extract<CompletionModelStreamEvent<RawResponse>, { type: \"reasoning_delta\" }>,\n ): ReasoningState {\n if (event.id !== undefined) {\n const existingKey = this.reasoningKeyById.get(event.id);\n if (existingKey !== undefined) {\n const existing = this.reasoningByKey.get(existingKey);\n if (existing !== undefined) {\n return existing;\n }\n }\n\n const key = this.createReasoningKey();\n const reasoning: ReasoningState = { id: event.id, text: \"\" };\n this.reasoningKeyById.set(event.id, key);\n this.reasoningByKey.set(key, reasoning);\n this.orderedParts.push({ type: \"reasoning\", key });\n return reasoning;\n }\n\n const lastPart = this.orderedParts.at(-1);\n if (lastPart?.type === \"reasoning\") {\n const lastReasoning = this.reasoningByKey.get(lastPart.key);\n if (lastReasoning !== undefined && lastReasoning.id === undefined) {\n return lastReasoning;\n }\n }\n\n const key = this.createReasoningKey();\n const reasoning: ReasoningState = { text: \"\" };\n this.reasoningByKey.set(key, reasoning);\n this.orderedParts.push({ type: \"reasoning\", key });\n return reasoning;\n }\n\n private toolCallStateForId(id: string): PartialToolCall {\n const existing = this.toolCalls.get(id);\n if (existing !== undefined) {\n return existing;\n }\n\n const toolCall: PartialToolCall = {\n id,\n name: \"\",\n argumentsText: \"\",\n argumentsSnapshotSeen: false,\n fullCallSeen: false,\n };\n this.toolCalls.set(id, toolCall);\n this.orderedParts.push({ type: \"tool_call\", key: id });\n return toolCall;\n }\n\n private withMessageIdFallback(\n response: CompletionResponse<RawResponse>,\n accumulatedResponse: CompletionResponse<RawResponse>,\n ): CompletionResponse<RawResponse> {\n if (response.messageId !== undefined || accumulatedResponse.messageId === undefined) {\n return response;\n }\n return { ...response, messageId: accumulatedResponse.messageId };\n }\n\n private withAccumulatedArtifacts(\n response: CompletionResponse<RawResponse>,\n accumulatedResponse: CompletionResponse<RawResponse>,\n ): CompletionResponse<RawResponse> {\n const withMessageId = this.withMessageIdFallback(response, accumulatedResponse);\n const sources = mergeSources(accumulatedResponse.sources, response.sources);\n const providerToolCalls = mergeProviderToolCalls(\n accumulatedResponse.providerToolCalls,\n response.providerToolCalls,\n );\n let accumulated: CompletionResponse<RawResponse> = { ...withMessageId };\n if (sources.length > 0) accumulated = { ...accumulated, sources };\n if (providerToolCalls.length > 0) {\n accumulated = { ...accumulated, providerToolCalls };\n }\n return accumulated;\n }\n\n private createTextKey(): string {\n this.nextTextKey += 1;\n return `text_${this.nextTextKey.toString()}`;\n }\n\n private createReasoningKey(): string {\n this.nextReasoningKey += 1;\n return `reasoning_${this.nextReasoningKey.toString()}`;\n }\n\n private appendReasoning(\n reasoning: ReasoningState,\n event: Extract<CompletionModelStreamEvent<RawResponse>, { type: \"reasoning_delta\" }>,\n ): void {\n const contentType = event.contentType ?? \"text\";\n if (contentType === \"text\" || contentType === \"summary\") {\n reasoning.text += event.delta;\n }\n\n if (event.contentType === undefined && event.signature === undefined) {\n return;\n }\n\n reasoning.details ??= [];\n const last = reasoning.details.at(-1);\n if (contentType === \"text\") {\n if (last?.type === \"text\") {\n let detail: ReasoningDetail = {\n ...last,\n text: `${last.text}${event.delta}`,\n };\n if (event.signature !== undefined) detail = { ...detail, signature: event.signature };\n reasoning.details[reasoning.details.length - 1] = detail;\n } else {\n reasoning.details.push(\n event.signature === undefined\n ? { type: \"text\", text: event.delta }\n : { type: \"text\", text: event.delta, signature: event.signature },\n );\n }\n return;\n }\n\n if (contentType === \"summary\") {\n if (last?.type === \"summary\") {\n reasoning.details[reasoning.details.length - 1] = {\n ...last,\n text: `${last.text}${event.delta}`,\n };\n } else {\n reasoning.details.push({ type: \"summary\", text: event.delta });\n }\n return;\n }\n\n if (contentType === \"encrypted\") {\n reasoning.details.push({ type: \"encrypted\", data: event.delta });\n return;\n }\n\n reasoning.details.push({ type: \"redacted\", data: event.delta });\n }\n}\n\nfunction sourceKey(source: CompletionSource): string {\n return `${source.url}\\u0000${source.startIndex ?? \"\"}\\u0000${source.endIndex ?? \"\"}`;\n}\n\nfunction mergeSources(\n accumulated: CompletionSource[] | undefined,\n final: CompletionSource[] | undefined,\n): CompletionSource[] {\n const sources = new Map<string, CompletionSource>();\n for (const source of [...(accumulated ?? []), ...(final ?? [])]) {\n sources.set(sourceKey(source), source);\n }\n return [...sources.values()];\n}\n\nfunction mergeProviderToolCalls(\n accumulated: ProviderToolCall[] | undefined,\n final: ProviderToolCall[] | undefined,\n): ProviderToolCall[] {\n const toolCalls = new Map<string, ProviderToolCall>();\n for (const toolCall of [...(accumulated ?? []), ...(final ?? [])]) {\n toolCalls.set(toolCall.id, toolCall);\n }\n return [...toolCalls.values()];\n}\n\nfunction reasoningContent(reasoning: ReasoningState): AssistantContentPart {\n const content =\n reasoning.details === undefined\n ? { type: \"reasoning\" as const, text: reasoning.text }\n : { type: \"reasoning\" as const, text: reasoning.text, details: reasoning.details };\n return reasoning.id === undefined ? content : { ...content, id: reasoning.id };\n}\n\nfunction toolCallContent(toolCall: PartialToolCall): ToolCallPart {\n const argumentsValue = parseToolArguments(toolCall.id, toolCall.argumentsText);\n let content: ToolCallPart = {\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n input: argumentsValue,\n };\n if (toolCall.callId !== undefined) content = { ...content, callId: toolCall.callId };\n if (toolCall.signature !== undefined) content = { ...content, signature: toolCall.signature };\n return content;\n}\n\nfunction mergeFinalToolCall(\n accumulated: ToolCallPart,\n finalToolCall: ToolCallPart,\n usage: CompletionResponse[\"usage\"],\n): ToolCallPart {\n if (\n finalToolCall.toolCallId !== accumulated.toolCallId ||\n finalToolCall.toolName !== accumulated.toolName ||\n (accumulated.callId !== undefined && finalToolCall.callId !== accumulated.callId) ||\n (accumulated.signature !== undefined &&\n finalToolCall.signature !== undefined &&\n finalToolCall.signature !== accumulated.signature)\n ) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: accumulated.toolCallId,\n usage,\n });\n }\n if (!isJsonValue(finalToolCall.input)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-arguments\",\n toolCallId: accumulated.toolCallId,\n usage,\n });\n }\n if (!jsonValuesEqual(accumulated.input, finalToolCall.input)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-call\",\n toolCallId: accumulated.toolCallId,\n usage,\n });\n }\n let merged: ToolCallPart = {\n type: \"tool-call\",\n toolCallId: finalToolCall.toolCallId,\n toolName: finalToolCall.toolName,\n input: accumulated.input,\n };\n const callId = finalToolCall.callId ?? accumulated.callId;\n if (callId !== undefined) merged = { ...merged, callId };\n const signature = finalToolCall.signature ?? accumulated.signature;\n if (signature !== undefined) merged = { ...merged, signature };\n return merged;\n}\n\nfunction reasoningDeltaEvent(\n event: Extract<CompletionModelStreamEvent, { type: \"reasoning_delta\" }>,\n): AccumulatedStreamEvent {\n const mapped: AccumulatedStreamEvent = { type: \"reasoning_delta\", delta: event.delta };\n if (event.id !== undefined) mapped.id = event.id;\n if (event.contentType !== undefined) mapped.contentType = event.contentType;\n if (event.signature !== undefined) mapped.signature = event.signature;\n return mapped;\n}\n\nfunction parseToolArguments(toolCallId: string, text: string): JsonValue {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n throw new CompletionProviderOutputError({\n kind: \"malformed-tool-arguments\",\n toolCallId,\n });\n }\n if (!isJsonValue(value)) {\n throw new CompletionProviderOutputError({\n kind: \"invalid-tool-arguments\",\n toolCallId,\n });\n }\n return value;\n}\n\nfunction jsonValuesEqual(left: JsonValue, right: JsonValue): boolean {\n if (left === right) {\n return true;\n }\n if (left === null || right === null || typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n if (isJsonArray(left) || isJsonArray(right)) {\n if (!isJsonArray(left) || !isJsonArray(right) || left.length !== right.length) {\n return false;\n }\n return left.every((value, index) => {\n const rightValue = right[index];\n return rightValue !== undefined && jsonValuesEqual(value, rightValue);\n });\n }\n\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n for (const key of leftKeys) {\n if (!Object.hasOwn(right, key)) {\n return false;\n }\n const leftValue = left[key];\n const rightValue = right[key];\n if (\n leftValue === undefined ||\n rightValue === undefined ||\n !jsonValuesEqual(leftValue, rightValue)\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction nonToolPartsEqual(\n accumulated: readonly AssistantContentPart[],\n final: readonly AssistantContentPart[],\n): boolean {\n if (accumulated.length !== final.length) return false;\n if (!isJsonValue(accumulated) || !isJsonValue(final)) return false;\n const unmatched = [...final];\n for (const part of accumulated) {\n const index = unmatched.findIndex((candidate) => jsonValuesEqual(part, candidate));\n if (index < 0) return false;\n unmatched.splice(index, 1);\n }\n return true;\n}\n\nfunction isJsonArray(value: JsonValue): value is readonly JsonValue[] {\n return Array.isArray(value);\n}\n\nfunction providerOutputErrorWithUsage(\n error: CompletionProviderOutputError,\n usage: CompletionResponse[\"usage\"],\n): CompletionProviderOutputError {\n const shared: { toolCallId?: string; usage: CompletionResponse[\"usage\"] } = { usage };\n if (error.toolCallId !== undefined) shared.toolCallId = error.toolCallId;\n if (error.kind === \"truncated-tool-call\") {\n return new CompletionProviderOutputError({\n ...shared,\n kind: error.kind,\n finishReason: \"length\",\n });\n }\n if (error.kind === \"filtered-tool-call\") {\n return new CompletionProviderOutputError({\n ...shared,\n kind: error.kind,\n finishReason: \"content-filter\",\n });\n }\n if (error.finishReason === \"length\" || error.finishReason === \"content-filter\") {\n throw error;\n }\n return new CompletionProviderOutputError({\n ...shared,\n kind: error.kind,\n finishReason: error.finishReason,\n });\n}\n\nfunction isNonblankString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction isReasoningContentType(value: unknown): boolean {\n return value === \"text\" || value === \"summary\" || value === \"encrypted\" || value === \"redacted\";\n}\n"],"mappings":";;;;;;;;;;;AAyCO,IAAM,8BAAN,MAAyD;AAAA,EACtD,eAAiC,CAAC;AAAA,EAClC,YAAY,oBAAI,IAAoB;AAAA,EACpC,iBAAiB,oBAAI,IAA4B;AAAA,EACjD,mBAAmB,oBAAI,IAAoB;AAAA,EAC3C,YAAY,oBAAI,IAA6B;AAAA,EAC7C,UAAU,oBAAI,IAA8B;AAAA,EAC5C,oBAAoB,oBAAI,IAA8B;AAAA,EACtD;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AAAA,EAE3B,OAAO,OAAoF;AACzF,QAAI,MAAM,SAAS,cAAc;AAC/B,UAAI,OAAO,MAAM,UAAU,UAAU;AACnC,cAAM,IAAI,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAAA,MAC1E;AACA,WAAK,WAAW,MAAM,KAAK;AAC3B,aAAO,EAAE,MAAM,cAAc,OAAO,MAAM,MAAM;AAAA,IAClD;AAEA,QAAI,MAAM,SAAS,mBAAmB;AACpC,UACE,OAAO,MAAM,UAAU,YACtB,MAAM,OAAO,UAAa,CAAC,iBAAiB,MAAM,EAAE,KACpD,MAAM,cAAc,UAAa,CAAC,iBAAiB,MAAM,SAAS,KAClE,MAAM,gBAAgB,UAAa,CAAC,uBAAuB,MAAM,WAAW,GAC7E;AACA,cAAM,IAAI,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAAA,MAC1E;AACA,YAAM,YAAY,KAAK,uBAAuB,KAAK;AACnD,WAAK,gBAAgB,WAAW,KAAK;AACrC,aAAO,oBAAoB,KAAK;AAAA,IAClC;AAEA,QAAI,MAAM,SAAS,mBAAmB;AACpC,UAAI,CAAC,iBAAiB,MAAM,EAAE,GAAG;AAC/B,cAAM,IAAI,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAAA,MACvE;AACA,YAAM,WAAW,KAAK,mBAAmB,MAAM,EAAE;AACjD,UAAI,SAAS,cAAc;AACzB,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AACA,UAAI,MAAM,WAAW,QAAW;AAC9B,YAAI,CAAC,iBAAiB,MAAM,MAAM,GAAG;AACnC,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,YAAI,SAAS,WAAW,UAAa,SAAS,WAAW,MAAM,QAAQ;AACrE,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,iBAAS,SAAS,MAAM;AAAA,MAC1B;AACA,UAAI,MAAM,SAAS,QAAW;AAC5B,YAAI,CAAC,iBAAiB,MAAM,IAAI,GAAG;AACjC,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,YAAI,SAAS,KAAK,SAAS,KAAK,SAAS,SAAS,MAAM,MAAM;AAC5D,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,iBAAS,OAAO,MAAM;AAAA,MACxB;AACA,UAAI,MAAM,cAAc,QAAW;AACjC,YACE,CAAC,iBAAiB,MAAM,SAAS,KAChC,SAAS,cAAc,UAAa,SAAS,cAAc,MAAM,WAClE;AACA,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,iBAAS,YAAY,MAAM;AAAA,MAC7B;AACA,UACE,MAAM,kBAAkB,UACxB,MAAM,kBAAkB,YACxB,MAAM,kBAAkB,WACxB;AACA,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AACA,UAAI,MAAM,kBAAkB,UAAa,MAAM,mBAAmB,QAAW;AAC3E,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AACA,UAAI,MAAM,mBAAmB,QAAW;AACtC,YAAI,OAAO,MAAM,mBAAmB,UAAU;AAC5C,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AACA,YAAI,MAAM,kBAAkB,WAAW;AACrC,cACE,SAAS,cAAc,SAAS,KAChC,SAAS,kBAAkB,MAAM,mBAChC,SAAS,yBACR,CAAC,MAAM,eAAe,WAAW,SAAS,aAAa,IACzD;AACA,kBAAM,IAAI,8BAA8B;AAAA,cACtC,MAAM;AAAA,cACN,YAAY,SAAS;AAAA,YACvB,CAAC;AAAA,UACH;AACA,mBAAS,gBAAgB,MAAM;AAC/B,mBAAS,wBAAwB;AAAA,QACnC,OAAO;AACL,cAAI,SAAS,uBAAuB;AAClC,kBAAM,IAAI,8BAA8B;AAAA,cACtC,MAAM;AAAA,cACN,YAAY,SAAS;AAAA,YACvB,CAAC;AAAA,UACH;AACA,mBAAS,iBAAiB,MAAM;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,SAAS,aAAa;AAC9B,WAAK,eAAe,MAAM,QAAQ;AAClC,aAAO,EAAE,MAAM,aAAa,UAAU,MAAM,SAAS;AAAA,IACvD;AAEA,QAAI,MAAM,SAAS,UAAU;AAC3B,WAAK,QAAQ,IAAI,UAAU,MAAM,MAAM,GAAG,MAAM,MAAM;AACtD,aAAO,EAAE,MAAM,UAAU,QAAQ,MAAM,OAAO;AAAA,IAChD;AAEA,QAAI,MAAM,SAAS,sBAAsB;AACvC,WAAK,kBAAkB,IAAI,MAAM,SAAS,IAAI,MAAM,QAAQ;AAC5D,aAAO,EAAE,MAAM,sBAAsB,UAAU,MAAM,SAAS;AAAA,IAChE;AAEA,QAAI,MAAM,SAAS,cAAc;AAC/B,UAAI,CAAC,iBAAiB,MAAM,EAAE,GAAG;AAC/B,cAAM,IAAI,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAAA,MAC1E;AACA,WAAK,YAAY,MAAM;AACvB,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,SAAS,SAAS;AAC1B,WAAK,gBAAgB,MAAM;AAC3B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,WAA4C;AAC1C,SAAK,8BAA8B;AACnC,QAAI;AACJ,QAAI;AACF,4BAAsB,KAAK,yBAAyB;AAAA,IACtD,SAAS,OAAO;AACd,UAAI,iBAAiB,iCAAiC,KAAK,kBAAkB,QAAW;AACtF,cAAM,6BAA6B,OAAO,KAAK,cAAc,KAAK;AAAA,MACpE;AACA,YAAM;AAAA,IACR;AACA,QAAI,KAAK,kBAAkB,QAAW;AACpC,UAAI,oBAAoB,OAAO,WAAW,GAAG;AAC3C,eAAO,KAAK,yBAAyB,KAAK,eAAe,mBAAmB;AAAA,MAC9E;AACA,aAAO,KAAK,mBAAmB,qBAAqB,KAAK,aAAa;AAAA,IACxE;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,gCAAsC;AAC5C,QAAI,KAAK,kBAAkB,QAAW;AACpC,UAAI,KAAK,UAAU,SAAS,GAAG;AAC7B,cAAM,IAAI,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAAA,MACvE;AACA,YAAM,aAAa,KAAK,UAAU,SAAS,IAAI,KAAK,UAAU,KAAK,EAAE,KAAK,EAAE,QAAQ;AACpF,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,KAAK,UAAU,SAAS,EAAG;AAC/B,UAAM,eAAe,KAAK,cAAc;AACxC,QAAI,iBAAiB,UAAU;AAC7B,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN;AAAA,QACA,OAAO,KAAK,cAAc;AAAA,MAC5B,CAAC;AAAA,IACH;AACA,QAAI,iBAAiB,kBAAkB;AACrC,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN;AAAA,QACA,OAAO,KAAK,cAAc;AAAA,MAC5B,CAAC;AAAA,IACH;AACA,QAAI,iBAAiB,UAAa,iBAAiB,UAAU,iBAAiB,cAAc;AAC1F,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN,OAAO,KAAK,cAAc;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,2BAA4D;AAClE,UAAM,SAAiC,CAAC;AAExC,eAAW,QAAQ,KAAK,cAAc;AACpC,UAAI,KAAK,SAAS,QAAQ;AACxB,cAAM,OAAO,KAAK,UAAU,IAAI,KAAK,GAAG,KAAK;AAC7C,YAAI,KAAK,SAAS,GAAG;AACnB,iBAAO,KAAK,EAAE,MAAM,QAAQ,KAAK,CAAC;AAAA,QACpC;AACA;AAAA,MACF;AAEA,UAAI,KAAK,SAAS,aAAa;AAC7B,cAAM,YAAY,KAAK,eAAe,IAAI,KAAK,GAAG;AAClD,YAAI,cAAc,QAAW;AAC3B,iBAAO,KAAK,iBAAiB,SAAS,CAAC;AAAA,QACzC;AACA;AAAA,MACF;AAEA,YAAM,WAAW,KAAK,UAAU,IAAI,KAAK,GAAG;AAC5C,UAAI,aAAa,QAAW;AAC1B,eAAO,KAAK,gBAAgB,QAAQ,CAAC;AAAA,MACvC;AAAA,IACF;AAEA,UAAM,WAA4C;AAAA,MAChD;AAAA,MACA,OAAO,MAAM,MAAM;AAAA,MACnB,aAAa;AAAA,IACf;AACA,QAAI,KAAK,cAAc,QAAW;AAChC,eAAS,YAAY,KAAK;AAAA,IAC5B;AACA,UAAM,UAAU,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC;AACzC,QAAI,QAAQ,SAAS,GAAG;AACtB,eAAS,UAAU;AAAA,IACrB;AACA,UAAM,oBAAoB,CAAC,GAAG,KAAK,kBAAkB,OAAO,CAAC;AAC7D,QAAI,kBAAkB,SAAS,GAAG;AAChC,eAAS,oBAAoB;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,eAAe,UAA8B;AACnD,QACE,CAAC,iBAAiB,SAAS,UAAU,KACrC,CAAC,iBAAiB,SAAS,QAAQ,KAClC,SAAS,WAAW,UAAa,CAAC,iBAAiB,SAAS,MAAM,KAClE,SAAS,cAAc,UAAa,CAAC,iBAAiB,SAAS,SAAS,GACzE;AACA,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN,YAAY,iBAAiB,SAAS,UAAU,IAAI,SAAS,aAAa;AAAA,MAC5E,CAAC;AAAA,IACH;AACA,QAAI,CAAC,YAAY,SAAS,KAAK,GAAG;AAChC,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN,YAAY,SAAS;AAAA,MACvB,CAAC;AAAA,IACH;AACA,UAAM,WAAW,KAAK,UAAU,IAAI,SAAS,UAAU;AACvD,QAAI,aAAa,QAAW;AAC1B,UAAI,SAAS,cAAc;AACzB,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AACA,UACG,SAAS,KAAK,SAAS,KAAK,SAAS,SAAS,SAAS,YACvD,SAAS,WAAW,UAAa,SAAS,WAAW,SAAS,UAC9D,SAAS,cAAc,UACtB,SAAS,cAAc,UACvB,SAAS,cAAc,SAAS,WAClC;AACA,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AACA,UAAI,SAAS,cAAc,SAAS,GAAG;AACrC,cAAM,mBAAmB,mBAAmB,SAAS,IAAI,SAAS,aAAa;AAC/E,YAAI,CAAC,gBAAgB,kBAAkB,SAAS,KAAK,GAAG;AACtD,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,SAAS;AAAA,UACvB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,KAAK,UAAU,IAAI,SAAS,UAAU,GAAG;AAC5C,WAAK,aAAa,KAAK,EAAE,MAAM,aAAa,KAAK,SAAS,WAAW,CAAC;AAAA,IACxE;AACA,UAAM,UAA2B;AAAA,MAC/B,IAAI,SAAS;AAAA,MACb,MAAM,SAAS;AAAA,MACf,eAAe,KAAK,UAAU,SAAS,KAAK;AAAA,MAC5C,uBAAuB;AAAA,MACvB,cAAc;AAAA,IAChB;AACA,QAAI,SAAS,WAAW,QAAW;AACjC,cAAQ,SAAS,SAAS;AAAA,IAC5B;AACA,UAAM,YAAY,SAAS,aAAa,UAAU;AAClD,QAAI,cAAc,QAAW;AAC3B,cAAQ,YAAY;AAAA,IACtB;AACA,SAAK,UAAU,IAAI,SAAS,YAAY,OAAO;AAAA,EACjD;AAAA,EAEQ,mBACN,qBACA,eACiC;AACjC,QAAI,cAAc,OAAO,WAAW,GAAG;AACrC,YAAM,iBAAkD;AAAA,QACtD,GAAG;AAAA,QACH,OAAO,cAAc;AAAA,QACrB,aAAa,cAAc;AAAA,MAC7B;AACA,UAAI,cAAc,iBAAiB,QAAW;AAC5C,uBAAe,eAAe,cAAc;AAAA,MAC9C;AACA,UAAI,cAAc,yBAAyB,QAAW;AACpD,uBAAe,uBAAuB,cAAc;AAAA,MACtD;AACA,UAAI,cAAc,cAAc,QAAW;AACzC,uBAAe,YAAY,cAAc;AAAA,MAC3C;AACA,aAAO,KAAK,yBAAyB,gBAAgB,mBAAmB;AAAA,IAC1E;AAEA,UAAM,qBAAqB,oBAAoB,OAAO;AAAA,MACpD,CAAC,YAAY,QAAQ,SAAS;AAAA,IAChC;AACA,UAAM,eAAe,cAAc,OAAO,OAAO,CAAC,YAAY,QAAQ,SAAS,WAAW;AAC1F,QAAI,mBAAmB,SAAS,KAAK,CAAC,kBAAkB,oBAAoB,YAAY,GAAG;AACzF,YAAM,IAAI,8BAA8B;AAAA,QACtC,MAAM;AAAA,QACN,OAAO,cAAc;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,UAAM,kBAAkB,oBAAI,IAA0B;AACtD,UAAM,sBAAsB,oBAAI,IAA0B;AAC1D,eAAW,WAAW,oBAAoB,QAAQ;AAChD,UAAI,QAAQ,SAAS,YAAa;AAClC,sBAAgB,IAAI,QAAQ,YAAY,OAAO;AAC/C,UAAI,QAAQ,WAAW,OAAW,qBAAoB,IAAI,QAAQ,QAAQ,OAAO;AAAA,IACnF;AAEA,UAAM,8BAA8B,oBAAI,IAAkB;AAC1D,UAAM,SAAS,cAAc,OAAO,IAAI,CAAC,YAAY;AACnD,UAAI,QAAQ,SAAS,YAAa,QAAO;AACzC,YAAM,cAAc,gBAAgB,IAAI,QAAQ,UAAU;AAC1D,UAAI,gBAAgB,QAAW;AAC7B,cAAM,kBACJ,QAAQ,WAAW,SAAY,SAAY,oBAAoB,IAAI,QAAQ,MAAM;AACnF,YAAI,oBAAoB,QAAW;AACjC,gBAAM,IAAI,8BAA8B;AAAA,YACtC,MAAM;AAAA,YACN,YAAY,gBAAgB;AAAA,YAC5B,OAAO,cAAc;AAAA,UACvB,CAAC;AAAA,QACH;AACA,eAAO;AAAA,MACT;AACA,kCAA4B,IAAI,WAAW;AAC3C,aAAO,mBAAmB,aAAa,SAAS,cAAc,KAAK;AAAA,IACrE,CAAC;AAED,eAAW,eAAe,gBAAgB,OAAO,GAAG;AAClD,UAAI,CAAC,4BAA4B,IAAI,WAAW,GAAG;AACjD,cAAM,IAAI,8BAA8B;AAAA,UACtC,MAAM;AAAA,UACN,YAAY,YAAY;AAAA,UACxB,OAAO,cAAc;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO,KAAK,yBAAyB,EAAE,GAAG,eAAe,OAAO,GAAG,mBAAmB;AAAA,EACxF;AAAA,EAEQ,WAAW,OAAqB;AACtC,UAAM,WAAW,KAAK,aAAa,GAAG,EAAE;AACxC,UAAM,MAAM,UAAU,SAAS,SAAS,SAAS,MAAM,KAAK,cAAc;AAC1E,QAAI,UAAU,SAAS,QAAQ;AAC7B,WAAK,aAAa,KAAK,EAAE,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC9C;AACA,SAAK,UAAU,IAAI,KAAK,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE;AAAA,EACpE;AAAA,EAEQ,uBACN,OACgB;AAChB,QAAI,MAAM,OAAO,QAAW;AAC1B,YAAM,cAAc,KAAK,iBAAiB,IAAI,MAAM,EAAE;AACtD,UAAI,gBAAgB,QAAW;AAC7B,cAAM,WAAW,KAAK,eAAe,IAAI,WAAW;AACpD,YAAI,aAAa,QAAW;AAC1B,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,YAAMA,OAAM,KAAK,mBAAmB;AACpC,YAAMC,aAA4B,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG;AAC3D,WAAK,iBAAiB,IAAI,MAAM,IAAID,IAAG;AACvC,WAAK,eAAe,IAAIA,MAAKC,UAAS;AACtC,WAAK,aAAa,KAAK,EAAE,MAAM,aAAa,KAAAD,KAAI,CAAC;AACjD,aAAOC;AAAA,IACT;AAEA,UAAM,WAAW,KAAK,aAAa,GAAG,EAAE;AACxC,QAAI,UAAU,SAAS,aAAa;AAClC,YAAM,gBAAgB,KAAK,eAAe,IAAI,SAAS,GAAG;AAC1D,UAAI,kBAAkB,UAAa,cAAc,OAAO,QAAW;AACjE,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,MAAM,KAAK,mBAAmB;AACpC,UAAM,YAA4B,EAAE,MAAM,GAAG;AAC7C,SAAK,eAAe,IAAI,KAAK,SAAS;AACtC,SAAK,aAAa,KAAK,EAAE,MAAM,aAAa,IAAI,CAAC;AACjD,WAAO;AAAA,EACT;AAAA,EAEQ,mBAAmB,IAA6B;AACtD,UAAM,WAAW,KAAK,UAAU,IAAI,EAAE;AACtC,QAAI,aAAa,QAAW;AAC1B,aAAO;AAAA,IACT;AAEA,UAAM,WAA4B;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,MACN,eAAe;AAAA,MACf,uBAAuB;AAAA,MACvB,cAAc;AAAA,IAChB;AACA,SAAK,UAAU,IAAI,IAAI,QAAQ;AAC/B,SAAK,aAAa,KAAK,EAAE,MAAM,aAAa,KAAK,GAAG,CAAC;AACrD,WAAO;AAAA,EACT;AAAA,EAEQ,sBACN,UACA,qBACiC;AACjC,QAAI,SAAS,cAAc,UAAa,oBAAoB,cAAc,QAAW;AACnF,aAAO;AAAA,IACT;AACA,WAAO,EAAE,GAAG,UAAU,WAAW,oBAAoB,UAAU;AAAA,EACjE;AAAA,EAEQ,yBACN,UACA,qBACiC;AACjC,UAAM,gBAAgB,KAAK,sBAAsB,UAAU,mBAAmB;AAC9E,UAAM,UAAU,aAAa,oBAAoB,SAAS,SAAS,OAAO;AAC1E,UAAM,oBAAoB;AAAA,MACxB,oBAAoB;AAAA,MACpB,SAAS;AAAA,IACX;AACA,QAAI,cAA+C,EAAE,GAAG,cAAc;AACtE,QAAI,QAAQ,SAAS,EAAG,eAAc,EAAE,GAAG,aAAa,QAAQ;AAChE,QAAI,kBAAkB,SAAS,GAAG;AAChC,oBAAc,EAAE,GAAG,aAAa,kBAAkB;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAwB;AAC9B,SAAK,eAAe;AACpB,WAAO,QAAQ,KAAK,YAAY,SAAS,CAAC;AAAA,EAC5C;AAAA,EAEQ,qBAA6B;AACnC,SAAK,oBAAoB;AACzB,WAAO,aAAa,KAAK,iBAAiB,SAAS,CAAC;AAAA,EACtD;AAAA,EAEQ,gBACN,WACA,OACM;AACN,UAAM,cAAc,MAAM,eAAe;AACzC,QAAI,gBAAgB,UAAU,gBAAgB,WAAW;AACvD,gBAAU,QAAQ,MAAM;AAAA,IAC1B;AAEA,QAAI,MAAM,gBAAgB,UAAa,MAAM,cAAc,QAAW;AACpE;AAAA,IACF;AAEA,cAAU,YAAY,CAAC;AACvB,UAAM,OAAO,UAAU,QAAQ,GAAG,EAAE;AACpC,QAAI,gBAAgB,QAAQ;AAC1B,UAAI,MAAM,SAAS,QAAQ;AACzB,YAAI,SAA0B;AAAA,UAC5B,GAAG;AAAA,UACH,MAAM,GAAG,KAAK,IAAI,GAAG,MAAM,KAAK;AAAA,QAClC;AACA,YAAI,MAAM,cAAc,OAAW,UAAS,EAAE,GAAG,QAAQ,WAAW,MAAM,UAAU;AACpF,kBAAU,QAAQ,UAAU,QAAQ,SAAS,CAAC,IAAI;AAAA,MACpD,OAAO;AACL,kBAAU,QAAQ;AAAA,UAChB,MAAM,cAAc,SAChB,EAAE,MAAM,QAAQ,MAAM,MAAM,MAAM,IAClC,EAAE,MAAM,QAAQ,MAAM,MAAM,OAAO,WAAW,MAAM,UAAU;AAAA,QACpE;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,gBAAgB,WAAW;AAC7B,UAAI,MAAM,SAAS,WAAW;AAC5B,kBAAU,QAAQ,UAAU,QAAQ,SAAS,CAAC,IAAI;AAAA,UAChD,GAAG;AAAA,UACH,MAAM,GAAG,KAAK,IAAI,GAAG,MAAM,KAAK;AAAA,QAClC;AAAA,MACF,OAAO;AACL,kBAAU,QAAQ,KAAK,EAAE,MAAM,WAAW,MAAM,MAAM,MAAM,CAAC;AAAA,MAC/D;AACA;AAAA,IACF;AAEA,QAAI,gBAAgB,aAAa;AAC/B,gBAAU,QAAQ,KAAK,EAAE,MAAM,aAAa,MAAM,MAAM,MAAM,CAAC;AAC/D;AAAA,IACF;AAEA,cAAU,QAAQ,KAAK,EAAE,MAAM,YAAY,MAAM,MAAM,MAAM,CAAC;AAAA,EAChE;AACF;AAEA,SAAS,UAAU,QAAkC;AACnD,SAAO,GAAG,OAAO,GAAG,KAAS,OAAO,cAAc,EAAE,KAAS,OAAO,YAAY,EAAE;AACpF;AAEA,SAAS,aACP,aACA,OACoB;AACpB,QAAM,UAAU,oBAAI,IAA8B;AAClD,aAAW,UAAU,CAAC,GAAI,eAAe,CAAC,GAAI,GAAI,SAAS,CAAC,CAAE,GAAG;AAC/D,YAAQ,IAAI,UAAU,MAAM,GAAG,MAAM;AAAA,EACvC;AACA,SAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AAC7B;AAEA,SAAS,uBACP,aACA,OACoB;AACpB,QAAM,YAAY,oBAAI,IAA8B;AACpD,aAAW,YAAY,CAAC,GAAI,eAAe,CAAC,GAAI,GAAI,SAAS,CAAC,CAAE,GAAG;AACjE,cAAU,IAAI,SAAS,IAAI,QAAQ;AAAA,EACrC;AACA,SAAO,CAAC,GAAG,UAAU,OAAO,CAAC;AAC/B;AAEA,SAAS,iBAAiB,WAAiD;AACzE,QAAM,UACJ,UAAU,YAAY,SAClB,EAAE,MAAM,aAAsB,MAAM,UAAU,KAAK,IACnD,EAAE,MAAM,aAAsB,MAAM,UAAU,MAAM,SAAS,UAAU,QAAQ;AACrF,SAAO,UAAU,OAAO,SAAY,UAAU,EAAE,GAAG,SAAS,IAAI,UAAU,GAAG;AAC/E;AAEA,SAAS,gBAAgB,UAAyC;AAChE,QAAM,iBAAiB,mBAAmB,SAAS,IAAI,SAAS,aAAa;AAC7E,MAAI,UAAwB;AAAA,IAC1B,MAAM;AAAA,IACN,YAAY,SAAS;AAAA,IACrB,UAAU,SAAS;AAAA,IACnB,OAAO;AAAA,EACT;AACA,MAAI,SAAS,WAAW,OAAW,WAAU,EAAE,GAAG,SAAS,QAAQ,SAAS,OAAO;AACnF,MAAI,SAAS,cAAc,OAAW,WAAU,EAAE,GAAG,SAAS,WAAW,SAAS,UAAU;AAC5F,SAAO;AACT;AAEA,SAAS,mBACP,aACA,eACA,OACc;AACd,MACE,cAAc,eAAe,YAAY,cACzC,cAAc,aAAa,YAAY,YACtC,YAAY,WAAW,UAAa,cAAc,WAAW,YAAY,UACzE,YAAY,cAAc,UACzB,cAAc,cAAc,UAC5B,cAAc,cAAc,YAAY,WAC1C;AACA,UAAM,IAAI,8BAA8B;AAAA,MACtC,MAAM;AAAA,MACN,YAAY,YAAY;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,YAAY,cAAc,KAAK,GAAG;AACrC,UAAM,IAAI,8BAA8B;AAAA,MACtC,MAAM;AAAA,MACN,YAAY,YAAY;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,gBAAgB,YAAY,OAAO,cAAc,KAAK,GAAG;AAC5D,UAAM,IAAI,8BAA8B;AAAA,MACtC,MAAM;AAAA,MACN,YAAY,YAAY;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,SAAuB;AAAA,IACzB,MAAM;AAAA,IACN,YAAY,cAAc;AAAA,IAC1B,UAAU,cAAc;AAAA,IACxB,OAAO,YAAY;AAAA,EACrB;AACA,QAAM,SAAS,cAAc,UAAU,YAAY;AACnD,MAAI,WAAW,OAAW,UAAS,EAAE,GAAG,QAAQ,OAAO;AACvD,QAAM,YAAY,cAAc,aAAa,YAAY;AACzD,MAAI,cAAc,OAAW,UAAS,EAAE,GAAG,QAAQ,UAAU;AAC7D,SAAO;AACT;AAEA,SAAS,oBACP,OACwB;AACxB,QAAM,SAAiC,EAAE,MAAM,mBAAmB,OAAO,MAAM,MAAM;AACrF,MAAI,MAAM,OAAO,OAAW,QAAO,KAAK,MAAM;AAC9C,MAAI,MAAM,gBAAgB,OAAW,QAAO,cAAc,MAAM;AAChE,MAAI,MAAM,cAAc,OAAW,QAAO,YAAY,MAAM;AAC5D,SAAO;AACT;AAEA,SAAS,mBAAmB,YAAoB,MAAyB;AACvE,MAAI;AACJ,MAAI;AACF,YAAQ,KAAK,MAAM,IAAI;AAAA,EACzB,QAAQ;AACN,UAAM,IAAI,8BAA8B;AAAA,MACtC,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,YAAY,KAAK,GAAG;AACvB,UAAM,IAAI,8BAA8B;AAAA,MACtC,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,MAAiB,OAA2B;AACnE,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,QAAQ,UAAU,QAAQ,OAAO,SAAS,YAAY,OAAO,UAAU,UAAU;AAC5F,WAAO;AAAA,EACT;AACA,MAAI,YAAY,IAAI,KAAK,YAAY,KAAK,GAAG;AAC3C,QAAI,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,KAAK,WAAW,MAAM,QAAQ;AAC7E,aAAO;AAAA,IACT;AACA,WAAO,KAAK,MAAM,CAAC,OAAO,UAAU;AAClC,YAAM,aAAa,MAAM,KAAK;AAC9B,aAAO,eAAe,UAAa,gBAAgB,OAAO,UAAU;AAAA,IACtE,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,OAAO,KAAK,IAAI;AACjC,QAAM,YAAY,OAAO,KAAK,KAAK;AACnC,MAAI,SAAS,WAAW,UAAU,QAAQ;AACxC,WAAO;AAAA,EACT;AACA,aAAW,OAAO,UAAU;AAC1B,QAAI,CAAC,OAAO,OAAO,OAAO,GAAG,GAAG;AAC9B,aAAO;AAAA,IACT;AACA,UAAM,YAAY,KAAK,GAAG;AAC1B,UAAM,aAAa,MAAM,GAAG;AAC5B,QACE,cAAc,UACd,eAAe,UACf,CAAC,gBAAgB,WAAW,UAAU,GACtC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,kBACP,aACA,OACS;AACT,MAAI,YAAY,WAAW,MAAM,OAAQ,QAAO;AAChD,MAAI,CAAC,YAAY,WAAW,KAAK,CAAC,YAAY,KAAK,EAAG,QAAO;AAC7D,QAAM,YAAY,CAAC,GAAG,KAAK;AAC3B,aAAW,QAAQ,aAAa;AAC9B,UAAM,QAAQ,UAAU,UAAU,CAAC,cAAc,gBAAgB,MAAM,SAAS,CAAC;AACjF,QAAI,QAAQ,EAAG,QAAO;AACtB,cAAU,OAAO,OAAO,CAAC;AAAA,EAC3B;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAiD;AACpE,SAAO,MAAM,QAAQ,KAAK;AAC5B;AAEA,SAAS,6BACP,OACA,OAC+B;AAC/B,QAAM,SAAsE,EAAE,MAAM;AACpF,MAAI,MAAM,eAAe,OAAW,QAAO,aAAa,MAAM;AAC9D,MAAI,MAAM,SAAS,uBAAuB;AACxC,WAAO,IAAI,8BAA8B;AAAA,MACvC,GAAG;AAAA,MACH,MAAM,MAAM;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AACA,MAAI,MAAM,SAAS,sBAAsB;AACvC,WAAO,IAAI,8BAA8B;AAAA,MACvC,GAAG;AAAA,MACH,MAAM,MAAM;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AACA,MAAI,MAAM,iBAAiB,YAAY,MAAM,iBAAiB,kBAAkB;AAC9E,UAAM;AAAA,EACR;AACA,SAAO,IAAI,8BAA8B;AAAA,IACvC,GAAG;AAAA,IACH,MAAM,MAAM;AAAA,IACZ,cAAc,MAAM;AAAA,EACtB,CAAC;AACH;AAEA,SAAS,iBAAiB,OAAiC;AACzD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAC5D;AAEA,SAAS,uBAAuB,OAAyB;AACvD,SAAO,UAAU,UAAU,UAAU,aAAa,UAAU,eAAe,UAAU;AACvF;","names":["key","reasoning"]}
@@ -1,57 +0,0 @@
1
- import {
2
- isJsonValue
3
- } from "./chunk-4C7AXYOM.js";
4
-
5
- // src/streaming/readable-stream.ts
6
- function toReadableStream(events, _options = {}) {
7
- const encoder = new TextEncoder();
8
- const iterator = events[Symbol.asyncIterator]();
9
- return new ReadableStream({
10
- async pull(controller) {
11
- try {
12
- const next = await iterator.next();
13
- if (next.done === true) {
14
- controller.close();
15
- return;
16
- }
17
- controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}
18
- `));
19
- } catch (error) {
20
- controller.enqueue(
21
- encoder.encode(`${JSON.stringify({ type: "error", error: serializeError(error) })}
22
- `)
23
- );
24
- controller.close();
25
- }
26
- },
27
- async cancel() {
28
- await iterator.return?.();
29
- }
30
- });
31
- }
32
- function serializeError(error) {
33
- if (error instanceof Error) {
34
- const serialized = {
35
- name: error.name,
36
- message: error.message
37
- };
38
- const code = error.code;
39
- if (code !== void 0) {
40
- serialized.code = code;
41
- }
42
- const details = error.details;
43
- if (details !== void 0) {
44
- serialized.details = details;
45
- }
46
- return serialized;
47
- }
48
- if (isJsonValue(error)) {
49
- return error;
50
- }
51
- return { message: String(error) };
52
- }
53
-
54
- export {
55
- toReadableStream
56
- };
57
- //# sourceMappingURL=chunk-54ZZJRP2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/streaming/readable-stream.ts"],"sourcesContent":["import { isJsonValue } from \"../completion/json\";\n\nexport type ReadableStreamOptions = {\n format?: \"jsonl\";\n};\n\nexport function toReadableStream<T>(\n events: AsyncIterable<T>,\n _options: ReadableStreamOptions = {},\n): ReadableStream<Uint8Array> {\n const encoder = new TextEncoder();\n const iterator = events[Symbol.asyncIterator]();\n\n return new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const next = await iterator.next();\n if (next.done === true) {\n controller.close();\n return;\n }\n\n controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}\\n`));\n } catch (error) {\n controller.enqueue(\n encoder.encode(`${JSON.stringify({ type: \"error\", error: serializeError(error) })}\\n`),\n );\n controller.close();\n }\n },\n async cancel() {\n await iterator.return?.();\n },\n });\n}\n\nfunction serializeError(error: unknown): unknown {\n if (error instanceof Error) {\n const serialized: { name: string; message: string; code?: unknown; details?: unknown } = {\n name: error.name,\n message: error.message,\n };\n // Runtime-specific Error subclasses (for example bun:sqlite's SqliteError)\n // can keep diagnostic fields such as `code` on the prototype, where\n // JSON.stringify drops them. Copy well-known diagnostic fields explicitly.\n const code = (error as { code?: unknown }).code;\n if (code !== undefined) {\n serialized.code = code;\n }\n const details = (error as { details?: unknown }).details;\n if (details !== undefined) {\n serialized.details = details;\n }\n return serialized;\n }\n\n if (isJsonValue(error)) {\n return error;\n }\n\n // A thrown non-Error that is not JSON-safe would serialize as `{}` or lose\n // its diagnostics entirely; degrade to a string payload instead.\n return { message: String(error) };\n}\n"],"mappings":";;;;;AAMO,SAAS,iBACd,QACA,WAAkC,CAAC,GACP;AAC5B,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,WAAW,OAAO,OAAO,aAAa,EAAE;AAE9C,SAAO,IAAI,eAA2B;AAAA,IACpC,MAAM,KAAK,YAAY;AACrB,UAAI;AACF,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAI,KAAK,SAAS,MAAM;AACtB,qBAAW,MAAM;AACjB;AAAA,QACF;AAEA,mBAAW,QAAQ,QAAQ,OAAO,GAAG,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,CAAI,CAAC;AAAA,MACtE,SAAS,OAAO;AACd,mBAAW;AAAA,UACT,QAAQ,OAAO,GAAG,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,eAAe,KAAK,EAAE,CAAC,CAAC;AAAA,CAAI;AAAA,QACvF;AACA,mBAAW,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,IACA,MAAM,SAAS;AACb,YAAM,SAAS,SAAS;AAAA,IAC1B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,eAAe,OAAyB;AAC/C,MAAI,iBAAiB,OAAO;AAC1B,UAAM,aAAmF;AAAA,MACvF,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,IACjB;AAIA,UAAM,OAAQ,MAA6B;AAC3C,QAAI,SAAS,QAAW;AACtB,iBAAW,OAAO;AAAA,IACpB;AACA,UAAM,UAAW,MAAgC;AACjD,QAAI,YAAY,QAAW;AACzB,iBAAW,UAAU;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,KAAK,GAAG;AACtB,WAAO;AAAA,EACT;AAIA,SAAO,EAAE,SAAS,OAAO,KAAK,EAAE;AAClC;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/evals/judge.ts"],"sourcesContent":["import type { CompletionModel, JsonObject, Usage } from \"../completion\";\nimport { Usage as UsageValue } from \"../completion\";\nimport { extract } from \"../extractor\";\nimport type { ZodSchema } from \"../schema\";\nimport type { EvalMetadata } from \"./types\";\n\nexport type JudgeResult<T> = {\n data: T;\n usage: Usage;\n};\n\nexport async function runJudge<T>(args: {\n model: CompletionModel;\n schema: ZodSchema<T>;\n instructions: string;\n prompt: string;\n retries: number;\n}): Promise<JudgeResult<T>> {\n const result = await extract({\n model: args.model,\n outputSchema: args.schema,\n instructions: args.instructions,\n text: args.prompt,\n temperature: 0,\n retries: args.retries <= 0 ? undefined : { maxAttempts: Math.trunc(args.retries) + 1 },\n });\n return { data: result.output, usage: result.usage };\n}\n\nexport function addUsage(...values: Usage[]): Usage {\n return values.reduce((total, usage) => UsageValue.add(total, usage), UsageValue.empty());\n}\n\nexport function evaluationMetadata(details: JsonObject, usage: Usage): EvalMetadata {\n const evaluation: JsonObject = {\n ...details,\n usage: usageToJson(usage),\n };\n return { evaluation };\n}\n\nfunction usageToJson(usage: Usage): JsonObject {\n const value: JsonObject = {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n totalTokens: usage.totalTokens,\n cachedInputTokens: usage.cachedInputTokens,\n cacheCreationInputTokens: usage.cacheCreationInputTokens,\n };\n if (usage.details !== undefined) {\n value.details = { ...usage.details };\n }\n return value;\n}\n"],"mappings":";;;;;;;;AAWA,eAAsB,SAAY,MAMN;AAC1B,QAAM,SAAS,MAAM,QAAQ;AAAA,IAC3B,OAAO,KAAK;AAAA,IACZ,cAAc,KAAK;AAAA,IACnB,cAAc,KAAK;AAAA,IACnB,MAAM,KAAK;AAAA,IACX,aAAa;AAAA,IACb,SAAS,KAAK,WAAW,IAAI,SAAY,EAAE,aAAa,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE;AAAA,EACvF,CAAC;AACD,SAAO,EAAE,MAAM,OAAO,QAAQ,OAAO,OAAO,MAAM;AACpD;AAEO,SAAS,YAAY,QAAwB;AAClD,SAAO,OAAO,OAAO,CAAC,OAAO,UAAU,MAAW,IAAI,OAAO,KAAK,GAAG,MAAW,MAAM,CAAC;AACzF;AAEO,SAAS,mBAAmB,SAAqB,OAA4B;AAClF,QAAM,aAAyB;AAAA,IAC7B,GAAG;AAAA,IACH,OAAO,YAAY,KAAK;AAAA,EAC1B;AACA,SAAO,EAAE,WAAW;AACtB;AAEA,SAAS,YAAY,OAA0B;AAC7C,QAAM,QAAoB;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,mBAAmB,MAAM;AAAA,IACzB,0BAA0B,MAAM;AAAA,EAClC;AACA,MAAI,MAAM,YAAY,QAAW;AAC/B,UAAM,UAAU,EAAE,GAAG,MAAM,QAAQ;AAAA,EACrC;AACA,SAAO;AACT;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/embeddings/embed.ts"],"sourcesContent":["import { throwIfAborted } from \"../internal/abort\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport { type ResolvedRetryOptions, resolveRetryOptions, runWithRetries } from \"../retry\";\nimport type {\n EmbedDocumentsOptions,\n EmbedDocumentsResult,\n EmbeddedDocument,\n Embedding,\n EmbeddingOperationOptions,\n EmbedHybridDocumentsOptions,\n EmbedSparseQueryOptions,\n EmbedSparseQueryResult,\n EmbedSparseTextsOptions,\n EmbedSparseTextsResult,\n EmbedTextOptions,\n EmbedTextResult,\n EmbedTextsOptions,\n EmbedTextsResult,\n SparseEmbedding,\n VectorMetadata,\n} from \"./types\";\n\nexport async function embedText(options: EmbedTextOptions): Promise<EmbedTextResult> {\n const { embeddings } = await embedTexts({\n model: options.model,\n texts: [options.text],\n retries: options.retries,\n abortSignal: options.abortSignal,\n });\n const embedding = embeddings[0];\n if (embedding === undefined) throw new Error(\"Embedding model returned no embeddings\");\n return { embedding };\n}\n\nexport async function embedTexts(options: EmbedTextsOptions): Promise<EmbedTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedDenseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n if (embeddings.length !== options.texts.length) {\n throw new Error(\n `Embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`,\n );\n }\n return { embeddings };\n}\n\nexport async function embedSparseTexts(\n options: EmbedSparseTextsOptions,\n): Promise<EmbedSparseTextsResult> {\n throwIfAborted(options.abortSignal);\n if (options.texts.length === 0) return { embeddings: [] };\n const batches = chunk(options.texts, batchSize(options.model.maxBatchSize, options.texts.length));\n const results = await mapWithConcurrency(batches, concurrency(options.concurrency), (batch) =>\n embedSparseBatch(options.model, batch, options),\n );\n const embeddings = results.flat();\n if (embeddings.length !== options.texts.length) {\n throw new Error(\n `Sparse embedding model returned ${embeddings.length} embeddings for ${options.texts.length} texts`,\n );\n }\n return { embeddings };\n}\n\nexport async function embedSparseQuery(\n options: EmbedSparseQueryOptions,\n): Promise<EmbedSparseQueryResult> {\n throwIfAborted(options.abortSignal);\n const embedding = await runWithRetries(\n () => {\n throwIfAborted(options.abortSignal);\n return options.model.embedQuery(options.query, modelCallOptions(options.abortSignal));\n },\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n validateSparseEmbedding(embedding, \"query\");\n return { embedding };\n}\n\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>>;\nexport async function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n options: EmbedDocumentsOptions<T, Metadata> | EmbedHybridDocumentsOptions<T, Metadata>,\n): Promise<EmbedDocumentsResult<T, Metadata>> {\n throwIfAborted(options.abortSignal);\n const prepared = prepareDocuments(options.documents, options);\n const flatTexts = prepared.flatMap((item, documentIndex) =>\n item.texts.map((text) => ({ documentIndex, text })),\n );\n const concurrencyLimit = concurrency(options.concurrency);\n\n if (\"model\" in options && options.model !== undefined) {\n const batches = chunk(flatTexts, batchSize(options.model.maxBatchSize, flatTexts.length || 1));\n const results = await mapWithConcurrency(batches, concurrencyLimit, async (batch) => {\n const embeddings = await embedDenseBatch(\n options.model,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n });\n const byDocument = groupEmbeddings(results.flat());\n return {\n documents: prepared.map((item, index) => embeddedDocument(item, byDocument.get(index) ?? [])),\n };\n }\n\n const { dense, sparse } = options.models;\n const [denseResults, sparseResults] = await Promise.all([\n mapWithConcurrency(\n chunk(flatTexts, batchSize(dense.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedDenseBatch(\n dense,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as Embedding,\n }));\n },\n ),\n mapWithConcurrency(\n chunk(flatTexts, batchSize(sparse.maxBatchSize, flatTexts.length || 1)),\n concurrencyLimit,\n async (batch) => {\n const embeddings = await embedSparseBatch(\n sparse,\n batch.map((item) => item.text),\n options,\n );\n assertBatchLength(\"Sparse embedding\", embeddings.length, batch.length);\n return batch.map((item, index) => ({\n documentIndex: item.documentIndex,\n embedding: embeddings[index] as SparseEmbedding,\n }));\n },\n ),\n ]);\n const denseByDocument = groupEmbeddings(denseResults.flat());\n const sparseByDocument = groupEmbeddings(sparseResults.flat());\n return {\n documents: prepared.map((item, index) => {\n const embeddings = denseByDocument.get(index) ?? [];\n const sparseEmbeddings = sparseByDocument.get(index) ?? [];\n if (embeddings.length !== sparseEmbeddings.length) {\n throw new Error(\n `Hybrid embedding produced ${embeddings.length} dense and ${sparseEmbeddings.length} sparse vectors for document ${item.id}`,\n );\n }\n return embeddedDocument(item, embeddings, sparseEmbeddings);\n }),\n };\n}\n\nasync function embedDenseBatch(\n model: EmbedTextOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<Embedding[]> {\n throwIfAborted(options.abortSignal);\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) {\n validateDenseEmbedding(embedding, model.dimensions, index);\n }\n return embeddings;\n}\n\nasync function embedSparseBatch(\n model: EmbedSparseTextsOptions[\"model\"],\n texts: string[],\n options: EmbeddingOperationOptions,\n): Promise<SparseEmbedding[]> {\n throwIfAborted(options.abortSignal);\n const embeddings = await runWithRetries(\n () => model.embedTexts(texts, modelCallOptions(options.abortSignal)),\n resolveRetries(options),\n { streaming: false, abortSignal: options.abortSignal },\n );\n throwIfAborted(options.abortSignal);\n for (const [index, embedding] of embeddings.entries()) validateSparseEmbedding(embedding, index);\n return embeddings;\n}\n\nfunction prepareDocuments<T, Metadata extends VectorMetadata>(\n documents: T[],\n options: Pick<EmbedDocumentsOptions<T, Metadata>, \"id\" | \"content\" | \"metadata\">,\n) {\n const ids = new Set<string>();\n return documents.map((document, index) => {\n const id = options.id?.(document, index) ?? `doc${index}`;\n if (id.length === 0) throw new TypeError(\"Embedded document ids must not be empty\");\n if (ids.has(id)) throw new TypeError(`Duplicate embedded document id: ${id}`);\n ids.add(id);\n const content = options.content(document, index);\n if (Array.isArray(content) && content.length === 0)\n throw new TypeError(`Embedded document ${id} must contain at least one text chunk`);\n return {\n id,\n document,\n metadata: options.metadata?.(document, index),\n texts: Array.isArray(content) ? content : [content],\n };\n });\n}\n\nfunction embeddedDocument<T, Metadata extends VectorMetadata>(\n item: { id: string; document: T; metadata: Metadata | undefined },\n embeddings: Embedding[],\n sparseEmbeddings?: SparseEmbedding[],\n): EmbeddedDocument<T, Metadata> {\n let result: EmbeddedDocument<T, Metadata> = {\n id: item.id,\n document: item.document,\n embeddings,\n };\n if (item.metadata !== undefined) {\n result = { ...result, metadata: item.metadata };\n }\n if (sparseEmbeddings !== undefined) {\n result = { ...result, sparseEmbeddings };\n }\n return result;\n}\n\nfunction groupEmbeddings<E>(\n items: Array<{ documentIndex: number; embedding: E }>,\n): Map<number, E[]> {\n const groups = new Map<number, E[]>();\n for (const item of items) {\n const list = groups.get(item.documentIndex) ?? [];\n list.push(item.embedding);\n groups.set(item.documentIndex, list);\n }\n return groups;\n}\n\nfunction assertBatchLength(name: string, actual: number, expected: number): void {\n if (actual !== expected)\n throw new Error(`${name} model returned ${actual} embeddings for ${expected} texts`);\n}\n\nfunction resolveRetries(options: EmbeddingOperationOptions): ResolvedRetryOptions | undefined {\n return options.retries === undefined || options.retries === false\n ? undefined\n : resolveRetryOptions(options.retries);\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nfunction chunk<T>(items: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let index = 0; index < items.length; index += size)\n chunks.push(items.slice(index, index + size));\n return chunks;\n}\n\nfunction batchSize(configured: number | undefined, fallback: number): number {\n if (configured === undefined) return fallback;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding model maxBatchSize must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction concurrency(configured: number | undefined): number {\n if (configured === undefined) return 1;\n if (!Number.isSafeInteger(configured) || configured < 1) {\n throw new RangeError(\"Embedding concurrency must be a positive safe integer\");\n }\n return configured;\n}\n\nfunction validateDenseEmbedding(\n embedding: Embedding,\n dimensions: number | undefined,\n index: number,\n): void {\n if (embedding.vector.length === 0) {\n throw new TypeError(`Embedding model returned an empty vector at index ${index}`);\n }\n if (!embedding.vector.every(Number.isFinite)) {\n throw new TypeError(`Embedding model returned a non-finite vector at index ${index}`);\n }\n if (dimensions !== undefined) {\n if (!Number.isSafeInteger(dimensions) || dimensions < 1)\n throw new TypeError(\"Embedding model dimensions must be a positive safe integer\");\n if (embedding.vector.length !== dimensions) {\n throw new Error(\n `Embedding model returned ${embedding.vector.length} dimensions at index ${index}; expected ${dimensions}`,\n );\n }\n }\n}\n\nfunction validateSparseEmbedding(embedding: SparseEmbedding, index: number | \"query\"): void {\n const { indices, values } = embedding.vector;\n if (indices.length !== values.length) {\n throw new Error(`Sparse embedding at ${index} has mismatched indices and values`);\n }\n if (!indices.every((value) => Number.isSafeInteger(value) && value >= 0)) {\n throw new TypeError(`Sparse embedding at ${index} has an invalid index`);\n }\n if (new Set(indices).size !== indices.length) {\n throw new TypeError(`Sparse embedding at ${index} has duplicate indices`);\n }\n if (!values.every(Number.isFinite)) {\n throw new TypeError(`Sparse embedding at ${index} has a non-finite value`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/evals/execution.ts"],"sourcesContent":["export class EvalTimeoutError extends Error {\n constructor(readonly timeoutMs: number) {\n super(`Evaluation case exceeded its timeout of ${timeoutMs}ms.`);\n this.name = \"EvalTimeoutError\";\n }\n}\n\nexport class EvalAbortError extends Error {\n constructor(message = \"Evaluation run was aborted.\") {\n super(message);\n this.name = \"EvalAbortError\";\n }\n}\n\nexport type EvalCaseSignal = {\n signal: AbortSignal;\n dispose(): void;\n};\n\nexport function createEvalCaseSignal(\n parent: AbortSignal | undefined,\n timeoutMs: number | undefined,\n): EvalCaseSignal {\n const controller = new AbortController();\n const abortFromParent = () => controller.abort(parent?.reason ?? new EvalAbortError());\n if (parent?.aborted === true) abortFromParent();\n else parent?.addEventListener(\"abort\", abortFromParent, { once: true });\n const timeout =\n timeoutMs === undefined\n ? undefined\n : setTimeout(() => controller.abort(new EvalTimeoutError(timeoutMs)), timeoutMs);\n return {\n signal: controller.signal,\n dispose() {\n if (timeout !== undefined) clearTimeout(timeout);\n parent?.removeEventListener(\"abort\", abortFromParent);\n },\n };\n}\n\nexport function abortable<T>(signal: AbortSignal, operation: Promise<T>): Promise<T> {\n if (signal.aborted) return Promise.reject(abortReason(signal));\n return new Promise<T>((resolve, reject) => {\n const onAbort = () => reject(abortReason(signal));\n signal.addEventListener(\"abort\", onAbort, { once: true });\n operation.then(\n (value) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(value);\n },\n (error: unknown) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n });\n}\n\nexport type ConcurrencyLimiter = <T>(operation: () => Promise<T>) => Promise<T>;\n\nexport function createConcurrencyLimiter(concurrency: number): ConcurrencyLimiter {\n let active = 0;\n const waiting: Array<() => void> = [];\n return async <T>(operation: () => Promise<T>): Promise<T> => {\n if (active >= concurrency) {\n await new Promise<void>((resolve) => waiting.push(resolve));\n }\n active += 1;\n try {\n return await operation();\n } finally {\n active -= 1;\n waiting.shift()?.();\n }\n };\n}\n\nfunction abortReason(signal: AbortSignal): unknown {\n return signal.reason ?? new EvalAbortError();\n}\n"],"mappings":";AAAO,IAAM,mBAAN,cAA+B,MAAM;AAAA,EAC1C,YAAqB,WAAmB;AACtC,UAAM,2CAA2C,SAAS,KAAK;AAD5C;AAEnB,SAAK,OAAO;AAAA,EACd;AAAA,EAHqB;AAIvB;AAEO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,YAAY,UAAU,+BAA+B;AACnD,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAOO,SAAS,qBACd,QACA,WACgB;AAChB,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,kBAAkB,MAAM,WAAW,MAAM,QAAQ,UAAU,IAAI,eAAe,CAAC;AACrF,MAAI,QAAQ,YAAY,KAAM,iBAAgB;AAAA,MACzC,SAAQ,iBAAiB,SAAS,iBAAiB,EAAE,MAAM,KAAK,CAAC;AACtE,QAAM,UACJ,cAAc,SACV,SACA,WAAW,MAAM,WAAW,MAAM,IAAI,iBAAiB,SAAS,CAAC,GAAG,SAAS;AACnF,SAAO;AAAA,IACL,QAAQ,WAAW;AAAA,IACnB,UAAU;AACR,UAAI,YAAY,OAAW,cAAa,OAAO;AAC/C,cAAQ,oBAAoB,SAAS,eAAe;AAAA,IACtD;AAAA,EACF;AACF;AAEO,SAAS,UAAa,QAAqB,WAAmC;AACnF,MAAI,OAAO,QAAS,QAAO,QAAQ,OAAO,YAAY,MAAM,CAAC;AAC7D,SAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,UAAM,UAAU,MAAM,OAAO,YAAY,MAAM,CAAC;AAChD,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AACxD,cAAU;AAAA,MACR,CAAC,UAAU;AACT,eAAO,oBAAoB,SAAS,OAAO;AAC3C,gBAAQ,KAAK;AAAA,MACf;AAAA,MACA,CAAC,UAAmB;AAClB,eAAO,oBAAoB,SAAS,OAAO;AAC3C,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAIO,SAAS,yBAAyB,aAAyC;AAChF,MAAI,SAAS;AACb,QAAM,UAA6B,CAAC;AACpC,SAAO,OAAU,cAA4C;AAC3D,QAAI,UAAU,aAAa;AACzB,YAAM,IAAI,QAAc,CAAC,YAAY,QAAQ,KAAK,OAAO,CAAC;AAAA,IAC5D;AACA,cAAU;AACV,QAAI;AACF,aAAO,MAAM,UAAU;AAAA,IACzB,UAAE;AACA,gBAAU;AACV,cAAQ,MAAM,IAAI;AAAA,IACpB;AAAA,EACF;AACF;AAEA,SAAS,YAAY,QAA8B;AACjD,SAAO,OAAO,UAAU,IAAI,eAAe;AAC7C;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/skills/tools.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport { z } from \"zod\";\nimport { type AnyTool, createTool } from \"../tool\";\nimport { markSkillTool } from \"../tool/skill-tool-marker\";\nimport type { Skill } from \"./types\";\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_OUTPUT_CHARS = 20_000;\n\nexport function createSkillTools(skills: Skill[]): AnyTool[] {\n const registry = new SkillRegistry(skills);\n\n return [\n markSkillTool(\n createTool({\n name: \"get_skill_instructions\",\n description: \"Load the full SKILL.md instructions for an Agent Skill.\",\n inputSchema: z.object({\n skillName: z.string().describe(\"The name of the skill to load.\"),\n }),\n outputSchema: z.string(),\n execute: ({ skillName }) => registry.get(skillName).instructions,\n }),\n ),\n markSkillTool(\n createTool({\n name: \"get_skill_reference\",\n description: \"Read a reference file from an Agent Skill.\",\n inputSchema: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n referencePath: z.string().describe(\"A path listed in the skill references.\"),\n }),\n outputSchema: z.string(),\n execute: ({ skillName, referencePath }) => registry.readReference(skillName, referencePath),\n }),\n ),\n markSkillTool(\n createTool({\n name: \"get_skill_script\",\n description: \"Read a script file from an Agent Skill.\",\n inputSchema: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n scriptPath: z.string().describe(\"A path listed in the skill scripts.\"),\n }),\n outputSchema: z.string(),\n execute: ({ skillName, scriptPath }) => registry.readScript(skillName, scriptPath),\n }),\n ),\n markSkillTool(\n createTool({\n name: \"run_skill_script\",\n description: \"Execute a script from an Agent Skill with optional arguments.\",\n inputSchema: z.object({\n skillName: z.string().describe(\"The name of the skill.\"),\n scriptPath: z.string().describe(\"A path listed in the skill scripts.\"),\n args: z.array(z.string()).optional().describe(\"Arguments passed to the script.\"),\n timeoutMs: z.number().int().positive().optional().describe(\"Execution timeout in ms.\"),\n }),\n outputSchema: z.string(),\n execute: ({ skillName, scriptPath, args = [], timeoutMs = DEFAULT_TIMEOUT_MS }) =>\n registry.runScript(skillName, scriptPath, args, timeoutMs),\n }),\n ),\n ];\n}\n\nclass SkillRegistry {\n private readonly skills = new Map<string, Skill>();\n\n constructor(skills: Skill[]) {\n for (const skill of skills) {\n this.skills.set(skill.name, skill);\n }\n }\n\n get(skillName: string): Skill {\n const skill = this.skills.get(skillName);\n if (skill === undefined) {\n throw new Error(`Skill not found: ${skillName}`);\n }\n return skill;\n }\n\n async readReference(skillName: string, referencePath: string): Promise<string> {\n const skill = this.get(skillName);\n const path = this.resolveContainedPath(skill, \"references\", referencePath);\n if (!skill.references.includes(referencePath)) {\n throw new Error(`Skill reference not found: ${skillName}/${referencePath}`);\n }\n return readFile(path, \"utf8\");\n }\n\n async readScript(skillName: string, scriptPath: string): Promise<string> {\n const skill = this.get(skillName);\n const path = this.resolveContainedPath(skill, \"scripts\", scriptPath);\n if (!skill.scripts.includes(scriptPath)) {\n throw new Error(`Skill script not found: ${skillName}/${scriptPath}`);\n }\n return readFile(path, \"utf8\");\n }\n\n async runScript(\n skillName: string,\n scriptPath: string,\n args: string[],\n timeoutMs: number,\n ): Promise<string> {\n const skill = this.get(skillName);\n const script = this.resolveContainedPath(skill, \"scripts\", scriptPath);\n if (!skill.scripts.includes(scriptPath)) {\n throw new Error(`Skill script not found: ${skillName}/${scriptPath}`);\n }\n return runExecutable(script, args, skill.directory, timeoutMs);\n }\n\n private resolveContainedPath(\n skill: Skill,\n section: \"references\" | \"scripts\",\n requestedPath: string,\n ): string {\n if (requestedPath.length === 0 || isAbsolute(requestedPath)) {\n throw new Error(`Invalid skill path: ${requestedPath}`);\n }\n\n const root = resolve(skill.directory, section);\n const resolved = resolve(root, requestedPath);\n const rel = relative(root, resolved);\n if (rel === \"..\" || rel.startsWith(`..${\"/\"}`) || rel.startsWith(`..${\"\\\\\"}`)) {\n throw new Error(`Invalid skill path: ${requestedPath}`);\n }\n\n return resolved;\n }\n}\n\nfunction runExecutable(\n command: string,\n args: string[],\n cwd: string,\n timeoutMs: number,\n): Promise<string> {\n return new Promise((resolvePromise, reject) => {\n const child = spawn(command, args, {\n cwd,\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n let timedOut = false;\n const timeout = setTimeout(() => {\n timedOut = true;\n child.kill();\n }, timeoutMs);\n\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk) => {\n stdout = appendLimited(stdout, chunk);\n });\n child.stderr.on(\"data\", (chunk) => {\n stderr = appendLimited(stderr, chunk);\n });\n child.on(\"error\", (error) => {\n clearTimeout(timeout);\n reject(error);\n });\n child.on(\"close\", (code, signal) => {\n clearTimeout(timeout);\n if (timedOut) {\n reject(new Error(`Skill script timed out after ${timeoutMs}ms`));\n return;\n }\n\n const output = formatProcessOutput(stdout, stderr);\n if (code !== 0) {\n reject(new Error(`Skill script exited with code ${code ?? \"unknown\"}: ${output}`));\n return;\n }\n if (signal !== null) {\n reject(new Error(`Skill script exited with signal ${signal}: ${output}`));\n return;\n }\n\n resolvePromise(output);\n });\n });\n}\n\nfunction formatProcessOutput(stdout: string, stderr: string): string {\n const parts: string[] = [];\n if (stdout.length > 0) {\n parts.push(`stdout:\\n${stdout}`);\n }\n if (stderr.length > 0) {\n parts.push(`stderr:\\n${stderr}`);\n }\n return parts.length === 0 ? \"\" : parts.join(\"\\n\\n\");\n}\n\nfunction appendLimited(current: string, chunk: string): string {\n const next = current + chunk;\n if (next.length <= MAX_OUTPUT_CHARS) {\n return next;\n }\n return `${next.slice(0, MAX_OUTPUT_CHARS)}\\n[truncated]`;\n}\n"],"mappings":"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","names":[]}