codexmate 0.1.1 → 0.1.2
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/cli/openai-bridge-retry.js +17 -9
- package/cli/openai-bridge-runtime.js +14 -1
- package/cli/openai-bridge.js +20 -10
- package/package.json +1 -1
- package/web-ui/app.js +2 -2
- package/web-ui/modules/app.methods.agents.mjs +2 -2
- package/web-ui/modules/app.methods.openclaw-core.mjs +87 -0
- package/web-ui/modules/app.methods.providers.mjs +5 -32
- package/web-ui/modules/i18n/locales/en.mjs +0 -2
- package/web-ui/modules/i18n/locales/ja.mjs +0 -2
- package/web-ui/modules/i18n/locales/vi.mjs +0 -2
- package/web-ui/modules/i18n/locales/zh-tw.mjs +0 -2
- package/web-ui/modules/i18n/locales/zh.mjs +4 -6
- package/web-ui/partials/index/modal-config-template-agents.html +8 -4
- package/web-ui/partials/index/modals-basic.html +0 -26
- package/web-ui/partials/index/panel-config-openclaw.html +42 -14
- package/web-ui/res/web-ui-render.precompiled.js +72 -90
- package/web-ui/styles/layout-shell.css +1 -0
- package/web-ui/styles/modals-core.css +79 -0
- package/web-ui/styles/openclaw-structured.css +117 -71
|
@@ -11,6 +11,27 @@
|
|
|
11
11
|
<button type="button" :class="['segment', { active: configMode === 'openclaw' }]" @click="switchConfigMode('openclaw')">{{ t('tab.config.openclaw') }}</button>
|
|
12
12
|
</div>
|
|
13
13
|
<div class="openclaw-layout">
|
|
14
|
+
<section class="settings-card settings-card--wide openclaw-summary-card" aria-label="OpenClaw 当前摘要">
|
|
15
|
+
<div class="settings-card-body">
|
|
16
|
+
<div class="openclaw-summary-header">
|
|
17
|
+
<div>
|
|
18
|
+
<div class="summary-eyebrow">OPENCLAW</div>
|
|
19
|
+
<div class="summary-title">配置与本地诊断</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="summary-note">配置摘要</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="openclaw-summary-grid">
|
|
24
|
+
<div v-for="item in getOpenclawStatusSummaryItems()" :key="item.key" :class="['openclaw-summary-item', item.tone || '']">
|
|
25
|
+
<div class="summary-item-label">{{ item.label }}</div>
|
|
26
|
+
<div class="summary-item-value">{{ item.value }}</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="openclaw-diagnostic-note">
|
|
30
|
+
本页仅管理配置与工作区文件。
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|
|
34
|
+
|
|
14
35
|
<section class="settings-card settings-card--wide openclaw-workspace-card">
|
|
15
36
|
<div class="settings-card-body">
|
|
16
37
|
<div class="openclaw-tools-grid">
|
|
@@ -18,27 +39,29 @@
|
|
|
18
39
|
<div class="tool-icon">📄</div>
|
|
19
40
|
<div class="tool-content">
|
|
20
41
|
<div class="tool-title">AGENTS.md</div>
|
|
21
|
-
<div class="tool-meta">{{ agentsLoading ? t('config.modelLoading') :
|
|
42
|
+
<div class="tool-meta">{{ agentsLoading ? t('config.modelLoading') : 'Workspace file' }}</div>
|
|
22
43
|
</div>
|
|
23
44
|
<svg class="tool-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
24
45
|
<path d="M9 18l6-6-6-6"/>
|
|
25
46
|
</svg>
|
|
26
47
|
</button>
|
|
27
48
|
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
</
|
|
49
|
+
<button
|
|
50
|
+
v-for="fileName in getOpenclawQuickWorkspaceFiles()"
|
|
51
|
+
:key="fileName"
|
|
52
|
+
type="button"
|
|
53
|
+
class="openclaw-tool-btn"
|
|
54
|
+
@click="openOpenclawQuickWorkspaceFile(fileName)"
|
|
55
|
+
:disabled="loading || !!initError || agentsLoading">
|
|
56
|
+
<div class="tool-icon">📄</div>
|
|
57
|
+
<div class="tool-content">
|
|
58
|
+
<div class="tool-title">{{ fileName }}</div>
|
|
59
|
+
<div class="tool-meta">Workspace file</div>
|
|
39
60
|
</div>
|
|
40
|
-
<
|
|
41
|
-
|
|
61
|
+
<svg class="tool-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
62
|
+
<path d="M9 18l6-6-6-6"/>
|
|
63
|
+
</svg>
|
|
64
|
+
</button>
|
|
42
65
|
</div>
|
|
43
66
|
</div>
|
|
44
67
|
</section>
|
|
@@ -60,6 +83,11 @@
|
|
|
60
83
|
<div class="card-content">
|
|
61
84
|
<div class="card-title">{{ name }}</div>
|
|
62
85
|
<div class="card-subtitle">{{ openclawSubtitle(config) }}</div>
|
|
86
|
+
<div v-if="openclawHasContent(config)" class="openclaw-config-summary-mini">
|
|
87
|
+
<span v-for="item in getOpenclawConfigSummary(config).slice(0, 3)" :key="item.key">
|
|
88
|
+
{{ item.label }}: {{ item.value }}
|
|
89
|
+
</span>
|
|
90
|
+
</div>
|
|
63
91
|
</div>
|
|
64
92
|
</div>
|
|
65
93
|
<div class="card-trailing">
|
|
@@ -2243,6 +2243,32 @@ return function render(_ctx, _cache) {
|
|
|
2243
2243
|
]))
|
|
2244
2244
|
: _createCommentVNode("v-if", true),
|
|
2245
2245
|
_createElementVNode("div", { class: "openclaw-layout" }, [
|
|
2246
|
+
_createElementVNode("section", {
|
|
2247
|
+
class: "settings-card settings-card--wide openclaw-summary-card",
|
|
2248
|
+
"aria-label": "OpenClaw 当前摘要"
|
|
2249
|
+
}, [
|
|
2250
|
+
_createElementVNode("div", { class: "settings-card-body" }, [
|
|
2251
|
+
_createElementVNode("div", { class: "openclaw-summary-header" }, [
|
|
2252
|
+
_createElementVNode("div", null, [
|
|
2253
|
+
_createElementVNode("div", { class: "summary-eyebrow" }, "OPENCLAW"),
|
|
2254
|
+
_createElementVNode("div", { class: "summary-title" }, "配置与本地诊断")
|
|
2255
|
+
]),
|
|
2256
|
+
_createElementVNode("div", { class: "summary-note" }, "配置摘要")
|
|
2257
|
+
]),
|
|
2258
|
+
_createElementVNode("div", { class: "openclaw-summary-grid" }, [
|
|
2259
|
+
(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.getOpenclawStatusSummaryItems(), (item) => {
|
|
2260
|
+
return (_openBlock(), _createElementBlock("div", {
|
|
2261
|
+
key: item.key,
|
|
2262
|
+
class: _normalizeClass(['openclaw-summary-item', item.tone || ''])
|
|
2263
|
+
}, [
|
|
2264
|
+
_createElementVNode("div", { class: "summary-item-label" }, _toDisplayString(item.label), 1 /* TEXT */),
|
|
2265
|
+
_createElementVNode("div", { class: "summary-item-value" }, _toDisplayString(item.value), 1 /* TEXT */)
|
|
2266
|
+
], 2 /* CLASS */))
|
|
2267
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
2268
|
+
]),
|
|
2269
|
+
_createElementVNode("div", { class: "openclaw-diagnostic-note" }, " 本页仅管理配置与工作区文件。 ")
|
|
2270
|
+
])
|
|
2271
|
+
]),
|
|
2246
2272
|
_createElementVNode("section", { class: "settings-card settings-card--wide openclaw-workspace-card" }, [
|
|
2247
2273
|
_createElementVNode("div", { class: "settings-card-body" }, [
|
|
2248
2274
|
_createElementVNode("div", { class: "openclaw-tools-grid" }, [
|
|
@@ -2254,7 +2280,7 @@ return function render(_ctx, _cache) {
|
|
|
2254
2280
|
_createElementVNode("div", { class: "tool-icon" }, "📄"),
|
|
2255
2281
|
_createElementVNode("div", { class: "tool-content" }, [
|
|
2256
2282
|
_createElementVNode("div", { class: "tool-title" }, "AGENTS.md"),
|
|
2257
|
-
_createElementVNode("div", { class: "tool-meta" }, _toDisplayString(_ctx.agentsLoading ? _ctx.t('config.modelLoading') :
|
|
2283
|
+
_createElementVNode("div", { class: "tool-meta" }, _toDisplayString(_ctx.agentsLoading ? _ctx.t('config.modelLoading') : 'Workspace file'), 1 /* TEXT */)
|
|
2258
2284
|
]),
|
|
2259
2285
|
(_openBlock(), _createElementBlock("svg", {
|
|
2260
2286
|
class: "tool-chevron",
|
|
@@ -2266,28 +2292,30 @@ return function render(_ctx, _cache) {
|
|
|
2266
2292
|
_createElementVNode("path", { d: "M9 18l6-6-6-6" })
|
|
2267
2293
|
]))
|
|
2268
2294
|
], 8 /* PROPS */, ["onClick", "disabled"]),
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
[_vModelText, _ctx.openclawWorkspaceFileName]
|
|
2295
|
+
(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.getOpenclawQuickWorkspaceFiles(), (fileName) => {
|
|
2296
|
+
return (_openBlock(), _createElementBlock("button", {
|
|
2297
|
+
key: fileName,
|
|
2298
|
+
type: "button",
|
|
2299
|
+
class: "openclaw-tool-btn",
|
|
2300
|
+
onClick: $event => (_ctx.openOpenclawQuickWorkspaceFile(fileName)),
|
|
2301
|
+
disabled: _ctx.loading || !!_ctx.initError || _ctx.agentsLoading
|
|
2302
|
+
}, [
|
|
2303
|
+
_createElementVNode("div", { class: "tool-icon" }, "📄"),
|
|
2304
|
+
_createElementVNode("div", { class: "tool-content" }, [
|
|
2305
|
+
_createElementVNode("div", { class: "tool-title" }, _toDisplayString(fileName), 1 /* TEXT */),
|
|
2306
|
+
_createElementVNode("div", { class: "tool-meta" }, "Workspace file")
|
|
2282
2307
|
]),
|
|
2283
|
-
|
|
2284
|
-
class: "
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2308
|
+
(_openBlock(), _createElementBlock("svg", {
|
|
2309
|
+
class: "tool-chevron",
|
|
2310
|
+
viewBox: "0 0 24 24",
|
|
2311
|
+
fill: "none",
|
|
2312
|
+
stroke: "currentColor",
|
|
2313
|
+
"stroke-width": "2"
|
|
2314
|
+
}, [
|
|
2315
|
+
_createElementVNode("path", { d: "M9 18l6-6-6-6" })
|
|
2316
|
+
]))
|
|
2317
|
+
], 8 /* PROPS */, ["onClick", "disabled"]))
|
|
2318
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
2291
2319
|
])
|
|
2292
2320
|
])
|
|
2293
2321
|
]),
|
|
@@ -2315,7 +2343,19 @@ return function render(_ctx, _cache) {
|
|
|
2315
2343
|
_createElementVNode("div", { class: "card-icon" }, _toDisplayString(name.charAt(0).toUpperCase()), 1 /* TEXT */),
|
|
2316
2344
|
_createElementVNode("div", { class: "card-content" }, [
|
|
2317
2345
|
_createElementVNode("div", { class: "card-title" }, _toDisplayString(name), 1 /* TEXT */),
|
|
2318
|
-
_createElementVNode("div", { class: "card-subtitle" }, _toDisplayString(_ctx.openclawSubtitle(config)), 1 /* TEXT */)
|
|
2346
|
+
_createElementVNode("div", { class: "card-subtitle" }, _toDisplayString(_ctx.openclawSubtitle(config)), 1 /* TEXT */),
|
|
2347
|
+
(_ctx.openclawHasContent(config))
|
|
2348
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
2349
|
+
key: 0,
|
|
2350
|
+
class: "openclaw-config-summary-mini"
|
|
2351
|
+
}, [
|
|
2352
|
+
(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.getOpenclawConfigSummary(config).slice(0, 3), (item) => {
|
|
2353
|
+
return (_openBlock(), _createElementBlock("span", {
|
|
2354
|
+
key: item.key
|
|
2355
|
+
}, _toDisplayString(item.label) + ": " + _toDisplayString(item.value), 1 /* TEXT */))
|
|
2356
|
+
}), 128 /* KEYED_FRAGMENT */))
|
|
2357
|
+
]))
|
|
2358
|
+
: _createCommentVNode("v-if", true)
|
|
2319
2359
|
])
|
|
2320
2360
|
]),
|
|
2321
2361
|
_createElementVNode("div", { class: "card-trailing" }, [
|
|
@@ -7171,37 +7211,6 @@ return function render(_ctx, _cache) {
|
|
|
7171
7211
|
_createTextVNode(" " + _toDisplayString(_ctx.t('field.useBuiltinTransform')), 1 /* TEXT */)
|
|
7172
7212
|
])
|
|
7173
7213
|
]),
|
|
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),
|
|
7205
7214
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
7206
7215
|
_createElementVNode("button", {
|
|
7207
7216
|
class: "btn btn-cancel",
|
|
@@ -7314,37 +7323,6 @@ return function render(_ctx, _cache) {
|
|
|
7314
7323
|
], 8 /* PROPS */, ["onClick", "title", "aria-label"])
|
|
7315
7324
|
])
|
|
7316
7325
|
]),
|
|
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),
|
|
7348
7326
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
7349
7327
|
_createElementVNode("button", {
|
|
7350
7328
|
class: "btn btn-cancel",
|
|
@@ -9234,8 +9212,10 @@ return function render(_ctx, _cache) {
|
|
|
9234
9212
|
}, _toDisplayString(_ctx.agentsSaving ? (_ctx.agentsDiffVisible ? _ctx.t('common.saving') : _ctx.t('common.previewing')) : (_ctx.agentsDiffVisible ? _ctx.t('common.save') : _ctx.t('common.preview'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
|
|
9235
9213
|
])
|
|
9236
9214
|
]),
|
|
9237
|
-
_createElementVNode("div", {
|
|
9238
|
-
|
|
9215
|
+
_createElementVNode("div", {
|
|
9216
|
+
class: _normalizeClass(["modal-editor-body", { 'modal-editor-body--openclaw-workspace': _ctx.agentsContext === 'openclaw-workspace' }])
|
|
9217
|
+
}, [
|
|
9218
|
+
_createElementVNode("div", { class: "form-group agents-target-file-group" }, [
|
|
9239
9219
|
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.t('modal.agents.targetFile')), 1 /* TEXT */),
|
|
9240
9220
|
_createElementVNode("div", { class: "form-hint" }, [
|
|
9241
9221
|
_createTextVNode(_toDisplayString(_ctx.agentsPath || _ctx.t('common.notLoaded')) + " ", 1 /* TEXT */),
|
|
@@ -9244,8 +9224,10 @@ return function render(_ctx, _cache) {
|
|
|
9244
9224
|
: _createCommentVNode("v-if", true)
|
|
9245
9225
|
])
|
|
9246
9226
|
]),
|
|
9247
|
-
_createElementVNode("div", { class: "form-group" }, [
|
|
9248
|
-
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.
|
|
9227
|
+
_createElementVNode("div", { class: "form-group agents-content-group" }, [
|
|
9228
|
+
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.agentsContext === 'openclaw-workspace'
|
|
9229
|
+
? `${_ctx.agentsWorkspaceFileName || '工作区文件'} 内容`
|
|
9230
|
+
: _ctx.t(_ctx.agentsContext === 'claude-project' ? 'modal.agents.contentLabel.claudeProject' : 'modal.agents.contentLabel')), 1 /* TEXT */),
|
|
9249
9231
|
(!_ctx.agentsLoading && (_ctx.hasAgentsContentChanged() || _ctx.agentsDiffVisible))
|
|
9250
9232
|
? (_openBlock(), _createElementBlock("div", {
|
|
9251
9233
|
key: 0,
|
|
@@ -9343,7 +9325,7 @@ return function render(_ctx, _cache) {
|
|
|
9343
9325
|
}, _toDisplayString(_ctx.t('diff.viewHint.preview')), 1 /* TEXT */))
|
|
9344
9326
|
])
|
|
9345
9327
|
])
|
|
9346
|
-
])
|
|
9328
|
+
], 2 /* CLASS */)
|
|
9347
9329
|
])
|
|
9348
9330
|
], 8 /* PROPS */, ["onClick"]))
|
|
9349
9331
|
: _createCommentVNode("v-if", true),
|
|
@@ -61,6 +61,85 @@
|
|
|
61
61
|
max-height: calc(100vh - 56px);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) {
|
|
65
|
+
width: min(94vw, 1040px);
|
|
66
|
+
max-height: calc(100vh - 40px);
|
|
67
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(250, 246, 241, 0.96) 100%);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .modal-editor-header {
|
|
71
|
+
padding: 18px 20px 12px;
|
|
72
|
+
border-bottom: 1px solid rgba(137, 111, 94, 0.10);
|
|
73
|
+
background: linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(249, 244, 239, 0.82));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .modal-title {
|
|
77
|
+
margin-bottom: 0;
|
|
78
|
+
font-size: 18px;
|
|
79
|
+
letter-spacing: -0.02em;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .modal-header-actions {
|
|
83
|
+
gap: 6px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.agents-modal .modal-editor-body--openclaw-workspace {
|
|
87
|
+
display: grid;
|
|
88
|
+
grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
|
|
89
|
+
gap: 14px;
|
|
90
|
+
padding: 16px 20px 20px;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .agents-target-file-group {
|
|
95
|
+
align-self: start;
|
|
96
|
+
margin-bottom: 0;
|
|
97
|
+
padding: 14px;
|
|
98
|
+
border: 1px solid rgba(137, 111, 94, 0.12);
|
|
99
|
+
border-radius: var(--radius-lg);
|
|
100
|
+
background: rgba(255, 255, 255, 0.72);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .agents-target-file-group .form-hint {
|
|
104
|
+
margin-top: 8px;
|
|
105
|
+
font-family: var(--font-family-mono);
|
|
106
|
+
font-size: 12px;
|
|
107
|
+
line-height: 1.55;
|
|
108
|
+
overflow-wrap: anywhere;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .agents-content-group {
|
|
112
|
+
min-width: 0;
|
|
113
|
+
margin-bottom: 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .agents-content-group > .form-label {
|
|
117
|
+
display: flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: space-between;
|
|
120
|
+
margin-bottom: 8px;
|
|
121
|
+
font-size: 13px;
|
|
122
|
+
font-weight: 600;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .template-editor,
|
|
126
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .agents-diff-editor {
|
|
127
|
+
min-height: min(64vh, 620px);
|
|
128
|
+
max-height: min(68vh, 680px);
|
|
129
|
+
border-radius: var(--radius-lg);
|
|
130
|
+
border-color: rgba(137, 111, 94, 0.14);
|
|
131
|
+
background: rgba(255, 255, 255, 0.88);
|
|
132
|
+
font-size: 13px;
|
|
133
|
+
line-height: 1.62;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.agents-modal:has(.modal-editor-body--openclaw-workspace) .template-editor-warning {
|
|
137
|
+
margin-top: 8px;
|
|
138
|
+
padding: 10px 12px;
|
|
139
|
+
border-radius: var(--radius-md);
|
|
140
|
+
background: rgba(137, 111, 94, 0.06);
|
|
141
|
+
}
|
|
142
|
+
|
|
64
143
|
.modal-editor-header {
|
|
65
144
|
margin-bottom: 0;
|
|
66
145
|
padding: var(--spacing-md) var(--spacing-md) 0;
|