Skip to content

Commit fe4f5ce

Browse files
authored
Merge pull request #395 from badaitech/feat/execution-event-bound
feat: Gemini multimodal nodes (image+text->image+text), ArchAI attachments support
2 parents f1c440a + d6772dc commit fe4f5ce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+4227
-192
lines changed

apps/chaingraph-backend/CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# @badaitech/chaingraph-backend
22

3+
## 0.6.30
4+
5+
### Patch Changes
6+
7+
- a2b6952: feat: enhance node and port documentation with Markdown support for descriptions
8+
- e10f1b7: feat: Add Gemini Multimodal Image and Imagen Generate nodes
9+
- 28bd0d2: feat(archai): implement upload and attachment handling nodes for ArchAI integration
10+
- bcc58e4: feat(gemini): add new nodes for Gemini File Part, Image Part, and Text Part; enhance ArchAI integration with attachment handling
11+
- Updated dependencies [a2b6952]
12+
- Updated dependencies [e10f1b7]
13+
- Updated dependencies [28bd0d2]
14+
- Updated dependencies [bcc58e4]
15+
- @badaitech/chaingraph-nodes@0.6.30
16+
- @badaitech/chaingraph-types@0.6.30
17+
- @badaitech/chaingraph-trpc@0.6.30
18+
19+
## 0.6.29
20+
21+
### Patch Changes
22+
23+
- 0442f06: feat(gemini): enhance gemini structured output node with thoughts streaming and JSON schema improvements
24+
- Updated dependencies [0442f06]
25+
- @badaitech/chaingraph-nodes@0.6.29
26+
- @badaitech/chaingraph-types@0.6.29
27+
- @badaitech/chaingraph-trpc@0.6.29
28+
329
## 0.6.28
430

531
### Patch Changes

apps/chaingraph-backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@badaitech/chaingraph-backend",
33
"type": "module",
4-
"version": "0.6.28",
4+
"version": "0.6.30",
55
"private": false,
66
"description": "Backend server for the Chaingraph project",
77
"license": "BUSL-1.1",

apps/chaingraph-execution-api/CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
# @badaitech/chaingraph-execution-api
22

3+
## 0.6.30
4+
5+
### Patch Changes
6+
7+
- a2b6952: feat: enhance node and port documentation with Markdown support for descriptions
8+
- e10f1b7: feat: Add Gemini Multimodal Image and Imagen Generate nodes
9+
- 28bd0d2: feat(archai): implement upload and attachment handling nodes for ArchAI integration
10+
- bcc58e4: feat(gemini): add new nodes for Gemini File Part, Image Part, and Text Part; enhance ArchAI integration with attachment handling
11+
- Updated dependencies [a2b6952]
12+
- Updated dependencies [e10f1b7]
13+
- Updated dependencies [28bd0d2]
14+
- Updated dependencies [bcc58e4]
15+
- @badaitech/chaingraph-executor@0.6.30
16+
- @badaitech/chaingraph-nodes@0.6.30
17+
- @badaitech/chaingraph-types@0.6.30
18+
- @badaitech/chaingraph-trpc@0.6.30
19+
- @badaitech/badai-api@0.6.30
20+
21+
## 0.6.29
22+
23+
### Patch Changes
24+
25+
- 0442f06: feat(gemini): enhance gemini structured output node with thoughts streaming and JSON schema improvements
26+
- Updated dependencies [0442f06]
27+
- @badaitech/chaingraph-executor@0.6.29
28+
- @badaitech/chaingraph-nodes@0.6.29
29+
- @badaitech/chaingraph-types@0.6.29
30+
- @badaitech/chaingraph-trpc@0.6.29
31+
- @badaitech/badai-api@0.6.29
32+
333
## 0.6.28
434

535
### Patch Changes

apps/chaingraph-execution-api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@badaitech/chaingraph-execution-api",
33
"type": "module",
4-
"version": "0.6.28",
4+
"version": "0.6.30",
55
"private": false,
66
"description": "Chaingraph tRPC Server - Scalable API server for Chaingraph execution management",
77
"license": "BUSL-1.1",

apps/chaingraph-execution-worker/CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
# @badaitech/chaingraph-execution-worker
22

3+
## 0.6.30
4+
5+
### Patch Changes
6+
7+
- a2b6952: feat: enhance node and port documentation with Markdown support for descriptions
8+
- e10f1b7: feat: Add Gemini Multimodal Image and Imagen Generate nodes
9+
- 28bd0d2: feat(archai): implement upload and attachment handling nodes for ArchAI integration
10+
- bcc58e4: feat(gemini): add new nodes for Gemini File Part, Image Part, and Text Part; enhance ArchAI integration with attachment handling
11+
- Updated dependencies [a2b6952]
12+
- Updated dependencies [e10f1b7]
13+
- Updated dependencies [28bd0d2]
14+
- Updated dependencies [bcc58e4]
15+
- @badaitech/chaingraph-executor@0.6.30
16+
- @badaitech/chaingraph-nodes@0.6.30
17+
- @badaitech/chaingraph-types@0.6.30
18+
- @badaitech/chaingraph-trpc@0.6.30
19+
- @badaitech/badai-api@0.6.30
20+
21+
## 0.6.29
22+
23+
### Patch Changes
24+
25+
- 0442f06: feat(gemini): enhance gemini structured output node with thoughts streaming and JSON schema improvements
26+
- Updated dependencies [0442f06]
27+
- @badaitech/chaingraph-executor@0.6.29
28+
- @badaitech/chaingraph-nodes@0.6.29
29+
- @badaitech/chaingraph-types@0.6.29
30+
- @badaitech/chaingraph-trpc@0.6.29
31+
- @badaitech/badai-api@0.6.29
32+
333
## 0.6.28
434

535
### Patch Changes

apps/chaingraph-execution-worker/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@badaitech/chaingraph-execution-worker",
33
"type": "module",
4-
"version": "0.6.28",
4+
"version": "0.6.30",
55
"private": false,
66
"description": "Chaingraph Execution Worker Service using DBOS for durable workflow execution",
77
"license": "BUSL-1.1",

apps/chaingraph-frontend/CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
# @badaitech/chaingraph-frontend
22

3+
## 0.6.30
4+
5+
### Patch Changes
6+
7+
- a2b6952: feat: enhance node and port documentation with Markdown support for descriptions
8+
- e10f1b7: feat: Add Gemini Multimodal Image and Imagen Generate nodes
9+
- 28bd0d2: feat(archai): implement upload and attachment handling nodes for ArchAI integration
10+
- bcc58e4: feat(gemini): add new nodes for Gemini File Part, Image Part, and Text Part; enhance ArchAI integration with attachment handling
11+
- Updated dependencies [a2b6952]
12+
- Updated dependencies [e10f1b7]
13+
- Updated dependencies [28bd0d2]
14+
- Updated dependencies [bcc58e4]
15+
- @badaitech/chaingraph-executor@0.6.30
16+
- @badaitech/chaingraph-nodes@0.6.30
17+
- @badaitech/chaingraph-types@0.6.30
18+
- @badaitech/chaingraph-trpc@0.6.30
19+
- @badaitech/badai-api@0.6.30
20+
21+
## 0.6.29
22+
23+
### Patch Changes
24+
25+
- 0442f06: feat(gemini): enhance gemini structured output node with thoughts streaming and JSON schema improvements
26+
- Updated dependencies [0442f06]
27+
- @badaitech/chaingraph-executor@0.6.29
28+
- @badaitech/chaingraph-nodes@0.6.29
29+
- @badaitech/chaingraph-types@0.6.29
30+
- @badaitech/chaingraph-trpc@0.6.29
31+
- @badaitech/badai-api@0.6.29
32+
333
## 0.6.28
434

535
### Patch Changes

apps/chaingraph-frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@badaitech/chaingraph-frontend",
33
"type": "module",
4-
"version": "0.6.28",
4+
"version": "0.6.30",
55
"private": false,
66
"description": "Frontend application for the Chaingraph project",
77
"license": "BUSL-1.1",

apps/chaingraph-frontend/src/components/flow/nodes/ChaingraphNode/NodeDocTooltipContent.tsx

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { getCategoryIcon } from '@badaitech/chaingraph-nodes'
1313
import { PortDirection } from '@badaitech/chaingraph-types'
1414
import { ChevronDown, ChevronRight } from 'lucide-react'
1515
import { useMemo, useState } from 'react'
16+
import Markdown from 'react-markdown'
17+
import remarkGfm from 'remark-gfm'
1618
import { useTheme } from '@/components/theme'
1719
import {
1820
Badge,
@@ -175,19 +177,58 @@ export function NodeDocTooltipContent({
175177
<div className="flex-1 min-h-0 overflow-hidden">
176178
<ScrollArea className="h-full w-full">
177179
<div className="p-4 space-y-3">
180+
181+
{/* Description */}
182+
{node.metadata.description && (
183+
<div className="space-y-1">
184+
<div className="text-xs font-medium text-muted-foreground">Description</div>
185+
<div className="text-xs text-muted-foreground">
186+
{/* {formatDescription(node.metadata.description)} */}
187+
188+
<div
189+
className="prose prose-xs dark:prose-invert max-w-none space-y-1 text-xs text-muted-foreground border-l-2 pl-2"
190+
// className=""
191+
style={{ borderColor: style.primary }}
192+
>
193+
<Markdown
194+
remarkPlugins={[remarkGfm]}
195+
components={{
196+
p: ({ children }) => <p className="my-1 leading-relaxed">{children}</p>,
197+
ul: ({ children }) => <ul className="my-1 ml-4 list-disc">{children}</ul>,
198+
ol: ({ children }) => <ol className="my-1 ml-4 list-decimal">{children}</ol>,
199+
li: ({ children }) => <li className="my-0.5">{children}</li>,
200+
h1: ({ children }) => <h1 className="text-sm font-semibold my-1">{children}</h1>,
201+
h2: ({ children }) => <h2 className="text-xs font-semibold my-1">{children}</h2>,
202+
h3: ({ children }) => <h3 className="text-xs font-medium my-1">{children}</h3>,
203+
code: ({ children }) => <code className="px-1 py-0.5 rounded bg-muted text-[10px]">{children}</code>,
204+
pre: ({ children }) => <pre className="my-1 p-2 rounded bg-muted overflow-x-auto">{children}</pre>,
205+
}}
206+
>
207+
{node.metadata.description}
208+
</Markdown>
209+
</div>
210+
</div>
211+
</div>
212+
)}
213+
214+
{/* Delimiter: */}
215+
<hr className="border-t border-border" />
216+
178217
{/* Node ID */}
179218
{node.id && (
180219
<div className="space-y-1">
181220
<div className="text-xs font-medium text-muted-foreground">Node ID</div>
182-
<div className="text-xs text-muted-foreground">{node.id}</div>
221+
<Badge variant="outline" className="px-1.5 py-0 font-mono">
222+
{node.id}
223+
</Badge>
183224
</div>
184225
)}
185226

186227
{/* Node Type */}
187228
{node.metadata.type && (
188229
<div className="space-y-1">
189230
<div className="text-xs font-medium text-muted-foreground">Node Type</div>
190-
<div className="text-xs text-muted-foreground">{node.metadata.type}</div>
231+
<Badge variant="outline" className="px-1.5 py-0 font-mono">{node.metadata.type}</Badge>
191232
</div>
192233
)}
193234

@@ -196,27 +237,21 @@ export function NodeDocTooltipContent({
196237
<div className="space-y-2">
197238
<div className="text-xs font-medium text-muted-foreground">Category</div>
198239
{/* badge and description on separate rows */}
240+
241+
<Badge variant="outline" className="px-1.5 py-0 font-mono">
242+
{node.metadata.category}
243+
</Badge>
199244
<div className="flex flex-col gap-1">
200-
<Badge variant="secondary" className="text-[10px] px-1.5 py-0 w-fit">
201-
{node.metadata.category}
202-
</Badge>
203-
<div className="text-xs text-muted-foreground">
245+
<div
246+
className="text-xs text-muted-foreground border-l-2 pl-2"
247+
style={{ borderColor: style.primary }}
248+
>
204249
{categoryMetadata.description}
205250
</div>
206251
</div>
207252
</div>
208253
)}
209254

210-
{/* Description */}
211-
{node.metadata.description && (
212-
<div className="space-y-1">
213-
<div className="text-xs font-medium text-muted-foreground">Description</div>
214-
<div className="text-xs text-muted-foreground">
215-
{formatDescription(node.metadata.description)}
216-
</div>
217-
</div>
218-
)}
219-
220255
{/* Ports Section - Collapsible */}
221256
{(inputs.length > 0 || passthroughs.length > 0 || outputs.length > 0 || systemPorts.length > 0) && (
222257
<div className="border rounded-md">

apps/chaingraph-frontend/src/components/flow/nodes/ChaingraphNode/ports/doc/PortDocContent.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import type {
2222

2323
import { ChevronDown, ChevronRight, Copy } from 'lucide-react'
2424
import React, { useEffect, useRef, useState } from 'react'
25+
import Markdown from 'react-markdown'
26+
import remarkGfm from 'remark-gfm'
2527
import { formatValue } from '@/components/flow/nodes/ChaingraphNode/ports/doc/formatValue'
2628
import { useTheme } from '@/components/theme'
2729
import { Badge, Button, Collapsible, CollapsibleContent, CollapsibleTrigger, ScrollArea } from '@/components/ui'
@@ -169,10 +171,28 @@ export function PortDocContent<C extends IPortConfig>({
169171
{/* Description */}
170172
{config.description && (
171173
<div
172-
className="space-y-1 text-xs text-muted-foreground whitespace-pre-wrap border-l-2 pl-2"
174+
className="space-y-1 text-xs text-muted-foreground border-l-2 pl-2"
173175
style={{ borderColor: portColor.circleColor }}
174176
>
175-
{formatDescriptionWithBreaks(config.description)}
177+
<div className="prose prose-xs dark:prose-invert max-w-none">
178+
<Markdown
179+
remarkPlugins={[remarkGfm]}
180+
components={{
181+
p: ({ children }) => <p className="my-1 leading-relaxed">{children}</p>,
182+
ul: ({ children }) => <ul className="my-1 ml-4 list-disc">{children}</ul>,
183+
ol: ({ children }) => <ol className="my-1 ml-4 list-decimal">{children}</ol>,
184+
li: ({ children }) => <li className="my-0.5">{children}</li>,
185+
h1: ({ children }) => <h1 className="text-sm font-semibold my-1">{children}</h1>,
186+
h2: ({ children }) => <h2 className="text-xs font-semibold my-1">{children}</h2>,
187+
h3: ({ children }) => <h3 className="text-xs font-medium my-1">{children}</h3>,
188+
code: ({ children }) => <code className="px-1 py-0.5 rounded bg-muted text-[10px]">{children}</code>,
189+
pre: ({ children }) => <pre className="my-1 p-2 rounded bg-muted overflow-x-auto">{children}</pre>,
190+
}}
191+
>
192+
{config.description}
193+
</Markdown>
194+
</div>
195+
{/* {formatDescriptionWithBreaks(config.description)} */}
176196
</div>
177197
)}
178198

0 commit comments

Comments
 (0)