@kosuke-ai/kosuke 1.0.7 → 1.0.9

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 (270) hide show
  1. package/CHANGELOG.md +19 -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} +4 -2
  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} +2 -1
  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} +3 -1
  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/{env-vars-add.js → env-vars-create.js} +1 -1
  92. package/dist/generated/commands/projects/{env-vars-remove.js → env-vars-delete.js} +1 -1
  93. package/dist/generated/commands/projects/{labels.js → labels-list.js} +2 -1
  94. package/dist/generated/commands/projects/{labels-usage.js → labels-sessions-list.js} +2 -1
  95. package/dist/generated/commands/projects/{labels-color.js → labels-update.js} +1 -1
  96. package/dist/generated/commands/projects/{live-logs.js → live-logs-list.js} +2 -1
  97. package/dist/generated/commands/projects/{live-query.js → live-queries-run.js} +2 -1
  98. package/dist/generated/commands/projects/{live-traffic.js → live-traffic-get.js} +2 -1
  99. package/dist/generated/commands/projects/{live-write.js → live-writes-create.js} +2 -1
  100. package/dist/generated/commands/projects/{live-write-status.js → live-writes-get.js} +2 -1
  101. package/dist/generated/commands/projects/{releases.js → releases-list.js} +2 -1
  102. package/dist/generated/commands/projects/{services-add.js → services-create.js} +1 -1
  103. package/dist/generated/commands/projects/{services-remove.js → services-delete.js} +1 -1
  104. package/dist/generated/commands/projects/{settings-import.js → settings-set.js} +1 -1
  105. package/dist/generated/commands/projects/{skills.js → skills-list.js} +2 -1
  106. package/dist/generated/commands/projects/{versions.js → versions-list.js} +2 -1
  107. package/dist/generated/commands/projects/{switch-workflow.js → workflow-set.js} +2 -1
  108. package/dist/generated/commands/prototypes/create.js +69 -0
  109. package/dist/generated/commands/{workspaces/access-status.js → providers/access-get.js} +3 -2
  110. package/dist/generated/commands/{user/subscriptions-set-default-model.js → providers/default-model-set--personal.js} +6 -3
  111. package/dist/generated/commands/{user/subscriptions-delete.js → providers/delete--personal.js} +4 -2
  112. package/dist/generated/commands/{workspaces/ai-provider-remove.js → providers/delete.js} +2 -3
  113. package/dist/generated/commands/{user/subscriptions-get.js → providers/get--personal.js} +4 -2
  114. package/dist/generated/commands/{workspaces/ai-provider-get.js → providers/get.js} +1 -2
  115. package/dist/generated/commands/{workspaces/ai-provider-google-remove.js → providers/google-delete.js} +2 -3
  116. package/dist/generated/commands/{workspaces/ai-provider-google-get.js → providers/google-get.js} +1 -2
  117. package/dist/generated/commands/{workspaces/ai-provider-google-delete-method.js → providers/google-methods-delete.js} +3 -3
  118. package/dist/generated/commands/{workspaces/ai-provider-google-select-method.js → providers/google-methods-set.js} +3 -3
  119. package/dist/generated/commands/{workspaces/ai-provider-google-save.js → providers/google-set.js} +2 -3
  120. package/dist/generated/commands/{user/subscriptions-grok-get.js → providers/grok-get--personal.js} +4 -2
  121. package/dist/generated/commands/{workspaces → providers}/grok-get.js +1 -1
  122. package/dist/generated/commands/{user/subscriptions-grok-change.js → providers/grok-update--personal.js} +5 -3
  123. package/dist/generated/commands/{workspaces/grok-change.js → providers/grok-update.js} +2 -2
  124. package/dist/generated/commands/{user/subscriptions-set-key.js → providers/keys-set--personal.js} +6 -3
  125. package/dist/generated/commands/{user/subscriptions-login-antigravity-cancel.js → providers/logins-cancel--personal-provider-antigravity.js} +9 -4
  126. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-cancel.js → providers/logins-cancel--provider-antigravity.js} +8 -4
  127. package/dist/generated/commands/{user/subscriptions-login-antigravity-complete.js → providers/logins-complete--personal-provider-antigravity.js} +9 -4
  128. package/dist/generated/commands/{user/subscriptions-login-claude-complete.js → providers/logins-complete--personal-provider-claude-code.js} +9 -4
  129. package/dist/generated/commands/{user/subscriptions-login-codex-complete.js → providers/logins-complete--personal-provider-codex.js} +9 -4
  130. package/dist/generated/commands/{user/subscriptions-login-muse-complete.js → providers/logins-complete--personal-provider-muse-code.js} +9 -4
  131. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-complete.js → providers/logins-complete--provider-antigravity.js} +8 -4
  132. package/dist/generated/commands/{workspaces/provider-login-claude-complete.js → providers/logins-complete--provider-claude-code.js} +8 -3
  133. package/dist/generated/commands/{workspaces/provider-login-codex-complete.js → providers/logins-complete--provider-codex.js} +8 -3
  134. package/dist/generated/commands/{workspaces/provider-login-muse-complete.js → providers/logins-complete--provider-muse-code.js} +8 -3
  135. package/dist/generated/commands/{user/subscriptions-logins-delete.js → providers/logins-delete--personal.js} +4 -2
  136. package/dist/generated/commands/{user/subscriptions-logins-recheck.js → providers/logins-recheck--personal.js} +4 -2
  137. package/dist/generated/commands/{workspaces/ai-provider-logins-recheck.js → providers/logins-recheck.js} +1 -2
  138. package/dist/generated/commands/{user/subscriptions-login-antigravity-start.js → providers/logins-start--personal-provider-antigravity.js} +9 -4
  139. package/dist/generated/commands/{user/subscriptions-login-claude-start.js → providers/logins-start--personal-provider-claude-code.js} +9 -4
  140. package/dist/generated/commands/{user/subscriptions-login-codex-start.js → providers/logins-start--personal-provider-codex.js} +9 -4
  141. package/dist/generated/commands/{user/subscriptions-login-muse-start.js → providers/logins-start--personal-provider-muse-code.js} +9 -4
  142. package/dist/generated/commands/{workspaces/ai-provider-login-antigravity-start.js → providers/logins-start--provider-antigravity.js} +8 -4
  143. package/dist/generated/commands/{workspaces/provider-login-claude-start.js → providers/logins-start--provider-claude-code.js} +8 -3
  144. package/dist/generated/commands/{workspaces/provider-login-codex-start.js → providers/logins-start--provider-codex.js} +8 -3
  145. package/dist/generated/commands/{workspaces/provider-login-muse-start.js → providers/logins-start--provider-muse-code.js} +8 -3
  146. package/dist/generated/commands/{workspaces/ai-provider-set.js → providers/set.js} +1 -2
  147. package/dist/generated/commands/{user/subscriptions-token-usage.js → providers/token-usage-get--personal.js} +6 -3
  148. package/dist/generated/commands/{workspaces/ai-provider-token-usage.js → providers/token-usage-get.js} +3 -3
  149. package/dist/generated/commands/{user/subscriptions-usage.js → providers/usage-get--personal.js} +6 -3
  150. package/dist/generated/commands/{workspaces/ai-provider-google-usage.js → providers/usage-get--provider-antigravity.js} +9 -4
  151. package/dist/generated/commands/{workspaces/ai-provider-usage-claude.js → providers/usage-get--provider-claude-code.js} +8 -3
  152. package/dist/generated/commands/{workspaces/ai-provider-usage-codex.js → providers/usage-get--provider-codex.js} +8 -3
  153. package/dist/generated/commands/{workspaces/ai-provider-usage-coding-plan.js → providers/usage-get--provider-coding-plan.js} +8 -3
  154. package/dist/generated/commands/{workspaces/ai-provider-usage-deepseek.js → providers/usage-get--provider-deepseek-api.js} +8 -3
  155. package/dist/generated/commands/{workspaces/ai-provider-usage-grok.js → providers/usage-get--provider-grok.js} +8 -3
  156. package/dist/generated/commands/{workspaces/ai-provider-usage-kimi-code.js → providers/usage-get--provider-kimi-code.js} +8 -3
  157. package/dist/generated/commands/{workspaces/ai-provider-usage-muse.js → providers/usage-get--provider-muse-code.js} +8 -3
  158. package/dist/generated/commands/sensei/{cards.js → cards-list.js} +2 -1
  159. package/dist/generated/commands/sensei/{cards-send-reply.js → cards-reply.js} +1 -1
  160. package/dist/generated/commands/sensei/{cards-put.js → cards-set.js} +1 -1
  161. package/dist/generated/commands/sensei/{chat.js → chat-get.js} +2 -1
  162. package/dist/generated/commands/sensei/{connect.js → connect-buttons-create.js} +2 -1
  163. package/dist/generated/commands/sensei/delegates-list.js +25 -0
  164. package/dist/generated/commands/sensei/{delegates-note.js → delegates-notes-create.js} +2 -1
  165. package/dist/generated/commands/sensei/{describe.js → describe-cards-create.js} +2 -1
  166. package/dist/generated/commands/sensei/{device-requests-decide.js → device-requests-update.js} +1 -1
  167. package/dist/generated/commands/sensei/{memory-put.js → memory-set.js} +4 -2
  168. package/dist/generated/commands/sensei/{merge-rule.js → merge-rule-set.js} +2 -1
  169. package/dist/generated/commands/sensei/{messages-reroute.js → messages-move.js} +1 -1
  170. package/dist/generated/commands/sensei/messages-send.js +2 -2
  171. package/dist/generated/commands/sensei/{notifications-open.js → notifications-mark-read.js} +1 -1
  172. package/dist/generated/commands/sensei/{reels-activity.js → reels-activity-list.js} +2 -1
  173. package/dist/generated/commands/sensei/{reels-ranks.js → reels-ranks-list.js} +2 -1
  174. package/dist/generated/commands/sensei/{repository.js → repository-cards-create.js} +2 -1
  175. package/dist/generated/commands/sensei/{review-approve.js → review-approvals-create.js} +2 -1
  176. package/dist/generated/commands/sensei/{review-context.js → review-context-get.js} +2 -1
  177. package/dist/generated/commands/sensei/{review-ask.js → review-requests-create.js} +3 -2
  178. package/dist/generated/commands/sensei/{sessions-assess.js → sessions-assessments-create.js} +2 -1
  179. package/dist/generated/commands/sensei/{sessions-facts.js → sessions-facts-get.js} +2 -1
  180. package/dist/generated/commands/sensei/{suggest.js → suggestions-create.js} +2 -1
  181. package/dist/generated/commands/sensei/{thread-done.js → threads-close.js} +2 -2
  182. package/dist/generated/commands/sensei/{thread-read.js → threads-get.js} +2 -2
  183. package/dist/generated/commands/sensei/{threads.js → threads-list.js} +2 -1
  184. package/dist/generated/commands/sensei/{thread-move.js → threads-move.js} +1 -1
  185. package/dist/generated/commands/sensei/{thread-split.js → threads-split.js} +1 -1
  186. package/dist/generated/commands/sensei/{widgets.js → widgets-get.js} +2 -1
  187. package/dist/generated/commands/sessions/app-stack-start.js +2 -1
  188. package/dist/generated/commands/sessions/{artifacts-attach.js → artifacts-create.js} +1 -1
  189. package/dist/generated/commands/sessions/create.js +2 -2
  190. package/dist/generated/commands/sessions/{desktop-control.js → desktop-control-set.js} +3 -1
  191. package/dist/generated/commands/sessions/{desktop.js → desktop-get.js} +2 -1
  192. package/dist/generated/commands/sessions/desktop-start.js +2 -1
  193. package/dist/generated/commands/sessions/{diff-comments-add.js → diff-comments-create.js} +1 -1
  194. package/dist/generated/commands/sessions/{diff-commits.js → diff-commits-list.js} +2 -1
  195. package/dist/generated/commands/sessions/{diff-files.js → diff-files-list.js} +2 -1
  196. package/dist/generated/commands/sessions/{diff-patch.js → diff-patch-get.js} +2 -1
  197. package/dist/generated/commands/sessions/{files-write.js → files-set.js} +1 -1
  198. package/dist/generated/commands/sessions/get.js +1 -1
  199. package/dist/generated/commands/sessions/{git-commit-message.js → git-commit-message-create.js} +2 -1
  200. package/dist/generated/commands/sessions/{git-state.js → git-state-get.js} +2 -1
  201. package/dist/generated/commands/sessions/{go-ahead-clear.js → go-ahead-delete.js} +1 -1
  202. package/dist/generated/commands/sessions/{labels-edit.js → labels-update.js} +1 -1
  203. package/dist/generated/commands/sessions/{all.js → list--all.js} +4 -1
  204. package/dist/generated/commands/sessions/{message.js → messages-get.js} +4 -3
  205. package/dist/generated/commands/sessions/{messages.js → messages-list.js} +3 -2
  206. package/dist/generated/commands/sessions/{edit-prompt.js → prompt-update.js} +2 -1
  207. package/dist/generated/commands/sessions/pull-request-mark-ready.js +40 -0
  208. package/dist/generated/commands/sessions/qa-runs-finish.js +66 -0
  209. package/dist/generated/commands/sessions/qa-runs-fixes-create.js +65 -0
  210. package/dist/generated/commands/sessions/qa-runs-get.js +22 -0
  211. package/dist/generated/commands/sessions/qa-runs-results-create.js +45 -0
  212. package/dist/generated/commands/sessions/qa-runs-start.js +75 -0
  213. package/dist/generated/commands/sessions/qa-runs-stop.js +43 -0
  214. package/dist/generated/commands/sessions/qa-set.js +1 -1
  215. package/dist/generated/commands/sessions/review-set.js +53 -0
  216. package/dist/generated/commands/sessions/{runtime-command.js → runtime-commands-run.js} +2 -1
  217. package/dist/generated/commands/sessions/{activate.js → start.js} +1 -1
  218. package/dist/generated/commands/sessions/update.js +1 -1
  219. package/dist/generated/commands/{user/skills-create.js → skills/create--personal.js} +3 -1
  220. package/dist/generated/commands/{workspaces/skills-create.js → skills/create.js} +0 -1
  221. package/dist/generated/commands/{user/skills-delete.js → skills/delete--personal.js} +3 -1
  222. package/dist/generated/commands/{workspaces/skills-delete.js → skills/delete.js} +0 -1
  223. package/dist/generated/commands/{user/skills-get.js → skills/get--personal.js} +3 -1
  224. package/dist/generated/commands/{workspaces/skills-get.js → skills/get.js} +0 -1
  225. package/dist/generated/commands/{user/skills-list.js → skills/list--personal.js} +3 -1
  226. package/dist/generated/commands/{workspaces/skills-list.js → skills/list.js} +0 -1
  227. package/dist/generated/commands/{user/skills-update.js → skills/update--personal.js} +3 -1
  228. package/dist/generated/commands/{workspaces/skills-update.js → skills/update.js} +0 -1
  229. package/dist/generated/commands/{personal-tasks/create.js → tasks/create--personal.js} +5 -2
  230. package/dist/generated/commands/tasks/create.js +2 -2
  231. package/dist/generated/commands/{personal-tasks/delete.js → tasks/delete--personal.js} +4 -1
  232. package/dist/generated/commands/{personal-tasks/get.js → tasks/get--personal.js} +4 -1
  233. package/dist/generated/commands/tasks/{labels.js → labels-list.js} +2 -1
  234. package/dist/generated/commands/tasks/{all.js → list--all.js} +25 -1
  235. package/dist/generated/commands/{personal-tasks/list.js → tasks/list--personal.js} +4 -1
  236. package/dist/generated/commands/tasks/list.js +21 -0
  237. package/dist/generated/commands/{personal-tasks/move.js → tasks/move--personal.js} +4 -1
  238. package/dist/generated/commands/{personal-tasks/start.js → tasks/start--personal.js} +5 -2
  239. package/dist/generated/commands/tasks/start.js +1 -1
  240. package/dist/generated/commands/{personal-tasks/update.js → tasks/update--personal.js} +4 -1
  241. package/dist/generated/commands/tasks/update.js +1 -1
  242. package/dist/generated/commands/user/{auth-token-revoke.js → api-keys-delete.js} +2 -2
  243. package/dist/generated/commands/user/{profile.js → profile-get.js} +2 -1
  244. package/dist/generated/commands/user/{push-devices-register.js → push-devices-create.js} +1 -1
  245. package/dist/generated/commands/user/{push-devices-remove.js → push-devices-delete.js} +1 -1
  246. package/dist/generated/commands/workspaces/{artifacts.js → artifacts-search.js} +2 -1
  247. package/dist/generated/commands/workspaces/{credits.js → credits-get.js} +2 -1
  248. package/dist/generated/commands/{members/list.js → workspaces/members-list--all.js} +4 -0
  249. package/dist/generated/commands/workspaces/{members.js → members-list.js} +2 -1
  250. package/dist/generated/commands/workspaces/{sandbox-limit.js → sandbox-limit-get.js} +2 -1
  251. package/dist/generated/commands/workspaces/{stop-sandboxes.js → sandboxes-stop.js} +2 -1
  252. package/dist/generated/commands/workspaces/timezone-set.js +2 -1
  253. package/dist/generated/commands/workspaces/{usage.js → usage-get.js} +2 -1
  254. package/dist/integrations/api.js +1 -1
  255. package/dist/integrations/render.js +1 -1
  256. package/dist/program.js +15 -9
  257. package/dist/runtime/aliases.js +516 -0
  258. package/dist/runtime/attach.js +301 -55
  259. package/dist/runtime/former-commands.js +89 -0
  260. package/dist/runtime/job-watch.js +1 -1
  261. package/dist/runtime/variants.js +205 -0
  262. package/openapi.json +2309 -1132
  263. package/package.json +4 -6
  264. package/dist/generated/commands/crons/projects-resume.js +0 -21
  265. package/dist/generated/commands/crons/runs-diagnostics.js +0 -21
  266. package/dist/generated/commands/sessions/needs-you.js +0 -16
  267. package/dist/generated/commands/sessions/qa-clear.js +0 -22
  268. package/dist/generated/commands/sessions/title-generate.js +0 -29
  269. package/dist/generated/commands/user/memory-list.js +0 -17
  270. package/dist/generated/commands/user/memory-put.js +0 -37
@@ -0,0 +1,205 @@
1
+ import { UsageError } from './invoke.js';
2
+ /** The word that reaches a personal form. */
3
+ export const PERSONAL = 'personal';
4
+ export function scopeOf(form) {
5
+ return form.variant?.scope ?? 'workspace';
6
+ }
7
+ /** Descriptors grouped by command, in the order the first form of each appears. */
8
+ export function formsOf(operations) {
9
+ const byCommand = new Map();
10
+ for (const operation of operations) {
11
+ const key = operation.command.join(' ');
12
+ byCommand.set(key, [...(byCommand.get(key) ?? []), operation]);
13
+ }
14
+ return byCommand;
15
+ }
16
+ /** What is left of a form's path params once the workspace positional took its place. */
17
+ function restParams(form, hasScope) {
18
+ if (scopeOf(form) === 'workspace' && hasScope)
19
+ return form.pathParams.slice(1);
20
+ return form.pathParams;
21
+ }
22
+ function commonPrefix(lists) {
23
+ const [first = [], ...rest] = lists;
24
+ const prefix = [];
25
+ for (let i = 0; i < first.length; i++) {
26
+ if (rest.every((list) => list[i] === first[i]))
27
+ prefix.push(first[i]);
28
+ else
29
+ break;
30
+ }
31
+ return prefix;
32
+ }
33
+ export function leafShape(forms) {
34
+ const scopes = new Set(forms.map(scopeOf));
35
+ const hasScope = scopes.has('personal') || scopes.has('all');
36
+ const workspace = forms.find((form) => scopeOf(form) === 'workspace');
37
+ let scope = null;
38
+ if (hasScope) {
39
+ const name = workspace?.pathParams[0] ?? 'workspaceId';
40
+ const optional = scopes.has('all');
41
+ const words = [
42
+ ...(scopes.has('workspace') || !scopes.has('personal') ? [name] : []),
43
+ ...(scopes.has('personal') ? [PERSONAL] : []),
44
+ ].join('|');
45
+ scope = { name, label: optional ? `[${words}]` : `<${words}>`, optional };
46
+ }
47
+ const positionals = commonPrefix(forms.map((form) => restParams(form, hasScope)));
48
+ const flags = new Map();
49
+ const entry = (flag) => {
50
+ let found = flags.get(flag);
51
+ if (!found) {
52
+ found = { flag, forms: new Map(), uniform: true, selector: new Set() };
53
+ flags.set(flag, found);
54
+ }
55
+ return found;
56
+ };
57
+ for (const form of forms) {
58
+ const own = new Set();
59
+ for (const field of fieldsOf(form)) {
60
+ entry(field.flag).forms.set(form, field);
61
+ own.add(field.flag);
62
+ }
63
+ for (const name of restParams(form, hasScope).slice(positionals.length)) {
64
+ const flag = kebab(name);
65
+ if (own.has(flag)) {
66
+ throw new Error(`kosuke ${form.command.join(' ')}: path param ${name} and a field share --${flag}.`);
67
+ }
68
+ entry(flag).forms.set(form, { name, flag, kind: 'string', required: true, pathParam: true });
69
+ }
70
+ if (form.variant?.when)
71
+ entry(form.variant.when.flag).selector.add(scopeOf(form));
72
+ }
73
+ for (const leafFlag of flags.values()) {
74
+ const shapes = new Set([...leafFlag.forms.values()].map((field) => JSON.stringify([field.kind, field.choices ?? null, field.repeated ?? false])));
75
+ leafFlag.uniform = shapes.size <= 1 && leafFlag.selector.size === 0;
76
+ }
77
+ return { scope, positionals, flags: [...flags.values()] };
78
+ }
79
+ /** Query, then JSON body, then form fields, one per flag. */
80
+ export function fieldsOf(form) {
81
+ const seen = new Set();
82
+ return [...form.query, ...(form.body?.fields ?? []), ...(form.multipart ?? [])].filter((field) => {
83
+ if (seen.has(field.flag))
84
+ return false;
85
+ seen.add(field.flag);
86
+ return true;
87
+ });
88
+ }
89
+ /** `kosuke crons get personal`, `kosuke providers usage get <workspaceId> --provider codex`. */
90
+ export function formUsage(form, shape) {
91
+ const scope = scopeOf(form);
92
+ const first = !shape.scope
93
+ ? []
94
+ : scope === 'personal'
95
+ ? [PERSONAL]
96
+ : scope === 'all'
97
+ ? []
98
+ : [`<${shape.scope.name}>`];
99
+ return [
100
+ 'kosuke',
101
+ ...form.command,
102
+ ...first,
103
+ ...shape.positionals.map((name) => `<${name}>`),
104
+ ...(form.variant?.when ? [`--${form.variant.when.flag} ${form.variant.when.equals}`] : []),
105
+ ].join(' ');
106
+ }
107
+ /** `the personal form`, `the --provider codex form`, `the workspace form`. */
108
+ export function formLabel(form) {
109
+ const words = [
110
+ ...(form.variant?.scope ? [form.variant.scope] : []),
111
+ ...(form.variant?.when ? [`--${form.variant.when.flag} ${form.variant.when.equals}`] : []),
112
+ ];
113
+ return `the ${words.length ? words.join(' ') : 'workspace'} form`;
114
+ }
115
+ const WORKSPACE_ID = 'workspaceId';
116
+ /**
117
+ * The form a call reaches, or a UsageError saying why none does. `reachable` is what
118
+ * the caller's key reaches: a form it does not is refused by name rather than as a
119
+ * form that does not exist.
120
+ */
121
+ export function selectForm(forms, { first, flags }, reachable = () => true) {
122
+ const command = `kosuke ${forms[0].command.join(' ')}`;
123
+ const shape = leafShape(forms);
124
+ let scope = 'workspace';
125
+ if (shape.scope) {
126
+ if (first === PERSONAL)
127
+ scope = 'personal';
128
+ else if (first === undefined)
129
+ scope = 'all';
130
+ }
131
+ else if (first === PERSONAL && forms[0].pathParams[0] === WORKSPACE_ID) {
132
+ scope = 'personal';
133
+ }
134
+ const scoped = forms.filter((form) => scopeOf(form) === scope);
135
+ if (!scoped.length) {
136
+ if (scope === 'personal') {
137
+ throw new UsageError(`${command} has no personal form. Pass ${idHint(shape.scope?.name ?? WORKSPACE_ID)}.`);
138
+ }
139
+ if (scope === 'workspace' && forms.some((form) => scopeOf(form) === 'personal')) {
140
+ throw new UsageError(`${command} works on personal only. Pass personal.`);
141
+ }
142
+ throw new UsageError(`${command} needs ${idHint(shape.scope?.name ?? WORKSPACE_ID)}.`);
143
+ }
144
+ let form = scoped[0];
145
+ const selector = scoped[0].variant?.when?.flag;
146
+ if (selector) {
147
+ const value = flags[selector];
148
+ const match = scoped.find((candidate) => candidate.variant?.when?.equals === value);
149
+ if (!match) {
150
+ const values = scoped.map((candidate) => candidate.variant.when.equals);
151
+ throw new UsageError(`--${selector} must be one of ${values.join(', ')} for ${scopedUsage(command, scope, shape)}.`);
152
+ }
153
+ form = match;
154
+ }
155
+ if (!reachable(form)) {
156
+ throw new UsageError(`This key does not reach ${formLabel(form)} of ${command}.`);
157
+ }
158
+ for (const leafFlag of shape.flags) {
159
+ if (flags[leafFlag.flag] === undefined)
160
+ continue;
161
+ if (leafFlag.forms.has(form) || form.variant?.when?.flag === leafFlag.flag)
162
+ continue;
163
+ // A selector of another scope is not a flag of this form either.
164
+ throw new UsageError(`--${leafFlag.flag} is not a flag of ${formLabel(form)} of ${command}.`);
165
+ }
166
+ for (const leafFlag of shape.flags) {
167
+ const field = leafFlag.forms.get(form);
168
+ if (field?.pathParam && flags[leafFlag.flag] === undefined) {
169
+ throw new UsageError(`--${leafFlag.flag} is required.`);
170
+ }
171
+ }
172
+ return form;
173
+ }
174
+ function scopedUsage(command, scope, shape) {
175
+ if (!shape.scope || scope === 'all')
176
+ return command;
177
+ return `${command} ${scope === 'personal' ? PERSONAL : `<${shape.scope.name}>`}`;
178
+ }
179
+ /** The chosen form's path params: the workspace positional, the shared ones, then V3 flags. */
180
+ export function pathParamsFor(form, shape, first, positionals, flags) {
181
+ const params = {};
182
+ const rest = [...form.pathParams];
183
+ if (shape.scope && scopeOf(form) === 'workspace')
184
+ params[rest.shift()] = first;
185
+ rest.forEach((name, index) => {
186
+ params[name] =
187
+ index < shape.positionals.length ? positionals[index] : String(flags[kebab(name)]);
188
+ });
189
+ return params;
190
+ }
191
+ /** `connectionId` reads as `connection-id`, the generator's own spelling of a flag. */
192
+ function kebab(name) {
193
+ return name
194
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
195
+ .replace(/_/g, '-')
196
+ .toLowerCase();
197
+ }
198
+ /** The id a scope positional takes, in words, with the command that lists them. */
199
+ function idHint(name) {
200
+ if (name === 'projectId')
201
+ return 'a project id (kosuke projects list)';
202
+ if (name === WORKSPACE_ID)
203
+ return 'a workspace id (kosuke workspaces list)';
204
+ return `a ${name}`;
205
+ }