@morphllm/morphsdk 0.2.171 → 0.2.172

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 (259) hide show
  1. package/dist/{chunk-3XRNC56L.js → chunk-2SNAXTUJ.js} +4 -4
  2. package/dist/chunk-453ZV2AX.js +120 -0
  3. package/dist/chunk-453ZV2AX.js.map +1 -0
  4. package/dist/chunk-53ZJMCWU.js +142 -0
  5. package/dist/chunk-53ZJMCWU.js.map +1 -0
  6. package/dist/{chunk-IW4TYYG6.js → chunk-5DA6SZQJ.js} +2 -2
  7. package/dist/chunk-66OHYI24.js +78 -0
  8. package/dist/chunk-66OHYI24.js.map +1 -0
  9. package/dist/chunk-6X6QMRQG.js +158 -0
  10. package/dist/chunk-6X6QMRQG.js.map +1 -0
  11. package/dist/{chunk-C37YAYBK.js → chunk-7PVVPLRL.js} +2 -2
  12. package/dist/{chunk-MZZMSL26.js → chunk-AE7M2I52.js} +2 -2
  13. package/dist/{chunk-JLLIVBKY.js → chunk-CQF76HJC.js} +30 -6
  14. package/dist/chunk-CQF76HJC.js.map +1 -0
  15. package/dist/{chunk-EFCDIESP.js → chunk-ESXCQBMU.js} +2 -2
  16. package/dist/{chunk-FQJCE2FX.js → chunk-FOIDGIY4.js} +29 -10
  17. package/dist/chunk-FOIDGIY4.js.map +1 -0
  18. package/dist/{chunk-JEDEBCZM.js → chunk-GJZXDRH5.js} +8 -3
  19. package/dist/{chunk-JEDEBCZM.js.map → chunk-GJZXDRH5.js.map} +1 -1
  20. package/dist/{chunk-2ALTBYMY.js → chunk-IJ33I7P5.js} +4 -4
  21. package/dist/{chunk-UK7TI7QY.js → chunk-IN2U7AAI.js} +99 -143
  22. package/dist/chunk-IN2U7AAI.js.map +1 -0
  23. package/dist/{chunk-LE66XCOI.js → chunk-JWZ5DLAS.js} +27 -10
  24. package/dist/chunk-JWZ5DLAS.js.map +1 -0
  25. package/dist/chunk-LKFZBBTD.js +12 -0
  26. package/dist/chunk-LKFZBBTD.js.map +1 -0
  27. package/dist/{chunk-TAS6S42A.js → chunk-MO6S2LRD.js} +2 -2
  28. package/dist/{chunk-2OAKX4SZ.js → chunk-NI7PWQ3B.js} +4 -4
  29. package/dist/{chunk-GLQWEINZ.js → chunk-QAXXE4AD.js} +2 -2
  30. package/dist/{chunk-3BCKZKNK.js → chunk-QFE5523Q.js} +2 -2
  31. package/dist/{chunk-LL3EWDKD.js → chunk-QQXNZIVK.js} +4 -4
  32. package/dist/{chunk-IGQYZ2KH.js → chunk-QZ3V2BP7.js} +2 -2
  33. package/dist/chunk-QZR7SJ5N.js +24 -0
  34. package/dist/chunk-QZR7SJ5N.js.map +1 -0
  35. package/dist/{chunk-SW527EQT.js → chunk-SJVLAGUL.js} +4 -4
  36. package/dist/{chunk-CMFY26F3.js → chunk-U4J3BVAQ.js} +4 -4
  37. package/dist/{chunk-5EUMJI3I.js → chunk-U4MRSZQQ.js} +2 -2
  38. package/dist/{chunk-ZJQTTOHO.js → chunk-UADW6FYD.js} +2 -2
  39. package/dist/{chunk-4324ZSCW.js → chunk-VBARKJWL.js} +2 -2
  40. package/dist/{chunk-OPNTDMHH.js → chunk-VLZ6PNAD.js} +4 -4
  41. package/dist/chunk-VZ7BOH2K.js +1 -0
  42. package/dist/chunk-VZ7BOH2K.js.map +1 -0
  43. package/dist/{chunk-Y6T4NA75.js → chunk-XJDXV5VX.js} +2 -2
  44. package/dist/{chunk-JTUB5ZCT.js → chunk-XYTYIAMQ.js} +2 -2
  45. package/dist/{chunk-4MTZUTNH.js → chunk-Z4GJVN52.js} +23 -8
  46. package/dist/chunk-Z4GJVN52.js.map +1 -0
  47. package/dist/chunk-ZLSNL6M2.js +97 -0
  48. package/dist/chunk-ZLSNL6M2.js.map +1 -0
  49. package/dist/{client-DsAAqupx.d.ts → client-Dh6yzCm4.d.ts} +14 -5
  50. package/dist/client.cjs +724 -523
  51. package/dist/client.cjs.map +1 -1
  52. package/dist/client.d.ts +5 -1
  53. package/dist/client.js +31 -27
  54. package/dist/core/client.cjs +540 -0
  55. package/dist/core/client.cjs.map +1 -0
  56. package/dist/core/client.d.ts +79 -0
  57. package/dist/core/client.js +12 -0
  58. package/dist/core/client.js.map +1 -0
  59. package/dist/core/error.cjs +309 -0
  60. package/dist/core/error.cjs.map +1 -0
  61. package/dist/core/error.d.ts +18 -0
  62. package/dist/core/error.js +10 -0
  63. package/dist/core/error.js.map +1 -0
  64. package/dist/core/index.cjs +552 -0
  65. package/dist/core/index.cjs.map +1 -0
  66. package/dist/core/index.d.ts +4 -0
  67. package/dist/core/index.js +20 -0
  68. package/dist/core/index.js.map +1 -0
  69. package/dist/core/resource.cjs +36 -0
  70. package/dist/core/resource.cjs.map +1 -0
  71. package/dist/core/resource.d.ts +18 -0
  72. package/dist/core/resource.js +8 -0
  73. package/dist/core/resource.js.map +1 -0
  74. package/dist/edge.cjs +236 -173
  75. package/dist/edge.cjs.map +1 -1
  76. package/dist/edge.d.ts +2 -0
  77. package/dist/edge.js +8 -5
  78. package/dist/git/client.cjs +529 -9
  79. package/dist/git/client.cjs.map +1 -1
  80. package/dist/git/client.d.ts +8 -2
  81. package/dist/git/client.js +7 -1
  82. package/dist/git/index.cjs +529 -9
  83. package/dist/git/index.cjs.map +1 -1
  84. package/dist/git/index.d.ts +2 -0
  85. package/dist/git/index.js +7 -1
  86. package/dist/index.cjs +672 -465
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.ts +6 -2
  89. package/dist/index.js +49 -33
  90. package/dist/modelrouter/core.cjs +204 -125
  91. package/dist/modelrouter/core.cjs.map +1 -1
  92. package/dist/modelrouter/core.d.ts +36 -9
  93. package/dist/modelrouter/core.js +6 -3
  94. package/dist/modelrouter/index.cjs +204 -125
  95. package/dist/modelrouter/index.cjs.map +1 -1
  96. package/dist/modelrouter/index.d.ts +3 -0
  97. package/dist/modelrouter/index.js +6 -3
  98. package/dist/subagents/anthropic.cjs +268 -52
  99. package/dist/subagents/anthropic.cjs.map +1 -1
  100. package/dist/subagents/anthropic.js +10 -6
  101. package/dist/subagents/vercel.cjs +268 -52
  102. package/dist/subagents/vercel.cjs.map +1 -1
  103. package/dist/subagents/vercel.js +10 -6
  104. package/dist/tools/browser/anthropic.cjs +7 -2
  105. package/dist/tools/browser/anthropic.cjs.map +1 -1
  106. package/dist/tools/browser/anthropic.js +9 -6
  107. package/dist/tools/browser/core.cjs +162 -10
  108. package/dist/tools/browser/core.cjs.map +1 -1
  109. package/dist/tools/browser/core.d.ts +8 -2
  110. package/dist/tools/browser/core.js +8 -5
  111. package/dist/tools/browser/index.cjs +163 -11
  112. package/dist/tools/browser/index.cjs.map +1 -1
  113. package/dist/tools/browser/index.d.ts +2 -0
  114. package/dist/tools/browser/index.js +18 -15
  115. package/dist/tools/browser/index.js.map +1 -1
  116. package/dist/tools/browser/openai.cjs +7 -2
  117. package/dist/tools/browser/openai.cjs.map +1 -1
  118. package/dist/tools/browser/openai.js +9 -6
  119. package/dist/tools/browser/profiles/core.cjs +7 -2
  120. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  121. package/dist/tools/browser/profiles/core.js +3 -3
  122. package/dist/tools/browser/profiles/index.cjs +7 -2
  123. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  124. package/dist/tools/browser/profiles/index.js +3 -3
  125. package/dist/tools/browser/vercel.cjs +7 -2
  126. package/dist/tools/browser/vercel.cjs.map +1 -1
  127. package/dist/tools/browser/vercel.js +9 -6
  128. package/dist/tools/codebase_search/anthropic.cjs +162 -41
  129. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  130. package/dist/tools/codebase_search/anthropic.js +7 -4
  131. package/dist/tools/codebase_search/core.cjs +195 -66
  132. package/dist/tools/codebase_search/core.cjs.map +1 -1
  133. package/dist/tools/codebase_search/core.d.ts +18 -7
  134. package/dist/tools/codebase_search/core.js +6 -3
  135. package/dist/tools/codebase_search/index.cjs +162 -41
  136. package/dist/tools/codebase_search/index.cjs.map +1 -1
  137. package/dist/tools/codebase_search/index.d.ts +2 -0
  138. package/dist/tools/codebase_search/index.js +13 -10
  139. package/dist/tools/codebase_search/openai.cjs +162 -41
  140. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  141. package/dist/tools/codebase_search/openai.js +7 -4
  142. package/dist/tools/codebase_search/vercel.cjs +162 -41
  143. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  144. package/dist/tools/codebase_search/vercel.js +7 -4
  145. package/dist/tools/compact/core.cjs +551 -47
  146. package/dist/tools/compact/core.cjs.map +1 -1
  147. package/dist/tools/compact/core.d.ts +16 -3
  148. package/dist/tools/compact/core.js +7 -1
  149. package/dist/tools/compact/index.cjs +549 -47
  150. package/dist/tools/compact/index.cjs.map +1 -1
  151. package/dist/tools/compact/index.d.ts +2 -0
  152. package/dist/tools/compact/index.js +8 -2
  153. package/dist/tools/fastapply/anthropic.cjs +16 -2
  154. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  155. package/dist/tools/fastapply/anthropic.js +8 -4
  156. package/dist/tools/fastapply/apply.cjs +7 -2
  157. package/dist/tools/fastapply/apply.cjs.map +1 -1
  158. package/dist/tools/fastapply/apply.js +2 -2
  159. package/dist/tools/fastapply/core.cjs +242 -12
  160. package/dist/tools/fastapply/core.cjs.map +1 -1
  161. package/dist/tools/fastapply/core.d.ts +8 -2
  162. package/dist/tools/fastapply/core.js +7 -3
  163. package/dist/tools/fastapply/index.cjs +16 -2
  164. package/dist/tools/fastapply/index.cjs.map +1 -1
  165. package/dist/tools/fastapply/index.d.ts +2 -0
  166. package/dist/tools/fastapply/index.js +13 -9
  167. package/dist/tools/fastapply/openai.cjs +16 -2
  168. package/dist/tools/fastapply/openai.cjs.map +1 -1
  169. package/dist/tools/fastapply/openai.js +8 -4
  170. package/dist/tools/fastapply/vercel.cjs +16 -2
  171. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  172. package/dist/tools/fastapply/vercel.js +8 -4
  173. package/dist/tools/index.cjs +16 -2
  174. package/dist/tools/index.cjs.map +1 -1
  175. package/dist/tools/index.d.ts +2 -0
  176. package/dist/tools/index.js +13 -9
  177. package/dist/tools/reflex/core.cjs +693 -0
  178. package/dist/tools/reflex/core.cjs.map +1 -0
  179. package/dist/tools/reflex/core.d.ts +53 -0
  180. package/dist/tools/reflex/core.js +16 -0
  181. package/dist/tools/reflex/core.js.map +1 -0
  182. package/dist/tools/reflex/index.cjs +693 -0
  183. package/dist/tools/reflex/index.cjs.map +1 -0
  184. package/dist/tools/reflex/index.d.ts +5 -0
  185. package/dist/tools/reflex/index.js +16 -0
  186. package/dist/tools/reflex/index.js.map +1 -0
  187. package/dist/tools/reflex/types.cjs +19 -0
  188. package/dist/tools/reflex/types.cjs.map +1 -0
  189. package/dist/tools/reflex/types.d.ts +113 -0
  190. package/dist/tools/reflex/types.js +1 -0
  191. package/dist/tools/reflex/types.js.map +1 -0
  192. package/dist/tools/utils/resilience.cjs +7 -2
  193. package/dist/tools/utils/resilience.cjs.map +1 -1
  194. package/dist/tools/utils/resilience.js +2 -2
  195. package/dist/tools/warp_grep/agent/runner.cjs +7 -2
  196. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  197. package/dist/tools/warp_grep/agent/runner.js +2 -2
  198. package/dist/tools/warp_grep/anthropic.cjs +268 -52
  199. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  200. package/dist/tools/warp_grep/anthropic.d.ts +2 -0
  201. package/dist/tools/warp_grep/anthropic.js +10 -6
  202. package/dist/tools/warp_grep/client.cjs +268 -52
  203. package/dist/tools/warp_grep/client.cjs.map +1 -1
  204. package/dist/tools/warp_grep/client.d.ts +8 -2
  205. package/dist/tools/warp_grep/client.js +9 -5
  206. package/dist/tools/warp_grep/gemini.cjs +268 -52
  207. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  208. package/dist/tools/warp_grep/gemini.d.ts +2 -0
  209. package/dist/tools/warp_grep/gemini.js +9 -5
  210. package/dist/tools/warp_grep/gemini.js.map +1 -1
  211. package/dist/tools/warp_grep/harness.js +5 -5
  212. package/dist/tools/warp_grep/index.cjs +268 -52
  213. package/dist/tools/warp_grep/index.cjs.map +1 -1
  214. package/dist/tools/warp_grep/index.d.ts +2 -0
  215. package/dist/tools/warp_grep/index.js +12 -8
  216. package/dist/tools/warp_grep/openai.cjs +268 -52
  217. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  218. package/dist/tools/warp_grep/openai.d.ts +2 -0
  219. package/dist/tools/warp_grep/openai.js +10 -6
  220. package/dist/tools/warp_grep/providers/local.js +2 -2
  221. package/dist/tools/warp_grep/vercel.cjs +268 -52
  222. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  223. package/dist/tools/warp_grep/vercel.d.ts +2 -0
  224. package/dist/tools/warp_grep/vercel.js +10 -6
  225. package/dist/version.cjs +7 -2
  226. package/dist/version.cjs.map +1 -1
  227. package/dist/version.js +1 -1
  228. package/package.json +7 -2
  229. package/dist/chunk-4MTZUTNH.js.map +0 -1
  230. package/dist/chunk-FQJCE2FX.js.map +0 -1
  231. package/dist/chunk-H5WNI6R5.js +0 -102
  232. package/dist/chunk-H5WNI6R5.js.map +0 -1
  233. package/dist/chunk-JLLIVBKY.js.map +0 -1
  234. package/dist/chunk-KCFMXLZ7.js +0 -197
  235. package/dist/chunk-KCFMXLZ7.js.map +0 -1
  236. package/dist/chunk-LE66XCOI.js.map +0 -1
  237. package/dist/chunk-SCVWDNQP.js +0 -84
  238. package/dist/chunk-SCVWDNQP.js.map +0 -1
  239. package/dist/chunk-UK7TI7QY.js.map +0 -1
  240. /package/dist/{chunk-3XRNC56L.js.map → chunk-2SNAXTUJ.js.map} +0 -0
  241. /package/dist/{chunk-IW4TYYG6.js.map → chunk-5DA6SZQJ.js.map} +0 -0
  242. /package/dist/{chunk-C37YAYBK.js.map → chunk-7PVVPLRL.js.map} +0 -0
  243. /package/dist/{chunk-MZZMSL26.js.map → chunk-AE7M2I52.js.map} +0 -0
  244. /package/dist/{chunk-EFCDIESP.js.map → chunk-ESXCQBMU.js.map} +0 -0
  245. /package/dist/{chunk-2ALTBYMY.js.map → chunk-IJ33I7P5.js.map} +0 -0
  246. /package/dist/{chunk-TAS6S42A.js.map → chunk-MO6S2LRD.js.map} +0 -0
  247. /package/dist/{chunk-2OAKX4SZ.js.map → chunk-NI7PWQ3B.js.map} +0 -0
  248. /package/dist/{chunk-GLQWEINZ.js.map → chunk-QAXXE4AD.js.map} +0 -0
  249. /package/dist/{chunk-3BCKZKNK.js.map → chunk-QFE5523Q.js.map} +0 -0
  250. /package/dist/{chunk-LL3EWDKD.js.map → chunk-QQXNZIVK.js.map} +0 -0
  251. /package/dist/{chunk-IGQYZ2KH.js.map → chunk-QZ3V2BP7.js.map} +0 -0
  252. /package/dist/{chunk-SW527EQT.js.map → chunk-SJVLAGUL.js.map} +0 -0
  253. /package/dist/{chunk-CMFY26F3.js.map → chunk-U4J3BVAQ.js.map} +0 -0
  254. /package/dist/{chunk-5EUMJI3I.js.map → chunk-U4MRSZQQ.js.map} +0 -0
  255. /package/dist/{chunk-ZJQTTOHO.js.map → chunk-UADW6FYD.js.map} +0 -0
  256. /package/dist/{chunk-4324ZSCW.js.map → chunk-VBARKJWL.js.map} +0 -0
  257. /package/dist/{chunk-OPNTDMHH.js.map → chunk-VLZ6PNAD.js.map} +0 -0
  258. /package/dist/{chunk-Y6T4NA75.js.map → chunk-XJDXV5VX.js.map} +0 -0
  259. /package/dist/{chunk-JTUB5ZCT.js.map → chunk-XYTYIAMQ.js.map} +0 -0
@@ -0,0 +1,20 @@
1
+ import "../chunk-VZ7BOH2K.js";
2
+ import {
3
+ MorphAPIClient
4
+ } from "../chunk-453ZV2AX.js";
5
+ import "../chunk-F3NCFNUX.js";
6
+ import {
7
+ toMorphError
8
+ } from "../chunk-QZR7SJ5N.js";
9
+ import "../chunk-XYTYIAMQ.js";
10
+ import "../chunk-GJZXDRH5.js";
11
+ import {
12
+ APIResource
13
+ } from "../chunk-LKFZBBTD.js";
14
+ import "../chunk-PZ5AY32C.js";
15
+ export {
16
+ APIResource,
17
+ MorphAPIClient,
18
+ toMorphError
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // core/resource.ts
21
+ var resource_exports = {};
22
+ __export(resource_exports, {
23
+ APIResource: () => APIResource
24
+ });
25
+ module.exports = __toCommonJS(resource_exports);
26
+ var APIResource = class {
27
+ _client;
28
+ constructor(client) {
29
+ this._client = client;
30
+ }
31
+ };
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ APIResource
35
+ });
36
+ //# sourceMappingURL=resource.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/resource.ts"],"sourcesContent":["/**\n * Base class for every API resource (FastApply, Compact, Reflex, …).\n *\n * Mirrors the OpenAI SDK's `APIResource`: a resource holds nothing but a\n * reference to the transport (`MorphAPIClient`) and delegates all HTTP to it.\n * Sub-resources receive the same client by reference, so configuration and the\n * fetch/retry/auth machinery live in exactly one place.\n */\nimport type { MorphAPIClient } from './client.js';\n\nexport abstract class APIResource {\n protected _client: MorphAPIClient;\n\n constructor(client: MorphAPIClient) {\n this._client = client;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,IAAe,cAAf,MAA2B;AAAA,EACtB;AAAA,EAEV,YAAY,QAAwB;AAClC,SAAK,UAAU;AAAA,EACjB;AACF;","names":[]}
@@ -0,0 +1,18 @@
1
+ import { MorphAPIClient } from './client.js';
2
+ import '../tools/utils/resilience.js';
3
+
4
+ /**
5
+ * Base class for every API resource (FastApply, Compact, Reflex, …).
6
+ *
7
+ * Mirrors the OpenAI SDK's `APIResource`: a resource holds nothing but a
8
+ * reference to the transport (`MorphAPIClient`) and delegates all HTTP to it.
9
+ * Sub-resources receive the same client by reference, so configuration and the
10
+ * fetch/retry/auth machinery live in exactly one place.
11
+ */
12
+
13
+ declare abstract class APIResource {
14
+ protected _client: MorphAPIClient;
15
+ constructor(client: MorphAPIClient);
16
+ }
17
+
18
+ export { APIResource };
@@ -0,0 +1,8 @@
1
+ import {
2
+ APIResource
3
+ } from "../chunk-LKFZBBTD.js";
4
+ import "../chunk-PZ5AY32C.js";
5
+ export {
6
+ APIResource
7
+ };
8
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/edge.cjs CHANGED
@@ -46,7 +46,7 @@ module.exports = __toCommonJS(edge_exports);
46
46
  // package.json
47
47
  var package_default = {
48
48
  name: "@morphllm/morphsdk",
49
- version: "0.2.171",
49
+ version: "0.2.172",
50
50
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
51
51
  type: "module",
52
52
  main: "./dist/index.cjs",
@@ -183,6 +183,11 @@ var package_default = {
183
183
  import: "./dist/tools/compact/index.js",
184
184
  require: "./dist/tools/compact/index.cjs"
185
185
  },
186
+ "./tools/reflex": {
187
+ types: "./dist/tools/reflex/index.d.ts",
188
+ import: "./dist/tools/reflex/index.js",
189
+ require: "./dist/tools/reflex/index.cjs"
190
+ },
186
191
  "./subagents": {
187
192
  types: "./dist/subagents/index.d.ts",
188
193
  import: "./dist/subagents/index.js",
@@ -208,7 +213,7 @@ var package_default = {
208
213
  "!dist/**/*.test.*"
209
214
  ],
210
215
  scripts: {
211
- build: "tsup version.ts index.ts edge.ts client.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/utils/resilience.ts subagents/index.ts subagents/types.ts subagents/prompts.ts subagents/vercel.ts subagents/anthropic.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
216
+ build: "tsup version.ts index.ts edge.ts client.ts core/index.ts core/client.ts core/resource.ts core/error.ts tools/index.ts tools/fastapply/index.ts tools/fastapply/core.ts tools/fastapply/apply.ts tools/fastapply/types.ts tools/fastapply/prompts.ts tools/fastapply/anthropic.ts tools/fastapply/openai.ts tools/fastapply/vercel.ts tools/codebase_search/index.ts tools/codebase_search/core.ts tools/codebase_search/types.ts tools/codebase_search/prompts.ts tools/codebase_search/anthropic.ts tools/codebase_search/openai.ts tools/codebase_search/vercel.ts tools/warp_grep/index.ts tools/warp_grep/client.ts tools/warp_grep/openai.ts tools/warp_grep/anthropic.ts tools/warp_grep/vercel.ts tools/warp_grep/gemini.ts tools/warp_grep/harness.ts tools/warp_grep/agent/config.ts tools/warp_grep/agent/parser.ts tools/warp_grep/agent/runner.ts tools/warp_grep/agent/types.ts tools/warp_grep/agent/formatter.ts tools/warp_grep/providers/types.ts tools/warp_grep/providers/local.ts tools/warp_grep/providers/remote.ts tools/warp_grep/providers/code_storage_http.ts tools/warp_grep/tools/grep.ts tools/warp_grep/tools/analyse.ts tools/warp_grep/tools/read.ts tools/warp_grep/tools/finish.ts tools/warp_grep/utils/paths.ts tools/warp_grep/utils/github.ts tools/warp_grep/utils/ripgrep.ts tools/warp_grep/utils/format.ts tools/warp_grep/utils/files.ts git/index.ts git/client.ts git/config.ts git/types.ts tools/browser/index.ts tools/browser/core.ts tools/browser/types.ts tools/browser/prompts.ts tools/browser/anthropic.ts tools/browser/openai.ts tools/browser/vercel.ts tools/browser/live.ts tools/browser/errors.ts tools/browser/profiles/index.ts tools/browser/profiles/core.ts tools/browser/profiles/types.ts modelrouter/index.ts modelrouter/core.ts modelrouter/types.ts tools/compact/index.ts tools/compact/core.ts tools/compact/types.ts tools/reflex/index.ts tools/reflex/core.ts tools/reflex/types.ts tools/utils/resilience.ts subagents/index.ts subagents/types.ts subagents/prompts.ts subagents/vercel.ts subagents/anthropic.ts --format esm,cjs --sourcemap --clean --dts --dts-resolve",
212
217
  prepare: "npm run build",
213
218
  typecheck: "tsc --noEmit",
214
219
  lint: "eslint .",
@@ -547,87 +552,203 @@ async function withTimeout(promise, timeoutMs, errorMessage) {
547
552
  function sleep(ms) {
548
553
  return new Promise((resolve) => setTimeout(resolve, ms));
549
554
  }
555
+ var MorphError = class extends Error {
556
+ constructor(message, code, statusCode, retryable = false) {
557
+ super(message);
558
+ this.code = code;
559
+ this.statusCode = statusCode;
560
+ this.retryable = retryable;
561
+ this.name = "MorphError";
562
+ }
563
+ };
550
564
 
551
- // modelrouter/core.ts
552
- var DEFAULT_CONFIG = {
553
- apiUrl: "https://api.morphllm.com",
554
- timeout: 5e3,
555
- // 5 seconds (responses typically <500ms)
556
- debug: false
565
+ // core/error.ts
566
+ async function toMorphError(response) {
567
+ let message = `Morph API request failed (${response.status})`;
568
+ let code = "api_error";
569
+ try {
570
+ const body = await response.json();
571
+ message = body.error?.message ?? body.message ?? message;
572
+ code = body.error?.code ?? body.error?.type ?? code;
573
+ } catch {
574
+ }
575
+ if (response.status === 401) code = "authentication_error";
576
+ if (response.status === 429) code = "rate_limit_exceeded";
577
+ const retryable = response.status === 429 || response.status === 503;
578
+ return new MorphError(message, code, response.status, retryable);
579
+ }
580
+
581
+ // core/client.ts
582
+ var DEFAULT_BASE_URL = "https://api.morphllm.com";
583
+ var DEFAULT_REPOS_URL = "https://repos.morphllm.com";
584
+ var DEFAULT_BROWSER_URL = "https://browser.morphllm.com";
585
+ var DEFAULT_TIMEOUT2 = 6e4;
586
+ var env = (name) => typeof process !== "undefined" ? process.env?.[name] : void 0;
587
+ var stripTrailingSlash = (url) => url.replace(/\/+$/, "");
588
+ var MorphAPIClient = class {
589
+ /** Explicit key as provided; resolved against env at request time. */
590
+ apiKey;
591
+ baseURL;
592
+ reposURL;
593
+ browserURL;
594
+ /** Explicit default timeout (ms), if set. The request default is applied lazily so
595
+ * resources can read an undefined value and supply their own fallback. */
596
+ timeout;
597
+ retryConfig;
598
+ debug;
599
+ constructor(options = {}) {
600
+ this.apiKey = options.apiKey;
601
+ this.baseURL = stripTrailingSlash(options.baseURL ?? DEFAULT_BASE_URL);
602
+ this.reposURL = stripTrailingSlash(options.reposURL ?? env("MORPH_SEARCH_URL") ?? DEFAULT_REPOS_URL);
603
+ this.browserURL = stripTrailingSlash(
604
+ options.browserURL ?? (env("MORPH_ENVIRONMENT") === "DEV" ? "http://localhost:8000" : DEFAULT_BROWSER_URL)
605
+ );
606
+ this.timeout = options.timeout;
607
+ this.retryConfig = options.retryConfig;
608
+ this.debug = options.debug ?? false;
609
+ if (this.debug) logger.enable();
610
+ }
611
+ /** The key actually used for requests: explicit, else `MORPH_API_KEY`. */
612
+ resolveApiKey() {
613
+ return this.apiKey ?? env("MORPH_API_KEY");
614
+ }
615
+ /** Headers shared with tools that bring their own HTTP client (FastApply/WarpGrep via the `openai` package). */
616
+ defaultHeaders() {
617
+ return { "X-Morph-SDK-Version": SDK_VERSION };
618
+ }
619
+ buildURL(path, baseURL) {
620
+ if (/^https?:\/\//i.test(path)) return path;
621
+ const base = stripTrailingSlash(baseURL ?? this.baseURL);
622
+ return `${base}${path.startsWith("/") ? "" : "/"}${path}`;
623
+ }
624
+ buildHeaders(apiKey, extra) {
625
+ return {
626
+ "Content-Type": "application/json",
627
+ "X-Morph-SDK-Version": SDK_VERSION,
628
+ Authorization: `Bearer ${apiKey}`,
629
+ ...extra
630
+ };
631
+ }
632
+ applyQuery(url, query) {
633
+ if (!query) return url;
634
+ const params = new URLSearchParams();
635
+ for (const [key, value] of Object.entries(query)) {
636
+ if (value !== void 0 && value !== null) params.set(key, String(value));
637
+ }
638
+ const qs = params.toString();
639
+ return qs ? `${url}${url.includes("?") ? "&" : "?"}${qs}` : url;
640
+ }
641
+ async request(method, path, opts = {}) {
642
+ const apiKey = this.resolveApiKey();
643
+ if (!apiKey) {
644
+ throw new MorphError(
645
+ "Morph API key not found. Set the MORPH_API_KEY environment variable or pass apiKey in config.",
646
+ "missing_api_key",
647
+ 401
648
+ );
649
+ }
650
+ const url = this.applyQuery(this.buildURL(path, opts.baseURL), opts.query);
651
+ const timeout = opts.timeout ?? this.timeout ?? DEFAULT_TIMEOUT2;
652
+ const init = {
653
+ method,
654
+ headers: this.buildHeaders(apiKey, opts.headers),
655
+ ...opts.body !== void 0 ? { body: JSON.stringify(opts.body) } : {},
656
+ ...opts.signal ? { signal: opts.signal } : {}
657
+ };
658
+ logger.debug("MorphAPIClient", "request", { method, url });
659
+ const response = await withTimeout(
660
+ fetchWithRetry(url, init, this.retryConfig ?? {}),
661
+ timeout,
662
+ `Morph request to ${url} timed out after ${timeout}ms`
663
+ );
664
+ if (opts.raw) return response;
665
+ if (!response.ok) throw await toMorphError(response);
666
+ if (opts.stream) return response;
667
+ if (response.status === 204) return void 0;
668
+ const text = await response.text();
669
+ return text ? JSON.parse(text) : void 0;
670
+ }
671
+ get(path, opts) {
672
+ return this.request("GET", path, opts);
673
+ }
674
+ post(path, opts) {
675
+ return this.request("POST", path, opts);
676
+ }
677
+ delete(path, opts) {
678
+ return this.request("DELETE", path, opts);
679
+ }
557
680
  };
558
- var BaseRouter = class {
559
- config;
681
+
682
+ // core/resource.ts
683
+ var APIResource = class {
684
+ _client;
685
+ constructor(client) {
686
+ this._client = client;
687
+ }
688
+ };
689
+
690
+ // modelrouter/core.ts
691
+ var DEFAULT_API_URL2 = "https://api.morphllm.com";
692
+ var DEFAULT_TIMEOUT3 = 5e3;
693
+ function resolveClient(clientOrConfig) {
694
+ if (clientOrConfig instanceof MorphAPIClient) return clientOrConfig;
695
+ return new MorphAPIClient({
696
+ apiKey: clientOrConfig.apiKey,
697
+ baseURL: clientOrConfig.apiUrl ?? DEFAULT_API_URL2,
698
+ timeout: clientOrConfig.timeout ?? DEFAULT_TIMEOUT3,
699
+ retryConfig: clientOrConfig.retryConfig,
700
+ debug: clientOrConfig.debug
701
+ });
702
+ }
703
+ var BaseRouter = class extends APIResource {
560
704
  provider;
561
- constructor(provider, config = {}) {
705
+ timeout;
706
+ constructor(provider, clientOrConfig = {}) {
707
+ super(resolveClient(clientOrConfig));
562
708
  this.provider = provider;
563
- this.config = {
564
- apiKey: config.apiKey,
565
- apiUrl: config.apiUrl || DEFAULT_CONFIG.apiUrl,
566
- timeout: config.timeout || DEFAULT_CONFIG.timeout,
567
- debug: config.debug || DEFAULT_CONFIG.debug,
568
- retryConfig: config.retryConfig
569
- };
709
+ const cfg = clientOrConfig instanceof MorphAPIClient ? {} : clientOrConfig;
710
+ this.timeout = cfg.timeout ?? DEFAULT_TIMEOUT3;
570
711
  }
571
- /**
572
- * Select the optimal model for a given input and mode
573
- */
574
- async selectModel(input) {
575
- const mode = input.mode || "balanced";
576
- const apiKey = this.config.apiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
577
- if (!apiKey) {
712
+ /** Throw the historical "API key is required" message when no key is resolvable. */
713
+ requireApiKey() {
714
+ if (!this._client.resolveApiKey()) {
578
715
  throw new Error(
579
716
  "Morph API key is required. Set MORPH_API_KEY environment variable or pass apiKey in config."
580
717
  );
581
718
  }
582
- const url = `${this.config.apiUrl}/v1/router/${this.provider}`;
583
- const payload = {
584
- input: input.input,
585
- mode
586
- };
587
- logger.debug("ModelRouter", "request", { provider: this.provider, mode, input_len: input.input.length, url });
719
+ }
720
+ /** POST to the router and surface failures as `Router API error (<status>): ...`. */
721
+ async route(provider, input) {
588
722
  try {
589
- const fetchPromise = fetchWithRetry(
590
- url,
591
- {
592
- method: "POST",
593
- headers: {
594
- "Content-Type": "application/json",
595
- Authorization: `Bearer ${apiKey}`
596
- },
597
- body: JSON.stringify(payload)
598
- },
599
- this.config.retryConfig
600
- );
601
- const response = await withTimeout(
602
- fetchPromise,
603
- this.config.timeout,
604
- `Router API request timed out after ${this.config.timeout}ms`
605
- );
606
- if (!response.ok) {
607
- const errorText = await response.text();
608
- throw new Error(
609
- `Router API error (${response.status}): ${errorText || response.statusText}`
610
- );
611
- }
612
- const apiResult = await response.json();
613
- const result = {
614
- model: apiResult.model
615
- };
616
- logger.debug("ModelRouter", "selected", { provider: this.provider, model: apiResult.model, confidence: apiResult.confidence });
617
- return result;
723
+ return await this._client.post(`/v1/router/${provider}`, {
724
+ body: { input: input.input, mode: input.mode || "balanced" },
725
+ timeout: this.timeout
726
+ });
618
727
  } catch (error) {
619
- logger.error("ModelRouter", "error", { provider: this.provider, error: error instanceof Error ? error.message : String(error) });
728
+ if (error instanceof MorphError) {
729
+ throw new Error(`Router API error (${error.statusCode}): ${error.message}`);
730
+ }
620
731
  throw error;
621
732
  }
622
733
  }
734
+ /**
735
+ * Select the optimal model for a given input and mode
736
+ */
737
+ async selectModel(input) {
738
+ this.requireApiKey();
739
+ logger.debug("ModelRouter", "request", { provider: this.provider, mode: input.mode || "balanced" });
740
+ const apiResult = await this.route(this.provider, input);
741
+ logger.debug("ModelRouter", "selected", { provider: this.provider, model: apiResult.model });
742
+ return { model: apiResult.model };
743
+ }
623
744
  };
624
745
  var OpenAIRouter = class extends BaseRouter {
625
- constructor(config = {}) {
626
- super("openai", config);
746
+ constructor(clientOrConfig = {}) {
747
+ super("openai", clientOrConfig);
627
748
  }
628
749
  /**
629
750
  * Select optimal GPT-5 model
630
- *
751
+ *
631
752
  * @param input - User input and mode
632
753
  * @returns Selected model name (gpt-5-mini | gpt-5-low | gpt-5-medium | gpt-5-high)
633
754
  */
@@ -636,12 +757,12 @@ var OpenAIRouter = class extends BaseRouter {
636
757
  }
637
758
  };
638
759
  var AnthropicRouter = class extends BaseRouter {
639
- constructor(config = {}) {
640
- super("anthropic", config);
760
+ constructor(clientOrConfig = {}) {
761
+ super("anthropic", clientOrConfig);
641
762
  }
642
763
  /**
643
764
  * Select optimal Claude model
644
- *
765
+ *
645
766
  * @param input - User input and mode
646
767
  * @returns Selected model name (claude-4.5-haiku | claude-4.5-sonnet)
647
768
  */
@@ -650,12 +771,12 @@ var AnthropicRouter = class extends BaseRouter {
650
771
  }
651
772
  };
652
773
  var GeminiRouter = class extends BaseRouter {
653
- constructor(config = {}) {
654
- super("gemini", config);
774
+ constructor(clientOrConfig = {}) {
775
+ super("gemini", clientOrConfig);
655
776
  }
656
777
  /**
657
778
  * Select optimal Gemini model
658
- *
779
+ *
659
780
  * @param input - User input and mode
660
781
  * @returns Selected model name (gemini-2.5-flash | gemini-2.5-pro)
661
782
  */
@@ -664,82 +785,53 @@ var GeminiRouter = class extends BaseRouter {
664
785
  }
665
786
  };
666
787
  var RawRouter = class extends BaseRouter {
667
- constructor(config = {}) {
668
- super("raw", config);
788
+ constructor(clientOrConfig = {}) {
789
+ super("raw", clientOrConfig);
669
790
  }
670
791
  /**
671
792
  * Get raw difficulty classification
672
- *
793
+ *
673
794
  * @param input - User input and mode
674
795
  * @returns Raw difficulty (easy | medium | hard | needs_info)
675
796
  */
676
797
  async classify(input) {
677
- const mode = input.mode || "balanced";
678
- const apiKey = this.config.apiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
679
- if (!apiKey) {
680
- throw new Error(
681
- "Morph API key is required. Set MORPH_API_KEY environment variable or pass apiKey in config."
682
- );
683
- }
684
- const url = `${this.config.apiUrl}/v1/router/raw`;
685
- const payload = {
686
- input: input.input,
687
- mode
688
- };
689
- logger.debug("RawRouter", "request", { mode, input_len: input.input.length, url });
690
- try {
691
- const fetchPromise = fetchWithRetry(
692
- url,
693
- {
694
- method: "POST",
695
- headers: {
696
- "Content-Type": "application/json",
697
- Authorization: `Bearer ${apiKey}`
698
- },
699
- body: JSON.stringify(payload)
700
- },
701
- this.config.retryConfig
702
- );
703
- const response = await withTimeout(
704
- fetchPromise,
705
- this.config.timeout,
706
- `Router API request timed out after ${this.config.timeout}ms`
707
- );
708
- if (!response.ok) {
709
- const errorText = await response.text();
710
- throw new Error(
711
- `Router API error (${response.status}): ${errorText || response.statusText}`
712
- );
713
- }
714
- const apiResult = await response.json();
715
- let difficulty;
716
- if (apiResult.difficulty === "") {
717
- difficulty = "medium";
718
- } else {
719
- difficulty = apiResult.difficulty || apiResult.model;
720
- }
721
- const result = {
722
- difficulty
723
- };
724
- logger.debug("RawRouter", "classified", { difficulty });
725
- return result;
726
- } catch (error) {
727
- logger.error("RawRouter", "error", { error: error instanceof Error ? error.message : String(error) });
728
- throw error;
798
+ this.requireApiKey();
799
+ logger.debug("RawRouter", "request", { mode: input.mode || "balanced" });
800
+ const apiResult = await this.route("raw", input);
801
+ let difficulty;
802
+ if (apiResult.difficulty === "") {
803
+ difficulty = "medium";
804
+ } else {
805
+ difficulty = apiResult.difficulty || apiResult.model;
729
806
  }
807
+ logger.debug("RawRouter", "classified", { difficulty });
808
+ return { difficulty };
730
809
  }
731
810
  };
732
811
 
733
812
  // tools/compact/core.ts
734
- var DEFAULT_API_URL2 = "https://api.morphllm.com";
735
- var DEFAULT_TIMEOUT2 = 12e4;
736
- var CompactClient = class {
813
+ var DEFAULT_API_URL3 = "https://api.morphllm.com";
814
+ var DEFAULT_TIMEOUT4 = 12e4;
815
+ function resolveClient2(clientOrConfig) {
816
+ if (clientOrConfig instanceof MorphAPIClient) return clientOrConfig;
817
+ return new MorphAPIClient({
818
+ apiKey: clientOrConfig.morphApiKey,
819
+ baseURL: clientOrConfig.morphApiUrl ?? DEFAULT_API_URL3,
820
+ timeout: clientOrConfig.timeout ?? DEFAULT_TIMEOUT4,
821
+ retryConfig: clientOrConfig.retryConfig,
822
+ debug: clientOrConfig.debug
823
+ });
824
+ }
825
+ var CompactClient = class extends APIResource {
826
+ /** Resolved URL/timeout, exposed for backwards-compatible introspection. */
737
827
  config;
738
- constructor(config = {}) {
828
+ constructor(clientOrConfig = {}) {
829
+ super(resolveClient2(clientOrConfig));
830
+ const cfg = clientOrConfig instanceof MorphAPIClient ? {} : clientOrConfig;
739
831
  this.config = {
740
- ...config,
741
- morphApiUrl: config.morphApiUrl ?? DEFAULT_API_URL2,
742
- timeout: config.timeout ?? DEFAULT_TIMEOUT2
832
+ morphApiUrl: this._client.baseURL,
833
+ timeout: cfg.timeout ?? DEFAULT_TIMEOUT4,
834
+ debug: cfg.debug ?? false
743
835
  };
744
836
  }
745
837
  /**
@@ -758,17 +850,6 @@ var CompactClient = class {
758
850
  * ```
759
851
  */
760
852
  async compact(input) {
761
- const apiKey = this.config.morphApiKey || (typeof process !== "undefined" ? process.env?.MORPH_API_KEY : void 0);
762
- const debug = this.config.debug || false;
763
- if (!apiKey) {
764
- throw new Error(
765
- "Morph API key not found. Set MORPH_API_KEY environment variable or pass morphApiKey in config."
766
- );
767
- }
768
- const url = `${this.config.morphApiUrl}/v1/compact`;
769
- if (debug) {
770
- console.log(`[Compact] Calling ${url}`);
771
- }
772
853
  const body = {
773
854
  compression_ratio: input.compressionRatio ?? 0.5,
774
855
  preserve_recent: input.preserveRecent ?? 2,
@@ -776,37 +857,19 @@ var CompactClient = class {
776
857
  include_line_ranges: input.includeLineRanges ?? true,
777
858
  include_markers: input.includeMarkers ?? true
778
859
  };
779
- if (input.query !== void 0) {
780
- body.query = input.query;
781
- }
782
- if (input.messages) {
783
- body.messages = input.messages;
784
- } else if (typeof input.input === "string") {
785
- body.input = input.input;
786
- } else if (Array.isArray(input.input)) {
787
- body.messages = input.input;
788
- } else {
789
- throw new Error("Either 'input' or 'messages' must be provided");
790
- }
791
- const startTime = Date.now();
792
- const response = await fetch(url, {
793
- method: "POST",
794
- headers: {
795
- "Authorization": `Bearer ${apiKey}`,
796
- "Content-Type": "application/json"
797
- },
798
- body: JSON.stringify(body),
799
- signal: AbortSignal.timeout(this.config.timeout)
800
- });
801
- if (!response.ok) {
802
- const text = await response.text();
803
- throw new Error(`Compact API error ${response.status}: ${text}`);
804
- }
805
- const data = await response.json();
806
- if (debug) {
807
- console.log(`[Compact] compact() done in ${Date.now() - startTime}ms`);
860
+ if (input.query !== void 0) body.query = input.query;
861
+ if (input.messages) body.messages = input.messages;
862
+ else if (typeof input.input === "string") body.input = input.input;
863
+ else if (Array.isArray(input.input)) body.messages = input.input;
864
+ else throw new Error("Either 'input' or 'messages' must be provided");
865
+ try {
866
+ return await this._client.post("/v1/compact", { body, timeout: this.config.timeout });
867
+ } catch (err) {
868
+ if (err instanceof MorphError) {
869
+ throw new Error(`Compact API error ${err.statusCode}: ${err.message}`);
870
+ }
871
+ throw err;
808
872
  }
809
- return data;
810
873
  }
811
874
  };
812
875
  // Annotate the CommonJS export names for ESM import in node: