@@ -96,13 +96,21 @@ const session = await client.build('Build a weather dashboard', {
9696
9797### ` client.connect(agentId) `
9898
99- Connect to an existing app session.
99+ Connect to an existing app session. State is automatically restored from the agent, including:
100+ - Phase timeline with completion status
101+ - Generated files
102+ - Agent metadata (query, projectName, behaviorType, etc.)
100103
101104``` ts
102105const session = await client .connect (' agent-id-here' , {
103106 credentials: { ... }, // Optional
104107});
105108await session .connect ();
109+
110+ // State is now seeded from the agent
111+ console .log (' Original query:' , session .state .get ().query );
112+ console .log (' Phases:' , session .phases .list ());
113+ console .log (' Files:' , session .files .listPaths ());
106114```
107115
108116## App Management
@@ -215,6 +223,53 @@ const snapshot = session.files.snapshot(); // { 'src/App.tsx': '...', ... }
215223const tree = session .files .tree (); // Nested file tree structure
216224```
217225
226+ ### Phase Timeline
227+
228+ Access the full phase timeline for phasic builds. The timeline is automatically seeded when connecting to an existing agent and updated as phases progress.
229+
230+ ``` ts
231+ // Get all phases
232+ const phases = session .phases .list ();
233+ // [{ id: 'phase-0', name: 'Core Setup', status: 'completed', files: [...] }, ...]
234+
235+ // Get current active phase
236+ const current = session .phases .current ();
237+ if (current ) {
238+ console .log (` Working on: ${current .name } ` );
239+ console .log (` Status: ${current .status } ` ); // 'generating' | 'implementing' | 'validating'
240+ }
241+
242+ // Get completed phases
243+ const done = session .phases .completed ();
244+ console .log (` Progress: ${done .length }/${session .phases .count ()} ` );
245+
246+ // Check if all phases are done
247+ if (session .phases .allCompleted ()) {
248+ console .log (' Build complete!' );
249+ }
250+
251+ // Get phase by ID
252+ const phase = session .phases .get (' phase-0' );
253+ ```
254+
255+ Each phase contains:
256+
257+ ``` ts
258+ type PhaseInfo = {
259+ id: string ; // 'phase-0', 'phase-1', etc.
260+ name: string ; // 'Core Setup', 'Authentication', etc.
261+ description: string ; // What the phase accomplishes
262+ status: PhaseStatus ; // 'pending' | 'generating' | 'implementing' | 'validating' | 'completed' | 'cancelled'
263+ files: PhaseFile []; // Files in this phase
264+ };
265+
266+ type PhaseFile = {
267+ path: string ; // 'src/App.tsx'
268+ purpose: string ; // 'Main application component'
269+ status: PhaseFileStatus ; // 'pending' | 'generating' | 'completed' | 'cancelled'
270+ };
271+ ```
272+
218273### State
219274
220275``` ts
@@ -226,6 +281,16 @@ console.log(state.phase); // { status: 'idle' | 'generating' | ... }
226281console .log (state .preview ); // Preview deployment state
227282console .log (state .cloudflare ); // Cloudflare deployment state
228283
284+ // Phase timeline (array of all phases)
285+ console .log (state .phases ); // [{ id, name, status, files }, ...]
286+
287+ // Agent metadata (seeded from agent_connected)
288+ console .log (state .behaviorType ); // 'phasic' | 'agentic'
289+ console .log (state .projectType ); // 'app' | 'workflow' | etc.
290+ console .log (state .query ); // Original user prompt
291+ console .log (state .projectName ); // Project name from blueprint
292+ console .log (state .shouldBeGenerating ); // Whether agent is actively generating
293+
229294// Subscribe to changes
230295session .state .onChange ((next , prev ) => {
231296 console .log (' State changed:' , next );
@@ -324,10 +389,22 @@ All types are exported:
324389
325390``` ts
326391import type {
392+ // Client & Session
327393 VibeClientOptions ,
328394 BuildOptions ,
329395 BuildSession ,
330396 SessionState ,
397+ SessionFiles ,
398+ SessionPhases ,
399+
400+ // Phase Timeline
401+ PhaseInfo ,
402+ PhaseFile ,
403+ PhaseStatus ,
404+ PhaseFileStatus ,
405+ PhaseEventType ,
406+
407+ // API
331408 ApiResponse ,
332409 AppDetails ,
333410 Credentials ,
0 commit comments