@cesar-richard/git-connector-sdk 2.5.0 → 2.7.0

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 (3) hide show
  1. package/README.md +76 -2
  2. package/dist/schema.d.ts +1125 -35
  3. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -68,6 +68,22 @@ export interface paths {
68
68
  patch?: never;
69
69
  trace?: never;
70
70
  };
71
+ "/v1/events/stream": {
72
+ parameters: {
73
+ query?: never;
74
+ header?: never;
75
+ path?: never;
76
+ cookie?: never;
77
+ };
78
+ get: operations["getV1EventsStream"];
79
+ put?: never;
80
+ post?: never;
81
+ delete?: never;
82
+ options?: never;
83
+ head?: never;
84
+ patch?: never;
85
+ trace?: never;
86
+ };
71
87
  "/v1/activities": {
72
88
  parameters: {
73
89
  query?: never;
@@ -116,6 +132,22 @@ export interface paths {
116
132
  patch: operations["patchV1ProjectsBySourceByProjectKeyDelivery-rules"];
117
133
  trace?: never;
118
134
  };
135
+ "/v1/projects": {
136
+ parameters: {
137
+ query?: never;
138
+ header?: never;
139
+ path?: never;
140
+ cookie?: never;
141
+ };
142
+ get: operations["getV1Projects"];
143
+ put?: never;
144
+ post?: never;
145
+ delete?: never;
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
119
151
  "/v1/projects/{source}/{projectKey}/labels": {
120
152
  parameters: {
121
153
  query?: never;
@@ -266,6 +298,40 @@ export interface components {
266
298
  provider: "github" | "gitlab";
267
299
  login: string;
268
300
  };
301
+ CiPipelineEventMeta: {
302
+ runId?: (string | number) | null;
303
+ sha?: string | null;
304
+ branch?: string | null;
305
+ status?: string | null;
306
+ conclusion?: string | null;
307
+ startedAt?: string | null;
308
+ completedAt?: string | null;
309
+ durationSec?: number | null;
310
+ } & {
311
+ [key: string]: unknown;
312
+ };
313
+ CiRunEventMeta: {
314
+ runId?: (string | number) | null;
315
+ workflowName?: string | null;
316
+ jobName?: string | null;
317
+ conclusion?: string | null;
318
+ status?: string | null;
319
+ startedAt?: string | null;
320
+ completedAt?: string | null;
321
+ durationSec?: number | null;
322
+ runnerOs?: string | null;
323
+ runnerName?: string | null;
324
+ sha?: string | null;
325
+ branch?: string | null;
326
+ attempts?: (string | number) | null;
327
+ } & {
328
+ [key: string]: unknown;
329
+ };
330
+ CiSummary: {
331
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
332
+ url: string | null;
333
+ finishedAt: string | null;
334
+ };
269
335
  Comment: {
270
336
  id: string;
271
337
  source: "github" | "gitlab";
@@ -276,6 +342,19 @@ export interface components {
276
342
  parentType: "issue" | "pr" | "mr";
277
343
  parentNumber: string | number;
278
344
  };
345
+ CommentEventMeta: {
346
+ body?: string;
347
+ /** @constant */
348
+ commentKind?: "commit";
349
+ } & {
350
+ [key: string]: unknown;
351
+ };
352
+ CommitEventMeta: {
353
+ fullMessage?: string;
354
+ commitAuthorName?: string | null;
355
+ } & {
356
+ [key: string]: unknown;
357
+ };
279
358
  DeliverableAttribution: {
280
359
  isAssignee: boolean;
281
360
  hasOwnCommit: boolean;
@@ -337,7 +416,7 @@ export interface components {
337
416
  externalId: string;
338
417
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
339
418
  number: string | number;
340
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
419
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
341
420
  type: "pr" | "mr";
342
421
  title: string;
343
422
  url: string;
@@ -411,6 +490,12 @@ export interface components {
411
490
  url: string | null;
412
491
  }[];
413
492
  } | null;
493
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
494
+ ci?: {
495
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
496
+ url: string | null;
497
+ finishedAt: string | null;
498
+ } | null;
414
499
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
415
500
  linkSource?: {
416
501
  hintSource: string;
@@ -536,7 +621,7 @@ export interface components {
536
621
  externalId: string;
537
622
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
538
623
  number: string | number;
539
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
624
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
540
625
  type: "pr" | "mr";
541
626
  title: string;
542
627
  url: string;
@@ -610,6 +695,12 @@ export interface components {
610
695
  url: string | null;
611
696
  }[];
612
697
  } | null;
698
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
699
+ ci?: {
700
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
701
+ url: string | null;
702
+ finishedAt: string | null;
703
+ } | null;
613
704
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
614
705
  linkSource?: {
615
706
  hintSource: string;
@@ -728,10 +819,9 @@ export interface components {
728
819
  error: string;
729
820
  };
730
821
  EventsListResponse: {
731
- events: {
822
+ events: ({
732
823
  id: string;
733
824
  source: "github" | "gitlab";
734
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
735
825
  repo: string;
736
826
  externalId: string;
737
827
  day: string;
@@ -741,9 +831,91 @@ export interface components {
741
831
  url: string | null;
742
832
  state: string | null;
743
833
  parentActivityId: string | null;
834
+ authorResolved?: {
835
+ login: string | null;
836
+ name: string | null;
837
+ email: string | null;
838
+ };
839
+ authorIdentity?: {
840
+ id: string | number;
841
+ displayName: string;
842
+ } | null;
843
+ /** @constant */
844
+ type: "commit";
845
+ meta: ({
846
+ fullMessage?: string;
847
+ commitAuthorName?: string | null;
848
+ } & {
849
+ [key: string]: unknown;
850
+ }) | null;
851
+ } | {
852
+ id: string;
853
+ source: "github" | "gitlab";
854
+ repo: string;
855
+ externalId: string;
856
+ day: string;
857
+ occurredAt: string;
858
+ author: string | null;
859
+ title: string;
860
+ url: string | null;
861
+ state: string | null;
862
+ parentActivityId: string | null;
863
+ authorResolved?: {
864
+ login: string | null;
865
+ name: string | null;
866
+ email: string | null;
867
+ };
868
+ authorIdentity?: {
869
+ id: string | number;
870
+ displayName: string;
871
+ } | null;
872
+ /** @constant */
873
+ type: "comment";
874
+ meta: ({
875
+ body?: string;
876
+ /** @constant */
877
+ commentKind?: "commit";
878
+ } & {
879
+ [key: string]: unknown;
880
+ }) | null;
881
+ } | {
882
+ id: string;
883
+ source: "github" | "gitlab";
884
+ repo: string;
885
+ externalId: string;
886
+ day: string;
887
+ occurredAt: string;
888
+ author: string | null;
889
+ title: string;
890
+ url: string | null;
891
+ state: string | null;
892
+ parentActivityId: string | null;
893
+ authorResolved?: {
894
+ login: string | null;
895
+ name: string | null;
896
+ email: string | null;
897
+ };
898
+ authorIdentity?: {
899
+ id: string | number;
900
+ displayName: string;
901
+ } | null;
902
+ /** @constant */
903
+ type: "review";
744
904
  meta: {
745
905
  [key: string]: unknown;
746
906
  } | null;
907
+ } | {
908
+ id: string;
909
+ source: "github" | "gitlab";
910
+ repo: string;
911
+ externalId: string;
912
+ day: string;
913
+ occurredAt: string;
914
+ author: string | null;
915
+ title: string;
916
+ url: string | null;
917
+ state: string | null;
918
+ parentActivityId: string | null;
747
919
  authorResolved?: {
748
920
  login: string | null;
749
921
  name: string | null;
@@ -753,14 +925,95 @@ export interface components {
753
925
  id: string | number;
754
926
  displayName: string;
755
927
  } | null;
756
- }[];
928
+ /** @constant */
929
+ type: "state-transition";
930
+ meta: ({
931
+ prevState?: string | null;
932
+ } & {
933
+ [key: string]: unknown;
934
+ }) | null;
935
+ } | {
936
+ id: string;
937
+ source: "github" | "gitlab";
938
+ repo: string;
939
+ externalId: string;
940
+ day: string;
941
+ occurredAt: string;
942
+ author: string | null;
943
+ title: string;
944
+ url: string | null;
945
+ state: string | null;
946
+ parentActivityId: string | null;
947
+ authorResolved?: {
948
+ login: string | null;
949
+ name: string | null;
950
+ email: string | null;
951
+ };
952
+ authorIdentity?: {
953
+ id: string | number;
954
+ displayName: string;
955
+ } | null;
956
+ /** @constant */
957
+ type: "ci-run";
958
+ meta: ({
959
+ runId?: (string | number) | null;
960
+ workflowName?: string | null;
961
+ jobName?: string | null;
962
+ conclusion?: string | null;
963
+ status?: string | null;
964
+ startedAt?: string | null;
965
+ completedAt?: string | null;
966
+ durationSec?: number | null;
967
+ runnerOs?: string | null;
968
+ runnerName?: string | null;
969
+ sha?: string | null;
970
+ branch?: string | null;
971
+ attempts?: (string | number) | null;
972
+ } & {
973
+ [key: string]: unknown;
974
+ }) | null;
975
+ } | {
976
+ id: string;
977
+ source: "github" | "gitlab";
978
+ repo: string;
979
+ externalId: string;
980
+ day: string;
981
+ occurredAt: string;
982
+ author: string | null;
983
+ title: string;
984
+ url: string | null;
985
+ state: string | null;
986
+ parentActivityId: string | null;
987
+ authorResolved?: {
988
+ login: string | null;
989
+ name: string | null;
990
+ email: string | null;
991
+ };
992
+ authorIdentity?: {
993
+ id: string | number;
994
+ displayName: string;
995
+ } | null;
996
+ /** @constant */
997
+ type: "ci-pipeline";
998
+ meta: ({
999
+ runId?: (string | number) | null;
1000
+ sha?: string | null;
1001
+ branch?: string | null;
1002
+ status?: string | null;
1003
+ conclusion?: string | null;
1004
+ startedAt?: string | null;
1005
+ completedAt?: string | null;
1006
+ durationSec?: number | null;
1007
+ } & {
1008
+ [key: string]: unknown;
1009
+ }) | null;
1010
+ })[];
757
1011
  total: string | number;
758
1012
  nextCursor: string | null;
759
1013
  };
760
1014
  GitEvent: {
761
1015
  id: string;
762
1016
  source: "github" | "gitlab";
763
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
764
1017
  repo: string;
765
1018
  externalId: string;
766
1019
  day: string;
@@ -770,9 +1023,119 @@ export interface components {
770
1023
  url: string | null;
771
1024
  state: string | null;
772
1025
  parentActivityId: string | null;
1026
+ authorResolved?: {
1027
+ login: string | null;
1028
+ name: string | null;
1029
+ email: string | null;
1030
+ };
1031
+ authorIdentity?: {
1032
+ id: string | number;
1033
+ displayName: string;
1034
+ } | null;
1035
+ /** @constant */
1036
+ type: "commit";
1037
+ meta: ({
1038
+ fullMessage?: string;
1039
+ commitAuthorName?: string | null;
1040
+ } & {
1041
+ [key: string]: unknown;
1042
+ }) | null;
1043
+ } | {
1044
+ id: string;
1045
+ source: "github" | "gitlab";
1046
+ repo: string;
1047
+ externalId: string;
1048
+ day: string;
1049
+ occurredAt: string;
1050
+ author: string | null;
1051
+ title: string;
1052
+ url: string | null;
1053
+ state: string | null;
1054
+ parentActivityId: string | null;
1055
+ authorResolved?: {
1056
+ login: string | null;
1057
+ name: string | null;
1058
+ email: string | null;
1059
+ };
1060
+ authorIdentity?: {
1061
+ id: string | number;
1062
+ displayName: string;
1063
+ } | null;
1064
+ /** @constant */
1065
+ type: "comment";
1066
+ meta: ({
1067
+ body?: string;
1068
+ /** @constant */
1069
+ commentKind?: "commit";
1070
+ } & {
1071
+ [key: string]: unknown;
1072
+ }) | null;
1073
+ } | {
1074
+ id: string;
1075
+ source: "github" | "gitlab";
1076
+ repo: string;
1077
+ externalId: string;
1078
+ day: string;
1079
+ occurredAt: string;
1080
+ author: string | null;
1081
+ title: string;
1082
+ url: string | null;
1083
+ state: string | null;
1084
+ parentActivityId: string | null;
1085
+ authorResolved?: {
1086
+ login: string | null;
1087
+ name: string | null;
1088
+ email: string | null;
1089
+ };
1090
+ authorIdentity?: {
1091
+ id: string | number;
1092
+ displayName: string;
1093
+ } | null;
1094
+ /** @constant */
1095
+ type: "review";
773
1096
  meta: {
774
1097
  [key: string]: unknown;
775
1098
  } | null;
1099
+ } | {
1100
+ id: string;
1101
+ source: "github" | "gitlab";
1102
+ repo: string;
1103
+ externalId: string;
1104
+ day: string;
1105
+ occurredAt: string;
1106
+ author: string | null;
1107
+ title: string;
1108
+ url: string | null;
1109
+ state: string | null;
1110
+ parentActivityId: string | null;
1111
+ authorResolved?: {
1112
+ login: string | null;
1113
+ name: string | null;
1114
+ email: string | null;
1115
+ };
1116
+ authorIdentity?: {
1117
+ id: string | number;
1118
+ displayName: string;
1119
+ } | null;
1120
+ /** @constant */
1121
+ type: "state-transition";
1122
+ meta: ({
1123
+ prevState?: string | null;
1124
+ } & {
1125
+ [key: string]: unknown;
1126
+ }) | null;
1127
+ } | {
1128
+ id: string;
1129
+ source: "github" | "gitlab";
1130
+ repo: string;
1131
+ externalId: string;
1132
+ day: string;
1133
+ occurredAt: string;
1134
+ author: string | null;
1135
+ title: string;
1136
+ url: string | null;
1137
+ state: string | null;
1138
+ parentActivityId: string | null;
776
1139
  authorResolved?: {
777
1140
  login: string | null;
778
1141
  name: string | null;
@@ -782,6 +1145,60 @@ export interface components {
782
1145
  id: string | number;
783
1146
  displayName: string;
784
1147
  } | null;
1148
+ /** @constant */
1149
+ type: "ci-run";
1150
+ meta: ({
1151
+ runId?: (string | number) | null;
1152
+ workflowName?: string | null;
1153
+ jobName?: string | null;
1154
+ conclusion?: string | null;
1155
+ status?: string | null;
1156
+ startedAt?: string | null;
1157
+ completedAt?: string | null;
1158
+ durationSec?: number | null;
1159
+ runnerOs?: string | null;
1160
+ runnerName?: string | null;
1161
+ sha?: string | null;
1162
+ branch?: string | null;
1163
+ attempts?: (string | number) | null;
1164
+ } & {
1165
+ [key: string]: unknown;
1166
+ }) | null;
1167
+ } | {
1168
+ id: string;
1169
+ source: "github" | "gitlab";
1170
+ repo: string;
1171
+ externalId: string;
1172
+ day: string;
1173
+ occurredAt: string;
1174
+ author: string | null;
1175
+ title: string;
1176
+ url: string | null;
1177
+ state: string | null;
1178
+ parentActivityId: string | null;
1179
+ authorResolved?: {
1180
+ login: string | null;
1181
+ name: string | null;
1182
+ email: string | null;
1183
+ };
1184
+ authorIdentity?: {
1185
+ id: string | number;
1186
+ displayName: string;
1187
+ } | null;
1188
+ /** @constant */
1189
+ type: "ci-pipeline";
1190
+ meta: ({
1191
+ runId?: (string | number) | null;
1192
+ sha?: string | null;
1193
+ branch?: string | null;
1194
+ status?: string | null;
1195
+ conclusion?: string | null;
1196
+ startedAt?: string | null;
1197
+ completedAt?: string | null;
1198
+ durationSec?: number | null;
1199
+ } & {
1200
+ [key: string]: unknown;
1201
+ }) | null;
785
1202
  };
786
1203
  IdentitiesListResponse: {
787
1204
  identities: {
@@ -880,7 +1297,7 @@ export interface components {
880
1297
  externalId: string;
881
1298
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
882
1299
  number: string | number;
883
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
1300
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
884
1301
  type: "pr" | "mr";
885
1302
  title: string;
886
1303
  url: string;
@@ -954,6 +1371,12 @@ export interface components {
954
1371
  url: string | null;
955
1372
  }[];
956
1373
  } | null;
1374
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
1375
+ ci?: {
1376
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
1377
+ url: string | null;
1378
+ finishedAt: string | null;
1379
+ } | null;
957
1380
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
958
1381
  linkSource?: {
959
1382
  hintSource: string;
@@ -998,6 +1421,20 @@ export interface components {
998
1421
  }[];
999
1422
  fetchedAt: string;
1000
1423
  };
1424
+ ProjectsListResponse: {
1425
+ /** @description Every project the operator tracks, sorted by (source, projectKey). Sourced from the operator config, so a tracked project with no activity in any window still appears — do NOT derive this list by paginating /v1/work-items or /v1/activities, which silently omits quiet projects. */
1426
+ projects: {
1427
+ source: "github" | "gitlab";
1428
+ /** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
1429
+ projectKey: string;
1430
+ /** @description Last path segment of `projectKey`, for display. */
1431
+ name: string;
1432
+ /** @description Project homepage. Null on GitLab when no instance URL is configured. */
1433
+ webUrl: string | null;
1434
+ /** @description ISO timestamp of the most recent FINISHED sync run for this project, or null when it has never completed one. Null means 'tracked but never ingested' — NOT 'no recent activity'. */
1435
+ lastSyncedAt: string | null;
1436
+ }[];
1437
+ };
1001
1438
  Provider: "github" | "gitlab";
1002
1439
  ResolvedUser: {
1003
1440
  id: string;
@@ -1017,6 +1454,9 @@ export interface components {
1017
1454
  submittedAt: string;
1018
1455
  url: string | null;
1019
1456
  };
1457
+ ReviewEventMeta: {
1458
+ [key: string]: unknown;
1459
+ };
1020
1460
  ReviewStatus: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1021
1461
  ReviewsSummary: {
1022
1462
  approvedCount: string | number;
@@ -1036,6 +1476,11 @@ export interface components {
1036
1476
  url: string | null;
1037
1477
  }[];
1038
1478
  };
1479
+ StateTransitionEventMeta: {
1480
+ prevState?: string | null;
1481
+ } & {
1482
+ [key: string]: unknown;
1483
+ };
1039
1484
  StatusEvent: {
1040
1485
  label: {
1041
1486
  name: string;
@@ -1052,6 +1497,17 @@ export interface components {
1052
1497
  firstNoteCreatedAt: string;
1053
1498
  url: string | null;
1054
1499
  };
1500
+ TrackedProject: {
1501
+ source: "github" | "gitlab";
1502
+ /** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
1503
+ projectKey: string;
1504
+ /** @description Last path segment of `projectKey`, for display. */
1505
+ name: string;
1506
+ /** @description Project homepage. Null on GitLab when no instance URL is configured. */
1507
+ webUrl: string | null;
1508
+ /** @description ISO timestamp of the most recent FINISHED sync run for this project, or null when it has never completed one. Null means 'tracked but never ingested' — NOT 'no recent activity'. */
1509
+ lastSyncedAt: string | null;
1510
+ };
1055
1511
  UnresolvedThreads: {
1056
1512
  count: string | number;
1057
1513
  digest: {
@@ -1107,7 +1563,7 @@ export interface components {
1107
1563
  externalId: string;
1108
1564
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
1109
1565
  number: string | number;
1110
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
1566
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
1111
1567
  type: "pr" | "mr";
1112
1568
  title: string;
1113
1569
  url: string;
@@ -1181,6 +1637,12 @@ export interface components {
1181
1637
  url: string | null;
1182
1638
  }[];
1183
1639
  } | null;
1640
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
1641
+ ci?: {
1642
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
1643
+ url: string | null;
1644
+ finishedAt: string | null;
1645
+ } | null;
1184
1646
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1185
1647
  linkSource?: {
1186
1648
  hintSource: string;
@@ -1274,7 +1736,7 @@ export interface components {
1274
1736
  externalId: string;
1275
1737
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
1276
1738
  number: string | number;
1277
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
1739
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
1278
1740
  type: "pr" | "mr";
1279
1741
  title: string;
1280
1742
  url: string;
@@ -1348,6 +1810,12 @@ export interface components {
1348
1810
  url: string | null;
1349
1811
  }[];
1350
1812
  } | null;
1813
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
1814
+ ci?: {
1815
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
1816
+ url: string | null;
1817
+ finishedAt: string | null;
1818
+ } | null;
1351
1819
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1352
1820
  linkSource?: {
1353
1821
  hintSource: string;
@@ -1494,7 +1962,7 @@ export interface operations {
1494
1962
  externalId: string;
1495
1963
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
1496
1964
  number: string | number;
1497
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
1965
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
1498
1966
  type: "pr" | "mr";
1499
1967
  title: string;
1500
1968
  url: string;
@@ -1568,6 +2036,12 @@ export interface operations {
1568
2036
  url: string | null;
1569
2037
  }[];
1570
2038
  } | null;
2039
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2040
+ ci?: {
2041
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2042
+ url: string | null;
2043
+ finishedAt: string | null;
2044
+ } | null;
1571
2045
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1572
2046
  linkSource?: {
1573
2047
  hintSource: string;
@@ -1665,7 +2139,7 @@ export interface operations {
1665
2139
  externalId: string;
1666
2140
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
1667
2141
  number: string | number;
1668
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
2142
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
1669
2143
  type: "pr" | "mr";
1670
2144
  title: string;
1671
2145
  url: string;
@@ -1739,6 +2213,12 @@ export interface operations {
1739
2213
  url: string | null;
1740
2214
  }[];
1741
2215
  } | null;
2216
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2217
+ ci?: {
2218
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2219
+ url: string | null;
2220
+ finishedAt: string | null;
2221
+ } | null;
1742
2222
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1743
2223
  linkSource?: {
1744
2224
  hintSource: string;
@@ -1836,7 +2316,7 @@ export interface operations {
1836
2316
  externalId: string;
1837
2317
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
1838
2318
  number: string | number;
1839
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
2319
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
1840
2320
  type: "pr" | "mr";
1841
2321
  title: string;
1842
2322
  url: string;
@@ -1910,6 +2390,12 @@ export interface operations {
1910
2390
  url: string | null;
1911
2391
  }[];
1912
2392
  } | null;
2393
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2394
+ ci?: {
2395
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2396
+ url: string | null;
2397
+ finishedAt: string | null;
2398
+ } | null;
1913
2399
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
1914
2400
  linkSource?: {
1915
2401
  hintSource: string;
@@ -2063,7 +2549,7 @@ export interface operations {
2063
2549
  externalId: string;
2064
2550
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
2065
2551
  number: string | number;
2066
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
2552
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
2067
2553
  type: "pr" | "mr";
2068
2554
  title: string;
2069
2555
  url: string;
@@ -2137,6 +2623,12 @@ export interface operations {
2137
2623
  url: string | null;
2138
2624
  }[];
2139
2625
  } | null;
2626
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2627
+ ci?: {
2628
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2629
+ url: string | null;
2630
+ finishedAt: string | null;
2631
+ } | null;
2140
2632
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2141
2633
  linkSource?: {
2142
2634
  hintSource: string;
@@ -2229,7 +2721,7 @@ export interface operations {
2229
2721
  externalId: string;
2230
2722
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
2231
2723
  number: string | number;
2232
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
2724
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
2233
2725
  type: "pr" | "mr";
2234
2726
  title: string;
2235
2727
  url: string;
@@ -2303,6 +2795,12 @@ export interface operations {
2303
2795
  url: string | null;
2304
2796
  }[];
2305
2797
  } | null;
2798
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2799
+ ci?: {
2800
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2801
+ url: string | null;
2802
+ finishedAt: string | null;
2803
+ } | null;
2306
2804
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2307
2805
  linkSource?: {
2308
2806
  hintSource: string;
@@ -2395,7 +2893,7 @@ export interface operations {
2395
2893
  externalId: string;
2396
2894
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
2397
2895
  number: string | number;
2398
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
2896
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
2399
2897
  type: "pr" | "mr";
2400
2898
  title: string;
2401
2899
  url: string;
@@ -2469,6 +2967,12 @@ export interface operations {
2469
2967
  url: string | null;
2470
2968
  }[];
2471
2969
  } | null;
2970
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
2971
+ ci?: {
2972
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
2973
+ url: string | null;
2974
+ finishedAt: string | null;
2975
+ } | null;
2472
2976
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
2473
2977
  linkSource?: {
2474
2978
  hintSource: string;
@@ -2605,10 +3109,12 @@ export interface operations {
2605
3109
  getV1Events: {
2606
3110
  parameters: {
2607
3111
  query?: {
2608
- /** @description Inclusive lower bound, YYYY-MM-DD (Paris-TZ day). Required. */
3112
+ /** @description Inclusive lower bound, YYYY-MM-DD (Paris-TZ day). Required unless `parentActivityId` is given. */
2609
3113
  from?: string;
2610
- /** @description Inclusive upper bound, YYYY-MM-DD (Paris-TZ day). Required. */
3114
+ /** @description Inclusive upper bound, YYYY-MM-DD (Paris-TZ day). Required unless `parentActivityId` is given. */
2611
3115
  to?: string;
3116
+ /** @description Filter by parent activity id (the `${source}:${repo}:${type}:${externalId}` key). CSV for several. When given, `from`/`to` become optional — use it to fetch every commit, pipeline and comment attached to a PR/MR without guessing a date window, which would silently drop older events. */
3117
+ parentActivityId?: string;
2612
3118
  /** @description Filter by author (case-insensitive). */
2613
3119
  user?: string;
2614
3120
  /** @description Filter by user identity ID (resolves to all aliases). Mutually exclusive with ?user. */
@@ -2639,10 +3145,202 @@ export interface operations {
2639
3145
  };
2640
3146
  content: {
2641
3147
  "application/json": {
2642
- events: {
3148
+ events: ({
3149
+ id: string;
3150
+ source: "github" | "gitlab";
3151
+ repo: string;
3152
+ externalId: string;
3153
+ day: string;
3154
+ occurredAt: string;
3155
+ author: string | null;
3156
+ title: string;
3157
+ url: string | null;
3158
+ state: string | null;
3159
+ parentActivityId: string | null;
3160
+ authorResolved?: {
3161
+ login: string | null;
3162
+ name: string | null;
3163
+ email: string | null;
3164
+ };
3165
+ authorIdentity?: {
3166
+ id: string | number;
3167
+ displayName: string;
3168
+ } | null;
3169
+ /** @constant */
3170
+ type: "commit";
3171
+ meta: ({
3172
+ fullMessage?: string;
3173
+ commitAuthorName?: string | null;
3174
+ } & {
3175
+ [key: string]: unknown;
3176
+ }) | null;
3177
+ } | {
3178
+ id: string;
3179
+ source: "github" | "gitlab";
3180
+ repo: string;
3181
+ externalId: string;
3182
+ day: string;
3183
+ occurredAt: string;
3184
+ author: string | null;
3185
+ title: string;
3186
+ url: string | null;
3187
+ state: string | null;
3188
+ parentActivityId: string | null;
3189
+ authorResolved?: {
3190
+ login: string | null;
3191
+ name: string | null;
3192
+ email: string | null;
3193
+ };
3194
+ authorIdentity?: {
3195
+ id: string | number;
3196
+ displayName: string;
3197
+ } | null;
3198
+ /** @constant */
3199
+ type: "comment";
3200
+ meta: ({
3201
+ body?: string;
3202
+ /** @constant */
3203
+ commentKind?: "commit";
3204
+ } & {
3205
+ [key: string]: unknown;
3206
+ }) | null;
3207
+ } | {
3208
+ id: string;
3209
+ source: "github" | "gitlab";
3210
+ repo: string;
3211
+ externalId: string;
3212
+ day: string;
3213
+ occurredAt: string;
3214
+ author: string | null;
3215
+ title: string;
3216
+ url: string | null;
3217
+ state: string | null;
3218
+ parentActivityId: string | null;
3219
+ authorResolved?: {
3220
+ login: string | null;
3221
+ name: string | null;
3222
+ email: string | null;
3223
+ };
3224
+ authorIdentity?: {
3225
+ id: string | number;
3226
+ displayName: string;
3227
+ } | null;
3228
+ /** @constant */
3229
+ type: "review";
3230
+ meta: {
3231
+ [key: string]: unknown;
3232
+ } | null;
3233
+ } | {
3234
+ id: string;
3235
+ source: "github" | "gitlab";
3236
+ repo: string;
3237
+ externalId: string;
3238
+ day: string;
3239
+ occurredAt: string;
3240
+ author: string | null;
3241
+ title: string;
3242
+ url: string | null;
3243
+ state: string | null;
3244
+ parentActivityId: string | null;
3245
+ authorResolved?: {
3246
+ login: string | null;
3247
+ name: string | null;
3248
+ email: string | null;
3249
+ };
3250
+ authorIdentity?: {
3251
+ id: string | number;
3252
+ displayName: string;
3253
+ } | null;
3254
+ /** @constant */
3255
+ type: "state-transition";
3256
+ meta: ({
3257
+ prevState?: string | null;
3258
+ } & {
3259
+ [key: string]: unknown;
3260
+ }) | null;
3261
+ } | {
3262
+ id: string;
3263
+ source: "github" | "gitlab";
3264
+ repo: string;
3265
+ externalId: string;
3266
+ day: string;
3267
+ occurredAt: string;
3268
+ author: string | null;
3269
+ title: string;
3270
+ url: string | null;
3271
+ state: string | null;
3272
+ parentActivityId: string | null;
3273
+ authorResolved?: {
3274
+ login: string | null;
3275
+ name: string | null;
3276
+ email: string | null;
3277
+ };
3278
+ authorIdentity?: {
3279
+ id: string | number;
3280
+ displayName: string;
3281
+ } | null;
3282
+ /** @constant */
3283
+ type: "ci-run";
3284
+ meta: ({
3285
+ runId?: (string | number) | null;
3286
+ workflowName?: string | null;
3287
+ jobName?: string | null;
3288
+ conclusion?: string | null;
3289
+ status?: string | null;
3290
+ startedAt?: string | null;
3291
+ completedAt?: string | null;
3292
+ durationSec?: number | null;
3293
+ runnerOs?: string | null;
3294
+ runnerName?: string | null;
3295
+ sha?: string | null;
3296
+ branch?: string | null;
3297
+ attempts?: (string | number) | null;
3298
+ } & {
3299
+ [key: string]: unknown;
3300
+ }) | null;
3301
+ } | {
3302
+ id: string;
3303
+ source: "github" | "gitlab";
3304
+ repo: string;
3305
+ externalId: string;
3306
+ day: string;
3307
+ occurredAt: string;
3308
+ author: string | null;
3309
+ title: string;
3310
+ url: string | null;
3311
+ state: string | null;
3312
+ parentActivityId: string | null;
3313
+ authorResolved?: {
3314
+ login: string | null;
3315
+ name: string | null;
3316
+ email: string | null;
3317
+ };
3318
+ authorIdentity?: {
3319
+ id: string | number;
3320
+ displayName: string;
3321
+ } | null;
3322
+ /** @constant */
3323
+ type: "ci-pipeline";
3324
+ meta: ({
3325
+ runId?: (string | number) | null;
3326
+ sha?: string | null;
3327
+ branch?: string | null;
3328
+ status?: string | null;
3329
+ conclusion?: string | null;
3330
+ startedAt?: string | null;
3331
+ completedAt?: string | null;
3332
+ durationSec?: number | null;
3333
+ } & {
3334
+ [key: string]: unknown;
3335
+ }) | null;
3336
+ })[];
3337
+ total: string | number;
3338
+ nextCursor: string | null;
3339
+ };
3340
+ "multipart/form-data": {
3341
+ events: ({
2643
3342
  id: string;
2644
3343
  source: "github" | "gitlab";
2645
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
2646
3344
  repo: string;
2647
3345
  externalId: string;
2648
3346
  day: string;
@@ -2652,9 +3350,35 @@ export interface operations {
2652
3350
  url: string | null;
2653
3351
  state: string | null;
2654
3352
  parentActivityId: string | null;
2655
- meta: {
2656
- [key: string]: unknown;
3353
+ authorResolved?: {
3354
+ login: string | null;
3355
+ name: string | null;
3356
+ email: string | null;
3357
+ };
3358
+ authorIdentity?: {
3359
+ id: string | number;
3360
+ displayName: string;
2657
3361
  } | null;
3362
+ /** @constant */
3363
+ type: "commit";
3364
+ meta: ({
3365
+ fullMessage?: string;
3366
+ commitAuthorName?: string | null;
3367
+ } & {
3368
+ [key: string]: unknown;
3369
+ }) | null;
3370
+ } | {
3371
+ id: string;
3372
+ source: "github" | "gitlab";
3373
+ repo: string;
3374
+ externalId: string;
3375
+ day: string;
3376
+ occurredAt: string;
3377
+ author: string | null;
3378
+ title: string;
3379
+ url: string | null;
3380
+ state: string | null;
3381
+ parentActivityId: string | null;
2658
3382
  authorResolved?: {
2659
3383
  login: string | null;
2660
3384
  name: string | null;
@@ -2664,15 +3388,18 @@ export interface operations {
2664
3388
  id: string | number;
2665
3389
  displayName: string;
2666
3390
  } | null;
2667
- }[];
2668
- total: string | number;
2669
- nextCursor: string | null;
2670
- };
2671
- "multipart/form-data": {
2672
- events: {
3391
+ /** @constant */
3392
+ type: "comment";
3393
+ meta: ({
3394
+ body?: string;
3395
+ /** @constant */
3396
+ commentKind?: "commit";
3397
+ } & {
3398
+ [key: string]: unknown;
3399
+ }) | null;
3400
+ } | {
2673
3401
  id: string;
2674
3402
  source: "github" | "gitlab";
2675
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
2676
3403
  repo: string;
2677
3404
  externalId: string;
2678
3405
  day: string;
@@ -2682,9 +3409,32 @@ export interface operations {
2682
3409
  url: string | null;
2683
3410
  state: string | null;
2684
3411
  parentActivityId: string | null;
3412
+ authorResolved?: {
3413
+ login: string | null;
3414
+ name: string | null;
3415
+ email: string | null;
3416
+ };
3417
+ authorIdentity?: {
3418
+ id: string | number;
3419
+ displayName: string;
3420
+ } | null;
3421
+ /** @constant */
3422
+ type: "review";
2685
3423
  meta: {
2686
3424
  [key: string]: unknown;
2687
3425
  } | null;
3426
+ } | {
3427
+ id: string;
3428
+ source: "github" | "gitlab";
3429
+ repo: string;
3430
+ externalId: string;
3431
+ day: string;
3432
+ occurredAt: string;
3433
+ author: string | null;
3434
+ title: string;
3435
+ url: string | null;
3436
+ state: string | null;
3437
+ parentActivityId: string | null;
2688
3438
  authorResolved?: {
2689
3439
  login: string | null;
2690
3440
  name: string | null;
@@ -2694,15 +3444,155 @@ export interface operations {
2694
3444
  id: string | number;
2695
3445
  displayName: string;
2696
3446
  } | null;
2697
- }[];
3447
+ /** @constant */
3448
+ type: "state-transition";
3449
+ meta: ({
3450
+ prevState?: string | null;
3451
+ } & {
3452
+ [key: string]: unknown;
3453
+ }) | null;
3454
+ } | {
3455
+ id: string;
3456
+ source: "github" | "gitlab";
3457
+ repo: string;
3458
+ externalId: string;
3459
+ day: string;
3460
+ occurredAt: string;
3461
+ author: string | null;
3462
+ title: string;
3463
+ url: string | null;
3464
+ state: string | null;
3465
+ parentActivityId: string | null;
3466
+ authorResolved?: {
3467
+ login: string | null;
3468
+ name: string | null;
3469
+ email: string | null;
3470
+ };
3471
+ authorIdentity?: {
3472
+ id: string | number;
3473
+ displayName: string;
3474
+ } | null;
3475
+ /** @constant */
3476
+ type: "ci-run";
3477
+ meta: ({
3478
+ runId?: (string | number) | null;
3479
+ workflowName?: string | null;
3480
+ jobName?: string | null;
3481
+ conclusion?: string | null;
3482
+ status?: string | null;
3483
+ startedAt?: string | null;
3484
+ completedAt?: string | null;
3485
+ durationSec?: number | null;
3486
+ runnerOs?: string | null;
3487
+ runnerName?: string | null;
3488
+ sha?: string | null;
3489
+ branch?: string | null;
3490
+ attempts?: (string | number) | null;
3491
+ } & {
3492
+ [key: string]: unknown;
3493
+ }) | null;
3494
+ } | {
3495
+ id: string;
3496
+ source: "github" | "gitlab";
3497
+ repo: string;
3498
+ externalId: string;
3499
+ day: string;
3500
+ occurredAt: string;
3501
+ author: string | null;
3502
+ title: string;
3503
+ url: string | null;
3504
+ state: string | null;
3505
+ parentActivityId: string | null;
3506
+ authorResolved?: {
3507
+ login: string | null;
3508
+ name: string | null;
3509
+ email: string | null;
3510
+ };
3511
+ authorIdentity?: {
3512
+ id: string | number;
3513
+ displayName: string;
3514
+ } | null;
3515
+ /** @constant */
3516
+ type: "ci-pipeline";
3517
+ meta: ({
3518
+ runId?: (string | number) | null;
3519
+ sha?: string | null;
3520
+ branch?: string | null;
3521
+ status?: string | null;
3522
+ conclusion?: string | null;
3523
+ startedAt?: string | null;
3524
+ completedAt?: string | null;
3525
+ durationSec?: number | null;
3526
+ } & {
3527
+ [key: string]: unknown;
3528
+ }) | null;
3529
+ })[];
2698
3530
  total: string | number;
2699
3531
  nextCursor: string | null;
2700
3532
  };
2701
3533
  "text/plain": {
2702
- events: {
3534
+ events: ({
3535
+ id: string;
3536
+ source: "github" | "gitlab";
3537
+ repo: string;
3538
+ externalId: string;
3539
+ day: string;
3540
+ occurredAt: string;
3541
+ author: string | null;
3542
+ title: string;
3543
+ url: string | null;
3544
+ state: string | null;
3545
+ parentActivityId: string | null;
3546
+ authorResolved?: {
3547
+ login: string | null;
3548
+ name: string | null;
3549
+ email: string | null;
3550
+ };
3551
+ authorIdentity?: {
3552
+ id: string | number;
3553
+ displayName: string;
3554
+ } | null;
3555
+ /** @constant */
3556
+ type: "commit";
3557
+ meta: ({
3558
+ fullMessage?: string;
3559
+ commitAuthorName?: string | null;
3560
+ } & {
3561
+ [key: string]: unknown;
3562
+ }) | null;
3563
+ } | {
3564
+ id: string;
3565
+ source: "github" | "gitlab";
3566
+ repo: string;
3567
+ externalId: string;
3568
+ day: string;
3569
+ occurredAt: string;
3570
+ author: string | null;
3571
+ title: string;
3572
+ url: string | null;
3573
+ state: string | null;
3574
+ parentActivityId: string | null;
3575
+ authorResolved?: {
3576
+ login: string | null;
3577
+ name: string | null;
3578
+ email: string | null;
3579
+ };
3580
+ authorIdentity?: {
3581
+ id: string | number;
3582
+ displayName: string;
3583
+ } | null;
3584
+ /** @constant */
3585
+ type: "comment";
3586
+ meta: ({
3587
+ body?: string;
3588
+ /** @constant */
3589
+ commentKind?: "commit";
3590
+ } & {
3591
+ [key: string]: unknown;
3592
+ }) | null;
3593
+ } | {
2703
3594
  id: string;
2704
3595
  source: "github" | "gitlab";
2705
- type: "commit" | "comment" | "review" | "state-transition" | "ci-run" | "ci-pipeline";
2706
3596
  repo: string;
2707
3597
  externalId: string;
2708
3598
  day: string;
@@ -2712,9 +3602,32 @@ export interface operations {
2712
3602
  url: string | null;
2713
3603
  state: string | null;
2714
3604
  parentActivityId: string | null;
3605
+ authorResolved?: {
3606
+ login: string | null;
3607
+ name: string | null;
3608
+ email: string | null;
3609
+ };
3610
+ authorIdentity?: {
3611
+ id: string | number;
3612
+ displayName: string;
3613
+ } | null;
3614
+ /** @constant */
3615
+ type: "review";
2715
3616
  meta: {
2716
3617
  [key: string]: unknown;
2717
3618
  } | null;
3619
+ } | {
3620
+ id: string;
3621
+ source: "github" | "gitlab";
3622
+ repo: string;
3623
+ externalId: string;
3624
+ day: string;
3625
+ occurredAt: string;
3626
+ author: string | null;
3627
+ title: string;
3628
+ url: string | null;
3629
+ state: string | null;
3630
+ parentActivityId: string | null;
2718
3631
  authorResolved?: {
2719
3632
  login: string | null;
2720
3633
  name: string | null;
@@ -2724,7 +3637,89 @@ export interface operations {
2724
3637
  id: string | number;
2725
3638
  displayName: string;
2726
3639
  } | null;
2727
- }[];
3640
+ /** @constant */
3641
+ type: "state-transition";
3642
+ meta: ({
3643
+ prevState?: string | null;
3644
+ } & {
3645
+ [key: string]: unknown;
3646
+ }) | null;
3647
+ } | {
3648
+ id: string;
3649
+ source: "github" | "gitlab";
3650
+ repo: string;
3651
+ externalId: string;
3652
+ day: string;
3653
+ occurredAt: string;
3654
+ author: string | null;
3655
+ title: string;
3656
+ url: string | null;
3657
+ state: string | null;
3658
+ parentActivityId: string | null;
3659
+ authorResolved?: {
3660
+ login: string | null;
3661
+ name: string | null;
3662
+ email: string | null;
3663
+ };
3664
+ authorIdentity?: {
3665
+ id: string | number;
3666
+ displayName: string;
3667
+ } | null;
3668
+ /** @constant */
3669
+ type: "ci-run";
3670
+ meta: ({
3671
+ runId?: (string | number) | null;
3672
+ workflowName?: string | null;
3673
+ jobName?: string | null;
3674
+ conclusion?: string | null;
3675
+ status?: string | null;
3676
+ startedAt?: string | null;
3677
+ completedAt?: string | null;
3678
+ durationSec?: number | null;
3679
+ runnerOs?: string | null;
3680
+ runnerName?: string | null;
3681
+ sha?: string | null;
3682
+ branch?: string | null;
3683
+ attempts?: (string | number) | null;
3684
+ } & {
3685
+ [key: string]: unknown;
3686
+ }) | null;
3687
+ } | {
3688
+ id: string;
3689
+ source: "github" | "gitlab";
3690
+ repo: string;
3691
+ externalId: string;
3692
+ day: string;
3693
+ occurredAt: string;
3694
+ author: string | null;
3695
+ title: string;
3696
+ url: string | null;
3697
+ state: string | null;
3698
+ parentActivityId: string | null;
3699
+ authorResolved?: {
3700
+ login: string | null;
3701
+ name: string | null;
3702
+ email: string | null;
3703
+ };
3704
+ authorIdentity?: {
3705
+ id: string | number;
3706
+ displayName: string;
3707
+ } | null;
3708
+ /** @constant */
3709
+ type: "ci-pipeline";
3710
+ meta: ({
3711
+ runId?: (string | number) | null;
3712
+ sha?: string | null;
3713
+ branch?: string | null;
3714
+ status?: string | null;
3715
+ conclusion?: string | null;
3716
+ startedAt?: string | null;
3717
+ completedAt?: string | null;
3718
+ durationSec?: number | null;
3719
+ } & {
3720
+ [key: string]: unknown;
3721
+ }) | null;
3722
+ })[];
2728
3723
  total: string | number;
2729
3724
  nextCursor: string | null;
2730
3725
  };
@@ -2764,6 +3759,23 @@ export interface operations {
2764
3759
  };
2765
3760
  };
2766
3761
  };
3762
+ getV1EventsStream: {
3763
+ parameters: {
3764
+ query?: never;
3765
+ header?: never;
3766
+ path?: never;
3767
+ cookie?: never;
3768
+ };
3769
+ requestBody?: never;
3770
+ responses: {
3771
+ 200: {
3772
+ headers: {
3773
+ [name: string]: unknown;
3774
+ };
3775
+ content?: never;
3776
+ };
3777
+ };
3778
+ };
2767
3779
  getV1Activities: {
2768
3780
  parameters: {
2769
3781
  query?: {
@@ -2988,7 +4000,7 @@ export interface operations {
2988
4000
  externalId: string;
2989
4001
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
2990
4002
  number: string | number;
2991
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
4003
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
2992
4004
  type: "pr" | "mr";
2993
4005
  title: string;
2994
4006
  url: string;
@@ -3062,6 +4074,12 @@ export interface operations {
3062
4074
  url: string | null;
3063
4075
  }[];
3064
4076
  } | null;
4077
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
4078
+ ci?: {
4079
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
4080
+ url: string | null;
4081
+ finishedAt: string | null;
4082
+ } | null;
3065
4083
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
3066
4084
  linkSource?: {
3067
4085
  hintSource: string;
@@ -3188,7 +4206,7 @@ export interface operations {
3188
4206
  externalId: string;
3189
4207
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
3190
4208
  number: string | number;
3191
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
4209
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
3192
4210
  type: "pr" | "mr";
3193
4211
  title: string;
3194
4212
  url: string;
@@ -3262,6 +4280,12 @@ export interface operations {
3262
4280
  url: string | null;
3263
4281
  }[];
3264
4282
  } | null;
4283
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
4284
+ ci?: {
4285
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
4286
+ url: string | null;
4287
+ finishedAt: string | null;
4288
+ } | null;
3265
4289
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
3266
4290
  linkSource?: {
3267
4291
  hintSource: string;
@@ -3388,7 +4412,7 @@ export interface operations {
3388
4412
  externalId: string;
3389
4413
  /** @description Numeric form of externalId (cast for convenience). Useful for display like '!123' or '#123'. */
3390
4414
  number: string | number;
3391
- /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> if you need commits attached to this activity. */
4415
+ /** @description PR/MR linked via git_activity_links. Commit-level linkage is NOT included here — fetch /v1/events?parentActivityId=<id> (CSV accepted, no date window required) for the commits, pipelines and comments attached to this activity. */
3392
4416
  type: "pr" | "mr";
3393
4417
  title: string;
3394
4418
  url: string;
@@ -3462,6 +4486,12 @@ export interface operations {
3462
4486
  url: string | null;
3463
4487
  }[];
3464
4488
  } | null;
4489
+ /** @description Latest known CI pipeline for this PR/MR — derived from `ci-pipeline` events, NOT from per-job `ci-run`. Null when no pipeline is known: never read a null as 'green'. `status: 'failed'` is the CI half of a blocked signal, alongside hasConflicts, reviews and unresolvedThreads. */
4490
+ ci?: {
4491
+ status: "success" | "failed" | "running" | "canceled" | "unknown";
4492
+ url: string | null;
4493
+ finishedAt: string | null;
4494
+ } | null;
3465
4495
  reviewStatus?: "draft" | "open-no-review" | "open-awaiting-my-review" | "open-awaiting-other-review" | "open-changes-requested" | "open-approved" | "merged" | "closed";
3466
4496
  linkSource?: {
3467
4497
  hintSource: string;
@@ -3690,6 +4720,66 @@ export interface operations {
3690
4720
  };
3691
4721
  };
3692
4722
  };
4723
+ getV1Projects: {
4724
+ parameters: {
4725
+ query?: never;
4726
+ header?: never;
4727
+ path?: never;
4728
+ cookie?: never;
4729
+ };
4730
+ requestBody?: never;
4731
+ responses: {
4732
+ 200: {
4733
+ headers: {
4734
+ [name: string]: unknown;
4735
+ };
4736
+ content: {
4737
+ "application/json": {
4738
+ /** @description Every project the operator tracks, sorted by (source, projectKey). Sourced from the operator config, so a tracked project with no activity in any window still appears — do NOT derive this list by paginating /v1/work-items or /v1/activities, which silently omits quiet projects. */
4739
+ projects: {
4740
+ source: "github" | "gitlab";
4741
+ /** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
4742
+ projectKey: string;
4743
+ /** @description Last path segment of `projectKey`, for display. */
4744
+ name: string;
4745
+ /** @description Project homepage. Null on GitLab when no instance URL is configured. */
4746
+ webUrl: string | null;
4747
+ /** @description ISO timestamp of the most recent FINISHED sync run for this project, or null when it has never completed one. Null means 'tracked but never ingested' — NOT 'no recent activity'. */
4748
+ lastSyncedAt: string | null;
4749
+ }[];
4750
+ };
4751
+ "multipart/form-data": {
4752
+ /** @description Every project the operator tracks, sorted by (source, projectKey). Sourced from the operator config, so a tracked project with no activity in any window still appears — do NOT derive this list by paginating /v1/work-items or /v1/activities, which silently omits quiet projects. */
4753
+ projects: {
4754
+ source: "github" | "gitlab";
4755
+ /** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
4756
+ projectKey: string;
4757
+ /** @description Last path segment of `projectKey`, for display. */
4758
+ name: string;
4759
+ /** @description Project homepage. Null on GitLab when no instance URL is configured. */
4760
+ webUrl: string | null;
4761
+ /** @description ISO timestamp of the most recent FINISHED sync run for this project, or null when it has never completed one. Null means 'tracked but never ingested' — NOT 'no recent activity'. */
4762
+ lastSyncedAt: string | null;
4763
+ }[];
4764
+ };
4765
+ "text/plain": {
4766
+ /** @description Every project the operator tracks, sorted by (source, projectKey). Sourced from the operator config, so a tracked project with no activity in any window still appears — do NOT derive this list by paginating /v1/work-items or /v1/activities, which silently omits quiet projects. */
4767
+ projects: {
4768
+ source: "github" | "gitlab";
4769
+ /** @description Provider-side project path, verbatim from the operator config (`owner/repo` on GitHub, `group/sub/project` on GitLab). Pair with `source` to call /v1/projects/{source}/{projectKey}/labels. */
4770
+ projectKey: string;
4771
+ /** @description Last path segment of `projectKey`, for display. */
4772
+ name: string;
4773
+ /** @description Project homepage. Null on GitLab when no instance URL is configured. */
4774
+ webUrl: string | null;
4775
+ /** @description ISO timestamp of the most recent FINISHED sync run for this project, or null when it has never completed one. Null means 'tracked but never ingested' — NOT 'no recent activity'. */
4776
+ lastSyncedAt: string | null;
4777
+ }[];
4778
+ };
4779
+ };
4780
+ };
4781
+ };
4782
+ };
3693
4783
  getV1ProjectsBySourceByProjectKeyLabels: {
3694
4784
  parameters: {
3695
4785
  query?: never;