@goodandready/dsh-clinebot 0.6.19 → 0.6.20

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/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ All notable changes to `@goodandready/dsh-clinebot` will be documented in this f
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.6.20] - 2026-10-28
9
+
10
+ ### Fixed
11
+ - **Catalog backfill without manual Sync**: auto-discovery retries after 15 seconds when the plan has not been synced yet, and refreshes the model/free/dated catalog every 6 hours. An in-flight guard prevents overlapping discovery runs.
12
+
8
13
  ## [0.6.19] - 2026-10-28
9
14
 
10
15
  ### Added
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>Native ClineBot / ClinePass Provider Companion for DeepSeek Harness</h3>
6
6
 
7
- <p><b>0.6.19</b> adds FREE model annotations in Settings and the picker, keeping DSH <code>0.2.1-rc.4</code> coverage, model-scoped credit cooldowns and actionable 402/413 errors. It also keeps dated ClinePass model sync, the full <code>0.2.1</code> prerelease line and the multimodal/model/price improvements. Chat runs on the native <code>ctx.llm</code> adapter; the legacy <code>llm-pi-ai</code>, loopback proxy and <code>llm/stream</code> path are removed.</p>
7
+ <p><b>0.6.20</b> backfills the model/free/dated catalog automatically (15-second startup retry plus a 6-hour refresh) and keeps FREE annotations, DSH <code>0.2.1-rc.4</code>, model-scoped credit cooldowns and 402/413 errors. Chat runs on the native <code>ctx.llm</code> adapter; the legacy <code>llm-pi-ai</code>, loopback proxy and <code>llm/stream</code> path are removed.</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/README.ru.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>Нативное подключение провайдера ClineBot / ClinePass для DeepSeek Harness</h3>
6
6
 
7
- <p><b>0.6.19</b> добавляет FREE-аннотации моделей в Settings и picker, сохраняя DSH <code>0.2.1-rc.4</code>, cooldown недостатка кредитов только для конкретной модели и понятные ошибки 402/413. Также сохраняются синхронизация dated-моделей ClinePass, вся линия DSH <code>0.2.1</code> и улучшения мультимодальности, моделей и цен. Чат работает через нативный адаптер <code>ctx.llm</code>; старые <code>llm-pi-ai</code>, loopback-прокси и <code>llm/stream</code> удалены.</p>
7
+ <p><b>0.6.20</b> автоматически добирает каталог моделей/FREE/dated (повтор через 15 секунд после старта и refresh раз в 6 часов) и сохраняет FREE-аннотации, DSH <code>0.2.1-rc.4</code>, cooldown недостатка кредитов только для конкретной модели и понятные ошибки 402/413. Чат работает через нативный адаптер <code>ctx.llm</code>; старые <code>llm-pi-ai</code>, loopback-прокси и <code>llm/stream</code> удалены.</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/README.zh.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>适用于 DeepSeek Harness 的 ClineBot / ClinePass 原生模型提供商伴侣插件</h3>
6
6
 
7
- <p><b>0.6.19</b> 在设置和选择器中增加免费模型标记,同时保留 DSH <code>0.2.1-rc.4</code>、按模型隔离的余额不足冷却和明确的 402/413 错误。保留 ClinePass 日期变体同步、DSH <code>0.2.1</code> 整条预发布线以及多模态、模型与价格改进。聊天使用原生 <code>ctx.llm</code> 适配器;旧的 <code>llm-pi-ai</code>、回环代理和 <code>llm/stream</code> 已删除。</p>
7
+ <p><b>0.6.20</b> 自动补齐模型/免费/日期变体目录(启动后 15 秒重试并每 6 小时刷新),同时保留免费模型标记、DSH <code>0.2.1-rc.4</code>、按模型隔离的余额不足冷却和明确的 402/413 错误。聊天使用原生 <code>ctx.llm</code> 适配器;旧的 <code>llm-pi-ai</code>、回环代理和 <code>llm/stream</code> 已删除。</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/lib/index.js CHANGED
@@ -31,6 +31,8 @@ import { applyTuiSettings } from './tui-settings.js'
31
31
  export const name = '@goodandready/dsh-clinebot'
32
32
  export const inject = []
33
33
 
34
+ const CATALOG_REFRESH_MS = 6 * 60 * 60 * 1000
35
+
34
36
  export function configReader(config) {
35
37
  return () => config
36
38
  }
@@ -90,8 +92,19 @@ export function apply(ctx, config) {
90
92
  }
91
93
  }
92
94
 
95
+ let autoDiscoverInFlight = false
93
96
  const triggerAutoDiscover = () => {
94
- autoDiscoverPlanModels(ctx, { live, getSettingsApi: () => settingsApi, syncProviderState })
97
+ if (autoDiscoverInFlight) return
98
+ autoDiscoverInFlight = true
99
+ Promise.resolve(autoDiscoverPlanModels(ctx, {
100
+ live,
101
+ getSettingsApi: () => settingsApi,
102
+ syncProviderState,
103
+ }))
104
+ .catch(() => {})
105
+ .finally(() => {
106
+ autoDiscoverInFlight = false
107
+ })
95
108
  }
96
109
 
97
110
  let activeStatsPath = resolvePath(publicConfig(live()).statsPath)
@@ -326,9 +339,21 @@ export function apply(ctx, config) {
326
339
  ctx.effect(() => {
327
340
  const timer = setTimeout(triggerAutoDiscover, 500)
328
341
  const retryTimer = setTimeout(triggerAutoDiscover, 3000)
342
+ const lateRetry = setTimeout(() => {
343
+ if (!Number(publicConfig(live()).planSyncedAt || 0)) triggerAutoDiscover()
344
+ }, 15000)
345
+ const refreshTimer = setInterval(() => {
346
+ const syncedAt = Number(publicConfig(live()).planSyncedAt || 0)
347
+ if (Date.now() - syncedAt >= CATALOG_REFRESH_MS) triggerAutoDiscover()
348
+ }, 60 * 60 * 1000)
349
+ for (const handle of [timer, retryTimer, lateRetry, refreshTimer]) {
350
+ if (typeof handle.unref === 'function') handle.unref()
351
+ }
329
352
  return () => {
330
353
  clearTimeout(timer)
331
354
  clearTimeout(retryTimer)
355
+ clearTimeout(lateRetry)
356
+ clearInterval(refreshTimer)
332
357
  }
333
358
  }, 'dsh-clinebot: auto-discover')
334
359
  }
@@ -9,7 +9,7 @@
9
9
  import { createRequire } from 'node:module'
10
10
 
11
11
  const require = createRequire(import.meta.url)
12
- let packageVersion = '0.6.19'
12
+ let packageVersion = '0.6.20'
13
13
  try {
14
14
  packageVersion = require('../../package.json').version || packageVersion
15
15
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-clinebot",
3
- "version": "0.6.19",
3
+ "version": "0.6.20",
4
4
  "description": "DeepSeek Harness companion for ClineBot / ClinePass: dynamic subscription models sync, quota exhaustion warnings, session metrics, dedicated settings page, live usage limits, and /cline slash-command.",
5
5
  "license": "MIT",
6
6
  "type": "module",