@kosuke-ai/kosuke 1.0.5 → 1.0.7
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 +11 -0
- package/dist/generated/commands/devices/list.js +1 -1
- package/dist/generated/commands/devices/request.js +1 -1
- package/dist/generated/commands/index.js +184 -188
- package/dist/generated/commands/integrations/tools.js +1 -1
- package/dist/generated/commands/personal-tasks/create.js +1 -1
- package/dist/generated/commands/personal-tasks/move.js +1 -1
- package/dist/generated/commands/personal-tasks/start.js +2 -1
- package/dist/generated/commands/projects/create.js +1 -1
- package/dist/generated/commands/projects/skills.js +1 -1
- package/dist/generated/commands/projects/switch-workflow.js +1 -1
- package/dist/generated/commands/sensei/memory-get.js +1 -1
- package/dist/generated/commands/sensei/memory-put.js +0 -2
- package/dist/generated/commands/sensei/messages-send.js +1 -1
- package/dist/generated/commands/sensei/suggest.js +1 -1
- package/dist/generated/commands/sensei/thread-move.js +1 -1
- package/dist/generated/commands/sensei/thread-split.js +1 -1
- package/dist/generated/commands/sessions/artifacts-get.js +1 -1
- package/dist/generated/commands/sessions/create.js +1 -1
- package/dist/generated/commands/sessions/edit-prompt.js +1 -1
- package/dist/generated/commands/sessions/send.js +1 -1
- package/dist/generated/commands/sessions/steer.js +1 -1
- package/dist/generated/commands/sessions/update.js +1 -1
- package/dist/generated/commands/tasks/all.js +3 -2
- package/dist/generated/commands/tasks/create.js +5 -3
- package/dist/generated/commands/tasks/list.js +3 -2
- package/dist/generated/commands/tasks/start.js +3 -2
- package/dist/generated/commands/tasks/update.js +4 -2
- package/dist/generated/commands/user/crons-create.js +1 -1
- package/dist/runtime/agent-tokens.js +2 -8
- package/dist/runtime/attach.js +8 -41
- package/openapi.json +38 -149
- package/package.json +6 -4
- package/dist/generated/commands/sensei/reels-proposals.js +0 -25
- package/dist/generated/commands/sensei/reels-skips.js +0 -33
package/openapi.json
CHANGED
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
"/api/agent-integrations/tools": {
|
|
235
235
|
"get": {
|
|
236
236
|
"operationId": "integrationsTools",
|
|
237
|
-
"summary": "List the integration tools you can run now, with the connections that run them. An agent reads its own workspace. With an API key, name a workspace you belong to: it shows that workspace’s connections and your own personal ones. Some integrations require an enabled workspace to be named. A Connector Token or a browser session is refused.",
|
|
237
|
+
"summary": "List the integration tools you can run now, with the connections that run them. An agent reads its own workspace. With an API key, name a workspace you belong to: it shows that workspace’s connections and your own personal ones. Some integrations require an enabled workspace to be named. A Connector Token or a browser session is refused. Each toolkit is personal or workspace, never both. A personal connection reaches only a Turn its member started (in a workspace chat, only the session's Assignee); a workspace Cron, Deploy Chat, a Turn another member sent and unassigned work reach workspace connections only. In the Personal space the owner's own Turns reach both kinds.",
|
|
238
238
|
"tags": ["integrations"],
|
|
239
239
|
"x-kosuke-command": ["integrations", "tools"],
|
|
240
240
|
"x-kosuke-sandbox-token": true,
|
|
@@ -766,7 +766,7 @@
|
|
|
766
766
|
"/api/devices/{deviceId}/requests": {
|
|
767
767
|
"post": {
|
|
768
768
|
"operationId": "devicesRequest",
|
|
769
|
-
"summary": "From a Chat Session: ask to use one device from devices list, with the reason the approver reads on a card in this session's chat. A personal Mac's owner approves it, a workspace device's any workspace admin, once per session: after that, asking again answers approved at once. Answers status pending or approved.
|
|
769
|
+
"summary": "From a Chat Session: ask to use one device from devices list, with the reason the approver reads on a card in this session's chat. A personal Mac's owner approves it, a workspace device's any workspace admin, 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 is yours for the rest of the session: pass --device-id on every mac command.",
|
|
770
770
|
"tags": ["devices"],
|
|
771
771
|
"x-kosuke-command": ["devices", "request"],
|
|
772
772
|
"x-kosuke-sandbox-token": true,
|
|
@@ -837,7 +837,7 @@
|
|
|
837
837
|
"/api/devices/available": {
|
|
838
838
|
"get": {
|
|
839
839
|
"operationId": "devicesList",
|
|
840
|
-
"summary": "From a Chat Session: the devices it may ask for, the workspace's devices and the session member's own Macs, each with its id, kind, whether it is online, the tools it offers and this session's access: none, pending or approved. Request one with devices request before any mac command, and use one only when the test truly needs a real Mac.",
|
|
840
|
+
"summary": "From a Chat Session: the devices it may ask for, the workspace's devices and the session member's own Macs, each with its id, kind, whether it is online, the tools it offers and this session's access: none, pending or approved. 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. Request one with devices request before any mac command, and use one only when the test truly needs a real Mac.",
|
|
841
841
|
"tags": ["devices"],
|
|
842
842
|
"x-kosuke-command": ["devices", "list"],
|
|
843
843
|
"x-kosuke-sandbox-token": true,
|
|
@@ -7865,7 +7865,7 @@
|
|
|
7865
7865
|
"/api/organizations/{workspaceId}/tasks": {
|
|
7866
7866
|
"get": {
|
|
7867
7867
|
"operationId": "tasksList",
|
|
7868
|
-
"summary": "List tasks in one workspace.",
|
|
7868
|
+
"summary": "List tasks in one workspace. Before you file or propose a ticket, read the open ones (--status todo,in_progress --include-prompt, following meta.pagination.nextCursor with --cursor) and judge overlap by meaning, not title words: work another task or session already covers gets no new ticket.",
|
|
7869
7869
|
"tags": ["tasks"],
|
|
7870
7870
|
"x-kosuke-command": ["tasks", "list"],
|
|
7871
7871
|
"x-kosuke-sandbox-token": true,
|
|
@@ -7986,7 +7986,9 @@
|
|
|
7986
7986
|
"name": "includePrompt",
|
|
7987
7987
|
"in": "query",
|
|
7988
7988
|
"required": false,
|
|
7989
|
+
"description": "Adds each task's prompt: a Todo task's description, or its first message after Start, cut at 4,000 characters (promptTruncated). Read `tasks get` for a cut or empty one.",
|
|
7989
7990
|
"schema": {
|
|
7991
|
+
"description": "Adds each task's prompt: a Todo task's description, or its first message after Start, cut at 4,000 characters (promptTruncated). Read `tasks get` for a cut or empty one.",
|
|
7990
7992
|
"type": "boolean"
|
|
7991
7993
|
}
|
|
7992
7994
|
},
|
|
@@ -8043,7 +8045,7 @@
|
|
|
8043
8045
|
},
|
|
8044
8046
|
"post": {
|
|
8045
8047
|
"operationId": "tasksCreate",
|
|
8046
|
-
"summary": "File a task. A hint files into that project; YOLO returns a Backlog item.",
|
|
8048
|
+
"summary": "File a task. A hint files into that project; YOLO returns a Backlog item. From Sensei, ownerId is the member, or the teammate they name; leave sandboxSize to the member, who changes it in the task's Properties. Answers shareUrl: link the task's title to it.",
|
|
8047
8049
|
"tags": ["tasks"],
|
|
8048
8050
|
"x-kosuke-command": ["tasks", "create"],
|
|
8049
8051
|
"x-kosuke-attachments": true,
|
|
@@ -8121,7 +8123,8 @@
|
|
|
8121
8123
|
"description": "start (default) runs the project's services when the sandbox boots. skip boots setup and the agent only; a member or the session's agent starts the services later with sessions app-stack-start. Fixed once the session starts."
|
|
8122
8124
|
},
|
|
8123
8125
|
"description": {
|
|
8124
|
-
"type": "string"
|
|
8126
|
+
"type": "string",
|
|
8127
|
+
"description": "Markdown someone with none of your context can act on: the goal, why it matters, the limits, what done contains, and what the repository does not hold (a log line, an error, a URL). Resolve every \"it\" and @mention; keep the member's decisions and scope; leave out empty sections."
|
|
8125
8128
|
},
|
|
8126
8129
|
"hintProjectId": {
|
|
8127
8130
|
"x-kosuke-flag": "hint-project",
|
|
@@ -8202,7 +8205,8 @@
|
|
|
8202
8205
|
"description": "start (default) runs the project's services when the sandbox boots. skip boots setup and the agent only; a member or the session's agent starts the services later with sessions app-stack-start. Fixed once the session starts."
|
|
8203
8206
|
},
|
|
8204
8207
|
"description": {
|
|
8205
|
-
"type": "string"
|
|
8208
|
+
"type": "string",
|
|
8209
|
+
"description": "Markdown someone with none of your context can act on: the goal, why it matters, the limits, what done contains, and what the repository does not hold (a log line, an error, a URL). Resolve every \"it\" and @mention; keep the member's decisions and scope; leave out empty sections."
|
|
8206
8210
|
},
|
|
8207
8211
|
"hintProjectId": {
|
|
8208
8212
|
"x-kosuke-flag": "hint-project",
|
|
@@ -8491,9 +8495,11 @@
|
|
|
8491
8495
|
]
|
|
8492
8496
|
},
|
|
8493
8497
|
"description": {
|
|
8498
|
+
"description": "The whole new description, only when the goal changed: never because the task starts.",
|
|
8494
8499
|
"type": "string"
|
|
8495
8500
|
},
|
|
8496
8501
|
"ifRevision": {
|
|
8502
|
+
"description": "The descriptionRevision `tasks get` printed. Sensei and a Cron Run must pass it with description; a changed task answers 409 TASK_CONFLICT, so read it again and reconcile.",
|
|
8497
8503
|
"type": "string"
|
|
8498
8504
|
},
|
|
8499
8505
|
"hintProjectId": {
|
|
@@ -8689,7 +8695,7 @@
|
|
|
8689
8695
|
"/api/organizations/{workspaceId}/tasks/{taskId}/start": {
|
|
8690
8696
|
"post": {
|
|
8691
8697
|
"operationId": "tasksStart",
|
|
8692
|
-
"summary": "Start a Todo task. Members and Sensei only. sandboxSize and appStack set the task's Sandbox size and App stack as it starts; absent keeps what the task holds.",
|
|
8698
|
+
"summary": "Start a Todo task. Members and Sensei only. sandboxSize and appStack set the task's Sandbox size and App stack as it starts; absent keeps what the task holds. The member's ask to start is the yes: start without reading back credits or sandboxes. A refusal leaves it in the Backlog: say what Kosuke answered and do not retry.",
|
|
8693
8699
|
"tags": ["tasks"],
|
|
8694
8700
|
"x-kosuke-command": ["tasks", "start"],
|
|
8695
8701
|
"x-kosuke-sandbox-token": true,
|
|
@@ -8733,6 +8739,7 @@
|
|
|
8733
8739
|
"enum": ["ship"]
|
|
8734
8740
|
},
|
|
8735
8741
|
"prompt": {
|
|
8742
|
+
"description": "Other text for the first message. The description stays as it is.",
|
|
8736
8743
|
"type": "string"
|
|
8737
8744
|
},
|
|
8738
8745
|
"sandboxSize": {
|
|
@@ -9049,7 +9056,7 @@
|
|
|
9049
9056
|
},
|
|
9050
9057
|
"post": {
|
|
9051
9058
|
"operationId": "personalTasksCreate",
|
|
9052
|
-
"summary": "File a personal task: yours alone, in no workspace. From a Sensei Turn it joins the Turn’s thread unless threadId names another.",
|
|
9059
|
+
"summary": "File a personal task: yours alone, in no workspace. From a Sensei Turn it joins the Turn’s thread unless threadId names another. Check personal-tasks list for one that covers it first.",
|
|
9053
9060
|
"tags": ["personal-tasks"],
|
|
9054
9061
|
"x-kosuke-command": ["personal-tasks", "create"],
|
|
9055
9062
|
"x-kosuke-sandbox-token": true,
|
|
@@ -9353,7 +9360,7 @@
|
|
|
9353
9360
|
"/api/personal-tasks/{taskId}/move": {
|
|
9354
9361
|
"post": {
|
|
9355
9362
|
"operationId": "personalTasksMove",
|
|
9356
|
-
"summary": "Move a Todo or In progress personal task into a workspace you belong to, as its Todo task assigned to you; the personal task is removed. A due date becomes the description’s last line.",
|
|
9363
|
+
"summary": "Move a Todo or In progress personal task into a workspace you belong to, as its Todo task assigned to you; the personal task is removed. A due date becomes the description’s last line. Only when the member asks.",
|
|
9357
9364
|
"tags": ["personal-tasks"],
|
|
9358
9365
|
"x-kosuke-command": ["personal-tasks", "move"],
|
|
9359
9366
|
"x-kosuke-sandbox-token": true,
|
|
@@ -9461,6 +9468,7 @@
|
|
|
9461
9468
|
"enum": ["ship"]
|
|
9462
9469
|
},
|
|
9463
9470
|
"prompt": {
|
|
9471
|
+
"description": "Other text for the first message. The description stays as it is.",
|
|
9464
9472
|
"type": "string"
|
|
9465
9473
|
},
|
|
9466
9474
|
"sandboxSize": {
|
|
@@ -9557,7 +9565,7 @@
|
|
|
9557
9565
|
},
|
|
9558
9566
|
"post": {
|
|
9559
9567
|
"operationId": "projectsCreate",
|
|
9560
|
-
"summary": "Connect a GitHub repository as a project in a workspace, or describe what to build to create a YOLO project on a new Kosuke-Org repository. Pass workflow yolo with a repository to import it in YOLO mode, with an optional prompt as its first message. Pass personal instead of orgId to create it in your Personal: your own credential, or your Sensei in a Turn you started. Its first Deploy starts by itself, as the caller's; sessions start once it lands. Imports only a repository your own GitHub Connection can write to: 403 GITHUB_REPOSITORY_ACCESS_REQUIRED otherwise, 401 GITHUB_RECONNECT_REQUIRED when GitHub no longer accepts your connection.",
|
|
9568
|
+
"summary": "Connect a GitHub repository as a project in a workspace, or describe what to build to create a YOLO project on a new Kosuke-Org repository. Pass workflow yolo with a repository to import it in YOLO mode, with an optional prompt as its first message. Pass personal instead of orgId to create it in your Personal: your own credential, or your Sensei in a Turn you started. Its first Deploy starts by itself, as the caller's; sessions start once it lands. Imports only a repository your own GitHub Connection can write to: 403 GITHUB_REPOSITORY_ACCESS_REQUIRED otherwise, 401 GITHUB_RECONNECT_REQUIRED when GitHub no longer accepts your connection. Pass workflow yolo or personal only when the member asked for it. Report a chatError; on BRANCH_PROTECTED give its message and do not retry.",
|
|
9561
9569
|
"tags": ["projects"],
|
|
9562
9570
|
"x-kosuke-command": ["projects", "create"],
|
|
9563
9571
|
"x-kosuke-sandbox-token": true,
|
|
@@ -10801,7 +10809,7 @@
|
|
|
10801
10809
|
},
|
|
10802
10810
|
"post": {
|
|
10803
10811
|
"operationId": "sessionsCreate",
|
|
10804
|
-
"summary": "Start a chat session, or file a backlog one with status=backlog. Title or content is required; a backlog session needs content. Attachments ride along as multipart. From a sandbox or a Cron Run, only status=backlog, and reason is required: one line on why the ticket exists. From a Cron Run, Kosuke files it and is its Assignee, and a model the workspace cannot run falls back to the Cron's: model says which one it will run on.",
|
|
10812
|
+
"summary": "Start a chat session, or file a backlog one with status=backlog. Title or content is required; a backlog session needs content. Attachments ride along as multipart. From a sandbox or a Cron Run, only status=backlog, and reason is required: one line on why the ticket exists. From a Cron Run, Kosuke files it and is its Assignee, and a model the workspace cannot run falls back to the Cron's: model says which one it will run on. A backlog session answers shareUrl, the link to give for it.",
|
|
10805
10813
|
"tags": ["sessions"],
|
|
10806
10814
|
"x-kosuke-command": ["sessions", "create"],
|
|
10807
10815
|
"x-kosuke-attachments": true,
|
|
@@ -11057,7 +11065,7 @@
|
|
|
11057
11065
|
},
|
|
11058
11066
|
"put": {
|
|
11059
11067
|
"operationId": "sessionsUpdate",
|
|
11060
|
-
"summary": "Change title, status, model, Auto, Assignee, priority, Sandbox size (sandboxSize) or App stack (appStack). Which changes are legal depends on the current status; the handler decides. sandboxSize and appStack change only while the session is in the Backlog: once it started they are fixed, and 409 SANDBOX_SETTINGS_LOCKED refuses them.",
|
|
11068
|
+
"summary": "Change title, status, model, Auto, Assignee, priority, Sandbox size (sandboxSize) or App stack (appStack). Which changes are legal depends on the current status; the handler decides. sandboxSize and appStack change only while the session is in the Backlog: once it started they are fixed, and 409 SANDBOX_SETTINGS_LOCKED refuses them. A sandbox or a Cron Run may change only the title and priority of a Backlog session it filed.",
|
|
11061
11069
|
"tags": ["sessions"],
|
|
11062
11070
|
"x-kosuke-command": ["sessions", "update"],
|
|
11063
11071
|
"x-kosuke-sandbox-token": true,
|
|
@@ -11528,7 +11536,7 @@
|
|
|
11528
11536
|
"/api/projects/{projectId}/chat-sessions/{sessionId}/artifacts/{artifactId}": {
|
|
11529
11537
|
"get": {
|
|
11530
11538
|
"operationId": "sessionsArtifactsGet",
|
|
11531
|
-
"summary": "Read one artifact of the session, by its id or its slug
|
|
11539
|
+
"summary": "Read one artifact of the session, by its id or its slug, such as `testing-checklist`, `qa-report` or `review`: a markdown or html one carries its body, an image or a video a presigned url, its media type and its size.",
|
|
11532
11540
|
"tags": ["sessions"],
|
|
11533
11541
|
"x-kosuke-command": ["sessions", "artifacts", "get"],
|
|
11534
11542
|
"x-kosuke-sandbox-token": true,
|
|
@@ -12052,7 +12060,7 @@
|
|
|
12052
12060
|
},
|
|
12053
12061
|
"post": {
|
|
12054
12062
|
"operationId": "sessionsSend",
|
|
12055
|
-
"summary": "Send a message: starts a turn, or waits Up next while one is running. To steer the running turn with it, steer the Queued Message it becomes. Attachments ride along as multipart.",
|
|
12063
|
+
"summary": "Send a message: starts a turn, or waits Up next while one is running. To steer the running turn with it, steer the Queued Message it becomes. Attachments ride along as multipart. Use it over steer only for attachments, a message that runs a skill, or text over 10,000 characters.",
|
|
12056
12064
|
"tags": ["sessions"],
|
|
12057
12065
|
"x-kosuke-command": ["sessions", "send"],
|
|
12058
12066
|
"x-kosuke-attachments": true,
|
|
@@ -14045,7 +14053,7 @@
|
|
|
14045
14053
|
"/api/projects/{projectId}/chat-sessions/{sessionId}/prompt": {
|
|
14046
14054
|
"patch": {
|
|
14047
14055
|
"operationId": "sessionsEditPrompt",
|
|
14048
|
-
"summary": "Rewrite the saved prompt of a backlog session, keeping or replacing its attachments. Multipart only. With ifRevision, the promptRevision `sessions get` gave, it is refused with 409 TICKET_EDITED when the prompt changed since; Sensei and a Cron Run must pass it.",
|
|
14056
|
+
"summary": "Rewrite the saved prompt of a backlog session, keeping or replacing its attachments. Multipart only. With ifRevision, the promptRevision `sessions get` gave, it is refused with 409 TICKET_EDITED when the prompt changed since; Sensei and a Cron Run must pass it. Send the whole new description, and only for a new goal; an agent rewrites only a ticket it filed unless the member asked.",
|
|
14049
14057
|
"tags": ["sessions"],
|
|
14050
14058
|
"x-kosuke-command": ["sessions", "edit-prompt"],
|
|
14051
14059
|
"x-kosuke-attachments": true,
|
|
@@ -15016,7 +15024,7 @@
|
|
|
15016
15024
|
"/api/projects/{projectId}/chat-sessions/{sessionId}/steer": {
|
|
15017
15025
|
"post": {
|
|
15018
15026
|
"operationId": "sessionsSteer",
|
|
15019
|
-
"summary": "Send a message and steer it into your running turn. Answers delivery steer, queued (the turn could not take it), job (no turn was running) or refused (the turn was stopped).",
|
|
15027
|
+
"summary": "Send a message and steer it into your running turn. Answers delivery steer, queued (the turn could not take it), job (no turn was running) or refused (the turn was stopped). Use it for plain text up to 10,000 characters; on queued or refused, say where the message is.",
|
|
15020
15028
|
"tags": ["sessions"],
|
|
15021
15029
|
"x-kosuke-command": ["sessions", "steer"],
|
|
15022
15030
|
"x-kosuke-sandbox-token": true,
|
|
@@ -18579,7 +18587,7 @@
|
|
|
18579
18587
|
"/api/projects/{projectId}/skills": {
|
|
18580
18588
|
"get": {
|
|
18581
18589
|
"operationId": "projectsSkills",
|
|
18582
|
-
"summary": "List the skills the agent can invoke in this project, for one provider: the project's own, the workspace's and the member's, the plugins', and Kosuke's own skills in the kosuke plugin, which every chat session carries as kosuke:<name>. From a sandbox, sessionId defaults to its own chat session.",
|
|
18590
|
+
"summary": "List the skills the agent can invoke in this project, for one provider: the project's own, the workspace's and the member's, the plugins', and Kosuke's own skills in the kosuke plugin, which every chat session carries as kosuke:<name>. From a sandbox, sessionId defaults to its own chat session. provider is the session's agent: anthropic for Claude, GLM, Kimi and DeepSeek; openai for Codex; meta for Muse; google for Gemini; xai for Grok. Check a skill is listed before you send a message that runs it.",
|
|
18583
18591
|
"tags": ["projects"],
|
|
18584
18592
|
"x-kosuke-command": ["projects", "skills"],
|
|
18585
18593
|
"x-kosuke-sandbox-token": true,
|
|
@@ -18710,7 +18718,7 @@
|
|
|
18710
18718
|
"/api/projects/{projectId}/workflow": {
|
|
18711
18719
|
"post": {
|
|
18712
18720
|
"operationId": "projectsSwitchWorkflow",
|
|
18713
|
-
"summary": "Switch a project between YOLO mode and Collaboration. YOLO completes every Active and Under Review session and turns Backlog sessions into Backlog items; switching back revives the sessions it closed.",
|
|
18721
|
+
"summary": "Switch a project between YOLO mode and Collaboration. YOLO completes every Active and Under Review session and turns Backlog sessions into Backlog items; switching back revives the sessions it closed. Before a switch to YOLO, list the Active, Under Review and Backlog sessions it closes (`sessions list --status active,under-review,backlog`) and switch only on the member's yes in a later message. A YOLO project's work goes into its one chat, the oldest session not Completed: steer it, or create one when there is none, and never run /kosuke:ship there. A refusal (BRANCH_PROTECTED, TURN_IN_FLIGHT, QUEUED_FILES, BACKLOG_FILES) changed nothing: say it.",
|
|
18714
18722
|
"tags": ["projects"],
|
|
18715
18723
|
"x-kosuke-command": ["projects", "switch-workflow"],
|
|
18716
18724
|
"x-kosuke-sandbox-token": true,
|
|
@@ -20025,7 +20033,7 @@
|
|
|
20025
20033
|
},
|
|
20026
20034
|
"memory": {
|
|
20027
20035
|
"type": "string",
|
|
20028
|
-
"enum": ["
|
|
20036
|
+
"enum": ["general.md"]
|
|
20029
20037
|
},
|
|
20030
20038
|
"integration": {
|
|
20031
20039
|
"not": {}
|
|
@@ -21104,7 +21112,7 @@
|
|
|
21104
21112
|
"/api/sensei/memory": {
|
|
21105
21113
|
"get": {
|
|
21106
21114
|
"operationId": "senseiMemoryGet",
|
|
21107
|
-
"summary": "Read your
|
|
21115
|
+
"summary": "Read your private Memory file, general.md, and its revision.",
|
|
21108
21116
|
"tags": ["sensei"],
|
|
21109
21117
|
"x-kosuke-command": ["sensei", "memory", "get"],
|
|
21110
21118
|
"x-kosuke-sandbox-token": true,
|
|
@@ -21171,7 +21179,7 @@
|
|
|
21171
21179
|
},
|
|
21172
21180
|
"file": {
|
|
21173
21181
|
"type": "string",
|
|
21174
|
-
"enum": ["
|
|
21182
|
+
"enum": ["general.md"]
|
|
21175
21183
|
},
|
|
21176
21184
|
"cardId": {
|
|
21177
21185
|
"description": "The Memory card the member approved to start this Turn.",
|
|
@@ -21513,62 +21521,6 @@
|
|
|
21513
21521
|
}
|
|
21514
21522
|
}
|
|
21515
21523
|
},
|
|
21516
|
-
"/api/sensei/reels/proposals": {
|
|
21517
|
-
"get": {
|
|
21518
|
-
"operationId": "senseiReelsProposals",
|
|
21519
|
-
"summary": "Read your Backlog proposals newest first by ticket creation or edit, ten per page, excluding the ones you skipped at the current ticket version.",
|
|
21520
|
-
"tags": ["sensei"],
|
|
21521
|
-
"x-kosuke-command": ["sensei", "reels", "proposals"],
|
|
21522
|
-
"x-kosuke-sandbox-token": true,
|
|
21523
|
-
"x-kosuke-cron-token": true,
|
|
21524
|
-
"x-kosuke-sensei-token": true,
|
|
21525
|
-
"parameters": [
|
|
21526
|
-
{
|
|
21527
|
-
"name": "cursor",
|
|
21528
|
-
"in": "query",
|
|
21529
|
-
"required": false,
|
|
21530
|
-
"description": "Opaque cursor from the previous page.",
|
|
21531
|
-
"schema": {
|
|
21532
|
-
"description": "Opaque cursor from the previous page.",
|
|
21533
|
-
"type": "string",
|
|
21534
|
-
"maxLength": 100
|
|
21535
|
-
}
|
|
21536
|
-
}
|
|
21537
|
-
],
|
|
21538
|
-
"responses": {
|
|
21539
|
-
"2XX": {
|
|
21540
|
-
"description": "Success envelope",
|
|
21541
|
-
"content": {
|
|
21542
|
-
"application/json": {
|
|
21543
|
-
"schema": {
|
|
21544
|
-
"$ref": "#/components/schemas/ApiSuccess"
|
|
21545
|
-
}
|
|
21546
|
-
}
|
|
21547
|
-
}
|
|
21548
|
-
},
|
|
21549
|
-
"4XX": {
|
|
21550
|
-
"description": "Error envelope",
|
|
21551
|
-
"content": {
|
|
21552
|
-
"application/json": {
|
|
21553
|
-
"schema": {
|
|
21554
|
-
"$ref": "#/components/schemas/ApiError"
|
|
21555
|
-
}
|
|
21556
|
-
}
|
|
21557
|
-
}
|
|
21558
|
-
},
|
|
21559
|
-
"5XX": {
|
|
21560
|
-
"description": "Error envelope",
|
|
21561
|
-
"content": {
|
|
21562
|
-
"application/json": {
|
|
21563
|
-
"schema": {
|
|
21564
|
-
"$ref": "#/components/schemas/ApiError"
|
|
21565
|
-
}
|
|
21566
|
-
}
|
|
21567
|
-
}
|
|
21568
|
-
}
|
|
21569
|
-
}
|
|
21570
|
-
}
|
|
21571
|
-
},
|
|
21572
21524
|
"/api/sensei/reels/ranks": {
|
|
21573
21525
|
"get": {
|
|
21574
21526
|
"operationId": "senseiReelsRanks",
|
|
@@ -21612,71 +21564,6 @@
|
|
|
21612
21564
|
}
|
|
21613
21565
|
}
|
|
21614
21566
|
},
|
|
21615
|
-
"/api/sensei/reels/skips": {
|
|
21616
|
-
"post": {
|
|
21617
|
-
"operationId": "senseiReelsSkips",
|
|
21618
|
-
"summary": "Skip your Backlog proposal on every device until its ticket version changes.",
|
|
21619
|
-
"tags": ["sensei"],
|
|
21620
|
-
"x-kosuke-command": ["sensei", "reels", "skips"],
|
|
21621
|
-
"x-kosuke-sandbox-token": true,
|
|
21622
|
-
"x-kosuke-cron-token": true,
|
|
21623
|
-
"x-kosuke-sensei-token": true,
|
|
21624
|
-
"requestBody": {
|
|
21625
|
-
"required": true,
|
|
21626
|
-
"content": {
|
|
21627
|
-
"application/json": {
|
|
21628
|
-
"schema": {
|
|
21629
|
-
"type": "object",
|
|
21630
|
-
"properties": {
|
|
21631
|
-
"sessionId": {
|
|
21632
|
-
"type": "string",
|
|
21633
|
-
"format": "uuid",
|
|
21634
|
-
"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)$"
|
|
21635
|
-
},
|
|
21636
|
-
"ticketVersion": {
|
|
21637
|
-
"type": "string",
|
|
21638
|
-
"pattern": "^[a-f0-9]{64}$"
|
|
21639
|
-
}
|
|
21640
|
-
},
|
|
21641
|
-
"required": ["sessionId", "ticketVersion"]
|
|
21642
|
-
}
|
|
21643
|
-
}
|
|
21644
|
-
}
|
|
21645
|
-
},
|
|
21646
|
-
"responses": {
|
|
21647
|
-
"2XX": {
|
|
21648
|
-
"description": "Success envelope",
|
|
21649
|
-
"content": {
|
|
21650
|
-
"application/json": {
|
|
21651
|
-
"schema": {
|
|
21652
|
-
"$ref": "#/components/schemas/ApiSuccess"
|
|
21653
|
-
}
|
|
21654
|
-
}
|
|
21655
|
-
}
|
|
21656
|
-
},
|
|
21657
|
-
"4XX": {
|
|
21658
|
-
"description": "Error envelope",
|
|
21659
|
-
"content": {
|
|
21660
|
-
"application/json": {
|
|
21661
|
-
"schema": {
|
|
21662
|
-
"$ref": "#/components/schemas/ApiError"
|
|
21663
|
-
}
|
|
21664
|
-
}
|
|
21665
|
-
}
|
|
21666
|
-
},
|
|
21667
|
-
"5XX": {
|
|
21668
|
-
"description": "Error envelope",
|
|
21669
|
-
"content": {
|
|
21670
|
-
"application/json": {
|
|
21671
|
-
"schema": {
|
|
21672
|
-
"$ref": "#/components/schemas/ApiError"
|
|
21673
|
-
}
|
|
21674
|
-
}
|
|
21675
|
-
}
|
|
21676
|
-
}
|
|
21677
|
-
}
|
|
21678
|
-
}
|
|
21679
|
-
},
|
|
21680
21567
|
"/api/sensei/repository": {
|
|
21681
21568
|
"post": {
|
|
21682
21569
|
"operationId": "senseiRepository",
|
|
@@ -22127,7 +22014,7 @@
|
|
|
22127
22014
|
"/api/sensei/suggest": {
|
|
22128
22015
|
"post": {
|
|
22129
22016
|
"operationId": "senseiSuggest",
|
|
22130
|
-
"summary": "Put suggestion pills in a message of your Turn's own thread, under your words. A tap on a pill fills the member's reply and sends nothing; a newThread pill is a new topic, and its tap starts a thread of its own with those words. Refused when your Turn stopped.",
|
|
22017
|
+
"summary": "Put suggestion pills in a message of your Turn's own thread, under your words. A tap on a pill fills the member's reply and sends nothing; a newThread pill is a new topic, and its tap starts a thread of its own with those words. Refused when your Turn stopped. Each pill is in the member's words; newThread only for an unrelated topic. It is the last thing your Turn posts: end your Turn after it.",
|
|
22131
22018
|
"tags": ["sensei"],
|
|
22132
22019
|
"x-kosuke-command": ["sensei", "suggest"],
|
|
22133
22020
|
"x-kosuke-sandbox-token": true,
|
|
@@ -22211,7 +22098,7 @@
|
|
|
22211
22098
|
"/api/sensei/teammate-messages": {
|
|
22212
22099
|
"post": {
|
|
22213
22100
|
"operationId": "senseiMessagesSend",
|
|
22214
|
-
"summary": "Send a message to a member's Sensei. Any sender can: you, your Sensei
|
|
22101
|
+
"summary": "Send a message to a member's Sensei. Any sender can: you, your Sensei, a Cron Run, or a session's agent; the sender is read from the credential. Their Sensei shows it on a card that says who sent it, with the action that fits, and they are notified as for any card. Name the project with projectId, and optionally the Chat Session (sessionId) or pull request (pullRequest, with projectId) it is about; a sessionId alone names its project. memberId is required: the id a Member mention carries or `kosuke workspaces members` prints, never a guess between members who share a name. key is a slug such as merge-plan, ticket-<slug> or qa-guide, and text, up to 60,000 characters, is everything the member needs, so it can hold a ticket prompt or a whole Project QA Guide. title, why (one line: why this member), paths (the repository paths it is about) and link (a Kosuke path starting with / or an https URL the card opens) are optional. The same key with new text or a new link updates the open card and raises the revision; the same again writes nothing. Pass ifRevision, the revision an earlier send answered, to be refused with MESSAGE_CHANGED when it moved on. When a member sent it, the recipient's approve, edit, reject or reply comes back to the thread it was sent from. Answers id, revision, updated and the recipient: say who it went to. Keys and text by kind: ticket-<slug of the title>, whose text is \"File the ticket <title> in <project>'s Backlog.\" then the reason and the description; start-<slug>, only for an unassigned or the member's own ticket while nothing of theirs builds or waits on them; delete-<slug> with its evidence; merge-<slug> with the merged text and each task's promptRevision; cron-<slug> with its prompt, crontab and projects; merge-plan with each pull request's number, head SHA and action. Before a ticket message, read the open tasks (`tasks list --include-prompt`): send nothing for work a session already covers, and name the Todo task that covers part of it in text. A 400 VALIDATION_ERROR wrote nothing: fix the fields in details and send again with the same key and memberId. Any other refusal is final: send to nobody else instead. An unknown outcome (a timeout, a 5xx) is never sent again. Pass the body with --body or --body-file.",
|
|
22215
22102
|
"tags": ["sensei"],
|
|
22216
22103
|
"x-kosuke-command": ["sensei", "messages", "send"],
|
|
22217
22104
|
"x-kosuke-sandbox-token": true,
|
|
@@ -22408,7 +22295,7 @@
|
|
|
22408
22295
|
"/api/sensei/thread-move": {
|
|
22409
22296
|
"post": {
|
|
22410
22297
|
"operationId": "senseiThreadMove",
|
|
22411
|
-
"summary": "Move the member’s message that started this Turn’s thread into another of their threads, which it continues. Only Sensei calls it, and only before the Turn has written anything: Kosuke ends this Turn, sends the message into that thread, where it is answered with that thread’s memory, and removes this thread. Write no answer after it.",
|
|
22298
|
+
"summary": "Move the member’s message that started this Turn’s thread into another of their threads, which it continues. Only Sensei calls it, and only before the Turn has written anything: Kosuke ends this Turn, sends the message into that thread, where it is answered with that thread’s memory, and removes this thread. Write no answer after it. Move it when it answers a question you asked in that thread, or is about that thread's work or session.",
|
|
22412
22299
|
"tags": ["sensei"],
|
|
22413
22300
|
"x-kosuke-command": ["sensei", "thread", "move"],
|
|
22414
22301
|
"x-kosuke-sandbox-token": true,
|
|
@@ -22471,7 +22358,7 @@
|
|
|
22471
22358
|
"/api/sensei/thread-split": {
|
|
22472
22359
|
"post": {
|
|
22473
22360
|
"operationId": "senseiThreadSplit",
|
|
22474
|
-
"summary": "Split the member’s message that started this Turn’s thread into one thread per ask. Only Sensei calls it, once per message. The member’s message stays the root of this thread, which does the first ask; each other ask becomes a thread of its own with its own Turn. The reply lists the asks handed off: do not do those here.",
|
|
22361
|
+
"summary": "Split the member’s message that started this Turn’s thread into one thread per ask. Only Sensei calls it, once per message. The member’s message stays the root of this thread, which does the first ask; each other ask becomes a thread of its own with its own Turn. The reply lists the asks handed off: do not do those here. Each ask stands alone: \"Ship A, B and C\" is three asks, the steps of one piece of work are one.",
|
|
22475
22362
|
"tags": ["sensei"],
|
|
22476
22363
|
"x-kosuke-command": ["sensei", "thread", "split"],
|
|
22477
22364
|
"x-kosuke-sandbox-token": true,
|
|
@@ -23032,7 +22919,7 @@
|
|
|
23032
22919
|
"/api/tasks": {
|
|
23033
22920
|
"get": {
|
|
23034
22921
|
"operationId": "tasksAll",
|
|
23035
|
-
"summary": "List tasks across your workspaces. Agent credentials stay in their workspace. includeOpenCount counts Todo and In progress with the same filters, independent of status and cursor.",
|
|
22922
|
+
"summary": "List tasks across your workspaces. Agent credentials stay in their workspace. includeOpenCount counts Todo and In progress with the same filters, independent of status and cursor. Before you file or propose a ticket, read the open ones (--status todo,in_progress --include-prompt, following meta.pagination.nextCursor with --cursor) and judge overlap by meaning, not title words: work another task or session already covers gets no new ticket.",
|
|
23036
22923
|
"tags": ["tasks"],
|
|
23037
22924
|
"x-kosuke-command": ["tasks", "all"],
|
|
23038
22925
|
"x-kosuke-sandbox-token": true,
|
|
@@ -23144,7 +23031,9 @@
|
|
|
23144
23031
|
"name": "includePrompt",
|
|
23145
23032
|
"in": "query",
|
|
23146
23033
|
"required": false,
|
|
23034
|
+
"description": "Adds each task's prompt: a Todo task's description, or its first message after Start, cut at 4,000 characters (promptTruncated). Read `tasks get` for a cut or empty one.",
|
|
23147
23035
|
"schema": {
|
|
23036
|
+
"description": "Adds each task's prompt: a Todo task's description, or its first message after Start, cut at 4,000 characters (promptTruncated). Read `tasks get` for a cut or empty one.",
|
|
23148
23037
|
"type": "boolean"
|
|
23149
23038
|
}
|
|
23150
23039
|
},
|
|
@@ -23320,7 +23209,7 @@
|
|
|
23320
23209
|
},
|
|
23321
23210
|
"post": {
|
|
23322
23211
|
"operationId": "userCronsCreate",
|
|
23323
|
-
"summary": "Create a Personal Cron, enabled, with you as its owner. A Personal Cron belongs to you and no workspace: with Personal Repositories or Apps it runs in its own sandbox; without, in its Sensei Thread. Repository runs use your own Subscriptions; thread runs use your Subscriptions or Kosuke free when you hold none. Kosuke free cannot run a Cron with repositories yet. The crontab is read in the cron's own timezone, and may not fire more often than every 15 minutes. The model is an encoded id such as anthropic:opus__xhigh; repositories require an explicit Model from any released Provider on one of your Subscriptions. Changing to Free while you hold a Subscription, or to a personal Model without one, is refused. Without repositories, null or left out runs on the thread’s model. From your Sensei it is refused with 409 CRON_ALREADY_EXISTS when you have a Personal Cron by that name.",
|
|
23212
|
+
"summary": "Create a Personal Cron, enabled, with you as its owner. A Personal Cron belongs to you and no workspace: with Personal Repositories or Apps it runs in its own sandbox; without, in its Sensei Thread. Repository runs use your own Subscriptions; thread runs use your Subscriptions or Kosuke free when you hold none. Kosuke free cannot run a Cron with repositories yet. The crontab is read in the cron's own timezone, and may not fire more often than every 15 minutes. The model is an encoded id such as anthropic:opus__xhigh; repositories require an explicit Model from any released Provider on one of your Subscriptions. Changing to Free while you hold a Subscription, or to a personal Model without one, is refused. Without repositories, null or left out runs on the thread’s model. From your Sensei it is refused with 409 CRON_ALREADY_EXISTS when you have a Personal Cron by that name: update that one instead. From Sensei, create or change one only when the member asks. To move a workspace Cron here, read it and recreate it with its timezone (its model only when the member's own Subscription runs it); the member deletes the workspace one in the app.",
|
|
23324
23213
|
"tags": ["user"],
|
|
23325
23214
|
"x-kosuke-command": ["user", "crons", "create"],
|
|
23326
23215
|
"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.
|
|
3
|
+
"version": "1.0.7",
|
|
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,12 @@
|
|
|
40
40
|
"vitest": "^4.1.12"
|
|
41
41
|
},
|
|
42
42
|
"kosukeRelease": {
|
|
43
|
-
"sourceCommit": "
|
|
44
|
-
"sourceIdentity": "
|
|
43
|
+
"sourceCommit": "bc66357937d20c3224158d1242666e8bc27b70e7",
|
|
44
|
+
"sourceIdentity": "119a65423855174a560baee6ec929f2ef6cc3cf15fdd1aaedbbe67c20e55c1d6",
|
|
45
45
|
"fragments": [
|
|
46
|
-
"
|
|
46
|
+
"cli-drop-lead-aliases-k3v8pq.json",
|
|
47
|
+
"help-from-guides-r4w8kn.json",
|
|
48
|
+
"memory-general-only-r4t8nz.json"
|
|
47
49
|
]
|
|
48
50
|
}
|
|
49
51
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export const operation = {
|
|
2
|
-
"method": "get",
|
|
3
|
-
"path": "/api/sensei/reels/proposals",
|
|
4
|
-
"command": [
|
|
5
|
-
"sensei",
|
|
6
|
-
"reels",
|
|
7
|
-
"proposals"
|
|
8
|
-
],
|
|
9
|
-
"summary": "Read your Backlog proposals newest first by ticket creation or edit, ten per page, excluding the ones you skipped at the current ticket version.",
|
|
10
|
-
"pathParams": [],
|
|
11
|
-
"query": [
|
|
12
|
-
{
|
|
13
|
-
"name": "cursor",
|
|
14
|
-
"flag": "cursor",
|
|
15
|
-
"kind": "string",
|
|
16
|
-
"required": false,
|
|
17
|
-
"description": "Opaque cursor from the previous page."
|
|
18
|
-
}
|
|
19
|
-
],
|
|
20
|
-
"body": null,
|
|
21
|
-
"multipart": null,
|
|
22
|
-
"attachments": false,
|
|
23
|
-
"anonymous": false,
|
|
24
|
-
"agents": "all"
|
|
25
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export const operation = {
|
|
2
|
-
"method": "post",
|
|
3
|
-
"path": "/api/sensei/reels/skips",
|
|
4
|
-
"command": [
|
|
5
|
-
"sensei",
|
|
6
|
-
"reels",
|
|
7
|
-
"skips"
|
|
8
|
-
],
|
|
9
|
-
"summary": "Skip your Backlog proposal on every device until its ticket version changes.",
|
|
10
|
-
"pathParams": [],
|
|
11
|
-
"query": [],
|
|
12
|
-
"body": {
|
|
13
|
-
"fields": [
|
|
14
|
-
{
|
|
15
|
-
"name": "sessionId",
|
|
16
|
-
"flag": "session-id",
|
|
17
|
-
"kind": "string",
|
|
18
|
-
"required": true
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "ticketVersion",
|
|
22
|
-
"flag": "ticket-version",
|
|
23
|
-
"kind": "string",
|
|
24
|
-
"required": true
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"required": true
|
|
28
|
-
},
|
|
29
|
-
"multipart": null,
|
|
30
|
-
"attachments": false,
|
|
31
|
-
"anonymous": false,
|
|
32
|
-
"agents": "all"
|
|
33
|
-
};
|