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.
Files changed (99) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +924 -755
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +924 -755
  3. package/.output/nitro.json +1 -1
  4. package/.output/public/_nuxt/{DMdVWIGz.js → B-E8fXAO.js} +1 -1
  5. package/.output/public/_nuxt/{DyisHHzD.js → BA3XzwiD.js} +1 -1
  6. package/.output/public/_nuxt/{CD1SlCoI.js → BJem8_v5.js} +4 -4
  7. package/.output/public/_nuxt/{6vYobj4F.js → BWC4HQHQ.js} +1 -1
  8. package/.output/public/_nuxt/{kkEthL84.js → Ba7YofCb.js} +1 -1
  9. package/.output/public/_nuxt/{DGVAuScD.js → C_2bTK0C.js} +1 -1
  10. package/.output/public/_nuxt/{B53Mp7lD.js → CgT5wMfz.js} +1 -1
  11. package/.output/public/_nuxt/{DT-Wg8r1.js → D4CLp1hc.js} +1 -1
  12. package/.output/public/_nuxt/{C6m-kenn.js → DAR70Lf5.js} +1 -1
  13. package/.output/public/_nuxt/{B3Psw_sL.js → DBXhDLgl.js} +1 -1
  14. package/.output/public/_nuxt/{Cj6139IM.js → DsOkkMX3.js} +1 -1
  15. package/.output/public/_nuxt/DtM4RX5T.js +1 -0
  16. package/.output/public/_nuxt/{DaE5saZg.js → QT54MQV9.js} +1 -1
  17. package/.output/public/_nuxt/{Bmpvki7M.js → UtviM1bg.js} +1 -1
  18. package/.output/public/_nuxt/_id_.pF-B9O6u.css +1 -0
  19. package/.output/public/_nuxt/builds/latest.json +1 -1
  20. package/.output/public/_nuxt/builds/meta/6a0a88de-639e-4e7b-b7c1-7f4034e04787.json +1 -0
  21. package/.output/server/chunks/_/nitro.mjs +1411 -910
  22. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  23. package/.output/server/chunks/build/{TownView-CunmEMzS.mjs → TownView-ql2eHZOg.mjs} +4 -4
  24. package/.output/server/chunks/build/{TownView-CunmEMzS.mjs.map → TownView-ql2eHZOg.mjs.map} +1 -1
  25. package/.output/server/chunks/build/{_id_-CVnMdSeG.mjs → _id_-CwR5oLu9.mjs} +4 -4
  26. package/.output/server/chunks/build/{_id_-CVnMdSeG.mjs.map → _id_-CwR5oLu9.mjs.map} +1 -1
  27. package/.output/server/chunks/build/{_id_-D265Wh_k.mjs → _id_-DvJZ5Qis.mjs} +168 -120
  28. package/.output/server/chunks/build/_id_-DvJZ5Qis.mjs.map +1 -0
  29. package/.output/server/chunks/build/{_wsId_-eNJmBp05.mjs → _wsId_-B3aB9bIp.mjs} +5 -5
  30. package/.output/server/chunks/build/{_wsId_-eNJmBp05.mjs.map → _wsId_-B3aB9bIp.mjs.map} +1 -1
  31. package/.output/server/chunks/build/{daq-DxaXk_8N.mjs → daq-epWL_sC7.mjs} +5 -5
  32. package/.output/server/chunks/build/{daq-DxaXk_8N.mjs.map → daq-epWL_sC7.mjs.map} +1 -1
  33. package/.output/server/chunks/build/{dcw-B0dtiHFG.mjs → dcw-CBPaFj2f.mjs} +2 -2
  34. package/.output/server/chunks/build/{dcw-B0dtiHFG.mjs.map → dcw-CBPaFj2f.mjs.map} +1 -1
  35. package/.output/server/chunks/build/{logs-UWXeNKy_.mjs → logs-Bz1p6x_5.mjs} +3 -3
  36. package/.output/server/chunks/build/{logs-UWXeNKy_.mjs.map → logs-Bz1p6x_5.mjs.map} +1 -1
  37. package/.output/server/chunks/build/{pages-Aexs6LjD.mjs → pages-Dq7_H4FK.mjs} +3 -3
  38. package/.output/server/chunks/build/{pages-Aexs6LjD.mjs.map → pages-Dq7_H4FK.mjs.map} +1 -1
  39. package/.output/server/chunks/build/{town-BbaR-8io.mjs → town-CstiKxf_.mjs} +5 -5
  40. package/.output/server/chunks/build/{town-BbaR-8io.mjs.map → town-CstiKxf_.mjs.map} +1 -1
  41. package/.output/server/chunks/build/{useDaqStream-BkmyQT06.mjs → useDaqStream-BOOZ-p-l.mjs} +2 -2
  42. package/.output/server/chunks/build/{useDaqStream-BkmyQT06.mjs.map → useDaqStream-BOOZ-p-l.mjs.map} +1 -1
  43. package/.output/server/chunks/build/{useDcwStream-DWVoU96J.mjs → useDcwStream-DyB2ufQI.mjs} +15 -1
  44. package/.output/server/chunks/build/{useDcwStream-DWVoU96J.mjs.map → useDcwStream-DyB2ufQI.mjs.map} +1 -1
  45. package/.output/server/chunks/build/{useDeviceTwins-34WGk9aN.mjs → useDeviceTwins-ZbT86L9O.mjs} +2 -2
  46. package/.output/server/chunks/build/{useDeviceTwins-34WGk9aN.mjs.map → useDeviceTwins-ZbT86L9O.mjs.map} +1 -1
  47. package/.output/server/chunks/build/{useOpsLog-C9zTzYof.mjs → useOpsLog-8HCYFb6n.mjs} +2 -2
  48. package/.output/server/chunks/build/{useOpsLog-C9zTzYof.mjs.map → useOpsLog-8HCYFb6n.mjs.map} +1 -1
  49. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  50. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  51. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +42 -0
  52. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -0
  53. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +29 -0
  54. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -0
  55. package/.output/server/chunks/routes/api/workshop/dcw/recipes/{_id_.patch.mjs → index.patch.mjs} +11 -6
  56. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -0
  57. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  58. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  59. package/.output/server/chunks/routes/renderer.mjs +1 -1
  60. package/.output/server/chunks/virtual/entry.mjs +34 -8
  61. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  62. package/.output/server/package.json +1 -1
  63. package/app/composables/workshop/useDcwStream.ts +12 -0
  64. package/app/pages/dcw/[id].vue +165 -1
  65. package/i18n/locales/en.ts +13 -0
  66. package/i18n/locales/zh-CN.ts +13 -0
  67. package/package.json +1 -1
  68. package/scripts/_dbg-opslog-agent-e2e.mjs +191 -0
  69. package/scripts/_dbg-recipe-e2e.mjs +176 -0
  70. package/server/api/workshop/daq/index.post.ts +1 -1
  71. package/server/api/workshop/dcw/lines/index.post.ts +1 -1
  72. package/server/api/workshop/dcw/recipes/{[id].patch.ts → [id]/index.patch.ts} +9 -3
  73. package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +28 -0
  74. package/server/api/workshop/dcw/recipes/[id]/versions.get.ts +14 -0
  75. package/server/data/daqs.json +471 -61
  76. package/server/data/dcw-lines.json +49 -0
  77. package/server/data/dcw-products.json +56 -0
  78. package/server/data/dcw-recipes.json +64 -0
  79. package/server/data/dcw-rollback.json +239 -6
  80. package/server/data/dcw-runs.json +162 -142
  81. package/server/data/dcw-writes.json +132 -0
  82. package/server/data/dcws.json +344 -198
  83. package/server/data/line-runs.json +41 -11
  84. package/server/data/scene-layouts.json +11 -0
  85. package/server/plugins/workshop.ts +9 -0
  86. package/server/services/workshop/agents/agent-badge.ts +38 -0
  87. package/server/services/workshop/agents/host-tool-bridge.ts +642 -612
  88. package/server/services/workshop/agents/industrial-tools.ts +357 -4
  89. package/server/services/workshop/daq/drivers.ts +41 -8
  90. package/server/services/workshop/dcw/dcw-controller.ts +50 -2
  91. package/server/services/workshop/dcw/dcw-recipe.repo.ts +81 -3
  92. package/server/services/workshop/dcw/drivers.ts +2 -2
  93. package/server/services/workshop/dcw/recipe-rollback-manager.ts +8 -6
  94. package/shared/dcw-protocol.ts +14 -2
  95. package/.output/public/_nuxt/Bc3PiGGr.js +0 -1
  96. package/.output/public/_nuxt/_id_.DTvjd6VN.css +0 -1
  97. package/.output/public/_nuxt/builds/meta/65f6bed9-b794-44a4-805a-e22700c10817.json +0 -1
  98. package/.output/server/chunks/build/_id_-D265Wh_k.mjs.map +0 -1
  99. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs.map +0 -1
@@ -13,7 +13,7 @@ import { broadcastSceneEvent } from '../../../services/workshop/scene-events'
13
13
  import { recordOps } from '../../../services/workshop/ops/ops'
14
14
 
15
15
  export default defineApiHandler(async (event) => {
16
- requireRole(event, ['admin', 'editor'])
16
+ const user = requireRole(event, ['admin', 'editor'])
17
17
  bindDaqHost(broadcastSceneEvent)
18
18
  const body = await readBody<DaqCreateInput>(event) ?? {}
19
19
  const node = getDaqController().create(body)
@@ -11,7 +11,7 @@ import { recordOps } from '@/server/services/workshop/ops/ops'
11
11
  import type { LineInput } from '#shared/dcw-protocol'
12
12
 
13
13
  export default defineApiHandler(async (event) => {
14
- requireRole(event, ['admin', 'editor'])
14
+ const user = requireRole(event, ['admin', 'editor'])
15
15
  bindDcwBroadcast(broadcastSceneEvent)
16
16
  const body = await readBody<LineInput>(event) ?? { name: '' }
17
17
  const line = getDcwController().createLine(body)
@@ -1,16 +1,22 @@
1
1
  /**
2
2
  * PATCH /api/workshop/dcw/recipes/:id —— 编辑配方。
3
+ * params 变更自动版本化(paramsHistory 入史,归因=当前用户)。
3
4
  */
4
5
  import { getRouterParam, readBody } from 'h3'
5
6
  import type { RecipeInput } from '#shared/dcw-protocol'
6
7
  import { resolveUser } from '@/server/api/workshop/caller'
7
8
  import { defineApiHandler } from '@/server/utils/response'
8
- import { getDcwRecipeRepo } from '@/server/services/workshop/dcw/dcw-recipe.repo'
9
+ import { getDcwController } from '@/server/services/workshop/dcw/dcw-controller'
9
10
 
10
11
  export default defineApiHandler(async (event) => {
11
- resolveUser(event)
12
+ const user = resolveUser(event)
12
13
  const id = getRouterParam(event, 'id') ?? ''
13
14
  const body = await readBody<Partial<RecipeInput>>(event) ?? {}
14
- const recipe = getDcwRecipeRepo().update(id, body)
15
+ const recipe = getDcwController().updateRecipe(id, body, {
16
+ by: 'user',
17
+ actorName: user.name,
18
+ actor: user.id,
19
+ description: '界面编辑配方',
20
+ })
15
21
  return { recipe }
16
22
  })
@@ -0,0 +1,28 @@
1
+ /**
2
+ * POST /api/workshop/dcw/recipes/:id/revert —— 回退配方参数到指定历史版本/已知良好批次。
3
+ * 生成新版本(非破坏;历史完整保留)。body: { version?: number, toLastGood?: boolean, reason: string }。
4
+ */
5
+ import { getRouterParam, readBody } from 'h3'
6
+ import { resolveUser } from '@/server/api/workshop/caller'
7
+ import { defineApiHandler } from '@/server/utils/response'
8
+ import { getDcwController } from '@/server/services/workshop/dcw/dcw-controller'
9
+ import { AppError, ErrorCodes } from '@/server/utils/errors'
10
+
11
+ export default defineApiHandler(async (event) => {
12
+ const user = resolveUser(event)
13
+ const id = getRouterParam(event, 'id') ?? ''
14
+ const body = await readBody<{ version?: number, toLastGood?: boolean, reason?: string }> (event) ?? {}
15
+ if (!body.toLastGood && body.version == null) {
16
+ throw new AppError(400, ErrorCodes.VALIDATION_ERROR, '需提供 version(历史版本号)或 toLastGood=true')
17
+ }
18
+ const recipe = getDcwController().revertRecipe(id, {
19
+ version: body.version,
20
+ toLastGood: body.toLastGood === true,
21
+ }, {
22
+ by: 'user',
23
+ actorName: user.name,
24
+ actor: user.id,
25
+ description: body.reason?.trim() || '界面回退',
26
+ })
27
+ return { recipe }
28
+ })
@@ -0,0 +1,14 @@
1
+ /**
2
+ * GET /api/workshop/dcw/recipes/:id/versions —— 配方参数版本历史(旧→新,尾行=当前版)。
3
+ * 每条:version/at/by(来源)/actorName(人话操作者)/description(变更原因)/params。
4
+ */
5
+ import { getRouterParam } from 'h3'
6
+ import { resolveUser } from '@/server/api/workshop/caller'
7
+ import { defineApiHandler } from '@/server/utils/response'
8
+ import { getDcwController } from '@/server/services/workshop/dcw/dcw-controller'
9
+
10
+ export default defineApiHandler(async (event) => {
11
+ resolveUser(event)
12
+ const id = getRouterParam(event, 'id') ?? ''
13
+ return { versions: getDcwController().recipeVersions(id) }
14
+ })