@burdenoff/microfe-timecampus 2026.710.1 → 2026.710.2
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/index.js +2 -1
- package/dist/services/assistantApi.js +248 -0
- package/dist/services/assistantApi.js.map +1 -0
- package/dist/services/createSandboxAssistantTransport.js +120 -0
- package/dist/services/createSandboxAssistantTransport.js.map +1 -0
- package/dist/timecampus/components/DataTable.js +1 -0
- package/dist/timecampus/components/FilterBar.js +1 -0
- package/dist/timecampus/components/charts/BalanceWheel.js +38 -43
- package/dist/timecampus/components/charts/BalanceWheel.js.map +1 -1
- package/dist/timecampus/components/charts/BarsChart.js +24 -31
- package/dist/timecampus/components/charts/BarsChart.js.map +1 -1
- package/dist/timecampus/components/charts/DonutChart.js +36 -40
- package/dist/timecampus/components/charts/DonutChart.js.map +1 -1
- package/dist/timecampus/components/charts/RadialGauge.js +14 -17
- package/dist/timecampus/components/charts/RadialGauge.js.map +1 -1
- package/dist/timecampus/components/charts/Sparkline.js +2 -0
- package/dist/timecampus/components/charts/TrendChart.js +47 -57
- package/dist/timecampus/components/charts/TrendChart.js.map +1 -1
- package/dist/timecampus/index.d.ts +1 -0
- package/dist/timecampus/index.d.ts.map +1 -1
- package/dist/timecampus/index.js +1 -0
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +4 -4
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.js +4 -4
- package/dist/timecampus/providers/TimeCampusProvider.js +32 -32
- package/dist/timecampus/utils/helpers.js +2 -2
- package/dist/utils/pageContext.js +52 -0
- package/dist/utils/pageContext.js.map +1 -0
- package/package.json +1 -1
- package/dist/_virtual/_rolldown/runtime.js +0 -20
package/dist/index.js
CHANGED
|
@@ -2,5 +2,6 @@ import { useTimeCampus as e, useTimeCampusNavigate as t } from "./timecampus/pro
|
|
|
2
2
|
import { AcceptRecommendationDocument as n, ActivateResourcePlanDocument as r, AddParticipantDocument as i, ApplicationUsageFieldsFragmentDoc as a, ApprovalRequestFieldsFragmentDoc as o, ApproveExpenseDocument as s, ApproveRequestDocument as c, ArchiveProjectDocument as l, BalanceTargetFieldsFragmentDoc as u, BulkCreateAllocationsDocument as d, BulkCreateEmailTimeEntriesDocument as f, BulkDeleteTimeEntriesDocument as p, CalculateFocusScoreDocument as m, CaptureEventFieldsFragmentDoc as h, CategorizeApplicationDocument as g, ClientPortalFieldsFragmentDoc as _, CompleteActionItemDocument as v, CompletePomodoroSessionDocument as y, ContextSharingPolicyFieldsFragmentDoc as b, CreateActionItemDocument as x, CreateAllocationDocument as S, CreateClientPortalConfigDocument as C, CreateEmailTimeEntryDocument as w, CreateExpenseDocument as T, CreateGeofenceDocument as E, CreateLifeGoalDocument as D, CreateLocationEntryDocument as O, CreateMeetingDocument as k, CreatePomodoroGoalDocument as A, CreateProjectDocument as j, CreateResourcePlanDocument as M, CreateTaskDocument as N, CreateTimeEntryDocument as P, DeclareLifeValueDocument as F, DeleteActionItemDocument as I, DeleteAllocationDocument as L, DeleteApplicationUsageDocument as R, DeleteClientPortalConfigDocument as z, DeleteEmailTimeEntryDocument as B, DeleteExpenseDocument as V, DeleteFocusScoreDocument as H, DeleteGeofenceDocument as U, DeleteLifeGoalDocument as W, DeleteLifeValueDocument as G, DeleteLocationEntryDocument as K, DeleteMeetingDocument as q, DeletePomodoroGoalDocument as J, DeleteProjectDocument as Y, DeleteResourcePlanDocument as X, DeleteTaskDocument as Z, DeleteTimeCampusCaptureEventDocument as Q, DeleteTimeEntryDocument as $, DeleteWorkPatternDocument as ee, DismissRecommendationDocument as te, DuplicateTimeEntryDocument as ne, EmailTimeEntryFieldsFragmentDoc as re, ExpenseFieldsFragmentDoc as ie, FocusScoreFieldsFragmentDoc as ae, GenerateMyRecommendationsDocument as oe, GeofenceEventFieldsFragmentDoc as se, GeofenceFieldsFragmentDoc as ce, GetActiveLocationEntryDocument as le, GetActivePomodoroSessionDocument as ue, GetAppUsageSummaryDocument as de, GetApplicationUsageDocument as fe, GetApprovalRequestDocument as pe, GetApprovalStatsDocument as me, GetCapacityOverviewDocument as he, GetClientPortalConfigDocument as ge, GetClientPortalStatsDocument as _e, GetEmailTimeEntryDocument as ve, GetEmailTrackingStatsDocument as ye, GetExpenseDocument as be, GetExpenseStatsDocument as xe, GetFocusScoreDocument as Se, GetFocusScoreSummaryDocument as Ce, GetFocusScoreTrendDocument as we, GetGeofenceDocument as Te, GetLocationEntryDocument as Ee, GetLocationStatsDocument as De, GetMeetingDocument as Oe, GetMeetingStatsDocument as ke, GetPomodoroSessionDocument as Ae, GetPomodoroSettingsDocument as je, GetPomodoroStatsDocument as Me, GetProjectDocument as Ne, GetProjectStatsDocument as Pe, GetResourcePlanDocument as Fe, GetTaskDocument as Ie, GetTimeCampusTimelineDocument as Le, GetTimeEntryCountDocument as Re, GetTimeEntryDocument as ze, GetTimeEntryStatsDocument as Be, GetTodayFocusScoreDocument as Ve, GetTodayWorkPatternDocument as He, GetWorkPatternDocument as Ue, GetWorkPatternSummaryDocument as We, GrantSourceConsentDocument as Ge, IngestTimeCampusCaptureEventsDocument as Ke, InterruptPomodoroSessionDocument as qe, LifeGoalFieldsFragmentDoc as Je, LifeProfileFieldsFragmentDoc as Ye, LifeTimelineDocument as Xe, LifeValueFieldsFragmentDoc as Ze, ListApplicationUsagesDocument as Qe, ListApprovalRequestsDocument as $e, ListClientPortalConfigsDocument as et, ListEmailTimeEntriesDocument as tt, ListExpenseCategoriesDocument as nt, ListExpensesDocument as rt, ListFocusScoresDocument as it, ListGeofenceEventsDocument as at, ListGeofencesDocument as ot, ListLocationEntriesDocument as st, ListMeetingsDocument as ct, ListMyApprovalRequestsDocument as lt, ListPendingApprovalsDocument as ut, ListPomodoroGoalsDocument as dt, ListPomodoroSessionsDocument as ft, ListProjectsDocument as pt, ListResourceAllocationsDocument as mt, ListResourcePlansDocument as ht, ListRunningTimersDocument as gt, ListTasksDocument as _t, ListTimeCampusCaptureEventsDocument as vt, ListTimeEntriesByDateDocument as yt, ListTimeEntriesDocument as bt, ListTopApplicationsDocument as xt, ListUpcomingMeetingsDocument as St, ListUserAllocationsDocument as Ct, ListWorkPatternsDocument as wt, LocationEntryFieldsFragmentDoc as Tt, LogLifeTimeEntryDocument as Et, MeetingActionItemFieldsFragmentDoc as Dt, MeetingFieldsFragmentDoc as Ot, MeetingParticipantFieldsFragmentDoc as kt, MyBalanceTargetsDocument as At, MyContextSharingPolicyDocument as jt, MyDeadTimeRadarDocument as Mt, MyLifeBalanceDocument as Nt, MyLifeGoalsDocument as Pt, MyLifeInWeeksDocument as Ft, MyLifeProfileDocument as It, MyLifeValuesDocument as Lt, MyPersonalDataSummaryDocument as Rt, MyRecommendationPreferencesDocument as zt, MyRecommendationsDocument as Bt, MySourceConsentsDocument as Vt, MyTimeWellSpentDocument as Ht, PomodoroGoalFieldsFragmentDoc as Ut, PomodoroSessionFieldsFragmentDoc as Wt, PomodoroSettingsFieldsFragmentDoc as Gt, ProjectFieldsFragmentDoc as Kt, RateMeetingDocument as qt, RecategorizeTimeCampusCaptureEventDocument as Jt, RecommendationFieldsFragmentDoc as Yt, RecommendationPreferenceFieldsFragmentDoc as Xt, RecordApplicationUsageDocument as Zt, RecordFocusScoreDocument as Qt, RecordGeofenceEventDocument as $t, RecordWorkPatternDocument as en, RegenerateClientPortalShareTokenDocument as tn, RejectExpenseDocument as nn, RejectRequestDocument as rn, RemoveParticipantDocument as an, ReorderTasksDocument as on, RequestRevisionDocument as sn, ResourceAllocationFieldsFragmentDoc as cn, ResourcePlanFieldsFragmentDoc as ln, RevokeSourceConsentDocument as un, SetBalanceTargetDocument as dn, SnoozeRecommendationDocument as fn, SourceConsentFieldsFragmentDoc as pn, StartPomodoroSessionDocument as mn, StartTimerDocument as hn, StopTimerDocument as gn, SubmitApprovalRequestDocument as _n, SubmitExpenseForApprovalDocument as vn, TaskFieldsFragmentDoc as yn, TimeEntryFieldsFragmentDoc as bn, TimelineSegmentFieldsFragmentDoc as xn, TimelineSummaryFieldsFragmentDoc as Sn, ToggleClientPortalDocument as Cn, ToggleGeofenceDocument as wn, UpdateActionItemDocument as Tn, UpdateAllocationDocument as En, UpdateApplicationUsageDocument as Dn, UpdateClientPortalConfigDocument as On, UpdateContextSharingPolicyDocument as kn, UpdateEmailTimeEntryDocument as An, UpdateExpenseDocument as jn, UpdateFocusScoreDocument as Mn, UpdateGeofenceDocument as Nn, UpdateLifeGoalDocument as Pn, UpdateLifeValueDocument as Fn, UpdateLocationEntryDocument as In, UpdateMeetingDocument as Ln, UpdateMyLifeProfileDocument as Rn, UpdateMyRecommendationPreferencesDocument as zn, UpdateParticipantStatusDocument as Bn, UpdatePomodoroGoalDocument as Vn, UpdatePomodoroSettingsDocument as Hn, UpdateProjectDocument as Un, UpdateResourcePlanDocument as Wn, UpdateTaskDocument as Gn, UpdateTaskStatusDocument as Kn, UpdateTimeEntryDocument as qn, UpdateWorkPatternDocument as Jn, WithdrawRequestDocument as Yn, WorkPatternFieldsFragmentDoc as Xn, useAcceptRecommendationMutation as Zn, useActivateResourcePlanMutation as Qn, useAddParticipantMutation as $n, useApproveExpenseMutation as er, useApproveRequestMutation as tr, useArchiveProjectMutation as nr, useBulkCreateAllocationsMutation as rr, useBulkCreateEmailTimeEntriesMutation as ir, useBulkDeleteTimeEntriesMutation as ar, useCalculateFocusScoreMutation as or, useCategorizeApplicationMutation as sr, useCompleteActionItemMutation as cr, useCompletePomodoroSessionMutation as lr, useCreateActionItemMutation as ur, useCreateAllocationMutation as dr, useCreateClientPortalConfigMutation as fr, useCreateEmailTimeEntryMutation as pr, useCreateExpenseMutation as mr, useCreateGeofenceMutation as hr, useCreateLifeGoalMutation as gr, useCreateLocationEntryMutation as _r, useCreateMeetingMutation as vr, useCreatePomodoroGoalMutation as yr, useCreateProjectMutation as br, useCreateResourcePlanMutation as xr, useCreateTaskMutation as Sr, useCreateTimeEntryMutation as Cr, useDeclareLifeValueMutation as wr, useDeleteActionItemMutation as Tr, useDeleteAllocationMutation as Er, useDeleteApplicationUsageMutation as Dr, useDeleteClientPortalConfigMutation as Or, useDeleteEmailTimeEntryMutation as kr, useDeleteExpenseMutation as Ar, useDeleteFocusScoreMutation as jr, useDeleteGeofenceMutation as Mr, useDeleteLifeGoalMutation as Nr, useDeleteLifeValueMutation as Pr, useDeleteLocationEntryMutation as Fr, useDeleteMeetingMutation as Ir, useDeletePomodoroGoalMutation as Lr, useDeleteProjectMutation as Rr, useDeleteResourcePlanMutation as zr, useDeleteTaskMutation as Br, useDeleteTimeCampusCaptureEventMutation as Vr, useDeleteTimeEntryMutation as Hr, useDeleteWorkPatternMutation as Ur, useDismissRecommendationMutation as Wr, useDuplicateTimeEntryMutation as Gr, useGenerateMyRecommendationsMutation as Kr, useGetActiveLocationEntryLazyQuery as qr, useGetActiveLocationEntryQuery as Jr, useGetActiveLocationEntrySuspenseQuery as Yr, useGetActivePomodoroSessionLazyQuery as Xr, useGetActivePomodoroSessionQuery as Zr, useGetActivePomodoroSessionSuspenseQuery as Qr, useGetAppUsageSummaryLazyQuery as $r, useGetAppUsageSummaryQuery as ei, useGetAppUsageSummarySuspenseQuery as ti, useGetApplicationUsageLazyQuery as ni, useGetApplicationUsageQuery as ri, useGetApplicationUsageSuspenseQuery as ii, useGetApprovalRequestLazyQuery as ai, useGetApprovalRequestQuery as oi, useGetApprovalRequestSuspenseQuery as si, useGetApprovalStatsLazyQuery as ci, useGetApprovalStatsQuery as li, useGetApprovalStatsSuspenseQuery as ui, useGetCapacityOverviewLazyQuery as di, useGetCapacityOverviewQuery as fi, useGetCapacityOverviewSuspenseQuery as pi, useGetClientPortalConfigLazyQuery as mi, useGetClientPortalConfigQuery as hi, useGetClientPortalConfigSuspenseQuery as gi, useGetClientPortalStatsLazyQuery as _i, useGetClientPortalStatsQuery as vi, useGetClientPortalStatsSuspenseQuery as yi, useGetEmailTimeEntryLazyQuery as bi, useGetEmailTimeEntryQuery as xi, useGetEmailTimeEntrySuspenseQuery as Si, useGetEmailTrackingStatsLazyQuery as Ci, useGetEmailTrackingStatsQuery as wi, useGetEmailTrackingStatsSuspenseQuery as Ti, useGetExpenseLazyQuery as Ei, useGetExpenseQuery as Di, useGetExpenseStatsLazyQuery as Oi, useGetExpenseStatsQuery as ki, useGetExpenseStatsSuspenseQuery as Ai, useGetExpenseSuspenseQuery as ji, useGetFocusScoreLazyQuery as Mi, useGetFocusScoreQuery as Ni, useGetFocusScoreSummaryLazyQuery as Pi, useGetFocusScoreSummaryQuery as Fi, useGetFocusScoreSummarySuspenseQuery as Ii, useGetFocusScoreSuspenseQuery as Li, useGetFocusScoreTrendLazyQuery as Ri, useGetFocusScoreTrendQuery as zi, useGetFocusScoreTrendSuspenseQuery as Bi, useGetGeofenceLazyQuery as Vi, useGetGeofenceQuery as Hi, useGetGeofenceSuspenseQuery as Ui, useGetLocationEntryLazyQuery as Wi, useGetLocationEntryQuery as Gi, useGetLocationEntrySuspenseQuery as Ki, useGetLocationStatsLazyQuery as qi, useGetLocationStatsQuery as Ji, useGetLocationStatsSuspenseQuery as Yi, useGetMeetingLazyQuery as Xi, useGetMeetingQuery as Zi, useGetMeetingStatsLazyQuery as Qi, useGetMeetingStatsQuery as $i, useGetMeetingStatsSuspenseQuery as ea, useGetMeetingSuspenseQuery as ta, useGetPomodoroSessionLazyQuery as na, useGetPomodoroSessionQuery as ra, useGetPomodoroSessionSuspenseQuery as ia, useGetPomodoroSettingsLazyQuery as aa, useGetPomodoroSettingsQuery as oa, useGetPomodoroSettingsSuspenseQuery as sa, useGetPomodoroStatsLazyQuery as ca, useGetPomodoroStatsQuery as la, useGetPomodoroStatsSuspenseQuery as ua, useGetProjectLazyQuery as da, useGetProjectQuery as fa, useGetProjectStatsLazyQuery as pa, useGetProjectStatsQuery as ma, useGetProjectStatsSuspenseQuery as ha, useGetProjectSuspenseQuery as ga, useGetResourcePlanLazyQuery as _a, useGetResourcePlanQuery as va, useGetResourcePlanSuspenseQuery as ya, useGetTaskLazyQuery as ba, useGetTaskQuery as xa, useGetTaskSuspenseQuery as Sa, useGetTimeCampusTimelineLazyQuery as Ca, useGetTimeCampusTimelineQuery as wa, useGetTimeCampusTimelineSuspenseQuery as Ta, useGetTimeEntryCountLazyQuery as Ea, useGetTimeEntryCountQuery as Da, useGetTimeEntryCountSuspenseQuery as Oa, useGetTimeEntryLazyQuery as ka, useGetTimeEntryQuery as Aa, useGetTimeEntryStatsLazyQuery as ja, useGetTimeEntryStatsQuery as Ma, useGetTimeEntryStatsSuspenseQuery as Na, useGetTimeEntrySuspenseQuery as Pa, useGetTodayFocusScoreLazyQuery as Fa, useGetTodayFocusScoreQuery as Ia, useGetTodayFocusScoreSuspenseQuery as La, useGetTodayWorkPatternLazyQuery as Ra, useGetTodayWorkPatternQuery as za, useGetTodayWorkPatternSuspenseQuery as Ba, useGetWorkPatternLazyQuery as Va, useGetWorkPatternQuery as Ha, useGetWorkPatternSummaryLazyQuery as Ua, useGetWorkPatternSummaryQuery as Wa, useGetWorkPatternSummarySuspenseQuery as Ga, useGetWorkPatternSuspenseQuery as Ka, useGrantSourceConsentMutation as qa, useIngestTimeCampusCaptureEventsMutation as Ja, useInterruptPomodoroSessionMutation as Ya, useLifeTimelineLazyQuery as Xa, useLifeTimelineQuery as Za, useLifeTimelineSuspenseQuery as Qa, useListApplicationUsagesLazyQuery as $a, useListApplicationUsagesQuery as eo, useListApplicationUsagesSuspenseQuery as to, useListApprovalRequestsLazyQuery as no, useListApprovalRequestsQuery as ro, useListApprovalRequestsSuspenseQuery as io, useListClientPortalConfigsLazyQuery as ao, useListClientPortalConfigsQuery as oo, useListClientPortalConfigsSuspenseQuery as so, useListEmailTimeEntriesLazyQuery as co, useListEmailTimeEntriesQuery as lo, useListEmailTimeEntriesSuspenseQuery as uo, useListExpenseCategoriesLazyQuery as fo, useListExpenseCategoriesQuery as po, useListExpenseCategoriesSuspenseQuery as mo, useListExpensesLazyQuery as ho, useListExpensesQuery as go, useListExpensesSuspenseQuery as _o, useListFocusScoresLazyQuery as vo, useListFocusScoresQuery as yo, useListFocusScoresSuspenseQuery as bo, useListGeofenceEventsLazyQuery as xo, useListGeofenceEventsQuery as So, useListGeofenceEventsSuspenseQuery as Co, useListGeofencesLazyQuery as wo, useListGeofencesQuery as To, useListGeofencesSuspenseQuery as Eo, useListLocationEntriesLazyQuery as Do, useListLocationEntriesQuery as Oo, useListLocationEntriesSuspenseQuery as ko, useListMeetingsLazyQuery as Ao, useListMeetingsQuery as jo, useListMeetingsSuspenseQuery as Mo, useListMyApprovalRequestsLazyQuery as No, useListMyApprovalRequestsQuery as Po, useListMyApprovalRequestsSuspenseQuery as Fo, useListPendingApprovalsLazyQuery as Io, useListPendingApprovalsQuery as Lo, useListPendingApprovalsSuspenseQuery as Ro, useListPomodoroGoalsLazyQuery as zo, useListPomodoroGoalsQuery as Bo, useListPomodoroGoalsSuspenseQuery as Vo, useListPomodoroSessionsLazyQuery as Ho, useListPomodoroSessionsQuery as Uo, useListPomodoroSessionsSuspenseQuery as Wo, useListProjectsLazyQuery as Go, useListProjectsQuery as Ko, useListProjectsSuspenseQuery as qo, useListResourceAllocationsLazyQuery as Jo, useListResourceAllocationsQuery as Yo, useListResourceAllocationsSuspenseQuery as Xo, useListResourcePlansLazyQuery as Zo, useListResourcePlansQuery as Qo, useListResourcePlansSuspenseQuery as $o, useListRunningTimersLazyQuery as es, useListRunningTimersQuery as ts, useListRunningTimersSuspenseQuery as ns, useListTasksLazyQuery as rs, useListTasksQuery as is, useListTasksSuspenseQuery as as, useListTimeCampusCaptureEventsLazyQuery as os, useListTimeCampusCaptureEventsQuery as ss, useListTimeCampusCaptureEventsSuspenseQuery as cs, useListTimeEntriesByDateLazyQuery as ls, useListTimeEntriesByDateQuery as us, useListTimeEntriesByDateSuspenseQuery as ds, useListTimeEntriesLazyQuery as fs, useListTimeEntriesQuery as ps, useListTimeEntriesSuspenseQuery as ms, useListTopApplicationsLazyQuery as hs, useListTopApplicationsQuery as gs, useListTopApplicationsSuspenseQuery as _s, useListUpcomingMeetingsLazyQuery as vs, useListUpcomingMeetingsQuery as ys, useListUpcomingMeetingsSuspenseQuery as bs, useListUserAllocationsLazyQuery as xs, useListUserAllocationsQuery as Ss, useListUserAllocationsSuspenseQuery as Cs, useListWorkPatternsLazyQuery as ws, useListWorkPatternsQuery as Ts, useListWorkPatternsSuspenseQuery as Es, useLogLifeTimeEntryMutation as Ds, useMyBalanceTargetsLazyQuery as Os, useMyBalanceTargetsQuery as ks, useMyBalanceTargetsSuspenseQuery as As, useMyContextSharingPolicyLazyQuery as js, useMyContextSharingPolicyQuery as Ms, useMyContextSharingPolicySuspenseQuery as Ns, useMyDeadTimeRadarLazyQuery as Ps, useMyDeadTimeRadarQuery as Fs, useMyDeadTimeRadarSuspenseQuery as Is, useMyLifeBalanceLazyQuery as Ls, useMyLifeBalanceQuery as Rs, useMyLifeBalanceSuspenseQuery as zs, useMyLifeGoalsLazyQuery as Bs, useMyLifeGoalsQuery as Vs, useMyLifeGoalsSuspenseQuery as Hs, useMyLifeInWeeksLazyQuery as Us, useMyLifeInWeeksQuery as Ws, useMyLifeInWeeksSuspenseQuery as Gs, useMyLifeProfileLazyQuery as Ks, useMyLifeProfileQuery as qs, useMyLifeProfileSuspenseQuery as Js, useMyLifeValuesLazyQuery as Ys, useMyLifeValuesQuery as Xs, useMyLifeValuesSuspenseQuery as Zs, useMyPersonalDataSummaryLazyQuery as Qs, useMyPersonalDataSummaryQuery as $s, useMyPersonalDataSummarySuspenseQuery as ec, useMyRecommendationPreferencesLazyQuery as tc, useMyRecommendationPreferencesQuery as nc, useMyRecommendationPreferencesSuspenseQuery as rc, useMyRecommendationsLazyQuery as ic, useMyRecommendationsQuery as ac, useMyRecommendationsSuspenseQuery as oc, useMySourceConsentsLazyQuery as sc, useMySourceConsentsQuery as cc, useMySourceConsentsSuspenseQuery as lc, useMyTimeWellSpentLazyQuery as uc, useMyTimeWellSpentQuery as dc, useMyTimeWellSpentSuspenseQuery as fc, useRateMeetingMutation as pc, useRecategorizeTimeCampusCaptureEventMutation as mc, useRecordApplicationUsageMutation as hc, useRecordFocusScoreMutation as gc, useRecordGeofenceEventMutation as _c, useRecordWorkPatternMutation as vc, useRegenerateClientPortalShareTokenMutation as yc, useRejectExpenseMutation as bc, useRejectRequestMutation as xc, useRemoveParticipantMutation as Sc, useReorderTasksMutation as Cc, useRequestRevisionMutation as wc, useRevokeSourceConsentMutation as Tc, useSetBalanceTargetMutation as Ec, useSnoozeRecommendationMutation as Dc, useStartPomodoroSessionMutation as Oc, useStartTimerMutation as kc, useStopTimerMutation as Ac, useSubmitApprovalRequestMutation as jc, useSubmitExpenseForApprovalMutation as Mc, useToggleClientPortalMutation as Nc, useToggleGeofenceMutation as Pc, useUpdateActionItemMutation as Fc, useUpdateAllocationMutation as Ic, useUpdateApplicationUsageMutation as Lc, useUpdateClientPortalConfigMutation as Rc, useUpdateContextSharingPolicyMutation as zc, useUpdateEmailTimeEntryMutation as Bc, useUpdateExpenseMutation as Vc, useUpdateFocusScoreMutation as Hc, useUpdateGeofenceMutation as Uc, useUpdateLifeGoalMutation as Wc, useUpdateLifeValueMutation as Gc, useUpdateLocationEntryMutation as Kc, useUpdateMeetingMutation as qc, useUpdateMyLifeProfileMutation as Jc, useUpdateMyRecommendationPreferencesMutation as Yc, useUpdateParticipantStatusMutation as Xc, useUpdatePomodoroGoalMutation as Zc, useUpdatePomodoroSettingsMutation as Qc, useUpdateProjectMutation as $c, useUpdateResourcePlanMutation as el, useUpdateTaskMutation as tl, useUpdateTaskStatusMutation as nl, useUpdateTimeEntryMutation as rl, useUpdateWorkPatternMutation as il, useWithdrawRequestMutation as al } from "./generated/wspace-operations.js";
|
|
3
3
|
import { TimeCampusRoot as ol } from "./timecampus/TimeCampusRoot.js";
|
|
4
4
|
import { useTimeCampusStore as sl } from "./timecampus/store/timecampusStore.js";
|
|
5
|
+
import { useSandboxAssistantTransport as cl } from "./services/createSandboxAssistantTransport.js";
|
|
5
6
|
import "./timecampus/index.js";
|
|
6
|
-
export { n as AcceptRecommendationDocument, r as ActivateResourcePlanDocument, i as AddParticipantDocument, a as ApplicationUsageFieldsFragmentDoc, o as ApprovalRequestFieldsFragmentDoc, s as ApproveExpenseDocument, c as ApproveRequestDocument, l as ArchiveProjectDocument, u as BalanceTargetFieldsFragmentDoc, d as BulkCreateAllocationsDocument, f as BulkCreateEmailTimeEntriesDocument, p as BulkDeleteTimeEntriesDocument, m as CalculateFocusScoreDocument, h as CaptureEventFieldsFragmentDoc, g as CategorizeApplicationDocument, _ as ClientPortalFieldsFragmentDoc, v as CompleteActionItemDocument, y as CompletePomodoroSessionDocument, b as ContextSharingPolicyFieldsFragmentDoc, x as CreateActionItemDocument, S as CreateAllocationDocument, C as CreateClientPortalConfigDocument, w as CreateEmailTimeEntryDocument, T as CreateExpenseDocument, E as CreateGeofenceDocument, D as CreateLifeGoalDocument, O as CreateLocationEntryDocument, k as CreateMeetingDocument, A as CreatePomodoroGoalDocument, j as CreateProjectDocument, M as CreateResourcePlanDocument, N as CreateTaskDocument, P as CreateTimeEntryDocument, F as DeclareLifeValueDocument, I as DeleteActionItemDocument, L as DeleteAllocationDocument, R as DeleteApplicationUsageDocument, z as DeleteClientPortalConfigDocument, B as DeleteEmailTimeEntryDocument, V as DeleteExpenseDocument, H as DeleteFocusScoreDocument, U as DeleteGeofenceDocument, W as DeleteLifeGoalDocument, G as DeleteLifeValueDocument, K as DeleteLocationEntryDocument, q as DeleteMeetingDocument, J as DeletePomodoroGoalDocument, Y as DeleteProjectDocument, X as DeleteResourcePlanDocument, Z as DeleteTaskDocument, Q as DeleteTimeCampusCaptureEventDocument, $ as DeleteTimeEntryDocument, ee as DeleteWorkPatternDocument, te as DismissRecommendationDocument, ne as DuplicateTimeEntryDocument, re as EmailTimeEntryFieldsFragmentDoc, ie as ExpenseFieldsFragmentDoc, ae as FocusScoreFieldsFragmentDoc, oe as GenerateMyRecommendationsDocument, se as GeofenceEventFieldsFragmentDoc, ce as GeofenceFieldsFragmentDoc, le as GetActiveLocationEntryDocument, ue as GetActivePomodoroSessionDocument, de as GetAppUsageSummaryDocument, fe as GetApplicationUsageDocument, pe as GetApprovalRequestDocument, me as GetApprovalStatsDocument, he as GetCapacityOverviewDocument, ge as GetClientPortalConfigDocument, _e as GetClientPortalStatsDocument, ve as GetEmailTimeEntryDocument, ye as GetEmailTrackingStatsDocument, be as GetExpenseDocument, xe as GetExpenseStatsDocument, Se as GetFocusScoreDocument, Ce as GetFocusScoreSummaryDocument, we as GetFocusScoreTrendDocument, Te as GetGeofenceDocument, Ee as GetLocationEntryDocument, De as GetLocationStatsDocument, Oe as GetMeetingDocument, ke as GetMeetingStatsDocument, Ae as GetPomodoroSessionDocument, je as GetPomodoroSettingsDocument, Me as GetPomodoroStatsDocument, Ne as GetProjectDocument, Pe as GetProjectStatsDocument, Fe as GetResourcePlanDocument, Ie as GetTaskDocument, Le as GetTimeCampusTimelineDocument, Re as GetTimeEntryCountDocument, ze as GetTimeEntryDocument, Be as GetTimeEntryStatsDocument, Ve as GetTodayFocusScoreDocument, He as GetTodayWorkPatternDocument, Ue as GetWorkPatternDocument, We as GetWorkPatternSummaryDocument, Ge as GrantSourceConsentDocument, Ke as IngestTimeCampusCaptureEventsDocument, qe as InterruptPomodoroSessionDocument, Je as LifeGoalFieldsFragmentDoc, Ye as LifeProfileFieldsFragmentDoc, Xe as LifeTimelineDocument, Ze as LifeValueFieldsFragmentDoc, Qe as ListApplicationUsagesDocument, $e as ListApprovalRequestsDocument, et as ListClientPortalConfigsDocument, tt as ListEmailTimeEntriesDocument, nt as ListExpenseCategoriesDocument, rt as ListExpensesDocument, it as ListFocusScoresDocument, at as ListGeofenceEventsDocument, ot as ListGeofencesDocument, st as ListLocationEntriesDocument, ct as ListMeetingsDocument, lt as ListMyApprovalRequestsDocument, ut as ListPendingApprovalsDocument, dt as ListPomodoroGoalsDocument, ft as ListPomodoroSessionsDocument, pt as ListProjectsDocument, mt as ListResourceAllocationsDocument, ht as ListResourcePlansDocument, gt as ListRunningTimersDocument, _t as ListTasksDocument, vt as ListTimeCampusCaptureEventsDocument, yt as ListTimeEntriesByDateDocument, bt as ListTimeEntriesDocument, xt as ListTopApplicationsDocument, St as ListUpcomingMeetingsDocument, Ct as ListUserAllocationsDocument, wt as ListWorkPatternsDocument, Tt as LocationEntryFieldsFragmentDoc, Et as LogLifeTimeEntryDocument, Dt as MeetingActionItemFieldsFragmentDoc, Ot as MeetingFieldsFragmentDoc, kt as MeetingParticipantFieldsFragmentDoc, At as MyBalanceTargetsDocument, jt as MyContextSharingPolicyDocument, Mt as MyDeadTimeRadarDocument, Nt as MyLifeBalanceDocument, Pt as MyLifeGoalsDocument, Ft as MyLifeInWeeksDocument, It as MyLifeProfileDocument, Lt as MyLifeValuesDocument, Rt as MyPersonalDataSummaryDocument, zt as MyRecommendationPreferencesDocument, Bt as MyRecommendationsDocument, Vt as MySourceConsentsDocument, Ht as MyTimeWellSpentDocument, Ut as PomodoroGoalFieldsFragmentDoc, Wt as PomodoroSessionFieldsFragmentDoc, Gt as PomodoroSettingsFieldsFragmentDoc, Kt as ProjectFieldsFragmentDoc, qt as RateMeetingDocument, Jt as RecategorizeTimeCampusCaptureEventDocument, Yt as RecommendationFieldsFragmentDoc, Xt as RecommendationPreferenceFieldsFragmentDoc, Zt as RecordApplicationUsageDocument, Qt as RecordFocusScoreDocument, $t as RecordGeofenceEventDocument, en as RecordWorkPatternDocument, tn as RegenerateClientPortalShareTokenDocument, nn as RejectExpenseDocument, rn as RejectRequestDocument, an as RemoveParticipantDocument, on as ReorderTasksDocument, sn as RequestRevisionDocument, cn as ResourceAllocationFieldsFragmentDoc, ln as ResourcePlanFieldsFragmentDoc, un as RevokeSourceConsentDocument, dn as SetBalanceTargetDocument, fn as SnoozeRecommendationDocument, pn as SourceConsentFieldsFragmentDoc, mn as StartPomodoroSessionDocument, hn as StartTimerDocument, gn as StopTimerDocument, _n as SubmitApprovalRequestDocument, vn as SubmitExpenseForApprovalDocument, yn as TaskFieldsFragmentDoc, ol as TimeCampusRoot, bn as TimeEntryFieldsFragmentDoc, xn as TimelineSegmentFieldsFragmentDoc, Sn as TimelineSummaryFieldsFragmentDoc, Cn as ToggleClientPortalDocument, wn as ToggleGeofenceDocument, Tn as UpdateActionItemDocument, En as UpdateAllocationDocument, Dn as UpdateApplicationUsageDocument, On as UpdateClientPortalConfigDocument, kn as UpdateContextSharingPolicyDocument, An as UpdateEmailTimeEntryDocument, jn as UpdateExpenseDocument, Mn as UpdateFocusScoreDocument, Nn as UpdateGeofenceDocument, Pn as UpdateLifeGoalDocument, Fn as UpdateLifeValueDocument, In as UpdateLocationEntryDocument, Ln as UpdateMeetingDocument, Rn as UpdateMyLifeProfileDocument, zn as UpdateMyRecommendationPreferencesDocument, Bn as UpdateParticipantStatusDocument, Vn as UpdatePomodoroGoalDocument, Hn as UpdatePomodoroSettingsDocument, Un as UpdateProjectDocument, Wn as UpdateResourcePlanDocument, Gn as UpdateTaskDocument, Kn as UpdateTaskStatusDocument, qn as UpdateTimeEntryDocument, Jn as UpdateWorkPatternDocument, Yn as WithdrawRequestDocument, Xn as WorkPatternFieldsFragmentDoc, Zn as useAcceptRecommendationMutation, Qn as useActivateResourcePlanMutation, $n as useAddParticipantMutation, er as useApproveExpenseMutation, tr as useApproveRequestMutation, nr as useArchiveProjectMutation, rr as useBulkCreateAllocationsMutation, ir as useBulkCreateEmailTimeEntriesMutation, ar as useBulkDeleteTimeEntriesMutation, or as useCalculateFocusScoreMutation, sr as useCategorizeApplicationMutation, cr as useCompleteActionItemMutation, lr as useCompletePomodoroSessionMutation, ur as useCreateActionItemMutation, dr as useCreateAllocationMutation, fr as useCreateClientPortalConfigMutation, pr as useCreateEmailTimeEntryMutation, mr as useCreateExpenseMutation, hr as useCreateGeofenceMutation, gr as useCreateLifeGoalMutation, _r as useCreateLocationEntryMutation, vr as useCreateMeetingMutation, yr as useCreatePomodoroGoalMutation, br as useCreateProjectMutation, xr as useCreateResourcePlanMutation, Sr as useCreateTaskMutation, Cr as useCreateTimeEntryMutation, wr as useDeclareLifeValueMutation, Tr as useDeleteActionItemMutation, Er as useDeleteAllocationMutation, Dr as useDeleteApplicationUsageMutation, Or as useDeleteClientPortalConfigMutation, kr as useDeleteEmailTimeEntryMutation, Ar as useDeleteExpenseMutation, jr as useDeleteFocusScoreMutation, Mr as useDeleteGeofenceMutation, Nr as useDeleteLifeGoalMutation, Pr as useDeleteLifeValueMutation, Fr as useDeleteLocationEntryMutation, Ir as useDeleteMeetingMutation, Lr as useDeletePomodoroGoalMutation, Rr as useDeleteProjectMutation, zr as useDeleteResourcePlanMutation, Br as useDeleteTaskMutation, Vr as useDeleteTimeCampusCaptureEventMutation, Hr as useDeleteTimeEntryMutation, Ur as useDeleteWorkPatternMutation, Wr as useDismissRecommendationMutation, Gr as useDuplicateTimeEntryMutation, Kr as useGenerateMyRecommendationsMutation, qr as useGetActiveLocationEntryLazyQuery, Jr as useGetActiveLocationEntryQuery, Yr as useGetActiveLocationEntrySuspenseQuery, Xr as useGetActivePomodoroSessionLazyQuery, Zr as useGetActivePomodoroSessionQuery, Qr as useGetActivePomodoroSessionSuspenseQuery, $r as useGetAppUsageSummaryLazyQuery, ei as useGetAppUsageSummaryQuery, ti as useGetAppUsageSummarySuspenseQuery, ni as useGetApplicationUsageLazyQuery, ri as useGetApplicationUsageQuery, ii as useGetApplicationUsageSuspenseQuery, ai as useGetApprovalRequestLazyQuery, oi as useGetApprovalRequestQuery, si as useGetApprovalRequestSuspenseQuery, ci as useGetApprovalStatsLazyQuery, li as useGetApprovalStatsQuery, ui as useGetApprovalStatsSuspenseQuery, di as useGetCapacityOverviewLazyQuery, fi as useGetCapacityOverviewQuery, pi as useGetCapacityOverviewSuspenseQuery, mi as useGetClientPortalConfigLazyQuery, hi as useGetClientPortalConfigQuery, gi as useGetClientPortalConfigSuspenseQuery, _i as useGetClientPortalStatsLazyQuery, vi as useGetClientPortalStatsQuery, yi as useGetClientPortalStatsSuspenseQuery, bi as useGetEmailTimeEntryLazyQuery, xi as useGetEmailTimeEntryQuery, Si as useGetEmailTimeEntrySuspenseQuery, Ci as useGetEmailTrackingStatsLazyQuery, wi as useGetEmailTrackingStatsQuery, Ti as useGetEmailTrackingStatsSuspenseQuery, Ei as useGetExpenseLazyQuery, Di as useGetExpenseQuery, Oi as useGetExpenseStatsLazyQuery, ki as useGetExpenseStatsQuery, Ai as useGetExpenseStatsSuspenseQuery, ji as useGetExpenseSuspenseQuery, Mi as useGetFocusScoreLazyQuery, Ni as useGetFocusScoreQuery, Pi as useGetFocusScoreSummaryLazyQuery, Fi as useGetFocusScoreSummaryQuery, Ii as useGetFocusScoreSummarySuspenseQuery, Li as useGetFocusScoreSuspenseQuery, Ri as useGetFocusScoreTrendLazyQuery, zi as useGetFocusScoreTrendQuery, Bi as useGetFocusScoreTrendSuspenseQuery, Vi as useGetGeofenceLazyQuery, Hi as useGetGeofenceQuery, Ui as useGetGeofenceSuspenseQuery, Wi as useGetLocationEntryLazyQuery, Gi as useGetLocationEntryQuery, Ki as useGetLocationEntrySuspenseQuery, qi as useGetLocationStatsLazyQuery, Ji as useGetLocationStatsQuery, Yi as useGetLocationStatsSuspenseQuery, Xi as useGetMeetingLazyQuery, Zi as useGetMeetingQuery, Qi as useGetMeetingStatsLazyQuery, $i as useGetMeetingStatsQuery, ea as useGetMeetingStatsSuspenseQuery, ta as useGetMeetingSuspenseQuery, na as useGetPomodoroSessionLazyQuery, ra as useGetPomodoroSessionQuery, ia as useGetPomodoroSessionSuspenseQuery, aa as useGetPomodoroSettingsLazyQuery, oa as useGetPomodoroSettingsQuery, sa as useGetPomodoroSettingsSuspenseQuery, ca as useGetPomodoroStatsLazyQuery, la as useGetPomodoroStatsQuery, ua as useGetPomodoroStatsSuspenseQuery, da as useGetProjectLazyQuery, fa as useGetProjectQuery, pa as useGetProjectStatsLazyQuery, ma as useGetProjectStatsQuery, ha as useGetProjectStatsSuspenseQuery, ga as useGetProjectSuspenseQuery, _a as useGetResourcePlanLazyQuery, va as useGetResourcePlanQuery, ya as useGetResourcePlanSuspenseQuery, ba as useGetTaskLazyQuery, xa as useGetTaskQuery, Sa as useGetTaskSuspenseQuery, Ca as useGetTimeCampusTimelineLazyQuery, wa as useGetTimeCampusTimelineQuery, Ta as useGetTimeCampusTimelineSuspenseQuery, Ea as useGetTimeEntryCountLazyQuery, Da as useGetTimeEntryCountQuery, Oa as useGetTimeEntryCountSuspenseQuery, ka as useGetTimeEntryLazyQuery, Aa as useGetTimeEntryQuery, ja as useGetTimeEntryStatsLazyQuery, Ma as useGetTimeEntryStatsQuery, Na as useGetTimeEntryStatsSuspenseQuery, Pa as useGetTimeEntrySuspenseQuery, Fa as useGetTodayFocusScoreLazyQuery, Ia as useGetTodayFocusScoreQuery, La as useGetTodayFocusScoreSuspenseQuery, Ra as useGetTodayWorkPatternLazyQuery, za as useGetTodayWorkPatternQuery, Ba as useGetTodayWorkPatternSuspenseQuery, Va as useGetWorkPatternLazyQuery, Ha as useGetWorkPatternQuery, Ua as useGetWorkPatternSummaryLazyQuery, Wa as useGetWorkPatternSummaryQuery, Ga as useGetWorkPatternSummarySuspenseQuery, Ka as useGetWorkPatternSuspenseQuery, qa as useGrantSourceConsentMutation, Ja as useIngestTimeCampusCaptureEventsMutation, Ya as useInterruptPomodoroSessionMutation, Xa as useLifeTimelineLazyQuery, Za as useLifeTimelineQuery, Qa as useLifeTimelineSuspenseQuery, $a as useListApplicationUsagesLazyQuery, eo as useListApplicationUsagesQuery, to as useListApplicationUsagesSuspenseQuery, no as useListApprovalRequestsLazyQuery, ro as useListApprovalRequestsQuery, io as useListApprovalRequestsSuspenseQuery, ao as useListClientPortalConfigsLazyQuery, oo as useListClientPortalConfigsQuery, so as useListClientPortalConfigsSuspenseQuery, co as useListEmailTimeEntriesLazyQuery, lo as useListEmailTimeEntriesQuery, uo as useListEmailTimeEntriesSuspenseQuery, fo as useListExpenseCategoriesLazyQuery, po as useListExpenseCategoriesQuery, mo as useListExpenseCategoriesSuspenseQuery, ho as useListExpensesLazyQuery, go as useListExpensesQuery, _o as useListExpensesSuspenseQuery, vo as useListFocusScoresLazyQuery, yo as useListFocusScoresQuery, bo as useListFocusScoresSuspenseQuery, xo as useListGeofenceEventsLazyQuery, So as useListGeofenceEventsQuery, Co as useListGeofenceEventsSuspenseQuery, wo as useListGeofencesLazyQuery, To as useListGeofencesQuery, Eo as useListGeofencesSuspenseQuery, Do as useListLocationEntriesLazyQuery, Oo as useListLocationEntriesQuery, ko as useListLocationEntriesSuspenseQuery, Ao as useListMeetingsLazyQuery, jo as useListMeetingsQuery, Mo as useListMeetingsSuspenseQuery, No as useListMyApprovalRequestsLazyQuery, Po as useListMyApprovalRequestsQuery, Fo as useListMyApprovalRequestsSuspenseQuery, Io as useListPendingApprovalsLazyQuery, Lo as useListPendingApprovalsQuery, Ro as useListPendingApprovalsSuspenseQuery, zo as useListPomodoroGoalsLazyQuery, Bo as useListPomodoroGoalsQuery, Vo as useListPomodoroGoalsSuspenseQuery, Ho as useListPomodoroSessionsLazyQuery, Uo as useListPomodoroSessionsQuery, Wo as useListPomodoroSessionsSuspenseQuery, Go as useListProjectsLazyQuery, Ko as useListProjectsQuery, qo as useListProjectsSuspenseQuery, Jo as useListResourceAllocationsLazyQuery, Yo as useListResourceAllocationsQuery, Xo as useListResourceAllocationsSuspenseQuery, Zo as useListResourcePlansLazyQuery, Qo as useListResourcePlansQuery, $o as useListResourcePlansSuspenseQuery, es as useListRunningTimersLazyQuery, ts as useListRunningTimersQuery, ns as useListRunningTimersSuspenseQuery, rs as useListTasksLazyQuery, is as useListTasksQuery, as as useListTasksSuspenseQuery, os as useListTimeCampusCaptureEventsLazyQuery, ss as useListTimeCampusCaptureEventsQuery, cs as useListTimeCampusCaptureEventsSuspenseQuery, ls as useListTimeEntriesByDateLazyQuery, us as useListTimeEntriesByDateQuery, ds as useListTimeEntriesByDateSuspenseQuery, fs as useListTimeEntriesLazyQuery, ps as useListTimeEntriesQuery, ms as useListTimeEntriesSuspenseQuery, hs as useListTopApplicationsLazyQuery, gs as useListTopApplicationsQuery, _s as useListTopApplicationsSuspenseQuery, vs as useListUpcomingMeetingsLazyQuery, ys as useListUpcomingMeetingsQuery, bs as useListUpcomingMeetingsSuspenseQuery, xs as useListUserAllocationsLazyQuery, Ss as useListUserAllocationsQuery, Cs as useListUserAllocationsSuspenseQuery, ws as useListWorkPatternsLazyQuery, Ts as useListWorkPatternsQuery, Es as useListWorkPatternsSuspenseQuery, Ds as useLogLifeTimeEntryMutation, Os as useMyBalanceTargetsLazyQuery, ks as useMyBalanceTargetsQuery, As as useMyBalanceTargetsSuspenseQuery, js as useMyContextSharingPolicyLazyQuery, Ms as useMyContextSharingPolicyQuery, Ns as useMyContextSharingPolicySuspenseQuery, Ps as useMyDeadTimeRadarLazyQuery, Fs as useMyDeadTimeRadarQuery, Is as useMyDeadTimeRadarSuspenseQuery, Ls as useMyLifeBalanceLazyQuery, Rs as useMyLifeBalanceQuery, zs as useMyLifeBalanceSuspenseQuery, Bs as useMyLifeGoalsLazyQuery, Vs as useMyLifeGoalsQuery, Hs as useMyLifeGoalsSuspenseQuery, Us as useMyLifeInWeeksLazyQuery, Ws as useMyLifeInWeeksQuery, Gs as useMyLifeInWeeksSuspenseQuery, Ks as useMyLifeProfileLazyQuery, qs as useMyLifeProfileQuery, Js as useMyLifeProfileSuspenseQuery, Ys as useMyLifeValuesLazyQuery, Xs as useMyLifeValuesQuery, Zs as useMyLifeValuesSuspenseQuery, Qs as useMyPersonalDataSummaryLazyQuery, $s as useMyPersonalDataSummaryQuery, ec as useMyPersonalDataSummarySuspenseQuery, tc as useMyRecommendationPreferencesLazyQuery, nc as useMyRecommendationPreferencesQuery, rc as useMyRecommendationPreferencesSuspenseQuery, ic as useMyRecommendationsLazyQuery, ac as useMyRecommendationsQuery, oc as useMyRecommendationsSuspenseQuery, sc as useMySourceConsentsLazyQuery, cc as useMySourceConsentsQuery, lc as useMySourceConsentsSuspenseQuery, uc as useMyTimeWellSpentLazyQuery, dc as useMyTimeWellSpentQuery, fc as useMyTimeWellSpentSuspenseQuery, pc as useRateMeetingMutation, mc as useRecategorizeTimeCampusCaptureEventMutation, hc as useRecordApplicationUsageMutation, gc as useRecordFocusScoreMutation, _c as useRecordGeofenceEventMutation, vc as useRecordWorkPatternMutation, yc as useRegenerateClientPortalShareTokenMutation, bc as useRejectExpenseMutation, xc as useRejectRequestMutation, Sc as useRemoveParticipantMutation, Cc as useReorderTasksMutation, wc as useRequestRevisionMutation, Tc as useRevokeSourceConsentMutation, Ec as useSetBalanceTargetMutation, Dc as useSnoozeRecommendationMutation, Oc as useStartPomodoroSessionMutation, kc as useStartTimerMutation, Ac as useStopTimerMutation, jc as useSubmitApprovalRequestMutation, Mc as useSubmitExpenseForApprovalMutation, e as useTimeCampus, t as useTimeCampusNavigate, sl as useTimeCampusStore, Nc as useToggleClientPortalMutation, Pc as useToggleGeofenceMutation, Fc as useUpdateActionItemMutation, Ic as useUpdateAllocationMutation, Lc as useUpdateApplicationUsageMutation, Rc as useUpdateClientPortalConfigMutation, zc as useUpdateContextSharingPolicyMutation, Bc as useUpdateEmailTimeEntryMutation, Vc as useUpdateExpenseMutation, Hc as useUpdateFocusScoreMutation, Uc as useUpdateGeofenceMutation, Wc as useUpdateLifeGoalMutation, Gc as useUpdateLifeValueMutation, Kc as useUpdateLocationEntryMutation, qc as useUpdateMeetingMutation, Jc as useUpdateMyLifeProfileMutation, Yc as useUpdateMyRecommendationPreferencesMutation, Xc as useUpdateParticipantStatusMutation, Zc as useUpdatePomodoroGoalMutation, Qc as useUpdatePomodoroSettingsMutation, $c as useUpdateProjectMutation, el as useUpdateResourcePlanMutation, tl as useUpdateTaskMutation, nl as useUpdateTaskStatusMutation, rl as useUpdateTimeEntryMutation, il as useUpdateWorkPatternMutation, al as useWithdrawRequestMutation };
|
|
7
|
+
export { n as AcceptRecommendationDocument, r as ActivateResourcePlanDocument, i as AddParticipantDocument, a as ApplicationUsageFieldsFragmentDoc, o as ApprovalRequestFieldsFragmentDoc, s as ApproveExpenseDocument, c as ApproveRequestDocument, l as ArchiveProjectDocument, u as BalanceTargetFieldsFragmentDoc, d as BulkCreateAllocationsDocument, f as BulkCreateEmailTimeEntriesDocument, p as BulkDeleteTimeEntriesDocument, m as CalculateFocusScoreDocument, h as CaptureEventFieldsFragmentDoc, g as CategorizeApplicationDocument, _ as ClientPortalFieldsFragmentDoc, v as CompleteActionItemDocument, y as CompletePomodoroSessionDocument, b as ContextSharingPolicyFieldsFragmentDoc, x as CreateActionItemDocument, S as CreateAllocationDocument, C as CreateClientPortalConfigDocument, w as CreateEmailTimeEntryDocument, T as CreateExpenseDocument, E as CreateGeofenceDocument, D as CreateLifeGoalDocument, O as CreateLocationEntryDocument, k as CreateMeetingDocument, A as CreatePomodoroGoalDocument, j as CreateProjectDocument, M as CreateResourcePlanDocument, N as CreateTaskDocument, P as CreateTimeEntryDocument, F as DeclareLifeValueDocument, I as DeleteActionItemDocument, L as DeleteAllocationDocument, R as DeleteApplicationUsageDocument, z as DeleteClientPortalConfigDocument, B as DeleteEmailTimeEntryDocument, V as DeleteExpenseDocument, H as DeleteFocusScoreDocument, U as DeleteGeofenceDocument, W as DeleteLifeGoalDocument, G as DeleteLifeValueDocument, K as DeleteLocationEntryDocument, q as DeleteMeetingDocument, J as DeletePomodoroGoalDocument, Y as DeleteProjectDocument, X as DeleteResourcePlanDocument, Z as DeleteTaskDocument, Q as DeleteTimeCampusCaptureEventDocument, $ as DeleteTimeEntryDocument, ee as DeleteWorkPatternDocument, te as DismissRecommendationDocument, ne as DuplicateTimeEntryDocument, re as EmailTimeEntryFieldsFragmentDoc, ie as ExpenseFieldsFragmentDoc, ae as FocusScoreFieldsFragmentDoc, oe as GenerateMyRecommendationsDocument, se as GeofenceEventFieldsFragmentDoc, ce as GeofenceFieldsFragmentDoc, le as GetActiveLocationEntryDocument, ue as GetActivePomodoroSessionDocument, de as GetAppUsageSummaryDocument, fe as GetApplicationUsageDocument, pe as GetApprovalRequestDocument, me as GetApprovalStatsDocument, he as GetCapacityOverviewDocument, ge as GetClientPortalConfigDocument, _e as GetClientPortalStatsDocument, ve as GetEmailTimeEntryDocument, ye as GetEmailTrackingStatsDocument, be as GetExpenseDocument, xe as GetExpenseStatsDocument, Se as GetFocusScoreDocument, Ce as GetFocusScoreSummaryDocument, we as GetFocusScoreTrendDocument, Te as GetGeofenceDocument, Ee as GetLocationEntryDocument, De as GetLocationStatsDocument, Oe as GetMeetingDocument, ke as GetMeetingStatsDocument, Ae as GetPomodoroSessionDocument, je as GetPomodoroSettingsDocument, Me as GetPomodoroStatsDocument, Ne as GetProjectDocument, Pe as GetProjectStatsDocument, Fe as GetResourcePlanDocument, Ie as GetTaskDocument, Le as GetTimeCampusTimelineDocument, Re as GetTimeEntryCountDocument, ze as GetTimeEntryDocument, Be as GetTimeEntryStatsDocument, Ve as GetTodayFocusScoreDocument, He as GetTodayWorkPatternDocument, Ue as GetWorkPatternDocument, We as GetWorkPatternSummaryDocument, Ge as GrantSourceConsentDocument, Ke as IngestTimeCampusCaptureEventsDocument, qe as InterruptPomodoroSessionDocument, Je as LifeGoalFieldsFragmentDoc, Ye as LifeProfileFieldsFragmentDoc, Xe as LifeTimelineDocument, Ze as LifeValueFieldsFragmentDoc, Qe as ListApplicationUsagesDocument, $e as ListApprovalRequestsDocument, et as ListClientPortalConfigsDocument, tt as ListEmailTimeEntriesDocument, nt as ListExpenseCategoriesDocument, rt as ListExpensesDocument, it as ListFocusScoresDocument, at as ListGeofenceEventsDocument, ot as ListGeofencesDocument, st as ListLocationEntriesDocument, ct as ListMeetingsDocument, lt as ListMyApprovalRequestsDocument, ut as ListPendingApprovalsDocument, dt as ListPomodoroGoalsDocument, ft as ListPomodoroSessionsDocument, pt as ListProjectsDocument, mt as ListResourceAllocationsDocument, ht as ListResourcePlansDocument, gt as ListRunningTimersDocument, _t as ListTasksDocument, vt as ListTimeCampusCaptureEventsDocument, yt as ListTimeEntriesByDateDocument, bt as ListTimeEntriesDocument, xt as ListTopApplicationsDocument, St as ListUpcomingMeetingsDocument, Ct as ListUserAllocationsDocument, wt as ListWorkPatternsDocument, Tt as LocationEntryFieldsFragmentDoc, Et as LogLifeTimeEntryDocument, Dt as MeetingActionItemFieldsFragmentDoc, Ot as MeetingFieldsFragmentDoc, kt as MeetingParticipantFieldsFragmentDoc, At as MyBalanceTargetsDocument, jt as MyContextSharingPolicyDocument, Mt as MyDeadTimeRadarDocument, Nt as MyLifeBalanceDocument, Pt as MyLifeGoalsDocument, Ft as MyLifeInWeeksDocument, It as MyLifeProfileDocument, Lt as MyLifeValuesDocument, Rt as MyPersonalDataSummaryDocument, zt as MyRecommendationPreferencesDocument, Bt as MyRecommendationsDocument, Vt as MySourceConsentsDocument, Ht as MyTimeWellSpentDocument, Ut as PomodoroGoalFieldsFragmentDoc, Wt as PomodoroSessionFieldsFragmentDoc, Gt as PomodoroSettingsFieldsFragmentDoc, Kt as ProjectFieldsFragmentDoc, qt as RateMeetingDocument, Jt as RecategorizeTimeCampusCaptureEventDocument, Yt as RecommendationFieldsFragmentDoc, Xt as RecommendationPreferenceFieldsFragmentDoc, Zt as RecordApplicationUsageDocument, Qt as RecordFocusScoreDocument, $t as RecordGeofenceEventDocument, en as RecordWorkPatternDocument, tn as RegenerateClientPortalShareTokenDocument, nn as RejectExpenseDocument, rn as RejectRequestDocument, an as RemoveParticipantDocument, on as ReorderTasksDocument, sn as RequestRevisionDocument, cn as ResourceAllocationFieldsFragmentDoc, ln as ResourcePlanFieldsFragmentDoc, un as RevokeSourceConsentDocument, dn as SetBalanceTargetDocument, fn as SnoozeRecommendationDocument, pn as SourceConsentFieldsFragmentDoc, mn as StartPomodoroSessionDocument, hn as StartTimerDocument, gn as StopTimerDocument, _n as SubmitApprovalRequestDocument, vn as SubmitExpenseForApprovalDocument, yn as TaskFieldsFragmentDoc, ol as TimeCampusRoot, bn as TimeEntryFieldsFragmentDoc, xn as TimelineSegmentFieldsFragmentDoc, Sn as TimelineSummaryFieldsFragmentDoc, Cn as ToggleClientPortalDocument, wn as ToggleGeofenceDocument, Tn as UpdateActionItemDocument, En as UpdateAllocationDocument, Dn as UpdateApplicationUsageDocument, On as UpdateClientPortalConfigDocument, kn as UpdateContextSharingPolicyDocument, An as UpdateEmailTimeEntryDocument, jn as UpdateExpenseDocument, Mn as UpdateFocusScoreDocument, Nn as UpdateGeofenceDocument, Pn as UpdateLifeGoalDocument, Fn as UpdateLifeValueDocument, In as UpdateLocationEntryDocument, Ln as UpdateMeetingDocument, Rn as UpdateMyLifeProfileDocument, zn as UpdateMyRecommendationPreferencesDocument, Bn as UpdateParticipantStatusDocument, Vn as UpdatePomodoroGoalDocument, Hn as UpdatePomodoroSettingsDocument, Un as UpdateProjectDocument, Wn as UpdateResourcePlanDocument, Gn as UpdateTaskDocument, Kn as UpdateTaskStatusDocument, qn as UpdateTimeEntryDocument, Jn as UpdateWorkPatternDocument, Yn as WithdrawRequestDocument, Xn as WorkPatternFieldsFragmentDoc, Zn as useAcceptRecommendationMutation, Qn as useActivateResourcePlanMutation, $n as useAddParticipantMutation, er as useApproveExpenseMutation, tr as useApproveRequestMutation, nr as useArchiveProjectMutation, rr as useBulkCreateAllocationsMutation, ir as useBulkCreateEmailTimeEntriesMutation, ar as useBulkDeleteTimeEntriesMutation, or as useCalculateFocusScoreMutation, sr as useCategorizeApplicationMutation, cr as useCompleteActionItemMutation, lr as useCompletePomodoroSessionMutation, ur as useCreateActionItemMutation, dr as useCreateAllocationMutation, fr as useCreateClientPortalConfigMutation, pr as useCreateEmailTimeEntryMutation, mr as useCreateExpenseMutation, hr as useCreateGeofenceMutation, gr as useCreateLifeGoalMutation, _r as useCreateLocationEntryMutation, vr as useCreateMeetingMutation, yr as useCreatePomodoroGoalMutation, br as useCreateProjectMutation, xr as useCreateResourcePlanMutation, Sr as useCreateTaskMutation, Cr as useCreateTimeEntryMutation, wr as useDeclareLifeValueMutation, Tr as useDeleteActionItemMutation, Er as useDeleteAllocationMutation, Dr as useDeleteApplicationUsageMutation, Or as useDeleteClientPortalConfigMutation, kr as useDeleteEmailTimeEntryMutation, Ar as useDeleteExpenseMutation, jr as useDeleteFocusScoreMutation, Mr as useDeleteGeofenceMutation, Nr as useDeleteLifeGoalMutation, Pr as useDeleteLifeValueMutation, Fr as useDeleteLocationEntryMutation, Ir as useDeleteMeetingMutation, Lr as useDeletePomodoroGoalMutation, Rr as useDeleteProjectMutation, zr as useDeleteResourcePlanMutation, Br as useDeleteTaskMutation, Vr as useDeleteTimeCampusCaptureEventMutation, Hr as useDeleteTimeEntryMutation, Ur as useDeleteWorkPatternMutation, Wr as useDismissRecommendationMutation, Gr as useDuplicateTimeEntryMutation, Kr as useGenerateMyRecommendationsMutation, qr as useGetActiveLocationEntryLazyQuery, Jr as useGetActiveLocationEntryQuery, Yr as useGetActiveLocationEntrySuspenseQuery, Xr as useGetActivePomodoroSessionLazyQuery, Zr as useGetActivePomodoroSessionQuery, Qr as useGetActivePomodoroSessionSuspenseQuery, $r as useGetAppUsageSummaryLazyQuery, ei as useGetAppUsageSummaryQuery, ti as useGetAppUsageSummarySuspenseQuery, ni as useGetApplicationUsageLazyQuery, ri as useGetApplicationUsageQuery, ii as useGetApplicationUsageSuspenseQuery, ai as useGetApprovalRequestLazyQuery, oi as useGetApprovalRequestQuery, si as useGetApprovalRequestSuspenseQuery, ci as useGetApprovalStatsLazyQuery, li as useGetApprovalStatsQuery, ui as useGetApprovalStatsSuspenseQuery, di as useGetCapacityOverviewLazyQuery, fi as useGetCapacityOverviewQuery, pi as useGetCapacityOverviewSuspenseQuery, mi as useGetClientPortalConfigLazyQuery, hi as useGetClientPortalConfigQuery, gi as useGetClientPortalConfigSuspenseQuery, _i as useGetClientPortalStatsLazyQuery, vi as useGetClientPortalStatsQuery, yi as useGetClientPortalStatsSuspenseQuery, bi as useGetEmailTimeEntryLazyQuery, xi as useGetEmailTimeEntryQuery, Si as useGetEmailTimeEntrySuspenseQuery, Ci as useGetEmailTrackingStatsLazyQuery, wi as useGetEmailTrackingStatsQuery, Ti as useGetEmailTrackingStatsSuspenseQuery, Ei as useGetExpenseLazyQuery, Di as useGetExpenseQuery, Oi as useGetExpenseStatsLazyQuery, ki as useGetExpenseStatsQuery, Ai as useGetExpenseStatsSuspenseQuery, ji as useGetExpenseSuspenseQuery, Mi as useGetFocusScoreLazyQuery, Ni as useGetFocusScoreQuery, Pi as useGetFocusScoreSummaryLazyQuery, Fi as useGetFocusScoreSummaryQuery, Ii as useGetFocusScoreSummarySuspenseQuery, Li as useGetFocusScoreSuspenseQuery, Ri as useGetFocusScoreTrendLazyQuery, zi as useGetFocusScoreTrendQuery, Bi as useGetFocusScoreTrendSuspenseQuery, Vi as useGetGeofenceLazyQuery, Hi as useGetGeofenceQuery, Ui as useGetGeofenceSuspenseQuery, Wi as useGetLocationEntryLazyQuery, Gi as useGetLocationEntryQuery, Ki as useGetLocationEntrySuspenseQuery, qi as useGetLocationStatsLazyQuery, Ji as useGetLocationStatsQuery, Yi as useGetLocationStatsSuspenseQuery, Xi as useGetMeetingLazyQuery, Zi as useGetMeetingQuery, Qi as useGetMeetingStatsLazyQuery, $i as useGetMeetingStatsQuery, ea as useGetMeetingStatsSuspenseQuery, ta as useGetMeetingSuspenseQuery, na as useGetPomodoroSessionLazyQuery, ra as useGetPomodoroSessionQuery, ia as useGetPomodoroSessionSuspenseQuery, aa as useGetPomodoroSettingsLazyQuery, oa as useGetPomodoroSettingsQuery, sa as useGetPomodoroSettingsSuspenseQuery, ca as useGetPomodoroStatsLazyQuery, la as useGetPomodoroStatsQuery, ua as useGetPomodoroStatsSuspenseQuery, da as useGetProjectLazyQuery, fa as useGetProjectQuery, pa as useGetProjectStatsLazyQuery, ma as useGetProjectStatsQuery, ha as useGetProjectStatsSuspenseQuery, ga as useGetProjectSuspenseQuery, _a as useGetResourcePlanLazyQuery, va as useGetResourcePlanQuery, ya as useGetResourcePlanSuspenseQuery, ba as useGetTaskLazyQuery, xa as useGetTaskQuery, Sa as useGetTaskSuspenseQuery, Ca as useGetTimeCampusTimelineLazyQuery, wa as useGetTimeCampusTimelineQuery, Ta as useGetTimeCampusTimelineSuspenseQuery, Ea as useGetTimeEntryCountLazyQuery, Da as useGetTimeEntryCountQuery, Oa as useGetTimeEntryCountSuspenseQuery, ka as useGetTimeEntryLazyQuery, Aa as useGetTimeEntryQuery, ja as useGetTimeEntryStatsLazyQuery, Ma as useGetTimeEntryStatsQuery, Na as useGetTimeEntryStatsSuspenseQuery, Pa as useGetTimeEntrySuspenseQuery, Fa as useGetTodayFocusScoreLazyQuery, Ia as useGetTodayFocusScoreQuery, La as useGetTodayFocusScoreSuspenseQuery, Ra as useGetTodayWorkPatternLazyQuery, za as useGetTodayWorkPatternQuery, Ba as useGetTodayWorkPatternSuspenseQuery, Va as useGetWorkPatternLazyQuery, Ha as useGetWorkPatternQuery, Ua as useGetWorkPatternSummaryLazyQuery, Wa as useGetWorkPatternSummaryQuery, Ga as useGetWorkPatternSummarySuspenseQuery, Ka as useGetWorkPatternSuspenseQuery, qa as useGrantSourceConsentMutation, Ja as useIngestTimeCampusCaptureEventsMutation, Ya as useInterruptPomodoroSessionMutation, Xa as useLifeTimelineLazyQuery, Za as useLifeTimelineQuery, Qa as useLifeTimelineSuspenseQuery, $a as useListApplicationUsagesLazyQuery, eo as useListApplicationUsagesQuery, to as useListApplicationUsagesSuspenseQuery, no as useListApprovalRequestsLazyQuery, ro as useListApprovalRequestsQuery, io as useListApprovalRequestsSuspenseQuery, ao as useListClientPortalConfigsLazyQuery, oo as useListClientPortalConfigsQuery, so as useListClientPortalConfigsSuspenseQuery, co as useListEmailTimeEntriesLazyQuery, lo as useListEmailTimeEntriesQuery, uo as useListEmailTimeEntriesSuspenseQuery, fo as useListExpenseCategoriesLazyQuery, po as useListExpenseCategoriesQuery, mo as useListExpenseCategoriesSuspenseQuery, ho as useListExpensesLazyQuery, go as useListExpensesQuery, _o as useListExpensesSuspenseQuery, vo as useListFocusScoresLazyQuery, yo as useListFocusScoresQuery, bo as useListFocusScoresSuspenseQuery, xo as useListGeofenceEventsLazyQuery, So as useListGeofenceEventsQuery, Co as useListGeofenceEventsSuspenseQuery, wo as useListGeofencesLazyQuery, To as useListGeofencesQuery, Eo as useListGeofencesSuspenseQuery, Do as useListLocationEntriesLazyQuery, Oo as useListLocationEntriesQuery, ko as useListLocationEntriesSuspenseQuery, Ao as useListMeetingsLazyQuery, jo as useListMeetingsQuery, Mo as useListMeetingsSuspenseQuery, No as useListMyApprovalRequestsLazyQuery, Po as useListMyApprovalRequestsQuery, Fo as useListMyApprovalRequestsSuspenseQuery, Io as useListPendingApprovalsLazyQuery, Lo as useListPendingApprovalsQuery, Ro as useListPendingApprovalsSuspenseQuery, zo as useListPomodoroGoalsLazyQuery, Bo as useListPomodoroGoalsQuery, Vo as useListPomodoroGoalsSuspenseQuery, Ho as useListPomodoroSessionsLazyQuery, Uo as useListPomodoroSessionsQuery, Wo as useListPomodoroSessionsSuspenseQuery, Go as useListProjectsLazyQuery, Ko as useListProjectsQuery, qo as useListProjectsSuspenseQuery, Jo as useListResourceAllocationsLazyQuery, Yo as useListResourceAllocationsQuery, Xo as useListResourceAllocationsSuspenseQuery, Zo as useListResourcePlansLazyQuery, Qo as useListResourcePlansQuery, $o as useListResourcePlansSuspenseQuery, es as useListRunningTimersLazyQuery, ts as useListRunningTimersQuery, ns as useListRunningTimersSuspenseQuery, rs as useListTasksLazyQuery, is as useListTasksQuery, as as useListTasksSuspenseQuery, os as useListTimeCampusCaptureEventsLazyQuery, ss as useListTimeCampusCaptureEventsQuery, cs as useListTimeCampusCaptureEventsSuspenseQuery, ls as useListTimeEntriesByDateLazyQuery, us as useListTimeEntriesByDateQuery, ds as useListTimeEntriesByDateSuspenseQuery, fs as useListTimeEntriesLazyQuery, ps as useListTimeEntriesQuery, ms as useListTimeEntriesSuspenseQuery, hs as useListTopApplicationsLazyQuery, gs as useListTopApplicationsQuery, _s as useListTopApplicationsSuspenseQuery, vs as useListUpcomingMeetingsLazyQuery, ys as useListUpcomingMeetingsQuery, bs as useListUpcomingMeetingsSuspenseQuery, xs as useListUserAllocationsLazyQuery, Ss as useListUserAllocationsQuery, Cs as useListUserAllocationsSuspenseQuery, ws as useListWorkPatternsLazyQuery, Ts as useListWorkPatternsQuery, Es as useListWorkPatternsSuspenseQuery, Ds as useLogLifeTimeEntryMutation, Os as useMyBalanceTargetsLazyQuery, ks as useMyBalanceTargetsQuery, As as useMyBalanceTargetsSuspenseQuery, js as useMyContextSharingPolicyLazyQuery, Ms as useMyContextSharingPolicyQuery, Ns as useMyContextSharingPolicySuspenseQuery, Ps as useMyDeadTimeRadarLazyQuery, Fs as useMyDeadTimeRadarQuery, Is as useMyDeadTimeRadarSuspenseQuery, Ls as useMyLifeBalanceLazyQuery, Rs as useMyLifeBalanceQuery, zs as useMyLifeBalanceSuspenseQuery, Bs as useMyLifeGoalsLazyQuery, Vs as useMyLifeGoalsQuery, Hs as useMyLifeGoalsSuspenseQuery, Us as useMyLifeInWeeksLazyQuery, Ws as useMyLifeInWeeksQuery, Gs as useMyLifeInWeeksSuspenseQuery, Ks as useMyLifeProfileLazyQuery, qs as useMyLifeProfileQuery, Js as useMyLifeProfileSuspenseQuery, Ys as useMyLifeValuesLazyQuery, Xs as useMyLifeValuesQuery, Zs as useMyLifeValuesSuspenseQuery, Qs as useMyPersonalDataSummaryLazyQuery, $s as useMyPersonalDataSummaryQuery, ec as useMyPersonalDataSummarySuspenseQuery, tc as useMyRecommendationPreferencesLazyQuery, nc as useMyRecommendationPreferencesQuery, rc as useMyRecommendationPreferencesSuspenseQuery, ic as useMyRecommendationsLazyQuery, ac as useMyRecommendationsQuery, oc as useMyRecommendationsSuspenseQuery, sc as useMySourceConsentsLazyQuery, cc as useMySourceConsentsQuery, lc as useMySourceConsentsSuspenseQuery, uc as useMyTimeWellSpentLazyQuery, dc as useMyTimeWellSpentQuery, fc as useMyTimeWellSpentSuspenseQuery, pc as useRateMeetingMutation, mc as useRecategorizeTimeCampusCaptureEventMutation, hc as useRecordApplicationUsageMutation, gc as useRecordFocusScoreMutation, _c as useRecordGeofenceEventMutation, vc as useRecordWorkPatternMutation, yc as useRegenerateClientPortalShareTokenMutation, bc as useRejectExpenseMutation, xc as useRejectRequestMutation, Sc as useRemoveParticipantMutation, Cc as useReorderTasksMutation, wc as useRequestRevisionMutation, Tc as useRevokeSourceConsentMutation, cl as useSandboxAssistantTransport, Ec as useSetBalanceTargetMutation, Dc as useSnoozeRecommendationMutation, Oc as useStartPomodoroSessionMutation, kc as useStartTimerMutation, Ac as useStopTimerMutation, jc as useSubmitApprovalRequestMutation, Mc as useSubmitExpenseForApprovalMutation, e as useTimeCampus, t as useTimeCampusNavigate, sl as useTimeCampusStore, Nc as useToggleClientPortalMutation, Pc as useToggleGeofenceMutation, Fc as useUpdateActionItemMutation, Ic as useUpdateAllocationMutation, Lc as useUpdateApplicationUsageMutation, Rc as useUpdateClientPortalConfigMutation, zc as useUpdateContextSharingPolicyMutation, Bc as useUpdateEmailTimeEntryMutation, Vc as useUpdateExpenseMutation, Hc as useUpdateFocusScoreMutation, Uc as useUpdateGeofenceMutation, Wc as useUpdateLifeGoalMutation, Gc as useUpdateLifeValueMutation, Kc as useUpdateLocationEntryMutation, qc as useUpdateMeetingMutation, Jc as useUpdateMyLifeProfileMutation, Yc as useUpdateMyRecommendationPreferencesMutation, Xc as useUpdateParticipantStatusMutation, Zc as useUpdatePomodoroGoalMutation, Qc as useUpdatePomodoroSettingsMutation, $c as useUpdateProjectMutation, el as useUpdateResourcePlanMutation, tl as useUpdateTaskMutation, nl as useUpdateTaskStatusMutation, rl as useUpdateTimeEntryMutation, il as useUpdateWorkPatternMutation, al as useWithdrawRequestMutation };
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { gql as e } from "@apollo/client";
|
|
2
|
+
import { print as t } from "graphql";
|
|
3
|
+
//#region src/services/assistantApi.ts
|
|
4
|
+
var n = "burdenoffregistry.azurecr.io", r = "alpha", i = "alpha-delegated-auth-v11", a = "sandbox-app-client-headers-v1", o = e`
|
|
5
|
+
mutation CreateSandbox($input: CreateSandboxInput!) {
|
|
6
|
+
createSandbox(input: $input) {
|
|
7
|
+
id
|
|
8
|
+
name
|
|
9
|
+
status
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`, s = e`
|
|
13
|
+
query GetSandbox($id: ID!, $context: ContextInput!) {
|
|
14
|
+
getSandbox(id: $id, context: $context) {
|
|
15
|
+
id
|
|
16
|
+
status
|
|
17
|
+
errorMessage
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`, c = e`
|
|
21
|
+
query GetActiveSandboxes($context: ContextInput!) {
|
|
22
|
+
getActiveSandboxes(context: $context) {
|
|
23
|
+
id
|
|
24
|
+
name
|
|
25
|
+
status
|
|
26
|
+
metadata
|
|
27
|
+
template
|
|
28
|
+
createdBy
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
`, l = e`
|
|
32
|
+
mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {
|
|
33
|
+
proxySandboxRequest(input: $input) {
|
|
34
|
+
status
|
|
35
|
+
body
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`, u = e`
|
|
39
|
+
mutation ExtendSandboxTtl(
|
|
40
|
+
$id: ID!
|
|
41
|
+
$additionalSeconds: Int!
|
|
42
|
+
$context: ContextInput!
|
|
43
|
+
) {
|
|
44
|
+
extendSandboxTTL(
|
|
45
|
+
id: $id
|
|
46
|
+
additionalSeconds: $additionalSeconds
|
|
47
|
+
context: $context
|
|
48
|
+
) {
|
|
49
|
+
id
|
|
50
|
+
expiresAt
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
function d(e) {
|
|
55
|
+
return e === "assistant" || e === "api-calls" ? i : r;
|
|
56
|
+
}
|
|
57
|
+
function f(e) {
|
|
58
|
+
return `${n}/wspace/ai-assistant-${e === "assistant" ? "api-calls" : e}:${d(e)}`;
|
|
59
|
+
}
|
|
60
|
+
function p(e) {
|
|
61
|
+
return e === "general" ? {
|
|
62
|
+
cpuRequest: "100m",
|
|
63
|
+
cpuLimit: "500m",
|
|
64
|
+
memoryRequest: "256Mi",
|
|
65
|
+
memoryLimit: "1Gi"
|
|
66
|
+
} : {
|
|
67
|
+
cpuRequest: "150m",
|
|
68
|
+
cpuLimit: "750m",
|
|
69
|
+
memoryRequest: "384Mi",
|
|
70
|
+
memoryLimit: "1536Mi"
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function m(e) {
|
|
74
|
+
let t = e.metadata?.assistantMode;
|
|
75
|
+
if (t === "assistant" || t === "general" || t === "api-calls") return t;
|
|
76
|
+
let n = e.name ?? "";
|
|
77
|
+
return n.startsWith("ai-assistant-api-calls-") ? "api-calls" : n.startsWith("ai-assistant-general-") ? "general" : n.startsWith("ai-assistant-assistant-") ? "assistant" : null;
|
|
78
|
+
}
|
|
79
|
+
function h(e, t) {
|
|
80
|
+
let n = {};
|
|
81
|
+
return t?.accessToken && (n.authorization = `Bearer ${t.accessToken}`), t?.workspaceToken && (n["x-workspace-authorization"] = `Bearer ${t.workspaceToken}`), e && (n["x-workspace-id"] = e), t?.userId && (n["x-actor-id"] = t.userId, n["x-actor-type"] = "user"), t?.organizationId && (n["x-org-id"] = t.organizationId), Object.keys(n).length > 0 ? { headers: n } : void 0;
|
|
82
|
+
}
|
|
83
|
+
function g(e, t) {
|
|
84
|
+
return {
|
|
85
|
+
workspaceId: e,
|
|
86
|
+
...t?.organizationId ? { custom: { organizationId: t.organizationId } } : {}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function _(e) {
|
|
90
|
+
let n = await fetch("/workspaces/graphql", {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers: {
|
|
93
|
+
"Content-Type": "application/json",
|
|
94
|
+
...h(e.workspaceId, e.authContext)?.headers ?? {}
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
query: t(e.document),
|
|
98
|
+
variables: e.variables
|
|
99
|
+
})
|
|
100
|
+
}), r = await n.json().catch(() => null);
|
|
101
|
+
if (!n.ok) {
|
|
102
|
+
let e = r?.errors?.map((e) => e.message).join(", "), t = Error(e || `Sandbox GraphQL HTTP ${n.status}`);
|
|
103
|
+
throw t.statusCode = n.status, t.result = r ?? void 0, t;
|
|
104
|
+
}
|
|
105
|
+
if (!r) throw Error("Sandbox GraphQL returned empty response");
|
|
106
|
+
if (r.errors?.length) throw Error(r.errors.map((e) => e.message).join(", "));
|
|
107
|
+
if (!r.data) throw Error("Sandbox GraphQL returned no data");
|
|
108
|
+
return r.data;
|
|
109
|
+
}
|
|
110
|
+
async function v(e, t, n, r) {
|
|
111
|
+
return ((await _({
|
|
112
|
+
document: c,
|
|
113
|
+
variables: { context: g(t, r) },
|
|
114
|
+
workspaceId: t,
|
|
115
|
+
authContext: r
|
|
116
|
+
})).getActiveSandboxes ?? []).find((e) => (e.status === "RUNNING" || e.status === "PROVISIONING" || e.status === "PENDING") && e.template === "AI_BUILDER" && m(e) === n && (!r?.userId || e.createdBy === r.userId) && e.metadata?.authStrategy === a && e.metadata?.imageTag === d(n))?.id ?? null;
|
|
117
|
+
}
|
|
118
|
+
async function y(e, t, n, r) {
|
|
119
|
+
let i = p(t), s = [
|
|
120
|
+
{
|
|
121
|
+
name: "AI_ASSISTANT_MODE",
|
|
122
|
+
value: t
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "HOSTNAME",
|
|
126
|
+
value: "0.0.0.0"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "WORKSPACE_ID",
|
|
130
|
+
value: n
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "AI_ASSISTANT_PRODUCT",
|
|
134
|
+
value: "timecampus"
|
|
135
|
+
}
|
|
136
|
+
], c = await _({
|
|
137
|
+
document: o,
|
|
138
|
+
variables: { input: {
|
|
139
|
+
name: `ai-assistant-${t}-${Date.now()}`,
|
|
140
|
+
description: `AI Assistant sandbox (${t} mode)`,
|
|
141
|
+
template: "AI_BUILDER",
|
|
142
|
+
mode: "DEPLOYMENT",
|
|
143
|
+
containers: [{
|
|
144
|
+
name: "ai-assistant",
|
|
145
|
+
image: f(t),
|
|
146
|
+
ports: [{
|
|
147
|
+
containerPort: 8080,
|
|
148
|
+
name: "http"
|
|
149
|
+
}],
|
|
150
|
+
env: s
|
|
151
|
+
}],
|
|
152
|
+
resources: i,
|
|
153
|
+
ttlSeconds: 600,
|
|
154
|
+
metadata: {
|
|
155
|
+
assistantMode: t,
|
|
156
|
+
assistantOwnerUserId: r?.userId ?? null,
|
|
157
|
+
assistantOrganizationId: r?.organizationId ?? null,
|
|
158
|
+
authStrategy: a,
|
|
159
|
+
imageTag: d(t)
|
|
160
|
+
},
|
|
161
|
+
context: g(n, r)
|
|
162
|
+
} },
|
|
163
|
+
workspaceId: n,
|
|
164
|
+
authContext: r
|
|
165
|
+
});
|
|
166
|
+
if (!c?.createSandbox?.id) throw Error("createSandbox returned empty response");
|
|
167
|
+
return c.createSandbox.id;
|
|
168
|
+
}
|
|
169
|
+
async function b(e, t, n, r, i = 3e5) {
|
|
170
|
+
let a = Date.now();
|
|
171
|
+
for (; Date.now() - a < i;) {
|
|
172
|
+
let e = await _({
|
|
173
|
+
document: s,
|
|
174
|
+
variables: {
|
|
175
|
+
id: t,
|
|
176
|
+
context: g(n, r)
|
|
177
|
+
},
|
|
178
|
+
workspaceId: n,
|
|
179
|
+
authContext: r
|
|
180
|
+
}), i = e?.getSandbox?.status, a = e?.getSandbox?.errorMessage;
|
|
181
|
+
if (i === "RUNNING") return;
|
|
182
|
+
if (i === "FAILED" || i === "STOPPED" || i === "EXPIRED") throw Error(a ? `Sandbox ${i.toLowerCase()}: ${a}` : `Sandbox ${i.toLowerCase()}`);
|
|
183
|
+
await new Promise((e) => setTimeout(e, 2e3));
|
|
184
|
+
}
|
|
185
|
+
throw Error("Sandbox startup timed out");
|
|
186
|
+
}
|
|
187
|
+
async function x(e, t, n, r, i, a, o) {
|
|
188
|
+
let s = (await _({
|
|
189
|
+
document: l,
|
|
190
|
+
variables: { input: {
|
|
191
|
+
sandboxId: t,
|
|
192
|
+
path: r,
|
|
193
|
+
method: i,
|
|
194
|
+
body: a,
|
|
195
|
+
context: g(n, o)
|
|
196
|
+
} },
|
|
197
|
+
workspaceId: n,
|
|
198
|
+
authContext: o
|
|
199
|
+
})).proxySandboxRequest;
|
|
200
|
+
if (!s || s.status >= 400) {
|
|
201
|
+
let e = s?.body;
|
|
202
|
+
throw Error(e?.error ?? `Proxy error: ${s?.status ?? "unknown"}`);
|
|
203
|
+
}
|
|
204
|
+
return s.body;
|
|
205
|
+
}
|
|
206
|
+
async function S(e, t, n, r, i = 9e4) {
|
|
207
|
+
let a = Date.now();
|
|
208
|
+
for (; Date.now() - a < i;) {
|
|
209
|
+
try {
|
|
210
|
+
await x(e, t, n, "/health", "GET", void 0, r);
|
|
211
|
+
return;
|
|
212
|
+
} catch (e) {
|
|
213
|
+
let t = e instanceof Error ? e.message : String(e);
|
|
214
|
+
if (!/proxy error: 502|proxy error: 503|proxy error: 404|service not available/i.test(t)) throw e;
|
|
215
|
+
}
|
|
216
|
+
await new Promise((e) => setTimeout(e, 2e3));
|
|
217
|
+
}
|
|
218
|
+
throw Error("Assistant service did not become healthy before timeout");
|
|
219
|
+
}
|
|
220
|
+
async function C(e, t, n, r, i) {
|
|
221
|
+
return { sessionId: (await x(e, t, n, "/sessions", "POST", { mode: r }, i)).session.id };
|
|
222
|
+
}
|
|
223
|
+
async function w(e, t, n, r, i, a, o, s) {
|
|
224
|
+
await x(e, t, n, `/sessions/${r}/prompt-async`, "POST", {
|
|
225
|
+
mode: a,
|
|
226
|
+
prompt: i,
|
|
227
|
+
pageContext: o ?? void 0
|
|
228
|
+
}, s);
|
|
229
|
+
}
|
|
230
|
+
async function T(e, t, n, r, i, a = 50) {
|
|
231
|
+
return (await x(e, t, n, `/sessions/${r}/messages?limit=${a}`, "GET", void 0, i)).messages ?? [];
|
|
232
|
+
}
|
|
233
|
+
async function E(e, t, n, r = 600, i) {
|
|
234
|
+
await _({
|
|
235
|
+
document: u,
|
|
236
|
+
variables: {
|
|
237
|
+
id: t,
|
|
238
|
+
additionalSeconds: r,
|
|
239
|
+
context: g(n, i)
|
|
240
|
+
},
|
|
241
|
+
workspaceId: n,
|
|
242
|
+
authContext: i
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
246
|
+
export { y as createAssistantSandbox, C as createAssistantSession, E as extendAssistantSandboxTTL, v as findExistingSandbox, T as getAssistantMessages, w as sendAssistantPromptAsync, S as waitForAssistantServiceReady, b as waitForSandboxReady };
|
|
247
|
+
|
|
248
|
+
//# sourceMappingURL=assistantApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistantApi.js","names":[],"sources":["../../src/services/assistantApi.ts"],"sourcesContent":["/**\n * AI Assistant API service for TimeCampus.\n *\n * All requests go through the wspace-public-gateway (GraphQL Federation):\n * Frontend → wspace-public-gateway → wspace-sandbox-svc → ai-assistant pod\n */\n\nimport { gql } from \"@apollo/client\";\nimport type { ApolloClient } from \"@apollo/client\";\nimport { print } from \"graphql\";\nimport type { AssistantMode } from \"@/types/assistant\";\nimport type { PageContext } from \"@/utils/pageContext\";\n\nconst HARBOR_REGISTRY = \"burdenoffregistry.azurecr.io\";\nconst DEFAULT_IMAGE_TAG =\n import.meta.env.VITE_APP_ENV === \"prod\" ? \"prod\" : \"alpha\";\nconst API_CALLS_IMAGE_TAG =\n import.meta.env.VITE_APP_ENV === \"prod\" ? \"prod\" : \"alpha-delegated-auth-v11\";\nconst ASSISTANT_API_AUTH_STRATEGY = \"sandbox-app-client-headers-v1\";\n\nconst CreateSandboxDocument = gql`\n mutation CreateSandbox($input: CreateSandboxInput!) {\n createSandbox(input: $input) {\n id\n name\n status\n }\n }\n`;\n\nconst GetSandboxDocument = gql`\n query GetSandbox($id: ID!, $context: ContextInput!) {\n getSandbox(id: $id, context: $context) {\n id\n status\n errorMessage\n }\n }\n`;\n\nconst GetActiveSandboxesDocument = gql`\n query GetActiveSandboxes($context: ContextInput!) {\n getActiveSandboxes(context: $context) {\n id\n name\n status\n metadata\n template\n createdBy\n }\n }\n`;\n\nconst ProxySandboxRequestDocument = gql`\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) {\n status\n body\n }\n }\n`;\n\nconst ExtendSandboxTtlDocument = gql`\n mutation ExtendSandboxTtl(\n $id: ID!\n $additionalSeconds: Int!\n $context: ContextInput!\n ) {\n extendSandboxTTL(\n id: $id\n additionalSeconds: $additionalSeconds\n context: $context\n ) {\n id\n expiresAt\n }\n }\n`;\n\nfunction getImageTagForMode(mode: AssistantMode): string {\n return mode === \"assistant\" || mode === \"api-calls\"\n ? API_CALLS_IMAGE_TAG\n : DEFAULT_IMAGE_TAG;\n}\n\nfunction getImageForMode(mode: AssistantMode): string {\n const imageMode = mode === \"assistant\" ? \"api-calls\" : mode;\n return `${HARBOR_REGISTRY}/wspace/ai-assistant-${imageMode}:${getImageTagForMode(mode)}`;\n}\n\nfunction getResourcesForMode(mode: AssistantMode): {\n cpuRequest: string;\n cpuLimit: string;\n memoryRequest: string;\n memoryLimit: string;\n} {\n return mode === \"general\"\n ? {\n cpuRequest: \"100m\",\n cpuLimit: \"500m\",\n memoryRequest: \"256Mi\",\n memoryLimit: \"1Gi\",\n }\n : {\n cpuRequest: \"150m\",\n cpuLimit: \"750m\",\n memoryRequest: \"384Mi\",\n memoryLimit: \"1536Mi\",\n };\n}\n\nfunction resolveSandboxAssistantMode(sandbox: {\n metadata: Record<string, unknown> | null;\n name?: string | null;\n}): AssistantMode | null {\n const metadataMode = sandbox.metadata?.assistantMode;\n if (\n metadataMode === \"assistant\" ||\n metadataMode === \"general\" ||\n metadataMode === \"api-calls\"\n ) {\n return metadataMode;\n }\n\n const name = sandbox.name ?? \"\";\n if (name.startsWith(\"ai-assistant-api-calls-\")) return \"api-calls\";\n if (name.startsWith(\"ai-assistant-general-\")) return \"general\";\n if (name.startsWith(\"ai-assistant-assistant-\")) return \"assistant\";\n return null;\n}\n\nexport interface AssistantRawMessagePart {\n type?: string;\n text?: string;\n tool?: string;\n state?: {\n status?: string;\n input?: unknown;\n output?: unknown;\n raw?: unknown;\n };\n}\n\nexport interface AssistantRawMessage {\n info?: {\n id?: string;\n role?: string;\n providerID?: string;\n modelID?: string;\n tokens?: { input: number; output: number };\n time?: {\n created?: number;\n completed?: number;\n };\n };\n parts?: AssistantRawMessagePart[];\n}\n\nexport interface AssistantSandboxAuthContext {\n accessToken?: string | null;\n workspaceToken?: string | null;\n userId?: string | null;\n organizationId?: string | null;\n}\n\ninterface GraphQLResponse<TData> {\n data?: TData;\n errors?: Array<{ message: string }>;\n}\n\nfunction getGatewayRequestContext(\n workspaceId: string,\n authContext?: AssistantSandboxAuthContext,\n): { headers?: Record<string, string> } | undefined {\n const headers: Record<string, string> = {};\n if (authContext?.accessToken)\n headers.authorization = `Bearer ${authContext.accessToken}`;\n if (authContext?.workspaceToken) {\n headers[\"x-workspace-authorization\"] =\n `Bearer ${authContext.workspaceToken}`;\n }\n if (workspaceId) headers[\"x-workspace-id\"] = workspaceId;\n if (authContext?.userId) {\n headers[\"x-actor-id\"] = authContext.userId;\n headers[\"x-actor-type\"] = \"user\";\n }\n if (authContext?.organizationId)\n headers[\"x-org-id\"] = authContext.organizationId;\n return Object.keys(headers).length > 0 ? { headers } : undefined;\n}\n\nfunction buildSandboxContextInput(\n workspaceId: string,\n authContext?: AssistantSandboxAuthContext,\n): Record<string, unknown> {\n return {\n workspaceId,\n ...(authContext?.organizationId\n ? { custom: { organizationId: authContext.organizationId } }\n : {}),\n };\n}\n\nasync function executeSandboxGraphQL<TData>(params: {\n document: ReturnType<typeof gql>;\n variables: Record<string, unknown>;\n workspaceId: string;\n authContext?: AssistantSandboxAuthContext;\n}): Promise<TData> {\n const response = await fetch(\"/workspaces/graphql\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...(getGatewayRequestContext(params.workspaceId, params.authContext)\n ?.headers ?? {}),\n },\n body: JSON.stringify({\n query: print(params.document),\n variables: params.variables,\n }),\n });\n\n const result = (await response\n .json()\n .catch(() => null)) as GraphQLResponse<TData> | null;\n\n if (!response.ok) {\n const messages = result?.errors?.map((error) => error.message).join(\", \");\n const httpError = new Error(\n messages || `Sandbox GraphQL HTTP ${response.status}`,\n ) as Error & {\n statusCode?: number;\n result?: unknown;\n };\n httpError.statusCode = response.status;\n httpError.result = result ?? undefined;\n throw httpError;\n }\n\n if (!result) throw new Error(\"Sandbox GraphQL returned empty response\");\n if (result.errors?.length)\n throw new Error(result.errors.map((error) => error.message).join(\", \"));\n if (!result.data) throw new Error(\"Sandbox GraphQL returned no data\");\n return result.data;\n}\n\nexport async function findExistingSandbox(\n _apollo: ApolloClient,\n workspaceId: string,\n mode: AssistantMode,\n authContext?: AssistantSandboxAuthContext,\n): Promise<string | null> {\n const data = await executeSandboxGraphQL<{\n getActiveSandboxes: Array<{\n id: string;\n name: string;\n status: string;\n metadata: Record<string, unknown> | null;\n template: string;\n createdBy: string;\n }>;\n }>({\n document: GetActiveSandboxesDocument,\n variables: { context: buildSandboxContextInput(workspaceId, authContext) },\n workspaceId,\n authContext,\n });\n const sandboxes = data.getActiveSandboxes ?? [];\n\n return (\n sandboxes.find(\n (s) =>\n (s.status === \"RUNNING\" ||\n s.status === \"PROVISIONING\" ||\n s.status === \"PENDING\") &&\n s.template === \"AI_BUILDER\" &&\n resolveSandboxAssistantMode(s) === mode &&\n (!authContext?.userId || s.createdBy === authContext.userId) &&\n s.metadata?.authStrategy === ASSISTANT_API_AUTH_STRATEGY &&\n s.metadata?.imageTag === getImageTagForMode(mode),\n )?.id ?? null\n );\n}\n\nexport async function createAssistantSandbox(\n _apollo: ApolloClient,\n mode: AssistantMode,\n workspaceId: string,\n authContext?: AssistantSandboxAuthContext,\n): Promise<string> {\n const resources = getResourcesForMode(mode);\n const env = [\n { name: \"AI_ASSISTANT_MODE\", value: mode },\n { name: \"HOSTNAME\", value: \"0.0.0.0\" },\n { name: \"WORKSPACE_ID\", value: workspaceId },\n { name: \"AI_ASSISTANT_PRODUCT\", value: \"timecampus\" },\n ];\n\n const data = await executeSandboxGraphQL<{ createSandbox: { id: string } }>({\n document: CreateSandboxDocument,\n variables: {\n input: {\n name: `ai-assistant-${mode}-${Date.now()}`,\n description: `AI Assistant sandbox (${mode} mode)`,\n template: \"AI_BUILDER\",\n mode: \"DEPLOYMENT\",\n containers: [\n {\n name: \"ai-assistant\",\n image: getImageForMode(mode),\n ports: [{ containerPort: 8080, name: \"http\" }],\n env,\n },\n ],\n resources,\n ttlSeconds: 600,\n metadata: {\n assistantMode: mode,\n assistantOwnerUserId: authContext?.userId ?? null,\n assistantOrganizationId: authContext?.organizationId ?? null,\n authStrategy: ASSISTANT_API_AUTH_STRATEGY,\n imageTag: getImageTagForMode(mode),\n },\n context: buildSandboxContextInput(workspaceId, authContext),\n },\n },\n workspaceId,\n authContext,\n });\n\n if (!data?.createSandbox?.id)\n throw new Error(\"createSandbox returned empty response\");\n return data.createSandbox.id;\n}\n\nexport async function waitForSandboxReady(\n _apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n authContext?: AssistantSandboxAuthContext,\n maxWaitMs = 300_000,\n): Promise<void> {\n const start = Date.now();\n while (Date.now() - start < maxWaitMs) {\n const data = await executeSandboxGraphQL<{\n getSandbox: { status?: string; errorMessage?: string } | null;\n }>({\n document: GetSandboxDocument,\n variables: {\n id: sandboxId,\n context: buildSandboxContextInput(workspaceId, authContext),\n },\n workspaceId,\n authContext,\n });\n const status = data?.getSandbox?.status;\n const errorMessage = data?.getSandbox?.errorMessage as string | undefined;\n if (status === \"RUNNING\") return;\n if (status === \"FAILED\" || status === \"STOPPED\" || status === \"EXPIRED\") {\n throw new Error(\n errorMessage\n ? `Sandbox ${status.toLowerCase()}: ${errorMessage}`\n : `Sandbox ${status.toLowerCase()}`,\n );\n }\n await new Promise((r) => setTimeout(r, 2000));\n }\n throw new Error(\"Sandbox startup timed out\");\n}\n\ninterface ProxyResponse {\n proxySandboxRequest: {\n status: number;\n body: Record<string, unknown>;\n };\n}\n\nasync function proxyToSandbox(\n _apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n path: string,\n method: string,\n body?: unknown,\n authContext?: AssistantSandboxAuthContext,\n): Promise<Record<string, unknown>> {\n const result = await executeSandboxGraphQL<ProxyResponse>({\n document: ProxySandboxRequestDocument,\n variables: {\n input: {\n sandboxId,\n path,\n method,\n body,\n context: buildSandboxContextInput(workspaceId, authContext),\n },\n },\n workspaceId,\n authContext,\n });\n\n const proxyResult = result.proxySandboxRequest;\n if (!proxyResult || proxyResult.status >= 400) {\n const errBody = proxyResult?.body as Record<string, unknown> | undefined;\n throw new Error(\n (errBody?.error as string) ??\n `Proxy error: ${proxyResult?.status ?? \"unknown\"}`,\n );\n }\n return proxyResult.body;\n}\n\nexport async function waitForAssistantServiceReady(\n apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n authContext?: AssistantSandboxAuthContext,\n maxWaitMs = 90_000,\n): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < maxWaitMs) {\n try {\n await proxyToSandbox(\n apollo,\n sandboxId,\n workspaceId,\n \"/health\",\n \"GET\",\n undefined,\n authContext,\n );\n return;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (\n !/proxy error: 502|proxy error: 503|proxy error: 404|service not available/i.test(\n message,\n )\n ) {\n throw error;\n }\n }\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n throw new Error(\"Assistant service did not become healthy before timeout\");\n}\n\nexport async function createAssistantSession(\n apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n mode: AssistantMode,\n authContext?: AssistantSandboxAuthContext,\n): Promise<{ sessionId: string }> {\n const body = await proxyToSandbox(\n apollo,\n sandboxId,\n workspaceId,\n \"/sessions\",\n \"POST\",\n { mode },\n authContext,\n );\n const session = body.session as Record<string, unknown>;\n return { sessionId: session.id as string };\n}\n\nexport async function sendAssistantPromptAsync(\n apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n sessionId: string,\n prompt: string,\n mode: AssistantMode,\n pageContext?: PageContext,\n authContext?: AssistantSandboxAuthContext,\n): Promise<void> {\n await proxyToSandbox(\n apollo,\n sandboxId,\n workspaceId,\n `/sessions/${sessionId}/prompt-async`,\n \"POST\",\n { mode, prompt, pageContext: pageContext ?? undefined },\n authContext,\n );\n}\n\nexport async function getAssistantMessages(\n apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n sessionId: string,\n authContext?: AssistantSandboxAuthContext,\n limit = 50,\n): Promise<AssistantRawMessage[]> {\n const body = await proxyToSandbox(\n apollo,\n sandboxId,\n workspaceId,\n `/sessions/${sessionId}/messages?limit=${limit}`,\n \"GET\",\n undefined,\n authContext,\n );\n return (body.messages as AssistantRawMessage[] | undefined) ?? [];\n}\n\nexport async function extendAssistantSandboxTTL(\n _apollo: ApolloClient,\n sandboxId: string,\n workspaceId: string,\n additionalSeconds = 600,\n authContext?: AssistantSandboxAuthContext,\n): Promise<void> {\n await executeSandboxGraphQL<{ extendSandboxTTL: { id: string } }>({\n document: ExtendSandboxTtlDocument,\n variables: {\n id: sandboxId,\n additionalSeconds,\n context: buildSandboxContextInput(workspaceId, authContext),\n },\n workspaceId,\n authContext,\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createAssistantSandbox as e, createAssistantSession as t, extendAssistantSandboxTTL as n, findExistingSandbox as r, getAssistantMessages as i, sendAssistantPromptAsync as a, waitForAssistantServiceReady as o, waitForSandboxReady as s } from "./assistantApi.js";
|
|
2
|
+
import { gatherPageContext as c } from "../utils/pageContext.js";
|
|
3
|
+
import { useCallback as l, useMemo as u, useRef as d } from "react";
|
|
4
|
+
import { useGatewayClient as f } from "@burdenoff/fe-libs/shared/graphql";
|
|
5
|
+
import { useAuthToken as p } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
6
|
+
//#region src/services/createSandboxAssistantTransport.ts
|
|
7
|
+
var m = "assistant", h = 18e4, g = 1500, _ = 3e4;
|
|
8
|
+
function v(e) {
|
|
9
|
+
try {
|
|
10
|
+
let t = e === "workspaceId" ? "burdenoff-active-context-workspace" : "burdenoff-active-context-organization", n = localStorage.getItem(t);
|
|
11
|
+
if (n) return n;
|
|
12
|
+
let r = sessionStorage.getItem("bf-active-profile");
|
|
13
|
+
if (!r) return "";
|
|
14
|
+
let i = localStorage.getItem(`bf-p-${r}-context`);
|
|
15
|
+
return i ? JSON.parse(i)[e] ?? "" : "";
|
|
16
|
+
} catch {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function y() {
|
|
21
|
+
return new URLSearchParams(window.location.search).get("workspace") ?? v("workspaceId");
|
|
22
|
+
}
|
|
23
|
+
function b() {
|
|
24
|
+
return new URLSearchParams(window.location.search).get("org") ?? v("organizationId");
|
|
25
|
+
}
|
|
26
|
+
function x(e) {
|
|
27
|
+
return e.info?.time?.created ?? 0;
|
|
28
|
+
}
|
|
29
|
+
function S(e) {
|
|
30
|
+
return (e ?? []).filter((e) => e.type === "text" && typeof e.text == "string").map((e) => e.text?.trim() ?? "").filter(Boolean).join("\n");
|
|
31
|
+
}
|
|
32
|
+
function C(e) {
|
|
33
|
+
return (e ?? []).filter((e) => e.type === "tool" && e.tool).map((e) => {
|
|
34
|
+
let t = e.state?.status ?? "running", n = e.tool ?? "tool";
|
|
35
|
+
return t === "completed" ? `Completed: ${n}` : t === "failed" ? `Failed: ${n}` : `Running: ${n}`;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function w(e, t) {
|
|
39
|
+
let n = e.filter((e) => e.info?.role === "assistant" && x(e) >= t).sort((e, t) => x(e) - x(t));
|
|
40
|
+
if (n.length === 0) return {
|
|
41
|
+
content: "Thinking…",
|
|
42
|
+
done: !1
|
|
43
|
+
};
|
|
44
|
+
let r = n[n.length - 1], i = S(r.parts), a = C(r.parts);
|
|
45
|
+
return {
|
|
46
|
+
content: [i, ...a].filter(Boolean).join("\n\n") || "Thinking…",
|
|
47
|
+
done: !!r.info?.time?.completed && (!!i || a.length > 0)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function T(e) {
|
|
51
|
+
return e.replace(/(Authorization\s*:\s*Bearer\s+)[^\s\n]+/gi, "$1[REDACTED]").replace(/(X-Workspace-Authorization\s*:\s*Bearer\s+)[^\s\n]+/gi, "$1[REDACTED]").replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9._-]+\.[A-Za-z0-9._-]+\b/g, "[REDACTED_JWT]").replace(/\bsk-ant-[A-Za-z0-9-]+\b/g, "[REDACTED_API_KEY]");
|
|
52
|
+
}
|
|
53
|
+
function E(e) {
|
|
54
|
+
let t = e instanceof Error ? e.message.toLowerCase() : String(e).toLowerCase();
|
|
55
|
+
return t.includes("rate limit exceeded") || t.includes("unauthorized") || t.includes("k8s api error 401") ? !1 : [
|
|
56
|
+
"sandbox not found",
|
|
57
|
+
"sandbox is not running",
|
|
58
|
+
"sandbox service not available yet",
|
|
59
|
+
"sandbox failed",
|
|
60
|
+
"sandbox startup timed out",
|
|
61
|
+
"assistant service did not become healthy",
|
|
62
|
+
"proxy error: 404",
|
|
63
|
+
"proxy error: 502",
|
|
64
|
+
"proxy error: 503"
|
|
65
|
+
].some((e) => t.includes(e));
|
|
66
|
+
}
|
|
67
|
+
function D() {
|
|
68
|
+
let v = f("workspace"), { getAccessToken: x, getWorkspaceToken: S, userId: C } = p(), D = d(null), O = d(null), k = l(async (n, i) => {
|
|
69
|
+
let a = D.current;
|
|
70
|
+
if (!a) {
|
|
71
|
+
if (a = await r(v, n, m, i), !a) {
|
|
72
|
+
if (!x()) throw Error("API Calls mode requires an authenticated session. Please sign in again.");
|
|
73
|
+
a = await e(v, m, n, i);
|
|
74
|
+
}
|
|
75
|
+
await s(v, a, n, i), await o(v, a, n, i), D.current = a;
|
|
76
|
+
}
|
|
77
|
+
let c = O.current;
|
|
78
|
+
return c || (c = (await t(v, a, n, m, i)).sessionId, O.current = c), {
|
|
79
|
+
sandboxId: a,
|
|
80
|
+
sessionId: c
|
|
81
|
+
};
|
|
82
|
+
}, [v, x]), A = l(async ({ prompt: e, onProgress: t, signal: r }) => {
|
|
83
|
+
let o = y();
|
|
84
|
+
if (!o) throw Error("The assistant needs an active workspace. Open a workspace and try again.");
|
|
85
|
+
let s = {
|
|
86
|
+
accessToken: x(),
|
|
87
|
+
workspaceToken: S(),
|
|
88
|
+
userId: C,
|
|
89
|
+
organizationId: b()
|
|
90
|
+
}, l = async (u) => {
|
|
91
|
+
try {
|
|
92
|
+
let { sandboxId: l, sessionId: u } = await k(o, s), d = Date.now();
|
|
93
|
+
await a(v, l, o, u, e, m, c(), s);
|
|
94
|
+
let f = Date.now() + h, p = Date.now(), y = w([], d);
|
|
95
|
+
for (; Date.now() < f;) {
|
|
96
|
+
if (r.aborted) throw Error("Cancelled");
|
|
97
|
+
if (y = w(await i(v, l, o, u, s, 50), d), t(T(y.content)), y.done) break;
|
|
98
|
+
Date.now() - p > _ && (await n(v, l, o, 600, s).catch(() => void 0), p = Date.now()), await new Promise((e) => setTimeout(e, g));
|
|
99
|
+
}
|
|
100
|
+
if (!y.done) throw Error("The assistant timed out while responding. Please try again.");
|
|
101
|
+
return { text: T(y.content) };
|
|
102
|
+
} catch (e) {
|
|
103
|
+
if (u === 1 && E(e)) return D.current = null, O.current = null, l(2);
|
|
104
|
+
throw e;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return l(1);
|
|
108
|
+
}, [
|
|
109
|
+
v,
|
|
110
|
+
k,
|
|
111
|
+
x,
|
|
112
|
+
S,
|
|
113
|
+
C
|
|
114
|
+
]);
|
|
115
|
+
return u(() => ({ sendPrompt: A }), [A]);
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
export { D as useSandboxAssistantTransport };
|
|
119
|
+
|
|
120
|
+
//# sourceMappingURL=createSandboxAssistantTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSandboxAssistantTransport.js","names":[],"sources":["../../src/services/createSandboxAssistantTransport.ts"],"sourcesContent":["/**\n * TimeCampus adapter for the shared fe-libs AssistantWidget.\n *\n * Reuses the sandbox `api-calls` agent so the widget can run operations on the\n * current screen via API on the user's behalf.\n */\n\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { useGatewayClient } from \"@burdenoff/fe-libs/shared/graphql\";\nimport { useAuthToken } from \"@burdenoff/fe-libs/shared/providers/shell\";\nimport {\n createAssistantSandbox,\n createAssistantSession,\n extendAssistantSandboxTTL,\n findExistingSandbox,\n getAssistantMessages,\n sendAssistantPromptAsync,\n waitForAssistantServiceReady,\n waitForSandboxReady,\n type AssistantRawMessage,\n type AssistantSandboxAuthContext,\n} from \"./assistantApi\";\nimport { gatherPageContext } from \"@/utils/pageContext\";\nimport type { AssistantMode } from \"@/types/assistant\";\n\ninterface AssistantSendArgs {\n prompt: string;\n onProgress: (partialText: string) => void;\n signal: AbortSignal;\n}\n\nexport interface AssistantTransport {\n sendPrompt: (args: AssistantSendArgs) => Promise<{ text: string }>;\n}\n\nconst MODE: AssistantMode = \"assistant\";\nconst STREAM_BUDGET_MS = 180_000;\nconst POLL_INTERVAL_MS = 1500;\nconst TTL_EXTEND_INTERVAL_MS = 30_000;\n\nfunction getProfileContextValue(key: \"workspaceId\" | \"organizationId\"): string {\n try {\n const activeContextKey =\n key === \"workspaceId\"\n ? \"burdenoff-active-context-workspace\"\n : \"burdenoff-active-context-organization\";\n const activeContextValue = localStorage.getItem(activeContextKey);\n if (activeContextValue) return activeContextValue;\n\n const activeProfileId = sessionStorage.getItem(\"bf-active-profile\");\n if (!activeProfileId) return \"\";\n const raw = localStorage.getItem(`bf-p-${activeProfileId}-context`);\n if (!raw) return \"\";\n const context = JSON.parse(raw) as {\n workspaceId?: string;\n organizationId?: string;\n };\n return context[key] ?? \"\";\n } catch {\n return \"\";\n }\n}\n\nfunction getWorkspaceId(): string {\n const params = new URLSearchParams(window.location.search);\n return params.get(\"workspace\") ?? getProfileContextValue(\"workspaceId\");\n}\n\nfunction getOrganizationId(): string {\n const params = new URLSearchParams(window.location.search);\n return params.get(\"org\") ?? getProfileContextValue(\"organizationId\");\n}\n\nfunction getRawMessageCreatedAt(message: AssistantRawMessage): number {\n return message.info?.time?.created ?? 0;\n}\n\nfunction getAssistantText(parts: AssistantRawMessage[\"parts\"]): string {\n return (parts ?? [])\n .filter((part) => part.type === \"text\" && typeof part.text === \"string\")\n .map((part) => part.text?.trim() ?? \"\")\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction getToolProgress(parts: AssistantRawMessage[\"parts\"]): string[] {\n return (parts ?? [])\n .filter((part) => part.type === \"tool\" && part.tool)\n .map((part) => {\n const status = part.state?.status ?? \"running\";\n const tool = part.tool ?? \"tool\";\n if (status === \"completed\") return `Completed: ${tool}`;\n if (status === \"failed\") return `Failed: ${tool}`;\n return `Running: ${tool}`;\n });\n}\n\nfunction buildProgress(\n messages: AssistantRawMessage[],\n sinceMs: number,\n): { content: string; done: boolean } {\n const relevant = messages\n .filter(\n (message) =>\n message.info?.role === \"assistant\" &&\n getRawMessageCreatedAt(message) >= sinceMs,\n )\n .sort(\n (left, right) =>\n getRawMessageCreatedAt(left) - getRawMessageCreatedAt(right),\n );\n\n if (relevant.length === 0) return { content: \"Thinking…\", done: false };\n\n const latest = relevant[relevant.length - 1]!;\n const text = getAssistantText(latest.parts);\n const toolProgress = getToolProgress(latest.parts);\n const content =\n [text, ...toolProgress].filter(Boolean).join(\"\\n\\n\") || \"Thinking…\";\n\n return {\n content,\n done:\n Boolean(latest.info?.time?.completed) &&\n (Boolean(text) || toolProgress.length > 0),\n };\n}\n\nfunction sanitize(response: string): string {\n return response\n .replace(/(Authorization\\s*:\\s*Bearer\\s+)[^\\s\\n]+/gi, \"$1[REDACTED]\")\n .replace(\n /(X-Workspace-Authorization\\s*:\\s*Bearer\\s+)[^\\s\\n]+/gi,\n \"$1[REDACTED]\",\n )\n .replace(\n /\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9._-]+\\.[A-Za-z0-9._-]+\\b/g,\n \"[REDACTED_JWT]\",\n )\n .replace(/\\bsk-ant-[A-Za-z0-9-]+\\b/g, \"[REDACTED_API_KEY]\");\n}\n\nfunction isRecoverable(error: unknown): boolean {\n const message =\n error instanceof Error\n ? error.message.toLowerCase()\n : String(error).toLowerCase();\n if (\n message.includes(\"rate limit exceeded\") ||\n message.includes(\"unauthorized\") ||\n message.includes(\"k8s api error 401\")\n ) {\n return false;\n }\n return [\n \"sandbox not found\",\n \"sandbox is not running\",\n \"sandbox service not available yet\",\n \"sandbox failed\",\n \"sandbox startup timed out\",\n \"assistant service did not become healthy\",\n \"proxy error: 404\",\n \"proxy error: 502\",\n \"proxy error: 503\",\n ].some((fragment) => message.includes(fragment));\n}\n\nexport function useSandboxAssistantTransport(): AssistantTransport {\n const apollo = useGatewayClient(\"workspace\");\n const { getAccessToken, getWorkspaceToken, userId } = useAuthToken();\n\n const sandboxIdRef = useRef<string | null>(null);\n const sessionIdRef = useRef<string | null>(null);\n\n const ensureRuntime = useCallback(\n async (\n workspaceId: string,\n authContext: AssistantSandboxAuthContext,\n ): Promise<{ sandboxId: string; sessionId: string }> => {\n let sandboxId = sandboxIdRef.current;\n if (!sandboxId) {\n sandboxId = await findExistingSandbox(\n apollo,\n workspaceId,\n MODE,\n authContext,\n );\n if (!sandboxId) {\n if (!getAccessToken()) {\n throw new Error(\n \"API Calls mode requires an authenticated session. Please sign in again.\",\n );\n }\n sandboxId = await createAssistantSandbox(\n apollo,\n MODE,\n workspaceId,\n authContext,\n );\n }\n await waitForSandboxReady(apollo, sandboxId, workspaceId, authContext);\n await waitForAssistantServiceReady(\n apollo,\n sandboxId,\n workspaceId,\n authContext,\n );\n sandboxIdRef.current = sandboxId;\n }\n\n let sessionId = sessionIdRef.current;\n if (!sessionId) {\n const result = await createAssistantSession(\n apollo,\n sandboxId,\n workspaceId,\n MODE,\n authContext,\n );\n sessionId = result.sessionId;\n sessionIdRef.current = sessionId;\n }\n\n return { sandboxId, sessionId };\n },\n [apollo, getAccessToken],\n );\n\n const sendPrompt = useCallback(\n async ({\n prompt,\n onProgress,\n signal,\n }: AssistantSendArgs): Promise<{ text: string }> => {\n const workspaceId = getWorkspaceId();\n if (!workspaceId) {\n throw new Error(\n \"The assistant needs an active workspace. Open a workspace and try again.\",\n );\n }\n const authContext: AssistantSandboxAuthContext = {\n accessToken: getAccessToken(),\n workspaceToken: getWorkspaceToken(),\n userId,\n organizationId: getOrganizationId(),\n };\n\n const run = async (attempt: 1 | 2): Promise<{ text: string }> => {\n try {\n const { sandboxId, sessionId } = await ensureRuntime(\n workspaceId,\n authContext,\n );\n\n const startedAt = Date.now();\n await sendAssistantPromptAsync(\n apollo,\n sandboxId,\n workspaceId,\n sessionId,\n prompt,\n MODE,\n gatherPageContext(),\n authContext,\n );\n\n const timeoutAt = Date.now() + STREAM_BUDGET_MS;\n let lastTtlExtensionAt = Date.now();\n let progress = buildProgress([], startedAt);\n\n while (Date.now() < timeoutAt) {\n if (signal.aborted) throw new Error(\"Cancelled\");\n\n const messages = await getAssistantMessages(\n apollo,\n sandboxId,\n workspaceId,\n sessionId,\n authContext,\n 50,\n );\n progress = buildProgress(messages, startedAt);\n onProgress(sanitize(progress.content));\n if (progress.done) break;\n\n if (Date.now() - lastTtlExtensionAt > TTL_EXTEND_INTERVAL_MS) {\n await extendAssistantSandboxTTL(\n apollo,\n sandboxId,\n workspaceId,\n 600,\n authContext,\n ).catch(() => undefined);\n lastTtlExtensionAt = Date.now();\n }\n\n await new Promise((resolve) =>\n setTimeout(resolve, POLL_INTERVAL_MS),\n );\n }\n\n if (!progress.done) {\n throw new Error(\n \"The assistant timed out while responding. Please try again.\",\n );\n }\n\n return { text: sanitize(progress.content) };\n } catch (error) {\n if (attempt === 1 && isRecoverable(error)) {\n sandboxIdRef.current = null;\n sessionIdRef.current = null;\n return run(2);\n }\n throw error;\n }\n };\n\n return run(1);\n },\n [apollo, ensureRuntime, getAccessToken, getWorkspaceToken, userId],\n );\n\n return useMemo<AssistantTransport>(() => ({ sendPrompt }), [sendPrompt]);\n}\n"],"mappings":"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"}
|