Skip to content

Commit fef44d7

Browse files
authored
Merge branch 'main' into memory_optimizations
2 parents 6080746 + d698bb0 commit fef44d7

File tree

9 files changed

+1317
-466
lines changed

9 files changed

+1317
-466
lines changed

deno.lock

Lines changed: 492 additions & 247 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/html/src/jsx.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2889,6 +2889,7 @@ interface CTKbdElement extends CTHTMLElement {}
28892889
interface CTKeybindElement extends CTHTMLElement {}
28902890
interface CTRenderElement extends CTHTMLElement {}
28912891
interface CTChatMessageElement extends CTHTMLElement {}
2892+
interface CTMarkdownElement extends CTHTMLElement {}
28922893
interface CTVScrollElement extends CTHTMLElement {}
28932894
interface CTSendMessageElement extends CTHTMLElement {}
28942895
interface CTTextElement extends CTHTMLElement {}
@@ -3107,6 +3108,13 @@ interface CTChatMessageAttributes<T> extends CTHTMLAttributes<T> {
31073108
"pending"?: boolean;
31083109
}
31093110

3111+
interface CTMarkdownAttributes<T> extends CTHTMLAttributes<T> {
3112+
"content"?: string;
3113+
"$content"?: CellLike<string>;
3114+
"variant"?: "default" | "inverse";
3115+
"streaming"?: boolean;
3116+
}
3117+
31103118
interface CTButtonAttributes<T> extends CTHTMLAttributes<T> {
31113119
"variant"?:
31123120
| "default"
@@ -3847,6 +3855,10 @@ declare global {
38473855
CTChatMessageAttributes<CTChatMessageElement>,
38483856
CTChatMessageElement
38493857
>;
3858+
"ct-markdown": CTDOM.DetailedHTMLProps<
3859+
CTMarkdownAttributes<CTMarkdownElement>,
3860+
CTMarkdownElement
3861+
>;
38503862
"ct-card": CTDOM.DetailedHTMLProps<
38513863
CTHTMLAttributes<CTCardElement>,
38523864
CTCardElement

packages/toolshed/deno.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
"@std/cli": "jsr:@std/cli@^1.0.12",
2020
"ajv": "npm:ajv@^8.17.1",
2121
"gcp-metadata": "npm:gcp-metadata@6.1.0",
22-
"@opentelemetry/context-async-hooks": "npm:@opentelemetry/context-async-hooks@^1.19.0",
23-
"@opentelemetry/core": "npm:@opentelemetry/core@^1.19.0",
24-
"@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@^1.19.0",
25-
"@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.19.0",
22+
"@opentelemetry/context-async-hooks": "npm:@opentelemetry/context-async-hooks@^1.30.0",
23+
"@opentelemetry/core": "npm:@opentelemetry/core@^1.30.0",
24+
"@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@^1.30.0",
25+
"@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@^1.30.0",
2626
"@arizeai/openinference-semantic-conventions": "npm:@arizeai/openinference-semantic-conventions@^1.1.0",
2727
"@arizeai/openinference-vercel": "npm:@arizeai/openinference-vercel@^2.0.1",
2828
"@fal-ai/client": "npm:@fal-ai/client@^1.2.2",
@@ -32,7 +32,7 @@
3232
"@hono/zod-validator": "npm:@hono/zod-validator@^0.4.2",
3333
"@opentelemetry/api": "npm:@opentelemetry/api@^1.7.0",
3434
"@opentelemetry/exporter-trace-otlp-proto": "npm:@opentelemetry/exporter-trace-otlp-proto@^0.46.0",
35-
"@opentelemetry/resources": "npm:@opentelemetry/resources@^1.19.0",
35+
"@opentelemetry/resources": "npm:@opentelemetry/resources@^1.30.0",
3636
"@scalar/hono-api-reference": "npm:@scalar/hono-api-reference@^0.5.165",
3737
"@sentry/deno": "npm:@sentry/deno@^9.3.0",
3838
"jsonschema": "npm:jsonschema@^1.5.0",

packages/ui/src/v2/components/ct-chat-message/ct-chat-message.test.ts

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,51 @@ describe("ct-chat-message", () => {
77
expect(CTChatMessage).toBeDefined();
88
});
99

10-
it("should replace LLM-friendly links with ct-cell-link in _renderMarkdown", () => {
10+
it("should create element instance", () => {
11+
const element = new CTChatMessage();
12+
expect(element).toBeInstanceOf(CTChatMessage);
13+
});
14+
15+
it("should have default role of user", () => {
16+
const element = new CTChatMessage();
17+
expect(element.role).toBe("user");
18+
});
19+
20+
it("should have streaming disabled by default", () => {
21+
const element = new CTChatMessage();
22+
expect(element.streaming).toBe(false);
23+
});
24+
25+
it("should extract text content from string", () => {
1126
const el = new CTChatMessage();
12-
const link = "/of:bafyabc123/path";
13-
const markdown = `Check this [Link](${link})`;
27+
el.content = "Hello world";
1428

15-
// Access private method
16-
const rendered = (el as any)._renderMarkdown(markdown);
29+
const text = (el as any)._extractTextContent();
1730

18-
expect(rendered).toContain(
19-
`<ct-cell-link link="${link}" label="Link"></ct-cell-link>`,
20-
);
31+
expect(text).toBe("Hello world");
2132
});
33+
34+
it("should extract text content from array with text parts", () => {
35+
const el = new CTChatMessage();
36+
el.content = [
37+
{ type: "text", text: "Hello" },
38+
{ type: "text", text: "world" },
39+
] as any;
40+
41+
const text = (el as any)._extractTextContent();
42+
43+
expect(text).toBe("Hello world");
44+
});
45+
46+
it("should return empty string for empty content", () => {
47+
const el = new CTChatMessage();
48+
el.content = "";
49+
50+
const text = (el as any)._extractTextContent();
51+
52+
expect(text).toBe("");
53+
});
54+
55+
// Note: Markdown rendering is now tested in ct-markdown.test.ts
56+
// ct-chat-message delegates to ct-markdown component
2257
});

0 commit comments

Comments
 (0)