@mofeng2223/dsh-claude-provider 0.4.5 → 0.4.6
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/client.js +261 -244
- package/package.json +3 -3
package/lib/client.js
CHANGED
|
@@ -56,7 +56,7 @@ window.__ModuleLoader__.load({
|
|
|
56
56
|
}
|
|
57
57
|
//#endregion
|
|
58
58
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-settings-models/src/client/ModelsSection.module.css.mjs
|
|
59
|
-
const css$3 = ".zGbnIq_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.zGbnIq_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.zGbnIq_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.zGbnIq_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}.zGbnIq_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.zGbnIq_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.zGbnIq_rowCard{border:.5px solid var(--dsw-alias-border-l4);border-radius:16px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.zGbnIq_rowHead{align-items:center;gap:10px;display:flex}.zGbnIq_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.zGbnIq_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.zGbnIq_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}.zGbnIq_credentialDot{box-sizing:border-box;corner-shape:round;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.zGbnIq_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.zGbnIq_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.zGbnIq_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.zGbnIq_primaryButton,.zGbnIq_secondaryButton,.zGbnIq_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}.zGbnIq_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.zGbnIq_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.zGbnIq_secondaryButton,.zGbnIq_addButton{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.zGbnIq_secondaryButton:hover:not(:disabled),.zGbnIq_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.zGbnIq_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.zGbnIq_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}.zGbnIq_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.zGbnIq_rowActions .zGbnIq_secondaryButton,.zGbnIq_rowActions .zGbnIq_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.zGbnIq_primaryButton:disabled,.zGbnIq_secondaryButton:disabled,.zGbnIq_dangerButton:disabled,.zGbnIq_addButton:disabled,.zGbnIq_linkButton:disabled,.zGbnIq_addModelButton:disabled{opacity:.4;cursor:default}.zGbnIq_primaryButton:focus-visible,.zGbnIq_secondaryButton:focus-visible,.zGbnIq_dangerButton:focus-visible,.zGbnIq_addButton:focus-visible,.zGbnIq_linkButton:focus-visible,.zGbnIq_addModelButton:focus-visible,.zGbnIq_iconButton:focus-visible,.zGbnIq_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.zGbnIq_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.zGbnIq_editorHeader{align-items:baseline;gap:8px;display:flex}.zGbnIq_editorTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.zGbnIq_editorRoute{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.zGbnIq_field{flex-direction:column;gap:6px;display:flex}.zGbnIq_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.zGbnIq_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}.zGbnIq_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.zGbnIq_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.zGbnIq_editorActions{justify-content:flex-end;gap:8px;display:flex}.zGbnIq_addBlock{flex-direction:column;gap:12px;display:flex}.zGbnIq_addActions{flex-wrap:wrap;gap:10px;display:flex}.zGbnIq_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:16px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.zGbnIq_addCard,.zGbnIq_setupCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.zGbnIq_addCard .zGbnIq_editor,.zGbnIq_setupCard .zGbnIq_editor{background:0 0;padding:0}.zGbnIq_customized{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:10px}.zGbnIq_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}.zGbnIq_customizedSummary::-webkit-details-marker{display:none}.zGbnIq_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)}.zGbnIq_customized[open]>.zGbnIq_customizedSummary:before{transform:rotate(45deg)translate(-1px,-1px)}.zGbnIq_customizedSummary:hover{color:var(--dsw-alias-label-primary)}.zGbnIq_customizedBody{flex-direction:column;gap:12px;padding-top:12px;display:flex}.zGbnIq_modelCatalog{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;padding-top:12px;display:flex}.zGbnIq_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.zGbnIq_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.zGbnIq_modelCatalogMeta,.zGbnIq_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.zGbnIq_modelList{flex-direction:column;gap:8px;display:flex}.zGbnIq_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.zGbnIq_modelEntry{border:.5px solid var(--dsw-alias-border-l4);border-radius:10px;padding:6px}.zGbnIq_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.zGbnIq_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}.zGbnIq_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.zGbnIq_iconButton:disabled{cursor:default;opacity:.4}.zGbnIq_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.zGbnIq_modelAdvanced{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 4px 2px;display:grid}.zGbnIq_modelField{flex-direction:column;gap:4px;display:flex}.zGbnIq_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.zGbnIq_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.zGbnIq_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}.zGbnIq_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.zGbnIq_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.zGbnIq_input{cursor:pointer;max-width:240px}.zGbnIq_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.zGbnIq_input::placeholder{color:var(--dsw-alias-label-dimmed)}.zGbnIq_input:disabled{opacity:.6;cursor:default}.zGbnIq_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}.zGbnIq_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.zGbnIq_deleteDialog{width:min(480px,100%)}.zGbnIq_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.zGbnIq_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.zGbnIq_hiddenLabel{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.zGbnIq_customizedSummary:before,.zGbnIq_switchThumb{transition:none}}.zGbnIq_fetchDialog{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);max-width:520px}.zGbnIq_candidateToolbar{align-items:center;gap:8px;margin-bottom:6px;display:flex}.zGbnIq_candidateSearch{flex:240px;min-width:0}.zGbnIq_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.zGbnIq_candidate{border-radius:6px}.zGbnIq_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.zGbnIq_candidateId{font-family:var(--ds-font-family-code);overflow-wrap:anywhere;flex:auto;font-size:13px}.zGbnIq_candidateEmpty{color:var(--dsw-alias-label-secondary);text-align:center;margin:24px 0;font-size:13px;line-height:20px}";
|
|
59
|
+
const css$3 = ".zGbnIq_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}.zGbnIq_title{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.zGbnIq_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.zGbnIq_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}.zGbnIq_savedNotice{color:var(--dsw-alias-state-success-primary);margin:0;font-size:12px;line-height:18px}.zGbnIq_rows{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.zGbnIq_rowCard{border:.5px solid var(--dsw-alias-border-l4);border-radius:16px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.zGbnIq_rowHead{align-items:center;gap:10px;display:flex}.zGbnIq_rowIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.zGbnIq_rowName{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.zGbnIq_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}.zGbnIq_credentialDot{box-sizing:border-box;corner-shape:round;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.zGbnIq_credentialDotConfigured{background:var(--dsw-alias-state-success-primary)}.zGbnIq_credentialDotMissing{background:var(--dsw-alias-state-error-primary)}.zGbnIq_rowActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.zGbnIq_primaryButton,.zGbnIq_secondaryButton,.zGbnIq_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}.zGbnIq_primaryButton{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.zGbnIq_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover)}.zGbnIq_secondaryButton,.zGbnIq_addButton{border:.5px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}.zGbnIq_secondaryButton:hover:not(:disabled),.zGbnIq_addButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.zGbnIq_secondaryButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.zGbnIq_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}.zGbnIq_dangerButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.zGbnIq_rowActions .zGbnIq_secondaryButton,.zGbnIq_rowActions .zGbnIq_dangerButton{border-radius:14px;height:28px;padding:0 10px;font-size:12px;line-height:18px}.zGbnIq_primaryButton:disabled,.zGbnIq_secondaryButton:disabled,.zGbnIq_dangerButton:disabled,.zGbnIq_addButton:disabled,.zGbnIq_linkButton:disabled,.zGbnIq_addModelButton:disabled{opacity:.4;cursor:default}.zGbnIq_primaryButton:focus-visible,.zGbnIq_secondaryButton:focus-visible,.zGbnIq_dangerButton:focus-visible,.zGbnIq_addButton:focus-visible,.zGbnIq_linkButton:focus-visible,.zGbnIq_addModelButton:focus-visible,.zGbnIq_iconButton:focus-visible,.zGbnIq_customizedSummary:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3);outline:none}.zGbnIq_editor{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.zGbnIq_editorHeader{align-items:baseline;gap:8px;display:flex}.zGbnIq_editorTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px}.zGbnIq_editorRoute{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.zGbnIq_field{flex-direction:column;gap:6px;display:flex}.zGbnIq_fieldLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;font-weight:500;line-height:18px;display:inline-flex}.zGbnIq_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}.zGbnIq_linkButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.zGbnIq_advancedHint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.zGbnIq_editorActions{justify-content:flex-end;gap:8px;display:flex}.zGbnIq_addBlock{flex-direction:column;gap:12px;display:flex}.zGbnIq_addActions{flex-wrap:wrap;gap:10px;display:flex}.zGbnIq_addButton{border:1px dashed var(--dsw-alias-border-l3);border-radius:16px;flex:1 1 0;gap:6px;min-width:180px;height:44px}.zGbnIq_addCard,.zGbnIq_setupCard{background:var(--dsw-alias-bg-module-platform);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;list-style:none;display:flex}.zGbnIq_addCard .zGbnIq_editor,.zGbnIq_setupCard .zGbnIq_editor{background:0 0;padding:0}.zGbnIq_customized{border-top:.5px solid var(--dsw-alias-border-l2);padding-top:10px}.zGbnIq_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}.zGbnIq_customizedSummary::-webkit-details-marker{display:none}.zGbnIq_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)}.zGbnIq_customized[open]>.zGbnIq_customizedSummary:before{transform:rotate(45deg)translate(-1px,-1px)}.zGbnIq_customizedSummary:hover{color:var(--dsw-alias-label-primary)}.zGbnIq_customizedBody{flex-direction:column;gap:12px;padding-top:12px;display:flex}.zGbnIq_modelCatalog{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:10px;padding-top:12px;display:flex}.zGbnIq_modelCatalogHeading{flex-direction:column;gap:2px;display:flex}.zGbnIq_modelCatalogTitle{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:500;line-height:18px}.zGbnIq_modelCatalogMeta,.zGbnIq_modelEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.zGbnIq_modelList{flex-direction:column;gap:8px;display:flex}.zGbnIq_modelListHead{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.zGbnIq_modelEntry{border:.5px solid var(--dsw-alias-border-l4);border-radius:10px;padding:6px}.zGbnIq_modelRow{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;align-items:center;gap:6px;display:grid}.zGbnIq_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}.zGbnIq_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.zGbnIq_iconButton:disabled{cursor:default;opacity:.4}.zGbnIq_iconButtonDanger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger);color:var(--dsw-alias-state-error-primary)}.zGbnIq_modelAdvanced{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 4px 2px;display:grid}.zGbnIq_modelField{flex-direction:column;gap:4px;min-width:0;display:flex}.zGbnIq_modelInputTypes{border:none;grid-column:1/-1;min-width:0;margin:0;padding:0}.zGbnIq_modelInputTypes legend{margin-bottom:4px;padding:0}.zGbnIq_modelInputChoices{flex-wrap:wrap;align-items:center;gap:16px;min-height:32px;display:flex}.zGbnIq_modelFieldLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.zGbnIq_modelEmpty{border:1px dashed var(--dsw-alias-border-l3);text-align:center;border-radius:8px;padding:12px}.zGbnIq_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}.zGbnIq_addModelButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.zGbnIq_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.zGbnIq_input{cursor:pointer;max-width:240px}.zGbnIq_input:focus{border-color:var(--dsw-alias-brand-primary);outline:none}.zGbnIq_input::placeholder{color:var(--dsw-alias-label-dimmed)}.zGbnIq_input:disabled{opacity:.6;cursor:default}.zGbnIq_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}.zGbnIq_error{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.zGbnIq_deleteDialog{width:min(480px,100%)}.zGbnIq_deleteConfirm:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.zGbnIq_deleteConfirm:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-danger)}.zGbnIq_hiddenLabel{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.zGbnIq_customizedSummary:before,.zGbnIq_switchThumb{transition:none}}.zGbnIq_fetchDialog{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);max-width:520px}.zGbnIq_candidateToolbar{align-items:center;gap:8px;margin-bottom:6px;display:flex}.zGbnIq_candidateSearch{flex:240px;min-width:0}.zGbnIq_candidateList{flex-direction:column;gap:2px;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.zGbnIq_candidate{border-radius:6px}.zGbnIq_candidateLabel{cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.zGbnIq_candidateId{font-family:var(--ds-font-family-code);overflow-wrap:anywhere;flex:auto;font-size:13px}.zGbnIq_candidateEmpty{color:var(--dsw-alias-label-secondary);text-align:center;margin:24px 0;font-size:13px;line-height:20px}";
|
|
60
60
|
const tagId$3 = "@mofeng2223/dsh-claude-provider/ModelsSection.module.css";
|
|
61
61
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
62
62
|
const tag = document.createElement("style");
|
|
@@ -112,6 +112,8 @@ window.__ModuleLoader__.load({
|
|
|
112
112
|
"modelEntry": "zGbnIq_modelEntry",
|
|
113
113
|
"modelField": "zGbnIq_modelField",
|
|
114
114
|
"modelFieldLabel": "zGbnIq_modelFieldLabel",
|
|
115
|
+
"modelInputChoices": "zGbnIq_modelInputChoices",
|
|
116
|
+
"modelInputTypes": "zGbnIq_modelInputTypes",
|
|
115
117
|
"modelList": "zGbnIq_modelList",
|
|
116
118
|
"modelListHead": "zGbnIq_modelListHead",
|
|
117
119
|
"modelRow": "zGbnIq_modelRow",
|
|
@@ -159,6 +161,132 @@ window.__ModuleLoader__.load({
|
|
|
159
161
|
});
|
|
160
162
|
}
|
|
161
163
|
//#endregion
|
|
164
|
+
//#region lib/types/client/ModelInputTypes.js
|
|
165
|
+
/**
|
|
166
|
+
* Edit a nonempty set of input types, displaying inherited types before an override exists.
|
|
167
|
+
* @param props - model declaration and row replacement action.
|
|
168
|
+
* @returns the labeled text and image checkboxes.
|
|
169
|
+
*/
|
|
170
|
+
function ModelInputTypes({ model, field, position, disabled, fallback, t, onChange }) {
|
|
171
|
+
const modalities = model[field];
|
|
172
|
+
const selected = Array.isArray(modalities) && modalities.length > 0 ? modalities : fallback ?? ["text"];
|
|
173
|
+
return (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
174
|
+
className: ModelsSection_module_css_default["modelInputTypes"],
|
|
175
|
+
"aria-label": `${t("modelInputTypes")} ${String(position)}`,
|
|
176
|
+
children: [(0, react_jsx_runtime.jsx)("legend", {
|
|
177
|
+
className: ModelsSection_module_css_default["modelFieldLabel"],
|
|
178
|
+
children: t("modelInputTypes")
|
|
179
|
+
}), (0, react_jsx_runtime.jsx)("div", {
|
|
180
|
+
className: ModelsSection_module_css_default["modelInputChoices"],
|
|
181
|
+
children: ["text", "image"].map((modality) => (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Checkbox, {
|
|
182
|
+
label: t(modality === "text" ? "modelInputText" : "modelInputImage"),
|
|
183
|
+
checked: selected.includes(modality),
|
|
184
|
+
disabled: disabled || selected.length === 1 && selected.includes(modality),
|
|
185
|
+
onChange: (checked) => {
|
|
186
|
+
const nextSelected = ["text", "image"].filter((value) => value === modality ? checked : selected.includes(value));
|
|
187
|
+
const next = {
|
|
188
|
+
...model,
|
|
189
|
+
[field]: nextSelected
|
|
190
|
+
};
|
|
191
|
+
if (field === "inputModalities" && !nextSelected.includes("image")) {
|
|
192
|
+
Reflect.deleteProperty(next, "imagePixelBudget");
|
|
193
|
+
Reflect.deleteProperty(next, "imageMaxBytes");
|
|
194
|
+
}
|
|
195
|
+
onChange(next);
|
|
196
|
+
}
|
|
197
|
+
}, modality))
|
|
198
|
+
})]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
//#endregion
|
|
202
|
+
//#region lib/types/client/ModelRow.js
|
|
203
|
+
/**
|
|
204
|
+
* Render consistent model identity, capacity, and input-type controls.
|
|
205
|
+
* @param props - drafted fields and their owning editor's actions.
|
|
206
|
+
* @returns one expandable model entry.
|
|
207
|
+
*/
|
|
208
|
+
function ModelRow(props) {
|
|
209
|
+
const { model, position, t, disabled } = props;
|
|
210
|
+
return (0, react_jsx_runtime.jsxs)("div", {
|
|
211
|
+
className: ModelsSection_module_css_default["modelEntry"],
|
|
212
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
213
|
+
className: ModelsSection_module_css_default["modelRow"],
|
|
214
|
+
children: [
|
|
215
|
+
["id", "name"].map((field) => (0, react_jsx_runtime.jsx)("input", {
|
|
216
|
+
className: ModelsSection_module_css_default["input"],
|
|
217
|
+
type: "text",
|
|
218
|
+
value: typeof model[field] === "string" ? model[field] : "",
|
|
219
|
+
placeholder: t(field === "id" ? "modelId" : "modelName"),
|
|
220
|
+
"aria-label": `${t(field === "id" ? "modelId" : "modelName")} ${String(position)}`,
|
|
221
|
+
disabled,
|
|
222
|
+
onChange: (event) => {
|
|
223
|
+
const value = event.target.value;
|
|
224
|
+
props.onFieldChange(field, field === "name" && value === "" ? void 0 : value);
|
|
225
|
+
},
|
|
226
|
+
onBlur: field === "id" ? (event) => props.onIdBlur?.(event.target.value) : void 0
|
|
227
|
+
}, field)),
|
|
228
|
+
(0, react_jsx_runtime.jsx)("button", {
|
|
229
|
+
type: "button",
|
|
230
|
+
className: ModelsSection_module_css_default["iconButton"],
|
|
231
|
+
"aria-label": `${t("modelAdvanced")} ${String(position)}`,
|
|
232
|
+
"aria-expanded": props.expanded,
|
|
233
|
+
title: t("modelAdvanced"),
|
|
234
|
+
onClick: props.onToggle,
|
|
235
|
+
children: props.expanded ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {})
|
|
236
|
+
}),
|
|
237
|
+
(0, react_jsx_runtime.jsx)("button", {
|
|
238
|
+
type: "button",
|
|
239
|
+
className: `${ModelsSection_module_css_default["iconButton"]} ${ModelsSection_module_css_default["iconButtonDanger"]}`,
|
|
240
|
+
"aria-label": `${t("removeModel")} ${String(position)}`,
|
|
241
|
+
title: t("removeModel"),
|
|
242
|
+
disabled,
|
|
243
|
+
onClick: props.onRemove,
|
|
244
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutline16, { size: 14 })
|
|
245
|
+
})
|
|
246
|
+
]
|
|
247
|
+
}), props.expanded ? (0, react_jsx_runtime.jsxs)("div", {
|
|
248
|
+
className: ModelsSection_module_css_default["modelAdvanced"],
|
|
249
|
+
children: [["contextWindow", "maxTokens"].map((field) => (0, react_jsx_runtime.jsxs)("label", {
|
|
250
|
+
className: ModelsSection_module_css_default["modelField"],
|
|
251
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
252
|
+
className: ModelsSection_module_css_default["modelFieldLabel"],
|
|
253
|
+
children: t(field)
|
|
254
|
+
}), (0, react_jsx_runtime.jsx)("input", {
|
|
255
|
+
className: ModelsSection_module_css_default["input"],
|
|
256
|
+
type: "text",
|
|
257
|
+
inputMode: "numeric",
|
|
258
|
+
value: props[field].value,
|
|
259
|
+
placeholder: props[field].placeholder,
|
|
260
|
+
"aria-label": `${t(field)} ${String(position)}`,
|
|
261
|
+
disabled,
|
|
262
|
+
onChange: (event) => {
|
|
263
|
+
props[field].onChange(event.target.value);
|
|
264
|
+
},
|
|
265
|
+
onBlur: props[field].onBlur
|
|
266
|
+
})]
|
|
267
|
+
}, field)), (0, react_jsx_runtime.jsx)(ModelInputTypes, {
|
|
268
|
+
model,
|
|
269
|
+
field: props.inputField,
|
|
270
|
+
position,
|
|
271
|
+
fallback: props.inputFallback,
|
|
272
|
+
disabled: disabled || props.inputLoading === true,
|
|
273
|
+
t,
|
|
274
|
+
onChange: props.onChange
|
|
275
|
+
}), props.thinkingPresets ? (0, react_jsx_runtime.jsxs)("label", {
|
|
276
|
+
className: ModelsSection_module_css_default["modelField"],
|
|
277
|
+
children: [t("thinkingPreset"), (0, react_jsx_runtime.jsxs)("select", {
|
|
278
|
+
className: ModelsSection_module_css_default["input"],
|
|
279
|
+
value: thinkingPresetOf(model),
|
|
280
|
+
"aria-label": t("thinkingPreset") + " " + position,
|
|
281
|
+
disabled,
|
|
282
|
+
onChange: (event) => props.onChange({ ...model, reasoningEfforts: reasoningEffortsForPreset(event.target.value) }),
|
|
283
|
+
children: ["toggle", "four", "five"].map((preset) => (0, react_jsx_runtime.jsx)("option", { value: preset, children: t({ toggle: "thinkingPresetToggle", four: "thinkingPresetFour", five: "thinkingPresetFive" }[preset]) }, preset))
|
|
284
|
+
})]
|
|
285
|
+
}) : null]
|
|
286
|
+
}) : null]
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
//#endregion
|
|
162
290
|
//#region lib/types/client/DeepSeekModelsEditor.js
|
|
163
291
|
/**
|
|
164
292
|
* Curated editor for the direct DeepSeek adapter's advisory model catalog.
|
|
@@ -253,7 +381,7 @@ window.__ModuleLoader__.load({
|
|
|
253
381
|
}
|
|
254
382
|
/**
|
|
255
383
|
* Render the direct DeepSeek adapter's model catalog: id and display name on
|
|
256
|
-
* each row, capacities behind the row's own disclosure.
|
|
384
|
+
* each row, capacities and input types behind the row's own disclosure.
|
|
257
385
|
* @param props - effective rows plus the array-level override actions.
|
|
258
386
|
* @returns the catalog editor.
|
|
259
387
|
*/
|
|
@@ -321,29 +449,16 @@ window.__ModuleLoader__.load({
|
|
|
321
449
|
return next;
|
|
322
450
|
});
|
|
323
451
|
};
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
value: capacityText(model, index, field),
|
|
335
|
-
placeholder: fallback === void 0 ? props.t(field === "contextWindow" ? "contextWindowPlaceholder" : "maxTokensPlaceholder") : formatCapacity(fallback),
|
|
336
|
-
"aria-label": `${props.t(field === "contextWindow" ? "contextWindow" : "maxTokens")} ${String(index + 1)}`,
|
|
337
|
-
disabled: props.disabled,
|
|
338
|
-
onChange: (event) => {
|
|
339
|
-
const text = event.target.value;
|
|
340
|
-
setEditing((current) => new Map(current).set(`${String(index)}:${field}`, text));
|
|
341
|
-
update(index, field, parseCapacity(text));
|
|
342
|
-
},
|
|
343
|
-
onBlur: () => {
|
|
344
|
-
settleCapacity(index, field);
|
|
345
|
-
}
|
|
346
|
-
})]
|
|
452
|
+
const capacityInput = (model, index, field, fallback) => ({
|
|
453
|
+
value: capacityText(model, index, field),
|
|
454
|
+
placeholder: fallback === void 0 ? props.t(field === "contextWindow" ? "contextWindowPlaceholder" : "maxTokensPlaceholder") : formatCapacity(fallback),
|
|
455
|
+
onChange: (text) => {
|
|
456
|
+
setEditing((current) => new Map(current).set(`${String(index)}:${field}`, text));
|
|
457
|
+
update(index, field, parseCapacity(text));
|
|
458
|
+
},
|
|
459
|
+
onBlur: () => {
|
|
460
|
+
settleCapacity(index, field);
|
|
461
|
+
}
|
|
347
462
|
});
|
|
348
463
|
return (0, react_jsx_runtime.jsxs)("section", {
|
|
349
464
|
className: ModelsSection_module_css_default["modelCatalog"],
|
|
@@ -373,64 +488,31 @@ window.__ModuleLoader__.load({
|
|
|
373
488
|
children: props.t("modelsEmpty")
|
|
374
489
|
}) : (0, react_jsx_runtime.jsx)("div", {
|
|
375
490
|
className: ModelsSection_module_css_default["modelList"],
|
|
376
|
-
children: props.models.map((model, index) => (0, react_jsx_runtime.
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
"aria-label": `${props.t("modelName")} ${String(index + 1)}`,
|
|
402
|
-
disabled: props.disabled,
|
|
403
|
-
onChange: (event) => {
|
|
404
|
-
update(index, "name", event.target.value === "" ? void 0 : event.target.value);
|
|
405
|
-
}
|
|
406
|
-
}),
|
|
407
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
408
|
-
type: "button",
|
|
409
|
-
className: ModelsSection_module_css_default["iconButton"],
|
|
410
|
-
"aria-label": `${props.t("modelAdvanced")} ${String(index + 1)}`,
|
|
411
|
-
"aria-expanded": expanded.has(index),
|
|
412
|
-
title: props.t("modelAdvanced"),
|
|
413
|
-
onClick: () => {
|
|
414
|
-
toggle(index);
|
|
415
|
-
},
|
|
416
|
-
children: expanded.has(index) ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutline14, {})
|
|
417
|
-
}),
|
|
418
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
419
|
-
type: "button",
|
|
420
|
-
className: `${ModelsSection_module_css_default["iconButton"]} ${ModelsSection_module_css_default["iconButtonDanger"]}`,
|
|
421
|
-
"aria-label": `${props.t("removeModel")} ${String(index + 1)}`,
|
|
422
|
-
title: props.t("removeModel"),
|
|
423
|
-
disabled: props.disabled,
|
|
424
|
-
onClick: () => {
|
|
425
|
-
remove(index);
|
|
426
|
-
},
|
|
427
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutline16, { size: 14 })
|
|
428
|
-
})
|
|
429
|
-
]
|
|
430
|
-
}), expanded.has(index) ? (0, react_jsx_runtime.jsxs)("div", {
|
|
431
|
-
className: ModelsSection_module_css_default["modelAdvanced"],
|
|
432
|
-
children: [capacityField(model, index, "contextWindow", props.defaultContextWindow), capacityField(model, index, "maxTokens", props.defaultMaxTokens)]
|
|
433
|
-
}) : null]
|
|
491
|
+
children: props.models.map((model, index) => (0, react_jsx_runtime.jsx)(ModelRow, {
|
|
492
|
+
model,
|
|
493
|
+
position: index + 1,
|
|
494
|
+
inputField: "inputModalities",
|
|
495
|
+
expanded: expanded.has(index),
|
|
496
|
+
disabled: props.disabled,
|
|
497
|
+
t: props.t,
|
|
498
|
+
contextWindow: capacityInput(model, index, "contextWindow", props.defaultContextWindow),
|
|
499
|
+
maxTokens: capacityInput(model, index, "maxTokens", props.defaultMaxTokens),
|
|
500
|
+
onFieldChange: (field, value) => {
|
|
501
|
+
update(index, field, value);
|
|
502
|
+
},
|
|
503
|
+
onIdBlur: (value) => {
|
|
504
|
+
const trimmed = value.trim();
|
|
505
|
+
if (trimmed !== value) update(index, "id", trimmed);
|
|
506
|
+
},
|
|
507
|
+
onChange: (next) => {
|
|
508
|
+
props.onChange(props.models.map((row, at) => at === index ? next : row));
|
|
509
|
+
},
|
|
510
|
+
onToggle: () => {
|
|
511
|
+
toggle(index);
|
|
512
|
+
},
|
|
513
|
+
onRemove: () => {
|
|
514
|
+
remove(index);
|
|
515
|
+
}
|
|
434
516
|
}, index))
|
|
435
517
|
}),
|
|
436
518
|
(0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -472,44 +554,6 @@ window.__ModuleLoader__.load({
|
|
|
472
554
|
const value = model[key];
|
|
473
555
|
return typeof value === "number" ? value : void 0;
|
|
474
556
|
}
|
|
475
|
-
/** Disclosure chevron; rotates to point down while its row is open. */
|
|
476
|
-
function IconChevron({ open }) {
|
|
477
|
-
return (0, react_jsx_runtime.jsx)("svg", {
|
|
478
|
-
width: "14",
|
|
479
|
-
height: "14",
|
|
480
|
-
viewBox: "0 0 16 16",
|
|
481
|
-
fill: "none",
|
|
482
|
-
"aria-hidden": true,
|
|
483
|
-
style: {
|
|
484
|
-
transform: open ? "rotate(90deg)" : void 0,
|
|
485
|
-
transition: "transform 120ms ease"
|
|
486
|
-
},
|
|
487
|
-
children: (0, react_jsx_runtime.jsx)("path", {
|
|
488
|
-
d: "M6 3.5L10.5 8L6 12.5",
|
|
489
|
-
stroke: "currentColor",
|
|
490
|
-
strokeWidth: "1.5",
|
|
491
|
-
strokeLinecap: "round",
|
|
492
|
-
strokeLinejoin: "round"
|
|
493
|
-
})
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
/** Removal glyph for one model row. */
|
|
497
|
-
function IconTrash() {
|
|
498
|
-
return (0, react_jsx_runtime.jsx)("svg", {
|
|
499
|
-
width: "14",
|
|
500
|
-
height: "14",
|
|
501
|
-
viewBox: "0 0 16 16",
|
|
502
|
-
fill: "none",
|
|
503
|
-
"aria-hidden": true,
|
|
504
|
-
children: (0, react_jsx_runtime.jsx)("path", {
|
|
505
|
-
d: "M2.5 4h11M6.5 4V2.5h3V4M4 4l.7 9a1 1 0 001 .9h4.6a1 1 0 001-.9L12 4M6.5 6.8v4.4M9.5 6.8v4.4",
|
|
506
|
-
stroke: "currentColor",
|
|
507
|
-
strokeWidth: "1.3",
|
|
508
|
-
strokeLinecap: "round",
|
|
509
|
-
strokeLinejoin: "round"
|
|
510
|
-
})
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
557
|
/**
|
|
514
558
|
* What an empty capacity field is worth, shown as its placeholder so a row left
|
|
515
559
|
* blank does not read as a model with no capacity at all.
|
|
@@ -535,13 +579,14 @@ window.__ModuleLoader__.load({
|
|
|
535
579
|
function capacitySpelling(value) {
|
|
536
580
|
return value === void 0 ? "" : formatCapacity(value);
|
|
537
581
|
}
|
|
538
|
-
/** Adopt a candidate,
|
|
582
|
+
/** Adopt a candidate, preserving disclosed capacities and input types. */
|
|
539
583
|
function adopt(candidate) {
|
|
540
584
|
return {
|
|
541
585
|
id: candidate.id,
|
|
542
586
|
...candidate.name === void 0 ? {} : { name: candidate.name },
|
|
543
587
|
...candidate.contextWindow === void 0 ? {} : { contextWindow: candidate.contextWindow },
|
|
544
|
-
...candidate.maxTokens === void 0 ? {} : { maxTokens: candidate.maxTokens }
|
|
588
|
+
...candidate.maxTokens === void 0 ? {} : { maxTokens: candidate.maxTokens },
|
|
589
|
+
...candidate.inputModalities === void 0 ? {} : { input: [...candidate.inputModalities] }
|
|
545
590
|
};
|
|
546
591
|
}
|
|
547
592
|
/**
|
|
@@ -551,8 +596,31 @@ window.__ModuleLoader__.load({
|
|
|
551
596
|
*/
|
|
552
597
|
function ModelListEditor(props) {
|
|
553
598
|
const { models, onChange, probe, operations, t, disabled } = props;
|
|
599
|
+
const { catalogProvider } = props;
|
|
554
600
|
const [busy, setBusy] = (0, react.useState)(false);
|
|
555
601
|
const [failure, setFailure] = (0, react.useState)(void 0);
|
|
602
|
+
const [inheritedCatalog, setInheritedCatalog] = (0, react.useState)(void 0);
|
|
603
|
+
(0, react.useEffect)(() => {
|
|
604
|
+
if (catalogProvider === void 0) return;
|
|
605
|
+
let current = true;
|
|
606
|
+
operations.discoverModels(probe.settingsNs, { provider: catalogProvider }).then((answer) => {
|
|
607
|
+
if (!current) return;
|
|
608
|
+
setInheritedCatalog({
|
|
609
|
+
provider: catalogProvider,
|
|
610
|
+
models: answer.kind === "found" ? answer.models : []
|
|
611
|
+
});
|
|
612
|
+
setFailure(answer.kind === "refused" ? answer.message : void 0);
|
|
613
|
+
});
|
|
614
|
+
return () => {
|
|
615
|
+
current = false;
|
|
616
|
+
};
|
|
617
|
+
}, [
|
|
618
|
+
catalogProvider,
|
|
619
|
+
operations,
|
|
620
|
+
probe.settingsNs
|
|
621
|
+
]);
|
|
622
|
+
const catalog = inheritedCatalog?.provider === catalogProvider ? inheritedCatalog?.models : void 0;
|
|
623
|
+
const inputDefaults = (0, react.useMemo)(() => new Map(catalog?.map((model) => [model.id, model.inputModalities])), [catalog]);
|
|
556
624
|
const [candidates, setCandidates] = (0, react.useState)(void 0);
|
|
557
625
|
const [picked, setPicked] = (0, react.useState)(/* @__PURE__ */ new Set());
|
|
558
626
|
const [candidateQuery, setCandidateQuery] = (0, react.useState)("");
|
|
@@ -608,6 +676,10 @@ window.__ModuleLoader__.load({
|
|
|
608
676
|
return;
|
|
609
677
|
}
|
|
610
678
|
const found = answer.models;
|
|
679
|
+
if (catalogProvider !== void 0) setInheritedCatalog({
|
|
680
|
+
provider: catalogProvider,
|
|
681
|
+
models: found
|
|
682
|
+
});
|
|
611
683
|
if (found.length === 0) {
|
|
612
684
|
setFailure(t("fetchEmpty"));
|
|
613
685
|
return;
|
|
@@ -696,125 +768,61 @@ window.__ModuleLoader__.load({
|
|
|
696
768
|
className: ModelsSection_module_css_default["modelEmpty"],
|
|
697
769
|
children: t("modelsEmpty")
|
|
698
770
|
}) : null,
|
|
699
|
-
|
|
700
|
-
className: ModelsSection_module_css_default["
|
|
701
|
-
children:
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
(
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
for (const at of current) if (at < index) next.add(at);
|
|
748
|
-
else if (at > index) next.add(at - 1);
|
|
749
|
-
return next;
|
|
750
|
-
});
|
|
751
|
-
setEditing((current) => reindexOnRemove(current, index));
|
|
752
|
-
},
|
|
753
|
-
children: (0, react_jsx_runtime.jsx)(IconTrash, {})
|
|
754
|
-
})
|
|
755
|
-
]
|
|
756
|
-
}), expanded.has(index) ? (0, react_jsx_runtime.jsxs)("div", {
|
|
757
|
-
className: ModelsSection_module_css_default["modelAdvanced"],
|
|
758
|
-
children: [(0, react_jsx_runtime.jsxs)("label", {
|
|
759
|
-
className: ModelsSection_module_css_default["modelField"],
|
|
760
|
-
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
761
|
-
className: ModelsSection_module_css_default["modelFieldLabel"],
|
|
762
|
-
children: t("modelContextWindow")
|
|
763
|
-
}), (0, react_jsx_runtime.jsx)("input", {
|
|
764
|
-
className: ModelsSection_module_css_default["input"],
|
|
765
|
-
type: "text",
|
|
766
|
-
inputMode: "numeric",
|
|
767
|
-
value: capacityText(model, index, "contextWindow"),
|
|
768
|
-
placeholder: CAPACITY_HINT.contextWindow,
|
|
769
|
-
"aria-label": `${t("modelContextWindow")} ${index + 1}`,
|
|
770
|
-
disabled,
|
|
771
|
-
onChange: (event) => {
|
|
772
|
-
editCapacity(index, "contextWindow", event.target.value);
|
|
773
|
-
}
|
|
774
|
-
})]
|
|
775
|
-
}), (0, react_jsx_runtime.jsxs)("label", {
|
|
776
|
-
className: ModelsSection_module_css_default["modelField"],
|
|
777
|
-
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
778
|
-
className: ModelsSection_module_css_default["modelFieldLabel"],
|
|
779
|
-
children: t("modelMaxTokens")
|
|
780
|
-
}), (0, react_jsx_runtime.jsx)("input", {
|
|
781
|
-
className: ModelsSection_module_css_default["input"],
|
|
782
|
-
type: "text",
|
|
783
|
-
inputMode: "numeric",
|
|
784
|
-
value: capacityText(model, index, "maxTokens"),
|
|
785
|
-
placeholder: CAPACITY_HINT.maxTokens,
|
|
786
|
-
"aria-label": `${t("modelMaxTokens")} ${index + 1}`,
|
|
787
|
-
disabled,
|
|
788
|
-
onChange: (event) => {
|
|
789
|
-
editCapacity(index, "maxTokens", event.target.value);
|
|
790
|
-
}
|
|
791
|
-
})]
|
|
792
|
-
}), props.thinkingPresets ? (0, react_jsx_runtime.jsxs)("label", {
|
|
793
|
-
className: ModelsSection_module_css_default["modelField"],
|
|
794
|
-
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
795
|
-
className: ModelsSection_module_css_default["modelFieldLabel"],
|
|
796
|
-
children: t("thinkingPreset")
|
|
797
|
-
}), (0, react_jsx_runtime.jsxs)("select", {
|
|
798
|
-
className: `${ModelsSection_module_css_default["input"]} ${ModelsSection_module_css_default["selectInput"]}`,
|
|
799
|
-
value: thinkingPresetOf(model),
|
|
800
|
-
"aria-label": `${t("thinkingPreset")} ${index + 1}`,
|
|
801
|
-
disabled,
|
|
802
|
-
onChange: (event) => {
|
|
803
|
-
patch(index, { reasoningEfforts: reasoningEffortsForPreset(event.target.value) });
|
|
804
|
-
},
|
|
805
|
-
children: [(0, react_jsx_runtime.jsx)("option", { value: "toggle", children: t("thinkingPresetToggle") }), (0, react_jsx_runtime.jsx)("option", { value: "four", children: t("thinkingPresetFour") }), (0, react_jsx_runtime.jsx)("option", { value: "five", children: t("thinkingPresetFive") })]
|
|
806
|
-
})]
|
|
807
|
-
}) : null]
|
|
808
|
-
}) : null]
|
|
809
|
-
}, index)),
|
|
810
|
-
(0, react_jsx_runtime.jsx)("button", {
|
|
771
|
+
(0, react_jsx_runtime.jsx)("div", {
|
|
772
|
+
className: ModelsSection_module_css_default["modelList"],
|
|
773
|
+
children: models.map((model, index) => (0, react_jsx_runtime.jsx)(ModelRow, {
|
|
774
|
+
model,
|
|
775
|
+
position: index + 1,
|
|
776
|
+
inputField: "input",
|
|
777
|
+
thinkingPresets: props.thinkingPresets,
|
|
778
|
+
inputFallback: props.thinkingPresets && CLAUDE_KNOWN_MODELS[model.id] ? ["text", "image"] : inputDefaults.get(textOf(model, "id")) ?? props.defaultInput,
|
|
779
|
+
inputLoading: catalogProvider !== void 0 && catalog === void 0,
|
|
780
|
+
expanded: expanded.has(index),
|
|
781
|
+
disabled,
|
|
782
|
+
t,
|
|
783
|
+
contextWindow: {
|
|
784
|
+
value: capacityText(model, index, "contextWindow"),
|
|
785
|
+
placeholder: CAPACITY_HINT.contextWindow,
|
|
786
|
+
onChange: (text) => {
|
|
787
|
+
editCapacity(index, "contextWindow", text);
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
maxTokens: {
|
|
791
|
+
value: capacityText(model, index, "maxTokens"),
|
|
792
|
+
placeholder: CAPACITY_HINT.maxTokens,
|
|
793
|
+
onChange: (text) => {
|
|
794
|
+
editCapacity(index, "maxTokens", text);
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
onFieldChange: (field, value) => {
|
|
798
|
+
patch(index, { [field]: value });
|
|
799
|
+
},
|
|
800
|
+
onChange: (next) => {
|
|
801
|
+
onChange(models.map((row, at) => at === index ? next : row));
|
|
802
|
+
},
|
|
803
|
+
onToggle: () => {
|
|
804
|
+
toggleExpanded(index);
|
|
805
|
+
},
|
|
806
|
+
onRemove: () => {
|
|
807
|
+
onChange(models.filter((_model, at) => at !== index));
|
|
808
|
+
setExpanded((current) => {
|
|
809
|
+
const next = /* @__PURE__ */ new Set();
|
|
810
|
+
for (const at of current) if (at < index) next.add(at);
|
|
811
|
+
else if (at > index) next.add(at - 1);
|
|
812
|
+
return next;
|
|
813
|
+
});
|
|
814
|
+
setEditing((current) => reindexOnRemove(current, index));
|
|
815
|
+
}
|
|
816
|
+
}, index))
|
|
817
|
+
}),
|
|
818
|
+
(0, react_jsx_runtime.jsxs)("button", {
|
|
811
819
|
type: "button",
|
|
812
820
|
className: ModelsSection_module_css_default["addModelButton"],
|
|
813
821
|
disabled,
|
|
814
822
|
onClick: () => {
|
|
815
823
|
onChange([...models, props.thinkingPresets ? withDefaultClaudeReasoning({ id: "" }) : { id: "" }]);
|
|
816
824
|
},
|
|
817
|
-
children: t("addModel")
|
|
825
|
+
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutline16, { size: 14 }), t("addModel")]
|
|
818
826
|
}),
|
|
819
827
|
failure !== void 0 ? (0, react_jsx_runtime.jsx)("p", {
|
|
820
828
|
className: ModelsSection_module_css_default["error"],
|
|
@@ -1625,6 +1633,7 @@ window.__ModuleLoader__.load({
|
|
|
1625
1633
|
const models = modelDrafts(modelsOverridden ? customModels : inheritedModels());
|
|
1626
1634
|
const defaultContextWindow = schema.getPath(fallback, ["defaultContextWindow"]);
|
|
1627
1635
|
const defaultMaxTokens = schema.getPath(fallback, ["maxTokens"]);
|
|
1636
|
+
const defaultInput = schema.getPath(fallback, ["defaultInput"]);
|
|
1628
1637
|
const keyPlaceholder = keyLocked ? t("keyEnvLocked") : keyState?.configured === true && props.credentialRequired !== true ? t("keyStored") : family === "pi-ai" ? t("keyPlaceholderNative") : t("keyPlaceholder");
|
|
1629
1638
|
/** What both family editors take: the rows, whose layer owns them, and the two writes. */
|
|
1630
1639
|
const catalogProps = {
|
|
@@ -1745,6 +1754,8 @@ window.__ModuleLoader__.load({
|
|
|
1745
1754
|
defaultMaxTokens: typeof defaultMaxTokens === "number" ? defaultMaxTokens : void 0
|
|
1746
1755
|
}) : (0, react_jsx_runtime.jsx)(ModelListEditor, {
|
|
1747
1756
|
...catalogProps,
|
|
1757
|
+
catalogProvider: props.declared === true ? void 0 : props.provider,
|
|
1758
|
+
defaultInput: Array.isArray(defaultInput) ? defaultInput : void 0,
|
|
1748
1759
|
probe,
|
|
1749
1760
|
probeBlocked: keyFailure,
|
|
1750
1761
|
thinkingPresets: props.thinkingPresets === true,
|
|
@@ -1908,10 +1919,14 @@ window.__ModuleLoader__.load({
|
|
|
1908
1919
|
if (preset === "four") return { ...CLAUDE_FOUR_EFFORTS };
|
|
1909
1920
|
return { ...CLAUDE_FIVE_EFFORTS };
|
|
1910
1921
|
}
|
|
1922
|
+
function withKnownClaudeInput(model) {
|
|
1923
|
+
if (!CLAUDE_KNOWN_MODELS[model?.id] || (Array.isArray(model.input) && model.input.length > 0)) return { ...model };
|
|
1924
|
+
return { ...model, input: ["text", "image"] };
|
|
1925
|
+
}
|
|
1911
1926
|
function withFetchedClaudeMetadata(model) {
|
|
1912
1927
|
const known = CLAUDE_KNOWN_MODELS[model?.id];
|
|
1913
1928
|
if (known === undefined) return withDefaultClaudeReasoning(model);
|
|
1914
|
-
return { ...model, contextWindow: known.contextWindow, maxTokens: known.maxTokens, reasoningEfforts: reasoningEffortsForPreset(known.preset) };
|
|
1929
|
+
return { ...withKnownClaudeInput(model), contextWindow: known.contextWindow, maxTokens: known.maxTokens, reasoningEfforts: reasoningEffortsForPreset(known.preset) };
|
|
1915
1930
|
}
|
|
1916
1931
|
function thinkingPresetOf(model) {
|
|
1917
1932
|
const efforts = model?.reasoningEfforts;
|
|
@@ -1928,7 +1943,7 @@ window.__ModuleLoader__.load({
|
|
|
1928
1943
|
: { ...model, reasoningEfforts: reasoningEffortsForPreset("five") };
|
|
1929
1944
|
}
|
|
1930
1945
|
function withNativeClaudeModel(model) {
|
|
1931
|
-
const next = withDefaultClaudeReasoning(model);
|
|
1946
|
+
const next = withKnownClaudeInput(withDefaultClaudeReasoning(model));
|
|
1932
1947
|
const efforts = next.reasoningEfforts;
|
|
1933
1948
|
const adaptive = efforts !== null && typeof efforts === "object" && !Array.isArray(efforts)
|
|
1934
1949
|
&& ["low", "medium", "high", "max"].every((level) => typeof efforts[level] === "string" && efforts[level].length > 0);
|
|
@@ -2879,7 +2894,10 @@ window.__ModuleLoader__.load({
|
|
|
2879
2894
|
contextWindowPlaceholder: "Uses the provider default",
|
|
2880
2895
|
maxTokens: "Max output tokens",
|
|
2881
2896
|
maxTokensPlaceholder: "Uses the provider default",
|
|
2882
|
-
modelAdvanced: "
|
|
2897
|
+
modelAdvanced: "Model options",
|
|
2898
|
+
modelInputTypes: "Input types",
|
|
2899
|
+
modelInputText: "Text",
|
|
2900
|
+
modelInputImage: "Image",
|
|
2883
2901
|
addModel: "Add model",
|
|
2884
2902
|
removeModel: "Delete model",
|
|
2885
2903
|
modelsEmpty: "No models will be shown in the selector. Unlisted IDs can still be sent directly.",
|
|
@@ -2894,8 +2912,6 @@ window.__ModuleLoader__.load({
|
|
|
2894
2912
|
advancedHint: "Other fields live in settings.yaml; edit that section directly.",
|
|
2895
2913
|
modelCapacityInvalid: "A capacity must be a number, optionally suffixed K or M.",
|
|
2896
2914
|
modelDuplicate: "Each model ID may appear once.",
|
|
2897
|
-
modelContextWindow: "Context window",
|
|
2898
|
-
modelMaxTokens: "Max output tokens",
|
|
2899
2915
|
fetchModels: "Fetch available models",
|
|
2900
2916
|
fetching: "Asking the provider…",
|
|
2901
2917
|
fetchNeedsBaseUrl: "Enter the base URL first, then fetch.",
|
|
@@ -2998,7 +3014,10 @@ window.__ModuleLoader__.load({
|
|
|
2998
3014
|
contextWindowPlaceholder: "使用提供方默认值",
|
|
2999
3015
|
maxTokens: "最大输出 token 数",
|
|
3000
3016
|
maxTokensPlaceholder: "使用提供方默认值",
|
|
3001
|
-
modelAdvanced: "
|
|
3017
|
+
modelAdvanced: "模型选项",
|
|
3018
|
+
modelInputTypes: "输入类型",
|
|
3019
|
+
modelInputText: "文本",
|
|
3020
|
+
modelInputImage: "图片",
|
|
3002
3021
|
addModel: "添加模型",
|
|
3003
3022
|
removeModel: "删除模型",
|
|
3004
3023
|
modelsEmpty: "模型选择器中将不显示任何模型;目录外 ID 仍可直接发送。",
|
|
@@ -3013,8 +3032,6 @@ window.__ModuleLoader__.load({
|
|
|
3013
3032
|
advancedHint: "其余字段在 settings.yaml 中,请直接编辑对应段。",
|
|
3014
3033
|
modelCapacityInvalid: "容量需为数字,可加 K 或 M 后缀。",
|
|
3015
3034
|
modelDuplicate: "每个模型 ID 只能出现一次。",
|
|
3016
|
-
modelContextWindow: "上下文窗口",
|
|
3017
|
-
modelMaxTokens: "最大输出 token",
|
|
3018
3035
|
fetchModels: "获取可用模型",
|
|
3019
3036
|
fetching: "正在询问提供方…",
|
|
3020
3037
|
fetchNeedsBaseUrl: "请先填写 API 地址,再获取。",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mofeng2223/dsh-claude-provider",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "Custom Claude provider support for DeepSeek Harness 0.1.6-alpha.
|
|
3
|
+
"version": "0.4.6",
|
|
4
|
+
"description": "Custom Claude provider support for DeepSeek Harness 0.1.6-alpha.2",
|
|
5
5
|
"author": "mofeng2223",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -60,6 +60,6 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-settings-models": "0.1.6-alpha.
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-settings-models": "0.1.6-alpha.2"
|
|
64
64
|
}
|
|
65
65
|
}
|