agentworkshop 0.7.14 → 0.7.16

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.
Files changed (35) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +819 -755
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +819 -755
  3. package/.output/nitro.json +1 -1
  4. package/.output/public/_nuxt/builds/latest.json +1 -1
  5. package/.output/public/_nuxt/builds/meta/cf0a8831-4514-493d-ad5a-4e371a089ef9.json +1 -0
  6. package/.output/server/chunks/_/nitro.mjs +885 -725
  7. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  8. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  9. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  10. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  11. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  12. package/.output/server/package.json +1 -1
  13. package/package.json +1 -1
  14. package/scripts/_dbg-harness-ui-e2e.py +23 -13
  15. package/scripts/_dbg-opslog-agent-e2e.mjs +191 -0
  16. package/scripts/aw-expose.mjs +159 -0
  17. package/server/api/workshop/daq/index.post.ts +1 -1
  18. package/server/api/workshop/dcw/lines/index.post.ts +1 -1
  19. package/server/data/daqs.json +471 -61
  20. package/server/data/dcw-lines.json +49 -0
  21. package/server/data/dcw-products.json +49 -0
  22. package/server/data/dcw-recipes.json +64 -0
  23. package/server/data/dcw-rollback.json +239 -6
  24. package/server/data/dcw-runs.json +162 -142
  25. package/server/data/dcw-writes.json +156 -0
  26. package/server/data/dcws.json +363 -217
  27. package/server/data/line-runs.json +41 -11
  28. package/server/data/scene-layouts.json +11 -0
  29. package/server/plugins/workshop.ts +9 -0
  30. package/server/services/workshop/agents/agent-badge.ts +38 -0
  31. package/server/services/workshop/agents/host-tool-bridge.ts +622 -612
  32. package/server/services/workshop/agents/industrial-tools.ts +139 -4
  33. package/server/services/workshop/daq/drivers.ts +25 -5
  34. package/server/services/workshop/dcw/recipe-rollback-manager.ts +8 -6
  35. package/.output/public/_nuxt/builds/meta/23c30854-f9e1-4651-bc3a-b695ef5faca4.json +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": 49286
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": 0
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": 0
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": 0
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": 0
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": 17196
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": 48679
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": 48652
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": 3925
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": 4136
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": 3995
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
+ }