@burdenoff/microfe-timecampus 2026.719.3 → 2026.728.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/generated/wspace-operations.d.ts +680 -0
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.js +1262 -949
  4. package/dist/generated/wspace-operations.js.map +1 -1
  5. package/dist/generated/wspace-types.d.ts +210 -0
  6. package/dist/generated/wspace-types.d.ts.map +1 -1
  7. package/dist/generated/wspace-types.js +5 -3
  8. package/dist/generated/wspace-types.js.map +1 -1
  9. package/dist/index.js +5 -5
  10. package/dist/timecampus/TimeCampusRoot.d.ts.map +1 -1
  11. package/dist/timecampus/TimeCampusRoot.js +81 -73
  12. package/dist/timecampus/TimeCampusRoot.js.map +1 -1
  13. package/dist/timecampus/TimeCampusRoutes.d.ts.map +1 -1
  14. package/dist/timecampus/TimeCampusRoutes.js +17 -13
  15. package/dist/timecampus/TimeCampusRoutes.js.map +1 -1
  16. package/dist/timecampus/components/StatusBadge.d.ts.map +1 -1
  17. package/dist/timecampus/components/StatusBadge.js.map +1 -1
  18. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.d.ts.map +1 -1
  19. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +11 -9
  20. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -1
  21. package/dist/timecampus/pages/invoicing/InvoicingPage.d.ts +2 -0
  22. package/dist/timecampus/pages/invoicing/InvoicingPage.d.ts.map +1 -0
  23. package/dist/timecampus/pages/invoicing/InvoicingPage.js +595 -0
  24. package/dist/timecampus/pages/invoicing/InvoicingPage.js.map +1 -0
  25. package/dist/timecampus/pages/team/TeamAnalyticsPage.d.ts.map +1 -1
  26. package/dist/timecampus/pages/team/TeamAnalyticsPage.js +2 -2
  27. package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -1
  28. package/dist/timecampus/pages/team-activity/TeamActivityPage.d.ts.map +1 -1
  29. package/dist/timecampus/pages/team-activity/TeamActivityPage.js +48 -44
  30. package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -1
  31. package/dist/timecampus/pages/timeline/TimelinePage.d.ts.map +1 -1
  32. package/dist/timecampus/pages/timeline/TimelinePage.js +224 -162
  33. package/dist/timecampus/pages/timeline/TimelinePage.js.map +1 -1
  34. package/dist/timecampus/types/index.d.ts.map +1 -1
  35. package/dist/timecampus/utils/helpers.d.ts.map +1 -1
  36. package/dist/timecampus/utils/helpers.js +3 -1
  37. package/dist/timecampus/utils/helpers.js.map +1 -1
  38. package/dist/types/assistant.d.ts.map +1 -1
  39. package/dist/utils/pageContext.d.ts.map +1 -1
  40. package/dist/utils/pageContext.js +1 -0
  41. package/dist/utils/pageContext.js.map +1 -1
  42. package/package.json +2 -1
@@ -5803,6 +5803,7 @@ export type CreateExpenseInput = {
5803
5803
  description?: InputMaybe<Scalars['String']['input']>;
5804
5804
  notes?: InputMaybe<Scalars['String']['input']>;
5805
5805
  projectId?: InputMaybe<Scalars['ID']['input']>;
5806
+ receiptFileId?: InputMaybe<Scalars['ID']['input']>;
5806
5807
  receiptUrl?: InputMaybe<Scalars['String']['input']>;
5807
5808
  workspaceId: Scalars['ID']['input'];
5808
5809
  };
@@ -11371,6 +11372,8 @@ export type ExpenseEntry = {
11371
11372
  id: Scalars['ID']['output'];
11372
11373
  notes?: Maybe<Scalars['String']['output']>;
11373
11374
  projectId?: Maybe<Scalars['ID']['output']>;
11375
+ receiptDownloadUrl?: Maybe<Scalars['String']['output']>;
11376
+ receiptFileId?: Maybe<Scalars['ID']['output']>;
11374
11377
  receiptUrl?: Maybe<Scalars['String']['output']>;
11375
11378
  status: ExpenseStatus;
11376
11379
  updatedAt: Scalars['DateTime']['output'];
@@ -12965,6 +12968,30 @@ export type GenerateReportInput = {
12965
12968
  parameters?: InputMaybe<Scalars['JSON']['input']>;
12966
12969
  reportId: Scalars['ID']['input'];
12967
12970
  };
12971
+ export type GenerateTimeCampusInvoiceDraftInput = {
12972
+ clientAddress?: InputMaybe<Scalars['String']['input']>;
12973
+ clientEmail?: InputMaybe<Scalars['String']['input']>;
12974
+ clientName: Scalars['String']['input'];
12975
+ /**
12976
+ * Optional link to an existing client portal, so the portal can later expose
12977
+ * this invoice to the client. Not validated against portal permissions here.
12978
+ */
12979
+ clientPortalConfigId?: InputMaybe<Scalars['ID']['input']>;
12980
+ context?: InputMaybe<ContextInput>;
12981
+ currency?: InputMaybe<Scalars['String']['input']>;
12982
+ dueDate?: InputMaybe<Scalars['DateTime']['input']>;
12983
+ notes?: InputMaybe<Scalars['String']['input']>;
12984
+ periodEnd: Scalars['DateTime']['input'];
12985
+ periodStart: Scalars['DateTime']['input'];
12986
+ /**
12987
+ * Restrict aggregation to these projects. Omit to include every billable,
12988
+ * un-invoiced entry in the workspace for the period.
12989
+ */
12990
+ projectIds?: InputMaybe<Array<Scalars['ID']['input']>>;
12991
+ /** Flat percentage applied to the subtotal, e.g. 0.18 for 18%. Defaults to 0. */
12992
+ taxRate?: InputMaybe<Scalars['Float']['input']>;
12993
+ workspaceId: Scalars['ID']['input'];
12994
+ };
12968
12995
  /** AI-generated artifact */
12969
12996
  export type GeneratedArtifact = {
12970
12997
  __typename?: 'GeneratedArtifact';
@@ -19918,6 +19945,7 @@ export type Mutation = {
19918
19945
  deleteTemplate: Scalars['Boolean']['output'];
19919
19946
  deleteTimeCampusCaptureEvent: TimeCampusCaptureEvent;
19920
19947
  deleteTimeCampusConfiguration: TimeCampusConfiguration;
19948
+ deleteTimeCampusInvoiceDraft: Scalars['Boolean']['output'];
19921
19949
  deleteTimeCampusProject: TimeCampusProject;
19922
19950
  deleteTimeEntry: TimeEntry;
19923
19951
  /** Soft-delete a tunnel (stops it first if active, then sets deletedAt). */
@@ -20235,6 +20263,7 @@ export type Mutation = {
20235
20263
  generateMovethewheelsReport: GeneratedReport;
20236
20264
  generateMyRecommendations: Array<TimeCampusRecommendation>;
20237
20265
  generateReport: ReportRun;
20266
+ generateTimeCampusInvoiceDraft: TimeCampusInvoice;
20238
20267
  /** Grant permission on a file */
20239
20268
  grantFilePermission: FilePermission;
20240
20269
  /** Grant permission on a folder */
@@ -21679,6 +21708,7 @@ export type Mutation = {
21679
21708
  /** Update a template */
21680
21709
  updateTemplate: DashboardTemplate;
21681
21710
  updateTimeCampusConfiguration: TimeCampusConfiguration;
21711
+ updateTimeCampusInvoiceStatus: TimeCampusInvoice;
21682
21712
  updateTimeCampusProject: TimeCampusProject;
21683
21713
  updateTimeCampusUISession: TimeCampusUiSession;
21684
21714
  updateTimeEntry: TimeEntry;
@@ -25718,6 +25748,14 @@ export type MutationDeleteTimeCampusCaptureEventArgs = {
25718
25748
  export type MutationDeleteTimeCampusConfigurationArgs = {
25719
25749
  id: Scalars['ID']['input'];
25720
25750
  };
25751
+ /**
25752
+ * Base Mutation type with placeholder field.
25753
+ * Extended by individual mutation files.
25754
+ */
25755
+ export type MutationDeleteTimeCampusInvoiceDraftArgs = {
25756
+ id: Scalars['ID']['input'];
25757
+ workspaceId: Scalars['ID']['input'];
25758
+ };
25721
25759
  /**
25722
25760
  * Base Mutation type with placeholder field.
25723
25761
  * Extended by individual mutation files.
@@ -27069,6 +27107,13 @@ export type MutationGenerateMovethewheelsReportArgs = {
27069
27107
  export type MutationGenerateReportArgs = {
27070
27108
  input: GenerateReportInput;
27071
27109
  };
27110
+ /**
27111
+ * Base Mutation type with placeholder field.
27112
+ * Extended by individual mutation files.
27113
+ */
27114
+ export type MutationGenerateTimeCampusInvoiceDraftArgs = {
27115
+ input: GenerateTimeCampusInvoiceDraftInput;
27116
+ };
27072
27117
  /**
27073
27118
  * Base Mutation type with placeholder field.
27074
27119
  * Extended by individual mutation files.
@@ -32680,6 +32725,13 @@ export type MutationUpdateTimeCampusConfigurationArgs = {
32680
32725
  id: Scalars['ID']['input'];
32681
32726
  input: UpdateTimeCampusConfigurationInput;
32682
32727
  };
32728
+ /**
32729
+ * Base Mutation type with placeholder field.
32730
+ * Extended by individual mutation files.
32731
+ */
32732
+ export type MutationUpdateTimeCampusInvoiceStatusArgs = {
32733
+ input: UpdateTimeCampusInvoiceStatusInput;
32734
+ };
32683
32735
  /**
32684
32736
  * Base Mutation type with placeholder field.
32685
32737
  * Extended by individual mutation files.
@@ -37812,6 +37864,8 @@ export type Query = {
37812
37864
  targets: TargetList;
37813
37865
  task?: Maybe<Task>;
37814
37866
  tasks: TaskListResponse;
37867
+ teamWorkPatternSummary: WorkPatternSummary;
37868
+ teamWorkPatterns: Array<TeamWorkPatternEntry>;
37815
37869
  testParserExpression: ParserTestResult;
37816
37870
  thread: MessageConnection;
37817
37871
  timeCampusCaptureEvent?: Maybe<TimeCampusCaptureEvent>;
@@ -37820,6 +37874,11 @@ export type Query = {
37820
37874
  timeCampusConfigurationByKey?: Maybe<TimeCampusConfiguration>;
37821
37875
  timeCampusConfigurationValue?: Maybe<Scalars['JSON']['output']>;
37822
37876
  timeCampusConfigurations: Array<TimeCampusConfiguration>;
37877
+ timeCampusInvoice?: Maybe<TimeCampusInvoice>;
37878
+ timeCampusInvoiceHtml: Scalars['String']['output'];
37879
+ timeCampusInvoicePdf: Scalars['String']['output'];
37880
+ timeCampusInvoiceStats: TimeCampusInvoiceStats;
37881
+ timeCampusInvoices: TimeCampusInvoiceListResponse;
37823
37882
  timeCampusProject?: Maybe<TimeCampusProject>;
37824
37883
  timeCampusProjectStats: ProjectStats;
37825
37884
  timeCampusProjects: TimeCampusProjectListResponse;
@@ -44665,6 +44724,23 @@ export type QueryTasksArgs = {
44665
44724
  pagination?: InputMaybe<PaginationInput>;
44666
44725
  projectId: Scalars['ID']['input'];
44667
44726
  };
44727
+ /**
44728
+ * Base Query type with placeholder field.
44729
+ * Extended by individual query files.
44730
+ */
44731
+ export type QueryTeamWorkPatternSummaryArgs = {
44732
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
44733
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
44734
+ };
44735
+ /**
44736
+ * Base Query type with placeholder field.
44737
+ * Extended by individual query files.
44738
+ */
44739
+ export type QueryTeamWorkPatternsArgs = {
44740
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
44741
+ pagination?: InputMaybe<PaginationInput>;
44742
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
44743
+ };
44668
44744
  /**
44669
44745
  * Base Query type with placeholder field.
44670
44746
  * Extended by individual query files.
@@ -44734,6 +44810,46 @@ export type QueryTimeCampusConfigurationsArgs = {
44734
44810
  scope?: InputMaybe<TimeCampusConfigScope>;
44735
44811
  scopeId?: InputMaybe<Scalars['String']['input']>;
44736
44812
  };
44813
+ /**
44814
+ * Base Query type with placeholder field.
44815
+ * Extended by individual query files.
44816
+ */
44817
+ export type QueryTimeCampusInvoiceArgs = {
44818
+ id: Scalars['ID']['input'];
44819
+ workspaceId: Scalars['ID']['input'];
44820
+ };
44821
+ /**
44822
+ * Base Query type with placeholder field.
44823
+ * Extended by individual query files.
44824
+ */
44825
+ export type QueryTimeCampusInvoiceHtmlArgs = {
44826
+ id: Scalars['ID']['input'];
44827
+ workspaceId: Scalars['ID']['input'];
44828
+ };
44829
+ /**
44830
+ * Base Query type with placeholder field.
44831
+ * Extended by individual query files.
44832
+ */
44833
+ export type QueryTimeCampusInvoicePdfArgs = {
44834
+ id: Scalars['ID']['input'];
44835
+ workspaceId: Scalars['ID']['input'];
44836
+ };
44837
+ /**
44838
+ * Base Query type with placeholder field.
44839
+ * Extended by individual query files.
44840
+ */
44841
+ export type QueryTimeCampusInvoiceStatsArgs = {
44842
+ workspaceId: Scalars['ID']['input'];
44843
+ };
44844
+ /**
44845
+ * Base Query type with placeholder field.
44846
+ * Extended by individual query files.
44847
+ */
44848
+ export type QueryTimeCampusInvoicesArgs = {
44849
+ filter?: InputMaybe<TimeCampusInvoiceFilterInput>;
44850
+ pagination?: InputMaybe<PaginationInput>;
44851
+ workspaceId: Scalars['ID']['input'];
44852
+ };
44737
44853
  /**
44738
44854
  * Base Query type with placeholder field.
44739
44855
  * Extended by individual query files.
@@ -50479,6 +50595,18 @@ export declare enum TaskStatus {
50479
50595
  InReview = "IN_REVIEW",
50480
50596
  Todo = "TODO"
50481
50597
  }
50598
+ /**
50599
+ * A single workspace-wide activity-feed entry: a WorkPattern row logged by some
50600
+ * member of the workspace, paired with that member's resolved display identity.
50601
+ * Backs `teamWorkPatterns` so the Team Activity feed never has to render a raw
50602
+ * userId UUID.
50603
+ */
50604
+ export type TeamWorkPatternEntry = {
50605
+ __typename?: 'TeamWorkPatternEntry';
50606
+ memberAvatar?: Maybe<Scalars['String']['output']>;
50607
+ memberName: Scalars['String']['output'];
50608
+ pattern: WorkPattern;
50609
+ };
50482
50610
  /** Template author type (v1.0) */
50483
50611
  export declare enum TemplateAuthorType {
50484
50612
  Community = "COMMUNITY",
@@ -50736,6 +50864,82 @@ export type TimeCampusIngestCaptureEventsResult = {
50736
50864
  events: Array<TimeCampusCaptureEvent>;
50737
50865
  ingested: Scalars['Int']['output'];
50738
50866
  };
50867
+ export type TimeCampusInvoice = {
50868
+ __typename?: 'TimeCampusInvoice';
50869
+ clientAddress?: Maybe<Scalars['String']['output']>;
50870
+ clientEmail?: Maybe<Scalars['String']['output']>;
50871
+ clientName: Scalars['String']['output'];
50872
+ clientPortalConfigId?: Maybe<Scalars['ID']['output']>;
50873
+ context?: Maybe<Scalars['JSON']['output']>;
50874
+ createdAt: Scalars['DateTime']['output'];
50875
+ createdBy: Scalars['String']['output'];
50876
+ currency: Scalars['String']['output'];
50877
+ deletedAt?: Maybe<Scalars['DateTime']['output']>;
50878
+ dueDate?: Maybe<Scalars['DateTime']['output']>;
50879
+ id: Scalars['ID']['output'];
50880
+ invoiceNumber: Scalars['String']['output'];
50881
+ /**
50882
+ * True when the invoice is still SENT (not PAID) and past its due date.
50883
+ * Computed on every read rather than stored — see module header for why a
50884
+ * persisted OVERDUE status is deferred.
50885
+ */
50886
+ isOverdue: Scalars['Boolean']['output'];
50887
+ issueDate: Scalars['DateTime']['output'];
50888
+ lineItems: Array<TimeCampusInvoiceLineItem>;
50889
+ notes?: Maybe<Scalars['String']['output']>;
50890
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
50891
+ paidAt?: Maybe<Scalars['DateTime']['output']>;
50892
+ periodEnd: Scalars['DateTime']['output'];
50893
+ periodStart: Scalars['DateTime']['output'];
50894
+ sentAt?: Maybe<Scalars['DateTime']['output']>;
50895
+ status: TimeCampusInvoiceStatus;
50896
+ subtotal: Scalars['Float']['output'];
50897
+ taxAmount: Scalars['Float']['output'];
50898
+ taxRate: Scalars['Float']['output'];
50899
+ total: Scalars['Float']['output'];
50900
+ updatedAt: Scalars['DateTime']['output'];
50901
+ updatedBy?: Maybe<Scalars['String']['output']>;
50902
+ workspaceId: Scalars['ID']['output'];
50903
+ };
50904
+ export type TimeCampusInvoiceFilterInput = {
50905
+ clientName?: InputMaybe<Scalars['String']['input']>;
50906
+ dateFrom?: InputMaybe<Scalars['DateTime']['input']>;
50907
+ dateTo?: InputMaybe<Scalars['DateTime']['input']>;
50908
+ status?: InputMaybe<TimeCampusInvoiceStatus>;
50909
+ };
50910
+ export type TimeCampusInvoiceLineItem = {
50911
+ __typename?: 'TimeCampusInvoiceLineItem';
50912
+ amount: Scalars['Float']['output'];
50913
+ description: Scalars['String']['output'];
50914
+ id: Scalars['ID']['output'];
50915
+ invoiceId: Scalars['ID']['output'];
50916
+ periodEnd?: Maybe<Scalars['DateTime']['output']>;
50917
+ periodStart?: Maybe<Scalars['DateTime']['output']>;
50918
+ projectId?: Maybe<Scalars['ID']['output']>;
50919
+ quantity: Scalars['Float']['output'];
50920
+ taskId?: Maybe<Scalars['ID']['output']>;
50921
+ unitRate: Scalars['Float']['output'];
50922
+ };
50923
+ export type TimeCampusInvoiceListResponse = {
50924
+ __typename?: 'TimeCampusInvoiceListResponse';
50925
+ hasMore: Scalars['Boolean']['output'];
50926
+ items: Array<TimeCampusInvoice>;
50927
+ total: Scalars['Int']['output'];
50928
+ };
50929
+ export type TimeCampusInvoiceStats = {
50930
+ __typename?: 'TimeCampusInvoiceStats';
50931
+ draftCount: Scalars['Int']['output'];
50932
+ paidCount: Scalars['Int']['output'];
50933
+ sentCount: Scalars['Int']['output'];
50934
+ totalInvoiced: Scalars['Float']['output'];
50935
+ totalOutstanding: Scalars['Float']['output'];
50936
+ totalPaid: Scalars['Float']['output'];
50937
+ };
50938
+ export declare enum TimeCampusInvoiceStatus {
50939
+ Draft = "DRAFT",
50940
+ Paid = "PAID",
50941
+ Sent = "SENT"
50942
+ }
50739
50943
  export type TimeCampusLifeBalance = {
50740
50944
  __typename?: 'TimeCampusLifeBalance';
50741
50945
  byDomain: Array<TimeCampusLifeDomainBalance>;
@@ -52776,6 +52980,7 @@ export type UpdateExpenseInput = {
52776
52980
  description?: InputMaybe<Scalars['String']['input']>;
52777
52981
  notes?: InputMaybe<Scalars['String']['input']>;
52778
52982
  projectId?: InputMaybe<Scalars['ID']['input']>;
52983
+ receiptFileId?: InputMaybe<Scalars['ID']['input']>;
52779
52984
  receiptUrl?: InputMaybe<Scalars['String']['input']>;
52780
52985
  };
52781
52986
  export type UpdateExportJobInput = {
@@ -53910,6 +54115,11 @@ export type UpdateTimeCampusConfigurationInput = {
53910
54115
  isSecret?: InputMaybe<Scalars['Boolean']['input']>;
53911
54116
  value?: InputMaybe<Scalars['JSON']['input']>;
53912
54117
  };
54118
+ export type UpdateTimeCampusInvoiceStatusInput = {
54119
+ id: Scalars['ID']['input'];
54120
+ status: TimeCampusInvoiceStatus;
54121
+ workspaceId: Scalars['ID']['input'];
54122
+ };
53913
54123
  export type UpdateTimeCampusProjectInput = {
53914
54124
  budget?: InputMaybe<Scalars['Float']['input']>;
53915
54125
  clientId?: InputMaybe<Scalars['ID']['input']>;