@kosuke-ai/kosuke 1.0.26 → 1.0.28
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 +8 -0
- package/dist/generated/commands/devices/list.js +1 -1
- package/dist/generated/commands/devices/locks-delete.js +1 -1
- package/dist/generated/commands/devices/requests-create.js +2 -2
- package/dist/generated/commands/index.js +108 -110
- package/dist/generated/commands/sensei/cards-set.js +3 -3
- package/dist/runtime/aliases.js +0 -1
- package/openapi.json +76 -71
- package/package.json +4 -8
- package/dist/generated/commands/sensei/review-context-get.js +0 -31
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.28
|
|
4
|
+
|
|
5
|
+
- Remove `kosuke sensei review context get`: read a pull request's reviews, checks and changed files with `gh`. `kosuke sensei cards set` now takes at most two actions, one primary and one destructive in the negative button's place.
|
|
6
|
+
|
|
7
|
+
## 1.0.27
|
|
8
|
+
|
|
9
|
+
- `kosuke devices list` and `kosuke devices requests create` say that a workspace device needs no approval: a Chat Session uses it at once with --device-id.
|
|
10
|
+
|
|
3
11
|
## 1.0.26
|
|
4
12
|
|
|
5
13
|
- Reels and the watch show open cards newest first by when they last changed; the `sensei reels ranks list` command is removed.
|
|
@@ -5,7 +5,7 @@ export const operation = {
|
|
|
5
5
|
"devices",
|
|
6
6
|
"list"
|
|
7
7
|
],
|
|
8
|
-
"summary": "From a Chat Session: the devices it may
|
|
8
|
+
"summary": "From a Chat Session: the devices it may use, the workspace's devices and the session member's own Macs, each with its id, kind, whether it is online, the tools it offers, its macOS grants (grants.systemEvents: menu bar icons open with `osascript` through System Events), this session's access: none, pending or approved (a workspace device is always approved: it needs no request), and occupied with occupiedBy (session or sensei) when someone else uses it now. Pick an online device with the tools the test needs: a workspace device first, and the member's own Mac only when no workspace device fits, whatever the names or past approvals. Of those, pick a free one, and ask for an occupied one only when no free device fits. Use a workspace device at once with --device-id; request a personal Mac with `kosuke devices requests create` before any mac command on it. Use a device only when the test truly needs a real Mac. One session at a time uses a device: on MAC_BUSY, wait in its line with `kosuke devices locks create` rather than give up or call again, and let it go with `kosuke devices locks delete` once done.",
|
|
9
9
|
"pathParams": [],
|
|
10
10
|
"query": [],
|
|
11
11
|
"body": null,
|
|
@@ -6,7 +6,7 @@ export const operation = {
|
|
|
6
6
|
"locks",
|
|
7
7
|
"delete"
|
|
8
8
|
],
|
|
9
|
-
"summary": "From a Chat Session: let a device go as soon as you are done with it, after QA say, rather than at the end of your Turn, and leave its line if you wait in it. The next session in line gets it at once. Your
|
|
9
|
+
"summary": "From a Chat Session: let a device go as soon as you are done with it, after QA say, rather than at the end of your Turn, and leave its line if you wait in it. The next session in line gets it at once. Your access stays: a later mac command or devices locks create takes the device again. Answers released and leftQueue.",
|
|
10
10
|
"pathParams": [
|
|
11
11
|
"deviceId"
|
|
12
12
|
],
|
|
@@ -6,7 +6,7 @@ export const operation = {
|
|
|
6
6
|
"requests",
|
|
7
7
|
"create"
|
|
8
8
|
],
|
|
9
|
-
"summary": "From a Chat Session: ask to use
|
|
9
|
+
"summary": "From a Chat Session: ask to use a personal Mac from devices list, with the reason its owner reads on a card in this session's chat. A workspace device needs no request: it answers approved at once with grantId null, and no one is asked. The owner approves a personal Mac once per session: after that, asking again answers approved at once. Answers status pending or approved. Check devices list again for the answer; it expires after 30 minutes without an answer. While it is pending, go on with other work; when it is declined or expires, go on without it and say so. Once approved it stays approved for the rest of the session: pass --device-id on every mac command. One session at a time uses the device: on MAC_BUSY, wait with devices locks create, and run devices locks delete once done.",
|
|
10
10
|
"pathParams": [
|
|
11
11
|
"deviceId"
|
|
12
12
|
],
|
|
@@ -18,7 +18,7 @@ export const operation = {
|
|
|
18
18
|
"flag": "reason",
|
|
19
19
|
"kind": "string",
|
|
20
20
|
"required": true,
|
|
21
|
-
"description": "One or two sentences for the
|
|
21
|
+
"description": "One or two sentences for the Mac’s owner: what you test on it, and why a real Mac."
|
|
22
22
|
}
|
|
23
23
|
],
|
|
24
24
|
"required": true
|
|
@@ -220,115 +220,114 @@ import { operation as o218 } from './sensei/messages-send.js';
|
|
|
220
220
|
import { operation as o219 } from './sensei/notifications-mark-read.js';
|
|
221
221
|
import { operation as o220 } from './sensei/reels-activity-list.js';
|
|
222
222
|
import { operation as o221 } from './sensei/repository-cards-create.js';
|
|
223
|
-
import { operation as o222 } from './sensei/
|
|
224
|
-
import { operation as o223 } from './sensei/sessions-
|
|
225
|
-
import { operation as o224 } from './sensei/
|
|
226
|
-
import { operation as o225 } from './sensei/
|
|
227
|
-
import { operation as o226 } from './sensei/threads-
|
|
228
|
-
import { operation as o227 } from './sensei/threads-
|
|
229
|
-
import { operation as o228 } from './sensei/threads-
|
|
230
|
-
import { operation as o229 } from './sensei/threads-
|
|
231
|
-
import { operation as o230 } from './sensei/
|
|
232
|
-
import { operation as o231 } from './sensei/
|
|
233
|
-
import { operation as o232 } from './sensei/
|
|
234
|
-
import { operation as o233 } from './
|
|
235
|
-
import { operation as o234 } from './sessions/
|
|
236
|
-
import { operation as o235 } from './sessions/artifacts-
|
|
237
|
-
import { operation as o236 } from './sessions/artifacts-
|
|
238
|
-
import { operation as o237 } from './sessions/
|
|
239
|
-
import { operation as o238 } from './sessions/
|
|
240
|
-
import { operation as o239 } from './sessions/
|
|
241
|
-
import { operation as o240 } from './sessions/desktop-
|
|
242
|
-
import { operation as o241 } from './sessions/desktop-
|
|
243
|
-
import { operation as o242 } from './sessions/
|
|
244
|
-
import { operation as o243 } from './sessions/diff-comments-
|
|
245
|
-
import { operation as o244 } from './sessions/diff-comments-
|
|
246
|
-
import { operation as o245 } from './sessions/diff-comments-
|
|
247
|
-
import { operation as o246 } from './sessions/diff-
|
|
248
|
-
import { operation as o247 } from './sessions/diff-
|
|
249
|
-
import { operation as o248 } from './sessions/diff-
|
|
250
|
-
import { operation as o249 } from './sessions/
|
|
251
|
-
import { operation as o250 } from './sessions/files-
|
|
252
|
-
import { operation as o251 } from './sessions/files-
|
|
253
|
-
import { operation as o252 } from './sessions/
|
|
254
|
-
import { operation as o253 } from './sessions/get.js';
|
|
255
|
-
import { operation as o254 } from './sessions/
|
|
256
|
-
import { operation as o255 } from './sessions/go-ahead-
|
|
257
|
-
import { operation as o256 } from './sessions/
|
|
258
|
-
import { operation as o257 } from './sessions/jobs-
|
|
259
|
-
import { operation as o258 } from './sessions/jobs-
|
|
260
|
-
import { operation as o259 } from './sessions/
|
|
261
|
-
import { operation as o260 } from './sessions/labels-
|
|
262
|
-
import { operation as o261 } from './sessions/
|
|
263
|
-
import { operation as o262 } from './sessions/list.js';
|
|
264
|
-
import { operation as o263 } from './sessions/
|
|
265
|
-
import { operation as o264 } from './sessions/
|
|
266
|
-
import { operation as o265 } from './sessions/messages-
|
|
267
|
-
import { operation as o266 } from './sessions/
|
|
268
|
-
import { operation as o267 } from './sessions/
|
|
269
|
-
import { operation as o268 } from './sessions/qa-runs-
|
|
270
|
-
import { operation as o269 } from './sessions/qa-runs-
|
|
271
|
-
import { operation as o270 } from './sessions/qa-runs-
|
|
272
|
-
import { operation as o271 } from './sessions/qa-runs-
|
|
273
|
-
import { operation as o272 } from './sessions/qa-runs-
|
|
274
|
-
import { operation as o273 } from './sessions/qa-
|
|
275
|
-
import { operation as o274 } from './sessions/
|
|
276
|
-
import { operation as o275 } from './sessions/queue-
|
|
277
|
-
import { operation as o276 } from './sessions/queue-
|
|
278
|
-
import { operation as o277 } from './sessions/queue-
|
|
279
|
-
import { operation as o278 } from './sessions/queue-
|
|
280
|
-
import { operation as o279 } from './sessions/queue-
|
|
281
|
-
import { operation as o280 } from './sessions/queue-
|
|
282
|
-
import { operation as o281 } from './sessions/
|
|
283
|
-
import { operation as o282 } from './sessions/
|
|
284
|
-
import { operation as o283 } from './sessions/
|
|
285
|
-
import { operation as o284 } from './sessions/
|
|
286
|
-
import { operation as o285 } from './sessions/
|
|
287
|
-
import { operation as o286 } from './sessions/
|
|
288
|
-
import { operation as o287 } from './sessions/
|
|
289
|
-
import { operation as o288 } from './
|
|
290
|
-
import { operation as o289 } from './skills/create.js';
|
|
291
|
-
import { operation as o290 } from './skills/
|
|
292
|
-
import { operation as o291 } from './skills/delete.js';
|
|
293
|
-
import { operation as o292 } from './skills/
|
|
294
|
-
import { operation as o293 } from './skills/get.js';
|
|
295
|
-
import { operation as o294 } from './skills/
|
|
296
|
-
import { operation as o295 } from './skills/list.js';
|
|
297
|
-
import { operation as o296 } from './skills/
|
|
298
|
-
import { operation as o297 } from './skills/update.js';
|
|
299
|
-
import { operation as o298 } from './
|
|
300
|
-
import { operation as o299 } from './tasks/create.js';
|
|
301
|
-
import { operation as o300 } from './tasks/
|
|
302
|
-
import { operation as o301 } from './tasks/delete.js';
|
|
303
|
-
import { operation as o302 } from './tasks/
|
|
304
|
-
import { operation as o303 } from './tasks/get.js';
|
|
305
|
-
import { operation as o304 } from './tasks/
|
|
306
|
-
import { operation as o305 } from './tasks/
|
|
307
|
-
import { operation as o306 } from './tasks/list.js';
|
|
308
|
-
import { operation as o307 } from './tasks/list--
|
|
309
|
-
import { operation as o308 } from './tasks/
|
|
310
|
-
import { operation as o309 } from './tasks/move.js';
|
|
311
|
-
import { operation as o310 } from './tasks/
|
|
312
|
-
import { operation as o311 } from './tasks/start.js';
|
|
313
|
-
import { operation as o312 } from './tasks/
|
|
314
|
-
import { operation as o313 } from './tasks/update.js';
|
|
315
|
-
import { operation as o314 } from './
|
|
316
|
-
import { operation as o315 } from './user/
|
|
317
|
-
import { operation as o316 } from './user/
|
|
318
|
-
import { operation as o317 } from './user/push-devices-
|
|
319
|
-
import { operation as o318 } from './user/
|
|
320
|
-
import { operation as o319 } from './
|
|
321
|
-
import { operation as o320 } from './workspaces/
|
|
322
|
-
import { operation as o321 } from './workspaces/
|
|
323
|
-
import { operation as o322 } from './workspaces/
|
|
324
|
-
import { operation as o323 } from './workspaces/list.js';
|
|
325
|
-
import { operation as o324 } from './workspaces/members-list.js';
|
|
326
|
-
import { operation as o325 } from './workspaces/
|
|
327
|
-
import { operation as o326 } from './workspaces/
|
|
328
|
-
import { operation as o327 } from './workspaces/
|
|
329
|
-
import { operation as o328 } from './workspaces/
|
|
330
|
-
import { operation as o329 } from './workspaces/usage-
|
|
331
|
-
import { operation as o330 } from './workspaces/usage-get.js';
|
|
223
|
+
import { operation as o222 } from './sensei/sessions-assessments-create.js';
|
|
224
|
+
import { operation as o223 } from './sensei/sessions-facts-get.js';
|
|
225
|
+
import { operation as o224 } from './sensei/suggestions-create.js';
|
|
226
|
+
import { operation as o225 } from './sensei/threads-close.js';
|
|
227
|
+
import { operation as o226 } from './sensei/threads-get.js';
|
|
228
|
+
import { operation as o227 } from './sensei/threads-list.js';
|
|
229
|
+
import { operation as o228 } from './sensei/threads-move.js';
|
|
230
|
+
import { operation as o229 } from './sensei/threads-split.js';
|
|
231
|
+
import { operation as o230 } from './sensei/tickets-merge.js';
|
|
232
|
+
import { operation as o231 } from './sensei/watch-reads-finish.js';
|
|
233
|
+
import { operation as o232 } from './sensei/widgets-get.js';
|
|
234
|
+
import { operation as o233 } from './sessions/app-stack-start.js';
|
|
235
|
+
import { operation as o234 } from './sessions/artifacts-create.js';
|
|
236
|
+
import { operation as o235 } from './sessions/artifacts-get.js';
|
|
237
|
+
import { operation as o236 } from './sessions/artifacts-list.js';
|
|
238
|
+
import { operation as o237 } from './sessions/create.js';
|
|
239
|
+
import { operation as o238 } from './sessions/delete.js';
|
|
240
|
+
import { operation as o239 } from './sessions/desktop-control-set.js';
|
|
241
|
+
import { operation as o240 } from './sessions/desktop-get.js';
|
|
242
|
+
import { operation as o241 } from './sessions/desktop-start.js';
|
|
243
|
+
import { operation as o242 } from './sessions/diff-comments-create.js';
|
|
244
|
+
import { operation as o243 } from './sessions/diff-comments-delete.js';
|
|
245
|
+
import { operation as o244 } from './sessions/diff-comments-list.js';
|
|
246
|
+
import { operation as o245 } from './sessions/diff-comments-update.js';
|
|
247
|
+
import { operation as o246 } from './sessions/diff-commits-list.js';
|
|
248
|
+
import { operation as o247 } from './sessions/diff-files-list.js';
|
|
249
|
+
import { operation as o248 } from './sessions/diff-patch-get.js';
|
|
250
|
+
import { operation as o249 } from './sessions/files-get.js';
|
|
251
|
+
import { operation as o250 } from './sessions/files-list.js';
|
|
252
|
+
import { operation as o251 } from './sessions/files-set.js';
|
|
253
|
+
import { operation as o252 } from './sessions/get.js';
|
|
254
|
+
import { operation as o253 } from './sessions/git-state-get.js';
|
|
255
|
+
import { operation as o254 } from './sessions/go-ahead-delete.js';
|
|
256
|
+
import { operation as o255 } from './sessions/go-ahead-set.js';
|
|
257
|
+
import { operation as o256 } from './sessions/jobs-cancel.js';
|
|
258
|
+
import { operation as o257 } from './sessions/jobs-get.js';
|
|
259
|
+
import { operation as o258 } from './sessions/jobs-list.js';
|
|
260
|
+
import { operation as o259 } from './sessions/labels-set.js';
|
|
261
|
+
import { operation as o260 } from './sessions/labels-update.js';
|
|
262
|
+
import { operation as o261 } from './sessions/list.js';
|
|
263
|
+
import { operation as o262 } from './sessions/list--all.js';
|
|
264
|
+
import { operation as o263 } from './sessions/mark-read.js';
|
|
265
|
+
import { operation as o264 } from './sessions/messages-get.js';
|
|
266
|
+
import { operation as o265 } from './sessions/messages-list.js';
|
|
267
|
+
import { operation as o266 } from './sessions/prompt-update.js';
|
|
268
|
+
import { operation as o267 } from './sessions/qa-runs-finish.js';
|
|
269
|
+
import { operation as o268 } from './sessions/qa-runs-fixes-create.js';
|
|
270
|
+
import { operation as o269 } from './sessions/qa-runs-get.js';
|
|
271
|
+
import { operation as o270 } from './sessions/qa-runs-results-create.js';
|
|
272
|
+
import { operation as o271 } from './sessions/qa-runs-start.js';
|
|
273
|
+
import { operation as o272 } from './sessions/qa-runs-stop.js';
|
|
274
|
+
import { operation as o273 } from './sessions/qa-set.js';
|
|
275
|
+
import { operation as o274 } from './sessions/queue-delete.js';
|
|
276
|
+
import { operation as o275 } from './sessions/queue-list.js';
|
|
277
|
+
import { operation as o276 } from './sessions/queue-move.js';
|
|
278
|
+
import { operation as o277 } from './sessions/queue-resume.js';
|
|
279
|
+
import { operation as o278 } from './sessions/queue-send.js';
|
|
280
|
+
import { operation as o279 } from './sessions/queue-steer.js';
|
|
281
|
+
import { operation as o280 } from './sessions/queue-update.js';
|
|
282
|
+
import { operation as o281 } from './sessions/review-set.js';
|
|
283
|
+
import { operation as o282 } from './sessions/runtime-commands-run.js';
|
|
284
|
+
import { operation as o283 } from './sessions/search.js';
|
|
285
|
+
import { operation as o284 } from './sessions/send.js';
|
|
286
|
+
import { operation as o285 } from './sessions/start.js';
|
|
287
|
+
import { operation as o286 } from './sessions/steer.js';
|
|
288
|
+
import { operation as o287 } from './sessions/update.js';
|
|
289
|
+
import { operation as o288 } from './skills/create.js';
|
|
290
|
+
import { operation as o289 } from './skills/create--personal.js';
|
|
291
|
+
import { operation as o290 } from './skills/delete.js';
|
|
292
|
+
import { operation as o291 } from './skills/delete--personal.js';
|
|
293
|
+
import { operation as o292 } from './skills/get.js';
|
|
294
|
+
import { operation as o293 } from './skills/get--personal.js';
|
|
295
|
+
import { operation as o294 } from './skills/list.js';
|
|
296
|
+
import { operation as o295 } from './skills/list--personal.js';
|
|
297
|
+
import { operation as o296 } from './skills/update.js';
|
|
298
|
+
import { operation as o297 } from './skills/update--personal.js';
|
|
299
|
+
import { operation as o298 } from './tasks/create.js';
|
|
300
|
+
import { operation as o299 } from './tasks/create--personal.js';
|
|
301
|
+
import { operation as o300 } from './tasks/delete.js';
|
|
302
|
+
import { operation as o301 } from './tasks/delete--personal.js';
|
|
303
|
+
import { operation as o302 } from './tasks/get.js';
|
|
304
|
+
import { operation as o303 } from './tasks/get--personal.js';
|
|
305
|
+
import { operation as o304 } from './tasks/labels-list.js';
|
|
306
|
+
import { operation as o305 } from './tasks/list.js';
|
|
307
|
+
import { operation as o306 } from './tasks/list--all.js';
|
|
308
|
+
import { operation as o307 } from './tasks/list--personal.js';
|
|
309
|
+
import { operation as o308 } from './tasks/move.js';
|
|
310
|
+
import { operation as o309 } from './tasks/move--personal.js';
|
|
311
|
+
import { operation as o310 } from './tasks/start.js';
|
|
312
|
+
import { operation as o311 } from './tasks/start--personal.js';
|
|
313
|
+
import { operation as o312 } from './tasks/update.js';
|
|
314
|
+
import { operation as o313 } from './tasks/update--personal.js';
|
|
315
|
+
import { operation as o314 } from './user/api-keys-delete.js';
|
|
316
|
+
import { operation as o315 } from './user/profile-get.js';
|
|
317
|
+
import { operation as o316 } from './user/push-devices-create.js';
|
|
318
|
+
import { operation as o317 } from './user/push-devices-delete.js';
|
|
319
|
+
import { operation as o318 } from './user/usage-get.js';
|
|
320
|
+
import { operation as o319 } from './workspaces/artifacts-search.js';
|
|
321
|
+
import { operation as o320 } from './workspaces/credits-get.js';
|
|
322
|
+
import { operation as o321 } from './workspaces/get.js';
|
|
323
|
+
import { operation as o322 } from './workspaces/list.js';
|
|
324
|
+
import { operation as o323 } from './workspaces/members-list.js';
|
|
325
|
+
import { operation as o324 } from './workspaces/members-list--all.js';
|
|
326
|
+
import { operation as o325 } from './workspaces/sandbox-limit-get.js';
|
|
327
|
+
import { operation as o326 } from './workspaces/sandboxes-stop.js';
|
|
328
|
+
import { operation as o327 } from './workspaces/timezone-set.js';
|
|
329
|
+
import { operation as o328 } from './workspaces/usage-breakdown-get.js';
|
|
330
|
+
import { operation as o329 } from './workspaces/usage-get.js';
|
|
332
331
|
export const operations = [
|
|
333
332
|
o0,
|
|
334
333
|
o1,
|
|
@@ -660,5 +659,4 @@ export const operations = [
|
|
|
660
659
|
o327,
|
|
661
660
|
o328,
|
|
662
661
|
o329,
|
|
663
|
-
o330,
|
|
664
662
|
];
|
|
@@ -53,7 +53,7 @@ export const operation = {
|
|
|
53
53
|
"flag": "actions",
|
|
54
54
|
"kind": "json",
|
|
55
55
|
"required": false,
|
|
56
|
-
"description": "The card's buttons
|
|
56
|
+
"description": "The card's own buttons, 2 at most with the verb counted among them (a card stored before this rule may hold 3, and keeps them only through an update that leaves them unchanged), in the card's three slots [negative] [Reply] [primary]: at most one action with tone primary (the filled button a swipe right taps; none beside a verb, which is the primary) and at most one with tone destructive, which takes the negative button's place. No other tone. Each label is one word of 12 characters at most; the prompt is what the tap sends to Sensei in this thread as the member's message, exactly as written and shown as its button's tooltip on a computer. A tap closes the card. Secondary choices go in the card's body or on a question card, never a further button."
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"name": "urgency",
|
|
@@ -71,7 +71,7 @@ export const operation = {
|
|
|
71
71
|
"flag": "negative-label",
|
|
72
72
|
"kind": "string",
|
|
73
73
|
"required": false,
|
|
74
|
-
"description": "The negative button's label:
|
|
74
|
+
"description": "The negative button's label: one word of 12 characters at most that says what the member's no does, such as \"Reject\", \"Skip\", \"Dismiss\" or \"Later\"; those are examples, not a list to pick from. Omit it for \"Reject\" on a card with a verb and \"Dismiss\" on one without. Set it when the default misdescribes the no. On a card with no destructive action, its tap skips the card and sends nothing; a destructive action takes this button's place and sends its prompt."
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"name": "negativeTone",
|
|
@@ -143,7 +143,7 @@ export const operation = {
|
|
|
143
143
|
"flag": "covers",
|
|
144
144
|
"kind": "json",
|
|
145
145
|
"required": false,
|
|
146
|
-
"description": "The ids of the incoming_message events of this thread that this card answers
|
|
146
|
+
"description": "The ids of the incoming_message events of this thread that this card answers: a reply covers the message it answers, a task or calendar card the message in its evidence, an FYI the event of every row. An FYI update keeps unread commitments and the events in its current evidence, discarding processed history; name at most 50 events per write. The open FYI keeps a reference to every message it has covered, which its Mark read marks, and its card read gives their count and the newest."
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"name": "stateKey",
|
package/dist/runtime/aliases.js
CHANGED
|
@@ -138,7 +138,6 @@ export const FORMER_COMMANDS = [
|
|
|
138
138
|
},
|
|
139
139
|
{ from: 'sensei reels activity', operation: 'GET /api/sensei/reels/activity' },
|
|
140
140
|
{ from: 'sensei repository', operation: 'POST /api/sensei/repository' },
|
|
141
|
-
{ from: 'sensei review context', operation: 'GET /api/sensei/review/context' },
|
|
142
141
|
{ from: 'sensei sessions assess', operation: 'POST /api/sensei/sessions/assess' },
|
|
143
142
|
{ from: 'sensei sessions facts', operation: 'GET /api/sensei/sessions/facts' },
|
|
144
143
|
{ from: 'sensei suggest', operation: 'POST /api/sensei/suggest' },
|
package/openapi.json
CHANGED
|
@@ -909,7 +909,7 @@
|
|
|
909
909
|
},
|
|
910
910
|
"delete": {
|
|
911
911
|
"operationId": "devicesLocksDelete",
|
|
912
|
-
"summary": "From a Chat Session: let a device go as soon as you are done with it, after QA say, rather than at the end of your Turn, and leave its line if you wait in it. The next session in line gets it at once. Your
|
|
912
|
+
"summary": "From a Chat Session: let a device go as soon as you are done with it, after QA say, rather than at the end of your Turn, and leave its line if you wait in it. The next session in line gets it at once. Your access stays: a later mac command or devices locks create takes the device again. Answers released and leftQueue.",
|
|
913
913
|
"tags": ["devices"],
|
|
914
914
|
"x-kosuke-command": ["devices", "locks", "delete"],
|
|
915
915
|
"x-kosuke-sandbox-token": true,
|
|
@@ -961,7 +961,7 @@
|
|
|
961
961
|
"/api/devices/{deviceId}/requests": {
|
|
962
962
|
"post": {
|
|
963
963
|
"operationId": "devicesRequestsCreate",
|
|
964
|
-
"summary": "From a Chat Session: ask to use
|
|
964
|
+
"summary": "From a Chat Session: ask to use a personal Mac from devices list, with the reason its owner reads on a card in this session's chat. A workspace device needs no request: it answers approved at once with grantId null, and no one is asked. The owner approves a personal Mac once per session: after that, asking again answers approved at once. Answers status pending or approved. Check devices list again for the answer; it expires after 30 minutes without an answer. While it is pending, go on with other work; when it is declined or expires, go on without it and say so. Once approved it stays approved for the rest of the session: pass --device-id on every mac command. One session at a time uses the device: on MAC_BUSY, wait with devices locks create, and run devices locks delete once done.",
|
|
965
965
|
"tags": ["devices"],
|
|
966
966
|
"x-kosuke-command": ["devices", "requests", "create"],
|
|
967
967
|
"x-kosuke-sandbox-token": true,
|
|
@@ -987,7 +987,7 @@
|
|
|
987
987
|
"type": "string",
|
|
988
988
|
"minLength": 1,
|
|
989
989
|
"maxLength": 500,
|
|
990
|
-
"description": "One or two sentences for the
|
|
990
|
+
"description": "One or two sentences for the Mac’s owner: what you test on it, and why a real Mac."
|
|
991
991
|
}
|
|
992
992
|
},
|
|
993
993
|
"required": ["reason"]
|
|
@@ -1032,7 +1032,7 @@
|
|
|
1032
1032
|
"/api/devices/available": {
|
|
1033
1033
|
"get": {
|
|
1034
1034
|
"operationId": "devicesList",
|
|
1035
|
-
"summary": "From a Chat Session: the devices it may
|
|
1035
|
+
"summary": "From a Chat Session: the devices it may use, the workspace's devices and the session member's own Macs, each with its id, kind, whether it is online, the tools it offers, its macOS grants (grants.systemEvents: menu bar icons open with `osascript` through System Events), this session's access: none, pending or approved (a workspace device is always approved: it needs no request), and occupied with occupiedBy (session or sensei) when someone else uses it now. Pick an online device with the tools the test needs: a workspace device first, and the member's own Mac only when no workspace device fits, whatever the names or past approvals. Of those, pick a free one, and ask for an occupied one only when no free device fits. Use a workspace device at once with --device-id; request a personal Mac with `kosuke devices requests create` before any mac command on it. Use a device only when the test truly needs a real Mac. One session at a time uses a device: on MAC_BUSY, wait in its line with `kosuke devices locks create` rather than give up or call again, and let it go with `kosuke devices locks delete` once done.",
|
|
1036
1036
|
"tags": ["devices"],
|
|
1037
1037
|
"x-kosuke-command": ["devices", "list"],
|
|
1038
1038
|
"x-kosuke-sandbox-token": true,
|
|
@@ -21100,6 +21100,10 @@
|
|
|
21100
21100
|
"type": "string",
|
|
21101
21101
|
"minLength": 1,
|
|
21102
21102
|
"maxLength": 20
|
|
21103
|
+
},
|
|
21104
|
+
"link": {
|
|
21105
|
+
"type": "string",
|
|
21106
|
+
"maxLength": 2000
|
|
21103
21107
|
}
|
|
21104
21108
|
},
|
|
21105
21109
|
"required": ["network", "sender", "subject", "count", "at"]
|
|
@@ -21299,7 +21303,7 @@
|
|
|
21299
21303
|
"maxLength": 32
|
|
21300
21304
|
},
|
|
21301
21305
|
"actions": {
|
|
21302
|
-
"description": "The card's buttons
|
|
21306
|
+
"description": "The card's own buttons, 2 at most with the verb counted among them (a card stored before this rule may hold 3, and keeps them only through an update that leaves them unchanged), in the card's three slots [negative] [Reply] [primary]: at most one action with tone primary (the filled button a swipe right taps; none beside a verb, which is the primary) and at most one with tone destructive, which takes the negative button's place. No other tone. Each label is one word of 12 characters at most; the prompt is what the tap sends to Sensei in this thread as the member's message, exactly as written and shown as its button's tooltip on a computer. A tap closes the card. Secondary choices go in the card's body or on a question card, never a further button.",
|
|
21303
21307
|
"minItems": 1,
|
|
21304
21308
|
"maxItems": 3,
|
|
21305
21309
|
"type": "array",
|
|
@@ -21330,7 +21334,7 @@
|
|
|
21330
21334
|
"enum": ["now", "later"]
|
|
21331
21335
|
},
|
|
21332
21336
|
"negativeLabel": {
|
|
21333
|
-
"description": "The negative button's label:
|
|
21337
|
+
"description": "The negative button's label: one word of 12 characters at most that says what the member's no does, such as \"Reject\", \"Skip\", \"Dismiss\" or \"Later\"; those are examples, not a list to pick from. Omit it for \"Reject\" on a card with a verb and \"Dismiss\" on one without. Set it when the default misdescribes the no. On a card with no destructive action, its tap skips the card and sends nothing; a destructive action takes this button's place and sends its prompt.",
|
|
21334
21338
|
"type": "string",
|
|
21335
21339
|
"minLength": 1,
|
|
21336
21340
|
"maxLength": 20
|
|
@@ -21445,6 +21449,9 @@
|
|
|
21445
21449
|
"messagesDigest": {
|
|
21446
21450
|
"not": {}
|
|
21447
21451
|
},
|
|
21452
|
+
"thread": {
|
|
21453
|
+
"not": {}
|
|
21454
|
+
},
|
|
21448
21455
|
"projectId": {
|
|
21449
21456
|
"not": {}
|
|
21450
21457
|
},
|
|
@@ -21502,6 +21509,9 @@
|
|
|
21502
21509
|
"format": "uuid",
|
|
21503
21510
|
"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)$"
|
|
21504
21511
|
},
|
|
21512
|
+
"thread": {
|
|
21513
|
+
"not": {}
|
|
21514
|
+
},
|
|
21505
21515
|
"nudge": {
|
|
21506
21516
|
"not": {}
|
|
21507
21517
|
},
|
|
@@ -21545,6 +21555,9 @@
|
|
|
21545
21555
|
"messagesDigest": {
|
|
21546
21556
|
"not": {}
|
|
21547
21557
|
},
|
|
21558
|
+
"thread": {
|
|
21559
|
+
"not": {}
|
|
21560
|
+
},
|
|
21548
21561
|
"projectId": {
|
|
21549
21562
|
"not": {}
|
|
21550
21563
|
},
|
|
@@ -21586,6 +21599,9 @@
|
|
|
21586
21599
|
"messagesDigest": {
|
|
21587
21600
|
"not": {}
|
|
21588
21601
|
},
|
|
21602
|
+
"thread": {
|
|
21603
|
+
"not": {}
|
|
21604
|
+
},
|
|
21589
21605
|
"projectId": {
|
|
21590
21606
|
"not": {}
|
|
21591
21607
|
},
|
|
@@ -21640,6 +21656,9 @@
|
|
|
21640
21656
|
"integration": {
|
|
21641
21657
|
"not": {}
|
|
21642
21658
|
},
|
|
21659
|
+
"thread": {
|
|
21660
|
+
"not": {}
|
|
21661
|
+
},
|
|
21643
21662
|
"projectId": {
|
|
21644
21663
|
"not": {}
|
|
21645
21664
|
},
|
|
@@ -21681,6 +21700,9 @@
|
|
|
21681
21700
|
"integration": {
|
|
21682
21701
|
"not": {}
|
|
21683
21702
|
},
|
|
21703
|
+
"thread": {
|
|
21704
|
+
"not": {}
|
|
21705
|
+
},
|
|
21684
21706
|
"projectId": {
|
|
21685
21707
|
"not": {}
|
|
21686
21708
|
},
|
|
@@ -21700,6 +21722,50 @@
|
|
|
21700
21722
|
"required": ["messagesDigest"],
|
|
21701
21723
|
"additionalProperties": false
|
|
21702
21724
|
},
|
|
21725
|
+
{
|
|
21726
|
+
"type": "object",
|
|
21727
|
+
"properties": {
|
|
21728
|
+
"thread": {
|
|
21729
|
+
"type": "boolean",
|
|
21730
|
+
"const": true
|
|
21731
|
+
},
|
|
21732
|
+
"nudge": {
|
|
21733
|
+
"not": {}
|
|
21734
|
+
},
|
|
21735
|
+
"job": {
|
|
21736
|
+
"not": {}
|
|
21737
|
+
},
|
|
21738
|
+
"memory": {
|
|
21739
|
+
"not": {}
|
|
21740
|
+
},
|
|
21741
|
+
"integration": {
|
|
21742
|
+
"not": {}
|
|
21743
|
+
},
|
|
21744
|
+
"messages": {
|
|
21745
|
+
"not": {}
|
|
21746
|
+
},
|
|
21747
|
+
"messagesDigest": {
|
|
21748
|
+
"not": {}
|
|
21749
|
+
},
|
|
21750
|
+
"projectId": {
|
|
21751
|
+
"not": {}
|
|
21752
|
+
},
|
|
21753
|
+
"sessionId": {
|
|
21754
|
+
"not": {}
|
|
21755
|
+
},
|
|
21756
|
+
"pullRequest": {
|
|
21757
|
+
"not": {}
|
|
21758
|
+
},
|
|
21759
|
+
"cronId": {
|
|
21760
|
+
"not": {}
|
|
21761
|
+
},
|
|
21762
|
+
"deployJobId": {
|
|
21763
|
+
"not": {}
|
|
21764
|
+
}
|
|
21765
|
+
},
|
|
21766
|
+
"required": ["thread"],
|
|
21767
|
+
"additionalProperties": false
|
|
21768
|
+
},
|
|
21703
21769
|
{
|
|
21704
21770
|
"type": "object",
|
|
21705
21771
|
"properties": {
|
|
@@ -21735,6 +21801,9 @@
|
|
|
21735
21801
|
"messagesDigest": {
|
|
21736
21802
|
"not": {}
|
|
21737
21803
|
},
|
|
21804
|
+
"thread": {
|
|
21805
|
+
"not": {}
|
|
21806
|
+
},
|
|
21738
21807
|
"projectId": {
|
|
21739
21808
|
"not": {}
|
|
21740
21809
|
},
|
|
@@ -21841,7 +21910,7 @@
|
|
|
21841
21910
|
]
|
|
21842
21911
|
},
|
|
21843
21912
|
"covers": {
|
|
21844
|
-
"description": "The ids of the incoming_message events of this thread that this card answers
|
|
21913
|
+
"description": "The ids of the incoming_message events of this thread that this card answers: a reply covers the message it answers, a task or calendar card the message in its evidence, an FYI the event of every row. An FYI update keeps unread commitments and the events in its current evidence, discarding processed history; name at most 50 events per write. The open FYI keeps a reference to every message it has covered, which its Mark read marks, and its card read gives their count and the newest.",
|
|
21845
21914
|
"minItems": 1,
|
|
21846
21915
|
"maxItems": 50,
|
|
21847
21916
|
"type": "array",
|
|
@@ -23203,70 +23272,6 @@
|
|
|
23203
23272
|
}
|
|
23204
23273
|
}
|
|
23205
23274
|
},
|
|
23206
|
-
"/api/sensei/review/context": {
|
|
23207
|
-
"get": {
|
|
23208
|
-
"operationId": "senseiReviewContextGet",
|
|
23209
|
-
"summary": "Read bounded, untrusted GitHub review evidence for a Chat Session using repository-scoped read-only installation access. Pass sessionId and optionally paths, a JSON array of at most three repository-relative helper paths. Returns section completeness, observed head/base, checks, rules, ownership, authorship, associated merged reviews and matched workspace reviewer candidates. Partial evidence never proves all checks or rules passed; stale evidence must be read again. No GitHub action is performed and no GitHub credential is returned.",
|
|
23210
|
-
"tags": ["sensei"],
|
|
23211
|
-
"x-kosuke-command": ["sensei", "review", "context", "get"],
|
|
23212
|
-
"x-kosuke-sandbox-token": true,
|
|
23213
|
-
"x-kosuke-cron-token": true,
|
|
23214
|
-
"x-kosuke-sensei-token": true,
|
|
23215
|
-
"parameters": [
|
|
23216
|
-
{
|
|
23217
|
-
"name": "sessionId",
|
|
23218
|
-
"in": "query",
|
|
23219
|
-
"required": true,
|
|
23220
|
-
"schema": {
|
|
23221
|
-
"type": "string",
|
|
23222
|
-
"format": "uuid",
|
|
23223
|
-
"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)$"
|
|
23224
|
-
}
|
|
23225
|
-
},
|
|
23226
|
-
{
|
|
23227
|
-
"name": "paths",
|
|
23228
|
-
"in": "query",
|
|
23229
|
-
"required": false,
|
|
23230
|
-
"schema": {
|
|
23231
|
-
"type": "string",
|
|
23232
|
-
"maxLength": 1000
|
|
23233
|
-
}
|
|
23234
|
-
}
|
|
23235
|
-
],
|
|
23236
|
-
"responses": {
|
|
23237
|
-
"2XX": {
|
|
23238
|
-
"description": "Success envelope",
|
|
23239
|
-
"content": {
|
|
23240
|
-
"application/json": {
|
|
23241
|
-
"schema": {
|
|
23242
|
-
"$ref": "#/components/schemas/ApiSuccess"
|
|
23243
|
-
}
|
|
23244
|
-
}
|
|
23245
|
-
}
|
|
23246
|
-
},
|
|
23247
|
-
"4XX": {
|
|
23248
|
-
"description": "Error envelope",
|
|
23249
|
-
"content": {
|
|
23250
|
-
"application/json": {
|
|
23251
|
-
"schema": {
|
|
23252
|
-
"$ref": "#/components/schemas/ApiError"
|
|
23253
|
-
}
|
|
23254
|
-
}
|
|
23255
|
-
}
|
|
23256
|
-
},
|
|
23257
|
-
"5XX": {
|
|
23258
|
-
"description": "Error envelope",
|
|
23259
|
-
"content": {
|
|
23260
|
-
"application/json": {
|
|
23261
|
-
"schema": {
|
|
23262
|
-
"$ref": "#/components/schemas/ApiError"
|
|
23263
|
-
}
|
|
23264
|
-
}
|
|
23265
|
-
}
|
|
23266
|
-
}
|
|
23267
|
-
}
|
|
23268
|
-
}
|
|
23269
|
-
},
|
|
23270
23275
|
"/api/sensei/sessions/assess": {
|
|
23271
23276
|
"post": {
|
|
23272
23277
|
"operationId": "senseiSessionsAssessmentsCreate",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kosuke-ai/kosuke",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
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,14 +40,10 @@
|
|
|
40
40
|
"vitest": "^4.1.12"
|
|
41
41
|
},
|
|
42
42
|
"kosukeRelease": {
|
|
43
|
-
"sourceCommit": "
|
|
44
|
-
"sourceIdentity": "
|
|
43
|
+
"sourceCommit": "cf58837a652eb60c2cdc7ec2532cb5797e0af07a",
|
|
44
|
+
"sourceIdentity": "30ce0c060a21e0164acb3384a7e501d22e40ce93e9794b3b69ba34cee1d66a74",
|
|
45
45
|
"fragments": [
|
|
46
|
-
"
|
|
47
|
-
"sensei-card-actions-p3c4rd.json",
|
|
48
|
-
"github-writes-through-gh-m8t2qa.json",
|
|
49
|
-
"merge-agent-merge-sync-q8v2tn.json",
|
|
50
|
-
"merge-agent-status-trim-w3k9fd.json"
|
|
46
|
+
"sensei-review-context-removed-r4c7k2.json"
|
|
51
47
|
]
|
|
52
48
|
}
|
|
53
49
|
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export const operation = {
|
|
2
|
-
"method": "get",
|
|
3
|
-
"path": "/api/sensei/review/context",
|
|
4
|
-
"command": [
|
|
5
|
-
"sensei",
|
|
6
|
-
"review",
|
|
7
|
-
"context",
|
|
8
|
-
"get"
|
|
9
|
-
],
|
|
10
|
-
"summary": "Read bounded, untrusted GitHub review evidence for a Chat Session using repository-scoped read-only installation access. Pass sessionId and optionally paths, a JSON array of at most three repository-relative helper paths. Returns section completeness, observed head/base, checks, rules, ownership, authorship, associated merged reviews and matched workspace reviewer candidates. Partial evidence never proves all checks or rules passed; stale evidence must be read again. No GitHub action is performed and no GitHub credential is returned.",
|
|
11
|
-
"pathParams": [],
|
|
12
|
-
"query": [
|
|
13
|
-
{
|
|
14
|
-
"name": "sessionId",
|
|
15
|
-
"flag": "session-id",
|
|
16
|
-
"kind": "string",
|
|
17
|
-
"required": true
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"name": "paths",
|
|
21
|
-
"flag": "paths",
|
|
22
|
-
"kind": "string",
|
|
23
|
-
"required": false
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"body": null,
|
|
27
|
-
"multipart": null,
|
|
28
|
-
"attachments": false,
|
|
29
|
-
"anonymous": false,
|
|
30
|
-
"agents": "all"
|
|
31
|
-
};
|