@kosuke-ai/cli 5.6.5 → 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 (133) 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 +60 -0
  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 +5 -5
  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-diagnostics.js +24 -0
  13. package/dist/generated/commands/crons/runs-get.js +4 -4
  14. package/dist/generated/commands/crons/runs-list.js +4 -4
  15. package/dist/generated/commands/crons/runs-messages.js +4 -4
  16. package/dist/generated/commands/crons/update.js +4 -4
  17. package/dist/generated/commands/deploy/cancel.js +4 -4
  18. package/dist/generated/commands/deploy/list.js +2 -2
  19. package/dist/generated/commands/deploy/messages.js +2 -2
  20. package/dist/generated/commands/deploy/queue-list.js +4 -4
  21. package/dist/generated/commands/deploy/queue-move.js +4 -4
  22. package/dist/generated/commands/deploy/queue-resume.js +4 -4
  23. package/dist/generated/commands/deploy/queue-send.js +4 -4
  24. package/dist/generated/commands/deploy/queue-steer.js +4 -4
  25. package/dist/generated/commands/deploy/queue-update.js +4 -4
  26. package/dist/generated/commands/deploy/run.js +4 -4
  27. package/dist/generated/commands/deploy/set-model.js +4 -4
  28. package/dist/generated/commands/github/repositories.js +4 -4
  29. package/dist/generated/commands/github/status.js +4 -4
  30. package/dist/generated/commands/index.js +168 -154
  31. package/dist/generated/commands/preview/get.js +4 -4
  32. package/dist/generated/commands/preview/health.js +4 -4
  33. package/dist/generated/commands/preview/reset.js +4 -4
  34. package/dist/generated/commands/preview/share-create.js +4 -4
  35. package/dist/generated/commands/preview/share-get.js +4 -4
  36. package/dist/generated/commands/projects/branches.js +4 -4
  37. package/dist/generated/commands/projects/create.js +4 -4
  38. package/dist/generated/commands/projects/env-vars-add.js +4 -4
  39. package/dist/generated/commands/projects/get.js +2 -2
  40. package/dist/generated/commands/projects/labels-color.js +4 -4
  41. package/dist/generated/commands/projects/labels.js +1 -1
  42. package/dist/generated/commands/projects/list.js +2 -2
  43. package/dist/generated/commands/projects/services-add.js +4 -4
  44. package/dist/generated/commands/projects/services-list.js +4 -4
  45. package/dist/generated/commands/projects/services-update.js +4 -4
  46. package/dist/generated/commands/projects/settings-get.js +4 -4
  47. package/dist/generated/commands/projects/settings-import.js +4 -4
  48. package/dist/generated/commands/projects/settings-update.js +4 -4
  49. package/dist/generated/commands/projects/skills.js +1 -1
  50. package/dist/generated/commands/projects/update.js +4 -4
  51. package/dist/generated/commands/sessions/activate.js +19 -5
  52. package/dist/generated/commands/sessions/all.js +3 -3
  53. package/dist/generated/commands/sessions/artifacts-attach.js +3 -3
  54. package/dist/generated/commands/sessions/artifacts-get.js +3 -3
  55. package/dist/generated/commands/sessions/artifacts-list.js +3 -3
  56. package/dist/generated/commands/sessions/comments-add.js +4 -4
  57. package/dist/generated/commands/sessions/comments-list.js +4 -4
  58. package/dist/generated/commands/sessions/comments-update.js +4 -4
  59. package/dist/generated/commands/sessions/diff-comments-add.js +4 -4
  60. package/dist/generated/commands/sessions/diff-comments-list.js +4 -4
  61. package/dist/generated/commands/sessions/diff-comments-update.js +4 -4
  62. package/dist/generated/commands/sessions/diff-commits.js +4 -4
  63. package/dist/generated/commands/sessions/diff-files.js +3 -3
  64. package/dist/generated/commands/sessions/diff-patch.js +3 -3
  65. package/dist/generated/commands/sessions/edit-prompt.js +1 -1
  66. package/dist/generated/commands/sessions/files-get.js +4 -4
  67. package/dist/generated/commands/sessions/files-list.js +4 -4
  68. package/dist/generated/commands/sessions/files-write.js +4 -4
  69. package/dist/generated/commands/sessions/get.js +2 -2
  70. package/dist/generated/commands/sessions/git-commit-message.js +4 -4
  71. package/dist/generated/commands/sessions/git-commit.js +4 -4
  72. package/dist/generated/commands/sessions/git-push.js +4 -4
  73. package/dist/generated/commands/sessions/git-state.js +4 -4
  74. package/dist/generated/commands/sessions/jobs-cancel.js +4 -4
  75. package/dist/generated/commands/sessions/jobs-get.js +1 -1
  76. package/dist/generated/commands/sessions/jobs-list.js +2 -2
  77. package/dist/generated/commands/sessions/labels-edit.js +3 -3
  78. package/dist/generated/commands/sessions/labels-set.js +3 -3
  79. package/dist/generated/commands/sessions/mark-read.js +4 -4
  80. package/dist/generated/commands/sessions/messages.js +1 -1
  81. package/dist/generated/commands/sessions/needs-you.js +4 -4
  82. package/dist/generated/commands/sessions/qa-slot.js +22 -0
  83. package/dist/generated/commands/sessions/queue-list.js +3 -3
  84. package/dist/generated/commands/sessions/queue-move.js +4 -4
  85. package/dist/generated/commands/sessions/queue-resume.js +4 -4
  86. package/dist/generated/commands/sessions/queue-send.js +4 -4
  87. package/dist/generated/commands/sessions/queue-steer.js +4 -4
  88. package/dist/generated/commands/sessions/queue-update.js +4 -4
  89. package/dist/generated/commands/sessions/runtime-command.js +4 -4
  90. package/dist/generated/commands/sessions/search.js +2 -2
  91. package/dist/generated/commands/sessions/send.js +2 -2
  92. package/dist/generated/commands/sessions/steer.js +4 -4
  93. package/dist/generated/commands/sessions/title-generate.js +4 -4
  94. package/dist/generated/commands/sessions/update.js +1 -1
  95. package/dist/generated/commands/user/plugins-list.js +3 -3
  96. package/dist/generated/commands/user/plugins-update.js +4 -4
  97. package/dist/generated/commands/user/profile.js +4 -4
  98. package/dist/generated/commands/user/skills-create.js +4 -4
  99. package/dist/generated/commands/user/skills-get.js +3 -3
  100. package/dist/generated/commands/user/skills-list.js +3 -3
  101. package/dist/generated/commands/user/skills-update.js +4 -4
  102. package/dist/generated/commands/user/subscriptions-get.js +4 -4
  103. package/dist/generated/commands/user/subscriptions-usage.js +4 -4
  104. package/dist/generated/commands/workspaces/access-status.js +4 -4
  105. package/dist/generated/commands/workspaces/ai-provider-get.js +4 -4
  106. package/dist/generated/commands/workspaces/ai-provider-usage-claude.js +4 -4
  107. package/dist/generated/commands/workspaces/ai-provider-usage-codex.js +4 -4
  108. package/dist/generated/commands/workspaces/ai-provider-usage-coding-plan.js +4 -4
  109. package/dist/generated/commands/workspaces/artifacts.js +3 -3
  110. package/dist/generated/commands/workspaces/credits.js +3 -3
  111. package/dist/generated/commands/workspaces/get.js +4 -4
  112. package/dist/generated/commands/workspaces/getting-started-get.js +4 -4
  113. package/dist/generated/commands/workspaces/getting-started-update.js +4 -4
  114. package/dist/generated/commands/workspaces/integrations-sentry-get.js +4 -4
  115. package/dist/generated/commands/workspaces/integrations-slack-get.js +4 -4
  116. package/dist/generated/commands/workspaces/lead-cards.js +21 -0
  117. package/dist/generated/commands/workspaces/lead-notifications-open.js +23 -0
  118. package/dist/generated/commands/workspaces/lead-proposals-create.js +25 -0
  119. package/dist/generated/commands/workspaces/lead-triage.js +60 -0
  120. package/dist/generated/commands/workspaces/list.js +3 -3
  121. package/dist/generated/commands/workspaces/members.js +4 -4
  122. package/dist/generated/commands/workspaces/plugins-list.js +2 -2
  123. package/dist/generated/commands/workspaces/plugins-update.js +4 -4
  124. package/dist/generated/commands/workspaces/sandbox-limit.js +3 -3
  125. package/dist/generated/commands/workspaces/skills-create.js +4 -4
  126. package/dist/generated/commands/workspaces/skills-get.js +2 -2
  127. package/dist/generated/commands/workspaces/skills-list.js +2 -2
  128. package/dist/generated/commands/workspaces/skills-update.js +4 -4
  129. package/dist/generated/commands/workspaces/stop-sandboxes.js +4 -4
  130. package/dist/generated/commands/workspaces/usage.js +3 -3
  131. package/dist/program.js +7 -10
  132. package/openapi.json +1293 -48
  133. 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",
@@ -1666,12 +1734,136 @@
1666
1734
  }
1667
1735
  }
1668
1736
  },
1737
+ "/api/organizations/{workspaceId}/crons/{cronId}/artifacts": {
1738
+ "get": {
1739
+ "operationId": "cronsArtifactsList",
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.",
1741
+ "tags": ["crons"],
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,
1747
+ "parameters": [
1748
+ {
1749
+ "name": "workspaceId",
1750
+ "in": "path",
1751
+ "required": true,
1752
+ "schema": {
1753
+ "type": "string",
1754
+ "minLength": 1
1755
+ }
1756
+ },
1757
+ {
1758
+ "name": "cronId",
1759
+ "in": "path",
1760
+ "required": true,
1761
+ "schema": {
1762
+ "type": "string",
1763
+ "format": "uuid",
1764
+ "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)$"
1765
+ }
1766
+ },
1767
+ {
1768
+ "name": "projectId",
1769
+ "in": "query",
1770
+ "required": false,
1771
+ "description": "Only the Artifacts of runs in these projects.",
1772
+ "schema": {
1773
+ "description": "Only the Artifacts of runs in these projects.",
1774
+ "x-kosuke-flag": "project",
1775
+ "type": "array",
1776
+ "items": {
1777
+ "type": "string",
1778
+ "format": "uuid",
1779
+ "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)$"
1780
+ }
1781
+ }
1782
+ },
1783
+ {
1784
+ "name": "kind",
1785
+ "in": "query",
1786
+ "required": false,
1787
+ "description": "Only the Artifacts of these kinds.",
1788
+ "schema": {
1789
+ "description": "Only the Artifacts of these kinds.",
1790
+ "x-kosuke-flag": "kind",
1791
+ "type": "array",
1792
+ "items": {
1793
+ "type": "string",
1794
+ "enum": ["markdown", "html", "image", "video"]
1795
+ }
1796
+ }
1797
+ },
1798
+ {
1799
+ "name": "page",
1800
+ "in": "query",
1801
+ "required": false,
1802
+ "description": "1-based. Default 1.",
1803
+ "schema": {
1804
+ "description": "1-based. Default 1.",
1805
+ "type": "integer",
1806
+ "minimum": 1,
1807
+ "maximum": 9007199254740991
1808
+ }
1809
+ },
1810
+ {
1811
+ "name": "pageSize",
1812
+ "in": "query",
1813
+ "required": false,
1814
+ "description": "Default 25. Values above 100 are clamped, not rejected.",
1815
+ "schema": {
1816
+ "description": "Default 25. Values above 100 are clamped, not rejected.",
1817
+ "type": "integer",
1818
+ "minimum": 1,
1819
+ "maximum": 9007199254740991
1820
+ }
1821
+ }
1822
+ ],
1823
+ "responses": {
1824
+ "2XX": {
1825
+ "description": "Success envelope",
1826
+ "content": {
1827
+ "application/json": {
1828
+ "schema": {
1829
+ "$ref": "#/components/schemas/ApiSuccess"
1830
+ }
1831
+ }
1832
+ }
1833
+ },
1834
+ "4XX": {
1835
+ "description": "Error envelope",
1836
+ "content": {
1837
+ "application/json": {
1838
+ "schema": {
1839
+ "$ref": "#/components/schemas/ApiError"
1840
+ }
1841
+ }
1842
+ }
1843
+ },
1844
+ "5XX": {
1845
+ "description": "Error envelope",
1846
+ "content": {
1847
+ "application/json": {
1848
+ "schema": {
1849
+ "$ref": "#/components/schemas/ApiError"
1850
+ }
1851
+ }
1852
+ }
1853
+ }
1854
+ }
1855
+ }
1856
+ },
1669
1857
  "/api/organizations/{workspaceId}/crons/{cronId}/projects/{projectId}/resume": {
1670
1858
  "post": {
1671
1859
  "operationId": "cronsProjectsResume",
1672
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.",
1673
1861
  "tags": ["crons"],
1674
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,
1675
1867
  "parameters": [
1676
1868
  {
1677
1869
  "name": "workspaceId",
@@ -1740,9 +1932,13 @@
1740
1932
  "/api/organizations/{workspaceId}/crons/{cronId}/run": {
1741
1933
  "post": {
1742
1934
  "operationId": "cronsRun",
1743
- "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 once the fire is queued; crons runs list shows how it went. The creator or a workspace admin only.",
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.",
1744
1936
  "tags": ["crons"],
1745
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,
1746
1942
  "parameters": [
1747
1943
  {
1748
1944
  "name": "workspaceId",
@@ -1826,6 +2022,10 @@
1826
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.",
1827
2023
  "tags": ["crons"],
1828
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,
1829
2029
  "parameters": [
1830
2030
  {
1831
2031
  "name": "workspaceId",
@@ -1942,6 +2142,10 @@
1942
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.",
1943
2143
  "tags": ["crons"],
1944
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,
1945
2149
  "parameters": [
1946
2150
  {
1947
2151
  "name": "workspaceId",
@@ -2013,6 +2217,9 @@
2013
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.",
2014
2218
  "tags": ["crons"],
2015
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,
2016
2223
  "x-kosuke-lead-token": true,
2017
2224
  "parameters": [
2018
2225
  {
@@ -2085,6 +2292,9 @@
2085
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.",
2086
2293
  "tags": ["crons"],
2087
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,
2088
2298
  "x-kosuke-lead-token": true,
2089
2299
  "parameters": [
2090
2300
  {
@@ -2167,6 +2377,10 @@
2167
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.",
2168
2378
  "tags": ["crons"],
2169
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,
2170
2384
  "parameters": [
2171
2385
  {
2172
2386
  "name": "workspaceId",
@@ -2232,12 +2446,12 @@
2232
2446
  }
2233
2447
  }
2234
2448
  },
2235
- "/api/organizations/{workspaceId}/crons/{cronId}/runs/{runId}/messages": {
2449
+ "/api/organizations/{workspaceId}/crons/{cronId}/runs/{runId}/diagnostics": {
2236
2450
  "get": {
2237
- "operationId": "cronsRunsMessages",
2238
- "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.",
2451
+ "operationId": "cronsRunsDiagnostics",
2452
+ "summary": "Read why a run of a cron ended as it did: its status, error, error code and stop source (member_stop, host_watch, deadline, replaced, sandbox_abort or runtime_error, with who stopped it), the main sandbox it ran in and that sandbox's agent version, when each phase happened (queued, main woken, credentials ready, agent requested, first event, done), the sandbox's own done payload, and the Cron Agent's log lines from the sandbox with secrets redacted. The log is capped at 256 KB and cleared after 30 days. The creator or a workspace admin only.",
2239
2453
  "tags": ["crons"],
2240
- "x-kosuke-command": ["crons", "runs", "messages"],
2454
+ "x-kosuke-command": ["crons", "runs", "diagnostics"],
2241
2455
  "parameters": [
2242
2456
  {
2243
2457
  "name": "workspaceId",
@@ -2303,12 +2517,16 @@
2303
2517
  }
2304
2518
  }
2305
2519
  },
2306
- "/api/organizations/{workspaceId}/getting-started": {
2520
+ "/api/organizations/{workspaceId}/crons/{cronId}/runs/{runId}/messages": {
2307
2521
  "get": {
2308
- "operationId": "workspacesGettingStartedGet",
2309
- "summary": "Read the getting-started guide and which milestones are done.",
2310
- "tags": ["workspaces"],
2311
- "x-kosuke-command": ["workspaces", "getting-started", "get"],
2522
+ "operationId": "cronsRunsMessages",
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.",
2524
+ "tags": ["crons"],
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,
2312
2530
  "parameters": [
2313
2531
  {
2314
2532
  "name": "workspaceId",
@@ -2318,6 +2536,26 @@
2318
2536
  "type": "string",
2319
2537
  "minLength": 1
2320
2538
  }
2539
+ },
2540
+ {
2541
+ "name": "cronId",
2542
+ "in": "path",
2543
+ "required": true,
2544
+ "schema": {
2545
+ "type": "string",
2546
+ "format": "uuid",
2547
+ "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)$"
2548
+ }
2549
+ },
2550
+ {
2551
+ "name": "runId",
2552
+ "in": "path",
2553
+ "required": true,
2554
+ "schema": {
2555
+ "type": "string",
2556
+ "format": "uuid",
2557
+ "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)$"
2558
+ }
2321
2559
  }
2322
2560
  ],
2323
2561
  "responses": {
@@ -2352,15 +2590,74 @@
2352
2590
  }
2353
2591
  }
2354
2592
  }
2355
- },
2356
- "patch": {
2357
- "operationId": "workspacesGettingStartedUpdate",
2358
- "summary": "Dismiss the guide (empty body or action=dismiss) or record the preview milestone.",
2593
+ }
2594
+ },
2595
+ "/api/organizations/{workspaceId}/getting-started": {
2596
+ "get": {
2597
+ "operationId": "workspacesGettingStartedGet",
2598
+ "summary": "Read the getting-started guide and which milestones are done.",
2359
2599
  "tags": ["workspaces"],
2360
- "x-kosuke-command": ["workspaces", "getting-started", "update"],
2361
- "parameters": [
2362
- {
2363
- "name": "workspaceId",
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,
2605
+ "parameters": [
2606
+ {
2607
+ "name": "workspaceId",
2608
+ "in": "path",
2609
+ "required": true,
2610
+ "schema": {
2611
+ "type": "string",
2612
+ "minLength": 1
2613
+ }
2614
+ }
2615
+ ],
2616
+ "responses": {
2617
+ "2XX": {
2618
+ "description": "Success envelope",
2619
+ "content": {
2620
+ "application/json": {
2621
+ "schema": {
2622
+ "$ref": "#/components/schemas/ApiSuccess"
2623
+ }
2624
+ }
2625
+ }
2626
+ },
2627
+ "4XX": {
2628
+ "description": "Error envelope",
2629
+ "content": {
2630
+ "application/json": {
2631
+ "schema": {
2632
+ "$ref": "#/components/schemas/ApiError"
2633
+ }
2634
+ }
2635
+ }
2636
+ },
2637
+ "5XX": {
2638
+ "description": "Error envelope",
2639
+ "content": {
2640
+ "application/json": {
2641
+ "schema": {
2642
+ "$ref": "#/components/schemas/ApiError"
2643
+ }
2644
+ }
2645
+ }
2646
+ }
2647
+ }
2648
+ },
2649
+ "patch": {
2650
+ "operationId": "workspacesGettingStartedUpdate",
2651
+ "summary": "Dismiss the guide (empty body or action=dismiss) or record the preview milestone.",
2652
+ "tags": ["workspaces"],
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,
2658
+ "parameters": [
2659
+ {
2660
+ "name": "workspaceId",
2364
2661
  "in": "path",
2365
2662
  "required": true,
2366
2663
  "schema": {
@@ -2425,6 +2722,224 @@
2425
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.",
2426
2723
  "tags": ["workspaces"],
2427
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"],
2778
+ "parameters": [
2779
+ {
2780
+ "name": "workspaceId",
2781
+ "in": "path",
2782
+ "required": true,
2783
+ "schema": {
2784
+ "type": "string",
2785
+ "minLength": 1
2786
+ }
2787
+ }
2788
+ ],
2789
+ "responses": {
2790
+ "2XX": {
2791
+ "description": "Success envelope",
2792
+ "content": {
2793
+ "application/json": {
2794
+ "schema": {
2795
+ "$ref": "#/components/schemas/ApiSuccess"
2796
+ }
2797
+ }
2798
+ }
2799
+ },
2800
+ "4XX": {
2801
+ "description": "Error envelope",
2802
+ "content": {
2803
+ "application/json": {
2804
+ "schema": {
2805
+ "$ref": "#/components/schemas/ApiError"
2806
+ }
2807
+ }
2808
+ }
2809
+ },
2810
+ "5XX": {
2811
+ "description": "Error envelope",
2812
+ "content": {
2813
+ "application/json": {
2814
+ "schema": {
2815
+ "$ref": "#/components/schemas/ApiError"
2816
+ }
2817
+ }
2818
+ }
2819
+ }
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,
2428
2943
  "parameters": [
2429
2944
  {
2430
2945
  "name": "workspaceId",
@@ -2434,6 +2949,16 @@
2434
2949
  "type": "string",
2435
2950
  "minLength": 1
2436
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
+ }
2437
2962
  }
2438
2963
  ],
2439
2964
  "responses": {
@@ -2467,24 +2992,232 @@
2467
2992
  }
2468
2993
  }
2469
2994
  }
2470
- }
2471
- },
2472
- "delete": {
2473
- "operationId": "workspacesIntegrationsSentryRemove",
2474
- "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.",
2475
- "tags": ["workspaces"],
2476
- "x-kosuke-command": ["workspaces", "integrations", "sentry", "remove"],
2477
- "parameters": [
2478
- {
2479
- "name": "workspaceId",
2480
- "in": "path",
2481
- "required": true,
2482
- "schema": {
2483
- "type": "string",
2484
- "minLength": 1
2485
- }
2486
- }
2487
- ],
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
+ },
2488
3221
  "responses": {
2489
3222
  "2XX": {
2490
3223
  "description": "Success envelope",
@@ -2519,12 +3252,16 @@
2519
3252
  }
2520
3253
  }
2521
3254
  },
2522
- "/api/organizations/{workspaceId}/integrations/slack": {
2523
- "get": {
2524
- "operationId": "workspacesIntegrationsSlackGet",
2525
- "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.",
2526
3259
  "tags": ["workspaces"],
2527
- "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,
2528
3265
  "parameters": [
2529
3266
  {
2530
3267
  "name": "workspaceId",
@@ -2536,6 +3273,128 @@
2536
3273
  }
2537
3274
  }
2538
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
+ },
2539
3398
  "responses": {
2540
3399
  "2XX": {
2541
3400
  "description": "Success envelope",
@@ -2576,6 +3435,10 @@
2576
3435
  "summary": "List the members of a workspace, and its pending invitations unless excluded.",
2577
3436
  "tags": ["workspaces"],
2578
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,
2579
3442
  "parameters": [
2580
3443
  {
2581
3444
  "name": "workspaceId",
@@ -2638,7 +3501,9 @@
2638
3501
  "tags": ["workspaces"],
2639
3502
  "x-kosuke-command": ["workspaces", "plugins", "list"],
2640
3503
  "x-kosuke-sandbox-token": true,
3504
+ "x-kosuke-orchestrator-token": true,
2641
3505
  "x-kosuke-cron-token": true,
3506
+ "x-kosuke-lead-token": true,
2642
3507
  "parameters": [
2643
3508
  {
2644
3509
  "name": "workspaceId",
@@ -2699,6 +3564,10 @@
2699
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.",
2700
3565
  "tags": ["workspaces"],
2701
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,
2702
3571
  "parameters": [
2703
3572
  {
2704
3573
  "name": "workspaceId",
@@ -3018,6 +3887,9 @@
3018
3887
  "summary": "Read how many sandboxes may run at once and which sessions are running now.",
3019
3888
  "tags": ["workspaces"],
3020
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,
3021
3893
  "x-kosuke-lead-token": true,
3022
3894
  "parameters": [
3023
3895
  {
@@ -3071,7 +3943,9 @@
3071
3943
  "tags": ["workspaces"],
3072
3944
  "x-kosuke-command": ["workspaces", "skills", "list"],
3073
3945
  "x-kosuke-sandbox-token": true,
3946
+ "x-kosuke-orchestrator-token": true,
3074
3947
  "x-kosuke-cron-token": true,
3948
+ "x-kosuke-lead-token": true,
3075
3949
  "parameters": [
3076
3950
  {
3077
3951
  "name": "workspaceId",
@@ -3121,6 +3995,10 @@
3121
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.",
3122
3996
  "tags": ["workspaces"],
3123
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,
3124
4002
  "parameters": [
3125
4003
  {
3126
4004
  "name": "workspaceId",
@@ -3211,7 +4089,9 @@
3211
4089
  "tags": ["workspaces"],
3212
4090
  "x-kosuke-command": ["workspaces", "skills", "get"],
3213
4091
  "x-kosuke-sandbox-token": true,
4092
+ "x-kosuke-orchestrator-token": true,
3214
4093
  "x-kosuke-cron-token": true,
4094
+ "x-kosuke-lead-token": true,
3215
4095
  "parameters": [
3216
4096
  {
3217
4097
  "name": "workspaceId",
@@ -3270,6 +4150,10 @@
3270
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.",
3271
4151
  "tags": ["workspaces"],
3272
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,
3273
4157
  "parameters": [
3274
4158
  {
3275
4159
  "name": "workspaceId",
@@ -3420,6 +4304,10 @@
3420
4304
  "summary": "Pause the sandboxes of the given chat sessions.",
3421
4305
  "tags": ["workspaces"],
3422
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,
3423
4311
  "parameters": [
3424
4312
  {
3425
4313
  "name": "workspaceId",
@@ -3494,6 +4382,9 @@
3494
4382
  "summary": "Read sandbox usage by day and by project. start must precede end and the range is capped at 366 days.",
3495
4383
  "tags": ["workspaces"],
3496
4384
  "x-kosuke-command": ["workspaces", "usage"],
4385
+ "x-kosuke-sandbox-token": true,
4386
+ "x-kosuke-orchestrator-token": true,
4387
+ "x-kosuke-cron-token": true,
3497
4388
  "x-kosuke-lead-token": true,
3498
4389
  "parameters": [
3499
4390
  {
@@ -3566,7 +4457,9 @@
3566
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.",
3567
4458
  "tags": ["projects"],
3568
4459
  "x-kosuke-command": ["projects", "list"],
4460
+ "x-kosuke-sandbox-token": true,
3569
4461
  "x-kosuke-orchestrator-token": true,
4462
+ "x-kosuke-cron-token": true,
3570
4463
  "x-kosuke-lead-token": true,
3571
4464
  "responses": {
3572
4465
  "2XX": {
@@ -3606,6 +4499,10 @@
3606
4499
  "summary": "Connect a GitHub repository as a project in a workspace.",
3607
4500
  "tags": ["projects"],
3608
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,
3609
4506
  "requestBody": {
3610
4507
  "required": true,
3611
4508
  "content": {
@@ -3672,7 +4569,9 @@
3672
4569
  "summary": "Read one project.",
3673
4570
  "tags": ["projects"],
3674
4571
  "x-kosuke-command": ["projects", "get"],
4572
+ "x-kosuke-sandbox-token": true,
3675
4573
  "x-kosuke-orchestrator-token": true,
4574
+ "x-kosuke-cron-token": true,
3676
4575
  "x-kosuke-lead-token": true,
3677
4576
  "parameters": [
3678
4577
  {
@@ -3724,6 +4623,10 @@
3724
4623
  "summary": "Rename a project.",
3725
4624
  "tags": ["projects"],
3726
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,
3727
4630
  "parameters": [
3728
4631
  {
3729
4632
  "name": "projectId",
@@ -3844,6 +4747,10 @@
3844
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.",
3845
4748
  "tags": ["projects"],
3846
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,
3847
4754
  "parameters": [
3848
4755
  {
3849
4756
  "name": "projectId",
@@ -4214,10 +5121,11 @@
4214
5121
  "/api/projects/{projectId}/chat-sessions/{sessionId}": {
4215
5122
  "get": {
4216
5123
  "operationId": "sessionsGet",
4217
- "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.",
4218
5125
  "tags": ["sessions"],
4219
5126
  "x-kosuke-command": ["sessions", "get"],
4220
5127
  "x-kosuke-sandbox-token": true,
5128
+ "x-kosuke-orchestrator-token": true,
4221
5129
  "x-kosuke-cron-token": true,
4222
5130
  "x-kosuke-lead-token": true,
4223
5131
  "parameters": [
@@ -4281,6 +5189,7 @@
4281
5189
  "tags": ["sessions"],
4282
5190
  "x-kosuke-command": ["sessions", "update"],
4283
5191
  "x-kosuke-sandbox-token": true,
5192
+ "x-kosuke-orchestrator-token": true,
4284
5193
  "x-kosuke-cron-token": true,
4285
5194
  "x-kosuke-lead-token": true,
4286
5195
  "parameters": [
@@ -4454,9 +5363,12 @@
4454
5363
  "/api/projects/{projectId}/chat-sessions/{sessionId}/activate": {
4455
5364
  "post": {
4456
5365
  "operationId": "sessionsActivate",
4457
- "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.",
4458
5367
  "tags": ["sessions"],
4459
5368
  "x-kosuke-command": ["sessions", "activate"],
5369
+ "x-kosuke-sandbox-token": true,
5370
+ "x-kosuke-orchestrator-token": true,
5371
+ "x-kosuke-cron-token": true,
4460
5372
  "x-kosuke-lead-token": true,
4461
5373
  "parameters": [
4462
5374
  {
@@ -4480,6 +5392,23 @@
4480
5392
  }
4481
5393
  }
4482
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
+ },
4483
5412
  "responses": {
4484
5413
  "2XX": {
4485
5414
  "description": "Success envelope",
@@ -4520,6 +5449,9 @@
4520
5449
  "summary": "List the session's artifacts, most recently changed first. Rows only: a body or a file url comes from reading one.",
4521
5450
  "tags": ["sessions"],
4522
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,
4523
5455
  "x-kosuke-lead-token": true,
4524
5456
  "parameters": [
4525
5457
  {
@@ -4581,6 +5513,9 @@
4581
5513
  "summary": "Copy one of your Lead's Prototypes onto a Backlog session as its own artifacts: the variant named, or every variant.",
4582
5514
  "tags": ["sessions"],
4583
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,
4584
5519
  "x-kosuke-lead-token": true,
4585
5520
  "parameters": [
4586
5521
  {
@@ -4673,6 +5608,9 @@
4673
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.",
4674
5609
  "tags": ["sessions"],
4675
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,
4676
5614
  "x-kosuke-lead-token": true,
4677
5615
  "parameters": [
4678
5616
  {
@@ -4746,6 +5684,10 @@
4746
5684
  "summary": "List the session's own comments, oldest first. Review comments on the diff are under sessions diff comments.",
4747
5685
  "tags": ["sessions"],
4748
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,
4749
5691
  "parameters": [
4750
5692
  {
4751
5693
  "name": "projectId",
@@ -4806,6 +5748,10 @@
4806
5748
  "summary": "Comment on the session, or reply to one of its comments with replyToId.",
4807
5749
  "tags": ["sessions"],
4808
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,
4809
5755
  "parameters": [
4810
5756
  {
4811
5757
  "name": "projectId",
@@ -4891,6 +5837,10 @@
4891
5837
  "summary": "Edit the text of your own session comment.",
4892
5838
  "tags": ["sessions"],
4893
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,
4894
5844
  "parameters": [
4895
5845
  {
4896
5846
  "name": "projectId",
@@ -5052,7 +6002,9 @@
5052
6002
  "tags": ["sessions"],
5053
6003
  "x-kosuke-command": ["sessions", "jobs", "list"],
5054
6004
  "x-kosuke-sandbox-token": true,
6005
+ "x-kosuke-orchestrator-token": true,
5055
6006
  "x-kosuke-cron-token": true,
6007
+ "x-kosuke-lead-token": true,
5056
6008
  "parameters": [
5057
6009
  {
5058
6010
  "name": "projectId",
@@ -5138,7 +6090,9 @@
5138
6090
  "tags": ["sessions"],
5139
6091
  "x-kosuke-command": ["sessions", "send"],
5140
6092
  "x-kosuke-attachments": true,
6093
+ "x-kosuke-sandbox-token": true,
5141
6094
  "x-kosuke-orchestrator-token": true,
6095
+ "x-kosuke-cron-token": true,
5142
6096
  "x-kosuke-lead-token": true,
5143
6097
  "parameters": [
5144
6098
  {
@@ -5342,6 +6296,7 @@
5342
6296
  "tags": ["sessions"],
5343
6297
  "x-kosuke-command": ["sessions", "jobs", "get"],
5344
6298
  "x-kosuke-sandbox-token": true,
6299
+ "x-kosuke-orchestrator-token": true,
5345
6300
  "x-kosuke-cron-token": true,
5346
6301
  "x-kosuke-lead-token": true,
5347
6302
  "parameters": [
@@ -5416,6 +6371,10 @@
5416
6371
  "summary": "Stop a running turn. Steers it had not taken go back to the top of Up next, which pauses.",
5417
6372
  "tags": ["sessions"],
5418
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,
5419
6378
  "parameters": [
5420
6379
  {
5421
6380
  "name": "projectId",
@@ -5488,6 +6447,9 @@
5488
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.",
5489
6448
  "tags": ["sessions"],
5490
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,
5491
6453
  "x-kosuke-lead-token": true,
5492
6454
  "parameters": [
5493
6455
  {
@@ -5570,10 +6532,12 @@
5570
6532
  },
5571
6533
  "patch": {
5572
6534
  "operationId": "sessionsLabelsEdit",
5573
- "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.",
5574
6536
  "tags": ["sessions"],
5575
6537
  "x-kosuke-command": ["sessions", "labels", "edit"],
5576
6538
  "x-kosuke-sandbox-token": true,
6539
+ "x-kosuke-orchestrator-token": true,
6540
+ "x-kosuke-cron-token": true,
5577
6541
  "x-kosuke-lead-token": true,
5578
6542
  "parameters": [
5579
6543
  {
@@ -5676,6 +6640,7 @@
5676
6640
  "tags": ["sessions"],
5677
6641
  "x-kosuke-command": ["sessions", "messages"],
5678
6642
  "x-kosuke-sandbox-token": true,
6643
+ "x-kosuke-orchestrator-token": true,
5679
6644
  "x-kosuke-cron-token": true,
5680
6645
  "x-kosuke-lead-token": true,
5681
6646
  "parameters": [
@@ -5763,6 +6728,10 @@
5763
6728
  "summary": "List the review comments left on the diff.",
5764
6729
  "tags": ["sessions"],
5765
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,
5766
6735
  "parameters": [
5767
6736
  {
5768
6737
  "name": "projectId",
@@ -5823,6 +6792,10 @@
5823
6792
  "summary": "Leave a review comment on a range of lines in the diff.",
5824
6793
  "tags": ["sessions"],
5825
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,
5826
6799
  "parameters": [
5827
6800
  {
5828
6801
  "name": "projectId",
@@ -5933,6 +6906,10 @@
5933
6906
  "summary": "Edit the body of your own comment, or resolve or reopen any comment. One of the two per call.",
5934
6907
  "tags": ["sessions"],
5935
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,
5936
6913
  "parameters": [
5937
6914
  {
5938
6915
  "name": "projectId",
@@ -6108,6 +7085,10 @@
6108
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.",
6109
7086
  "tags": ["sessions"],
6110
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,
6111
7092
  "parameters": [
6112
7093
  {
6113
7094
  "name": "projectId",
@@ -6170,6 +7151,9 @@
6170
7151
  "summary": "List the files the session's branch changes against its base, with totals.",
6171
7152
  "tags": ["sessions"],
6172
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,
6173
7157
  "x-kosuke-lead-token": true,
6174
7158
  "parameters": [
6175
7159
  {
@@ -6233,6 +7217,9 @@
6233
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.",
6234
7218
  "tags": ["sessions"],
6235
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,
6236
7223
  "x-kosuke-lead-token": true,
6237
7224
  "parameters": [
6238
7225
  {
@@ -6393,6 +7380,10 @@
6393
7380
  "summary": "List the files in the session's sandbox. Empty when the sandbox is not running.",
6394
7381
  "tags": ["sessions"],
6395
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,
6396
7387
  "parameters": [
6397
7388
  {
6398
7389
  "name": "projectId",
@@ -6455,6 +7446,10 @@
6455
7446
  "summary": "Read one file from the session's sandbox.",
6456
7447
  "tags": ["sessions"],
6457
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,
6458
7453
  "parameters": [
6459
7454
  {
6460
7455
  "name": "projectId",
@@ -6526,6 +7521,10 @@
6526
7521
  "summary": "Write one file in the session's sandbox. Refused while a turn is running, and for binary content.",
6527
7522
  "tags": ["sessions"],
6528
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,
6529
7528
  "parameters": [
6530
7529
  {
6531
7530
  "name": "projectId",
@@ -6615,6 +7614,10 @@
6615
7614
  "summary": "Read whether the session's sandbox has uncommitted changes, unpushed commits, or commits ahead of its base branch.",
6616
7615
  "tags": ["sessions"],
6617
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,
6618
7621
  "parameters": [
6619
7622
  {
6620
7623
  "name": "projectId",
@@ -6677,6 +7680,10 @@
6677
7680
  "summary": "Commit the uncommitted changes in the sandbox. Refused while a turn is running.",
6678
7681
  "tags": ["sessions"],
6679
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,
6680
7687
  "parameters": [
6681
7688
  {
6682
7689
  "name": "projectId",
@@ -6757,6 +7764,10 @@
6757
7764
  "summary": "Draft a commit message for the uncommitted changes. Needs a running sandbox.",
6758
7765
  "tags": ["sessions"],
6759
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,
6760
7771
  "parameters": [
6761
7772
  {
6762
7773
  "name": "projectId",
@@ -6819,6 +7830,10 @@
6819
7830
  "summary": "Push the session's branch to GitHub. Refused while a turn is running.",
6820
7831
  "tags": ["sessions"],
6821
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,
6822
7837
  "parameters": [
6823
7838
  {
6824
7839
  "name": "projectId",
@@ -6883,6 +7898,7 @@
6883
7898
  "x-kosuke-command": ["sessions", "edit-prompt"],
6884
7899
  "x-kosuke-attachments": true,
6885
7900
  "x-kosuke-sandbox-token": true,
7901
+ "x-kosuke-orchestrator-token": true,
6886
7902
  "x-kosuke-cron-token": true,
6887
7903
  "x-kosuke-lead-token": true,
6888
7904
  "parameters": [
@@ -6975,12 +7991,81 @@
6975
7991
  }
6976
7992
  }
6977
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
+ },
6978
8060
  "/api/projects/{projectId}/chat-sessions/{sessionId}/queue": {
6979
8061
  "get": {
6980
8062
  "operationId": "sessionsQueueList",
6981
8063
  "summary": "List the messages waiting Up next in the session, in the order they will be sent, and whether Up next is paused.",
6982
8064
  "tags": ["sessions"],
6983
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,
6984
8069
  "x-kosuke-lead-token": true,
6985
8070
  "parameters": [
6986
8071
  {
@@ -7045,6 +8130,10 @@
7045
8130
  "tags": ["sessions"],
7046
8131
  "x-kosuke-command": ["sessions", "queue", "update"],
7047
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,
7048
8137
  "parameters": [
7049
8138
  {
7050
8139
  "name": "projectId",
@@ -7228,6 +8317,10 @@
7228
8317
  "summary": "Move your own queued message to another place in Up next.",
7229
8318
  "tags": ["sessions"],
7230
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,
7231
8324
  "parameters": [
7232
8325
  {
7233
8326
  "name": "projectId",
@@ -7319,6 +8412,10 @@
7319
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.",
7320
8413
  "tags": ["sessions"],
7321
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,
7322
8419
  "parameters": [
7323
8420
  {
7324
8421
  "name": "projectId",
@@ -7391,6 +8488,10 @@
7391
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.",
7392
8489
  "tags": ["sessions"],
7393
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,
7394
8495
  "parameters": [
7395
8496
  {
7396
8497
  "name": "projectId",
@@ -7463,6 +8564,10 @@
7463
8564
  "summary": "Resume a session's paused Up next. Its top message is sent as soon as nothing is running.",
7464
8565
  "tags": ["sessions"],
7465
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,
7466
8571
  "parameters": [
7467
8572
  {
7468
8573
  "name": "projectId",
@@ -7525,6 +8630,10 @@
7525
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.",
7526
8631
  "tags": ["sessions"],
7527
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,
7528
8637
  "parameters": [
7529
8638
  {
7530
8639
  "name": "projectId",
@@ -7587,6 +8696,10 @@
7587
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.",
7588
8697
  "tags": ["sessions"],
7589
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,
7590
8703
  "parameters": [
7591
8704
  {
7592
8705
  "name": "projectId",
@@ -7669,6 +8782,10 @@
7669
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).",
7670
8783
  "tags": ["sessions"],
7671
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,
7672
8789
  "parameters": [
7673
8790
  {
7674
8791
  "name": "projectId",
@@ -7755,6 +8872,10 @@
7755
8872
  "summary": "Generate a title for a backlog session from the prompt text given as content. The title is returned, not saved.",
7756
8873
  "tags": ["sessions"],
7757
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,
7758
8879
  "parameters": [
7759
8880
  {
7760
8881
  "name": "projectId",
@@ -7836,7 +8957,9 @@
7836
8957
  "tags": ["deploy"],
7837
8958
  "x-kosuke-command": ["deploy", "messages"],
7838
8959
  "x-kosuke-sandbox-token": true,
8960
+ "x-kosuke-orchestrator-token": true,
7839
8961
  "x-kosuke-cron-token": true,
8962
+ "x-kosuke-lead-token": true,
7840
8963
  "parameters": [
7841
8964
  {
7842
8965
  "name": "projectId",
@@ -7890,7 +9013,9 @@
7890
9013
  "tags": ["deploy"],
7891
9014
  "x-kosuke-command": ["deploy", "list"],
7892
9015
  "x-kosuke-sandbox-token": true,
9016
+ "x-kosuke-orchestrator-token": true,
7893
9017
  "x-kosuke-cron-token": true,
9018
+ "x-kosuke-lead-token": true,
7894
9019
  "parameters": [
7895
9020
  {
7896
9021
  "name": "projectId",
@@ -7968,6 +9093,7 @@
7968
9093
  "tags": ["projects"],
7969
9094
  "x-kosuke-command": ["projects", "labels"],
7970
9095
  "x-kosuke-sandbox-token": true,
9096
+ "x-kosuke-orchestrator-token": true,
7971
9097
  "x-kosuke-cron-token": true,
7972
9098
  "x-kosuke-lead-token": true,
7973
9099
  "parameters": [
@@ -8020,6 +9146,10 @@
8020
9146
  "summary": "Recolor a Session Label. Sessions whose pull request carries it resync, which recolors the repository label on GitHub to match.",
8021
9147
  "tags": ["projects"],
8022
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,
8023
9153
  "parameters": [
8024
9154
  {
8025
9155
  "name": "projectId",
@@ -8095,6 +9225,10 @@
8095
9225
  "summary": "Read the preview URLs of the project's main sandbox, or of one chat session's.",
8096
9226
  "tags": ["preview"],
8097
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,
8098
9232
  "parameters": [
8099
9233
  {
8100
9234
  "name": "projectId",
@@ -8159,6 +9293,10 @@
8159
9293
  "summary": "Read the health of every service behind a preview.",
8160
9294
  "tags": ["preview"],
8161
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,
8162
9300
  "parameters": [
8163
9301
  {
8164
9302
  "name": "projectId",
@@ -8223,6 +9361,10 @@
8223
9361
  "summary": "Restart the services of a preview's running sandbox in place. Fails when the sandbox is paused.",
8224
9362
  "tags": ["preview"],
8225
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,
8226
9368
  "parameters": [
8227
9369
  {
8228
9370
  "name": "projectId",
@@ -8290,6 +9432,10 @@
8290
9432
  "summary": "Read the public share link of a preview, if one exists.",
8291
9433
  "tags": ["preview"],
8292
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,
8293
9439
  "parameters": [
8294
9440
  {
8295
9441
  "name": "projectId",
@@ -8352,6 +9498,10 @@
8352
9498
  "summary": "Create the public share link of a preview. The body sessionId wins over the query one.",
8353
9499
  "tags": ["preview"],
8354
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,
8355
9505
  "parameters": [
8356
9506
  {
8357
9507
  "name": "projectId",
@@ -8502,6 +9652,10 @@
8502
9652
  "summary": "Read the project settings: setup commands, services, environment and sandbox size.",
8503
9653
  "tags": ["projects"],
8504
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,
8505
9659
  "parameters": [
8506
9660
  {
8507
9661
  "name": "projectId",
@@ -8552,6 +9706,10 @@
8552
9706
  "summary": "Change setup commands, branches, working directory or sandbox tier.",
8553
9707
  "tags": ["projects"],
8554
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,
8555
9713
  "parameters": [
8556
9714
  {
8557
9715
  "name": "projectId",
@@ -8696,6 +9854,10 @@
8696
9854
  "tags": ["deploy"],
8697
9855
  "x-kosuke-command": ["deploy", "run"],
8698
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,
8699
9861
  "parameters": [
8700
9862
  {
8701
9863
  "name": "projectId",
@@ -8795,6 +9957,10 @@
8795
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.",
8796
9958
  "tags": ["deploy"],
8797
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,
8798
9964
  "parameters": [
8799
9965
  {
8800
9966
  "name": "projectId",
@@ -8847,6 +10013,10 @@
8847
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.",
8848
10014
  "tags": ["deploy"],
8849
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,
8850
10020
  "parameters": [
8851
10021
  {
8852
10022
  "name": "projectId",
@@ -8916,6 +10086,10 @@
8916
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.",
8917
10087
  "tags": ["deploy"],
8918
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,
8919
10093
  "parameters": [
8920
10094
  {
8921
10095
  "name": "projectId",
@@ -8969,6 +10143,10 @@
8969
10143
  "tags": ["deploy"],
8970
10144
  "x-kosuke-command": ["deploy", "queue", "update"],
8971
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,
8972
10150
  "parameters": [
8973
10151
  {
8974
10152
  "name": "projectId",
@@ -9131,6 +10309,10 @@
9131
10309
  "summary": "Move your own queued Deploy Chat message to another place in Up next.",
9132
10310
  "tags": ["deploy"],
9133
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,
9134
10316
  "parameters": [
9135
10317
  {
9136
10318
  "name": "projectId",
@@ -9212,6 +10394,10 @@
9212
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.",
9213
10395
  "tags": ["deploy"],
9214
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,
9215
10401
  "parameters": [
9216
10402
  {
9217
10403
  "name": "projectId",
@@ -9274,6 +10460,10 @@
9274
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.",
9275
10461
  "tags": ["deploy"],
9276
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,
9277
10467
  "parameters": [
9278
10468
  {
9279
10469
  "name": "projectId",
@@ -9336,6 +10526,10 @@
9336
10526
  "summary": "Resume the Deploy Chat's paused Up next. Its top message is sent as soon as the deploy is idle.",
9337
10527
  "tags": ["deploy"],
9338
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,
9339
10533
  "parameters": [
9340
10534
  {
9341
10535
  "name": "projectId",
@@ -9388,6 +10582,10 @@
9388
10582
  "summary": "Add environment variables. The body is a JSON array of { key, value, isSecret? }.",
9389
10583
  "tags": ["projects"],
9390
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,
9391
10589
  "parameters": [
9392
10590
  {
9393
10591
  "name": "projectId",
@@ -9538,6 +10736,10 @@
9538
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.",
9539
10737
  "tags": ["projects"],
9540
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,
9541
10743
  "parameters": [
9542
10744
  {
9543
10745
  "name": "projectId",
@@ -9804,6 +11006,10 @@
9804
11006
  "summary": "List the project services, in the order they start. Carries no environment variables.",
9805
11007
  "tags": ["projects"],
9806
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,
9807
11013
  "parameters": [
9808
11014
  {
9809
11015
  "name": "projectId",
@@ -9854,6 +11060,10 @@
9854
11060
  "summary": "Add a service. A port already used by another service is rejected by the handler.",
9855
11061
  "tags": ["projects"],
9856
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,
9857
11067
  "parameters": [
9858
11068
  {
9859
11069
  "name": "projectId",
@@ -10011,6 +11221,10 @@
10011
11221
  "summary": "Change one service. Every field is optional; only the ones sent change.",
10012
11222
  "tags": ["projects"],
10013
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,
10014
11228
  "parameters": [
10015
11229
  {
10016
11230
  "name": "projectId",
@@ -10225,6 +11439,7 @@
10225
11439
  "tags": ["projects"],
10226
11440
  "x-kosuke-command": ["projects", "skills"],
10227
11441
  "x-kosuke-sandbox-token": true,
11442
+ "x-kosuke-orchestrator-token": true,
10228
11443
  "x-kosuke-cron-token": true,
10229
11444
  "x-kosuke-lead-token": true,
10230
11445
  "parameters": [
@@ -10589,11 +11804,13 @@
10589
11804
  "/api/user/plugins": {
10590
11805
  "get": {
10591
11806
  "operationId": "userPluginsList",
10592
- "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.",
10593
11808
  "tags": ["user"],
10594
11809
  "x-kosuke-command": ["user", "plugins", "list"],
10595
11810
  "x-kosuke-sandbox-token": true,
11811
+ "x-kosuke-orchestrator-token": true,
10596
11812
  "x-kosuke-cron-token": true,
11813
+ "x-kosuke-lead-token": true,
10597
11814
  "parameters": [
10598
11815
  {
10599
11816
  "name": "provider",
@@ -10645,6 +11862,10 @@
10645
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.",
10646
11863
  "tags": ["user"],
10647
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,
10648
11869
  "parameters": [
10649
11870
  {
10650
11871
  "name": "pluginId",
@@ -10713,6 +11934,10 @@
10713
11934
  "summary": "Read your account: id, email, name, onboarding state, default model, auto-commit and plain-language settings.",
10714
11935
  "tags": ["user"],
10715
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,
10716
11941
  "responses": {
10717
11942
  "2XX": {
10718
11943
  "description": "Success envelope",
@@ -10750,11 +11975,13 @@
10750
11975
  "/api/user/skills": {
10751
11976
  "get": {
10752
11977
  "operationId": "userSkillsList",
10753
- "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.",
10754
11979
  "tags": ["user"],
10755
11980
  "x-kosuke-command": ["user", "skills", "list"],
10756
11981
  "x-kosuke-sandbox-token": true,
11982
+ "x-kosuke-orchestrator-token": true,
10757
11983
  "x-kosuke-cron-token": true,
11984
+ "x-kosuke-lead-token": true,
10758
11985
  "responses": {
10759
11986
  "2XX": {
10760
11987
  "description": "Success envelope",
@@ -10793,6 +12020,10 @@
10793
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.",
10794
12021
  "tags": ["user"],
10795
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,
10796
12027
  "requestBody": {
10797
12028
  "required": true,
10798
12029
  "content": {
@@ -10863,11 +12094,13 @@
10863
12094
  "/api/user/skills/{skillId}": {
10864
12095
  "get": {
10865
12096
  "operationId": "userSkillsGet",
10866
- "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.",
10867
12098
  "tags": ["user"],
10868
12099
  "x-kosuke-command": ["user", "skills", "get"],
10869
12100
  "x-kosuke-sandbox-token": true,
12101
+ "x-kosuke-orchestrator-token": true,
10870
12102
  "x-kosuke-cron-token": true,
12103
+ "x-kosuke-lead-token": true,
10871
12104
  "parameters": [
10872
12105
  {
10873
12106
  "name": "skillId",
@@ -10918,6 +12151,10 @@
10918
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.",
10919
12152
  "tags": ["user"],
10920
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,
10921
12158
  "parameters": [
10922
12159
  {
10923
12160
  "name": "skillId",
@@ -11052,6 +12289,10 @@
11052
12289
  "summary": "Read your Claude, Codex and GLM Coding Plan subscriptions (connected, needsReauth, accountEmail) and your default model.",
11053
12290
  "tags": ["user"],
11054
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,
11055
12296
  "responses": {
11056
12297
  "2XX": {
11057
12298
  "description": "Success envelope",
@@ -11461,6 +12702,10 @@
11461
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.",
11462
12703
  "tags": ["user"],
11463
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,
11464
12709
  "parameters": [
11465
12710
  {
11466
12711
  "name": "provider",