agentworkshop 0.7.7 → 0.7.8
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/.AgentWorkShop/prompts/host-tools.json +1 -1
- package/.output/.AgentWorkShop/prompts/host-tools.json +1 -1
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{CQiKcuoG.js → Dc46i75T.js} +3 -3
- package/.output/public/_nuxt/R_Wv_Nd9.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/e5bb1803-86d9-43b3-85be-dc787dc9a978.json +1 -0
- package/.output/public/_nuxt/{entry.DvlXlPwx.css → entry.5qf6EqfN.css} +1 -1
- package/.output/public/_nuxt/workshop.3kAcLB_M.css +1 -0
- package/.output/server/chunks/_/nitro.mjs +2468 -2407
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/TownView-B5KifIaT.mjs +1 -1
- package/.output/server/chunks/build/_id_-C-ewLgfl.mjs +1 -1
- package/.output/server/chunks/build/_id_-Ct4Jhvl1.mjs +1 -1
- package/.output/server/chunks/build/daq-D9RA_uze.mjs +1 -1
- package/.output/server/chunks/build/dcw-BTM5YU-B.mjs +1 -1
- package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs +1 -1
- package/.output/server/chunks/build/{workshop-iCzNRifn.mjs → workshop-D5CQj2A8.mjs} +45 -39
- package/.output/server/chunks/build/workshop-D5CQj2A8.mjs.map +1 -0
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +25 -0
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +10 -2
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +27 -7
- package/README.md +455 -435
- package/app/pages/workshop/index.vue +25 -6
- package/config.yml +11 -1
- package/i18n/dicts/settings.json +4 -0
- package/i18n/locales/en.ts +4 -0
- package/i18n/locales/zh-CN.ts +4 -0
- package/package.json +1 -1
- package/scripts/_dbg-codex-handshake.ts +30 -0
- package/scripts/_dbg-codex-sandbox.ts +58 -0
- package/scripts/_dbg-codex-turn.ts +65 -0
- package/scripts/_dbg-interval-config.mjs +145 -0
- package/scripts/_dbg-setup-e2e.mjs +88 -0
- package/scripts/e2e-harness-provider-task.mjs +126 -0
- package/server/api/users/setup-status.get.ts +8 -0
- package/server/api/workshop/daq/[id]/samples.get.ts +4 -2
- package/server/data/daqs.json +97 -45
- package/server/data/dcw-lines.json +7 -0
- package/server/data/dcw-products.json +21 -0
- package/server/data/dcw-recipes.json +84 -0
- package/server/data/dcw-rollback.json +39 -6
- package/server/data/dcw-runs.json +81 -75
- package/server/data/dcw-writes.json +36 -0
- package/server/data/dcws.json +374 -299
- package/server/data/line-runs.json +6 -6
- package/server/plugins/security.ts +46 -50
- package/server/repositories/user.repository.ts +384 -414
- package/server/services/system-config.ts +2 -0
- package/server/services/user.service.ts +8 -3
- package/server/services/workshop/agents/adapters/line-spawn.ts +6 -3
- package/server/services/workshop/agents/host-tool-bridge.ts +21 -1
- package/server/services/workshop/agents/industrial-tools.ts +5 -3
- package/server/services/workshop/daq/daq-controller.ts +34 -6
- package/server/services/workshop/daq/daq-node.ts +3 -3
- package/server/services/workshop/daq/daq-runtime.ts +4 -3
- package/server/services/workshop/dcw/dcw-controller.ts +4 -2
- package/server/services/workshop/settings.ts +23 -0
- package/shared/config/schema.json +4 -0
- package/.output/public/_nuxt/C-GarxYC.js +0 -1
- package/.output/public/_nuxt/builds/meta/14df171d-89cb-43ec-ad6f-9df72d6da7f5.json +0 -1
- package/.output/public/_nuxt/workshop.B98sHiJq.css +0 -1
- package/.output/server/chunks/build/workshop-iCzNRifn.mjs.map +0 -1
|
@@ -222,6 +222,8 @@ export class SystemConfigService {
|
|
|
222
222
|
}
|
|
223
223
|
this.overrides = validated
|
|
224
224
|
this.recompute()
|
|
225
|
+
// 运行语义设置读取层(settings.ts effective 3s TTL)即时失效:live 键热重载零延迟
|
|
226
|
+
void import('./workshop/settings').then(m => m.invalidateRuntimeSettingsCache()).catch(() => {})
|
|
225
227
|
return { changed }
|
|
226
228
|
}
|
|
227
229
|
|
|
@@ -83,7 +83,8 @@ export const userService = {
|
|
|
83
83
|
|
|
84
84
|
// ===== 认证(公开端点)=====
|
|
85
85
|
|
|
86
|
-
/** 注册:创建账号 + 签发首个 token(邮箱/用户名占用 → 409
|
|
86
|
+
/** 注册:创建账号 + 签发首个 token(邮箱/用户名占用 → 409)。
|
|
87
|
+
* 首启初始化:系统尚无活跃管理员时,首个注册账号授予 admin(空库自注册建站) */
|
|
87
88
|
register(input: UserRegister): AuthResult {
|
|
88
89
|
if (userRepository.findByEmail(input.email)) {
|
|
89
90
|
throw new AppError(409, ErrorCodes.CONFLICT, '邮箱已被注册')
|
|
@@ -91,8 +92,12 @@ export const userService = {
|
|
|
91
92
|
if (userRepository.findByName(input.name)) {
|
|
92
93
|
throw new AppError(409, 'USER_EXISTS', `用户名已存在: ${input.name}`)
|
|
93
94
|
}
|
|
94
|
-
const
|
|
95
|
-
|
|
95
|
+
const needsBootstrap = !userRepository.hasActiveAdmin()
|
|
96
|
+
if (needsBootstrap) {
|
|
97
|
+
console.log(`[users] 初始化:尚无管理员账号,首个注册账号授予管理员角色(${input.email})`)
|
|
98
|
+
}
|
|
99
|
+
const user = userRepository.create({ ...input, role: needsBootstrap ? 'admin' : 'user', status: 'active' })
|
|
100
|
+
const { raw } = userRepository.createToken(user.id, needsBootstrap ? 'bootstrap-admin' : 'default')
|
|
96
101
|
return { user: this.publicProfile(user), token: raw }
|
|
97
102
|
},
|
|
98
103
|
|
|
@@ -84,11 +84,14 @@ export function spawnLineProcess(command: string, args: string[], options: LineS
|
|
|
84
84
|
const { file, needsCmd } = resolveExecutable(command)
|
|
85
85
|
const env = { ...process.env, ...options.env }
|
|
86
86
|
if (needsCmd) {
|
|
87
|
-
// Windows .cmd shim:固定包装器 'cmd.exe' + /d /s /c
|
|
88
|
-
|
|
87
|
+
// Windows .cmd shim:固定包装器 'cmd.exe' + /d /s /c。
|
|
88
|
+
// 可执行文件路径无条件引号包裹:无空格路径裸奔时,/s 模式的 cmd 会吞掉
|
|
89
|
+
// 路径中的反斜杠(C:\Users\... → C:Users...),引擎进程立即退出(code=1)。
|
|
90
|
+
// 参数仍逐个经 assertCmdSafeArg 校验(拒绝引号与控制字符),引号包裹不引入注入面。
|
|
91
|
+
const line = [`"${file}"`, ...args.map(a => assertCmdSafeArg(a)).map((token) => {
|
|
89
92
|
token = token.replace(/[\];&`<>$]/g, '^$1')
|
|
90
93
|
return token.includes(' ') ? `"${token}"` : token
|
|
91
|
-
}).join(' ')
|
|
94
|
+
})].join(' ')
|
|
92
95
|
return launchChildProcess('cmd.exe', ['/d', '/s', '/c', line], {
|
|
93
96
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
94
97
|
cwd: options.cwd ?? process.cwd(),
|
|
@@ -20,6 +20,7 @@ import type { A2AArtifact, Part } from '../types/a2a'
|
|
|
20
20
|
import type { WorkspaceTask } from '../types/task'
|
|
21
21
|
import type { RpcHostToolDefinition } from './adapters/omp-rpc-client'
|
|
22
22
|
import { loadHostToolDefs } from '../prompts/loader'
|
|
23
|
+
import { daqRuntimeSettings } from '../settings'
|
|
23
24
|
import { toolDaqFrames, toolDaqQuery, toolDcwControl, toolDcwJudge, toolDcwJournal, toolDcwRead, toolDcwRollback, toolMyIndustrialNodes } from './industrial-tools'
|
|
24
25
|
import { listPluginTools } from './plugin-tools'
|
|
25
26
|
import { extractTaskMode } from '../runtime/execution-mode'
|
|
@@ -39,6 +40,25 @@ export const LEAD_ONLY_TOOL_NAMES = new Set([
|
|
|
39
40
|
'remove_team_agent',
|
|
40
41
|
])
|
|
41
42
|
|
|
43
|
+
/** 占位符动态注入:工具描述里的运行时配置值(每次装配实时计算,配置热重载后 Agent 拿到新值) */
|
|
44
|
+
function applyDescriptionPlaceholders(tools: RpcHostToolDefinition[]): RpcHostToolDefinition[] {
|
|
45
|
+
let q: { defaultBucketMs: number, minBucketMs: number } | null = null
|
|
46
|
+
try {
|
|
47
|
+
q = daqRuntimeSettings().query
|
|
48
|
+
}
|
|
49
|
+
catch { /* 设置系统不可用(单测) → 保留原始描述 */ }
|
|
50
|
+
if (!q) return tools
|
|
51
|
+
const map: Record<string, string> = {
|
|
52
|
+
queryDefaultBucketMs: String(q.defaultBucketMs),
|
|
53
|
+
queryMinBucketMs: String(q.minBucketMs),
|
|
54
|
+
}
|
|
55
|
+
return tools.map(t => ({
|
|
56
|
+
...t,
|
|
57
|
+
description: t.description.replace(/\{(queryDefaultBucketMs|queryMinBucketMs)\}/g, (_, k) => map[k] ?? _),
|
|
58
|
+
parameters: JSON.parse(JSON.stringify(t.parameters ?? {}).replace(/\{(queryDefaultBucketMs|queryMinBucketMs)\}/g, (_m: string, k: string) => map[k] ?? _m)),
|
|
59
|
+
}))
|
|
60
|
+
}
|
|
61
|
+
|
|
42
62
|
/**
|
|
43
63
|
* 按角色装配 host tools:lead = 全量;worker = 剔除 lead 专属(执行面 + 通信面 + 记忆面);
|
|
44
64
|
* 尾部合并插件注册工具(roles 过滤,缺省双角色可用)。
|
|
@@ -54,7 +74,7 @@ export function hostToolsForRole(role: 'lead' | 'worker'): RpcHostToolDefinition
|
|
|
54
74
|
if (tool.roles && !tool.roles.includes(role)) continue
|
|
55
75
|
out.push({ name, label: tool.label ?? name, description: tool.description, parameters: tool.parameters ?? {} })
|
|
56
76
|
}
|
|
57
|
-
return out
|
|
77
|
+
return applyDescriptionPlaceholders(out)
|
|
58
78
|
}
|
|
59
79
|
|
|
60
80
|
/** 工具调用请求(与引擎协议解耦的规范化形状) */
|
|
@@ -14,6 +14,7 @@ import { nodeSemanticCards } from './industrial-context'
|
|
|
14
14
|
import { getDcwController } from '../dcw/dcw-controller'
|
|
15
15
|
import { getActiveLineRun } from '../dcw/line-run'
|
|
16
16
|
import { findDcwTemplate } from '../dcw/dcw-templates'
|
|
17
|
+
import { daqRuntimeSettings } from '../settings'
|
|
17
18
|
import { getDaqNodeRepo } from '../daq/daq-node.repo'
|
|
18
19
|
import { findDaqTemplate } from '../daq/daq-templates'
|
|
19
20
|
import { getRecipeRollBackManager } from '../dcw/recipe-rollback-manager'
|
|
@@ -258,11 +259,12 @@ export async function toolDaqQuery(agentId: string, args: {
|
|
|
258
259
|
|
|
259
260
|
const toMs = Number(args.to_ms) || Date.now()
|
|
260
261
|
const fromMs = Number(args.from_ms) || toMs - (Number(args.last_minutes) || 30) * 60_000
|
|
261
|
-
// 时间间隔参数(bucket_ms 降采样桶宽)
|
|
262
|
+
// 时间间隔参数(bucket_ms 降采样桶宽):缺省与下限来自 daq.query.*(live 配置,热重载)
|
|
263
|
+
const qCfg = daqRuntimeSettings().query
|
|
262
264
|
const rawBucket = Number(args.bucket_ms)
|
|
263
265
|
const bucketMs = Number.isFinite(rawBucket) && rawBucket > 0
|
|
264
|
-
? Math.max(
|
|
265
|
-
:
|
|
266
|
+
? Math.max(qCfg.minBucketMs, Math.min(3_600_000, Math.round(rawBucket)))
|
|
267
|
+
: qCfg.defaultBucketMs
|
|
266
268
|
const limit = Math.min(Number(args.limit) || 500, 2000)
|
|
267
269
|
const { getTsdb, tsdbReady } = await import('../daq/storage')
|
|
268
270
|
await tsdbReady
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
|
|
24
24
|
import { createLogger } from '../logger'
|
|
25
25
|
import { randomUUID } from 'node:crypto'
|
|
26
|
+
import { daqRuntimeSettings } from '../settings'
|
|
27
|
+
import { getSystemConfigService } from '../../system-config'
|
|
26
28
|
import { daqKeyFromRef, normalizeDataTransform, normalizeSignalKind, DAQ_DRIVERS, type AepDaqControllerState, type AepDaqFrame, type AepDaqReading, type AepDaqNodeChange, type DaqDriverKind, type DaqNodeView, type DataTransform, type DriverTestResult } from '../../../../shared/daq-protocol'
|
|
27
29
|
import { AppError, ErrorCodes } from '../../../utils/errors'
|
|
28
30
|
import { normalizeDriverKind, resolveDaqDriver, probeDriverAvailability, listPluginDrivers, type DaqFrameSample } from './drivers'
|
|
@@ -135,10 +137,15 @@ class DaqController {
|
|
|
135
137
|
private queueUnsub: (() => void) | null = null
|
|
136
138
|
/** 管线就绪前生产者静默(队列/消费必须先在位) */
|
|
137
139
|
private pipelineReady = false
|
|
140
|
+
/** 配置同步/订阅状态(daq.sampling live 配置 → 网关节拍;仅挂一次) */
|
|
141
|
+
private settingsSynced = false
|
|
142
|
+
private settingsUnsub: (() => void) | null = null
|
|
138
143
|
|
|
139
144
|
running = true
|
|
140
|
-
/** 全局缺省采集间隔(节点 intervalMs=null
|
|
145
|
+
/** 全局缺省采集间隔(节点 intervalMs=null 跟随;来源 = daq.sampling 配置,live 可调) */
|
|
141
146
|
defaultIntervalMs = 5000
|
|
147
|
+
/** 采样节拍下限(create/patch/存量收敛统一钳制;来源 = daq.sampling.minIntervalMs) */
|
|
148
|
+
minIntervalMs = 1000
|
|
142
149
|
/** 全局缺省 WS 下发间隔(节点 publishIntervalMs=null 跟随;0 = 随采样节拍) */
|
|
143
150
|
defaultPublishIntervalMs = 0
|
|
144
151
|
private producedCount = 0
|
|
@@ -150,6 +157,7 @@ class DaqController {
|
|
|
150
157
|
// ---------- 生命周期 ----------
|
|
151
158
|
|
|
152
159
|
private ensureLoop(): void {
|
|
160
|
+
this.applyRuntimeSettings()
|
|
153
161
|
this.syncRuntimes()
|
|
154
162
|
if (!this.queueInit) {
|
|
155
163
|
this.queueInit = (async () => {
|
|
@@ -169,8 +177,27 @@ class DaqController {
|
|
|
169
177
|
|
|
170
178
|
// ---------- 网关服务面(runtime host 实现;运行时只依赖此接口) ----------
|
|
171
179
|
|
|
172
|
-
|
|
173
|
-
|
|
180
|
+
/** 从运行时设置(daq.sampling.*)同步采样节拍默认值与下限。
|
|
181
|
+
* live 配置链:config.yml < runtime-settings.json < 环境变量 < 设置页/CLI;
|
|
182
|
+
* 设置变更经 system-config 订阅即时回流到这里(热重载,无需重启)。 */
|
|
183
|
+
applyRuntimeSettings(): void {
|
|
184
|
+
if (!this.settingsSynced) {
|
|
185
|
+
this.settingsSynced = true
|
|
186
|
+
try {
|
|
187
|
+
this.settingsUnsub = getSystemConfigService().subscribe(() => this.applyRuntimeSettings())
|
|
188
|
+
}
|
|
189
|
+
catch { /* 设置系统不可用(单测) → 用字段默认值 */ }
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
const s = daqRuntimeSettings().sampling
|
|
193
|
+
if (Number.isFinite(s.defaultIntervalMs) && s.defaultIntervalMs > 0) this.defaultIntervalMs = Math.min(60_000, s.defaultIntervalMs)
|
|
194
|
+
if (Number.isFinite(s.minIntervalMs) && s.minIntervalMs > 0) this.minIntervalMs = Math.max(100, Math.min(this.defaultIntervalMs, s.minIntervalMs))
|
|
195
|
+
}
|
|
196
|
+
catch { /* settings 未就绪 → 保持当前值 */ }
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
private runtimeDefaults(): { intervalMs: number, publishIntervalMs: number, minIntervalMs: number } {
|
|
200
|
+
return { intervalMs: this.defaultIntervalMs, publishIntervalMs: this.defaultPublishIntervalMs, minIntervalMs: this.minIntervalMs }
|
|
174
201
|
}
|
|
175
202
|
|
|
176
203
|
/** 生产面:驱动采样一次(模板域 + 协议参数解析;mock/PLC 统一走驱动注册表)。
|
|
@@ -662,6 +689,7 @@ class DaqController {
|
|
|
662
689
|
return {
|
|
663
690
|
running: this.running,
|
|
664
691
|
defaultIntervalMs: this.defaultIntervalMs,
|
|
692
|
+
minIntervalMs: this.minIntervalMs,
|
|
665
693
|
defaultPublishIntervalMs: this.defaultPublishIntervalMs,
|
|
666
694
|
nodesTotal: nodes.length,
|
|
667
695
|
nodesOnline: this.running ? nodes.filter(n => n.enabled).length : 0,
|
|
@@ -768,7 +796,7 @@ class DaqController {
|
|
|
768
796
|
|
|
769
797
|
configure(opts: { defaultIntervalMs?: number, defaultPublishIntervalMs?: number }): AepDaqControllerState {
|
|
770
798
|
let changed = false
|
|
771
|
-
if (typeof opts.defaultIntervalMs === 'number' && opts.defaultIntervalMs >=
|
|
799
|
+
if (typeof opts.defaultIntervalMs === 'number' && opts.defaultIntervalMs >= this.minIntervalMs) {
|
|
772
800
|
this.defaultIntervalMs = Math.min(60_000, Math.round(opts.defaultIntervalMs))
|
|
773
801
|
changed = true
|
|
774
802
|
}
|
|
@@ -806,7 +834,7 @@ class DaqController {
|
|
|
806
834
|
driverConfig: input.driverConfig ?? {},
|
|
807
835
|
transform: normalizeDataTransform(input.transform),
|
|
808
836
|
enabled: input.enabled,
|
|
809
|
-
intervalMs: input.intervalMs == null ? null : Math.max(
|
|
837
|
+
intervalMs: input.intervalMs == null ? null : Math.max(this.minIntervalMs, Math.min(60_000, Math.round(input.intervalMs))),
|
|
810
838
|
publishIntervalMs: input.publishIntervalMs ?? null,
|
|
811
839
|
unit: input.unit,
|
|
812
840
|
decimals: input.decimals,
|
|
@@ -846,7 +874,7 @@ class DaqController {
|
|
|
846
874
|
if (patch.warnHigh !== undefined) node.warnHigh = patch.warnHigh
|
|
847
875
|
let rearm = false
|
|
848
876
|
if (patch.intervalMs !== undefined) {
|
|
849
|
-
node.intervalMs = patch.intervalMs == null ? null : Math.max(
|
|
877
|
+
node.intervalMs = patch.intervalMs == null ? null : Math.max(this.minIntervalMs, Math.min(60_000, Math.round(patch.intervalMs)))
|
|
850
878
|
rearm = true
|
|
851
879
|
}
|
|
852
880
|
if (patch.publishIntervalMs !== undefined) {
|
|
@@ -110,9 +110,9 @@ export class DaqNode {
|
|
|
110
110
|
return daqKeyFromRef(this.templateRef)
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
/** 有效采样周期(ms):节点覆盖 >
|
|
114
|
-
effectiveInterval(defaultIntervalMs: number): number {
|
|
115
|
-
return Math.max(
|
|
113
|
+
/** 有效采样周期(ms):节点覆盖 > 全局缺省;下限 = daq.sampling.minIntervalMs(live 可调,缺省 1s) */
|
|
114
|
+
effectiveInterval(defaultIntervalMs: number, minIntervalMs = 1000): number {
|
|
115
|
+
return Math.max(minIntervalMs, this.intervalMs ?? defaultIntervalMs)
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
/** 越限派生:硬限外 = alarm;预警带 2% 滞回(退出需越过内缩边界,防临界抖动)。
|
|
@@ -22,8 +22,8 @@ export const PUBLISH_INTERVAL_MAX = 60_000
|
|
|
22
22
|
|
|
23
23
|
/** 网关注入的服务面(运行时只依赖此接口;管线汇聚在网关侧) */
|
|
24
24
|
export interface DaqRuntimeHost {
|
|
25
|
-
/** 网关全局缺省(节点元数据为 null 时回退) */
|
|
26
|
-
defaults(): { intervalMs: number, publishIntervalMs: number }
|
|
25
|
+
/** 网关全局缺省(节点元数据为 null 时回退);minIntervalMs = 采样节拍下限(daq.sampling 配置) */
|
|
26
|
+
defaults(): { intervalMs: number, publishIntervalMs: number, minIntervalMs?: number }
|
|
27
27
|
/** 生产面:驱动采样一次(网关实现协议解析与模板域;多形态模板返回帧信封 ——
|
|
28
28
|
* 驱动原生形态或 controller 生产侧处理形态[图像已落对象存储]) */
|
|
29
29
|
sample(node: DaqNode, now: number): Promise<number | DaqFrameSample | { frame: NonNullable<DaqSampleEnvelope['frame']> } | null> | number | DaqFrameSample | { frame: NonNullable<DaqSampleEnvelope['frame']> } | null
|
|
@@ -84,7 +84,8 @@ export class DaqNodeRuntime {
|
|
|
84
84
|
async tick(now: number): Promise<void> {
|
|
85
85
|
const node = this.node
|
|
86
86
|
if (this.sampling || !node.enabled) return
|
|
87
|
-
|
|
87
|
+
const defs = this.host.defaults()
|
|
88
|
+
if (now < this.lastSampleAt + node.effectiveInterval(defs.intervalMs, defs.minIntervalMs)) return
|
|
88
89
|
this.sampling = true
|
|
89
90
|
try {
|
|
90
91
|
let v: number | DaqFrameSample | null = null
|
|
@@ -26,6 +26,7 @@ import { emitDcwWrite } from '@/server/services/workshop/plugins/host.mjs'
|
|
|
26
26
|
import { clearActiveLineRun, getActiveLineRun, getAllActiveLineRuns, setActiveLineRun } from './line-run'
|
|
27
27
|
import { getRecipeRollBackManager } from './recipe-rollback-manager'
|
|
28
28
|
import { recordOps } from '../ops/ops'
|
|
29
|
+
import { daqRuntimeSettings } from '../settings'
|
|
29
30
|
|
|
30
31
|
/** 运维日志写下发防噪:同节点同值 10s 内的心跳重下发不重复入册 */
|
|
31
32
|
const opsWriteMemo = new Map<string, { eng: number, at: number }>()
|
|
@@ -770,8 +771,9 @@ class DcwController {
|
|
|
770
771
|
await tsdbReady
|
|
771
772
|
const { getDaqNodeRepo } = await import('../daq/daq-node.repo')
|
|
772
773
|
const { findDaqTemplate } = await import('../daq/daq-templates')
|
|
773
|
-
// 时间间隔参数(bucketMs)
|
|
774
|
-
const
|
|
774
|
+
// 时间间隔参数(bucketMs):缺省与下限来自 daq.query.*(live 配置,热重载)
|
|
775
|
+
const { defaultBucketMs, minBucketMs } = daqRuntimeSettings().query
|
|
776
|
+
const bucketMs = opts.bucketMs == null ? defaultBucketMs : Math.max(minBucketMs, Math.min(3_600_000, Math.round(opts.bucketMs)))
|
|
775
777
|
const nodeFilter = opts.nodeId ? opts.nodeId.split(',').map(x => x.trim()).filter(Boolean) : []
|
|
776
778
|
const nodes = getDaqNodeRepo().all().filter((n) => {
|
|
777
779
|
if (opts.paramKey && n.templateKey !== opts.paramKey) return false
|
|
@@ -34,6 +34,11 @@ function effective(): Record<string, unknown> {
|
|
|
34
34
|
return eff.effective
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
/** 主动失效进程内缓存:settings 写路径(PATCH/CLI/文件监听)变更后调用,使 live 键即时可见 */
|
|
38
|
+
export function invalidateRuntimeSettingsCache(): void {
|
|
39
|
+
cache = null
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
/** 按描述符键读单值(键必已注册 schema.json;缺键 = 描述符默认) */
|
|
38
43
|
export function settingOf(key: string): unknown {
|
|
39
44
|
return effective()[key]
|
|
@@ -111,6 +116,16 @@ export interface DaqRuntimeSettings {
|
|
|
111
116
|
qos: number
|
|
112
117
|
rejectUnauthorized: boolean
|
|
113
118
|
}
|
|
119
|
+
/** 采样节拍(节点 intervalMs 未显式指定时的默认值与可配置下限;live 可调) */
|
|
120
|
+
sampling: {
|
|
121
|
+
defaultIntervalMs: number
|
|
122
|
+
minIntervalMs: number
|
|
123
|
+
}
|
|
124
|
+
/** 时序查询节拍(bucketMs 缺省值与下限;samples/产线查询/Agent daq_query 共用) */
|
|
125
|
+
query: {
|
|
126
|
+
defaultBucketMs: number
|
|
127
|
+
minBucketMs: number
|
|
128
|
+
}
|
|
114
129
|
tsRetentionH: number
|
|
115
130
|
frameRetentionH: number
|
|
116
131
|
alarmWebhookUrl: string
|
|
@@ -143,6 +158,14 @@ export function daqRuntimeSettings(): DaqRuntimeSettings {
|
|
|
143
158
|
frameRetentionH: Number(get('frameRetentionH', 720)),
|
|
144
159
|
alarmWebhookUrl: String(get('alarmWebhookUrl', '')),
|
|
145
160
|
alarmEscalateMinutes: Number(get('alarmEscalateMinutes', 15)),
|
|
161
|
+
sampling: {
|
|
162
|
+
defaultIntervalMs: Number(get('sampling.defaultIntervalMs', 5000)),
|
|
163
|
+
minIntervalMs: Number(get('sampling.minIntervalMs', 1000)),
|
|
164
|
+
},
|
|
165
|
+
query: {
|
|
166
|
+
defaultBucketMs: Number(get('query.defaultBucketMs', 15000)),
|
|
167
|
+
minBucketMs: Number(get('query.minBucketMs', 1000)),
|
|
168
|
+
},
|
|
146
169
|
}
|
|
147
170
|
}
|
|
148
171
|
export function securityHitlTimeoutMs(): number {
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
{ "key": "daq.mqtt.password", "type": "string", "group": "daq", "label": "MQTT 密码", "labelKey": "settings.runtime.daq.mqttPassword", "description": "数采事件总线 MQTT 鉴权密码", "applies": "restart", "default": "", "aliases": ["DAQ_MQTT_PASSWORD"] },
|
|
39
39
|
{ "key": "daq.mqtt.caFile", "type": "string", "group": "daq", "label": "MQTT CA 证书", "labelKey": "settings.runtime.daq.mqttCaFile", "description": "mqtts 自签 CA 证书文件路径", "applies": "restart", "default": "", "aliases": ["DAQ_MQTT_CA_FILE"] },
|
|
40
40
|
{ "key": "daq.mqtt.rejectUnauthorized", "type": "boolean", "group": "daq", "label": "MQTT 校验证书", "labelKey": "settings.runtime.daq.mqttRejectUnauthorized", "description": "mqtts 是否校验服务端证书(自签调试可关)", "applies": "restart", "default": true, "aliases": ["DAQ_MQTT_REJECT_UNAUTHORIZED"] },
|
|
41
|
+
{ "key": "daq.sampling.defaultIntervalMs", "type": "number", "group": "daq", "label": "节点采样默认间隔(ms)", "labelKey": "settings.runtime.daq.samplingDefaultIntervalMs", "description": "数采节点未显式指定 intervalMs 时的采集周期(采样→入库→事件一拍)", "applies": "live", "default": 5000, "min": 200, "max": 60000, "aliases": ["DAQ_SAMPLING_DEFAULT_INTERVAL_MS"] },
|
|
42
|
+
{ "key": "daq.sampling.minIntervalMs", "type": "number", "group": "daq", "label": "节点采样下限(ms)", "labelKey": "settings.runtime.daq.samplingMinIntervalMs", "description": "数采节点允许配置的最小采样周期(create/patch/存量收敛统一钳制)", "applies": "live", "default": 1000, "min": 200, "max": 60000, "aliases": ["DAQ_SAMPLING_MIN_INTERVAL_MS"] },
|
|
43
|
+
{ "key": "daq.query.defaultBucketMs", "type": "number", "group": "daq", "label": "时序查询默认间隔(ms)", "labelKey": "settings.runtime.daq.queryDefaultBucketMs", "description": "Timescale 查询未指定 bucketMs 时的降采样桶宽(samples/产线查询/Agent daq_query 共用)", "applies": "live", "default": 15000, "min": 100, "max": 3600000, "aliases": ["DAQ_QUERY_DEFAULT_BUCKET_MS"] },
|
|
44
|
+
{ "key": "daq.query.minBucketMs", "type": "number", "group": "daq", "label": "时序查询下限(ms)", "labelKey": "settings.runtime.daq.queryMinBucketMs", "description": "时序查询允许的最小降采样桶宽(传入更小值时钳到该下限)", "applies": "live", "default": 1000, "min": 100, "max": 3600000, "aliases": ["DAQ_QUERY_MIN_BUCKET_MS"] },
|
|
41
45
|
{ "key": "daq.tsRetentionH", "type": "number", "group": "daq", "label": "标量时序保留(h)", "labelKey": "settings.runtime.daq.tsRetentionH", "description": "SQLite 仿真库标量样本保留小时数(Timescale 由 hypertable 策略管理)", "applies": "restart", "default": 168, "min": 1, "max": 8760, "aliases": ["DAQ_TS_RETENTION_H"] },
|
|
42
46
|
{ "key": "daq.frameRetentionH", "type": "number", "group": "daq", "label": "帧元数据保留(h)", "labelKey": "settings.runtime.daq.frameRetentionH", "description": "daq_frames 帧元数据保留小时数", "applies": "restart", "default": 720, "min": 1, "max": 8760, "aliases": ["DAQ_FRAME_RETENTION_H"] },
|
|
43
47
|
{ "key": "daq.alarmWebhookUrl", "type": "string", "group": "daq", "label": "告警 Webhook", "labelKey": "settings.runtime.daq.alarmWebhookUrl", "description": "告警升级推送的 Webhook 地址(空=不推送)", "applies": "restart", "default": "", "aliases": ["ALARM_WEBHOOK_URL"] },
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,G as t,H as n,Ht as ee,St as r,Wt as i,a,b as o,et as s,g as c,h as l,lt as u,mt as d,nt as f,p,t as m,x as h}from"./BSCpFtzG.js";import{B as te,z as g}from"./2LwEn9gX.js";import{d as _}from"./PQLnLxYe.js";import{n as v}from"./uBbDCfTz.js";import{n as y}from"./BeIfu4N3.js";import{t as b}from"./Bt_HDizI.js";import{r as x}from"./BsMpJf7S.js";import{n as ne,t as re}from"./Do88WZG2.js";import{n as ie,t as ae}from"./B4Fia4FB.js";import{t as oe}from"./BYL0Rjqj.js";import{t as se}from"./DM8DS9MA.js";import{t as ce}from"./Du-eSpo2.js";import{t as le}from"./C9f8QMp12.js";import{t as S}from"./NIM0Wglj2.js";import{t as C}from"./C_gFA2H_2.js";import{n as w,t as T}from"./ZugRk0CM2.js";import{t as ue}from"./CNs_Ozdc2.js";var de={class:`page`},fe={key:0,class:`auth-gate aw-orbs`},pe={class:`hint`},me={class:`hint`},he={class:`aw-page-head`},ge={class:`sub`},_e={class:`head-acts`},E={class:`lib-links`},D={class:`grid`},O={class:`card-head`},k={class:`name`},A={class:`card-body`},j=[`onClick`],M={class:`ch-name`},N={class:`ch-meta`},P={key:0,class:`empty`},F={class:`card-foot`},I=[`onClick`],ve=[`onClick`],L=m(e({__name:`index`,setup(e){let{t:m}=y();ue({layout:`default`});let L=S(),R=C(),z=w(),{subscribe:ye}=T(),B=d(`login`),V=d(``),H=d(``),U=d(``),W=d(``),G=d(!1),K=async()=>{if(!V.value.trim()){x.warning(m(`wsHome.k1vnhyks019`));return}if(!H.value.trim()){x.warning(m(`wsHome.k8ieqzj020`));return}if(U.value.length<6){x.warning(m(`wsHome.ksx73ra021`));return}G.value=!0;try{let e=await L.register(V.value,H.value,U.value);x.success(m(`wsHome.k1mbatbh030`,{p0:e.name})),V.value=``,H.value=``,U.value=``}catch(e){x.error(e instanceof Error?e.message:String(e))}finally{G.value=!1}},q=async()=>{if(!H.value.trim()){x.warning(m(`wsHome.k8ieqzj020`));return}G.value=!0;try{let e=await L.login(H.value,U.value);x.success(m(`wsHome.kwixbdl031`,{p0:e.name})),U.value=``}catch(e){x.error(e instanceof Error?e.message:String(e))}finally{G.value=!1}},J=async()=>{G.value=!0;try{let e=await L.loginWithToken(W.value);x.success(m(`wsHome.kwixbdl031`,{p0:e.name})),W.value=``}catch(e){x.error(e instanceof Error?e.message:String(e))}finally{G.value=!1}},be=()=>{L.logout(),x.success(m(`wsHome.k3ngm6p022`))},Y=d(!1);s(()=>L.isLoggedIn,async e=>{if(!e){Y.value=!1;return}if(await L.refresh(),L.isLoggedIn)try{await R.load(),Y.value=!0}catch(e){x.error(e instanceof Error?e.message:m(`wsHome.k1br33vc023`))}},{immediate:!0}),s(()=>Y.value&&R.workspaces.map(e=>e.channelIds.join(`,`)).join(`|`),()=>{if(Y.value)for(let e of R.workspaces)for(let t of e.channelIds)ye(t)},{immediate:!0});let X=d(!1),Z=d(``),Q=d(!1),$=async()=>{let e=Z.value.trim();if(!e){x.warning(`Workspace 名称必填`);return}Q.value=!0;try{let t=await R.create(e);X.value=!1,Z.value=``,R.setActiveWorkspaceId(t.id),_(`/workshop/w/${t.id}`)}catch(e){x.error(e instanceof Error?e.message:String(e))}finally{Q.value=!1}},xe=async e=>{await R.remove(e),x.success(m(`wsHome.k3n5sd7024`))},Se=e=>e.map(e=>{let t=z.channels[e],n=z.agents[e]??[];return{id:e,name:t?.name??e.slice(0,8),synced:t!==void 0,agents:n.length,busy:n.filter(e=>e.state===`busy`).length,activeTasks:(z.tasks[e]??[]).filter(e=>![`COMPLETED`,`CANCELED`,`FAILED`].includes(e.state)).length}});return v({title:()=>m(`titles.workshop`)}),(e,s)=>{let d=re,m=ne,v=b,y=ce,x=ie,S=ae,C=se,w=le,T=oe;return n(),c(`div`,de,[r(L).isLoggedIn?(n(),c(a,{key:1},[p(`div`,he,[p(`div`,null,[s[17]||=p(`p`,{class:`aw-kicker`},` workshop / overview `,-1),p(`h1`,null,`Workshop `+i(e.$t(`wsHome.k3n4m5c025`)),1),p(`p`,ge,i(r(L).user?.name)+` `+i(e.$t(`wsHome.ke16e53026`)),1)]),p(`div`,_e,[p(`div`,E,[p(`button`,{type:`button`,class:`lib-link`,onClick:s[7]||=t=>(`navigateTo`in e?e.navigateTo:r(_))(`/workshop/agents`)},i(e.$t(`wsHome.k3pa5h4013`)),1),p(`button`,{type:`button`,class:`lib-link`,onClick:s[8]||=t=>(`navigateTo`in e?e.navigateTo:r(_))(`/workshop/teams`)},i(e.$t(`wsHome.k3svl8y014`)),1),p(`button`,{type:`button`,class:`lib-link`,onClick:s[9]||=t=>(`navigateTo`in e?e.navigateTo:r(_))(`/workshop/channel-templates`)},` Channel `+i(e.$t(`wsHome.k41ds5027`)),1),p(`button`,{type:`button`,class:`lib-link`,onClick:s[10]||=t=>(`navigateTo`in e?e.navigateTo:r(_))(`/tokens`)},` API Token `),p(`button`,{type:`button`,class:`lib-link`,onClick:be},i(e.$t(`wsHome.k484e7015`)),1)]),p(`button`,{class:`aw-pill im`,onClick:s[11]||=e=>X.value=!0},[s[18]||=p(`span`,{class:`i-tabler-plus im-pop`},null,-1),o(` `+i(e.$t(`wsHome.newWs`)),1)])])]),h(w,{spinning:!r(Y)},{default:f(()=>[p(`div`,D,[(n(!0),c(a,null,t(r(R).workspaces,u=>(n(),c(`div`,{key:u.id,class:`card`},[p(`div`,O,[s[19]||=p(`span`,{class:`card-mark`},[p(`span`,{class:`i-tabler-box`})],-1),p(`span`,k,i(u.name),1)]),p(`div`,A,[(n(!0),c(a,null,t(Se(u.channelIds),t=>(n(),c(`div`,{key:t.id,class:`ch-row`,onClick:t=>(`navigateTo`in e?e.navigateTo:r(_))(`/workshop/w/${u.id}`)},[p(`span`,{class:ee([`dot`,{live:t.activeTasks>0}])},null,2),p(`span`,M,i(t.name),1),p(`span`,N,[t.synced?(n(),c(a,{key:0},[o(i(t.agents)+` `+i(e.$t(`wsHome.k1ggoa45028`))+` `+i(t.busy)+` / `+i(e.$t(`wsHome.k3wcox029`))+` `+i(t.activeTasks),1)],64)):(n(),c(a,{key:1},[o(i(e.$t(`wsHome.k1bst7s9016`)),1)],64))])],8,j))),128)),u.channelIds.length===0?(n(),c(`div`,P,i(e.$t(`wsHome.k1ylgrbc017`)),1)):l(``,!0)]),p(`div`,F,[p(`button`,{class:`aw-pill outline im`,onClick:t=>(`navigateTo`in e?e.navigateTo:r(_))(`/workshop/w/${u.id}`)},[s[20]||=p(`span`,{class:`i-tabler-arrow-right im-pop`},null,-1),o(` `+i(e.$t(`wsHome.kr1uwwi018`)),1)],8,I),p(`button`,{class:`aw-ghost im`,title:`删除 Workspace`,onClick:te(e=>xe(u.id),[`stop`])},[...s[21]||=[p(`span`,{class:`i-tabler-trash im-shake`},null,-1)]],8,ve)])]))),128)),r(R).workspaces.length===0&&r(Y)?(n(),c(`div`,{key:0,class:`card placeholder`,onClick:s[12]||=e=>X.value=!0},[...s[22]||=[p(`span`,{class:`i-tabler-plus big`},null,-1),p(`span`,null,`新建第一个 Workspace`,-1)]])):l(``,!0)])]),_:1},8,[`spinning`]),h(T,{open:r(X),"onUpdate:open":s[14]||=e=>u(X)?X.value=e:null,title:e.$t(`wsHome.newWs`),"confirm-loading":r(Q),"ok-text":`创建并进入`,"cancel-text":`取消`,onOk:$},{default:f(()=>[h(d,{value:r(Z),"onUpdate:value":s[13]||=e=>u(Z)?Z.value=e:null,placeholder:e.$t(`wsHome.ksmpk8l007`),onKeydown:g($,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`])],64)):(n(),c(`div`,fe,[h(C,{class:`auth-card`},{default:f(()=>[s[15]||=p(`p`,{class:`aw-kicker`},` agentworkshop / sign in `,-1),p(`h2`,null,i(e.$t(`wsHome.kr0vzqu008`)),1),s[16]||=p(`p`,{class:`sub`},` 全局用户系统统管身份;每个用户可管理多个 API Token, 管理 API 需用户 token(Authorization: Bearer)。 `,-1),h(S,{"active-key":r(B),"onUpdate:activeKey":s[6]||=e=>u(B)?B.value=e:null},{default:f(()=>[h(x,{key:`login`,tab:`账号登录`},{default:f(()=>[h(y,{direction:`vertical`,style:{width:`100%`}},{default:f(()=>[h(d,{value:r(H),"onUpdate:value":s[0]||=e=>u(H)?H.value=e:null,type:`email`,placeholder:e.$t(`wsHome.k48h2c001`),onKeydown:g(q,[`enter`])},null,8,[`value`,`placeholder`]),h(m,{value:r(U),"onUpdate:value":s[1]||=e=>u(U)?U.value=e:null,placeholder:e.$t(`wsHome.k3yvgs002`),onKeydown:g(q,[`enter`])},null,8,[`value`,`placeholder`]),h(v,{type:`primary`,block:``,loading:r(G),onClick:q},{default:f(()=>[o(i(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`]),p(`p`,pe,i(e.$t(`wsHome.k17x74cj010`)),1)]),_:1})]),_:1}),h(x,{key:`register`,tab:`注册新用户`},{default:f(()=>[h(y,{direction:`vertical`,style:{width:`100%`}},{default:f(()=>[h(d,{value:r(V),"onUpdate:value":s[2]||=e=>u(V)?V.value=e:null,placeholder:e.$t(`wsHome.kwgbai9003`)},null,8,[`value`,`placeholder`]),h(d,{value:r(H),"onUpdate:value":s[3]||=e=>u(H)?H.value=e:null,type:`email`,placeholder:e.$t(`wsHome.kizjkbo004`)},null,8,[`value`,`placeholder`]),h(m,{value:r(U),"onUpdate:value":s[4]||=e=>u(U)?U.value=e:null,placeholder:e.$t(`wsHome.kh3cqfn005`),onKeydown:g(K,[`enter`])},null,8,[`value`,`placeholder`]),h(v,{type:`primary`,block:``,loading:r(G),onClick:K},{default:f(()=>[o(i(e.$t(`wsHome.k1so6a0v011`)),1)]),_:1},8,[`loading`]),p(`p`,me,i(e.$t(`wsHome.k1r0a4u3012`)),1)]),_:1})]),_:1}),h(x,{key:`token`,tab:`Token 登录`},{default:f(()=>[h(y,{direction:`vertical`,style:{width:`100%`}},{default:f(()=>[h(m,{value:r(W),"onUpdate:value":s[5]||=e=>u(W)?W.value=e:null,placeholder:e.$t(`wsHome.k15qunld006`),onKeydown:g(J,[`enter`])},null,8,[`value`,`placeholder`]),h(v,{type:`primary`,block:``,loading:r(G),onClick:J},{default:f(()=>[o(i(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`active-key`])]),_:1})]))])}}}),[[`__scopeId`,`data-v-dfba3160`]]);export{L as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"14df171d-89cb-43ec-ad6f-9df72d6da7f5","timestamp":1788607002809,"prerendered":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.page[data-v-dfba3160]{padding:4px}.auth-gate[data-v-dfba3160]{justify-content:center;padding-top:8vh;display:flex}.auth-card[data-v-dfba3160]{border-radius:var(--radius-panel);width:420px;max-width:92vw;box-shadow:var(--shadow-float);padding:26px 26px 18px;position:relative;border:1px solid var(--line-strong)!important}.auth-card[data-v-dfba3160] h2{font-family:var(--font-display);margin:0 0 6px;font-size:26px}.sub[data-v-dfba3160]{color:var(--ink-faint);margin:0 0 14px;font-size:12.5px}.hint[data-v-dfba3160]{color:var(--ink-fainter);margin:8px 0 0;font-size:11px}.head-acts[data-v-dfba3160]{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.lib-links[data-v-dfba3160]{flex-wrap:wrap;justify-content:flex-end;gap:2px 14px;display:inline-flex}.lib-link[data-v-dfba3160]{font-family:var(--font-body);color:var(--ink-faint);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:0;padding:2px 0;font-size:12.5px}.lib-link[data-v-dfba3160]:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.card-mark[data-v-dfba3160]{width:30px;height:30px;color:var(--ink-soft);background:var(--paper-deep);border-radius:var(--radius-panel-sm);flex:none;justify-content:center;align-items:center;font-size:15px;display:inline-flex}.card-head .name[data-v-dfba3160]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:17px}.card-foot[data-v-dfba3160]{justify-content:space-between;align-items:center;gap:8px;margin-top:auto;display:flex}.grid[data-v-dfba3160]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.card[data-v-dfba3160]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);box-shadow:var(--shadow-card);flex-direction:column;gap:10px;padding:16px;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex;position:relative}.card[data-v-dfba3160]:hover{border-color:var(--line-strong);transform:translateY(-1px)}.card.placeholder[data-v-dfba3160]{opacity:.55;cursor:pointer;border-style:dashed;justify-content:center;align-items:center;min-height:160px;font-size:13px}.big[data-v-dfba3160]{font-size:28px}.card-head[data-v-dfba3160]{align-items:center;gap:8px;font-size:15px;display:flex}.card-head[data-v-dfba3160]>:first-child{color:var(--accent-cobalt)}.name[data-v-dfba3160]{font-family:var(--font-display);flex:auto;font-size:17px;font-weight:600}.op[data-v-dfba3160]{cursor:pointer;opacity:.4}.op[data-v-dfba3160]:hover{opacity:1}.card-body[data-v-dfba3160]{flex:auto;min-height:40px}.ch-row[data-v-dfba3160]{cursor:pointer;border-radius:var(--radius-panel);align-items:center;gap:8px;margin:2px 0;padding:5px 7px;font-size:12px;transition:background .15s,transform .15s;display:flex}.ch-row[data-v-dfba3160]:hover{background:color-mix(in srgb, var(--accent-cobalt) 7%, transparent);transform:translate(2px)}.dot[data-v-dfba3160]{background:var(--line-strong);border-radius:50%;flex:none;width:7px;height:7px}.dot.live[data-v-dfba3160]{background:var(--accent-moss);box-shadow:0 0 6px var(--accent-moss)}.ch-name[data-v-dfba3160]{flex:none;font-weight:600}.ch-meta[data-v-dfba3160]{font-family:var(--font-mono);opacity:.5;text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11px;overflow:hidden}.empty[data-v-dfba3160]{opacity:.4;padding:12px 6px;font-size:12px}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workshop-iCzNRifn.mjs","sources":["../../../../app/pages/workshop/index.vue"],"names":["api","useHead","$t","navigateTo"],"mappings":"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"}
|