apache-airflow-providers-edge3 1.5.0__py3-none-any.whl → 2.0.0__py3-none-any.whl

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.
Files changed (49) hide show
  1. airflow/providers/edge3/__init__.py +3 -3
  2. airflow/providers/edge3/cli/api_client.py +23 -26
  3. airflow/providers/edge3/cli/worker.py +9 -28
  4. airflow/providers/edge3/example_dags/integration_test.py +1 -1
  5. airflow/providers/edge3/example_dags/win_test.py +32 -22
  6. airflow/providers/edge3/executors/edge_executor.py +7 -63
  7. airflow/providers/edge3/models/edge_worker.py +7 -3
  8. airflow/providers/edge3/plugins/edge_executor_plugin.py +26 -205
  9. airflow/providers/edge3/plugins/www/dist/main.umd.cjs +8 -8
  10. airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts +6 -1
  11. airflow/providers/edge3/plugins/www/openapi-gen/queries/ensureQueryData.ts +6 -1
  12. airflow/providers/edge3/plugins/www/openapi-gen/queries/prefetch.ts +6 -1
  13. airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts +6 -2
  14. airflow/providers/edge3/plugins/www/openapi-gen/queries/suspense.ts +6 -1
  15. airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts +5 -0
  16. airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts +18 -3
  17. airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts +24 -0
  18. airflow/providers/edge3/plugins/www/package.json +17 -15
  19. airflow/providers/edge3/plugins/www/pnpm-lock.yaml +1194 -1244
  20. airflow/providers/edge3/plugins/www/src/components/SearchBar.tsx +103 -0
  21. airflow/providers/edge3/plugins/www/src/components/ui/InputGroup.tsx +57 -0
  22. airflow/providers/edge3/plugins/www/src/components/ui/Select/Content.tsx +37 -0
  23. airflow/providers/edge3/plugins/www/src/components/ui/Select/Item.tsx +34 -0
  24. airflow/providers/edge3/plugins/www/src/components/ui/Select/Root.tsx +24 -0
  25. airflow/providers/edge3/plugins/www/src/components/ui/Select/Trigger.tsx +54 -0
  26. airflow/providers/edge3/plugins/www/src/components/ui/Select/ValueText.tsx +51 -0
  27. airflow/providers/edge3/plugins/www/src/components/ui/Select/index.ts +34 -0
  28. airflow/providers/edge3/plugins/www/src/components/ui/index.ts +3 -0
  29. airflow/providers/edge3/plugins/www/src/constants.ts +43 -0
  30. airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +184 -95
  31. airflow/providers/edge3/version_compat.py +0 -2
  32. airflow/providers/edge3/worker_api/auth.py +11 -35
  33. airflow/providers/edge3/worker_api/datamodels.py +3 -2
  34. airflow/providers/edge3/worker_api/routes/health.py +1 -1
  35. airflow/providers/edge3/worker_api/routes/jobs.py +10 -11
  36. airflow/providers/edge3/worker_api/routes/logs.py +5 -8
  37. airflow/providers/edge3/worker_api/routes/ui.py +14 -3
  38. airflow/providers/edge3/worker_api/routes/worker.py +19 -12
  39. airflow/providers/edge3/{openapi → worker_api}/v2-edge-generated.yaml +59 -5
  40. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/METADATA +13 -13
  41. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/RECORD +45 -40
  42. airflow/providers/edge3/openapi/__init__.py +0 -19
  43. airflow/providers/edge3/openapi/edge_worker_api_v1.yaml +0 -808
  44. airflow/providers/edge3/worker_api/routes/_v2_compat.py +0 -136
  45. airflow/providers/edge3/worker_api/routes/_v2_routes.py +0 -237
  46. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/WHEEL +0 -0
  47. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/entry_points.txt +0 -0
  48. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/licenses/LICENSE +0 -0
  49. {apache_airflow_providers_edge3-1.5.0.dist-info → apache_airflow_providers_edge3-2.0.0.dist-info}/licenses/NOTICE +0 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { UseQueryResult } from "@tanstack/react-query";
4
4
  import { JobsService, LogsService, MonitorService, UiService, WorkerService } from "../requests/services.gen";
5
+ import { EdgeWorkerState } from "../requests/types.gen";
5
6
  export type LogsServiceLogfilePathDefaultResponse = Awaited<ReturnType<typeof LogsService.logfilePath>>;
6
7
  export type LogsServiceLogfilePathQueryResult<TData = LogsServiceLogfilePathDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
7
8
  export const useLogsServiceLogfilePathKey = "LogsServiceLogfilePath";
@@ -20,7 +21,11 @@ export const UseMonitorServiceHealthKeyFn = (queryKey?: Array<unknown>) => [useM
20
21
  export type UiServiceWorkerDefaultResponse = Awaited<ReturnType<typeof UiService.worker>>;
21
22
  export type UiServiceWorkerQueryResult<TData = UiServiceWorkerDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
22
23
  export const useUiServiceWorkerKey = "UiServiceWorker";
23
- export const UseUiServiceWorkerKeyFn = (queryKey?: Array<unknown>) => [useUiServiceWorkerKey, ...(queryKey ?? [])];
24
+ export const UseUiServiceWorkerKeyFn = ({ queueNamePattern, state, workerNamePattern }: {
25
+ queueNamePattern?: string;
26
+ state?: EdgeWorkerState[];
27
+ workerNamePattern?: string;
28
+ } = {}, queryKey?: Array<unknown>) => [useUiServiceWorkerKey, ...(queryKey ?? [{ queueNamePattern, state, workerNamePattern }])];
24
29
  export type UiServiceJobsDefaultResponse = Awaited<ReturnType<typeof UiService.jobs>>;
25
30
  export type UiServiceJobsQueryResult<TData = UiServiceJobsDefaultResponse, TError = unknown> = UseQueryResult<TData, TError>;
26
31
  export const useUiServiceJobsKey = "UiServiceJobs";
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { type QueryClient } from "@tanstack/react-query";
4
4
  import { LogsService, MonitorService, UiService } from "../requests/services.gen";
5
+ import { EdgeWorkerState } from "../requests/types.gen";
5
6
  import * as Common from "./common";
6
7
  export const ensureUseLogsServiceLogfilePathData = (queryClient: QueryClient, { authorization, dagId, mapIndex, runId, taskId, tryNumber }: {
7
8
  authorization: string;
@@ -12,5 +13,9 @@ export const ensureUseLogsServiceLogfilePathData = (queryClient: QueryClient, {
12
13
  tryNumber: number;
13
14
  }) => queryClient.ensureQueryData({ queryKey: Common.UseLogsServiceLogfilePathKeyFn({ authorization, dagId, mapIndex, runId, taskId, tryNumber }), queryFn: () => LogsService.logfilePath({ authorization, dagId, mapIndex, runId, taskId, tryNumber }) });
14
15
  export const ensureUseMonitorServiceHealthData = (queryClient: QueryClient) => queryClient.ensureQueryData({ queryKey: Common.UseMonitorServiceHealthKeyFn(), queryFn: () => MonitorService.health() });
15
- export const ensureUseUiServiceWorkerData = (queryClient: QueryClient) => queryClient.ensureQueryData({ queryKey: Common.UseUiServiceWorkerKeyFn(), queryFn: () => UiService.worker() });
16
+ export const ensureUseUiServiceWorkerData = (queryClient: QueryClient, { queueNamePattern, state, workerNamePattern }: {
17
+ queueNamePattern?: string;
18
+ state?: EdgeWorkerState[];
19
+ workerNamePattern?: string;
20
+ } = {}) => queryClient.ensureQueryData({ queryKey: Common.UseUiServiceWorkerKeyFn({ queueNamePattern, state, workerNamePattern }), queryFn: () => UiService.worker({ queueNamePattern, state, workerNamePattern }) });
16
21
  export const ensureUseUiServiceJobsData = (queryClient: QueryClient) => queryClient.ensureQueryData({ queryKey: Common.UseUiServiceJobsKeyFn(), queryFn: () => UiService.jobs() });
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { type QueryClient } from "@tanstack/react-query";
4
4
  import { LogsService, MonitorService, UiService } from "../requests/services.gen";
5
+ import { EdgeWorkerState } from "../requests/types.gen";
5
6
  import * as Common from "./common";
6
7
  export const prefetchUseLogsServiceLogfilePath = (queryClient: QueryClient, { authorization, dagId, mapIndex, runId, taskId, tryNumber }: {
7
8
  authorization: string;
@@ -12,5 +13,9 @@ export const prefetchUseLogsServiceLogfilePath = (queryClient: QueryClient, { au
12
13
  tryNumber: number;
13
14
  }) => queryClient.prefetchQuery({ queryKey: Common.UseLogsServiceLogfilePathKeyFn({ authorization, dagId, mapIndex, runId, taskId, tryNumber }), queryFn: () => LogsService.logfilePath({ authorization, dagId, mapIndex, runId, taskId, tryNumber }) });
14
15
  export const prefetchUseMonitorServiceHealth = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: Common.UseMonitorServiceHealthKeyFn(), queryFn: () => MonitorService.health() });
15
- export const prefetchUseUiServiceWorker = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: Common.UseUiServiceWorkerKeyFn(), queryFn: () => UiService.worker() });
16
+ export const prefetchUseUiServiceWorker = (queryClient: QueryClient, { queueNamePattern, state, workerNamePattern }: {
17
+ queueNamePattern?: string;
18
+ state?: EdgeWorkerState[];
19
+ workerNamePattern?: string;
20
+ } = {}) => queryClient.prefetchQuery({ queryKey: Common.UseUiServiceWorkerKeyFn({ queueNamePattern, state, workerNamePattern }), queryFn: () => UiService.worker({ queueNamePattern, state, workerNamePattern }) });
16
21
  export const prefetchUseUiServiceJobs = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: Common.UseUiServiceJobsKeyFn(), queryFn: () => UiService.jobs() });
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { UseMutationOptions, UseQueryOptions, useMutation, useQuery } from "@tanstack/react-query";
4
4
  import { JobsService, LogsService, MonitorService, UiService, WorkerService } from "../requests/services.gen";
5
- import { MaintenanceRequest, PushLogsBody, TaskInstanceState, WorkerQueueUpdateBody, WorkerQueuesBody, WorkerStateBody } from "../requests/types.gen";
5
+ import { EdgeWorkerState, MaintenanceRequest, PushLogsBody, TaskInstanceState, WorkerQueueUpdateBody, WorkerQueuesBody, WorkerStateBody } from "../requests/types.gen";
6
6
  import * as Common from "./common";
7
7
  export const useLogsServiceLogfilePath = <TData = Common.LogsServiceLogfilePathDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ authorization, dagId, mapIndex, runId, taskId, tryNumber }: {
8
8
  authorization: string;
@@ -13,7 +13,11 @@ export const useLogsServiceLogfilePath = <TData = Common.LogsServiceLogfilePathD
13
13
  tryNumber: number;
14
14
  }, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseLogsServiceLogfilePathKeyFn({ authorization, dagId, mapIndex, runId, taskId, tryNumber }, queryKey), queryFn: () => LogsService.logfilePath({ authorization, dagId, mapIndex, runId, taskId, tryNumber }) as TData, ...options });
15
15
  export const useMonitorServiceHealth = <TData = Common.MonitorServiceHealthDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseMonitorServiceHealthKeyFn(queryKey), queryFn: () => MonitorService.health() as TData, ...options });
16
- export const useUiServiceWorker = <TData = Common.UiServiceWorkerDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseUiServiceWorkerKeyFn(queryKey), queryFn: () => UiService.worker() as TData, ...options });
16
+ export const useUiServiceWorker = <TData = Common.UiServiceWorkerDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ queueNamePattern, state, workerNamePattern }: {
17
+ queueNamePattern?: string;
18
+ state?: EdgeWorkerState[];
19
+ workerNamePattern?: string;
20
+ } = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseUiServiceWorkerKeyFn({ queueNamePattern, state, workerNamePattern }, queryKey), queryFn: () => UiService.worker({ queueNamePattern, state, workerNamePattern }) as TData, ...options });
17
21
  export const useUiServiceJobs = <TData = Common.UiServiceJobsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey: Common.UseUiServiceJobsKeyFn(queryKey), queryFn: () => UiService.jobs() as TData, ...options });
18
22
  export const useJobsServiceFetch = <TData = Common.JobsServiceFetchMutationResult, TError = unknown, TContext = unknown>(options?: Omit<UseMutationOptions<TData, TError, {
19
23
  authorization: string;
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { UseQueryOptions, useSuspenseQuery } from "@tanstack/react-query";
4
4
  import { LogsService, MonitorService, UiService } from "../requests/services.gen";
5
+ import { EdgeWorkerState } from "../requests/types.gen";
5
6
  import * as Common from "./common";
6
7
  export const useLogsServiceLogfilePathSuspense = <TData = Common.LogsServiceLogfilePathDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ authorization, dagId, mapIndex, runId, taskId, tryNumber }: {
7
8
  authorization: string;
@@ -12,5 +13,9 @@ export const useLogsServiceLogfilePathSuspense = <TData = Common.LogsServiceLogf
12
13
  tryNumber: number;
13
14
  }, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseLogsServiceLogfilePathKeyFn({ authorization, dagId, mapIndex, runId, taskId, tryNumber }, queryKey), queryFn: () => LogsService.logfilePath({ authorization, dagId, mapIndex, runId, taskId, tryNumber }) as TData, ...options });
14
15
  export const useMonitorServiceHealthSuspense = <TData = Common.MonitorServiceHealthDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseMonitorServiceHealthKeyFn(queryKey), queryFn: () => MonitorService.health() as TData, ...options });
15
- export const useUiServiceWorkerSuspense = <TData = Common.UiServiceWorkerDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseUiServiceWorkerKeyFn(queryKey), queryFn: () => UiService.worker() as TData, ...options });
16
+ export const useUiServiceWorkerSuspense = <TData = Common.UiServiceWorkerDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>({ queueNamePattern, state, workerNamePattern }: {
17
+ queueNamePattern?: string;
18
+ state?: EdgeWorkerState[];
19
+ workerNamePattern?: string;
20
+ } = {}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseUiServiceWorkerKeyFn({ queueNamePattern, state, workerNamePattern }, queryKey), queryFn: () => UiService.worker({ queueNamePattern, state, workerNamePattern }) as TData, ...options });
16
21
  export const useUiServiceJobsSuspense = <TData = Common.UiServiceJobsDefaultResponse, TError = unknown, TQueryKey extends Array<unknown> = unknown[]>(queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>, "queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey: Common.UseUiServiceJobsKeyFn(queryKey), queryFn: () => UiService.jobs() as TData, ...options });
@@ -103,6 +103,11 @@ export const $ExecuteTask = {
103
103
  ti: {
104
104
  '$ref': '#/components/schemas/TaskInstance'
105
105
  },
106
+ sentry_integration: {
107
+ type: 'string',
108
+ title: 'Sentry Integration',
109
+ default: ''
110
+ },
106
111
  type: {
107
112
  type: 'string',
108
113
  const: 'ExecuteTask',
@@ -3,7 +3,7 @@
3
3
  import type { CancelablePromise } from './core/CancelablePromise';
4
4
  import { OpenAPI } from './core/OpenAPI';
5
5
  import { request as __request } from './core/request';
6
- import type { FetchData, FetchResponse, StateData, StateResponse, LogfilePathData, LogfilePathResponse, PushLogsData, PushLogsResponse, RegisterData, RegisterResponse, SetStateData, SetStateResponse, UpdateQueuesData, UpdateQueuesResponse, HealthResponse, WorkerResponse, JobsResponse, RequestWorkerMaintenanceData, RequestWorkerMaintenanceResponse, UpdateWorkerMaintenanceData, UpdateWorkerMaintenanceResponse, ExitWorkerMaintenanceData, ExitWorkerMaintenanceResponse, RequestWorkerShutdownData, RequestWorkerShutdownResponse, DeleteWorkerData, DeleteWorkerResponse, AddWorkerQueueData, AddWorkerQueueResponse, RemoveWorkerQueueData, RemoveWorkerQueueResponse } from './types.gen';
6
+ import type { FetchData, FetchResponse, StateData, StateResponse, LogfilePathData, LogfilePathResponse, PushLogsData, PushLogsResponse, RegisterData, RegisterResponse, SetStateData, SetStateResponse, UpdateQueuesData, UpdateQueuesResponse, HealthResponse, WorkerData, WorkerResponse, JobsResponse, RequestWorkerMaintenanceData, RequestWorkerMaintenanceResponse, UpdateWorkerMaintenanceData, UpdateWorkerMaintenanceResponse, ExitWorkerMaintenanceData, ExitWorkerMaintenanceResponse, RequestWorkerShutdownData, RequestWorkerShutdownResponse, DeleteWorkerData, DeleteWorkerResponse, AddWorkerQueueData, AddWorkerQueueResponse, RemoveWorkerQueueData, RemoveWorkerQueueResponse } from './types.gen';
7
7
 
8
8
  export class JobsService {
9
9
  /**
@@ -177,6 +177,7 @@ export class WorkerService {
177
177
  errors: {
178
178
  400: 'Bad Request',
179
179
  403: 'Forbidden',
180
+ 409: 'Conflict',
180
181
  422: 'Validation Error'
181
182
  }
182
183
  });
@@ -207,6 +208,7 @@ export class WorkerService {
207
208
  errors: {
208
209
  400: 'Bad Request',
209
210
  403: 'Forbidden',
211
+ 409: 'Conflict',
210
212
  422: 'Validation Error'
211
213
  }
212
214
  });
@@ -236,6 +238,7 @@ export class WorkerService {
236
238
  errors: {
237
239
  400: 'Bad Request',
238
240
  403: 'Forbidden',
241
+ 409: 'Conflict',
239
242
  422: 'Validation Error'
240
243
  }
241
244
  });
@@ -263,13 +266,25 @@ export class UiService {
263
266
  /**
264
267
  * Worker
265
268
  * Return Edge Workers.
269
+ * @param data The data for the request.
270
+ * @param data.workerNamePattern
271
+ * @param data.queueNamePattern
272
+ * @param data.state
266
273
  * @returns WorkerCollectionResponse Successful Response
267
274
  * @throws ApiError
268
275
  */
269
- public static worker(): CancelablePromise<WorkerResponse> {
276
+ public static worker(data: WorkerData = {}): CancelablePromise<WorkerResponse> {
270
277
  return __request(OpenAPI, {
271
278
  method: 'GET',
272
- url: '/edge_worker/ui/worker'
279
+ url: '/edge_worker/ui/worker',
280
+ query: {
281
+ worker_name_pattern: data.workerNamePattern,
282
+ queue_name_pattern: data.queueNamePattern,
283
+ state: data.state
284
+ },
285
+ errors: {
286
+ 422: 'Validation Error'
287
+ }
273
288
  });
274
289
  }
275
290
 
@@ -56,6 +56,7 @@ export type ExecuteTask = {
56
56
  bundle_info: BundleInfo;
57
57
  log_path: string | null;
58
58
  ti: TaskInstance;
59
+ sentry_integration?: string;
59
60
  type?: "ExecuteTask";
60
61
  };
61
62
 
@@ -466,6 +467,12 @@ export type HealthResponse = {
466
467
  [key: string]: (string);
467
468
  };
468
469
 
470
+ export type WorkerData = {
471
+ queueNamePattern?: string | null;
472
+ state?: Array<EdgeWorkerState> | null;
473
+ workerNamePattern?: string | null;
474
+ };
475
+
469
476
  export type WorkerResponse = WorkerCollectionResponse;
470
477
 
471
478
  export type JobsResponse = JobCollectionResponse;
@@ -625,6 +632,10 @@ export type $OpenApiTs = {
625
632
  * Forbidden
626
633
  */
627
634
  403: HTTPExceptionResponse;
635
+ /**
636
+ * Conflict
637
+ */
638
+ 409: HTTPExceptionResponse;
628
639
  /**
629
640
  * Validation Error
630
641
  */
@@ -646,6 +657,10 @@ export type $OpenApiTs = {
646
657
  * Forbidden
647
658
  */
648
659
  403: HTTPExceptionResponse;
660
+ /**
661
+ * Conflict
662
+ */
663
+ 409: HTTPExceptionResponse;
649
664
  /**
650
665
  * Validation Error
651
666
  */
@@ -669,6 +684,10 @@ export type $OpenApiTs = {
669
684
  * Forbidden
670
685
  */
671
686
  403: HTTPExceptionResponse;
687
+ /**
688
+ * Conflict
689
+ */
690
+ 409: HTTPExceptionResponse;
672
691
  /**
673
692
  * Validation Error
674
693
  */
@@ -690,11 +709,16 @@ export type $OpenApiTs = {
690
709
  };
691
710
  '/edge_worker/ui/worker': {
692
711
  get: {
712
+ req: WorkerData;
693
713
  res: {
694
714
  /**
695
715
  * Successful Response
696
716
  */
697
717
  200: WorkerCollectionResponse;
718
+ /**
719
+ * Validation Error
720
+ */
721
+ 422: HTTPValidationError;
698
722
  };
699
723
  };
700
724
  };
@@ -27,53 +27,55 @@
27
27
  "lint:fix": "eslint --fix && tsc --p tsconfig.app.json",
28
28
  "format": "pnpm prettier --write .",
29
29
  "preview": "vite preview",
30
- "codegen": "openapi-rq -i ../../openapi/v2-edge-generated.yaml -c axios --format prettier -o openapi-gen --operationId",
30
+ "codegen": "openapi-rq -i ../../worker_api/v2-edge-generated.yaml -c axios --format prettier -o openapi-gen --operationId",
31
31
  "test": "vitest run",
32
32
  "coverage": "vitest run --coverage"
33
33
  },
34
34
  "dependencies": {
35
- "@chakra-ui/react": "^3.29.0",
35
+ "@chakra-ui/react": "^3.30.0",
36
36
  "@emotion/react": "^11.14.0",
37
- "@tanstack/react-query": "^5.90.8",
37
+ "@tanstack/react-query": "^5.90.10",
38
38
  "axios": "^1.13.2",
39
39
  "next-themes": "^0.4.6",
40
40
  "react": "^19.2.0",
41
41
  "react-dom": "^19.2.0",
42
+ "react-hotkeys-hook": "^5.2.1",
42
43
  "react-icons": "^5.5.0",
43
- "react-router-dom": "^7.9.5",
44
- "react-timeago": "^8.3.0"
44
+ "react-router-dom": "^7.9.6",
45
+ "react-timeago": "^8.3.0",
46
+ "use-debounce": "^10.0.6"
45
47
  },
46
48
  "devDependencies": {
47
49
  "@7nohe/openapi-react-query-codegen": "^1.6.2",
48
- "@eslint/compat": "^1.4.1",
50
+ "@eslint/compat": "^2.0.0",
49
51
  "@eslint/js": "^9.39.1",
50
- "@stylistic/eslint-plugin": "^5.5.0",
52
+ "@stylistic/eslint-plugin": "^5.6.1",
51
53
  "@testing-library/jest-dom": "^6.9.1",
52
54
  "@testing-library/react": "^16.3.0",
53
55
  "@trivago/prettier-plugin-sort-imports": "^6.0.0",
54
56
  "@types/node": "^24.10.1",
55
- "@types/react": "^19.2.4",
57
+ "@types/react": "^19.2.6",
56
58
  "@types/react-dom": "^19.2.3",
57
59
  "@vitejs/plugin-react-swc": "^4.2.2",
58
- "@vitest/coverage-v8": "^4.0.8",
60
+ "@vitest/coverage-v8": "^4.0.13",
59
61
  "eslint": "^9.39.1",
60
- "eslint-config-prettier": "^10.1.2",
62
+ "eslint-config-prettier": "^10.1.8",
61
63
  "eslint-plugin-jsx-a11y": "^6.10.2",
62
64
  "eslint-plugin-perfectionist": "^4.15.1",
63
- "eslint-plugin-prettier": "^5.2.6",
65
+ "eslint-plugin-prettier": "^5.5.4",
64
66
  "eslint-plugin-react": "^7.37.5",
65
67
  "eslint-plugin-react-hooks": "^7.0.1",
66
68
  "eslint-plugin-react-refresh": "^0.4.24",
67
69
  "eslint-plugin-unicorn": "^62.0.0",
68
70
  "globals": "^16.5.0",
69
71
  "happy-dom": "^20.0.10",
70
- "prettier": "^3.5.3",
72
+ "prettier": "^3.6.2",
71
73
  "typescript": "~5.8.3",
72
- "typescript-eslint": "^8.46.4",
73
- "vite": "^7.2.2",
74
+ "typescript-eslint": "^8.47.0",
75
+ "vite": "^7.2.4",
74
76
  "vite-plugin-css-injected-by-js": "^3.5.2",
75
77
  "vite-plugin-dts": "^4.5.4",
76
- "vitest": "^4.0.8"
78
+ "vitest": "^4.0.13"
77
79
  },
78
80
  "pnpm": {
79
81
  "onlyBuiltDependencies": [