agentworkshop 0.7.15 → 0.7.17
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 +924 -755
- package/.output/.AgentWorkShop/prompts/host-tools.json +924 -755
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DMdVWIGz.js → B-E8fXAO.js} +1 -1
- package/.output/public/_nuxt/{DyisHHzD.js → BA3XzwiD.js} +1 -1
- package/.output/public/_nuxt/{CD1SlCoI.js → BJem8_v5.js} +4 -4
- package/.output/public/_nuxt/{6vYobj4F.js → BWC4HQHQ.js} +1 -1
- package/.output/public/_nuxt/{kkEthL84.js → Ba7YofCb.js} +1 -1
- package/.output/public/_nuxt/{DGVAuScD.js → C_2bTK0C.js} +1 -1
- package/.output/public/_nuxt/{B53Mp7lD.js → CgT5wMfz.js} +1 -1
- package/.output/public/_nuxt/{DT-Wg8r1.js → D4CLp1hc.js} +1 -1
- package/.output/public/_nuxt/{C6m-kenn.js → DAR70Lf5.js} +1 -1
- package/.output/public/_nuxt/{B3Psw_sL.js → DBXhDLgl.js} +1 -1
- package/.output/public/_nuxt/{Cj6139IM.js → DsOkkMX3.js} +1 -1
- package/.output/public/_nuxt/DtM4RX5T.js +1 -0
- package/.output/public/_nuxt/{DaE5saZg.js → QT54MQV9.js} +1 -1
- package/.output/public/_nuxt/{Bmpvki7M.js → UtviM1bg.js} +1 -1
- package/.output/public/_nuxt/_id_.pF-B9O6u.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/6a0a88de-639e-4e7b-b7c1-7f4034e04787.json +1 -0
- package/.output/server/chunks/_/nitro.mjs +1411 -910
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{TownView-CunmEMzS.mjs → TownView-ql2eHZOg.mjs} +4 -4
- package/.output/server/chunks/build/{TownView-CunmEMzS.mjs.map → TownView-ql2eHZOg.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-CVnMdSeG.mjs → _id_-CwR5oLu9.mjs} +4 -4
- package/.output/server/chunks/build/{_id_-CVnMdSeG.mjs.map → _id_-CwR5oLu9.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-D265Wh_k.mjs → _id_-DvJZ5Qis.mjs} +168 -120
- package/.output/server/chunks/build/_id_-DvJZ5Qis.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-eNJmBp05.mjs → _wsId_-B3aB9bIp.mjs} +5 -5
- package/.output/server/chunks/build/{_wsId_-eNJmBp05.mjs.map → _wsId_-B3aB9bIp.mjs.map} +1 -1
- package/.output/server/chunks/build/{daq-DxaXk_8N.mjs → daq-epWL_sC7.mjs} +5 -5
- package/.output/server/chunks/build/{daq-DxaXk_8N.mjs.map → daq-epWL_sC7.mjs.map} +1 -1
- package/.output/server/chunks/build/{dcw-B0dtiHFG.mjs → dcw-CBPaFj2f.mjs} +2 -2
- package/.output/server/chunks/build/{dcw-B0dtiHFG.mjs.map → dcw-CBPaFj2f.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-UWXeNKy_.mjs → logs-Bz1p6x_5.mjs} +3 -3
- package/.output/server/chunks/build/{logs-UWXeNKy_.mjs.map → logs-Bz1p6x_5.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-Aexs6LjD.mjs → pages-Dq7_H4FK.mjs} +3 -3
- package/.output/server/chunks/build/{pages-Aexs6LjD.mjs.map → pages-Dq7_H4FK.mjs.map} +1 -1
- package/.output/server/chunks/build/{town-BbaR-8io.mjs → town-CstiKxf_.mjs} +5 -5
- package/.output/server/chunks/build/{town-BbaR-8io.mjs.map → town-CstiKxf_.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDaqStream-BkmyQT06.mjs → useDaqStream-BOOZ-p-l.mjs} +2 -2
- package/.output/server/chunks/build/{useDaqStream-BkmyQT06.mjs.map → useDaqStream-BOOZ-p-l.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDcwStream-DWVoU96J.mjs → useDcwStream-DyB2ufQI.mjs} +15 -1
- package/.output/server/chunks/build/{useDcwStream-DWVoU96J.mjs.map → useDcwStream-DyB2ufQI.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDeviceTwins-34WGk9aN.mjs → useDeviceTwins-ZbT86L9O.mjs} +2 -2
- package/.output/server/chunks/build/{useDeviceTwins-34WGk9aN.mjs.map → useDeviceTwins-ZbT86L9O.mjs.map} +1 -1
- package/.output/server/chunks/build/{useOpsLog-C9zTzYof.mjs → useOpsLog-8HCYFb6n.mjs} +2 -2
- package/.output/server/chunks/build/{useOpsLog-C9zTzYof.mjs.map → useOpsLog-8HCYFb6n.mjs.map} +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +42 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +29 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/{_id_.patch.mjs → index.patch.mjs} +11 -6
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/virtual/entry.mjs +34 -8
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/app/composables/workshop/useDcwStream.ts +12 -0
- package/app/pages/dcw/[id].vue +165 -1
- package/i18n/locales/en.ts +13 -0
- package/i18n/locales/zh-CN.ts +13 -0
- package/package.json +1 -1
- package/scripts/_dbg-opslog-agent-e2e.mjs +191 -0
- package/scripts/_dbg-recipe-e2e.mjs +176 -0
- package/server/api/workshop/daq/index.post.ts +1 -1
- package/server/api/workshop/dcw/lines/index.post.ts +1 -1
- package/server/api/workshop/dcw/recipes/{[id].patch.ts → [id]/index.patch.ts} +9 -3
- package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +28 -0
- package/server/api/workshop/dcw/recipes/[id]/versions.get.ts +14 -0
- package/server/data/daqs.json +471 -61
- package/server/data/dcw-lines.json +49 -0
- package/server/data/dcw-products.json +56 -0
- package/server/data/dcw-recipes.json +64 -0
- package/server/data/dcw-rollback.json +239 -6
- package/server/data/dcw-runs.json +162 -142
- package/server/data/dcw-writes.json +132 -0
- package/server/data/dcws.json +344 -198
- package/server/data/line-runs.json +41 -11
- package/server/data/scene-layouts.json +11 -0
- package/server/plugins/workshop.ts +9 -0
- package/server/services/workshop/agents/agent-badge.ts +38 -0
- package/server/services/workshop/agents/host-tool-bridge.ts +642 -612
- package/server/services/workshop/agents/industrial-tools.ts +357 -4
- package/server/services/workshop/daq/drivers.ts +41 -8
- package/server/services/workshop/dcw/dcw-controller.ts +50 -2
- package/server/services/workshop/dcw/dcw-recipe.repo.ts +81 -3
- package/server/services/workshop/dcw/drivers.ts +2 -2
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +8 -6
- package/shared/dcw-protocol.ts +14 -2
- package/.output/public/_nuxt/Bc3PiGGr.js +0 -1
- package/.output/public/_nuxt/_id_.DTvjd6VN.css +0 -1
- package/.output/public/_nuxt/builds/meta/65f6bed9-b794-44a4-805a-e22700c10817.json +0 -1
- package/.output/server/chunks/build/_id_-D265Wh_k.mjs.map +0 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs.map +0 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"productId": "pd-6348a595",
|
|
8
8
|
"productName": "0.8mm 光学膜",
|
|
9
9
|
"startedAt": "2026-09-03T11:18:01.213Z",
|
|
10
|
-
"taggedSamples":
|
|
10
|
+
"taggedSamples": 51246
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"lineId": "ln-9a60a0cd",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"productId": "pd-e712875d",
|
|
18
18
|
"productName": "闭环验证产品",
|
|
19
19
|
"startedAt": "2026-09-03T16:03:27.304Z",
|
|
20
|
-
"taggedSamples":
|
|
20
|
+
"taggedSamples": 179
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"lineId": "ln-b33a3105",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"productId": "pd-16eecb35",
|
|
28
28
|
"productName": "闭环验证产品",
|
|
29
29
|
"startedAt": "2026-09-03T16:39:22.962Z",
|
|
30
|
-
"taggedSamples":
|
|
30
|
+
"taggedSamples": 179
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"lineId": "ln-1aedc305",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"productId": "pd-9c755781",
|
|
38
38
|
"productName": "闭环验证产品",
|
|
39
39
|
"startedAt": "2026-09-03T16:44:33.199Z",
|
|
40
|
-
"taggedSamples":
|
|
40
|
+
"taggedSamples": 179
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"lineId": "ln-758658dc",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"productId": "pd-835aed90",
|
|
48
48
|
"productName": "闭环验证产品",
|
|
49
49
|
"startedAt": "2026-09-03T17:12:52.205Z",
|
|
50
|
-
"taggedSamples":
|
|
50
|
+
"taggedSamples": 179
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"lineId": "ln-1b318320",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"productId": "pd-db432902",
|
|
58
58
|
"productName": "探针产品",
|
|
59
59
|
"startedAt": "2026-09-04T05:08:10.103Z",
|
|
60
|
-
"taggedSamples":
|
|
60
|
+
"taggedSamples": 18085
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"lineId": "ln-6a34fbc7",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"productId": "pd-10cfc2b3",
|
|
68
68
|
"productName": "全协议产品-mtnynfph",
|
|
69
69
|
"startedAt": "2026-09-05T05:47:26.453Z",
|
|
70
|
-
"taggedSamples":
|
|
70
|
+
"taggedSamples": 53067
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"lineId": "ln-419463e0",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"productId": "pd-b9b15b64",
|
|
78
78
|
"productName": "全协议产品-mtnzg090",
|
|
79
79
|
"startedAt": "2026-09-05T06:09:36.931Z",
|
|
80
|
-
"taggedSamples":
|
|
80
|
+
"taggedSamples": 53034
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
"lineId": "ln-3548f325",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"productId": "pd-fd822802",
|
|
88
88
|
"productName": "runp3-prod",
|
|
89
89
|
"startedAt": "2026-09-05T07:23:51.972Z",
|
|
90
|
-
"taggedSamples":
|
|
90
|
+
"taggedSamples": 4762
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"lineId": "ln-c3a7ba01",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"productId": "pd-3adf854f",
|
|
118
118
|
"productName": "lx8-prod",
|
|
119
119
|
"startedAt": "2026-09-06T02:22:23.209+08:00",
|
|
120
|
-
"taggedSamples":
|
|
120
|
+
"taggedSamples": 5025
|
|
121
121
|
},
|
|
122
122
|
{
|
|
123
123
|
"lineId": "ln-917490c1",
|
|
@@ -127,6 +127,36 @@
|
|
|
127
127
|
"productId": "pd-75752beb",
|
|
128
128
|
"productName": "lx8-prod",
|
|
129
129
|
"startedAt": "2026-09-06T02:24:50.582+08:00",
|
|
130
|
-
"taggedSamples":
|
|
130
|
+
"taggedSamples": 4884
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"lineId": "ln-24dedf82",
|
|
134
|
+
"runId": "rr-bf3fea0a",
|
|
135
|
+
"recipeId": "rc-e894bd69",
|
|
136
|
+
"recipeName": "模拟器配方-mtpsdote",
|
|
137
|
+
"productId": "pd-f0436841",
|
|
138
|
+
"productName": "模拟器产品-mtpsdote",
|
|
139
|
+
"startedAt": "2026-09-06T20:27:23.270+08:00",
|
|
140
|
+
"taggedSamples": 2687
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"lineId": "ln-9d5f8b3d",
|
|
144
|
+
"runId": "rr-2518361e",
|
|
145
|
+
"recipeId": "rc-25bb6e07",
|
|
146
|
+
"recipeName": "模拟器配方-mtpt1b1w",
|
|
147
|
+
"productId": "pd-8f6910a4",
|
|
148
|
+
"productName": "模拟器产品-mtpt1b1w",
|
|
149
|
+
"startedAt": "2026-09-06T20:45:45.440+08:00",
|
|
150
|
+
"taggedSamples": 3567
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"lineId": "ln-62776cae",
|
|
154
|
+
"runId": "rr-de58d68b",
|
|
155
|
+
"recipeId": "rc-56fa981e",
|
|
156
|
+
"recipeName": "模拟器配方-mtptla26",
|
|
157
|
+
"productId": "pd-e2b76cd7",
|
|
158
|
+
"productName": "模拟器产品-mtptla26",
|
|
159
|
+
"startedAt": "2026-09-06T21:01:14.334+08:00",
|
|
160
|
+
"taggedSamples": 0
|
|
131
161
|
}
|
|
132
162
|
]
|
|
@@ -196,5 +196,16 @@
|
|
|
196
196
|
"rotationY": 18,
|
|
197
197
|
"workspaceId": "",
|
|
198
198
|
"updatedAt": "2026-09-01T06:56:01.325Z"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"channelId": "1b27b716-5276-42ba-b6f3-415baf377218",
|
|
202
|
+
"x": 879.6,
|
|
203
|
+
"z": 2342.5,
|
|
204
|
+
"radiusX": 277.9,
|
|
205
|
+
"radiusZ": 275,
|
|
206
|
+
"shape": "ellipse",
|
|
207
|
+
"rotationY": 0,
|
|
208
|
+
"workspaceId": "",
|
|
209
|
+
"updatedAt": "2026-09-06T20:08:31.440+08:00"
|
|
199
210
|
}
|
|
200
211
|
]
|
|
@@ -32,6 +32,7 @@ import { createChannelEventRepo } from '../services/workshop/db/channel-event.re
|
|
|
32
32
|
import { createApprovalHistoryRepo, createAlarmEventRepo, createAuditRepo, createApprovalRequestRepo } from '../services/workshop/db/ops.repo'
|
|
33
33
|
import { bindOpsRepos } from '../services/workshop/ops/ops'
|
|
34
34
|
import { configureHitlResolver } from '../services/workshop/agents/hitl-registry'
|
|
35
|
+
import { configureAgentBadgeResolver } from '../services/workshop/agents/agent-badge'
|
|
35
36
|
import { ensureAllEventRecorders } from '../api/workshop/ws'
|
|
36
37
|
import { createAgentImpl } from '../services/workshop/agents/factory'
|
|
37
38
|
import {
|
|
@@ -133,6 +134,14 @@ export default function workshopPlugin(nitroApp: {
|
|
|
133
134
|
return row ? { channelId: row.channelId, agentName: row.name } : null
|
|
134
135
|
})
|
|
135
136
|
|
|
137
|
+
// 运维日志徽标:agentId → 「Channel名/成员名」(Agent 下发/判定/回退入册的操作者展示)
|
|
138
|
+
configureAgentBadgeResolver((agentId) => {
|
|
139
|
+
const row = repos.channelAgents.findById(agentId)
|
|
140
|
+
if (!row) return null
|
|
141
|
+
const ch = repos.channels.findById(row.channelId)
|
|
142
|
+
return { name: row.name, channelName: ch?.name ?? row.channelId.slice(0, 8) }
|
|
143
|
+
})
|
|
144
|
+
|
|
136
145
|
// 懒加载恢复:仅激活有待办任务的 channel(装配 lead + 调度循环);其余纯持久化
|
|
137
146
|
manager.restore()
|
|
138
147
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentBadge —— agentId → 「Channel名/成员名」人话徽标解析。
|
|
3
|
+
*
|
|
4
|
+
* 运维日志 actorName 用:Agent 的数控下发/判定/回退入册时,操作者不再落
|
|
5
|
+
* agentId(UUID),而是「ChannelName/WorkerName」,与用户(用户名)和系统
|
|
6
|
+
* (system)在 /logs 来源列天然区分。
|
|
7
|
+
* 解析器由 plugins/workshop.ts 装配时注入(同 configureHitlResolver 模式,
|
|
8
|
+
* 避免 agents/* 反向依赖 runtime/manager);未装配(单测/极早期)退回 agentId。
|
|
9
|
+
*/
|
|
10
|
+
export interface AgentBadge {
|
|
11
|
+
/** 成员名(worker 名) */
|
|
12
|
+
name: string
|
|
13
|
+
/** 所属 Channel 名 */
|
|
14
|
+
channelName: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
type BadgeResolver = (agentId: string) => AgentBadge | null
|
|
18
|
+
|
|
19
|
+
const g = globalThis as typeof globalThis & { __awBadgeResolver?: BadgeResolver }
|
|
20
|
+
|
|
21
|
+
export function configureAgentBadgeResolver(fn: BadgeResolver): void {
|
|
22
|
+
g.__awBadgeResolver = fn
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function agentBadge(agentId: string): AgentBadge | null {
|
|
26
|
+
try {
|
|
27
|
+
return g.__awBadgeResolver?.(agentId) ?? null
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** 徽标串:「Channel名/成员名」;解析失败退回 agentId(可追溯,不谎报) */
|
|
35
|
+
export function agentBadgeLabel(agentId: string): string {
|
|
36
|
+
const b = agentBadge(agentId)
|
|
37
|
+
return b ? `${b.channelName}/${b.name}` : agentId
|
|
38
|
+
}
|