codexmate 0.0.57 → 0.1.1
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.md +2 -2
- package/README.vi.md +1 -0
- package/README.zh.md +2 -2
- package/cli/openai-bridge-retry.js +62 -0
- package/cli/openai-bridge-runtime.js +1819 -0
- package/cli/openai-bridge.js +137 -2048
- package/cli.js +69 -4
- package/package.json +1 -1
- package/web-ui/app.js +12 -2
- package/web-ui/modules/app.methods.agents.mjs +189 -1
- package/web-ui/modules/app.methods.providers.mjs +40 -10
- package/web-ui/modules/app.methods.web-ui-preferences.mjs +28 -1
- package/web-ui/modules/i18n/locales/en.mjs +35 -4
- package/web-ui/modules/i18n/locales/ja.mjs +35 -4
- package/web-ui/modules/i18n/locales/vi.mjs +35 -4
- package/web-ui/modules/i18n/locales/zh-tw.mjs +35 -4
- package/web-ui/modules/i18n/locales/zh.mjs +35 -4
- package/web-ui/partials/index/layout-header.html +8 -25
- package/web-ui/partials/index/modals-basic.html +26 -0
- package/web-ui/partials/index/panel-prompts.html +66 -3
- package/web-ui/res/web-ui-render.precompiled.js +177 -39
- package/web-ui/styles/modals-core.css +173 -0
- package/web-ui/styles/responsive.css +32 -0
|
@@ -362,48 +362,22 @@ return function render(_ctx, _cache) {
|
|
|
362
362
|
? (_openBlock(), _createElementBlock("span", { key: 0 }, _toDisplayString(_ctx.t('common.current', { value: _ctx.opencodeModel })), 1 /* TEXT */))
|
|
363
363
|
: _createCommentVNode("v-if", true)
|
|
364
364
|
])
|
|
365
|
-
], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"])
|
|
366
|
-
], 8 /* PROPS */, ["aria-label"]),
|
|
367
|
-
_createElementVNode("div", {
|
|
368
|
-
class: "side-section",
|
|
369
|
-
role: "navigation",
|
|
370
|
-
"aria-label": _ctx.t('side.prompts')
|
|
371
|
-
}, [
|
|
372
|
-
_createElementVNode("div", { class: "side-section-title" }, _toDisplayString(_ctx.t('side.prompts')), 1 /* TEXT */),
|
|
373
|
-
_createElementVNode("button", {
|
|
374
|
-
id: "side-tab-prompts-agents",
|
|
375
|
-
"data-main-tab": "prompts",
|
|
376
|
-
"data-prompts-sub-tab": "codex",
|
|
377
|
-
"aria-current": _ctx.mainTab === 'prompts' && _ctx.promptsSubTab === 'codex' ? 'page' : null,
|
|
378
|
-
class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('prompts') && _ctx.promptsSubTab === 'codex' }]),
|
|
379
|
-
onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
|
|
380
|
-
onClick: $event => {_ctx.switchPromptsSubTab('codex'); _ctx.onMainTabClick('prompts')}
|
|
381
|
-
}, [
|
|
382
|
-
_createElementVNode("span", {
|
|
383
|
-
class: "side-item-icon",
|
|
384
|
-
"aria-hidden": "true"
|
|
385
|
-
}, "P"),
|
|
386
|
-
_createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts.agents')), 1 /* TEXT */),
|
|
387
|
-
_createElementVNode("div", { class: "side-item-meta" }, [
|
|
388
|
-
_createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.agents.meta')), 1 /* TEXT */)
|
|
389
|
-
])
|
|
390
365
|
], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"]),
|
|
391
366
|
_createElementVNode("button", {
|
|
392
|
-
id: "side-tab-prompts
|
|
367
|
+
id: "side-tab-prompts",
|
|
393
368
|
"data-main-tab": "prompts",
|
|
394
|
-
"
|
|
395
|
-
|
|
396
|
-
class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('prompts') && _ctx.promptsSubTab === 'claude-project' }]),
|
|
369
|
+
"aria-current": _ctx.mainTab === 'prompts' ? 'page' : null,
|
|
370
|
+
class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('prompts') }]),
|
|
397
371
|
onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
|
|
398
|
-
onClick: $event =>
|
|
372
|
+
onClick: $event => (_ctx.onMainTabClick('prompts', $event))
|
|
399
373
|
}, [
|
|
400
374
|
_createElementVNode("span", {
|
|
401
375
|
class: "side-item-icon",
|
|
402
376
|
"aria-hidden": "true"
|
|
403
|
-
}, "
|
|
404
|
-
_createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts
|
|
377
|
+
}, "P"),
|
|
378
|
+
_createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts')), 1 /* TEXT */),
|
|
405
379
|
_createElementVNode("div", { class: "side-item-meta" }, [
|
|
406
|
-
_createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.
|
|
380
|
+
_createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.meta')), 1 /* TEXT */)
|
|
407
381
|
])
|
|
408
382
|
], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"])
|
|
409
383
|
], 8 /* PROPS */, ["aria-label"]),
|
|
@@ -6656,18 +6630,26 @@ return function render(_ctx, _cache) {
|
|
|
6656
6630
|
role: "tabpanel",
|
|
6657
6631
|
"aria-labelledby": "tab-prompts"
|
|
6658
6632
|
}, [
|
|
6659
|
-
_createElementVNode("div", {
|
|
6633
|
+
_createElementVNode("div", {
|
|
6634
|
+
class: "prompts-md-tabs",
|
|
6635
|
+
role: "tablist",
|
|
6636
|
+
"aria-label": _ctx.t('tab.prompts')
|
|
6637
|
+
}, [
|
|
6660
6638
|
_createElementVNode("button", {
|
|
6661
6639
|
type: "button",
|
|
6662
|
-
class: _normalizeClass(['
|
|
6640
|
+
class: _normalizeClass(['prompts-md-tab', { active: _ctx.promptsSubTab === 'codex' }]),
|
|
6641
|
+
role: "tab",
|
|
6642
|
+
"aria-selected": _ctx.promptsSubTab === 'codex',
|
|
6663
6643
|
onClick: $event => (_ctx.switchPromptsSubTab('codex'))
|
|
6664
|
-
}, _toDisplayString(_ctx.t('prompts.subTab.codex')), 11 /* TEXT, CLASS, PROPS */, ["onClick"]),
|
|
6644
|
+
}, _toDisplayString(_ctx.t('prompts.subTab.codex')), 11 /* TEXT, CLASS, PROPS */, ["aria-selected", "onClick"]),
|
|
6665
6645
|
_createElementVNode("button", {
|
|
6666
6646
|
type: "button",
|
|
6667
|
-
class: _normalizeClass(['
|
|
6647
|
+
class: _normalizeClass(['prompts-md-tab', { active: _ctx.promptsSubTab === 'claude-project' }]),
|
|
6648
|
+
role: "tab",
|
|
6649
|
+
"aria-selected": _ctx.promptsSubTab === 'claude-project',
|
|
6668
6650
|
onClick: $event => (_ctx.switchPromptsSubTab('claude-project'))
|
|
6669
|
-
}, _toDisplayString(_ctx.t('prompts.subTab.project')), 11 /* TEXT, CLASS, PROPS */, ["onClick"])
|
|
6670
|
-
]),
|
|
6651
|
+
}, _toDisplayString(_ctx.t('prompts.subTab.project')), 11 /* TEXT, CLASS, PROPS */, ["aria-selected", "onClick"])
|
|
6652
|
+
], 8 /* PROPS */, ["aria-label"]),
|
|
6671
6653
|
(_ctx.promptsSubTab === 'claude-project')
|
|
6672
6654
|
? (_openBlock(), _createElementBlock("div", {
|
|
6673
6655
|
key: 0,
|
|
@@ -6849,6 +6831,100 @@ return function render(_ctx, _cache) {
|
|
|
6849
6831
|
])
|
|
6850
6832
|
])
|
|
6851
6833
|
]),
|
|
6834
|
+
_createElementVNode("div", { class: "prompt-presets-inline-row" }, [
|
|
6835
|
+
_createElementVNode("div", { class: "prompt-presets-inline-group" }, [
|
|
6836
|
+
_createElementVNode("label", { class: "prompt-presets-inline-label" }, _toDisplayString(_ctx.t('prompts.presets.title')), 1 /* TEXT */),
|
|
6837
|
+
_createElementVNode("select", {
|
|
6838
|
+
class: "form-input prompt-presets-select",
|
|
6839
|
+
disabled: _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible || !_ctx.promptPresets.length,
|
|
6840
|
+
title: _ctx.t('prompts.presets.title'),
|
|
6841
|
+
onChange: $event => (_ctx.applyPromptPresetSelection($event))
|
|
6842
|
+
}, [
|
|
6843
|
+
_createElementVNode("option", { value: "" }, _toDisplayString(_ctx.t('prompts.presets.selectPlaceholder')), 1 /* TEXT */),
|
|
6844
|
+
(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.promptPresets, (preset) => {
|
|
6845
|
+
return (_openBlock(), _createElementBlock("option", {
|
|
6846
|
+
key: preset.id,
|
|
6847
|
+
value: preset.id
|
|
6848
|
+
}, _toDisplayString(preset.name), 9 /* TEXT, PROPS */, ["value"]))
|
|
6849
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
6850
|
+
], 40 /* PROPS, NEED_HYDRATION */, ["disabled", "title", "onChange"])
|
|
6851
|
+
]),
|
|
6852
|
+
_createElementVNode("div", { class: "prompt-presets-inline-group prompt-presets-inline-group--save" }, [
|
|
6853
|
+
_withDirectives(_createElementVNode("input", {
|
|
6854
|
+
type: "text",
|
|
6855
|
+
class: "form-input prompt-presets-name-input",
|
|
6856
|
+
"onUpdate:modelValue": $event => ((_ctx.promptPresetNameDraft) = $event),
|
|
6857
|
+
placeholder: _ctx.t('prompts.presets.namePlaceholder'),
|
|
6858
|
+
disabled: _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible,
|
|
6859
|
+
onKeydown: _withKeys(_withModifiers(_ctx.saveCurrentPromptAsPreset, ["prevent"]), ["enter"])
|
|
6860
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "placeholder", "disabled", "onKeydown"]), [
|
|
6861
|
+
[_vModelText, _ctx.promptPresetNameDraft]
|
|
6862
|
+
]),
|
|
6863
|
+
_createElementVNode("button", {
|
|
6864
|
+
type: "button",
|
|
6865
|
+
class: "btn-mini btn-confirm-mini",
|
|
6866
|
+
onClick: _ctx.saveCurrentPromptAsPreset,
|
|
6867
|
+
disabled: _ctx.promptPresetSaving || _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible,
|
|
6868
|
+
title: _ctx.t('prompts.presets.saveCurrent')
|
|
6869
|
+
}, _toDisplayString(_ctx.t('prompts.presets.saveCurrent')), 9 /* TEXT, PROPS */, ["onClick", "disabled", "title"])
|
|
6870
|
+
])
|
|
6871
|
+
]),
|
|
6872
|
+
_createElementVNode("details", { class: "prompt-presets-panel" }, [
|
|
6873
|
+
_createElementVNode("summary", { class: "prompt-presets-summary" }, [
|
|
6874
|
+
_createElementVNode("span", null, _toDisplayString(_ctx.t('prompts.presets.title')), 1 /* TEXT */),
|
|
6875
|
+
_createElementVNode("small", null, _toDisplayString(_ctx.t('prompts.presets.hint')), 1 /* TEXT */)
|
|
6876
|
+
]),
|
|
6877
|
+
_createElementVNode("div", { class: "form-group prompt-presets-body" }, [
|
|
6878
|
+
_createElementVNode("div", { class: "editor-frame prompt-presets-frame" }, [
|
|
6879
|
+
(!_ctx.promptPresets.length)
|
|
6880
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
6881
|
+
key: 0,
|
|
6882
|
+
class: "state-message prompt-presets-empty"
|
|
6883
|
+
}, _toDisplayString(_ctx.t('prompts.presets.empty')), 1 /* TEXT */))
|
|
6884
|
+
: (_openBlock(), _createElementBlock("div", {
|
|
6885
|
+
key: 1,
|
|
6886
|
+
class: "prompt-presets-list"
|
|
6887
|
+
}, [
|
|
6888
|
+
(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.promptPresets, (preset) => {
|
|
6889
|
+
return (_openBlock(), _createElementBlock("article", {
|
|
6890
|
+
key: preset.id,
|
|
6891
|
+
class: "prompt-preset-row"
|
|
6892
|
+
}, [
|
|
6893
|
+
_createElementVNode("div", { class: "prompt-preset-main" }, [
|
|
6894
|
+
_createElementVNode("input", {
|
|
6895
|
+
type: "text",
|
|
6896
|
+
class: "form-input prompt-preset-name",
|
|
6897
|
+
value: _ctx.getPromptPresetRenameDraft(preset),
|
|
6898
|
+
onInput: $event => (_ctx.setPromptPresetRenameDraft(preset.id, $event.target.value)),
|
|
6899
|
+
onKeydown: _withKeys(_withModifiers($event => (_ctx.renamePromptPreset(preset)), ["prevent"]), ["enter"]),
|
|
6900
|
+
"aria-label": _ctx.t('prompts.presets.renameAria')
|
|
6901
|
+
}, null, 40 /* PROPS, NEED_HYDRATION */, ["value", "onInput", "onKeydown", "aria-label"]),
|
|
6902
|
+
_createElementVNode("div", { class: "form-hint" }, _toDisplayString(_ctx.t('prompts.presets.updatedAt', { time: _ctx.formatPromptPresetTime(preset.updatedAt) })), 1 /* TEXT */),
|
|
6903
|
+
_createElementVNode("pre", { class: "prompt-preset-preview" }, _toDisplayString(preset.content), 1 /* TEXT */)
|
|
6904
|
+
]),
|
|
6905
|
+
_createElementVNode("div", { class: "prompts-editor-actions prompt-preset-actions" }, [
|
|
6906
|
+
_createElementVNode("button", {
|
|
6907
|
+
type: "button",
|
|
6908
|
+
class: "btn-mini",
|
|
6909
|
+
onClick: $event => (_ctx.renamePromptPreset(preset))
|
|
6910
|
+
}, _toDisplayString(_ctx.t('common.save')), 9 /* TEXT, PROPS */, ["onClick"]),
|
|
6911
|
+
_createElementVNode("button", {
|
|
6912
|
+
type: "button",
|
|
6913
|
+
class: "btn-mini",
|
|
6914
|
+
onClick: $event => (_ctx.applyPromptPresetToEditor(preset))
|
|
6915
|
+
}, _toDisplayString(_ctx.t('common.paste')), 9 /* TEXT, PROPS */, ["onClick"]),
|
|
6916
|
+
_createElementVNode("button", {
|
|
6917
|
+
type: "button",
|
|
6918
|
+
class: "btn-mini btn-danger-mini",
|
|
6919
|
+
onClick: $event => (_ctx.deletePromptPreset(preset))
|
|
6920
|
+
}, _toDisplayString(_ctx.t('common.delete')), 9 /* TEXT, PROPS */, ["onClick"])
|
|
6921
|
+
])
|
|
6922
|
+
]))
|
|
6923
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
6924
|
+
]))
|
|
6925
|
+
])
|
|
6926
|
+
])
|
|
6927
|
+
]),
|
|
6852
6928
|
_createElementVNode("div", { class: "form-group" }, [
|
|
6853
6929
|
(_ctx.agentsDiffVisible)
|
|
6854
6930
|
? (_openBlock(), _createElementBlock("div", { key: 0 }, [
|
|
@@ -7095,6 +7171,37 @@ return function render(_ctx, _cache) {
|
|
|
7095
7171
|
_createTextVNode(" " + _toDisplayString(_ctx.t('field.useBuiltinTransform')), 1 /* TEXT */)
|
|
7096
7172
|
])
|
|
7097
7173
|
]),
|
|
7174
|
+
(_ctx.newProvider.useTransform)
|
|
7175
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
7176
|
+
key: 0,
|
|
7177
|
+
class: "form-group"
|
|
7178
|
+
}, [
|
|
7179
|
+
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.t('field.transformMaxRetries')), 1 /* TEXT */),
|
|
7180
|
+
_withDirectives(_createElementVNode("input", {
|
|
7181
|
+
"onUpdate:modelValue": $event => ((_ctx.newProvider.openaiBridgeMaxRetries) = $event),
|
|
7182
|
+
type: "number",
|
|
7183
|
+
min: "2",
|
|
7184
|
+
max: "10",
|
|
7185
|
+
step: "1",
|
|
7186
|
+
class: _normalizeClass(['form-input', { invalid: !!_ctx.providerFieldError('add', 'openaiBridgeMaxRetries') }]),
|
|
7187
|
+
onBlur: $event => (_ctx.normalizeProviderDraft('add'))
|
|
7188
|
+
}, null, 42 /* CLASS, PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "onBlur"]), [
|
|
7189
|
+
[
|
|
7190
|
+
_vModelText,
|
|
7191
|
+
_ctx.newProvider.openaiBridgeMaxRetries,
|
|
7192
|
+
void 0,
|
|
7193
|
+
{ number: true }
|
|
7194
|
+
]
|
|
7195
|
+
]),
|
|
7196
|
+
_createElementVNode("div", { class: "form-hint" }, _toDisplayString(_ctx.t('hint.transformMaxRetries')), 1 /* TEXT */),
|
|
7197
|
+
(_ctx.providerFieldError('add', 'openaiBridgeMaxRetries'))
|
|
7198
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
7199
|
+
key: 0,
|
|
7200
|
+
class: "form-hint form-error"
|
|
7201
|
+
}, _toDisplayString(_ctx.providerFieldError('add', 'openaiBridgeMaxRetries')), 1 /* TEXT */))
|
|
7202
|
+
: _createCommentVNode("v-if", true)
|
|
7203
|
+
]))
|
|
7204
|
+
: _createCommentVNode("v-if", true),
|
|
7098
7205
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
7099
7206
|
_createElementVNode("button", {
|
|
7100
7207
|
class: "btn btn-cancel",
|
|
@@ -7207,6 +7314,37 @@ return function render(_ctx, _cache) {
|
|
|
7207
7314
|
], 8 /* PROPS */, ["onClick", "title", "aria-label"])
|
|
7208
7315
|
])
|
|
7209
7316
|
]),
|
|
7317
|
+
(_ctx.editingProvider.useTransform)
|
|
7318
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
7319
|
+
key: 0,
|
|
7320
|
+
class: "form-group"
|
|
7321
|
+
}, [
|
|
7322
|
+
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.t('field.transformMaxRetries')), 1 /* TEXT */),
|
|
7323
|
+
_withDirectives(_createElementVNode("input", {
|
|
7324
|
+
"onUpdate:modelValue": $event => ((_ctx.editingProvider.openaiBridgeMaxRetries) = $event),
|
|
7325
|
+
type: "number",
|
|
7326
|
+
min: "2",
|
|
7327
|
+
max: "10",
|
|
7328
|
+
step: "1",
|
|
7329
|
+
class: _normalizeClass(['form-input', { invalid: !!_ctx.providerFieldError('edit', 'openaiBridgeMaxRetries') }]),
|
|
7330
|
+
onBlur: $event => (_ctx.normalizeProviderDraft('edit'))
|
|
7331
|
+
}, null, 42 /* CLASS, PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "onBlur"]), [
|
|
7332
|
+
[
|
|
7333
|
+
_vModelText,
|
|
7334
|
+
_ctx.editingProvider.openaiBridgeMaxRetries,
|
|
7335
|
+
void 0,
|
|
7336
|
+
{ number: true }
|
|
7337
|
+
]
|
|
7338
|
+
]),
|
|
7339
|
+
_createElementVNode("div", { class: "form-hint" }, _toDisplayString(_ctx.t('hint.transformMaxRetries')), 1 /* TEXT */),
|
|
7340
|
+
(_ctx.providerFieldError('edit', 'openaiBridgeMaxRetries'))
|
|
7341
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
7342
|
+
key: 0,
|
|
7343
|
+
class: "form-hint form-error"
|
|
7344
|
+
}, _toDisplayString(_ctx.providerFieldError('edit', 'openaiBridgeMaxRetries')), 1 /* TEXT */))
|
|
7345
|
+
: _createCommentVNode("v-if", true)
|
|
7346
|
+
]))
|
|
7347
|
+
: _createCommentVNode("v-if", true),
|
|
7210
7348
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
7211
7349
|
_createElementVNode("button", {
|
|
7212
7350
|
class: "btn btn-cancel",
|
|
@@ -693,3 +693,176 @@
|
|
|
693
693
|
from { opacity: 0; transform: translateY(-8px); }
|
|
694
694
|
to { opacity: 1; transform: translateY(0); }
|
|
695
695
|
}
|
|
696
|
+
|
|
697
|
+
.prompts-md-tabs {
|
|
698
|
+
display: inline-flex;
|
|
699
|
+
align-items: center;
|
|
700
|
+
gap: 2px;
|
|
701
|
+
margin: 0 0 12px;
|
|
702
|
+
border-bottom: 1px solid var(--color-border-soft);
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
.prompts-md-tab {
|
|
706
|
+
padding: 7px 10px 8px;
|
|
707
|
+
border: 0;
|
|
708
|
+
border-bottom: 2px solid transparent;
|
|
709
|
+
background: transparent;
|
|
710
|
+
box-shadow: none;
|
|
711
|
+
color: var(--color-text-secondary);
|
|
712
|
+
cursor: pointer;
|
|
713
|
+
font-size: var(--font-size-body);
|
|
714
|
+
font-weight: var(--font-weight-secondary);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
.prompts-md-tab:hover {
|
|
718
|
+
color: var(--color-text-primary);
|
|
719
|
+
background: transparent;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
.prompts-md-tab.active {
|
|
723
|
+
color: var(--color-brand-dark);
|
|
724
|
+
border-bottom-color: var(--color-brand);
|
|
725
|
+
background: transparent;
|
|
726
|
+
box-shadow: none;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.prompt-presets-inline-row {
|
|
730
|
+
display: flex;
|
|
731
|
+
align-items: center;
|
|
732
|
+
gap: 10px;
|
|
733
|
+
margin: 8px 0 12px;
|
|
734
|
+
padding: 10px 12px;
|
|
735
|
+
border: 1px solid var(--color-border-soft);
|
|
736
|
+
border-radius: var(--radius-md);
|
|
737
|
+
background: var(--color-bg-card);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
.prompt-presets-inline-group {
|
|
741
|
+
display: flex;
|
|
742
|
+
align-items: center;
|
|
743
|
+
gap: 8px;
|
|
744
|
+
min-width: 0;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
.prompt-presets-inline-group--save {
|
|
748
|
+
flex: 1;
|
|
749
|
+
justify-content: flex-end;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
.prompt-presets-inline-label {
|
|
753
|
+
flex-shrink: 0;
|
|
754
|
+
color: var(--color-text-secondary);
|
|
755
|
+
font-size: var(--font-size-small);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
.prompt-presets-select {
|
|
759
|
+
min-width: 180px;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
.prompt-presets-panel {
|
|
763
|
+
margin: 12px 0;
|
|
764
|
+
border: 1px solid var(--color-border-soft);
|
|
765
|
+
border-radius: var(--radius-md);
|
|
766
|
+
background: var(--color-bg-card);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
.prompt-presets-summary {
|
|
770
|
+
display: flex;
|
|
771
|
+
align-items: baseline;
|
|
772
|
+
gap: 10px;
|
|
773
|
+
padding: 10px 12px;
|
|
774
|
+
cursor: pointer;
|
|
775
|
+
color: var(--color-text-primary);
|
|
776
|
+
font-weight: var(--font-weight-primary);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
.prompt-presets-summary small {
|
|
780
|
+
color: var(--color-text-secondary);
|
|
781
|
+
font-weight: 400;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
.prompt-presets-toolbar {
|
|
785
|
+
padding: 0 12px 10px;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
.prompt-presets-save-row {
|
|
789
|
+
gap: 8px;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.prompt-presets-name-input {
|
|
793
|
+
width: min(340px, 34vw);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
.prompt-presets-body {
|
|
797
|
+
min-height: 0;
|
|
798
|
+
margin: 0;
|
|
799
|
+
padding: 0 12px 12px;
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
.prompt-presets-frame {
|
|
803
|
+
max-height: 320px;
|
|
804
|
+
min-height: 0;
|
|
805
|
+
overflow: auto;
|
|
806
|
+
background: var(--color-bg-card);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
.prompt-presets-empty {
|
|
810
|
+
margin: 0;
|
|
811
|
+
min-height: 120px;
|
|
812
|
+
display: flex;
|
|
813
|
+
align-items: center;
|
|
814
|
+
justify-content: center;
|
|
815
|
+
border: none;
|
|
816
|
+
background: transparent;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
.prompt-presets-list {
|
|
820
|
+
display: flex;
|
|
821
|
+
flex-direction: column;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
.prompt-preset-row {
|
|
825
|
+
display: grid;
|
|
826
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
827
|
+
gap: 12px;
|
|
828
|
+
padding: 12px;
|
|
829
|
+
border-bottom: 1px solid var(--color-border-soft);
|
|
830
|
+
background: transparent;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
.prompt-preset-row:last-child {
|
|
834
|
+
border-bottom: none;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
.prompt-preset-main {
|
|
838
|
+
min-width: 0;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
.prompt-preset-name {
|
|
842
|
+
font-weight: var(--font-weight-primary);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
.prompt-preset-preview {
|
|
846
|
+
max-height: 180px;
|
|
847
|
+
margin: 8px 0 0;
|
|
848
|
+
padding: 10px;
|
|
849
|
+
overflow: auto;
|
|
850
|
+
white-space: pre-wrap;
|
|
851
|
+
word-break: break-word;
|
|
852
|
+
border-radius: var(--radius-sm);
|
|
853
|
+
background: var(--color-bg-subtle);
|
|
854
|
+
color: var(--color-text-secondary);
|
|
855
|
+
font-family: var(--font-family-mono);
|
|
856
|
+
font-size: 11px;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
.prompt-preset-actions {
|
|
860
|
+
align-self: start;
|
|
861
|
+
flex-wrap: wrap;
|
|
862
|
+
justify-content: flex-end;
|
|
863
|
+
max-width: 260px;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
.btn-danger-mini {
|
|
867
|
+
color: var(--color-danger);
|
|
868
|
+
}
|
|
@@ -199,6 +199,22 @@ textarea:focus-visible {
|
|
|
199
199
|
flex-wrap: wrap;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
+
.prompt-presets-inline-row {
|
|
203
|
+
align-items: stretch;
|
|
204
|
+
flex-direction: column;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.prompt-presets-inline-group,
|
|
208
|
+
.prompt-presets-inline-group--save {
|
|
209
|
+
width: 100%;
|
|
210
|
+
justify-content: flex-start;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.prompt-presets-select,
|
|
214
|
+
.prompt-presets-name-input {
|
|
215
|
+
width: 100%;
|
|
216
|
+
}
|
|
217
|
+
|
|
202
218
|
.template-editor,
|
|
203
219
|
.agents-diff-editor {
|
|
204
220
|
min-height: min(50vh, 400px);
|
|
@@ -604,6 +620,22 @@ textarea:focus-visible {
|
|
|
604
620
|
width: 100%;
|
|
605
621
|
flex-wrap: wrap;
|
|
606
622
|
}
|
|
623
|
+
|
|
624
|
+
.prompt-presets-inline-row {
|
|
625
|
+
align-items: stretch;
|
|
626
|
+
flex-direction: column;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.prompt-presets-inline-group,
|
|
630
|
+
.prompt-presets-inline-group--save {
|
|
631
|
+
width: 100%;
|
|
632
|
+
justify-content: flex-start;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.prompt-presets-select,
|
|
636
|
+
.prompt-presets-name-input {
|
|
637
|
+
width: 100%;
|
|
638
|
+
}
|
|
607
639
|
}
|
|
608
640
|
|
|
609
641
|
@media (max-width: 820px) {
|