@fastpaca/cria 1.0.1 → 1.1.3
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/README.md +54 -44
- package/dist/ai-sdk/index.d.ts +29 -4
- package/dist/ai-sdk/index.d.ts.map +1 -1
- package/dist/ai-sdk/index.js +97 -25
- package/dist/ai-sdk/index.js.map +1 -1
- package/dist/anthropic/index.d.ts +31 -3
- package/dist/anthropic/index.d.ts.map +1 -1
- package/dist/anthropic/index.js +44 -1
- package/dist/anthropic/index.js.map +1 -1
- package/dist/components/index.d.ts +8 -9
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -10
- package/dist/components/index.js.map +1 -1
- package/dist/components/summary.d.ts +2 -3
- package/dist/components/summary.d.ts.map +1 -1
- package/dist/components/summary.js +2 -2
- package/dist/components/summary.js.map +1 -1
- package/dist/components/vector-search.js +2 -2
- package/dist/components/vector-search.js.map +1 -1
- package/dist/dsl.d.ts +201 -0
- package/dist/dsl.d.ts.map +1 -0
- package/dist/dsl.js +320 -0
- package/dist/dsl.js.map +1 -0
- package/dist/index.d.ts +10 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -16
- package/dist/index.js.map +1 -1
- package/dist/jsx/index.d.ts +6 -0
- package/dist/jsx/index.d.ts.map +1 -0
- package/dist/jsx/index.js +7 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx/jsx-dev-runtime.js +3 -0
- package/dist/jsx/jsx-dev-runtime.js.map +1 -0
- package/dist/{jsx-runtime.d.ts → jsx/jsx-runtime.d.ts} +1 -1
- package/dist/jsx/jsx-runtime.d.ts.map +1 -0
- package/dist/{jsx-runtime.js → jsx/jsx-runtime.js} +2 -5
- package/dist/jsx/jsx-runtime.js.map +1 -0
- package/dist/memory/postgres.d.ts.map +1 -1
- package/dist/memory/postgres.js +16 -1
- package/dist/memory/postgres.js.map +1 -1
- package/dist/memory/redis.d.ts.map +1 -1
- package/dist/memory/redis.js +30 -3
- package/dist/memory/redis.js.map +1 -1
- package/dist/openai/index.d.ts +30 -3
- package/dist/openai/index.d.ts.map +1 -1
- package/dist/openai/index.js +47 -1
- package/dist/openai/index.js.map +1 -1
- package/dist/render.js +16 -4
- package/dist/render.js.map +1 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +9 -5
- package/dist/snapshot.js.map +1 -1
- package/dist/types.d.ts +10 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -2
- package/dist/types.js.map +1 -1
- package/package.json +27 -6
- package/dist/ai-sdk/index.test.d.ts +0 -2
- package/dist/ai-sdk/index.test.d.ts.map +0 -1
- package/dist/ai-sdk/index.test.js +0 -101
- package/dist/ai-sdk/index.test.js.map +0 -1
- package/dist/anthropic/index.test.d.ts +0 -2
- package/dist/anthropic/index.test.d.ts.map +0 -1
- package/dist/anthropic/index.test.js +0 -115
- package/dist/anthropic/index.test.js.map +0 -1
- package/dist/components/additional.test.d.ts +0 -2
- package/dist/components/additional.test.d.ts.map +0 -1
- package/dist/components/additional.test.js +0 -31
- package/dist/components/additional.test.js.map +0 -1
- package/dist/components/summary.test.d.ts +0 -2
- package/dist/components/summary.test.d.ts.map +0 -1
- package/dist/components/summary.test.js +0 -101
- package/dist/components/summary.test.js.map +0 -1
- package/dist/components/vector-search.test.d.ts +0 -2
- package/dist/components/vector-search.test.d.ts.map +0 -1
- package/dist/components/vector-search.test.js +0 -113
- package/dist/components/vector-search.test.js.map +0 -1
- package/dist/instrumentation/otel.test.d.ts +0 -2
- package/dist/instrumentation/otel.test.d.ts.map +0 -1
- package/dist/instrumentation/otel.test.js +0 -116
- package/dist/instrumentation/otel.test.js.map +0 -1
- package/dist/jsx-dev-runtime.d.ts.map +0 -1
- package/dist/jsx-dev-runtime.js +0 -2
- package/dist/jsx-dev-runtime.js.map +0 -1
- package/dist/jsx-runtime.d.ts.map +0 -1
- package/dist/jsx-runtime.js.map +0 -1
- package/dist/openai/index.test.d.ts +0 -2
- package/dist/openai/index.test.d.ts.map +0 -1
- package/dist/openai/index.test.js +0 -204
- package/dist/openai/index.test.js.map +0 -1
- package/dist/providers/index.d.ts +0 -2
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -2
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/types.d.ts +0 -2
- package/dist/providers/types.d.ts.map +0 -1
- package/dist/providers/types.js +0 -2
- package/dist/providers/types.js.map +0 -1
- package/dist/render.test.d.ts +0 -2
- package/dist/render.test.d.ts.map +0 -1
- package/dist/render.test.js +0 -167
- package/dist/render.test.js.map +0 -1
- package/dist/snapshot.test.d.ts +0 -2
- package/dist/snapshot.test.d.ts.map +0 -1
- package/dist/snapshot.test.js +0 -68
- package/dist/snapshot.test.js.map +0 -1
- /package/dist/{jsx-dev-runtime.d.ts → jsx/jsx-dev-runtime.d.ts} +0 -0
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@fastpaca/cria/jsx-runtime";
|
|
2
|
-
import { expect, test } from "vitest";
|
|
3
|
-
import { Message, Reasoning, Region, ToolCall, ToolResult, } from "../components";
|
|
4
|
-
import { render } from "../render";
|
|
5
|
-
import { anthropic } from "./index";
|
|
6
|
-
const tokenizer = (text) => Math.ceil(text.length / 4);
|
|
7
|
-
test("anthropic: extracts system message separately", async () => {
|
|
8
|
-
const prompt = (_jsxs(Region, { priority: 0, children: [_jsx(Message, { messageRole: "system", children: "You are a helpful assistant." }), _jsx(Message, { messageRole: "user", children: "Hello!" })] }));
|
|
9
|
-
const result = await render(prompt, {
|
|
10
|
-
tokenizer,
|
|
11
|
-
budget: 10_000,
|
|
12
|
-
renderer: anthropic,
|
|
13
|
-
});
|
|
14
|
-
expect(result.system).toBe("You are a helpful assistant.");
|
|
15
|
-
expect(result.messages).toHaveLength(1);
|
|
16
|
-
expect(result.messages[0]).toMatchObject({
|
|
17
|
-
role: "user",
|
|
18
|
-
content: [{ type: "text", text: "Hello!" }],
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
test("anthropic: renders user and assistant messages", async () => {
|
|
22
|
-
const prompt = (_jsxs(Region, { priority: 0, children: [_jsx(Message, { messageRole: "user", children: "Hello!" }), _jsx(Message, { messageRole: "assistant", children: "Hi there!" })] }));
|
|
23
|
-
const result = await render(prompt, {
|
|
24
|
-
tokenizer,
|
|
25
|
-
budget: 10_000,
|
|
26
|
-
renderer: anthropic,
|
|
27
|
-
});
|
|
28
|
-
expect(result.system).toBeUndefined();
|
|
29
|
-
expect(result.messages).toHaveLength(2);
|
|
30
|
-
expect(result.messages[0]).toMatchObject({
|
|
31
|
-
role: "user",
|
|
32
|
-
content: [{ type: "text", text: "Hello!" }],
|
|
33
|
-
});
|
|
34
|
-
expect(result.messages[1]).toMatchObject({
|
|
35
|
-
role: "assistant",
|
|
36
|
-
content: [{ type: "text", text: "Hi there!" }],
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
test("anthropic: renders tool calls as tool_use blocks", async () => {
|
|
40
|
-
const prompt = (_jsx(Region, { priority: 0, children: _jsx(Message, { messageRole: "assistant", children: _jsx(ToolCall, { input: { city: "Paris" }, priority: 1, toolCallId: "call_123", toolName: "getWeather" }) }) }));
|
|
41
|
-
const result = await render(prompt, {
|
|
42
|
-
tokenizer,
|
|
43
|
-
budget: 10_000,
|
|
44
|
-
renderer: anthropic,
|
|
45
|
-
});
|
|
46
|
-
expect(result.messages).toHaveLength(1);
|
|
47
|
-
expect(result.messages[0]).toMatchObject({
|
|
48
|
-
role: "assistant",
|
|
49
|
-
content: [
|
|
50
|
-
{
|
|
51
|
-
type: "tool_use",
|
|
52
|
-
id: "call_123",
|
|
53
|
-
name: "getWeather",
|
|
54
|
-
input: { city: "Paris" },
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
test("anthropic: renders tool results in user messages", async () => {
|
|
60
|
-
const prompt = (_jsx(Region, { priority: 0, children: _jsxs(Message, { messageRole: "assistant", children: [_jsx(ToolCall, { input: { city: "Paris" }, priority: 1, toolCallId: "call_123", toolName: "getWeather" }), _jsx(ToolResult, { output: { temperature: 20 }, priority: 1, toolCallId: "call_123", toolName: "getWeather" })] }) }));
|
|
61
|
-
const result = await render(prompt, {
|
|
62
|
-
tokenizer,
|
|
63
|
-
budget: 10_000,
|
|
64
|
-
renderer: anthropic,
|
|
65
|
-
});
|
|
66
|
-
// Tool result should be moved to a separate user message
|
|
67
|
-
expect(result.messages).toHaveLength(2);
|
|
68
|
-
expect(result.messages[0]?.role).toBe("assistant");
|
|
69
|
-
expect(result.messages[1]?.role).toBe("user");
|
|
70
|
-
expect(result.messages[1]).toMatchObject({
|
|
71
|
-
role: "user",
|
|
72
|
-
content: [
|
|
73
|
-
{
|
|
74
|
-
type: "tool_result",
|
|
75
|
-
tool_use_id: "call_123",
|
|
76
|
-
content: '{"temperature":20}',
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
test("anthropic: full conversation with tool use", async () => {
|
|
82
|
-
const prompt = (_jsxs(Region, { priority: 0, children: [_jsx(Message, { messageRole: "system", children: "You are a weather assistant." }), _jsx(Message, { messageRole: "user", children: "What's the weather in Paris?" }), _jsxs(Message, { messageRole: "assistant", children: ["Let me check.", _jsx(ToolCall, { input: { city: "Paris" }, priority: 1, toolCallId: "call_1", toolName: "getWeather" })] }), _jsx(Message, { messageRole: "user", children: _jsx(ToolResult, { output: { temp: 18 }, priority: 1, toolCallId: "call_1", toolName: "getWeather" }) }), _jsx(Message, { messageRole: "assistant", children: "The temperature in Paris is 18\u00B0C." })] }));
|
|
83
|
-
const result = await render(prompt, {
|
|
84
|
-
tokenizer,
|
|
85
|
-
budget: 10_000,
|
|
86
|
-
renderer: anthropic,
|
|
87
|
-
});
|
|
88
|
-
expect(result.system).toBe("You are a weather assistant.");
|
|
89
|
-
expect(result.messages).toHaveLength(4);
|
|
90
|
-
expect(result.messages[0]?.role).toBe("user");
|
|
91
|
-
expect(result.messages[1]?.role).toBe("assistant");
|
|
92
|
-
expect(result.messages[2]?.role).toBe("user");
|
|
93
|
-
expect(result.messages[3]?.role).toBe("assistant");
|
|
94
|
-
});
|
|
95
|
-
test("anthropic: includes reasoning as text with thinking tags", async () => {
|
|
96
|
-
const prompt = (_jsx(Region, { priority: 0, children: _jsxs(Message, { messageRole: "assistant", children: [_jsx(Reasoning, { priority: 1, text: "Let me think about this..." }), "The answer is 4."] }) }));
|
|
97
|
-
const result = await render(prompt, {
|
|
98
|
-
tokenizer,
|
|
99
|
-
budget: 10_000,
|
|
100
|
-
renderer: anthropic,
|
|
101
|
-
});
|
|
102
|
-
expect(result.messages).toHaveLength(1);
|
|
103
|
-
const content = result.messages[0]?.content;
|
|
104
|
-
expect(Array.isArray(content)).toBe(true);
|
|
105
|
-
if (Array.isArray(content)) {
|
|
106
|
-
const textBlock = content.find((c) => c.type === "text");
|
|
107
|
-
expect(textBlock).toBeDefined();
|
|
108
|
-
if (textBlock && "text" in textBlock) {
|
|
109
|
-
expect(textBlock.text).toContain("<thinking>");
|
|
110
|
-
expect(textBlock.text).toContain("Let me think about this...");
|
|
111
|
-
expect(textBlock.text).toContain("The answer is 4.");
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/anthropic/index.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"additional.test.d.ts","sourceRoot":"","sources":["../../src/components/additional.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@fastpaca/cria/jsx-runtime";
|
|
2
|
-
import { describe, expect, test } from "vitest";
|
|
3
|
-
import { render } from "../render";
|
|
4
|
-
import { CodeBlock, Examples, Region, Separator } from "./index";
|
|
5
|
-
const tokenizer = (text) => text.length;
|
|
6
|
-
describe("Separator", () => {
|
|
7
|
-
test("inserts separators between children", async () => {
|
|
8
|
-
const element = (_jsxs(Separator, { priority: 0, value: " | ", children: [_jsx(Region, { priority: 0, children: "A" }), _jsx(Region, { priority: 0, children: "B" }), _jsx(Region, { priority: 0, children: "C" })] }));
|
|
9
|
-
const result = await render(element, { tokenizer, budget: 100 });
|
|
10
|
-
expect(result).toBe("A | B | C");
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe("Examples", () => {
|
|
14
|
-
test("prefixes title and separates examples", async () => {
|
|
15
|
-
const element = (_jsxs(Examples, { priority: 1, separator: "\\n---\\n", title: "Examples:", children: [_jsx(Region, { priority: 0, children: "One" }), _jsx(Region, { priority: 0, children: "Two" })] }));
|
|
16
|
-
const result = await render(element, { tokenizer, budget: 100 });
|
|
17
|
-
expect(result).toContain("Examples:\n");
|
|
18
|
-
expect(result).toContain("One");
|
|
19
|
-
expect(result).toContain("Two");
|
|
20
|
-
expect(result).toContain("---");
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe("CodeBlock", () => {
|
|
24
|
-
test("renders fenced code", async () => {
|
|
25
|
-
const element = _jsx(CodeBlock, { code: "console.log('hi');", language: "js" });
|
|
26
|
-
const result = await render(element, { tokenizer, budget: 100 });
|
|
27
|
-
expect(result).toContain("```js");
|
|
28
|
-
expect(result).toContain("console.log('hi');");
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=additional.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"additional.test.js","sourceRoot":"","sources":["../../src/components/additional.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAExD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAG,CACd,MAAC,SAAS,IAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAC,KAAK,aACjC,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,kBAAY,EAC/B,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,kBAAY,EAC/B,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,kBAAY,IACrB,CACb,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,CACd,MAAC,QAAQ,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAC,WAAS,EAAC,KAAK,EAAC,WAAW,aAC1D,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,oBAAc,EACjC,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,oBAAc,IACxB,CACZ,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,OAAO,GAAG,KAAC,SAAS,IAAC,IAAI,EAAC,oBAAoB,EAAC,QAAQ,EAAC,IAAI,GAAG,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary.test.d.ts","sourceRoot":"","sources":["../../src/components/summary.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@fastpaca/cria/jsx-runtime";
|
|
2
|
-
import { expect, test } from "vitest";
|
|
3
|
-
import { InMemoryStore, Last, Region, render, Summary, } from "../index";
|
|
4
|
-
// Simple tokenizer: 1 token per 4 characters
|
|
5
|
-
const tokenizer = (text) => Math.ceil(text.length / 4);
|
|
6
|
-
test("Summary: triggers summarization when over budget", async () => {
|
|
7
|
-
const store = new InMemoryStore();
|
|
8
|
-
let summarizeCalled = false;
|
|
9
|
-
const summarize = ({ content }) => {
|
|
10
|
-
summarizeCalled = true;
|
|
11
|
-
return `Summary of: ${content.slice(0, 20)}...`;
|
|
12
|
-
};
|
|
13
|
-
const longContent = "A".repeat(200);
|
|
14
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Summary, { id: "test-1", priority: 1, store: store, summarize: summarize, children: longContent }) }));
|
|
15
|
-
// Render with small budget to trigger summarization
|
|
16
|
-
// Budget needs to fit the summary output + "[Summary of earlier conversation]\n" prefix
|
|
17
|
-
const result = await render(element, { tokenizer, budget: 30 });
|
|
18
|
-
expect(summarizeCalled).toBe(true);
|
|
19
|
-
expect(result).toContain("Summary of:");
|
|
20
|
-
expect(result.length).toBeLessThan(longContent.length);
|
|
21
|
-
});
|
|
22
|
-
test("Summary: stores summary in store", async () => {
|
|
23
|
-
const store = new InMemoryStore();
|
|
24
|
-
const summarize = () => "This is the summary";
|
|
25
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Summary, { id: "test-2", priority: 1, store: store, summarize: summarize, children: "Long content ".repeat(50) }) }));
|
|
26
|
-
await render(element, { tokenizer, budget: 20 });
|
|
27
|
-
const entry = store.get("test-2");
|
|
28
|
-
expect(entry).not.toBeNull();
|
|
29
|
-
expect(entry?.data.content).toBe("This is the summary");
|
|
30
|
-
expect(entry?.data.tokenCount).toBeGreaterThan(0);
|
|
31
|
-
expect(entry?.updatedAt).toBeGreaterThan(0);
|
|
32
|
-
});
|
|
33
|
-
test("Summary: passes existing summary to summarizer", async () => {
|
|
34
|
-
const store = new InMemoryStore();
|
|
35
|
-
// Pre-populate store
|
|
36
|
-
store.set("test-3", {
|
|
37
|
-
content: "Previous summary",
|
|
38
|
-
tokenCount: 10,
|
|
39
|
-
});
|
|
40
|
-
let receivedExisting = null;
|
|
41
|
-
const summarize = ({ existingSummary, }) => {
|
|
42
|
-
receivedExisting = existingSummary;
|
|
43
|
-
return "Updated summary";
|
|
44
|
-
};
|
|
45
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Summary, { id: "test-3", priority: 1, store: store, summarize: summarize, children: "Content ".repeat(100) }) }));
|
|
46
|
-
await render(element, { tokenizer, budget: 20 });
|
|
47
|
-
expect(receivedExisting).toBe("Previous summary");
|
|
48
|
-
});
|
|
49
|
-
test("Summary: does not trigger when under budget", async () => {
|
|
50
|
-
const store = new InMemoryStore();
|
|
51
|
-
let summarizeCalled = false;
|
|
52
|
-
const summarize = () => {
|
|
53
|
-
summarizeCalled = true;
|
|
54
|
-
return "Summary";
|
|
55
|
-
};
|
|
56
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Summary, { id: "test-4", priority: 1, store: store, summarize: summarize, children: "Short" }) }));
|
|
57
|
-
// Large budget - no need to summarize
|
|
58
|
-
await render(element, { tokenizer, budget: 1000 });
|
|
59
|
-
expect(summarizeCalled).toBe(false);
|
|
60
|
-
});
|
|
61
|
-
test("Last: keeps only last N children", async () => {
|
|
62
|
-
const messages = ["First", "Second", "Third", "Fourth", "Fifth"];
|
|
63
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Last, { N: 2, children: messages }) }));
|
|
64
|
-
const result = await render(element, { tokenizer, budget: 1000 });
|
|
65
|
-
expect(result).not.toContain("First");
|
|
66
|
-
expect(result).not.toContain("Second");
|
|
67
|
-
expect(result).not.toContain("Third");
|
|
68
|
-
expect(result).toContain("Fourth");
|
|
69
|
-
expect(result).toContain("Fifth");
|
|
70
|
-
});
|
|
71
|
-
test("Last: handles N larger than children count", async () => {
|
|
72
|
-
const messages = ["One", "Two"];
|
|
73
|
-
const element = (_jsx(Region, { priority: 0, children: _jsx(Last, { N: 10, children: messages }) }));
|
|
74
|
-
const result = await render(element, { tokenizer, budget: 1000 });
|
|
75
|
-
expect(result).toContain("One");
|
|
76
|
-
expect(result).toContain("Two");
|
|
77
|
-
});
|
|
78
|
-
test("Summary + Last: typical usage pattern", async () => {
|
|
79
|
-
const store = new InMemoryStore();
|
|
80
|
-
// Summarizer produces a short fixed-length output
|
|
81
|
-
const summarize = () => "Discussed greetings";
|
|
82
|
-
// Use longer messages so the summary provides real compression
|
|
83
|
-
const messages = [
|
|
84
|
-
"Message 1: Hello there, how are you doing today?",
|
|
85
|
-
"Message 2: I am doing great, thanks for asking!",
|
|
86
|
-
"Message 3: That is wonderful to hear from you.",
|
|
87
|
-
"Message 4: Recent message here",
|
|
88
|
-
"Message 5: Final message",
|
|
89
|
-
];
|
|
90
|
-
const element = (_jsxs(Region, { priority: 0, children: [_jsx(Summary, { id: "conv", priority: 2, store: store, summarize: summarize, children: messages.slice(0, -2) }), _jsx(Last, { N: 2, children: messages })] }));
|
|
91
|
-
// Full content: ~180 chars = 45 tokens
|
|
92
|
-
// Summarized: prefix (34) + summary (19) + last 2 msgs (~50) = ~103 chars = 26 tokens
|
|
93
|
-
const result = await render(element, { tokenizer, budget: 30 });
|
|
94
|
-
// Should have summary of older messages (wrapped with prefix)
|
|
95
|
-
expect(result).toContain("[Summary of earlier conversation]");
|
|
96
|
-
expect(result).toContain("Discussed greetings");
|
|
97
|
-
// Should have recent messages in full
|
|
98
|
-
expect(result).toContain("Message 4: Recent message here");
|
|
99
|
-
expect(result).toContain("Message 5: Final message");
|
|
100
|
-
});
|
|
101
|
-
//# sourceMappingURL=summary.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary.test.js","sourceRoot":"","sources":["../../src/components/summary.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search.test.d.ts","sourceRoot":"","sources":["../../src/components/vector-search.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { VectorSearch } from "./vector-search";
|
|
3
|
-
const mockResults = [
|
|
4
|
-
{
|
|
5
|
-
key: "doc-1",
|
|
6
|
-
score: 0.95,
|
|
7
|
-
entry: {
|
|
8
|
-
data: { title: "First Document", content: "This is the first document." },
|
|
9
|
-
createdAt: 1_700_000_000_000,
|
|
10
|
-
updatedAt: 1_700_000_000_000,
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
key: "doc-2",
|
|
15
|
-
score: 0.82,
|
|
16
|
-
entry: {
|
|
17
|
-
data: {
|
|
18
|
-
title: "Second Document",
|
|
19
|
-
content: "This is the second document.",
|
|
20
|
-
},
|
|
21
|
-
createdAt: 1_700_000_001_000,
|
|
22
|
-
updatedAt: 1_700_000_001_000,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
];
|
|
26
|
-
function createMockStore(results) {
|
|
27
|
-
let lastQuery;
|
|
28
|
-
let lastOptions;
|
|
29
|
-
const store = {
|
|
30
|
-
get: () => null,
|
|
31
|
-
set: () => {
|
|
32
|
-
/* no-op */
|
|
33
|
-
},
|
|
34
|
-
delete: () => false,
|
|
35
|
-
search: (query, options) => {
|
|
36
|
-
lastQuery = query;
|
|
37
|
-
lastOptions = options;
|
|
38
|
-
return results;
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
return {
|
|
42
|
-
store,
|
|
43
|
-
getLastQuery: () => lastQuery,
|
|
44
|
-
getLastOptions: () => lastOptions,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
const PLAIN_TEXT_REGEX = /plain text/;
|
|
48
|
-
describe("VectorSearch", () => {
|
|
49
|
-
it("uses children as the query and renders results", async () => {
|
|
50
|
-
const { store, getLastQuery, getLastOptions } = createMockStore(mockResults);
|
|
51
|
-
const element = await VectorSearch({
|
|
52
|
-
store,
|
|
53
|
-
limit: 2,
|
|
54
|
-
children: ["Find docs about RAG"],
|
|
55
|
-
});
|
|
56
|
-
expect(getLastQuery()).toBe("Find docs about RAG");
|
|
57
|
-
expect(getLastOptions()).toEqual({ limit: 2 });
|
|
58
|
-
expect(element.children[0]).toContain("First Document");
|
|
59
|
-
});
|
|
60
|
-
it("derives query from the last user message by default", async () => {
|
|
61
|
-
const { store, getLastQuery } = createMockStore(mockResults);
|
|
62
|
-
const messages = [
|
|
63
|
-
{ role: "assistant", content: "Previous answer" },
|
|
64
|
-
{ role: "user", content: "What is RAG?" },
|
|
65
|
-
];
|
|
66
|
-
const element = await VectorSearch({ store, messages });
|
|
67
|
-
expect(getLastQuery()).toBe("What is RAG?");
|
|
68
|
-
expect(element.children[0]).toContain("First Document");
|
|
69
|
-
});
|
|
70
|
-
it("uses a custom extractor when provided", async () => {
|
|
71
|
-
const { store, getLastQuery } = createMockStore(mockResults);
|
|
72
|
-
const messages = [
|
|
73
|
-
{ role: "user", content: "ignore me" },
|
|
74
|
-
{ role: "assistant", content: "assistant reply" },
|
|
75
|
-
];
|
|
76
|
-
const element = await VectorSearch({
|
|
77
|
-
store,
|
|
78
|
-
messages,
|
|
79
|
-
extractQuery: () => "custom-query",
|
|
80
|
-
});
|
|
81
|
-
expect(getLastQuery()).toBe("custom-query");
|
|
82
|
-
expect(element.children[0]).toContain("First Document");
|
|
83
|
-
});
|
|
84
|
-
it("throws when no results found", async () => {
|
|
85
|
-
const { store } = createMockStore([]);
|
|
86
|
-
await expect(VectorSearch({
|
|
87
|
-
store,
|
|
88
|
-
query: "nothing here",
|
|
89
|
-
})).rejects.toThrow("no results found");
|
|
90
|
-
});
|
|
91
|
-
it("throws when no query is available", async () => {
|
|
92
|
-
const { store } = createMockStore([]);
|
|
93
|
-
await expect(VectorSearch({ store })).rejects.toThrow("no query provided");
|
|
94
|
-
});
|
|
95
|
-
it("uses custom formatter", async () => {
|
|
96
|
-
const { store } = createMockStore(mockResults);
|
|
97
|
-
const element = await VectorSearch({
|
|
98
|
-
store,
|
|
99
|
-
query: "test",
|
|
100
|
-
formatResults: (results) => `Found ${results.length} results`,
|
|
101
|
-
});
|
|
102
|
-
expect(element.children[0]).toBe("Found 2 results");
|
|
103
|
-
});
|
|
104
|
-
it("rejects non-text children", async () => {
|
|
105
|
-
const { store } = createMockStore(mockResults);
|
|
106
|
-
const badChild = { priority: 0, children: [] };
|
|
107
|
-
await expect(VectorSearch({
|
|
108
|
-
store,
|
|
109
|
-
children: [badChild],
|
|
110
|
-
})).rejects.toThrow(PLAIN_TEXT_REGEX);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
//# sourceMappingURL=vector-search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector-search.test.js","sourceRoot":"","sources":["../../src/components/vector-search.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"otel.test.d.ts","sourceRoot":"","sources":["../../src/instrumentation/otel.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@fastpaca/cria/jsx-runtime";
|
|
2
|
-
import { describe, expect, test } from "vitest";
|
|
3
|
-
import { Omit, Region, render } from "../index";
|
|
4
|
-
import { createOtelRenderHooks } from "./otel";
|
|
5
|
-
class StubSpan {
|
|
6
|
-
name;
|
|
7
|
-
attributes = {};
|
|
8
|
-
ended = false;
|
|
9
|
-
status = null;
|
|
10
|
-
exceptions = [];
|
|
11
|
-
constructor(name) {
|
|
12
|
-
this.name = name;
|
|
13
|
-
}
|
|
14
|
-
spanContext() {
|
|
15
|
-
return { traceId: "trace", spanId: "span", traceFlags: 1 };
|
|
16
|
-
}
|
|
17
|
-
setAttribute(key, value) {
|
|
18
|
-
this.attributes[key] = value;
|
|
19
|
-
return this;
|
|
20
|
-
}
|
|
21
|
-
setAttributes(attrs) {
|
|
22
|
-
Object.assign(this.attributes, attrs);
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
addEvent() {
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
addLink() {
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
addLinks() {
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
setStatus(status) {
|
|
35
|
-
this.status = status;
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
updateName() {
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
end() {
|
|
42
|
-
this.ended = true;
|
|
43
|
-
}
|
|
44
|
-
isRecording() {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
recordException(exception) {
|
|
48
|
-
this.exceptions.push(exception);
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
class StubTracer {
|
|
53
|
-
spans = [];
|
|
54
|
-
startSpan(name) {
|
|
55
|
-
const span = new StubSpan(name);
|
|
56
|
-
this.spans.push(span);
|
|
57
|
-
return span;
|
|
58
|
-
}
|
|
59
|
-
startActiveSpan(name, fn) {
|
|
60
|
-
const span = this.startSpan(name);
|
|
61
|
-
try {
|
|
62
|
-
return fn(span);
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
span.end();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const tokenizer = (text) => text.length;
|
|
70
|
-
const FIT_ERROR = /Cannot fit prompt/;
|
|
71
|
-
describe("createOtelRenderHooks", () => {
|
|
72
|
-
test("emits spans for fit lifecycle", async () => {
|
|
73
|
-
const tracer = new StubTracer();
|
|
74
|
-
const hooks = createOtelRenderHooks({ tracer });
|
|
75
|
-
const element = (_jsxs(Region, { priority: 0, children: ["A", _jsx(Omit, { priority: 1, children: "BBBB" })] }));
|
|
76
|
-
await render(element, { tokenizer, budget: 1, hooks });
|
|
77
|
-
const names = tracer.spans.map((span) => span.name);
|
|
78
|
-
expect(names).toEqual([
|
|
79
|
-
"cria.fit",
|
|
80
|
-
"cria.fit.iteration",
|
|
81
|
-
"cria.fit.strategy",
|
|
82
|
-
]);
|
|
83
|
-
const rootSpan = tracer.spans[0];
|
|
84
|
-
expect(rootSpan).toBeDefined();
|
|
85
|
-
expect(rootSpan?.attributes["cria.budget"]).toBe(1);
|
|
86
|
-
expect(typeof rootSpan?.attributes["cria.total_tokens"]).toBe("number");
|
|
87
|
-
});
|
|
88
|
-
test("records errors on fit failure", async () => {
|
|
89
|
-
const tracer = new StubTracer();
|
|
90
|
-
const hooks = createOtelRenderHooks({ tracer });
|
|
91
|
-
const element = _jsx(Region, { priority: 0, children: "Too long" });
|
|
92
|
-
await expect(render(element, {
|
|
93
|
-
tokenizer,
|
|
94
|
-
budget: 1,
|
|
95
|
-
hooks,
|
|
96
|
-
})).rejects.toThrow(FIT_ERROR);
|
|
97
|
-
const errorSpan = tracer.spans.at(-1);
|
|
98
|
-
expect(errorSpan.status?.code).toBeDefined();
|
|
99
|
-
expect(errorSpan.exceptions).toHaveLength(1);
|
|
100
|
-
});
|
|
101
|
-
test("propagates tracer errors", async () => {
|
|
102
|
-
const tracer = {
|
|
103
|
-
startSpan: () => {
|
|
104
|
-
throw new Error("boom");
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
const hooks = createOtelRenderHooks({ tracer });
|
|
108
|
-
const element = _jsx(Region, { priority: 0, children: "Hello" });
|
|
109
|
-
await expect(render(element, {
|
|
110
|
-
tokenizer,
|
|
111
|
-
budget: 1,
|
|
112
|
-
hooks,
|
|
113
|
-
})).rejects.toThrow("boom");
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=otel.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"otel.test.js","sourceRoot":"","sources":["../../src/instrumentation/otel.test.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,QAAQ;IACZ,IAAI,CAAS;IACb,UAAU,GAA4B,EAAE,CAAC;IACzC,KAAK,GAAG,KAAK,CAAC;IACd,MAAM,GAA8C,IAAI,CAAC;IACzD,UAAU,GAAc,EAAE,CAAC;IAE3B,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,WAAW;QACT,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,YAAY,CAAC,GAAW,EAAE,KAAc;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,aAAa,CAAC,KAAiB;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,CAAC,MAAW;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,GAAG;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAe,CAAC,SAAc;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU;IACd,KAAK,GAAe,EAAE,CAAC;IACvB,SAAS,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAe,CACb,IAAY,EACZ,EAAK;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,CAAkB,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF;AAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CACd,MAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,kBAChB,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,qBAAa,IACxB,CACV,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,UAAU;YACV,oBAAoB;YACpB,mBAAmB;SACpB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,QAAQ,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,yBAAmB,CAAC;QAEvD,MAAM,MAAM,CACV,MAAM,CAAC,OAAO,EAAE;YACd,SAAS;YACT,MAAM,EAAE,CAAC;YACT,KAAK;SACN,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAa,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,GAAG,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;SACmB,CAAC;QAEvB,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,sBAAgB,CAAC;QAEpD,MAAM,MAAM,CACV,MAAM,CAAC,OAAO,EAAE;YACd,SAAS;YACT,MAAM,EAAE,CAAC;YACT,KAAK;SACN,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/jsx-dev-runtime.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-dev-runtime.js","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE3E,KAAK,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,KAAK,GACb,aAAa,GACb,OAAO,CAAC,aAAa,CAAC,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,KAAK,EAAE,CAAC;AAErB,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAoC5D,eAAO,MAAM,QAAQ,eAA8B,CAAC;AAGpD,wBAAsB,GAAG,CACvB,IAAI,EAAE,WAAW,GAAG,OAAO,QAAQ,EACnC,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,aAAa,CAAC,CASxB;AAGD,wBAAsB,IAAI,CACxB,IAAI,EAAE,WAAW,GAAG,OAAO,QAAQ,EACnC,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,yBAAiB,GAAG,CAAC;IACnB,KAAY,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAElD,KAAY,wBAAwB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS;QACtD,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B,GACG,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,GAC1C,CAAC,CAAC;IACN,UAAiB,iBAAiB;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;KACtB;IACD,UAAiB,wBAAwB;QACvC,QAAQ,EAAE,OAAO,CAAC;KACnB;CACF"}
|
package/dist/jsx-runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AA+BA,gFAAgF;AAChF,KAAK,UAAU,iBAAiB,CAC9B,QAA2B;IAE3B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAY;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,IAAmC,EACnC,KAAY;IAEZ,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEzD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,8DAA8D;QAC9D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,IAAmC,EACnC,KAAY;IAEZ,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/openai/index.test.tsx"],"names":[],"mappings":""}
|