dsh-router-core 0.4.2 → 0.4.3

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 (49) hide show
  1. package/README.md +9 -10
  2. package/cordis.patch.yml +10 -0
  3. package/docs/ext.md +64 -2
  4. package/lib/client-registry.js +633 -50
  5. package/lib/client.js +633 -50
  6. package/lib/contract-D4BWZ7Xe.js +13 -0
  7. package/lib/ext-prompt/index.js +527 -0
  8. package/lib/ext-prompt/locale/en.json +6 -0
  9. package/lib/ext-prompt/locale/zh.json +6 -0
  10. package/lib/ext-prompt/package.json +5 -0
  11. package/lib/ext-test/index.js +1 -12
  12. package/lib/index.js +249 -117
  13. package/lib/types/ext/contract.d.ts +113 -0
  14. package/lib/types/ext-prompt/content.d.ts +57 -0
  15. package/lib/types/ext-prompt/index.d.ts +53 -0
  16. package/lib/types/ext-prompt/logo.d.ts +17 -0
  17. package/lib/types/ext-prompt/mount.d.ts +51 -0
  18. package/lib/types/ext-prompt/plugin.d.ts +32 -0
  19. package/lib/types/ext-prompt/render.d.ts +105 -0
  20. package/lib/types/host-version.d.ts +7 -8
  21. package/lib/types/index.d.ts +1 -1
  22. package/lib/types/shared.d.ts +33 -0
  23. package/package.json +17 -7
  24. package/src/client/EndpointTab.tsx +15 -18
  25. package/src/client/ExtDetail.tsx +552 -9
  26. package/src/client/index.tsx +7 -28
  27. package/src/client/router.css +132 -62
  28. package/src/ext/contract.ts +111 -0
  29. package/src/ext-prompt/assembly.test.ts +79 -0
  30. package/src/ext-prompt/content.ts +174 -0
  31. package/src/ext-prompt/ext-prompt.test.ts +432 -0
  32. package/src/ext-prompt/index.ts +104 -0
  33. package/src/ext-prompt/locale/en.json +6 -0
  34. package/src/ext-prompt/locale/zh.json +6 -0
  35. package/src/ext-prompt/logo.svg +14 -0
  36. package/src/ext-prompt/logo.ts +18 -0
  37. package/src/ext-prompt/mount.test.ts +95 -0
  38. package/src/ext-prompt/mount.ts +79 -0
  39. package/src/ext-prompt/plugin.ts +223 -0
  40. package/src/ext-prompt/render.test.ts +256 -0
  41. package/src/ext-prompt/render.ts +216 -0
  42. package/src/ext-prompt/row.json +5 -0
  43. package/src/ext-route.test.ts +78 -0
  44. package/src/host-version.test.ts +21 -28
  45. package/src/host-version.ts +39 -39
  46. package/src/index.ts +216 -94
  47. package/src/llm/adapter.test.ts +19 -42
  48. package/src/llm/adapter.ts +20 -47
  49. package/src/shared.ts +34 -0
package/src/shared.ts CHANGED
@@ -164,6 +164,40 @@ export interface RouterExtItem {
164
164
  * 「包含的组件」里占一行了,两处都列就是同一个东西显示两遍(与内置供应商同理)。
165
165
  */
166
166
  source?: 'builtin'
167
+ /**
168
+ * 扩展自带的子开关(如准则的每一条)。**由扩展自报**,核心只搬运。
169
+ *
170
+ * ⚠️ 与 `enabled`(总开关)不同:子开关**不改变扩展是否被加载**,只改它
171
+ * 自己的行为。总开关关时这些子开关一并失效(面板上禁用,不隐藏)。
172
+ */
173
+ controls?: ExtControlItem[]
174
+ }
175
+
176
+ /** `/router/api/ext` 里的一条子开关(与 `router.ext` 契约的 `ExtControl` 对应)。 */
177
+ export interface ExtControlItem {
178
+ /** 稳定 id(持久化键;改名会丢用户已保存的选择)。 */
179
+ id: string
180
+ title: string
181
+ /** 当前是否开启(扩展自算:默认值 + 用户已存选择)。 */
182
+ on: boolean
183
+ /** 一句话说明(面板副行,可选)。 */
184
+ detail?: string
185
+ /** 原文(面板点开即可读到;不给出就是在盲切,见 `ExtControl.body`)。 */
186
+ body?: string
187
+ /** 文本可编辑(缺省 = 只读;见 `ExtControl.editable`)。 */
188
+ editable?: boolean
189
+ /**
190
+ * 自建条目(可删)还是内置(不可删、只有开关与还原)。
191
+ *
192
+ * ⚠️ **必填,不给可选**(2026-09-30 实测踩过):曾声明成 `custom?: boolean`,
193
+ * 而服务端只在 `custom === true` 时才带这个字段 ⇒ 内置条目拿到的是
194
+ * `undefined`,面板判 `c.custom === true` 为假,**恰好是对的** ——
195
+ * 但那条正确性建立在"缺省恰好等于 false"上,改任何一边的默认值都会翻转。
196
+ * ⇒ 让服务端**总是**给显式布尔,两边不必猜。
197
+ */
198
+ custom: boolean
199
+ /** 文本被改过(决定「还原」是否可点)。必填,理由同 `custom`。 */
200
+ overridden: boolean
167
201
  }
168
202
 
169
203
  /** `/router/api/ext` response(扩展插件列表 + 开关)。 */