@kortix/sdk 0.10.16 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -2
- package/dist/browser/session-sync/session-sync-registry.d.ts +3 -0
- package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
- package/dist/browser/session-sync/session-sync-registry.js +31 -2
- package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
- package/dist/core/acp/client.d.ts +45 -0
- package/dist/core/acp/client.d.ts.map +1 -0
- package/dist/core/acp/client.js +277 -0
- package/dist/core/acp/client.js.map +1 -0
- package/dist/core/acp/index.d.ts +5 -0
- package/dist/core/acp/index.d.ts.map +1 -0
- package/dist/core/acp/index.js +5 -0
- package/dist/core/acp/index.js.map +1 -0
- package/dist/core/acp/projection.d.ts +23 -0
- package/dist/core/acp/projection.d.ts.map +1 -0
- package/dist/core/acp/projection.js +603 -0
- package/dist/core/acp/projection.js.map +1 -0
- package/dist/core/acp/session-controller.d.ts +90 -0
- package/dist/core/acp/session-controller.d.ts.map +1 -0
- package/dist/core/acp/session-controller.js +530 -0
- package/dist/core/acp/session-controller.js.map +1 -0
- package/dist/core/acp/types.d.ts +66 -0
- package/dist/core/acp/types.d.ts.map +1 -0
- package/dist/core/acp/types.js +21 -0
- package/dist/core/acp/types.js.map +1 -0
- package/dist/core/client/kortix.d.ts +141 -14
- package/dist/core/client/kortix.d.ts.map +1 -1
- package/dist/core/client/kortix.js +40 -7
- package/dist/core/client/kortix.js.map +1 -1
- package/dist/core/http/api-client.d.ts.map +1 -1
- package/dist/core/http/api-client.js +48 -68
- package/dist/core/http/api-client.js.map +1 -1
- package/dist/core/rest/platform-client/host-boundary.d.ts +114 -0
- package/dist/core/rest/platform-client/host-boundary.d.ts.map +1 -0
- package/dist/core/rest/platform-client/host-boundary.js +229 -0
- package/dist/core/rest/platform-client/host-boundary.js.map +1 -0
- package/dist/core/rest/platform-client/index.d.ts +1 -0
- package/dist/core/rest/platform-client/index.d.ts.map +1 -1
- package/dist/core/rest/platform-client/index.js +1 -0
- package/dist/core/rest/platform-client/index.js.map +1 -1
- package/dist/core/rest/projects-client/account-lifecycle.d.ts +22 -0
- package/dist/core/rest/projects-client/account-lifecycle.d.ts.map +1 -0
- package/dist/core/rest/projects-client/account-lifecycle.js +26 -0
- package/dist/core/rest/projects-client/account-lifecycle.js.map +1 -0
- package/dist/core/rest/projects-client/admin-providers.d.ts +10 -0
- package/dist/core/rest/projects-client/admin-providers.d.ts.map +1 -0
- package/dist/core/rest/projects-client/admin-providers.js +34 -0
- package/dist/core/rest/projects-client/admin-providers.js.map +1 -0
- package/dist/core/rest/projects-client/agent-config.d.ts +7 -0
- package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
- package/dist/core/rest/projects-client/agent-config.js.map +1 -1
- package/dist/core/rest/projects-client/billing.d.ts +89 -0
- package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
- package/dist/core/rest/projects-client/billing.js +43 -0
- package/dist/core/rest/projects-client/billing.js.map +1 -1
- package/dist/core/rest/projects-client/channels.d.ts +8 -27
- package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
- package/dist/core/rest/projects-client/channels.js +12 -23
- package/dist/core/rest/projects-client/channels.js.map +1 -1
- package/dist/core/rest/projects-client/connectors.d.ts +162 -13
- package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
- package/dist/core/rest/projects-client/connectors.js +64 -2
- package/dist/core/rest/projects-client/connectors.js.map +1 -1
- package/dist/core/rest/projects-client/gateway.d.ts +1 -0
- package/dist/core/rest/projects-client/gateway.d.ts.map +1 -1
- package/dist/core/rest/projects-client/gateway.js.map +1 -1
- package/dist/core/rest/projects-client/iam.d.ts +492 -0
- package/dist/core/rest/projects-client/iam.d.ts.map +1 -0
- package/dist/core/rest/projects-client/iam.js +287 -0
- package/dist/core/rest/projects-client/iam.js.map +1 -0
- package/dist/core/rest/projects-client/index.d.ts +6 -0
- package/dist/core/rest/projects-client/index.d.ts.map +1 -1
- package/dist/core/rest/projects-client/index.js +6 -0
- package/dist/core/rest/projects-client/index.js.map +1 -1
- package/dist/core/rest/projects-client/marketplace-catalog.d.ts +9 -2
- package/dist/core/rest/projects-client/marketplace-catalog.d.ts.map +1 -1
- package/dist/core/rest/projects-client/marketplace-catalog.js +7 -0
- package/dist/core/rest/projects-client/marketplace-catalog.js.map +1 -1
- package/dist/core/rest/projects-client/presentations.d.ts +12 -0
- package/dist/core/rest/projects-client/presentations.d.ts.map +1 -0
- package/dist/core/rest/projects-client/presentations.js +9 -0
- package/dist/core/rest/projects-client/presentations.js.map +1 -0
- package/dist/core/rest/projects-client/projects.d.ts +55 -10
- package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
- package/dist/core/rest/projects-client/projects.js +14 -7
- package/dist/core/rest/projects-client/projects.js.map +1 -1
- package/dist/core/rest/projects-client/public-voice-join.d.ts +59 -0
- package/dist/core/rest/projects-client/public-voice-join.d.ts.map +1 -0
- package/dist/core/rest/projects-client/public-voice-join.js +64 -0
- package/dist/core/rest/projects-client/public-voice-join.js.map +1 -0
- package/dist/core/rest/projects-client/referrals.d.ts +53 -0
- package/dist/core/rest/projects-client/referrals.d.ts.map +1 -0
- package/dist/core/rest/projects-client/referrals.js +27 -0
- package/dist/core/rest/projects-client/referrals.js.map +1 -0
- package/dist/core/rest/projects-client/session-sandbox.d.ts +2 -0
- package/dist/core/rest/projects-client/session-sandbox.d.ts.map +1 -1
- package/dist/core/rest/projects-client/session-sandbox.js +10 -0
- package/dist/core/rest/projects-client/session-sandbox.js.map +1 -1
- package/dist/core/rest/projects-client/sessions.d.ts +89 -0
- package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
- package/dist/core/rest/projects-client/sessions.js +49 -1
- package/dist/core/rest/projects-client/sessions.js.map +1 -1
- package/dist/core/session/index.d.ts +2 -0
- package/dist/core/session/index.d.ts.map +1 -1
- package/dist/core/session/index.js +2 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/presentation.d.ts +12 -0
- package/dist/core/session/presentation.d.ts.map +1 -0
- package/dist/core/session/presentation.js +70 -0
- package/dist/core/session/presentation.js.map +1 -0
- package/dist/core/session/rewind.d.ts +18 -0
- package/dist/core/session/rewind.d.ts.map +1 -0
- package/dist/core/session/rewind.js +17 -0
- package/dist/core/session/rewind.js.map +1 -0
- package/dist/core/session/runtime-transport.d.ts +16 -0
- package/dist/core/session/runtime-transport.d.ts.map +1 -0
- package/dist/core/session/runtime-transport.js +30 -0
- package/dist/core/session/runtime-transport.js.map +1 -0
- package/dist/core/session/url.d.ts +43 -0
- package/dist/core/session/url.d.ts.map +1 -1
- package/dist/core/session/url.js +81 -0
- package/dist/core/session/url.js.map +1 -1
- package/dist/core/session-sync/session-sync-controller.d.ts +28 -0
- package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
- package/dist/core/session-sync/session-sync-controller.js +127 -4
- package/dist/core/session-sync/session-sync-controller.js.map +1 -1
- package/dist/core/stream/fetch-sse.d.ts +23 -0
- package/dist/core/stream/fetch-sse.d.ts.map +1 -0
- package/dist/core/stream/fetch-sse.js +119 -0
- package/dist/core/stream/fetch-sse.js.map +1 -0
- package/dist/core/turns/state.d.ts.map +1 -1
- package/dist/core/turns/state.js +11 -4
- package/dist/core/turns/state.js.map +1 -1
- package/dist/core/turns/types.d.ts +6 -0
- package/dist/core/turns/types.d.ts.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/kortix.esm.min.js +24 -16
- package/dist/kortix.global.js +24 -16
- package/dist/node/server.d.ts +14 -0
- package/dist/node/server.d.ts.map +1 -1
- package/dist/node/server.js +42 -0
- package/dist/node/server.js.map +1 -1
- package/dist/platform/auth-core.d.ts +3 -5
- package/dist/platform/auth-core.d.ts.map +1 -1
- package/dist/platform/auth-core.js +4 -6
- package/dist/platform/auth-core.js.map +1 -1
- package/dist/react/agent-selection-scope.d.ts +8 -0
- package/dist/react/agent-selection-scope.d.ts.map +1 -0
- package/dist/react/agent-selection-scope.js +4 -0
- package/dist/react/agent-selection-scope.js.map +1 -0
- package/dist/react/index.d.ts +13 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +13 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/initial-session-pin.d.ts +8 -0
- package/dist/react/initial-session-pin.d.ts.map +1 -0
- package/dist/react/initial-session-pin.js +4 -0
- package/dist/react/initial-session-pin.js.map +1 -0
- package/dist/react/opencode.d.ts +25 -2
- package/dist/react/opencode.d.ts.map +1 -1
- package/dist/react/opencode.js +24 -1
- package/dist/react/opencode.js.map +1 -1
- package/dist/react/provider-selection.d.ts +1 -0
- package/dist/react/provider-selection.d.ts.map +1 -1
- package/dist/react/provider-selection.js +22 -0
- package/dist/react/provider-selection.js.map +1 -1
- package/dist/react/run-pty-command.d.ts +5 -0
- package/dist/react/run-pty-command.d.ts.map +1 -0
- package/dist/react/run-pty-command.js +42 -0
- package/dist/react/run-pty-command.js.map +1 -0
- package/dist/react/runtime-actions.d.ts +51 -0
- package/dist/react/runtime-actions.d.ts.map +1 -0
- package/dist/react/runtime-actions.js +105 -0
- package/dist/react/runtime-actions.js.map +1 -0
- package/dist/react/session-agent-name-guard.d.ts +16 -0
- package/dist/react/session-agent-name-guard.d.ts.map +1 -0
- package/dist/react/session-agent-name-guard.js +22 -0
- package/dist/react/session-agent-name-guard.js.map +1 -0
- package/dist/react/session-busy.d.ts +8 -0
- package/dist/react/session-busy.d.ts.map +1 -0
- package/dist/react/session-busy.js +4 -0
- package/dist/react/session-busy.js.map +1 -0
- package/dist/react/session-title-sync.d.ts +19 -0
- package/dist/react/session-title-sync.d.ts.map +1 -0
- package/dist/react/session-title-sync.js +81 -0
- package/dist/react/session-title-sync.js.map +1 -0
- package/dist/react/use-acp-session-runtime.d.ts +34 -0
- package/dist/react/use-acp-session-runtime.d.ts.map +1 -0
- package/dist/react/use-acp-session-runtime.js +84 -0
- package/dist/react/use-acp-session-runtime.js.map +1 -0
- package/dist/react/use-admin-accounts.d.ts +122 -0
- package/dist/react/use-admin-accounts.d.ts.map +1 -0
- package/dist/react/use-admin-accounts.js +146 -0
- package/dist/react/use-admin-accounts.js.map +1 -0
- package/dist/react/use-admin-analytics.d.ts +332 -0
- package/dist/react/use-admin-analytics.d.ts.map +1 -0
- package/dist/react/use-admin-analytics.js +518 -0
- package/dist/react/use-admin-analytics.js.map +1 -0
- package/dist/react/use-admin-billing.d.ts +27 -0
- package/dist/react/use-admin-billing.d.ts.map +1 -0
- package/dist/react/use-admin-billing.js +61 -0
- package/dist/react/use-admin-billing.js.map +1 -0
- package/dist/react/use-admin-feedback.d.ts +119 -0
- package/dist/react/use-admin-feedback.d.ts.map +1 -0
- package/dist/react/use-admin-feedback.js +148 -0
- package/dist/react/use-admin-feedback.js.map +1 -0
- package/dist/react/use-admin-sandboxes.d.ts +157 -0
- package/dist/react/use-admin-sandboxes.d.ts.map +1 -0
- package/dist/react/use-admin-sandboxes.js +145 -0
- package/dist/react/use-admin-sandboxes.js.map +1 -0
- package/dist/react/use-admin-users.d.ts +98 -0
- package/dist/react/use-admin-users.d.ts.map +1 -0
- package/dist/react/use-admin-users.js +121 -0
- package/dist/react/use-admin-users.js.map +1 -0
- package/dist/react/use-authenticated-preview-url.d.ts +24 -0
- package/dist/react/use-authenticated-preview-url.d.ts.map +1 -0
- package/dist/react/use-authenticated-preview-url.js +137 -0
- package/dist/react/use-authenticated-preview-url.js.map +1 -0
- package/dist/react/use-canonical-opencode-session.d.ts +4 -0
- package/dist/react/use-canonical-opencode-session.d.ts.map +1 -1
- package/dist/react/use-canonical-opencode-session.js +9 -4
- package/dist/react/use-canonical-opencode-session.js.map +1 -1
- package/dist/react/use-model-defaults.d.ts +22 -0
- package/dist/react/use-model-defaults.d.ts.map +1 -0
- package/dist/react/use-model-defaults.js +104 -0
- package/dist/react/use-model-defaults.js.map +1 -0
- package/dist/react/use-model-store.d.ts.map +1 -1
- package/dist/react/use-model-store.js +11 -0
- package/dist/react/use-model-store.js.map +1 -1
- package/dist/react/use-opencode-events/index.d.ts +3 -1
- package/dist/react/use-opencode-events/index.d.ts.map +1 -1
- package/dist/react/use-opencode-events/index.js +6 -2
- package/dist/react/use-opencode-events/index.js.map +1 -1
- package/dist/react/use-opencode-local.d.ts.map +1 -1
- package/dist/react/use-opencode-local.js +10 -1
- package/dist/react/use-opencode-local.js.map +1 -1
- package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/agents.js +5 -3
- package/dist/react/use-opencode-sessions/agents.js.map +1 -1
- package/dist/react/use-opencode-sessions/commands.d.ts +7 -2
- package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/commands.js +13 -9
- package/dist/react/use-opencode-sessions/commands.js.map +1 -1
- package/dist/react/use-opencode-sessions/provider-load-plan.d.ts +6 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.d.ts.map +1 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.js +4 -0
- package/dist/react/use-opencode-sessions/provider-load-plan.js.map +1 -0
- package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/providers.js +39 -27
- package/dist/react/use-opencode-sessions/providers.js.map +1 -1
- package/dist/react/use-opencode-sessions/sessions.d.ts +1 -1
- package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -1
- package/dist/react/use-opencode-sessions/sessions.js +2 -2
- package/dist/react/use-opencode-sessions/sessions.js.map +1 -1
- package/dist/react/use-ops-overview.d.ts +64 -0
- package/dist/react/use-ops-overview.d.ts.map +1 -0
- package/dist/react/use-ops-overview.js +16 -0
- package/dist/react/use-ops-overview.js.map +1 -0
- package/dist/react/use-session-model-selection.d.ts +15 -0
- package/dist/react/use-session-model-selection.d.ts.map +1 -0
- package/dist/react/use-session-model-selection.js +27 -0
- package/dist/react/use-session-model-selection.js.map +1 -0
- package/dist/react/use-session-sync.d.ts.map +1 -1
- package/dist/react/use-session-sync.js +3 -1
- package/dist/react/use-session-sync.js.map +1 -1
- package/dist/react/use-session.d.ts +78 -4
- package/dist/react/use-session.d.ts.map +1 -1
- package/dist/react/use-session.js +329 -34
- package/dist/react/use-session.js.map +1 -1
- package/dist/react/use-system-status.d.ts +39 -0
- package/dist/react/use-system-status.d.ts.map +1 -0
- package/dist/react/use-system-status.js +68 -0
- package/dist/react/use-system-status.js.map +1 -0
- package/dist/react/use-teams-installations.d.ts +36 -0
- package/dist/react/use-teams-installations.d.ts.map +1 -0
- package/dist/react/use-teams-installations.js +94 -0
- package/dist/react/use-teams-installations.js.map +1 -0
- package/dist/react/use-tunnel.d.ts +120 -0
- package/dist/react/use-tunnel.d.ts.map +1 -0
- package/dist/react/use-tunnel.js +268 -0
- package/dist/react/use-tunnel.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export interface FeedbackWithUser {
|
|
2
|
+
feedback_id: string;
|
|
3
|
+
account_id: string;
|
|
4
|
+
user_email: string;
|
|
5
|
+
rating: number;
|
|
6
|
+
feedback_text?: string | null;
|
|
7
|
+
help_improve: boolean;
|
|
8
|
+
thread_id?: string | null;
|
|
9
|
+
message_id?: string | null;
|
|
10
|
+
context?: Record<string, any> | null;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
interface PaginationMeta {
|
|
15
|
+
current_page: number;
|
|
16
|
+
page_size: number;
|
|
17
|
+
total_items: number;
|
|
18
|
+
total_pages: number;
|
|
19
|
+
has_next: boolean;
|
|
20
|
+
has_previous: boolean;
|
|
21
|
+
next_cursor?: string | null;
|
|
22
|
+
previous_cursor?: string | null;
|
|
23
|
+
}
|
|
24
|
+
interface FeedbackListResponse {
|
|
25
|
+
data: FeedbackWithUser[];
|
|
26
|
+
pagination: PaginationMeta;
|
|
27
|
+
}
|
|
28
|
+
interface FeedbackListParams {
|
|
29
|
+
page?: number;
|
|
30
|
+
page_size?: number;
|
|
31
|
+
rating_filter?: number;
|
|
32
|
+
has_text?: boolean;
|
|
33
|
+
sort_by?: string;
|
|
34
|
+
sort_order?: 'asc' | 'desc';
|
|
35
|
+
}
|
|
36
|
+
export interface FeedbackStats {
|
|
37
|
+
total_feedback: number;
|
|
38
|
+
average_rating: number;
|
|
39
|
+
total_with_text: number;
|
|
40
|
+
rating_distribution: Record<string, number>;
|
|
41
|
+
}
|
|
42
|
+
export interface SentimentSummary {
|
|
43
|
+
total: number;
|
|
44
|
+
positive: number;
|
|
45
|
+
neutral: number;
|
|
46
|
+
negative: number;
|
|
47
|
+
five_star: number;
|
|
48
|
+
critical: number;
|
|
49
|
+
positive_percentage: number;
|
|
50
|
+
negative_percentage: number;
|
|
51
|
+
}
|
|
52
|
+
export interface TimeSeriesPoint {
|
|
53
|
+
period: string;
|
|
54
|
+
count: number;
|
|
55
|
+
avg_rating: number;
|
|
56
|
+
positive_count: number;
|
|
57
|
+
negative_count: number;
|
|
58
|
+
with_text_count: number;
|
|
59
|
+
}
|
|
60
|
+
export interface RatingTrends {
|
|
61
|
+
periods: string[];
|
|
62
|
+
data: Record<string, Record<string, number>>;
|
|
63
|
+
}
|
|
64
|
+
export interface CriticalFeedback {
|
|
65
|
+
feedback_id: string;
|
|
66
|
+
rating: number;
|
|
67
|
+
feedback_text: string;
|
|
68
|
+
created_at: string;
|
|
69
|
+
thread_id?: string | null;
|
|
70
|
+
user_email: string;
|
|
71
|
+
}
|
|
72
|
+
export interface ImprovementArea {
|
|
73
|
+
area: string;
|
|
74
|
+
severity: 'high' | 'medium' | 'low';
|
|
75
|
+
frequency: string;
|
|
76
|
+
user_quotes: string[];
|
|
77
|
+
suggested_action: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ActionableRecommendation {
|
|
80
|
+
recommendation: string;
|
|
81
|
+
priority: 'high' | 'medium' | 'low';
|
|
82
|
+
effort: 'small' | 'medium' | 'large';
|
|
83
|
+
impact: string;
|
|
84
|
+
implementation_hint: string;
|
|
85
|
+
}
|
|
86
|
+
export interface LLMAnalysisResponse {
|
|
87
|
+
analysis: string;
|
|
88
|
+
key_themes: string[];
|
|
89
|
+
improvement_areas: ImprovementArea[];
|
|
90
|
+
positive_highlights: string[];
|
|
91
|
+
actionable_recommendations: ActionableRecommendation[];
|
|
92
|
+
feedback_analyzed_count: number;
|
|
93
|
+
generated_at: string;
|
|
94
|
+
}
|
|
95
|
+
export interface LLMAnalysisRequest {
|
|
96
|
+
focus_area?: 'negative' | 'positive' | 'all' | 'critical';
|
|
97
|
+
days?: number;
|
|
98
|
+
max_feedback?: number;
|
|
99
|
+
}
|
|
100
|
+
export declare function useAdminFeedbackList(params?: FeedbackListParams): import("@tanstack/react-query").UseQueryResult<NoInfer<FeedbackListResponse>, Error>;
|
|
101
|
+
export declare function useAdminFeedbackStats(): import("@tanstack/react-query").UseQueryResult<NoInfer<FeedbackStats>, Error>;
|
|
102
|
+
export declare function useAdminSentimentSummary(): import("@tanstack/react-query").UseQueryResult<NoInfer<SentimentSummary>, Error>;
|
|
103
|
+
export declare function useAdminFeedbackTimeSeries(days?: number, granularity?: string): import("@tanstack/react-query").UseQueryResult<NoInfer<TimeSeriesPoint[]>, Error>;
|
|
104
|
+
export declare function useAdminRatingTrends(days?: number): import("@tanstack/react-query").UseQueryResult<NoInfer<RatingTrends>, Error>;
|
|
105
|
+
export declare function useAdminCriticalFeedback(limit?: number): import("@tanstack/react-query").UseQueryResult<NoInfer<CriticalFeedback[]>, Error>;
|
|
106
|
+
export declare function useAdminFeedbackExport(params: {
|
|
107
|
+
rating_filter?: number;
|
|
108
|
+
has_text?: boolean;
|
|
109
|
+
start_date?: string;
|
|
110
|
+
end_date?: string;
|
|
111
|
+
}): import("@tanstack/react-query").UseQueryResult<NoInfer<FeedbackWithUser[]>, Error>;
|
|
112
|
+
export declare function useAdminFeedbackAnalysis(): import("@tanstack/react-query").UseMutationResult<LLMAnalysisResponse, Error, LLMAnalysisRequest, unknown>;
|
|
113
|
+
export declare function useRefreshFeedbackData(): {
|
|
114
|
+
refreshFeedbackList: (params?: FeedbackListParams) => void;
|
|
115
|
+
refreshFeedbackStats: () => void;
|
|
116
|
+
refreshAll: () => void;
|
|
117
|
+
};
|
|
118
|
+
export {};
|
|
119
|
+
//# sourceMappingURL=use-admin-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-feedback.d.ts","sourceRoot":"","sources":["../../src/react/use-admin-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { backendApi } from '../core/http/api-client.js';
|
|
2
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
3
|
+
export function useAdminFeedbackList(params = {}) {
|
|
4
|
+
return useQuery({
|
|
5
|
+
queryKey: ['admin', 'feedback', 'list', params],
|
|
6
|
+
queryFn: async () => {
|
|
7
|
+
const searchParams = new URLSearchParams();
|
|
8
|
+
if (params.page)
|
|
9
|
+
searchParams.append('page', params.page.toString());
|
|
10
|
+
if (params.page_size)
|
|
11
|
+
searchParams.append('page_size', params.page_size.toString());
|
|
12
|
+
if (params.rating_filter !== undefined)
|
|
13
|
+
searchParams.append('rating_filter', params.rating_filter.toString());
|
|
14
|
+
if (params.has_text !== undefined)
|
|
15
|
+
searchParams.append('has_text', params.has_text.toString());
|
|
16
|
+
if (params.sort_by)
|
|
17
|
+
searchParams.append('sort_by', params.sort_by);
|
|
18
|
+
if (params.sort_order)
|
|
19
|
+
searchParams.append('sort_order', params.sort_order);
|
|
20
|
+
const response = await backendApi.get(`/admin/feedback/list?${searchParams.toString()}`);
|
|
21
|
+
if (response.error) {
|
|
22
|
+
throw new Error(response.error.message);
|
|
23
|
+
}
|
|
24
|
+
return response.data;
|
|
25
|
+
},
|
|
26
|
+
staleTime: 30000,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function useAdminFeedbackStats() {
|
|
30
|
+
return useQuery({
|
|
31
|
+
queryKey: ['admin', 'feedback', 'stats'],
|
|
32
|
+
queryFn: async () => {
|
|
33
|
+
const response = await backendApi.get('/admin/feedback/stats');
|
|
34
|
+
if (response.error) {
|
|
35
|
+
throw new Error(response.error.message);
|
|
36
|
+
}
|
|
37
|
+
return response.data;
|
|
38
|
+
},
|
|
39
|
+
staleTime: 300000,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function useAdminSentimentSummary() {
|
|
43
|
+
return useQuery({
|
|
44
|
+
queryKey: ['admin', 'feedback', 'sentiment'],
|
|
45
|
+
queryFn: async () => {
|
|
46
|
+
const response = await backendApi.get('/admin/feedback/sentiment');
|
|
47
|
+
if (response.error) {
|
|
48
|
+
throw new Error(response.error.message);
|
|
49
|
+
}
|
|
50
|
+
return response.data;
|
|
51
|
+
},
|
|
52
|
+
staleTime: 300000,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function useAdminFeedbackTimeSeries(days = 30, granularity = 'day') {
|
|
56
|
+
return useQuery({
|
|
57
|
+
queryKey: ['admin', 'feedback', 'time-series', days, granularity],
|
|
58
|
+
queryFn: async () => {
|
|
59
|
+
const response = await backendApi.get(`/admin/feedback/time-series?days=${days}&granularity=${granularity}`);
|
|
60
|
+
if (response.error) {
|
|
61
|
+
throw new Error(response.error.message);
|
|
62
|
+
}
|
|
63
|
+
return response.data;
|
|
64
|
+
},
|
|
65
|
+
staleTime: 300000,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function useAdminRatingTrends(days = 30) {
|
|
69
|
+
return useQuery({
|
|
70
|
+
queryKey: ['admin', 'feedback', 'rating-trends', days],
|
|
71
|
+
queryFn: async () => {
|
|
72
|
+
const response = await backendApi.get(`/admin/feedback/rating-trends?days=${days}`);
|
|
73
|
+
if (response.error) {
|
|
74
|
+
throw new Error(response.error.message);
|
|
75
|
+
}
|
|
76
|
+
return response.data;
|
|
77
|
+
},
|
|
78
|
+
staleTime: 300000,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function useAdminCriticalFeedback(limit = 20) {
|
|
82
|
+
return useQuery({
|
|
83
|
+
queryKey: ['admin', 'feedback', 'critical', limit],
|
|
84
|
+
queryFn: async () => {
|
|
85
|
+
const response = await backendApi.get(`/admin/feedback/critical?limit=${limit}`);
|
|
86
|
+
if (response.error) {
|
|
87
|
+
throw new Error(response.error.message);
|
|
88
|
+
}
|
|
89
|
+
return response.data;
|
|
90
|
+
},
|
|
91
|
+
staleTime: 60000,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export function useAdminFeedbackExport(params) {
|
|
95
|
+
return useQuery({
|
|
96
|
+
queryKey: ['admin', 'feedback', 'export', params],
|
|
97
|
+
queryFn: async () => {
|
|
98
|
+
const searchParams = new URLSearchParams();
|
|
99
|
+
if (params.rating_filter !== undefined)
|
|
100
|
+
searchParams.append('rating_filter', params.rating_filter.toString());
|
|
101
|
+
if (params.has_text !== undefined)
|
|
102
|
+
searchParams.append('has_text', params.has_text.toString());
|
|
103
|
+
if (params.start_date)
|
|
104
|
+
searchParams.append('start_date', params.start_date);
|
|
105
|
+
if (params.end_date)
|
|
106
|
+
searchParams.append('end_date', params.end_date);
|
|
107
|
+
const response = await backendApi.get(`/admin/feedback/export?${searchParams.toString()}`);
|
|
108
|
+
if (response.error) {
|
|
109
|
+
throw new Error(response.error.message);
|
|
110
|
+
}
|
|
111
|
+
return response.data;
|
|
112
|
+
},
|
|
113
|
+
enabled: false,
|
|
114
|
+
staleTime: 0,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
export function useAdminFeedbackAnalysis() {
|
|
118
|
+
return useMutation({
|
|
119
|
+
mutationFn: async (request) => {
|
|
120
|
+
const response = await backendApi.post('/admin/feedback/analyze', request);
|
|
121
|
+
if (response.error) {
|
|
122
|
+
throw new Error(response.error.message);
|
|
123
|
+
}
|
|
124
|
+
return response.data;
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
export function useRefreshFeedbackData() {
|
|
129
|
+
const queryClient = useQueryClient();
|
|
130
|
+
return {
|
|
131
|
+
refreshFeedbackList: (params) => {
|
|
132
|
+
queryClient.invalidateQueries({
|
|
133
|
+
queryKey: ['admin', 'feedback', 'list'],
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
refreshFeedbackStats: () => {
|
|
137
|
+
queryClient.invalidateQueries({
|
|
138
|
+
queryKey: ['admin', 'feedback', 'stats'],
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
refreshAll: () => {
|
|
142
|
+
queryClient.invalidateQueries({
|
|
143
|
+
queryKey: ['admin', 'feedback'],
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=use-admin-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-feedback.js","sourceRoot":"","sources":["../../src/react/use-admin-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { type UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
export interface AdminSandbox {
|
|
3
|
+
sandboxId: string;
|
|
4
|
+
accountId: string | null;
|
|
5
|
+
name: string | null;
|
|
6
|
+
provider: string | null;
|
|
7
|
+
externalId: string | null;
|
|
8
|
+
status: string | null;
|
|
9
|
+
baseUrl: string | null;
|
|
10
|
+
metadata: unknown;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
lastUsedAt: string | null;
|
|
14
|
+
accountName: string | null;
|
|
15
|
+
ownerEmail: string | null;
|
|
16
|
+
initStatus?: 'pending' | 'provisioning' | 'retrying' | 'ready' | 'failed';
|
|
17
|
+
healthStatus?: 'healthy' | 'degraded' | 'offline' | 'unknown';
|
|
18
|
+
initAttempts?: number;
|
|
19
|
+
lastInitError?: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface AdminSandboxesParams {
|
|
22
|
+
search?: string;
|
|
23
|
+
status?: string;
|
|
24
|
+
provider?: string;
|
|
25
|
+
page?: number;
|
|
26
|
+
limit?: number;
|
|
27
|
+
}
|
|
28
|
+
interface AdminSandboxesResponse {
|
|
29
|
+
sandboxes: AdminSandbox[];
|
|
30
|
+
total: number;
|
|
31
|
+
page: number;
|
|
32
|
+
limit: number;
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function useAdminSandboxes(params?: AdminSandboxesParams, options?: Partial<UseQueryOptions<AdminSandboxesResponse>>): import("@tanstack/react-query").UseQueryResult<NoInfer<AdminSandboxesResponse>, Error>;
|
|
36
|
+
export interface AdminSandboxDetail {
|
|
37
|
+
sandbox: AdminSandbox & {
|
|
38
|
+
config: unknown;
|
|
39
|
+
};
|
|
40
|
+
provider_detail: ProviderMachineDetail | null;
|
|
41
|
+
provider_error: string | null;
|
|
42
|
+
}
|
|
43
|
+
export type AdminInstanceLayerStatus = 'healthy' | 'degraded' | 'offline' | 'unknown';
|
|
44
|
+
export interface AdminInstanceLayerAction {
|
|
45
|
+
action: 'start_host' | 'reboot_host' | 'stop_host' | 'start_workload' | 'restart_workload' | 'stop_workload' | 'reinitialize' | 'restart_runtime' | 'restart_service';
|
|
46
|
+
label: string;
|
|
47
|
+
serviceId?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface AdminInstanceLayerHealth {
|
|
50
|
+
key: 'host' | 'workload' | 'runtime';
|
|
51
|
+
label: string;
|
|
52
|
+
status: AdminInstanceLayerStatus;
|
|
53
|
+
summary: string;
|
|
54
|
+
actions: AdminInstanceLayerAction[];
|
|
55
|
+
details: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
export interface AdminSandboxHealth {
|
|
58
|
+
sandbox_id: string;
|
|
59
|
+
overall_status: 'healthy' | 'degraded' | 'offline' | 'unknown';
|
|
60
|
+
recommended_action: AdminInstanceLayerAction['action'] | null;
|
|
61
|
+
last_heartbeat_at?: string | null;
|
|
62
|
+
layers: {
|
|
63
|
+
host: AdminInstanceLayerHealth;
|
|
64
|
+
workload: AdminInstanceLayerHealth;
|
|
65
|
+
runtime: AdminInstanceLayerHealth;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface AdminSandboxHealthBatchResponse {
|
|
69
|
+
items: AdminSandboxHealth[];
|
|
70
|
+
}
|
|
71
|
+
export interface ProviderMachineDetail {
|
|
72
|
+
id: string;
|
|
73
|
+
slug: string;
|
|
74
|
+
name: string | null;
|
|
75
|
+
status: string;
|
|
76
|
+
provisioning_stage: string | null;
|
|
77
|
+
provider: string;
|
|
78
|
+
server_type: string | null;
|
|
79
|
+
region: string | null;
|
|
80
|
+
ip: string | null;
|
|
81
|
+
daemon_version: string | null;
|
|
82
|
+
created_at: string;
|
|
83
|
+
ready_at: string | null;
|
|
84
|
+
last_heartbeat_at?: string | null;
|
|
85
|
+
health: {
|
|
86
|
+
cpu?: number;
|
|
87
|
+
memory?: number;
|
|
88
|
+
disk?: number;
|
|
89
|
+
services?: Record<string, boolean>;
|
|
90
|
+
network?: {
|
|
91
|
+
rate_in?: number;
|
|
92
|
+
rate_out?: number;
|
|
93
|
+
connections?: number;
|
|
94
|
+
};
|
|
95
|
+
security?: {
|
|
96
|
+
ufw_active?: boolean;
|
|
97
|
+
fail2ban_active?: boolean;
|
|
98
|
+
ssh_key_only?: boolean;
|
|
99
|
+
};
|
|
100
|
+
last_heartbeat_at?: string | null;
|
|
101
|
+
} | null;
|
|
102
|
+
urls?: {
|
|
103
|
+
proxy?: string;
|
|
104
|
+
terminal?: string;
|
|
105
|
+
} | null;
|
|
106
|
+
ssh?: {
|
|
107
|
+
command?: string | null;
|
|
108
|
+
setup_command?: string | null;
|
|
109
|
+
} | null;
|
|
110
|
+
connect?: {
|
|
111
|
+
ssh_command?: string | null;
|
|
112
|
+
setup_command?: string | null;
|
|
113
|
+
vscode_url?: string | null;
|
|
114
|
+
} | null;
|
|
115
|
+
ssh_key?: {
|
|
116
|
+
setup_command?: string | null;
|
|
117
|
+
key_path?: string | null;
|
|
118
|
+
} | null;
|
|
119
|
+
}
|
|
120
|
+
export declare function useAdminSandboxDetail(sandboxId: string | null): import("@tanstack/react-query").UseQueryResult<NoInfer<AdminSandboxDetail>, Error>;
|
|
121
|
+
export declare function useAdminSandboxHealth(sandboxId: string | null, enabled?: boolean): import("@tanstack/react-query").UseQueryResult<NoInfer<AdminSandboxHealth>, Error>;
|
|
122
|
+
export declare function useAdminSandboxHealthBatch(sandboxIds: string[], enabled?: boolean): import("@tanstack/react-query").UseQueryResult<NoInfer<AdminSandboxHealthBatchResponse>, Error>;
|
|
123
|
+
export interface ExecResult {
|
|
124
|
+
stdout?: string;
|
|
125
|
+
stderr?: string;
|
|
126
|
+
exit_code?: number;
|
|
127
|
+
duration_ms?: number;
|
|
128
|
+
error?: string;
|
|
129
|
+
}
|
|
130
|
+
export declare function useAdminSandboxExec(): import("@tanstack/react-query").UseMutationResult<ExecResult, Error, {
|
|
131
|
+
sandboxId: string;
|
|
132
|
+
command: string;
|
|
133
|
+
timeout?: number;
|
|
134
|
+
}, unknown>;
|
|
135
|
+
export interface ProxyTokenResult {
|
|
136
|
+
token: string;
|
|
137
|
+
token_id: string;
|
|
138
|
+
expires_at: number;
|
|
139
|
+
terminal_url: string | null;
|
|
140
|
+
proxy_url: string | null;
|
|
141
|
+
}
|
|
142
|
+
export declare function fetchAdminSandboxProxyToken(sandboxId: string): Promise<ProxyTokenResult>;
|
|
143
|
+
export declare function useAdminSandboxAction(): import("@tanstack/react-query").UseMutationResult<unknown, Error, {
|
|
144
|
+
sandboxId: string;
|
|
145
|
+
action: "reboot" | "stop" | "start";
|
|
146
|
+
}, unknown>;
|
|
147
|
+
export declare function useAdminSandboxRepair(): import("@tanstack/react-query").UseMutationResult<unknown, Error, {
|
|
148
|
+
sandboxId: string;
|
|
149
|
+
action: AdminInstanceLayerAction["action"];
|
|
150
|
+
serviceId?: string;
|
|
151
|
+
}, unknown>;
|
|
152
|
+
export declare function useDeleteAdminSandbox(): import("@tanstack/react-query").UseMutationResult<{
|
|
153
|
+
success: boolean;
|
|
154
|
+
sandboxId: string;
|
|
155
|
+
}, Error, string, unknown>;
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=use-admin-sandboxes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-sandboxes.d.ts","sourceRoot":"","sources":["../../src/react/use-admin-sandboxes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { backendApi } from '../core/http/api-client.js';
|
|
3
|
+
const ADMIN_REVOKED_RE = /admin access required|forbidden|403/i;
|
|
4
|
+
function stopOnAdminRevoked(queryClient, error, intervalMs) {
|
|
5
|
+
const message = error instanceof Error ? error.message : '';
|
|
6
|
+
if (!ADMIN_REVOKED_RE.test(message))
|
|
7
|
+
return intervalMs;
|
|
8
|
+
queryClient.invalidateQueries({ queryKey: ['admin-role'] });
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
function isAdminRevokedError(error) {
|
|
12
|
+
return ADMIN_REVOKED_RE.test(error instanceof Error ? error.message : '');
|
|
13
|
+
}
|
|
14
|
+
export function useAdminSandboxes(params = {}, options) {
|
|
15
|
+
const { search = '', status = '', provider = '', page = 1, limit = 50 } = params;
|
|
16
|
+
return useQuery({
|
|
17
|
+
queryKey: ['admin', 'sandboxes', search, status, provider, page, limit],
|
|
18
|
+
queryFn: async () => {
|
|
19
|
+
const q = new URLSearchParams();
|
|
20
|
+
if (search)
|
|
21
|
+
q.set('search', search);
|
|
22
|
+
if (status)
|
|
23
|
+
q.set('status', status);
|
|
24
|
+
if (provider)
|
|
25
|
+
q.set('provider', provider);
|
|
26
|
+
q.set('page', String(page));
|
|
27
|
+
q.set('limit', String(limit));
|
|
28
|
+
const response = await backendApi.get(`/admin/api/sandboxes?${q.toString()}`);
|
|
29
|
+
if (response.error)
|
|
30
|
+
throw new Error(response.error.message);
|
|
31
|
+
return response.data;
|
|
32
|
+
},
|
|
33
|
+
staleTime: 15_000,
|
|
34
|
+
placeholderData: (prev) => prev, // keep previous data while fetching next page
|
|
35
|
+
...options,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function useAdminSandboxDetail(sandboxId) {
|
|
39
|
+
const qc = useQueryClient();
|
|
40
|
+
return useQuery({
|
|
41
|
+
queryKey: ['admin', 'sandbox-detail', sandboxId],
|
|
42
|
+
enabled: !!sandboxId,
|
|
43
|
+
queryFn: async () => {
|
|
44
|
+
const response = await backendApi.get(`/admin/api/sandboxes/${sandboxId}`);
|
|
45
|
+
if (response.error)
|
|
46
|
+
throw new Error(response.error.message);
|
|
47
|
+
return response.data;
|
|
48
|
+
},
|
|
49
|
+
refetchInterval: (q) => stopOnAdminRevoked(qc, q.state.error, 10_000),
|
|
50
|
+
retry: (_n, err) => !isAdminRevokedError(err),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export function useAdminSandboxHealth(sandboxId, enabled = true) {
|
|
54
|
+
const qc = useQueryClient();
|
|
55
|
+
return useQuery({
|
|
56
|
+
queryKey: ['admin', 'sandbox-health', sandboxId],
|
|
57
|
+
enabled: !!sandboxId && enabled,
|
|
58
|
+
queryFn: async () => {
|
|
59
|
+
const response = await backendApi.get(`/admin/api/sandboxes/${sandboxId}/health`);
|
|
60
|
+
if (response.error)
|
|
61
|
+
throw new Error(response.error.message);
|
|
62
|
+
return response.data;
|
|
63
|
+
},
|
|
64
|
+
refetchInterval: (q) => stopOnAdminRevoked(qc, q.state.error, 10_000),
|
|
65
|
+
retry: (_n, err) => !isAdminRevokedError(err),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function useAdminSandboxHealthBatch(sandboxIds, enabled = true) {
|
|
69
|
+
const ids = sandboxIds.filter(Boolean);
|
|
70
|
+
return useQuery({
|
|
71
|
+
queryKey: ['admin', 'sandbox-health-batch', ids],
|
|
72
|
+
enabled: enabled && ids.length > 0,
|
|
73
|
+
queryFn: async () => {
|
|
74
|
+
const response = await backendApi.post('/admin/api/sandboxes/health-batch', { sandboxIds: ids }, { showErrors: false, timeout: 60000 });
|
|
75
|
+
if (response.error)
|
|
76
|
+
throw new Error(response.error.message);
|
|
77
|
+
return response.data ?? { items: [] };
|
|
78
|
+
},
|
|
79
|
+
staleTime: 10_000,
|
|
80
|
+
refetchInterval: 15_000,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function useAdminSandboxExec() {
|
|
84
|
+
return useMutation({
|
|
85
|
+
mutationFn: async ({ sandboxId, command, timeout }) => {
|
|
86
|
+
const response = await backendApi.post(`/admin/api/sandboxes/${sandboxId}/exec`, { command, timeout: timeout ?? 60 });
|
|
87
|
+
if (response.error)
|
|
88
|
+
throw new Error(response.error.message);
|
|
89
|
+
return response.data;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export async function fetchAdminSandboxProxyToken(sandboxId) {
|
|
94
|
+
const response = await backendApi.post(`/admin/api/sandboxes/${sandboxId}/proxy-token`);
|
|
95
|
+
if (response.error)
|
|
96
|
+
throw new Error(response.error.message);
|
|
97
|
+
return response.data;
|
|
98
|
+
}
|
|
99
|
+
export function useAdminSandboxAction() {
|
|
100
|
+
const queryClient = useQueryClient();
|
|
101
|
+
return useMutation({
|
|
102
|
+
mutationFn: async ({ sandboxId, action }) => {
|
|
103
|
+
const response = await backendApi.post(`/admin/api/sandboxes/${sandboxId}/action`, { action });
|
|
104
|
+
if (response.error)
|
|
105
|
+
throw new Error(response.error.message);
|
|
106
|
+
return response.data;
|
|
107
|
+
},
|
|
108
|
+
onSuccess: (_data, { sandboxId }) => {
|
|
109
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandboxes'] });
|
|
110
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandbox-detail', sandboxId] });
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
export function useAdminSandboxRepair() {
|
|
115
|
+
const queryClient = useQueryClient();
|
|
116
|
+
return useMutation({
|
|
117
|
+
mutationFn: async ({ sandboxId, action, serviceId }) => {
|
|
118
|
+
const response = await backendApi.post(`/admin/api/sandboxes/${sandboxId}/repair`, { action, serviceId });
|
|
119
|
+
if (response.error)
|
|
120
|
+
throw new Error(response.error.message);
|
|
121
|
+
return response.data;
|
|
122
|
+
},
|
|
123
|
+
onSuccess: (_data, { sandboxId }) => {
|
|
124
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandboxes'] });
|
|
125
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandbox-detail', sandboxId] });
|
|
126
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandbox-health', sandboxId] });
|
|
127
|
+
queryClient.invalidateQueries({ queryKey: ['platform', 'sandbox', 'list'] });
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
export function useDeleteAdminSandbox() {
|
|
132
|
+
const queryClient = useQueryClient();
|
|
133
|
+
return useMutation({
|
|
134
|
+
mutationFn: async (sandboxId) => {
|
|
135
|
+
const response = await backendApi.delete(`/admin/api/sandboxes/${sandboxId}`);
|
|
136
|
+
if (response.error)
|
|
137
|
+
throw new Error(response.error.message);
|
|
138
|
+
return response.data;
|
|
139
|
+
},
|
|
140
|
+
onSuccess: () => {
|
|
141
|
+
queryClient.invalidateQueries({ queryKey: ['admin', 'sandboxes'] });
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=use-admin-sandboxes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-sandboxes.js","sourceRoot":"","sources":["../../src/react/use-admin-sandboxes.ts"],"names":[],"mappings":"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"}
|