@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,234 @@
1
+ 'use strict';
2
+
3
+ // src/data/pricing.json
4
+ var pricing_default = {
5
+ "claude-opus-4-6": {
6
+ input_per_mtok: 5,
7
+ output_per_mtok: 25,
8
+ cached_per_mtok: 0.5,
9
+ cache_write_per_mtok: 6.25
10
+ },
11
+ "claude-sonnet-4-6": {
12
+ input_per_mtok: 3,
13
+ output_per_mtok: 15,
14
+ cached_per_mtok: 0.3,
15
+ cache_write_per_mtok: 3.75
16
+ },
17
+ "claude-haiku-4-5": {
18
+ input_per_mtok: 1,
19
+ output_per_mtok: 5,
20
+ cached_per_mtok: 0.1,
21
+ cache_write_per_mtok: 1.25
22
+ },
23
+ "claude-sonnet-4-5": {
24
+ input_per_mtok: 3,
25
+ output_per_mtok: 15,
26
+ cached_per_mtok: 0.3,
27
+ cache_write_per_mtok: 3.75
28
+ },
29
+ "claude-opus-4-0": {
30
+ input_per_mtok: 15,
31
+ output_per_mtok: 75
32
+ },
33
+ "claude-haiku-3-5": {
34
+ input_per_mtok: 0.8,
35
+ output_per_mtok: 4
36
+ },
37
+ "claude-3-haiku": {
38
+ input_per_mtok: 0.25,
39
+ output_per_mtok: 1.25
40
+ },
41
+ "gpt-5.4": {
42
+ input_per_mtok: 2.5,
43
+ output_per_mtok: 15,
44
+ cached_per_mtok: 0.25
45
+ },
46
+ "gpt-5.4-mini": {
47
+ input_per_mtok: 0.75,
48
+ output_per_mtok: 4.5,
49
+ cached_per_mtok: 0.075
50
+ },
51
+ "gpt-5.4-nano": {
52
+ input_per_mtok: 0.2,
53
+ output_per_mtok: 1.25,
54
+ cached_per_mtok: 0.02
55
+ },
56
+ "gpt-5": {
57
+ input_per_mtok: 1.25,
58
+ output_per_mtok: 10,
59
+ cached_per_mtok: 0.125
60
+ },
61
+ o3: {
62
+ input_per_mtok: 2,
63
+ output_per_mtok: 8,
64
+ cached_per_mtok: 0.5
65
+ },
66
+ "o4-mini": {
67
+ input_per_mtok: 1.1,
68
+ output_per_mtok: 4.4,
69
+ cached_per_mtok: 0.275
70
+ },
71
+ "gpt-4.1": {
72
+ input_per_mtok: 2,
73
+ output_per_mtok: 8,
74
+ cached_per_mtok: 0.5
75
+ },
76
+ "gpt-4.1-mini": {
77
+ input_per_mtok: 0.4,
78
+ output_per_mtok: 1.6,
79
+ cached_per_mtok: 0.1
80
+ },
81
+ "gpt-4.1-nano": {
82
+ input_per_mtok: 0.1,
83
+ output_per_mtok: 0.4,
84
+ cached_per_mtok: 0.025
85
+ },
86
+ "gpt-4o": {
87
+ input_per_mtok: 2.5,
88
+ output_per_mtok: 10,
89
+ cached_per_mtok: 1.25
90
+ },
91
+ "gpt-4o-mini": {
92
+ input_per_mtok: 0.15,
93
+ output_per_mtok: 0.6,
94
+ cached_per_mtok: 0.075
95
+ },
96
+ "gemini-2.5-pro": {
97
+ input_per_mtok: 1.25,
98
+ output_per_mtok: 10
99
+ },
100
+ "gemini-2.5-flash-lite": {
101
+ input_per_mtok: 0.1,
102
+ output_per_mtok: 0.4
103
+ },
104
+ "gemini-2.5-flash": {
105
+ input_per_mtok: 0.3,
106
+ output_per_mtok: 2.5
107
+ },
108
+ "gemini-2.0-flash": {
109
+ input_per_mtok: 0.1,
110
+ output_per_mtok: 0.4
111
+ },
112
+ "mistral-large": {
113
+ input_per_mtok: 2,
114
+ output_per_mtok: 6
115
+ },
116
+ "mistral-small": {
117
+ input_per_mtok: 0.2,
118
+ output_per_mtok: 0.6
119
+ },
120
+ "command-r-plus": {
121
+ input_per_mtok: 2.5,
122
+ output_per_mtok: 10
123
+ },
124
+ "command-r": {
125
+ input_per_mtok: 0.15,
126
+ output_per_mtok: 0.6
127
+ },
128
+ "deepseek-reasoner": {
129
+ input_per_mtok: 1.74,
130
+ output_per_mtok: 3.48
131
+ },
132
+ "deepseek-chat": {
133
+ input_per_mtok: 0.14,
134
+ output_per_mtok: 0.28
135
+ }
136
+ };
137
+
138
+ // src/_internal/pricing.ts
139
+ var PRICING = pricing_default;
140
+ var REGION_PREFIXES = ["us.", "eu.", "apac.", "global."];
141
+ var VENDOR_PREFIXES = [
142
+ "anthropic.",
143
+ "meta.",
144
+ "mistral.",
145
+ "cohere.",
146
+ "amazon.",
147
+ "ai21.",
148
+ "deepseek.",
149
+ "openai.",
150
+ "google.",
151
+ "qwen."
152
+ ];
153
+ function normalizeCandidates(model) {
154
+ const candidates = [];
155
+ const seen = /* @__PURE__ */ new Set();
156
+ const add = (x) => {
157
+ if (x && !seen.has(x)) {
158
+ seen.add(x);
159
+ candidates.push(x);
160
+ }
161
+ };
162
+ add(model);
163
+ if (model.includes("/")) {
164
+ const parts = model.split("/");
165
+ for (let i = 1; i < parts.length; i++) {
166
+ add(parts.slice(i).join("/"));
167
+ }
168
+ }
169
+ let base = candidates[candidates.length - 1] ?? model;
170
+ for (const region of REGION_PREFIXES) {
171
+ if (base.startsWith(region)) {
172
+ base = base.slice(region.length);
173
+ add(base);
174
+ break;
175
+ }
176
+ }
177
+ for (const vendor of VENDOR_PREFIXES) {
178
+ if (base.startsWith(vendor)) {
179
+ base = base.slice(vendor.length);
180
+ add(base);
181
+ break;
182
+ }
183
+ }
184
+ if (base.includes(":")) {
185
+ add(base.split(":", 1)[0]);
186
+ }
187
+ return candidates;
188
+ }
189
+ function matchOne(table, model) {
190
+ if (Object.prototype.hasOwnProperty.call(table, model)) {
191
+ return table[model];
192
+ }
193
+ let bestKey;
194
+ for (const key of Object.keys(table)) {
195
+ if (model.startsWith(key) && (bestKey === void 0 || key.length > bestKey.length)) {
196
+ bestKey = key;
197
+ }
198
+ }
199
+ if (bestKey !== void 0) {
200
+ return table[bestKey];
201
+ }
202
+ for (const key of Object.keys(table)) {
203
+ if (key.startsWith(model)) {
204
+ return table[key];
205
+ }
206
+ }
207
+ return void 0;
208
+ }
209
+ function getModelPricing(model) {
210
+ for (const candidate of normalizeCandidates(model)) {
211
+ const hit = matchOne(PRICING, candidate);
212
+ if (hit !== void 0) return hit;
213
+ }
214
+ return void 0;
215
+ }
216
+ function calculateCost(options) {
217
+ const { inputTokens, outputTokens, model, cachedInputTokens = 0, cacheWriteTokens = 0 } = options;
218
+ const pricing = getModelPricing(model);
219
+ if (pricing === void 0) return void 0;
220
+ const inputPerMtok = pricing.input_per_mtok ?? 0;
221
+ const outputPerMtok = pricing.output_per_mtok ?? 0;
222
+ const cachedPerMtok = pricing.cached_per_mtok ?? inputPerMtok;
223
+ const cacheWritePerMtok = pricing.cache_write_per_mtok ?? 0;
224
+ const standardInput = Math.max(0, inputTokens - cachedInputTokens);
225
+ const inputCost = standardInput / 1e6 * inputPerMtok;
226
+ const cachedCost = cachedInputTokens / 1e6 * cachedPerMtok;
227
+ const writeCost = cacheWriteTokens / 1e6 * cacheWritePerMtok;
228
+ const outputCost = outputTokens / 1e6 * outputPerMtok;
229
+ return inputCost + cachedCost + writeCost + outputCost;
230
+ }
231
+
232
+ exports.calculateCost = calculateCost;
233
+ //# sourceMappingURL=chunk-KBWPNIH4.cjs.map
234
+ //# sourceMappingURL=chunk-KBWPNIH4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/pricing.json","../src/_internal/pricing.ts"],"names":[],"mappings":"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","file":"chunk-KBWPNIH4.cjs","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,365 @@
1
+ 'use strict';
2
+
3
+ // src/_agent-sdk-common/context-decomposer.ts
4
+ var CONTEXT_SEGMENT_CONTENT_BYTE_CAP = 4096;
5
+ function decomposeOpenAiMessages(messages, tools) {
6
+ const messagesArr = Array.isArray(messages) ? messages : void 0;
7
+ const toolsArr = Array.isArray(tools) ? tools : void 0;
8
+ if ((!messagesArr || messagesArr.length === 0) && (!toolsArr || toolsArr.length === 0)) {
9
+ return [];
10
+ }
11
+ try {
12
+ const segments = [];
13
+ let position = 0;
14
+ if (toolsArr && toolsArr.length > 0) {
15
+ const toolNames = [];
16
+ for (const t of toolsArr) {
17
+ if (t && typeof t === "object") {
18
+ const name = t.function?.name ?? t.name;
19
+ if (typeof name === "string" && name.length > 0) toolNames.push(name);
20
+ }
21
+ }
22
+ const toolsJson = canonicalJsonStringify(toolsArr);
23
+ segments.push(
24
+ makeSegment(position, "tool_descriptions", toolsJson, {
25
+ tool_count: toolsArr.length,
26
+ tool_names: toolNames
27
+ })
28
+ );
29
+ position += 1;
30
+ }
31
+ if (!messagesArr) return segments;
32
+ const systemParts = [];
33
+ for (const msg of messagesArr) {
34
+ if (getRole(msg) === "system") {
35
+ const text = contentToText(getContent(msg));
36
+ if (text) systemParts.push(text);
37
+ }
38
+ }
39
+ if (systemParts.length > 0) {
40
+ segments.push(makeSegment(position, "system_prompt", systemParts.join("\n")));
41
+ position += 1;
42
+ }
43
+ const nonSystem = messagesArr.filter((m) => getRole(m) !== "system");
44
+ let lastUserInputIdx = -1;
45
+ for (let i = nonSystem.length - 1; i >= 0; i--) {
46
+ if (getRole(nonSystem[i]) === "user") {
47
+ lastUserInputIdx = i;
48
+ break;
49
+ }
50
+ }
51
+ for (let i = 0; i < nonSystem.length; i++) {
52
+ const msg = nonSystem[i];
53
+ const role = getRole(msg);
54
+ const content = getContent(msg);
55
+ if (role === "tool") {
56
+ const text2 = contentToText(content);
57
+ if (text2) {
58
+ const toolCallId = getAttr(msg, "tool_call_id");
59
+ const prefix = typeof toolCallId === "string" && toolCallId.length > 0 ? `[tool_result id=${toolCallId}]
60
+ ` : "";
61
+ segments.push(makeSegment(position, "tool_observation", prefix + text2, { role }));
62
+ position += 1;
63
+ }
64
+ continue;
65
+ }
66
+ if (role === "system") continue;
67
+ const text = contentToText(content);
68
+ if (!text) continue;
69
+ const source = role === "user" && i === lastUserInputIdx ? "current_input" : "chat_history";
70
+ segments.push(makeSegment(position, source, text, role ? { role } : void 0));
71
+ position += 1;
72
+ }
73
+ return segments;
74
+ } catch {
75
+ return [];
76
+ }
77
+ }
78
+ var LC_TYPE_TO_ROLE = {
79
+ human: "user",
80
+ ai: "assistant",
81
+ system: "system",
82
+ tool: "tool",
83
+ function: "tool",
84
+ chat: "user"
85
+ };
86
+ function lcTypeToRole(lcType) {
87
+ return LC_TYPE_TO_ROLE[lcType.toLowerCase()] ?? lcType;
88
+ }
89
+ function getRole(msg) {
90
+ if (msg === null || typeof msg !== "object") return "";
91
+ const rec = msg;
92
+ if (typeof rec.role === "string") return rec.role;
93
+ if (typeof rec._getType === "function") {
94
+ try {
95
+ const t = rec._getType();
96
+ if (typeof t === "string" && t.length > 0) return lcTypeToRole(t);
97
+ } catch {
98
+ }
99
+ }
100
+ if (typeof rec.type === "string" && rec.type.length > 0) return lcTypeToRole(rec.type);
101
+ return "";
102
+ }
103
+ function getContent(msg) {
104
+ if (msg === null || typeof msg !== "object") return void 0;
105
+ return msg.content;
106
+ }
107
+ function getAttr(msg, attr) {
108
+ if (msg === null || typeof msg !== "object") return void 0;
109
+ return msg[attr];
110
+ }
111
+ function contentToText(content) {
112
+ if (content === null || content === void 0) return "";
113
+ if (typeof content === "string") return content;
114
+ if (Array.isArray(content)) {
115
+ const parts = [];
116
+ for (const part of content) {
117
+ if (part && typeof part === "object") {
118
+ const p = part;
119
+ if (p.type === "text") {
120
+ parts.push(typeof p.text === "string" ? p.text : String(p.text ?? ""));
121
+ } else if (p.type === "image_url") {
122
+ parts.push("[image]");
123
+ }
124
+ } else if (typeof part === "string") {
125
+ parts.push(part);
126
+ }
127
+ }
128
+ return parts.filter((p) => p.length > 0).join("\n");
129
+ }
130
+ return String(content);
131
+ }
132
+ function makeSegment(position, source, content, attrs) {
133
+ const contentHash = sha256Hex(content);
134
+ const truncated = truncateToBytes(content, CONTEXT_SEGMENT_CONTENT_BYTE_CAP);
135
+ const seg = {
136
+ position,
137
+ source,
138
+ content_hash: contentHash,
139
+ content: truncated.text
140
+ };
141
+ if (truncated.truncated) seg.content_truncated = true;
142
+ if (attrs) seg.attrs = attrs;
143
+ return seg;
144
+ }
145
+ function canonicalJsonStringify(value) {
146
+ try {
147
+ return JSON.stringify(value, function replacer(_key, val) {
148
+ if (val && typeof val === "object" && !Array.isArray(val)) {
149
+ const obj = val;
150
+ const sorted = {};
151
+ for (const k of Object.keys(obj).sort()) {
152
+ sorted[k] = obj[k];
153
+ }
154
+ return sorted;
155
+ }
156
+ return val;
157
+ });
158
+ } catch {
159
+ return String(value);
160
+ }
161
+ }
162
+ function sha256Hex(text) {
163
+ try {
164
+ if (typeof process !== "undefined" && process.versions?.node) {
165
+ const dynamicRequire = Function("m", "return require(m)");
166
+ const cryptoMod = dynamicRequire("node:crypto");
167
+ if (cryptoMod?.createHash) {
168
+ return cryptoMod.createHash("sha256").update(text).digest("hex");
169
+ }
170
+ }
171
+ } catch {
172
+ }
173
+ return purejsSha256(text);
174
+ }
175
+ function truncateToBytes(text, maxBytes) {
176
+ if (text.length <= maxBytes / 4) return { text, truncated: false };
177
+ const bytes = utf8Encode(text);
178
+ if (bytes.length <= maxBytes) return { text, truncated: false };
179
+ let cut = maxBytes;
180
+ while (cut > 0 && (bytes[cut] & 192) === 128) {
181
+ cut--;
182
+ }
183
+ return { text: utf8Decode(bytes.subarray(0, cut)), truncated: true };
184
+ }
185
+ function utf8Encode(text) {
186
+ if (typeof TextEncoder !== "undefined") {
187
+ return new TextEncoder().encode(text);
188
+ }
189
+ const out = [];
190
+ for (let i = 0; i < text.length; i++) {
191
+ const code = text.charCodeAt(i);
192
+ if (code < 128) {
193
+ out.push(code);
194
+ } else if (code < 2048) {
195
+ out.push(192 | code >> 6, 128 | code & 63);
196
+ } else {
197
+ out.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);
198
+ }
199
+ }
200
+ return new Uint8Array(out);
201
+ }
202
+ function utf8Decode(bytes) {
203
+ if (typeof TextDecoder !== "undefined") {
204
+ return new TextDecoder("utf-8").decode(bytes);
205
+ }
206
+ let out = "";
207
+ for (let i = 0; i < bytes.length; ) {
208
+ const b = bytes[i];
209
+ if (b < 128) {
210
+ out += String.fromCharCode(b);
211
+ i++;
212
+ } else if (b < 224) {
213
+ out += String.fromCharCode((b & 31) << 6 | bytes[i + 1] & 63);
214
+ i += 2;
215
+ } else {
216
+ out += String.fromCharCode(
217
+ (b & 15) << 12 | (bytes[i + 1] & 63) << 6 | bytes[i + 2] & 63
218
+ );
219
+ i += 3;
220
+ }
221
+ }
222
+ return out;
223
+ }
224
+ function purejsSha256(text) {
225
+ const K = [
226
+ 1116352408,
227
+ 1899447441,
228
+ 3049323471,
229
+ 3921009573,
230
+ 961987163,
231
+ 1508970993,
232
+ 2453635748,
233
+ 2870763221,
234
+ 3624381080,
235
+ 310598401,
236
+ 607225278,
237
+ 1426881987,
238
+ 1925078388,
239
+ 2162078206,
240
+ 2614888103,
241
+ 3248222580,
242
+ 3835390401,
243
+ 4022224774,
244
+ 264347078,
245
+ 604807628,
246
+ 770255983,
247
+ 1249150122,
248
+ 1555081692,
249
+ 1996064986,
250
+ 2554220882,
251
+ 2821834349,
252
+ 2952996808,
253
+ 3210313671,
254
+ 3336571891,
255
+ 3584528711,
256
+ 113926993,
257
+ 338241895,
258
+ 666307205,
259
+ 773529912,
260
+ 1294757372,
261
+ 1396182291,
262
+ 1695183700,
263
+ 1986661051,
264
+ 2177026350,
265
+ 2456956037,
266
+ 2730485921,
267
+ 2820302411,
268
+ 3259730800,
269
+ 3345764771,
270
+ 3516065817,
271
+ 3600352804,
272
+ 4094571909,
273
+ 275423344,
274
+ 430227734,
275
+ 506948616,
276
+ 659060556,
277
+ 883997877,
278
+ 958139571,
279
+ 1322822218,
280
+ 1537002063,
281
+ 1747873779,
282
+ 1955562222,
283
+ 2024104815,
284
+ 2227730452,
285
+ 2361852424,
286
+ 2428436474,
287
+ 2756734187,
288
+ 3204031479,
289
+ 3329325298
290
+ ];
291
+ const H = [
292
+ 1779033703,
293
+ 3144134277,
294
+ 1013904242,
295
+ 2773480762,
296
+ 1359893119,
297
+ 2600822924,
298
+ 528734635,
299
+ 1541459225
300
+ ];
301
+ const msg = utf8Encode(text);
302
+ const msgLen = msg.length;
303
+ const bitLen = msgLen * 8;
304
+ const padded = new Uint8Array(msgLen + 9 + 63 >> 6 << 6);
305
+ padded.set(msg);
306
+ padded[msgLen] = 128;
307
+ const lo = (bitLen & 4294967295) >>> 0;
308
+ const hi = Math.floor(bitLen / 4294967296) >>> 0;
309
+ padded[padded.length - 8] = hi >>> 24 & 255;
310
+ padded[padded.length - 7] = hi >>> 16 & 255;
311
+ padded[padded.length - 6] = hi >>> 8 & 255;
312
+ padded[padded.length - 5] = hi & 255;
313
+ padded[padded.length - 4] = lo >>> 24 & 255;
314
+ padded[padded.length - 3] = lo >>> 16 & 255;
315
+ padded[padded.length - 2] = lo >>> 8 & 255;
316
+ padded[padded.length - 1] = lo & 255;
317
+ const W = new Uint32Array(64);
318
+ for (let chunk = 0; chunk < padded.length; chunk += 64) {
319
+ for (let i = 0; i < 16; i++) {
320
+ 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;
321
+ }
322
+ for (let i = 16; i < 64; i++) {
323
+ const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ W[i - 15] >>> 3;
324
+ const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ W[i - 2] >>> 10;
325
+ W[i] = W[i - 16] + s0 + W[i - 7] + s1 >>> 0;
326
+ }
327
+ let [a, b, c, d, e, f, g, h] = H;
328
+ for (let i = 0; i < 64; i++) {
329
+ const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
330
+ const ch = e & f ^ ~e & g;
331
+ const temp1 = h + S1 + ch + K[i] + W[i] >>> 0;
332
+ const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);
333
+ const maj = a & b ^ a & c ^ b & c;
334
+ const temp2 = S0 + maj >>> 0;
335
+ h = g;
336
+ g = f;
337
+ f = e;
338
+ e = d + temp1 >>> 0;
339
+ d = c;
340
+ c = b;
341
+ b = a;
342
+ a = temp1 + temp2 >>> 0;
343
+ }
344
+ H[0] = H[0] + a >>> 0;
345
+ H[1] = H[1] + b >>> 0;
346
+ H[2] = H[2] + c >>> 0;
347
+ H[3] = H[3] + d >>> 0;
348
+ H[4] = H[4] + e >>> 0;
349
+ H[5] = H[5] + f >>> 0;
350
+ H[6] = H[6] + g >>> 0;
351
+ H[7] = H[7] + h >>> 0;
352
+ }
353
+ let hex = "";
354
+ for (const v of H) {
355
+ hex += v.toString(16).padStart(8, "0");
356
+ }
357
+ return hex;
358
+ }
359
+ function rotr(x, n) {
360
+ return (x >>> n | x << 32 - n) >>> 0;
361
+ }
362
+
363
+ exports.decomposeOpenAiMessages = decomposeOpenAiMessages;
364
+ //# sourceMappingURL=chunk-KJEO52QS.cjs.map
365
+ //# sourceMappingURL=chunk-KJEO52QS.cjs.map