feat(feedback): 新增用户反馈提交、分页列表与语音描述
支持 Bug/需求提交、截图与聊天同款语音输入,全站反馈分页浏览与详情页,并从聊天与空间页提供入口。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+75
-4
@@ -107,20 +107,41 @@ export type SessionEvent =
|
||||
| { type: 'Ping' }
|
||||
| { type: 'ActiveRequests'; request_ids: string[] };
|
||||
|
||||
export type Session = {
|
||||
export type SessionSummary = {
|
||||
id: string;
|
||||
name: string;
|
||||
working_dir: string;
|
||||
message_count: number;
|
||||
created_at?: string;
|
||||
updated_at?: string;
|
||||
user_set_name?: boolean;
|
||||
recipe?: { title?: string | null } | null;
|
||||
};
|
||||
|
||||
export type Session = SessionSummary & {
|
||||
working_dir: string;
|
||||
conversation?: Message[] | null;
|
||||
conversation_page?: SessionConversationPage;
|
||||
};
|
||||
|
||||
export type SessionListPage = {
|
||||
total?: number;
|
||||
offset?: number;
|
||||
limit?: number;
|
||||
has_more?: boolean;
|
||||
query?: string;
|
||||
};
|
||||
|
||||
export type SessionConversationPage = {
|
||||
total?: number;
|
||||
before?: number;
|
||||
limit?: number;
|
||||
returned?: number;
|
||||
has_more_before?: boolean;
|
||||
};
|
||||
|
||||
export type SessionListResponse = {
|
||||
sessions: Session[];
|
||||
sessions: SessionSummary[];
|
||||
page?: SessionListPage;
|
||||
};
|
||||
|
||||
export type HarnessBootstrapResponse = {
|
||||
@@ -129,6 +150,14 @@ export type HarnessBootstrapResponse = {
|
||||
refreshed: boolean;
|
||||
};
|
||||
|
||||
export type UserMemorySyncResponse = {
|
||||
ok: true;
|
||||
analyzed: number;
|
||||
memories: number;
|
||||
totalMemories: number;
|
||||
syncedToSession: boolean;
|
||||
};
|
||||
|
||||
export type ChatState = 'idle' | 'loading' | 'connecting' | 'streaming' | 'waiting' | 'error';
|
||||
|
||||
export type ToolConfirmation = {
|
||||
@@ -232,6 +261,47 @@ export type PortalUser = {
|
||||
publishSkillName?: string;
|
||||
};
|
||||
|
||||
export type FeedbackSubmissionType = 'bug' | 'feature' | 'other';
|
||||
|
||||
export type FeedbackImageInput = {
|
||||
filename: string;
|
||||
mimeType: string;
|
||||
dataBase64: string;
|
||||
};
|
||||
|
||||
export type FeedbackContextInput = {
|
||||
pageUrl?: string;
|
||||
pagePath?: string;
|
||||
userAgent?: string;
|
||||
viewport?: string;
|
||||
sessionId?: string;
|
||||
appVersion?: string;
|
||||
};
|
||||
|
||||
export type FeedbackSubmission = {
|
||||
id: string;
|
||||
userId?: string;
|
||||
type: FeedbackSubmissionType;
|
||||
title: string;
|
||||
description?: string;
|
||||
contact?: string | null;
|
||||
status: 'pending' | 'reviewing' | 'resolved' | 'closed';
|
||||
images?: FeedbackImageInput[];
|
||||
imageCount?: number;
|
||||
context?: FeedbackContextInput;
|
||||
submitterDisplayName?: string | null;
|
||||
createdAt: number;
|
||||
updatedAt?: number;
|
||||
};
|
||||
|
||||
export type FeedbackBoardPage = {
|
||||
items: FeedbackSubmission[];
|
||||
page: number;
|
||||
pageSize: number;
|
||||
total: number;
|
||||
totalPages: number;
|
||||
};
|
||||
|
||||
export type MindSpaceQuota = {
|
||||
quotaBytes: number;
|
||||
usedBytes: number;
|
||||
@@ -629,7 +699,8 @@ export type PolicyDefinition = {
|
||||
|
||||
export type AuthStatus = {
|
||||
authenticated: boolean;
|
||||
mode?: 'user' | 'legacy' | 'none';
|
||||
mode?: 'user' | 'legacy' | 'none' | 'unavailable';
|
||||
message?: string;
|
||||
user?: PortalUser | null;
|
||||
capabilities?: CapabilityMap;
|
||||
grantedSkills?: string[];
|
||||
|
||||
Reference in New Issue
Block a user