@kosuke-ai/kosuke 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +11 -11
  3. package/dist/agent/summary.js +2 -2
  4. package/dist/commands/agent.js +4 -3
  5. package/dist/commands/auth.js +6 -7
  6. package/dist/commands/hand-written.js +93 -0
  7. package/dist/commands/integrations.js +9 -12
  8. package/dist/commands/skill-runs.js +15 -12
  9. package/dist/commands/watch.js +5 -5
  10. package/dist/generated/commands/{user/crons-artifacts-list.js → crons/artifacts-list--personal.js} +3 -1
  11. package/dist/generated/commands/{user/crons-create.js → crons/create--personal.js} +5 -3
  12. package/dist/generated/commands/crons/create.js +3 -3
  13. package/dist/generated/commands/{user/crons-get.js → crons/get--personal.js} +3 -1
  14. package/dist/generated/commands/{user/crons-list.js → crons/list--personal.js} +3 -1
  15. package/dist/generated/commands/{user/crons-run.js → crons/run--personal.js} +3 -1
  16. package/dist/generated/commands/{user/crons-runs-artifacts-get.js → crons/runs-artifacts-get--personal.js} +3 -1
  17. package/dist/generated/commands/{user/crons-runs-artifacts-list.js → crons/runs-artifacts-list--personal.js} +3 -1
  18. package/dist/generated/commands/{user/crons-runs-get.js → crons/runs-get--personal.js} +3 -1
  19. package/dist/generated/commands/{user/crons-runs-list.js → crons/runs-list--personal.js} +3 -1
  20. package/dist/generated/commands/crons/{runs-messages.js → runs-messages-list.js} +2 -1
  21. package/dist/generated/commands/{user/crons-update.js → crons/update--personal.js} +4 -2
  22. package/dist/generated/commands/crons/update.js +2 -2
  23. package/dist/generated/commands/{deploy → deploys}/cancel.js +1 -1
  24. package/dist/generated/commands/{deploy → deploys}/list.js +1 -1
  25. package/dist/generated/commands/{deploy/message.js → deploys/messages-get.js} +4 -3
  26. package/dist/generated/commands/{deploy/messages.js → deploys/messages-list.js} +4 -3
  27. package/dist/generated/commands/{deploy/set-model.js → deploys/model-set.js} +3 -2
  28. package/dist/generated/commands/{deploy → deploys}/queue-delete.js +1 -1
  29. package/dist/generated/commands/{deploy → deploys}/queue-list.js +1 -1
  30. package/dist/generated/commands/{deploy → deploys}/queue-move.js +1 -1
  31. package/dist/generated/commands/{deploy → deploys}/queue-resume.js +1 -1
  32. package/dist/generated/commands/{deploy → deploys}/queue-send.js +1 -1
  33. package/dist/generated/commands/{deploy → deploys}/queue-steer.js +1 -1
  34. package/dist/generated/commands/{deploy → deploys}/queue-update.js +1 -1
  35. package/dist/generated/commands/{deploy/run.js → deploys/start.js} +2 -2
  36. package/dist/generated/commands/devices/list.js +1 -1
  37. package/dist/generated/commands/devices/{request.js → requests-create.js} +3 -2
  38. package/dist/generated/commands/{user/files-delete.js → files/delete--personal.js} +3 -1
  39. package/dist/generated/commands/{user/files-mkdir.js → files/folders-create--personal.js} +5 -2
  40. package/dist/generated/commands/files/{mkdir.js → folders-create.js} +2 -1
  41. package/dist/generated/commands/{user/files-get.js → files/get--personal.js} +3 -1
  42. package/dist/generated/commands/{user/files-list.js → files/list--personal.js} +3 -1
  43. package/dist/generated/commands/{user/files-move.js → files/move--personal.js} +3 -1
  44. package/dist/generated/commands/{user/files-put.js → files/set--personal.js} +4 -2
  45. package/dist/generated/commands/files/{put.js → set.js} +1 -1
  46. package/dist/generated/commands/github/{status.js → connection-get.js} +2 -1
  47. package/dist/generated/commands/github/{repositories.js → repositories-list.js} +2 -1
  48. package/dist/generated/commands/index.js +330 -324
  49. package/dist/generated/commands/{user/integrations-linkedin-connect.js → integrations/browser-connections-create--personal-network-linkedin.js} +9 -3
  50. package/dist/generated/commands/{user/integrations-x-connect.js → integrations/browser-connections-create--personal-network-x.js} +9 -3
  51. package/dist/generated/commands/{user/integrations-linkedin-list.js → integrations/browser-connections-list--personal-network-linkedin.js} +8 -2
  52. package/dist/generated/commands/{user/integrations-x-list.js → integrations/browser-connections-list--personal-network-x.js} +8 -2
  53. package/dist/generated/commands/{user/integrations-linkedin-reconnect.js → integrations/browser-connections-reconnect--personal-network-linkedin.js} +8 -2
  54. package/dist/generated/commands/{user/integrations-x-reconnect.js → integrations/browser-connections-reconnect--personal-network-x.js} +8 -2
  55. package/dist/generated/commands/{user/integrations-remove.js → integrations/connections-delete--personal.js} +6 -3
  56. package/dist/generated/commands/{workspaces/integrations-remove.js → integrations/connections-delete.js} +2 -2
  57. package/dist/generated/commands/{workspaces/integrations-get.js → integrations/connections-get.js} +1 -1
  58. package/dist/generated/commands/{user/integrations-list.js → integrations/connections-list--personal.js} +4 -1
  59. package/dist/generated/commands/{workspaces/integrations-list.js → integrations/connections-list.js} +1 -1
  60. package/dist/generated/commands/integrations/{execute.js → tools-call.js} +3 -1
  61. package/dist/generated/commands/integrations/{tools.js → tools-list.js} +4 -2
  62. package/dist/generated/commands/mac/{apps.js → apps-list.js} +2 -1
  63. package/dist/generated/commands/mac/{ax-tree.js → ax-tree-get.js} +3 -2
  64. package/dist/generated/commands/mac/{browser-connections.js → browser-connections-list.js} +3 -1
  65. package/dist/generated/commands/mac/{browser-connection-check.js → browser-connections-update.js} +6 -4
  66. package/dist/generated/commands/mac/{browser-sign-in.js → browser-login.js} +2 -1
  67. package/dist/generated/commands/mac/{browser-profiles.js → browser-profiles-list.js} +3 -1
  68. package/dist/generated/commands/mac/{browser.js → browser-run.js} +2 -1
  69. package/dist/generated/commands/mac/click.js +2 -2
  70. package/dist/generated/commands/mac/{file-delete.js → files-delete.js} +2 -1
  71. package/dist/generated/commands/mac/{file-read.js → files-get.js} +2 -1
  72. package/dist/generated/commands/mac/{file-list.js → files-list.js} +2 -1
  73. package/dist/generated/commands/mac/{file-move.js → files-move.js} +2 -1
  74. package/dist/generated/commands/mac/{file-write.js → files-set.js} +2 -1
  75. package/dist/generated/commands/mac/key.js +1 -1
  76. package/dist/generated/commands/mac/{screenshot.js → screenshots-create.js} +3 -2
  77. package/dist/generated/commands/mac/scroll.js +2 -2
  78. package/dist/generated/commands/mac/{tools.js → status-get.js} +2 -1
  79. package/dist/generated/commands/mac/type.js +2 -2
  80. package/dist/generated/commands/mac/{windows.js → windows-list.js} +2 -1
  81. package/dist/generated/commands/{user/plugins-list.js → plugins/list--personal.js} +3 -1
  82. package/dist/generated/commands/{workspaces/plugins-list.js → plugins/list.js} +0 -1
  83. package/dist/generated/commands/{user/plugins-update.js → plugins/update--personal.js} +3 -1
  84. package/dist/generated/commands/{workspaces/plugins-update.js → plugins/update.js} +0 -1
  85. package/dist/generated/commands/preview/{health.js → health-get.js} +2 -1
  86. package/dist/generated/commands/preview/{shared-artifact.js → shared-artifacts-get.js} +2 -1
  87. package/dist/generated/commands/preview/{shared.js → shared-get.js} +2 -1
  88. package/dist/generated/commands/projects/{batch-merging-add-member.js → batch-merging-members-create.js} +2 -1
  89. package/dist/generated/commands/projects/{batch-merging-eject.js → batch-merging-members-delete.js} +2 -1
  90. package/dist/generated/commands/projects/{branches.js → branches-list.js} +2 -1
  91. package/dist/generated/commands/projects/create.js +1 -1
  92. package/dist/generated/commands/projects/{env-vars-add.js → env-vars-create.js} +1 -1
  93. package/dist/generated/commands/projects/{env-vars-remove.js → env-vars-delete.js} +1 -1
  94. package/dist/generated/commands/projects/{labels.js → labels-list.js} +2 -1
  95. package/dist/generated/commands/projects/{labels-usage.js → labels-sessions-list.js} +2 -1
  96. package/dist/generated/commands/projects/{labels-color.js → labels-update.js} +1 -1
  97. package/dist/generated/commands/projects/{live-logs.js → live-logs-list.js} +2 -1
  98. package/dist/generated/commands/projects/{live-query.js → live-queries-run.js} +2 -1
  99. package/dist/generated/commands/projects/{live-traffic.js → live-traffic-get.js} +2 -1
  100. package/dist/generated/commands/projects/{live-write.js → live-writes-create.js} +2 -1
  101. package/dist/generated/commands/projects/{live-write-status.js → live-writes-get.js} +2 -1
  102. package/dist/generated/commands/projects/{releases.js → releases-list.js} +2 -1
  103. package/dist/generated/commands/projects/{services-add.js → services-create.js} +1 -1
  104. package/dist/generated/commands/projects/{services-remove.js → services-delete.js} +1 -1
  105. package/dist/generated/commands/projects/{settings-import.js → settings-set.js} +1 -1
  106. package/dist/generated/commands/projects/{skills.js → skills-list.js} +3 -2
  107. package/dist/generated/commands/projects/{versions.js → versions-list.js} +2 -1
  108. package/dist/generated/commands/projects/{switch-workflow.js → workflow-set.js} +3 -2
  109. package/dist/generated/commands/prototypes/create.js +69 -0
  110. package/dist/generated/commands/{workspaces/access-status.js → providers/access-get.js} +3 -2
  111. package/dist/generated/commands/{user/subscriptions-set-default-model.js → providers/default-model-set--personal.js} +6 -3
  112. package/dist/generated/commands/{user/subscriptions-delete.js → providers/delete--personal.js} +4 -2
  113. package/dist/generated/commands/{workspaces/ai-provider-remove.js → providers/delete.js} +2 -3
  114. package/dist/generated/commands/{user/subscriptions-get.js → providers/get--personal.js} +4 -2
  115. package/dist/generated/commands/{workspaces/ai-provider-get.js → providers/get.js} +1 -2
  116. package/dist/generated/commands/{workspaces/ai-provider-google-remove.js → providers/google-delete.js} +2 -3
  117. package/dist/generated/commands/{workspaces/ai-provider-google-get.js → providers/google-get.js} +1 -2
  118. package/dist/generated/commands/{workspaces/ai-provider-google-delete-method.js → providers/google-methods-delete.js} +3 -3
  119. package/dist/generated/commands/{workspaces/ai-provider-google-select-method.js → providers/google-methods-set.js} +3 -3
  120. package/dist/generated/commands/{workspaces/ai-provider-google-save.js → providers/google-set.js} +2 -3
  121. package/dist/generated/commands/{user/subscriptions-grok-get.js → providers/grok-get--personal.js} +4 -2
  122. package/dist/generated/commands/{workspaces → providers}/grok-get.js +1 -1
  123. package/dist/generated/commands/{user/subscriptions-grok-change.js → providers/grok-update--personal.js} +5 -3
  124. package/dist/generated/commands/{workspaces/grok-change.js → providers/grok-update.js} +2 -2
  125. package/dist/generated/commands/{user/subscriptions-set-key.js → providers/keys-set--personal.js} +6 -3
  126. package/dist/generated/commands/{user/subscriptions-login-antigravity-cancel.js → providers/logins-cancel--personal-provider-antigravity.js} +9 -4
  127. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-cancel.js → providers/logins-cancel--provider-antigravity.js} +8 -4
  128. package/dist/generated/commands/{user/subscriptions-login-antigravity-complete.js → providers/logins-complete--personal-provider-antigravity.js} +9 -4
  129. package/dist/generated/commands/{user/subscriptions-login-claude-complete.js → providers/logins-complete--personal-provider-claude-code.js} +9 -4
  130. package/dist/generated/commands/{user/subscriptions-login-codex-complete.js → providers/logins-complete--personal-provider-codex.js} +9 -4
  131. package/dist/generated/commands/{user/subscriptions-login-muse-complete.js → providers/logins-complete--personal-provider-muse-code.js} +9 -4
  132. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-complete.js → providers/logins-complete--provider-antigravity.js} +8 -4
  133. package/dist/generated/commands/{workspaces/provider-login-claude-complete.js → providers/logins-complete--provider-claude-code.js} +8 -3
  134. package/dist/generated/commands/{workspaces/provider-login-codex-complete.js → providers/logins-complete--provider-codex.js} +8 -3
  135. package/dist/generated/commands/{workspaces/provider-login-muse-complete.js → providers/logins-complete--provider-muse-code.js} +8 -3
  136. package/dist/generated/commands/{user/subscriptions-logins-delete.js → providers/logins-delete--personal.js} +4 -2
  137. package/dist/generated/commands/{user/subscriptions-logins-recheck.js → providers/logins-recheck--personal.js} +4 -2
  138. package/dist/generated/commands/{workspaces/ai-provider-logins-recheck.js → providers/logins-recheck.js} +1 -2
  139. package/dist/generated/commands/{user/subscriptions-login-antigravity-start.js → providers/logins-start--personal-provider-antigravity.js} +9 -4
  140. package/dist/generated/commands/{user/subscriptions-login-claude-start.js → providers/logins-start--personal-provider-claude-code.js} +9 -4
  141. package/dist/generated/commands/{user/subscriptions-login-codex-start.js → providers/logins-start--personal-provider-codex.js} +9 -4
  142. package/dist/generated/commands/{user/subscriptions-login-muse-start.js → providers/logins-start--personal-provider-muse-code.js} +9 -4
  143. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-start.js → providers/logins-start--provider-antigravity.js} +8 -4
  144. package/dist/generated/commands/{workspaces/provider-login-claude-start.js → providers/logins-start--provider-claude-code.js} +8 -3
  145. package/dist/generated/commands/{workspaces/provider-login-codex-start.js → providers/logins-start--provider-codex.js} +8 -3
  146. package/dist/generated/commands/{workspaces/provider-login-muse-start.js → providers/logins-start--provider-muse-code.js} +8 -3
  147. package/dist/generated/commands/{workspaces/ai-provider-set.js → providers/set.js} +1 -2
  148. package/dist/generated/commands/{user/subscriptions-token-usage.js → providers/token-usage-get--personal.js} +6 -3
  149. package/dist/generated/commands/{workspaces/ai-provider-token-usage.js → providers/token-usage-get.js} +3 -3
  150. package/dist/generated/commands/{user/subscriptions-usage.js → providers/usage-get--personal.js} +6 -3
  151. package/dist/generated/commands/{workspaces/ai-provider-google-usage.js → providers/usage-get--provider-antigravity.js} +9 -4
  152. package/dist/generated/commands/{workspaces/ai-provider-usage-claude.js → providers/usage-get--provider-claude-code.js} +8 -3
  153. package/dist/generated/commands/{workspaces/ai-provider-usage-codex.js → providers/usage-get--provider-codex.js} +8 -3
  154. package/dist/generated/commands/{workspaces/ai-provider-usage-coding-plan.js → providers/usage-get--provider-coding-plan.js} +8 -3
  155. package/dist/generated/commands/{workspaces/ai-provider-usage-deepseek.js → providers/usage-get--provider-deepseek-api.js} +8 -3
  156. package/dist/generated/commands/{workspaces/ai-provider-usage-grok.js → providers/usage-get--provider-grok.js} +8 -3
  157. package/dist/generated/commands/{workspaces/ai-provider-usage-kimi-code.js → providers/usage-get--provider-kimi-code.js} +8 -3
  158. package/dist/generated/commands/{workspaces/ai-provider-usage-muse.js → providers/usage-get--provider-muse-code.js} +8 -3
  159. package/dist/generated/commands/sensei/{cards.js → cards-list.js} +2 -1
  160. package/dist/generated/commands/sensei/{cards-send-reply.js → cards-reply.js} +1 -1
  161. package/dist/generated/commands/sensei/{cards-put.js → cards-set.js} +1 -1
  162. package/dist/generated/commands/sensei/{chat.js → chat-get.js} +2 -1
  163. package/dist/generated/commands/sensei/{connect.js → connect-buttons-create.js} +2 -1
  164. package/dist/generated/commands/sensei/delegates-list.js +25 -0
  165. package/dist/generated/commands/sensei/{delegates-note.js → delegates-notes-create.js} +2 -1
  166. package/dist/generated/commands/sensei/{describe.js → describe-cards-create.js} +2 -1
  167. package/dist/generated/commands/sensei/{device-requests-decide.js → device-requests-update.js} +1 -1
  168. package/dist/generated/commands/sensei/memory-get.js +1 -1
  169. package/dist/generated/commands/sensei/{memory-put.js → memory-set.js} +4 -4
  170. package/dist/generated/commands/sensei/{merge-rule.js → merge-rule-set.js} +2 -1
  171. package/dist/generated/commands/sensei/{messages-reroute.js → messages-move.js} +1 -1
  172. package/dist/generated/commands/sensei/messages-send.js +2 -2
  173. package/dist/generated/commands/sensei/{notifications-open.js → notifications-mark-read.js} +1 -1
  174. package/dist/generated/commands/sensei/{reels-activity.js → reels-activity-list.js} +2 -1
  175. package/dist/generated/commands/sensei/{reels-ranks.js → reels-ranks-list.js} +2 -1
  176. package/dist/generated/commands/sensei/{repository.js → repository-cards-create.js} +2 -1
  177. package/dist/generated/commands/sensei/{review-approve.js → review-approvals-create.js} +2 -1
  178. package/dist/generated/commands/sensei/{review-context.js → review-context-get.js} +2 -1
  179. package/dist/generated/commands/sensei/{review-ask.js → review-requests-create.js} +3 -2
  180. package/dist/generated/commands/sensei/{sessions-assess.js → sessions-assessments-create.js} +2 -1
  181. package/dist/generated/commands/sensei/{sessions-facts.js → sessions-facts-get.js} +2 -1
  182. package/dist/generated/commands/sensei/{suggest.js → suggestions-create.js} +3 -2
  183. package/dist/generated/commands/sensei/{thread-done.js → threads-close.js} +2 -2
  184. package/dist/generated/commands/sensei/{thread-read.js → threads-get.js} +2 -2
  185. package/dist/generated/commands/sensei/{threads.js → threads-list.js} +2 -1
  186. package/dist/generated/commands/sensei/{thread-move.js → threads-move.js} +2 -2
  187. package/dist/generated/commands/sensei/{thread-split.js → threads-split.js} +2 -2
  188. package/dist/generated/commands/sensei/{widgets.js → widgets-get.js} +2 -1
  189. package/dist/generated/commands/sessions/app-stack-start.js +2 -1
  190. package/dist/generated/commands/sessions/{artifacts-attach.js → artifacts-create.js} +1 -1
  191. package/dist/generated/commands/sessions/artifacts-get.js +1 -1
  192. package/dist/generated/commands/sessions/create.js +3 -3
  193. package/dist/generated/commands/sessions/{desktop-control.js → desktop-control-set.js} +3 -1
  194. package/dist/generated/commands/sessions/{desktop.js → desktop-get.js} +2 -1
  195. package/dist/generated/commands/sessions/desktop-start.js +2 -1
  196. package/dist/generated/commands/sessions/{diff-comments-add.js → diff-comments-create.js} +1 -1
  197. package/dist/generated/commands/sessions/{diff-commits.js → diff-commits-list.js} +2 -1
  198. package/dist/generated/commands/sessions/{diff-files.js → diff-files-list.js} +2 -1
  199. package/dist/generated/commands/sessions/{diff-patch.js → diff-patch-get.js} +2 -1
  200. package/dist/generated/commands/sessions/{files-write.js → files-set.js} +1 -1
  201. package/dist/generated/commands/sessions/get.js +1 -1
  202. package/dist/generated/commands/sessions/{git-commit-message.js → git-commit-message-create.js} +2 -1
  203. package/dist/generated/commands/sessions/{git-state.js → git-state-get.js} +2 -1
  204. package/dist/generated/commands/sessions/{go-ahead-clear.js → go-ahead-delete.js} +1 -1
  205. package/dist/generated/commands/sessions/{labels-edit.js → labels-update.js} +1 -1
  206. package/dist/generated/commands/sessions/{all.js → list--all.js} +4 -1
  207. package/dist/generated/commands/sessions/{message.js → messages-get.js} +4 -3
  208. package/dist/generated/commands/sessions/{messages.js → messages-list.js} +3 -2
  209. package/dist/generated/commands/sessions/{edit-prompt.js → prompt-update.js} +3 -2
  210. package/dist/generated/commands/sessions/pull-request-mark-ready.js +40 -0
  211. package/dist/generated/commands/sessions/qa-runs-finish.js +66 -0
  212. package/dist/generated/commands/sessions/qa-runs-fixes-create.js +65 -0
  213. package/dist/generated/commands/sessions/qa-runs-get.js +22 -0
  214. package/dist/generated/commands/sessions/qa-runs-results-create.js +45 -0
  215. package/dist/generated/commands/sessions/qa-runs-start.js +75 -0
  216. package/dist/generated/commands/sessions/qa-runs-stop.js +43 -0
  217. package/dist/generated/commands/sessions/qa-set.js +1 -1
  218. package/dist/generated/commands/sessions/review-set.js +53 -0
  219. package/dist/generated/commands/sessions/{runtime-command.js → runtime-commands-run.js} +2 -1
  220. package/dist/generated/commands/sessions/send.js +1 -1
  221. package/dist/generated/commands/sessions/{activate.js → start.js} +1 -1
  222. package/dist/generated/commands/sessions/steer.js +1 -1
  223. package/dist/generated/commands/sessions/update.js +2 -2
  224. package/dist/generated/commands/{user/skills-create.js → skills/create--personal.js} +3 -1
  225. package/dist/generated/commands/{workspaces/skills-create.js → skills/create.js} +0 -1
  226. package/dist/generated/commands/{user/skills-delete.js → skills/delete--personal.js} +3 -1
  227. package/dist/generated/commands/{workspaces/skills-delete.js → skills/delete.js} +0 -1
  228. package/dist/generated/commands/{user/skills-get.js → skills/get--personal.js} +3 -1
  229. package/dist/generated/commands/{workspaces/skills-get.js → skills/get.js} +0 -1
  230. package/dist/generated/commands/{user/skills-list.js → skills/list--personal.js} +3 -1
  231. package/dist/generated/commands/{workspaces/skills-list.js → skills/list.js} +0 -1
  232. package/dist/generated/commands/{user/skills-update.js → skills/update--personal.js} +3 -1
  233. package/dist/generated/commands/{workspaces/skills-update.js → skills/update.js} +0 -1
  234. package/dist/generated/commands/{personal-tasks/create.js → tasks/create--personal.js} +5 -2
  235. package/dist/generated/commands/tasks/create.js +7 -5
  236. package/dist/generated/commands/{personal-tasks/delete.js → tasks/delete--personal.js} +4 -1
  237. package/dist/generated/commands/{personal-tasks/get.js → tasks/get--personal.js} +4 -1
  238. package/dist/generated/commands/tasks/{labels.js → labels-list.js} +2 -1
  239. package/dist/generated/commands/tasks/{all.js → list--all.js} +7 -3
  240. package/dist/generated/commands/{personal-tasks/list.js → tasks/list--personal.js} +4 -1
  241. package/dist/generated/commands/tasks/list.js +3 -2
  242. package/dist/generated/commands/{personal-tasks/move.js → tasks/move--personal.js} +5 -2
  243. package/dist/generated/commands/{personal-tasks/start.js → tasks/start--personal.js} +7 -3
  244. package/dist/generated/commands/tasks/start.js +4 -3
  245. package/dist/generated/commands/{personal-tasks/update.js → tasks/update--personal.js} +4 -1
  246. package/dist/generated/commands/tasks/update.js +5 -3
  247. package/dist/generated/commands/user/{auth-token-revoke.js → api-keys-delete.js} +2 -2
  248. package/dist/generated/commands/user/{profile.js → profile-get.js} +2 -1
  249. package/dist/generated/commands/user/{push-devices-register.js → push-devices-create.js} +1 -1
  250. package/dist/generated/commands/user/{push-devices-remove.js → push-devices-delete.js} +1 -1
  251. package/dist/generated/commands/workspaces/{artifacts.js → artifacts-search.js} +2 -1
  252. package/dist/generated/commands/workspaces/{credits.js → credits-get.js} +2 -1
  253. package/dist/generated/commands/{members/list.js → workspaces/members-list--all.js} +4 -0
  254. package/dist/generated/commands/workspaces/{members.js → members-list.js} +2 -1
  255. package/dist/generated/commands/workspaces/{sandbox-limit.js → sandbox-limit-get.js} +2 -1
  256. package/dist/generated/commands/workspaces/{stop-sandboxes.js → sandboxes-stop.js} +2 -1
  257. package/dist/generated/commands/workspaces/timezone-set.js +2 -1
  258. package/dist/generated/commands/workspaces/{usage.js → usage-get.js} +2 -1
  259. package/dist/integrations/api.js +1 -1
  260. package/dist/integrations/render.js +1 -1
  261. package/dist/program.js +15 -9
  262. package/dist/runtime/agent-tokens.js +2 -8
  263. package/dist/runtime/aliases.js +516 -0
  264. package/dist/runtime/attach.js +296 -83
  265. package/dist/runtime/former-commands.js +89 -0
  266. package/dist/runtime/job-watch.js +1 -1
  267. package/dist/runtime/variants.js +205 -0
  268. package/openapi.json +2230 -1083
  269. package/package.json +15 -5
  270. package/dist/generated/commands/crons/projects-resume.js +0 -21
  271. package/dist/generated/commands/crons/runs-diagnostics.js +0 -21
  272. package/dist/generated/commands/sessions/needs-you.js +0 -16
  273. package/dist/generated/commands/sessions/qa-clear.js +0 -22
  274. package/dist/generated/commands/sessions/title-generate.js +0 -29
  275. package/dist/generated/commands/user/memory-list.js +0 -17
  276. package/dist/generated/commands/user/memory-put.js +0 -37
@@ -5,7 +5,7 @@ export const operation = {
5
5
  "tasks",
6
6
  "create"
7
7
  ],
8
- "summary": "File a task. A hint files into that project; YOLO returns a Backlog item.",
8
+ "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.",
9
9
  "pathParams": [
10
10
  "workspaceId"
11
11
  ],
@@ -96,7 +96,7 @@ export const operation = {
96
96
  "flag": "app-stack",
97
97
  "kind": "string",
98
98
  "required": false,
99
- "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.",
99
+ "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 `kosuke sessions app-stack start`. Fixed once the session starts.",
100
100
  "choices": [
101
101
  "start",
102
102
  "skip"
@@ -106,7 +106,8 @@ export const operation = {
106
106
  "name": "description",
107
107
  "flag": "description",
108
108
  "kind": "string",
109
- "required": true
109
+ "required": true,
110
+ "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."
110
111
  },
111
112
  {
112
113
  "name": "hintProjectId",
@@ -225,7 +226,7 @@ export const operation = {
225
226
  "flag": "app-stack",
226
227
  "kind": "string",
227
228
  "required": false,
228
- "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.",
229
+ "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 `kosuke sessions app-stack start`. Fixed once the session starts.",
229
230
  "choices": [
230
231
  "start",
231
232
  "skip"
@@ -235,7 +236,8 @@ export const operation = {
235
236
  "name": "description",
236
237
  "flag": "description",
237
238
  "kind": "string",
238
- "required": true
239
+ "required": true,
240
+ "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."
239
241
  },
240
242
  {
241
243
  "name": "hintProjectId",
@@ -2,9 +2,12 @@ export const operation = {
2
2
  "method": "delete",
3
3
  "path": "/api/personal-tasks/{taskId}",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "delete"
7
7
  ],
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
8
11
  "summary": "Delete one of your personal tasks.",
9
12
  "pathParams": [
10
13
  "taskId"
@@ -2,9 +2,12 @@ export const operation = {
2
2
  "method": "get",
3
3
  "path": "/api/personal-tasks/{taskId}",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "get"
7
7
  ],
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
8
11
  "summary": "Get one of your personal tasks.",
9
12
  "pathParams": [
10
13
  "taskId"
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/labels",
4
4
  "command": [
5
5
  "tasks",
6
- "labels"
6
+ "labels",
7
+ "list"
7
8
  ],
8
9
  "summary": "List the label names across a workspace's repositories, for the tasks list's labels filter.",
9
10
  "pathParams": [
@@ -3,9 +3,12 @@ export const operation = {
3
3
  "path": "/api/tasks",
4
4
  "command": [
5
5
  "tasks",
6
- "all"
6
+ "list"
7
7
  ],
8
- "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.",
8
+ "variant": {
9
+ "scope": "all"
10
+ },
11
+ "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.",
9
12
  "pathParams": [],
10
13
  "query": [
11
14
  {
@@ -85,7 +88,8 @@ export const operation = {
85
88
  "name": "includePrompt",
86
89
  "flag": "include-prompt",
87
90
  "kind": "boolean",
88
- "required": false
91
+ "required": false,
92
+ "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."
89
93
  },
90
94
  {
91
95
  "name": "includeOpenCount",
@@ -2,9 +2,12 @@ export const operation = {
2
2
  "method": "get",
3
3
  "path": "/api/personal-tasks",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "list"
7
7
  ],
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
8
11
  "summary": "List your personal tasks, newest first. status is a csv of todo, in_progress, done; includeOpenCount counts Todo and In progress with the same filters, independent of status and cursor.",
9
12
  "pathParams": [],
10
13
  "query": [
@@ -5,7 +5,7 @@ export const operation = {
5
5
  "tasks",
6
6
  "list"
7
7
  ],
8
- "summary": "List tasks in one workspace.",
8
+ "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.",
9
9
  "pathParams": [
10
10
  "workspaceId"
11
11
  ],
@@ -87,7 +87,8 @@ export const operation = {
87
87
  "name": "includePrompt",
88
88
  "flag": "include-prompt",
89
89
  "kind": "boolean",
90
- "required": false
90
+ "required": false,
91
+ "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."
91
92
  },
92
93
  {
93
94
  "name": "includeOpenCount",
@@ -2,10 +2,13 @@ export const operation = {
2
2
  "method": "post",
3
3
  "path": "/api/personal-tasks/{taskId}/move",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "move"
7
7
  ],
8
- "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.",
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
11
+ "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.",
9
12
  "pathParams": [
10
13
  "taskId"
11
14
  ],
@@ -2,9 +2,12 @@ export const operation = {
2
2
  "method": "post",
3
3
  "path": "/api/personal-tasks/{taskId}/start",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "start"
7
7
  ],
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
8
11
  "summary": "Start a Todo or In progress Personal task in a deployed Personal Repository.",
9
12
  "pathParams": [
10
13
  "taskId"
@@ -31,7 +34,8 @@ export const operation = {
31
34
  "name": "prompt",
32
35
  "flag": "prompt",
33
36
  "kind": "string",
34
- "required": false
37
+ "required": false,
38
+ "description": "Other text for the first message. The description stays as it is."
35
39
  },
36
40
  {
37
41
  "name": "sandboxSize",
@@ -51,7 +55,7 @@ export const operation = {
51
55
  "flag": "app-stack",
52
56
  "kind": "string",
53
57
  "required": false,
54
- "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.",
58
+ "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 `kosuke sessions app-stack start`. Fixed once the session starts.",
55
59
  "choices": [
56
60
  "start",
57
61
  "skip"
@@ -5,7 +5,7 @@ export const operation = {
5
5
  "tasks",
6
6
  "start"
7
7
  ],
8
- "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.",
8
+ "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.",
9
9
  "pathParams": [
10
10
  "workspaceId",
11
11
  "taskId"
@@ -32,7 +32,8 @@ export const operation = {
32
32
  "name": "prompt",
33
33
  "flag": "prompt",
34
34
  "kind": "string",
35
- "required": false
35
+ "required": false,
36
+ "description": "Other text for the first message. The description stays as it is."
36
37
  },
37
38
  {
38
39
  "name": "sandboxSize",
@@ -52,7 +53,7 @@ export const operation = {
52
53
  "flag": "app-stack",
53
54
  "kind": "string",
54
55
  "required": false,
55
- "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.",
56
+ "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 `kosuke sessions app-stack start`. Fixed once the session starts.",
56
57
  "choices": [
57
58
  "start",
58
59
  "skip"
@@ -2,9 +2,12 @@ export const operation = {
2
2
  "method": "patch",
3
3
  "path": "/api/personal-tasks/{taskId}",
4
4
  "command": [
5
- "personal-tasks",
5
+ "tasks",
6
6
  "update"
7
7
  ],
8
+ "variant": {
9
+ "scope": "personal"
10
+ },
8
11
  "summary": "Edit one of your personal tasks. dueOn or threadId null clears it.",
9
12
  "pathParams": [
10
13
  "taskId"
@@ -90,7 +90,7 @@ export const operation = {
90
90
  "flag": "app-stack",
91
91
  "kind": "string",
92
92
  "required": false,
93
- "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.",
93
+ "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 `kosuke sessions app-stack start`. Fixed once the session starts.",
94
94
  "choices": [
95
95
  "start",
96
96
  "skip"
@@ -124,13 +124,15 @@ export const operation = {
124
124
  "name": "description",
125
125
  "flag": "description",
126
126
  "kind": "string",
127
- "required": false
127
+ "required": false,
128
+ "description": "The whole new description, only when the goal changed: never because the task starts."
128
129
  },
129
130
  {
130
131
  "name": "ifRevision",
131
132
  "flag": "if-revision",
132
133
  "kind": "string",
133
- "required": false
134
+ "required": false,
135
+ "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."
134
136
  },
135
137
  {
136
138
  "name": "hintProjectId",
@@ -3,8 +3,8 @@ export const operation = {
3
3
  "path": "/api/user/api-keys/current",
4
4
  "command": [
5
5
  "user",
6
- "auth-token",
7
- "revoke"
6
+ "api-keys",
7
+ "delete"
8
8
  ],
9
9
  "summary": "Revoke the API key this request is made with, and no other. The Apple Watch and the Meta glasses call it when they sign out. Answers 204.",
10
10
  "pathParams": [],
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/user/profile",
4
4
  "command": [
5
5
  "user",
6
- "profile"
6
+ "profile",
7
+ "get"
7
8
  ],
8
9
  "summary": "Read your account: id, email, name, onboarding state, default model, auto-commit setting and Reply Style.",
9
10
  "pathParams": [],
@@ -4,7 +4,7 @@ export const operation = {
4
4
  "command": [
5
5
  "user",
6
6
  "push-devices",
7
- "register"
7
+ "create"
8
8
  ],
9
9
  "summary": "Register an iPhone or Apple Watch for push notifications with its hex APNs device token, the app bundle id it was issued to and its APNs environment. A token already registered moves to you. The Watch also sends its installationId and a generation it raises on every registration; one older than the registration already held for that installation answers 409. Both apps send their appVersion, which decides the notification categories they are sent. Called by the Kosuke iOS and Watch apps; answers 204.",
10
10
  "pathParams": [],
@@ -4,7 +4,7 @@ export const operation = {
4
4
  "command": [
5
5
  "user",
6
6
  "push-devices",
7
- "remove"
7
+ "delete"
8
8
  ],
9
9
  "summary": "Stop push notifications to one of your devices, by its APNs device token. A token that is not yours, or not registered, is left alone; answers 204 either way.",
10
10
  "pathParams": [],
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/artifacts/search",
4
4
  "command": [
5
5
  "workspaces",
6
- "artifacts"
6
+ "artifacts",
7
+ "search"
7
8
  ],
8
9
  "summary": "Search the Artifacts of a workspace by title, across its Chat Sessions and its Cron Runs. Rows only, each naming the session or run it was written in; read one with `sessions artifacts get` or `crons runs artifacts get`.",
9
10
  "pathParams": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/credits",
4
4
  "command": [
5
5
  "workspaces",
6
- "credits"
6
+ "credits",
7
+ "get"
7
8
  ],
8
9
  "summary": "Read the credit balance and limit of a workspace.",
9
10
  "pathParams": [
@@ -2,9 +2,13 @@ export const operation = {
2
2
  "method": "get",
3
3
  "path": "/api/members",
4
4
  "command": [
5
+ "workspaces",
5
6
  "members",
6
7
  "list"
7
8
  ],
9
+ "variant": {
10
+ "scope": "all"
11
+ },
8
12
  "summary": "List visible members across every workspace you belong to. Each roster names its workspace. An agent token reads its own workspace only.",
9
13
  "pathParams": [],
10
14
  "query": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/members",
4
4
  "command": [
5
5
  "workspaces",
6
- "members"
6
+ "members",
7
+ "list"
7
8
  ],
8
9
  "summary": "List the members of a workspace, and its pending invitations unless excluded.",
9
10
  "pathParams": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/sandbox-limit",
4
4
  "command": [
5
5
  "workspaces",
6
- "sandbox-limit"
6
+ "sandbox-limit",
7
+ "get"
7
8
  ],
8
9
  "summary": "Read how many sandboxes may run at once and which sessions are running now.",
9
10
  "pathParams": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/stop-sandboxes",
4
4
  "command": [
5
5
  "workspaces",
6
- "stop-sandboxes"
6
+ "sandboxes",
7
+ "stop"
7
8
  ],
8
9
  "summary": "Pause the sandboxes of the given chat sessions.",
9
10
  "pathParams": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/timezone",
4
4
  "command": [
5
5
  "workspaces",
6
- "timezone-set"
6
+ "timezone",
7
+ "set"
7
8
  ],
8
9
  "summary": "Set the Workspace Timezone, the IANA zone every cron of the workspace is read and shown in, e.g. Europe/Rome. Each enabled cron's next run moves to the new zone, except one already due, which fires on its slot. Refused, naming the crons, when any cron would fire more often than every 15 minutes or never in the new zone; nothing changes then. Sending the zone already set changes nothing. Owners and admins only.",
9
10
  "pathParams": [
@@ -3,7 +3,8 @@ export const operation = {
3
3
  "path": "/api/organizations/{workspaceId}/usage",
4
4
  "command": [
5
5
  "workspaces",
6
- "usage"
6
+ "usage",
7
+ "get"
7
8
  ],
8
9
  "summary": "Read sandbox usage by day and by project. start must precede end and the range is capped at 366 days.",
9
10
  "pathParams": [
@@ -87,7 +87,7 @@ export function failureOf(status, error, method) {
87
87
  return {
88
88
  ok: false,
89
89
  status,
90
- message: 'The API key was refused (HTTP 401). Run `kosuke auth status`.',
90
+ message: 'The API key was refused (HTTP 401). Run `kosuke auth status get`.',
91
91
  };
92
92
  }
93
93
  if (status === 429) {
@@ -47,7 +47,7 @@ export function renderOverview(overview, filtered) {
47
47
  else {
48
48
  out.push(`${plural(overview.connectionTotal, 'connection')}. ` +
49
49
  "`kosuke integrations list --toolkit <slug>` shows a toolkit's tools; " +
50
- "`kosuke integrations describe <tool>` prints one tool's input schema.");
50
+ "`kosuke integrations tools get <tool>` prints one tool's input schema.");
51
51
  }
52
52
  if (note)
53
53
  out.push(note);
package/dist/program.js CHANGED
@@ -5,13 +5,16 @@ import { attachAuthCommands } from './commands/auth.js';
5
5
  import { attachIntegrationsCommands } from './commands/integrations.js';
6
6
  import { attachWatchCommand } from './commands/watch.js';
7
7
  import { operations } from './generated/commands/index.js';
8
- import { attachOperation } from './runtime/attach.js';
8
+ import { attachCommand } from './runtime/attach.js';
9
+ import { attachFormerCommands } from './runtime/former-commands.js';
10
+ import { formsOf } from './runtime/variants.js';
9
11
  import { agentTokenOf, isReachable } from './runtime/agent-tokens.js';
10
12
  import { createRuntime, ExitSignal } from './runtime/runtime.js';
11
13
  import { version } from './runtime/version.js';
12
14
  /**
13
- * The command tree: `auth`, `agent`, `integrations list|describe|call` and `sessions watch` by
14
- * hand, everything else from the generated descriptors. Global flags are read
15
+ * The command tree: the commands `commands/hand-written.ts` lists by hand, everything else
16
+ * from the generated descriptors, one leaf per command over its forms, then the former
17
+ * names as hidden aliases. Global flags are read
15
18
  * before any subcommand runs, so the runtime the subcommands share is built once, from them.
16
19
  */
17
20
  export function createProgram(options = {}) {
@@ -40,22 +43,25 @@ export function createProgram(options = {}) {
40
43
  // Read from the env alone, which keeps `--help` off the credentials file.
41
44
  const token = (options.process?.env ?? process.env).KOSUKE_API_KEY;
42
45
  const narrowedTo = agentTokenOf(token);
43
- const reachable = narrowedTo
44
- ? operations.filter((operation) => isReachable(operation.agents, narrowedTo))
45
- : operations;
46
- for (const operation of reachable)
47
- attachOperation(program, operation, lazy);
46
+ // Per form: a command attaches when any of its forms is reachable, and a call to a form
47
+ // the key does not reach is refused by name.
48
+ const reaches = (operation) => !narrowedTo || isReachable(operation.agents, narrowedTo);
49
+ for (const forms of formsOf(operations).values()) {
50
+ if (forms.some(reaches))
51
+ attachCommand(program, forms, lazy, { reachable: reaches });
52
+ }
48
53
  // Every agent token reads the digest's two lists as its member. Only a
49
54
  // member's own key and their Sensei may mark Activity seen, so the others
50
55
  // read it with `--peek`.
51
56
  attachAgentCommands(program, lazy, options.agent);
52
57
  if (narrowedTo === null || narrowedTo === 'sandboxToken')
53
58
  attachSkillMarkerCommands(program, options.process);
54
- // Beside the generated `integrations tools` and `execute`, which stay raw passthroughs.
59
+ // Beside the generated, hidden `integrations tools list|call`, which stay raw passthroughs.
55
60
  attachIntegrationsCommands(program, lazy, options.integrations);
56
61
  // The job stream admits a member's API key only; it closes 4401 on every narrower token.
57
62
  if (narrowedTo === null)
58
63
  attachWatchCommand(program, lazy, options.watch);
64
+ attachFormerCommands(program, operations.filter(reaches), lazy);
59
65
  return program;
60
66
  }
61
67
  /** Run to completion; an ExitSignal has already reported and set the exit code. */
@@ -11,14 +11,8 @@ export const AGENT_TOKENS = [
11
11
  { token: 'sandboxToken', prefixes: ['kosuke_sbx_'], extension: 'x-kosuke-sandbox-token' },
12
12
  // Wire contract with `src/lib/auth/cron-token.ts`: one Cron Run.
13
13
  { token: 'cronToken', prefixes: ['kosuke_crn_'], extension: 'x-kosuke-cron-token' },
14
- // Wire contract with `src/lib/auth/sensei-token.ts`: a Sensei Chat's Turn. A token minted
15
- // before the Sensei rename carries `kosuke_lead_` until it expires; drop that prefix one
16
- // release after the rename.
17
- {
18
- token: 'senseiToken',
19
- prefixes: ['kosuke_sensei_', 'kosuke_lead_'],
20
- extension: 'x-kosuke-sensei-token',
21
- },
14
+ // Wire contract with `src/lib/auth/sensei-token.ts`: a Sensei Chat's Turn.
15
+ { token: 'senseiToken', prefixes: ['kosuke_sensei_'], extension: 'x-kosuke-sensei-token' },
22
16
  ];
23
17
  /** The agent token a key is, by its prefix; null for a member's own key or none. */
24
18
  export function agentTokenOf(key) {