@thinkai/tai-api-contract 2.142.0 → 2.144.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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.142.0
4
+ version: 2.144.1
5
5
  description: >
6
6
  Contract surface for the AI Driven SDLC backend used by ThinkAI.
7
7
  Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
@@ -2600,6 +2600,7 @@ paths:
2600
2600
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2601
2601
  - $ref: "#/components/parameters/InsightsProductivityTo"
2602
2602
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2603
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2603
2604
  - name: team
2604
2605
  in: query
2605
2606
  description: Team name filter; send `All teams` to include every team.
@@ -2651,6 +2652,7 @@ paths:
2651
2652
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2652
2653
  - $ref: "#/components/parameters/InsightsProductivityTo"
2653
2654
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2655
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2654
2656
  - name: team
2655
2657
  in: query
2656
2658
  description: Team name filter; send `All teams` to include every team.
@@ -2701,6 +2703,7 @@ paths:
2701
2703
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2702
2704
  - $ref: "#/components/parameters/InsightsProductivityTo"
2703
2705
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2706
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2704
2707
  - name: team
2705
2708
  in: query
2706
2709
  description: Team name filter; send `All teams` to include every team.
@@ -2751,6 +2754,7 @@ paths:
2751
2754
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2752
2755
  - $ref: "#/components/parameters/InsightsProductivityTo"
2753
2756
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2757
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2754
2758
  - name: team
2755
2759
  in: query
2756
2760
  description: Team name filter; send `All teams` to include every team.
@@ -2804,6 +2808,7 @@ paths:
2804
2808
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2805
2809
  - $ref: "#/components/parameters/InsightsProductivityTo"
2806
2810
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2811
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2807
2812
  - name: team
2808
2813
  in: query
2809
2814
  description: Team name filter; send `All teams` to include every team.
@@ -2938,6 +2943,7 @@ paths:
2938
2943
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2939
2944
  - $ref: "#/components/parameters/InsightsProductivityTo"
2940
2945
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2946
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2941
2947
  - name: team
2942
2948
  in: query
2943
2949
  description: Team name filter; send `All teams` to include every team.
@@ -2989,6 +2995,7 @@ paths:
2989
2995
  - $ref: "#/components/parameters/InsightsProductivityFrom"
2990
2996
  - $ref: "#/components/parameters/InsightsProductivityTo"
2991
2997
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
2998
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
2992
2999
  - name: team
2993
3000
  in: query
2994
3001
  description: Team name filter; send `All teams` to include every team.
@@ -3040,6 +3047,7 @@ paths:
3040
3047
  - $ref: "#/components/parameters/InsightsProductivityFrom"
3041
3048
  - $ref: "#/components/parameters/InsightsProductivityTo"
3042
3049
  - $ref: "#/components/parameters/InsightsDepartmentFilter"
3050
+ - $ref: "#/components/parameters/InsightsAiUsageProvider"
3043
3051
  - name: team
3044
3052
  in: query
3045
3053
  description: Team name filter; send `All teams` to include every team.
@@ -6375,6 +6383,53 @@ paths:
6375
6383
  schema:
6376
6384
  $ref: "#/components/schemas/ErrorMessageDto"
6377
6385
 
6386
+ /workspaces/{workspaceId}/report-center/exports:
6387
+ post:
6388
+ tags: [WorkspaceActivity]
6389
+ summary: Record a Report Center PDF export
6390
+ operationId: recordReportCenterExport
6391
+ description: >
6392
+ Workspace admin (or platform admin) records that a Report Center PDF was downloaded.
6393
+ Inserts one `report.exported` activity-log row with the request body as secret-free metadata.
6394
+ Does not store PDF bytes. Members who are not workspace admins receive 403.
6395
+ parameters:
6396
+ - $ref: "#/components/parameters/WorkspaceId"
6397
+ requestBody:
6398
+ required: true
6399
+ content:
6400
+ application/json:
6401
+ schema:
6402
+ $ref: "#/components/schemas/ReportCenterExportRecordBodyDto"
6403
+ responses:
6404
+ "201":
6405
+ description: Export recorded
6406
+ content:
6407
+ application/json:
6408
+ schema:
6409
+ $ref: "#/components/schemas/ReportCenterExportRecordResponseDto"
6410
+ "400":
6411
+ description: Invalid body
6412
+ content:
6413
+ application/json:
6414
+ schema:
6415
+ $ref: "#/components/schemas/ErrorMessageDto"
6416
+ "401":
6417
+ $ref: "#/components/responses/Unauthorized"
6418
+ "403":
6419
+ $ref: "#/components/responses/Forbidden"
6420
+ "404":
6421
+ description: Workspace does not exist
6422
+ content:
6423
+ application/json:
6424
+ schema:
6425
+ $ref: "#/components/schemas/ErrorMessageDto"
6426
+ "501":
6427
+ description: Activity log is not supported by this backend build
6428
+ content:
6429
+ application/json:
6430
+ schema:
6431
+ $ref: "#/components/schemas/ErrorMessageDto"
6432
+
6378
6433
  /workspaces/{workspaceId}/activity:
6379
6434
  get:
6380
6435
  tags: [WorkspaceActivity]
@@ -6405,7 +6460,7 @@ paths:
6405
6460
  required: false
6406
6461
  description: >
6407
6462
  Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events;
6408
- `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS;
6463
+ `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS + report exports;
6409
6464
  `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area.
6410
6465
  schema:
6411
6466
  type: string
@@ -7712,6 +7767,107 @@ paths:
7712
7767
  "403":
7713
7768
  $ref: "#/components/responses/Forbidden"
7714
7769
 
7770
+ /workspaces/{workspaceId}/code-intelligence/agent-md:
7771
+ get:
7772
+ tags: [CodeChat]
7773
+ summary: Read the workspace agent.md
7774
+ description: >
7775
+ Any workspace member. Returns the persisted workspace agent file, or null fields when
7776
+ none has been written. 403 `code_intelligence_disabled` when Engineering Context Graph is off.
7777
+ operationId: getCodeIntelligenceAgentMd
7778
+ x-test-coverage-skip: thin read of persisted config; covered by readiness and maintain unit tests
7779
+ parameters:
7780
+ - $ref: "#/components/parameters/WorkspaceId"
7781
+ responses:
7782
+ "200":
7783
+ description: Persisted agent.md
7784
+ content:
7785
+ application/json:
7786
+ schema:
7787
+ $ref: "#/components/schemas/CodeIntelligenceAgentMdDto"
7788
+ "401":
7789
+ $ref: "#/components/responses/Unauthorized"
7790
+ "403":
7791
+ description: Engineering Context Graph is off, or the caller is not a member
7792
+ content:
7793
+ application/json:
7794
+ schema:
7795
+ $ref: "#/components/schemas/ErrorMessageDto"
7796
+ put:
7797
+ tags: [CodeChat]
7798
+ summary: Save an admin edit of the workspace agent.md
7799
+ description: >
7800
+ Admin only. Body is 1 to 12,000 characters. Saves source `admin`. Auto-generate and the
7801
+ cadence tick do not overwrite this text until an admin regenerates it. A non-admin receives 403.
7802
+ operationId: putCodeIntelligenceAgentMd
7803
+ x-test-coverage-skip: admin write of persisted config; covered by store and maintain unit tests
7804
+ parameters:
7805
+ - $ref: "#/components/parameters/WorkspaceId"
7806
+ requestBody:
7807
+ required: true
7808
+ content:
7809
+ application/json:
7810
+ schema:
7811
+ $ref: "#/components/schemas/PutCodeIntelligenceAgentMdDto"
7812
+ responses:
7813
+ "200":
7814
+ description: Saved agent.md
7815
+ content:
7816
+ application/json:
7817
+ schema:
7818
+ $ref: "#/components/schemas/CodeIntelligenceAgentMdDto"
7819
+ "400":
7820
+ description: Body missing or outside 1 to 12,000 characters
7821
+ content:
7822
+ application/json:
7823
+ schema:
7824
+ $ref: "#/components/schemas/ErrorMessageDto"
7825
+ "401":
7826
+ $ref: "#/components/responses/Unauthorized"
7827
+ "403":
7828
+ description: Caller is not an admin, or Engineering Context Graph is off
7829
+ content:
7830
+ application/json:
7831
+ schema:
7832
+ $ref: "#/components/schemas/ErrorMessageDto"
7833
+
7834
+ /workspaces/{workspaceId}/code-intelligence/agent-md/regenerate:
7835
+ post:
7836
+ tags: [CodeChat]
7837
+ summary: Rewrite workspace agent.md from ready code graphs
7838
+ description: >
7839
+ Admin only. Rewrites the file from current ready eligible graphs and sets source
7840
+ `generated`. Returns 409 `agent_md_not_ready` when no eligible repository index is ready.
7841
+ Does not call an LLM and does not clone repositories.
7842
+ operationId: regenerateCodeIntelligenceAgentMd
7843
+ x-test-coverage-skip: wraps regenerateWorkspaceAgentMd; covered by wave maintain unit tests
7844
+ parameters:
7845
+ - $ref: "#/components/parameters/WorkspaceId"
7846
+ responses:
7847
+ "200":
7848
+ description: Regenerated agent.md
7849
+ content:
7850
+ application/json:
7851
+ schema:
7852
+ $ref: "#/components/schemas/CodeIntelligenceAgentMdDto"
7853
+ "401":
7854
+ $ref: "#/components/responses/Unauthorized"
7855
+ "403":
7856
+ description: Caller is not an admin, or Engineering Context Graph is off
7857
+ content:
7858
+ application/json:
7859
+ schema:
7860
+ $ref: "#/components/schemas/ErrorMessageDto"
7861
+ "409":
7862
+ description: No ready eligible index
7863
+ content:
7864
+ application/json:
7865
+ schema:
7866
+ $ref: "#/components/schemas/ErrorMessageDto"
7867
+ example:
7868
+ error: No ready repository index is available to write the workspace agent file.
7869
+ code: agent_md_not_ready
7870
+
7715
7871
  /workspaces/{workspaceId}/code-intelligence/token-usage/summary:
7716
7872
  get:
7717
7873
  tags: [CodeChat]
@@ -8047,6 +8203,10 @@ paths:
8047
8203
  post:
8048
8204
  tags: [CodeChat]
8049
8205
  summary: Enqueue indexing for all (or selected) readiness GitHub repos
8206
+ description: >
8207
+ `indexOnly: true` enqueues a graph-only job. `{ "indexOnly": true, "force": true }` with
8208
+ no `repoIds` is admin-only and opens one index wave for every eligible GitHub repository.
8209
+ A single-repo indexOnly sync does not open a wave. Members who send that admin body receive 403.
8050
8210
  operationId: syncCodeChatIndexes
8051
8211
  x-test-coverage-skip: lightweight MVP; covered by package unit tests
8052
8212
  parameters:
@@ -8066,6 +8226,47 @@ paths:
8066
8226
  $ref: "#/components/schemas/CodeChatSyncIndexesResultDto"
8067
8227
  "401":
8068
8228
  $ref: "#/components/responses/Unauthorized"
8229
+ "403":
8230
+ description: >
8231
+ Engineering Context Graph is off, or a member sent the admin force body
8232
+ (`indexOnly` and `force` with no `repoIds`).
8233
+ content:
8234
+ application/json:
8235
+ schema:
8236
+ $ref: "#/components/schemas/ErrorMessageDto"
8237
+
8238
+ /workspaces/{workspaceId}/code-chat/readiness:
8239
+ get:
8240
+ tags: [CodeChat]
8241
+ summary: Workspace chat readiness
8242
+ description: >
8243
+ Any workspace member. 403 `code_intelligence_disabled` when Engineering Context Graph is off.
8244
+ `status` is `indexing`, `generating_agent_md`, `failed`, or `ready`. Chat stays closed
8245
+ until `ready`: create thread and post message return `409 chat_not_ready` with
8246
+ `progressMessage` when status is not ready. An open index wave reports `indexing` until
8247
+ every job in that wave is terminal.
8248
+ operationId: getCodeChatReadiness
8249
+ x-test-coverage-skip: thin HTTP over deriveCodeChatReadiness; covered by code-chat-readiness unit tests
8250
+ parameters:
8251
+ - $ref: "#/components/parameters/WorkspaceId"
8252
+ responses:
8253
+ "200":
8254
+ description: Readiness snapshot
8255
+ content:
8256
+ application/json:
8257
+ schema:
8258
+ $ref: "#/components/schemas/CodeChatReadinessDto"
8259
+ "401":
8260
+ $ref: "#/components/responses/Unauthorized"
8261
+ "403":
8262
+ description: Engineering Context Graph is off
8263
+ content:
8264
+ application/json:
8265
+ schema:
8266
+ $ref: "#/components/schemas/ErrorMessageDto"
8267
+ example:
8268
+ error: Code Intelligence is disabled for this workspace
8269
+ code: code_intelligence_disabled
8069
8270
 
8070
8271
  /workspaces/{workspaceId}/code-chat/indexes/{indexId}:
8071
8272
  get:
@@ -8134,6 +8335,12 @@ paths:
8134
8335
  $ref: "#/components/schemas/CodeChatThreadDto"
8135
8336
  "401":
8136
8337
  $ref: "#/components/responses/Unauthorized"
8338
+ "403":
8339
+ description: Engineering Context Graph is off
8340
+ content:
8341
+ application/json:
8342
+ schema:
8343
+ $ref: "#/components/schemas/ErrorMessageDto"
8137
8344
  "404":
8138
8345
  description: Not found
8139
8346
  content:
@@ -8141,7 +8348,23 @@ paths:
8141
8348
  schema:
8142
8349
  $ref: "#/components/schemas/ErrorMessageDto"
8143
8350
  "409":
8144
- description: Index not ready
8351
+ description: Chat not ready, or no ready corpus for a repo-scoped thread
8352
+ content:
8353
+ application/json:
8354
+ schema:
8355
+ $ref: "#/components/schemas/ErrorMessageDto"
8356
+ examples:
8357
+ chat_not_ready:
8358
+ value:
8359
+ error: Indexing repositories (0/2).
8360
+ code: chat_not_ready
8361
+ progressMessage: Indexing repositories (0/2).
8362
+ "422":
8363
+ description: Execution key required
8364
+ content:
8365
+ application/json:
8366
+ schema:
8367
+ $ref: "#/components/schemas/ErrorMessageDto"
8145
8368
 
8146
8369
  /workspaces/{workspaceId}/code-chat/threads/{threadId}:
8147
8370
  get:
@@ -8216,6 +8439,12 @@ paths:
8216
8439
  $ref: "#/components/schemas/CodeChatMessageReplyDto"
8217
8440
  "401":
8218
8441
  $ref: "#/components/responses/Unauthorized"
8442
+ "403":
8443
+ description: Engineering Context Graph is off
8444
+ content:
8445
+ application/json:
8446
+ schema:
8447
+ $ref: "#/components/schemas/ErrorMessageDto"
8219
8448
  "404":
8220
8449
  description: Not found
8221
8450
  content:
@@ -8223,7 +8452,17 @@ paths:
8223
8452
  schema:
8224
8453
  $ref: "#/components/schemas/ErrorMessageDto"
8225
8454
  "409":
8226
- description: Index not ready
8455
+ description: Chat not ready, or no ready corpus in thread scope
8456
+ content:
8457
+ application/json:
8458
+ schema:
8459
+ $ref: "#/components/schemas/ErrorMessageDto"
8460
+ "422":
8461
+ description: Execution key required
8462
+ content:
8463
+ application/json:
8464
+ schema:
8465
+ $ref: "#/components/schemas/ErrorMessageDto"
8227
8466
 
8228
8467
  /workspaces/{workspaceId}/code-chat/indexes/{indexId}/wiki:
8229
8468
  get:
@@ -10426,6 +10665,19 @@ components:
10426
10665
  type: string
10427
10666
  style: form
10428
10667
  explode: true
10668
+ InsightsAiUsageProvider:
10669
+ name: provider
10670
+ in: query
10671
+ description: >
10672
+ AI provider ids to include. Repeat the parameter or send comma-separated values.
10673
+ Empty or omitted includes all supported providers.
10674
+ schema:
10675
+ type: array
10676
+ items:
10677
+ type: string
10678
+ enum: [cursor, claude]
10679
+ style: form
10680
+ explode: true
10429
10681
  InsightsRecommendationsIncludeUnmapped:
10430
10682
  name: includeUnmapped
10431
10683
  in: query
@@ -10644,6 +10896,11 @@ components:
10644
10896
  code:
10645
10897
  type: string
10646
10898
  description: Machine-readable error code when present (for example `last_admin`).
10899
+ progressMessage:
10900
+ type: string
10901
+ description: >
10902
+ Human-readable progress when `code` is `chat_not_ready` (same text as `error`
10903
+ for that response).
10647
10904
 
10648
10905
  TeamMemberDto:
10649
10906
  type: object
@@ -11851,6 +12108,17 @@ components:
11851
12108
  type: string
11852
12109
  nullable: true
11853
12110
  minLength: 1
12111
+ indexingEnabled:
12112
+ type: boolean
12113
+ description: >
12114
+ When false, turning Engineering Context Graph on and the cadence tick do not enqueue
12115
+ index jobs. Stored graphs, wiki pages, and agent.md stay. Defaults to true.
12116
+ indexingCadence:
12117
+ type: string
12118
+ enum: [daily, weekly, manual]
12119
+ description: >
12120
+ How often the code-knowledge worker enqueues an index-only wave for eligible GitHub
12121
+ repositories. `manual` never ticks. Defaults to `daily`.
11854
12122
  wikiGuidance:
11855
12123
  allOf:
11856
12124
  - $ref: "#/components/schemas/CodeWikiGuidanceDto"
@@ -11878,6 +12146,71 @@ components:
11878
12146
  maxLength: 120
11879
12147
  description: Title of the parent topic for hierarchy (must match another topic title).
11880
12148
 
12149
+ PutCodeIntelligenceAgentMdDto:
12150
+ type: object
12151
+ required: [body]
12152
+ properties:
12153
+ body:
12154
+ type: string
12155
+ minLength: 1
12156
+ maxLength: 12000
12157
+
12158
+ CodeIntelligenceAgentMdDto:
12159
+ type: object
12160
+ required: [body, source, updatedAt]
12161
+ properties:
12162
+ body:
12163
+ type: string
12164
+ nullable: true
12165
+ source:
12166
+ type: string
12167
+ nullable: true
12168
+ enum: [generated, admin]
12169
+ updatedAt:
12170
+ type: string
12171
+ format: date-time
12172
+ nullable: true
12173
+
12174
+ CodeChatReadinessDto:
12175
+ type: object
12176
+ required:
12177
+ - status
12178
+ - progressMessage
12179
+ - eligibleCount
12180
+ - readyCount
12181
+ - failedCount
12182
+ - inProgressCount
12183
+ - indexingEnabled
12184
+ - indexingCadence
12185
+ - agentMdSource
12186
+ properties:
12187
+ status:
12188
+ type: string
12189
+ enum: [indexing, generating_agent_md, failed, ready]
12190
+ progressMessage:
12191
+ type: string
12192
+ eligibleCount:
12193
+ type: integer
12194
+ minimum: 0
12195
+ readyCount:
12196
+ type: integer
12197
+ minimum: 0
12198
+ failedCount:
12199
+ type: integer
12200
+ minimum: 0
12201
+ inProgressCount:
12202
+ type: integer
12203
+ minimum: 0
12204
+ indexingEnabled:
12205
+ type: boolean
12206
+ indexingCadence:
12207
+ type: string
12208
+ enum: [daily, weekly, manual]
12209
+ agentMdSource:
12210
+ type: string
12211
+ nullable: true
12212
+ enum: [generated, admin]
12213
+
11881
12214
  CodeWikiGuidanceDto:
11882
12215
  type: object
11883
12216
  properties:
@@ -11958,6 +12291,15 @@ components:
11958
12291
  type: string
11959
12292
  nullable: true
11960
12293
  description: Optional Claude model override for Code Intelligence (null/empty → env default).
12294
+ codeIntelligenceIndexingEnabled:
12295
+ type: boolean
12296
+ description: >
12297
+ When false, enable-enqueue and the cadence tick do not start an index wave.
12298
+ Defaults to true.
12299
+ codeIntelligenceIndexingCadence:
12300
+ type: string
12301
+ enum: [daily, weekly, manual]
12302
+ description: Index wave cadence. `manual` does not tick. Defaults to `daily`.
11961
12303
  hasCodeIntelligenceExecutionToken:
11962
12304
  type: boolean
11963
12305
  description: True when a dedicated `code_intelligence` source has a stored executionToken.
@@ -18967,6 +19309,94 @@ components:
18967
19309
  - integrations.grafana.sync_failed
18968
19310
  - integrations.zelt.added
18969
19311
  - integrations.zelt.removed
19312
+ - report.exported
19313
+
19314
+ ReportCenterExportRecordBodyDto:
19315
+ type: object
19316
+ description: >
19317
+ Metadata for a successful Report Center PDF download. Secret-free; no table payloads.
19318
+ Recorded as `report.exported` on the workspace activity log.
19319
+ required:
19320
+ - rangeId
19321
+ - department
19322
+ - team
19323
+ - sectionIds
19324
+ - preset
19325
+ - customized
19326
+ - timezone
19327
+ - filename
19328
+ properties:
19329
+ rangeId:
19330
+ type: string
19331
+ minLength: 1
19332
+ maxLength: 128
19333
+ description: Applied insights range id (e.g. `30d`, `cr:2026-01-01:2026-01-31`).
19334
+ department:
19335
+ type: string
19336
+ minLength: 1
19337
+ maxLength: 256
19338
+ team:
19339
+ type: string
19340
+ minLength: 1
19341
+ maxLength: 256
19342
+ selectedProductivityTeamIds:
19343
+ type: array
19344
+ maxItems: 256
19345
+ items:
19346
+ type: string
19347
+ minLength: 1
19348
+ maxLength: 128
19349
+ sectionIds:
19350
+ type: array
19351
+ minItems: 1
19352
+ maxItems: 64
19353
+ items:
19354
+ type: string
19355
+ minLength: 1
19356
+ maxLength: 128
19357
+ preset:
19358
+ type: string
19359
+ minLength: 1
19360
+ maxLength: 64
19361
+ description: >
19362
+ Preset id used as the starting point (e.g. `leadership`, `productivity`, `full`, `custom`).
19363
+ customized:
19364
+ type: boolean
19365
+ description: True when the admin changed section checks after picking a preset.
19366
+ timezone:
19367
+ type: string
19368
+ minLength: 1
19369
+ maxLength: 128
19370
+ description: IANA timezone printed on the PDF cover.
19371
+ filename:
19372
+ type: string
19373
+ minLength: 1
19374
+ maxLength: 256
19375
+ providerIds:
19376
+ type: array
19377
+ maxItems: 32
19378
+ items:
19379
+ type: string
19380
+ minLength: 1
19381
+ maxLength: 64
19382
+ repoIds:
19383
+ type: array
19384
+ maxItems: 512
19385
+ items:
19386
+ type: string
19387
+ minLength: 1
19388
+ maxLength: 256
19389
+
19390
+ ReportCenterExportRecordResponseDto:
19391
+ type: object
19392
+ required: [ok, activityEntryId]
19393
+ properties:
19394
+ ok:
19395
+ type: boolean
19396
+ enum: [true]
19397
+ activityEntryId:
19398
+ type: string
19399
+ format: uuid
18970
19400
 
18971
19401
  ActivityLogActorDto:
18972
19402
  type: object
@@ -20731,6 +21161,7 @@ components:
20731
21161
  Omit or false to keep the full pipeline, including wiki. Distinct from
20732
21162
  skipLlm, which still writes a skeleton wiki. A job that is already
20733
21163
  queued or running keeps the options it was enqueued with.
21164
+ Together with `force: true` and no `repoIds`, this opens an admin index wave.
20734
21165
 
20735
21166
  CodeChatSyncIndexesResultDto:
20736
21167
  type: object
@@ -20753,12 +21184,15 @@ components:
20753
21184
  repoName: { type: string }
20754
21185
  code:
20755
21186
  type: string
20756
- enum: [repo_ineligible, indexed_recently, index_in_progress]
20757
- description: Stable machine-readable skip reason
21187
+ enum: [repo_ineligible, indexed_recently, index_in_progress, ecg_source_off]
21188
+ description: >
21189
+ Stable machine-readable skip reason. `ecg_source_off` covers a source turned off
21190
+ for Engineering Context Graph and non-GitHub providers that stay listed but are
21191
+ never indexed.
20758
21192
 
20759
21193
  CodeChatThreadDto:
20760
21194
  type: object
20761
- required: [id, workspaceId, repoIds, title, createdAt, updatedAt]
21195
+ required: [id, workspaceId, repoIds, title, scope, createdAt, updatedAt]
20762
21196
  properties:
20763
21197
  id: { type: string, format: uuid }
20764
21198
  workspaceId: { type: string, format: uuid }
@@ -20769,6 +21203,12 @@ components:
20769
21203
  description: Empty means all ready repos in the workspace.
20770
21204
  revisionRef: { type: string, nullable: true }
20771
21205
  title: { type: string }
21206
+ scope:
21207
+ type: string
21208
+ enum: [workspace, repo]
21209
+ description: >
21210
+ `workspace` when `repoIds` is empty or has more than one id (Conversations).
21211
+ `repo` when exactly one repository is bound (System / Wiki).
20772
21212
  createdAt: { type: string, format: date-time }
20773
21213
  updatedAt: { type: string, format: date-time }
20774
21214
 
@@ -20783,6 +21223,12 @@ components:
20783
21223
  CodeChatCreateThreadBodyDto:
20784
21224
  type: object
20785
21225
  properties:
21226
+ scope:
21227
+ type: string
21228
+ enum: [workspace]
21229
+ description: >
21230
+ Create a workspace conversation with empty `repoIds`. Does not reuse an older
21231
+ thread. Requires chat readiness and an execution key.
20786
21232
  indexId:
20787
21233
  type: string
20788
21234
  format: uuid
@@ -20790,7 +21236,7 @@ components:
20790
21236
  repoIds:
20791
21237
  type: array
20792
21238
  items: { type: string, format: uuid }
20793
- description: Empty or omitted = all ready repos.
21239
+ description: Empty or omitted = all ready repos. Ignored when scope is workspace.
20794
21240
  revisionRef: { type: string }
20795
21241
  title: { type: string }
20796
21242
 
@@ -20855,10 +21301,11 @@ components:
20855
21301
  properties:
20856
21302
  mode:
20857
21303
  type: string
20858
- enum: [llm, retrieval, inventory]
21304
+ enum: [llm, retrieval, inventory, failed]
20859
21305
  description: >
20860
21306
  How the assistant answer was produced. `inventory` returns a deterministic
20861
- catalog (APIs or modules) rather than LLM synthesis.
21307
+ catalog (APIs or modules) rather than LLM synthesis. `failed` is a short
21308
+ assistant message after provider timeout or error (no retrieval substitute).
20862
21309
  structured:
20863
21310
  description: Optional typed inventory payload for rich UI tables
20864
21311
  allOf:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.142.0",
3
+ "version": "2.144.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",