@thinkai/tai-api-contract 2.5.17 → 2.6.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.
@@ -1334,6 +1334,150 @@ export interface paths {
1334
1334
  patch?: never;
1335
1335
  trace?: never;
1336
1336
  };
1337
+ "/workspaces/{workspaceId}/your-ai-journey/analytics": {
1338
+ parameters: {
1339
+ query?: never;
1340
+ header?: never;
1341
+ path?: never;
1342
+ cookie?: never;
1343
+ };
1344
+ /**
1345
+ * Combined analytics summary for the /dashboard page
1346
+ * @description Returns a single aggregated payload combining journey step progress, readiness summary, and PR-signal headline metrics. Covers issue #268. Results are cached for 60 seconds.
1347
+ */
1348
+ get: operations["getYourAiJourneyAnalytics"];
1349
+ put?: never;
1350
+ post?: never;
1351
+ delete?: never;
1352
+ options?: never;
1353
+ head?: never;
1354
+ patch?: never;
1355
+ trace?: never;
1356
+ };
1357
+ "/workspaces/{workspaceId}/your-ai-journey/pr-signals": {
1358
+ parameters: {
1359
+ query?: never;
1360
+ header?: never;
1361
+ path?: never;
1362
+ cookie?: never;
1363
+ };
1364
+ /**
1365
+ * Weekly PR velocity and change-failure-rate time series
1366
+ * @description Returns a per-week time series of PR throughput and DORA change-failure-rate metrics, sourced from stored dashboard metrics. Covers issue #269. Results are cached for 60 seconds.
1367
+ */
1368
+ get: operations["getYourAiJourneyPrSignals"];
1369
+ put?: never;
1370
+ post?: never;
1371
+ delete?: never;
1372
+ options?: never;
1373
+ head?: never;
1374
+ patch?: never;
1375
+ trace?: never;
1376
+ };
1377
+ "/workspaces/{workspaceId}/your-ai-journey/readiness/aggregate": {
1378
+ parameters: {
1379
+ query?: never;
1380
+ header?: never;
1381
+ path?: never;
1382
+ cookie?: never;
1383
+ };
1384
+ /**
1385
+ * Per-dimension readiness aggregate across all repos
1386
+ * @description Aggregates stored readiness scores across all workspace repos by dimension. Covers issue #270. Results are cached for 60 seconds.
1387
+ */
1388
+ get: operations["getYourAiJourneyReadinessAggregate"];
1389
+ put?: never;
1390
+ post?: never;
1391
+ delete?: never;
1392
+ options?: never;
1393
+ head?: never;
1394
+ patch?: never;
1395
+ trace?: never;
1396
+ };
1397
+ "/workspaces/{workspaceId}/your-ai-journey/journey/progress": {
1398
+ parameters: {
1399
+ query?: never;
1400
+ header?: never;
1401
+ path?: never;
1402
+ cookie?: never;
1403
+ };
1404
+ /**
1405
+ * Workspace journey step completion
1406
+ * @description Returns the workspace-scoped journey progress state. Returns an empty `completedSteps` list with a synthetic `updatedAt` if no row exists yet. Covers issue #271.
1407
+ */
1408
+ get: operations["getYourAiJourneyProgress"];
1409
+ /**
1410
+ * Replace workspace journey completed steps
1411
+ * @description Idempotent replace-all of completed route strings for the workspace journey. Requires editor role. Covers issue #271.
1412
+ */
1413
+ put: operations["putYourAiJourneyProgress"];
1414
+ post?: never;
1415
+ delete?: never;
1416
+ options?: never;
1417
+ head?: never;
1418
+ patch?: never;
1419
+ trace?: never;
1420
+ };
1421
+ "/workspaces/{workspaceId}/your-ai-journey/agentic-foundation": {
1422
+ parameters: {
1423
+ query?: never;
1424
+ header?: never;
1425
+ path?: never;
1426
+ cookie?: never;
1427
+ };
1428
+ /**
1429
+ * Agentic foundation dashboard slice for /dashboard
1430
+ * @description Returns the same `AgenticFoundationDashboardDto` payload as `GET /agentic-foundation/dashboard`, scoped to the /dashboard page context. Covers issue #272. Results are cached for 60 seconds.
1431
+ */
1432
+ get: operations["getYourAiJourneyAgenticFoundation"];
1433
+ put?: never;
1434
+ post?: never;
1435
+ delete?: never;
1436
+ options?: never;
1437
+ head?: never;
1438
+ patch?: never;
1439
+ trace?: never;
1440
+ };
1441
+ "/workspaces/{workspaceId}/your-ai-journey/productivity": {
1442
+ parameters: {
1443
+ query?: never;
1444
+ header?: never;
1445
+ path?: never;
1446
+ cookie?: never;
1447
+ };
1448
+ /**
1449
+ * Workspace productivity metrics for /dashboard
1450
+ * @description Returns the most recent stored dashboard productivity metrics snapshot that overlaps the requested window (defaults to the trailing 7 days). Same schema as `GET /dashboard/productivity`. Covers issue #273. Results are cached for 60 seconds.
1451
+ */
1452
+ get: operations["getYourAiJourneyProductivity"];
1453
+ put?: never;
1454
+ post?: never;
1455
+ delete?: never;
1456
+ options?: never;
1457
+ head?: never;
1458
+ patch?: never;
1459
+ trace?: never;
1460
+ };
1461
+ "/workspaces/{workspaceId}/your-ai-journey/ai-spend": {
1462
+ parameters: {
1463
+ query?: never;
1464
+ header?: never;
1465
+ path?: never;
1466
+ cookie?: never;
1467
+ };
1468
+ /**
1469
+ * AI tool spend and usage aggregated by week and provider
1470
+ * @description Returns token usage and spend aggregated from connected AI tool sources (e.g. Cursor) over the requested range, broken down by week and provider. Covers issue #274. Results are cached for 60 seconds.
1471
+ */
1472
+ get: operations["getYourAiJourneyAiSpend"];
1473
+ put?: never;
1474
+ post?: never;
1475
+ delete?: never;
1476
+ options?: never;
1477
+ head?: never;
1478
+ patch?: never;
1479
+ trace?: never;
1480
+ };
1337
1481
  }
1338
1482
  export type webhooks = Record<string, never>;
1339
1483
  export interface components {
@@ -1579,6 +1723,10 @@ export interface components {
1579
1723
  personId: string;
1580
1724
  personName: string;
1581
1725
  teamName?: string;
1726
+ /** @description True when the contributor GitHub login is not mapped in the org chart. */
1727
+ notInOrgChart?: boolean;
1728
+ /** @description GitHub login for unattributed contributors (when notInOrgChart is true). */
1729
+ githubLogin?: string;
1582
1730
  weeks: components["schemas"]["ProductivityInsightsMergedPrTrendWeekDto"][];
1583
1731
  };
1584
1732
  ProductivityInsightsMergedPrTrendsDto: {
@@ -1589,7 +1737,7 @@ export interface components {
1589
1737
  scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
1590
1738
  /** Format: date-time */
1591
1739
  generatedAt: string;
1592
- /** @description Portfolio aggregate merged PR counts (sum of filtered contributors per week). */
1740
+ /** @description Portfolio aggregate merged PR counts from org-scope metrics (all merged PRs in window). */
1593
1741
  weeks: components["schemas"]["ProductivityInsightsMergedPrTrendWeekDto"][];
1594
1742
  contributors: components["schemas"]["ProductivityInsightsMergedPrContributorRowDto"][];
1595
1743
  };
@@ -2437,6 +2585,115 @@ export interface components {
2437
2585
  /** @description Path in `org-charts` bucket after Supabase upload */
2438
2586
  storagePath: string;
2439
2587
  };
2588
+ YourAiJourneyPrSignalsWeekDto: {
2589
+ /** Format: date-time */
2590
+ bucketStart: string;
2591
+ /** Format: date-time */
2592
+ bucketEnd: string;
2593
+ /** @description Display label in MM/DD format. */
2594
+ weekLabel: string;
2595
+ prsPerDeveloperPerWeek: number;
2596
+ changeFailureRatePercent: number;
2597
+ };
2598
+ YourAiJourneyPrSignalsDto: {
2599
+ /** Format: uuid */
2600
+ workspaceId: string;
2601
+ /** Format: date-time */
2602
+ generatedAt: string;
2603
+ /** Format: date-time */
2604
+ windowStart: string;
2605
+ /** Format: date-time */
2606
+ windowEnd: string;
2607
+ weeks: components["schemas"]["YourAiJourneyPrSignalsWeekDto"][];
2608
+ summary: {
2609
+ avgPrsPerDeveloperPerWeek: number;
2610
+ avgFailureRatePercent: number;
2611
+ prVelocityDeltaPercent: number;
2612
+ };
2613
+ };
2614
+ YourAiJourneyReadinessDimensionDto: {
2615
+ dimensionId: string;
2616
+ name: string;
2617
+ totalScore: number;
2618
+ maxScore: number;
2619
+ /** @description Rounded percentage 0–100. */
2620
+ percent: number;
2621
+ };
2622
+ YourAiJourneyReadinessAggregateDto: {
2623
+ /** Format: uuid */
2624
+ workspaceId: string;
2625
+ /** Format: date-time */
2626
+ generatedAt: string;
2627
+ dimensions: components["schemas"]["YourAiJourneyReadinessDimensionDto"][];
2628
+ summary: {
2629
+ avgScore: number;
2630
+ repoCount: number;
2631
+ fixRate: number;
2632
+ totalOpenIssues: number;
2633
+ totalFixedIssues: number;
2634
+ };
2635
+ };
2636
+ YourAiJourneyAnalyticsDto: {
2637
+ /** Format: uuid */
2638
+ workspaceId: string;
2639
+ /** Format: date-time */
2640
+ generatedAt: string;
2641
+ /** Format: date-time */
2642
+ windowStart: string;
2643
+ /** Format: date-time */
2644
+ windowEnd: string;
2645
+ journey: {
2646
+ completedSteps: string[];
2647
+ /** Format: date-time */
2648
+ updatedAt: string | null;
2649
+ };
2650
+ readiness: {
2651
+ avgScore: number;
2652
+ repoCount: number;
2653
+ fixRate: number;
2654
+ totalOpenIssues: number;
2655
+ totalFixedIssues: number;
2656
+ };
2657
+ prSignals: {
2658
+ avgPrsPerDeveloperPerWeek: number;
2659
+ prVelocityDeltaPercent: number;
2660
+ avgFailureRatePercent: number;
2661
+ };
2662
+ };
2663
+ YourAiJourneyAiSpendWeekDto: {
2664
+ /** Format: date-time */
2665
+ bucketStart: string;
2666
+ /** Format: date-time */
2667
+ bucketEnd: string;
2668
+ weekLabel: string;
2669
+ mergedPrCount: number;
2670
+ tokenCount: number;
2671
+ };
2672
+ YourAiJourneyAiSpendDto: {
2673
+ /** Format: uuid */
2674
+ workspaceId: string;
2675
+ /** Format: date-time */
2676
+ generatedAt: string;
2677
+ /** Format: date-time */
2678
+ windowStart: string;
2679
+ /** Format: date-time */
2680
+ windowEnd: string;
2681
+ totalSpendCents: number;
2682
+ totalTokenCount: number;
2683
+ activeUsers: number;
2684
+ /** @description Fraction 0–1 of PRs that are AI-assisted. */
2685
+ aiAssistedPrRatio: number;
2686
+ prThroughputDeltaPercent: number;
2687
+ usageDeltaPercent: number;
2688
+ weeks: components["schemas"]["YourAiJourneyAiSpendWeekDto"][];
2689
+ providers: {
2690
+ providerId: string;
2691
+ providerName: string;
2692
+ tokenCount: number;
2693
+ spendCents: number;
2694
+ activeUsers: number;
2695
+ }[];
2696
+ };
2440
2697
  };
2441
2698
  responses: {
2442
2699
  /** @description Missing or invalid bearer token */
@@ -2599,6 +2856,13 @@ export type PreferencesDto = components['schemas']['PreferencesDto'];
2599
2856
  export type ValidationIssueDto = components['schemas']['ValidationIssueDto'];
2600
2857
  export type PreferencesValidationErrorDto = components['schemas']['PreferencesValidationErrorDto'];
2601
2858
  export type OrgChartImportBodyDto = components['schemas']['OrgChartImportBodyDto'];
2859
+ export type YourAiJourneyPrSignalsWeekDto = components['schemas']['YourAiJourneyPrSignalsWeekDto'];
2860
+ export type YourAiJourneyPrSignalsDto = components['schemas']['YourAiJourneyPrSignalsDto'];
2861
+ export type YourAiJourneyReadinessDimensionDto = components['schemas']['YourAiJourneyReadinessDimensionDto'];
2862
+ export type YourAiJourneyReadinessAggregateDto = components['schemas']['YourAiJourneyReadinessAggregateDto'];
2863
+ export type YourAiJourneyAnalyticsDto = components['schemas']['YourAiJourneyAnalyticsDto'];
2864
+ export type YourAiJourneyAiSpendWeekDto = components['schemas']['YourAiJourneyAiSpendWeekDto'];
2865
+ export type YourAiJourneyAiSpendDto = components['schemas']['YourAiJourneyAiSpendDto'];
2602
2866
  export type ResponseUnauthorized = components['responses']['Unauthorized'];
2603
2867
  export type ResponseForbidden = components['responses']['Forbidden'];
2604
2868
  export type ParameterWorkspaceId = components['parameters']['WorkspaceId'];
@@ -5727,5 +5991,300 @@ export interface operations {
5727
5991
  };
5728
5992
  };
5729
5993
  };
5994
+ getYourAiJourneyAnalytics: {
5995
+ parameters: {
5996
+ query?: never;
5997
+ header?: never;
5998
+ path: {
5999
+ workspaceId: components["parameters"]["WorkspaceId"];
6000
+ };
6001
+ cookie?: never;
6002
+ };
6003
+ requestBody?: never;
6004
+ responses: {
6005
+ /** @description Analytics summary */
6006
+ 200: {
6007
+ headers: {
6008
+ [name: string]: unknown;
6009
+ };
6010
+ content: {
6011
+ "application/json": components["schemas"]["YourAiJourneyAnalyticsDto"];
6012
+ };
6013
+ };
6014
+ 401: components["responses"]["Unauthorized"];
6015
+ 403: components["responses"]["Forbidden"];
6016
+ /** @description Workspace does not exist */
6017
+ 404: {
6018
+ headers: {
6019
+ [name: string]: unknown;
6020
+ };
6021
+ content: {
6022
+ "application/json": components["schemas"]["ErrorMessageDto"];
6023
+ };
6024
+ };
6025
+ };
6026
+ };
6027
+ getYourAiJourneyPrSignals: {
6028
+ parameters: {
6029
+ query?: {
6030
+ /** @description Number of weekly buckets to return (1–52; default 8). */
6031
+ limit?: number;
6032
+ };
6033
+ header?: never;
6034
+ path: {
6035
+ workspaceId: components["parameters"]["WorkspaceId"];
6036
+ };
6037
+ cookie?: never;
6038
+ };
6039
+ requestBody?: never;
6040
+ responses: {
6041
+ /** @description Weekly PR signals */
6042
+ 200: {
6043
+ headers: {
6044
+ [name: string]: unknown;
6045
+ };
6046
+ content: {
6047
+ "application/json": components["schemas"]["YourAiJourneyPrSignalsDto"];
6048
+ };
6049
+ };
6050
+ /** @description Invalid query parameter (limit out of range) */
6051
+ 400: {
6052
+ headers: {
6053
+ [name: string]: unknown;
6054
+ };
6055
+ content: {
6056
+ "application/json": components["schemas"]["ErrorMessageDto"];
6057
+ };
6058
+ };
6059
+ 401: components["responses"]["Unauthorized"];
6060
+ 403: components["responses"]["Forbidden"];
6061
+ /** @description Workspace does not exist */
6062
+ 404: {
6063
+ headers: {
6064
+ [name: string]: unknown;
6065
+ };
6066
+ content: {
6067
+ "application/json": components["schemas"]["ErrorMessageDto"];
6068
+ };
6069
+ };
6070
+ };
6071
+ };
6072
+ getYourAiJourneyReadinessAggregate: {
6073
+ parameters: {
6074
+ query?: never;
6075
+ header?: never;
6076
+ path: {
6077
+ workspaceId: components["parameters"]["WorkspaceId"];
6078
+ };
6079
+ cookie?: never;
6080
+ };
6081
+ requestBody?: never;
6082
+ responses: {
6083
+ /** @description Readiness aggregate */
6084
+ 200: {
6085
+ headers: {
6086
+ [name: string]: unknown;
6087
+ };
6088
+ content: {
6089
+ "application/json": components["schemas"]["YourAiJourneyReadinessAggregateDto"];
6090
+ };
6091
+ };
6092
+ 401: components["responses"]["Unauthorized"];
6093
+ 403: components["responses"]["Forbidden"];
6094
+ /** @description Workspace does not exist */
6095
+ 404: {
6096
+ headers: {
6097
+ [name: string]: unknown;
6098
+ };
6099
+ content: {
6100
+ "application/json": components["schemas"]["ErrorMessageDto"];
6101
+ };
6102
+ };
6103
+ };
6104
+ };
6105
+ getYourAiJourneyProgress: {
6106
+ parameters: {
6107
+ query?: never;
6108
+ header?: never;
6109
+ path: {
6110
+ workspaceId: components["parameters"]["WorkspaceId"];
6111
+ };
6112
+ cookie?: never;
6113
+ };
6114
+ requestBody?: never;
6115
+ responses: {
6116
+ /** @description Journey progress */
6117
+ 200: {
6118
+ headers: {
6119
+ [name: string]: unknown;
6120
+ };
6121
+ content: {
6122
+ "application/json": components["schemas"]["JourneyProgressDto"];
6123
+ };
6124
+ };
6125
+ 401: components["responses"]["Unauthorized"];
6126
+ 403: components["responses"]["Forbidden"];
6127
+ /** @description Workspace does not exist */
6128
+ 404: {
6129
+ headers: {
6130
+ [name: string]: unknown;
6131
+ };
6132
+ content: {
6133
+ "application/json": components["schemas"]["ErrorMessageDto"];
6134
+ };
6135
+ };
6136
+ };
6137
+ };
6138
+ putYourAiJourneyProgress: {
6139
+ parameters: {
6140
+ query?: never;
6141
+ header?: never;
6142
+ path: {
6143
+ workspaceId: components["parameters"]["WorkspaceId"];
6144
+ };
6145
+ cookie?: never;
6146
+ };
6147
+ requestBody: {
6148
+ content: {
6149
+ "application/json": components["schemas"]["JourneyProgressUpdateDto"];
6150
+ };
6151
+ };
6152
+ responses: {
6153
+ /** @description Saved progress */
6154
+ 200: {
6155
+ headers: {
6156
+ [name: string]: unknown;
6157
+ };
6158
+ content: {
6159
+ "application/json": components["schemas"]["JourneyProgressDto"];
6160
+ };
6161
+ };
6162
+ /** @description Body fails validation (non-array, invalid entries, too many steps) */
6163
+ 400: {
6164
+ headers: {
6165
+ [name: string]: unknown;
6166
+ };
6167
+ content: {
6168
+ "application/json": components["schemas"]["ErrorMessageDto"];
6169
+ };
6170
+ };
6171
+ 401: components["responses"]["Unauthorized"];
6172
+ 403: components["responses"]["Forbidden"];
6173
+ /** @description Workspace does not exist */
6174
+ 404: {
6175
+ headers: {
6176
+ [name: string]: unknown;
6177
+ };
6178
+ content: {
6179
+ "application/json": components["schemas"]["ErrorMessageDto"];
6180
+ };
6181
+ };
6182
+ };
6183
+ };
6184
+ getYourAiJourneyAgenticFoundation: {
6185
+ parameters: {
6186
+ query?: never;
6187
+ header?: never;
6188
+ path: {
6189
+ workspaceId: components["parameters"]["WorkspaceId"];
6190
+ };
6191
+ cookie?: never;
6192
+ };
6193
+ requestBody?: never;
6194
+ responses: {
6195
+ /** @description Agentic foundation dashboard */
6196
+ 200: {
6197
+ headers: {
6198
+ [name: string]: unknown;
6199
+ };
6200
+ content: {
6201
+ "application/json": components["schemas"]["AgenticFoundationDashboardDto"];
6202
+ };
6203
+ };
6204
+ 401: components["responses"]["Unauthorized"];
6205
+ 403: components["responses"]["Forbidden"];
6206
+ /** @description Workspace does not exist */
6207
+ 404: {
6208
+ headers: {
6209
+ [name: string]: unknown;
6210
+ };
6211
+ content: {
6212
+ "application/json": components["schemas"]["ErrorMessageDto"];
6213
+ };
6214
+ };
6215
+ };
6216
+ };
6217
+ getYourAiJourneyProductivity: {
6218
+ parameters: {
6219
+ query?: {
6220
+ /** @description Upper bound of the requested window (ISO 8601; defaults to now). */
6221
+ windowEnd?: string;
6222
+ };
6223
+ header?: never;
6224
+ path: {
6225
+ workspaceId: components["parameters"]["WorkspaceId"];
6226
+ };
6227
+ cookie?: never;
6228
+ };
6229
+ requestBody?: never;
6230
+ responses: {
6231
+ /** @description Productivity metrics snapshot */
6232
+ 200: {
6233
+ headers: {
6234
+ [name: string]: unknown;
6235
+ };
6236
+ content: {
6237
+ "application/json": components["schemas"]["DashboardProductivityDto"];
6238
+ };
6239
+ };
6240
+ 401: components["responses"]["Unauthorized"];
6241
+ 403: components["responses"]["Forbidden"];
6242
+ /** @description Workspace does not exist */
6243
+ 404: {
6244
+ headers: {
6245
+ [name: string]: unknown;
6246
+ };
6247
+ content: {
6248
+ "application/json": components["schemas"]["ErrorMessageDto"];
6249
+ };
6250
+ };
6251
+ };
6252
+ };
6253
+ getYourAiJourneyAiSpend: {
6254
+ parameters: {
6255
+ query?: {
6256
+ /** @description Time range — `4w` (4 weeks), `8w` (8 weeks), or `q` (quarter, 12 weeks). */
6257
+ rangeId?: "4w" | "8w" | "q";
6258
+ };
6259
+ header?: never;
6260
+ path: {
6261
+ workspaceId: components["parameters"]["WorkspaceId"];
6262
+ };
6263
+ cookie?: never;
6264
+ };
6265
+ requestBody?: never;
6266
+ responses: {
6267
+ /** @description AI spend aggregation */
6268
+ 200: {
6269
+ headers: {
6270
+ [name: string]: unknown;
6271
+ };
6272
+ content: {
6273
+ "application/json": components["schemas"]["YourAiJourneyAiSpendDto"];
6274
+ };
6275
+ };
6276
+ 401: components["responses"]["Unauthorized"];
6277
+ 403: components["responses"]["Forbidden"];
6278
+ /** @description Workspace does not exist */
6279
+ 404: {
6280
+ headers: {
6281
+ [name: string]: unknown;
6282
+ };
6283
+ content: {
6284
+ "application/json": components["schemas"]["ErrorMessageDto"];
6285
+ };
6286
+ };
6287
+ };
6288
+ };
5730
6289
  }
5731
6290
  //# sourceMappingURL=openapi.d.ts.map