@kosuke-ai/cli 6.4.1 → 6.6.0

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.
@@ -85,6 +85,23 @@ const obj = (value) => value && typeof value === 'object' && !Array.isArray(valu
85
85
  function dataOf(result) {
86
86
  return result.response.ok ? obj(obj(result.data)?.data) : null;
87
87
  }
88
+ /**
89
+ * A DeepSeek API key's balance, which it reports instead of windows: `balance 12.40 USD`,
90
+ * each currency apart, or `balance empty` once it cannot pay for a request.
91
+ */
92
+ function balanceWords(usage) {
93
+ const balance = obj(usage?.balance);
94
+ if (!balance)
95
+ return null;
96
+ if (balance.available === false)
97
+ return 'balance empty';
98
+ const amounts = (Array.isArray(balance.amounts) ? balance.amounts : []).flatMap((amount) => {
99
+ const total = str(obj(amount)?.total);
100
+ const currency = str(obj(amount)?.currency);
101
+ return total && currency ? [`${total} ${currency}`] : [];
102
+ });
103
+ return amounts.length ? `balance ${amounts.join(', ')}` : null;
104
+ }
88
105
  /** `session 42%, week 61%` or `session 42%, month 12%`, with only the windows the provider reported. */
89
106
  function usageWords(usage) {
90
107
  const windows = ['session', 'week', 'month'].flatMap((name) => {
@@ -93,19 +110,23 @@ function usageWords(usage) {
93
110
  ? [`${name} ${Math.round(utilization)}% used`]
94
111
  : [];
95
112
  });
96
- return windows.length ? windows.join(', ') : null;
113
+ const balance = balanceWords(usage);
114
+ const words = balance ? [...windows, balance] : windows;
115
+ return words.length ? words.join(', ') : null;
97
116
  }
98
117
  const SUBSCRIPTIONS = [
99
118
  { key: 'anthropic', label: 'Your Claude subscription', usage: 'claude_code' },
100
119
  { key: 'openai', label: 'Your Codex subscription', usage: 'codex' },
101
120
  { key: 'zai', label: 'Your GLM Coding Plan', usage: 'coding_plan' },
102
121
  { key: 'moonshot', label: 'Your Kimi Code', usage: 'kimi_code' },
122
+ { key: 'deepseek', label: 'Your DeepSeek API key', usage: 'deepseek_api' },
103
123
  ];
104
124
  const WORKSPACE_PROVIDERS = [
105
125
  { key: 'anthropic', name: 'Anthropic' },
106
126
  { key: 'openai', name: 'OpenAI' },
107
127
  { key: 'zai', name: 'Z.ai' },
108
128
  { key: 'moonshot', name: 'Moonshot AI' },
129
+ { key: 'deepseek', name: 'DeepSeek' },
109
130
  ];
110
131
  const AUTH_METHOD_NAMES = {
111
132
  api_key: 'API key',
@@ -114,8 +135,15 @@ const AUTH_METHOD_NAMES = {
114
135
  codex: 'Codex login',
115
136
  coding_plan: 'GLM Coding Plan',
116
137
  kimi_code: 'Kimi Code',
138
+ deepseek_api: 'DeepSeek API',
117
139
  };
118
- const USAGE_PLANS = ['claude_code', 'codex', 'coding_plan', 'kimi_code'];
140
+ const USAGE_PLANS = [
141
+ 'claude_code',
142
+ 'codex',
143
+ 'coding_plan',
144
+ 'kimi_code',
145
+ 'deepseek_api',
146
+ ];
119
147
  function subscriptionEntries(subscriptions) {
120
148
  return SUBSCRIPTIONS.flatMap(({ key, label, usage }) => {
121
149
  const row = obj(subscriptions[key]);
@@ -181,6 +209,7 @@ async function fetchProviders(client, workspace, signal) {
181
209
  codex: '/api/organizations/{workspaceId}/ai-provider/codex-usage',
182
210
  coding_plan: '/api/organizations/{workspaceId}/ai-provider/coding-plan-usage',
183
211
  kimi_code: '/api/organizations/{workspaceId}/ai-provider/kimi-code-usage',
212
+ deepseek_api: '/api/organizations/{workspaceId}/ai-provider/deepseek-usage',
184
213
  };
185
214
  const shared = (settings ? workspaceEntries(settings) : []).map((entry) => ({
186
215
  entry,
@@ -48,7 +48,7 @@ export const operation = {
48
48
  "flag": "kind",
49
49
  "kind": "string",
50
50
  "required": false,
51
- "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed), or 'change' for every Change and 'action' for every Member Action."
51
+ "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed, integration_custom_tool_saved, integration_custom_tool_enabled, integration_custom_tool_disabled, integration_custom_tool_deleted, integration_custom_tool_restored), or 'change' for every Change and 'action' for every Member Action."
52
52
  },
53
53
  {
54
54
  "name": "limit",
@@ -140,40 +140,41 @@ import { operation as o138 } from './workspaces/ai-provider-set.js';
140
140
  import { operation as o139 } from './workspaces/ai-provider-usage-claude.js';
141
141
  import { operation as o140 } from './workspaces/ai-provider-usage-codex.js';
142
142
  import { operation as o141 } from './workspaces/ai-provider-usage-coding-plan.js';
143
- import { operation as o142 } from './workspaces/ai-provider-usage-kimi-code.js';
144
- import { operation as o143 } from './workspaces/artifacts.js';
145
- import { operation as o144 } from './workspaces/credits.js';
146
- import { operation as o145 } from './workspaces/get.js';
147
- import { operation as o146 } from './workspaces/getting-started-get.js';
148
- import { operation as o147 } from './workspaces/getting-started-update.js';
149
- import { operation as o148 } from './workspaces/integrations-get.js';
150
- import { operation as o149 } from './workspaces/integrations-list.js';
151
- import { operation as o150 } from './workspaces/integrations-remove.js';
152
- import { operation as o151 } from './workspaces/integrations-slack-get.js';
153
- import { operation as o152 } from './workspaces/lead-cards.js';
154
- import { operation as o153 } from './workspaces/lead-merge.js';
155
- import { operation as o154 } from './workspaces/lead-notifications-open.js';
156
- import { operation as o155 } from './workspaces/lead-proposals-create.js';
157
- import { operation as o156 } from './workspaces/lead-review-request.js';
158
- import { operation as o157 } from './workspaces/lead-session-send.js';
159
- import { operation as o158 } from './workspaces/lead-triage.js';
160
- import { operation as o159 } from './workspaces/list.js';
161
- import { operation as o160 } from './workspaces/members.js';
162
- import { operation as o161 } from './workspaces/plugins-list.js';
163
- import { operation as o162 } from './workspaces/plugins-update.js';
164
- import { operation as o163 } from './workspaces/provider-login-claude-complete.js';
165
- import { operation as o164 } from './workspaces/provider-login-claude-start.js';
166
- import { operation as o165 } from './workspaces/provider-login-codex-complete.js';
167
- import { operation as o166 } from './workspaces/provider-login-codex-start.js';
168
- import { operation as o167 } from './workspaces/sandbox-limit.js';
169
- import { operation as o168 } from './workspaces/skills-create.js';
170
- import { operation as o169 } from './workspaces/skills-delete.js';
171
- import { operation as o170 } from './workspaces/skills-get.js';
172
- import { operation as o171 } from './workspaces/skills-list.js';
173
- import { operation as o172 } from './workspaces/skills-update.js';
174
- import { operation as o173 } from './workspaces/stop-sandboxes.js';
175
- import { operation as o174 } from './workspaces/timezone-set.js';
176
- import { operation as o175 } from './workspaces/usage.js';
143
+ import { operation as o142 } from './workspaces/ai-provider-usage-deepseek.js';
144
+ import { operation as o143 } from './workspaces/ai-provider-usage-kimi-code.js';
145
+ import { operation as o144 } from './workspaces/artifacts.js';
146
+ import { operation as o145 } from './workspaces/credits.js';
147
+ import { operation as o146 } from './workspaces/get.js';
148
+ import { operation as o147 } from './workspaces/getting-started-get.js';
149
+ import { operation as o148 } from './workspaces/getting-started-update.js';
150
+ import { operation as o149 } from './workspaces/integrations-get.js';
151
+ import { operation as o150 } from './workspaces/integrations-list.js';
152
+ import { operation as o151 } from './workspaces/integrations-remove.js';
153
+ import { operation as o152 } from './workspaces/integrations-slack-get.js';
154
+ import { operation as o153 } from './workspaces/lead-cards.js';
155
+ import { operation as o154 } from './workspaces/lead-merge.js';
156
+ import { operation as o155 } from './workspaces/lead-notifications-open.js';
157
+ import { operation as o156 } from './workspaces/lead-proposals-create.js';
158
+ import { operation as o157 } from './workspaces/lead-review-request.js';
159
+ import { operation as o158 } from './workspaces/lead-session-send.js';
160
+ import { operation as o159 } from './workspaces/lead-triage.js';
161
+ import { operation as o160 } from './workspaces/list.js';
162
+ import { operation as o161 } from './workspaces/members.js';
163
+ import { operation as o162 } from './workspaces/plugins-list.js';
164
+ import { operation as o163 } from './workspaces/plugins-update.js';
165
+ import { operation as o164 } from './workspaces/provider-login-claude-complete.js';
166
+ import { operation as o165 } from './workspaces/provider-login-claude-start.js';
167
+ import { operation as o166 } from './workspaces/provider-login-codex-complete.js';
168
+ import { operation as o167 } from './workspaces/provider-login-codex-start.js';
169
+ import { operation as o168 } from './workspaces/sandbox-limit.js';
170
+ import { operation as o169 } from './workspaces/skills-create.js';
171
+ import { operation as o170 } from './workspaces/skills-delete.js';
172
+ import { operation as o171 } from './workspaces/skills-get.js';
173
+ import { operation as o172 } from './workspaces/skills-list.js';
174
+ import { operation as o173 } from './workspaces/skills-update.js';
175
+ import { operation as o174 } from './workspaces/stop-sandboxes.js';
176
+ import { operation as o175 } from './workspaces/timezone-set.js';
177
+ import { operation as o176 } from './workspaces/usage.js';
177
178
  export const operations = [
178
179
  o0,
179
180
  o1,
@@ -351,4 +352,5 @@ export const operations = [
351
352
  o173,
352
353
  o174,
353
354
  o175,
355
+ o176,
354
356
  ];
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "subscriptions",
7
7
  "delete"
8
8
  ],
9
- "summary": "Disconnect every login of your subscription for one provider, anthropic, openai, zai or moonshot, and release the sandboxes running on it. Answers 204.",
9
+ "summary": "Disconnect every login of your subscription for one provider, anthropic, openai, zai, moonshot or deepseek, and release the sandboxes running on it. Answers 204.",
10
10
  "pathParams": [
11
11
  "provider"
12
12
  ],
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "subscriptions",
7
7
  "get"
8
8
  ],
9
- "summary": "Read your Claude, Codex, GLM Coding Plan and Kimi Code subscriptions and your default model. Per provider: the login in use (connected, needsReauth, accountEmail, and maskedApiKey for a pasted plan key) and every login in the order it is used (logins).",
9
+ "summary": "Read your Claude, Codex, GLM Coding Plan, Kimi Code and DeepSeek API subscriptions and your default model. Per provider: the login in use (connected, needsReauth, accountEmail, and maskedApiKey for a pasted key) and every login in the order it is used (logins).",
10
10
  "pathParams": [],
11
11
  "query": [],
12
12
  "body": null,
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "subscriptions",
7
7
  "set-key"
8
8
  ],
9
- "summary": "Add a GLM Coding Plan (zai) or Kimi Code (moonshot) key to your subscriptions: Claude and Codex connect by signing in. With loginId it replaces that key instead. The key is tested with one call before it is kept; 409 when it is already connected or you hold five.",
9
+ "summary": "Add a GLM Coding Plan (zai), Kimi Code (moonshot) or DeepSeek API (deepseek) key to your subscriptions: Claude and Codex connect by signing in. With loginId it replaces that key instead. The key is tested with one call before it is kept, and a DeepSeek key with an empty balance still passes; 409 when it is already connected or you hold five.",
10
10
  "pathParams": [
11
11
  "provider"
12
12
  ],
@@ -6,7 +6,7 @@ export const operation = {
6
6
  "subscriptions",
7
7
  "usage"
8
8
  ],
9
- "summary": "Read the session and weekly utilization of your Claude (claude_code, the default), Codex, GLM Coding Plan (coding_plan) or Kimi Code (kimi_code) subscription: of the login in use, or of the one loginId names. Kimi Code reports a monthly window instead of a weekly one. 400 when it is not connected or needs reconnecting.",
9
+ "summary": "Read the session and weekly utilization of your Claude (claude_code, the default), Codex, GLM Coding Plan (coding_plan) or Kimi Code (kimi_code) subscription, or the balance of your DeepSeek API (deepseek_api) key: of the login in use, or of the one loginId names. Kimi Code reports a monthly window instead of a weekly one; DeepSeek reports no windows, only a balance per currency. 400 when it is not connected or needs reconnecting.",
10
10
  "pathParams": [],
11
11
  "query": [
12
12
  {
@@ -18,7 +18,8 @@ export const operation = {
18
18
  "claude_code",
19
19
  "codex",
20
20
  "coding_plan",
21
- "kimi_code"
21
+ "kimi_code",
22
+ "deepseek_api"
22
23
  ]
23
24
  },
24
25
  {
@@ -20,7 +20,8 @@ export const operation = {
20
20
  "anthropic",
21
21
  "openai",
22
22
  "zai",
23
- "moonshot"
23
+ "moonshot",
24
+ "deepseek"
24
25
  ]
25
26
  },
26
27
  {
@@ -28,14 +29,15 @@ export const operation = {
28
29
  "flag": "auth-method",
29
30
  "kind": "string",
30
31
  "required": true,
31
- "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code.",
32
+ "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code, deepseek deepseek_api.",
32
33
  "choices": [
33
34
  "api_key",
34
35
  "aws_bedrock",
35
36
  "claude_code",
36
37
  "codex",
37
38
  "coding_plan",
38
- "kimi_code"
39
+ "kimi_code",
40
+ "deepseek_api"
39
41
  ]
40
42
  },
41
43
  {
@@ -0,0 +1,23 @@
1
+ export const operation = {
2
+ "method": "get",
3
+ "path": "/api/organizations/{workspaceId}/ai-provider/deepseek-usage",
4
+ "command": [
5
+ "workspaces",
6
+ "ai-provider",
7
+ "usage",
8
+ "deepseek"
9
+ ],
10
+ "summary": "Read the balance of the workspace's DeepSeek API key, one amount per currency, in place of usage windows. 400 when the workspace holds no DeepSeek API key.",
11
+ "pathParams": [
12
+ "workspaceId"
13
+ ],
14
+ "query": [],
15
+ "body": null,
16
+ "multipart": null,
17
+ "attachments": false,
18
+ "anonymous": false,
19
+ "sandboxToken": true,
20
+ "orchestratorToken": true,
21
+ "cronToken": true,
22
+ "leadToken": true
23
+ };
package/openapi.json CHANGED
@@ -78,9 +78,9 @@
78
78
  "name": "kind",
79
79
  "in": "query",
80
80
  "required": false,
81
- "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed), or 'change' for every Change and 'action' for every Member Action.",
81
+ "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed, integration_custom_tool_saved, integration_custom_tool_enabled, integration_custom_tool_disabled, integration_custom_tool_deleted, integration_custom_tool_restored), or 'change' for every Change and 'action' for every Member Action.",
82
82
  "schema": {
83
- "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed), or 'change' for every Change and 'action' for every Member Action.",
83
+ "description": "Comma-separated kinds (job_awaiting_response, pr_checks_failed, pr_checks_passed, pr_merged, branch_behind, pr_stale, cron_run_succeeded, cron_run_failed, session_started, session_message_sent, session_archived, session_deleted, session_assigned, session_status_changed, session_priority_changed, cron_created, cron_updated, cron_deleted, member_invited, member_removed, member_role_changed, integration_custom_tool_saved, integration_custom_tool_enabled, integration_custom_tool_disabled, integration_custom_tool_deleted, integration_custom_tool_restored), or 'change' for every Change and 'action' for every Member Action.",
84
84
  "type": "string"
85
85
  }
86
86
  },
@@ -905,6 +905,20 @@
905
905
  }
906
906
  },
907
907
  "required": ["operation"]
908
+ },
909
+ {
910
+ "type": "object",
911
+ "properties": {
912
+ "operation": {
913
+ "type": "string",
914
+ "const": "deepseek_deepseek_api"
915
+ },
916
+ "deepseekApiKey": {
917
+ "type": "string",
918
+ "minLength": 1
919
+ }
920
+ },
921
+ "required": ["operation"]
908
922
  }
909
923
  ]
910
924
  }
@@ -965,14 +979,14 @@
965
979
  "required": true,
966
980
  "schema": {
967
981
  "type": "string",
968
- "enum": ["anthropic", "openai", "zai", "moonshot"]
982
+ "enum": ["anthropic", "openai", "zai", "moonshot", "deepseek"]
969
983
  }
970
984
  },
971
985
  {
972
986
  "name": "authMethod",
973
987
  "in": "query",
974
988
  "required": true,
975
- "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code.",
989
+ "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code, deepseek deepseek_api.",
976
990
  "schema": {
977
991
  "type": "string",
978
992
  "enum": [
@@ -981,9 +995,10 @@
981
995
  "claude_code",
982
996
  "codex",
983
997
  "coding_plan",
984
- "kimi_code"
998
+ "kimi_code",
999
+ "deepseek_api"
985
1000
  ],
986
- "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code."
1001
+ "description": "Must belong to the provider: anthropic takes api_key, aws_bedrock or claude_code, openai api_key or codex, zai coding_plan, moonshot kimi_code, deepseek deepseek_api."
987
1002
  }
988
1003
  },
989
1004
  {
@@ -1222,6 +1237,61 @@
1222
1237
  }
1223
1238
  }
1224
1239
  },
1240
+ "/api/organizations/{workspaceId}/ai-provider/deepseek-usage": {
1241
+ "get": {
1242
+ "operationId": "workspacesAiProviderUsageDeepseek",
1243
+ "summary": "Read the balance of the workspace's DeepSeek API key, one amount per currency, in place of usage windows. 400 when the workspace holds no DeepSeek API key.",
1244
+ "tags": ["workspaces"],
1245
+ "x-kosuke-command": ["workspaces", "ai-provider", "usage", "deepseek"],
1246
+ "x-kosuke-sandbox-token": true,
1247
+ "x-kosuke-orchestrator-token": true,
1248
+ "x-kosuke-cron-token": true,
1249
+ "x-kosuke-lead-token": true,
1250
+ "parameters": [
1251
+ {
1252
+ "name": "workspaceId",
1253
+ "in": "path",
1254
+ "required": true,
1255
+ "schema": {
1256
+ "type": "string",
1257
+ "minLength": 1
1258
+ }
1259
+ }
1260
+ ],
1261
+ "responses": {
1262
+ "2XX": {
1263
+ "description": "Success envelope",
1264
+ "content": {
1265
+ "application/json": {
1266
+ "schema": {
1267
+ "$ref": "#/components/schemas/ApiSuccess"
1268
+ }
1269
+ }
1270
+ }
1271
+ },
1272
+ "4XX": {
1273
+ "description": "Error envelope",
1274
+ "content": {
1275
+ "application/json": {
1276
+ "schema": {
1277
+ "$ref": "#/components/schemas/ApiError"
1278
+ }
1279
+ }
1280
+ }
1281
+ },
1282
+ "5XX": {
1283
+ "description": "Error envelope",
1284
+ "content": {
1285
+ "application/json": {
1286
+ "schema": {
1287
+ "$ref": "#/components/schemas/ApiError"
1288
+ }
1289
+ }
1290
+ }
1291
+ }
1292
+ }
1293
+ }
1294
+ },
1225
1295
  "/api/organizations/{workspaceId}/ai-provider/kimi-code-usage": {
1226
1296
  "get": {
1227
1297
  "operationId": "workspacesAiProviderUsageKimiCode",
@@ -13624,7 +13694,7 @@
13624
13694
  "/api/user/subscriptions": {
13625
13695
  "get": {
13626
13696
  "operationId": "userSubscriptionsGet",
13627
- "summary": "Read your Claude, Codex, GLM Coding Plan and Kimi Code subscriptions and your default model. Per provider: the login in use (connected, needsReauth, accountEmail, and maskedApiKey for a pasted plan key) and every login in the order it is used (logins).",
13697
+ "summary": "Read your Claude, Codex, GLM Coding Plan, Kimi Code and DeepSeek API subscriptions and your default model. Per provider: the login in use (connected, needsReauth, accountEmail, and maskedApiKey for a pasted key) and every login in the order it is used (logins).",
13628
13698
  "tags": ["user"],
13629
13699
  "x-kosuke-command": ["user", "subscriptions", "get"],
13630
13700
  "x-kosuke-sandbox-token": true,
@@ -13722,7 +13792,7 @@
13722
13792
  "/api/user/subscriptions/{provider}": {
13723
13793
  "put": {
13724
13794
  "operationId": "userSubscriptionsSetKey",
13725
- "summary": "Add a GLM Coding Plan (zai) or Kimi Code (moonshot) key to your subscriptions: Claude and Codex connect by signing in. With loginId it replaces that key instead. The key is tested with one call before it is kept; 409 when it is already connected or you hold five.",
13795
+ "summary": "Add a GLM Coding Plan (zai), Kimi Code (moonshot) or DeepSeek API (deepseek) key to your subscriptions: Claude and Codex connect by signing in. With loginId it replaces that key instead. The key is tested with one call before it is kept, and a DeepSeek key with an empty balance still passes; 409 when it is already connected or you hold five.",
13726
13796
  "tags": ["user"],
13727
13797
  "x-kosuke-command": ["user", "subscriptions", "set-key"],
13728
13798
  "parameters": [
@@ -13732,7 +13802,7 @@
13732
13802
  "required": true,
13733
13803
  "schema": {
13734
13804
  "type": "string",
13735
- "enum": ["anthropic", "openai", "zai", "moonshot"]
13805
+ "enum": ["anthropic", "openai", "zai", "moonshot", "deepseek"]
13736
13806
  }
13737
13807
  }
13738
13808
  ],
@@ -13794,7 +13864,7 @@
13794
13864
  },
13795
13865
  "delete": {
13796
13866
  "operationId": "userSubscriptionsDelete",
13797
- "summary": "Disconnect every login of your subscription for one provider, anthropic, openai, zai or moonshot, and release the sandboxes running on it. Answers 204.",
13867
+ "summary": "Disconnect every login of your subscription for one provider, anthropic, openai, zai, moonshot or deepseek, and release the sandboxes running on it. Answers 204.",
13798
13868
  "tags": ["user"],
13799
13869
  "x-kosuke-command": ["user", "subscriptions", "delete"],
13800
13870
  "parameters": [
@@ -13804,7 +13874,7 @@
13804
13874
  "required": true,
13805
13875
  "schema": {
13806
13876
  "type": "string",
13807
- "enum": ["anthropic", "openai", "zai", "moonshot"]
13877
+ "enum": ["anthropic", "openai", "zai", "moonshot", "deepseek"]
13808
13878
  }
13809
13879
  }
13810
13880
  ],
@@ -13855,7 +13925,7 @@
13855
13925
  "required": true,
13856
13926
  "schema": {
13857
13927
  "type": "string",
13858
- "enum": ["anthropic", "openai", "zai", "moonshot"]
13928
+ "enum": ["anthropic", "openai", "zai", "moonshot", "deepseek"]
13859
13929
  }
13860
13930
  },
13861
13931
  {
@@ -13916,7 +13986,7 @@
13916
13986
  "required": true,
13917
13987
  "schema": {
13918
13988
  "type": "string",
13919
- "enum": ["anthropic", "openai", "zai", "moonshot"]
13989
+ "enum": ["anthropic", "openai", "zai", "moonshot", "deepseek"]
13920
13990
  }
13921
13991
  }
13922
13992
  ],
@@ -14214,7 +14284,7 @@
14214
14284
  "/api/user/subscriptions/usage": {
14215
14285
  "get": {
14216
14286
  "operationId": "userSubscriptionsUsage",
14217
- "summary": "Read the session and weekly utilization of your Claude (claude_code, the default), Codex, GLM Coding Plan (coding_plan) or Kimi Code (kimi_code) subscription: of the login in use, or of the one loginId names. Kimi Code reports a monthly window instead of a weekly one. 400 when it is not connected or needs reconnecting.",
14287
+ "summary": "Read the session and weekly utilization of your Claude (claude_code, the default), Codex, GLM Coding Plan (coding_plan) or Kimi Code (kimi_code) subscription, or the balance of your DeepSeek API (deepseek_api) key: of the login in use, or of the one loginId names. Kimi Code reports a monthly window instead of a weekly one; DeepSeek reports no windows, only a balance per currency. 400 when it is not connected or needs reconnecting.",
14218
14288
  "tags": ["user"],
14219
14289
  "x-kosuke-command": ["user", "subscriptions", "usage"],
14220
14290
  "x-kosuke-sandbox-token": true,
@@ -14229,7 +14299,7 @@
14229
14299
  "schema": {
14230
14300
  "default": "claude_code",
14231
14301
  "type": "string",
14232
- "enum": ["claude_code", "codex", "coding_plan", "kimi_code"]
14302
+ "enum": ["claude_code", "codex", "coding_plan", "kimi_code", "deepseek_api"]
14233
14303
  }
14234
14304
  },
14235
14305
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/cli",
3
- "version": "6.4.1",
3
+ "version": "6.6.0",
4
4
  "description": "Kosuke platform CLI. The client customers install to drive app.kosuke.ai from their own machine.",
5
5
  "license": "MIT",
6
6
  "repository": {