@prefecthq/prefect-ui-library 3.11.12 → 3.11.14

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 (30) hide show
  1. package/dist/{RunsPageWithDefaultFilter-Dxd35vMW.mjs → RunsPageWithDefaultFilter-Cxr7Sys4.mjs} +2 -2
  2. package/dist/{RunsPageWithDefaultFilter-Dxd35vMW.mjs.map → RunsPageWithDefaultFilter-Cxr7Sys4.mjs.map} +1 -1
  3. package/dist/{WorkQueueToWorkPoolQueueRedirect-D_0zKHOK.mjs → WorkQueueToWorkPoolQueueRedirect-CvIP2Lps.mjs} +2 -2
  4. package/dist/{WorkQueueToWorkPoolQueueRedirect-D_0zKHOK.mjs.map → WorkQueueToWorkPoolQueueRedirect-CvIP2Lps.mjs.map} +1 -1
  5. package/dist/{index-3dEzawLM.mjs → index-Cz9ExVBS.mjs} +1023 -999
  6. package/dist/index-Cz9ExVBS.mjs.map +1 -0
  7. package/dist/prefect-ui-library.mjs +38 -37
  8. package/dist/prefect-ui-library.umd.js +74 -74
  9. package/dist/prefect-ui-library.umd.js.map +1 -1
  10. package/dist/types/src/compositions/index.d.ts +1 -0
  11. package/dist/types/src/compositions/useWorker.d.ts +5 -0
  12. package/dist/types/src/models/WorkPoolWorker.d.ts +2 -0
  13. package/dist/types/src/models/api/Filters.d.ts +1 -2
  14. package/dist/types/src/models/api/WorkPoolWorkerResponse.d.ts +1 -0
  15. package/dist/types/src/services/WorkspaceWorkPoolWorkersApi.d.ts +1 -0
  16. package/dist/types/src/services/can.d.ts +1 -1
  17. package/dist/types/src/types/SortOptionTypes.d.ts +4 -0
  18. package/package.json +2 -2
  19. package/src/compositions/index.ts +1 -0
  20. package/src/compositions/useWorker.ts +39 -0
  21. package/src/maps/filters.ts +3 -1
  22. package/src/maps/workPoolWorker.ts +1 -0
  23. package/src/mocks/worker.ts +1 -0
  24. package/src/models/WorkPoolWorker.ts +3 -0
  25. package/src/models/api/Filters.ts +1 -2
  26. package/src/models/api/WorkPoolWorkerResponse.ts +1 -0
  27. package/src/services/WorkspaceWorkPoolWorkersApi.ts +7 -0
  28. package/src/services/can.ts +2 -0
  29. package/src/types/SortOptionTypes.ts +2 -0
  30. package/dist/index-3dEzawLM.mjs.map +0 -1
@@ -54,6 +54,7 @@ export * from './useTaskRunsHistory';
54
54
  export * from './useThemeTokens';
55
55
  export * from './useVariable';
56
56
  export * from './useVariables';
57
+ export * from './useWorker';
57
58
  export * from './useWorkPool';
58
59
  export * from './useWorkPoolById';
59
60
  export * from './useWorkPoolLastPolled';
@@ -0,0 +1,5 @@
1
+ import { MaybeRefOrGetter } from 'vue';
2
+ import { WorkspaceWorkPoolWorkersApi } from '../services';
3
+ import { UseEntitySubscription } from '../types/useEntitySubscription';
4
+ export type UseWorker = UseEntitySubscription<WorkspaceWorkPoolWorkersApi['getWorker'], 'worker'>;
5
+ export declare function useWorker(workPoolName: MaybeRefOrGetter<string | null | undefined>, workerId: MaybeRefOrGetter<string | null | undefined>): UseWorker;
@@ -7,6 +7,7 @@ export interface IWorkPoolWorker {
7
7
  workPoolId: string;
8
8
  lastHeartbeatTime: Date;
9
9
  status: WorkPoolWorkerStatus;
10
+ clientVersion: string | null;
10
11
  }
11
12
  export declare class WorkPoolWorker implements IWorkPoolWorker {
12
13
  readonly id: string;
@@ -17,6 +18,7 @@ export declare class WorkPoolWorker implements IWorkPoolWorker {
17
18
  workPoolId: string;
18
19
  lastHeartbeatTime: Date;
19
20
  status: WorkPoolWorkerStatus;
21
+ clientVersion: string | null;
20
22
  constructor(workPoolWorker: IWorkPoolWorker);
21
23
  }
22
24
  export type PaginatedWorkPoolWorkers = {
@@ -1,4 +1,3 @@
1
- import { ServerWorkPoolWorkerStatus } from '../../models/WorkPoolWorkerStatus';
2
1
  import { ArtifactSortValues, DeploymentSortValues, FlowRunSortValues, FlowSortValues, LogSortValues, TaskRunSortValues, VariableSortValues, WorkPoolWorkerSortValues } from '../../types/SortOptionTypes';
3
2
  /** A list where results will be returned only if they match all the values in the list */
4
3
  export type All = {
@@ -257,7 +256,7 @@ export type WorkersFilterRequest = {
257
256
  operator?: OperationRequest;
258
257
  last_heartbeat_time?: Before & After;
259
258
  name?: Like;
260
- status?: ServerWorkPoolWorkerStatus;
259
+ status?: Any;
261
260
  };
262
261
  export type WorkPoolWorkersFilterRequest = {
263
262
  workers?: WorkersFilterRequest;
@@ -8,6 +8,7 @@ export type WorkPoolWorkerResponse = {
8
8
  work_pool_id: string;
9
9
  last_heartbeat_time: DateString;
10
10
  status: ServerWorkPoolWorkerStatus;
11
+ client_version?: string | null;
11
12
  };
12
13
  export type WorkPoolWorkerPaginationResponse = {
13
14
  results: WorkPoolWorkerResponse[];
@@ -9,5 +9,6 @@ export declare class WorkspaceWorkPoolWorkersApi extends WorkspaceApi {
9
9
  protected routePrefix: string;
10
10
  getWorkers(workPoolName: string, filter?: WorkPoolWorkersFilter): Promise<WorkPoolWorker[]>;
11
11
  getWorkersPaginated(workPoolName: string, filter?: WorkPoolWorkersPagination): Promise<PaginatedWorkPoolWorkers>;
12
+ getWorker(workPoolName: string, workerId: string): Promise<WorkPoolWorker>;
12
13
  deleteWorker(arg: WorkerDeleteArg): Promise<void>;
13
14
  }
@@ -2,7 +2,7 @@ import { InjectionKey } from 'vue';
2
2
  import { MaybeRef } from '../types/reactivity';
3
3
  export declare const workspaceFeatureFlags: readonly ["access:deploymentScheduleFlowRunInfraOverrides"];
4
4
  export type WorkspaceFeatureFlag = typeof workspaceFeatureFlags[number];
5
- export declare const workspacePermissions: readonly ["create:artifact", "create:automation", "create:block", "create:concurrency_limit", "create:deployment", "create:flow_run", "create:flow", "create:log", "create:notification_policy", "create:saved_search", "create:task_run", "create:variable", "create:work_queue", "create:work_pool_queue", "create:work_pool", "create:workspace_bot_access", "create:workspace_user_access", "delete:artifact", "delete:automation", "delete:block", "delete:concurrency_limit", "delete:deployment", "delete:flow_run", "delete:flow", "delete:notification_policy", "delete:saved_search", "delete:task_run", "delete:work_queue", "delete:work_pool_queue", "delete:work_pool", "delete:workspace_bot_access", "delete:workspace_user_access", "delete:variable", "read:artifact", "read:automation", "read:block", "read:concurrency_limit", "read:deployment", "read:flow_run", "read:flow", "read:log", "read:notification_policy", "read:saved_search", "read:task_run", "read:variable", "read:work_queue", "read:work_pool_queue", "read:work_pool", "read:workspace_bot_access", "read:workspace_settings", "read:workspace_user_access", "run:deployment", "update:automation", "update:block", "update:concurrency_limit", "update:deployment", "update:flow_run", "update:flow", "update:notification_policy", "update:task_run", "update:variable", "update:work_queue", "update:work_pool_queue", "update:work_pool", "update:workspace_bot_access", "update:workspace_settings", "update:workspace_user_access", "update:workspace"];
5
+ export declare const workspacePermissions: readonly ["create:artifact", "create:automation", "create:block", "create:concurrency_limit", "create:deployment", "create:flow_run", "create:flow", "create:log", "create:notification_policy", "create:saved_search", "create:task_run", "create:variable", "create:work_queue", "create:work_pool_queue", "create:work_pool", "create:workspace_bot_access", "create:workspace_user_access", "delete:artifact", "delete:automation", "delete:block", "delete:concurrency_limit", "delete:deployment", "delete:flow_run", "delete:flow", "delete:notification_policy", "delete:saved_search", "delete:task_run", "delete:work_queue", "delete:work_pool_queue", "delete:work_pool", "delete:worker", "delete:workspace_bot_access", "delete:workspace_user_access", "delete:variable", "read:artifact", "read:automation", "read:block", "read:concurrency_limit", "read:deployment", "read:flow_run", "read:flow", "read:log", "read:notification_policy", "read:saved_search", "read:task_run", "read:variable", "read:work_queue", "read:work_pool_queue", "read:work_pool", "read:worker", "read:workspace_bot_access", "read:workspace_settings", "read:workspace_user_access", "run:deployment", "update:automation", "update:block", "update:concurrency_limit", "update:deployment", "update:flow_run", "update:flow", "update:notification_policy", "update:task_run", "update:variable", "update:work_queue", "update:work_pool_queue", "update:work_pool", "update:workspace_bot_access", "update:workspace_settings", "update:workspace_user_access", "update:workspace"];
6
6
  export type WorkspacePermission = typeof workspacePermissions[number];
7
7
  export type PermissionValue = boolean | undefined;
8
8
  export type PermissionVerb<T extends string> = T extends `${infer Action}:${string}` ? Action : never;
@@ -72,4 +72,8 @@ export type WorkPoolWorkerSortValues = typeof workPoolWorkerSortValues[number];
72
72
  export declare const defaultWorkPoolWorkersSort: WorkPoolWorkerSortValues;
73
73
  export declare function isWorkPoolWorkerSortValue(value: unknown): value is WorkPoolWorkerSortValues;
74
74
  export declare function isWorkPoolWorkerSortValue(value: Ref<unknown>): value is Ref<WorkPoolWorkerSortValues>;
75
+ export type WorkPoolWorkerSortOptions = {
76
+ label: string;
77
+ value: WorkPoolWorkerSortValues;
78
+ }[];
75
79
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prefecthq/prefect-ui-library",
3
- "version": "3.11.12",
3
+ "version": "3.11.14",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -69,7 +69,7 @@
69
69
  "tailwindcss": "3.4.14",
70
70
  "tsc-alias": "1.8.10",
71
71
  "typescript": "5.6.3",
72
- "vite": "5.4.9",
72
+ "vite": "5.4.10",
73
73
  "vite-svg-loader": "^5.1.0",
74
74
  "vitest": "^2.1.4",
75
75
  "vue-tsc": "^2.1.6"
@@ -54,6 +54,7 @@ export * from './useTaskRunsHistory'
54
54
  export * from './useThemeTokens'
55
55
  export * from './useVariable'
56
56
  export * from './useVariables'
57
+ export * from './useWorker'
57
58
  export * from './useWorkPool'
58
59
  export * from './useWorkPoolById'
59
60
  export * from './useWorkPoolLastPolled'
@@ -0,0 +1,39 @@
1
+ import { useSubscriptionWithDependencies } from '@prefecthq/vue-compositions'
2
+ import { computed, MaybeRefOrGetter, toRef, toValue } from 'vue'
3
+ import { useCan } from '@/compositions/useCan'
4
+ import { useWorkspaceApi } from '@/compositions/useWorkspaceApi'
5
+ import { WorkspaceWorkPoolWorkersApi } from '@/services'
6
+ import { Getter } from '@/types/reactivity'
7
+ import { UseEntitySubscription } from '@/types/useEntitySubscription'
8
+
9
+ export type UseWorker = UseEntitySubscription<WorkspaceWorkPoolWorkersApi['getWorker'], 'worker'>
10
+
11
+ export function useWorker(workPoolName: MaybeRefOrGetter<string | null | undefined>, workerId: MaybeRefOrGetter<string | null | undefined>): UseWorker {
12
+ const api = useWorkspaceApi()
13
+ const can = useCan()
14
+
15
+ const getter: Getter<[string, string] | null> = () => {
16
+ if (!can.read.worker) {
17
+ return null
18
+ }
19
+
20
+ const name = toValue(workPoolName)
21
+ const id = toValue(workerId)
22
+
23
+ if (!name || !id) {
24
+ return null
25
+ }
26
+
27
+ return [name, id]
28
+ }
29
+
30
+ const parameters = toRef(getter)
31
+
32
+ const subscription = useSubscriptionWithDependencies(api.workPoolWorkers.getWorker, parameters)
33
+ const worker = computed(() => subscription.response)
34
+
35
+ return {
36
+ subscription,
37
+ worker,
38
+ }
39
+ }
@@ -541,7 +541,9 @@ export const mapWorkersFilter: MapFunction<WorkersFilter, WorkersFilterRequest>
541
541
  ...toBefore(source.lastHeartbeatTimeBefore),
542
542
  },
543
543
  name: toLike(source.name),
544
- status: this.map('WorkPoolWorkerStatus', source.status, 'ServerWorkPoolWorkerStatus'),
544
+ status: toAny(
545
+ source.status ? [this.map('WorkPoolWorkerStatus', source.status, 'ServerWorkPoolWorkerStatus')] : undefined,
546
+ ),
545
547
  })
546
548
  }
547
549
 
@@ -11,6 +11,7 @@ export const mapWorkPoolWorkerResponseToWorkPoolWorker: MapFunction<WorkPoolWork
11
11
  workPoolId: source.work_pool_id,
12
12
  lastHeartbeatTime: this.map('string', source.last_heartbeat_time, 'Date'),
13
13
  status: this.map('ServerWorkPoolWorkerStatus', source.status, 'WorkPoolWorkerStatus'),
14
+ clientVersion: source.client_version ? source.client_version : null,
14
15
  })
15
16
  }
16
17
 
@@ -10,6 +10,7 @@ export const randomWorker: MockFunction<WorkPoolWorker, [Partial<WorkPoolWorker>
10
10
  name: this.create('noun'),
11
11
  lastHeartbeatTime: this.create('date'),
12
12
  status: this.create('workerStatus'),
13
+ clientVersion: this.create('string'),
13
14
  ...overrides,
14
15
  })
15
16
  }
@@ -8,6 +8,7 @@ export interface IWorkPoolWorker {
8
8
  workPoolId: string,
9
9
  lastHeartbeatTime: Date,
10
10
  status: WorkPoolWorkerStatus,
11
+ clientVersion: string | null,
11
12
  }
12
13
 
13
14
  export class WorkPoolWorker implements IWorkPoolWorker {
@@ -19,6 +20,7 @@ export class WorkPoolWorker implements IWorkPoolWorker {
19
20
  public workPoolId: string
20
21
  public lastHeartbeatTime: Date
21
22
  public status: WorkPoolWorkerStatus
23
+ public clientVersion: string | null
22
24
 
23
25
  public constructor(workPoolWorker: IWorkPoolWorker) {
24
26
  this.id = workPoolWorker.id
@@ -28,6 +30,7 @@ export class WorkPoolWorker implements IWorkPoolWorker {
28
30
  this.workPoolId = workPoolWorker.workPoolId
29
31
  this.lastHeartbeatTime = workPoolWorker.lastHeartbeatTime
30
32
  this.status = workPoolWorker.status
33
+ this.clientVersion = workPoolWorker.clientVersion
31
34
  }
32
35
  }
33
36
 
@@ -1,4 +1,3 @@
1
- import { ServerWorkPoolWorkerStatus } from '@/models/WorkPoolWorkerStatus'
2
1
  import { ArtifactSortValues, DeploymentSortValues, FlowRunSortValues, FlowSortValues, LogSortValues, TaskRunSortValues, VariableSortValues, WorkPoolWorkerSortValues } from '@/types/SortOptionTypes'
3
2
 
4
3
  /** A list where results will be returned only if they match all the values in the list */
@@ -264,7 +263,7 @@ export type WorkersFilterRequest = {
264
263
  operator?: OperationRequest,
265
264
  last_heartbeat_time?: Before & After,
266
265
  name?: Like,
267
- status?: ServerWorkPoolWorkerStatus,
266
+ status?: Any,
268
267
  }
269
268
 
270
269
  export type WorkPoolWorkersFilterRequest = {
@@ -10,6 +10,7 @@ export type WorkPoolWorkerResponse = {
10
10
  work_pool_id: string,
11
11
  last_heartbeat_time: DateString,
12
12
  status: ServerWorkPoolWorkerStatus,
13
+ client_version?: string | null,
13
14
  }
14
15
 
15
16
  export type WorkPoolWorkerPaginationResponse = {
@@ -26,6 +26,13 @@ export class WorkspaceWorkPoolWorkersApi extends WorkspaceApi {
26
26
  return mapper.map('WorkPoolWorkersPaginationResponse', data, 'PaginatedWorkPoolWorkers')
27
27
  }
28
28
 
29
+ public async getWorker(workPoolName: string, workerId: string): Promise<WorkPoolWorker> {
30
+ const encodedWorkPoolName = encodeURI(workPoolName)
31
+ const { data } = await this.get<WorkPoolWorkerResponse>(`/${encodedWorkPoolName}/workers/${workerId}`)
32
+
33
+ return mapper.map('WorkPoolWorkerResponse', data, 'WorkPoolWorker')
34
+ }
35
+
29
36
  public deleteWorker(arg: WorkerDeleteArg): Promise<void> {
30
37
  const encodedWorkPoolName = encodeURI(arg.workPoolName)
31
38
  const encodedWorkerName = encodeURI(arg.workerName)
@@ -36,6 +36,7 @@ export const workspacePermissions = [
36
36
  'delete:work_queue',
37
37
  'delete:work_pool_queue',
38
38
  'delete:work_pool',
39
+ 'delete:worker',
39
40
  'delete:workspace_bot_access',
40
41
  'delete:workspace_user_access',
41
42
  'delete:variable',
@@ -54,6 +55,7 @@ export const workspacePermissions = [
54
55
  'read:work_queue',
55
56
  'read:work_pool_queue',
56
57
  'read:work_pool',
58
+ 'read:worker',
57
59
  'read:workspace_bot_access',
58
60
  'read:workspace_settings',
59
61
  'read:workspace_user_access',
@@ -122,3 +122,5 @@ export function isWorkPoolWorkerSortValue(value: Ref<unknown>): value is Ref<Wor
122
122
  export function isWorkPoolWorkerSortValue(value: MaybeRef<unknown>): value is MaybeRef<WorkPoolWorkerSortValues> {
123
123
  return workPoolWorkerSortValues.includes(toValue(value) as WorkPoolWorkerSortValues)
124
124
  }
125
+
126
+ export type WorkPoolWorkerSortOptions = { label: string, value: WorkPoolWorkerSortValues }[]