@kosuke-ai/kosuke 1.0.36 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.38
4
+
5
+ - `kosuke user profile get` also returns your UI language (`locale`).
6
+ - The menu-bar menu lists what needs you as Home and the CLI do, grouped by reason with counts, folds what does not fit into submenus, shows the number to act on next to the icon, and lists queued sessions under Running with their elapsed time. `kosuke tasks list --needs-you` lists only the tasks whose session needs you.
7
+
8
+ ## 1.0.37
9
+
10
+ - Add `kosuke projects merge-agent runs list` to list every Merge agent run and Batch of a project, newest first, with `--limit` and `--cursor`.
11
+ - `kosuke projects settings update` and `kosuke projects settings set` take `--rerun-setup-on-checkout-move`: it reruns a project's setup every time a session starts on a warm sandbox at a newer commit, for a setup that also generates code.
12
+ - Adds `kosuke projects estimate-accuracy get`, which reads how far a project's ship-run time estimates were off: the median absolute percentage error over its last 30 Ready runs, with each run's estimate, actual time and inputs.
13
+ - `deploys messages list` takes `--limit`, `--before` and `--from` and answers `olderCursor`, `newestCursor` and `messageCount`, paging the deploy conversation as `sessions messages list` pages a session's; `sessions messages list` answers `newestCursor` too, which `--from` takes to read only the newest message and what follows it.
14
+ - Add `kosuke projects merge-agent model set` to pick the model the Merge agent's next run starts on; `projects merge-agent get` returns it and each run's model.
15
+ - End stalled sub-agent waits with a clear error and recover Codex children whose turns ended without reporting a result.
16
+
3
17
  ## 1.0.36
4
18
 
5
19
  - `kosuke projects merge-agent get` describes the Batch the queue is split by: its CI, review, QA, members and ejections.
@@ -6,11 +6,33 @@ export const operation = {
6
6
  "messages",
7
7
  "list"
8
8
  ],
9
- "summary": "Read the deploy conversation and the current deploy status. Blocks come as stored. In a message recorded since previews were stored, a tool call's input keeps its short fields (inputCompacted when cut), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted when cut). `kosuke deploys messages get` reads one message whole.",
9
+ "summary": "Read the deploy conversation, from the user's latest deploy on, oldest first, and the current deploy status: the whole of it, its last limit messages, the page before an olderCursor, or everything from one; newestCursor is what a poll passes as from to read only what changed since. messageCount counts the whole conversation. Blocks come as stored. In a message recorded since previews were stored, a tool call's input keeps its short fields (inputCompacted when cut), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted when cut). `kosuke deploys messages get` reads one message whole.",
10
10
  "pathParams": [
11
11
  "projectId"
12
12
  ],
13
- "query": [],
13
+ "query": [
14
+ {
15
+ "name": "limit",
16
+ "flag": "limit",
17
+ "kind": "integer",
18
+ "required": false,
19
+ "description": "Only the newest messages, up to this many. With from, the oldest this many from that message on."
20
+ },
21
+ {
22
+ "name": "before",
23
+ "flag": "before",
24
+ "kind": "string",
25
+ "required": false,
26
+ "description": "An olderCursor from an earlier read: only the messages older than the oldest message of that read."
27
+ },
28
+ {
29
+ "name": "from",
30
+ "flag": "from",
31
+ "kind": "string",
32
+ "required": false,
33
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it."
34
+ }
35
+ ],
14
36
  "body": null,
15
37
  "multipart": null,
16
38
  "attachments": false,
@@ -116,222 +116,225 @@ import { operation as o114 } from './projects/create.js';
116
116
  import { operation as o115 } from './projects/delete.js';
117
117
  import { operation as o116 } from './projects/env-vars-create.js';
118
118
  import { operation as o117 } from './projects/env-vars-delete.js';
119
- import { operation as o118 } from './projects/get.js';
120
- import { operation as o119 } from './projects/labels-delete.js';
121
- import { operation as o120 } from './projects/labels-list.js';
122
- import { operation as o121 } from './projects/labels-sessions-list.js';
123
- import { operation as o122 } from './projects/labels-update.js';
124
- import { operation as o123 } from './projects/list.js';
125
- import { operation as o124 } from './projects/live-logs-list.js';
126
- import { operation as o125 } from './projects/live-queries-run.js';
127
- import { operation as o126 } from './projects/live-traffic-get.js';
128
- import { operation as o127 } from './projects/live-writes-create.js';
129
- import { operation as o128 } from './projects/live-writes-get.js';
130
- import { operation as o129 } from './projects/merge-agent-get.js';
131
- import { operation as o130 } from './projects/merge-agent-merge.js';
132
- import { operation as o131 } from './projects/merge-agent-sync.js';
133
- import { operation as o132 } from './projects/qa-guide-get.js';
134
- import { operation as o133 } from './projects/qa-guide-set.js';
135
- import { operation as o134 } from './projects/releases-list.js';
136
- import { operation as o135 } from './projects/services-create.js';
137
- import { operation as o136 } from './projects/services-delete.js';
138
- import { operation as o137 } from './projects/services-list.js';
139
- import { operation as o138 } from './projects/services-update.js';
140
- import { operation as o139 } from './projects/settings-get.js';
141
- import { operation as o140 } from './projects/settings-set.js';
142
- import { operation as o141 } from './projects/settings-update.js';
143
- import { operation as o142 } from './projects/skills-list.js';
144
- import { operation as o143 } from './projects/update.js';
145
- import { operation as o144 } from './projects/versions-list.js';
146
- import { operation as o145 } from './projects/workflow-set.js';
147
- import { operation as o146 } from './prototypes/create.js';
148
- import { operation as o147 } from './providers/access-get.js';
149
- import { operation as o148 } from './providers/default-model-set--personal.js';
150
- import { operation as o149 } from './providers/delete.js';
151
- import { operation as o150 } from './providers/delete--personal.js';
152
- import { operation as o151 } from './providers/get.js';
153
- import { operation as o152 } from './providers/get--personal.js';
154
- import { operation as o153 } from './providers/google-delete.js';
155
- import { operation as o154 } from './providers/google-get.js';
156
- import { operation as o155 } from './providers/google-methods-delete.js';
157
- import { operation as o156 } from './providers/google-methods-set.js';
158
- import { operation as o157 } from './providers/google-set.js';
159
- import { operation as o158 } from './providers/grok-get.js';
160
- import { operation as o159 } from './providers/grok-get--personal.js';
161
- import { operation as o160 } from './providers/grok-update.js';
162
- import { operation as o161 } from './providers/grok-update--personal.js';
163
- import { operation as o162 } from './providers/help-request-create.js';
164
- import { operation as o163 } from './providers/keys-set--personal.js';
165
- import { operation as o164 } from './providers/logins-cancel--personal-provider-antigravity.js';
166
- import { operation as o165 } from './providers/logins-cancel--provider-antigravity.js';
167
- import { operation as o166 } from './providers/logins-complete--personal-provider-antigravity.js';
168
- import { operation as o167 } from './providers/logins-complete--personal-provider-claude-code.js';
169
- import { operation as o168 } from './providers/logins-complete--personal-provider-codex.js';
170
- import { operation as o169 } from './providers/logins-complete--personal-provider-muse-code.js';
171
- import { operation as o170 } from './providers/logins-complete--provider-antigravity.js';
172
- import { operation as o171 } from './providers/logins-complete--provider-claude-code.js';
173
- import { operation as o172 } from './providers/logins-complete--provider-codex.js';
174
- import { operation as o173 } from './providers/logins-complete--provider-muse-code.js';
175
- import { operation as o174 } from './providers/logins-delete--personal.js';
176
- import { operation as o175 } from './providers/logins-recheck.js';
177
- import { operation as o176 } from './providers/logins-recheck--personal.js';
178
- import { operation as o177 } from './providers/logins-start--personal-provider-antigravity.js';
179
- import { operation as o178 } from './providers/logins-start--personal-provider-claude-code.js';
180
- import { operation as o179 } from './providers/logins-start--personal-provider-codex.js';
181
- import { operation as o180 } from './providers/logins-start--personal-provider-muse-code.js';
182
- import { operation as o181 } from './providers/logins-start--provider-antigravity.js';
183
- import { operation as o182 } from './providers/logins-start--provider-claude-code.js';
184
- import { operation as o183 } from './providers/logins-start--provider-codex.js';
185
- import { operation as o184 } from './providers/logins-start--provider-muse-code.js';
186
- import { operation as o185 } from './providers/set.js';
187
- import { operation as o186 } from './providers/token-usage-get.js';
188
- import { operation as o187 } from './providers/token-usage-get--personal.js';
189
- import { operation as o188 } from './providers/usage-get--personal.js';
190
- import { operation as o189 } from './providers/usage-get--provider-antigravity.js';
191
- import { operation as o190 } from './providers/usage-get--provider-claude-code.js';
192
- import { operation as o191 } from './providers/usage-get--provider-codex.js';
193
- import { operation as o192 } from './providers/usage-get--provider-coding-plan.js';
194
- import { operation as o193 } from './providers/usage-get--provider-deepseek-api.js';
195
- import { operation as o194 } from './providers/usage-get--provider-grok.js';
196
- import { operation as o195 } from './providers/usage-get--provider-kimi-code.js';
197
- import { operation as o196 } from './providers/usage-get--provider-muse-code.js';
198
- import { operation as o197 } from './sensei/calls-transcript-get.js';
199
- import { operation as o198 } from './sensei/cards-close.js';
200
- import { operation as o199 } from './sensei/cards-list.js';
201
- import { operation as o200 } from './sensei/cards-mark-read.js';
202
- import { operation as o201 } from './sensei/cards-reply.js';
203
- import { operation as o202 } from './sensei/cards-set.js';
204
- import { operation as o203 } from './sensei/chat-get.js';
205
- import { operation as o204 } from './sensei/connect-buttons-create.js';
206
- import { operation as o205 } from './sensei/delegates-get.js';
207
- import { operation as o206 } from './sensei/delegates-list.js';
208
- import { operation as o207 } from './sensei/delegates-notes-create.js';
209
- import { operation as o208 } from './sensei/delegates-start.js';
210
- import { operation as o209 } from './sensei/delegates-stop.js';
211
- import { operation as o210 } from './sensei/describe-cards-create.js';
212
- import { operation as o211 } from './sensei/device-requests-list.js';
213
- import { operation as o212 } from './sensei/device-requests-update.js';
214
- import { operation as o213 } from './sensei/fyi-move.js';
215
- import { operation as o214 } from './sensei/memory-get.js';
216
- import { operation as o215 } from './sensei/memory-set.js';
217
- import { operation as o216 } from './sensei/merge-rule-set.js';
218
- import { operation as o217 } from './sensei/messages-move.js';
219
- import { operation as o218 } from './sensei/messages-reply.js';
220
- import { operation as o219 } from './sensei/messages-send.js';
221
- import { operation as o220 } from './sensei/notifications-mark-read.js';
222
- import { operation as o221 } from './sensei/reels-activity-list.js';
223
- import { operation as o222 } from './sensei/repository-cards-create.js';
224
- import { operation as o223 } from './sensei/sessions-assessments-create.js';
225
- import { operation as o224 } from './sensei/sessions-facts-get.js';
226
- import { operation as o225 } from './sensei/suggestions-create.js';
227
- import { operation as o226 } from './sensei/threads-close.js';
228
- import { operation as o227 } from './sensei/threads-get.js';
229
- import { operation as o228 } from './sensei/threads-list.js';
230
- import { operation as o229 } from './sensei/threads-move.js';
231
- import { operation as o230 } from './sensei/threads-split.js';
232
- import { operation as o231 } from './sensei/tickets-merge.js';
233
- import { operation as o232 } from './sensei/watch-reads-finish.js';
234
- import { operation as o233 } from './sensei/widgets-get.js';
235
- import { operation as o234 } from './sensei/writing-get.js';
236
- import { operation as o235 } from './sensei/writing-set.js';
237
- import { operation as o236 } from './sensei/writing-samples-create.js';
238
- import { operation as o237 } from './sessions/app-stack-start.js';
239
- import { operation as o238 } from './sessions/artifacts-create.js';
240
- import { operation as o239 } from './sessions/artifacts-get.js';
241
- import { operation as o240 } from './sessions/artifacts-list.js';
242
- import { operation as o241 } from './sessions/create.js';
243
- import { operation as o242 } from './sessions/delete.js';
244
- import { operation as o243 } from './sessions/desktop-control-set.js';
245
- import { operation as o244 } from './sessions/desktop-get.js';
246
- import { operation as o245 } from './sessions/desktop-start.js';
247
- import { operation as o246 } from './sessions/diff-comments-create.js';
248
- import { operation as o247 } from './sessions/diff-comments-delete.js';
249
- import { operation as o248 } from './sessions/diff-comments-list.js';
250
- import { operation as o249 } from './sessions/diff-comments-update.js';
251
- import { operation as o250 } from './sessions/diff-commits-list.js';
252
- import { operation as o251 } from './sessions/diff-files-list.js';
253
- import { operation as o252 } from './sessions/diff-patch-get.js';
254
- import { operation as o253 } from './sessions/files-get.js';
255
- import { operation as o254 } from './sessions/files-list.js';
256
- import { operation as o255 } from './sessions/files-set.js';
257
- import { operation as o256 } from './sessions/get.js';
258
- import { operation as o257 } from './sessions/git-state-get.js';
259
- import { operation as o258 } from './sessions/go-ahead-delete.js';
260
- import { operation as o259 } from './sessions/go-ahead-set.js';
261
- import { operation as o260 } from './sessions/jobs-cancel.js';
262
- import { operation as o261 } from './sessions/jobs-get.js';
263
- import { operation as o262 } from './sessions/jobs-list.js';
264
- import { operation as o263 } from './sessions/labels-set.js';
265
- import { operation as o264 } from './sessions/labels-update.js';
266
- import { operation as o265 } from './sessions/list.js';
267
- import { operation as o266 } from './sessions/list--all.js';
268
- import { operation as o267 } from './sessions/mark-read.js';
269
- import { operation as o268 } from './sessions/messages-get.js';
270
- import { operation as o269 } from './sessions/messages-list.js';
271
- import { operation as o270 } from './sessions/prompt-update.js';
272
- import { operation as o271 } from './sessions/qa-runs-finish.js';
273
- import { operation as o272 } from './sessions/qa-runs-fixes-create.js';
274
- import { operation as o273 } from './sessions/qa-runs-get.js';
275
- import { operation as o274 } from './sessions/qa-runs-results-create.js';
276
- import { operation as o275 } from './sessions/qa-runs-start.js';
277
- import { operation as o276 } from './sessions/qa-runs-stop.js';
278
- import { operation as o277 } from './sessions/qa-set.js';
279
- import { operation as o278 } from './sessions/queue-delete.js';
280
- import { operation as o279 } from './sessions/queue-list.js';
281
- import { operation as o280 } from './sessions/queue-move.js';
282
- import { operation as o281 } from './sessions/queue-resume.js';
283
- import { operation as o282 } from './sessions/queue-send.js';
284
- import { operation as o283 } from './sessions/queue-steer.js';
285
- import { operation as o284 } from './sessions/queue-update.js';
286
- import { operation as o285 } from './sessions/review-set.js';
287
- import { operation as o286 } from './sessions/runtime-commands-run.js';
288
- import { operation as o287 } from './sessions/search.js';
289
- import { operation as o288 } from './sessions/send.js';
290
- import { operation as o289 } from './sessions/start.js';
291
- import { operation as o290 } from './sessions/steer.js';
292
- import { operation as o291 } from './sessions/update.js';
293
- import { operation as o292 } from './skills/create.js';
294
- import { operation as o293 } from './skills/create--personal.js';
295
- import { operation as o294 } from './skills/delete.js';
296
- import { operation as o295 } from './skills/delete--personal.js';
297
- import { operation as o296 } from './skills/get.js';
298
- import { operation as o297 } from './skills/get--personal.js';
299
- import { operation as o298 } from './skills/list.js';
300
- import { operation as o299 } from './skills/list--personal.js';
301
- import { operation as o300 } from './skills/update.js';
302
- import { operation as o301 } from './skills/update--personal.js';
303
- import { operation as o302 } from './tasks/create.js';
304
- import { operation as o303 } from './tasks/create--personal.js';
305
- import { operation as o304 } from './tasks/delete.js';
306
- import { operation as o305 } from './tasks/delete--personal.js';
307
- import { operation as o306 } from './tasks/get.js';
308
- import { operation as o307 } from './tasks/get--personal.js';
309
- import { operation as o308 } from './tasks/labels-list.js';
310
- import { operation as o309 } from './tasks/list.js';
311
- import { operation as o310 } from './tasks/list--all.js';
312
- import { operation as o311 } from './tasks/list--personal.js';
313
- import { operation as o312 } from './tasks/move.js';
314
- import { operation as o313 } from './tasks/move--personal.js';
315
- import { operation as o314 } from './tasks/start.js';
316
- import { operation as o315 } from './tasks/start--personal.js';
317
- import { operation as o316 } from './tasks/update.js';
318
- import { operation as o317 } from './tasks/update--personal.js';
319
- import { operation as o318 } from './user/api-keys-delete.js';
320
- import { operation as o319 } from './user/profile-get.js';
321
- import { operation as o320 } from './user/push-devices-create.js';
322
- import { operation as o321 } from './user/push-devices-delete.js';
323
- import { operation as o322 } from './user/usage-get.js';
324
- import { operation as o323 } from './workspaces/artifacts-search.js';
325
- import { operation as o324 } from './workspaces/credits-get.js';
326
- import { operation as o325 } from './workspaces/get.js';
327
- import { operation as o326 } from './workspaces/list.js';
328
- import { operation as o327 } from './workspaces/members-list.js';
329
- import { operation as o328 } from './workspaces/members-list--all.js';
330
- import { operation as o329 } from './workspaces/sandbox-limit-get.js';
331
- import { operation as o330 } from './workspaces/sandboxes-stop.js';
332
- import { operation as o331 } from './workspaces/timezone-set.js';
333
- import { operation as o332 } from './workspaces/usage-breakdown-get.js';
334
- import { operation as o333 } from './workspaces/usage-get.js';
119
+ import { operation as o118 } from './projects/estimate-accuracy-get.js';
120
+ import { operation as o119 } from './projects/get.js';
121
+ import { operation as o120 } from './projects/labels-delete.js';
122
+ import { operation as o121 } from './projects/labels-list.js';
123
+ import { operation as o122 } from './projects/labels-sessions-list.js';
124
+ import { operation as o123 } from './projects/labels-update.js';
125
+ import { operation as o124 } from './projects/list.js';
126
+ import { operation as o125 } from './projects/live-logs-list.js';
127
+ import { operation as o126 } from './projects/live-queries-run.js';
128
+ import { operation as o127 } from './projects/live-traffic-get.js';
129
+ import { operation as o128 } from './projects/live-writes-create.js';
130
+ import { operation as o129 } from './projects/live-writes-get.js';
131
+ import { operation as o130 } from './projects/merge-agent-get.js';
132
+ import { operation as o131 } from './projects/merge-agent-merge.js';
133
+ import { operation as o132 } from './projects/merge-agent-model-set.js';
134
+ import { operation as o133 } from './projects/merge-agent-runs-list.js';
135
+ import { operation as o134 } from './projects/merge-agent-sync.js';
136
+ import { operation as o135 } from './projects/qa-guide-get.js';
137
+ import { operation as o136 } from './projects/qa-guide-set.js';
138
+ import { operation as o137 } from './projects/releases-list.js';
139
+ import { operation as o138 } from './projects/services-create.js';
140
+ import { operation as o139 } from './projects/services-delete.js';
141
+ import { operation as o140 } from './projects/services-list.js';
142
+ import { operation as o141 } from './projects/services-update.js';
143
+ import { operation as o142 } from './projects/settings-get.js';
144
+ import { operation as o143 } from './projects/settings-set.js';
145
+ import { operation as o144 } from './projects/settings-update.js';
146
+ import { operation as o145 } from './projects/skills-list.js';
147
+ import { operation as o146 } from './projects/update.js';
148
+ import { operation as o147 } from './projects/versions-list.js';
149
+ import { operation as o148 } from './projects/workflow-set.js';
150
+ import { operation as o149 } from './prototypes/create.js';
151
+ import { operation as o150 } from './providers/access-get.js';
152
+ import { operation as o151 } from './providers/default-model-set--personal.js';
153
+ import { operation as o152 } from './providers/delete.js';
154
+ import { operation as o153 } from './providers/delete--personal.js';
155
+ import { operation as o154 } from './providers/get.js';
156
+ import { operation as o155 } from './providers/get--personal.js';
157
+ import { operation as o156 } from './providers/google-delete.js';
158
+ import { operation as o157 } from './providers/google-get.js';
159
+ import { operation as o158 } from './providers/google-methods-delete.js';
160
+ import { operation as o159 } from './providers/google-methods-set.js';
161
+ import { operation as o160 } from './providers/google-set.js';
162
+ import { operation as o161 } from './providers/grok-get.js';
163
+ import { operation as o162 } from './providers/grok-get--personal.js';
164
+ import { operation as o163 } from './providers/grok-update.js';
165
+ import { operation as o164 } from './providers/grok-update--personal.js';
166
+ import { operation as o165 } from './providers/help-request-create.js';
167
+ import { operation as o166 } from './providers/keys-set--personal.js';
168
+ import { operation as o167 } from './providers/logins-cancel--personal-provider-antigravity.js';
169
+ import { operation as o168 } from './providers/logins-cancel--provider-antigravity.js';
170
+ import { operation as o169 } from './providers/logins-complete--personal-provider-antigravity.js';
171
+ import { operation as o170 } from './providers/logins-complete--personal-provider-claude-code.js';
172
+ import { operation as o171 } from './providers/logins-complete--personal-provider-codex.js';
173
+ import { operation as o172 } from './providers/logins-complete--personal-provider-muse-code.js';
174
+ import { operation as o173 } from './providers/logins-complete--provider-antigravity.js';
175
+ import { operation as o174 } from './providers/logins-complete--provider-claude-code.js';
176
+ import { operation as o175 } from './providers/logins-complete--provider-codex.js';
177
+ import { operation as o176 } from './providers/logins-complete--provider-muse-code.js';
178
+ import { operation as o177 } from './providers/logins-delete--personal.js';
179
+ import { operation as o178 } from './providers/logins-recheck.js';
180
+ import { operation as o179 } from './providers/logins-recheck--personal.js';
181
+ import { operation as o180 } from './providers/logins-start--personal-provider-antigravity.js';
182
+ import { operation as o181 } from './providers/logins-start--personal-provider-claude-code.js';
183
+ import { operation as o182 } from './providers/logins-start--personal-provider-codex.js';
184
+ import { operation as o183 } from './providers/logins-start--personal-provider-muse-code.js';
185
+ import { operation as o184 } from './providers/logins-start--provider-antigravity.js';
186
+ import { operation as o185 } from './providers/logins-start--provider-claude-code.js';
187
+ import { operation as o186 } from './providers/logins-start--provider-codex.js';
188
+ import { operation as o187 } from './providers/logins-start--provider-muse-code.js';
189
+ import { operation as o188 } from './providers/set.js';
190
+ import { operation as o189 } from './providers/token-usage-get.js';
191
+ import { operation as o190 } from './providers/token-usage-get--personal.js';
192
+ import { operation as o191 } from './providers/usage-get--personal.js';
193
+ import { operation as o192 } from './providers/usage-get--provider-antigravity.js';
194
+ import { operation as o193 } from './providers/usage-get--provider-claude-code.js';
195
+ import { operation as o194 } from './providers/usage-get--provider-codex.js';
196
+ import { operation as o195 } from './providers/usage-get--provider-coding-plan.js';
197
+ import { operation as o196 } from './providers/usage-get--provider-deepseek-api.js';
198
+ import { operation as o197 } from './providers/usage-get--provider-grok.js';
199
+ import { operation as o198 } from './providers/usage-get--provider-kimi-code.js';
200
+ import { operation as o199 } from './providers/usage-get--provider-muse-code.js';
201
+ import { operation as o200 } from './sensei/calls-transcript-get.js';
202
+ import { operation as o201 } from './sensei/cards-close.js';
203
+ import { operation as o202 } from './sensei/cards-list.js';
204
+ import { operation as o203 } from './sensei/cards-mark-read.js';
205
+ import { operation as o204 } from './sensei/cards-reply.js';
206
+ import { operation as o205 } from './sensei/cards-set.js';
207
+ import { operation as o206 } from './sensei/chat-get.js';
208
+ import { operation as o207 } from './sensei/connect-buttons-create.js';
209
+ import { operation as o208 } from './sensei/delegates-get.js';
210
+ import { operation as o209 } from './sensei/delegates-list.js';
211
+ import { operation as o210 } from './sensei/delegates-notes-create.js';
212
+ import { operation as o211 } from './sensei/delegates-start.js';
213
+ import { operation as o212 } from './sensei/delegates-stop.js';
214
+ import { operation as o213 } from './sensei/describe-cards-create.js';
215
+ import { operation as o214 } from './sensei/device-requests-list.js';
216
+ import { operation as o215 } from './sensei/device-requests-update.js';
217
+ import { operation as o216 } from './sensei/fyi-move.js';
218
+ import { operation as o217 } from './sensei/memory-get.js';
219
+ import { operation as o218 } from './sensei/memory-set.js';
220
+ import { operation as o219 } from './sensei/merge-rule-set.js';
221
+ import { operation as o220 } from './sensei/messages-move.js';
222
+ import { operation as o221 } from './sensei/messages-reply.js';
223
+ import { operation as o222 } from './sensei/messages-send.js';
224
+ import { operation as o223 } from './sensei/notifications-mark-read.js';
225
+ import { operation as o224 } from './sensei/reels-activity-list.js';
226
+ import { operation as o225 } from './sensei/repository-cards-create.js';
227
+ import { operation as o226 } from './sensei/sessions-assessments-create.js';
228
+ import { operation as o227 } from './sensei/sessions-facts-get.js';
229
+ import { operation as o228 } from './sensei/suggestions-create.js';
230
+ import { operation as o229 } from './sensei/threads-close.js';
231
+ import { operation as o230 } from './sensei/threads-get.js';
232
+ import { operation as o231 } from './sensei/threads-list.js';
233
+ import { operation as o232 } from './sensei/threads-move.js';
234
+ import { operation as o233 } from './sensei/threads-split.js';
235
+ import { operation as o234 } from './sensei/tickets-merge.js';
236
+ import { operation as o235 } from './sensei/watch-reads-finish.js';
237
+ import { operation as o236 } from './sensei/widgets-get.js';
238
+ import { operation as o237 } from './sensei/writing-get.js';
239
+ import { operation as o238 } from './sensei/writing-set.js';
240
+ import { operation as o239 } from './sensei/writing-samples-create.js';
241
+ import { operation as o240 } from './sessions/app-stack-start.js';
242
+ import { operation as o241 } from './sessions/artifacts-create.js';
243
+ import { operation as o242 } from './sessions/artifacts-get.js';
244
+ import { operation as o243 } from './sessions/artifacts-list.js';
245
+ import { operation as o244 } from './sessions/create.js';
246
+ import { operation as o245 } from './sessions/delete.js';
247
+ import { operation as o246 } from './sessions/desktop-control-set.js';
248
+ import { operation as o247 } from './sessions/desktop-get.js';
249
+ import { operation as o248 } from './sessions/desktop-start.js';
250
+ import { operation as o249 } from './sessions/diff-comments-create.js';
251
+ import { operation as o250 } from './sessions/diff-comments-delete.js';
252
+ import { operation as o251 } from './sessions/diff-comments-list.js';
253
+ import { operation as o252 } from './sessions/diff-comments-update.js';
254
+ import { operation as o253 } from './sessions/diff-commits-list.js';
255
+ import { operation as o254 } from './sessions/diff-files-list.js';
256
+ import { operation as o255 } from './sessions/diff-patch-get.js';
257
+ import { operation as o256 } from './sessions/files-get.js';
258
+ import { operation as o257 } from './sessions/files-list.js';
259
+ import { operation as o258 } from './sessions/files-set.js';
260
+ import { operation as o259 } from './sessions/get.js';
261
+ import { operation as o260 } from './sessions/git-state-get.js';
262
+ import { operation as o261 } from './sessions/go-ahead-delete.js';
263
+ import { operation as o262 } from './sessions/go-ahead-set.js';
264
+ import { operation as o263 } from './sessions/jobs-cancel.js';
265
+ import { operation as o264 } from './sessions/jobs-get.js';
266
+ import { operation as o265 } from './sessions/jobs-list.js';
267
+ import { operation as o266 } from './sessions/labels-set.js';
268
+ import { operation as o267 } from './sessions/labels-update.js';
269
+ import { operation as o268 } from './sessions/list.js';
270
+ import { operation as o269 } from './sessions/list--all.js';
271
+ import { operation as o270 } from './sessions/mark-read.js';
272
+ import { operation as o271 } from './sessions/messages-get.js';
273
+ import { operation as o272 } from './sessions/messages-list.js';
274
+ import { operation as o273 } from './sessions/prompt-update.js';
275
+ import { operation as o274 } from './sessions/qa-runs-finish.js';
276
+ import { operation as o275 } from './sessions/qa-runs-fixes-create.js';
277
+ import { operation as o276 } from './sessions/qa-runs-get.js';
278
+ import { operation as o277 } from './sessions/qa-runs-results-create.js';
279
+ import { operation as o278 } from './sessions/qa-runs-start.js';
280
+ import { operation as o279 } from './sessions/qa-runs-stop.js';
281
+ import { operation as o280 } from './sessions/qa-set.js';
282
+ import { operation as o281 } from './sessions/queue-delete.js';
283
+ import { operation as o282 } from './sessions/queue-list.js';
284
+ import { operation as o283 } from './sessions/queue-move.js';
285
+ import { operation as o284 } from './sessions/queue-resume.js';
286
+ import { operation as o285 } from './sessions/queue-send.js';
287
+ import { operation as o286 } from './sessions/queue-steer.js';
288
+ import { operation as o287 } from './sessions/queue-update.js';
289
+ import { operation as o288 } from './sessions/review-set.js';
290
+ import { operation as o289 } from './sessions/runtime-commands-run.js';
291
+ import { operation as o290 } from './sessions/search.js';
292
+ import { operation as o291 } from './sessions/send.js';
293
+ import { operation as o292 } from './sessions/start.js';
294
+ import { operation as o293 } from './sessions/steer.js';
295
+ import { operation as o294 } from './sessions/update.js';
296
+ import { operation as o295 } from './skills/create.js';
297
+ import { operation as o296 } from './skills/create--personal.js';
298
+ import { operation as o297 } from './skills/delete.js';
299
+ import { operation as o298 } from './skills/delete--personal.js';
300
+ import { operation as o299 } from './skills/get.js';
301
+ import { operation as o300 } from './skills/get--personal.js';
302
+ import { operation as o301 } from './skills/list.js';
303
+ import { operation as o302 } from './skills/list--personal.js';
304
+ import { operation as o303 } from './skills/update.js';
305
+ import { operation as o304 } from './skills/update--personal.js';
306
+ import { operation as o305 } from './tasks/create.js';
307
+ import { operation as o306 } from './tasks/create--personal.js';
308
+ import { operation as o307 } from './tasks/delete.js';
309
+ import { operation as o308 } from './tasks/delete--personal.js';
310
+ import { operation as o309 } from './tasks/get.js';
311
+ import { operation as o310 } from './tasks/get--personal.js';
312
+ import { operation as o311 } from './tasks/labels-list.js';
313
+ import { operation as o312 } from './tasks/list.js';
314
+ import { operation as o313 } from './tasks/list--all.js';
315
+ import { operation as o314 } from './tasks/list--personal.js';
316
+ import { operation as o315 } from './tasks/move.js';
317
+ import { operation as o316 } from './tasks/move--personal.js';
318
+ import { operation as o317 } from './tasks/start.js';
319
+ import { operation as o318 } from './tasks/start--personal.js';
320
+ import { operation as o319 } from './tasks/update.js';
321
+ import { operation as o320 } from './tasks/update--personal.js';
322
+ import { operation as o321 } from './user/api-keys-delete.js';
323
+ import { operation as o322 } from './user/profile-get.js';
324
+ import { operation as o323 } from './user/push-devices-create.js';
325
+ import { operation as o324 } from './user/push-devices-delete.js';
326
+ import { operation as o325 } from './user/usage-get.js';
327
+ import { operation as o326 } from './workspaces/artifacts-search.js';
328
+ import { operation as o327 } from './workspaces/credits-get.js';
329
+ import { operation as o328 } from './workspaces/get.js';
330
+ import { operation as o329 } from './workspaces/list.js';
331
+ import { operation as o330 } from './workspaces/members-list.js';
332
+ import { operation as o331 } from './workspaces/members-list--all.js';
333
+ import { operation as o332 } from './workspaces/sandbox-limit-get.js';
334
+ import { operation as o333 } from './workspaces/sandboxes-stop.js';
335
+ import { operation as o334 } from './workspaces/timezone-set.js';
336
+ import { operation as o335 } from './workspaces/usage-breakdown-get.js';
337
+ import { operation as o336 } from './workspaces/usage-get.js';
335
338
  export const operations = [
336
339
  o0,
337
340
  o1,
@@ -667,4 +670,7 @@ export const operations = [
667
670
  o331,
668
671
  o332,
669
672
  o333,
673
+ o334,
674
+ o335,
675
+ o336,
670
676
  ];
@@ -0,0 +1,19 @@
1
+ export const operation = {
2
+ "method": "get",
3
+ "path": "/api/projects/{projectId}/ship-estimates/accuracy",
4
+ "command": [
5
+ "projects",
6
+ "estimate-accuracy",
7
+ "get"
8
+ ],
9
+ "summary": "How far the project's ship-run time estimates were off, over its last 30 runs that became Ready: medianAbsPctError is the median absolute percentage error of the middle estimate against the working time each run took, waits left out (null with no run to judge), and recent lists each run's estimatedMidMs, estimatedHighMs, actualMs, completedAt, the size inputs the estimate was made from and its estimateSource, newest first.",
10
+ "pathParams": [
11
+ "projectId"
12
+ ],
13
+ "query": [],
14
+ "body": null,
15
+ "multipart": null,
16
+ "attachments": false,
17
+ "anonymous": false,
18
+ "agents": "all"
19
+ };
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "merge-agent",
7
7
  "get"
8
8
  ],
9
- "summary": "Read the project's Merge agent: its mode (train or batch), the base and whether it has GitHub's merge queue, the go-ahead pull requests waiting for the next run with their QA and GitHub's review decision now, the Batch the queue is split by (its CI, review, QA, members and ejections), and the open run and earlier runs. --live false reads Kosuke's own data only: no GitHub call, and GitHub's facts (each waiting pull request's head and review decision, the Batch pull request's review, the merge queue) are null.",
9
+ "summary": "Read the project's Merge agent: its mode (train or batch), the base and whether it has GitHub's merge queue, the model the next run starts on (null: the Default Model), the go-ahead pull requests waiting for the next run with their QA and GitHub's review decision now, the Batch the queue is split by (its CI, review, QA, members and ejections), and the open run and the last ten earlier runs, each with the model and effort its session runs on. `kosuke projects merge-agent runs list` lists every run. --live false reads Kosuke's own data only: no GitHub call, and GitHub's facts (each waiting pull request's head and review decision, the Batch pull request's review, the merge queue) are null.",
10
10
  "pathParams": [
11
11
  "projectId"
12
12
  ],
@@ -0,0 +1,30 @@
1
+ export const operation = {
2
+ "method": "put",
3
+ "path": "/api/projects/{projectId}/merge-agent/model",
4
+ "command": [
5
+ "projects",
6
+ "merge-agent",
7
+ "model",
8
+ "set"
9
+ ],
10
+ "summary": "Pick the model the Merge agent's next run (train or Batch) starts on, as an encoded id such as anthropic:opus__high, or default for the Default Model. The open run keeps the model it started on.",
11
+ "pathParams": [
12
+ "projectId"
13
+ ],
14
+ "query": [],
15
+ "body": {
16
+ "fields": [
17
+ {
18
+ "name": "model",
19
+ "flag": "model",
20
+ "kind": "string",
21
+ "required": true
22
+ }
23
+ ],
24
+ "required": true
25
+ },
26
+ "multipart": null,
27
+ "attachments": false,
28
+ "anonymous": false,
29
+ "agents": "all"
30
+ };
@@ -0,0 +1,35 @@
1
+ export const operation = {
2
+ "method": "get",
3
+ "path": "/api/projects/{projectId}/merge-agent/runs",
4
+ "command": [
5
+ "projects",
6
+ "merge-agent",
7
+ "runs",
8
+ "list"
9
+ ],
10
+ "summary": "List every Merge agent run of the project, Batches and train runs, newest first, a page at a time: each one's number, mode, session id (for `kosuke sessions get`), pull request, state, finish reason and dates. Pass nextCursor back as cursor for the older runs. The runs' sessions stay out of the session lists.",
11
+ "pathParams": [
12
+ "projectId"
13
+ ],
14
+ "query": [
15
+ {
16
+ "name": "limit",
17
+ "flag": "limit",
18
+ "kind": "integer",
19
+ "required": false,
20
+ "description": "At most this many runs. Default 25, at most 100."
21
+ },
22
+ {
23
+ "name": "cursor",
24
+ "flag": "cursor",
25
+ "kind": "string",
26
+ "required": false,
27
+ "description": "The nextCursor of the previous page, for the older runs after it."
28
+ }
29
+ ],
30
+ "body": null,
31
+ "multipart": null,
32
+ "attachments": false,
33
+ "anonymous": false,
34
+ "agents": "all"
35
+ };
@@ -34,6 +34,13 @@ export const operation = {
34
34
  "required": false,
35
35
  "description": "Shell command that runs inside the sandbox once services are healthy. Typically authenticates and curls heavy routes to warm up compilation cache."
36
36
  },
37
+ {
38
+ "name": "rerunSetupOnCheckoutMove",
39
+ "flag": "rerun-setup-on-checkout-move",
40
+ "kind": "boolean",
41
+ "required": false,
42
+ "description": "When a session starts on a warm pool sandbox at a newer commit, setup is skipped if the newer commit changed no lockfile, dependency manifest, toolchain version file, env file, migration, seed, schema file or `file:` dependency. true reruns setup on every such start, for a setupCommand that also generates code from the source (codegen, builds). Omitted means false."
43
+ },
37
44
  {
38
45
  "name": "agentWorkDir",
39
46
  "flag": "agent-work-dir",
@@ -34,6 +34,13 @@ export const operation = {
34
34
  "required": false,
35
35
  "description": "Shell command that runs inside the sandbox once services are healthy. Typically authenticates and curls heavy routes to warm up compilation cache."
36
36
  },
37
+ {
38
+ "name": "rerunSetupOnCheckoutMove",
39
+ "flag": "rerun-setup-on-checkout-move",
40
+ "kind": "boolean",
41
+ "required": false,
42
+ "description": "When a session starts on a warm pool sandbox at a newer commit, setup is skipped if the newer commit changed no lockfile, dependency manifest, toolchain version file, env file, migration, seed, schema file or `file:` dependency. true reruns setup on every such start, for a setupCommand that also generates code from the source (codegen, builds). Omitted means false."
43
+ },
37
44
  {
38
45
  "name": "agentWorkDir",
39
46
  "flag": "agent-work-dir",
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "messages",
7
7
  "list"
8
8
  ],
9
- "summary": "Read a chat session conversation oldest first: the whole of it, its last limit messages, the page before an olderCursor, or everything from one. messageCount counts the whole conversation. Blocks come summarized: a tool call's input keeps its short fields (inputCompacted), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted). `kosuke sessions messages get` reads one message whole.",
9
+ "summary": "Read a chat session conversation oldest first: the whole of it, its last limit messages, the page before an olderCursor, or everything from one; newestCursor is what a poll passes as from to read only what changed since. messageCount counts the whole conversation. Blocks come summarized: a tool call's input keeps its short fields (inputCompacted), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted). `kosuke sessions messages get` reads one message whole.",
10
10
  "pathParams": [
11
11
  "projectId",
12
12
  "sessionId"
@@ -31,7 +31,7 @@ export const operation = {
31
31
  "flag": "from",
32
32
  "kind": "string",
33
33
  "required": false,
34
- "description": "An olderCursor from an earlier read: the oldest message of that read and every message after it."
34
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it."
35
35
  }
36
36
  ],
37
37
  "body": null,
@@ -105,6 +105,13 @@ export const operation = {
105
105
  "desc"
106
106
  ]
107
107
  },
108
+ {
109
+ "name": "needsYou",
110
+ "flag": "needs-you",
111
+ "kind": "boolean",
112
+ "required": false,
113
+ "description": "Only tasks whose Chat Session needs the viewer."
114
+ },
108
115
  {
109
116
  "name": "includePrompt",
110
117
  "flag": "include-prompt",
@@ -104,6 +104,13 @@ export const operation = {
104
104
  "desc"
105
105
  ]
106
106
  },
107
+ {
108
+ "name": "needsYou",
109
+ "flag": "needs-you",
110
+ "kind": "boolean",
111
+ "required": false,
112
+ "description": "Only tasks whose Chat Session needs the viewer."
113
+ },
107
114
  {
108
115
  "name": "includePrompt",
109
116
  "flag": "include-prompt",
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "profile",
7
7
  "get"
8
8
  ],
9
- "summary": "Read your account: id, email, name, onboarding state, default model and FYI digest interval.",
9
+ "summary": "Read your account: id, email, name, onboarding state, default model, FYI digest interval and UI language.",
10
10
  "pathParams": [],
11
11
  "query": [],
12
12
  "body": null,
package/openapi.json CHANGED
@@ -8269,6 +8269,16 @@
8269
8269
  "enum": ["asc", "desc"]
8270
8270
  }
8271
8271
  },
8272
+ {
8273
+ "name": "needsYou",
8274
+ "in": "query",
8275
+ "required": false,
8276
+ "description": "Only tasks whose Chat Session needs the viewer.",
8277
+ "schema": {
8278
+ "description": "Only tasks whose Chat Session needs the viewer.",
8279
+ "type": "boolean"
8280
+ }
8281
+ },
8272
8282
  {
8273
8283
  "name": "includePrompt",
8274
8284
  "in": "query",
@@ -13051,7 +13061,7 @@
13051
13061
  "/api/projects/{projectId}/chat-sessions/{sessionId}/messages": {
13052
13062
  "get": {
13053
13063
  "operationId": "sessionsMessagesList",
13054
- "summary": "Read a chat session conversation oldest first: the whole of it, its last limit messages, the page before an olderCursor, or everything from one. messageCount counts the whole conversation. Blocks come summarized: a tool call's input keeps its short fields (inputCompacted), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted). `kosuke sessions messages get` reads one message whole.",
13064
+ "summary": "Read a chat session conversation oldest first: the whole of it, its last limit messages, the page before an olderCursor, or everything from one; newestCursor is what a poll passes as from to read only what changed since. messageCount counts the whole conversation. Blocks come summarized: a tool call's input keeps its short fields (inputCompacted), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted). `kosuke sessions messages get` reads one message whole.",
13055
13065
  "tags": ["sessions"],
13056
13066
  "x-kosuke-command": ["sessions", "messages", "list"],
13057
13067
  "x-kosuke-sandbox-token": true,
@@ -13104,9 +13114,9 @@
13104
13114
  "name": "from",
13105
13115
  "in": "query",
13106
13116
  "required": false,
13107
- "description": "An olderCursor from an earlier read: the oldest message of that read and every message after it.",
13117
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it.",
13108
13118
  "schema": {
13109
- "description": "An olderCursor from an earlier read: the oldest message of that read and every message after it.",
13119
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it.",
13110
13120
  "type": "string"
13111
13121
  }
13112
13122
  }
@@ -16292,7 +16302,7 @@
16292
16302
  "/api/projects/{projectId}/deploy-messages": {
16293
16303
  "get": {
16294
16304
  "operationId": "deploysMessagesList",
16295
- "summary": "Read the deploy conversation and the current deploy status. Blocks come as stored. In a message recorded since previews were stored, a tool call's input keeps its short fields (inputCompacted when cut), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted when cut). `kosuke deploys messages get` reads one message whole.",
16305
+ "summary": "Read the deploy conversation, from the user's latest deploy on, oldest first, and the current deploy status: the whole of it, its last limit messages, the page before an olderCursor, or everything from one; newestCursor is what a poll passes as from to read only what changed since. messageCount counts the whole conversation. Blocks come as stored. In a message recorded since previews were stored, a tool call's input keeps its short fields (inputCompacted when cut), a result over 500 characters its first 500 (resultCompacted), and a subagent its last output entry with outputCount (outputOmitted when cut). `kosuke deploys messages get` reads one message whole.",
16296
16306
  "tags": ["deploys"],
16297
16307
  "x-kosuke-command": ["deploys", "messages", "list"],
16298
16308
  "x-kosuke-sandbox-token": true,
@@ -16308,6 +16318,38 @@
16308
16318
  "format": "uuid",
16309
16319
  "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)$"
16310
16320
  }
16321
+ },
16322
+ {
16323
+ "name": "limit",
16324
+ "in": "query",
16325
+ "required": false,
16326
+ "description": "Only the newest messages, up to this many. With from, the oldest this many from that message on.",
16327
+ "schema": {
16328
+ "description": "Only the newest messages, up to this many. With from, the oldest this many from that message on.",
16329
+ "type": "integer",
16330
+ "minimum": 1,
16331
+ "maximum": 500
16332
+ }
16333
+ },
16334
+ {
16335
+ "name": "before",
16336
+ "in": "query",
16337
+ "required": false,
16338
+ "description": "An olderCursor from an earlier read: only the messages older than the oldest message of that read.",
16339
+ "schema": {
16340
+ "description": "An olderCursor from an earlier read: only the messages older than the oldest message of that read.",
16341
+ "type": "string"
16342
+ }
16343
+ },
16344
+ {
16345
+ "name": "from",
16346
+ "in": "query",
16347
+ "required": false,
16348
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it.",
16349
+ "schema": {
16350
+ "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it.",
16351
+ "type": "string"
16352
+ }
16311
16353
  }
16312
16354
  ],
16313
16355
  "responses": {
@@ -17161,7 +17203,7 @@
17161
17203
  "/api/projects/{projectId}/merge-agent": {
17162
17204
  "get": {
17163
17205
  "operationId": "projectsMergeAgentGet",
17164
- "summary": "Read the project's Merge agent: its mode (train or batch), the base and whether it has GitHub's merge queue, the go-ahead pull requests waiting for the next run with their QA and GitHub's review decision now, the Batch the queue is split by (its CI, review, QA, members and ejections), and the open run and earlier runs. --live false reads Kosuke's own data only: no GitHub call, and GitHub's facts (each waiting pull request's head and review decision, the Batch pull request's review, the merge queue) are null.",
17206
+ "summary": "Read the project's Merge agent: its mode (train or batch), the base and whether it has GitHub's merge queue, the model the next run starts on (null: the Default Model), the go-ahead pull requests waiting for the next run with their QA and GitHub's review decision now, the Batch the queue is split by (its CI, review, QA, members and ejections), and the open run and the last ten earlier runs, each with the model and effort its session runs on. `kosuke projects merge-agent runs list` lists every run. --live false reads Kosuke's own data only: no GitHub call, and GitHub's facts (each waiting pull request's head and review decision, the Batch pull request's review, the merge queue) are null.",
17165
17207
  "tags": ["projects"],
17166
17208
  "x-kosuke-command": ["projects", "merge-agent", "get"],
17167
17209
  "x-kosuke-sandbox-token": true,
@@ -17310,6 +17352,156 @@
17310
17352
  }
17311
17353
  }
17312
17354
  },
17355
+ "/api/projects/{projectId}/merge-agent/model": {
17356
+ "put": {
17357
+ "operationId": "projectsMergeAgentModelSet",
17358
+ "summary": "Pick the model the Merge agent's next run (train or Batch) starts on, as an encoded id such as anthropic:opus__high, or default for the Default Model. The open run keeps the model it started on.",
17359
+ "tags": ["projects"],
17360
+ "x-kosuke-command": ["projects", "merge-agent", "model", "set"],
17361
+ "x-kosuke-sandbox-token": true,
17362
+ "x-kosuke-cron-token": true,
17363
+ "x-kosuke-sensei-token": true,
17364
+ "parameters": [
17365
+ {
17366
+ "name": "projectId",
17367
+ "in": "path",
17368
+ "required": true,
17369
+ "schema": {
17370
+ "type": "string",
17371
+ "format": "uuid",
17372
+ "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)$"
17373
+ }
17374
+ }
17375
+ ],
17376
+ "requestBody": {
17377
+ "required": true,
17378
+ "content": {
17379
+ "application/json": {
17380
+ "schema": {
17381
+ "type": "object",
17382
+ "properties": {
17383
+ "model": {
17384
+ "type": "string",
17385
+ "minLength": 1
17386
+ }
17387
+ },
17388
+ "required": ["model"]
17389
+ }
17390
+ }
17391
+ }
17392
+ },
17393
+ "responses": {
17394
+ "2XX": {
17395
+ "description": "Success envelope",
17396
+ "content": {
17397
+ "application/json": {
17398
+ "schema": {
17399
+ "$ref": "#/components/schemas/ApiSuccess"
17400
+ }
17401
+ }
17402
+ }
17403
+ },
17404
+ "4XX": {
17405
+ "description": "Error envelope",
17406
+ "content": {
17407
+ "application/json": {
17408
+ "schema": {
17409
+ "$ref": "#/components/schemas/ApiError"
17410
+ }
17411
+ }
17412
+ }
17413
+ },
17414
+ "5XX": {
17415
+ "description": "Error envelope",
17416
+ "content": {
17417
+ "application/json": {
17418
+ "schema": {
17419
+ "$ref": "#/components/schemas/ApiError"
17420
+ }
17421
+ }
17422
+ }
17423
+ }
17424
+ }
17425
+ }
17426
+ },
17427
+ "/api/projects/{projectId}/merge-agent/runs": {
17428
+ "get": {
17429
+ "operationId": "projectsMergeAgentRunsList",
17430
+ "summary": "List every Merge agent run of the project, Batches and train runs, newest first, a page at a time: each one's number, mode, session id (for `kosuke sessions get`), pull request, state, finish reason and dates. Pass nextCursor back as cursor for the older runs. The runs' sessions stay out of the session lists.",
17431
+ "tags": ["projects"],
17432
+ "x-kosuke-command": ["projects", "merge-agent", "runs", "list"],
17433
+ "x-kosuke-sandbox-token": true,
17434
+ "x-kosuke-cron-token": true,
17435
+ "x-kosuke-sensei-token": true,
17436
+ "parameters": [
17437
+ {
17438
+ "name": "projectId",
17439
+ "in": "path",
17440
+ "required": true,
17441
+ "schema": {
17442
+ "type": "string",
17443
+ "format": "uuid",
17444
+ "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)$"
17445
+ }
17446
+ },
17447
+ {
17448
+ "name": "limit",
17449
+ "in": "query",
17450
+ "required": false,
17451
+ "description": "At most this many runs. Default 25, at most 100.",
17452
+ "schema": {
17453
+ "description": "At most this many runs. Default 25, at most 100.",
17454
+ "type": "integer",
17455
+ "minimum": 1,
17456
+ "maximum": 100
17457
+ }
17458
+ },
17459
+ {
17460
+ "name": "cursor",
17461
+ "in": "query",
17462
+ "required": false,
17463
+ "description": "The nextCursor of the previous page, for the older runs after it.",
17464
+ "schema": {
17465
+ "description": "The nextCursor of the previous page, for the older runs after it.",
17466
+ "type": "string",
17467
+ "pattern": "^\\d{1,10}$"
17468
+ }
17469
+ }
17470
+ ],
17471
+ "responses": {
17472
+ "2XX": {
17473
+ "description": "Success envelope",
17474
+ "content": {
17475
+ "application/json": {
17476
+ "schema": {
17477
+ "$ref": "#/components/schemas/ApiSuccess"
17478
+ }
17479
+ }
17480
+ }
17481
+ },
17482
+ "4XX": {
17483
+ "description": "Error envelope",
17484
+ "content": {
17485
+ "application/json": {
17486
+ "schema": {
17487
+ "$ref": "#/components/schemas/ApiError"
17488
+ }
17489
+ }
17490
+ }
17491
+ },
17492
+ "5XX": {
17493
+ "description": "Error envelope",
17494
+ "content": {
17495
+ "application/json": {
17496
+ "schema": {
17497
+ "$ref": "#/components/schemas/ApiError"
17498
+ }
17499
+ }
17500
+ }
17501
+ }
17502
+ }
17503
+ }
17504
+ },
17313
17505
  "/api/projects/{projectId}/merge-agent/syncs": {
17314
17506
  "post": {
17315
17507
  "operationId": "projectsMergeAgentSync",
@@ -17986,6 +18178,10 @@
17986
18178
  }
17987
18179
  ]
17988
18180
  },
18181
+ "rerunSetupOnCheckoutMove": {
18182
+ "description": "When a session starts on a warm pool sandbox at a newer commit, setup is skipped if the newer commit changed no lockfile, dependency manifest, toolchain version file, env file, migration, seed, schema file or `file:` dependency. true reruns setup on every such start, for a setupCommand that also generates code from the source (codegen, builds). Omitted means false.",
18183
+ "type": "boolean"
18184
+ },
17989
18185
  "agentWorkDir": {
17990
18186
  "description": "Relative path from the repository root where the AI agent operates. Useful for monorepos where the agent should work only in a subdirectory (e.g. \"packages/frontend\"). Defaults to repository root.",
17991
18187
  "anyOf": [
@@ -19027,6 +19223,10 @@
19027
19223
  }
19028
19224
  ]
19029
19225
  },
19226
+ "rerunSetupOnCheckoutMove": {
19227
+ "description": "When a session starts on a warm pool sandbox at a newer commit, setup is skipped if the newer commit changed no lockfile, dependency manifest, toolchain version file, env file, migration, seed, schema file or `file:` dependency. true reruns setup on every such start, for a setupCommand that also generates code from the source (codegen, builds). Omitted means false.",
19228
+ "type": "boolean"
19229
+ },
19030
19230
  "agentWorkDir": {
19031
19231
  "description": "Relative path from the repository root where the AI agent operates. Useful for monorepos where the agent should work only in a subdirectory (e.g. \"packages/frontend\"). Defaults to repository root.",
19032
19232
  "anyOf": [
@@ -19807,6 +20007,61 @@
19807
20007
  }
19808
20008
  }
19809
20009
  },
20010
+ "/api/projects/{projectId}/ship-estimates/accuracy": {
20011
+ "get": {
20012
+ "operationId": "projectsEstimateAccuracyGet",
20013
+ "summary": "How far the project's ship-run time estimates were off, over its last 30 runs that became Ready: medianAbsPctError is the median absolute percentage error of the middle estimate against the working time each run took, waits left out (null with no run to judge), and recent lists each run's estimatedMidMs, estimatedHighMs, actualMs, completedAt, the size inputs the estimate was made from and its estimateSource, newest first.",
20014
+ "tags": ["projects"],
20015
+ "x-kosuke-command": ["projects", "estimate-accuracy", "get"],
20016
+ "x-kosuke-sandbox-token": true,
20017
+ "x-kosuke-cron-token": true,
20018
+ "x-kosuke-sensei-token": true,
20019
+ "parameters": [
20020
+ {
20021
+ "name": "projectId",
20022
+ "in": "path",
20023
+ "required": true,
20024
+ "schema": {
20025
+ "type": "string",
20026
+ "format": "uuid",
20027
+ "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)$"
20028
+ }
20029
+ }
20030
+ ],
20031
+ "responses": {
20032
+ "2XX": {
20033
+ "description": "Success envelope",
20034
+ "content": {
20035
+ "application/json": {
20036
+ "schema": {
20037
+ "$ref": "#/components/schemas/ApiSuccess"
20038
+ }
20039
+ }
20040
+ }
20041
+ },
20042
+ "4XX": {
20043
+ "description": "Error envelope",
20044
+ "content": {
20045
+ "application/json": {
20046
+ "schema": {
20047
+ "$ref": "#/components/schemas/ApiError"
20048
+ }
20049
+ }
20050
+ }
20051
+ },
20052
+ "5XX": {
20053
+ "description": "Error envelope",
20054
+ "content": {
20055
+ "application/json": {
20056
+ "schema": {
20057
+ "$ref": "#/components/schemas/ApiError"
20058
+ }
20059
+ }
20060
+ }
20061
+ }
20062
+ }
20063
+ }
20064
+ },
19810
20065
  "/api/projects/{projectId}/skills": {
19811
20066
  "get": {
19812
20067
  "operationId": "projectsSkillsList",
@@ -25072,6 +25327,16 @@
25072
25327
  "enum": ["asc", "desc"]
25073
25328
  }
25074
25329
  },
25330
+ {
25331
+ "name": "needsYou",
25332
+ "in": "query",
25333
+ "required": false,
25334
+ "description": "Only tasks whose Chat Session needs the viewer.",
25335
+ "schema": {
25336
+ "description": "Only tasks whose Chat Session needs the viewer.",
25337
+ "type": "boolean"
25338
+ }
25339
+ },
25075
25340
  {
25076
25341
  "name": "includePrompt",
25077
25342
  "in": "query",
@@ -27075,7 +27340,7 @@
27075
27340
  "/api/user/profile": {
27076
27341
  "get": {
27077
27342
  "operationId": "userProfileGet",
27078
- "summary": "Read your account: id, email, name, onboarding state, default model and FYI digest interval.",
27343
+ "summary": "Read your account: id, email, name, onboarding state, default model, FYI digest interval and UI language.",
27079
27344
  "tags": ["user"],
27080
27345
  "x-kosuke-command": ["user", "profile", "get"],
27081
27346
  "x-kosuke-sandbox-token": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/kosuke",
3
- "version": "1.0.36",
3
+ "version": "1.0.38",
4
4
  "description": "Kosuke platform CLI. The client customers install to drive app.kosuke.ai from their own machine.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -40,10 +40,11 @@
40
40
  "vitest": "^4.1.12"
41
41
  },
42
42
  "kosukeRelease": {
43
- "sourceCommit": "cb51bc11871728ee3f28d65bf3a04c1fe1f6de53",
44
- "sourceIdentity": "c19893ccb7983c9906e001070169c72fe8214a961aa02880fea7326c73197315",
43
+ "sourceCommit": "2c8111b7cac912026e52e635ee520f948e318d68",
44
+ "sourceIdentity": "06ad989cd7693ba919730ee92d6477439f82938948d7504a5be88535186a7956",
45
45
  "fragments": [
46
- "merge-agent-batch-split-bprvoz.json"
46
+ "user-profile-locale-9j1ckv.json",
47
+ "tray-needs-you-grouped-5o4pjn.json"
47
48
  ]
48
49
  }
49
50
  }