@walkeros/cli 4.4.0 → 4.5.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.
package/dist/index.d.ts CHANGED
@@ -7506,6 +7506,756 @@ interface paths {
7506
7506
  patch?: never;
7507
7507
  trace?: never;
7508
7508
  };
7509
+ '/api/projects/{projectId}/flows/{flowId}/releases/annotations': {
7510
+ parameters: {
7511
+ query?: never;
7512
+ header?: never;
7513
+ path?: never;
7514
+ cookie?: never;
7515
+ };
7516
+ /**
7517
+ * List release rationale
7518
+ * @description Read the rationale attached to the given releases of a flow. `versionIds` is a comma-separated list of spine version ids (at most 100), all of which must belong to this flow. Releases without rationale are absent from the response. Requires member role.
7519
+ */
7520
+ get: {
7521
+ parameters: {
7522
+ query: {
7523
+ versionIds: string;
7524
+ };
7525
+ header?: never;
7526
+ path: {
7527
+ projectId: string;
7528
+ flowId: string;
7529
+ };
7530
+ cookie?: never;
7531
+ };
7532
+ requestBody?: never;
7533
+ responses: {
7534
+ /** @description Rationale for the requested releases */
7535
+ 200: {
7536
+ headers: {
7537
+ [name: string]: unknown;
7538
+ };
7539
+ content: {
7540
+ 'application/json': components['schemas']['ListVersionAnnotationsResponse'];
7541
+ };
7542
+ };
7543
+ /** @description Invalid version ids */
7544
+ 400: {
7545
+ headers: {
7546
+ [name: string]: unknown;
7547
+ };
7548
+ content: {
7549
+ 'application/json': components['schemas']['ErrorResponse'];
7550
+ };
7551
+ };
7552
+ /** @description Unauthorized */
7553
+ 401: {
7554
+ headers: {
7555
+ [name: string]: unknown;
7556
+ };
7557
+ content: {
7558
+ 'application/json': components['schemas']['ErrorResponse'];
7559
+ };
7560
+ };
7561
+ /** @description Forbidden */
7562
+ 403: {
7563
+ headers: {
7564
+ [name: string]: unknown;
7565
+ };
7566
+ content: {
7567
+ 'application/json': components['schemas']['ErrorResponse'];
7568
+ };
7569
+ };
7570
+ /** @description Not found */
7571
+ 404: {
7572
+ headers: {
7573
+ [name: string]: unknown;
7574
+ };
7575
+ content: {
7576
+ 'application/json': components['schemas']['ErrorResponse'];
7577
+ };
7578
+ };
7579
+ /** @description Rate limited */
7580
+ 429: {
7581
+ headers: {
7582
+ [name: string]: unknown;
7583
+ };
7584
+ content: {
7585
+ 'application/json': components['schemas']['ErrorResponse'];
7586
+ };
7587
+ };
7588
+ };
7589
+ };
7590
+ /**
7591
+ * Write release rationale
7592
+ * @description Create or update the human rationale for one release of this flow. A null `humanText` clears it. The generated summary is machine-written and cannot be set through this route. The target must be a numbered release version of this flow, not an autosave revision. Requires member role.
7593
+ */
7594
+ put: {
7595
+ parameters: {
7596
+ query?: never;
7597
+ header?: never;
7598
+ path: {
7599
+ projectId: string;
7600
+ flowId: string;
7601
+ };
7602
+ cookie?: never;
7603
+ };
7604
+ requestBody?: {
7605
+ content: {
7606
+ 'application/json': {
7607
+ /** @example ver_a1b2c3d4 */
7608
+ versionId: string;
7609
+ humanText: string | null;
7610
+ };
7611
+ };
7612
+ };
7613
+ responses: {
7614
+ /** @description The stored rationale */
7615
+ 200: {
7616
+ headers: {
7617
+ [name: string]: unknown;
7618
+ };
7619
+ content: {
7620
+ 'application/json': components['schemas']['UpsertVersionAnnotationResponse'];
7621
+ };
7622
+ };
7623
+ /** @description Invalid body, or the target is not a release */
7624
+ 400: {
7625
+ headers: {
7626
+ [name: string]: unknown;
7627
+ };
7628
+ content: {
7629
+ 'application/json': components['schemas']['ErrorResponse'];
7630
+ };
7631
+ };
7632
+ /** @description Unauthorized */
7633
+ 401: {
7634
+ headers: {
7635
+ [name: string]: unknown;
7636
+ };
7637
+ content: {
7638
+ 'application/json': components['schemas']['ErrorResponse'];
7639
+ };
7640
+ };
7641
+ /** @description Forbidden */
7642
+ 403: {
7643
+ headers: {
7644
+ [name: string]: unknown;
7645
+ };
7646
+ content: {
7647
+ 'application/json': components['schemas']['ErrorResponse'];
7648
+ };
7649
+ };
7650
+ /** @description Not found */
7651
+ 404: {
7652
+ headers: {
7653
+ [name: string]: unknown;
7654
+ };
7655
+ content: {
7656
+ 'application/json': components['schemas']['ErrorResponse'];
7657
+ };
7658
+ };
7659
+ /** @description Rate limited */
7660
+ 429: {
7661
+ headers: {
7662
+ [name: string]: unknown;
7663
+ };
7664
+ content: {
7665
+ 'application/json': components['schemas']['ErrorResponse'];
7666
+ };
7667
+ };
7668
+ };
7669
+ };
7670
+ post?: never;
7671
+ delete?: never;
7672
+ options?: never;
7673
+ head?: never;
7674
+ patch?: never;
7675
+ trace?: never;
7676
+ };
7677
+ '/api/projects/{projectId}/flows/{flowId}/threads': {
7678
+ parameters: {
7679
+ query?: never;
7680
+ header?: never;
7681
+ path?: never;
7682
+ cookie?: never;
7683
+ };
7684
+ /**
7685
+ * List discussion threads on a flow
7686
+ * @description Threads anchored to things in this flow, most recently active first. `anchorType` and `anchorKey` narrow to one anchor and are only meaningful together. `includeMessages=true` attaches the messages; otherwise each thread carries `messageCount` alone. Attaching them holds the page to a smaller ceiling than the lean index and caps each thread at its newest 50 messages, with `hasMoreMessages` set when a thread holds more. Because that ceiling is below the `limit` a caller may pass, the response carries `hasMoreThreads`: a full page is not proof of a complete list. A resolved thread carries the release that settled it, and `resolvedByVersionId` is null once that release is gone, which is what `anchorLabel` is kept for. Requires member role.
7687
+ */
7688
+ get: {
7689
+ parameters: {
7690
+ query?: {
7691
+ anchorType?:
7692
+ | 'step'
7693
+ | 'entity_action'
7694
+ | 'release'
7695
+ | 'contract'
7696
+ | 'tag';
7697
+ anchorKey?: string;
7698
+ status?: 'open' | 'resolved';
7699
+ includeMessages?: 'true' | 'false';
7700
+ limit?: number;
7701
+ };
7702
+ header?: never;
7703
+ path: {
7704
+ projectId: string;
7705
+ flowId: string;
7706
+ };
7707
+ cookie?: never;
7708
+ };
7709
+ requestBody?: never;
7710
+ responses: {
7711
+ /** @description Threads on this flow */
7712
+ 200: {
7713
+ headers: {
7714
+ [name: string]: unknown;
7715
+ };
7716
+ content: {
7717
+ 'application/json': components['schemas']['ListHubThreadsResponse'];
7718
+ };
7719
+ };
7720
+ /** @description Invalid query */
7721
+ 400: {
7722
+ headers: {
7723
+ [name: string]: unknown;
7724
+ };
7725
+ content: {
7726
+ 'application/json': components['schemas']['ErrorResponse'];
7727
+ };
7728
+ };
7729
+ /** @description Unauthorized */
7730
+ 401: {
7731
+ headers: {
7732
+ [name: string]: unknown;
7733
+ };
7734
+ content: {
7735
+ 'application/json': components['schemas']['ErrorResponse'];
7736
+ };
7737
+ };
7738
+ /** @description Forbidden */
7739
+ 403: {
7740
+ headers: {
7741
+ [name: string]: unknown;
7742
+ };
7743
+ content: {
7744
+ 'application/json': components['schemas']['ErrorResponse'];
7745
+ };
7746
+ };
7747
+ /** @description Not found */
7748
+ 404: {
7749
+ headers: {
7750
+ [name: string]: unknown;
7751
+ };
7752
+ content: {
7753
+ 'application/json': components['schemas']['ErrorResponse'];
7754
+ };
7755
+ };
7756
+ /** @description Rate limited */
7757
+ 429: {
7758
+ headers: {
7759
+ [name: string]: unknown;
7760
+ };
7761
+ content: {
7762
+ 'application/json': components['schemas']['ErrorResponse'];
7763
+ };
7764
+ };
7765
+ };
7766
+ };
7767
+ put?: never;
7768
+ /**
7769
+ * Open a discussion thread
7770
+ * @description Open a thread on one anchor, with its first message. A thread never exists empty, so `text` is required and may not be blank. A `release` anchor must name a numbered release of this flow: the server verifies it and derives the label, so `anchorLabel` is ignored for that type. For any other anchor type `anchorLabel` is a display snapshot of the anchor as it reads now, stored so a later rename leaves the thread readable instead of unlabeled, and defaults to the anchor key. Requires member role.
7771
+ */
7772
+ post: {
7773
+ parameters: {
7774
+ query?: never;
7775
+ header?: never;
7776
+ path: {
7777
+ projectId: string;
7778
+ flowId: string;
7779
+ };
7780
+ cookie?: never;
7781
+ };
7782
+ requestBody?: {
7783
+ content: {
7784
+ 'application/json': {
7785
+ /**
7786
+ * @example release
7787
+ * @enum {string}
7788
+ */
7789
+ anchorType:
7790
+ | 'step'
7791
+ | 'entity_action'
7792
+ | 'release'
7793
+ | 'contract'
7794
+ | 'tag';
7795
+ anchorKey: string;
7796
+ anchorLabel?: string;
7797
+ text: string;
7798
+ };
7799
+ };
7800
+ };
7801
+ responses: {
7802
+ /** @description The opened thread, with its first message */
7803
+ 201: {
7804
+ headers: {
7805
+ [name: string]: unknown;
7806
+ };
7807
+ content: {
7808
+ 'application/json': components['schemas']['HubThreadResponse'];
7809
+ };
7810
+ };
7811
+ /** @description Invalid body, or the anchor is not a release */
7812
+ 400: {
7813
+ headers: {
7814
+ [name: string]: unknown;
7815
+ };
7816
+ content: {
7817
+ 'application/json': components['schemas']['ErrorResponse'];
7818
+ };
7819
+ };
7820
+ /** @description Unauthorized */
7821
+ 401: {
7822
+ headers: {
7823
+ [name: string]: unknown;
7824
+ };
7825
+ content: {
7826
+ 'application/json': components['schemas']['ErrorResponse'];
7827
+ };
7828
+ };
7829
+ /** @description Forbidden */
7830
+ 403: {
7831
+ headers: {
7832
+ [name: string]: unknown;
7833
+ };
7834
+ content: {
7835
+ 'application/json': components['schemas']['ErrorResponse'];
7836
+ };
7837
+ };
7838
+ /** @description Flow not found, or the anchor names no release of it */
7839
+ 404: {
7840
+ headers: {
7841
+ [name: string]: unknown;
7842
+ };
7843
+ content: {
7844
+ 'application/json': components['schemas']['ErrorResponse'];
7845
+ };
7846
+ };
7847
+ /** @description Rate limited */
7848
+ 429: {
7849
+ headers: {
7850
+ [name: string]: unknown;
7851
+ };
7852
+ content: {
7853
+ 'application/json': components['schemas']['ErrorResponse'];
7854
+ };
7855
+ };
7856
+ };
7857
+ };
7858
+ delete?: never;
7859
+ options?: never;
7860
+ head?: never;
7861
+ patch?: never;
7862
+ trace?: never;
7863
+ };
7864
+ '/api/projects/{projectId}/flows/{flowId}/threads/{threadId}/messages': {
7865
+ parameters: {
7866
+ query?: never;
7867
+ header?: never;
7868
+ path?: never;
7869
+ cookie?: never;
7870
+ };
7871
+ get?: never;
7872
+ put?: never;
7873
+ /**
7874
+ * Reply to a thread
7875
+ * @description Append a message to a thread. `text` may not be blank: a message cannot be cleared, so empty is invalid rather than a way to erase one. Replying does not reopen a resolved thread: the resolve link is a statement about a release and is never retracted implicitly. Requires member role.
7876
+ */
7877
+ post: {
7878
+ parameters: {
7879
+ query?: never;
7880
+ header?: never;
7881
+ path: {
7882
+ projectId: string;
7883
+ flowId: string;
7884
+ /** @description Thread ID (thr_...) */
7885
+ threadId: string;
7886
+ };
7887
+ cookie?: never;
7888
+ };
7889
+ requestBody?: {
7890
+ content: {
7891
+ 'application/json': {
7892
+ text: string;
7893
+ };
7894
+ };
7895
+ };
7896
+ responses: {
7897
+ /** @description The thread, with the new message */
7898
+ 201: {
7899
+ headers: {
7900
+ [name: string]: unknown;
7901
+ };
7902
+ content: {
7903
+ 'application/json': components['schemas']['HubThreadResponse'];
7904
+ };
7905
+ };
7906
+ /** @description Invalid body */
7907
+ 400: {
7908
+ headers: {
7909
+ [name: string]: unknown;
7910
+ };
7911
+ content: {
7912
+ 'application/json': components['schemas']['ErrorResponse'];
7913
+ };
7914
+ };
7915
+ /** @description Unauthorized */
7916
+ 401: {
7917
+ headers: {
7918
+ [name: string]: unknown;
7919
+ };
7920
+ content: {
7921
+ 'application/json': components['schemas']['ErrorResponse'];
7922
+ };
7923
+ };
7924
+ /** @description Forbidden */
7925
+ 403: {
7926
+ headers: {
7927
+ [name: string]: unknown;
7928
+ };
7929
+ content: {
7930
+ 'application/json': components['schemas']['ErrorResponse'];
7931
+ };
7932
+ };
7933
+ /** @description Not found */
7934
+ 404: {
7935
+ headers: {
7936
+ [name: string]: unknown;
7937
+ };
7938
+ content: {
7939
+ 'application/json': components['schemas']['ErrorResponse'];
7940
+ };
7941
+ };
7942
+ /** @description Rate limited */
7943
+ 429: {
7944
+ headers: {
7945
+ [name: string]: unknown;
7946
+ };
7947
+ content: {
7948
+ 'application/json': components['schemas']['ErrorResponse'];
7949
+ };
7950
+ };
7951
+ };
7952
+ };
7953
+ delete?: never;
7954
+ options?: never;
7955
+ head?: never;
7956
+ patch?: never;
7957
+ trace?: never;
7958
+ };
7959
+ '/api/projects/{projectId}/flows/{flowId}/threads/{threadId}': {
7960
+ parameters: {
7961
+ query?: never;
7962
+ header?: never;
7963
+ path?: never;
7964
+ cookie?: never;
7965
+ };
7966
+ get?: never;
7967
+ put?: never;
7968
+ post?: never;
7969
+ delete?: never;
7970
+ options?: never;
7971
+ head?: never;
7972
+ /**
7973
+ * Resolve or reopen a thread
7974
+ * @description Resolving records the release that settled the thread: pass `resolvedByVersionId`, or omit it to record the flow’s newest release. The target must be a numbered release of this flow, never an autosave revision. Reopening drops the link. Requires member role.
7975
+ */
7976
+ patch: {
7977
+ parameters: {
7978
+ query?: never;
7979
+ header?: never;
7980
+ path: {
7981
+ projectId: string;
7982
+ flowId: string;
7983
+ /** @description Thread ID (thr_...) */
7984
+ threadId: string;
7985
+ };
7986
+ cookie?: never;
7987
+ };
7988
+ requestBody?: {
7989
+ content: {
7990
+ 'application/json': {
7991
+ /**
7992
+ * @example open
7993
+ * @enum {string}
7994
+ */
7995
+ status: 'open' | 'resolved';
7996
+ /** @example ver_a1b2c3d4 */
7997
+ resolvedByVersionId?: string;
7998
+ };
7999
+ };
8000
+ };
8001
+ responses: {
8002
+ /** @description The updated thread */
8003
+ 200: {
8004
+ headers: {
8005
+ [name: string]: unknown;
8006
+ };
8007
+ content: {
8008
+ 'application/json': components['schemas']['HubThreadResponse'];
8009
+ };
8010
+ };
8011
+ /** @description Invalid body, or the target is not a release */
8012
+ 400: {
8013
+ headers: {
8014
+ [name: string]: unknown;
8015
+ };
8016
+ content: {
8017
+ 'application/json': components['schemas']['ErrorResponse'];
8018
+ };
8019
+ };
8020
+ /** @description Unauthorized */
8021
+ 401: {
8022
+ headers: {
8023
+ [name: string]: unknown;
8024
+ };
8025
+ content: {
8026
+ 'application/json': components['schemas']['ErrorResponse'];
8027
+ };
8028
+ };
8029
+ /** @description Forbidden */
8030
+ 403: {
8031
+ headers: {
8032
+ [name: string]: unknown;
8033
+ };
8034
+ content: {
8035
+ 'application/json': components['schemas']['ErrorResponse'];
8036
+ };
8037
+ };
8038
+ /** @description Not found */
8039
+ 404: {
8040
+ headers: {
8041
+ [name: string]: unknown;
8042
+ };
8043
+ content: {
8044
+ 'application/json': components['schemas']['ErrorResponse'];
8045
+ };
8046
+ };
8047
+ /** @description Rate limited */
8048
+ 429: {
8049
+ headers: {
8050
+ [name: string]: unknown;
8051
+ };
8052
+ content: {
8053
+ 'application/json': components['schemas']['ErrorResponse'];
8054
+ };
8055
+ };
8056
+ };
8057
+ };
8058
+ trace?: never;
8059
+ };
8060
+ '/api/projects/{projectId}/flows/{flowId}/releases/step-history': {
8061
+ parameters: {
8062
+ query?: never;
8063
+ header?: never;
8064
+ path?: never;
8065
+ cookie?: never;
8066
+ };
8067
+ /**
8068
+ * List the releases that touched one step
8069
+ * @description The releases of this flow that added, changed, or removed one step, newest first, each carrying the rationale stored for it. `step` is a `type.name` key over source, transformer, destination, store, and contract. `flow` narrows the scan to one named flow inside the config and is ignored for a contract key. `limit` bounds the releases scanned, not the entries returned. When nothing matched, `knownSteps` lists the addressable keys of the newest scanned release. Requires member role.
8070
+ */
8071
+ get: {
8072
+ parameters: {
8073
+ query: {
8074
+ step: string;
8075
+ flow?: string;
8076
+ limit?: number | null;
8077
+ };
8078
+ header?: never;
8079
+ path: {
8080
+ projectId: string;
8081
+ flowId: string;
8082
+ };
8083
+ cookie?: never;
8084
+ };
8085
+ requestBody?: never;
8086
+ responses: {
8087
+ /** @description The releases that touched the step */
8088
+ 200: {
8089
+ headers: {
8090
+ [name: string]: unknown;
8091
+ };
8092
+ content: {
8093
+ 'application/json': components['schemas']['StepHistoryResponse'];
8094
+ };
8095
+ };
8096
+ /** @description Invalid step key or query */
8097
+ 400: {
8098
+ headers: {
8099
+ [name: string]: unknown;
8100
+ };
8101
+ content: {
8102
+ 'application/json': components['schemas']['ErrorResponse'];
8103
+ };
8104
+ };
8105
+ /** @description Unauthorized */
8106
+ 401: {
8107
+ headers: {
8108
+ [name: string]: unknown;
8109
+ };
8110
+ content: {
8111
+ 'application/json': components['schemas']['ErrorResponse'];
8112
+ };
8113
+ };
8114
+ /** @description Forbidden */
8115
+ 403: {
8116
+ headers: {
8117
+ [name: string]: unknown;
8118
+ };
8119
+ content: {
8120
+ 'application/json': components['schemas']['ErrorResponse'];
8121
+ };
8122
+ };
8123
+ /** @description Not found */
8124
+ 404: {
8125
+ headers: {
8126
+ [name: string]: unknown;
8127
+ };
8128
+ content: {
8129
+ 'application/json': components['schemas']['ErrorResponse'];
8130
+ };
8131
+ };
8132
+ /** @description Rate limited */
8133
+ 429: {
8134
+ headers: {
8135
+ [name: string]: unknown;
8136
+ };
8137
+ content: {
8138
+ 'application/json': components['schemas']['ErrorResponse'];
8139
+ };
8140
+ };
8141
+ };
8142
+ };
8143
+ put?: never;
8144
+ post?: never;
8145
+ delete?: never;
8146
+ options?: never;
8147
+ head?: never;
8148
+ patch?: never;
8149
+ trace?: never;
8150
+ };
8151
+ '/api/projects/{projectId}/flows/{flowId}/releases/summarize': {
8152
+ parameters: {
8153
+ query?: never;
8154
+ header?: never;
8155
+ path?: never;
8156
+ cookie?: never;
8157
+ };
8158
+ get?: never;
8159
+ put?: never;
8160
+ /**
8161
+ * Summarize or check a release
8162
+ * @description Describe what one release of this flow changed against an earlier release, or check a written note against that same change. In `draft` mode the generated text is stored as the release's generated summary; in `check` mode nothing is stored and the response says whether the note matches. The diff is always recomputed from the two stored snapshots, with secret literals masked, and is never taken from the request. Both versions must be numbered releases of this flow, and `prevVersionId` must be the earlier of the two. Requires member role and the `hub` feature.
8163
+ */
8164
+ post: {
8165
+ parameters: {
8166
+ query?: never;
8167
+ header?: never;
8168
+ path: {
8169
+ projectId: string;
8170
+ flowId: string;
8171
+ };
8172
+ cookie?: never;
8173
+ };
8174
+ requestBody?: {
8175
+ content: {
8176
+ 'application/json': {
8177
+ /** @example ver_a1b2c3d4 */
8178
+ versionId: string;
8179
+ /** @example ver_a1b2c3d4 */
8180
+ prevVersionId: string;
8181
+ /** @enum {string} */
8182
+ mode: 'draft' | 'check';
8183
+ currentText?: string;
8184
+ };
8185
+ };
8186
+ };
8187
+ responses: {
8188
+ /** @description The generated summary or the check verdict */
8189
+ 200: {
8190
+ headers: {
8191
+ [name: string]: unknown;
8192
+ };
8193
+ content: {
8194
+ 'application/json': components['schemas']['SummarizeReleaseResponse'];
8195
+ };
8196
+ };
8197
+ /** @description Invalid body, a target is not a release, the pair is out of order, or no LLM provider is configured */
8198
+ 400: {
8199
+ headers: {
8200
+ [name: string]: unknown;
8201
+ };
8202
+ content: {
8203
+ 'application/json': components['schemas']['ErrorResponse'];
8204
+ };
8205
+ };
8206
+ /** @description Unauthorized */
8207
+ 401: {
8208
+ headers: {
8209
+ [name: string]: unknown;
8210
+ };
8211
+ content: {
8212
+ 'application/json': components['schemas']['ErrorResponse'];
8213
+ };
8214
+ };
8215
+ /** @description Forbidden */
8216
+ 403: {
8217
+ headers: {
8218
+ [name: string]: unknown;
8219
+ };
8220
+ content: {
8221
+ 'application/json': components['schemas']['ErrorResponse'];
8222
+ };
8223
+ };
8224
+ /** @description Not found */
8225
+ 404: {
8226
+ headers: {
8227
+ [name: string]: unknown;
8228
+ };
8229
+ content: {
8230
+ 'application/json': components['schemas']['ErrorResponse'];
8231
+ };
8232
+ };
8233
+ /** @description Rate limited */
8234
+ 429: {
8235
+ headers: {
8236
+ [name: string]: unknown;
8237
+ };
8238
+ content: {
8239
+ 'application/json': components['schemas']['ErrorResponse'];
8240
+ };
8241
+ };
8242
+ /** @description The model call failed or returned no usable text */
8243
+ 502: {
8244
+ headers: {
8245
+ [name: string]: unknown;
8246
+ };
8247
+ content: {
8248
+ 'application/json': components['schemas']['ErrorResponse'];
8249
+ };
8250
+ };
8251
+ };
8252
+ };
8253
+ delete?: never;
8254
+ options?: never;
8255
+ head?: never;
8256
+ patch?: never;
8257
+ trace?: never;
8258
+ };
7509
8259
  '/api/projects/{projectId}/deployments/{deploymentId}/versions/current/content': {
7510
8260
  parameters: {
7511
8261
  query?: never;
@@ -9809,6 +10559,8 @@ interface components {
9809
10559
  */
9810
10560
  deploymentType: 'web' | 'server' | null;
9811
10561
  versionNumber: number;
10562
+ /** @example ver_a1b2c3d4 */
10563
+ flowVersionId: string | null;
9812
10564
  flowVersionNumber: number | null;
9813
10565
  status: string;
9814
10566
  source: string;
@@ -9817,6 +10569,173 @@ interface components {
9817
10569
  createdAt: string;
9818
10570
  createdBy: string | null;
9819
10571
  };
10572
+ ListVersionAnnotationsResponse: {
10573
+ annotations: components['schemas']['VersionAnnotation'][];
10574
+ };
10575
+ VersionAnnotation: {
10576
+ /** @example ver_a1b2c3d4 */
10577
+ versionId: string;
10578
+ humanText: string | null;
10579
+ generatedSummary: string | null;
10580
+ /** @example user_a1b2c3d4 */
10581
+ author: string;
10582
+ /**
10583
+ * Format: date-time
10584
+ * @example 2026-01-26T14:30:00.000Z
10585
+ */
10586
+ createdAt: string;
10587
+ /**
10588
+ * Format: date-time
10589
+ * @example 2026-01-26T14:30:00.000Z
10590
+ */
10591
+ updatedAt: string;
10592
+ };
10593
+ UpsertVersionAnnotationResponse: {
10594
+ /** @example ver_a1b2c3d4 */
10595
+ versionId: string;
10596
+ humanText: string | null;
10597
+ generatedSummary: string | null;
10598
+ /** @example user_a1b2c3d4 */
10599
+ author: string;
10600
+ /**
10601
+ * Format: date-time
10602
+ * @example 2026-01-26T14:30:00.000Z
10603
+ */
10604
+ createdAt: string;
10605
+ /**
10606
+ * Format: date-time
10607
+ * @example 2026-01-26T14:30:00.000Z
10608
+ */
10609
+ updatedAt: string;
10610
+ };
10611
+ ListHubThreadsResponse: {
10612
+ threads: components['schemas']['HubThread'][];
10613
+ hasMoreThreads: boolean;
10614
+ };
10615
+ HubThread: {
10616
+ /** @example thr_a1b2c3d4 */
10617
+ id: string;
10618
+ /**
10619
+ * @example release
10620
+ * @enum {string}
10621
+ */
10622
+ anchorType: 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
10623
+ anchorKey: string;
10624
+ anchorLabel: string;
10625
+ /**
10626
+ * @example open
10627
+ * @enum {string}
10628
+ */
10629
+ status: 'open' | 'resolved';
10630
+ resolvedByVersionId: string | null;
10631
+ resolvedByVersionNumber: number | null;
10632
+ /**
10633
+ * Format: date-time
10634
+ * @example 2026-01-26T14:30:00.000Z
10635
+ */
10636
+ resolvedAt: string | null;
10637
+ resolvedBy: string | null;
10638
+ createdBy: string;
10639
+ /**
10640
+ * Format: date-time
10641
+ * @example 2026-01-26T14:30:00.000Z
10642
+ */
10643
+ createdAt: string;
10644
+ /**
10645
+ * Format: date-time
10646
+ * @example 2026-01-26T14:30:00.000Z
10647
+ */
10648
+ updatedAt: string;
10649
+ messageCount: number;
10650
+ messages?: components['schemas']['HubMessage'][];
10651
+ hasMoreMessages?: boolean;
10652
+ };
10653
+ HubMessage: {
10654
+ id: string;
10655
+ /** @example user_a1b2c3d4 */
10656
+ author: string;
10657
+ text: string;
10658
+ /**
10659
+ * Format: date-time
10660
+ * @example 2026-01-26T14:30:00.000Z
10661
+ */
10662
+ createdAt: string;
10663
+ };
10664
+ HubThreadResponse: {
10665
+ /** @example thr_a1b2c3d4 */
10666
+ id: string;
10667
+ /**
10668
+ * @example release
10669
+ * @enum {string}
10670
+ */
10671
+ anchorType: 'step' | 'entity_action' | 'release' | 'contract' | 'tag';
10672
+ anchorKey: string;
10673
+ anchorLabel: string;
10674
+ /**
10675
+ * @example open
10676
+ * @enum {string}
10677
+ */
10678
+ status: 'open' | 'resolved';
10679
+ resolvedByVersionId: string | null;
10680
+ resolvedByVersionNumber: number | null;
10681
+ /**
10682
+ * Format: date-time
10683
+ * @example 2026-01-26T14:30:00.000Z
10684
+ */
10685
+ resolvedAt: string | null;
10686
+ resolvedBy: string | null;
10687
+ createdBy: string;
10688
+ /**
10689
+ * Format: date-time
10690
+ * @example 2026-01-26T14:30:00.000Z
10691
+ */
10692
+ createdAt: string;
10693
+ /**
10694
+ * Format: date-time
10695
+ * @example 2026-01-26T14:30:00.000Z
10696
+ */
10697
+ updatedAt: string;
10698
+ messageCount: number;
10699
+ messages?: components['schemas']['HubMessage'][];
10700
+ hasMoreMessages?: boolean;
10701
+ };
10702
+ SummarizeReleaseResponse: {
10703
+ /** @enum {string} */
10704
+ mode: 'draft' | 'check';
10705
+ text: string;
10706
+ cached: boolean;
10707
+ /** @example mistral/platform/mistral-large-2512 */
10708
+ modelId: string;
10709
+ versionNumber: number;
10710
+ prevVersionNumber: number;
10711
+ };
10712
+ StepHistoryResponse: {
10713
+ step: string;
10714
+ flow: string | null;
10715
+ entries: components['schemas']['StepHistoryEntry'][];
10716
+ scanned: number;
10717
+ truncated: boolean;
10718
+ entriesTruncated: boolean;
10719
+ knownSteps?: string[];
10720
+ };
10721
+ StepHistoryEntry: {
10722
+ /** @example ver_a1b2c3d4 */
10723
+ versionId: string;
10724
+ versionNumber: number;
10725
+ /**
10726
+ * Format: date-time
10727
+ * @example 2026-01-26T14:30:00.000Z
10728
+ */
10729
+ createdAt: string;
10730
+ flow: string | null;
10731
+ /**
10732
+ * @example changed
10733
+ * @enum {string}
10734
+ */
10735
+ change: 'added' | 'removed' | 'changed';
10736
+ humanText: string | null;
10737
+ generatedSummary: string | null;
10738
+ };
9820
10739
  HeartbeatResponse: {
9821
10740
  /** @enum {boolean} */
9822
10741
  ack: true;