agentworkshop 0.7.23 → 0.7.24
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/0jKrzLuM.js +19 -0
- package/.output/public/_nuxt/{Cor9siSf.js → 6PZPfFcO.js} +1 -1
- package/.output/public/_nuxt/BAfp6tmu.js +14 -0
- package/.output/public/_nuxt/{B-xskWta.js → BCJFMBQ6.js} +1 -1
- package/.output/public/_nuxt/{DNxVTfhe.js → BMb80_tm.js} +1 -1
- package/.output/public/_nuxt/{n3vMFfrv.js → Bc-_IsBP.js} +3 -3
- package/.output/public/_nuxt/BvNJUu3s.js +1 -0
- package/.output/public/_nuxt/C1CSiSBN.js +1 -0
- package/.output/public/_nuxt/CAGL7TNK.js +1 -0
- package/.output/public/_nuxt/{ed5qX-x5.js → CDLv-n51.js} +1 -1
- package/.output/public/_nuxt/CJviSvm-.js +1 -0
- package/.output/public/_nuxt/CLZWFhZC.js +1 -0
- package/.output/public/_nuxt/{Cr9DkD1d.js → CYzpZzB_.js} +1 -1
- package/.output/public/_nuxt/Cb3SnTM8.js +1 -0
- package/.output/public/_nuxt/CjXIpPMR.js +1 -0
- package/.output/public/_nuxt/CmHzfVc5.js +3 -0
- package/.output/public/_nuxt/Cn3J3NXR.js +23 -0
- package/.output/public/_nuxt/Coik560n.js +1 -0
- package/.output/public/_nuxt/{DA4lxCWC2.js → Ct68Z0232.js} +1 -1
- package/.output/public/_nuxt/CuVGPuP1.js +1 -0
- package/.output/public/_nuxt/CxY6LfeN.js +1 -0
- package/.output/public/_nuxt/{CfVAr2nf.js → Cz9gD2Yo.js} +1 -1
- package/.output/public/_nuxt/D6HDb-vN2.js +1 -0
- package/.output/public/_nuxt/{E88a-JCG.js → DGAOugLt.js} +1 -1
- package/.output/public/_nuxt/DKHcFE1i.js +1 -0
- package/.output/public/_nuxt/{BxtpDtzC.js → DNQF_TXX.js} +1 -1
- package/.output/public/_nuxt/DSa2O56y.js +1 -0
- package/.output/public/_nuxt/DUToq-k_.js +1 -0
- package/.output/public/_nuxt/Dfe8vXdG.js +1 -0
- package/.output/public/_nuxt/{CEHmSufQ.js → Djir5rSD.js} +1 -1
- package/.output/public/_nuxt/DjtE7AYt.js +1 -0
- package/.output/public/_nuxt/{BBwMH_hG.js → DoAlYsiF.js} +1 -1
- package/.output/public/_nuxt/{DWcEk1ur2.js → DvgKXPgu2.js} +1 -1
- package/.output/public/_nuxt/JOwsShod.js +2 -0
- package/.output/public/_nuxt/X6IraCTB.js +1 -0
- package/.output/public/_nuxt/{CYBq3kS7.js → b50gYVZl.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/024de5f7-6a10-4f53-82ab-bc65f3ec9e35.json +1 -0
- package/.output/public/_nuxt/entry.AZM1Culo.css +1 -0
- package/.output/public/_nuxt/monitor.B--1dPzs.css +1 -0
- package/.output/public/_nuxt/permissions.B1pjGChZ.css +1 -0
- package/.output/public/_nuxt/plugins.DpCuwaJt.css +1 -0
- package/.output/public/_nuxt/tokens.xRb1fSPU.css +1 -0
- package/.output/public/_nuxt/users.DuAt_Zwf.css +1 -0
- package/.output/public/_nuxt/workshop.BJg84pOK.css +1 -0
- package/.output/server/chunks/_/nitro.mjs +793 -814
- package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs → OmpTerminalPanel-Cw_Vw9oO.mjs} +3 -3
- package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs.map → OmpTerminalPanel-Cw_Vw9oO.mjs.map} +1 -1
- package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs → _wsId_-D38Vx6Ky.mjs} +8 -10
- package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs.map → _wsId_-D38Vx6Ky.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents--6bzGtES.mjs → agents-GnmUGZir.mjs} +6 -8
- package/.output/server/chunks/build/agents-GnmUGZir.mjs.map +1 -0
- package/.output/server/chunks/build/button-DEcZFcqN.mjs +1 -1
- package/.output/server/chunks/build/{card-CCPQoKlh.mjs → card-Dipvaykh.mjs} +4 -4
- package/.output/server/chunks/build/{card-CCPQoKlh.mjs.map → card-Dipvaykh.mjs.map} +1 -1
- package/.output/server/chunks/build/{channel-templates-C1Bb-U75.mjs → channel-templates-B4z6v8Z5.mjs} +4 -6
- package/.output/server/chunks/build/channel-templates-B4z6v8Z5.mjs.map +1 -0
- package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs → checkbox-dzcpU_Cd.mjs} +2 -2
- package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs.map → checkbox-dzcpU_Cd.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-DdV642BY.mjs → default-CLf5m0NE.mjs} +2 -3
- package/.output/server/chunks/build/{default-DdV642BY.mjs.map → default-CLf5m0NE.mjs.map} +1 -1
- package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +1 -1
- package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs → input-number-Bd55elNN.mjs} +3 -3
- package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs.map → input-number-Bd55elNN.mjs.map} +1 -1
- package/.output/server/chunks/build/{input-DxDqeyQW.mjs → input-sf_BT6o6.mjs} +553 -5
- package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +1 -0
- package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
- package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
- package/.output/server/chunks/build/{monitor-miqq9xHB.mjs → monitor-Cp4V-H2n.mjs} +70 -192
- package/.output/server/chunks/build/monitor-Cp4V-H2n.mjs.map +1 -0
- package/.output/server/chunks/build/{pages-D9tOoJsf.mjs → pages-Dc2H1QFu.mjs} +2 -3
- package/.output/server/chunks/build/pages-Dc2H1QFu.mjs.map +1 -0
- package/.output/server/chunks/build/{permissions-CxEgXic0.mjs → permissions-BTRW2CVd.mjs} +288 -194
- package/.output/server/chunks/build/permissions-BTRW2CVd.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs → plugins-DZR0T4Mh.mjs} +17 -17
- package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs.map → plugins-DZR0T4Mh.mjs.map} +1 -1
- package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +1 -1
- package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs → segmented-LPPREMtZ.mjs} +336 -5
- package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs.map → segmented-LPPREMtZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-BPBll_7K.mjs → settings-UfGyDgM7.mjs} +6 -8
- package/.output/server/chunks/build/settings-UfGyDgM7.mjs.map +1 -0
- package/.output/server/chunks/build/space-CCBYAkXt.mjs +1 -1
- package/.output/server/chunks/build/switch-CelRXpcy.mjs +1 -1
- package/.output/server/chunks/build/{table-BtksyDlQ.mjs → table-Cswq-l2r.mjs} +5 -5
- package/.output/server/chunks/build/{table-BtksyDlQ.mjs.map → table-Cswq-l2r.mjs.map} +1 -1
- package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs → tabs-BM3tAh_J.mjs} +2 -2
- package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs.map → tabs-BM3tAh_J.mjs.map} +1 -1
- package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs → tag-NO9jEqKy.mjs} +3 -3
- package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs.map → tag-NO9jEqKy.mjs.map} +1 -1
- package/.output/server/chunks/build/{teams-DD8ZXTKL.mjs → teams-Cbg27MWW.mjs} +4 -6
- package/.output/server/chunks/build/teams-Cbg27MWW.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-Dxnuw96_.mjs → tokens-Bmm6rDfj.mjs} +296 -200
- package/.output/server/chunks/build/tokens-Bmm6rDfj.mjs.map +1 -0
- package/.output/server/chunks/build/{users-D6RNylrW.mjs → users-B50HHrfi.mjs} +12 -13
- package/.output/server/chunks/build/users-B50HHrfi.mjs.map +1 -0
- package/.output/server/chunks/build/{workshop-CTcYDq2i.mjs → workshop-81xhz368.mjs} +21 -22
- package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +40 -16
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/app/app.vue +7 -0
- package/app/assets/css/main.css +12 -1
- package/app/pages/monitor.vue +56 -68
- package/app/pages/permissions/index.vue +86 -82
- package/app/pages/plugins/index.vue +12 -7
- package/app/pages/tokens.vue +94 -96
- package/app/pages/users.vue +10 -18
- package/app/pages/workshop/index.vue +34 -5
- package/i18n/locales/en.ts +1 -1
- package/i18n/locales/zh-CN.ts +1 -1
- package/package.json +1 -1
- package/scripts/_dbg-logs-ui-e2e.py +3 -2
- package/scripts/_dbg-ui-survey.py +52 -0
- package/server/data/dcw-lines.json +7 -0
- package/server/data/dcw-products.json +7 -0
- package/server/data/dcw-recipes.json +22 -0
- package/server/data/dcw-rollback.json +73 -10
- package/server/data/dcw-runs.json +27 -27
- package/server/data/dcw-writes.json +24 -0
- package/server/data/dcws.json +244 -216
- package/.output/public/_nuxt/BJbhwS5o.js +0 -1
- package/.output/public/_nuxt/BWC4HQHQ.js +0 -1
- package/.output/public/_nuxt/BbZAzXjZ2.js +0 -1
- package/.output/public/_nuxt/BgOhoDTI.js +0 -1
- package/.output/public/_nuxt/Bo8t5fkJ.js +0 -1
- package/.output/public/_nuxt/BuiGDfMB.js +0 -1
- package/.output/public/_nuxt/BxPPAkGA.js +0 -3
- package/.output/public/_nuxt/C53drffV.js +0 -1
- package/.output/public/_nuxt/CcwJ2mrD2.js +0 -1
- package/.output/public/_nuxt/DTYBfjRY.js +0 -1
- package/.output/public/_nuxt/DVoWWlUW.js +0 -1
- package/.output/public/_nuxt/Dc32T41C.js +0 -1
- package/.output/public/_nuxt/Dhqra7NB.js +0 -1
- package/.output/public/_nuxt/DlRO_q5L.js +0 -1
- package/.output/public/_nuxt/DsUUYP292.js +0 -1
- package/.output/public/_nuxt/Dsdy4Ua-.js +0 -1
- package/.output/public/_nuxt/DtzZqC0z.js +0 -1
- package/.output/public/_nuxt/Ko9mMsJj.js +0 -14
- package/.output/public/_nuxt/RzXYI9FM.js +0 -23
- package/.output/public/_nuxt/UtviM1bg.js +0 -1
- package/.output/public/_nuxt/bAFueD6a.js +0 -1
- package/.output/public/_nuxt/builds/meta/1adc96e0-8bbd-4a79-ac7e-b6952556fef8.json +0 -1
- package/.output/public/_nuxt/dbi5bHkY.js +0 -2
- package/.output/public/_nuxt/eHYnGew0.js +0 -19
- package/.output/public/_nuxt/entry.OR_psZHp.css +0 -1
- package/.output/public/_nuxt/jyQyulh-.js +0 -1
- package/.output/public/_nuxt/monitor.CmwpEUCI.css +0 -1
- package/.output/public/_nuxt/permissions.DTRtZeTw.css +0 -1
- package/.output/public/_nuxt/plugins.BcSEwwGb.css +0 -1
- package/.output/public/_nuxt/tokens.BVXU1jOK.css +0 -1
- package/.output/public/_nuxt/users.D8lcLE62.css +0 -1
- package/.output/public/_nuxt/workshop.CbymC2LY.css +0 -1
- package/.output/public/_nuxt/zVkqCZ78.js +0 -1
- package/.output/server/chunks/build/Col-biaNnEPf.mjs +0 -338
- package/.output/server/chunks/build/Col-biaNnEPf.mjs.map +0 -1
- package/.output/server/chunks/build/agents--6bzGtES.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-C1Bb-U75.mjs.map +0 -1
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +0 -554
- package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +0 -1
- package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +0 -1
- package/.output/server/chunks/build/monitor-miqq9xHB.mjs.map +0 -1
- package/.output/server/chunks/build/pages-D9tOoJsf.mjs.map +0 -1
- package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +0 -1
- package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +0 -1
- package/.output/server/chunks/build/teams-DD8ZXTKL.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-Dxnuw96_.mjs.map +0 -1
- package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +0 -27
- package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs.map +0 -1
- package/.output/server/chunks/build/users-D6RNylrW.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-CTcYDq2i.mjs.map +0 -1
- /package/.output/public/_nuxt/{CNs_Ozdc.js → CNs_Ozdc2.js} +0 -0
- /package/.output/public/_nuxt/{Cno6kYiO.js → Cno6kYiO2.js} +0 -0
- /package/.output/public/_nuxt/{DAR70Lf5.js → DAR70Lf52.js} +0 -0
- /package/.output/public/_nuxt/{ORt9oDIy2.js → ORt9oDIy.js} +0 -0
package/app/app.vue
CHANGED
|
@@ -8,6 +8,13 @@ const store = useAppStore()
|
|
|
8
8
|
const config = useRuntimeConfig().public
|
|
9
9
|
const runtimeCfg = useRuntimeConfigStore()
|
|
10
10
|
|
|
11
|
+
// SSR 首帧 antd token 跟随服务端 theme.mode:store 默认深色,若服务端配置为浅色而客户端
|
|
12
|
+
// 挂载后才翻转,cssinjs 的 hash 相同样式不会重新注入,浅色下组件会缺 padding/格线等基础样式。
|
|
13
|
+
const site = useSiteConfig()
|
|
14
|
+
if (import.meta.server) {
|
|
15
|
+
store.isDark = (site.themeMode ?? 'dark') !== 'light'
|
|
16
|
+
}
|
|
17
|
+
|
|
11
18
|
const antdLocale = computed(() => (locale.value.startsWith('en') ? enUS : zhCN))
|
|
12
19
|
|
|
13
20
|
/** 将 hex 向白混合(lighten),供暗色模式强调色提亮 */
|
package/app/assets/css/main.css
CHANGED
|
@@ -1219,7 +1219,7 @@ ul.task-list {
|
|
|
1219
1219
|
border-radius: var(--radius-chip);
|
|
1220
1220
|
}
|
|
1221
1221
|
|
|
1222
|
-
/* 表格:表头 Inter 小标(caption-uppercase),行线 hairline */
|
|
1222
|
+
/* 表格:表头 Inter 小标(caption-uppercase),行线 hairline;禁止竖向格线(操作台横向扫描语言) */
|
|
1223
1223
|
.ant-table {
|
|
1224
1224
|
background: transparent;
|
|
1225
1225
|
}
|
|
@@ -1234,14 +1234,25 @@ ul.task-list {
|
|
|
1234
1234
|
border-bottom: 1px solid var(--line-strong) !important;
|
|
1235
1235
|
}
|
|
1236
1236
|
|
|
1237
|
+
.ant-table .ant-table-thead > tr > th,
|
|
1238
|
+
.ant-table .ant-table-tbody > tr > td {
|
|
1239
|
+
border-inline-end: none !important;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1237
1242
|
.ant-table .ant-table-tbody > tr > td {
|
|
1238
1243
|
border-bottom-color: var(--divider-hair);
|
|
1244
|
+
font-variant-numeric: tabular-nums;
|
|
1239
1245
|
}
|
|
1240
1246
|
|
|
1241
1247
|
.ant-table .ant-table-tbody > tr:hover > td {
|
|
1242
1248
|
background: var(--hover-tint) !important;
|
|
1243
1249
|
}
|
|
1244
1250
|
|
|
1251
|
+
/* 空态:收敛默认内边距,与玻璃卡同族 */
|
|
1252
|
+
.ant-table .ant-table-placeholder {
|
|
1253
|
+
background: transparent;
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1245
1256
|
/* 描述列表:标签 Inter 小标、值等宽 */
|
|
1246
1257
|
.ant-descriptions .ant-descriptions-item-label {
|
|
1247
1258
|
font-family: var(--font-body);
|
package/app/pages/monitor.vue
CHANGED
|
@@ -293,73 +293,50 @@ const processColumns = computed(() => [
|
|
|
293
293
|
</a-card>
|
|
294
294
|
|
|
295
295
|
<template v-else>
|
|
296
|
-
<!-- 概要统计 -->
|
|
297
|
-
<
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
</
|
|
313
|
-
</a-
|
|
314
|
-
<a-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
<
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
>
|
|
341
|
-
+{{ snapshot?.counts.orphanProcesses }} {{ t('monitor.orphan') }}
|
|
342
|
-
</span>
|
|
343
|
-
</p>
|
|
344
|
-
</a-card>
|
|
345
|
-
</a-col>
|
|
346
|
-
<a-col
|
|
347
|
-
:xs="12"
|
|
348
|
-
:md="6"
|
|
349
|
-
>
|
|
350
|
-
<a-card class="aw-panel stat">
|
|
351
|
-
<p class="stat-label">
|
|
352
|
-
{{ t('monitor.server') }}
|
|
353
|
-
</p>
|
|
354
|
-
<p class="stat-value aw-mono small">
|
|
355
|
-
PID {{ snapshot?.serverPid ?? '–' }} · {{ snapshot ? uptimeText(snapshot.uptimeMs) : '' }}
|
|
356
|
-
</p>
|
|
357
|
-
<p class="stat-updated">
|
|
358
|
-
{{ lastUpdated }} · {{ t('monitor.updated') }} {{ snapshot?.generatedAt ?? '' }}
|
|
359
|
-
</p>
|
|
360
|
-
</a-card>
|
|
361
|
-
</a-col>
|
|
362
|
-
</a-row>
|
|
296
|
+
<!-- 概要统计(CSS grid:antd Grid 样式在部分构建下缺失,col 会退化 100% 宽) -->
|
|
297
|
+
<div class="stat-grid">
|
|
298
|
+
<a-card class="aw-panel stat">
|
|
299
|
+
<p class="stat-label">
|
|
300
|
+
{{ t('monitor.channels') }}
|
|
301
|
+
</p>
|
|
302
|
+
<p class="stat-value aw-mono">
|
|
303
|
+
{{ snapshot?.counts.channels ?? '–' }}
|
|
304
|
+
</p>
|
|
305
|
+
</a-card>
|
|
306
|
+
<a-card class="aw-panel stat">
|
|
307
|
+
<p class="stat-label">
|
|
308
|
+
{{ t('monitor.agents') }}
|
|
309
|
+
</p>
|
|
310
|
+
<p class="stat-value aw-mono">
|
|
311
|
+
{{ snapshot?.counts.agents ?? '–' }}
|
|
312
|
+
</p>
|
|
313
|
+
</a-card>
|
|
314
|
+
<a-card class="aw-panel stat">
|
|
315
|
+
<p class="stat-label">
|
|
316
|
+
{{ t('monitor.aliveProcesses') }}
|
|
317
|
+
</p>
|
|
318
|
+
<p class="stat-value aw-mono">
|
|
319
|
+
{{ snapshot?.counts.aliveProcesses ?? '–' }}
|
|
320
|
+
<span
|
|
321
|
+
v-if="(snapshot?.counts.orphanProcesses ?? 0) > 0"
|
|
322
|
+
class="orphan-badge"
|
|
323
|
+
>
|
|
324
|
+
+{{ snapshot?.counts.orphanProcesses }} {{ t('monitor.orphan') }}
|
|
325
|
+
</span>
|
|
326
|
+
</p>
|
|
327
|
+
</a-card>
|
|
328
|
+
<a-card class="aw-panel stat">
|
|
329
|
+
<p class="stat-label">
|
|
330
|
+
{{ t('monitor.server') }}
|
|
331
|
+
</p>
|
|
332
|
+
<p class="stat-value aw-mono small">
|
|
333
|
+
PID {{ snapshot?.serverPid ?? '–' }} · {{ snapshot ? uptimeText(snapshot.uptimeMs) : '' }}
|
|
334
|
+
</p>
|
|
335
|
+
<p class="stat-updated">
|
|
336
|
+
{{ lastUpdated }} · {{ t('monitor.updated') }} {{ snapshot?.generatedAt ?? '' }}
|
|
337
|
+
</p>
|
|
338
|
+
</a-card>
|
|
339
|
+
</div>
|
|
363
340
|
|
|
364
341
|
<!-- ChannelRuntime 表 -->
|
|
365
342
|
<a-card
|
|
@@ -603,10 +580,21 @@ const processColumns = computed(() => [
|
|
|
603
580
|
align-items: center;
|
|
604
581
|
}
|
|
605
582
|
|
|
606
|
-
.
|
|
583
|
+
.stat-grid {
|
|
584
|
+
display: grid;
|
|
585
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
586
|
+
gap: 14px;
|
|
607
587
|
margin-bottom: 16px;
|
|
608
588
|
}
|
|
609
589
|
|
|
590
|
+
@media (max-width: 1100px) {
|
|
591
|
+
.stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
@media (max-width: 640px) {
|
|
595
|
+
.stat-grid { grid-template-columns: 1fr; }
|
|
596
|
+
}
|
|
597
|
+
|
|
610
598
|
.stat {
|
|
611
599
|
height: 100%;
|
|
612
600
|
}
|
|
@@ -129,12 +129,12 @@ onMounted(load)
|
|
|
129
129
|
|
|
130
130
|
<template>
|
|
131
131
|
<div class="perm-page">
|
|
132
|
-
<header class="
|
|
132
|
+
<header class="aw-page-head">
|
|
133
133
|
<div>
|
|
134
134
|
<p class="aw-kicker">
|
|
135
135
|
agentworkshop / permissions
|
|
136
136
|
</p>
|
|
137
|
-
<h1
|
|
137
|
+
<h1>
|
|
138
138
|
{{ $t('permissions.title') }}
|
|
139
139
|
</h1>
|
|
140
140
|
<p class="pg-sub">
|
|
@@ -149,85 +149,90 @@ onMounted(load)
|
|
|
149
149
|
/>
|
|
150
150
|
</header>
|
|
151
151
|
|
|
152
|
-
<a-
|
|
153
|
-
:
|
|
154
|
-
|
|
155
|
-
row-key="id"
|
|
156
|
-
size="middle"
|
|
157
|
-
:pagination="{ pageSize: 12, showSizeChanger: false }"
|
|
152
|
+
<a-card
|
|
153
|
+
:bordered="false"
|
|
154
|
+
class="table-card"
|
|
158
155
|
>
|
|
159
|
-
<a-table
|
|
160
|
-
:
|
|
161
|
-
|
|
156
|
+
<a-table
|
|
157
|
+
:data-source="filteredUsers"
|
|
158
|
+
:loading="loading"
|
|
159
|
+
row-key="id"
|
|
160
|
+
size="middle"
|
|
161
|
+
:pagination="{ pageSize: 12, showSizeChanger: false }"
|
|
162
162
|
>
|
|
163
|
-
<
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
<
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
<
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
<
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
163
|
+
<a-table-column
|
|
164
|
+
:title="$t('permissions.colUser')"
|
|
165
|
+
data-index="name"
|
|
166
|
+
>
|
|
167
|
+
<template #default="{ record }">
|
|
168
|
+
<a @click.prevent="openDetail(record)">{{ record.name }}</a>
|
|
169
|
+
</template>
|
|
170
|
+
</a-table-column>
|
|
171
|
+
<a-table-column
|
|
172
|
+
:title="$t('permissions.colEmail')"
|
|
173
|
+
data-index="email"
|
|
174
|
+
/>
|
|
175
|
+
<a-table-column
|
|
176
|
+
:title="$t('permissions.colRole')"
|
|
177
|
+
data-index="role"
|
|
178
|
+
>
|
|
179
|
+
<template #default="{ record }">
|
|
180
|
+
<a-tag :color="record.role === 'admin' ? 'green' : record.role === 'editor' ? 'blue' : 'default'">
|
|
181
|
+
{{ record.role }}
|
|
182
|
+
</a-tag>
|
|
183
|
+
</template>
|
|
184
|
+
</a-table-column>
|
|
185
|
+
<a-table-column
|
|
186
|
+
:title="$t('permissions.colStatus')"
|
|
187
|
+
data-index="status"
|
|
188
|
+
>
|
|
189
|
+
<template #default="{ record }">
|
|
190
|
+
<a-tag :color="record.status === 'active' ? 'cyan' : 'red'">
|
|
191
|
+
{{ record.status === 'active' ? $t('permissions.active') : record.status }}
|
|
192
|
+
</a-tag>
|
|
193
|
+
</template>
|
|
194
|
+
</a-table-column>
|
|
195
|
+
<a-table-column
|
|
196
|
+
:title="$t('permissions.colChannels')"
|
|
197
|
+
data-index="channels"
|
|
198
|
+
>
|
|
199
|
+
<template #default="{ record }">
|
|
200
|
+
{{ record.channels.length }}
|
|
201
|
+
</template>
|
|
202
|
+
</a-table-column>
|
|
203
|
+
<a-table-column
|
|
204
|
+
:title="$t('permissions.colGrants')"
|
|
205
|
+
data-index="grants"
|
|
206
|
+
>
|
|
207
|
+
<template #default="{ record }">
|
|
208
|
+
<a-tag
|
|
209
|
+
v-for="g in record.grants"
|
|
210
|
+
:key="g.lineId"
|
|
211
|
+
style="margin-bottom: 2px"
|
|
212
|
+
>
|
|
213
|
+
{{ (lines.find(l => l.id === g.lineId)?.name ?? g.lineId).slice(0, 14) }} · {{ modeTag(g.mode) }}
|
|
214
|
+
</a-tag>
|
|
215
|
+
<span
|
|
216
|
+
v-if="!record.grants.length"
|
|
217
|
+
class="dim"
|
|
218
|
+
>—</span>
|
|
219
|
+
</template>
|
|
220
|
+
</a-table-column>
|
|
221
|
+
<a-table-column
|
|
222
|
+
:title="$t('permissions.colOps')"
|
|
223
|
+
:width="90"
|
|
224
|
+
>
|
|
225
|
+
<template #default="{ record }">
|
|
226
|
+
<a-button
|
|
227
|
+
size="small"
|
|
228
|
+
@click="openDetail(record)"
|
|
229
|
+
>
|
|
230
|
+
{{ $t('permissions.manage') }}
|
|
231
|
+
</a-button>
|
|
232
|
+
</template>
|
|
233
|
+
</a-table-column>
|
|
234
|
+
</a-table>
|
|
235
|
+
</a-card>
|
|
231
236
|
|
|
232
237
|
<a-drawer
|
|
233
238
|
v-model:open="drawerOpen"
|
|
@@ -313,9 +318,8 @@ onMounted(load)
|
|
|
313
318
|
|
|
314
319
|
<style scoped lang="css">
|
|
315
320
|
.perm-page { max-width: 1180px; margin: 0 auto; padding: 24px 20px 48px; }
|
|
316
|
-
.pg-
|
|
317
|
-
.
|
|
318
|
-
.pg-sub { margin: 4px 0 0; opacity: .6; font-size: 12px; }
|
|
321
|
+
.pg-sub { margin: 8px 0 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
322
|
+
.table-card { margin-bottom: 16px; }
|
|
319
323
|
.dim { opacity: .45; }
|
|
320
324
|
.sec { margin: 20px 0 8px; font-size: 13px; font-weight: 700; }
|
|
321
325
|
.detail dt { margin-top: 8px; font-size: 11px; opacity: .5; }
|
|
@@ -88,12 +88,12 @@ onMounted(load)
|
|
|
88
88
|
|
|
89
89
|
<template>
|
|
90
90
|
<div class="plugins-page">
|
|
91
|
-
<header class="
|
|
91
|
+
<header class="aw-page-head">
|
|
92
92
|
<div>
|
|
93
93
|
<p class="aw-kicker">
|
|
94
94
|
agentworkshop / plugins
|
|
95
95
|
</p>
|
|
96
|
-
<h1
|
|
96
|
+
<h1>
|
|
97
97
|
{{ $t('plugins.title') }}
|
|
98
98
|
</h1>
|
|
99
99
|
<p class="pg-sub">
|
|
@@ -136,7 +136,10 @@ onMounted(load)
|
|
|
136
136
|
v-if="!plugins.length && !loading"
|
|
137
137
|
class="pg-empty"
|
|
138
138
|
>
|
|
139
|
-
|
|
139
|
+
<span class="i-tabler-puzzle pg-empty-ico" />
|
|
140
|
+
<p class="pg-empty-t">
|
|
141
|
+
{{ $t('plugins.empty') }}
|
|
142
|
+
</p>
|
|
140
143
|
</div>
|
|
141
144
|
|
|
142
145
|
<div class="pg-grid aw-stagger">
|
|
@@ -232,14 +235,16 @@ onMounted(load)
|
|
|
232
235
|
|
|
233
236
|
<style scoped lang="css">
|
|
234
237
|
.plugins-page { max-width: 1080px; margin: 0 auto; padding: 24px 20px 48px; }
|
|
235
|
-
.pg-
|
|
236
|
-
.pg-title { margin: 0; font-size: 22px; font-weight: 700; letter-spacing: .5px; }
|
|
237
|
-
.pg-sub { margin: 4px 0 0; opacity: .6; font-size: 12px; }
|
|
238
|
+
.pg-sub { margin: 8px 0 0; opacity: .6; font-size: 12.5px; }
|
|
238
239
|
.pg-stats { display: flex; align-items: center; gap: 14px; font-size: 12px; opacity: .85; }
|
|
239
240
|
.pg-stats b { font-size: 15px; }
|
|
240
241
|
.pg-failures { margin-bottom: 16px; }
|
|
241
242
|
.fail-line { font-family: ui-monospace, monospace; font-size: 11px; }
|
|
242
|
-
.pg-empty {
|
|
243
|
+
.pg-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 56px 24px;
|
|
244
|
+
text-align: center; border: 1px dashed var(--line-strong); border-radius: var(--radius-panel);
|
|
245
|
+
background: var(--paper-deep); }
|
|
246
|
+
.pg-empty-ico { font-size: 30px; color: var(--ink-fainter); }
|
|
247
|
+
.pg-empty-t { margin: 0; font-size: 12.5px; color: var(--ink-faint); }
|
|
243
248
|
.pg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
|
|
244
249
|
.pg-card { position: relative; padding: 14px 16px; border: 1px solid var(--aw-border, rgba(128, 152, 199, .25));
|
|
245
250
|
border-radius: 12px; background: var(--aw-card, rgba(255, 255, 255, .04)); cursor: pointer;
|