@kosuke-ai/cli 5.7.0 → 5.8.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 (132) hide show
  1. package/dist/agent/summary.js +129 -8
  2. package/dist/generated/commands/activity/list.js +3 -3
  3. package/dist/generated/commands/crons/artifacts-list.js +4 -4
  4. package/dist/generated/commands/crons/create.js +4 -4
  5. package/dist/generated/commands/crons/get.js +4 -4
  6. package/dist/generated/commands/crons/list.js +4 -4
  7. package/dist/generated/commands/crons/projects-resume.js +4 -4
  8. package/dist/generated/commands/crons/run.js +4 -4
  9. package/dist/generated/commands/crons/runs-artifacts-get.js +3 -3
  10. package/dist/generated/commands/crons/runs-artifacts-list.js +3 -3
  11. package/dist/generated/commands/crons/runs-cancel.js +4 -4
  12. package/dist/generated/commands/crons/runs-get.js +4 -4
  13. package/dist/generated/commands/crons/runs-list.js +4 -4
  14. package/dist/generated/commands/crons/runs-messages.js +4 -4
  15. package/dist/generated/commands/crons/update.js +4 -4
  16. package/dist/generated/commands/deploy/cancel.js +4 -4
  17. package/dist/generated/commands/deploy/list.js +2 -2
  18. package/dist/generated/commands/deploy/messages.js +2 -2
  19. package/dist/generated/commands/deploy/queue-list.js +4 -4
  20. package/dist/generated/commands/deploy/queue-move.js +4 -4
  21. package/dist/generated/commands/deploy/queue-resume.js +4 -4
  22. package/dist/generated/commands/deploy/queue-send.js +4 -4
  23. package/dist/generated/commands/deploy/queue-steer.js +4 -4
  24. package/dist/generated/commands/deploy/queue-update.js +4 -4
  25. package/dist/generated/commands/deploy/run.js +4 -4
  26. package/dist/generated/commands/deploy/set-model.js +4 -4
  27. package/dist/generated/commands/github/repositories.js +4 -4
  28. package/dist/generated/commands/github/status.js +4 -4
  29. package/dist/generated/commands/index.js +74 -64
  30. package/dist/generated/commands/preview/get.js +4 -4
  31. package/dist/generated/commands/preview/health.js +4 -4
  32. package/dist/generated/commands/preview/reset.js +4 -4
  33. package/dist/generated/commands/preview/share-create.js +4 -4
  34. package/dist/generated/commands/preview/share-get.js +4 -4
  35. package/dist/generated/commands/projects/branches.js +4 -4
  36. package/dist/generated/commands/projects/create.js +4 -4
  37. package/dist/generated/commands/projects/env-vars-add.js +4 -4
  38. package/dist/generated/commands/projects/get.js +2 -2
  39. package/dist/generated/commands/projects/labels-color.js +4 -4
  40. package/dist/generated/commands/projects/labels.js +1 -1
  41. package/dist/generated/commands/projects/list.js +2 -2
  42. package/dist/generated/commands/projects/services-add.js +4 -4
  43. package/dist/generated/commands/projects/services-list.js +4 -4
  44. package/dist/generated/commands/projects/services-update.js +4 -4
  45. package/dist/generated/commands/projects/settings-get.js +4 -4
  46. package/dist/generated/commands/projects/settings-import.js +4 -4
  47. package/dist/generated/commands/projects/settings-update.js +4 -4
  48. package/dist/generated/commands/projects/skills.js +1 -1
  49. package/dist/generated/commands/projects/update.js +4 -4
  50. package/dist/generated/commands/sessions/activate.js +19 -5
  51. package/dist/generated/commands/sessions/all.js +3 -3
  52. package/dist/generated/commands/sessions/artifacts-attach.js +3 -3
  53. package/dist/generated/commands/sessions/artifacts-get.js +3 -3
  54. package/dist/generated/commands/sessions/artifacts-list.js +3 -3
  55. package/dist/generated/commands/sessions/comments-add.js +4 -4
  56. package/dist/generated/commands/sessions/comments-list.js +4 -4
  57. package/dist/generated/commands/sessions/comments-update.js +4 -4
  58. package/dist/generated/commands/sessions/diff-comments-add.js +4 -4
  59. package/dist/generated/commands/sessions/diff-comments-list.js +4 -4
  60. package/dist/generated/commands/sessions/diff-comments-update.js +4 -4
  61. package/dist/generated/commands/sessions/diff-commits.js +4 -4
  62. package/dist/generated/commands/sessions/diff-files.js +3 -3
  63. package/dist/generated/commands/sessions/diff-patch.js +3 -3
  64. package/dist/generated/commands/sessions/edit-prompt.js +1 -1
  65. package/dist/generated/commands/sessions/files-get.js +4 -4
  66. package/dist/generated/commands/sessions/files-list.js +4 -4
  67. package/dist/generated/commands/sessions/files-write.js +4 -4
  68. package/dist/generated/commands/sessions/get.js +2 -2
  69. package/dist/generated/commands/sessions/git-commit-message.js +4 -4
  70. package/dist/generated/commands/sessions/git-commit.js +4 -4
  71. package/dist/generated/commands/sessions/git-push.js +4 -4
  72. package/dist/generated/commands/sessions/git-state.js +4 -4
  73. package/dist/generated/commands/sessions/jobs-cancel.js +4 -4
  74. package/dist/generated/commands/sessions/jobs-get.js +1 -1
  75. package/dist/generated/commands/sessions/jobs-list.js +2 -2
  76. package/dist/generated/commands/sessions/labels-edit.js +3 -3
  77. package/dist/generated/commands/sessions/labels-set.js +3 -3
  78. package/dist/generated/commands/sessions/mark-read.js +4 -4
  79. package/dist/generated/commands/sessions/messages.js +1 -1
  80. package/dist/generated/commands/sessions/needs-you.js +4 -4
  81. package/dist/generated/commands/sessions/qa-slot.js +22 -0
  82. package/dist/generated/commands/sessions/queue-list.js +3 -3
  83. package/dist/generated/commands/sessions/queue-move.js +4 -4
  84. package/dist/generated/commands/sessions/queue-resume.js +4 -4
  85. package/dist/generated/commands/sessions/queue-send.js +4 -4
  86. package/dist/generated/commands/sessions/queue-steer.js +4 -4
  87. package/dist/generated/commands/sessions/queue-update.js +4 -4
  88. package/dist/generated/commands/sessions/runtime-command.js +4 -4
  89. package/dist/generated/commands/sessions/search.js +2 -2
  90. package/dist/generated/commands/sessions/send.js +2 -2
  91. package/dist/generated/commands/sessions/steer.js +4 -4
  92. package/dist/generated/commands/sessions/title-generate.js +4 -4
  93. package/dist/generated/commands/sessions/update.js +1 -1
  94. package/dist/generated/commands/user/plugins-list.js +3 -3
  95. package/dist/generated/commands/user/plugins-update.js +4 -4
  96. package/dist/generated/commands/user/profile.js +4 -4
  97. package/dist/generated/commands/user/skills-create.js +4 -4
  98. package/dist/generated/commands/user/skills-get.js +3 -3
  99. package/dist/generated/commands/user/skills-list.js +3 -3
  100. package/dist/generated/commands/user/skills-update.js +4 -4
  101. package/dist/generated/commands/user/subscriptions-get.js +4 -4
  102. package/dist/generated/commands/user/subscriptions-usage.js +4 -4
  103. package/dist/generated/commands/workspaces/access-status.js +4 -4
  104. package/dist/generated/commands/workspaces/ai-provider-get.js +4 -4
  105. package/dist/generated/commands/workspaces/ai-provider-usage-claude.js +4 -4
  106. package/dist/generated/commands/workspaces/ai-provider-usage-codex.js +4 -4
  107. package/dist/generated/commands/workspaces/ai-provider-usage-coding-plan.js +4 -4
  108. package/dist/generated/commands/workspaces/artifacts.js +3 -3
  109. package/dist/generated/commands/workspaces/credits.js +3 -3
  110. package/dist/generated/commands/workspaces/get.js +4 -4
  111. package/dist/generated/commands/workspaces/getting-started-get.js +4 -4
  112. package/dist/generated/commands/workspaces/getting-started-update.js +4 -4
  113. package/dist/generated/commands/workspaces/integrations-sentry-get.js +4 -4
  114. package/dist/generated/commands/workspaces/integrations-slack-get.js +4 -4
  115. package/dist/generated/commands/workspaces/lead-cards.js +21 -0
  116. package/dist/generated/commands/workspaces/lead-notifications-open.js +23 -0
  117. package/dist/generated/commands/workspaces/lead-proposals-create.js +25 -0
  118. package/dist/generated/commands/workspaces/lead-triage.js +60 -0
  119. package/dist/generated/commands/workspaces/list.js +3 -3
  120. package/dist/generated/commands/workspaces/members.js +4 -4
  121. package/dist/generated/commands/workspaces/plugins-list.js +2 -2
  122. package/dist/generated/commands/workspaces/plugins-update.js +4 -4
  123. package/dist/generated/commands/workspaces/sandbox-limit.js +3 -3
  124. package/dist/generated/commands/workspaces/skills-create.js +4 -4
  125. package/dist/generated/commands/workspaces/skills-get.js +2 -2
  126. package/dist/generated/commands/workspaces/skills-list.js +2 -2
  127. package/dist/generated/commands/workspaces/skills-update.js +4 -4
  128. package/dist/generated/commands/workspaces/stop-sandboxes.js +4 -4
  129. package/dist/generated/commands/workspaces/usage.js +3 -3
  130. package/dist/program.js +7 -10
  131. package/openapi.json +1088 -30
  132. package/package.json +1 -1
package/openapi.json CHANGED
@@ -17,6 +17,9 @@
17
17
  "summary": "List Activity across every workspace you belong to, newest first: Changes Kosuke observed and what members did. Each event names its workspace. A browser session reads its active workspace only.",
18
18
  "tags": ["activity"],
19
19
  "x-kosuke-command": ["activity", "list"],
20
+ "x-kosuke-sandbox-token": true,
21
+ "x-kosuke-orchestrator-token": true,
22
+ "x-kosuke-cron-token": true,
20
23
  "x-kosuke-lead-token": true,
21
24
  "parameters": [
22
25
  {
@@ -144,6 +147,10 @@
144
147
  "summary": "List the repositories the Kosuke GitHub App can reach through your connection, all at once, with installUrl when there is no connection yet. With an API key this is always your own listing, never the staff one. 401 GITHUB_RECONNECT_REQUIRED when GitHub no longer accepts your connection.",
145
148
  "tags": ["github"],
146
149
  "x-kosuke-command": ["github", "repositories"],
150
+ "x-kosuke-sandbox-token": true,
151
+ "x-kosuke-orchestrator-token": true,
152
+ "x-kosuke-cron-token": true,
153
+ "x-kosuke-lead-token": true,
147
154
  "responses": {
148
155
  "2XX": {
149
156
  "description": "Success envelope",
@@ -184,6 +191,10 @@
184
191
  "summary": "Whether your GitHub connection exists, the account and date behind it, and reconnectRequired when GitHub no longer accepts it.",
185
192
  "tags": ["github"],
186
193
  "x-kosuke-command": ["github", "status"],
194
+ "x-kosuke-sandbox-token": true,
195
+ "x-kosuke-orchestrator-token": true,
196
+ "x-kosuke-cron-token": true,
197
+ "x-kosuke-lead-token": true,
187
198
  "responses": {
188
199
  "2XX": {
189
200
  "description": "Success envelope",
@@ -224,6 +235,9 @@
224
235
  "summary": "List chat sessions across every workspace you belong to, each with its workspace, project, URL and Needs You reason. q narrows them to titles containing it, ids to the sessions it names. With needsYou, at most 100, most severe first. A browser session reads its active workspace only.",
225
236
  "tags": ["sessions"],
226
237
  "x-kosuke-command": ["sessions", "all"],
238
+ "x-kosuke-sandbox-token": true,
239
+ "x-kosuke-orchestrator-token": true,
240
+ "x-kosuke-cron-token": true,
227
241
  "x-kosuke-lead-token": true,
228
242
  "parameters": [
229
243
  {
@@ -381,6 +395,10 @@
381
395
  "summary": "List your own Active and Under Review chat sessions in three groups, as the desktop menu bar shows them: needsYou (a Clarification waiting on you, or a Turn that finished or failed since you last read it), running, and recent. Each item names its project, the reason it is listed and the latest chat job. At most 50 per group, newest activity first; counts gives each group in full. With an API key or Connector Token this spans every workspace you belong to; a browser session sees only its active workspace.",
382
396
  "tags": ["sessions"],
383
397
  "x-kosuke-command": ["sessions", "needs-you"],
398
+ "x-kosuke-sandbox-token": true,
399
+ "x-kosuke-orchestrator-token": true,
400
+ "x-kosuke-cron-token": true,
401
+ "x-kosuke-lead-token": true,
384
402
  "responses": {
385
403
  "2XX": {
386
404
  "description": "Success envelope",
@@ -418,10 +436,11 @@
418
436
  "/api/chat-sessions/search": {
419
437
  "get": {
420
438
  "operationId": "sessionsSearch",
421
- "summary": "Search chat sessions by title. With an API key this spans every workspace you belong to; a browser session searches its active workspace; a sandbox or a Cron Run searches its own project.",
439
+ "summary": "Search chat sessions by title. With an API key this spans every workspace you belong to; a browser session searches its active workspace; an agent token searches its own workspace, or its own project when no member stands behind it.",
422
440
  "tags": ["sessions"],
423
441
  "x-kosuke-command": ["sessions", "search"],
424
442
  "x-kosuke-sandbox-token": true,
443
+ "x-kosuke-orchestrator-token": true,
425
444
  "x-kosuke-cron-token": true,
426
445
  "x-kosuke-lead-token": true,
427
446
  "parameters": [
@@ -520,6 +539,9 @@
520
539
  "summary": "List the workspaces you belong to.",
521
540
  "tags": ["workspaces"],
522
541
  "x-kosuke-command": ["workspaces", "list"],
542
+ "x-kosuke-sandbox-token": true,
543
+ "x-kosuke-orchestrator-token": true,
544
+ "x-kosuke-cron-token": true,
523
545
  "x-kosuke-lead-token": true,
524
546
  "responses": {
525
547
  "2XX": {
@@ -561,6 +583,10 @@
561
583
  "summary": "Read one workspace and your role in it.",
562
584
  "tags": ["workspaces"],
563
585
  "x-kosuke-command": ["workspaces", "get"],
586
+ "x-kosuke-sandbox-token": true,
587
+ "x-kosuke-orchestrator-token": true,
588
+ "x-kosuke-cron-token": true,
589
+ "x-kosuke-lead-token": true,
564
590
  "parameters": [
565
591
  {
566
592
  "name": "workspaceId",
@@ -612,6 +638,10 @@
612
638
  "summary": "Read which providers you, or the workspace, can run.",
613
639
  "tags": ["workspaces"],
614
640
  "x-kosuke-command": ["workspaces", "access-status"],
641
+ "x-kosuke-sandbox-token": true,
642
+ "x-kosuke-orchestrator-token": true,
643
+ "x-kosuke-cron-token": true,
644
+ "x-kosuke-lead-token": true,
615
645
  "parameters": [
616
646
  {
617
647
  "name": "workspaceId",
@@ -674,6 +704,10 @@
674
704
  "summary": "Read the workspace credentials and active auth method per provider. Secrets are masked.",
675
705
  "tags": ["workspaces"],
676
706
  "x-kosuke-command": ["workspaces", "ai-provider", "get"],
707
+ "x-kosuke-sandbox-token": true,
708
+ "x-kosuke-orchestrator-token": true,
709
+ "x-kosuke-cron-token": true,
710
+ "x-kosuke-lead-token": true,
677
711
  "parameters": [
678
712
  {
679
713
  "name": "workspaceId",
@@ -950,6 +984,10 @@
950
984
  "summary": "Read the session and weekly utilization of the workspace's Claude login. 400 when the workspace holds no Claude login or it needs reconnecting.",
951
985
  "tags": ["workspaces"],
952
986
  "x-kosuke-command": ["workspaces", "ai-provider", "usage", "claude"],
987
+ "x-kosuke-sandbox-token": true,
988
+ "x-kosuke-orchestrator-token": true,
989
+ "x-kosuke-cron-token": true,
990
+ "x-kosuke-lead-token": true,
953
991
  "parameters": [
954
992
  {
955
993
  "name": "workspaceId",
@@ -1001,6 +1039,10 @@
1001
1039
  "summary": "Read the session and weekly utilization of the workspace's Codex login. 400 when the workspace holds no Codex login or it needs reconnecting.",
1002
1040
  "tags": ["workspaces"],
1003
1041
  "x-kosuke-command": ["workspaces", "ai-provider", "usage", "codex"],
1042
+ "x-kosuke-sandbox-token": true,
1043
+ "x-kosuke-orchestrator-token": true,
1044
+ "x-kosuke-cron-token": true,
1045
+ "x-kosuke-lead-token": true,
1004
1046
  "parameters": [
1005
1047
  {
1006
1048
  "name": "workspaceId",
@@ -1052,6 +1094,10 @@
1052
1094
  "summary": "Read the session and weekly utilization of the workspace's GLM Coding Plan. 400 when the workspace holds no Coding Plan.",
1053
1095
  "tags": ["workspaces"],
1054
1096
  "x-kosuke-command": ["workspaces", "ai-provider", "usage", "coding-plan"],
1097
+ "x-kosuke-sandbox-token": true,
1098
+ "x-kosuke-orchestrator-token": true,
1099
+ "x-kosuke-cron-token": true,
1100
+ "x-kosuke-lead-token": true,
1055
1101
  "parameters": [
1056
1102
  {
1057
1103
  "name": "workspaceId",
@@ -1103,6 +1149,9 @@
1103
1149
  "summary": "Search the Artifacts of a workspace by title, across its Chat Sessions and its Cron Runs. Rows only, each naming the session or run it was written in; read one with `sessions artifacts get` or `crons runs artifacts get`.",
1104
1150
  "tags": ["workspaces"],
1105
1151
  "x-kosuke-command": ["workspaces", "artifacts"],
1152
+ "x-kosuke-sandbox-token": true,
1153
+ "x-kosuke-orchestrator-token": true,
1154
+ "x-kosuke-cron-token": true,
1106
1155
  "x-kosuke-lead-token": true,
1107
1156
  "parameters": [
1108
1157
  {
@@ -1165,6 +1214,9 @@
1165
1214
  "summary": "Read the credit balance and limit of a workspace.",
1166
1215
  "tags": ["workspaces"],
1167
1216
  "x-kosuke-command": ["workspaces", "credits"],
1217
+ "x-kosuke-sandbox-token": true,
1218
+ "x-kosuke-orchestrator-token": true,
1219
+ "x-kosuke-cron-token": true,
1168
1220
  "x-kosuke-lead-token": true,
1169
1221
  "parameters": [
1170
1222
  {
@@ -1217,6 +1269,10 @@
1217
1269
  "summary": "List the workspace's crons, newest first, with each one's projects, creator and last run status. A cron fails as soon as the latest run of any of its projects failed.",
1218
1270
  "tags": ["crons"],
1219
1271
  "x-kosuke-command": ["crons", "list"],
1272
+ "x-kosuke-sandbox-token": true,
1273
+ "x-kosuke-orchestrator-token": true,
1274
+ "x-kosuke-cron-token": true,
1275
+ "x-kosuke-lead-token": true,
1220
1276
  "parameters": [
1221
1277
  {
1222
1278
  "name": "workspaceId",
@@ -1323,6 +1379,10 @@
1323
1379
  "summary": "Create a cron, enabled, with you as its creator, in one or more of the workspace's projects: each fire runs the Cron Agent in every one of them at once. Every run spends the workspace's Credentials, never a member's Subscription, so a workspace with no usable provider is refused. The model is an encoded id such as anthropic:opus__xhigh; null or left out uses the saved Workspace Default Model when its Provider has usable workspace Credentials, otherwise Kosuke's choice among usable workspace Credentials at run time. The crontab may not fire more often than every 15 minutes.",
1324
1380
  "tags": ["crons"],
1325
1381
  "x-kosuke-command": ["crons", "create"],
1382
+ "x-kosuke-sandbox-token": true,
1383
+ "x-kosuke-orchestrator-token": true,
1384
+ "x-kosuke-cron-token": true,
1385
+ "x-kosuke-lead-token": true,
1326
1386
  "parameters": [
1327
1387
  {
1328
1388
  "name": "workspaceId",
@@ -1432,6 +1492,10 @@
1432
1492
  "summary": "Read one cron: its prompt, schedule, model, creator, when it runs next, and its projects, each with its last run status and whether five failed runs in a row paused it.",
1433
1493
  "tags": ["crons"],
1434
1494
  "x-kosuke-command": ["crons", "get"],
1495
+ "x-kosuke-sandbox-token": true,
1496
+ "x-kosuke-orchestrator-token": true,
1497
+ "x-kosuke-cron-token": true,
1498
+ "x-kosuke-lead-token": true,
1435
1499
  "parameters": [
1436
1500
  {
1437
1501
  "name": "workspaceId",
@@ -1491,6 +1555,10 @@
1491
1555
  "summary": "Change a cron; only the fields sent change. projectIds replaces its projects. Any edit starts every project over: no project stays paused and every failure count goes back to zero. enabled=false pauses the cron and enabled=true resumes it; model=null goes back to the workspace default. The creator or a workspace admin only.",
1492
1556
  "tags": ["crons"],
1493
1557
  "x-kosuke-command": ["crons", "update"],
1558
+ "x-kosuke-sandbox-token": true,
1559
+ "x-kosuke-orchestrator-token": true,
1560
+ "x-kosuke-cron-token": true,
1561
+ "x-kosuke-lead-token": true,
1494
1562
  "parameters": [
1495
1563
  {
1496
1564
  "name": "workspaceId",
@@ -1672,6 +1740,10 @@
1672
1740
  "summary": "List the Artifacts a cron's runs published, across all of its runs, most recently changed first: each one's title, kind and version, with the run and the project it came from, and the total the filters keep. One row per Artifact: the same slug published by two runs is two rows. Rows only: a body or a file url comes from crons runs artifacts get, with the row's runId. The project and kind filters each take several values and keep an Artifact matching any of them.",
1673
1741
  "tags": ["crons"],
1674
1742
  "x-kosuke-command": ["crons", "artifacts", "list"],
1743
+ "x-kosuke-sandbox-token": true,
1744
+ "x-kosuke-orchestrator-token": true,
1745
+ "x-kosuke-cron-token": true,
1746
+ "x-kosuke-lead-token": true,
1675
1747
  "parameters": [
1676
1748
  {
1677
1749
  "name": "workspaceId",
@@ -1788,6 +1860,10 @@
1788
1860
  "summary": "Resume one project that five failed runs in a row paused inside a cron: it takes part in the next fire and its failure count goes back to zero, while the cron's other projects keep their state. A cron that disabled itself because every project was paused is enabled again; one a member paused stays paused. The creator or a workspace admin only.",
1789
1861
  "tags": ["crons"],
1790
1862
  "x-kosuke-command": ["crons", "projects", "resume"],
1863
+ "x-kosuke-sandbox-token": true,
1864
+ "x-kosuke-orchestrator-token": true,
1865
+ "x-kosuke-cron-token": true,
1866
+ "x-kosuke-lead-token": true,
1791
1867
  "parameters": [
1792
1868
  {
1793
1869
  "name": "workspaceId",
@@ -1859,6 +1935,10 @@
1859
1935
  "summary": "Fire a cron once now, paused or not, exactly as a scheduled fire: one Cron Run per project, each in that project's main sandbox on the workspace's Credentials, and the sessions they file are Kosuke's, not yours. Every project that five failed runs in a row did not pause, or only the projects named. Answers with runs, one { projectId, runId, status } per project: status is the run's status when the request answers, after waiting up to about ten seconds for the fire: running once the run was handed to the Cron Agent, failed or skipped when the fire refused it, succeeded, failed or cancelled when the run had already ended, and queued when the fire had not opened the run yet. crons runs get reads any of the run ids. The creator or a workspace admin only.",
1860
1936
  "tags": ["crons"],
1861
1937
  "x-kosuke-command": ["crons", "run"],
1938
+ "x-kosuke-sandbox-token": true,
1939
+ "x-kosuke-orchestrator-token": true,
1940
+ "x-kosuke-cron-token": true,
1941
+ "x-kosuke-lead-token": true,
1862
1942
  "parameters": [
1863
1943
  {
1864
1944
  "name": "workspaceId",
@@ -1942,6 +2022,10 @@
1942
2022
  "summary": "List a cron's runs, newest first: each one's project, status, the first line of its reply or its error, with the total and failed counts of the runs the filters keep. The project and status filters each take several values and keep a run matching any of them.",
1943
2023
  "tags": ["crons"],
1944
2024
  "x-kosuke-command": ["crons", "runs", "list"],
2025
+ "x-kosuke-sandbox-token": true,
2026
+ "x-kosuke-orchestrator-token": true,
2027
+ "x-kosuke-cron-token": true,
2028
+ "x-kosuke-lead-token": true,
1945
2029
  "parameters": [
1946
2030
  {
1947
2031
  "name": "workspaceId",
@@ -2058,6 +2142,10 @@
2058
2142
  "summary": "Read one run of a cron: its project, its status, the model it ran on, the Cron Agent's reply, and the sessions it filed with each one's status and whether it waits for an answer.",
2059
2143
  "tags": ["crons"],
2060
2144
  "x-kosuke-command": ["crons", "runs", "get"],
2145
+ "x-kosuke-sandbox-token": true,
2146
+ "x-kosuke-orchestrator-token": true,
2147
+ "x-kosuke-cron-token": true,
2148
+ "x-kosuke-lead-token": true,
2061
2149
  "parameters": [
2062
2150
  {
2063
2151
  "name": "workspaceId",
@@ -2129,6 +2217,9 @@
2129
2217
  "summary": "List the Artifacts a run of a cron published, most recently changed first. Rows only: a body or a file url comes from reading one.",
2130
2218
  "tags": ["crons"],
2131
2219
  "x-kosuke-command": ["crons", "runs", "artifacts", "list"],
2220
+ "x-kosuke-sandbox-token": true,
2221
+ "x-kosuke-orchestrator-token": true,
2222
+ "x-kosuke-cron-token": true,
2132
2223
  "x-kosuke-lead-token": true,
2133
2224
  "parameters": [
2134
2225
  {
@@ -2201,6 +2292,9 @@
2201
2292
  "summary": "Read one Artifact of a run of a cron: a markdown or html one carries its body, an image or a video a presigned url, its media type and its size.",
2202
2293
  "tags": ["crons"],
2203
2294
  "x-kosuke-command": ["crons", "runs", "artifacts", "get"],
2295
+ "x-kosuke-sandbox-token": true,
2296
+ "x-kosuke-orchestrator-token": true,
2297
+ "x-kosuke-cron-token": true,
2204
2298
  "x-kosuke-lead-token": true,
2205
2299
  "parameters": [
2206
2300
  {
@@ -2283,6 +2377,10 @@
2283
2377
  "summary": "Stop a run of a cron that is still going, the way Stop on its page does. The run ends cancelled; the Artifacts it stored and the sessions it filed stay, and the cron's runs in its other projects go on. The creator or a workspace admin only.",
2284
2378
  "tags": ["crons"],
2285
2379
  "x-kosuke-command": ["crons", "runs", "cancel"],
2380
+ "x-kosuke-sandbox-token": true,
2381
+ "x-kosuke-orchestrator-token": true,
2382
+ "x-kosuke-cron-token": true,
2383
+ "x-kosuke-lead-token": true,
2286
2384
  "parameters": [
2287
2385
  {
2288
2386
  "name": "workspaceId",
@@ -2425,6 +2523,10 @@
2425
2523
  "summary": "Read the Cron Agent's transcript of one run of a cron: the prompt it was given, then everything it did, with the run's status.",
2426
2524
  "tags": ["crons"],
2427
2525
  "x-kosuke-command": ["crons", "runs", "messages"],
2526
+ "x-kosuke-sandbox-token": true,
2527
+ "x-kosuke-orchestrator-token": true,
2528
+ "x-kosuke-cron-token": true,
2529
+ "x-kosuke-lead-token": true,
2428
2530
  "parameters": [
2429
2531
  {
2430
2532
  "name": "workspaceId",
@@ -2496,6 +2598,10 @@
2496
2598
  "summary": "Read the getting-started guide and which milestones are done.",
2497
2599
  "tags": ["workspaces"],
2498
2600
  "x-kosuke-command": ["workspaces", "getting-started", "get"],
2601
+ "x-kosuke-sandbox-token": true,
2602
+ "x-kosuke-orchestrator-token": true,
2603
+ "x-kosuke-cron-token": true,
2604
+ "x-kosuke-lead-token": true,
2499
2605
  "parameters": [
2500
2606
  {
2501
2607
  "name": "workspaceId",
@@ -2545,6 +2651,10 @@
2545
2651
  "summary": "Dismiss the guide (empty body or action=dismiss) or record the preview milestone.",
2546
2652
  "tags": ["workspaces"],
2547
2653
  "x-kosuke-command": ["workspaces", "getting-started", "update"],
2654
+ "x-kosuke-sandbox-token": true,
2655
+ "x-kosuke-orchestrator-token": true,
2656
+ "x-kosuke-cron-token": true,
2657
+ "x-kosuke-lead-token": true,
2548
2658
  "parameters": [
2549
2659
  {
2550
2660
  "name": "workspaceId",
@@ -2612,6 +2722,59 @@
2612
2722
  "summary": "Read the workspace Sentry integration: status, organization, requested scopes, who authorized it and whether remote cleanup is pending. Never a credential or a connected-account identifier.",
2613
2723
  "tags": ["workspaces"],
2614
2724
  "x-kosuke-command": ["workspaces", "integrations", "sentry", "get"],
2725
+ "x-kosuke-sandbox-token": true,
2726
+ "x-kosuke-orchestrator-token": true,
2727
+ "x-kosuke-cron-token": true,
2728
+ "x-kosuke-lead-token": true,
2729
+ "parameters": [
2730
+ {
2731
+ "name": "workspaceId",
2732
+ "in": "path",
2733
+ "required": true,
2734
+ "schema": {
2735
+ "type": "string",
2736
+ "minLength": 1
2737
+ }
2738
+ }
2739
+ ],
2740
+ "responses": {
2741
+ "2XX": {
2742
+ "description": "Success envelope",
2743
+ "content": {
2744
+ "application/json": {
2745
+ "schema": {
2746
+ "$ref": "#/components/schemas/ApiSuccess"
2747
+ }
2748
+ }
2749
+ }
2750
+ },
2751
+ "4XX": {
2752
+ "description": "Error envelope",
2753
+ "content": {
2754
+ "application/json": {
2755
+ "schema": {
2756
+ "$ref": "#/components/schemas/ApiError"
2757
+ }
2758
+ }
2759
+ }
2760
+ },
2761
+ "5XX": {
2762
+ "description": "Error envelope",
2763
+ "content": {
2764
+ "application/json": {
2765
+ "schema": {
2766
+ "$ref": "#/components/schemas/ApiError"
2767
+ }
2768
+ }
2769
+ }
2770
+ }
2771
+ }
2772
+ },
2773
+ "delete": {
2774
+ "operationId": "workspacesIntegrationsSentryRemove",
2775
+ "summary": "Disconnect Sentry: agents lose the workspace's access at once, then Kosuke deletes the stored authorization, retrying in the background if needed. Revoking the authorization inside Sentry is not part of this. Admins only.",
2776
+ "tags": ["workspaces"],
2777
+ "x-kosuke-command": ["workspaces", "integrations", "sentry", "remove"],
2615
2778
  "parameters": [
2616
2779
  {
2617
2780
  "name": "workspaceId",
@@ -2654,24 +2817,407 @@
2654
2817
  }
2655
2818
  }
2656
2819
  }
2657
- }
2658
- },
2659
- "delete": {
2660
- "operationId": "workspacesIntegrationsSentryRemove",
2661
- "summary": "Disconnect Sentry: agents lose the workspace's access at once, then Kosuke deletes the stored authorization, retrying in the background if needed. Revoking the authorization inside Sentry is not part of this. Admins only.",
2662
- "tags": ["workspaces"],
2663
- "x-kosuke-command": ["workspaces", "integrations", "sentry", "remove"],
2664
- "parameters": [
2665
- {
2666
- "name": "workspaceId",
2667
- "in": "path",
2668
- "required": true,
2669
- "schema": {
2670
- "type": "string",
2671
- "minLength": 1
2672
- }
2673
- }
2674
- ],
2820
+ }
2821
+ }
2822
+ },
2823
+ "/api/organizations/{workspaceId}/integrations/slack": {
2824
+ "get": {
2825
+ "operationId": "workspacesIntegrationsSlackGet",
2826
+ "summary": "Read the workspace Slack integration: the connected Slack workspace, who authorized it and when. Never the bot token.",
2827
+ "tags": ["workspaces"],
2828
+ "x-kosuke-command": ["workspaces", "integrations", "slack", "get"],
2829
+ "x-kosuke-sandbox-token": true,
2830
+ "x-kosuke-orchestrator-token": true,
2831
+ "x-kosuke-cron-token": true,
2832
+ "x-kosuke-lead-token": true,
2833
+ "parameters": [
2834
+ {
2835
+ "name": "workspaceId",
2836
+ "in": "path",
2837
+ "required": true,
2838
+ "schema": {
2839
+ "type": "string",
2840
+ "minLength": 1
2841
+ }
2842
+ }
2843
+ ],
2844
+ "responses": {
2845
+ "2XX": {
2846
+ "description": "Success envelope",
2847
+ "content": {
2848
+ "application/json": {
2849
+ "schema": {
2850
+ "$ref": "#/components/schemas/ApiSuccess"
2851
+ }
2852
+ }
2853
+ }
2854
+ },
2855
+ "4XX": {
2856
+ "description": "Error envelope",
2857
+ "content": {
2858
+ "application/json": {
2859
+ "schema": {
2860
+ "$ref": "#/components/schemas/ApiError"
2861
+ }
2862
+ }
2863
+ }
2864
+ },
2865
+ "5XX": {
2866
+ "description": "Error envelope",
2867
+ "content": {
2868
+ "application/json": {
2869
+ "schema": {
2870
+ "$ref": "#/components/schemas/ApiError"
2871
+ }
2872
+ }
2873
+ }
2874
+ }
2875
+ }
2876
+ }
2877
+ },
2878
+ "/api/organizations/{workspaceId}/lead/cards": {
2879
+ "get": {
2880
+ "operationId": "workspacesLeadCards",
2881
+ "summary": "List your open Lead Cards in a workspace, in the order the triager ranked them.",
2882
+ "tags": ["workspaces"],
2883
+ "x-kosuke-command": ["workspaces", "lead-cards"],
2884
+ "x-kosuke-sandbox-token": true,
2885
+ "x-kosuke-orchestrator-token": true,
2886
+ "x-kosuke-cron-token": true,
2887
+ "x-kosuke-lead-token": true,
2888
+ "parameters": [
2889
+ {
2890
+ "name": "workspaceId",
2891
+ "in": "path",
2892
+ "required": true,
2893
+ "schema": {
2894
+ "type": "string",
2895
+ "minLength": 1
2896
+ }
2897
+ }
2898
+ ],
2899
+ "responses": {
2900
+ "2XX": {
2901
+ "description": "Success envelope",
2902
+ "content": {
2903
+ "application/json": {
2904
+ "schema": {
2905
+ "$ref": "#/components/schemas/ApiSuccess"
2906
+ }
2907
+ }
2908
+ }
2909
+ },
2910
+ "4XX": {
2911
+ "description": "Error envelope",
2912
+ "content": {
2913
+ "application/json": {
2914
+ "schema": {
2915
+ "$ref": "#/components/schemas/ApiError"
2916
+ }
2917
+ }
2918
+ }
2919
+ },
2920
+ "5XX": {
2921
+ "description": "Error envelope",
2922
+ "content": {
2923
+ "application/json": {
2924
+ "schema": {
2925
+ "$ref": "#/components/schemas/ApiError"
2926
+ }
2927
+ }
2928
+ }
2929
+ }
2930
+ }
2931
+ }
2932
+ },
2933
+ "/api/organizations/{workspaceId}/lead/notifications/{notificationId}/open": {
2934
+ "post": {
2935
+ "operationId": "workspacesLeadNotificationsOpen",
2936
+ "summary": "Mark one of your Lead notifications as opened.",
2937
+ "tags": ["workspaces"],
2938
+ "x-kosuke-command": ["workspaces", "lead-notifications", "open"],
2939
+ "x-kosuke-sandbox-token": true,
2940
+ "x-kosuke-orchestrator-token": true,
2941
+ "x-kosuke-cron-token": true,
2942
+ "x-kosuke-lead-token": true,
2943
+ "parameters": [
2944
+ {
2945
+ "name": "workspaceId",
2946
+ "in": "path",
2947
+ "required": true,
2948
+ "schema": {
2949
+ "type": "string",
2950
+ "minLength": 1
2951
+ }
2952
+ },
2953
+ {
2954
+ "name": "notificationId",
2955
+ "in": "path",
2956
+ "required": true,
2957
+ "schema": {
2958
+ "type": "string",
2959
+ "format": "uuid",
2960
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
2961
+ }
2962
+ }
2963
+ ],
2964
+ "responses": {
2965
+ "2XX": {
2966
+ "description": "Success envelope",
2967
+ "content": {
2968
+ "application/json": {
2969
+ "schema": {
2970
+ "$ref": "#/components/schemas/ApiSuccess"
2971
+ }
2972
+ }
2973
+ }
2974
+ },
2975
+ "4XX": {
2976
+ "description": "Error envelope",
2977
+ "content": {
2978
+ "application/json": {
2979
+ "schema": {
2980
+ "$ref": "#/components/schemas/ApiError"
2981
+ }
2982
+ }
2983
+ }
2984
+ },
2985
+ "5XX": {
2986
+ "description": "Error envelope",
2987
+ "content": {
2988
+ "application/json": {
2989
+ "schema": {
2990
+ "$ref": "#/components/schemas/ApiError"
2991
+ }
2992
+ }
2993
+ }
2994
+ }
2995
+ }
2996
+ }
2997
+ },
2998
+ "/api/organizations/{workspaceId}/lead/proposals": {
2999
+ "post": {
3000
+ "operationId": "workspacesLeadProposalsCreate",
3001
+ "summary": "Open a Lead Card in your own Needs you that proposes one thing, with one line of why. kind start proposes starting a Backlog session, and is refused unless you are idle. kind delete_ticket (with evidence), merge_tickets (with sessionIds, mergedContent and the promptRevision sessions get gave for each ticket in revisions) and create_cron (with name, prompt, crontab, timezone and projectIds, and no sessionId) change nothing until you accept the card. Pass the body whole with --body.",
3002
+ "tags": ["workspaces"],
3003
+ "x-kosuke-command": ["workspaces", "lead-proposals", "create"],
3004
+ "x-kosuke-sandbox-token": true,
3005
+ "x-kosuke-orchestrator-token": true,
3006
+ "x-kosuke-cron-token": true,
3007
+ "x-kosuke-lead-token": true,
3008
+ "parameters": [
3009
+ {
3010
+ "name": "workspaceId",
3011
+ "in": "path",
3012
+ "required": true,
3013
+ "schema": {
3014
+ "type": "string",
3015
+ "minLength": 1
3016
+ }
3017
+ }
3018
+ ],
3019
+ "requestBody": {
3020
+ "required": true,
3021
+ "content": {
3022
+ "application/json": {
3023
+ "schema": {
3024
+ "oneOf": [
3025
+ {
3026
+ "type": "object",
3027
+ "properties": {
3028
+ "kind": {
3029
+ "type": "string",
3030
+ "const": "start"
3031
+ },
3032
+ "projectId": {
3033
+ "type": "string",
3034
+ "format": "uuid",
3035
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3036
+ "description": "The project the card is filed under."
3037
+ },
3038
+ "sessionId": {
3039
+ "type": "string",
3040
+ "format": "uuid",
3041
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3042
+ "description": "A Backlog session of that project."
3043
+ },
3044
+ "why": {
3045
+ "type": "string",
3046
+ "minLength": 1,
3047
+ "maxLength": 300,
3048
+ "description": "One line: why the member should accept this."
3049
+ }
3050
+ },
3051
+ "required": ["kind", "projectId", "sessionId", "why"]
3052
+ },
3053
+ {
3054
+ "type": "object",
3055
+ "properties": {
3056
+ "kind": {
3057
+ "type": "string",
3058
+ "const": "delete_ticket"
3059
+ },
3060
+ "projectId": {
3061
+ "type": "string",
3062
+ "format": "uuid",
3063
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3064
+ "description": "The project the card is filed under."
3065
+ },
3066
+ "sessionId": {
3067
+ "type": "string",
3068
+ "format": "uuid",
3069
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3070
+ "description": "A Backlog session of that project."
3071
+ },
3072
+ "why": {
3073
+ "type": "string",
3074
+ "minLength": 1,
3075
+ "maxLength": 300,
3076
+ "description": "One line: why the member should accept this."
3077
+ },
3078
+ "evidence": {
3079
+ "type": "string",
3080
+ "minLength": 1,
3081
+ "maxLength": 300,
3082
+ "description": "The pull request or session that already did the work."
3083
+ }
3084
+ },
3085
+ "required": ["kind", "projectId", "sessionId", "why", "evidence"]
3086
+ },
3087
+ {
3088
+ "type": "object",
3089
+ "properties": {
3090
+ "kind": {
3091
+ "type": "string",
3092
+ "const": "merge_tickets"
3093
+ },
3094
+ "projectId": {
3095
+ "type": "string",
3096
+ "format": "uuid",
3097
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3098
+ "description": "The project the card is filed under."
3099
+ },
3100
+ "sessionId": {
3101
+ "type": "string",
3102
+ "format": "uuid",
3103
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3104
+ "description": "The Backlog ticket that is kept."
3105
+ },
3106
+ "why": {
3107
+ "type": "string",
3108
+ "minLength": 1,
3109
+ "maxLength": 300,
3110
+ "description": "One line: why the member should accept this."
3111
+ },
3112
+ "sessionIds": {
3113
+ "minItems": 1,
3114
+ "maxItems": 20,
3115
+ "type": "array",
3116
+ "items": {
3117
+ "type": "string",
3118
+ "format": "uuid",
3119
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3120
+ },
3121
+ "description": "The other Backlog tickets of the same project, deleted on Accept."
3122
+ },
3123
+ "mergedContent": {
3124
+ "type": "string",
3125
+ "minLength": 1,
3126
+ "maxLength": 50000,
3127
+ "description": "The prompt the kept ticket holds after the merge."
3128
+ },
3129
+ "revisions": {
3130
+ "type": "object",
3131
+ "propertyNames": {
3132
+ "type": "string",
3133
+ "format": "uuid",
3134
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3135
+ },
3136
+ "additionalProperties": {
3137
+ "type": "string",
3138
+ "pattern": "^[0-9a-f]{64}$"
3139
+ },
3140
+ "description": "The promptRevision `kosuke sessions get` gave for each ticket mergedContent was written from, the kept one included, keyed by session id."
3141
+ }
3142
+ },
3143
+ "required": [
3144
+ "kind",
3145
+ "projectId",
3146
+ "sessionId",
3147
+ "why",
3148
+ "sessionIds",
3149
+ "mergedContent",
3150
+ "revisions"
3151
+ ]
3152
+ },
3153
+ {
3154
+ "type": "object",
3155
+ "properties": {
3156
+ "kind": {
3157
+ "type": "string",
3158
+ "const": "create_cron"
3159
+ },
3160
+ "projectId": {
3161
+ "type": "string",
3162
+ "format": "uuid",
3163
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
3164
+ "description": "The project the card is filed under."
3165
+ },
3166
+ "why": {
3167
+ "type": "string",
3168
+ "minLength": 1,
3169
+ "maxLength": 300,
3170
+ "description": "One line: why the member should accept this."
3171
+ },
3172
+ "name": {
3173
+ "type": "string",
3174
+ "minLength": 1,
3175
+ "maxLength": 100
3176
+ },
3177
+ "prompt": {
3178
+ "type": "string",
3179
+ "minLength": 1,
3180
+ "description": "What each run asks the Cron Agent to do, handed to it word for word."
3181
+ },
3182
+ "crontab": {
3183
+ "type": "string",
3184
+ "minLength": 1,
3185
+ "maxLength": 100,
3186
+ "description": "Five fields: minute, hour, day of month, month, day of week. At most one fire every 15 minutes."
3187
+ },
3188
+ "timezone": {
3189
+ "type": "string",
3190
+ "minLength": 1,
3191
+ "maxLength": 64,
3192
+ "description": "The IANA zone the crontab is read in, e.g. Europe/Zurich or UTC."
3193
+ },
3194
+ "projectIds": {
3195
+ "minItems": 1,
3196
+ "maxItems": 50,
3197
+ "type": "array",
3198
+ "items": {
3199
+ "type": "string",
3200
+ "format": "uuid",
3201
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3202
+ }
3203
+ }
3204
+ },
3205
+ "required": [
3206
+ "kind",
3207
+ "projectId",
3208
+ "why",
3209
+ "name",
3210
+ "prompt",
3211
+ "crontab",
3212
+ "timezone",
3213
+ "projectIds"
3214
+ ]
3215
+ }
3216
+ ]
3217
+ }
3218
+ }
3219
+ }
3220
+ },
2675
3221
  "responses": {
2676
3222
  "2XX": {
2677
3223
  "description": "Success envelope",
@@ -2706,12 +3252,16 @@
2706
3252
  }
2707
3253
  }
2708
3254
  },
2709
- "/api/organizations/{workspaceId}/integrations/slack": {
2710
- "get": {
2711
- "operationId": "workspacesIntegrationsSlackGet",
2712
- "summary": "Read the workspace Slack integration: the connected Slack workspace, who authorized it and when. Never the bot token.",
3255
+ "/api/organizations/{workspaceId}/lead/triage": {
3256
+ "post": {
3257
+ "operationId": "workspacesLeadTriage",
3258
+ "summary": "Write the triage of your own open Lead Cards in a workspace: their order, one line of why per card, who reviews and merges a ready pull request, one notification, and the Welcome back sentence. Answers what was ranked, whether the notification went out, and every part it refused with the reason.",
2713
3259
  "tags": ["workspaces"],
2714
- "x-kosuke-command": ["workspaces", "integrations", "slack", "get"],
3260
+ "x-kosuke-command": ["workspaces", "lead-triage"],
3261
+ "x-kosuke-sandbox-token": true,
3262
+ "x-kosuke-orchestrator-token": true,
3263
+ "x-kosuke-cron-token": true,
3264
+ "x-kosuke-lead-token": true,
2715
3265
  "parameters": [
2716
3266
  {
2717
3267
  "name": "workspaceId",
@@ -2723,6 +3273,128 @@
2723
3273
  }
2724
3274
  }
2725
3275
  ],
3276
+ "requestBody": {
3277
+ "required": true,
3278
+ "content": {
3279
+ "application/json": {
3280
+ "schema": {
3281
+ "type": "object",
3282
+ "properties": {
3283
+ "rank": {
3284
+ "description": "Open card ids, most urgent first. Cards left out keep their place behind these. A JSON array.",
3285
+ "maxItems": 200,
3286
+ "type": "array",
3287
+ "items": {
3288
+ "type": "string",
3289
+ "format": "uuid",
3290
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3291
+ }
3292
+ },
3293
+ "whys": {
3294
+ "description": "One line of why per card, kept to 300 characters. A JSON array.",
3295
+ "maxItems": 200,
3296
+ "type": "array",
3297
+ "items": {
3298
+ "type": "object",
3299
+ "properties": {
3300
+ "cardId": {
3301
+ "type": "string",
3302
+ "format": "uuid",
3303
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3304
+ },
3305
+ "why": {
3306
+ "type": "string",
3307
+ "minLength": 1,
3308
+ "maxLength": 1000
3309
+ }
3310
+ },
3311
+ "required": ["cardId", "why"]
3312
+ }
3313
+ },
3314
+ "picks": {
3315
+ "description": "Who reviews and who merges the pull request of a To approve or Merge card. A JSON array.",
3316
+ "maxItems": 50,
3317
+ "type": "array",
3318
+ "items": {
3319
+ "type": "object",
3320
+ "properties": {
3321
+ "cardId": {
3322
+ "type": "string",
3323
+ "format": "uuid",
3324
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3325
+ },
3326
+ "reviewers": {
3327
+ "maxItems": 10,
3328
+ "type": "array",
3329
+ "items": {
3330
+ "type": "object",
3331
+ "properties": {
3332
+ "id": {
3333
+ "type": "string",
3334
+ "minLength": 1,
3335
+ "description": "A member id from the candidates list."
3336
+ },
3337
+ "why": {
3338
+ "type": "string",
3339
+ "minLength": 1,
3340
+ "maxLength": 300
3341
+ }
3342
+ },
3343
+ "required": ["id", "why"]
3344
+ }
3345
+ },
3346
+ "merger": {
3347
+ "type": "object",
3348
+ "properties": {
3349
+ "id": {
3350
+ "type": "string",
3351
+ "minLength": 1,
3352
+ "description": "A member id from the candidates list."
3353
+ },
3354
+ "why": {
3355
+ "type": "string",
3356
+ "minLength": 1,
3357
+ "maxLength": 300
3358
+ }
3359
+ },
3360
+ "required": ["id", "why"]
3361
+ }
3362
+ },
3363
+ "required": ["cardId"]
3364
+ }
3365
+ },
3366
+ "notify": {
3367
+ "description": "One notification for one card. Refused while the Lead is on screen. A JSON object.",
3368
+ "type": "object",
3369
+ "properties": {
3370
+ "cardId": {
3371
+ "type": "string",
3372
+ "format": "uuid",
3373
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3374
+ },
3375
+ "title": {
3376
+ "type": "string",
3377
+ "minLength": 1,
3378
+ "maxLength": 120
3379
+ },
3380
+ "body": {
3381
+ "type": "string",
3382
+ "maxLength": 500
3383
+ }
3384
+ },
3385
+ "required": ["cardId", "title", "body"]
3386
+ },
3387
+ "welcome": {
3388
+ "description": "The one sentence under \"Welcome back, N waiting\".",
3389
+ "type": "string",
3390
+ "minLength": 1,
3391
+ "maxLength": 300
3392
+ }
3393
+ }
3394
+ }
3395
+ }
3396
+ }
3397
+ },
2726
3398
  "responses": {
2727
3399
  "2XX": {
2728
3400
  "description": "Success envelope",
@@ -2763,6 +3435,10 @@
2763
3435
  "summary": "List the members of a workspace, and its pending invitations unless excluded.",
2764
3436
  "tags": ["workspaces"],
2765
3437
  "x-kosuke-command": ["workspaces", "members"],
3438
+ "x-kosuke-sandbox-token": true,
3439
+ "x-kosuke-orchestrator-token": true,
3440
+ "x-kosuke-cron-token": true,
3441
+ "x-kosuke-lead-token": true,
2766
3442
  "parameters": [
2767
3443
  {
2768
3444
  "name": "workspaceId",
@@ -2825,7 +3501,9 @@
2825
3501
  "tags": ["workspaces"],
2826
3502
  "x-kosuke-command": ["workspaces", "plugins", "list"],
2827
3503
  "x-kosuke-sandbox-token": true,
3504
+ "x-kosuke-orchestrator-token": true,
2828
3505
  "x-kosuke-cron-token": true,
3506
+ "x-kosuke-lead-token": true,
2829
3507
  "parameters": [
2830
3508
  {
2831
3509
  "name": "workspaceId",
@@ -2886,6 +3564,10 @@
2886
3564
  "summary": "Turn a workspace plugin on or off by its plugin@marketplace id, as the list returns it. Running chat sessions install or remove it at their next turn. Admins only. Answers 204.",
2887
3565
  "tags": ["workspaces"],
2888
3566
  "x-kosuke-command": ["workspaces", "plugins", "update"],
3567
+ "x-kosuke-sandbox-token": true,
3568
+ "x-kosuke-orchestrator-token": true,
3569
+ "x-kosuke-cron-token": true,
3570
+ "x-kosuke-lead-token": true,
2889
3571
  "parameters": [
2890
3572
  {
2891
3573
  "name": "workspaceId",
@@ -3205,6 +3887,9 @@
3205
3887
  "summary": "Read how many sandboxes may run at once and which sessions are running now.",
3206
3888
  "tags": ["workspaces"],
3207
3889
  "x-kosuke-command": ["workspaces", "sandbox-limit"],
3890
+ "x-kosuke-sandbox-token": true,
3891
+ "x-kosuke-orchestrator-token": true,
3892
+ "x-kosuke-cron-token": true,
3208
3893
  "x-kosuke-lead-token": true,
3209
3894
  "parameters": [
3210
3895
  {
@@ -3258,7 +3943,9 @@
3258
3943
  "tags": ["workspaces"],
3259
3944
  "x-kosuke-command": ["workspaces", "skills", "list"],
3260
3945
  "x-kosuke-sandbox-token": true,
3946
+ "x-kosuke-orchestrator-token": true,
3261
3947
  "x-kosuke-cron-token": true,
3948
+ "x-kosuke-lead-token": true,
3262
3949
  "parameters": [
3263
3950
  {
3264
3951
  "name": "workspaceId",
@@ -3308,6 +3995,10 @@
3308
3995
  "summary": "Add a custom skill from its files. A SKILL.md is required; its frontmatter carries the kebab-case name, the description and an optional argument-hint. Text files only, 100 KiB each, 50 files and 1 MiB in all. Pass factoryId to save these files as the workspace version of that factory skill, which keeps its name and hides the catalog entry until a delete resets it. Admins only. Answers 201 with the id of the new skill.",
3309
3996
  "tags": ["workspaces"],
3310
3997
  "x-kosuke-command": ["workspaces", "skills", "create"],
3998
+ "x-kosuke-sandbox-token": true,
3999
+ "x-kosuke-orchestrator-token": true,
4000
+ "x-kosuke-cron-token": true,
4001
+ "x-kosuke-lead-token": true,
3311
4002
  "parameters": [
3312
4003
  {
3313
4004
  "name": "workspaceId",
@@ -3398,7 +4089,9 @@
3398
4089
  "tags": ["workspaces"],
3399
4090
  "x-kosuke-command": ["workspaces", "skills", "get"],
3400
4091
  "x-kosuke-sandbox-token": true,
4092
+ "x-kosuke-orchestrator-token": true,
3401
4093
  "x-kosuke-cron-token": true,
4094
+ "x-kosuke-lead-token": true,
3402
4095
  "parameters": [
3403
4096
  {
3404
4097
  "name": "workspaceId",
@@ -3457,6 +4150,10 @@
3457
4150
  "summary": "Enable or disable a skill, or replace every file of a custom one; at least one of enabled and files. A factory skill takes files here only when every file Kosuke ships comes back unchanged: the other paths become its added files, replacing the previous set, and it stays a factory skill. To change a shipped file, POST the files with factoryId to save the workspace version instead. A custom skill edited from a factory skill keeps its name. Admins only. Answers 204.",
3458
4151
  "tags": ["workspaces"],
3459
4152
  "x-kosuke-command": ["workspaces", "skills", "update"],
4153
+ "x-kosuke-sandbox-token": true,
4154
+ "x-kosuke-orchestrator-token": true,
4155
+ "x-kosuke-cron-token": true,
4156
+ "x-kosuke-lead-token": true,
3460
4157
  "parameters": [
3461
4158
  {
3462
4159
  "name": "workspaceId",
@@ -3607,6 +4304,10 @@
3607
4304
  "summary": "Pause the sandboxes of the given chat sessions.",
3608
4305
  "tags": ["workspaces"],
3609
4306
  "x-kosuke-command": ["workspaces", "stop-sandboxes"],
4307
+ "x-kosuke-sandbox-token": true,
4308
+ "x-kosuke-orchestrator-token": true,
4309
+ "x-kosuke-cron-token": true,
4310
+ "x-kosuke-lead-token": true,
3610
4311
  "parameters": [
3611
4312
  {
3612
4313
  "name": "workspaceId",
@@ -3681,6 +4382,9 @@
3681
4382
  "summary": "Read sandbox usage by day and by project. start must precede end and the range is capped at 366 days.",
3682
4383
  "tags": ["workspaces"],
3683
4384
  "x-kosuke-command": ["workspaces", "usage"],
4385
+ "x-kosuke-sandbox-token": true,
4386
+ "x-kosuke-orchestrator-token": true,
4387
+ "x-kosuke-cron-token": true,
3684
4388
  "x-kosuke-lead-token": true,
3685
4389
  "parameters": [
3686
4390
  {
@@ -3753,7 +4457,9 @@
3753
4457
  "summary": "List the projects you can reach. With an API key this spans every workspace you belong to; a browser session sees only its active workspace.",
3754
4458
  "tags": ["projects"],
3755
4459
  "x-kosuke-command": ["projects", "list"],
4460
+ "x-kosuke-sandbox-token": true,
3756
4461
  "x-kosuke-orchestrator-token": true,
4462
+ "x-kosuke-cron-token": true,
3757
4463
  "x-kosuke-lead-token": true,
3758
4464
  "responses": {
3759
4465
  "2XX": {
@@ -3793,6 +4499,10 @@
3793
4499
  "summary": "Connect a GitHub repository as a project in a workspace.",
3794
4500
  "tags": ["projects"],
3795
4501
  "x-kosuke-command": ["projects", "create"],
4502
+ "x-kosuke-sandbox-token": true,
4503
+ "x-kosuke-orchestrator-token": true,
4504
+ "x-kosuke-cron-token": true,
4505
+ "x-kosuke-lead-token": true,
3796
4506
  "requestBody": {
3797
4507
  "required": true,
3798
4508
  "content": {
@@ -3859,7 +4569,9 @@
3859
4569
  "summary": "Read one project.",
3860
4570
  "tags": ["projects"],
3861
4571
  "x-kosuke-command": ["projects", "get"],
4572
+ "x-kosuke-sandbox-token": true,
3862
4573
  "x-kosuke-orchestrator-token": true,
4574
+ "x-kosuke-cron-token": true,
3863
4575
  "x-kosuke-lead-token": true,
3864
4576
  "parameters": [
3865
4577
  {
@@ -3911,6 +4623,10 @@
3911
4623
  "summary": "Rename a project.",
3912
4624
  "tags": ["projects"],
3913
4625
  "x-kosuke-command": ["projects", "update"],
4626
+ "x-kosuke-sandbox-token": true,
4627
+ "x-kosuke-orchestrator-token": true,
4628
+ "x-kosuke-cron-token": true,
4629
+ "x-kosuke-lead-token": true,
3914
4630
  "parameters": [
3915
4631
  {
3916
4632
  "name": "projectId",
@@ -4031,6 +4747,10 @@
4031
4747
  "summary": "List the repository's branches, 30 per page in alphabetical order; pass nextCursor back as cursor for the next page, and search to filter by name.",
4032
4748
  "tags": ["projects"],
4033
4749
  "x-kosuke-command": ["projects", "branches"],
4750
+ "x-kosuke-sandbox-token": true,
4751
+ "x-kosuke-orchestrator-token": true,
4752
+ "x-kosuke-cron-token": true,
4753
+ "x-kosuke-lead-token": true,
4034
4754
  "parameters": [
4035
4755
  {
4036
4756
  "name": "projectId",
@@ -4401,10 +5121,11 @@
4401
5121
  "/api/projects/{projectId}/chat-sessions/{sessionId}": {
4402
5122
  "get": {
4403
5123
  "operationId": "sessionsGet",
4404
- "summary": "Read one chat session with its latest job and pull request.",
5124
+ "summary": "Read one chat session with its latest job and pull request. A Backlog session also carries its promptRevision, which a merge proposal names for each ticket it was written from.",
4405
5125
  "tags": ["sessions"],
4406
5126
  "x-kosuke-command": ["sessions", "get"],
4407
5127
  "x-kosuke-sandbox-token": true,
5128
+ "x-kosuke-orchestrator-token": true,
4408
5129
  "x-kosuke-cron-token": true,
4409
5130
  "x-kosuke-lead-token": true,
4410
5131
  "parameters": [
@@ -4468,6 +5189,7 @@
4468
5189
  "tags": ["sessions"],
4469
5190
  "x-kosuke-command": ["sessions", "update"],
4470
5191
  "x-kosuke-sandbox-token": true,
5192
+ "x-kosuke-orchestrator-token": true,
4471
5193
  "x-kosuke-cron-token": true,
4472
5194
  "x-kosuke-lead-token": true,
4473
5195
  "parameters": [
@@ -4641,9 +5363,12 @@
4641
5363
  "/api/projects/{projectId}/chat-sessions/{sessionId}/activate": {
4642
5364
  "post": {
4643
5365
  "operationId": "sessionsActivate",
4644
- "summary": "Start a backlog session: claim a sandbox and run its saved prompt as the first turn.",
5366
+ "summary": "Start a backlog session: claim a sandbox and run its saved prompt as the first turn. With --skill ship the first turn is /ship on that prompt.",
4645
5367
  "tags": ["sessions"],
4646
5368
  "x-kosuke-command": ["sessions", "activate"],
5369
+ "x-kosuke-sandbox-token": true,
5370
+ "x-kosuke-orchestrator-token": true,
5371
+ "x-kosuke-cron-token": true,
4647
5372
  "x-kosuke-lead-token": true,
4648
5373
  "parameters": [
4649
5374
  {
@@ -4667,6 +5392,23 @@
4667
5392
  }
4668
5393
  }
4669
5394
  ],
5395
+ "requestBody": {
5396
+ "required": false,
5397
+ "content": {
5398
+ "application/json": {
5399
+ "schema": {
5400
+ "type": "object",
5401
+ "properties": {
5402
+ "skill": {
5403
+ "description": "Run the saved prompt through this skill: `ship` starts `/ship` on the ticket.",
5404
+ "type": "string",
5405
+ "enum": ["ship"]
5406
+ }
5407
+ }
5408
+ }
5409
+ }
5410
+ }
5411
+ },
4670
5412
  "responses": {
4671
5413
  "2XX": {
4672
5414
  "description": "Success envelope",
@@ -4707,6 +5449,9 @@
4707
5449
  "summary": "List the session's artifacts, most recently changed first. Rows only: a body or a file url comes from reading one.",
4708
5450
  "tags": ["sessions"],
4709
5451
  "x-kosuke-command": ["sessions", "artifacts", "list"],
5452
+ "x-kosuke-sandbox-token": true,
5453
+ "x-kosuke-orchestrator-token": true,
5454
+ "x-kosuke-cron-token": true,
4710
5455
  "x-kosuke-lead-token": true,
4711
5456
  "parameters": [
4712
5457
  {
@@ -4768,6 +5513,9 @@
4768
5513
  "summary": "Copy one of your Lead's Prototypes onto a Backlog session as its own artifacts: the variant named, or every variant.",
4769
5514
  "tags": ["sessions"],
4770
5515
  "x-kosuke-command": ["sessions", "artifacts", "attach"],
5516
+ "x-kosuke-sandbox-token": true,
5517
+ "x-kosuke-orchestrator-token": true,
5518
+ "x-kosuke-cron-token": true,
4771
5519
  "x-kosuke-lead-token": true,
4772
5520
  "parameters": [
4773
5521
  {
@@ -4860,6 +5608,9 @@
4860
5608
  "summary": "Read one artifact of the session: a markdown or html one carries its body, an image or a video a presigned url, its media type and its size.",
4861
5609
  "tags": ["sessions"],
4862
5610
  "x-kosuke-command": ["sessions", "artifacts", "get"],
5611
+ "x-kosuke-sandbox-token": true,
5612
+ "x-kosuke-orchestrator-token": true,
5613
+ "x-kosuke-cron-token": true,
4863
5614
  "x-kosuke-lead-token": true,
4864
5615
  "parameters": [
4865
5616
  {
@@ -4933,6 +5684,10 @@
4933
5684
  "summary": "List the session's own comments, oldest first. Review comments on the diff are under sessions diff comments.",
4934
5685
  "tags": ["sessions"],
4935
5686
  "x-kosuke-command": ["sessions", "comments", "list"],
5687
+ "x-kosuke-sandbox-token": true,
5688
+ "x-kosuke-orchestrator-token": true,
5689
+ "x-kosuke-cron-token": true,
5690
+ "x-kosuke-lead-token": true,
4936
5691
  "parameters": [
4937
5692
  {
4938
5693
  "name": "projectId",
@@ -4993,6 +5748,10 @@
4993
5748
  "summary": "Comment on the session, or reply to one of its comments with replyToId.",
4994
5749
  "tags": ["sessions"],
4995
5750
  "x-kosuke-command": ["sessions", "comments", "add"],
5751
+ "x-kosuke-sandbox-token": true,
5752
+ "x-kosuke-orchestrator-token": true,
5753
+ "x-kosuke-cron-token": true,
5754
+ "x-kosuke-lead-token": true,
4996
5755
  "parameters": [
4997
5756
  {
4998
5757
  "name": "projectId",
@@ -5078,6 +5837,10 @@
5078
5837
  "summary": "Edit the text of your own session comment.",
5079
5838
  "tags": ["sessions"],
5080
5839
  "x-kosuke-command": ["sessions", "comments", "update"],
5840
+ "x-kosuke-sandbox-token": true,
5841
+ "x-kosuke-orchestrator-token": true,
5842
+ "x-kosuke-cron-token": true,
5843
+ "x-kosuke-lead-token": true,
5081
5844
  "parameters": [
5082
5845
  {
5083
5846
  "name": "projectId",
@@ -5239,7 +6002,9 @@
5239
6002
  "tags": ["sessions"],
5240
6003
  "x-kosuke-command": ["sessions", "jobs", "list"],
5241
6004
  "x-kosuke-sandbox-token": true,
6005
+ "x-kosuke-orchestrator-token": true,
5242
6006
  "x-kosuke-cron-token": true,
6007
+ "x-kosuke-lead-token": true,
5243
6008
  "parameters": [
5244
6009
  {
5245
6010
  "name": "projectId",
@@ -5325,7 +6090,9 @@
5325
6090
  "tags": ["sessions"],
5326
6091
  "x-kosuke-command": ["sessions", "send"],
5327
6092
  "x-kosuke-attachments": true,
6093
+ "x-kosuke-sandbox-token": true,
5328
6094
  "x-kosuke-orchestrator-token": true,
6095
+ "x-kosuke-cron-token": true,
5329
6096
  "x-kosuke-lead-token": true,
5330
6097
  "parameters": [
5331
6098
  {
@@ -5529,6 +6296,7 @@
5529
6296
  "tags": ["sessions"],
5530
6297
  "x-kosuke-command": ["sessions", "jobs", "get"],
5531
6298
  "x-kosuke-sandbox-token": true,
6299
+ "x-kosuke-orchestrator-token": true,
5532
6300
  "x-kosuke-cron-token": true,
5533
6301
  "x-kosuke-lead-token": true,
5534
6302
  "parameters": [
@@ -5603,6 +6371,10 @@
5603
6371
  "summary": "Stop a running turn. Steers it had not taken go back to the top of Up next, which pauses.",
5604
6372
  "tags": ["sessions"],
5605
6373
  "x-kosuke-command": ["sessions", "jobs", "cancel"],
6374
+ "x-kosuke-sandbox-token": true,
6375
+ "x-kosuke-orchestrator-token": true,
6376
+ "x-kosuke-cron-token": true,
6377
+ "x-kosuke-lead-token": true,
5606
6378
  "parameters": [
5607
6379
  {
5608
6380
  "name": "projectId",
@@ -5675,6 +6447,9 @@
5675
6447
  "summary": "Replace the session's Session Labels. New names join the project's labels; a session with a pull request syncs them to it in the background while labelsSyncPending is true.",
5676
6448
  "tags": ["sessions"],
5677
6449
  "x-kosuke-command": ["sessions", "labels", "set"],
6450
+ "x-kosuke-sandbox-token": true,
6451
+ "x-kosuke-orchestrator-token": true,
6452
+ "x-kosuke-cron-token": true,
5678
6453
  "x-kosuke-lead-token": true,
5679
6454
  "parameters": [
5680
6455
  {
@@ -5757,10 +6532,12 @@
5757
6532
  },
5758
6533
  "patch": {
5759
6534
  "operationId": "sessionsLabelsEdit",
5760
- "summary": "Add and remove Session Labels, leaving the session's other labels as they are. color sets the initial project color only for newly created labels in add; existing label colors stay unchanged. A sandbox may edit only its own session. A session with a pull request syncs them to it in the background while labelsSyncPending is true; one without gets them when its pull request opens.",
6535
+ "summary": "Add and remove Session Labels, leaving the session's other labels as they are. color sets the initial project color only for newly created labels in add; existing label colors stay unchanged. A session token nobody stands behind may edit only its own session. A session with a pull request syncs them to it in the background while labelsSyncPending is true; one without gets them when its pull request opens.",
5761
6536
  "tags": ["sessions"],
5762
6537
  "x-kosuke-command": ["sessions", "labels", "edit"],
5763
6538
  "x-kosuke-sandbox-token": true,
6539
+ "x-kosuke-orchestrator-token": true,
6540
+ "x-kosuke-cron-token": true,
5764
6541
  "x-kosuke-lead-token": true,
5765
6542
  "parameters": [
5766
6543
  {
@@ -5863,6 +6640,7 @@
5863
6640
  "tags": ["sessions"],
5864
6641
  "x-kosuke-command": ["sessions", "messages"],
5865
6642
  "x-kosuke-sandbox-token": true,
6643
+ "x-kosuke-orchestrator-token": true,
5866
6644
  "x-kosuke-cron-token": true,
5867
6645
  "x-kosuke-lead-token": true,
5868
6646
  "parameters": [
@@ -5950,6 +6728,10 @@
5950
6728
  "summary": "List the review comments left on the diff.",
5951
6729
  "tags": ["sessions"],
5952
6730
  "x-kosuke-command": ["sessions", "diff", "comments", "list"],
6731
+ "x-kosuke-sandbox-token": true,
6732
+ "x-kosuke-orchestrator-token": true,
6733
+ "x-kosuke-cron-token": true,
6734
+ "x-kosuke-lead-token": true,
5953
6735
  "parameters": [
5954
6736
  {
5955
6737
  "name": "projectId",
@@ -6010,6 +6792,10 @@
6010
6792
  "summary": "Leave a review comment on a range of lines in the diff.",
6011
6793
  "tags": ["sessions"],
6012
6794
  "x-kosuke-command": ["sessions", "diff", "comments", "add"],
6795
+ "x-kosuke-sandbox-token": true,
6796
+ "x-kosuke-orchestrator-token": true,
6797
+ "x-kosuke-cron-token": true,
6798
+ "x-kosuke-lead-token": true,
6013
6799
  "parameters": [
6014
6800
  {
6015
6801
  "name": "projectId",
@@ -6120,6 +6906,10 @@
6120
6906
  "summary": "Edit the body of your own comment, or resolve or reopen any comment. One of the two per call.",
6121
6907
  "tags": ["sessions"],
6122
6908
  "x-kosuke-command": ["sessions", "diff", "comments", "update"],
6909
+ "x-kosuke-sandbox-token": true,
6910
+ "x-kosuke-orchestrator-token": true,
6911
+ "x-kosuke-cron-token": true,
6912
+ "x-kosuke-lead-token": true,
6123
6913
  "parameters": [
6124
6914
  {
6125
6915
  "name": "projectId",
@@ -6295,6 +7085,10 @@
6295
7085
  "summary": "List the commits the session's branch adds over its pull request's base branch, or over the target branch before a pull request is open. Needs a running sandbox; otherwise commits is empty and unavailable says why.",
6296
7086
  "tags": ["sessions"],
6297
7087
  "x-kosuke-command": ["sessions", "diff", "commits"],
7088
+ "x-kosuke-sandbox-token": true,
7089
+ "x-kosuke-orchestrator-token": true,
7090
+ "x-kosuke-cron-token": true,
7091
+ "x-kosuke-lead-token": true,
6298
7092
  "parameters": [
6299
7093
  {
6300
7094
  "name": "projectId",
@@ -6357,6 +7151,9 @@
6357
7151
  "summary": "List the files the session's branch changes against its base, with totals.",
6358
7152
  "tags": ["sessions"],
6359
7153
  "x-kosuke-command": ["sessions", "diff", "files"],
7154
+ "x-kosuke-sandbox-token": true,
7155
+ "x-kosuke-orchestrator-token": true,
7156
+ "x-kosuke-cron-token": true,
6360
7157
  "x-kosuke-lead-token": true,
6361
7158
  "parameters": [
6362
7159
  {
@@ -6420,6 +7217,9 @@
6420
7217
  "summary": "Read patches: a page (cursor), one file (path, with hunkOffset/hunkEnd), or one file with both sides (path and contents=1). path and cursor are mutually exclusive.",
6421
7218
  "tags": ["sessions"],
6422
7219
  "x-kosuke-command": ["sessions", "diff", "patch"],
7220
+ "x-kosuke-sandbox-token": true,
7221
+ "x-kosuke-orchestrator-token": true,
7222
+ "x-kosuke-cron-token": true,
6423
7223
  "x-kosuke-lead-token": true,
6424
7224
  "parameters": [
6425
7225
  {
@@ -6580,6 +7380,10 @@
6580
7380
  "summary": "List the files in the session's sandbox. Empty when the sandbox is not running.",
6581
7381
  "tags": ["sessions"],
6582
7382
  "x-kosuke-command": ["sessions", "files", "list"],
7383
+ "x-kosuke-sandbox-token": true,
7384
+ "x-kosuke-orchestrator-token": true,
7385
+ "x-kosuke-cron-token": true,
7386
+ "x-kosuke-lead-token": true,
6583
7387
  "parameters": [
6584
7388
  {
6585
7389
  "name": "projectId",
@@ -6642,6 +7446,10 @@
6642
7446
  "summary": "Read one file from the session's sandbox.",
6643
7447
  "tags": ["sessions"],
6644
7448
  "x-kosuke-command": ["sessions", "files", "get"],
7449
+ "x-kosuke-sandbox-token": true,
7450
+ "x-kosuke-orchestrator-token": true,
7451
+ "x-kosuke-cron-token": true,
7452
+ "x-kosuke-lead-token": true,
6645
7453
  "parameters": [
6646
7454
  {
6647
7455
  "name": "projectId",
@@ -6713,6 +7521,10 @@
6713
7521
  "summary": "Write one file in the session's sandbox. Refused while a turn is running, and for binary content.",
6714
7522
  "tags": ["sessions"],
6715
7523
  "x-kosuke-command": ["sessions", "files", "write"],
7524
+ "x-kosuke-sandbox-token": true,
7525
+ "x-kosuke-orchestrator-token": true,
7526
+ "x-kosuke-cron-token": true,
7527
+ "x-kosuke-lead-token": true,
6716
7528
  "parameters": [
6717
7529
  {
6718
7530
  "name": "projectId",
@@ -6802,6 +7614,10 @@
6802
7614
  "summary": "Read whether the session's sandbox has uncommitted changes, unpushed commits, or commits ahead of its base branch.",
6803
7615
  "tags": ["sessions"],
6804
7616
  "x-kosuke-command": ["sessions", "git", "state"],
7617
+ "x-kosuke-sandbox-token": true,
7618
+ "x-kosuke-orchestrator-token": true,
7619
+ "x-kosuke-cron-token": true,
7620
+ "x-kosuke-lead-token": true,
6805
7621
  "parameters": [
6806
7622
  {
6807
7623
  "name": "projectId",
@@ -6864,6 +7680,10 @@
6864
7680
  "summary": "Commit the uncommitted changes in the sandbox. Refused while a turn is running.",
6865
7681
  "tags": ["sessions"],
6866
7682
  "x-kosuke-command": ["sessions", "git", "commit"],
7683
+ "x-kosuke-sandbox-token": true,
7684
+ "x-kosuke-orchestrator-token": true,
7685
+ "x-kosuke-cron-token": true,
7686
+ "x-kosuke-lead-token": true,
6867
7687
  "parameters": [
6868
7688
  {
6869
7689
  "name": "projectId",
@@ -6944,6 +7764,10 @@
6944
7764
  "summary": "Draft a commit message for the uncommitted changes. Needs a running sandbox.",
6945
7765
  "tags": ["sessions"],
6946
7766
  "x-kosuke-command": ["sessions", "git", "commit-message"],
7767
+ "x-kosuke-sandbox-token": true,
7768
+ "x-kosuke-orchestrator-token": true,
7769
+ "x-kosuke-cron-token": true,
7770
+ "x-kosuke-lead-token": true,
6947
7771
  "parameters": [
6948
7772
  {
6949
7773
  "name": "projectId",
@@ -7006,6 +7830,10 @@
7006
7830
  "summary": "Push the session's branch to GitHub. Refused while a turn is running.",
7007
7831
  "tags": ["sessions"],
7008
7832
  "x-kosuke-command": ["sessions", "git", "push"],
7833
+ "x-kosuke-sandbox-token": true,
7834
+ "x-kosuke-orchestrator-token": true,
7835
+ "x-kosuke-cron-token": true,
7836
+ "x-kosuke-lead-token": true,
7009
7837
  "parameters": [
7010
7838
  {
7011
7839
  "name": "projectId",
@@ -7070,6 +7898,7 @@
7070
7898
  "x-kosuke-command": ["sessions", "edit-prompt"],
7071
7899
  "x-kosuke-attachments": true,
7072
7900
  "x-kosuke-sandbox-token": true,
7901
+ "x-kosuke-orchestrator-token": true,
7073
7902
  "x-kosuke-cron-token": true,
7074
7903
  "x-kosuke-lead-token": true,
7075
7904
  "parameters": [
@@ -7162,12 +7991,81 @@
7162
7991
  }
7163
7992
  }
7164
7993
  },
7994
+ "/api/projects/{projectId}/chat-sessions/{sessionId}/qa-slot": {
7995
+ "post": {
7996
+ "operationId": "sessionsQaSlot",
7997
+ "summary": "Ask for the project's QA slot before a QA run: one session runs QA at a time per project. Answers granted, or the session's 1-based position among those waiting. Safe to repeat; a waiting session is resumed by the platform when its turn comes.",
7998
+ "tags": ["sessions"],
7999
+ "x-kosuke-command": ["sessions", "qa-slot"],
8000
+ "x-kosuke-sandbox-token": true,
8001
+ "x-kosuke-orchestrator-token": true,
8002
+ "x-kosuke-cron-token": true,
8003
+ "x-kosuke-lead-token": true,
8004
+ "parameters": [
8005
+ {
8006
+ "name": "projectId",
8007
+ "in": "path",
8008
+ "required": true,
8009
+ "schema": {
8010
+ "type": "string",
8011
+ "format": "uuid",
8012
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
8013
+ }
8014
+ },
8015
+ {
8016
+ "name": "sessionId",
8017
+ "in": "path",
8018
+ "required": true,
8019
+ "schema": {
8020
+ "type": "string",
8021
+ "format": "uuid",
8022
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
8023
+ }
8024
+ }
8025
+ ],
8026
+ "responses": {
8027
+ "2XX": {
8028
+ "description": "Success envelope",
8029
+ "content": {
8030
+ "application/json": {
8031
+ "schema": {
8032
+ "$ref": "#/components/schemas/ApiSuccess"
8033
+ }
8034
+ }
8035
+ }
8036
+ },
8037
+ "4XX": {
8038
+ "description": "Error envelope",
8039
+ "content": {
8040
+ "application/json": {
8041
+ "schema": {
8042
+ "$ref": "#/components/schemas/ApiError"
8043
+ }
8044
+ }
8045
+ }
8046
+ },
8047
+ "5XX": {
8048
+ "description": "Error envelope",
8049
+ "content": {
8050
+ "application/json": {
8051
+ "schema": {
8052
+ "$ref": "#/components/schemas/ApiError"
8053
+ }
8054
+ }
8055
+ }
8056
+ }
8057
+ }
8058
+ }
8059
+ },
7165
8060
  "/api/projects/{projectId}/chat-sessions/{sessionId}/queue": {
7166
8061
  "get": {
7167
8062
  "operationId": "sessionsQueueList",
7168
8063
  "summary": "List the messages waiting Up next in the session, in the order they will be sent, and whether Up next is paused.",
7169
8064
  "tags": ["sessions"],
7170
8065
  "x-kosuke-command": ["sessions", "queue", "list"],
8066
+ "x-kosuke-sandbox-token": true,
8067
+ "x-kosuke-orchestrator-token": true,
8068
+ "x-kosuke-cron-token": true,
7171
8069
  "x-kosuke-lead-token": true,
7172
8070
  "parameters": [
7173
8071
  {
@@ -7232,6 +8130,10 @@
7232
8130
  "tags": ["sessions"],
7233
8131
  "x-kosuke-command": ["sessions", "queue", "update"],
7234
8132
  "x-kosuke-attachments": true,
8133
+ "x-kosuke-sandbox-token": true,
8134
+ "x-kosuke-orchestrator-token": true,
8135
+ "x-kosuke-cron-token": true,
8136
+ "x-kosuke-lead-token": true,
7235
8137
  "parameters": [
7236
8138
  {
7237
8139
  "name": "projectId",
@@ -7415,6 +8317,10 @@
7415
8317
  "summary": "Move your own queued message to another place in Up next.",
7416
8318
  "tags": ["sessions"],
7417
8319
  "x-kosuke-command": ["sessions", "queue", "move"],
8320
+ "x-kosuke-sandbox-token": true,
8321
+ "x-kosuke-orchestrator-token": true,
8322
+ "x-kosuke-cron-token": true,
8323
+ "x-kosuke-lead-token": true,
7418
8324
  "parameters": [
7419
8325
  {
7420
8326
  "name": "projectId",
@@ -7506,6 +8412,10 @@
7506
8412
  "summary": "Send your own queued message now as a turn of its own, ahead of the rest of Up next. Only while no turn is running; it resumes a paused Up next.",
7507
8413
  "tags": ["sessions"],
7508
8414
  "x-kosuke-command": ["sessions", "queue", "send"],
8415
+ "x-kosuke-sandbox-token": true,
8416
+ "x-kosuke-orchestrator-token": true,
8417
+ "x-kosuke-cron-token": true,
8418
+ "x-kosuke-lead-token": true,
7509
8419
  "parameters": [
7510
8420
  {
7511
8421
  "name": "projectId",
@@ -7578,6 +8488,10 @@
7578
8488
  "summary": "Send your own queued message into your running turn as a steer. Claude and GLM sessions only; the message stays queued when nothing can take it.",
7579
8489
  "tags": ["sessions"],
7580
8490
  "x-kosuke-command": ["sessions", "queue", "steer"],
8491
+ "x-kosuke-sandbox-token": true,
8492
+ "x-kosuke-orchestrator-token": true,
8493
+ "x-kosuke-cron-token": true,
8494
+ "x-kosuke-lead-token": true,
7581
8495
  "parameters": [
7582
8496
  {
7583
8497
  "name": "projectId",
@@ -7650,6 +8564,10 @@
7650
8564
  "summary": "Resume a session's paused Up next. Its top message is sent as soon as nothing is running.",
7651
8565
  "tags": ["sessions"],
7652
8566
  "x-kosuke-command": ["sessions", "queue", "resume"],
8567
+ "x-kosuke-sandbox-token": true,
8568
+ "x-kosuke-orchestrator-token": true,
8569
+ "x-kosuke-cron-token": true,
8570
+ "x-kosuke-lead-token": true,
7653
8571
  "parameters": [
7654
8572
  {
7655
8573
  "name": "projectId",
@@ -7712,6 +8630,10 @@
7712
8630
  "summary": "Mark a chat session read, clearing its unread marker, as opening it in the app does. The assignee clears their marker; any member clears the shared marker of a session booked to Kosuke.",
7713
8631
  "tags": ["sessions"],
7714
8632
  "x-kosuke-command": ["sessions", "mark-read"],
8633
+ "x-kosuke-sandbox-token": true,
8634
+ "x-kosuke-orchestrator-token": true,
8635
+ "x-kosuke-cron-token": true,
8636
+ "x-kosuke-lead-token": true,
7715
8637
  "parameters": [
7716
8638
  {
7717
8639
  "name": "projectId",
@@ -7774,6 +8696,10 @@
7774
8696
  "summary": "Run a runtime command on the agent session: clear starts a fresh conversation, compact summarizes it (Claude and GLM only), with optional focus instructions. Queued Up next while a turn or another command is running. Compact waits for the sandbox and can take a minute.",
7775
8697
  "tags": ["sessions"],
7776
8698
  "x-kosuke-command": ["sessions", "runtime-command"],
8699
+ "x-kosuke-sandbox-token": true,
8700
+ "x-kosuke-orchestrator-token": true,
8701
+ "x-kosuke-cron-token": true,
8702
+ "x-kosuke-lead-token": true,
7777
8703
  "parameters": [
7778
8704
  {
7779
8705
  "name": "projectId",
@@ -7856,6 +8782,10 @@
7856
8782
  "summary": "Send a message and steer it into your running turn. Answers delivery steer, queued (the turn could not take it), job (no turn was running) or refused (the turn was stopped).",
7857
8783
  "tags": ["sessions"],
7858
8784
  "x-kosuke-command": ["sessions", "steer"],
8785
+ "x-kosuke-sandbox-token": true,
8786
+ "x-kosuke-orchestrator-token": true,
8787
+ "x-kosuke-cron-token": true,
8788
+ "x-kosuke-lead-token": true,
7859
8789
  "parameters": [
7860
8790
  {
7861
8791
  "name": "projectId",
@@ -7942,6 +8872,10 @@
7942
8872
  "summary": "Generate a title for a backlog session from the prompt text given as content. The title is returned, not saved.",
7943
8873
  "tags": ["sessions"],
7944
8874
  "x-kosuke-command": ["sessions", "title-generate"],
8875
+ "x-kosuke-sandbox-token": true,
8876
+ "x-kosuke-orchestrator-token": true,
8877
+ "x-kosuke-cron-token": true,
8878
+ "x-kosuke-lead-token": true,
7945
8879
  "parameters": [
7946
8880
  {
7947
8881
  "name": "projectId",
@@ -8023,7 +8957,9 @@
8023
8957
  "tags": ["deploy"],
8024
8958
  "x-kosuke-command": ["deploy", "messages"],
8025
8959
  "x-kosuke-sandbox-token": true,
8960
+ "x-kosuke-orchestrator-token": true,
8026
8961
  "x-kosuke-cron-token": true,
8962
+ "x-kosuke-lead-token": true,
8027
8963
  "parameters": [
8028
8964
  {
8029
8965
  "name": "projectId",
@@ -8077,7 +9013,9 @@
8077
9013
  "tags": ["deploy"],
8078
9014
  "x-kosuke-command": ["deploy", "list"],
8079
9015
  "x-kosuke-sandbox-token": true,
9016
+ "x-kosuke-orchestrator-token": true,
8080
9017
  "x-kosuke-cron-token": true,
9018
+ "x-kosuke-lead-token": true,
8081
9019
  "parameters": [
8082
9020
  {
8083
9021
  "name": "projectId",
@@ -8155,6 +9093,7 @@
8155
9093
  "tags": ["projects"],
8156
9094
  "x-kosuke-command": ["projects", "labels"],
8157
9095
  "x-kosuke-sandbox-token": true,
9096
+ "x-kosuke-orchestrator-token": true,
8158
9097
  "x-kosuke-cron-token": true,
8159
9098
  "x-kosuke-lead-token": true,
8160
9099
  "parameters": [
@@ -8207,6 +9146,10 @@
8207
9146
  "summary": "Recolor a Session Label. Sessions whose pull request carries it resync, which recolors the repository label on GitHub to match.",
8208
9147
  "tags": ["projects"],
8209
9148
  "x-kosuke-command": ["projects", "labels", "color"],
9149
+ "x-kosuke-sandbox-token": true,
9150
+ "x-kosuke-orchestrator-token": true,
9151
+ "x-kosuke-cron-token": true,
9152
+ "x-kosuke-lead-token": true,
8210
9153
  "parameters": [
8211
9154
  {
8212
9155
  "name": "projectId",
@@ -8282,6 +9225,10 @@
8282
9225
  "summary": "Read the preview URLs of the project's main sandbox, or of one chat session's.",
8283
9226
  "tags": ["preview"],
8284
9227
  "x-kosuke-command": ["preview", "get"],
9228
+ "x-kosuke-sandbox-token": true,
9229
+ "x-kosuke-orchestrator-token": true,
9230
+ "x-kosuke-cron-token": true,
9231
+ "x-kosuke-lead-token": true,
8285
9232
  "parameters": [
8286
9233
  {
8287
9234
  "name": "projectId",
@@ -8346,6 +9293,10 @@
8346
9293
  "summary": "Read the health of every service behind a preview.",
8347
9294
  "tags": ["preview"],
8348
9295
  "x-kosuke-command": ["preview", "health"],
9296
+ "x-kosuke-sandbox-token": true,
9297
+ "x-kosuke-orchestrator-token": true,
9298
+ "x-kosuke-cron-token": true,
9299
+ "x-kosuke-lead-token": true,
8349
9300
  "parameters": [
8350
9301
  {
8351
9302
  "name": "projectId",
@@ -8410,6 +9361,10 @@
8410
9361
  "summary": "Restart the services of a preview's running sandbox in place. Fails when the sandbox is paused.",
8411
9362
  "tags": ["preview"],
8412
9363
  "x-kosuke-command": ["preview", "reset"],
9364
+ "x-kosuke-sandbox-token": true,
9365
+ "x-kosuke-orchestrator-token": true,
9366
+ "x-kosuke-cron-token": true,
9367
+ "x-kosuke-lead-token": true,
8413
9368
  "parameters": [
8414
9369
  {
8415
9370
  "name": "projectId",
@@ -8477,6 +9432,10 @@
8477
9432
  "summary": "Read the public share link of a preview, if one exists.",
8478
9433
  "tags": ["preview"],
8479
9434
  "x-kosuke-command": ["preview", "share", "get"],
9435
+ "x-kosuke-sandbox-token": true,
9436
+ "x-kosuke-orchestrator-token": true,
9437
+ "x-kosuke-cron-token": true,
9438
+ "x-kosuke-lead-token": true,
8480
9439
  "parameters": [
8481
9440
  {
8482
9441
  "name": "projectId",
@@ -8539,6 +9498,10 @@
8539
9498
  "summary": "Create the public share link of a preview. The body sessionId wins over the query one.",
8540
9499
  "tags": ["preview"],
8541
9500
  "x-kosuke-command": ["preview", "share", "create"],
9501
+ "x-kosuke-sandbox-token": true,
9502
+ "x-kosuke-orchestrator-token": true,
9503
+ "x-kosuke-cron-token": true,
9504
+ "x-kosuke-lead-token": true,
8542
9505
  "parameters": [
8543
9506
  {
8544
9507
  "name": "projectId",
@@ -8689,6 +9652,10 @@
8689
9652
  "summary": "Read the project settings: setup commands, services, environment and sandbox size.",
8690
9653
  "tags": ["projects"],
8691
9654
  "x-kosuke-command": ["projects", "settings", "get"],
9655
+ "x-kosuke-sandbox-token": true,
9656
+ "x-kosuke-orchestrator-token": true,
9657
+ "x-kosuke-cron-token": true,
9658
+ "x-kosuke-lead-token": true,
8692
9659
  "parameters": [
8693
9660
  {
8694
9661
  "name": "projectId",
@@ -8739,6 +9706,10 @@
8739
9706
  "summary": "Change setup commands, branches, working directory or sandbox tier.",
8740
9707
  "tags": ["projects"],
8741
9708
  "x-kosuke-command": ["projects", "settings", "update"],
9709
+ "x-kosuke-sandbox-token": true,
9710
+ "x-kosuke-orchestrator-token": true,
9711
+ "x-kosuke-cron-token": true,
9712
+ "x-kosuke-lead-token": true,
8742
9713
  "parameters": [
8743
9714
  {
8744
9715
  "name": "projectId",
@@ -8883,6 +9854,10 @@
8883
9854
  "tags": ["deploy"],
8884
9855
  "x-kosuke-command": ["deploy", "run"],
8885
9856
  "x-kosuke-attachments": true,
9857
+ "x-kosuke-sandbox-token": true,
9858
+ "x-kosuke-orchestrator-token": true,
9859
+ "x-kosuke-cron-token": true,
9860
+ "x-kosuke-lead-token": true,
8886
9861
  "parameters": [
8887
9862
  {
8888
9863
  "name": "projectId",
@@ -8982,6 +9957,10 @@
8982
9957
  "summary": "Stop the running deploy. Steers its agent had not taken go back to the top of Up next, which pauses; instructions sent while its sandbox built are discarded and listed.",
8983
9958
  "tags": ["deploy"],
8984
9959
  "x-kosuke-command": ["deploy", "cancel"],
9960
+ "x-kosuke-sandbox-token": true,
9961
+ "x-kosuke-orchestrator-token": true,
9962
+ "x-kosuke-cron-token": true,
9963
+ "x-kosuke-lead-token": true,
8985
9964
  "parameters": [
8986
9965
  {
8987
9966
  "name": "projectId",
@@ -9034,6 +10013,10 @@
9034
10013
  "summary": "Pick the model the deploy agent runs on, as an encoded id such as anthropic:sonnet__medium. Refused while a deploy runs or waits for an answer.",
9035
10014
  "tags": ["deploy"],
9036
10015
  "x-kosuke-command": ["deploy", "set-model"],
10016
+ "x-kosuke-sandbox-token": true,
10017
+ "x-kosuke-orchestrator-token": true,
10018
+ "x-kosuke-cron-token": true,
10019
+ "x-kosuke-lead-token": true,
9037
10020
  "parameters": [
9038
10021
  {
9039
10022
  "name": "projectId",
@@ -9103,6 +10086,10 @@
9103
10086
  "summary": "List the messages waiting Up next in the Deploy Chat, in the order they will be sent, and whether Up next is paused.",
9104
10087
  "tags": ["deploy"],
9105
10088
  "x-kosuke-command": ["deploy", "queue", "list"],
10089
+ "x-kosuke-sandbox-token": true,
10090
+ "x-kosuke-orchestrator-token": true,
10091
+ "x-kosuke-cron-token": true,
10092
+ "x-kosuke-lead-token": true,
9106
10093
  "parameters": [
9107
10094
  {
9108
10095
  "name": "projectId",
@@ -9156,6 +10143,10 @@
9156
10143
  "tags": ["deploy"],
9157
10144
  "x-kosuke-command": ["deploy", "queue", "update"],
9158
10145
  "x-kosuke-attachments": true,
10146
+ "x-kosuke-sandbox-token": true,
10147
+ "x-kosuke-orchestrator-token": true,
10148
+ "x-kosuke-cron-token": true,
10149
+ "x-kosuke-lead-token": true,
9159
10150
  "parameters": [
9160
10151
  {
9161
10152
  "name": "projectId",
@@ -9318,6 +10309,10 @@
9318
10309
  "summary": "Move your own queued Deploy Chat message to another place in Up next.",
9319
10310
  "tags": ["deploy"],
9320
10311
  "x-kosuke-command": ["deploy", "queue", "move"],
10312
+ "x-kosuke-sandbox-token": true,
10313
+ "x-kosuke-orchestrator-token": true,
10314
+ "x-kosuke-cron-token": true,
10315
+ "x-kosuke-lead-token": true,
9321
10316
  "parameters": [
9322
10317
  {
9323
10318
  "name": "projectId",
@@ -9399,6 +10394,10 @@
9399
10394
  "summary": "Send your own queued Deploy Chat message now, ahead of the rest of Up next. Only while the deploy agent is idle; it resumes a paused Up next.",
9400
10395
  "tags": ["deploy"],
9401
10396
  "x-kosuke-command": ["deploy", "queue", "send"],
10397
+ "x-kosuke-sandbox-token": true,
10398
+ "x-kosuke-orchestrator-token": true,
10399
+ "x-kosuke-cron-token": true,
10400
+ "x-kosuke-lead-token": true,
9402
10401
  "parameters": [
9403
10402
  {
9404
10403
  "name": "projectId",
@@ -9461,6 +10460,10 @@
9461
10460
  "summary": "Send your own queued Deploy Chat message into the running deploy agent Turn as a steer. Claude deploys only; the message stays queued when nothing can take it.",
9462
10461
  "tags": ["deploy"],
9463
10462
  "x-kosuke-command": ["deploy", "queue", "steer"],
10463
+ "x-kosuke-sandbox-token": true,
10464
+ "x-kosuke-orchestrator-token": true,
10465
+ "x-kosuke-cron-token": true,
10466
+ "x-kosuke-lead-token": true,
9464
10467
  "parameters": [
9465
10468
  {
9466
10469
  "name": "projectId",
@@ -9523,6 +10526,10 @@
9523
10526
  "summary": "Resume the Deploy Chat's paused Up next. Its top message is sent as soon as the deploy is idle.",
9524
10527
  "tags": ["deploy"],
9525
10528
  "x-kosuke-command": ["deploy", "queue", "resume"],
10529
+ "x-kosuke-sandbox-token": true,
10530
+ "x-kosuke-orchestrator-token": true,
10531
+ "x-kosuke-cron-token": true,
10532
+ "x-kosuke-lead-token": true,
9526
10533
  "parameters": [
9527
10534
  {
9528
10535
  "name": "projectId",
@@ -9575,6 +10582,10 @@
9575
10582
  "summary": "Add environment variables. The body is a JSON array of { key, value, isSecret? }.",
9576
10583
  "tags": ["projects"],
9577
10584
  "x-kosuke-command": ["projects", "env-vars", "add"],
10585
+ "x-kosuke-sandbox-token": true,
10586
+ "x-kosuke-orchestrator-token": true,
10587
+ "x-kosuke-cron-token": true,
10588
+ "x-kosuke-lead-token": true,
9578
10589
  "parameters": [
9579
10590
  {
9580
10591
  "name": "projectId",
@@ -9725,6 +10736,10 @@
9725
10736
  "summary": "Replace the services and environment from a kosuke.config.json document. Cross-service rules (unique ports, after references, one preview endpoint) are checked by the handler, not by the schema.",
9726
10737
  "tags": ["projects"],
9727
10738
  "x-kosuke-command": ["projects", "settings", "import"],
10739
+ "x-kosuke-sandbox-token": true,
10740
+ "x-kosuke-orchestrator-token": true,
10741
+ "x-kosuke-cron-token": true,
10742
+ "x-kosuke-lead-token": true,
9728
10743
  "parameters": [
9729
10744
  {
9730
10745
  "name": "projectId",
@@ -9991,6 +11006,10 @@
9991
11006
  "summary": "List the project services, in the order they start. Carries no environment variables.",
9992
11007
  "tags": ["projects"],
9993
11008
  "x-kosuke-command": ["projects", "services", "list"],
11009
+ "x-kosuke-sandbox-token": true,
11010
+ "x-kosuke-orchestrator-token": true,
11011
+ "x-kosuke-cron-token": true,
11012
+ "x-kosuke-lead-token": true,
9994
11013
  "parameters": [
9995
11014
  {
9996
11015
  "name": "projectId",
@@ -10041,6 +11060,10 @@
10041
11060
  "summary": "Add a service. A port already used by another service is rejected by the handler.",
10042
11061
  "tags": ["projects"],
10043
11062
  "x-kosuke-command": ["projects", "services", "add"],
11063
+ "x-kosuke-sandbox-token": true,
11064
+ "x-kosuke-orchestrator-token": true,
11065
+ "x-kosuke-cron-token": true,
11066
+ "x-kosuke-lead-token": true,
10044
11067
  "parameters": [
10045
11068
  {
10046
11069
  "name": "projectId",
@@ -10198,6 +11221,10 @@
10198
11221
  "summary": "Change one service. Every field is optional; only the ones sent change.",
10199
11222
  "tags": ["projects"],
10200
11223
  "x-kosuke-command": ["projects", "services", "update"],
11224
+ "x-kosuke-sandbox-token": true,
11225
+ "x-kosuke-orchestrator-token": true,
11226
+ "x-kosuke-cron-token": true,
11227
+ "x-kosuke-lead-token": true,
10201
11228
  "parameters": [
10202
11229
  {
10203
11230
  "name": "projectId",
@@ -10412,6 +11439,7 @@
10412
11439
  "tags": ["projects"],
10413
11440
  "x-kosuke-command": ["projects", "skills"],
10414
11441
  "x-kosuke-sandbox-token": true,
11442
+ "x-kosuke-orchestrator-token": true,
10415
11443
  "x-kosuke-cron-token": true,
10416
11444
  "x-kosuke-lead-token": true,
10417
11445
  "parameters": [
@@ -10776,11 +11804,13 @@
10776
11804
  "/api/user/plugins": {
10777
11805
  "get": {
10778
11806
  "operationId": "userPluginsList",
10779
- "summary": "List the plugins the Official Marketplaces offer, or one Provider's with provider=anthropic or provider=openai, with whether you have each on as a personal plugin, the last failed install in the chat sessions you are the assignee of, and the workspaces of yours that already have it on. Plugins that carry MCP servers or ChatGPT apps are not offered. Personal plugins follow you into every workspace you belong to, alongside its workspace plugins. From a sandbox, the chat session assignee's, with only this workspace and this project's sessions. From a Cron Run, none: it acts as Kosuke, which holds no personal plugins.",
11807
+ "summary": "List the plugins the Official Marketplaces offer, or one Provider's with provider=anthropic or provider=openai, with whether you have each on as a personal plugin, the last failed install in the chat sessions you are the assignee of, and the workspaces of yours that already have it on. Plugins that carry MCP servers or ChatGPT apps are not offered. Personal plugins follow you into every workspace you belong to, alongside its workspace plugins. From an agent token, those of the member it acts as, with only this workspace and, for a sandbox or a Cron Run, this project's sessions. From a Cron Run with no member behind it, none.",
10780
11808
  "tags": ["user"],
10781
11809
  "x-kosuke-command": ["user", "plugins", "list"],
10782
11810
  "x-kosuke-sandbox-token": true,
11811
+ "x-kosuke-orchestrator-token": true,
10783
11812
  "x-kosuke-cron-token": true,
11813
+ "x-kosuke-lead-token": true,
10784
11814
  "parameters": [
10785
11815
  {
10786
11816
  "name": "provider",
@@ -10832,6 +11862,10 @@
10832
11862
  "summary": "Turn one of your personal plugins on or off by its plugin@marketplace id, as the list returns it, in every workspace at once. Chat sessions you are the assignee of install or remove it at their next turn. Answers 204.",
10833
11863
  "tags": ["user"],
10834
11864
  "x-kosuke-command": ["user", "plugins", "update"],
11865
+ "x-kosuke-sandbox-token": true,
11866
+ "x-kosuke-orchestrator-token": true,
11867
+ "x-kosuke-cron-token": true,
11868
+ "x-kosuke-lead-token": true,
10835
11869
  "parameters": [
10836
11870
  {
10837
11871
  "name": "pluginId",
@@ -10900,6 +11934,10 @@
10900
11934
  "summary": "Read your account: id, email, name, onboarding state, default model, auto-commit and plain-language settings.",
10901
11935
  "tags": ["user"],
10902
11936
  "x-kosuke-command": ["user", "profile"],
11937
+ "x-kosuke-sandbox-token": true,
11938
+ "x-kosuke-orchestrator-token": true,
11939
+ "x-kosuke-cron-token": true,
11940
+ "x-kosuke-lead-token": true,
10903
11941
  "responses": {
10904
11942
  "2XX": {
10905
11943
  "description": "Success envelope",
@@ -10937,11 +11975,13 @@
10937
11975
  "/api/user/skills": {
10938
11976
  "get": {
10939
11977
  "operationId": "userSkillsList",
10940
- "summary": "List your personal skills: what each SKILL.md declares, how many files the skill holds, whether it is enabled, and the workspaces where it replaces an enabled workspace skill of the same name. Personal skills follow you into every workspace you belong to and reach the chat sessions you are the assignee of. From a sandbox, the chat session assignee's, and only this workspace among the replacements. From a Cron Run, none: it acts as Kosuke, which holds no personal skills.",
11978
+ "summary": "List your personal skills: what each SKILL.md declares, how many files the skill holds, whether it is enabled, and the workspaces where it replaces an enabled workspace skill of the same name. Personal skills follow you into every workspace you belong to and reach the chat sessions you are the assignee of. From an agent token, those of the member it acts as, naming only this workspace. From a Cron Run with no member behind it, none.",
10941
11979
  "tags": ["user"],
10942
11980
  "x-kosuke-command": ["user", "skills", "list"],
10943
11981
  "x-kosuke-sandbox-token": true,
11982
+ "x-kosuke-orchestrator-token": true,
10944
11983
  "x-kosuke-cron-token": true,
11984
+ "x-kosuke-lead-token": true,
10945
11985
  "responses": {
10946
11986
  "2XX": {
10947
11987
  "description": "Success envelope",
@@ -10980,6 +12020,10 @@
10980
12020
  "summary": "Add a personal skill from its files. A SKILL.md is required; its frontmatter carries the kebab-case name, the description and an optional argument-hint. Text files only, 100 KiB each, 50 files and 1 MiB in all. Names are unique among your own personal skills. Answers 201 with the id of the new skill.",
10981
12021
  "tags": ["user"],
10982
12022
  "x-kosuke-command": ["user", "skills", "create"],
12023
+ "x-kosuke-sandbox-token": true,
12024
+ "x-kosuke-orchestrator-token": true,
12025
+ "x-kosuke-cron-token": true,
12026
+ "x-kosuke-lead-token": true,
10983
12027
  "requestBody": {
10984
12028
  "required": true,
10985
12029
  "content": {
@@ -11050,11 +12094,13 @@
11050
12094
  "/api/user/skills/{skillId}": {
11051
12095
  "get": {
11052
12096
  "operationId": "userSkillsGet",
11053
- "summary": "Get one of your personal skills with every file it holds, SKILL.md included. From a sandbox, one of the chat session assignee's. From a Cron Run, never one: it acts as Kosuke, which holds no personal skills.",
12097
+ "summary": "Get one of your personal skills with every file it holds, SKILL.md included. From an agent token, one of the member it acts as. From a Cron Run with no member behind it, never one: it acts as Kosuke, which holds no personal skills.",
11054
12098
  "tags": ["user"],
11055
12099
  "x-kosuke-command": ["user", "skills", "get"],
11056
12100
  "x-kosuke-sandbox-token": true,
12101
+ "x-kosuke-orchestrator-token": true,
11057
12102
  "x-kosuke-cron-token": true,
12103
+ "x-kosuke-lead-token": true,
11058
12104
  "parameters": [
11059
12105
  {
11060
12106
  "name": "skillId",
@@ -11105,6 +12151,10 @@
11105
12151
  "summary": "Enable or disable one of your personal skills, or replace every file it holds; at least one of enabled and files. The switch applies in every workspace at once. Answers 204.",
11106
12152
  "tags": ["user"],
11107
12153
  "x-kosuke-command": ["user", "skills", "update"],
12154
+ "x-kosuke-sandbox-token": true,
12155
+ "x-kosuke-orchestrator-token": true,
12156
+ "x-kosuke-cron-token": true,
12157
+ "x-kosuke-lead-token": true,
11108
12158
  "parameters": [
11109
12159
  {
11110
12160
  "name": "skillId",
@@ -11239,6 +12289,10 @@
11239
12289
  "summary": "Read your Claude, Codex and GLM Coding Plan subscriptions (connected, needsReauth, accountEmail) and your default model.",
11240
12290
  "tags": ["user"],
11241
12291
  "x-kosuke-command": ["user", "subscriptions", "get"],
12292
+ "x-kosuke-sandbox-token": true,
12293
+ "x-kosuke-orchestrator-token": true,
12294
+ "x-kosuke-cron-token": true,
12295
+ "x-kosuke-lead-token": true,
11242
12296
  "responses": {
11243
12297
  "2XX": {
11244
12298
  "description": "Success envelope",
@@ -11648,6 +12702,10 @@
11648
12702
  "summary": "Read the session and weekly utilization of your Claude (claude_code, the default), Codex or GLM Coding Plan (coding_plan) subscription. 400 when it is not connected or needs reconnecting.",
11649
12703
  "tags": ["user"],
11650
12704
  "x-kosuke-command": ["user", "subscriptions", "usage"],
12705
+ "x-kosuke-sandbox-token": true,
12706
+ "x-kosuke-orchestrator-token": true,
12707
+ "x-kosuke-cron-token": true,
12708
+ "x-kosuke-lead-token": true,
11651
12709
  "parameters": [
11652
12710
  {
11653
12711
  "name": "provider",