Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ca36da6
feat(ai-studio): auto-load flagship template and add first-visit disc…
librowski-synergy Jun 24, 2026
3159c7c
chore(execution-worker): default to gemini-2.5-flash-lite for the demo
librowski-synergy Jun 24, 2026
3b99903
feat(backend): gate workflow execution with rate limit and Turnstile
librowski-synergy Jun 24, 2026
94bf93c
feat(ai-studio): attach Turnstile token to workflow execution
librowski-synergy Jun 24, 2026
ed092ae
feat(ai-studio): add AI Debate, Content Repurposer and Meeting Notes …
librowski-synergy Jun 24, 2026
f0de62c
refactor(ai-studio): rename markdown-preview node to visualize
librowski-synergy Jun 24, 2026
146e869
feat(ai-studio): detect output format for visualize
librowski-synergy Jun 24, 2026
280ddbf
feat(ai-studio): add mode param to visualize node
librowski-synergy Jun 24, 2026
09d2f97
feat(ai-studio): json/table/text/stat-card renderers for visualize
librowski-synergy Jun 24, 2026
3336ee4
feat(ai-studio): always-on visualize card with empty state
librowski-synergy Jun 24, 2026
8de7681
feat(ai-studio): chart renderer (recharts) for visualize
librowski-synergy Jun 24, 2026
bfadb9a
feat(ai-studio): mermaid diagram renderer for visualize
librowski-synergy Jun 24, 2026
ae3172b
feat(ai-studio): export visualize output (png/svg/copy)
librowski-synergy Jun 24, 2026
b02c8db
feat(ai-studio): expand visualize to fullscreen modal
librowski-synergy Jun 24, 2026
86e1066
docs(ai-studio): finalize visualize backlog and refresh getRenderer c…
librowski-synergy Jun 24, 2026
922e097
feat(ai-studio): render visualize output inside the node body
librowski-synergy Jun 24, 2026
74a3b99
fix(ai-studio): stop mermaid error graphics on non-diagram input
librowski-synergy Jun 25, 2026
cdea259
feat(ai-studio): render embedded mermaid/json blocks in visualize
librowski-synergy Jun 25, 2026
61a6ef7
feat(ai-studio): AI adapt - LLM-convert output to the chosen format
librowski-synergy Jun 25, 2026
a1c90dc
feat(ai-studio): add aiAdapt toggle to visualize node config
librowski-synergy Jun 25, 2026
6096957
feat(backend): stronger visualize adapt prompts for better conversion
librowski-synergy Jun 25, 2026
0696830
feat(ai-studio): render markdown in table cells and stat-card values
librowski-synergy Jun 25, 2026
d459fa3
fix(ai-studio): execution-panel dark-mode contrast, modal heading, vi…
librowski-synergy Jun 25, 2026
79fe764
feat(ai-studio): linked CDN logo with theme-aware variants
librowski-synergy Jun 25, 2026
3371322
fix(ai-studio): keep app-bar Save button clear of the logo overlay
librowski-synergy Jun 25, 2026
2bcadf7
feat(ai-studio): add Visualize node to AI Debate template
librowski-synergy Jun 25, 2026
40be8e4
feat(ai-studio): add Visualize node to Meeting Notes template
librowski-synergy Jun 25, 2026
2c984c1
feat(ai-studio): converge Content Repurposer into a Visualize node
librowski-synergy Jun 25, 2026
0aa522c
refactor(ai-studio): drop dead code and unused exports
librowski-synergy Jun 25, 2026
9fb6c0d
chore(ai-studio): drop internal planning docs from the PR
librowski-synergy Jun 25, 2026
5eb143c
fix(ai-studio): declare ai-agent output so node mentions resolve
librowski-synergy Jun 25, 2026
3f3ead8
feat(ai-studio): web search tool for AI Agent nodes (Tavily)
librowski-synergy Jun 25, 2026
c661361
feat(ai-studio): add Market Research template using web search
librowski-synergy Jun 25, 2026
6224624
feat(ai-studio): always AI-adapt visualize output, drop the toggle
librowski-synergy Jun 30, 2026
db6c6c8
refactor(ai-studio): remove the Error Policy feature entirely
librowski-synergy Jul 1, 2026
4170186
feat(ai-studio): default the demo to English
librowski-synergy Jul 1, 2026
e45054a
refactor(ai-studio): trim narration comments to a self-explanatory mi…
librowski-synergy Jul 1, 2026
40a7188
feat(ai-studio): tidy node + form UI via SDK CSS overrides
librowski-synergy Jul 1, 2026
367920e
feat(ai-studio): add undo/redo
librowski-synergy Jul 1, 2026
9597f0f
fix(ai-studio): make execution node highlight solid across all statuses
librowski-synergy Jul 1, 2026
763b2be
feat(ai-studio): center execution log, drop the node-detail popup
librowski-synergy Jul 1, 2026
a85cabe
fix(ai-studio): flag opens the log; node selection highlights its entry
librowski-synergy Jul 1, 2026
2f8e625
fix(ai-studio): center the icon inside node execution markers
librowski-synergy Jul 1, 2026
8b5de2a
refactor(backend): drop the in-house execute rate limit
librowski-synergy Jul 2, 2026
3b018ff
fix(ai-studio): drop the English pin, let the locale reflect reality
librowski-synergy Jul 2, 2026
0493589
refactor(ai-studio): derive log highlight from canvas selection
librowski-synergy Jul 2, 2026
019c938
fix(ai-studio): cancel stale visualize adaptations, drop the chart chip
librowski-synergy Jul 2, 2026
91a5957
fix(ai-studio): one undo per keypress, keep native text-field undo
librowski-synergy Jul 2, 2026
f056b32
refactor(ai-studio): bundle the brand logo locally instead of the CDN
librowski-synergy Jul 2, 2026
93017b5
refactor(ai-studio): trim template noise and close latent races
librowski-synergy Jul 2, 2026
1f3d047
docs(ai-studio): branch-gap override is app styling, not a pending SD…
librowski-synergy Jul 2, 2026
7c368c4
refactor(ai-studio): drop overrides superseded by SDK fixes
librowski-synergy Jul 2, 2026
890589c
docs(ai-studio): drop a narration comment from the app bootstrap
librowski-synergy Jul 2, 2026
5cf69ab
refactor(ai-studio): drop the branch-gap override
librowski-synergy Jul 2, 2026
8cb9753
refactor(ai-studio): pass the brand logo through the SDK props
librowski-synergy Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions apps/ai-studio/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Base URL of the reference backend the demo talks to.
VITE_BACKEND_URL=http://127.0.0.1:3001
# Cloudflare Turnstile site key (public). Leave empty to run the demo without
# bot protection (local dev). When set, the Run button attaches a Turnstile
# token that the backend verifies before executing a workflow.
VITE_TURNSTILE_SITE_KEY=
6 changes: 6 additions & 0 deletions apps/ai-studio/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@
"@workflow-builder/types": "workspace:*",
"@xyflow/react": "catalog:",
"clsx": "^2.1.1",
"html-to-image": "1.11.11",
"immer": "^10.1.1",
"mermaid": "^11.15.0",
"react": "^19.1.0",
"react-dom": "catalog:",
"react-i18next": "^15.4.1",
"react-markdown": "^10.1.0",
"recharts": "^3.9.0",
"remark-gfm": "^4.0.1",
"zustand": "^5.0.1"
},
"devDependencies": {
Expand Down
20 changes: 16 additions & 4 deletions apps/ai-studio/src/app/app.tsx
Original file line number Diff line number Diff line change
@@ -1,28 +1,40 @@
import { WorkflowBuilder } from '@workflowbuilder/sdk';

import './node-overrides.css';
import '@workflowbuilder/sdk/style.css';

import logoDark from '../assets/workflow-builder-logo-white.svg';
import logoLight from '../assets/workflow-builder-logo.svg';
import { AiStudioControls } from '../components/controls/ai-studio-controls';
import { DisclaimerModal } from '../components/disclaimer/disclaimer-modal';
import { ExecutionHighlighting } from '../components/execution/highlighting';
import { ExecutionLogPanel } from '../components/execution/log-panel';
import { ExecutionNodeDetail } from '../components/execution/node-detail';
import { aiStudioTemplates } from '../data/ai-studio-templates';
import { aiStudioNodeTypes } from '../data/node-types';
import { supportTriageFlow } from '../data/support-triage-flow';
import { plugin as aiStudioFeaturesPlugin } from '../plugin';
import { plugin as undoRedoPlugin } from '../plugins/undo-redo/plugin-exports';

const flagship = supportTriageFlow.value;

export function App() {
return (
<WorkflowBuilder.Root
name="ai-studio"
name={flagship.name}
logo={{ light: logoLight, dark: logoDark }}
logoHref="https://workflowbuilder.io"
layoutDirection={flagship.layoutDirection}
initialNodes={flagship.diagram.nodes}
initialEdges={flagship.diagram.edges}
nodeTypes={aiStudioNodeTypes}
diagramTemplates={aiStudioTemplates}
plugins={[aiStudioFeaturesPlugin]}
plugins={[aiStudioFeaturesPlugin, undoRedoPlugin]}
>
<WorkflowBuilder.DefaultLayout />
<AiStudioControls />
<ExecutionLogPanel />
<ExecutionNodeDetail />
<ExecutionHighlighting />
<DisclaimerModal />
</WorkflowBuilder.Root>
);
}
3 changes: 3 additions & 0 deletions apps/ai-studio/src/app/node-overrides.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[class^='_json-form-container_'] textarea {
font-family: ui-monospace, monospace;
}
18 changes: 18 additions & 0 deletions apps/ai-studio/src/assets/workflow-builder-logo-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading