@mantra-ai/core 0.5.0 → 0.6.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 (42) hide show
  1. package/dist/ai/claude/client.d.ts +24 -0
  2. package/dist/ai/claude/client.d.ts.map +1 -0
  3. package/dist/ai/claude/client.js +71 -0
  4. package/dist/ai/claude/client.js.map +1 -0
  5. package/dist/ai/{openai → claude}/generate.d.ts +6 -3
  6. package/dist/ai/claude/generate.d.ts.map +1 -0
  7. package/dist/ai/claude/generate.js +188 -0
  8. package/dist/ai/claude/generate.js.map +1 -0
  9. package/dist/ai/claude/index.d.ts +3 -0
  10. package/dist/ai/claude/index.d.ts.map +1 -0
  11. package/dist/ai/claude/index.js +3 -0
  12. package/dist/ai/claude/index.js.map +1 -0
  13. package/dist/ai/google/types.js +1 -1
  14. package/dist/ai/google/types.js.map +1 -1
  15. package/dist/ai/index.d.ts +1 -1
  16. package/dist/ai/index.js +1 -1
  17. package/dist/ai/{openai/types.d.ts → types.d.ts} +4 -24
  18. package/dist/ai/types.d.ts.map +1 -0
  19. package/dist/ai/{openai/types.js → types.js} +2 -4
  20. package/dist/ai/types.js.map +1 -0
  21. package/dist/analysis/extract-findings.d.ts +1 -1
  22. package/dist/analysis/extract-findings.d.ts.map +1 -1
  23. package/dist/analysis/extract-findings.js +2 -2
  24. package/dist/analysis/generate-hypotheses.d.ts +1 -1
  25. package/dist/analysis/generate-hypotheses.d.ts.map +1 -1
  26. package/dist/analysis/generate-hypotheses.js +2 -2
  27. package/dist/analysis/prompts.d.ts +1 -1
  28. package/dist/analysis/prompts.d.ts.map +1 -1
  29. package/package.json +9 -9
  30. package/dist/ai/openai/client.d.ts +0 -22
  31. package/dist/ai/openai/client.d.ts.map +0 -1
  32. package/dist/ai/openai/client.js +0 -49
  33. package/dist/ai/openai/client.js.map +0 -1
  34. package/dist/ai/openai/generate.d.ts.map +0 -1
  35. package/dist/ai/openai/generate.js +0 -178
  36. package/dist/ai/openai/generate.js.map +0 -1
  37. package/dist/ai/openai/index.d.ts +0 -4
  38. package/dist/ai/openai/index.d.ts.map +0 -1
  39. package/dist/ai/openai/index.js +0 -4
  40. package/dist/ai/openai/index.js.map +0 -1
  41. package/dist/ai/openai/types.d.ts.map +0 -1
  42. package/dist/ai/openai/types.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ export interface ClaudeCliOptions {
2
+ model?: string;
3
+ maxTurns?: number;
4
+ /** Timeout in ms. Default: 5 minutes. */
5
+ timeout?: number;
6
+ }
7
+ export type ClaudeCliResult = {
8
+ ok: true;
9
+ text: string;
10
+ costUsd?: number;
11
+ durationMs?: number;
12
+ } | {
13
+ ok: false;
14
+ error: string;
15
+ code?: string;
16
+ };
17
+ /**
18
+ * Run the `claude` CLI in non-interactive print mode (`-p`).
19
+ *
20
+ * Expects `claude` to be on PATH. Uses `--output-format json` to get a
21
+ * structured envelope, then extracts the `.result` text.
22
+ */
23
+ export declare function runClaudeCli(prompt: string, opts?: ClaudeCliOptions): Promise<ClaudeCliResult>;
24
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai/claude/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,eAAe,CAAC,CAsE1B"}
@@ -0,0 +1,71 @@
1
+ import { spawn } from "node:child_process";
2
+ /**
3
+ * Run the `claude` CLI in non-interactive print mode (`-p`).
4
+ *
5
+ * Expects `claude` to be on PATH. Uses `--output-format json` to get a
6
+ * structured envelope, then extracts the `.result` text.
7
+ */
8
+ export async function runClaudeCli(prompt, opts) {
9
+ const model = opts?.model ?? "sonnet";
10
+ const timeout = opts?.timeout ?? 300_000;
11
+ const args = [
12
+ "-p", prompt,
13
+ "--output-format", "json",
14
+ "--model", model,
15
+ "--max-turns", String(opts?.maxTurns ?? 1),
16
+ ];
17
+ return new Promise((resolve) => {
18
+ let stdout = "";
19
+ let stderr = "";
20
+ const child = spawn("claude", args, {
21
+ stdio: ["ignore", "pipe", "pipe"],
22
+ });
23
+ const timer = setTimeout(() => {
24
+ child.kill("SIGTERM");
25
+ resolve({ ok: false, error: "Claude CLI timed out", code: "timeout" });
26
+ }, timeout);
27
+ child.stdout.on("data", (d) => { stdout += d.toString(); });
28
+ child.stderr.on("data", (d) => { stderr += d.toString(); });
29
+ child.on("error", (err) => {
30
+ clearTimeout(timer);
31
+ resolve({
32
+ ok: false,
33
+ error: `Failed to spawn claude CLI: ${err.message}`,
34
+ code: "spawn_error",
35
+ });
36
+ });
37
+ child.on("close", (code) => {
38
+ clearTimeout(timer);
39
+ if (!stdout.trim()) {
40
+ resolve({
41
+ ok: false,
42
+ error: stderr || `claude exited with code ${code}`,
43
+ code: "empty_output",
44
+ });
45
+ return;
46
+ }
47
+ try {
48
+ const envelope = JSON.parse(stdout);
49
+ if (envelope.is_error || envelope.subtype === "error") {
50
+ resolve({
51
+ ok: false,
52
+ error: envelope.result || "Claude returned an error",
53
+ code: "claude_error",
54
+ });
55
+ return;
56
+ }
57
+ resolve({
58
+ ok: true,
59
+ text: envelope.result ?? "",
60
+ costUsd: envelope.cost_usd,
61
+ durationMs: envelope.duration_ms,
62
+ });
63
+ }
64
+ catch {
65
+ // Fallback: treat raw stdout as the response text
66
+ resolve({ ok: true, text: stdout.trim() });
67
+ }
68
+ });
69
+ });
70
+ }
71
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/ai/claude/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { type ChatMessage, type LLMCallOptions, type LLMResult, type RetryOptions } from "./types";
2
+ import { type ChatMessage, type LLMCallOptions, type LLMResult, type RetryOptions } from "../types";
3
3
  export interface GenerateWithSchemaArgs<T> {
4
4
  messages: ChatMessage[];
5
5
  schema: z.ZodType<T>;
@@ -7,8 +7,11 @@ export interface GenerateWithSchemaArgs<T> {
7
7
  retry?: RetryOptions;
8
8
  }
9
9
  /**
10
- * Calls the OpenAI chat completions API, enforces JSON-only output, validates
11
- * it against a provided zod schema, and retries with targeted feedback when validation fails.
10
+ * Generate a validated JSON response from the Claude CLI.
11
+ *
12
+ * Mirrors the Google `generateWithSchema` contract: sends the prompt
13
+ * to Claude via `claude -p`, extracts JSON from the response, validates it
14
+ * against the Zod schema, and retries with targeted correction feedback.
12
15
  */
13
16
  export declare function generateWithSchema<T>(args: GenerateWithSchemaArgs<T>): Promise<LLMResult<T>>;
14
17
  //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/ai/claude/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EAGlB,MAAM,UAAU,CAAC;AAyClB,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA+BD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CA+HlG"}
@@ -0,0 +1,188 @@
1
+ import { z } from "zod";
2
+ import { runClaudeCli } from "./client";
3
+ import { ChatMessagesSchema, describeZodObjectSchema, } from "../types";
4
+ const JSON_INSTRUCTIONS = [
5
+ "You are a precise JSON generator.",
6
+ "Respond with strictly valid JSON only.",
7
+ "No markdown, no code fences, no comments, no extra text.",
8
+ "If a field is optional, omit it entirely rather than using null.",
9
+ "Do not include trailing commas.",
10
+ ].join(" ");
11
+ function extractFirstJson(text) {
12
+ const trimmed = text.trim();
13
+ try {
14
+ JSON.parse(trimmed);
15
+ return { ok: true, jsonText: trimmed };
16
+ }
17
+ catch { }
18
+ const unfenced = trimmed.replace(/^```(json)?/i, "").replace(/```$/i, "").trim();
19
+ try {
20
+ JSON.parse(unfenced);
21
+ return { ok: true, jsonText: unfenced };
22
+ }
23
+ catch { }
24
+ const objStart = unfenced.indexOf("{");
25
+ const arrStart = unfenced.indexOf("[");
26
+ const start = objStart === -1 ? arrStart : arrStart === -1 ? objStart : Math.min(objStart, arrStart);
27
+ if (start === -1)
28
+ return { ok: false };
29
+ for (let end = unfenced.length; end > start; end--) {
30
+ const candidate = unfenced.slice(start, end).trim();
31
+ try {
32
+ JSON.parse(candidate);
33
+ return { ok: true, jsonText: candidate };
34
+ }
35
+ catch { }
36
+ }
37
+ return { ok: false };
38
+ }
39
+ function sleep(ms) {
40
+ return new Promise((res) => setTimeout(res, ms));
41
+ }
42
+ /**
43
+ * Flatten chat messages into a single prompt string for the Claude CLI.
44
+ *
45
+ * Since `-p` takes a single prompt, we combine the JSON preamble,
46
+ * system instructions, and user content into one string.
47
+ */
48
+ function messagesToPrompt(messages, schemaDescription) {
49
+ const parts = [];
50
+ parts.push(JSON_INSTRUCTIONS);
51
+ if (schemaDescription) {
52
+ parts.push(`Output shape: { ${schemaDescription} }`);
53
+ }
54
+ parts.push("");
55
+ for (const msg of messages) {
56
+ if (msg.role === "system") {
57
+ parts.push("## Instructions\n");
58
+ parts.push(msg.content);
59
+ }
60
+ else if (msg.role === "user") {
61
+ parts.push("\n## Input\n");
62
+ parts.push(msg.content);
63
+ }
64
+ parts.push("");
65
+ }
66
+ return parts.join("\n");
67
+ }
68
+ /**
69
+ * Generate a validated JSON response from the Claude CLI.
70
+ *
71
+ * Mirrors the Google `generateWithSchema` contract: sends the prompt
72
+ * to Claude via `claude -p`, extracts JSON from the response, validates it
73
+ * against the Zod schema, and retries with targeted correction feedback.
74
+ */
75
+ export async function generateWithSchema(args) {
76
+ const parsed = ChatMessagesSchema.safeParse(args.messages);
77
+ if (!parsed.success) {
78
+ return {
79
+ ok: false,
80
+ error: { code: "invalid_output", message: "Invalid messages", details: parsed.error.flatten() },
81
+ attempts: 0,
82
+ };
83
+ }
84
+ const { schema } = args;
85
+ const opts = args.options ?? {};
86
+ const retry = args.retry ?? {};
87
+ const maxAttempts = Math.max(1, retry.maxAttempts ?? 2);
88
+ const delayMs = Math.max(0, retry.delayMs ?? 250);
89
+ const schemaDescription = describeZodObjectSchema(schema);
90
+ let attempts = 0;
91
+ let correctionContext = "";
92
+ while (attempts < maxAttempts) {
93
+ attempts++;
94
+ const prompt = messagesToPrompt(parsed.data, schemaDescription) + correctionContext;
95
+ const cliResult = await runClaudeCli(prompt, {
96
+ model: opts.model ?? "sonnet",
97
+ });
98
+ if (!cliResult.ok) {
99
+ if (attempts >= maxAttempts) {
100
+ return {
101
+ ok: false,
102
+ error: { code: "api_error", message: cliResult.error },
103
+ attempts,
104
+ };
105
+ }
106
+ await sleep(delayMs);
107
+ continue;
108
+ }
109
+ const rawText = cliResult.text.trim();
110
+ if (!rawText) {
111
+ if (attempts >= maxAttempts) {
112
+ return {
113
+ ok: false,
114
+ error: { code: "empty_content", message: "Empty response from Claude CLI" },
115
+ attempts,
116
+ };
117
+ }
118
+ await sleep(delayMs);
119
+ continue;
120
+ }
121
+ const extracted = extractFirstJson(rawText);
122
+ if (!extracted.ok) {
123
+ correctionContext = [
124
+ "\n\n---\n[CORRECTION NEEDED]",
125
+ "Your previous response did not contain valid JSON.",
126
+ "Return strictly valid JSON only, matching the required shape. No prose.",
127
+ ].join("\n");
128
+ if (attempts >= maxAttempts) {
129
+ return {
130
+ ok: false,
131
+ error: { code: "parse_error", message: "Could not extract JSON from response" },
132
+ attempts,
133
+ rawText,
134
+ };
135
+ }
136
+ await sleep(delayMs);
137
+ continue;
138
+ }
139
+ let parsedJson;
140
+ try {
141
+ parsedJson = JSON.parse(extracted.jsonText);
142
+ }
143
+ catch (err) {
144
+ correctionContext = [
145
+ "\n\n---\n[CORRECTION NEEDED]",
146
+ `JSON parsing error: ${err?.message || String(err)}`,
147
+ "Return corrected JSON only.",
148
+ ].join("\n");
149
+ if (attempts >= maxAttempts) {
150
+ return {
151
+ ok: false,
152
+ error: { code: "parse_error", message: err?.message || String(err) },
153
+ attempts,
154
+ rawText,
155
+ };
156
+ }
157
+ await sleep(delayMs);
158
+ continue;
159
+ }
160
+ const safe = schema.safeParse(parsedJson);
161
+ if (safe.success) {
162
+ return { ok: true, value: safe.data, rawText, attempts };
163
+ }
164
+ const flattened = safe.error.flatten();
165
+ const errorSummary = JSON.stringify(flattened, null, 2);
166
+ correctionContext = [
167
+ "\n\n---\n[CORRECTION NEEDED]",
168
+ "The JSON does not match the required schema.",
169
+ schemaDescription ? `Schema shape: { ${schemaDescription} }` : "",
170
+ `Validation errors: ${errorSummary}`,
171
+ "Return corrected JSON only. Do not include markdown or explanations.",
172
+ `Previous JSON to correct: ${extracted.jsonText}`,
173
+ ]
174
+ .filter(Boolean)
175
+ .join("\n");
176
+ if (attempts >= maxAttempts) {
177
+ return {
178
+ ok: false,
179
+ error: { code: "invalid_output", message: "Output did not satisfy schema", details: flattened },
180
+ attempts,
181
+ rawText,
182
+ };
183
+ }
184
+ await sleep(delayMs);
185
+ }
186
+ return { ok: false, error: { code: "api_error", message: "Unexpected end of control flow" }, attempts };
187
+ }
188
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/ai/claude/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./client";
2
+ export * from "./generate";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/claude/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./client";
2
+ export * from "./generate";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/claude/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -9,7 +9,7 @@ export const ChatMessageSchema = z.object({
9
9
  export const ChatMessagesSchema = z.array(ChatMessageSchema).min(1);
10
10
  // Simple reusable example schema
11
11
  export const SimpleSummarySchema = z.object({ summary: z.string().min(1) });
12
- // Mirrors the helper in OpenAI impl; kept local to avoid coupling
12
+ // Local copy of schema description helper to avoid coupling
13
13
  export function describeZodObjectSchema(schema) {
14
14
  const parts = [];
15
15
  const root = schema._def;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/google/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/google/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC3E,CAAC;AA6DD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpE,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAG5E,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAI,MAAc,CAAC,IAAI,CAAC;IAClC,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAI,KAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;YACpC,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;YACpC,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU;YACrC,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,CAAC,qBAAqB,CAAC,QAAQ;YACnC,OAAO,SAAS,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QACtD,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU;YACrC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,CAAC,qBAAqB,CAAC,OAAO;YAClC,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnD,KAAK,CAAC,CAAC,qBAAqB,CAAC,QAAQ;YACnC,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,KAAK,CAAC,CAAC,qBAAqB,CAAC,WAAW;YACtC,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC;QACrD,KAAK,CAAC,CAAC,qBAAqB,CAAC,WAAW;YACtC,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3D;YACE,OAAO,CAAC,IAAI,SAAS,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
- export * as OpenAI from "./openai";
2
1
  export * as Google from "./google";
2
+ export * as Claude from "./claude";
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/ai/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * as OpenAI from "./openai";
2
1
  export * as Google from "./google";
2
+ export * as Claude from "./claude";
3
3
  //# sourceMappingURL=index.js.map
@@ -4,27 +4,6 @@ export interface ChatMessage {
4
4
  role: ChatRole;
5
5
  content: string;
6
6
  }
7
- export interface OpenAIChatChoice {
8
- index: number;
9
- message: {
10
- role: ChatRole;
11
- content?: string | null;
12
- };
13
- finish_reason?: string | null;
14
- }
15
- export interface OpenAIChatUsage {
16
- prompt_tokens?: number;
17
- completion_tokens?: number;
18
- total_tokens?: number;
19
- }
20
- export interface OpenAIChatResponse {
21
- id?: string;
22
- object?: string;
23
- created?: number;
24
- model?: string;
25
- choices: OpenAIChatChoice[];
26
- usage?: OpenAIChatUsage;
27
- }
28
7
  export interface LLMCallOptions {
29
8
  model?: string;
30
9
  temperature?: number;
@@ -41,18 +20,18 @@ export type LLMResult<T> = {
41
20
  value: T;
42
21
  rawText: string;
43
22
  attempts: number;
44
- usage?: OpenAIChatUsage;
23
+ usage?: Record<string, number>;
45
24
  } | {
46
25
  ok: false;
47
26
  error: {
48
- code: "missing_api_key" | "http_error" | "api_error" | "no_choices" | "empty_content" | "parse_error" | "invalid_output";
27
+ code: "missing_api_key" | "http_error" | "api_error" | "no_choices" | "no_text" | "empty_content" | "parse_error" | "invalid_output";
49
28
  message: string;
50
29
  details?: unknown;
51
30
  status?: number;
52
31
  };
53
32
  rawText?: string;
54
33
  attempts: number;
55
- usage?: OpenAIChatUsage;
34
+ usage?: Record<string, number>;
56
35
  };
57
36
  export declare const ChatMessageSchema: z.ZodObject<{
58
37
  role: z.ZodUnion<[z.ZodLiteral<"system">, z.ZodLiteral<"user">, z.ZodLiteral<"assistant">]>;
@@ -82,5 +61,6 @@ export declare const SimpleSummarySchema: z.ZodObject<{
82
61
  summary: string;
83
62
  }>;
84
63
  export type SimpleSummary = z.infer<typeof SimpleSummarySchema>;
64
+ /** Describe a zod object schema in plain English for LLM prompts. */
85
65
  export declare function describeZodObjectSchema(schema: z.ZodTypeAny): string;
86
66
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EACA,iBAAiB,GACjB,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,SAAS,GACT,eAAe,GACf,aAAa,GACb,gBAAgB,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEN,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;WAAoC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAUpE"}
@@ -1,16 +1,14 @@
1
1
  import { z } from "zod";
2
- // Common zod schemas to validate inputs and allow reuse elsewhere
3
2
  export const ChatMessageSchema = z.object({
4
3
  role: z.union([z.literal("system"), z.literal("user"), z.literal("assistant")]),
5
4
  content: z.string().min(1),
6
5
  });
7
6
  export const ChatMessagesSchema = z.array(ChatMessageSchema).min(1);
8
- // A small, generic example schema people can reuse for quick tasks
9
7
  export const SimpleSummarySchema = z.object({
10
8
  summary: z.string().min(1),
11
9
  });
12
- // Helper to describe a zod object schema in plain English for the model
13
- // Focused on common primitives for clarity; not a full serializer.
10
+ // ── Schema description helpers ───────────────────────────────────────
11
+ /** Describe a zod object schema in plain English for LLM prompts. */
14
12
  export function describeZodObjectSchema(schema) {
15
13
  const parts = [];
16
14
  const root = schema._def;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsDxB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAIH,wEAAwE;AAExE,qEAAqE;AACrE,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAI,MAAc,CAAC,IAAI,CAAC;IAClC,IAAI,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAI,KAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;YACpC,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS;YACpC,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU;YACrC,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,CAAC,qBAAqB,CAAC,QAAQ;YACnC,OAAO,SAAS,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QACtD,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,CAAC,qBAAqB,CAAC,UAAU;YACrC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,CAAC,qBAAqB,CAAC,OAAO;YAClC,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnD,KAAK,CAAC,CAAC,qBAAqB,CAAC,QAAQ;YACnC,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,KAAK,CAAC,CAAC,qBAAqB,CAAC,WAAW;YACtC,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC;QACrD,KAAK,CAAC,CAAC,qBAAqB,CAAC,WAAW;YACtC,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3D;YACE,OAAO,CAAC,IAAI,SAAS,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { NormalizedDoc } from "../normalization/normalized-doc-schema";
2
- import type { LLMResult } from "../ai/openai/types";
2
+ import type { LLMResult } from "../ai/types";
3
3
  import { type PaperDigest } from "./schemas";
4
4
  export interface ExtractFindingsOptions {
5
5
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"extract-findings.d.ts","sourceRoot":"","sources":["../../src/analysis/extract-findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AA+BhE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAgDjC"}
1
+ {"version":3,"file":"extract-findings.d.ts","sourceRoot":"","sources":["../../src/analysis/extract-findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AA+BhE,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAgDjC"}
@@ -1,4 +1,4 @@
1
- import { generateWithSchema } from "../ai/openai/generate";
1
+ import { generateWithSchema } from "../ai/claude/generate";
2
2
  import { getBlocksByCategory } from "./block-filter";
3
3
  import { PaperDigestSchema } from "./schemas";
4
4
  import { buildExtractionPrompt } from "./prompts";
@@ -68,7 +68,7 @@ export async function extractFindings(doc, opts) {
68
68
  messages,
69
69
  schema: PaperDigestSchema,
70
70
  options: {
71
- model: opts?.model ?? "gpt-4o",
71
+ model: opts?.model ?? "sonnet",
72
72
  temperature: opts?.temperature ?? 0.1,
73
73
  maxOutputTokens: opts?.maxOutputTokens ?? 4096,
74
74
  },
@@ -1,4 +1,4 @@
1
- import type { LLMResult } from "../ai/openai/types";
1
+ import type { LLMResult } from "../ai/types";
2
2
  import { type HypothesisSet, type PaperDigest } from "./schemas";
3
3
  export interface GenerateHypothesesOptions {
4
4
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-hypotheses.d.ts","sourceRoot":"","sources":["../../src/analysis/generate-hypotheses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGtF,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAgBnC"}
1
+ {"version":3,"file":"generate-hypotheses.d.ts","sourceRoot":"","sources":["../../src/analysis/generate-hypotheses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGtF,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAgBnC"}
@@ -1,4 +1,4 @@
1
- import { generateWithSchema } from "../ai/openai/generate";
1
+ import { generateWithSchema } from "../ai/claude/generate";
2
2
  import { HypothesisSetSchema } from "./schemas";
3
3
  import { buildHypothesisPrompt } from "./prompts";
4
4
  /**
@@ -13,7 +13,7 @@ export async function generateHypotheses(digests, opts) {
13
13
  messages,
14
14
  schema: HypothesisSetSchema,
15
15
  options: {
16
- model: opts?.model ?? "gpt-4o",
16
+ model: opts?.model ?? "sonnet",
17
17
  temperature: opts?.temperature ?? 0.4,
18
18
  maxOutputTokens: opts?.maxOutputTokens ?? 8192,
19
19
  },
@@ -1,4 +1,4 @@
1
- import type { ChatMessage } from "../ai/openai/types";
1
+ import type { ChatMessage } from "../ai/types";
2
2
  import type { FilteredBlock } from "./block-filter";
3
3
  import type { PaperDigest } from "./schemas";
4
4
  interface PaperMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/analysis/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EAAE,GACtB,WAAW,EAAE,CAsEf;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,SAAI,GACb,WAAW,EAAE,CAwEf"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/analysis/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,EAAE,GACtB,WAAW,EAAE,CAsEf;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,SAAI,GACb,WAAW,EAAE,CAwEf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantra-ai/core",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,8 +13,8 @@
13
13
  "./ai/*": "./src/ai/*.ts",
14
14
  "./ai/google": "./src/ai/google/index.ts",
15
15
  "./ai/google/*": "./src/ai/google/*.ts",
16
- "./ai/openai": "./src/ai/openai/index.ts",
17
- "./ai/openai/*": "./src/ai/openai/*.ts",
16
+ "./ai/claude": "./src/ai/claude/index.ts",
17
+ "./ai/claude/*": "./src/ai/claude/*.ts",
18
18
  "./ai/prompts": "./src/ai/prompts/index.ts",
19
19
  "./normalization/jats": "./src/normalization/jats/index.ts",
20
20
  "./normalization/jats/*": "./src/normalization/jats/*.ts",
@@ -76,13 +76,13 @@
76
76
  "types": "./dist/ai/google/*.d.ts",
77
77
  "import": "./dist/ai/google/*.js"
78
78
  },
79
- "./ai/openai": {
80
- "types": "./dist/ai/openai/index.d.ts",
81
- "import": "./dist/ai/openai/index.js"
79
+ "./ai/claude": {
80
+ "types": "./dist/ai/claude/index.d.ts",
81
+ "import": "./dist/ai/claude/index.js"
82
82
  },
83
- "./ai/openai/*": {
84
- "types": "./dist/ai/openai/*.d.ts",
85
- "import": "./dist/ai/openai/*.js"
83
+ "./ai/claude/*": {
84
+ "types": "./dist/ai/claude/*.d.ts",
85
+ "import": "./dist/ai/claude/*.js"
86
86
  },
87
87
  "./ai/prompts": {
88
88
  "types": "./dist/ai/prompts/index.d.ts",
@@ -1,22 +0,0 @@
1
- import { type ChatMessage, type LLMCallOptions, type OpenAIChatResponse } from "./types";
2
- export interface ChatCompletionParams {
3
- model: string;
4
- messages: ChatMessage[];
5
- temperature?: number;
6
- max_tokens?: number;
7
- response_format?: {
8
- type: "json_object" | "text";
9
- } | undefined;
10
- signal?: AbortSignal;
11
- }
12
- export declare function chatCompletionRaw(params: ChatCompletionParams): Promise<{
13
- ok: true;
14
- data: OpenAIChatResponse;
15
- } | {
16
- ok: false;
17
- status?: number;
18
- error: string;
19
- details?: unknown;
20
- }>;
21
- export declare function toChatCompletionParams(messages: ChatMessage[], opts?: LLMCallOptions): ChatCompletionParams;
22
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai/openai/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AASzF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAgCpH;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,oBAAoB,CAMtB"}
@@ -1,49 +0,0 @@
1
- import {} from "./types";
2
- const OPENAI_API_URL = "https://api.openai.com/v1/chat/completions";
3
- function getApiKey() {
4
- // Prefer local env; don't import global config to avoid coupling.
5
- return process.env.OPENAI_API_KEY || undefined;
6
- }
7
- export async function chatCompletionRaw(params) {
8
- const apiKey = getApiKey();
9
- if (!apiKey)
10
- return { ok: false, error: "Missing OPENAI_API_KEY", details: { env: "OPENAI_API_KEY" } };
11
- try {
12
- const res = await fetch(OPENAI_API_URL, {
13
- method: "POST",
14
- headers: {
15
- "Authorization": `Bearer ${apiKey}`,
16
- "Content-Type": "application/json",
17
- },
18
- body: JSON.stringify({
19
- model: params.model,
20
- messages: params.messages,
21
- temperature: params.temperature,
22
- max_tokens: params.max_tokens,
23
- response_format: params.response_format,
24
- }),
25
- signal: params.signal,
26
- });
27
- if (!res.ok) {
28
- let details = undefined;
29
- try {
30
- details = await res.json();
31
- }
32
- catch { /* noop */ }
33
- return { ok: false, status: res.status, error: `HTTP ${res.status}`, details };
34
- }
35
- const data = (await res.json());
36
- return { ok: true, data };
37
- }
38
- catch (err) {
39
- return { ok: false, error: err?.message || String(err) };
40
- }
41
- }
42
- export function toChatCompletionParams(messages, opts) {
43
- const model = opts?.model ?? "gpt-4o-mini";
44
- const temperature = opts?.temperature ?? 0.2;
45
- const max_tokens = opts?.maxOutputTokens ?? 1024;
46
- const response_format = (opts?.responseFormat ?? "json") === "json" ? { type: "json_object" } : { type: "text" };
47
- return { model, messages, temperature, max_tokens, response_format, signal: opts?.signal };
48
- }
49
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/ai/openai/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,MAAM,SAAS,CAAC;AAEzF,MAAM,cAAc,GAAG,4CAA4C,CAAC;AAEpE,SAAS,SAAS;IAChB,kEAAkE;IAClE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC;AACjD,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAA4B;IAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,CAAC;IAEvG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;YACF,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,OAAO,GAAQ,SAAS,CAAC;YAC7B,IAAI,CAAC;gBAAC,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YACxD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAuB,EACvB,IAAqB;IAErB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC;IACjD,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,cAAc,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;IACnI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/ai/openai/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EAGlB,MAAM,SAAS,CAAC;AA4CjB,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CA+IlG"}
@@ -1,178 +0,0 @@
1
- import { z } from "zod";
2
- import { chatCompletionRaw, toChatCompletionParams } from "./client";
3
- import { ChatMessagesSchema, describeZodObjectSchema, } from "./types";
4
- const DEFAULT_SYSTEM_JSON_INSTRUCTIONS = [
5
- "You are a precise JSON generator.",
6
- "Respond with strictly valid JSON only.",
7
- "No markdown, no code fences, no comments, no extra text.",
8
- "If a field is optional, omit it entirely rather than using null.",
9
- "Do not include trailing commas.",
10
- ].join(" ");
11
- function extractFirstJson(text) {
12
- // Try to find the first {...} or [ ... ] block. Fall back to raw text if simple parse succeeds.
13
- const trimmed = text.trim();
14
- try {
15
- JSON.parse(trimmed);
16
- return { ok: true, jsonText: trimmed };
17
- }
18
- catch { }
19
- // Remove code fences if present
20
- const unfenced = trimmed.replace(/^```(json)?/i, "").replace(/```$/i, "").trim();
21
- try {
22
- JSON.parse(unfenced);
23
- return { ok: true, jsonText: unfenced };
24
- }
25
- catch { }
26
- // Greedy brace/bracket matching (simple heuristic)
27
- const objStart = unfenced.indexOf("{");
28
- const arrStart = unfenced.indexOf("[");
29
- const start = (objStart === -1) ? arrStart : (arrStart === -1 ? objStart : Math.min(objStart, arrStart));
30
- if (start === -1)
31
- return { ok: false };
32
- for (let end = unfenced.length; end > start; end--) {
33
- const candidate = unfenced.slice(start, end).trim();
34
- try {
35
- JSON.parse(candidate);
36
- return { ok: true, jsonText: candidate };
37
- }
38
- catch { /* keep searching */ }
39
- }
40
- return { ok: false };
41
- }
42
- function sleep(ms) {
43
- return new Promise((res) => setTimeout(res, ms));
44
- }
45
- /**
46
- * Calls the OpenAI chat completions API, enforces JSON-only output, validates
47
- * it against a provided zod schema, and retries with targeted feedback when validation fails.
48
- */
49
- export async function generateWithSchema(args) {
50
- // Validate the messages input shape early to provide actionable errors.
51
- const parsed = ChatMessagesSchema.safeParse(args.messages);
52
- if (!parsed.success) {
53
- return {
54
- ok: false,
55
- error: { code: "invalid_output", message: "Invalid messages", details: parsed.error.flatten() },
56
- attempts: 0,
57
- };
58
- }
59
- const { schema } = args;
60
- const opts = args.options ?? {};
61
- const retry = args.retry ?? {};
62
- const maxAttempts = Math.max(1, retry.maxAttempts ?? 2);
63
- const delayMs = Math.max(0, retry.delayMs ?? 250);
64
- let attempts = 0;
65
- let usage = undefined;
66
- // Prepend our system JSON instruction once, without altering user-provided context ordering otherwise
67
- const schemaDescription = describeZodObjectSchema(schema);
68
- const baseMessages = [
69
- { role: "system", content: DEFAULT_SYSTEM_JSON_INSTRUCTIONS + (schemaDescription ? ` Output shape: { ${schemaDescription} }` : "") },
70
- ...parsed.data,
71
- ];
72
- // Keep the conversation growing across retries by appending validation feedback
73
- const convo = baseMessages.slice();
74
- while (attempts < maxAttempts) {
75
- attempts++;
76
- const params = toChatCompletionParams(convo, opts);
77
- const res = await chatCompletionRaw(params);
78
- if (!res.ok) {
79
- if (attempts < maxAttempts)
80
- await sleep(delayMs);
81
- // For HTTP/API errors we do not add model feedback; simply retry.
82
- if (attempts >= maxAttempts) {
83
- return {
84
- ok: false,
85
- error: { code: res.status ? "http_error" : "api_error", message: res.error, details: res.details, status: res.status },
86
- attempts,
87
- };
88
- }
89
- continue;
90
- }
91
- usage = res.data.usage;
92
- const first = res.data.choices?.[0];
93
- if (!first) {
94
- if (attempts >= maxAttempts) {
95
- return { ok: false, error: { code: "no_choices", message: "No choices returned by API" }, attempts, usage };
96
- }
97
- await sleep(delayMs);
98
- continue;
99
- }
100
- const rawText = (first.message?.content ?? "").trim();
101
- if (!rawText) {
102
- if (attempts >= maxAttempts) {
103
- return { ok: false, error: { code: "empty_content", message: "Empty assistant content" }, attempts, usage };
104
- }
105
- await sleep(delayMs);
106
- continue;
107
- }
108
- const extracted = extractFirstJson(rawText);
109
- if (!extracted.ok) {
110
- // Provide corrective instruction and try again
111
- convo.push({ role: "assistant", content: rawText });
112
- convo.push({
113
- role: "user",
114
- content: "Your previous response did not contain valid JSON. Return strictly valid JSON only, matching the required shape. No prose.",
115
- });
116
- if (attempts >= maxAttempts) {
117
- return { ok: false, error: { code: "parse_error", message: "Could not extract JSON from response" }, attempts, usage, rawText };
118
- }
119
- await sleep(delayMs);
120
- continue;
121
- }
122
- let parsedJson;
123
- try {
124
- parsedJson = JSON.parse(extracted.jsonText);
125
- }
126
- catch (err) {
127
- convo.push({ role: "assistant", content: rawText });
128
- convo.push({ role: "user", content: `Parsing error: ${err?.message || String(err)}. Reply with corrected JSON only.` });
129
- if (attempts >= maxAttempts) {
130
- return {
131
- ok: false,
132
- error: { code: "parse_error", message: err?.message || String(err) },
133
- attempts,
134
- usage,
135
- rawText,
136
- };
137
- }
138
- await sleep(delayMs);
139
- continue;
140
- }
141
- const safe = schema.safeParse(parsedJson);
142
- if (safe.success) {
143
- return { ok: true, value: safe.data, rawText, attempts, usage };
144
- }
145
- // Append targeted feedback with zod errors and the JSON to correct.
146
- const flattened = safe.error.flatten();
147
- const errorSummary = JSON.stringify(flattened, null, 2);
148
- const previousJson = extracted.jsonText;
149
- convo.push({ role: "assistant", content: rawText });
150
- convo.push({
151
- role: "user",
152
- content: [
153
- "The JSON does not match the required schema.",
154
- schemaDescription ? `Schema shape: { ${schemaDescription} }` : "",
155
- `Validation errors: ${errorSummary}`,
156
- "Return corrected JSON only. Do not include markdown or explanations.",
157
- `Previous JSON to correct: ${previousJson}`,
158
- ]
159
- .filter(Boolean)
160
- .join("\n"),
161
- });
162
- if (attempts < maxAttempts) {
163
- await sleep(delayMs);
164
- continue;
165
- }
166
- // Out of attempts
167
- return {
168
- ok: false,
169
- error: { code: "invalid_output", message: "Output did not satisfy schema", details: flattened },
170
- attempts,
171
- usage,
172
- rawText,
173
- };
174
- }
175
- // Should be unreachable
176
- return { ok: false, error: { code: "api_error", message: "Unexpected end of control flow" }, attempts };
177
- }
178
- //# sourceMappingURL=generate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/ai/openai/generate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from "./types";
2
- export * from "./client";
3
- export * from "./generate";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/openai/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from "./types";
2
- export * from "./client";
3
- export * from "./generate";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/openai/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai/openai/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACrD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAGD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAGD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,MAAM,SAAS,CAAC,CAAC,IACnB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EACA,iBAAiB,GACjB,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,eAAe,GACf,aAAa,GACb,gBAAgB,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAGN,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;WAAoC,CAAC;AAGpE,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAUpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/openai/types.ts"],"names":[],"mappings":"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"}