@mantra-ai/core 0.5.0 → 0.6.0
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.
- package/dist/ai/claude/client.d.ts +24 -0
- package/dist/ai/claude/client.d.ts.map +1 -0
- package/dist/ai/claude/client.js +71 -0
- package/dist/ai/claude/client.js.map +1 -0
- package/dist/ai/{openai → claude}/generate.d.ts +6 -3
- package/dist/ai/claude/generate.d.ts.map +1 -0
- package/dist/ai/claude/generate.js +188 -0
- package/dist/ai/claude/generate.js.map +1 -0
- package/dist/ai/claude/index.d.ts +3 -0
- package/dist/ai/claude/index.d.ts.map +1 -0
- package/dist/ai/claude/index.js +3 -0
- package/dist/ai/claude/index.js.map +1 -0
- package/dist/ai/google/types.js +1 -1
- package/dist/ai/google/types.js.map +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/{openai/types.d.ts → types.d.ts} +4 -24
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/{openai/types.js → types.js} +2 -4
- package/dist/ai/types.js.map +1 -0
- package/dist/analysis/extract-findings.d.ts +1 -1
- package/dist/analysis/extract-findings.d.ts.map +1 -1
- package/dist/analysis/extract-findings.js +2 -2
- package/dist/analysis/generate-hypotheses.d.ts +1 -1
- package/dist/analysis/generate-hypotheses.d.ts.map +1 -1
- package/dist/analysis/generate-hypotheses.js +2 -2
- package/dist/analysis/prompts.d.ts +1 -1
- package/dist/analysis/prompts.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/ai/openai/client.d.ts +0 -22
- package/dist/ai/openai/client.d.ts.map +0 -1
- package/dist/ai/openai/client.js +0 -49
- package/dist/ai/openai/client.js.map +0 -1
- package/dist/ai/openai/generate.d.ts.map +0 -1
- package/dist/ai/openai/generate.js +0 -178
- package/dist/ai/openai/generate.js.map +0 -1
- package/dist/ai/openai/index.d.ts +0 -4
- package/dist/ai/openai/index.d.ts.map +0 -1
- package/dist/ai/openai/index.js +0 -4
- package/dist/ai/openai/index.js.map +0 -1
- package/dist/ai/openai/types.d.ts.map +0 -1
- 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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAyB3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,IAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC;IAEzC,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,MAAM;QACZ,iBAAiB,EAAE,MAAM;QACzB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC;KAC3C,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC;gBACN,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,+BAA+B,GAAG,CAAC,OAAO,EAAE;gBACnD,IAAI,EAAE,aAAa;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,OAAO,CAAC;oBACN,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,MAAM,IAAI,2BAA2B,IAAI,EAAE;oBAClD,IAAI,EAAE,cAAc;iBACrB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAuB,CAAC;gBAC1D,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;oBACtD,OAAO,CAAC;wBACN,EAAE,EAAE,KAAK;wBACT,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,0BAA0B;wBACpD,IAAI,EAAE,cAAc;qBACrB,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC;oBACN,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;oBAC3B,OAAO,EAAE,QAAQ,CAAC,QAAQ;oBAC1B,UAAU,EAAE,QAAQ,CAAC,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;gBAClD,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { type ChatMessage, type LLMCallOptions, type LLMResult, type RetryOptions } from "
|
|
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
|
-
*
|
|
11
|
-
*
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/claude/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
package/dist/ai/google/types.js
CHANGED
|
@@ -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
|
-
//
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/google/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/index.d.ts
CHANGED
package/dist/ai/index.js
CHANGED
|
@@ -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?:
|
|
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?:
|
|
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
|
-
//
|
|
13
|
-
|
|
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":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NormalizedDoc } from "../normalization/normalized-doc-schema";
|
|
2
|
-
import type { LLMResult } from "../ai/
|
|
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,
|
|
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/
|
|
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 ?? "
|
|
71
|
+
model: opts?.model ?? "sonnet",
|
|
72
72
|
temperature: opts?.temperature ?? 0.1,
|
|
73
73
|
maxOutputTokens: opts?.maxOutputTokens ?? 4096,
|
|
74
74
|
},
|
|
@@ -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,
|
|
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/
|
|
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 ?? "
|
|
16
|
+
model: opts?.model ?? "sonnet",
|
|
17
17
|
temperature: opts?.temperature ?? 0.4,
|
|
18
18
|
maxOutputTokens: opts?.maxOutputTokens ?? 8192,
|
|
19
19
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/analysis/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
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.
|
|
3
|
+
"version": "0.6.0",
|
|
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/
|
|
17
|
-
"./ai/
|
|
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/
|
|
80
|
-
"types": "./dist/ai/
|
|
81
|
-
"import": "./dist/ai/
|
|
79
|
+
"./ai/claude": {
|
|
80
|
+
"types": "./dist/ai/claude/index.d.ts",
|
|
81
|
+
"import": "./dist/ai/claude/index.js"
|
|
82
82
|
},
|
|
83
|
-
"./ai/
|
|
84
|
-
"types": "./dist/ai/
|
|
85
|
-
"import": "./dist/ai/
|
|
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"}
|
package/dist/ai/openai/client.js
DELETED
|
@@ -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 +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"}
|
package/dist/ai/openai/index.js
DELETED
|
@@ -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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"}
|