@kammcs/buildit-mcp 0.1.0 → 0.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 (42) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/README.md +299 -72
  3. package/SECURITY.md +5 -5
  4. package/dist/api/client.js +5 -1
  5. package/dist/api/generated/operations.js +717 -4
  6. package/dist/api/generated/schemas.js +718 -3
  7. package/dist/api/generated/strict.js +859 -3
  8. package/dist/channel/api.js +128 -0
  9. package/dist/channel/approvals.js +259 -0
  10. package/dist/channel/item-events.js +138 -0
  11. package/dist/channel/lock.js +181 -0
  12. package/dist/channel/loop.js +776 -0
  13. package/dist/channel/mask.js +365 -0
  14. package/dist/channel/threads.js +60 -0
  15. package/dist/channel/tool-ring.js +124 -0
  16. package/dist/channel/typing.js +150 -0
  17. package/dist/channel/waiters.js +229 -0
  18. package/dist/channel/workers.js +66 -0
  19. package/dist/cli/claude-config.js +100 -0
  20. package/dist/cli/commands.js +410 -0
  21. package/dist/config.js +329 -6
  22. package/dist/errors.js +38 -0
  23. package/dist/index.js +122 -6
  24. package/dist/log.js +3 -2
  25. package/dist/secrets/keychain.js +273 -0
  26. package/dist/server.js +53 -5
  27. package/dist/tools/approve.js +791 -0
  28. package/dist/tools/ask.js +898 -0
  29. package/dist/tools/chat.js +98 -1
  30. package/dist/tools/items-read.js +41 -5
  31. package/dist/tools/items-write.js +66 -15
  32. package/dist/tools/pages.js +81 -1
  33. package/dist/tools/plans.js +221 -14
  34. package/dist/tools/projects.js +38 -24
  35. package/dist/tools/reply.js +138 -0
  36. package/dist/tools/shared.js +34 -1
  37. package/dist/tools/threads.js +123 -0
  38. package/dist/tools/whoami.js +29 -4
  39. package/dist/toolsets/catalog.js +5 -2
  40. package/dist/toolsets/registry.js +2 -0
  41. package/dist/transports/stdio.js +260 -6
  42. package/package.json +5 -1
@@ -2,12 +2,12 @@
2
2
  * The agent API's operations, scopes and error codes, as the contract declares them.
3
3
  *
4
4
  * GENERATED by scripts/generate.ts from openapi/openapi.json (agent API
5
- * 1.1.0). Do not edit: change the contract, then run
5
+ * 1.8.0). Do not edit: change the contract, then run
6
6
  * `npm run generate`.
7
7
  */
8
8
  import * as S from './schemas.js';
9
9
  /** The contract's API version. */
10
- export const API_VERSION = '1.1.0';
10
+ export const API_VERSION = '1.8.0';
11
11
  /** Token scopes, in the contract's order. */
12
12
  export const SCOPES = [
13
13
  'projects:read',
@@ -61,12 +61,32 @@ export const ERROR_STATUS = {
61
61
  unavailable: 503,
62
62
  release_archived: 409,
63
63
  release_not_released: 409,
64
+ session_token_required: 403,
65
+ agent_sessions_off: 403,
66
+ authorization_pending: 400,
67
+ slow_down: 400,
68
+ access_denied: 400,
69
+ expired_token: 400,
70
+ thread_other_session: 409,
71
+ card_invalid: 422,
72
+ card_closed: 409,
73
+ response_changed: 409,
74
+ not_own_message: 403,
75
+ plan_awaits_owner: 409,
76
+ plan_card_exists: 409,
77
+ plan_card_required: 409,
78
+ thread_not_bound: 403,
79
+ thread_required: 422,
80
+ outside_reach: 403,
81
+ plan_outside_thread: 422,
82
+ approvals_off: 403,
83
+ too_many_open: 409,
64
84
  };
65
85
  /** Each error code's stable next step, as the contract words it. The API sends it as the error's hint; this copy serves when an older API doesn't. */
66
86
  export const ERROR_HINTS = {
67
87
  bad_request: 'Send a JSON body with Content-Type: application/json, and check the path and query.',
68
- token_invalid: 'Check the Authorization header: Bearer, then the whole buildit_pat_ token.',
69
- token_expired: 'Ask the user to create a new token in buildIt.Social (Settings → Agent tokens).',
88
+ token_invalid: 'Check the Authorization header: Bearer, then the whole buildit_pat_ or buildit_ags_ token.',
89
+ token_expired: 'Ask the user to create a new token in buildIt.Social (Settings → Agent tokens), or connect the session again.',
70
90
  token_revoked: 'Ask the user to create a new token in buildIt.Social (Settings → Agent tokens), if they still have access.',
71
91
  token_suspended: "Ask an org admin to reactivate the user's membership; the token then works again.",
72
92
  agent_access_off: 'Ask an org owner or admin to turn on Agent access (Settings → the org → Integrations); tokens then work again.',
@@ -95,6 +115,26 @@ export const ERROR_HINTS = {
95
115
  unavailable: 'Retry in a minute.',
96
116
  release_archived: 'Restore the release with restore_release, then retry.',
97
117
  release_not_released: 'Leave released_on out, or release it with release_version, which takes released_on.',
118
+ session_token_required: "Use the session token that connecting a session gave; a personal access token can't.",
119
+ agent_sessions_off: 'Ask an org owner or admin to turn agents in the app back on (Settings → the org → Integrations → Agent access).',
120
+ authorization_pending: 'Poll again after details.interval seconds.',
121
+ slow_down: 'Wait details.interval seconds between polls from now on.',
122
+ access_denied: 'Stop polling; start a new connection only if the user asks for one.',
123
+ expired_token: 'Start again with connect_start and show the user the new code.',
124
+ thread_other_session: 'Reply in a thread of this session, or post a new top-level message.',
125
+ card_invalid: 'Fix each element in details.errors, then retry.',
126
+ card_closed: 'The card takes no more answers; post a new one if you still need an answer.',
127
+ response_changed: 'Wait for the next card.response and answer its revision.',
128
+ not_own_message: "Change, close or answer only this session's own question cards.",
129
+ plan_awaits_owner: 'Wait for the person to apply or cancel the plan in buildIt.Social.',
130
+ plan_card_exists: "Wait for the person's answer on the plan's card, or propose a new plan.",
131
+ plan_card_required: 'Post the plan as a card with post_plan_card; the person applies it there.',
132
+ thread_not_bound: "Reply in a thread this session's events came from; only the person can assign it items.",
133
+ thread_required: "Send thread_id (the item's id), or post in the direct message instead.",
134
+ outside_reach: 'Stop work on that item; the person can connect a session that reaches its project.',
135
+ plan_outside_thread: "Post the plan's card in the direct message, or keep the plan to the thread's project.",
136
+ approvals_off: "Ask in the terminal; don't retry until the person turns tool approvals back on.",
137
+ too_many_open: 'Close the tool approvals that no longer need an answer, or ask in the terminal.',
98
138
  };
99
139
  /** Every scope each plan action needs, all of them (the operations whose scope is 'plan_action' check them). */
100
140
  export const PLAN_SCOPES = {
@@ -109,6 +149,34 @@ export const PLAN_SCOPES = {
109
149
  };
110
150
  /** Every operation of the contract, by operationId. */
111
151
  export const OPERATIONS = {
152
+ ack_session_events: {
153
+ method: 'POST',
154
+ path: '/v1/session/events/ack',
155
+ pathParams: [],
156
+ arrayQueryParams: [],
157
+ scope: null,
158
+ requiredScopes: [],
159
+ hints: { read_only: false, destructive: false, idempotent: true, needs_projects: false },
160
+ errors: [
161
+ 'bad_request',
162
+ 'token_invalid',
163
+ 'token_expired',
164
+ 'token_revoked',
165
+ 'token_suspended',
166
+ 'agent_access_off',
167
+ 'body_too_large',
168
+ 'validation',
169
+ 'rate_limited',
170
+ 'internal',
171
+ 'unavailable',
172
+ 'session_token_required',
173
+ 'agent_sessions_off',
174
+ ],
175
+ hasBody: true,
176
+ statuses: [200],
177
+ discovery: false,
178
+ response: S.AckSessionEventsResponseSchema,
179
+ },
112
180
  add_comment: {
113
181
  method: 'POST',
114
182
  path: '/v1/items/{key}/comments',
@@ -138,6 +206,7 @@ export const OPERATIONS = {
138
206
  'rate_limited',
139
207
  'internal',
140
208
  'unavailable',
209
+ 'agent_sessions_off',
141
210
  ],
142
211
  hasBody: true,
143
212
  statuses: [200, 201],
@@ -172,6 +241,7 @@ export const OPERATIONS = {
172
241
  'rate_limited',
173
242
  'internal',
174
243
  'unavailable',
244
+ 'agent_sessions_off',
175
245
  ],
176
246
  hasBody: true,
177
247
  statuses: [200, 201],
@@ -206,6 +276,7 @@ export const OPERATIONS = {
206
276
  'rate_limited',
207
277
  'internal',
208
278
  'unavailable',
279
+ 'agent_sessions_off',
209
280
  ],
210
281
  hasBody: true,
211
282
  statuses: [200],
@@ -240,12 +311,47 @@ export const OPERATIONS = {
240
311
  'rate_limited',
241
312
  'internal',
242
313
  'unavailable',
314
+ 'agent_sessions_off',
243
315
  ],
244
316
  hasBody: true,
245
317
  statuses: [200],
246
318
  discovery: false,
247
319
  response: S.SprintItemsResponseSchema,
248
320
  },
321
+ answer_session_response: {
322
+ method: 'PATCH',
323
+ path: '/v1/session/responses/{id}',
324
+ pathParams: ['id'],
325
+ arrayQueryParams: [],
326
+ scope: null,
327
+ requiredScopes: [],
328
+ hints: { read_only: false, destructive: false, idempotent: true, needs_projects: false },
329
+ errors: [
330
+ 'bad_request',
331
+ 'token_invalid',
332
+ 'token_expired',
333
+ 'token_revoked',
334
+ 'token_suspended',
335
+ 'agent_access_off',
336
+ 'forbidden',
337
+ 'not_found',
338
+ 'body_too_large',
339
+ 'validation',
340
+ 'rate_limited',
341
+ 'internal',
342
+ 'unavailable',
343
+ 'session_token_required',
344
+ 'agent_sessions_off',
345
+ 'card_closed',
346
+ 'response_changed',
347
+ 'not_own_message',
348
+ 'outside_reach',
349
+ ],
350
+ hasBody: true,
351
+ statuses: [200],
352
+ discovery: false,
353
+ response: S.AnswerSessionResponseResponseSchema,
354
+ },
249
355
  apply_plan: {
250
356
  method: 'POST',
251
357
  path: '/v1/plans/{handle}/apply',
@@ -279,6 +385,9 @@ export const OPERATIONS = {
279
385
  'rate_limited',
280
386
  'internal',
281
387
  'unavailable',
388
+ 'agent_sessions_off',
389
+ 'plan_awaits_owner',
390
+ 'plan_card_required',
282
391
  ],
283
392
  hasBody: true,
284
393
  statuses: [200],
@@ -312,12 +421,75 @@ export const OPERATIONS = {
312
421
  'rate_limited',
313
422
  'internal',
314
423
  'unavailable',
424
+ 'agent_sessions_off',
315
425
  ],
316
426
  hasBody: false,
317
427
  statuses: [200],
318
428
  discovery: false,
319
429
  response: S.ReleaseResponseSchema,
320
430
  },
431
+ close_session_approval: {
432
+ method: 'POST',
433
+ path: '/v1/session/approvals/{id}/close',
434
+ pathParams: ['id'],
435
+ arrayQueryParams: [],
436
+ scope: null,
437
+ requiredScopes: [],
438
+ hints: { read_only: false, destructive: false, idempotent: true, needs_projects: false },
439
+ errors: [
440
+ 'bad_request',
441
+ 'token_invalid',
442
+ 'token_expired',
443
+ 'token_revoked',
444
+ 'token_suspended',
445
+ 'agent_access_off',
446
+ 'not_found',
447
+ 'body_too_large',
448
+ 'validation',
449
+ 'rate_limited',
450
+ 'internal',
451
+ 'unavailable',
452
+ 'session_token_required',
453
+ 'agent_sessions_off',
454
+ ],
455
+ hasBody: true,
456
+ statuses: [200],
457
+ discovery: false,
458
+ response: S.CloseSessionApprovalResponseSchema,
459
+ },
460
+ close_session_card: {
461
+ method: 'POST',
462
+ path: '/v1/session/messages/{id}/card/close',
463
+ pathParams: ['id'],
464
+ arrayQueryParams: [],
465
+ scope: null,
466
+ requiredScopes: [],
467
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
468
+ errors: [
469
+ 'bad_request',
470
+ 'token_invalid',
471
+ 'token_expired',
472
+ 'token_revoked',
473
+ 'token_suspended',
474
+ 'agent_access_off',
475
+ 'forbidden',
476
+ 'not_found',
477
+ 'body_too_large',
478
+ 'validation',
479
+ 'rate_limited',
480
+ 'internal',
481
+ 'unavailable',
482
+ 'session_token_required',
483
+ 'agent_sessions_off',
484
+ 'card_closed',
485
+ 'not_own_message',
486
+ 'outside_reach',
487
+ ],
488
+ hasBody: true,
489
+ statuses: [200],
490
+ discovery: false,
491
+ response: S.CloseSessionCardResponseSchema,
492
+ },
321
493
  complete_sprint: {
322
494
  method: 'POST',
323
495
  path: '/v1/projects/{key}/sprints/{sprint}/complete',
@@ -346,12 +518,59 @@ export const OPERATIONS = {
346
518
  'rate_limited',
347
519
  'internal',
348
520
  'unavailable',
521
+ 'agent_sessions_off',
349
522
  ],
350
523
  hasBody: true,
351
524
  statuses: [200],
352
525
  discovery: false,
353
526
  response: S.CompleteSprintResponseSchema,
354
527
  },
528
+ connect_poll: {
529
+ method: 'POST',
530
+ path: '/v1/connect/poll',
531
+ pathParams: [],
532
+ arrayQueryParams: [],
533
+ scope: null,
534
+ requiredScopes: [],
535
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
536
+ errors: [
537
+ 'bad_request',
538
+ 'body_too_large',
539
+ 'validation',
540
+ 'rate_limited',
541
+ 'internal',
542
+ 'unavailable',
543
+ 'authorization_pending',
544
+ 'slow_down',
545
+ 'access_denied',
546
+ 'expired_token',
547
+ ],
548
+ hasBody: true,
549
+ statuses: [200],
550
+ discovery: true,
551
+ response: S.ConnectPollResponseSchema,
552
+ },
553
+ connect_start: {
554
+ method: 'POST',
555
+ path: '/v1/connect/start',
556
+ pathParams: [],
557
+ arrayQueryParams: [],
558
+ scope: null,
559
+ requiredScopes: [],
560
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
561
+ errors: [
562
+ 'bad_request',
563
+ 'body_too_large',
564
+ 'validation',
565
+ 'rate_limited',
566
+ 'internal',
567
+ 'unavailable',
568
+ ],
569
+ hasBody: true,
570
+ statuses: [201],
571
+ discovery: true,
572
+ response: S.ConnectStartResponseSchema,
573
+ },
355
574
  create_channel: {
356
575
  method: 'POST',
357
576
  path: '/v1/channels',
@@ -378,6 +597,7 @@ export const OPERATIONS = {
378
597
  'rate_limited',
379
598
  'internal',
380
599
  'unavailable',
600
+ 'agent_sessions_off',
381
601
  ],
382
602
  hasBody: true,
383
603
  statuses: [200, 201],
@@ -416,6 +636,7 @@ export const OPERATIONS = {
416
636
  'rate_limited',
417
637
  'internal',
418
638
  'unavailable',
639
+ 'agent_sessions_off',
419
640
  ],
420
641
  hasBody: true,
421
642
  statuses: [200, 201],
@@ -450,6 +671,7 @@ export const OPERATIONS = {
450
671
  'rate_limited',
451
672
  'internal',
452
673
  'unavailable',
674
+ 'agent_sessions_off',
453
675
  ],
454
676
  hasBody: true,
455
677
  statuses: [200, 201],
@@ -486,6 +708,7 @@ export const OPERATIONS = {
486
708
  'rate_limited',
487
709
  'internal',
488
710
  'unavailable',
711
+ 'agent_sessions_off',
489
712
  ],
490
713
  hasBody: true,
491
714
  statuses: [201],
@@ -520,6 +743,7 @@ export const OPERATIONS = {
520
743
  'rate_limited',
521
744
  'internal',
522
745
  'unavailable',
746
+ 'agent_sessions_off',
523
747
  ],
524
748
  hasBody: true,
525
749
  statuses: [200, 201],
@@ -554,6 +778,7 @@ export const OPERATIONS = {
554
778
  'rate_limited',
555
779
  'internal',
556
780
  'unavailable',
781
+ 'agent_sessions_off',
557
782
  ],
558
783
  hasBody: true,
559
784
  statuses: [201],
@@ -588,6 +813,7 @@ export const OPERATIONS = {
588
813
  'rate_limited',
589
814
  'internal',
590
815
  'unavailable',
816
+ 'agent_sessions_off',
591
817
  ],
592
818
  hasBody: true,
593
819
  statuses: [201],
@@ -617,6 +843,7 @@ export const OPERATIONS = {
617
843
  'rate_limited',
618
844
  'internal',
619
845
  'unavailable',
846
+ 'agent_sessions_off',
620
847
  ],
621
848
  hasBody: false,
622
849
  statuses: [200],
@@ -651,6 +878,7 @@ export const OPERATIONS = {
651
878
  'rate_limited',
652
879
  'internal',
653
880
  'unavailable',
881
+ 'agent_sessions_off',
654
882
  ],
655
883
  hasBody: true,
656
884
  statuses: [200],
@@ -680,6 +908,7 @@ export const OPERATIONS = {
680
908
  'rate_limited',
681
909
  'internal',
682
910
  'unavailable',
911
+ 'agent_sessions_off',
683
912
  ],
684
913
  hasBody: false,
685
914
  statuses: [200],
@@ -709,6 +938,7 @@ export const OPERATIONS = {
709
938
  'rate_limited',
710
939
  'internal',
711
940
  'unavailable',
941
+ 'agent_sessions_off',
712
942
  ],
713
943
  hasBody: false,
714
944
  statuses: [200],
@@ -733,6 +963,7 @@ export const OPERATIONS = {
733
963
  'rate_limited',
734
964
  'internal',
735
965
  'unavailable',
966
+ 'agent_sessions_off',
736
967
  ],
737
968
  hasBody: false,
738
969
  statuses: [200],
@@ -757,6 +988,7 @@ export const OPERATIONS = {
757
988
  'rate_limited',
758
989
  'internal',
759
990
  'unavailable',
991
+ 'agent_sessions_off',
760
992
  ],
761
993
  hasBody: false,
762
994
  statuses: [200],
@@ -785,12 +1017,67 @@ export const OPERATIONS = {
785
1017
  'rate_limited',
786
1018
  'internal',
787
1019
  'unavailable',
1020
+ 'agent_sessions_off',
788
1021
  ],
789
1022
  hasBody: false,
790
1023
  statuses: [200],
791
1024
  discovery: false,
792
1025
  response: S.PageResponseSchema,
793
1026
  },
1027
+ get_session: {
1028
+ method: 'GET',
1029
+ path: '/v1/session',
1030
+ pathParams: [],
1031
+ arrayQueryParams: [],
1032
+ scope: null,
1033
+ requiredScopes: [],
1034
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1035
+ errors: [
1036
+ 'bad_request',
1037
+ 'token_invalid',
1038
+ 'token_expired',
1039
+ 'token_revoked',
1040
+ 'token_suspended',
1041
+ 'agent_access_off',
1042
+ 'rate_limited',
1043
+ 'internal',
1044
+ 'unavailable',
1045
+ 'session_token_required',
1046
+ 'agent_sessions_off',
1047
+ ],
1048
+ hasBody: false,
1049
+ statuses: [200],
1050
+ discovery: false,
1051
+ response: S.SessionResponseSchema,
1052
+ },
1053
+ get_session_approval: {
1054
+ method: 'GET',
1055
+ path: '/v1/session/approvals/{id}',
1056
+ pathParams: ['id'],
1057
+ arrayQueryParams: [],
1058
+ scope: null,
1059
+ requiredScopes: [],
1060
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1061
+ errors: [
1062
+ 'bad_request',
1063
+ 'token_invalid',
1064
+ 'token_expired',
1065
+ 'token_revoked',
1066
+ 'token_suspended',
1067
+ 'agent_access_off',
1068
+ 'not_found',
1069
+ 'validation',
1070
+ 'rate_limited',
1071
+ 'internal',
1072
+ 'unavailable',
1073
+ 'session_token_required',
1074
+ 'agent_sessions_off',
1075
+ ],
1076
+ hasBody: false,
1077
+ statuses: [200],
1078
+ discovery: false,
1079
+ response: S.GetSessionApprovalResponseSchema,
1080
+ },
794
1081
  get_thread: {
795
1082
  method: 'GET',
796
1083
  path: '/v1/messages/{id}/thread',
@@ -813,6 +1100,7 @@ export const OPERATIONS = {
813
1100
  'rate_limited',
814
1101
  'internal',
815
1102
  'unavailable',
1103
+ 'agent_sessions_off',
816
1104
  ],
817
1105
  hasBody: false,
818
1106
  statuses: [200],
@@ -843,6 +1131,7 @@ export const OPERATIONS = {
843
1131
  'rate_limited',
844
1132
  'internal',
845
1133
  'unavailable',
1134
+ 'agent_sessions_off',
846
1135
  ],
847
1136
  hasBody: false,
848
1137
  statuses: [200],
@@ -872,6 +1161,7 @@ export const OPERATIONS = {
872
1161
  'rate_limited',
873
1162
  'internal',
874
1163
  'unavailable',
1164
+ 'agent_sessions_off',
875
1165
  ],
876
1166
  hasBody: false,
877
1167
  statuses: [200],
@@ -898,6 +1188,7 @@ export const OPERATIONS = {
898
1188
  'rate_limited',
899
1189
  'internal',
900
1190
  'unavailable',
1191
+ 'agent_sessions_off',
901
1192
  ],
902
1193
  hasBody: false,
903
1194
  statuses: [200],
@@ -927,12 +1218,66 @@ export const OPERATIONS = {
927
1218
  'rate_limited',
928
1219
  'internal',
929
1220
  'unavailable',
1221
+ 'agent_sessions_off',
930
1222
  ],
931
1223
  hasBody: false,
932
1224
  statuses: [200],
933
1225
  discovery: false,
934
1226
  response: S.ListCommentsResponseSchema,
935
1227
  },
1228
+ list_emoji: {
1229
+ method: 'GET',
1230
+ path: '/v1/emoji',
1231
+ pathParams: [],
1232
+ arrayQueryParams: [],
1233
+ scope: 'chat:read',
1234
+ requiredScopes: ['chat:read'],
1235
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1236
+ errors: [
1237
+ 'bad_request',
1238
+ 'token_invalid',
1239
+ 'token_expired',
1240
+ 'token_revoked',
1241
+ 'token_suspended',
1242
+ 'agent_access_off',
1243
+ 'scope_missing',
1244
+ 'rate_limited',
1245
+ 'internal',
1246
+ 'unavailable',
1247
+ 'agent_sessions_off',
1248
+ ],
1249
+ hasBody: false,
1250
+ statuses: [200],
1251
+ discovery: false,
1252
+ response: S.ListEmojiResponseSchema,
1253
+ },
1254
+ list_members: {
1255
+ method: 'GET',
1256
+ path: '/v1/members',
1257
+ pathParams: [],
1258
+ arrayQueryParams: [],
1259
+ scope: 'projects:read',
1260
+ requiredScopes: ['projects:read'],
1261
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1262
+ errors: [
1263
+ 'bad_request',
1264
+ 'token_invalid',
1265
+ 'token_expired',
1266
+ 'token_revoked',
1267
+ 'token_suspended',
1268
+ 'agent_access_off',
1269
+ 'scope_missing',
1270
+ 'validation',
1271
+ 'rate_limited',
1272
+ 'internal',
1273
+ 'unavailable',
1274
+ 'agent_sessions_off',
1275
+ ],
1276
+ hasBody: false,
1277
+ statuses: [200],
1278
+ discovery: false,
1279
+ response: S.ListMembersResponseSchema,
1280
+ },
936
1281
  list_pages: {
937
1282
  method: 'GET',
938
1283
  path: '/v1/channels/{channel}/pages',
@@ -956,12 +1301,43 @@ export const OPERATIONS = {
956
1301
  'rate_limited',
957
1302
  'internal',
958
1303
  'unavailable',
1304
+ 'agent_sessions_off',
959
1305
  ],
960
1306
  hasBody: false,
961
1307
  statuses: [200],
962
1308
  discovery: false,
963
1309
  response: S.ListPagesResponseSchema,
964
1310
  },
1311
+ list_pins: {
1312
+ method: 'GET',
1313
+ path: '/v1/channels/{channel}/pins',
1314
+ pathParams: ['channel'],
1315
+ arrayQueryParams: [],
1316
+ scope: 'chat:read',
1317
+ requiredScopes: ['chat:read'],
1318
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1319
+ errors: [
1320
+ 'bad_request',
1321
+ 'token_invalid',
1322
+ 'token_expired',
1323
+ 'token_revoked',
1324
+ 'token_suspended',
1325
+ 'agent_access_off',
1326
+ 'scope_missing',
1327
+ 'outside_limits',
1328
+ 'not_found',
1329
+ 'validation',
1330
+ 'ambiguous',
1331
+ 'rate_limited',
1332
+ 'internal',
1333
+ 'unavailable',
1334
+ 'agent_sessions_off',
1335
+ ],
1336
+ hasBody: false,
1337
+ statuses: [200],
1338
+ discovery: false,
1339
+ response: S.ListPinsResponseSchema,
1340
+ },
965
1341
  list_project_members: {
966
1342
  method: 'GET',
967
1343
  path: '/v1/projects/{key}/members',
@@ -985,6 +1361,7 @@ export const OPERATIONS = {
985
1361
  'rate_limited',
986
1362
  'internal',
987
1363
  'unavailable',
1364
+ 'agent_sessions_off',
988
1365
  ],
989
1366
  hasBody: false,
990
1367
  statuses: [200],
@@ -1012,6 +1389,7 @@ export const OPERATIONS = {
1012
1389
  'rate_limited',
1013
1390
  'internal',
1014
1391
  'unavailable',
1392
+ 'agent_sessions_off',
1015
1393
  ],
1016
1394
  hasBody: false,
1017
1395
  statuses: [200],
@@ -1041,12 +1419,66 @@ export const OPERATIONS = {
1041
1419
  'rate_limited',
1042
1420
  'internal',
1043
1421
  'unavailable',
1422
+ 'agent_sessions_off',
1044
1423
  ],
1045
1424
  hasBody: false,
1046
1425
  statuses: [200],
1047
1426
  discovery: false,
1048
1427
  response: S.ListReleasesResponseSchema,
1049
1428
  },
1429
+ list_session_events: {
1430
+ method: 'GET',
1431
+ path: '/v1/session/events',
1432
+ pathParams: [],
1433
+ arrayQueryParams: [],
1434
+ scope: null,
1435
+ requiredScopes: [],
1436
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1437
+ errors: [
1438
+ 'bad_request',
1439
+ 'token_invalid',
1440
+ 'token_expired',
1441
+ 'token_revoked',
1442
+ 'token_suspended',
1443
+ 'agent_access_off',
1444
+ 'validation',
1445
+ 'rate_limited',
1446
+ 'internal',
1447
+ 'unavailable',
1448
+ 'session_token_required',
1449
+ 'agent_sessions_off',
1450
+ ],
1451
+ hasBody: false,
1452
+ statuses: [200],
1453
+ discovery: false,
1454
+ response: S.SessionEventsResponseSchema,
1455
+ },
1456
+ list_session_threads: {
1457
+ method: 'GET',
1458
+ path: '/v1/session/threads',
1459
+ pathParams: [],
1460
+ arrayQueryParams: [],
1461
+ scope: null,
1462
+ requiredScopes: [],
1463
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1464
+ errors: [
1465
+ 'bad_request',
1466
+ 'token_invalid',
1467
+ 'token_expired',
1468
+ 'token_revoked',
1469
+ 'token_suspended',
1470
+ 'agent_access_off',
1471
+ 'rate_limited',
1472
+ 'internal',
1473
+ 'unavailable',
1474
+ 'session_token_required',
1475
+ 'agent_sessions_off',
1476
+ ],
1477
+ hasBody: false,
1478
+ statuses: [200],
1479
+ discovery: false,
1480
+ response: S.ListSessionThreadsResponseSchema,
1481
+ },
1050
1482
  list_sprints: {
1051
1483
  method: 'GET',
1052
1484
  path: '/v1/projects/{key}/sprints',
@@ -1070,6 +1502,7 @@ export const OPERATIONS = {
1070
1502
  'rate_limited',
1071
1503
  'internal',
1072
1504
  'unavailable',
1505
+ 'agent_sessions_off',
1073
1506
  ],
1074
1507
  hasBody: false,
1075
1508
  statuses: [200],
@@ -1097,12 +1530,129 @@ export const OPERATIONS = {
1097
1530
  'rate_limited',
1098
1531
  'internal',
1099
1532
  'unavailable',
1533
+ 'agent_sessions_off',
1100
1534
  ],
1101
1535
  hasBody: false,
1102
1536
  statuses: [200],
1103
1537
  discovery: false,
1104
1538
  response: S.ListWorkTypesResponseSchema,
1105
1539
  },
1540
+ post_plan_card: {
1541
+ method: 'POST',
1542
+ path: '/v1/session/plan-cards',
1543
+ pathParams: [],
1544
+ arrayQueryParams: [],
1545
+ scope: null,
1546
+ requiredScopes: [],
1547
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
1548
+ errors: [
1549
+ 'bad_request',
1550
+ 'token_invalid',
1551
+ 'token_expired',
1552
+ 'token_revoked',
1553
+ 'token_suspended',
1554
+ 'agent_access_off',
1555
+ 'scope_missing',
1556
+ 'forbidden',
1557
+ 'archived',
1558
+ 'not_found',
1559
+ 'idempotency_conflict',
1560
+ 'plan_used',
1561
+ 'plan_expired',
1562
+ 'body_too_large',
1563
+ 'validation',
1564
+ 'rate_limited',
1565
+ 'internal',
1566
+ 'unavailable',
1567
+ 'session_token_required',
1568
+ 'agent_sessions_off',
1569
+ 'thread_other_session',
1570
+ 'card_invalid',
1571
+ 'plan_card_exists',
1572
+ 'thread_not_bound',
1573
+ 'outside_reach',
1574
+ 'plan_outside_thread',
1575
+ ],
1576
+ hasBody: true,
1577
+ statuses: [200, 201],
1578
+ discovery: false,
1579
+ response: S.PostPlanCardResponseSchema,
1580
+ },
1581
+ post_session_approval: {
1582
+ method: 'POST',
1583
+ path: '/v1/session/approvals',
1584
+ pathParams: [],
1585
+ arrayQueryParams: [],
1586
+ scope: null,
1587
+ requiredScopes: [],
1588
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
1589
+ errors: [
1590
+ 'bad_request',
1591
+ 'token_invalid',
1592
+ 'token_expired',
1593
+ 'token_revoked',
1594
+ 'token_suspended',
1595
+ 'agent_access_off',
1596
+ 'forbidden',
1597
+ 'archived',
1598
+ 'not_found',
1599
+ 'idempotency_conflict',
1600
+ 'body_too_large',
1601
+ 'validation',
1602
+ 'rate_limited',
1603
+ 'internal',
1604
+ 'unavailable',
1605
+ 'session_token_required',
1606
+ 'agent_sessions_off',
1607
+ 'thread_other_session',
1608
+ 'not_own_message',
1609
+ 'thread_not_bound',
1610
+ 'outside_reach',
1611
+ 'approvals_off',
1612
+ 'too_many_open',
1613
+ ],
1614
+ hasBody: true,
1615
+ statuses: [200, 201],
1616
+ discovery: false,
1617
+ response: S.PostSessionApprovalResponseSchema,
1618
+ },
1619
+ post_session_message: {
1620
+ method: 'POST',
1621
+ path: '/v1/session/messages',
1622
+ pathParams: [],
1623
+ arrayQueryParams: [],
1624
+ scope: null,
1625
+ requiredScopes: [],
1626
+ hints: { read_only: false, destructive: false, idempotent: false, needs_projects: false },
1627
+ errors: [
1628
+ 'bad_request',
1629
+ 'token_invalid',
1630
+ 'token_expired',
1631
+ 'token_revoked',
1632
+ 'token_suspended',
1633
+ 'agent_access_off',
1634
+ 'forbidden',
1635
+ 'archived',
1636
+ 'not_found',
1637
+ 'idempotency_conflict',
1638
+ 'body_too_large',
1639
+ 'validation',
1640
+ 'rate_limited',
1641
+ 'internal',
1642
+ 'unavailable',
1643
+ 'session_token_required',
1644
+ 'agent_sessions_off',
1645
+ 'thread_other_session',
1646
+ 'card_invalid',
1647
+ 'thread_not_bound',
1648
+ 'thread_required',
1649
+ 'outside_reach',
1650
+ ],
1651
+ hasBody: true,
1652
+ statuses: [200, 201],
1653
+ discovery: false,
1654
+ response: S.PostSessionMessageResponseSchema,
1655
+ },
1106
1656
  rank_item: {
1107
1657
  method: 'POST',
1108
1658
  path: '/v1/items/{key}/rank',
@@ -1131,6 +1681,7 @@ export const OPERATIONS = {
1131
1681
  'rate_limited',
1132
1682
  'internal',
1133
1683
  'unavailable',
1684
+ 'agent_sessions_off',
1134
1685
  ],
1135
1686
  hasBody: true,
1136
1687
  statuses: [200],
@@ -1165,6 +1716,7 @@ export const OPERATIONS = {
1165
1716
  'rate_limited',
1166
1717
  'internal',
1167
1718
  'unavailable',
1719
+ 'agent_sessions_off',
1168
1720
  ],
1169
1721
  hasBody: true,
1170
1722
  statuses: [200],
@@ -1198,6 +1750,7 @@ export const OPERATIONS = {
1198
1750
  'rate_limited',
1199
1751
  'internal',
1200
1752
  'unavailable',
1753
+ 'agent_sessions_off',
1201
1754
  ],
1202
1755
  hasBody: false,
1203
1756
  statuses: [200],
@@ -1232,6 +1785,7 @@ export const OPERATIONS = {
1232
1785
  'rate_limited',
1233
1786
  'internal',
1234
1787
  'unavailable',
1788
+ 'agent_sessions_off',
1235
1789
  ],
1236
1790
  hasBody: true,
1237
1791
  statuses: [200],
@@ -1266,6 +1820,7 @@ export const OPERATIONS = {
1266
1820
  'rate_limited',
1267
1821
  'internal',
1268
1822
  'unavailable',
1823
+ 'agent_sessions_off',
1269
1824
  ],
1270
1825
  hasBody: true,
1271
1826
  statuses: [200],
@@ -1300,6 +1855,7 @@ export const OPERATIONS = {
1300
1855
  'internal',
1301
1856
  'unavailable',
1302
1857
  'release_archived',
1858
+ 'agent_sessions_off',
1303
1859
  ],
1304
1860
  hasBody: false,
1305
1861
  statuses: [200],
@@ -1333,12 +1889,39 @@ export const OPERATIONS = {
1333
1889
  'rate_limited',
1334
1890
  'internal',
1335
1891
  'unavailable',
1892
+ 'agent_sessions_off',
1336
1893
  ],
1337
1894
  hasBody: false,
1338
1895
  statuses: [200],
1339
1896
  discovery: false,
1340
1897
  response: S.ReleaseResponseSchema,
1341
1898
  },
1899
+ revoke_session: {
1900
+ method: 'DELETE',
1901
+ path: '/v1/session',
1902
+ pathParams: [],
1903
+ arrayQueryParams: [],
1904
+ scope: null,
1905
+ requiredScopes: [],
1906
+ hints: { read_only: false, destructive: true, idempotent: true, needs_projects: false },
1907
+ errors: [
1908
+ 'bad_request',
1909
+ 'token_invalid',
1910
+ 'token_expired',
1911
+ 'token_revoked',
1912
+ 'token_suspended',
1913
+ 'agent_access_off',
1914
+ 'rate_limited',
1915
+ 'internal',
1916
+ 'unavailable',
1917
+ 'session_token_required',
1918
+ 'agent_sessions_off',
1919
+ ],
1920
+ hasBody: false,
1921
+ statuses: [204],
1922
+ discovery: false,
1923
+ response: S.NoContentSchema,
1924
+ },
1342
1925
  search_items: {
1343
1926
  method: 'GET',
1344
1927
  path: '/v1/items',
@@ -1351,6 +1934,7 @@ export const OPERATIONS = {
1351
1934
  'priority',
1352
1935
  'assignee',
1353
1936
  'label',
1937
+ 'has_link',
1354
1938
  'sort',
1355
1939
  ],
1356
1940
  scope: 'projects:read',
@@ -1372,12 +1956,102 @@ export const OPERATIONS = {
1372
1956
  'rate_limited',
1373
1957
  'internal',
1374
1958
  'unavailable',
1959
+ 'agent_sessions_off',
1375
1960
  ],
1376
1961
  hasBody: false,
1377
1962
  statuses: [200],
1378
1963
  discovery: false,
1379
1964
  response: S.SearchItemsResponseSchema,
1380
1965
  },
1966
+ search_pages: {
1967
+ method: 'GET',
1968
+ path: '/v1/pages',
1969
+ pathParams: [],
1970
+ arrayQueryParams: ['channel'],
1971
+ scope: 'pages:read',
1972
+ requiredScopes: ['pages:read'],
1973
+ hints: { read_only: true, destructive: false, idempotent: true, needs_projects: false },
1974
+ errors: [
1975
+ 'bad_request',
1976
+ 'token_invalid',
1977
+ 'token_expired',
1978
+ 'token_revoked',
1979
+ 'token_suspended',
1980
+ 'agent_access_off',
1981
+ 'scope_missing',
1982
+ 'outside_limits',
1983
+ 'not_found',
1984
+ 'validation',
1985
+ 'ambiguous',
1986
+ 'rate_limited',
1987
+ 'internal',
1988
+ 'unavailable',
1989
+ 'agent_sessions_off',
1990
+ ],
1991
+ hasBody: false,
1992
+ statuses: [200],
1993
+ discovery: false,
1994
+ response: S.SearchPagesResponseSchema,
1995
+ },
1996
+ session_heartbeat: {
1997
+ method: 'POST',
1998
+ path: '/v1/session/heartbeat',
1999
+ pathParams: [],
2000
+ arrayQueryParams: [],
2001
+ scope: null,
2002
+ requiredScopes: [],
2003
+ hints: { read_only: false, destructive: false, idempotent: true, needs_projects: false },
2004
+ errors: [
2005
+ 'bad_request',
2006
+ 'token_invalid',
2007
+ 'token_expired',
2008
+ 'token_revoked',
2009
+ 'token_suspended',
2010
+ 'agent_access_off',
2011
+ 'body_too_large',
2012
+ 'validation',
2013
+ 'rate_limited',
2014
+ 'internal',
2015
+ 'unavailable',
2016
+ 'session_token_required',
2017
+ 'agent_sessions_off',
2018
+ ],
2019
+ hasBody: true,
2020
+ statuses: [200],
2021
+ discovery: false,
2022
+ response: S.SessionHeartbeatResponseSchema,
2023
+ },
2024
+ session_typing: {
2025
+ method: 'POST',
2026
+ path: '/v1/session/typing',
2027
+ pathParams: [],
2028
+ arrayQueryParams: [],
2029
+ scope: null,
2030
+ requiredScopes: [],
2031
+ hints: { read_only: false, destructive: false, idempotent: true, needs_projects: false },
2032
+ errors: [
2033
+ 'bad_request',
2034
+ 'token_invalid',
2035
+ 'token_expired',
2036
+ 'token_revoked',
2037
+ 'token_suspended',
2038
+ 'agent_access_off',
2039
+ 'body_too_large',
2040
+ 'validation',
2041
+ 'rate_limited',
2042
+ 'internal',
2043
+ 'unavailable',
2044
+ 'session_token_required',
2045
+ 'agent_sessions_off',
2046
+ 'thread_other_session',
2047
+ 'thread_not_bound',
2048
+ 'outside_reach',
2049
+ ],
2050
+ hasBody: true,
2051
+ statuses: [204],
2052
+ discovery: false,
2053
+ response: S.NoContentSchema,
2054
+ },
1381
2055
  start_sprint: {
1382
2056
  method: 'POST',
1383
2057
  path: '/v1/projects/{key}/sprints/{sprint}/start',
@@ -1406,6 +2080,7 @@ export const OPERATIONS = {
1406
2080
  'rate_limited',
1407
2081
  'internal',
1408
2082
  'unavailable',
2083
+ 'agent_sessions_off',
1409
2084
  ],
1410
2085
  hasBody: true,
1411
2086
  statuses: [200],
@@ -1443,6 +2118,7 @@ export const OPERATIONS = {
1443
2118
  'rate_limited',
1444
2119
  'internal',
1445
2120
  'unavailable',
2121
+ 'agent_sessions_off',
1446
2122
  ],
1447
2123
  hasBody: true,
1448
2124
  statuses: [200],
@@ -1481,6 +2157,7 @@ export const OPERATIONS = {
1481
2157
  'rate_limited',
1482
2158
  'internal',
1483
2159
  'unavailable',
2160
+ 'agent_sessions_off',
1484
2161
  ],
1485
2162
  hasBody: true,
1486
2163
  statuses: [200],
@@ -1514,6 +2191,7 @@ export const OPERATIONS = {
1514
2191
  'rate_limited',
1515
2192
  'internal',
1516
2193
  'unavailable',
2194
+ 'agent_sessions_off',
1517
2195
  ],
1518
2196
  hasBody: true,
1519
2197
  statuses: [200],
@@ -1550,10 +2228,45 @@ export const OPERATIONS = {
1550
2228
  'unavailable',
1551
2229
  'release_archived',
1552
2230
  'release_not_released',
2231
+ 'agent_sessions_off',
1553
2232
  ],
1554
2233
  hasBody: true,
1555
2234
  statuses: [200],
1556
2235
  discovery: false,
1557
2236
  response: S.ReleaseResponseSchema,
1558
2237
  },
2238
+ update_session_message: {
2239
+ method: 'PATCH',
2240
+ path: '/v1/session/messages/{id}',
2241
+ pathParams: ['id'],
2242
+ arrayQueryParams: [],
2243
+ scope: null,
2244
+ requiredScopes: [],
2245
+ hints: { read_only: false, destructive: true, idempotent: true, needs_projects: false },
2246
+ errors: [
2247
+ 'bad_request',
2248
+ 'token_invalid',
2249
+ 'token_expired',
2250
+ 'token_revoked',
2251
+ 'token_suspended',
2252
+ 'agent_access_off',
2253
+ 'forbidden',
2254
+ 'not_found',
2255
+ 'body_too_large',
2256
+ 'validation',
2257
+ 'rate_limited',
2258
+ 'internal',
2259
+ 'unavailable',
2260
+ 'session_token_required',
2261
+ 'agent_sessions_off',
2262
+ 'card_invalid',
2263
+ 'card_closed',
2264
+ 'not_own_message',
2265
+ 'outside_reach',
2266
+ ],
2267
+ hasBody: true,
2268
+ statuses: [200],
2269
+ discovery: false,
2270
+ response: S.UpdateSessionMessageResponseSchema,
2271
+ },
1559
2272
  };