@kosuke-ai/kosuke 1.0.42 → 1.0.44

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,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.44
4
+
5
+ - `sessions messages list` and `messages get` show a running Turn's progress: its assistant message has `streaming: true` and the blocks produced so far; `--live false` reads it as stored.
6
+
7
+ ## 1.0.43
8
+
9
+ - Add `--on-conflict rename` to `kosuke files set` for personal Files: a name the folder already holds is stored as the first free "name (2).ext" instead of replacing the file.
10
+
3
11
  ## 1.0.42
4
12
 
5
13
  - Merge agent status lists each pull request's state: merged, ejected, in-batch, waiting, failed or ready.
@@ -8,7 +8,7 @@ export const operation = {
8
8
  "variant": {
9
9
  "scope": "personal"
10
10
  },
11
- "summary": "Put a file in your personal Files by path, creating parent folders and replacing an existing file. Send text or exactly one attachment, at most 25 MiB. ifVersion refuses a stale replace. Alternatively provide name and parentId (null for the root).",
11
+ "summary": "Put a file in your personal Files by path, creating parent folders and replacing an existing file. Send text or exactly one attachment, at most 25 MiB. ifVersion refuses a stale replace. Alternatively provide name and parentId (null for the root). onConflict=rename never replaces: a name the folder already holds is stored as the first free \"name (2).ext\", \"name (3).ext\", and the response names the file it became; it takes no ifVersion.",
12
12
  "pathParams": [],
13
13
  "query": [],
14
14
  "body": {
@@ -48,6 +48,16 @@ export const operation = {
48
48
  "flag": "if-version",
49
49
  "kind": "integer",
50
50
  "required": false
51
+ },
52
+ {
53
+ "name": "onConflict",
54
+ "flag": "on-conflict",
55
+ "kind": "string",
56
+ "required": false,
57
+ "choices": [
58
+ "replace",
59
+ "rename"
60
+ ]
51
61
  }
52
62
  ],
53
63
  "required": true
@@ -82,6 +92,16 @@ export const operation = {
82
92
  "flag": "if-version",
83
93
  "kind": "string",
84
94
  "required": false
95
+ },
96
+ {
97
+ "name": "onConflict",
98
+ "flag": "on-conflict",
99
+ "kind": "string",
100
+ "required": false,
101
+ "choices": [
102
+ "replace",
103
+ "rename"
104
+ ]
85
105
  }
86
106
  ],
87
107
  "attachments": {
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "messages",
7
7
  "get"
8
8
  ],
9
- "summary": "Read one message of a chat session with every block as recorded: whole tool inputs, results and subagent output, unless agentOutput is compact (subagent output cut) or summary (blocks as `kosuke sessions messages list` returns them).",
9
+ "summary": "Read one message of a chat session with every block as recorded: whole tool inputs, results and subagent output, unless agentOutput is compact (subagent output cut) or summary (blocks as `kosuke sessions messages list` returns them). The assistant message of a running Turn has streaming: true and the blocks the Turn has produced so far, as the web app shows them; any other message has streaming: false.",
10
10
  "pathParams": [
11
11
  "projectId",
12
12
  "sessionId",
@@ -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; 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.",
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. A running Turn's assistant message has streaming: true and the blocks the Turn has produced so far, as the web app shows them; every other message has streaming: false. 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"
@@ -32,6 +32,17 @@ export const operation = {
32
32
  "kind": "string",
33
33
  "required": false,
34
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
+ },
36
+ {
37
+ "name": "live",
38
+ "flag": "live",
39
+ "kind": "string",
40
+ "required": false,
41
+ "description": "false leaves a running Turn's assistant message as stored, blocks null until the Turn ends, for a reader with a socket on its stream, as the web app has. By default that message carries what the Turn has done so far.",
42
+ "choices": [
43
+ "true",
44
+ "false"
45
+ ]
35
46
  }
36
47
  ],
37
48
  "body": null,
package/openapi.json CHANGED
@@ -13077,7 +13077,7 @@
13077
13077
  "/api/projects/{projectId}/chat-sessions/{sessionId}/messages": {
13078
13078
  "get": {
13079
13079
  "operationId": "sessionsMessagesList",
13080
- "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.",
13080
+ "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. A running Turn's assistant message has streaming: true and the blocks the Turn has produced so far, as the web app shows them; every other message has streaming: false. 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.",
13081
13081
  "tags": ["sessions"],
13082
13082
  "x-kosuke-command": ["sessions", "messages", "list"],
13083
13083
  "x-kosuke-sandbox-token": true,
@@ -13135,6 +13135,17 @@
13135
13135
  "description": "An olderCursor or newestCursor from an earlier read: the oldest or the newest message of that read, and every message after it.",
13136
13136
  "type": "string"
13137
13137
  }
13138
+ },
13139
+ {
13140
+ "name": "live",
13141
+ "in": "query",
13142
+ "required": false,
13143
+ "description": "false leaves a running Turn's assistant message as stored, blocks null until the Turn ends, for a reader with a socket on its stream, as the web app has. By default that message carries what the Turn has done so far.",
13144
+ "schema": {
13145
+ "description": "false leaves a running Turn's assistant message as stored, blocks null until the Turn ends, for a reader with a socket on its stream, as the web app has. By default that message carries what the Turn has done so far.",
13146
+ "type": "string",
13147
+ "enum": ["true", "false"]
13148
+ }
13138
13149
  }
13139
13150
  ],
13140
13151
  "responses": {
@@ -13174,7 +13185,7 @@
13174
13185
  "/api/projects/{projectId}/chat-sessions/{sessionId}/messages/{messageId}": {
13175
13186
  "get": {
13176
13187
  "operationId": "sessionsMessagesGet",
13177
- "summary": "Read one message of a chat session with every block as recorded: whole tool inputs, results and subagent output, unless agentOutput is compact (subagent output cut) or summary (blocks as `kosuke sessions messages list` returns them).",
13188
+ "summary": "Read one message of a chat session with every block as recorded: whole tool inputs, results and subagent output, unless agentOutput is compact (subagent output cut) or summary (blocks as `kosuke sessions messages list` returns them). The assistant message of a running Turn has streaming: true and the blocks the Turn has produced so far, as the web app shows them; any other message has streaming: false.",
13178
13189
  "tags": ["sessions"],
13179
13190
  "x-kosuke-command": ["sessions", "messages", "get"],
13180
13191
  "x-kosuke-sandbox-token": true,
@@ -26384,7 +26395,7 @@
26384
26395
  },
26385
26396
  "post": {
26386
26397
  "operationId": "filesSetPersonal",
26387
- "summary": "Put a file in your personal Files by path, creating parent folders and replacing an existing file. Send text or exactly one attachment, at most 25 MiB. ifVersion refuses a stale replace. Alternatively provide name and parentId (null for the root).",
26398
+ "summary": "Put a file in your personal Files by path, creating parent folders and replacing an existing file. Send text or exactly one attachment, at most 25 MiB. ifVersion refuses a stale replace. Alternatively provide name and parentId (null for the root). onConflict=rename never replaces: a name the folder already holds is stored as the first free \"name (2).ext\", \"name (3).ext\", and the response names the file it became; it takes no ifVersion.",
26388
26399
  "tags": ["files"],
26389
26400
  "x-kosuke-command": ["files", "set"],
26390
26401
  "x-kosuke-variant": {
@@ -26435,6 +26446,10 @@
26435
26446
  "type": "integer",
26436
26447
  "minimum": 1,
26437
26448
  "maximum": 9007199254740991
26449
+ },
26450
+ "onConflict": {
26451
+ "type": "string",
26452
+ "enum": ["replace", "rename"]
26438
26453
  }
26439
26454
  }
26440
26455
  }
@@ -26457,6 +26472,10 @@
26457
26472
  },
26458
26473
  "ifVersion": {
26459
26474
  "type": "string"
26475
+ },
26476
+ "onConflict": {
26477
+ "type": "string",
26478
+ "enum": ["replace", "rename"]
26460
26479
  }
26461
26480
  }
26462
26481
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/kosuke",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
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,10 @@
40
40
  "vitest": "^4.1.12"
41
41
  },
42
42
  "kosukeRelease": {
43
- "sourceCommit": "2f429b6ca7079f52ca03a4153817b32a0fe3b0d8",
44
- "sourceIdentity": "568f28903ea01a29696b105f3cbc5db49c44c9594b7485177ec9a17a5f81e82e",
43
+ "sourceCommit": "067ec315ebdca9193f7330f39eb5e023882dbd27",
44
+ "sourceIdentity": "9723bc45a42824750526e82c2441f6b051a005f4be19e2dab5d1ee305b92a609",
45
45
  "fragments": [
46
- "merge-agent-state-word-h7xhsh.json"
46
+ "cli-running-turn-progress-xt780v.json"
47
47
  ]
48
48
  }
49
49
  }