@dsh-plus/llm-pi 0.1.9 → 0.1.10

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.
package/lib/index.js CHANGED
@@ -449,20 +449,23 @@ var DeepseekRouteRegistrar = class {
449
449
  for (const [route, built] of target) {
450
450
  const existing = this.registrations.get(route);
451
451
  if (existing !== void 0) {
452
- this.refreshPolicy(route, built, existing);
452
+ this.refreshRegistration(route, built, existing);
453
453
  continue;
454
454
  }
455
455
  this.register(route, built);
456
456
  }
457
457
  }
458
- refreshPolicy(route, built, registration) {
459
- const policy = built.connection.retryPolicy;
460
- if (deepEqualJson(policy, registration.retryPolicy)) return;
458
+ /** retryPolicy displayName 变化时原地 replace(两者均为注册期捕获事实)。 */
459
+ refreshRegistration(route, built, registration) {
460
+ const policyUnchanged = deepEqualJson(built.connection.retryPolicy, registration.retryPolicy);
461
+ const nameUnchanged = built.displayName === registration.displayName;
462
+ if (policyUnchanged && nameUnchanged) return;
461
463
  try {
462
464
  registration.handle.replace([route]);
463
- registration.retryPolicy = policy;
465
+ registration.retryPolicy = built.connection.retryPolicy;
466
+ registration.displayName = built.displayName;
464
467
  } catch (error) {
465
- this.deps.logger.error(`llm-pi: deepseek route "${route}" 重试策略更新被拒,保留此前注册`);
468
+ this.deps.logger.error(`llm-pi: deepseek route "${route}" 注册事实更新被拒,保留此前注册`);
466
469
  this.deps.logger.error(error);
467
470
  }
468
471
  }
@@ -484,11 +487,16 @@ var DeepseekRouteRegistrar = class {
484
487
  resolveUserId: () => this.resolveUserId(),
485
488
  resolveAttachments: () => ctx.get("attachments")
486
489
  });
490
+ adapter.providerInfo = (provider) => ({
491
+ id: provider,
492
+ name: routes().get(route)?.displayName ?? built.displayName
493
+ });
487
494
  try {
488
495
  const handle = ctx.llm.registerAdapter([route], adapter);
489
496
  this.registrations.set(route, {
490
497
  handle,
491
- retryPolicy: built.connection.retryPolicy
498
+ retryPolicy: built.connection.retryPolicy,
499
+ displayName: built.displayName
492
500
  });
493
501
  } catch (error) {
494
502
  logger.error(`llm-pi: deepseek route "${route}" 注册失败(可能与其他 adapter 重名),该 route 不可用`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dsh-plus/llm-pi",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "dsh-plus service+ui plugin: 基于 PiAiAdapter 的自定义 LLM 路由(全量 compat、模型继承、models.dev 目录兜底)",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -25,6 +25,8 @@ interface RouteRegistration {
25
25
  handle: AdapterRegistrationHandle
26
26
  /** 注册期捕获的重试策略(变化才 replace)。 */
27
27
  retryPolicy: unknown
28
+ /** 注册期捕获的展示名(providerInfo 是注册期捕获事实,变化才 replace)。 */
29
+ displayName: string
28
30
  }
29
31
 
30
32
  export interface DeepseekRegistrarDeps {
@@ -80,25 +82,28 @@ export class DeepseekRouteRegistrar {
80
82
  for (const [route, built] of target) {
81
83
  const existing = this.registrations.get(route)
82
84
  if (existing !== undefined) {
83
- this.refreshPolicy(route, built, existing)
85
+ this.refreshRegistration(route, built, existing)
84
86
  continue
85
87
  }
86
88
  this.register(route, built)
87
89
  }
88
90
  }
89
91
 
90
- private refreshPolicy(
92
+ /** retryPolicy 或 displayName 变化时原地 replace(两者均为注册期捕获事实)。 */
93
+ private refreshRegistration(
91
94
  route: string,
92
95
  built: ResolvedDeepseekRoute,
93
96
  registration: RouteRegistration,
94
97
  ): void {
95
- const policy = built.connection.retryPolicy
96
- if (deepEqualJson(policy, registration.retryPolicy)) return
98
+ const policyUnchanged = deepEqualJson(built.connection.retryPolicy, registration.retryPolicy)
99
+ const nameUnchanged = built.displayName === registration.displayName
100
+ if (policyUnchanged && nameUnchanged) return
97
101
  try {
98
102
  registration.handle.replace([route])
99
- registration.retryPolicy = policy
103
+ registration.retryPolicy = built.connection.retryPolicy
104
+ registration.displayName = built.displayName
100
105
  } catch (error) {
101
- this.deps.logger.error(`llm-pi: deepseek route "${route}" 重试策略更新被拒,保留此前注册`)
106
+ this.deps.logger.error(`llm-pi: deepseek route "${route}" 注册事实更新被拒,保留此前注册`)
102
107
  this.deps.logger.error(error)
103
108
  }
104
109
  }
@@ -126,9 +131,20 @@ export class DeepseekRouteRegistrar {
126
131
  resolveUserId: () => this.resolveUserId() as never,
127
132
  resolveAttachments: () => ctx.get('attachments') as never,
128
133
  })
134
+ // 官方 providerInfo 硬编码 name: "DeepSeek"——覆盖为按路由动态读取的
135
+ // displayName,否则自定义 deepseek 路由在模型选择器里与 deepseek-official
136
+ // 撞名(两个 "DeepSeek" 分组,无法区分)。
137
+ adapter.providerInfo = (provider: string) => ({
138
+ id: provider,
139
+ name: routes().get(route)?.displayName ?? built.displayName,
140
+ })
129
141
  try {
130
142
  const handle = ctx.llm.registerAdapter([route], adapter as never)
131
- this.registrations.set(route, { handle, retryPolicy: built.connection.retryPolicy })
143
+ this.registrations.set(route, {
144
+ handle,
145
+ retryPolicy: built.connection.retryPolicy,
146
+ displayName: built.displayName,
147
+ })
132
148
  } catch (error) {
133
149
  logger.error(
134
150
  `llm-pi: deepseek route "${route}" 注册失败(可能与其他 adapter 重名),该 route 不可用`,