feat: conversational branching, AI markers, TaskLane improvements, collapsible sidebar #120

Merged
chihlasm merged 58 commits from feat/conversational-branching into main 2026-03-27 13:16:44 +00:00
4 changed files with 10 additions and 8 deletions
Showing only changes of commit c8778bb4e7 - Show all commits

View File

@@ -32,8 +32,8 @@ export const branchesApi = {
reason?: string
): Promise<void> {
await apiClient.patch(
`/ai-sessions/${sessionId}/branches/${branchId}/status`,
{ status, reason }
`/ai-sessions/${sessionId}/branches/${branchId}`,
{ status, status_reason: reason }
)
},

View File

@@ -21,15 +21,15 @@ export const handoffsApi = {
return response.data
},
async claimHandoff(handoffId: string): Promise<HandoffResponse> {
async claimHandoff(sessionId: string, handoffId: string): Promise<HandoffResponse> {
const response = await apiClient.post<HandoffResponse>(
`/handoffs/${handoffId}/claim`
`/ai-sessions/${sessionId}/handoffs/${handoffId}/claim`
)
return response.data
},
async getQueue(params?: { intent?: 'park' | 'escalate'; limit?: number }): Promise<QueueItemResponse[]> {
const response = await apiClient.get<QueueItemResponse[]>('/handoffs/queue', {
const response = await apiClient.get<QueueItemResponse[]>('/ai-sessions/queue', {
params,
})
return response.data

View File

@@ -9,7 +9,7 @@ import type {
export const resolutionsApi = {
async getOutputs(sessionId: string): Promise<AllResolutionOutputsResponse> {
const response = await apiClient.get<AllResolutionOutputsResponse>(
`/ai-sessions/${sessionId}/resolution-outputs`
`/ai-sessions/${sessionId}/outputs`
)
return response.data
},
@@ -20,7 +20,7 @@ export const resolutionsApi = {
data: ResolutionOutputEditRequest
): Promise<ResolutionOutputResponse> {
const response = await apiClient.patch<ResolutionOutputResponse>(
`/ai-sessions/${sessionId}/resolution-outputs/${outputId}`,
`/ai-sessions/${sessionId}/outputs/${outputId}`,
data
)
return response.data
@@ -32,7 +32,7 @@ export const resolutionsApi = {
data: ResolutionOutputPushRequest
): Promise<ResolutionOutputResponse> {
const response = await apiClient.post<ResolutionOutputResponse>(
`/ai-sessions/${sessionId}/resolution-outputs/${outputId}/push`,
`/ai-sessions/${sessionId}/outputs/${outputId}/push`,
data
)
return response.data

View File

@@ -55,6 +55,7 @@ const ReviewQueuePage = lazyWithRetry(() => import('@/pages/ReviewQueuePage'))
const FlowPilotAnalyticsPage = lazyWithRetry(() => import('@/pages/FlowPilotAnalyticsPage'))
const ScriptBuilderPage = lazyWithRetry(() => import('@/pages/ScriptBuilderPage'))
const KBAcceleratorPage = lazyWithRetry(() => import('@/pages/KBAcceleratorPage'))
const SessionQueuePage = lazyWithRetry(() => import('@/pages/SessionQueuePage'))
const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage'))
const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage'))
const AccountSettingsPage = lazyWithRetry(() => import('@/pages/AccountSettingsPage'))
@@ -200,6 +201,7 @@ export const router = sentryCreateBrowserRouter([
{ path: 'pilot', element: page(FlowPilotSessionPage) },
{ path: 'pilot/:sessionId', element: page(FlowPilotSessionPage) },
{ path: 'escalations', element: page(EscalationQueuePage) },
{ path: 'queue', element: page(SessionQueuePage) },
{ path: 'review-queue', element: page(ReviewQueuePage) },
{ path: 'analytics/flowpilot', element: page(FlowPilotAnalyticsPage) },
{ path: 'guides', element: page(GuidesHubPage) },