@morphllm/morphsdk 0.2.172 → 0.2.173

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 (197) hide show
  1. package/dist/{chunk-SJVLAGUL.js → chunk-33ZRF6X3.js} +2 -2
  2. package/dist/{chunk-QFE5523Q.js → chunk-3GNXTHHB.js} +2 -2
  3. package/dist/{chunk-QZ3V2BP7.js → chunk-3I4LCNWJ.js} +2 -2
  4. package/dist/{chunk-VBARKJWL.js → chunk-577P2AXE.js} +2 -2
  5. package/dist/{chunk-AE7M2I52.js → chunk-5RTWSAZ6.js} +2 -2
  6. package/dist/{chunk-GJZXDRH5.js → chunk-73DQQMGR.js} +2 -2
  7. package/dist/{chunk-GJZXDRH5.js.map → chunk-73DQQMGR.js.map} +1 -1
  8. package/dist/{chunk-2SNAXTUJ.js → chunk-7EUJ2AKS.js} +2 -2
  9. package/dist/{chunk-CQF76HJC.js → chunk-ACWLQFYS.js} +4 -4
  10. package/dist/{chunk-5DA6SZQJ.js → chunk-AZOSA7VT.js} +2 -2
  11. package/dist/{chunk-UADW6FYD.js → chunk-C3V5FHZI.js} +2 -2
  12. package/dist/{chunk-QQXNZIVK.js → chunk-CEZQSARX.js} +2 -2
  13. package/dist/{chunk-ESXCQBMU.js → chunk-CV7SLK6R.js} +2 -2
  14. package/dist/{chunk-QAXXE4AD.js → chunk-EJ2CQO4V.js} +2 -2
  15. package/dist/{chunk-JWZ5DLAS.js → chunk-FN4ADWFQ.js} +2 -2
  16. package/dist/{chunk-U4J3BVAQ.js → chunk-GESRH23M.js} +2 -2
  17. package/dist/{chunk-FOIDGIY4.js → chunk-I4FCFIBU.js} +4 -4
  18. package/dist/{chunk-XYTYIAMQ.js → chunk-JXJBF6CV.js} +2 -2
  19. package/dist/{chunk-IJ33I7P5.js → chunk-MQTMT4OR.js} +2 -2
  20. package/dist/{chunk-IN2U7AAI.js → chunk-NBKL7VWX.js} +26 -26
  21. package/dist/{chunk-7PVVPLRL.js → chunk-QCFHQPHC.js} +2 -2
  22. package/dist/{chunk-453ZV2AX.js → chunk-QE3SPHIM.js} +4 -4
  23. package/dist/{chunk-MO6S2LRD.js → chunk-QE6JHRVD.js} +2 -2
  24. package/dist/{chunk-XJDXV5VX.js → chunk-RXCHMNCY.js} +2 -2
  25. package/dist/{chunk-Z4GJVN52.js → chunk-S5R4H5HM.js} +2 -2
  26. package/dist/{chunk-53ZJMCWU.js → chunk-SM3OQZRS.js} +3 -3
  27. package/dist/{chunk-66OHYI24.js → chunk-TS56XYWB.js} +3 -3
  28. package/dist/{chunk-U4MRSZQQ.js → chunk-TW3XQET2.js} +2 -2
  29. package/dist/{chunk-ZLSNL6M2.js → chunk-W6AGNJ5O.js} +3 -3
  30. package/dist/{chunk-6X6QMRQG.js → chunk-YGNPVOUO.js} +4 -4
  31. package/dist/{chunk-6X6QMRQG.js.map → chunk-YGNPVOUO.js.map} +1 -1
  32. package/dist/{chunk-NI7PWQ3B.js → chunk-Z3KRXUNG.js} +2 -2
  33. package/dist/{chunk-QZR7SJ5N.js → chunk-ZFOR3LI4.js} +2 -2
  34. package/dist/client.cjs +2 -2
  35. package/dist/client.cjs.map +1 -1
  36. package/dist/client.js +28 -28
  37. package/dist/core/client.cjs +1 -1
  38. package/dist/core/client.cjs.map +1 -1
  39. package/dist/core/client.js +4 -4
  40. package/dist/core/error.cjs +1 -1
  41. package/dist/core/error.cjs.map +1 -1
  42. package/dist/core/error.js +3 -3
  43. package/dist/core/index.cjs +1 -1
  44. package/dist/core/index.cjs.map +1 -1
  45. package/dist/core/index.js +4 -4
  46. package/dist/edge.cjs +1 -1
  47. package/dist/edge.cjs.map +1 -1
  48. package/dist/edge.js +7 -7
  49. package/dist/git/client.cjs +1 -1
  50. package/dist/git/client.cjs.map +1 -1
  51. package/dist/git/client.js +5 -5
  52. package/dist/git/index.cjs +1 -1
  53. package/dist/git/index.cjs.map +1 -1
  54. package/dist/git/index.js +5 -5
  55. package/dist/index.cjs +2 -2
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.js +28 -28
  58. package/dist/modelrouter/core.cjs +1 -1
  59. package/dist/modelrouter/core.cjs.map +1 -1
  60. package/dist/modelrouter/core.js +5 -5
  61. package/dist/modelrouter/index.cjs +1 -1
  62. package/dist/modelrouter/index.cjs.map +1 -1
  63. package/dist/modelrouter/index.js +5 -5
  64. package/dist/subagents/anthropic.cjs +1 -1
  65. package/dist/subagents/anthropic.cjs.map +1 -1
  66. package/dist/subagents/anthropic.js +9 -9
  67. package/dist/subagents/vercel.cjs +1 -1
  68. package/dist/subagents/vercel.cjs.map +1 -1
  69. package/dist/subagents/vercel.js +9 -9
  70. package/dist/tools/browser/anthropic.cjs +1 -1
  71. package/dist/tools/browser/anthropic.cjs.map +1 -1
  72. package/dist/tools/browser/anthropic.js +7 -7
  73. package/dist/tools/browser/core.cjs +1 -1
  74. package/dist/tools/browser/core.cjs.map +1 -1
  75. package/dist/tools/browser/core.js +6 -6
  76. package/dist/tools/browser/index.cjs +1 -1
  77. package/dist/tools/browser/index.cjs.map +1 -1
  78. package/dist/tools/browser/index.js +9 -9
  79. package/dist/tools/browser/openai.cjs +1 -1
  80. package/dist/tools/browser/openai.cjs.map +1 -1
  81. package/dist/tools/browser/openai.js +7 -7
  82. package/dist/tools/browser/profiles/core.cjs +1 -1
  83. package/dist/tools/browser/profiles/core.cjs.map +1 -1
  84. package/dist/tools/browser/profiles/core.js +3 -3
  85. package/dist/tools/browser/profiles/index.cjs +1 -1
  86. package/dist/tools/browser/profiles/index.cjs.map +1 -1
  87. package/dist/tools/browser/profiles/index.js +3 -3
  88. package/dist/tools/browser/vercel.cjs +1 -1
  89. package/dist/tools/browser/vercel.cjs.map +1 -1
  90. package/dist/tools/browser/vercel.js +7 -7
  91. package/dist/tools/codebase_search/anthropic.cjs +1 -1
  92. package/dist/tools/codebase_search/anthropic.cjs.map +1 -1
  93. package/dist/tools/codebase_search/anthropic.js +6 -6
  94. package/dist/tools/codebase_search/core.cjs +1 -1
  95. package/dist/tools/codebase_search/core.cjs.map +1 -1
  96. package/dist/tools/codebase_search/core.js +5 -5
  97. package/dist/tools/codebase_search/index.cjs +1 -1
  98. package/dist/tools/codebase_search/index.cjs.map +1 -1
  99. package/dist/tools/codebase_search/index.js +8 -8
  100. package/dist/tools/codebase_search/openai.cjs +1 -1
  101. package/dist/tools/codebase_search/openai.cjs.map +1 -1
  102. package/dist/tools/codebase_search/openai.js +6 -6
  103. package/dist/tools/codebase_search/vercel.cjs +1 -1
  104. package/dist/tools/codebase_search/vercel.cjs.map +1 -1
  105. package/dist/tools/codebase_search/vercel.js +6 -6
  106. package/dist/tools/compact/core.cjs +1 -1
  107. package/dist/tools/compact/core.cjs.map +1 -1
  108. package/dist/tools/compact/core.js +5 -5
  109. package/dist/tools/compact/index.cjs +1 -1
  110. package/dist/tools/compact/index.cjs.map +1 -1
  111. package/dist/tools/compact/index.js +6 -6
  112. package/dist/tools/fastapply/anthropic.cjs +1 -1
  113. package/dist/tools/fastapply/anthropic.cjs.map +1 -1
  114. package/dist/tools/fastapply/anthropic.js +7 -7
  115. package/dist/tools/fastapply/apply.cjs +1 -1
  116. package/dist/tools/fastapply/apply.cjs.map +1 -1
  117. package/dist/tools/fastapply/apply.js +2 -2
  118. package/dist/tools/fastapply/core.cjs +1 -1
  119. package/dist/tools/fastapply/core.cjs.map +1 -1
  120. package/dist/tools/fastapply/core.js +6 -6
  121. package/dist/tools/fastapply/index.cjs +1 -1
  122. package/dist/tools/fastapply/index.cjs.map +1 -1
  123. package/dist/tools/fastapply/index.js +9 -9
  124. package/dist/tools/fastapply/openai.cjs +1 -1
  125. package/dist/tools/fastapply/openai.cjs.map +1 -1
  126. package/dist/tools/fastapply/openai.js +7 -7
  127. package/dist/tools/fastapply/vercel.cjs +1 -1
  128. package/dist/tools/fastapply/vercel.cjs.map +1 -1
  129. package/dist/tools/fastapply/vercel.js +7 -7
  130. package/dist/tools/index.cjs +1 -1
  131. package/dist/tools/index.cjs.map +1 -1
  132. package/dist/tools/index.js +9 -9
  133. package/dist/tools/reflex/core.cjs +2 -2
  134. package/dist/tools/reflex/core.cjs.map +1 -1
  135. package/dist/tools/reflex/core.js +5 -5
  136. package/dist/tools/reflex/index.cjs +2 -2
  137. package/dist/tools/reflex/index.cjs.map +1 -1
  138. package/dist/tools/reflex/index.js +5 -5
  139. package/dist/tools/reflex/types.cjs.map +1 -1
  140. package/dist/tools/reflex/types.d.ts +2 -1
  141. package/dist/tools/utils/resilience.cjs +1 -1
  142. package/dist/tools/utils/resilience.cjs.map +1 -1
  143. package/dist/tools/utils/resilience.js +2 -2
  144. package/dist/tools/warp_grep/agent/runner.cjs +1 -1
  145. package/dist/tools/warp_grep/agent/runner.cjs.map +1 -1
  146. package/dist/tools/warp_grep/agent/runner.js +2 -2
  147. package/dist/tools/warp_grep/anthropic.cjs +1 -1
  148. package/dist/tools/warp_grep/anthropic.cjs.map +1 -1
  149. package/dist/tools/warp_grep/anthropic.js +9 -9
  150. package/dist/tools/warp_grep/client.cjs +1 -1
  151. package/dist/tools/warp_grep/client.cjs.map +1 -1
  152. package/dist/tools/warp_grep/client.js +8 -8
  153. package/dist/tools/warp_grep/gemini.cjs +1 -1
  154. package/dist/tools/warp_grep/gemini.cjs.map +1 -1
  155. package/dist/tools/warp_grep/gemini.js +8 -8
  156. package/dist/tools/warp_grep/index.cjs +1 -1
  157. package/dist/tools/warp_grep/index.cjs.map +1 -1
  158. package/dist/tools/warp_grep/index.js +8 -8
  159. package/dist/tools/warp_grep/openai.cjs +1 -1
  160. package/dist/tools/warp_grep/openai.cjs.map +1 -1
  161. package/dist/tools/warp_grep/openai.js +9 -9
  162. package/dist/tools/warp_grep/vercel.cjs +1 -1
  163. package/dist/tools/warp_grep/vercel.cjs.map +1 -1
  164. package/dist/tools/warp_grep/vercel.js +9 -9
  165. package/dist/version.cjs +1 -1
  166. package/dist/version.cjs.map +1 -1
  167. package/dist/version.js +1 -1
  168. package/package.json +1 -1
  169. /package/dist/{chunk-SJVLAGUL.js.map → chunk-33ZRF6X3.js.map} +0 -0
  170. /package/dist/{chunk-QFE5523Q.js.map → chunk-3GNXTHHB.js.map} +0 -0
  171. /package/dist/{chunk-QZ3V2BP7.js.map → chunk-3I4LCNWJ.js.map} +0 -0
  172. /package/dist/{chunk-VBARKJWL.js.map → chunk-577P2AXE.js.map} +0 -0
  173. /package/dist/{chunk-AE7M2I52.js.map → chunk-5RTWSAZ6.js.map} +0 -0
  174. /package/dist/{chunk-2SNAXTUJ.js.map → chunk-7EUJ2AKS.js.map} +0 -0
  175. /package/dist/{chunk-CQF76HJC.js.map → chunk-ACWLQFYS.js.map} +0 -0
  176. /package/dist/{chunk-5DA6SZQJ.js.map → chunk-AZOSA7VT.js.map} +0 -0
  177. /package/dist/{chunk-UADW6FYD.js.map → chunk-C3V5FHZI.js.map} +0 -0
  178. /package/dist/{chunk-QQXNZIVK.js.map → chunk-CEZQSARX.js.map} +0 -0
  179. /package/dist/{chunk-ESXCQBMU.js.map → chunk-CV7SLK6R.js.map} +0 -0
  180. /package/dist/{chunk-QAXXE4AD.js.map → chunk-EJ2CQO4V.js.map} +0 -0
  181. /package/dist/{chunk-JWZ5DLAS.js.map → chunk-FN4ADWFQ.js.map} +0 -0
  182. /package/dist/{chunk-U4J3BVAQ.js.map → chunk-GESRH23M.js.map} +0 -0
  183. /package/dist/{chunk-FOIDGIY4.js.map → chunk-I4FCFIBU.js.map} +0 -0
  184. /package/dist/{chunk-XYTYIAMQ.js.map → chunk-JXJBF6CV.js.map} +0 -0
  185. /package/dist/{chunk-IJ33I7P5.js.map → chunk-MQTMT4OR.js.map} +0 -0
  186. /package/dist/{chunk-IN2U7AAI.js.map → chunk-NBKL7VWX.js.map} +0 -0
  187. /package/dist/{chunk-7PVVPLRL.js.map → chunk-QCFHQPHC.js.map} +0 -0
  188. /package/dist/{chunk-453ZV2AX.js.map → chunk-QE3SPHIM.js.map} +0 -0
  189. /package/dist/{chunk-MO6S2LRD.js.map → chunk-QE6JHRVD.js.map} +0 -0
  190. /package/dist/{chunk-XJDXV5VX.js.map → chunk-RXCHMNCY.js.map} +0 -0
  191. /package/dist/{chunk-Z4GJVN52.js.map → chunk-S5R4H5HM.js.map} +0 -0
  192. /package/dist/{chunk-53ZJMCWU.js.map → chunk-SM3OQZRS.js.map} +0 -0
  193. /package/dist/{chunk-66OHYI24.js.map → chunk-TS56XYWB.js.map} +0 -0
  194. /package/dist/{chunk-U4MRSZQQ.js.map → chunk-TW3XQET2.js.map} +0 -0
  195. /package/dist/{chunk-ZLSNL6M2.js.map → chunk-W6AGNJ5O.js.map} +0 -0
  196. /package/dist/{chunk-NI7PWQ3B.js.map → chunk-Z3KRXUNG.js.map} +0 -0
  197. /package/dist/{chunk-QZR7SJ5N.js.map → chunk-ZFOR3LI4.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-453ZV2AX.js";
3
+ } from "./chunk-QE3SPHIM.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-F3NCFNUX.js";
7
7
  import {
8
8
  MorphError
9
- } from "./chunk-XYTYIAMQ.js";
9
+ } from "./chunk-JXJBF6CV.js";
10
10
  import {
11
11
  APIResource
12
12
  } from "./chunk-LKFZBBTD.js";
@@ -94,4 +94,4 @@ export {
94
94
  CodebaseSearchClient,
95
95
  executeCodebaseSearch
96
96
  };
97
- //# sourceMappingURL=chunk-ZLSNL6M2.js.map
97
+ //# sourceMappingURL=chunk-W6AGNJ5O.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MorphAPIClient
3
- } from "./chunk-453ZV2AX.js";
3
+ } from "./chunk-QE3SPHIM.js";
4
4
  import {
5
5
  MorphError
6
- } from "./chunk-XYTYIAMQ.js";
6
+ } from "./chunk-JXJBF6CV.js";
7
7
  import {
8
8
  APIResource
9
9
  } from "./chunk-LKFZBBTD.js";
@@ -36,7 +36,7 @@ var ReflexClient = class extends APIResource {
36
36
  model: raw.model,
37
37
  label: raw.label,
38
38
  confidence: raw.confidence,
39
- allScores: raw.all_scores ?? {},
39
+ allScores: raw.all_scores ?? [],
40
40
  inferenceTimeMs: raw.inference_time_ms
41
41
  };
42
42
  }
@@ -155,4 +155,4 @@ export {
155
155
  ReflexClient,
156
156
  ReflexJobsResource
157
157
  };
158
- //# sourceMappingURL=chunk-6X6QMRQG.js.map
158
+ //# sourceMappingURL=chunk-YGNPVOUO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../tools/reflex/core.ts"],"sourcesContent":["/**\n * Reflex: train and serve small text classifiers.\n *\n * const morph = new MorphClient({ apiKey });\n * const job = await morph.reflex.jobs.create({ trainingData: rows, suffix: 'support' });\n * const ready = await morph.reflex.jobs.waitForReady(job.id);\n * const out = await morph.reflex.predict({ model: ready.fineTunedModel!, text: 'refund please' });\n *\n * Mirrors the OpenAI fine-tuning shape (`reflex.jobs.create/retrieve/list/cancel/delete`)\n * plus `reflex.predict`. All HTTP goes through the shared `MorphAPIClient` transport.\n */\nimport { MorphAPIClient } from '../../core/client.js';\nimport { APIResource } from '../../core/resource.js';\nimport { MorphError } from '../utils/resilience.js';\nimport type {\n CreateReflexJobInput,\n DeletedReflexJob,\n ListReflexJobsInput,\n ReflexConfig,\n ReflexEvent,\n ReflexJob,\n ReflexJobList,\n ReflexPredictInput,\n ReflexPredictResult,\n} from './types.js';\n\nconst BASE_MODEL = 'morph-reflex-v1';\n\n/** Build a transport from either a shared client or a standalone `ReflexConfig`. */\nfunction resolveClient(clientOrConfig: MorphAPIClient | ReflexConfig): MorphAPIClient {\n if (clientOrConfig instanceof MorphAPIClient) return clientOrConfig;\n return new MorphAPIClient({\n apiKey: clientOrConfig.apiKey,\n baseURL: clientOrConfig.baseUrl,\n timeout: clientOrConfig.timeout,\n retryConfig: clientOrConfig.retryConfig,\n debug: clientOrConfig.debug,\n });\n}\n\n/**\n * @deprecated Prefer the unified `MorphClient` (`new MorphClient({ apiKey }).reflex`).\n * Standalone clients remain only for backwards compatibility and may be removed in a future\n * major version — do not use them in new code.\n */\nexport class ReflexClient extends APIResource {\n /** Train, retrieve, and manage classifier jobs. */\n public readonly jobs: ReflexJobsResource;\n\n constructor(clientOrConfig: MorphAPIClient | ReflexConfig = {}) {\n super(resolveClient(clientOrConfig));\n this.jobs = new ReflexJobsResource(this._client);\n }\n\n /** Classify text against a trained model. The model must be `succeeded`. */\n async predict(input: ReflexPredictInput): Promise<ReflexPredictResult> {\n const raw = await this._client.post<RawPredict>('/v1/reflex/predict', {\n body: { model: input.model, text: input.text },\n });\n return {\n model: raw.model,\n label: raw.label,\n confidence: raw.confidence,\n allScores: raw.all_scores ?? {},\n inferenceTimeMs: raw.inference_time_ms,\n };\n }\n}\n\nexport class ReflexJobsResource extends APIResource {\n /** Start a training job from labeled data, a description, or unlabeled text. */\n async create(input: CreateReflexJobInput): Promise<ReflexJob> {\n return toReflexJob(await this._client.post<RawJob>('/v1/fine_tuning/jobs', { body: createBody(input) }));\n }\n\n /** Fetch a job by id. */\n async retrieve(id: string): Promise<ReflexJob> {\n return toReflexJob(await this._client.get<RawJob>(`/v1/fine_tuning/jobs/${encodeURIComponent(id)}`));\n }\n\n /** List the caller's jobs, newest first. */\n async list(input: ListReflexJobsInput = {}): Promise<ReflexJobList> {\n const raw = await this._client.get<RawJobList>('/v1/fine_tuning/jobs', {\n query: { limit: input.limit, after: input.after },\n });\n return { data: (raw.data ?? []).map(toReflexJob), hasMore: Boolean(raw.has_more) };\n }\n\n /** Stop a queued or running job. */\n async cancel(id: string): Promise<ReflexJob> {\n return toReflexJob(await this._client.post<RawJob>(`/v1/fine_tuning/jobs/${encodeURIComponent(id)}/cancel`));\n }\n\n /** Delete a job and its trained model. */\n async delete(id: string): Promise<DeletedReflexJob> {\n const raw = await this._client.delete<{ id: string; deleted?: boolean }>(\n `/v1/fine_tuning/jobs/${encodeURIComponent(id)}`,\n );\n return { id: raw.id, deleted: Boolean(raw.deleted) };\n }\n\n /** The training loss curve as events, plus a terminal event. */\n async events(id: string): Promise<ReflexEvent[]> {\n const raw = await this._client.get<{ data?: RawEvent[] }>(\n `/v1/fine_tuning/jobs/${encodeURIComponent(id)}/events`,\n );\n return (raw.data ?? []).map(toReflexEvent);\n }\n\n /**\n * Poll until the job reaches a terminal status and return it on success.\n * Throws a `MorphError` if it fails, is cancelled, or exceeds `timeoutMs`.\n */\n async waitForReady(id: string, opts: { pollMs?: number; timeoutMs?: number } = {}): Promise<ReflexJob> {\n const pollMs = opts.pollMs ?? 3_000;\n const deadline = Date.now() + (opts.timeoutMs ?? 15 * 60_000);\n\n for (;;) {\n const job = await this.retrieve(id);\n if (job.status === 'succeeded') return job;\n if (job.status === 'failed' || job.status === 'cancelled') {\n throw new MorphError(job.error?.message ?? `Reflex job ${job.status}`, `reflex_job_${job.status}`);\n }\n if (Date.now() >= deadline) {\n throw new MorphError(`Reflex job ${id} did not finish in time`, 'reflex_timeout');\n }\n await sleep(pollMs);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Mapping (camelCase <-> snake_case) and helpers\n// ---------------------------------------------------------------------------\n\ninterface RawJob {\n id: string;\n model: string;\n created_at: number;\n finished_at: number | null;\n fine_tuned_model: string | null;\n status: ReflexJob['status'];\n labels?: string[];\n trained_examples?: number;\n result?: { accuracy: number | null; f1_score: number | null } | null;\n error?: { message: string } | null;\n suffix?: string | null;\n}\ninterface RawJobList {\n data?: RawJob[];\n has_more?: boolean;\n}\ninterface RawPredict {\n model: string;\n label: string;\n confidence: number;\n all_scores?: Record<string, number>;\n inference_time_ms: number;\n}\ninterface RawEvent {\n id: string;\n created_at: number;\n level: ReflexEvent['level'];\n message: string;\n type: ReflexEvent['type'];\n data?: { epoch?: number; step?: number; train_loss?: number };\n}\n\nfunction createBody(input: CreateReflexJobInput): Record<string, unknown> {\n const base: Record<string, unknown> = { model: BASE_MODEL };\n if (input.suffix) base.suffix = input.suffix;\n\n if ('trainingData' in input) {\n if (input.labels) base.labels = input.labels;\n return { ...base, training_data: input.trainingData };\n }\n if ('generate' in input) {\n return {\n ...base,\n labels: input.labels,\n generate: {\n description: input.generate.description,\n ...(input.generate.examplesPerLabel != null ? { examples_per_label: input.generate.examplesPerLabel } : {}),\n },\n };\n }\n return {\n ...base,\n labels: input.labels,\n label_data: {\n texts: input.labelData.texts,\n ...(input.labelData.description ? { description: input.labelData.description } : {}),\n },\n };\n}\n\nfunction toReflexJob(raw: RawJob): ReflexJob {\n return {\n id: raw.id,\n object: 'fine_tuning.job',\n model: raw.model,\n createdAt: raw.created_at,\n finishedAt: raw.finished_at ?? null,\n fineTunedModel: raw.fine_tuned_model ?? null,\n status: raw.status,\n labels: raw.labels ?? [],\n trainedExamples: raw.trained_examples ?? 0,\n result: raw.result ? { accuracy: raw.result.accuracy ?? null, f1Score: raw.result.f1_score ?? null } : null,\n error: raw.error ? { message: raw.error.message } : null,\n suffix: raw.suffix ?? null,\n };\n}\n\nfunction toReflexEvent(raw: RawEvent): ReflexEvent {\n return {\n id: raw.id,\n createdAt: raw.created_at,\n level: raw.level,\n message: raw.message,\n type: raw.type,\n data: { epoch: raw.data?.epoch ?? 0, step: raw.data?.step ?? 0, trainLoss: raw.data?.train_loss ?? 0 },\n };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../tools/reflex/core.ts"],"sourcesContent":["/**\n * Reflex: train and serve small text classifiers.\n *\n * const morph = new MorphClient({ apiKey });\n * const job = await morph.reflex.jobs.create({ trainingData: rows, suffix: 'support' });\n * const ready = await morph.reflex.jobs.waitForReady(job.id);\n * const out = await morph.reflex.predict({ model: ready.fineTunedModel!, text: 'refund please' });\n *\n * Mirrors the OpenAI fine-tuning shape (`reflex.jobs.create/retrieve/list/cancel/delete`)\n * plus `reflex.predict`. All HTTP goes through the shared `MorphAPIClient` transport.\n */\nimport { MorphAPIClient } from '../../core/client.js';\nimport { APIResource } from '../../core/resource.js';\nimport { MorphError } from '../utils/resilience.js';\nimport type {\n CreateReflexJobInput,\n DeletedReflexJob,\n ListReflexJobsInput,\n ReflexConfig,\n ReflexEvent,\n ReflexJob,\n ReflexJobList,\n ReflexPredictInput,\n ReflexPredictResult,\n} from './types.js';\n\nconst BASE_MODEL = 'morph-reflex-v1';\n\n/** Build a transport from either a shared client or a standalone `ReflexConfig`. */\nfunction resolveClient(clientOrConfig: MorphAPIClient | ReflexConfig): MorphAPIClient {\n if (clientOrConfig instanceof MorphAPIClient) return clientOrConfig;\n return new MorphAPIClient({\n apiKey: clientOrConfig.apiKey,\n baseURL: clientOrConfig.baseUrl,\n timeout: clientOrConfig.timeout,\n retryConfig: clientOrConfig.retryConfig,\n debug: clientOrConfig.debug,\n });\n}\n\n/**\n * @deprecated Prefer the unified `MorphClient` (`new MorphClient({ apiKey }).reflex`).\n * Standalone clients remain only for backwards compatibility and may be removed in a future\n * major version — do not use them in new code.\n */\nexport class ReflexClient extends APIResource {\n /** Train, retrieve, and manage classifier jobs. */\n public readonly jobs: ReflexJobsResource;\n\n constructor(clientOrConfig: MorphAPIClient | ReflexConfig = {}) {\n super(resolveClient(clientOrConfig));\n this.jobs = new ReflexJobsResource(this._client);\n }\n\n /** Classify text against a trained model. The model must be `succeeded`. */\n async predict(input: ReflexPredictInput): Promise<ReflexPredictResult> {\n const raw = await this._client.post<RawPredict>('/v1/reflex/predict', {\n body: { model: input.model, text: input.text },\n });\n return {\n model: raw.model,\n label: raw.label,\n confidence: raw.confidence,\n allScores: raw.all_scores ?? [],\n inferenceTimeMs: raw.inference_time_ms,\n };\n }\n}\n\nexport class ReflexJobsResource extends APIResource {\n /** Start a training job from labeled data, a description, or unlabeled text. */\n async create(input: CreateReflexJobInput): Promise<ReflexJob> {\n return toReflexJob(await this._client.post<RawJob>('/v1/fine_tuning/jobs', { body: createBody(input) }));\n }\n\n /** Fetch a job by id. */\n async retrieve(id: string): Promise<ReflexJob> {\n return toReflexJob(await this._client.get<RawJob>(`/v1/fine_tuning/jobs/${encodeURIComponent(id)}`));\n }\n\n /** List the caller's jobs, newest first. */\n async list(input: ListReflexJobsInput = {}): Promise<ReflexJobList> {\n const raw = await this._client.get<RawJobList>('/v1/fine_tuning/jobs', {\n query: { limit: input.limit, after: input.after },\n });\n return { data: (raw.data ?? []).map(toReflexJob), hasMore: Boolean(raw.has_more) };\n }\n\n /** Stop a queued or running job. */\n async cancel(id: string): Promise<ReflexJob> {\n return toReflexJob(await this._client.post<RawJob>(`/v1/fine_tuning/jobs/${encodeURIComponent(id)}/cancel`));\n }\n\n /** Delete a job and its trained model. */\n async delete(id: string): Promise<DeletedReflexJob> {\n const raw = await this._client.delete<{ id: string; deleted?: boolean }>(\n `/v1/fine_tuning/jobs/${encodeURIComponent(id)}`,\n );\n return { id: raw.id, deleted: Boolean(raw.deleted) };\n }\n\n /** The training loss curve as events, plus a terminal event. */\n async events(id: string): Promise<ReflexEvent[]> {\n const raw = await this._client.get<{ data?: RawEvent[] }>(\n `/v1/fine_tuning/jobs/${encodeURIComponent(id)}/events`,\n );\n return (raw.data ?? []).map(toReflexEvent);\n }\n\n /**\n * Poll until the job reaches a terminal status and return it on success.\n * Throws a `MorphError` if it fails, is cancelled, or exceeds `timeoutMs`.\n */\n async waitForReady(id: string, opts: { pollMs?: number; timeoutMs?: number } = {}): Promise<ReflexJob> {\n const pollMs = opts.pollMs ?? 3_000;\n const deadline = Date.now() + (opts.timeoutMs ?? 15 * 60_000);\n\n for (;;) {\n const job = await this.retrieve(id);\n if (job.status === 'succeeded') return job;\n if (job.status === 'failed' || job.status === 'cancelled') {\n throw new MorphError(job.error?.message ?? `Reflex job ${job.status}`, `reflex_job_${job.status}`);\n }\n if (Date.now() >= deadline) {\n throw new MorphError(`Reflex job ${id} did not finish in time`, 'reflex_timeout');\n }\n await sleep(pollMs);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Mapping (camelCase <-> snake_case) and helpers\n// ---------------------------------------------------------------------------\n\ninterface RawJob {\n id: string;\n model: string;\n created_at: number;\n finished_at: number | null;\n fine_tuned_model: string | null;\n status: ReflexJob['status'];\n labels?: string[];\n trained_examples?: number;\n result?: { accuracy: number | null; f1_score: number | null } | null;\n error?: { message: string } | null;\n suffix?: string | null;\n}\ninterface RawJobList {\n data?: RawJob[];\n has_more?: boolean;\n}\ninterface RawPredict {\n model: string;\n label: string;\n confidence: number;\n all_scores?: number[];\n inference_time_ms: number;\n}\ninterface RawEvent {\n id: string;\n created_at: number;\n level: ReflexEvent['level'];\n message: string;\n type: ReflexEvent['type'];\n data?: { epoch?: number; step?: number; train_loss?: number };\n}\n\nfunction createBody(input: CreateReflexJobInput): Record<string, unknown> {\n const base: Record<string, unknown> = { model: BASE_MODEL };\n if (input.suffix) base.suffix = input.suffix;\n\n if ('trainingData' in input) {\n if (input.labels) base.labels = input.labels;\n return { ...base, training_data: input.trainingData };\n }\n if ('generate' in input) {\n return {\n ...base,\n labels: input.labels,\n generate: {\n description: input.generate.description,\n ...(input.generate.examplesPerLabel != null ? { examples_per_label: input.generate.examplesPerLabel } : {}),\n },\n };\n }\n return {\n ...base,\n labels: input.labels,\n label_data: {\n texts: input.labelData.texts,\n ...(input.labelData.description ? { description: input.labelData.description } : {}),\n },\n };\n}\n\nfunction toReflexJob(raw: RawJob): ReflexJob {\n return {\n id: raw.id,\n object: 'fine_tuning.job',\n model: raw.model,\n createdAt: raw.created_at,\n finishedAt: raw.finished_at ?? null,\n fineTunedModel: raw.fine_tuned_model ?? null,\n status: raw.status,\n labels: raw.labels ?? [],\n trainedExamples: raw.trained_examples ?? 0,\n result: raw.result ? { accuracy: raw.result.accuracy ?? null, f1Score: raw.result.f1_score ?? null } : null,\n error: raw.error ? { message: raw.error.message } : null,\n suffix: raw.suffix ?? null,\n };\n}\n\nfunction toReflexEvent(raw: RawEvent): ReflexEvent {\n return {\n id: raw.id,\n createdAt: raw.created_at,\n level: raw.level,\n message: raw.message,\n type: raw.type,\n data: { epoch: raw.data?.epoch ?? 0, step: raw.data?.step ?? 0, trainLoss: raw.data?.train_loss ?? 0 },\n };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  executeEditFile
3
- } from "./chunk-Z4GJVN52.js";
3
+ } from "./chunk-S5R4H5HM.js";
4
4
  import {
5
5
  EDIT_FILE_SYSTEM_PROMPT,
6
6
  EDIT_FILE_TOOL_DESCRIPTION
@@ -86,4 +86,4 @@ export {
86
86
  vercel_default,
87
87
  vercel_exports
88
88
  };
89
- //# sourceMappingURL=chunk-NI7PWQ3B.js.map
89
+ //# sourceMappingURL=chunk-Z3KRXUNG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MorphError
3
- } from "./chunk-XYTYIAMQ.js";
3
+ } from "./chunk-JXJBF6CV.js";
4
4
 
5
5
  // core/error.ts
6
6
  async function toMorphError(response) {
@@ -21,4 +21,4 @@ async function toMorphError(response) {
21
21
  export {
22
22
  toMorphError
23
23
  };
24
- //# sourceMappingURL=chunk-QZR7SJ5N.js.map
24
+ //# sourceMappingURL=chunk-ZFOR3LI4.js.map
package/dist/client.cjs CHANGED
@@ -36,7 +36,7 @@ var init_package = __esm({
36
36
  "package.json"() {
37
37
  package_default = {
38
38
  name: "@morphllm/morphsdk",
39
- version: "0.2.172",
39
+ version: "0.2.173",
40
40
  description: "TypeScript SDK and CLI for Morph Fast Apply integration",
41
41
  type: "module",
42
42
  main: "./dist/index.cjs",
@@ -5037,7 +5037,7 @@ var ReflexClient = class extends APIResource {
5037
5037
  model: raw.model,
5038
5038
  label: raw.label,
5039
5039
  confidence: raw.confidence,
5040
- allScores: raw.all_scores ?? {},
5040
+ allScores: raw.all_scores ?? [],
5041
5041
  inferenceTimeMs: raw.inference_time_ms
5042
5042
  };
5043
5043
  }