@kosuke-ai/kosuke 0.0.0-stage → 1.0.1

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 (352) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +199 -2
  3. package/dist/agent/http.js +18 -0
  4. package/dist/agent/summary.js +419 -0
  5. package/dist/commands/agent.js +22 -0
  6. package/dist/commands/auth.js +117 -0
  7. package/dist/commands/integrations.js +310 -0
  8. package/dist/commands/skill-runs.js +230 -0
  9. package/dist/commands/watch.js +167 -0
  10. package/dist/generated/commands/activity/list.js +73 -0
  11. package/dist/generated/commands/crons/artifacts-list.js +57 -0
  12. package/dist/generated/commands/crons/create.js +65 -0
  13. package/dist/generated/commands/crons/delete.js +18 -0
  14. package/dist/generated/commands/crons/get.js +19 -0
  15. package/dist/generated/commands/crons/list.js +54 -0
  16. package/dist/generated/commands/crons/projects-resume.js +21 -0
  17. package/dist/generated/commands/crons/run.js +37 -0
  18. package/dist/generated/commands/crons/runs-artifacts-get.js +23 -0
  19. package/dist/generated/commands/crons/runs-artifacts-list.js +22 -0
  20. package/dist/generated/commands/crons/runs-cancel.js +21 -0
  21. package/dist/generated/commands/crons/runs-diagnostics.js +20 -0
  22. package/dist/generated/commands/crons/runs-get.js +21 -0
  23. package/dist/generated/commands/crons/runs-list.js +58 -0
  24. package/dist/generated/commands/crons/runs-messages.js +21 -0
  25. package/dist/generated/commands/crons/update.js +73 -0
  26. package/dist/generated/commands/deploy/cancel.js +18 -0
  27. package/dist/generated/commands/deploy/list.js +33 -0
  28. package/dist/generated/commands/deploy/message.js +32 -0
  29. package/dist/generated/commands/deploy/messages.js +18 -0
  30. package/dist/generated/commands/deploy/queue-delete.js +19 -0
  31. package/dist/generated/commands/deploy/queue-list.js +19 -0
  32. package/dist/generated/commands/deploy/queue-move.js +31 -0
  33. package/dist/generated/commands/deploy/queue-resume.js +19 -0
  34. package/dist/generated/commands/deploy/queue-send.js +20 -0
  35. package/dist/generated/commands/deploy/queue-steer.js +20 -0
  36. package/dist/generated/commands/deploy/queue-update.js +56 -0
  37. package/dist/generated/commands/deploy/run.js +65 -0
  38. package/dist/generated/commands/deploy/set-model.js +28 -0
  39. package/dist/generated/commands/devices/list.js +18 -0
  40. package/dist/generated/commands/devices/request.js +31 -0
  41. package/dist/generated/commands/files/delete.js +18 -0
  42. package/dist/generated/commands/files/get.js +19 -0
  43. package/dist/generated/commands/files/list.js +25 -0
  44. package/dist/generated/commands/files/mkdir.js +28 -0
  45. package/dist/generated/commands/files/move.js +35 -0
  46. package/dist/generated/commands/files/put.js +92 -0
  47. package/dist/generated/commands/github/repositories.js +16 -0
  48. package/dist/generated/commands/github/status.js +16 -0
  49. package/dist/generated/commands/index.js +650 -0
  50. package/dist/generated/commands/integrations/execute.js +49 -0
  51. package/dist/generated/commands/integrations/tools.js +70 -0
  52. package/dist/generated/commands/mac/apps.js +30 -0
  53. package/dist/generated/commands/mac/ax-tree.js +65 -0
  54. package/dist/generated/commands/mac/browser-connection-check.js +69 -0
  55. package/dist/generated/commands/mac/browser-connections.js +30 -0
  56. package/dist/generated/commands/mac/browser-profiles.js +36 -0
  57. package/dist/generated/commands/mac/browser-sign-in.js +79 -0
  58. package/dist/generated/commands/mac/browser.js +44 -0
  59. package/dist/generated/commands/mac/click.js +72 -0
  60. package/dist/generated/commands/mac/file-delete.js +37 -0
  61. package/dist/generated/commands/mac/file-list.js +37 -0
  62. package/dist/generated/commands/mac/file-move.js +44 -0
  63. package/dist/generated/commands/mac/file-read.js +37 -0
  64. package/dist/generated/commands/mac/file-write.js +50 -0
  65. package/dist/generated/commands/mac/key.js +58 -0
  66. package/dist/generated/commands/mac/open.js +43 -0
  67. package/dist/generated/commands/mac/screenshot.js +51 -0
  68. package/dist/generated/commands/mac/scroll.js +70 -0
  69. package/dist/generated/commands/mac/shell.js +51 -0
  70. package/dist/generated/commands/mac/tools.js +18 -0
  71. package/dist/generated/commands/mac/type.js +64 -0
  72. package/dist/generated/commands/mac/windows.js +30 -0
  73. package/dist/generated/commands/members/list.js +24 -0
  74. package/dist/generated/commands/models/list.js +16 -0
  75. package/dist/generated/commands/personal-tasks/create.js +72 -0
  76. package/dist/generated/commands/personal-tasks/delete.js +17 -0
  77. package/dist/generated/commands/personal-tasks/get.js +20 -0
  78. package/dist/generated/commands/personal-tasks/list.js +71 -0
  79. package/dist/generated/commands/personal-tasks/move.js +31 -0
  80. package/dist/generated/commands/personal-tasks/start.js +69 -0
  81. package/dist/generated/commands/personal-tasks/update.js +81 -0
  82. package/dist/generated/commands/preview/get.js +26 -0
  83. package/dist/generated/commands/preview/health.js +26 -0
  84. package/dist/generated/commands/preview/reset.js +28 -0
  85. package/dist/generated/commands/preview/share-create.js +37 -0
  86. package/dist/generated/commands/preview/share-delete.js +26 -0
  87. package/dist/generated/commands/preview/share-get.js +27 -0
  88. package/dist/generated/commands/preview/shared-artifact.js +19 -0
  89. package/dist/generated/commands/preview/shared.js +17 -0
  90. package/dist/generated/commands/projects/backlog-items-create.js +35 -0
  91. package/dist/generated/commands/projects/backlog-items-delete.js +19 -0
  92. package/dist/generated/commands/projects/backlog-items-list.js +19 -0
  93. package/dist/generated/commands/projects/backlog-items-send.js +20 -0
  94. package/dist/generated/commands/projects/backlog-items-update.js +42 -0
  95. package/dist/generated/commands/projects/batch-merging-eject.js +37 -0
  96. package/dist/generated/commands/projects/batch-merging-finish.js +30 -0
  97. package/dist/generated/commands/projects/batch-merging-get.js +19 -0
  98. package/dist/generated/commands/projects/batch-merging-set.js +32 -0
  99. package/dist/generated/commands/projects/branches.js +31 -0
  100. package/dist/generated/commands/projects/create.js +72 -0
  101. package/dist/generated/commands/projects/delete.js +17 -0
  102. package/dist/generated/commands/projects/env-vars-add.js +22 -0
  103. package/dist/generated/commands/projects/env-vars-remove.js +21 -0
  104. package/dist/generated/commands/projects/get.js +18 -0
  105. package/dist/generated/commands/projects/labels-color.js +37 -0
  106. package/dist/generated/commands/projects/labels-delete.js +50 -0
  107. package/dist/generated/commands/projects/labels-usage.js +27 -0
  108. package/dist/generated/commands/projects/labels.js +18 -0
  109. package/dist/generated/commands/projects/list.js +16 -0
  110. package/dist/generated/commands/projects/live-logs.js +34 -0
  111. package/dist/generated/commands/projects/live-query.js +30 -0
  112. package/dist/generated/commands/projects/live-traffic.js +27 -0
  113. package/dist/generated/commands/projects/live-write-status.js +20 -0
  114. package/dist/generated/commands/projects/live-write.js +37 -0
  115. package/dist/generated/commands/projects/qa-guide-get.js +19 -0
  116. package/dist/generated/commands/projects/qa-guide-set.js +40 -0
  117. package/dist/generated/commands/projects/releases.js +18 -0
  118. package/dist/generated/commands/projects/services-add.js +88 -0
  119. package/dist/generated/commands/projects/services-list.js +19 -0
  120. package/dist/generated/commands/projects/services-remove.js +19 -0
  121. package/dist/generated/commands/projects/services-update.js +82 -0
  122. package/dist/generated/commands/projects/settings-get.js +19 -0
  123. package/dist/generated/commands/projects/settings-import.js +99 -0
  124. package/dist/generated/commands/projects/settings-update.js +85 -0
  125. package/dist/generated/commands/projects/skills.js +39 -0
  126. package/dist/generated/commands/projects/switch-workflow.js +34 -0
  127. package/dist/generated/commands/projects/update.js +28 -0
  128. package/dist/generated/commands/projects/versions.js +18 -0
  129. package/dist/generated/commands/sensei/cards-close.js +43 -0
  130. package/dist/generated/commands/sensei/cards-mark-read.js +30 -0
  131. package/dist/generated/commands/sensei/cards-put.js +152 -0
  132. package/dist/generated/commands/sensei/cards-send-reply.js +30 -0
  133. package/dist/generated/commands/sensei/cards.js +38 -0
  134. package/dist/generated/commands/sensei/chat.js +23 -0
  135. package/dist/generated/commands/sensei/connect.js +57 -0
  136. package/dist/generated/commands/sensei/delegates-get.js +21 -0
  137. package/dist/generated/commands/sensei/delegates-note.js +46 -0
  138. package/dist/generated/commands/sensei/delegates-start.js +51 -0
  139. package/dist/generated/commands/sensei/delegates-stop.js +21 -0
  140. package/dist/generated/commands/sensei/describe.js +36 -0
  141. package/dist/generated/commands/sensei/device-requests-decide.js +48 -0
  142. package/dist/generated/commands/sensei/device-requests-list.js +27 -0
  143. package/dist/generated/commands/sensei/memory-get.js +19 -0
  144. package/dist/generated/commands/sensei/memory-put.js +55 -0
  145. package/dist/generated/commands/sensei/merge-rule.js +36 -0
  146. package/dist/generated/commands/sensei/merge.js +36 -0
  147. package/dist/generated/commands/sensei/messages-reply.js +44 -0
  148. package/dist/generated/commands/sensei/messages-reroute.js +37 -0
  149. package/dist/generated/commands/sensei/messages-send.js +98 -0
  150. package/dist/generated/commands/sensei/notifications-open.js +19 -0
  151. package/dist/generated/commands/sensei/reels-activity.js +16 -0
  152. package/dist/generated/commands/sensei/reels-proposals.js +24 -0
  153. package/dist/generated/commands/sensei/reels-ranks.js +16 -0
  154. package/dist/generated/commands/sensei/reels-skips.js +32 -0
  155. package/dist/generated/commands/sensei/repository.js +36 -0
  156. package/dist/generated/commands/sensei/review-approve.js +37 -0
  157. package/dist/generated/commands/sensei/review-ask.js +44 -0
  158. package/dist/generated/commands/sensei/review-context.js +32 -0
  159. package/dist/generated/commands/sensei/sessions-assess.js +71 -0
  160. package/dist/generated/commands/sensei/sessions-facts.js +26 -0
  161. package/dist/generated/commands/sensei/suggest.js +36 -0
  162. package/dist/generated/commands/sensei/thread-done.js +21 -0
  163. package/dist/generated/commands/sensei/thread-move.js +30 -0
  164. package/dist/generated/commands/sensei/thread-read.js +41 -0
  165. package/dist/generated/commands/sensei/thread-split.js +30 -0
  166. package/dist/generated/commands/sensei/threads.js +47 -0
  167. package/dist/generated/commands/sensei/tickets-merge.js +51 -0
  168. package/dist/generated/commands/sensei/widgets.js +15 -0
  169. package/dist/generated/commands/sessions/activate.js +33 -0
  170. package/dist/generated/commands/sessions/all.js +142 -0
  171. package/dist/generated/commands/sessions/app-stack-start.js +20 -0
  172. package/dist/generated/commands/sessions/artifacts-attach.js +31 -0
  173. package/dist/generated/commands/sessions/artifacts-get.js +21 -0
  174. package/dist/generated/commands/sessions/artifacts-list.js +20 -0
  175. package/dist/generated/commands/sessions/create.js +234 -0
  176. package/dist/generated/commands/sessions/delete.js +21 -0
  177. package/dist/generated/commands/sessions/desktop-control.js +35 -0
  178. package/dist/generated/commands/sessions/desktop-start.js +19 -0
  179. package/dist/generated/commands/sessions/desktop.js +19 -0
  180. package/dist/generated/commands/sessions/diff-comments-add.js +65 -0
  181. package/dist/generated/commands/sessions/diff-comments-delete.js +21 -0
  182. package/dist/generated/commands/sessions/diff-comments-list.js +21 -0
  183. package/dist/generated/commands/sessions/diff-comments-update.js +25 -0
  184. package/dist/generated/commands/sessions/diff-commits.js +20 -0
  185. package/dist/generated/commands/sessions/diff-files.js +20 -0
  186. package/dist/generated/commands/sessions/diff-patch.js +87 -0
  187. package/dist/generated/commands/sessions/edit-prompt.js +81 -0
  188. package/dist/generated/commands/sessions/files-get.js +28 -0
  189. package/dist/generated/commands/sessions/files-list.js +20 -0
  190. package/dist/generated/commands/sessions/files-write.js +42 -0
  191. package/dist/generated/commands/sessions/get.js +19 -0
  192. package/dist/generated/commands/sessions/git-commit-message.js +20 -0
  193. package/dist/generated/commands/sessions/git-commit.js +30 -0
  194. package/dist/generated/commands/sessions/git-push.js +20 -0
  195. package/dist/generated/commands/sessions/git-state.js +20 -0
  196. package/dist/generated/commands/sessions/jobs-cancel.js +21 -0
  197. package/dist/generated/commands/sessions/jobs-get.js +21 -0
  198. package/dist/generated/commands/sessions/jobs-list.js +35 -0
  199. package/dist/generated/commands/sessions/labels-edit.js +45 -0
  200. package/dist/generated/commands/sessions/labels-set.js +45 -0
  201. package/dist/generated/commands/sessions/list.js +130 -0
  202. package/dist/generated/commands/sessions/mark-read.js +19 -0
  203. package/dist/generated/commands/sessions/message.js +33 -0
  204. package/dist/generated/commands/sessions/messages.js +41 -0
  205. package/dist/generated/commands/sessions/needs-you.js +16 -0
  206. package/dist/generated/commands/sessions/qa-clear.js +22 -0
  207. package/dist/generated/commands/sessions/qa-set.js +33 -0
  208. package/dist/generated/commands/sessions/queue-delete.js +23 -0
  209. package/dist/generated/commands/sessions/queue-list.js +20 -0
  210. package/dist/generated/commands/sessions/queue-move.js +32 -0
  211. package/dist/generated/commands/sessions/queue-resume.js +20 -0
  212. package/dist/generated/commands/sessions/queue-send.js +21 -0
  213. package/dist/generated/commands/sessions/queue-steer.js +21 -0
  214. package/dist/generated/commands/sessions/queue-update.js +57 -0
  215. package/dist/generated/commands/sessions/runtime-command.js +39 -0
  216. package/dist/generated/commands/sessions/search.js +24 -0
  217. package/dist/generated/commands/sessions/send.js +138 -0
  218. package/dist/generated/commands/sessions/steer.js +36 -0
  219. package/dist/generated/commands/sessions/sync.js +37 -0
  220. package/dist/generated/commands/sessions/title-generate.js +29 -0
  221. package/dist/generated/commands/sessions/update.js +118 -0
  222. package/dist/generated/commands/tasks/all.js +112 -0
  223. package/dist/generated/commands/tasks/create.js +230 -0
  224. package/dist/generated/commands/tasks/delete.js +18 -0
  225. package/dist/generated/commands/tasks/get.js +19 -0
  226. package/dist/generated/commands/tasks/labels.js +18 -0
  227. package/dist/generated/commands/tasks/list.js +114 -0
  228. package/dist/generated/commands/tasks/start.js +68 -0
  229. package/dist/generated/commands/tasks/update.js +136 -0
  230. package/dist/generated/commands/user/auth-token-revoke.js +16 -0
  231. package/dist/generated/commands/user/crons-artifacts-list.js +59 -0
  232. package/dist/generated/commands/user/crons-create.js +65 -0
  233. package/dist/generated/commands/user/crons-get.js +21 -0
  234. package/dist/generated/commands/user/crons-list.js +41 -0
  235. package/dist/generated/commands/user/crons-run.js +21 -0
  236. package/dist/generated/commands/user/crons-runs-artifacts-get.js +25 -0
  237. package/dist/generated/commands/user/crons-runs-artifacts-list.js +24 -0
  238. package/dist/generated/commands/user/crons-runs-get.js +23 -0
  239. package/dist/generated/commands/user/crons-runs-list.js +52 -0
  240. package/dist/generated/commands/user/crons-update.js +73 -0
  241. package/dist/generated/commands/user/files-delete.js +18 -0
  242. package/dist/generated/commands/user/files-get.js +19 -0
  243. package/dist/generated/commands/user/files-list.js +24 -0
  244. package/dist/generated/commands/user/files-mkdir.js +27 -0
  245. package/dist/generated/commands/user/files-move.js +35 -0
  246. package/dist/generated/commands/user/files-put.js +91 -0
  247. package/dist/generated/commands/user/integrations-linkedin-connect.js +35 -0
  248. package/dist/generated/commands/user/integrations-linkedin-list.js +17 -0
  249. package/dist/generated/commands/user/integrations-linkedin-reconnect.js +19 -0
  250. package/dist/generated/commands/user/integrations-list.js +16 -0
  251. package/dist/generated/commands/user/integrations-remove.js +19 -0
  252. package/dist/generated/commands/user/integrations-x-connect.js +35 -0
  253. package/dist/generated/commands/user/integrations-x-list.js +17 -0
  254. package/dist/generated/commands/user/integrations-x-reconnect.js +19 -0
  255. package/dist/generated/commands/user/memory-list.js +16 -0
  256. package/dist/generated/commands/user/memory-put.js +36 -0
  257. package/dist/generated/commands/user/plugins-list.js +28 -0
  258. package/dist/generated/commands/user/plugins-update.js +29 -0
  259. package/dist/generated/commands/user/profile.js +16 -0
  260. package/dist/generated/commands/user/push-devices-register.js +76 -0
  261. package/dist/generated/commands/user/push-devices-remove.js +26 -0
  262. package/dist/generated/commands/user/skills-create.js +33 -0
  263. package/dist/generated/commands/user/skills-delete.js +18 -0
  264. package/dist/generated/commands/user/skills-get.js +19 -0
  265. package/dist/generated/commands/user/skills-list.js +17 -0
  266. package/dist/generated/commands/user/skills-update.js +35 -0
  267. package/dist/generated/commands/user/subscriptions-delete.js +18 -0
  268. package/dist/generated/commands/user/subscriptions-get.js +17 -0
  269. package/dist/generated/commands/user/subscriptions-grok-change.js +20 -0
  270. package/dist/generated/commands/user/subscriptions-grok-get.js +18 -0
  271. package/dist/generated/commands/user/subscriptions-login-antigravity-cancel.js +34 -0
  272. package/dist/generated/commands/user/subscriptions-login-antigravity-complete.js +40 -0
  273. package/dist/generated/commands/user/subscriptions-login-antigravity-start.js +28 -0
  274. package/dist/generated/commands/user/subscriptions-login-claude-complete.js +34 -0
  275. package/dist/generated/commands/user/subscriptions-login-claude-start.js +29 -0
  276. package/dist/generated/commands/user/subscriptions-login-codex-complete.js +28 -0
  277. package/dist/generated/commands/user/subscriptions-login-codex-start.js +29 -0
  278. package/dist/generated/commands/user/subscriptions-login-muse-complete.js +28 -0
  279. package/dist/generated/commands/user/subscriptions-login-muse-start.js +29 -0
  280. package/dist/generated/commands/user/subscriptions-logins-delete.js +20 -0
  281. package/dist/generated/commands/user/subscriptions-logins-recheck.js +19 -0
  282. package/dist/generated/commands/user/subscriptions-set-default-model.js +33 -0
  283. package/dist/generated/commands/user/subscriptions-set-key.js +35 -0
  284. package/dist/generated/commands/user/subscriptions-token-usage.js +17 -0
  285. package/dist/generated/commands/user/subscriptions-usage.js +52 -0
  286. package/dist/generated/commands/workspaces/access-status.js +30 -0
  287. package/dist/generated/commands/workspaces/ai-provider-get.js +19 -0
  288. package/dist/generated/commands/workspaces/ai-provider-google-delete-method.js +33 -0
  289. package/dist/generated/commands/workspaces/ai-provider-google-get.js +20 -0
  290. package/dist/generated/commands/workspaces/ai-provider-google-remove.js +19 -0
  291. package/dist/generated/commands/workspaces/ai-provider-google-save.js +38 -0
  292. package/dist/generated/commands/workspaces/ai-provider-google-select-method.js +39 -0
  293. package/dist/generated/commands/workspaces/ai-provider-google-usage.js +39 -0
  294. package/dist/generated/commands/workspaces/ai-provider-login-antigravity-cancel.js +36 -0
  295. package/dist/generated/commands/workspaces/ai-provider-login-antigravity-complete.js +42 -0
  296. package/dist/generated/commands/workspaces/ai-provider-login-antigravity-start.js +30 -0
  297. package/dist/generated/commands/workspaces/ai-provider-logins-recheck.js +41 -0
  298. package/dist/generated/commands/workspaces/ai-provider-remove.js +57 -0
  299. package/dist/generated/commands/workspaces/ai-provider-set.js +21 -0
  300. package/dist/generated/commands/workspaces/ai-provider-token-usage.js +19 -0
  301. package/dist/generated/commands/workspaces/ai-provider-usage-claude.js +39 -0
  302. package/dist/generated/commands/workspaces/ai-provider-usage-codex.js +39 -0
  303. package/dist/generated/commands/workspaces/ai-provider-usage-coding-plan.js +32 -0
  304. package/dist/generated/commands/workspaces/ai-provider-usage-deepseek.js +32 -0
  305. package/dist/generated/commands/workspaces/ai-provider-usage-grok.js +39 -0
  306. package/dist/generated/commands/workspaces/ai-provider-usage-kimi-code.js +32 -0
  307. package/dist/generated/commands/workspaces/ai-provider-usage-muse.js +39 -0
  308. package/dist/generated/commands/workspaces/artifacts.js +26 -0
  309. package/dist/generated/commands/workspaces/credits.js +18 -0
  310. package/dist/generated/commands/workspaces/get.js +18 -0
  311. package/dist/generated/commands/workspaces/grok-change.js +21 -0
  312. package/dist/generated/commands/workspaces/grok-get.js +19 -0
  313. package/dist/generated/commands/workspaces/integrations-get.js +20 -0
  314. package/dist/generated/commands/workspaces/integrations-list.js +37 -0
  315. package/dist/generated/commands/workspaces/integrations-remove.js +19 -0
  316. package/dist/generated/commands/workspaces/list.js +16 -0
  317. package/dist/generated/commands/workspaces/members.js +26 -0
  318. package/dist/generated/commands/workspaces/plugins-list.js +30 -0
  319. package/dist/generated/commands/workspaces/plugins-update.js +30 -0
  320. package/dist/generated/commands/workspaces/provider-login-claude-complete.js +35 -0
  321. package/dist/generated/commands/workspaces/provider-login-claude-start.js +30 -0
  322. package/dist/generated/commands/workspaces/provider-login-codex-complete.js +29 -0
  323. package/dist/generated/commands/workspaces/provider-login-codex-start.js +30 -0
  324. package/dist/generated/commands/workspaces/provider-login-muse-complete.js +29 -0
  325. package/dist/generated/commands/workspaces/provider-login-muse-start.js +30 -0
  326. package/dist/generated/commands/workspaces/sandbox-limit.js +18 -0
  327. package/dist/generated/commands/workspaces/skills-create.js +35 -0
  328. package/dist/generated/commands/workspaces/skills-delete.js +19 -0
  329. package/dist/generated/commands/workspaces/skills-get.js +20 -0
  330. package/dist/generated/commands/workspaces/skills-list.js +19 -0
  331. package/dist/generated/commands/workspaces/skills-update.js +36 -0
  332. package/dist/generated/commands/workspaces/stop-sandboxes.js +28 -0
  333. package/dist/generated/commands/workspaces/timezone-set.js +29 -0
  334. package/dist/generated/commands/workspaces/usage.js +33 -0
  335. package/dist/generated/providers.js +31 -0
  336. package/dist/index.js +7 -0
  337. package/dist/integrations/api.js +136 -0
  338. package/dist/integrations/render.js +59 -0
  339. package/dist/program.js +73 -0
  340. package/dist/runtime/agent-tokens.js +39 -0
  341. package/dist/runtime/attach.js +199 -0
  342. package/dist/runtime/attachments.js +63 -0
  343. package/dist/runtime/client.js +188 -0
  344. package/dist/runtime/config.js +49 -0
  345. package/dist/runtime/credentials.js +32 -0
  346. package/dist/runtime/descriptor.js +7 -0
  347. package/dist/runtime/invoke.js +152 -0
  348. package/dist/runtime/job-watch.js +374 -0
  349. package/dist/runtime/runtime.js +46 -0
  350. package/dist/runtime/version.js +5 -0
  351. package/openapi.json +26091 -0
  352. package/package.json +104 -4
@@ -0,0 +1,36 @@
1
+ export const operation = {
2
+ "method": "patch",
3
+ "path": "/api/organizations/{workspaceId}/skills/{skillId}",
4
+ "command": [
5
+ "workspaces",
6
+ "skills",
7
+ "update"
8
+ ],
9
+ "summary": "Enable or disable a custom skill, or replace every file it holds; at least one of enabled and files. Admins only. Answers 204.",
10
+ "pathParams": [
11
+ "workspaceId",
12
+ "skillId"
13
+ ],
14
+ "query": [],
15
+ "body": {
16
+ "fields": [
17
+ {
18
+ "name": "files",
19
+ "flag": "files",
20
+ "kind": "json",
21
+ "required": false
22
+ },
23
+ {
24
+ "name": "enabled",
25
+ "flag": "enabled",
26
+ "kind": "boolean",
27
+ "required": false
28
+ }
29
+ ],
30
+ "required": true
31
+ },
32
+ "multipart": null,
33
+ "attachments": false,
34
+ "anonymous": false,
35
+ "agents": "all"
36
+ };
@@ -0,0 +1,28 @@
1
+ export const operation = {
2
+ "method": "post",
3
+ "path": "/api/organizations/{workspaceId}/stop-sandboxes",
4
+ "command": [
5
+ "workspaces",
6
+ "stop-sandboxes"
7
+ ],
8
+ "summary": "Pause the sandboxes of the given chat sessions.",
9
+ "pathParams": [
10
+ "workspaceId"
11
+ ],
12
+ "query": [],
13
+ "body": {
14
+ "fields": [
15
+ {
16
+ "name": "sessionIds",
17
+ "flag": "session-ids",
18
+ "kind": "json",
19
+ "required": true
20
+ }
21
+ ],
22
+ "required": true
23
+ },
24
+ "multipart": null,
25
+ "attachments": false,
26
+ "anonymous": false,
27
+ "agents": "all"
28
+ };
@@ -0,0 +1,29 @@
1
+ export const operation = {
2
+ "method": "put",
3
+ "path": "/api/organizations/{workspaceId}/timezone",
4
+ "command": [
5
+ "workspaces",
6
+ "timezone-set"
7
+ ],
8
+ "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
+ "pathParams": [
10
+ "workspaceId"
11
+ ],
12
+ "query": [],
13
+ "body": {
14
+ "fields": [
15
+ {
16
+ "name": "timezone",
17
+ "flag": "timezone",
18
+ "kind": "string",
19
+ "required": true,
20
+ "description": "The IANA zone every cron of the workspace is read and shown in, e.g. Europe/Rome or UTC."
21
+ }
22
+ ],
23
+ "required": true
24
+ },
25
+ "multipart": null,
26
+ "attachments": false,
27
+ "anonymous": false,
28
+ "agents": "all"
29
+ };
@@ -0,0 +1,33 @@
1
+ export const operation = {
2
+ "method": "get",
3
+ "path": "/api/organizations/{workspaceId}/usage",
4
+ "command": [
5
+ "workspaces",
6
+ "usage"
7
+ ],
8
+ "summary": "Read sandbox usage by day and by project. start must precede end and the range is capped at 366 days.",
9
+ "pathParams": [
10
+ "workspaceId"
11
+ ],
12
+ "query": [
13
+ {
14
+ "name": "start",
15
+ "flag": "start",
16
+ "kind": "string",
17
+ "required": false,
18
+ "description": "Range start, any Date-parsable string. Default: end minus 30 days."
19
+ },
20
+ {
21
+ "name": "end",
22
+ "flag": "end",
23
+ "kind": "string",
24
+ "required": false,
25
+ "description": "Range end, any Date-parsable string. Default: now."
26
+ }
27
+ ],
28
+ "body": null,
29
+ "multipart": null,
30
+ "attachments": false,
31
+ "anonymous": false,
32
+ "agents": "all"
33
+ };
@@ -0,0 +1,31 @@
1
+ // Generated from the sandbox CLI model catalog by scripts/generate.ts. Do not edit.
2
+ export const providers = [
3
+ {
4
+ "key": "anthropic",
5
+ "name": "Anthropic"
6
+ },
7
+ {
8
+ "key": "openai",
9
+ "name": "OpenAI"
10
+ },
11
+ {
12
+ "key": "zai",
13
+ "name": "Z.ai"
14
+ },
15
+ {
16
+ "key": "moonshot",
17
+ "name": "Moonshot AI"
18
+ },
19
+ {
20
+ "key": "deepseek",
21
+ "name": "DeepSeek"
22
+ },
23
+ {
24
+ "key": "meta",
25
+ "name": "Meta"
26
+ },
27
+ {
28
+ "key": "google",
29
+ "name": "Google"
30
+ }
31
+ ];
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { run } from './program.js';
3
+ run(process.argv).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`kosuke: ${message}\n`);
6
+ process.exitCode = 1;
7
+ });
@@ -0,0 +1,136 @@
1
+ import { ResponseTooLarge } from '../runtime/client.js';
2
+ /**
3
+ * The integration tools routes, read the way a command prints them. Everything
4
+ * the platform sends is text from a connected third party or a user's label, so
5
+ * it is flattened to bounded one-liners here and never interpreted.
6
+ */
7
+ export const TOOLS_PATH = '/api/agent-integrations/tools';
8
+ const UNAVAILABLE = 'Integration tools are temporarily unavailable.';
9
+ const TOO_LARGE = 'The platform answer was too large to read. Narrow the request.';
10
+ const TIMED_OUT = 'The platform did not answer in time.';
11
+ /** A write may have landed before the connection failed; a retry could repeat it. */
12
+ const UNKNOWN_OUTCOME = 'The integration tool call did not complete and its outcome is unknown. Do not retry it; read the current state first.';
13
+ export const isRow = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
14
+ export const rowsOf = (value) => (Array.isArray(value) ? value.filter(isRow) : []);
15
+ /** One bounded line: control characters and runs of space become one space. */
16
+ export function oneLine(value, max) {
17
+ if (typeof value !== 'string')
18
+ return '';
19
+ const flat = value.replace(/[\p{Cc}\p{Cf}\s]+/gu, ' ').trim();
20
+ return flat.length > max ? `${flat.slice(0, max - 1).trimEnd()}…` : flat;
21
+ }
22
+ const count = (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;
23
+ export function connectionOf(row) {
24
+ const id = oneLine(row.id, 16);
25
+ const alias = oneLine(row.alias, 80);
26
+ if (!alias)
27
+ return null;
28
+ return {
29
+ id,
30
+ alias,
31
+ scope: row.scope === 'personal' ? 'personal' : 'workspace',
32
+ label: oneLine(row.label, 60),
33
+ accountIdentity: oneLine(row.accountIdentity, 80) || null,
34
+ };
35
+ }
36
+ /** `data` of a `view=overview` answer, or null for any other shape (an older platform's). */
37
+ function parseOverview(data) {
38
+ if (!isRow(data) || data.view !== 'overview' || !Array.isArray(data.toolkits))
39
+ return null;
40
+ const toolkits = rowsOf(data.toolkits).map((row) => {
41
+ const tools = isRow(row.tools) ? row.tools : {};
42
+ const toolkit = oneLine(row.toolkit, 64);
43
+ return {
44
+ toolkit,
45
+ name: oneLine(row.name, 60) || toolkit,
46
+ browser: row.kind === 'browser',
47
+ connections: rowsOf(row.connections).flatMap((connection) => connectionOf(connection) ?? []),
48
+ read: count(tools.read),
49
+ write: count(tools.write),
50
+ };
51
+ });
52
+ const tools = Array.isArray(data.tools)
53
+ ? rowsOf(data.tools).map((row) => ({
54
+ name: oneLine(row.name, 80),
55
+ toolkit: oneLine(row.toolkit, 64),
56
+ access: row.access === 'read' ? 'read' : 'write',
57
+ description: oneLine(row.description, 160),
58
+ aliases: (Array.isArray(row.aliases) ? row.aliases : [])
59
+ .map((alias) => oneLine(alias, 80))
60
+ .filter(Boolean),
61
+ }))
62
+ : null;
63
+ return {
64
+ toolkits,
65
+ connectionTotal: count(data.connectionTotal),
66
+ tools,
67
+ toolTotal: tools ? count(data.toolTotal) : null,
68
+ note: oneLine(data.note, 400) || null,
69
+ };
70
+ }
71
+ /** The platform's own sentence for a refusal, bounded; its status when it said nothing. */
72
+ function sentenceOf(error, status) {
73
+ const said = isRow(error) ? oneLine(error.error, 300) : '';
74
+ return said || `HTTP ${status}`;
75
+ }
76
+ /**
77
+ * Why a request failed, in words the reader can act on. The 4xx sentences are
78
+ * the platform's own (a Connector Token, a workspace the key is not a member of,
79
+ * an agent); only 401 and 429 are worded here.
80
+ */
81
+ export function failureOf(status, error, method) {
82
+ // A gateway answering for the app does not prove the app never ran the write.
83
+ if (method === 'POST' && (status === 502 || status === 504)) {
84
+ return { ok: false, status, message: UNKNOWN_OUTCOME };
85
+ }
86
+ if (status === 401) {
87
+ return {
88
+ ok: false,
89
+ status,
90
+ message: 'The API key was refused (HTTP 401). Run `kosuke auth status`.',
91
+ };
92
+ }
93
+ if (status === 429) {
94
+ return { ok: false, status, message: 'Too many requests. Try again shortly.' };
95
+ }
96
+ if (status >= 400 && status < 500) {
97
+ return { ok: false, status, message: sentenceOf(error, status) };
98
+ }
99
+ return { ok: false, status, message: UNAVAILABLE };
100
+ }
101
+ /** A request that never got an answer. */
102
+ export function transportFailure(error, method) {
103
+ const name = error instanceof Error ? error.name : '';
104
+ if (method === 'GET' && error instanceof ResponseTooLarge) {
105
+ return { ok: false, status: null, message: TOO_LARGE };
106
+ }
107
+ const timedOut = name === 'TimeoutError' || name === 'AbortError';
108
+ if (method === 'POST')
109
+ return { ok: false, status: null, message: UNKNOWN_OUTCOME };
110
+ return { ok: false, status: null, message: timedOut ? TIMED_OUT : UNAVAILABLE };
111
+ }
112
+ /** The overview view: the connections per toolkit, and the matching tools once a filter is set. */
113
+ export async function readOverview(client, query, signal) {
114
+ const params = { view: 'overview', ...query };
115
+ try {
116
+ const { data, error, response } = await client.GET(TOOLS_PATH, {
117
+ params: { query: params },
118
+ signal,
119
+ });
120
+ if (!response.ok)
121
+ return failureOf(response.status, error, 'GET');
122
+ const raw = isRow(data) ? data.data : undefined;
123
+ const overview = parseOverview(raw);
124
+ if (!overview) {
125
+ return {
126
+ ok: false,
127
+ status: response.status,
128
+ message: 'This platform does not offer the integrations overview yet.',
129
+ };
130
+ }
131
+ return { ok: true, overview, raw };
132
+ }
133
+ catch (error) {
134
+ return transportFailure(error, 'GET');
135
+ }
136
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * `kosuke integrations list` as text: a block per toolkit, with its connections
3
+ * and tool counts, then the matching tools when a filter is set. A cut is never
4
+ * silent: the server's note is printed whenever it sent one.
5
+ */
6
+ const plural = (count, noun) => `${count} ${noun}${count === 1 ? '' : 's'}`;
7
+ function connectionLine(connection) {
8
+ const identity = connection.accountIdentity ?? 'account unknown';
9
+ const id = connection.id ? `, id ${connection.id}` : '';
10
+ return `${connection.alias}: ${connection.scope}, "${connection.label}", ${identity}${id}`;
11
+ }
12
+ function toolLine(tool, width) {
13
+ const access = (tool.access === 'read' ? '[read-only]' : '[writes]').padEnd(11);
14
+ const accounts = tool.aliases.length > 0 ? ` [account: ${tool.aliases.join(', ')}]` : '';
15
+ return `${tool.name.padEnd(width)} ${access} ${tool.description}${accounts}`.trimEnd();
16
+ }
17
+ export function renderOverview(overview, filtered) {
18
+ const { toolkits, tools, note } = overview;
19
+ if (toolkits.length === 0 && overview.connectionTotal === 0) {
20
+ return filtered ? 'No connected tool matches.\n' : 'No integrations are connected.\n';
21
+ }
22
+ // A browser site has connections and no tools, so a filter naming it still shows them.
23
+ const connected = toolkits.some((toolkit) => toolkit.browser && toolkit.connections.length > 0);
24
+ if (filtered && tools?.length === 0 && !connected)
25
+ return 'No connected tool matches.\n';
26
+ const width = Math.max(0, ...(tools ?? []).map((tool) => tool.name.length));
27
+ const blocks = toolkits.map((toolkit) => {
28
+ const offer = toolkit.browser
29
+ ? 'browser, no tools'
30
+ : `${toolkit.read} read, ${toolkit.write} write tools`;
31
+ const lines = [
32
+ `${toolkit.name} (${toolkit.toolkit}): ${offer}`,
33
+ ...toolkit.connections.map((connection) => ` ${connectionLine(connection)}`),
34
+ ];
35
+ const own = (tools ?? []).filter((tool) => tool.toolkit === toolkit.toolkit);
36
+ if (own.length > 0) {
37
+ lines.push(' tools:', ...own.map((tool) => ` ${toolLine(tool, width)}`));
38
+ }
39
+ return lines.join('\n');
40
+ });
41
+ const out = [blocks.join('\n\n')];
42
+ if (tools) {
43
+ if (tools.length > 0) {
44
+ out.push(`${tools.length} of ${plural(overview.toolTotal ?? tools.length, 'tool')} shown.`);
45
+ }
46
+ }
47
+ else {
48
+ out.push(`${plural(overview.connectionTotal, 'connection')}. ` +
49
+ "`kosuke integrations list --toolkit <slug>` shows a toolkit's tools; " +
50
+ "`kosuke integrations describe <tool>` prints one tool's input schema.");
51
+ }
52
+ if (note)
53
+ out.push(note);
54
+ return `${out.join('\n\n')}\n`;
55
+ }
56
+ /** One connection per line, for a refusal that asks the caller to pick one. */
57
+ export function choiceLines(choices) {
58
+ return choices.map((choice) => ` ${connectionLine(choice)}`).join('\n');
59
+ }
@@ -0,0 +1,73 @@
1
+ import { Command } from 'commander';
2
+ import { attachSkillMarkerCommands, runSkillMarkerCommand } from './commands/skill-runs.js';
3
+ import { attachAgentCommands } from './commands/agent.js';
4
+ import { attachAuthCommands } from './commands/auth.js';
5
+ import { attachIntegrationsCommands } from './commands/integrations.js';
6
+ import { attachWatchCommand } from './commands/watch.js';
7
+ import { operations } from './generated/commands/index.js';
8
+ import { attachOperation } from './runtime/attach.js';
9
+ import { agentTokenOf, isReachable } from './runtime/agent-tokens.js';
10
+ import { createRuntime, ExitSignal } from './runtime/runtime.js';
11
+ import { version } from './runtime/version.js';
12
+ /**
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
+ * before any subcommand runs, so the runtime the subcommands share is built once, from them.
16
+ */
17
+ export function createProgram(options = {}) {
18
+ const program = new Command('kosuke')
19
+ .description('Drive the Kosuke platform from your own machine.')
20
+ .version(version)
21
+ .option('--api-key <key>', 'API key; overrides KOSUKE_API_KEY and the stored one.')
22
+ .option('--api-url <url>', 'Platform URL; overrides KOSUKE_API_URL. Default https://app.kosuke.ai.')
23
+ // commander's default is kept: a program option is read wherever it
24
+ // appears, so `kosuke projects list --api-key X` works as the README shows.
25
+ .showHelpAfterError('(add --help for usage)')
26
+ .configureHelp({ sortSubcommands: true });
27
+ // Built lazily, on the first use, so `--help` and `--version` never touch
28
+ // the credentials file.
29
+ let runtime = null;
30
+ const runtimeFor = () => (runtime ??= (options.runtime ?? ((flags) => createRuntime({ ...options.process, flags })))(program.opts()));
31
+ const lazy = {
32
+ credentials: () => runtimeFor().credentials(),
33
+ client: (o) => runtimeFor().client(o),
34
+ output: (outcome) => runtimeFor().output(outcome),
35
+ };
36
+ attachAuthCommands(program, lazy, options.auth);
37
+ // An agent's credential reaches what its member's API key does, less the
38
+ // deletes and the personal credentials, so the tree shows that and
39
+ // `kosuke --help` there is true rather than a list of 403s.
40
+ // Read from the env alone, which keeps `--help` off the credentials file.
41
+ const token = (options.process?.env ?? process.env).KOSUKE_API_KEY;
42
+ 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);
48
+ // Every agent token reads the digest's two lists as its member. Only a
49
+ // member's own key and their Sensei may mark Activity seen, so the others
50
+ // read it with `--peek`.
51
+ attachAgentCommands(program, lazy, options.agent);
52
+ if (narrowedTo === null || narrowedTo === 'sandboxToken')
53
+ attachSkillMarkerCommands(program, options.process);
54
+ // Beside the generated `integrations tools` and `execute`, which stay raw passthroughs.
55
+ attachIntegrationsCommands(program, lazy, options.integrations);
56
+ // The job stream admits a member's API key only; it closes 4401 on every narrower token.
57
+ if (narrowedTo === null)
58
+ attachWatchCommand(program, lazy, options.watch);
59
+ return program;
60
+ }
61
+ /** Run to completion; an ExitSignal has already reported and set the exit code. */
62
+ export async function run(argv, options) {
63
+ try {
64
+ if (await runSkillMarkerCommand(argv.slice(2), options?.process))
65
+ return;
66
+ await createProgram(options).parseAsync([...argv]);
67
+ }
68
+ catch (error) {
69
+ if (error instanceof ExitSignal)
70
+ return;
71
+ throw error;
72
+ }
73
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The agent tokens the tree narrows to, and the one place that maps each to the
3
+ * key prefixes it is minted with and the document extension that marks the
4
+ * operations it reaches. The server enforces what a token reaches; here it only
5
+ * decides which commands the tree shows.
6
+ *
7
+ * Imports nothing, so the generator can load it on plain node.
8
+ */
9
+ export const AGENT_TOKENS = [
10
+ // Wire contract with `src/lib/auth/sandbox-agent-token.ts`: a chat sandbox's own Turn.
11
+ { token: 'sandboxToken', prefixes: ['kosuke_sbx_'], extension: 'x-kosuke-sandbox-token' },
12
+ // Wire contract with `src/lib/auth/cron-token.ts`: one Cron Run.
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
+ },
22
+ ];
23
+ /** The agent token a key is, by its prefix; null for a member's own key or none. */
24
+ export function agentTokenOf(key) {
25
+ if (!key)
26
+ return null;
27
+ const found = AGENT_TOKENS.find(({ prefixes }) => prefixes.some((prefix) => key.startsWith(prefix)));
28
+ return found?.token ?? null;
29
+ }
30
+ /** The descriptor value for the agent tokens the document grants an operation. */
31
+ export function agentReach(granted) {
32
+ const tokens = AGENT_TOKENS.map(({ token }) => token).filter((token) => granted.includes(token));
33
+ if (tokens.length === 0)
34
+ return undefined;
35
+ return tokens.length === AGENT_TOKENS.length ? 'all' : tokens;
36
+ }
37
+ export function isReachable(reach, token) {
38
+ return reach === 'all' || (reach?.includes(token) ?? false);
39
+ }