ec-web 0.0.26 → 0.0.28
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/dist/index.js +1 -1
- package/dist/paths.js +4 -0
- package/dist/server.js +35 -20
- package/dist/sources/msg.js +21 -4
- package/dist/sources/role-definitions.js +53 -29
- package/dist/sources/session-codex.js +23 -5
- package/dist/sources/session-ecagent.js +665 -0
- package/dist/sources/session-origin.js +16 -0
- package/dist/sources/session.js +69 -165
- package/dist/sources/system.js +1 -33
- package/dist/sources/triggers.js +1 -1
- package/dist/static/app.js +340 -98
- package/dist/static/basic-settings.js +3 -3
- package/dist/static/index.html +1 -1
- package/dist/static/style.css +37 -0
- package/package.json +1 -1
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
'basicSettings.eckSnapshotsHelp': '可能包含敏感上下文;还需 RESPONSE_SNAPSHOT=1 才会实际写入。',
|
|
84
84
|
'basicSettings.effort': '推理强度',
|
|
85
85
|
'basicSettings.enableRequestUserInput': '允许请求用户输入',
|
|
86
|
-
'basicSettings.enableRequestUserInputHelp': '
|
|
86
|
+
'basicSettings.enableRequestUserInputHelp': '控制 Default 模式的 request_user_input,默认开启。不是权限审批或 request_user_input_async 的总开关;异步问题自动映射为可回答卡片。',
|
|
87
87
|
'basicSettings.excludeDynamicSections': '排除动态区段',
|
|
88
88
|
'basicSettings.excludeDynamicSectionsHelp': '从 Claude 请求上下文中排除动态区段,减少不稳定或不需要的内容。',
|
|
89
89
|
'basicSettings.expandCollapse': '展开或折叠 Base Agent',
|
|
@@ -285,7 +285,7 @@
|
|
|
285
285
|
'basicSettings.eckSnapshotsHelp': 'May contain sensitive context; RESPONSE_SNAPSHOT=1 is also required.',
|
|
286
286
|
'basicSettings.effort': 'Reasoning effort',
|
|
287
287
|
'basicSettings.enableRequestUserInput': 'Allow user input requests',
|
|
288
|
-
'basicSettings.enableRequestUserInputHelp': '
|
|
288
|
+
'basicSettings.enableRequestUserInputHelp': 'Enable request_user_input in Default mode (default: on). Does not disable approvals or request_user_input_async; async questions are bridged to answerable cards.',
|
|
289
289
|
'basicSettings.excludeDynamicSections': 'Exclude dynamic sections',
|
|
290
290
|
'basicSettings.excludeDynamicSectionsHelp': 'Exclude dynamic sections from Claude request context to reduce unstable or unnecessary content.',
|
|
291
291
|
'basicSettings.expandCollapse': 'Expand or collapse Base Agent',
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
function renderIdentity() {
|
|
828
828
|
const daemon = buildFilePreview('daemon');
|
|
829
829
|
const aid = daemon.aid || t('basicSettings.notSet');
|
|
830
|
-
return panelIntro(t('basicSettings.tabs.identity'), t('basicSettings.identityIntro')) + section(t('basicSettings.controlIdentity'), t('basicSettings.readonly'), `<div class="basic-settings-form-grid"><div class="basic-settings-field" data-bs-field data-file="daemon" data-path="aid"><div class="basic-settings-field-label"><span>${htmlEscape(t('basicSettings.daemonAid'))}<span class="basic-settings-path">aid</span></span></div><div class="basic-settings-readonly"><code>${htmlEscape(aid)}</code></div></div>${scalarField({ file: 'daemon', path: 'aun.defaultAidDomain', label: t('basicSettings.defaultAidDomain'), value: getFileValue('daemon', 'aun.defaultAidDomain'), placeholder: 'agentid.cn', help: t('basicSettings.defaultAidDomainHelp') })}</div>`) + section(t('basicSettings.accessControl'), t('basicSettings.daemonScope'), `<div class="basic-settings-form-grid"><div class="basic-settings-field full" data-bs-field data-file="daemon" data-path="owners">${fieldLabel(t('basicSettings.daemonOwners'), 'owners[]', t('basicSettings.ownerHelp'), null)}${ownersMarkup(daemon)}</div>${scalarField({ file: 'daemon', path: 'aun.minEvolVersion', label: t('basicSettings.minEvolVersion'), value: getFileValue('daemon', 'aun.minEvolVersion'), placeholder: '1.6.0', help: t('basicSettings.minEvolVersionHelp') })}${scalarField({ file: 'daemon', path: 'aun.menuTokenRequired', label: t('basicSettings.menuTokenRequired'), type: 'boolean', value: getFileValue('daemon', 'aun.menuTokenRequired'), help: t('basicSettings.menuTokenRequiredHelp') })}${scalarField({ file: 'daemon', path: 'aun.defaultEncrypt', label: t('basicSettings.defaultEncrypt'), type: 'boolean', value: getFileValue('daemon', 'aun.defaultEncrypt') })}${scalarField({ file: 'daemon', path: 'fullaccess.enabled', label: t('basicSettings.fullaccessEnabled'), type: 'boolean', value: daemon.fullaccess?.enabled, help: t('basicSettings.fullaccessHelp') })}</div>`);
|
|
830
|
+
return panelIntro(t('basicSettings.tabs.identity'), t('basicSettings.identityIntro')) + section(t('basicSettings.controlIdentity'), t('basicSettings.readonly'), `<div class="basic-settings-form-grid"><div class="basic-settings-field" data-bs-field data-file="daemon" data-path="aid"><div class="basic-settings-field-label"><span>${htmlEscape(t('basicSettings.daemonAid'))}<span class="basic-settings-path">aid</span></span></div><div class="basic-settings-readonly"><code>${htmlEscape(aid)}</code></div></div>${scalarField({ file: 'daemon', path: 'aun.defaultAidDomain', label: t('basicSettings.defaultAidDomain'), value: getFileValue('daemon', 'aun.defaultAidDomain'), placeholder: 'agentid.cn', help: t('basicSettings.defaultAidDomainHelp') })}</div>`) + section(t('basicSettings.accessControl'), t('basicSettings.daemonScope'), `<div class="basic-settings-form-grid"><div class="basic-settings-field full" data-bs-field data-file="daemon" data-path="owners">${fieldLabel(t('basicSettings.daemonOwners'), 'owners[]', t('basicSettings.ownerHelp'), null)}${ownersMarkup(daemon)}</div>${scalarField({ file: 'daemon', path: 'aun.minEvolVersion', label: t('basicSettings.minEvolVersion'), value: getFileValue('daemon', 'aun.minEvolVersion'), placeholder: '1.6.0', help: t('basicSettings.minEvolVersionHelp') })}${scalarField({ file: 'daemon', path: 'aun.menuTokenRequired', label: t('basicSettings.menuTokenRequired'), type: 'boolean', value: getFileValue('daemon', 'aun.menuTokenRequired'), help: t('basicSettings.menuTokenRequiredHelp') })}${scalarField({ file: 'daemon', path: 'aun.defaultEncrypt', label: t('basicSettings.defaultEncrypt'), type: 'boolean', value: getFileValue('daemon', 'aun.defaultEncrypt') })}${scalarField({ file: 'daemon', path: 'fullaccess.enabled', label: t('basicSettings.fullaccessEnabled'), type: 'boolean', value: daemon.fullaccess?.enabled ?? true, help: t('basicSettings.fullaccessHelp') })}</div>`);
|
|
831
831
|
}
|
|
832
832
|
|
|
833
833
|
function renderRuntime() {
|
package/dist/static/index.html
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
|
|
50
50
|
</nav>
|
|
51
51
|
<span style="flex:1"></span>
|
|
52
|
-
<span class="build-ts" style="font-size:10px;color:var(--dim)" data-i18n-title="common.buildTime" title="构建时间">2026-09-
|
|
52
|
+
<span class="build-ts" style="font-size:10px;color:var(--dim)" data-i18n-title="common.buildTime" title="构建时间">2026-09-24 23:01</span>
|
|
53
53
|
<span id="conn-status" class="conn-status" data-i18n="status.connecting">连接中…</span>
|
|
54
54
|
<button id="lang-btn" class="theme-btn" data-i18n-title="language.buttonTitle" title="切换语言">🌐</button>
|
|
55
55
|
<button id="theme-btn" class="theme-btn" data-i18n-title="theme.buttonTitle" title="主题">🌗</button>
|
package/dist/static/style.css
CHANGED
|
@@ -1100,6 +1100,14 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1100
1100
|
.state-badge.muted { color: var(--magenta); background: var(--bg3); }
|
|
1101
1101
|
.state-badge.stopped { color: var(--dim); background: var(--bg3); }
|
|
1102
1102
|
|
|
1103
|
+
/* Only incomplete bootstrap stages need a lifecycle hint in the name cell. */
|
|
1104
|
+
.lifecycle-badge {
|
|
1105
|
+
display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 4px;
|
|
1106
|
+
color: var(--orange); border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
|
|
1107
|
+
background: color-mix(in srgb, currentColor 10%, transparent);
|
|
1108
|
+
font-size: 10.5px; font-weight: 600; line-height: 1.35; white-space: nowrap; vertical-align: 1px;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1103
1111
|
/* 队列数列 */
|
|
1104
1112
|
.ag-queue-num { color: var(--orange); font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
1105
1113
|
.ag-queue-empty { color: var(--dim); }
|
|
@@ -1240,6 +1248,35 @@ tr.ag-disabled .ag-name { color: var(--dim); }
|
|
|
1240
1248
|
margin-bottom: 12px;
|
|
1241
1249
|
}
|
|
1242
1250
|
.ag-edit-field:last-child { margin-bottom: 0; }
|
|
1251
|
+
.ag-edit-field-label {
|
|
1252
|
+
display: flex;
|
|
1253
|
+
align-items: center;
|
|
1254
|
+
gap: 4px;
|
|
1255
|
+
font-size: 12px;
|
|
1256
|
+
color: var(--dim);
|
|
1257
|
+
font-weight: 600;
|
|
1258
|
+
}
|
|
1259
|
+
.ag-edit-field-label .basic-settings-tip {
|
|
1260
|
+
margin-left: 0;
|
|
1261
|
+
}
|
|
1262
|
+
.ag-edit-fullaccess-row {
|
|
1263
|
+
display: flex;
|
|
1264
|
+
align-items: center;
|
|
1265
|
+
justify-content: space-between;
|
|
1266
|
+
flex-wrap: wrap;
|
|
1267
|
+
gap: 12px;
|
|
1268
|
+
}
|
|
1269
|
+
.ag-edit-fullaccess-switch {
|
|
1270
|
+
margin-left: auto;
|
|
1271
|
+
min-width: 0;
|
|
1272
|
+
}
|
|
1273
|
+
.ag-edit-fullaccess-switch > span:first-child {
|
|
1274
|
+
text-align: right;
|
|
1275
|
+
line-height: 1.45;
|
|
1276
|
+
}
|
|
1277
|
+
.ag-edit-fullaccess-switch .sess-switch-track { flex-shrink: 0; }
|
|
1278
|
+
.ag-edit-fullaccess-switch input:focus-visible + .sess-switch-track { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
1279
|
+
.ag-edit-fullaccess-switch:has(input:disabled) { cursor: not-allowed; opacity: .6; }
|
|
1243
1280
|
.ag-edit-field span {
|
|
1244
1281
|
font-size: 12px;
|
|
1245
1282
|
color: var(--dim);
|