@adventurelabs/scout-core 1.4.42 → 1.4.44

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/dist/store/api.js CHANGED
@@ -9,7 +9,7 @@ const serializeQueryArgs = ({ queryArgs, endpointDefinition, endpointName, }) =>
9
9
  export const scoutApi = createApi({
10
10
  reducerPath: "scoutApi",
11
11
  baseQuery: fakeBaseQuery(),
12
- tagTypes: ["Session", "Event", "Artifact"],
12
+ tagTypes: ["Session", "Event", "Artifact", "AnalysisJob", "AnalysisTask"],
13
13
  endpoints: (builder) => ({
14
14
  // =====================================================
15
15
  // SESSIONS INFINITE QUERIES
@@ -627,7 +627,111 @@ export const scoutApi = createApi({
627
627
  },
628
628
  providesTags: () => [{ type: "Event", id: "LIST" }, { type: "Artifact", id: "LIST" }],
629
629
  }),
630
+ // =====================================================
631
+ // ANALYSIS JOBS / TASKS INFINITE (platform superadmin RLS)
632
+ // =====================================================
633
+ getAnalysisJobsInfinite: builder.query({
634
+ serializeQueryArgs,
635
+ async queryFn({ limit = 20, cursor, supabase, status }) {
636
+ try {
637
+ let query = supabase
638
+ .from("analysis_jobs")
639
+ .select("*")
640
+ .order("id", { ascending: false })
641
+ .limit(limit + 1);
642
+ if (status != null) {
643
+ query = query.eq("status", status);
644
+ }
645
+ if (cursor?.id != null) {
646
+ query = query.lt("id", cursor.id);
647
+ }
648
+ const { data, error } = await query;
649
+ if (error) {
650
+ return {
651
+ error: { status: "SUPABASE_ERROR", error: error.message },
652
+ };
653
+ }
654
+ const jobs = data || [];
655
+ const hasMore = jobs.length > limit;
656
+ const resultJobs = hasMore ? jobs.slice(0, limit) : jobs;
657
+ const nextCursor = hasMore && resultJobs.length > 0
658
+ ? { id: resultJobs[resultJobs.length - 1].id }
659
+ : null;
660
+ return {
661
+ data: {
662
+ jobs: resultJobs,
663
+ nextCursor,
664
+ hasMore,
665
+ },
666
+ };
667
+ }
668
+ catch (err) {
669
+ return { error: { status: "FETCH_ERROR", error: String(err) } };
670
+ }
671
+ },
672
+ providesTags: (result) => result
673
+ ? [
674
+ ...result.jobs.map(({ id }) => ({
675
+ type: "AnalysisJob",
676
+ id,
677
+ })),
678
+ { type: "AnalysisJob", id: "LIST" },
679
+ ]
680
+ : [{ type: "AnalysisJob", id: "LIST" }],
681
+ }),
682
+ getAnalysisTasksInfinite: builder.query({
683
+ serializeQueryArgs,
684
+ async queryFn({ limit = 20, cursor, supabase, job_id, status }) {
685
+ try {
686
+ let query = supabase
687
+ .from("analysis_tasks")
688
+ .select("*")
689
+ .order("id", { ascending: false })
690
+ .limit(limit + 1);
691
+ if (job_id != null) {
692
+ query = query.eq("job_id", job_id);
693
+ }
694
+ if (status != null) {
695
+ query = query.eq("status", status);
696
+ }
697
+ if (cursor?.id != null) {
698
+ query = query.lt("id", cursor.id);
699
+ }
700
+ const { data, error } = await query;
701
+ if (error) {
702
+ return {
703
+ error: { status: "SUPABASE_ERROR", error: error.message },
704
+ };
705
+ }
706
+ const tasks = data || [];
707
+ const hasMore = tasks.length > limit;
708
+ const resultTasks = hasMore ? tasks.slice(0, limit) : tasks;
709
+ const nextCursor = hasMore && resultTasks.length > 0
710
+ ? { id: resultTasks[resultTasks.length - 1].id }
711
+ : null;
712
+ return {
713
+ data: {
714
+ tasks: resultTasks,
715
+ nextCursor,
716
+ hasMore,
717
+ },
718
+ };
719
+ }
720
+ catch (err) {
721
+ return { error: { status: "FETCH_ERROR", error: String(err) } };
722
+ }
723
+ },
724
+ providesTags: (result) => result
725
+ ? [
726
+ ...result.tasks.map(({ id }) => ({
727
+ type: "AnalysisTask",
728
+ id,
729
+ })),
730
+ { type: "AnalysisTask", id: "LIST" },
731
+ ]
732
+ : [{ type: "AnalysisTask", id: "LIST" }],
733
+ }),
630
734
  }),
631
735
  });
632
736
  // Export hooks for usage in functional components
633
- export const { useGetSessionsInfiniteByHerdQuery, useGetSessionsInfiniteByDeviceQuery, useGetEventsInfiniteByHerdQuery, useGetEventsInfiniteByDeviceQuery, useGetArtifactsInfiniteByHerdQuery, useGetArtifactsInfiniteByDeviceQuery, useGetFeedInfiniteByHerdQuery, useGetFeedInfiniteByDeviceQuery, } = scoutApi;
737
+ export const { useGetSessionsInfiniteByHerdQuery, useGetSessionsInfiniteByDeviceQuery, useGetEventsInfiniteByHerdQuery, useGetEventsInfiniteByDeviceQuery, useGetArtifactsInfiniteByHerdQuery, useGetArtifactsInfiniteByDeviceQuery, useGetFeedInfiniteByHerdQuery, useGetFeedInfiniteByDeviceQuery, useGetAnalysisJobsInfiniteQuery, useGetAnalysisTasksInfiniteQuery, } = scoutApi;
@@ -3,50 +3,54 @@ export declare const configureScoutStore: () => import("@reduxjs/toolkit").Enhan
3
3
  scoutApi: import("@reduxjs/toolkit/query").CombinedState<{
4
4
  getSessionsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
5
5
  supabase: import("@supabase/supabase-js").SupabaseClient;
6
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
6
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
7
7
  getSessionsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
8
8
  supabase: import("@supabase/supabase-js").SupabaseClient;
9
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
9
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
10
10
  getEventsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
11
11
  supabase: import("@supabase/supabase-js").SupabaseClient;
12
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
12
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
13
13
  getEventsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
14
14
  supabase: import("@supabase/supabase-js").SupabaseClient;
15
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
15
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
16
16
  getArtifactsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
17
17
  supabase: import("@supabase/supabase-js").SupabaseClient;
18
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
18
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
19
19
  getArtifactsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
20
20
  supabase: import("@supabase/supabase-js").SupabaseClient;
21
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
22
- getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
23
- getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
24
- }, "Session" | "Event" | "Artifact", "scoutApi">;
21
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
22
+ getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
23
+ getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
24
+ getAnalysisJobsInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisJobsInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisJobsInfiniteResponse, "scoutApi", unknown>;
25
+ getAnalysisTasksInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisTasksInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisTasksInfiniteResponse, "scoutApi", unknown>;
26
+ }, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", "scoutApi">;
25
27
  }, import("redux").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
26
28
  dispatch: import("redux-thunk").ThunkDispatch<{
27
29
  scout: import("./scout").ScoutState;
28
30
  scoutApi: import("@reduxjs/toolkit/query").CombinedState<{
29
31
  getSessionsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
30
32
  supabase: import("@supabase/supabase-js").SupabaseClient;
31
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
33
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
32
34
  getSessionsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
33
35
  supabase: import("@supabase/supabase-js").SupabaseClient;
34
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
36
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
35
37
  getEventsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
36
38
  supabase: import("@supabase/supabase-js").SupabaseClient;
37
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
39
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
38
40
  getEventsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
39
41
  supabase: import("@supabase/supabase-js").SupabaseClient;
40
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
42
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
41
43
  getArtifactsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
42
44
  supabase: import("@supabase/supabase-js").SupabaseClient;
43
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
45
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
44
46
  getArtifactsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
45
47
  supabase: import("@supabase/supabase-js").SupabaseClient;
46
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
47
- getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
48
- getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
49
- }, "Session" | "Event" | "Artifact", "scoutApi">;
48
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
49
+ getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
50
+ getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
51
+ getAnalysisJobsInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisJobsInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisJobsInfiniteResponse, "scoutApi", unknown>;
52
+ getAnalysisTasksInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisTasksInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisTasksInfiniteResponse, "scoutApi", unknown>;
53
+ }, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", "scoutApi">;
50
54
  }, undefined, import("redux").UnknownAction>;
51
55
  }>, import("redux").StoreEnhancer]>>;
52
56
  export type RootState = ReturnType<ReturnType<typeof configureScoutStore>["getState"]>;
@@ -56,49 +60,53 @@ export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
56
60
  scoutApi: import("@reduxjs/toolkit/query").CombinedState<{
57
61
  getSessionsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
58
62
  supabase: import("@supabase/supabase-js").SupabaseClient;
59
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
63
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
60
64
  getSessionsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
61
65
  supabase: import("@supabase/supabase-js").SupabaseClient;
62
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
66
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
63
67
  getEventsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
64
68
  supabase: import("@supabase/supabase-js").SupabaseClient;
65
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
69
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
66
70
  getEventsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
67
71
  supabase: import("@supabase/supabase-js").SupabaseClient;
68
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
72
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
69
73
  getArtifactsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
70
74
  supabase: import("@supabase/supabase-js").SupabaseClient;
71
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
75
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
72
76
  getArtifactsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
73
77
  supabase: import("@supabase/supabase-js").SupabaseClient;
74
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
75
- getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
76
- getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
77
- }, "Session" | "Event" | "Artifact", "scoutApi">;
78
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
79
+ getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
80
+ getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
81
+ getAnalysisJobsInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisJobsInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisJobsInfiniteResponse, "scoutApi", unknown>;
82
+ getAnalysisTasksInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisTasksInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisTasksInfiniteResponse, "scoutApi", unknown>;
83
+ }, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", "scoutApi">;
78
84
  }, import("redux").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
79
85
  dispatch: import("redux-thunk").ThunkDispatch<{
80
86
  scout: import("./scout").ScoutState;
81
87
  scoutApi: import("@reduxjs/toolkit/query").CombinedState<{
82
88
  getSessionsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
83
89
  supabase: import("@supabase/supabase-js").SupabaseClient;
84
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
90
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
85
91
  getSessionsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
86
92
  supabase: import("@supabase/supabase-js").SupabaseClient;
87
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
93
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").SessionsInfiniteResponse, "scoutApi", unknown>;
88
94
  getEventsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
89
95
  supabase: import("@supabase/supabase-js").SupabaseClient;
90
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
96
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
91
97
  getEventsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
92
98
  supabase: import("@supabase/supabase-js").SupabaseClient;
93
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
99
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").EventsInfiniteResponse, "scoutApi", unknown>;
94
100
  getArtifactsInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
95
101
  supabase: import("@supabase/supabase-js").SupabaseClient;
96
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
102
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
97
103
  getArtifactsInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").InfiniteQueryArgs & {
98
104
  supabase: import("@supabase/supabase-js").SupabaseClient;
99
- }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
100
- getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
101
- getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
102
- }, "Session" | "Event" | "Artifact", "scoutApi">;
105
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").ArtifactsInfiniteResponse, "scoutApi", unknown>;
106
+ getFeedInfiniteByHerd: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByHerdQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
107
+ getFeedInfiniteByDevice: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").FeedInfiniteByDeviceQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").FeedInfiniteResponse, "scoutApi", unknown>;
108
+ getAnalysisJobsInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisJobsInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisJobsInfiniteResponse, "scoutApi", unknown>;
109
+ getAnalysisTasksInfinite: import("@reduxjs/toolkit/query").QueryDefinition<import("./api").AnalysisTasksInfiniteQueryArgs, import("@reduxjs/toolkit/query").BaseQueryFn<any, unknown, unknown, {}, {}>, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", import("./api").AnalysisTasksInfiniteResponse, "scoutApi", unknown>;
110
+ }, "Session" | "Event" | "Artifact" | "AnalysisJob" | "AnalysisTask", "scoutApi">;
103
111
  }, undefined, import("redux").UnknownAction>;
104
112
  }>, import("redux").StoreEnhancer]>>;
@@ -5,6 +5,7 @@ export type Role = Database["public"]["Enums"]["role"];
5
5
  export type DeviceType = Database["public"]["Enums"]["device_type"];
6
6
  export type MediaType = Database["public"]["Enums"]["media_type"];
7
7
  export type TagObservationType = Database["public"]["Enums"]["tag_observation_type"];
8
+ export type AnalysisWorkStatus = Database["public"]["Enums"]["analysis_work_status"];
8
9
  export type IUser = User;
9
10
  export type IDevice = Database["public"]["CompositeTypes"]["device_pretty_location"] & {
10
11
  api_keys_scout?: IApiKeyScout[];
@@ -31,6 +32,8 @@ export type IVersionsSoftware = Database["public"]["Tables"]["versions_software"
31
32
  export type IArtifact = Database["public"]["Tables"]["artifacts"]["Row"];
32
33
  export type IHealthMetric = Database["public"]["Tables"]["health_metrics"]["Row"];
33
34
  export type IHealthMetricSummaryRow = Database["public"]["Functions"]["get_health_metrics_summary"]["Returns"][number];
35
+ export type IAnalysisJob = Database["public"]["Tables"]["analysis_jobs"]["Row"];
36
+ export type IAnalysisTask = Database["public"]["Tables"]["analysis_tasks"]["Row"];
34
37
  export type IArtifactWithMediaUrl = IArtifact & {
35
38
  media_url?: string | null;
36
39
  };
@@ -46,6 +46,123 @@ export type Database = {
46
46
  }
47
47
  ];
48
48
  };
49
+ analysis_jobs: {
50
+ Row: {
51
+ id: number;
52
+ inserted_at: string;
53
+ status: Database["public"]["Enums"]["analysis_work_status"];
54
+ timestamp_finished: string | null;
55
+ timestamp_requested: string;
56
+ timestamp_started: string | null;
57
+ };
58
+ Insert: {
59
+ id?: number;
60
+ inserted_at?: string;
61
+ status?: Database["public"]["Enums"]["analysis_work_status"];
62
+ timestamp_finished?: string | null;
63
+ timestamp_requested?: string;
64
+ timestamp_started?: string | null;
65
+ };
66
+ Update: {
67
+ id?: number;
68
+ inserted_at?: string;
69
+ status?: Database["public"]["Enums"]["analysis_work_status"];
70
+ timestamp_finished?: string | null;
71
+ timestamp_requested?: string;
72
+ timestamp_started?: string | null;
73
+ };
74
+ Relationships: [];
75
+ };
76
+ analysis_tasks: {
77
+ Row: {
78
+ artifact_id: number | null;
79
+ cpu_core_seconds: number | null;
80
+ cpu_memory_avg: number | null;
81
+ event_id: number | null;
82
+ execution_environment: string;
83
+ frames_processed: number | null;
84
+ gpu_memory_peak: number | null;
85
+ gpu_seconds: number | null;
86
+ id: number;
87
+ job_id: number;
88
+ model: string | null;
89
+ status: Database["public"]["Enums"]["analysis_work_status"];
90
+ task_type: string;
91
+ time_finished: string | null;
92
+ time_started: string | null;
93
+ };
94
+ Insert: {
95
+ artifact_id?: number | null;
96
+ cpu_core_seconds?: number | null;
97
+ cpu_memory_avg?: number | null;
98
+ event_id?: number | null;
99
+ execution_environment: string;
100
+ frames_processed?: number | null;
101
+ gpu_memory_peak?: number | null;
102
+ gpu_seconds?: number | null;
103
+ id?: number;
104
+ job_id: number;
105
+ model?: string | null;
106
+ status?: Database["public"]["Enums"]["analysis_work_status"];
107
+ task_type: string;
108
+ time_finished?: string | null;
109
+ time_started?: string | null;
110
+ };
111
+ Update: {
112
+ artifact_id?: number | null;
113
+ cpu_core_seconds?: number | null;
114
+ cpu_memory_avg?: number | null;
115
+ event_id?: number | null;
116
+ execution_environment?: string;
117
+ frames_processed?: number | null;
118
+ gpu_memory_peak?: number | null;
119
+ gpu_seconds?: number | null;
120
+ id?: number;
121
+ job_id?: number;
122
+ model?: string | null;
123
+ status?: Database["public"]["Enums"]["analysis_work_status"];
124
+ task_type?: string;
125
+ time_finished?: string | null;
126
+ time_started?: string | null;
127
+ };
128
+ Relationships: [
129
+ {
130
+ foreignKeyName: "analysis_tasks_artifact_id_fkey";
131
+ columns: ["artifact_id"];
132
+ isOneToOne: false;
133
+ referencedRelation: "artifacts";
134
+ referencedColumns: ["id"];
135
+ },
136
+ {
137
+ foreignKeyName: "analysis_tasks_event_id_fkey";
138
+ columns: ["event_id"];
139
+ isOneToOne: false;
140
+ referencedRelation: "events";
141
+ referencedColumns: ["id"];
142
+ },
143
+ {
144
+ foreignKeyName: "analysis_tasks_event_id_fkey";
145
+ columns: ["event_id"];
146
+ isOneToOne: false;
147
+ referencedRelation: "events_with_tags";
148
+ referencedColumns: ["id"];
149
+ },
150
+ {
151
+ foreignKeyName: "analysis_tasks_event_id_fkey";
152
+ columns: ["event_id"];
153
+ isOneToOne: false;
154
+ referencedRelation: "events_with_tags_by_session";
155
+ referencedColumns: ["id"];
156
+ },
157
+ {
158
+ foreignKeyName: "analysis_tasks_job_id_fkey";
159
+ columns: ["job_id"];
160
+ isOneToOne: false;
161
+ referencedRelation: "analysis_jobs";
162
+ referencedColumns: ["id"];
163
+ }
164
+ ];
165
+ };
49
166
  artifacts: {
50
167
  Row: {
51
168
  created_at: string;
@@ -317,6 +434,7 @@ export type Database = {
317
434
  devices: {
318
435
  Row: {
319
436
  altitude: number | null;
437
+ color: string | null;
320
438
  created_by: string;
321
439
  description: string;
322
440
  device_type: Database["public"]["Enums"]["device_type"];
@@ -332,6 +450,7 @@ export type Database = {
332
450
  };
333
451
  Insert: {
334
452
  altitude?: number | null;
453
+ color?: string | null;
335
454
  created_by: string;
336
455
  description: string;
337
456
  device_type?: Database["public"]["Enums"]["device_type"];
@@ -347,6 +466,7 @@ export type Database = {
347
466
  };
348
467
  Update: {
349
468
  altitude?: number | null;
469
+ color?: string | null;
350
470
  created_by?: string;
351
471
  description?: string;
352
472
  device_type?: Database["public"]["Enums"]["device_type"];
@@ -948,6 +1068,29 @@ export type Database = {
948
1068
  }
949
1069
  ];
950
1070
  };
1071
+ platform_superadmins: {
1072
+ Row: {
1073
+ inserted_at: string;
1074
+ user_id: string;
1075
+ };
1076
+ Insert: {
1077
+ inserted_at?: string;
1078
+ user_id: string;
1079
+ };
1080
+ Update: {
1081
+ inserted_at?: string;
1082
+ user_id?: string;
1083
+ };
1084
+ Relationships: [
1085
+ {
1086
+ foreignKeyName: "platform_superadmins_user_id_fkey";
1087
+ columns: ["user_id"];
1088
+ isOneToOne: true;
1089
+ referencedRelation: "users";
1090
+ referencedColumns: ["id"];
1091
+ }
1092
+ ];
1093
+ };
951
1094
  providers: {
952
1095
  Row: {
953
1096
  created_at: string;
@@ -2554,6 +2697,7 @@ export type Database = {
2554
2697
  };
2555
2698
  };
2556
2699
  Enums: {
2700
+ analysis_work_status: "waiting" | "cancelled" | "processing" | "failed" | "success";
2557
2701
  app_permission: "herds.delete" | "events.delete";
2558
2702
  component_status: "active" | "inactive";
2559
2703
  device_type: "trail_camera" | "drone_fixed_wing" | "drone_quad" | "gps_tracker" | "sentry_tower" | "smart_buoy" | "radio_mesh_base_station" | "radio_mesh_repeater" | "unknown" | "gps_tracker_vehicle" | "gps_tracker_person" | "radio_mesh_base_station_gateway";
@@ -2836,6 +2980,7 @@ export type CompositeTypes<PublicCompositeTypeNameOrOptions extends keyof Defaul
2836
2980
  export declare const Constants: {
2837
2981
  readonly public: {
2838
2982
  readonly Enums: {
2983
+ readonly analysis_work_status: readonly ["waiting", "cancelled", "processing", "failed", "success"];
2839
2984
  readonly app_permission: readonly ["herds.delete", "events.delete"];
2840
2985
  readonly component_status: readonly ["active", "inactive"];
2841
2986
  readonly device_type: readonly ["trail_camera", "drone_fixed_wing", "drone_quad", "gps_tracker", "sentry_tower", "smart_buoy", "radio_mesh_base_station", "radio_mesh_repeater", "unknown", "gps_tracker_vehicle", "gps_tracker_person", "radio_mesh_base_station_gateway"];
@@ -1,6 +1,13 @@
1
1
  export const Constants = {
2
2
  public: {
3
3
  Enums: {
4
+ analysis_work_status: [
5
+ "waiting",
6
+ "cancelled",
7
+ "processing",
8
+ "failed",
9
+ "success",
10
+ ],
4
11
  app_permission: ["herds.delete", "events.delete"],
5
12
  component_status: ["active", "inactive"],
6
13
  device_type: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adventurelabs/scout-core",
3
- "version": "1.4.42",
3
+ "version": "1.4.44",
4
4
  "description": "Core utilities and helpers for Adventure Labs Scout applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",