dsh-plugin-subscriptions 0.5.2 → 0.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.
Files changed (60) hide show
  1. package/README.md +79 -5
  2. package/README.zh.md +78 -4
  3. package/lib/auth/rpc.d.ts +64 -13
  4. package/lib/auth/rpc.js +75 -10
  5. package/lib/auth/store.d.ts +75 -17
  6. package/lib/auth/store.js +148 -27
  7. package/lib/client/ImageGenerateToolview.d.ts +1 -1
  8. package/lib/client/SpeedSelect.d.ts +25 -2
  9. package/lib/client/SpeedSelect.js +10 -6
  10. package/lib/client/SubscriptionsSection.d.ts +83 -3
  11. package/lib/client/SubscriptionsSection.js +411 -62
  12. package/lib/client/VideoGenerateToolview.d.ts +1 -1
  13. package/lib/client/index.d.ts +1 -9
  14. package/lib/client/index.js +7 -4
  15. package/lib/client/locales.d.ts +46 -10
  16. package/lib/client/locales.js +46 -10
  17. package/lib/client.js +703 -132
  18. package/lib/client.js.map +1 -1
  19. package/lib/compat.d.ts +36 -0
  20. package/lib/compat.js +20 -0
  21. package/lib/index.d.ts +26 -1
  22. package/lib/index.js +2377 -309
  23. package/lib/model-defaults.d.ts +23 -0
  24. package/lib/model-defaults.js +237 -0
  25. package/lib/providers/accounts.d.ts +102 -0
  26. package/lib/providers/accounts.js +123 -0
  27. package/lib/providers/claude.d.ts +46 -7
  28. package/lib/providers/claude.js +125 -34
  29. package/lib/providers/codex.d.ts +45 -3
  30. package/lib/providers/codex.js +152 -26
  31. package/lib/providers/common.d.ts +87 -6
  32. package/lib/providers/common.js +185 -22
  33. package/lib/providers/copilot.d.ts +32 -3
  34. package/lib/providers/copilot.js +111 -19
  35. package/lib/providers/grok.d.ts +45 -4
  36. package/lib/providers/grok.js +136 -20
  37. package/lib/providers/pool-family.d.ts +56 -0
  38. package/lib/providers/pool-family.js +45 -0
  39. package/lib/providers/pool-health.d.ts +74 -0
  40. package/lib/providers/pool-health.js +148 -0
  41. package/lib/providers/pool-usage.d.ts +78 -0
  42. package/lib/providers/pool-usage.js +185 -0
  43. package/lib/providers/pool.d.ts +107 -0
  44. package/lib/providers/pool.js +371 -0
  45. package/lib/providers/rate-limit.d.ts +192 -0
  46. package/lib/providers/rate-limit.js +338 -0
  47. package/lib/tools/image-generate.d.ts +3 -3
  48. package/lib/tools/image-generate.js +2 -1
  49. package/lib/tools/video-generate.d.ts +2 -2
  50. package/lib/tools/video-generate.js +2 -1
  51. package/lib/tools/x-search.d.ts +2 -2
  52. package/lib/tools/x-search.js +2 -1
  53. package/lib/translate/anthropic.js +5 -4
  54. package/lib/translate/chat-completions.js +5 -4
  55. package/lib/translate/responses.js +5 -4
  56. package/package.json +21 -21
  57. package/lib/providers/antigravity.d.ts +0 -90
  58. package/lib/providers/antigravity.js +0 -392
  59. package/lib/translate/antigravity.d.ts +0 -110
  60. package/lib/translate/antigravity.js +0 -303
@@ -1,5 +1,5 @@
1
1
  import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client';
2
- import type { ToolCallBlock } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import type { ToolCallBlock } from '@deepseek-ai/dsh-client-ui-conversation/client';
3
3
  import type { SubscriptionsKey } from './locales.js';
4
4
  /** Mirror of ui-tool's ToolCallOwnerProps (see ImageGenerateToolview). */
5
5
  interface ToolCallOwnerProps {
@@ -1,12 +1,4 @@
1
- /**
2
- * Subscription OAuth login page, browser half. Registers the Subscriptions
3
- * settings section; every login state fact arrives through the node half's
4
- * `/subscriptions-auth` RPC channel — this plugin holds no credential state of its
5
- * own. Section copy rides the client locale service: one 'settings.subscriptions'
6
- * namespace with zh/en dictionaries, rebound per read so the nav label and
7
- * page text follow the active locale.
8
- */
9
- import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
1
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
10
2
  import type { SubscriptionsKey } from './locales.js';
11
3
  export type { SubscriptionsSectionInjected, SubscriptionsSectionProps } from './SubscriptionsSection.js';
12
4
  export type { ImageGenerateToolviewInjected, ImageGenerateToolviewProps } from './ImageGenerateToolview.js';
@@ -33,8 +33,8 @@ export function apply(ctx) {
33
33
  document.head.appendChild(style);
34
34
  return () => style.remove();
35
35
  }, 'dsh-plugin-subscriptions: settings panel breathing room');
36
- // The client-runtime Context merge types `connection` as the host handle;
37
- // in the browser shell the same key holds the full client ConnectionHandle.
36
+ // The shell's Context merge types `connection` as the host handle; in the
37
+ // browser shell the same key holds the full client ConnectionHandle.
38
38
  const connection = ctx.get('connection');
39
39
  const t = ctx.locale.bind(NS);
40
40
  const injected = () => ({ rpc: connection.rpc, t });
@@ -68,13 +68,16 @@ export function apply(ctx) {
68
68
  // The composer Speed toggle (codex fast tier) sits in the right tool row,
69
69
  // just left of the model selector; the framework synthesizes its `t` seat
70
70
  // from `locale: NS`, and the inject face binds each session's RPC calls.
71
+ // The current-model read rides ui-model-selection's `modelDirectories`
72
+ // service, resolved lazily so registration order never matters.
73
+ const models = () => ctx.get('modelDirectories');
71
74
  ctx.slots.inject('conversation.input.right', () => ctx.slots.register({
72
75
  name: 'conversation.input.right',
73
76
  id: 'codex-speed',
74
77
  order: 0,
75
78
  locale: NS,
76
79
  inject: (sessionId) => ({
77
- loadSpeed: createSpeedLoader(connection, sessionId),
80
+ loadSpeed: createSpeedLoader(connection, models, sessionId),
78
81
  setSpeed: createSpeedSetter(connection, sessionId),
79
82
  }),
80
83
  }, SpeedSelect));
@@ -92,7 +95,7 @@ export function apply(ctx) {
92
95
  ui: {
93
96
  kind: 'popupSelect',
94
97
  options: async (session) => {
95
- const state = await createSpeedLoader(connection, session.sessionId)();
98
+ const state = await createSpeedLoader(connection, models, session.sessionId)();
96
99
  if (!state.visible)
97
100
  throw new Error(t('commandFastUnavailable'));
98
101
  return [
@@ -6,15 +6,19 @@ export declare const en: {
6
6
  unavailable: string;
7
7
  checking: string;
8
8
  loginInProgress: string;
9
- loggedIn: string;
10
- loggedInAccount: string;
11
- loggedInExpires: string;
12
- loggedInAccountExpires: string;
13
9
  notLoggedIn: string;
10
+ loggedInCount: string;
11
+ accountExpires: string;
12
+ defaultBadge: string;
13
+ setDefault: string;
14
+ addAccount: string;
15
+ addAccountOAuth: string;
16
+ addAccountKeychain: string;
17
+ addAccountHint: string;
14
18
  login: string;
15
19
  cancel: string;
16
20
  logout: string;
17
- logoutConfirm: string;
21
+ logoutAccountConfirm: string;
18
22
  manualSummary: string;
19
23
  manualPlaceholder: string;
20
24
  submit: string;
@@ -33,6 +37,20 @@ export declare const en: {
33
37
  usageWindow: string;
34
38
  usageResets: string;
35
39
  usagePlan: string;
40
+ modelDefaultsTitle: string;
41
+ modelDefaultsHint: string;
42
+ modelDefaultsFollowProvider: string;
43
+ modelDefaultsNoLevels: string;
44
+ modelDefaultsLoading: string;
45
+ modelDefaultsLoadFailed: string;
46
+ modelDefaultsRetry: string;
47
+ modelDefaultsSaving: string;
48
+ modelDefaultsSaveFailedNamed: string;
49
+ modelDefaultsSummary: string;
50
+ modelDefaultsSummaryNone: string;
51
+ modelDefaultsSummaryEmpty: string;
52
+ modelDefaultsFilterPlaceholder: string;
53
+ modelDefaultsFilterEmpty: string;
36
54
  generating: string;
37
55
  image: string;
38
56
  viewImage: string;
@@ -91,15 +109,19 @@ export declare const zh: {
91
109
  unavailable: string;
92
110
  checking: string;
93
111
  loginInProgress: string;
94
- loggedIn: string;
95
- loggedInAccount: string;
96
- loggedInExpires: string;
97
- loggedInAccountExpires: string;
98
112
  notLoggedIn: string;
113
+ loggedInCount: string;
114
+ accountExpires: string;
115
+ defaultBadge: string;
116
+ setDefault: string;
117
+ addAccount: string;
118
+ addAccountOAuth: string;
119
+ addAccountKeychain: string;
120
+ addAccountHint: string;
99
121
  login: string;
100
122
  cancel: string;
101
123
  logout: string;
102
- logoutConfirm: string;
124
+ logoutAccountConfirm: string;
103
125
  manualSummary: string;
104
126
  manualPlaceholder: string;
105
127
  submit: string;
@@ -118,6 +140,20 @@ export declare const zh: {
118
140
  usageWindow: string;
119
141
  usageResets: string;
120
142
  usagePlan: string;
143
+ modelDefaultsTitle: string;
144
+ modelDefaultsHint: string;
145
+ modelDefaultsFollowProvider: string;
146
+ modelDefaultsNoLevels: string;
147
+ modelDefaultsLoading: string;
148
+ modelDefaultsLoadFailed: string;
149
+ modelDefaultsRetry: string;
150
+ modelDefaultsSaving: string;
151
+ modelDefaultsSaveFailedNamed: string;
152
+ modelDefaultsSummary: string;
153
+ modelDefaultsSummaryNone: string;
154
+ modelDefaultsSummaryEmpty: string;
155
+ modelDefaultsFilterPlaceholder: string;
156
+ modelDefaultsFilterEmpty: string;
121
157
  generating: string;
122
158
  image: string;
123
159
  viewImage: string;
@@ -6,15 +6,19 @@ export const en = {
6
6
  unavailable: 'Connection unavailable; subscription status cannot be loaded.',
7
7
  checking: 'Checking…',
8
8
  loginInProgress: 'Login in progress…',
9
- loggedIn: 'Logged in',
10
- loggedInAccount: 'Logged in as {account}',
11
- loggedInExpires: 'Logged in · expires {date}',
12
- loggedInAccountExpires: 'Logged in as {account} · expires {date}',
13
9
  notLoggedIn: 'Not logged in',
10
+ loggedInCount: '{count} account(s) connected',
11
+ accountExpires: 'expires {date}',
12
+ defaultBadge: 'Default',
13
+ setDefault: 'Set as default',
14
+ addAccount: 'Add account',
15
+ addAccountOAuth: 'Browser authorization',
16
+ addAccountKeychain: 'Import Claude Code',
17
+ addAccountHint: 'Browser authorization signs in whichever account the browser currently uses — switch accounts there first (or use an incognito window with the manual code below) to add a different one.',
14
18
  login: 'Log in',
15
19
  cancel: 'Cancel',
16
20
  logout: 'Log out',
17
- logoutConfirm: 'Log out of {provider}?',
21
+ logoutAccountConfirm: 'Log out {account} of {provider}?',
18
22
  manualSummary: 'Browser flow not working? Paste the callback URL or code',
19
23
  manualPlaceholder: 'Paste the callback URL or code',
20
24
  submit: 'Submit',
@@ -33,6 +37,20 @@ export const en = {
33
37
  usageWindow: 'Window',
34
38
  usageResets: 'resets {date}',
35
39
  usagePlan: 'Plan: {plan}',
40
+ modelDefaultsTitle: 'Default reasoning effort',
41
+ modelDefaultsHint: 'The model picker preselects this level when you switch to the model; models without levels always follow the provider.',
42
+ modelDefaultsFollowProvider: 'Follow provider',
43
+ modelDefaultsNoLevels: '{count} model(s) advertise no reasoning levels and always follow the provider.',
44
+ modelDefaultsLoading: 'Loading models…',
45
+ modelDefaultsLoadFailed: 'Failed to load models: {message}',
46
+ modelDefaultsRetry: 'Retry',
47
+ modelDefaultsSaving: 'Saving…',
48
+ modelDefaultsSaveFailedNamed: 'Save failed for {model}: {message}',
49
+ modelDefaultsSummary: '{total} model(s) · {configured} overridden',
50
+ modelDefaultsSummaryNone: '{total} model(s) · following the provider',
51
+ modelDefaultsSummaryEmpty: 'No model advertises reasoning levels',
52
+ modelDefaultsFilterPlaceholder: 'Filter models',
53
+ modelDefaultsFilterEmpty: 'No model matches “{query}”.',
36
54
  generating: 'Generating image…',
37
55
  image: 'image',
38
56
  viewImage: 'View image',
@@ -91,15 +109,19 @@ export const zh = {
91
109
  unavailable: '连接不可用,无法加载订阅状态。',
92
110
  checking: '查询中…',
93
111
  loginInProgress: '登录中…',
94
- loggedIn: '已登录',
95
- loggedInAccount: '已登录:{account}',
96
- loggedInExpires: '已登录 · 过期时间 {date}',
97
- loggedInAccountExpires: '已登录:{account} · 过期时间 {date}',
98
112
  notLoggedIn: '未登录',
113
+ loggedInCount: '已连接 {count} 个账号',
114
+ accountExpires: '过期时间 {date}',
115
+ defaultBadge: '默认',
116
+ setDefault: '设为默认',
117
+ addAccount: '添加账号',
118
+ addAccountOAuth: '浏览器授权',
119
+ addAccountKeychain: '导入 Claude Code',
120
+ addAccountHint: '浏览器授权以浏览器当前登录的账号为准;要添加不同账号,请先在浏览器里切换账号,或用无痕窗口走下方手动授权码。',
99
121
  login: '登录',
100
122
  cancel: '取消',
101
123
  logout: '退出登录',
102
- logoutConfirm: '确定退出 {provider} 的登录吗?',
124
+ logoutAccountConfirm: '确定退出 {provider} 的账号 {account} 吗?',
103
125
  manualSummary: '浏览器流程无法完成?粘贴回调 URL 或授权码',
104
126
  manualPlaceholder: '粘贴回调 URL 或授权码',
105
127
  submit: '提交',
@@ -118,6 +140,20 @@ export const zh = {
118
140
  usageWindow: '窗口',
119
141
  usageResets: '{date} 重置',
120
142
  usagePlan: '计划:{plan}',
143
+ modelDefaultsTitle: '默认推理档',
144
+ modelDefaultsHint: '切换到该模型时,模型选择器会预选此档位;没有推理档的模型始终跟随服务商默认。',
145
+ modelDefaultsFollowProvider: '跟随服务商',
146
+ modelDefaultsNoLevels: '{count} 个模型未声明推理档,始终跟随服务商默认。',
147
+ modelDefaultsLoading: '加载模型中…',
148
+ modelDefaultsLoadFailed: '模型加载失败:{message}',
149
+ modelDefaultsRetry: '重试',
150
+ modelDefaultsSaving: '保存中…',
151
+ modelDefaultsSaveFailedNamed: '{model} 保存失败:{message}',
152
+ modelDefaultsSummary: '{total} 个模型 · {configured} 个已覆盖',
153
+ modelDefaultsSummaryNone: '{total} 个模型 · 全部跟随服务商',
154
+ modelDefaultsSummaryEmpty: '没有模型声明推理档',
155
+ modelDefaultsFilterPlaceholder: '筛选模型',
156
+ modelDefaultsFilterEmpty: '没有匹配「{query}」的模型。',
121
157
  generating: '正在生成图片…',
122
158
  image: '图片',
123
159
  viewImage: '查看图片',