@morsehq-dev/sdk 0.4.0-rc.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 (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +294 -0
  3. package/dist/anthropic/index.cjs +39 -0
  4. package/dist/anthropic/index.cjs.map +1 -0
  5. package/dist/anthropic/index.d.cts +213 -0
  6. package/dist/anthropic/index.d.ts +213 -0
  7. package/dist/anthropic/index.js +6 -0
  8. package/dist/anthropic/index.js.map +1 -0
  9. package/dist/anthropic-agent-sdk/index.cjs +744 -0
  10. package/dist/anthropic-agent-sdk/index.cjs.map +1 -0
  11. package/dist/anthropic-agent-sdk/index.d.cts +371 -0
  12. package/dist/anthropic-agent-sdk/index.d.ts +371 -0
  13. package/dist/anthropic-agent-sdk/index.js +735 -0
  14. package/dist/anthropic-agent-sdk/index.js.map +1 -0
  15. package/dist/browser/anthropic/index.cjs +39 -0
  16. package/dist/browser/anthropic/index.cjs.map +1 -0
  17. package/dist/browser/anthropic/index.js +6 -0
  18. package/dist/browser/anthropic/index.js.map +1 -0
  19. package/dist/browser/anthropic-agent-sdk/index.cjs +744 -0
  20. package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -0
  21. package/dist/browser/anthropic-agent-sdk/index.js +735 -0
  22. package/dist/browser/anthropic-agent-sdk/index.js.map +1 -0
  23. package/dist/browser/chunk-3643DC7K.cjs +365 -0
  24. package/dist/browser/chunk-3643DC7K.cjs.map +1 -0
  25. package/dist/browser/chunk-4FALQMOZ.js +232 -0
  26. package/dist/browser/chunk-4FALQMOZ.js.map +1 -0
  27. package/dist/browser/chunk-5J2QBK75.js +884 -0
  28. package/dist/browser/chunk-5J2QBK75.js.map +1 -0
  29. package/dist/browser/chunk-7MSXWGAH.js +53 -0
  30. package/dist/browser/chunk-7MSXWGAH.js.map +1 -0
  31. package/dist/browser/chunk-A24L5N5N.js +596 -0
  32. package/dist/browser/chunk-A24L5N5N.js.map +1 -0
  33. package/dist/browser/chunk-B7DEUDP6.cjs +177 -0
  34. package/dist/browser/chunk-B7DEUDP6.cjs.map +1 -0
  35. package/dist/browser/chunk-F6CJACNH.cjs +604 -0
  36. package/dist/browser/chunk-F6CJACNH.cjs.map +1 -0
  37. package/dist/browser/chunk-JBOYFQSB.js +412 -0
  38. package/dist/browser/chunk-JBOYFQSB.js.map +1 -0
  39. package/dist/browser/chunk-KRBADE6R.cjs +183 -0
  40. package/dist/browser/chunk-KRBADE6R.cjs.map +1 -0
  41. package/dist/browser/chunk-MCJYZH6W.cjs +415 -0
  42. package/dist/browser/chunk-MCJYZH6W.cjs.map +1 -0
  43. package/dist/browser/chunk-NQG2IAQS.js +178 -0
  44. package/dist/browser/chunk-NQG2IAQS.js.map +1 -0
  45. package/dist/browser/chunk-O4HG3OSK.cjs +929 -0
  46. package/dist/browser/chunk-O4HG3OSK.cjs.map +1 -0
  47. package/dist/browser/chunk-QWRQJO57.js +363 -0
  48. package/dist/browser/chunk-QWRQJO57.js.map +1 -0
  49. package/dist/browser/chunk-SWQOPFE4.cjs +234 -0
  50. package/dist/browser/chunk-SWQOPFE4.cjs.map +1 -0
  51. package/dist/browser/chunk-TYDG747E.js +171 -0
  52. package/dist/browser/chunk-TYDG747E.js.map +1 -0
  53. package/dist/browser/chunk-TZRSDDFP.cjs +56 -0
  54. package/dist/browser/chunk-TZRSDDFP.cjs.map +1 -0
  55. package/dist/browser/index.cjs +587 -0
  56. package/dist/browser/index.cjs.map +1 -0
  57. package/dist/browser/index.js +522 -0
  58. package/dist/browser/index.js.map +1 -0
  59. package/dist/browser/integrations/pino.cjs +89 -0
  60. package/dist/browser/integrations/pino.cjs.map +1 -0
  61. package/dist/browser/integrations/pino.js +86 -0
  62. package/dist/browser/integrations/pino.js.map +1 -0
  63. package/dist/browser/langchain/index.cjs +535 -0
  64. package/dist/browser/langchain/index.cjs.map +1 -0
  65. package/dist/browser/langchain/index.js +528 -0
  66. package/dist/browser/langchain/index.js.map +1 -0
  67. package/dist/browser/langgraph/index.cjs +377 -0
  68. package/dist/browser/langgraph/index.cjs.map +1 -0
  69. package/dist/browser/langgraph/index.js +371 -0
  70. package/dist/browser/langgraph/index.js.map +1 -0
  71. package/dist/browser/openai/index.cjs +125 -0
  72. package/dist/browser/openai/index.cjs.map +1 -0
  73. package/dist/browser/openai/index.js +122 -0
  74. package/dist/browser/openai/index.js.map +1 -0
  75. package/dist/browser/openai-agents/index.cjs +689 -0
  76. package/dist/browser/openai-agents/index.cjs.map +1 -0
  77. package/dist/browser/openai-agents/index.js +678 -0
  78. package/dist/browser/openai-agents/index.js.map +1 -0
  79. package/dist/browser/vercel-ai/index.cjs +233 -0
  80. package/dist/browser/vercel-ai/index.cjs.map +1 -0
  81. package/dist/browser/vercel-ai/index.js +231 -0
  82. package/dist/browser/vercel-ai/index.js.map +1 -0
  83. package/dist/chunk-4R4SHGOK.js +363 -0
  84. package/dist/chunk-4R4SHGOK.js.map +1 -0
  85. package/dist/chunk-7EO7MQBA.cjs +183 -0
  86. package/dist/chunk-7EO7MQBA.cjs.map +1 -0
  87. package/dist/chunk-7YCENA54.cjs +604 -0
  88. package/dist/chunk-7YCENA54.cjs.map +1 -0
  89. package/dist/chunk-CKFOGDUF.js +596 -0
  90. package/dist/chunk-CKFOGDUF.js.map +1 -0
  91. package/dist/chunk-FJUNILZT.cjs +1324 -0
  92. package/dist/chunk-FJUNILZT.cjs.map +1 -0
  93. package/dist/chunk-HDAFUKQ3.js +171 -0
  94. package/dist/chunk-HDAFUKQ3.js.map +1 -0
  95. package/dist/chunk-KBWPNIH4.cjs +234 -0
  96. package/dist/chunk-KBWPNIH4.cjs.map +1 -0
  97. package/dist/chunk-KJEO52QS.cjs +365 -0
  98. package/dist/chunk-KJEO52QS.cjs.map +1 -0
  99. package/dist/chunk-KZBCOZIQ.cjs +177 -0
  100. package/dist/chunk-KZBCOZIQ.cjs.map +1 -0
  101. package/dist/chunk-ME5JALGT.js +53 -0
  102. package/dist/chunk-ME5JALGT.js.map +1 -0
  103. package/dist/chunk-PVHDEPRE.cjs +56 -0
  104. package/dist/chunk-PVHDEPRE.cjs.map +1 -0
  105. package/dist/chunk-RTL23YOQ.js +178 -0
  106. package/dist/chunk-RTL23YOQ.js.map +1 -0
  107. package/dist/chunk-TQWI4UYO.js +1277 -0
  108. package/dist/chunk-TQWI4UYO.js.map +1 -0
  109. package/dist/chunk-VXDBDPDR.cjs +415 -0
  110. package/dist/chunk-VXDBDPDR.cjs.map +1 -0
  111. package/dist/chunk-XTKMUJWI.js +232 -0
  112. package/dist/chunk-XTKMUJWI.js.map +1 -0
  113. package/dist/chunk-ZKUGOWER.js +412 -0
  114. package/dist/chunk-ZKUGOWER.js.map +1 -0
  115. package/dist/index.cjs +843 -0
  116. package/dist/index.cjs.map +1 -0
  117. package/dist/index.d.cts +464 -0
  118. package/dist/index.d.ts +464 -0
  119. package/dist/index.js +778 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/integrations/pino.cjs +89 -0
  122. package/dist/integrations/pino.cjs.map +1 -0
  123. package/dist/integrations/pino.d.cts +65 -0
  124. package/dist/integrations/pino.d.ts +65 -0
  125. package/dist/integrations/pino.js +86 -0
  126. package/dist/integrations/pino.js.map +1 -0
  127. package/dist/langchain/index.cjs +535 -0
  128. package/dist/langchain/index.cjs.map +1 -0
  129. package/dist/langchain/index.d.cts +265 -0
  130. package/dist/langchain/index.d.ts +265 -0
  131. package/dist/langchain/index.js +528 -0
  132. package/dist/langchain/index.js.map +1 -0
  133. package/dist/langgraph/index.cjs +377 -0
  134. package/dist/langgraph/index.cjs.map +1 -0
  135. package/dist/langgraph/index.d.cts +324 -0
  136. package/dist/langgraph/index.d.ts +324 -0
  137. package/dist/langgraph/index.js +371 -0
  138. package/dist/langgraph/index.js.map +1 -0
  139. package/dist/openai/index.cjs +125 -0
  140. package/dist/openai/index.cjs.map +1 -0
  141. package/dist/openai/index.d.cts +136 -0
  142. package/dist/openai/index.d.ts +136 -0
  143. package/dist/openai/index.js +122 -0
  144. package/dist/openai/index.js.map +1 -0
  145. package/dist/openai-agents/index.cjs +689 -0
  146. package/dist/openai-agents/index.cjs.map +1 -0
  147. package/dist/openai-agents/index.d.cts +502 -0
  148. package/dist/openai-agents/index.d.ts +502 -0
  149. package/dist/openai-agents/index.js +678 -0
  150. package/dist/openai-agents/index.js.map +1 -0
  151. package/dist/spans-DZtMuBvc.d.cts +73 -0
  152. package/dist/spans-DZtMuBvc.d.ts +73 -0
  153. package/dist/tracing-BYAqjT5Q.d.cts +114 -0
  154. package/dist/tracing-rz9cWQ8d.d.ts +114 -0
  155. package/dist/vercel-ai/index.cjs +233 -0
  156. package/dist/vercel-ai/index.cjs.map +1 -0
  157. package/dist/vercel-ai/index.d.cts +93 -0
  158. package/dist/vercel-ai/index.d.ts +93 -0
  159. package/dist/vercel-ai/index.js +231 -0
  160. package/dist/vercel-ai/index.js.map +1 -0
  161. package/package.json +182 -0
@@ -0,0 +1,232 @@
1
+ // src/data/pricing.json
2
+ var pricing_default = {
3
+ "claude-opus-4-6": {
4
+ input_per_mtok: 5,
5
+ output_per_mtok: 25,
6
+ cached_per_mtok: 0.5,
7
+ cache_write_per_mtok: 6.25
8
+ },
9
+ "claude-sonnet-4-6": {
10
+ input_per_mtok: 3,
11
+ output_per_mtok: 15,
12
+ cached_per_mtok: 0.3,
13
+ cache_write_per_mtok: 3.75
14
+ },
15
+ "claude-haiku-4-5": {
16
+ input_per_mtok: 1,
17
+ output_per_mtok: 5,
18
+ cached_per_mtok: 0.1,
19
+ cache_write_per_mtok: 1.25
20
+ },
21
+ "claude-sonnet-4-5": {
22
+ input_per_mtok: 3,
23
+ output_per_mtok: 15,
24
+ cached_per_mtok: 0.3,
25
+ cache_write_per_mtok: 3.75
26
+ },
27
+ "claude-opus-4-0": {
28
+ input_per_mtok: 15,
29
+ output_per_mtok: 75
30
+ },
31
+ "claude-haiku-3-5": {
32
+ input_per_mtok: 0.8,
33
+ output_per_mtok: 4
34
+ },
35
+ "claude-3-haiku": {
36
+ input_per_mtok: 0.25,
37
+ output_per_mtok: 1.25
38
+ },
39
+ "gpt-5.4": {
40
+ input_per_mtok: 2.5,
41
+ output_per_mtok: 15,
42
+ cached_per_mtok: 0.25
43
+ },
44
+ "gpt-5.4-mini": {
45
+ input_per_mtok: 0.75,
46
+ output_per_mtok: 4.5,
47
+ cached_per_mtok: 0.075
48
+ },
49
+ "gpt-5.4-nano": {
50
+ input_per_mtok: 0.2,
51
+ output_per_mtok: 1.25,
52
+ cached_per_mtok: 0.02
53
+ },
54
+ "gpt-5": {
55
+ input_per_mtok: 1.25,
56
+ output_per_mtok: 10,
57
+ cached_per_mtok: 0.125
58
+ },
59
+ o3: {
60
+ input_per_mtok: 2,
61
+ output_per_mtok: 8,
62
+ cached_per_mtok: 0.5
63
+ },
64
+ "o4-mini": {
65
+ input_per_mtok: 1.1,
66
+ output_per_mtok: 4.4,
67
+ cached_per_mtok: 0.275
68
+ },
69
+ "gpt-4.1": {
70
+ input_per_mtok: 2,
71
+ output_per_mtok: 8,
72
+ cached_per_mtok: 0.5
73
+ },
74
+ "gpt-4.1-mini": {
75
+ input_per_mtok: 0.4,
76
+ output_per_mtok: 1.6,
77
+ cached_per_mtok: 0.1
78
+ },
79
+ "gpt-4.1-nano": {
80
+ input_per_mtok: 0.1,
81
+ output_per_mtok: 0.4,
82
+ cached_per_mtok: 0.025
83
+ },
84
+ "gpt-4o": {
85
+ input_per_mtok: 2.5,
86
+ output_per_mtok: 10,
87
+ cached_per_mtok: 1.25
88
+ },
89
+ "gpt-4o-mini": {
90
+ input_per_mtok: 0.15,
91
+ output_per_mtok: 0.6,
92
+ cached_per_mtok: 0.075
93
+ },
94
+ "gemini-2.5-pro": {
95
+ input_per_mtok: 1.25,
96
+ output_per_mtok: 10
97
+ },
98
+ "gemini-2.5-flash-lite": {
99
+ input_per_mtok: 0.1,
100
+ output_per_mtok: 0.4
101
+ },
102
+ "gemini-2.5-flash": {
103
+ input_per_mtok: 0.3,
104
+ output_per_mtok: 2.5
105
+ },
106
+ "gemini-2.0-flash": {
107
+ input_per_mtok: 0.1,
108
+ output_per_mtok: 0.4
109
+ },
110
+ "mistral-large": {
111
+ input_per_mtok: 2,
112
+ output_per_mtok: 6
113
+ },
114
+ "mistral-small": {
115
+ input_per_mtok: 0.2,
116
+ output_per_mtok: 0.6
117
+ },
118
+ "command-r-plus": {
119
+ input_per_mtok: 2.5,
120
+ output_per_mtok: 10
121
+ },
122
+ "command-r": {
123
+ input_per_mtok: 0.15,
124
+ output_per_mtok: 0.6
125
+ },
126
+ "deepseek-reasoner": {
127
+ input_per_mtok: 1.74,
128
+ output_per_mtok: 3.48
129
+ },
130
+ "deepseek-chat": {
131
+ input_per_mtok: 0.14,
132
+ output_per_mtok: 0.28
133
+ }
134
+ };
135
+
136
+ // src/_internal/pricing.ts
137
+ var PRICING = pricing_default;
138
+ var REGION_PREFIXES = ["us.", "eu.", "apac.", "global."];
139
+ var VENDOR_PREFIXES = [
140
+ "anthropic.",
141
+ "meta.",
142
+ "mistral.",
143
+ "cohere.",
144
+ "amazon.",
145
+ "ai21.",
146
+ "deepseek.",
147
+ "openai.",
148
+ "google.",
149
+ "qwen."
150
+ ];
151
+ function normalizeCandidates(model) {
152
+ const candidates = [];
153
+ const seen = /* @__PURE__ */ new Set();
154
+ const add = (x) => {
155
+ if (x && !seen.has(x)) {
156
+ seen.add(x);
157
+ candidates.push(x);
158
+ }
159
+ };
160
+ add(model);
161
+ if (model.includes("/")) {
162
+ const parts = model.split("/");
163
+ for (let i = 1; i < parts.length; i++) {
164
+ add(parts.slice(i).join("/"));
165
+ }
166
+ }
167
+ let base = candidates[candidates.length - 1] ?? model;
168
+ for (const region of REGION_PREFIXES) {
169
+ if (base.startsWith(region)) {
170
+ base = base.slice(region.length);
171
+ add(base);
172
+ break;
173
+ }
174
+ }
175
+ for (const vendor of VENDOR_PREFIXES) {
176
+ if (base.startsWith(vendor)) {
177
+ base = base.slice(vendor.length);
178
+ add(base);
179
+ break;
180
+ }
181
+ }
182
+ if (base.includes(":")) {
183
+ add(base.split(":", 1)[0]);
184
+ }
185
+ return candidates;
186
+ }
187
+ function matchOne(table, model) {
188
+ if (Object.prototype.hasOwnProperty.call(table, model)) {
189
+ return table[model];
190
+ }
191
+ let bestKey;
192
+ for (const key of Object.keys(table)) {
193
+ if (model.startsWith(key) && (bestKey === void 0 || key.length > bestKey.length)) {
194
+ bestKey = key;
195
+ }
196
+ }
197
+ if (bestKey !== void 0) {
198
+ return table[bestKey];
199
+ }
200
+ for (const key of Object.keys(table)) {
201
+ if (key.startsWith(model)) {
202
+ return table[key];
203
+ }
204
+ }
205
+ return void 0;
206
+ }
207
+ function getModelPricing(model) {
208
+ for (const candidate of normalizeCandidates(model)) {
209
+ const hit = matchOne(PRICING, candidate);
210
+ if (hit !== void 0) return hit;
211
+ }
212
+ return void 0;
213
+ }
214
+ function calculateCost(options) {
215
+ const { inputTokens, outputTokens, model, cachedInputTokens = 0, cacheWriteTokens = 0 } = options;
216
+ const pricing = getModelPricing(model);
217
+ if (pricing === void 0) return void 0;
218
+ const inputPerMtok = pricing.input_per_mtok ?? 0;
219
+ const outputPerMtok = pricing.output_per_mtok ?? 0;
220
+ const cachedPerMtok = pricing.cached_per_mtok ?? inputPerMtok;
221
+ const cacheWritePerMtok = pricing.cache_write_per_mtok ?? 0;
222
+ const standardInput = Math.max(0, inputTokens - cachedInputTokens);
223
+ const inputCost = standardInput / 1e6 * inputPerMtok;
224
+ const cachedCost = cachedInputTokens / 1e6 * cachedPerMtok;
225
+ const writeCost = cacheWriteTokens / 1e6 * cacheWritePerMtok;
226
+ const outputCost = outputTokens / 1e6 * outputPerMtok;
227
+ return inputCost + cachedCost + writeCost + outputCost;
228
+ }
229
+
230
+ export { calculateCost };
231
+ //# sourceMappingURL=chunk-XTKMUJWI.js.map
232
+ //# sourceMappingURL=chunk-XTKMUJWI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/pricing.json","../src/_internal/pricing.ts"],"names":[],"mappings":"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","file":"chunk-XTKMUJWI.js","sourcesContent":["{\n \"claude-opus-4-6\": {\n \"input_per_mtok\": 5.0,\n \"output_per_mtok\": 25.0,\n \"cached_per_mtok\": 0.5,\n \"cache_write_per_mtok\": 6.25\n },\n \"claude-sonnet-4-6\": {\n \"input_per_mtok\": 3.0,\n \"output_per_mtok\": 15.0,\n \"cached_per_mtok\": 0.3,\n \"cache_write_per_mtok\": 3.75\n },\n \"claude-haiku-4-5\": {\n \"input_per_mtok\": 1.0,\n \"output_per_mtok\": 5.0,\n \"cached_per_mtok\": 0.1,\n \"cache_write_per_mtok\": 1.25\n },\n \"claude-sonnet-4-5\": {\n \"input_per_mtok\": 3.0,\n \"output_per_mtok\": 15.0,\n \"cached_per_mtok\": 0.3,\n \"cache_write_per_mtok\": 3.75\n },\n \"claude-opus-4-0\": {\n \"input_per_mtok\": 15.0,\n \"output_per_mtok\": 75.0\n },\n \"claude-haiku-3-5\": {\n \"input_per_mtok\": 0.8,\n \"output_per_mtok\": 4.0\n },\n \"claude-3-haiku\": {\n \"input_per_mtok\": 0.25,\n \"output_per_mtok\": 1.25\n },\n \"gpt-5.4\": {\n \"input_per_mtok\": 2.5,\n \"output_per_mtok\": 15.0,\n \"cached_per_mtok\": 0.25\n },\n \"gpt-5.4-mini\": {\n \"input_per_mtok\": 0.75,\n \"output_per_mtok\": 4.5,\n \"cached_per_mtok\": 0.075\n },\n \"gpt-5.4-nano\": {\n \"input_per_mtok\": 0.2,\n \"output_per_mtok\": 1.25,\n \"cached_per_mtok\": 0.02\n },\n \"gpt-5\": {\n \"input_per_mtok\": 1.25,\n \"output_per_mtok\": 10.0,\n \"cached_per_mtok\": 0.125\n },\n \"o3\": {\n \"input_per_mtok\": 2.0,\n \"output_per_mtok\": 8.0,\n \"cached_per_mtok\": 0.5\n },\n \"o4-mini\": {\n \"input_per_mtok\": 1.1,\n \"output_per_mtok\": 4.4,\n \"cached_per_mtok\": 0.275\n },\n \"gpt-4.1\": {\n \"input_per_mtok\": 2.0,\n \"output_per_mtok\": 8.0,\n \"cached_per_mtok\": 0.5\n },\n \"gpt-4.1-mini\": {\n \"input_per_mtok\": 0.4,\n \"output_per_mtok\": 1.6,\n \"cached_per_mtok\": 0.1\n },\n \"gpt-4.1-nano\": {\n \"input_per_mtok\": 0.1,\n \"output_per_mtok\": 0.4,\n \"cached_per_mtok\": 0.025\n },\n \"gpt-4o\": {\n \"input_per_mtok\": 2.5,\n \"output_per_mtok\": 10.0,\n \"cached_per_mtok\": 1.25\n },\n \"gpt-4o-mini\": {\n \"input_per_mtok\": 0.15,\n \"output_per_mtok\": 0.6,\n \"cached_per_mtok\": 0.075\n },\n \"gemini-2.5-pro\": {\n \"input_per_mtok\": 1.25,\n \"output_per_mtok\": 10.0\n },\n \"gemini-2.5-flash-lite\": {\n \"input_per_mtok\": 0.1,\n \"output_per_mtok\": 0.4\n },\n \"gemini-2.5-flash\": {\n \"input_per_mtok\": 0.3,\n \"output_per_mtok\": 2.5\n },\n \"gemini-2.0-flash\": {\n \"input_per_mtok\": 0.1,\n \"output_per_mtok\": 0.4\n },\n \"mistral-large\": {\n \"input_per_mtok\": 2.0,\n \"output_per_mtok\": 6.0\n },\n \"mistral-small\": {\n \"input_per_mtok\": 0.2,\n \"output_per_mtok\": 0.6\n },\n \"command-r-plus\": {\n \"input_per_mtok\": 2.5,\n \"output_per_mtok\": 10.0\n },\n \"command-r\": {\n \"input_per_mtok\": 0.15,\n \"output_per_mtok\": 0.6\n },\n \"deepseek-reasoner\": {\n \"input_per_mtok\": 1.74,\n \"output_per_mtok\": 3.48\n },\n \"deepseek-chat\": {\n \"input_per_mtok\": 0.14,\n \"output_per_mtok\": 0.28\n }\n}\n","/**\n * LLM model pricing table and cost calculation.\n *\n * Mirrors `apps/sdk/python/src/morse_ai/pricing.py` field-for-field —\n * the bundled `data/pricing.json` table is a byte-for-byte copy of the\n * Python SDK's table. Keep both sides in lockstep.\n */\n\nimport pricingTable from \"../data/pricing.json\";\n\nexport interface ModelPricing {\n input_per_mtok: number;\n output_per_mtok: number;\n cached_per_mtok?: number;\n cache_write_per_mtok?: number;\n}\n\ntype PricingTable = Record<string, ModelPricing>;\n\nconst PRICING = pricingTable as PricingTable;\n\n// Region/vendor prefixes stripped from routed model ids (LiteLLM/OpenRouter/Bedrock).\nconst REGION_PREFIXES = [\"us.\", \"eu.\", \"apac.\", \"global.\"] as const;\nconst VENDOR_PREFIXES = [\n \"anthropic.\",\n \"meta.\",\n \"mistral.\",\n \"cohere.\",\n \"amazon.\",\n \"ai21.\",\n \"deepseek.\",\n \"openai.\",\n \"google.\",\n \"qwen.\",\n] as const;\n\n/**\n * Canonical-key candidates for a (possibly provider-prefixed) model id.\n *\n * Mirrors the server cost_engine normalizer: handles \"openai/gpt-4o\",\n * \"openrouter/openai/gpt-4o\", \"vertex_ai/gemini-2.5-pro\", and Bedrock\n * \"us.anthropic.claude-3-5-sonnet-20241022-v2:0\". Most-specific first.\n */\nfunction normalizeCandidates(model: string): string[] {\n const candidates: string[] = [];\n const seen = new Set<string>();\n\n const add = (x: string): void => {\n if (x && !seen.has(x)) {\n seen.add(x);\n candidates.push(x);\n }\n };\n\n add(model);\n if (model.includes(\"/\")) {\n const parts = model.split(\"/\");\n for (let i = 1; i < parts.length; i++) {\n add(parts.slice(i).join(\"/\"));\n }\n }\n\n let base = candidates[candidates.length - 1] ?? model;\n for (const region of REGION_PREFIXES) {\n if (base.startsWith(region)) {\n base = base.slice(region.length);\n add(base);\n break;\n }\n }\n for (const vendor of VENDOR_PREFIXES) {\n if (base.startsWith(vendor)) {\n base = base.slice(vendor.length);\n add(base);\n break;\n }\n }\n if (base.includes(\":\")) {\n add(base.split(\":\", 1)[0] as string);\n }\n\n return candidates;\n}\n\nfunction matchOne(table: PricingTable, model: string): ModelPricing | undefined {\n // Exact match\n if (Object.prototype.hasOwnProperty.call(table, model)) {\n return table[model];\n }\n // Prefix match: \"claude-opus-4-6-20260205\" matches \"claude-opus-4-6\"\n let bestKey: string | undefined;\n for (const key of Object.keys(table)) {\n if (model.startsWith(key) && (bestKey === undefined || key.length > bestKey.length)) {\n bestKey = key;\n }\n }\n if (bestKey !== undefined) {\n return table[bestKey];\n }\n // Reverse: alias \"claude-opus-4-6\" matches \"claude-opus-4-6-20260205\"\n for (const key of Object.keys(table)) {\n if (key.startsWith(model)) {\n return table[key];\n }\n }\n return undefined;\n}\n\n/**\n * Look up pricing for a model ID.\n *\n * Handles full IDs (claude-opus-4-6-20260205), aliases (claude-opus-4-6), and\n * provider-routed ids from LangGraph/LiteLLM/OpenRouter/Bedrock/Vertex\n * (e.g. \"openai/gpt-4o\", \"us.anthropic.claude-3-5-sonnet-20241022-v2:0\") via\n * exact, longest-prefix, and provider-prefix normalization.\n */\nexport function getModelPricing(model: string): ModelPricing | undefined {\n for (const candidate of normalizeCandidates(model)) {\n const hit = matchOne(PRICING, candidate);\n if (hit !== undefined) return hit;\n }\n return undefined;\n}\n\nexport interface CalculateCostOptions {\n inputTokens: number;\n outputTokens: number;\n model: string;\n cachedInputTokens?: number;\n cacheWriteTokens?: number;\n}\n\n/**\n * Calculate total cost in USD for a model invocation.\n *\n * Returns `undefined` if the model is not in the pricing table.\n */\nexport function calculateCost(options: CalculateCostOptions): number | undefined {\n const { inputTokens, outputTokens, model, cachedInputTokens = 0, cacheWriteTokens = 0 } = options;\n\n const pricing = getModelPricing(model);\n if (pricing === undefined) return undefined;\n\n const inputPerMtok = pricing.input_per_mtok ?? 0;\n const outputPerMtok = pricing.output_per_mtok ?? 0;\n const cachedPerMtok = pricing.cached_per_mtok ?? inputPerMtok;\n const cacheWritePerMtok = pricing.cache_write_per_mtok ?? 0;\n\n const standardInput = Math.max(0, inputTokens - cachedInputTokens);\n const inputCost = (standardInput / 1_000_000) * inputPerMtok;\n const cachedCost = (cachedInputTokens / 1_000_000) * cachedPerMtok;\n const writeCost = (cacheWriteTokens / 1_000_000) * cacheWritePerMtok;\n const outputCost = (outputTokens / 1_000_000) * outputPerMtok;\n\n return inputCost + cachedCost + writeCost + outputCost;\n}\n"]}
@@ -0,0 +1,412 @@
1
+ import { absorbErrorsSync } from './chunk-RTL23YOQ.js';
2
+
3
+ // src/_agent-sdk-common/redaction.ts
4
+ var DEFAULT_TOOL_ARG_MAX_BYTES = 2048;
5
+ var DEFAULT_TOOL_OUTPUT_MAX_BYTES = 4096;
6
+ var DEFAULT_BLOB_TRIGGER_BYTES = 4096;
7
+ var REDACTION_ERROR_FALLBACK = "<redaction_error>";
8
+ function summarizeImpl(value, opts, defaultMax) {
9
+ const maxBytes = opts.maxBytes ?? defaultMax;
10
+ const stripBlobs = opts.stripBlobs !== false;
11
+ let str;
12
+ if (typeof value === "string") {
13
+ str = value;
14
+ } else if (value === void 0) {
15
+ str = "undefined";
16
+ } else {
17
+ str = canonicalJsonStringify(value);
18
+ }
19
+ if (stripBlobs) {
20
+ str = stripBlobsFromString(str);
21
+ }
22
+ return truncateUtf8(str, maxBytes);
23
+ }
24
+ var summarizeToolInputInner = (value, opts) => summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_ARG_MAX_BYTES);
25
+ var summarizeToolOutputInner = (value, opts) => summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_OUTPUT_MAX_BYTES);
26
+ var safeSummarizeToolInput = absorbErrorsSync(summarizeToolInputInner, {
27
+ fingerprint: "agent-sdk.redaction.summarizeToolInput"
28
+ });
29
+ var safeSummarizeToolOutput = absorbErrorsSync(summarizeToolOutputInner, {
30
+ fingerprint: "agent-sdk.redaction.summarizeToolOutput"
31
+ });
32
+ function summarizeToolInput(value, opts) {
33
+ const out = safeSummarizeToolInput(value, opts);
34
+ return out === void 0 ? REDACTION_ERROR_FALLBACK : out;
35
+ }
36
+ function summarizeToolOutput(value, opts) {
37
+ const out = safeSummarizeToolOutput(value, opts);
38
+ return out === void 0 ? REDACTION_ERROR_FALLBACK : out;
39
+ }
40
+ var BINARY_KINDS = /* @__PURE__ */ new Set(["image", "audio", "video", "screenshot"]);
41
+ function summarizeBinaryBlockInner(block) {
42
+ if (block === null || typeof block !== "object") return null;
43
+ const b = block;
44
+ const type = typeof b.type === "string" ? b.type : null;
45
+ if (type === null || !BINARY_KINDS.has(type)) return null;
46
+ const kind = type;
47
+ let base64 = null;
48
+ let mime;
49
+ const source = b.source;
50
+ if (source !== null && typeof source === "object") {
51
+ const s = source;
52
+ if (typeof s.data === "string") base64 = s.data;
53
+ if (typeof s.media_type === "string") mime = s.media_type;
54
+ else if (typeof s.mediaType === "string") mime = s.mediaType;
55
+ }
56
+ if (base64 === null) {
57
+ const url = typeof b.url === "string" ? b.url : typeof b.dataUrl === "string" ? b.dataUrl : null;
58
+ if (url !== null && url.startsWith("data:")) {
59
+ const parsed = parseDataUrl(url);
60
+ if (parsed !== null) {
61
+ base64 = parsed.base64;
62
+ if (mime === void 0) mime = parsed.mime;
63
+ }
64
+ }
65
+ }
66
+ if (base64 === null && typeof b.data === "string") {
67
+ base64 = b.data;
68
+ }
69
+ let dims;
70
+ const w = b.width;
71
+ const h = b.height;
72
+ if (typeof w === "number" && typeof h === "number") {
73
+ dims = { width: w, height: h };
74
+ }
75
+ let hash;
76
+ let byte_len;
77
+ if (base64 !== null) {
78
+ const bytes = decodeBase64ToBytes(base64);
79
+ hash = sha256HexBytes(bytes);
80
+ byte_len = bytes.length;
81
+ } else {
82
+ hash = sha256Hex("");
83
+ byte_len = 0;
84
+ }
85
+ const out = { kind, hash, byte_len };
86
+ if (dims !== void 0) out.dims = dims;
87
+ if (mime !== void 0) out.mime = mime;
88
+ return out;
89
+ }
90
+ absorbErrorsSync(summarizeBinaryBlockInner, {
91
+ fingerprint: "agent-sdk.redaction.summarizeBinaryBlock"
92
+ });
93
+ function redactContentBlocksInner(blocks) {
94
+ return blocks.map((block) => {
95
+ const summary = summarizeBinaryBlockInner(block);
96
+ return summary === null ? block : summary;
97
+ });
98
+ }
99
+ absorbErrorsSync(redactContentBlocksInner, {
100
+ fingerprint: "agent-sdk.redaction.redactContentBlocks"
101
+ });
102
+ var DATA_URL_RE = /data:[A-Za-z0-9.+/-]*(?:;[A-Za-z0-9.=+/-]+)*?;base64,[A-Za-z0-9+/=]+/g;
103
+ var LONG_BASE64_RE = /[A-Za-z0-9+/]{100,}={0,2}/g;
104
+ function stripBlobsFromString(s) {
105
+ let out = s.replace(DATA_URL_RE, (match) => {
106
+ if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;
107
+ const parsed = parseDataUrl(match);
108
+ if (parsed === null) {
109
+ return blobMarker(sha256Hex(match), match.length);
110
+ }
111
+ const bytes = decodeBase64ToBytes(parsed.base64);
112
+ return blobMarker(sha256HexBytes(bytes), bytes.length);
113
+ });
114
+ out = out.replace(LONG_BASE64_RE, (match) => {
115
+ if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;
116
+ const bytes = decodeBase64ToBytes(match);
117
+ return blobMarker(sha256HexBytes(bytes), bytes.length);
118
+ });
119
+ return out;
120
+ }
121
+ function blobMarker(hashHex, byteLen) {
122
+ return `<blob:sha256:${hashHex}:${byteLen}>`;
123
+ }
124
+ function parseDataUrl(url) {
125
+ if (!url.startsWith("data:")) return null;
126
+ const comma = url.indexOf(",");
127
+ if (comma < 0) return null;
128
+ const header = url.slice(5, comma);
129
+ const payload = url.slice(comma + 1);
130
+ if (!header.includes("base64")) return null;
131
+ const parts = header.split(";");
132
+ const mime = parts[0] !== void 0 && parts[0] !== "" ? parts[0] : "application/octet-stream";
133
+ return { mime, base64: payload };
134
+ }
135
+ function decodeBase64ToBytes(b64) {
136
+ const cleaned = b64.replace(/\s+/g, "");
137
+ try {
138
+ if (typeof process !== "undefined" && process.versions?.node) {
139
+ const dynamicRequire = Function("m", "return require(m)");
140
+ const bufferMod = dynamicRequire("node:buffer");
141
+ if (bufferMod?.Buffer) {
142
+ const buf = bufferMod.Buffer.from(cleaned, "base64");
143
+ return new Uint8Array(buf);
144
+ }
145
+ }
146
+ } catch {
147
+ }
148
+ try {
149
+ if (typeof atob === "function") {
150
+ const bin = atob(cleaned);
151
+ const out = new Uint8Array(bin.length);
152
+ for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
153
+ return out;
154
+ }
155
+ } catch {
156
+ }
157
+ return pureBase64Decode(cleaned);
158
+ }
159
+ var B64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
160
+ var B64_LOOKUP = (() => {
161
+ const m = {};
162
+ for (let i = 0; i < B64_ALPHABET.length; i++) m[B64_ALPHABET[i]] = i;
163
+ return m;
164
+ })();
165
+ function pureBase64Decode(s) {
166
+ const stripped = s.replace(/=+$/, "");
167
+ const out = [];
168
+ let buffer = 0;
169
+ let bits = 0;
170
+ for (let i = 0; i < stripped.length; i++) {
171
+ const ch = stripped[i];
172
+ const v = B64_LOOKUP[ch];
173
+ if (v === void 0) continue;
174
+ buffer = buffer << 6 | v;
175
+ bits += 6;
176
+ if (bits >= 8) {
177
+ bits -= 8;
178
+ out.push(buffer >> bits & 255);
179
+ }
180
+ }
181
+ return new Uint8Array(out);
182
+ }
183
+ function canonicalJsonStringify(value) {
184
+ return JSON.stringify(value, function replacer(_key, val) {
185
+ if (val && typeof val === "object" && !Array.isArray(val)) {
186
+ const obj = val;
187
+ const sorted = {};
188
+ for (const k of Object.keys(obj).sort()) {
189
+ sorted[k] = obj[k];
190
+ }
191
+ return sorted;
192
+ }
193
+ return val;
194
+ });
195
+ }
196
+ function truncateUtf8(text, maxBytes) {
197
+ if (maxBytes <= 0) return "";
198
+ if (text.length <= maxBytes / 4) return text;
199
+ const bytes = utf8Encode(text);
200
+ if (bytes.length <= maxBytes) return text;
201
+ let cut = maxBytes;
202
+ while (cut > 0 && (bytes[cut] & 192) === 128) {
203
+ cut--;
204
+ }
205
+ return utf8Decode(bytes.subarray(0, cut));
206
+ }
207
+ function utf8Encode(text) {
208
+ if (typeof TextEncoder !== "undefined") {
209
+ return new TextEncoder().encode(text);
210
+ }
211
+ const out = [];
212
+ for (let i = 0; i < text.length; i++) {
213
+ const code = text.charCodeAt(i);
214
+ if (code < 128) {
215
+ out.push(code);
216
+ } else if (code < 2048) {
217
+ out.push(192 | code >> 6, 128 | code & 63);
218
+ } else {
219
+ out.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);
220
+ }
221
+ }
222
+ return new Uint8Array(out);
223
+ }
224
+ function utf8Decode(bytes) {
225
+ if (typeof TextDecoder !== "undefined") {
226
+ return new TextDecoder("utf-8").decode(bytes);
227
+ }
228
+ let out = "";
229
+ for (let i = 0; i < bytes.length; ) {
230
+ const b = bytes[i];
231
+ if (b < 128) {
232
+ out += String.fromCharCode(b);
233
+ i++;
234
+ } else if (b < 224) {
235
+ out += String.fromCharCode((b & 31) << 6 | bytes[i + 1] & 63);
236
+ i += 2;
237
+ } else {
238
+ out += String.fromCharCode(
239
+ (b & 15) << 12 | (bytes[i + 1] & 63) << 6 | bytes[i + 2] & 63
240
+ );
241
+ i += 3;
242
+ }
243
+ }
244
+ return out;
245
+ }
246
+ function sha256Hex(text) {
247
+ try {
248
+ if (typeof process !== "undefined" && process.versions?.node) {
249
+ const dynamicRequire = Function("m", "return require(m)");
250
+ const cryptoMod = dynamicRequire("node:crypto");
251
+ if (cryptoMod?.createHash) {
252
+ return cryptoMod.createHash("sha256").update(text).digest("hex");
253
+ }
254
+ }
255
+ } catch {
256
+ }
257
+ return purejsSha256Bytes(utf8Encode(text));
258
+ }
259
+ function sha256HexBytes(bytes) {
260
+ try {
261
+ if (typeof process !== "undefined" && process.versions?.node) {
262
+ const dynamicRequire = Function("m", "return require(m)");
263
+ const cryptoMod = dynamicRequire("node:crypto");
264
+ if (cryptoMod?.createHash) {
265
+ return cryptoMod.createHash("sha256").update(bytes).digest("hex");
266
+ }
267
+ }
268
+ } catch {
269
+ }
270
+ return purejsSha256Bytes(bytes);
271
+ }
272
+ function purejsSha256Bytes(msg) {
273
+ const K = [
274
+ 1116352408,
275
+ 1899447441,
276
+ 3049323471,
277
+ 3921009573,
278
+ 961987163,
279
+ 1508970993,
280
+ 2453635748,
281
+ 2870763221,
282
+ 3624381080,
283
+ 310598401,
284
+ 607225278,
285
+ 1426881987,
286
+ 1925078388,
287
+ 2162078206,
288
+ 2614888103,
289
+ 3248222580,
290
+ 3835390401,
291
+ 4022224774,
292
+ 264347078,
293
+ 604807628,
294
+ 770255983,
295
+ 1249150122,
296
+ 1555081692,
297
+ 1996064986,
298
+ 2554220882,
299
+ 2821834349,
300
+ 2952996808,
301
+ 3210313671,
302
+ 3336571891,
303
+ 3584528711,
304
+ 113926993,
305
+ 338241895,
306
+ 666307205,
307
+ 773529912,
308
+ 1294757372,
309
+ 1396182291,
310
+ 1695183700,
311
+ 1986661051,
312
+ 2177026350,
313
+ 2456956037,
314
+ 2730485921,
315
+ 2820302411,
316
+ 3259730800,
317
+ 3345764771,
318
+ 3516065817,
319
+ 3600352804,
320
+ 4094571909,
321
+ 275423344,
322
+ 430227734,
323
+ 506948616,
324
+ 659060556,
325
+ 883997877,
326
+ 958139571,
327
+ 1322822218,
328
+ 1537002063,
329
+ 1747873779,
330
+ 1955562222,
331
+ 2024104815,
332
+ 2227730452,
333
+ 2361852424,
334
+ 2428436474,
335
+ 2756734187,
336
+ 3204031479,
337
+ 3329325298
338
+ ];
339
+ const H = [
340
+ 1779033703,
341
+ 3144134277,
342
+ 1013904242,
343
+ 2773480762,
344
+ 1359893119,
345
+ 2600822924,
346
+ 528734635,
347
+ 1541459225
348
+ ];
349
+ const msgLen = msg.length;
350
+ const bitLen = msgLen * 8;
351
+ const padded = new Uint8Array(msgLen + 9 + 63 >> 6 << 6);
352
+ padded.set(msg);
353
+ padded[msgLen] = 128;
354
+ const lo = (bitLen & 4294967295) >>> 0;
355
+ const hi = Math.floor(bitLen / 4294967296) >>> 0;
356
+ padded[padded.length - 8] = hi >>> 24 & 255;
357
+ padded[padded.length - 7] = hi >>> 16 & 255;
358
+ padded[padded.length - 6] = hi >>> 8 & 255;
359
+ padded[padded.length - 5] = hi & 255;
360
+ padded[padded.length - 4] = lo >>> 24 & 255;
361
+ padded[padded.length - 3] = lo >>> 16 & 255;
362
+ padded[padded.length - 2] = lo >>> 8 & 255;
363
+ padded[padded.length - 1] = lo & 255;
364
+ const W = new Uint32Array(64);
365
+ for (let chunk = 0; chunk < padded.length; chunk += 64) {
366
+ for (let i = 0; i < 16; i++) {
367
+ W[i] = (padded[chunk + i * 4] << 24 | padded[chunk + i * 4 + 1] << 16 | padded[chunk + i * 4 + 2] << 8 | padded[chunk + i * 4 + 3]) >>> 0;
368
+ }
369
+ for (let i = 16; i < 64; i++) {
370
+ const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ W[i - 15] >>> 3;
371
+ const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ W[i - 2] >>> 10;
372
+ W[i] = W[i - 16] + s0 + W[i - 7] + s1 >>> 0;
373
+ }
374
+ let [a, b, c, d, e, f, g, h] = H;
375
+ for (let i = 0; i < 64; i++) {
376
+ const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
377
+ const ch = e & f ^ ~e & g;
378
+ const temp1 = h + S1 + ch + K[i] + W[i] >>> 0;
379
+ const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);
380
+ const maj = a & b ^ a & c ^ b & c;
381
+ const temp2 = S0 + maj >>> 0;
382
+ h = g;
383
+ g = f;
384
+ f = e;
385
+ e = d + temp1 >>> 0;
386
+ d = c;
387
+ c = b;
388
+ b = a;
389
+ a = temp1 + temp2 >>> 0;
390
+ }
391
+ H[0] = H[0] + a >>> 0;
392
+ H[1] = H[1] + b >>> 0;
393
+ H[2] = H[2] + c >>> 0;
394
+ H[3] = H[3] + d >>> 0;
395
+ H[4] = H[4] + e >>> 0;
396
+ H[5] = H[5] + f >>> 0;
397
+ H[6] = H[6] + g >>> 0;
398
+ H[7] = H[7] + h >>> 0;
399
+ }
400
+ let hex = "";
401
+ for (const v of H) {
402
+ hex += v.toString(16).padStart(8, "0");
403
+ }
404
+ return hex;
405
+ }
406
+ function rotr(x, n) {
407
+ return (x >>> n | x << 32 - n) >>> 0;
408
+ }
409
+
410
+ export { summarizeToolInput, summarizeToolOutput };
411
+ //# sourceMappingURL=chunk-ZKUGOWER.js.map
412
+ //# sourceMappingURL=chunk-ZKUGOWER.js.map