MCPcopy Create free account
hub / github.com/tiann/hapi / toSessionSummary

Function toSessionSummary

shared/src/sessionSummary.ts:56–96  ·  view source on GitHub ↗
(session: Session)

Source from the content-addressed store, hash-verified

54}
55
56export function toSessionSummary(session: Session): SessionSummary {
57 const pendingRequestsCount = session.agentState?.requests ? Object.keys(session.agentState.requests).length : 0
58
59 const metadata: SessionSummaryMetadata | null = session.metadata ? {
60 name: session.metadata.name,
61 path: session.metadata.path,
62 machineId: session.metadata.machineId ?? undefined,
63 summary: session.metadata.summary ? { text: session.metadata.summary.text } : undefined,
64 flavor: session.metadata.flavor ?? null,
65 worktree: session.metadata.worktree,
66 agentSessionId: session.metadata.codexSessionId
67 ?? session.metadata.claudeSessionId
68 ?? session.metadata.geminiSessionId
69 ?? session.metadata.opencodeSessionId
70 ?? session.metadata.cursorSessionId
71 ?? session.metadata.kimiSessionId
72 ?? undefined,
73 lifecycleState: session.metadata.lifecycleState
74 } : null
75
76 const todoProgress = session.todos?.length ? {
77 completed: session.todos.filter(t => t.status === 'completed').length,
78 total: session.todos.length
79 } : null
80
81 return {
82 id: session.id,
83 active: session.active,
84 thinking: session.thinking,
85 activeAt: session.activeAt,
86 updatedAt: session.updatedAt,
87 metadata,
88 todoProgress,
89 pendingRequestsCount,
90 pendingRequestKinds: getPendingRequestKinds(session),
91 backgroundTaskCount: session.backgroundTaskCount ?? 0,
92 futureScheduledMessageCount: 0,
93 model: session.model,
94 effort: session.effort
95 }
96}

Callers 4

createSessionsRoutesFunction · 0.85
upsertSessionSummaryFunction · 0.85

Calls 1

getPendingRequestKindsFunction · 0.85

Tested by

no test coverage detected