@prettier-ai/dsh-client-ui-settings-models 0.1.2-alpha.3 → 0.1.2-alpha.4
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/README.i18n.yaml +2 -2
- package/README.md +4 -2
- package/README.zh.md +4 -2
- package/lib/client.js +41 -13
- package/lib/types/client/locales.d.ts +2 -0
- package/package.json +10 -16
- package/lib/invariant.js +0 -24
- package/lib/types/invariant.d.ts +0 -16
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/ui-settings-models/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: b3f07e1a788b223f0f49e37b9a4a54662acf6445
|
|
6
|
+
README.zh.md: c23dcf95f6b9e9d47b390c3243bf3d8bb0ef26f1
|
package/README.md
CHANGED
|
@@ -33,11 +33,11 @@ The primary field on an editor card is a single **API key** input — the page n
|
|
|
33
33
|
|
|
34
34
|
### Editing a provider
|
|
35
35
|
|
|
36
|
-
The collapsed 自定义设置 fold carries the curated extras: `baseURL` for both families (the deepseek placeholder shows the public endpoint), each adapter's model catalog, and the **display name** and **API protocol** of a pi-ai route the adapter does not ship. The Provider ID stays fixed: it is the settings key, the name every other namespace and every logged session references, and the stem of a credential reference the page cannot read back to move. Reasoning effort is deliberately not among the editable fields: it is a per-model capability, so a provider-scoped control could only be set to a value some models reject. Each DeepSeek row edits `id`, optional display `name`, and optional `contextWindow`/`maxTokens`; existing fields outside that curated set survive edits.
|
|
36
|
+
The collapsed 自定义设置 fold carries the curated extras: `baseURL` for both families (the deepseek placeholder shows the public endpoint), each adapter's model catalog, and the **display name** and **API protocol** of a pi-ai route the adapter does not ship. Profile `headers` remain deployment configuration in `settings.yaml` or Cordis config and have no Models-page editor. The Provider ID stays fixed: it is the settings key, the name every other namespace and every logged session references, and the stem of a credential reference the page cannot read back to move. Reasoning effort is deliberately not among the editable fields: it is a per-model capability, so a provider-scoped control could only be set to a value some models reject. Each DeepSeek row edits `id`, optional display `name`, and optional `contextWindow`/`maxTokens`; existing fields outside that curated set survive edits.
|
|
37
37
|
|
|
38
38
|
### Adding and deleting providers
|
|
39
39
|
|
|
40
|
-
The add flow is a card carrying the dormant-directory provider select — a bare-mounted `llm-pi-ai` offers its whole installed catalog before any route exists. **Add a custom provider** declares a route pi-ai does not ship; the create card asks for a unique **Provider ID**, an endpoint, a protocol, and at least one uniquely-identified model, because nothing can default those. **Fetch available models** asks the `llm/discoverModels` Remote about the endpoint the form shows, so adding a provider is one pass instead of save-then-return; the reply opens a picker rather than being written, and nothing is written until **Add selected**. A row is deletable only when the user layer alone carries it (removal restores the composition base), and its confirmation dialog names the provider.
|
|
40
|
+
The add flow is a card carrying the dormant-directory provider select — a bare-mounted `llm-pi-ai` offers its whole installed catalog before any route exists. **Add a custom provider** declares a route pi-ai does not ship; the create card asks for a unique **Provider ID**, an endpoint, a protocol, and at least one uniquely-identified model, because nothing can default those. **Fetch available models** asks the `llm/discoverModels` Remote about the endpoint the form shows, so adding a provider is one pass instead of save-then-return; the reply opens a searchable picker rather than being written, and nothing is written until **Add selected**. Search matches model ids and optional display names without clearing hidden selections, while **Select all** and **Deselect all** affect only the visible results. A row is deletable only when the user layer alone carries it (removal restores the composition base), and its confirmation dialog names the provider.
|
|
41
41
|
|
|
42
42
|
### First-run dialogs
|
|
43
43
|
|
|
@@ -117,3 +117,5 @@ These limits define the editor's field coverage and the page's reach; they are c
|
|
|
117
117
|
None.
|
|
118
118
|
|
|
119
119
|
</details>
|
|
120
|
+
|
|
121
|
+
**Runtime invariant:** No companion is published. A nav-entry-only section plugin rendering a fixed empty content column — it emits no cordis events and owns no cross-plugin mutable relation.
|
package/README.zh.md
CHANGED
|
@@ -33,11 +33,11 @@ kind: "package-reference"
|
|
|
33
33
|
|
|
34
34
|
### 编辑提供方
|
|
35
35
|
|
|
36
|
-
收起的「自定义设置」折叠区承载精选的额外字段:两个家族都有 `baseURL`(deepseek 的占位符显示公共端点)、各适配器自己的模型目录,以及适配器未提供的 pi-ai 路由的**显示名称**与 **API 协议**。Provider ID 保持固定:它是 settings 的键、其他每个 namespace 与每一条已记录会话引用的名字,也是页面读不回、因而搬不走的凭据引用词干。推理等级刻意不在可编辑字段之列:它是按模型的能力,提供方级的控件只可能被设成某些模型会拒绝的值。每个 DeepSeek 行编辑 `id`、可选显示 `name` 与可选 `contextWindow`/`maxTokens`;该精选集之外的现有字段在编辑后仍会保留。
|
|
36
|
+
收起的「自定义设置」折叠区承载精选的额外字段:两个家族都有 `baseURL`(deepseek 的占位符显示公共端点)、各适配器自己的模型目录,以及适配器未提供的 pi-ai 路由的**显示名称**与 **API 协议**。Profile `headers` 仍是 `settings.yaml` 或 Cordis 配置中的部署配置,Models 页面不提供编辑器。Provider ID 保持固定:它是 settings 的键、其他每个 namespace 与每一条已记录会话引用的名字,也是页面读不回、因而搬不走的凭据引用词干。推理等级刻意不在可编辑字段之列:它是按模型的能力,提供方级的控件只可能被设成某些模型会拒绝的值。每个 DeepSeek 行编辑 `id`、可选显示 `name` 与可选 `contextWindow`/`maxTokens`;该精选集之外的现有字段在编辑后仍会保留。
|
|
37
37
|
|
|
38
38
|
### 新增与删除提供方
|
|
39
39
|
|
|
40
|
-
「新增」流程是一张承载休眠目录提供方选择框的卡片——裸挂载的 `llm-pi-ai` 在任何路由存在之前就能提供其完整的已安装 catalog。**添加自定义提供方**声明一条 pi-ai 不提供的路由;创建卡片会索要唯一的 **Provider ID**、端点、协议与至少一个可唯一识别的模型,因为没有东西能为它们兜底。**获取可用模型**通过 `llm/discoverModels` Remote
|
|
40
|
+
「新增」流程是一张承载休眠目录提供方选择框的卡片——裸挂载的 `llm-pi-ai` 在任何路由存在之前就能提供其完整的已安装 catalog。**添加自定义提供方**声明一条 pi-ai 不提供的路由;创建卡片会索要唯一的 **Provider ID**、端点、协议与至少一个可唯一识别的模型,因为没有东西能为它们兜底。**获取可用模型**通过 `llm/discoverModels` Remote 查询表单显示的端点,因此新增提供方一次即可完成,而非先保存再返回;回复打开的是可搜索选择器而非直接写入,只有点击**添加所选**才会写入。搜索会匹配模型 id 与可选显示名称,且不会清除隐藏项的勾选状态;**全选**与**取消全选**只影响可见结果。只有用户层单独携带某行时,该行才可删除(删除会恢复组合基线),其确认对话框会指名该提供方。
|
|
41
41
|
|
|
42
42
|
### 首次运行弹窗
|
|
43
43
|
|
|
@@ -117,3 +117,5 @@ kind: "package-reference"
|
|
|
117
117
|
无。
|
|
118
118
|
|
|
119
119
|
</details>
|
|
120
|
+
|
|
121
|
+
**运行时不变式:** 不发布伴生入口。这是只贡献 nav entry 的 section 插件,渲染固定空 content column,不发出 Cordis 事件,也不持有跨插件可变关系。
|
package/lib/client.js
CHANGED
|
@@ -55,7 +55,7 @@ window.__ModuleLoader__.load({
|
|
|
55
55
|
}
|
|
56
56
|
//#endregion
|
|
57
57
|
//#region \0dsh-css:/home/runner/work/dsh-publisher/dsh-publisher/upstream/packages/client/ui-settings-models/src/client/ModelsSection.module.css.mjs
|
|
58
|
-
const css$3 = ".Cc_lRa_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.Cc_lRa_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.Cc_lRa_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.Cc_lRa_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}.Cc_lRa_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.Cc_lRa_rowCard{border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.Cc_lRa_rowHead{align-items:center;gap:10px;display:flex}.Cc_lRa_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.Cc_lRa_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.Cc_lRa_rowTag{border:1px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.Cc_lRa_credentialDot{box-sizing:border-box;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.Cc_lRa_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.Cc_lRa_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.Cc_lRa_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.Cc_lRa_primaryButton,.Cc_lRa_secondaryButton,.Cc_lRa_addButton{box-sizing:border-box;height:36px;font:inherit;cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Cc_lRa_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.Cc_lRa_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.Cc_lRa_secondaryButton,.Cc_lRa_addButton{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:0 0}.Cc_lRa_secondaryButton:hover:not(:disabled),.Cc_lRa_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.Cc_lRa_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.Cc_lRa_dangerButton{box-sizing:border-box;height:36px;color:var(--dsw-alias-state-error-primary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Cc_lRa_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.Cc_lRa_rowActions .Cc_lRa_secondaryButton,.Cc_lRa_rowActions .Cc_lRa_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.Cc_lRa_primaryButton:disabled,.Cc_lRa_secondaryButton:disabled,.Cc_lRa_dangerButton:disabled,.Cc_lRa_addButton:disabled,.Cc_lRa_linkButton:disabled,.Cc_lRa_addModelButton:disabled{opacity:.4;cursor:default}.Cc_lRa_primaryButton:focus-visible,.Cc_lRa_secondaryButton:focus-visible,.Cc_lRa_dangerButton:focus-visible,.Cc_lRa_addButton:focus-visible,.Cc_lRa_linkButton:focus-visible,.Cc_lRa_addModelButton:focus-visible,.Cc_lRa_iconButton:focus-visible,.Cc_lRa_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.Cc_lRa_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.Cc_lRa_editorHeader{align-items:baseline;gap:8px;display:flex}.Cc_lRa_editorTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.Cc_lRa_editorRoute{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.Cc_lRa_field{flex-direction:column;gap:6px;display:flex}.Cc_lRa_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.Cc_lRa_linkButton{box-sizing:border-box;height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.Cc_lRa_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.Cc_lRa_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_editorActions{justify-content:flex-end;gap:8px;display:flex}.Cc_lRa_addBlock{flex-direction:column;gap:12px;display:flex}.Cc_lRa_addActions{flex-wrap:wrap;gap:10px;display:flex}.Cc_lRa_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:12px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.Cc_lRa_addCard,.Cc_lRa_setupCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.Cc_lRa_addCard .Cc_lRa_editor,.Cc_lRa_setupCard .Cc_lRa_editor{background:0 0;padding:0}.Cc_lRa_customized{border-top:1px solid var(--dsw-alias-border-l2);padding-top:10px}.Cc_lRa_customizedSummary{cursor:pointer;width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:6px;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;list-style:none;display:flex}.Cc_lRa_customizedSummary::-webkit-details-marker{display:none}.Cc_lRa_customizedSummary:before{content:\"\";border-bottom:1.5px solid;border-right:1.5px solid;width:5px;height:5px;transition:transform .12s;transform:rotate(-45deg)translate(-1px,-1px)}.Cc_lRa_customized[open]>.Cc_lRa_customizedSummary:before{transform:rotate(45deg)translate(-1px,-1px)}.Cc_lRa_customizedSummary:hover{color:var(--dsw-alias-label-primary)}.Cc_lRa_customizedBody{flex-direction:column;gap:12px;padding-top:12px;display:flex}.Cc_lRa_modelCatalog{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;padding-top:12px;display:flex}.Cc_lRa_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.Cc_lRa_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.Cc_lRa_modelCatalogMeta,.Cc_lRa_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_modelList{flex-direction:column;gap:8px;display:flex}.Cc_lRa_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.Cc_lRa_modelEntry{border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:6px}.Cc_lRa_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.Cc_lRa_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.Cc_lRa_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Cc_lRa_iconButton:disabled{cursor:default;opacity:.4}.Cc_lRa_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.Cc_lRa_modelAdvanced{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 4px 2px;display:grid}.Cc_lRa_modelField{flex-direction:column;gap:4px;display:flex}.Cc_lRa_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.Cc_lRa_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.Cc_lRa_addModelButton{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;border-radius:14px;align-self:flex-start;align-items:center;gap:4px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.Cc_lRa_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.Cc_lRa_input{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px;line-height:22px}select.Cc_lRa_input{cursor:pointer;max-width:240px}.Cc_lRa_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.Cc_lRa_input::placeholder{color:var(--dsw-alias-label-dimmed)}.Cc_lRa_input:disabled{opacity:.6;cursor:default}.Cc_lRa_selectInput{appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}.Cc_lRa_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_deleteDialog{width:min(480px,100%)}.Cc_lRa_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.Cc_lRa_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.Cc_lRa_hiddenLabel{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.Cc_lRa_customizedSummary:before,.Cc_lRa_switchThumb{transition:none}}.Cc_lRa_fetchDialog{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);max-width:520px}.Cc_lRa_candidateActions{justify-content:flex-end;margin-bottom:6px;display:flex}.Cc_lRa_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.Cc_lRa_candidate{border-radius:6px}.Cc_lRa_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.Cc_lRa_candidateId{font-family:var(--ds-font-family-code);overflow-wrap:anywhere;flex:auto;font-size:13px}";
|
|
58
|
+
const css$3 = ".Cc_lRa_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.Cc_lRa_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.Cc_lRa_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.Cc_lRa_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}.Cc_lRa_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.Cc_lRa_rowCard{border:.5px solid var(--dsw-alias-border-l4);border-radius:16px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.Cc_lRa_rowHead{align-items:center;gap:10px;display:flex}.Cc_lRa_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.Cc_lRa_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.Cc_lRa_rowTag{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:1px 6px;font-size:11px;line-height:16px}.Cc_lRa_credentialDot{box-sizing:border-box;corner-shape:round;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.Cc_lRa_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.Cc_lRa_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.Cc_lRa_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.Cc_lRa_primaryButton,.Cc_lRa_secondaryButton,.Cc_lRa_addButton{box-sizing:border-box;height:36px;font:inherit;cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Cc_lRa_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.Cc_lRa_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.Cc_lRa_secondaryButton,.Cc_lRa_addButton{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.Cc_lRa_secondaryButton:hover:not(:disabled),.Cc_lRa_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.Cc_lRa_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.Cc_lRa_dangerButton{box-sizing:border-box;height:36px;color:var(--dsw-alias-state-error-primary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:18px;justify-content:center;align-items:center;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.Cc_lRa_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.Cc_lRa_rowActions .Cc_lRa_secondaryButton,.Cc_lRa_rowActions .Cc_lRa_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.Cc_lRa_primaryButton:disabled,.Cc_lRa_secondaryButton:disabled,.Cc_lRa_dangerButton:disabled,.Cc_lRa_addButton:disabled,.Cc_lRa_linkButton:disabled,.Cc_lRa_addModelButton:disabled{opacity:.4;cursor:default}.Cc_lRa_primaryButton:focus-visible,.Cc_lRa_secondaryButton:focus-visible,.Cc_lRa_dangerButton:focus-visible,.Cc_lRa_addButton:focus-visible,.Cc_lRa_linkButton:focus-visible,.Cc_lRa_addModelButton:focus-visible,.Cc_lRa_iconButton:focus-visible,.Cc_lRa_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.Cc_lRa_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.Cc_lRa_editorHeader{align-items:baseline;gap:8px;display:flex}.Cc_lRa_editorTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.Cc_lRa_editorRoute{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.Cc_lRa_field{flex-direction:column;gap:6px;display:flex}.Cc_lRa_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.Cc_lRa_linkButton{box-sizing:border-box;height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.Cc_lRa_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.Cc_lRa_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_editorActions{justify-content:flex-end;gap:8px;display:flex}.Cc_lRa_addBlock{flex-direction:column;gap:12px;display:flex}.Cc_lRa_addActions{flex-wrap:wrap;gap:10px;display:flex}.Cc_lRa_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:16px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.Cc_lRa_addCard,.Cc_lRa_setupCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.Cc_lRa_addCard .Cc_lRa_editor,.Cc_lRa_setupCard .Cc_lRa_editor{background:0 0;padding:0}.Cc_lRa_customized{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:10px}.Cc_lRa_customizedSummary{cursor:pointer;width:fit-content;color:var(--dsw-alias-label-secondary);border-radius:6px;align-items:center;gap:6px;margin-left:-4px;padding:2px 4px;font-size:12px;font-weight:500;line-height:18px;list-style:none;display:flex}.Cc_lRa_customizedSummary::-webkit-details-marker{display:none}.Cc_lRa_customizedSummary:before{content:\"\";border-bottom:1.5px solid;border-right:1.5px solid;width:5px;height:5px;transition:transform .12s;transform:rotate(-45deg)translate(-1px,-1px)}.Cc_lRa_customized[open]>.Cc_lRa_customizedSummary:before{transform:rotate(45deg)translate(-1px,-1px)}.Cc_lRa_customizedSummary:hover{color:var(--dsw-alias-label-primary)}.Cc_lRa_customizedBody{flex-direction:column;gap:12px;padding-top:12px;display:flex}.Cc_lRa_modelCatalog{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;padding-top:12px;display:flex}.Cc_lRa_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.Cc_lRa_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.Cc_lRa_modelCatalogMeta,.Cc_lRa_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_modelList{flex-direction:column;gap:8px;display:flex}.Cc_lRa_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.Cc_lRa_modelEntry{border:.5px solid var(--dsw-alias-border-l4);border-radius:10px;padding:6px}.Cc_lRa_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.Cc_lRa_iconButton{box-sizing:border-box;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.Cc_lRa_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Cc_lRa_iconButton:disabled{cursor:default;opacity:.4}.Cc_lRa_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.Cc_lRa_modelAdvanced{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 4px 2px;display:grid}.Cc_lRa_modelField{flex-direction:column;gap:4px;display:flex}.Cc_lRa_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.Cc_lRa_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.Cc_lRa_addModelButton{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:28px;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;background:0 0;border-radius:14px;align-self:flex-start;align-items:center;gap:4px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.Cc_lRa_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.Cc_lRa_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);width:100%;height:32px;font:inherit;background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 10px;font-size:14px;line-height:22px}select.Cc_lRa_input{cursor:pointer;max-width:240px}.Cc_lRa_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.Cc_lRa_input::placeholder{color:var(--dsw-alias-label-dimmed)}.Cc_lRa_input:disabled{opacity:.6;cursor:default}.Cc_lRa_selectInput{appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:32px}.Cc_lRa_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.Cc_lRa_deleteDialog{width:min(480px,100%)}.Cc_lRa_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.Cc_lRa_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.Cc_lRa_hiddenLabel{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.Cc_lRa_customizedSummary:before,.Cc_lRa_switchThumb{transition:none}}.Cc_lRa_fetchDialog{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);max-width:520px}.Cc_lRa_candidateToolbar{align-items:center;gap:8px;margin-bottom:6px;display:flex}.Cc_lRa_candidateSearch{flex:240px;min-width:0}.Cc_lRa_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.Cc_lRa_candidate{border-radius:6px}.Cc_lRa_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.Cc_lRa_candidateId{font-family:var(--ds-font-family-code);overflow-wrap:anywhere;flex:auto;font-size:13px}.Cc_lRa_candidateEmpty{color:var(--dsw-alias-label-secondary);text-align:center;margin:24px 0;font-size:13px;line-height:20px}";
|
|
59
59
|
const tagId$3 = "@prettier-ai/dsh-client-ui-settings-models/ModelsSection.module.css";
|
|
60
60
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
61
61
|
const tag = document.createElement("style");
|
|
@@ -72,10 +72,12 @@ window.__ModuleLoader__.load({
|
|
|
72
72
|
"addModelButton": "Cc_lRa_addModelButton",
|
|
73
73
|
"advancedHint": "Cc_lRa_advancedHint",
|
|
74
74
|
"candidate": "Cc_lRa_candidate",
|
|
75
|
-
"
|
|
75
|
+
"candidateEmpty": "Cc_lRa_candidateEmpty",
|
|
76
76
|
"candidateId": "Cc_lRa_candidateId",
|
|
77
77
|
"candidateLabel": "Cc_lRa_candidateLabel",
|
|
78
78
|
"candidateList": "Cc_lRa_candidateList",
|
|
79
|
+
"candidateSearch": "Cc_lRa_candidateSearch",
|
|
80
|
+
"candidateToolbar": "Cc_lRa_candidateToolbar",
|
|
79
81
|
"credentialDot": "Cc_lRa_credentialDot",
|
|
80
82
|
"credentialDotConfigured": "Cc_lRa_credentialDotConfigured",
|
|
81
83
|
"credentialDotMissing": "Cc_lRa_credentialDotMissing",
|
|
@@ -552,6 +554,7 @@ window.__ModuleLoader__.load({
|
|
|
552
554
|
const [failure, setFailure] = (0, react.useState)(void 0);
|
|
553
555
|
const [candidates, setCandidates] = (0, react.useState)(void 0);
|
|
554
556
|
const [picked, setPicked] = (0, react.useState)(/* @__PURE__ */ new Set());
|
|
557
|
+
const [candidateQuery, setCandidateQuery] = (0, react.useState)("");
|
|
555
558
|
const [expanded, setExpanded] = (0, react.useState)(/* @__PURE__ */ new Set());
|
|
556
559
|
const [editing, setEditing] = (0, react.useState)(/* @__PURE__ */ new Map());
|
|
557
560
|
/** Buffer key for one capacity field; the row half moves when rows do. */
|
|
@@ -609,6 +612,7 @@ window.__ModuleLoader__.load({
|
|
|
609
612
|
return;
|
|
610
613
|
}
|
|
611
614
|
const known = new Set(models.map((model) => textOf(model, "id")));
|
|
615
|
+
setCandidateQuery("");
|
|
612
616
|
setCandidates(found);
|
|
613
617
|
setPicked(new Set(found.filter((model) => !known.has(model.id)).map((model) => model.id)));
|
|
614
618
|
} finally {
|
|
@@ -618,6 +622,7 @@ window.__ModuleLoader__.load({
|
|
|
618
622
|
const closePicker = () => {
|
|
619
623
|
setCandidates(void 0);
|
|
620
624
|
setPicked(/* @__PURE__ */ new Set());
|
|
625
|
+
setCandidateQuery("");
|
|
621
626
|
};
|
|
622
627
|
const adoptPicked = () => {
|
|
623
628
|
/* v8 ignore next -- the dialog only renders with candidates loaded */
|
|
@@ -638,10 +643,15 @@ window.__ModuleLoader__.load({
|
|
|
638
643
|
});
|
|
639
644
|
};
|
|
640
645
|
const activeCandidates = candidates ?? [];
|
|
641
|
-
const
|
|
642
|
-
const
|
|
646
|
+
const normalizedCandidateQuery = candidateQuery.trim().toLowerCase();
|
|
647
|
+
const visibleCandidates = normalizedCandidateQuery.length === 0 ? activeCandidates : activeCandidates.filter((candidate) => candidate.id.toLowerCase().includes(normalizedCandidateQuery) || candidate.name?.toLowerCase().includes(normalizedCandidateQuery) === true);
|
|
648
|
+
const allVisibleCandidatesPicked = visibleCandidates.length > 0 && visibleCandidates.every((candidate) => picked.has(candidate.id));
|
|
649
|
+
const toggleVisibleCandidates = () => {
|
|
643
650
|
setPicked((current) => {
|
|
644
|
-
|
|
651
|
+
const next = new Set(current);
|
|
652
|
+
if (visibleCandidates.every((candidate) => current.has(candidate.id))) for (const candidate of visibleCandidates) next.delete(candidate.id);
|
|
653
|
+
else for (const candidate of visibleCandidates) next.add(candidate.id);
|
|
654
|
+
return next;
|
|
645
655
|
});
|
|
646
656
|
};
|
|
647
657
|
const askable = probe.provider !== void 0 || probe.baseURL !== void 0 && probe.baseURL.length > 0;
|
|
@@ -810,17 +820,31 @@ window.__ModuleLoader__.load({
|
|
|
810
820
|
onClick: adoptPicked,
|
|
811
821
|
children: t("fetchAdopt")
|
|
812
822
|
})] }),
|
|
813
|
-
children: [(0, react_jsx_runtime.
|
|
814
|
-
className: ModelsSection_module_css_default["
|
|
815
|
-
children: (0, react_jsx_runtime.jsx)(
|
|
823
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
824
|
+
className: ModelsSection_module_css_default["candidateToolbar"],
|
|
825
|
+
children: [(0, react_jsx_runtime.jsx)("input", {
|
|
826
|
+
className: `${ModelsSection_module_css_default["input"]} ${ModelsSection_module_css_default["candidateSearch"]}`,
|
|
827
|
+
type: "search",
|
|
828
|
+
value: candidateQuery,
|
|
829
|
+
placeholder: t("fetchSearch"),
|
|
830
|
+
"aria-label": t("fetchSearch"),
|
|
831
|
+
onChange: (event) => {
|
|
832
|
+
setCandidateQuery(event.target.value);
|
|
833
|
+
}
|
|
834
|
+
}), (0, react_jsx_runtime.jsx)(_prettier_ai_dsh_client_ui_primitives.Button, {
|
|
816
835
|
variant: "ghost",
|
|
817
836
|
size: "sm",
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
837
|
+
disabled: visibleCandidates.length === 0,
|
|
838
|
+
onClick: toggleVisibleCandidates,
|
|
839
|
+
children: t(allVisibleCandidatesPicked ? "fetchDeselectAll" : "fetchSelectAll")
|
|
840
|
+
})]
|
|
841
|
+
}), visibleCandidates.length === 0 ? (0, react_jsx_runtime.jsx)("p", {
|
|
842
|
+
className: ModelsSection_module_css_default["candidateEmpty"],
|
|
843
|
+
role: "status",
|
|
844
|
+
children: t("fetchNoMatches")
|
|
845
|
+
}) : (0, react_jsx_runtime.jsx)("ul", {
|
|
822
846
|
className: ModelsSection_module_css_default["candidateList"],
|
|
823
|
-
children:
|
|
847
|
+
children: visibleCandidates.map((candidate) => (0, react_jsx_runtime.jsx)("li", {
|
|
824
848
|
className: ModelsSection_module_css_default["candidate"],
|
|
825
849
|
children: (0, react_jsx_runtime.jsxs)("label", {
|
|
826
850
|
className: ModelsSection_module_css_default["candidateLabel"],
|
|
@@ -2663,6 +2687,8 @@ window.__ModuleLoader__.load({
|
|
|
2663
2687
|
fetchEmpty: "The provider listed no models. Add them by hand.",
|
|
2664
2688
|
fetchTitle: "Choose models to add",
|
|
2665
2689
|
fetchDescription: "These are the models this provider has available. Choose the ones to add.",
|
|
2690
|
+
fetchSearch: "Search models",
|
|
2691
|
+
fetchNoMatches: "No matching models.",
|
|
2666
2692
|
fetchSelectAll: "Select all",
|
|
2667
2693
|
fetchDeselectAll: "Deselect all",
|
|
2668
2694
|
fetchAdopt: "Add selected",
|
|
@@ -2763,6 +2789,8 @@ window.__ModuleLoader__.load({
|
|
|
2763
2789
|
fetchEmpty: "该提供方没有列出任何模型,请手动添加。",
|
|
2764
2790
|
fetchTitle: "选择要添加的模型",
|
|
2765
2791
|
fetchDescription: "以下是模型提供方的可用模型,勾选要添加的模型。",
|
|
2792
|
+
fetchSearch: "搜索模型",
|
|
2793
|
+
fetchNoMatches: "没有匹配的模型。",
|
|
2766
2794
|
fetchSelectAll: "全选",
|
|
2767
2795
|
fetchDeselectAll: "取消全选",
|
|
2768
2796
|
fetchAdopt: "添加所选",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prettier-ai/dsh-client-ui-settings-models",
|
|
3
3
|
"description": "Models settings and shared product-onboarding dialogs over existing settings and credential joins",
|
|
4
|
-
"version": "0.1.2-alpha.
|
|
4
|
+
"version": "0.1.2-alpha.4",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -18,10 +18,6 @@
|
|
|
18
18
|
"types": "./lib/types/index.d.ts",
|
|
19
19
|
"default": "./lib/index.js"
|
|
20
20
|
},
|
|
21
|
-
"./invariant": {
|
|
22
|
-
"types": "./lib/types/invariant.d.ts",
|
|
23
|
-
"default": "./lib/invariant.js"
|
|
24
|
-
},
|
|
25
21
|
"./client": {
|
|
26
22
|
"types": "./lib/types/client/index.d.ts",
|
|
27
23
|
"default": "./lib/client.js"
|
|
@@ -46,21 +42,19 @@
|
|
|
46
42
|
"devDependencies": {
|
|
47
43
|
"@types/react": "~18.3.1",
|
|
48
44
|
"react": "^18.2.0",
|
|
49
|
-
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.
|
|
50
|
-
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.
|
|
51
|
-
"@prettier-ai/dsh-client-
|
|
52
|
-
"@prettier-ai/dsh-client-test-runtime": "^0.1.2-alpha.
|
|
53
|
-
"@prettier-ai/dsh-client-ui-
|
|
54
|
-
"@prettier-ai/dsh-client-
|
|
55
|
-
"@prettier-ai/dsh-client-ui-
|
|
56
|
-
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.3",
|
|
45
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.4",
|
|
46
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.4",
|
|
47
|
+
"@prettier-ai/dsh-client-store": "^0.1.2-alpha.4",
|
|
48
|
+
"@prettier-ai/dsh-client-test-runtime": "^0.1.2-alpha.4",
|
|
49
|
+
"@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.4",
|
|
50
|
+
"@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.4",
|
|
51
|
+
"@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.4",
|
|
57
52
|
"@prettier-ai/cordis": "^4.0.2",
|
|
58
|
-
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.
|
|
59
|
-
"@prettier-ai/dsh-util-values": "^0.1.2-alpha.
|
|
53
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.4",
|
|
54
|
+
"@prettier-ai/dsh-util-values": "^0.1.2-alpha.4"
|
|
60
55
|
},
|
|
61
56
|
"files": [
|
|
62
57
|
"lib/index.js",
|
|
63
|
-
"lib/invariant.js",
|
|
64
58
|
"lib/client.js",
|
|
65
59
|
"lib/types/**/*.d.ts"
|
|
66
60
|
],
|
package/lib/invariant.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
//#region lib/types/invariant.js
|
|
2
|
-
/**
|
|
3
|
-
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-settings-models`.
|
|
4
|
-
* @module @prettier-ai/dsh-client-ui-settings-models/invariant
|
|
5
|
-
*/
|
|
6
|
-
const PACKAGE_NAME = "@prettier-ai/dsh-client-ui-settings-models";
|
|
7
|
-
/** Cordis companion plugin name. */
|
|
8
|
-
const name = "client-ui-settings-models-invariant";
|
|
9
|
-
/** Service required before the companion can reserve package ownership. */
|
|
10
|
-
const inject = ["invariants"];
|
|
11
|
-
/**
|
|
12
|
-
* No runtime invariant: a nav-entry-only section plugin rendering a fixed
|
|
13
|
-
* empty content column — it emits no cordis events and owns no cross-plugin
|
|
14
|
-
* mutable relation.
|
|
15
|
-
*/
|
|
16
|
-
const install = () => {};
|
|
17
|
-
/**
|
|
18
|
-
* Register this package's invariant companion.
|
|
19
|
-
* @param ctx - Cordis context carrying the invariant service.
|
|
20
|
-
* @returns the installed registration's disposer after setup succeeds.
|
|
21
|
-
*/
|
|
22
|
-
const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
|
|
23
|
-
//#endregion
|
|
24
|
-
export { apply, inject, name };
|
package/lib/types/invariant.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-settings-models`.
|
|
3
|
-
* @module @prettier-ai/dsh-client-ui-settings-models/invariant
|
|
4
|
-
*/
|
|
5
|
-
import type { Context } from '@prettier-ai/cordis';
|
|
6
|
-
/** Cordis companion plugin name. */
|
|
7
|
-
export declare const name = "client-ui-settings-models-invariant";
|
|
8
|
-
/** Service required before the companion can reserve package ownership. */
|
|
9
|
-
export declare const inject: string[];
|
|
10
|
-
/**
|
|
11
|
-
* Register this package's invariant companion.
|
|
12
|
-
* @param ctx - Cordis context carrying the invariant service.
|
|
13
|
-
* @returns the installed registration's disposer after setup succeeds.
|
|
14
|
-
*/
|
|
15
|
-
export declare const apply: (ctx: Context) => Promise<() => void>;
|
|
16
|
-
//# sourceMappingURL=invariant.d.ts.map
|