11/**
22 * Starter tracks for the dashboard welcome flow. Each track maps a creative
3- * modality to a real three-node starter graph (String -> model node ->
4- * Preview) that is dropped onto the canvas when the user picks it.
5- *
6- * Node type strings, input handles, and output handles are the canonical
7- * `nodetool.*` node identifiers (see packages/dsl/src/generated). The model
8- * field on each model node is filled with the user's default model at
9- * creation time via applyDefaultModels — these tracks intentionally do not
10- * hardcode a provider.
3+ * modality to a chat tab: picking one opens a new conversation in that
4+ * modality's composer mode with the example prompt already typed, so the
5+ * user's first action is pressing send.
116 */
127import type { OnboardingCapability } from "../../stores/ProviderOnboardingStore" ;
8+ import type { MediaMode } from "../../stores/MediaGenerationStore" ;
139
1410export type WelcomeTrackId = "image" | "video" | "audio" | "agent" ;
1511
@@ -19,88 +15,71 @@ export interface WelcomeTrack {
1915 label : string ;
2016 /** One-line description under the title. */
2117 blurb : string ;
22- /** Short node-type label shown as a mono chip on the card. */
23- nodeLabel : string ;
18+ /** Short mode label shown as a mono chip on the card. */
19+ modeLabel : string ;
2420 /** Modality accent color used for the card icon tint. */
2521 accent : string ;
26- /** Name given to the created workflow . */
27- workflowName : string ;
28- /** Example prompt pre-filled into the String node . */
22+ /** Title given to the chat tab this track opens . */
23+ threadTitle : string ;
24+ /** Example prompt pre-filled into the composer . */
2925 samplePrompt : string ;
30- /** Node type of the model node wired after the String. */
31- modelType : string ;
32- /** Input handle on the model node that receives the prompt String. */
33- promptInput : string ;
34- /** Output handle on the model node that feeds the Preview. */
35- outputHandle : string ;
26+ /** Composer mode the chat opens in. */
27+ chatMode : MediaMode ;
3628 /**
37- * What a provider must be able to do for this track's model node to run .
29+ * What a provider must be able to do for this track's first send to work .
3830 * Narrows provider onboarding to the ones that unblock the track the user
3931 * just picked.
4032 */
4133 capability : OnboardingCapability ;
4234}
4335
44- export {
45- STRING_NODE_TYPE ,
46- PREVIEW_NODE_TYPE
47- } from "../../constants/nodeTypes" ;
48-
4936export const WELCOME_TRACKS : WelcomeTrack [ ] = [
5037 {
5138 id : "image" ,
5239 label : "Image" ,
5340 blurb : "A still frame from a prompt." ,
54- nodeLabel : "TextToImage " ,
41+ modeLabel : "image " ,
5542 accent : "#9F7AEA" ,
56- workflowName : "Image starter " ,
43+ threadTitle : "Image" ,
5744 samplePrompt :
5845 "a brutalist concrete pavilion at dusk, fog rolling in low, single warm light from inside, photograph, medium format" ,
59- modelType : "nodetool.image.TextToImage" ,
60- promptInput : "prompt" ,
61- outputHandle : "output" ,
46+ chatMode : "image" ,
6247 capability : "text_to_image"
6348 } ,
6449 {
6550 id : "video" ,
6651 label : "Video" ,
6752 blurb : "A short clip from a prompt." ,
68- nodeLabel : "TextToVideo " ,
53+ modeLabel : "video " ,
6954 accent : "#F472B6" ,
70- workflowName : "Video starter " ,
55+ threadTitle : "Video" ,
7156 samplePrompt :
7257 "slow dolly through an empty library at golden hour, dust in the air, 24fps, cinematic" ,
73- modelType : "nodetool.video.TextToVideo" ,
74- capability : "text_to_video" ,
75- promptInput : "prompt" ,
76- outputHandle : "output"
58+ chatMode : "video" ,
59+ capability : "text_to_video"
7760 } ,
7861 {
7962 id : "audio" ,
8063 label : "Audio" ,
8164 blurb : "A spoken line or sound texture." ,
82- nodeLabel : "TextToSpeech " ,
65+ modeLabel : "audio " ,
8366 accent : "#FBBF24" ,
84- workflowName : "Audio starter " ,
67+ threadTitle : "Audio" ,
8568 samplePrompt :
8669 "a calm narrator: you are listening to nodetool. every model, your keys, your canvas." ,
87- modelType : "nodetool.audio.TextToSpeech" ,
88- capability : "text_to_speech" ,
89- promptInput : "text" ,
90- outputHandle : "audio"
70+ chatMode : "audio" ,
71+ capability : "text_to_speech"
9172 } ,
9273 {
9374 id : "agent" ,
9475 label : "Text · Agent" ,
9576 blurb : "A reasoning step or written output." ,
96- nodeLabel : "Agent " ,
77+ modeLabel : "chat " ,
9778 accent : "#60A5FA" ,
98- workflowName : "Agent starter " ,
79+ threadTitle : "Chat " ,
9980 samplePrompt :
10081 "draft a 4-line tagline for a creative tool that runs every AI model locally or in the cloud, no hype words" ,
101- modelType : "nodetool.agents.Agent" ,
102- capability : "generate_message" ,
103- promptInput : "prompt" ,
104- outputHandle : "text"
82+ chatMode : "chat" ,
83+ capability : "generate_message"
10584 }
10685] ;
0 commit comments