agentworkshop 0.7.41 → 0.7.44

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 (265) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B8uy9iRW.js +1 -0
  3. package/.output/public/_nuxt/BGTYYQH-.js +1 -0
  4. package/.output/public/_nuxt/BUmHEJ77.js +2 -0
  5. package/.output/public/_nuxt/BY7YrV_D.js +1 -0
  6. package/.output/public/_nuxt/Bqcgz95s.js +18 -0
  7. package/.output/public/_nuxt/C7UlqPeD.js +1 -0
  8. package/.output/public/_nuxt/CTmDn-YP.js +1 -0
  9. package/.output/public/_nuxt/Cs8pVeVG.js +1 -0
  10. package/.output/public/_nuxt/DKySmNPI.js +14 -0
  11. package/.output/public/_nuxt/Di0NY_ht.js +1 -0
  12. package/.output/public/_nuxt/Du9v6qGB.js +1 -0
  13. package/.output/public/_nuxt/{DGbd-UiG.js → EHlEMRii.js} +1 -1
  14. package/.output/public/_nuxt/Eke1fs-U.js +1 -0
  15. package/.output/public/_nuxt/{DeJykBFf.js → H0BcqZtT.js} +1 -1
  16. package/.output/public/_nuxt/{C4oW1HsE.js → HSYEkkce.js} +1 -1
  17. package/.output/public/_nuxt/{D_OTvQza.js → J9oU00D1.js} +1 -1
  18. package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +1 -0
  19. package/.output/public/_nuxt/SSyAPaHc.js +1 -0
  20. package/.output/public/_nuxt/TownView.li4EMQxK.css +1 -0
  21. package/.output/public/_nuxt/VdLk4jLE2.js +1 -0
  22. package/.output/public/_nuxt/_id_.BhsXoEuk.css +1 -0
  23. package/.output/public/_nuxt/_id_.DQyj-WKN.css +1 -0
  24. package/.output/public/_nuxt/{_wsId_.B4WiqkIS.css → _wsId_.CTx-BlfF.css} +1 -1
  25. package/.output/public/_nuxt/aShsv_rG.js +19 -0
  26. package/.output/public/_nuxt/{yF0aYMF1.js → aesgXKSr.js} +3 -3
  27. package/.output/public/_nuxt/agents.B21nUEUX.css +1 -0
  28. package/.output/public/_nuxt/aml.ekTjxFkf.css +1 -0
  29. package/.output/public/_nuxt/builds/latest.json +1 -1
  30. package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +1 -0
  31. package/.output/public/_nuxt/channel-templates.DplM1pJ3.css +1 -0
  32. package/.output/public/_nuxt/daq.BdVmoIfe.css +1 -0
  33. package/.output/public/_nuxt/dcw.DCgyzpWV.css +1 -0
  34. package/.output/public/_nuxt/{default.J32SgqFY.css → default.Bh3L2HU8.css} +1 -1
  35. package/.output/public/_nuxt/lHAxdSsj.js +1 -0
  36. package/.output/public/_nuxt/pages.j9rzRocr.css +1 -0
  37. package/.output/public/_nuxt/plugins.DhiZbHU8.css +1 -0
  38. package/.output/public/_nuxt/settings.BRx9rIDg.css +1 -0
  39. package/.output/public/_nuxt/teams.BLlOPB_Z.css +1 -0
  40. package/.output/public/_nuxt/tokens.De8xzszn.css +1 -0
  41. package/.output/public/_nuxt/workshop.D1jFNkrn.css +1 -0
  42. package/.output/server/chunks/_/nitro.mjs +748 -733
  43. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs → OmpTerminalPanel-CVvxpsF7.mjs} +15 -15
  44. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs.map → OmpTerminalPanel-CVvxpsF7.mjs.map} +1 -1
  45. package/.output/server/chunks/build/{TownView--otsnr_7.mjs → TownView-CJ6IsDCc.mjs} +226 -225
  46. package/.output/server/chunks/build/{TownView--otsnr_7.mjs.map → TownView-CJ6IsDCc.mjs.map} +1 -1
  47. package/.output/server/chunks/build/{_id_-Brv-JSvr.mjs → _id_-CVD_H0ir.mjs} +143 -142
  48. package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +1 -0
  49. package/.output/server/chunks/build/{_id_-D9pl1OZy.mjs → _id_-CtxMb3qp.mjs} +41 -41
  50. package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +1 -0
  51. package/.output/server/chunks/build/{_wsId_-BASfDf0s.mjs → _wsId_-DpY3T-md.mjs} +514 -444
  52. package/.output/server/chunks/build/{_wsId_-BASfDf0s.mjs.map → _wsId_-DpY3T-md.mjs.map} +1 -1
  53. package/.output/server/chunks/build/{agents-CLQqJF2y.mjs → agents-DsCkuXDV.mjs} +49 -46
  54. package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +1 -0
  55. package/.output/server/chunks/build/{aml-_7FdFL2p.mjs → aml-CT0xKGKI.mjs} +122 -105
  56. package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +1 -0
  57. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +117 -0
  58. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +1 -0
  59. package/.output/server/chunks/build/{channel-templates-p6SZNjlM.mjs → channel-templates-Dla9FbYa.mjs} +49 -37
  60. package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +1 -0
  61. package/.output/server/chunks/build/{daq-DkMvD8sg.mjs → daq-DWWSKGAV.mjs} +89 -88
  62. package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +1 -0
  63. package/.output/server/chunks/build/{dcw-C1jgVJkO.mjs → dcw-CT8k17_E.mjs} +44 -43
  64. package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +1 -0
  65. package/.output/server/chunks/build/{default-BE4r0FZN.mjs → default-D3525UFX.mjs} +16 -15
  66. package/.output/server/chunks/build/{default-BE4r0FZN.mjs.map → default-D3525UFX.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs → monitor-Dh2Kvaq5.mjs} +2 -2
  68. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs.map → monitor-Dh2Kvaq5.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{pages-B0bUWnC6.mjs → pages-BHcSBM2D.mjs} +24 -18
  70. package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +1 -0
  71. package/.output/server/chunks/build/{plugins-lGlUr1lj.mjs → plugins-BNgIi61W.mjs} +23 -17
  72. package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +1 -0
  73. package/.output/server/chunks/build/{settings-Ddd1qx2Z.mjs → settings-ipYBDWdn.mjs} +45 -44
  74. package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +1 -0
  75. package/.output/server/chunks/build/{teams-MEDLZdMn.mjs → teams-5lx-CwFa.mjs} +47 -44
  76. package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +1 -0
  77. package/.output/server/chunks/build/{tokens-C7fTM5C2.mjs → tokens-q-IDT8Io.mjs} +73 -53
  78. package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +1 -0
  79. package/.output/server/chunks/build/{town-CoQdblbZ.mjs → town-QJWB5wng.mjs} +3 -2
  80. package/.output/server/chunks/build/town-QJWB5wng.mjs.map +1 -0
  81. package/.output/server/chunks/build/{workshop-BL5bhfs0.mjs → workshop-BIlCj_ZP.mjs} +45 -45
  82. package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +1 -0
  83. package/.output/server/chunks/routes/renderer.mjs +1 -1
  84. package/.output/server/chunks/virtual/entry.mjs +637 -86
  85. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  86. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  87. package/.output/server/package.json +1 -1
  88. package/README-zh.md +13 -3
  89. package/README.md +13 -3
  90. package/app/components/AppHeader.vue +961 -959
  91. package/app/components/workshop/A2aRpcDebugger.vue +237 -237
  92. package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
  93. package/app/components/workshop/AgentLanesView.vue +998 -998
  94. package/app/components/workshop/ArtifactCard.vue +120 -120
  95. package/app/components/workshop/AssetLibrary.vue +452 -452
  96. package/app/components/workshop/ChannelSessionList.vue +812 -804
  97. package/app/components/workshop/CommandPalette.vue +269 -269
  98. package/app/components/workshop/Composer.vue +827 -827
  99. package/app/components/workshop/DeviceTwinPanel.vue +643 -643
  100. package/app/components/workshop/EventBlock.vue +602 -602
  101. package/app/components/workshop/FileSelectorModal.vue +188 -188
  102. package/app/components/workshop/InspectorPanel.vue +301 -301
  103. package/app/components/workshop/MemoryPanel.vue +364 -364
  104. package/app/components/workshop/MultiChannelView.vue +189 -189
  105. package/app/components/workshop/TaskBoardView.vue +686 -686
  106. package/app/components/workshop/TaskInspectorDrawer.vue +390 -390
  107. package/app/components/workshop/TranscriptTimeline.vue +601 -601
  108. package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
  109. package/app/components/workshop/blocks/ClusterError.vue +85 -85
  110. package/app/components/workshop/blocks/ClusterLife.vue +87 -87
  111. package/app/components/workshop/blocks/ClusterMember.vue +95 -93
  112. package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
  113. package/app/components/workshop/blocks/ClusterOther.vue +67 -67
  114. package/app/components/workshop/blocks/ClusterStatus.vue +149 -147
  115. package/app/components/workshop/blocks/ClusterTool.vue +158 -158
  116. package/app/components/workshop/terminal/OmpTerminalPanel.vue +1011 -1011
  117. package/app/components/workshop/town/TownView.vue +56 -56
  118. package/app/middleware/locale-cookie.global.ts +22 -0
  119. package/app/pages/aml/index.vue +24 -2
  120. package/app/pages/daq/[id].vue +11 -11
  121. package/app/pages/daq/index.vue +2316 -2316
  122. package/app/pages/dcw/[id].vue +18 -19
  123. package/app/pages/dcw/index.vue +3 -3
  124. package/app/pages/index.vue +987 -981
  125. package/app/pages/plugins/index.vue +317 -311
  126. package/app/pages/settings.vue +1564 -1562
  127. package/app/pages/tokens.vue +15 -15
  128. package/app/pages/workshop/agents.vue +612 -609
  129. package/app/pages/workshop/channel-templates.vue +18 -11
  130. package/app/pages/workshop/index.vue +668 -668
  131. package/app/pages/workshop/teams.vue +743 -740
  132. package/app/pages/workshop/w/[wsId].vue +704 -704
  133. package/app/plugins/locale-restore.client.ts +16 -1
  134. package/app/utils/builtin-catalog.ts +104 -0
  135. package/config.yml +170 -170
  136. package/docs/full-test-plan.md +2 -3
  137. package/i18n/locales/en.ts +293 -35
  138. package/i18n/locales/zh-CN.ts +265 -7
  139. package/package.json +2 -2
  140. package/scripts/_dbg-perms-e2e.mjs +132 -109
  141. package/scripts/_demo-agentteam-capture.mjs +278 -0
  142. package/scripts/_e2e-ui-functional.mjs +371 -0
  143. package/scripts/_i18n-en-cjk-scan.mjs +28 -0
  144. package/scripts/_i18n-en-verify.mjs +107 -0
  145. package/scripts/_i18n-extra-checks.mjs +53 -0
  146. package/scripts/_i18n-scan-hardcoded.mjs +180 -0
  147. package/scripts/_i18n-verify-keys.mjs +50 -0
  148. package/scripts/_loop-biax-campaign.mjs +15 -9
  149. package/scripts/_sweep-button-contrast.mjs +87 -0
  150. package/scripts/ui/record-demo.mjs +557 -0
  151. package/server/plugins-builtin/diag-bridge/index.mjs +608 -661
  152. package/server/plugins-builtin/rag-bridge/index.mjs +57 -133
  153. package/server/services/workshop/daq/drivers.ts +11 -0
  154. package/.output/public/_nuxt/88GOowgO2.js +0 -1
  155. package/.output/public/_nuxt/BN16aRdQ.js +0 -1
  156. package/.output/public/_nuxt/BWVhZntO.js +0 -1
  157. package/.output/public/_nuxt/BXxH0UQE.js +0 -1
  158. package/.output/public/_nuxt/BsROmY89.js +0 -1
  159. package/.output/public/_nuxt/C0ZrS1KL.js +0 -19
  160. package/.output/public/_nuxt/C4s_niy-.js +0 -14
  161. package/.output/public/_nuxt/D6mbFA-a.js +0 -1
  162. package/.output/public/_nuxt/DS8qj8EL.js +0 -1
  163. package/.output/public/_nuxt/DUjW5Yq5.js +0 -1
  164. package/.output/public/_nuxt/Dap5PmTL.js +0 -2
  165. package/.output/public/_nuxt/Dqw1lpr-.js +0 -1
  166. package/.output/public/_nuxt/DvLxILQP.js +0 -1
  167. package/.output/public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css +0 -1
  168. package/.output/public/_nuxt/TownView.f-YOdXRs.css +0 -1
  169. package/.output/public/_nuxt/_id_.D9ymtHB5.css +0 -1
  170. package/.output/public/_nuxt/_id_.jf-_8E_c.css +0 -1
  171. package/.output/public/_nuxt/agents.ZD0rVdHE.css +0 -1
  172. package/.output/public/_nuxt/aml.BN8ZEW4h.css +0 -1
  173. package/.output/public/_nuxt/builds/meta/78a295bb-2072-48a4-8b46-6d545fdae743.json +0 -1
  174. package/.output/public/_nuxt/channel-templates.BOtahzPi.css +0 -1
  175. package/.output/public/_nuxt/daq.DjSgY94l.css +0 -1
  176. package/.output/public/_nuxt/dcw.8Y7FqCVN.css +0 -1
  177. package/.output/public/_nuxt/eqq3wWQF.js +0 -18
  178. package/.output/public/_nuxt/pages.D7aSDlUI.css +0 -1
  179. package/.output/public/_nuxt/plugins.sb4nDGqr.css +0 -1
  180. package/.output/public/_nuxt/qr6R6Ha1.js +0 -1
  181. package/.output/public/_nuxt/settings.BTgR-NiE.css +0 -1
  182. package/.output/public/_nuxt/teams.CxnxKVVs.css +0 -1
  183. package/.output/public/_nuxt/tokens.BFY7qv4f.css +0 -1
  184. package/.output/public/_nuxt/workshop.CR_QzeAN.css +0 -1
  185. package/.output/server/chunks/build/_id_-Brv-JSvr.mjs.map +0 -1
  186. package/.output/server/chunks/build/_id_-D9pl1OZy.mjs.map +0 -1
  187. package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +0 -1
  188. package/.output/server/chunks/build/aml-_7FdFL2p.mjs.map +0 -1
  189. package/.output/server/chunks/build/channel-templates-p6SZNjlM.mjs.map +0 -1
  190. package/.output/server/chunks/build/daq-DkMvD8sg.mjs.map +0 -1
  191. package/.output/server/chunks/build/dcw-C1jgVJkO.mjs.map +0 -1
  192. package/.output/server/chunks/build/pages-B0bUWnC6.mjs.map +0 -1
  193. package/.output/server/chunks/build/plugins-lGlUr1lj.mjs.map +0 -1
  194. package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +0 -1
  195. package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +0 -1
  196. package/.output/server/chunks/build/tokens-C7fTM5C2.mjs.map +0 -1
  197. package/.output/server/chunks/build/town-CoQdblbZ.mjs.map +0 -1
  198. package/.output/server/chunks/build/workshop-BL5bhfs0.mjs.map +0 -1
  199. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.continue.json +0 -1
  200. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.json +0 -1
  201. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source +0 -153
  202. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source +0 -153
  203. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source +0 -431
  204. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source +0 -180
  205. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source +0 -112
  206. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source +0 -227
  207. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source +0 -131
  208. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source +0 -160
  209. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source +0 -157
  210. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source +0 -348
  211. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source +0 -296
  212. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source +0 -285
  213. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source +0 -217
  214. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source +0 -301
  215. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source +0 -151
  216. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source +0 -135
  217. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source +0 -156
  218. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source +0 -72
  219. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source +0 -469
  220. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source +0 -259
  221. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source +0 -97
  222. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source +0 -277
  223. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source +0 -171
  224. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source +0 -425
  225. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source +0 -99
  226. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source +0 -325
  227. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source +0 -332
  228. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source +0 -43
  229. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source +0 -154
  230. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source +0 -531
  231. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source +0 -439
  232. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source +0 -323
  233. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source +0 -433
  234. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source +0 -280
  235. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source +0 -117
  236. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source +0 -160
  237. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source +0 -101
  238. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +0 -14
  239. package/scripts/_dbg-audit-all-pages.mjs +0 -43
  240. package/scripts/_dbg-daq-frames-e2e.mjs +0 -118
  241. package/scripts/_dbg-daq-rowstyle-verify.mjs +0 -112
  242. package/scripts/_dbg-hitl-timeout-e2e.mjs +0 -93
  243. package/scripts/_dbg-live-line-e2e.mjs +0 -279
  244. package/scripts/_dbg-minimal-omp.mjs +0 -77
  245. package/scripts/_dbg-mode-nav.mjs +0 -173
  246. package/scripts/_dbg-real-scenario-timeline.log +0 -55
  247. package/scripts/_dbg-team-repro.mjs +0 -76
  248. package/scripts/_dbg-town-agents-probe.mjs +0 -60
  249. package/scripts/_dbg-visual-acceptance.mjs +0 -63
  250. package/scripts/_townview_style.css +0 -1185
  251. package/scripts/_townview_template.html +0 -1215
  252. package/server/data/agent-node-bindings.json +0 -554
  253. package/server/data/daq-templates.json +0 -16
  254. package/server/data/daqs.json +0 -7464
  255. package/server/data/dcw-lines.json +0 -1787
  256. package/server/data/dcw-products.json +0 -1626
  257. package/server/data/dcw-recipes.json +0 -4672
  258. package/server/data/dcw-rollback.json +0 -20754
  259. package/server/data/dcw-runs.json +0 -6354
  260. package/server/data/dcw-templates.json +0 -146
  261. package/server/data/dcw-writes.json +0 -15650
  262. package/server/data/dcws.json +0 -9033
  263. package/server/data/device-twins.json +0 -133
  264. package/server/data/line-runs.json +0 -322
  265. package/server/data/scene-layouts.json +0 -277
@@ -1,11 +1,26 @@
1
1
  /**
2
2
  * 语言恢复(detectBrowserLanguage 关闭):客户端启动时读取持久化选择。
3
- * AppHeader/settings 切换时写入 localStorage 并强刷(保证 setup 期词条整体切换)。
3
+ * AppHeader/settings 切换时写入 localStorage + cookie 并强刷(保证 setup 期词条整体切换)。
4
4
  * 注意:插件上下文不能调 useI18n()(要求 setup),必须走 nuxtApp.$i18n。
5
+ *
6
+ * cookie 镜像(locale-cookie.global.ts 消费):老用户偏好只存在于 localStorage,
7
+ * 首次加载时镜像进 cookie 并强刷一次,让 SSR 首帧即以偏好语言渲染
8
+ * (否则 SSR 恒 zh,客户端异步切换在水合竞态下会留下中文 attr 残留)。
9
+ * sessionStorage 守卫防 cookie 写入被挡时的刷新循环。
5
10
  */
6
11
  export default defineNuxtPlugin((nuxtApp) => {
7
12
  const saved = localStorage.getItem('aw.locale')
13
+ const cookie = useCookie<string | undefined>('aw.locale', { maxAge: 60 * 60 * 24 * 365 })
8
14
  if (!saved) return
15
+ if (cookie.value !== saved) {
16
+ const mirrored = sessionStorage.getItem('aw.locale.mirrored')
17
+ if (mirrored !== saved) {
18
+ sessionStorage.setItem('aw.locale.mirrored', saved)
19
+ cookie.value = saved
20
+ window.location.reload()
21
+ return
22
+ }
23
+ }
9
24
  const $i18n = (nuxtApp as unknown as { $i18n?: { locale: { value?: string } | string, setLocale: (l: string) => Promise<unknown> } }).$i18n
10
25
  if (!$i18n) return
11
26
  const current = typeof $i18n.locale === 'string' ? $i18n.locale : $i18n.locale?.value
@@ -0,0 +1,104 @@
1
+ /**
2
+ * 内置目录/种子的展示层翻译映射。
3
+ *
4
+ * 背景:模板目录(shared/daq-protocol、dcw-protocol)与内置种子(模板/编组/Channel 模板/
5
+ * 插件 manifest)的 name/description 是服务端写入的中文数据,DB 记录不做翻译;
6
+ * 但展示层可以按**稳定 key/id** 命中 i18n 词条 —— 未命中(用户自建/改名)回退原始名。
7
+ * 词条在 locale 的 `tplCatalog` / `builtinSeeds` / `plugins` 命名空间。
8
+ */
9
+
10
+ /** 数采/智控模板目录的稳定 key(shared 协议目录) */
11
+ export const TPL_CATALOG_IDS = new Set([
12
+ 'temp-tc',
13
+ 'pressure-tx',
14
+ 'tension-cell',
15
+ 'line-encoder',
16
+ 'vision-cam',
17
+ 'power-meter',
18
+ 'thickness-scan',
19
+ 'ccd-image',
20
+ 'temp-sp',
21
+ 'speed-sp',
22
+ 'tension-sp',
23
+ 'pressure-sp',
24
+ ])
25
+
26
+ /** 内置 Agent 模板 id → 名称词条(server/db DEFAULT_AGENT_TEMPLATES + aml-team-seeds) */
27
+ export const SEED_NAME_KEYS: Record<string, string> = {
28
+ 'tpl-default-lead': 'builtinSeeds.tplDefaultLead',
29
+ 'tpl-default-backend': 'builtinSeeds.tplDefaultBackend',
30
+ 'tpl-default-frontend': 'builtinSeeds.tplDefaultFrontend',
31
+ 'tpl-default-qa': 'builtinSeeds.tplDefaultQa',
32
+ 'tpl-default-docs': 'builtinSeeds.tplDefaultDocs',
33
+ 'tpl-scenario-payment-lead': 'builtinSeeds.tplScenarioPaymentLead',
34
+ 'tpl-aml-lead': 'builtinSeeds.tplAmlLead',
35
+ 'tpl-aml-data': 'builtinSeeds.tplAmlData',
36
+ 'tpl-aml-trainer': 'builtinSeeds.tplAmlTrainer',
37
+ 'tpl-aml-eval': 'builtinSeeds.tplAmlEval',
38
+ 'team-default-fullstack': 'builtinSeeds.teamDefaultFullstack',
39
+ 'team-default-docs': 'builtinSeeds.teamDefaultDocs',
40
+ 'team-aml-shadow': 'builtinSeeds.teamAmlShadow',
41
+ 'chtpl-default-fullstack': 'builtinSeeds.chtplDefaultFullstack',
42
+ 'chtpl-default-review': 'builtinSeeds.chtplDefaultReview',
43
+ 'chtpl-preset-optical-film': 'builtinSeeds.chtplPresetOpticalFilm',
44
+ 'chtpl-preset-extrusion': 'builtinSeeds.chtplPresetExtrusion',
45
+ }
46
+
47
+ /** 内置 Channel 模板 id → 描述/场景预览词条 */
48
+ export const SEED_EXTRA_KEYS: Record<string, { desc?: string, scenario?: string }> = {
49
+ 'chtpl-default-fullstack': { desc: 'builtinSeeds.chtplDefaultFullstackDesc', scenario: 'builtinSeeds.chtplDefaultFullstackScenario' },
50
+ 'chtpl-default-review': { desc: 'builtinSeeds.chtplDefaultReviewDesc', scenario: 'builtinSeeds.chtplDefaultReviewScenario' },
51
+ 'chtpl-preset-optical-film': { desc: 'builtinSeeds.chtplPresetOpticalFilmDesc', scenario: 'builtinSeeds.chtplPresetOpticalFilmScenario' },
52
+ 'chtpl-preset-extrusion': { desc: 'builtinSeeds.chtplPresetExtrusionDesc', scenario: 'builtinSeeds.chtplPresetExtrusionScenario' },
53
+ }
54
+
55
+ /** 插件名 → 描述词条(manifest description 是服务端文件数据) */
56
+ export const PLUGIN_DESC_KEYS: Record<string, string> = {
57
+ 'line-sentinel': 'plugins.descLineSentinel',
58
+ 'ops-notifier': 'plugins.descOpsNotifier',
59
+ 'sample-insight': 'plugins.descSampleInsight',
60
+ 'diag-bridge': 'plugins.descDiagBridge',
61
+ 'rag-bridge': 'plugins.descRagBridge',
62
+ 'serial-bridge': 'plugins.descSerialBridge',
63
+ }
64
+
65
+ type NameLike = { key?: string, id?: string, name: string }
66
+
67
+ /** 内置角色/设备模型 id → 名称/提示词条(useCharacterAssets 内置目录;扫描项回退文件名) */
68
+ export const TOWN_MODEL_KEYS: Record<string, { name: string, hint?: string }> = {
69
+ 'knight': { name: 'builtinSeeds.mKnight' },
70
+ 'mage': { name: 'builtinSeeds.mMage' },
71
+ 'bot': { name: 'builtinSeeds.mBot' },
72
+ 'hero-3d': { name: 'builtinSeeds.mHero3d', hint: 'builtinSeeds.mHero3dHint' },
73
+ 'yangyang-walk': { name: 'builtinSeeds.mYangyang', hint: 'builtinSeeds.mYangyangHint' },
74
+ 'device-3d': { name: 'builtinSeeds.mDevice3d', hint: 'builtinSeeds.mDevice3dHint' },
75
+ }
76
+
77
+ /** 模型 hint 的兜底字面量(composable 里的固定中文提示)→ 词条 */
78
+ export const MODEL_HINT_FALLBACKS: Record<string, string> = {
79
+ '设备实体(拖入场景生成数字孪生)': 'builtinSeeds.mDeviceFallbackHint',
80
+ '角色 3D 模型(在频道成员管理中设置)': 'builtinSeeds.mScannedCharacterHint',
81
+ }
82
+
83
+ export function townModelName(tr: (k: string) => string, m: { id: string, name: string }): string {
84
+ return TOWN_MODEL_KEYS[m.id]?.name ? tr(TOWN_MODEL_KEYS[m.id]!.name) : m.name
85
+ }
86
+
87
+ export function townModelHint(tr: (k: string) => string, m: { id: string, hint?: string }): string | undefined {
88
+ const mapped = TOWN_MODEL_KEYS[m.id]?.hint
89
+ if (mapped) return tr(mapped)
90
+ const fallback = m.hint ? MODEL_HINT_FALLBACKS[m.hint] : undefined
91
+ return fallback ? tr(fallback) : m.hint
92
+ }
93
+
94
+ /** 模板目录显示名:命中稳定 key 走 i18n,否则回退服务端名 */
95
+ export function catalogTplName(tr: (k: string) => string, t: NameLike): string {
96
+ const k = t.key ?? t.id
97
+ return (k && TPL_CATALOG_IDS.has(k)) ? tr(`tplCatalog.${k}`) : t.name
98
+ }
99
+
100
+ /** 内置种子记录显示名:命中稳定 id 走 i18n,否则回退原始名(用户自建/改名不翻译) */
101
+ export function seedName(tr: (k: string) => string, t: { id?: string, templateId?: string, name: string }): string {
102
+ const k = SEED_NAME_KEYS[t.id ?? t.templateId ?? '']
103
+ return k ? tr(k) : t.name
104
+ }
package/config.yml CHANGED
@@ -1,170 +1,170 @@
1
- # ============================================================
2
- # AgentWorkShop 运行配置 —— 运行时默认值的单一事实来源
3
- # ------------------------------------------------------------
4
- # 本文件由 nuxt.config.ts(构建/开发期)与 scripts/start.mjs(生产启动期)
5
- # 读取并解析,驱动整个运行时。修改后重启对应模式即可生效:
6
- # 开发:pnpm dev -> 读取 server.dev
7
- # 生产:pnpm start -> 读取 server.prod
8
- # 例外:app.version 的权威值在 package.json(nuxt.config.ts 以包版本优先,
9
- # 本字段仅作回退)—— 长期不同步过(曾停在 0.7.9 而包已 0.7.35),勿再依赖它。
10
- # ============================================================
11
-
12
- app:
13
- name: AgentWorkShop
14
- title: AgentWorkShop
15
- version: 0.7.36
16
- description: 基于 Nuxt 4 的配置驱动运行范式
17
-
18
- # 运行模式(dev/prod 实际由启动命令决定,此处仅作运行时展示)
19
- mode: dev
20
-
21
- # ------------------------------------------------------------
22
- # 服务端口:dev 与 prod 可分别自定义
23
- # ------------------------------------------------------------
24
- server:
25
- host: 0.0.0.0
26
- dev:
27
- port: 3000
28
- prod:
29
- port: 3001
30
-
31
- # 后端 API(前端 axios 基址 + 服务端行为均由本段驱动)
32
- api:
33
- baseURL: /api
34
- timeout: 15000
35
- pageSize: 20 # 服务端默认分页大小
36
- maxPageSize: 100 # 服务端分页大小上限
37
-
38
- # 国际化
39
- i18n:
40
- defaultLocale: zh-CN
41
- locales:
42
- - code: zh-CN
43
- name: 简体中文
44
- - code: en
45
- name: English
46
-
47
- # 主题
48
- theme:
49
- # Agent Harness · Digital Twin 控制室色板:品牌绿(交互/确认/DAQ)+ 数据青,见 TownView.vue --hud-*
50
- primaryColor: "#35e0a0"
51
- mode: light # light | dark
52
-
53
- # 安全配置
54
- # 数据采集基础设施(数采 DAQ;地址与 docker-compose.yml 默认一致)
55
- # startInfrastructure: never=启动探测,不通且有 Docker 则自动 docker compose 拉起;
56
- # always=仅 Docker 拉起;never=只直连。连接失败降级并警告,可前端一键重连。
57
- daq:
58
- startInfrastructure: auto
59
- mqtt:
60
- host: 127.0.0.1
61
- port: 1883
62
- timescale:
63
- host: 127.0.0.1
64
- port: 5432
65
- user: postgres
66
- password: awshop
67
- database: awshop
68
- # 对象存储(图像帧;MinIO,S3 兼容)。不可达时自动降级本地磁盘 data/daq-objects/,采集不中断。
69
- objectstore:
70
- host: 127.0.0.1
71
- port: 9000
72
- accessKey: awshop
73
- secretKey: awshop-secret
74
- bucket: daq
75
- # 采样节拍(live 可调,热重载):节点未显式指定 intervalMs 时的采集周期与可配置下限。
76
- # 下限同时钳制 create/patch/存量节点;设置页/`aw config set daq.sampling.*` 均可改。
77
- sampling:
78
- defaultIntervalMs: 5000 # 默认 5s
79
- minIntervalMs: 1000 # 下限 1s(绝对硬底 200ms)
80
- # 时序查询节拍(live 可调,热重载):查询未指定 bucketMs 时的降采样桶宽与下限。
81
- # samples / 产线数据查询 / Agent daq_query 三处共用;Agent 工具描述实时携带当前值。
82
- query:
83
- defaultBucketMs: 15000 # 缺省 15s
84
- minBucketMs: 1000 # 下限 1s(绝对硬底 100ms)
85
-
86
- security:
87
- # Session cookie 加密密钥(nuxt-auth-utils 使用)
88
- # 生产环境必须修改为强随机值;可用环境变量 NUXT_SESSION_PASSWORD 覆盖
89
- sessionPassword: awshop-dev-secret-change-me-0123456789
90
- # HITL 审批超时窗 ms(超时默认拒绝;env HITL_TIMEOUT_MS 兼容)
91
- # hitl_timeout_ms: 180000
92
-
93
- # ------------------------------------------------------------
94
- # 以下运行语义组:全部键均可被 env AW_<键>(点转下划线)或历史别名覆盖,
95
- # 优先级 config.yml < data/runtime-settings.json < 环境变量。缺省即用默认。
96
- # ------------------------------------------------------------
97
-
98
- # Agent 记忆系统(env AW_MEMORY_*)
99
- memory:
100
- primer_tokens: 300 # 记忆引子 token 预算(AW_MEMORY_PRIMER_TOKENS)
101
- inject_total: 500 # 单次注入总硬顶(AW_MEMORY_INJECT_TOTAL)
102
- maintenance_ms: 21600000 # 维护调度周期(AW_MEMORY_MAINTENANCE_MS)
103
- expire_days: 180 # 情景记忆保留天数(AW_MEMORY_EXPIRE_DAYS)
104
- expire_session_days: 14 # 会话记忆保留天数(AW_MEMORY_EXPIRE_SESSION_DAYS)
105
- cap: 500 # 条目驱逐上限(AW_MEMORY_CAP)
106
- reflect_trigger: 8 # 空闲反思触发阈值(AW_MEMORY_REFLECT_TRIGGER)
107
- embed_base_url: '' # OpenAI 兼容 /embeddings 基址(AW_MEMORY_EMBED_BASE_URL;空=纯 FTS)
108
- embed_model: '' # 向量模型名(AW_MEMORY_EMBED_MODEL)
109
- embed_api_key: '' # Bearer 密钥(AW_MEMORY_EMBED_API_KEY)
110
-
111
- # omp Agent Harness(env AW_OMP_COMPACT_*)
112
- omp:
113
- compact_enabled: true # 上下文自动压缩总开关(AW_OMP_COMPACT_ENABLED=0 可关)
114
- compact_threshold: 0.7 # 触发压缩的上下文占用比例(AW_OMP_COMPACT_THRESHOLD)
115
- compact_min_interval_ms: 300000 # 两次压缩最小间隔(AW_OMP_COMPACT_MIN_INTERVAL_MS)
116
- compact_wait_ms: 120000 # 等待压缩完成超时(AW_OMP_COMPACT_WAIT_MS)
117
-
118
- # 数控写控制(env DCW_ROLLBACK_*)
119
- dcw:
120
- rollback_cooldown_ms: 300000 # 回退后同向重写冷却(DCW_ROLLBACK_COOLDOWN_MS)
121
- rollback_min_window_ms: 120000 # 判定最小观察窗(DCW_ROLLBACK_MIN_WINDOW_MS)
122
- rollback_baseline_ms: 600000 # 基线回看窗(DCW_ROLLBACK_BASELINE_MS)
123
- rollback_stale_ms: 1800000 # open 记录接管阈值(DCW_ROLLBACK_STALE_MS)
124
-
125
- # 车间运行(env WORKSHOP_IDLE_*)
126
- workshop:
127
- idle_sweep_ms: 30000 # 空闲 agent 扫描周期(WORKSHOP_IDLE_SWEEP_MS)
128
- idle_grace_ms: 120000 # 空闲卸载宽限(WORKSHOP_IDLE_GRACE_MS)
129
-
130
- # 数据备份(env BACKUP_*)
131
- backup:
132
- disabled: false # BACKUP_DISABLED=1 关闭
133
- interval_hours: 24 # 备份间隔(BACKUP_INTERVAL_HOURS)
134
- keep: 7 # 保留份数(BACKUP_KEEP)
135
-
136
- # 数据保留清理(env RETENTION_DISABLED / AW_EVENTS_RETENTION_D 等)
137
- retention:
138
- disabled: false # RETENTION_DISABLED=1 / AW_RETENTION_DISABLED=1 关闭
139
- events_days: 7 # WS 事件流保留天数(AW_EVENTS_RETENTION_D)
140
- messages_days: 30 # Channel 消息(AW_MESSAGES_RETENTION_D)
141
- audit_days: 90 # 审计日志(AW_AUDIT_RETENTION_D)
142
- approval_days: 180 # 审批历史(AW_APPROVAL_RETENTION_D)
143
-
144
- # 服务端日志(env AWSHOP_LOG_LEVEL)
145
- log:
146
- level: info # debug | info | warn | error
147
-
148
- # AML 自动建模平台(Python 训练运行时/作业限额/GC 保留/评测门禁;全部键见 shared/config/schema.json)
149
- aml:
150
- python:
151
- pythonBin: '' # 空=自动探测 python / py -3
152
- uvBin: '' # 空=自动探测 uv(存在则优先)
153
- indexUrl: '' # PyPI 兼容镜像,空=默认源;仅 venv 供给阶段联网,训练进程不联网
154
- job:
155
- timeoutMs: 1800000
156
- maxConcurrent: 2
157
- diskQuotaMb: 2048
158
- stallMs: 600000
159
- dataset:
160
- maxRows: 200000
161
- retentionDays: 30
162
- allowCrossRecipe: false
163
- model:
164
- retiredKeepDays: 90
165
- gates:
166
- nrmse: 0.10
167
- rolloutNrmse: 0.25
168
- valTestGap: 0.20
169
- minRows: 500
170
- minRuns: 3
1
+ # ============================================================
2
+ # AgentWorkShop 运行配置 —— 运行时默认值的单一事实来源
3
+ # ------------------------------------------------------------
4
+ # 本文件由 nuxt.config.ts(构建/开发期)与 scripts/start.mjs(生产启动期)
5
+ # 读取并解析,驱动整个运行时。修改后重启对应模式即可生效:
6
+ # 开发:pnpm dev -> 读取 server.dev
7
+ # 生产:pnpm start -> 读取 server.prod
8
+ # 例外:app.version 的权威值在 package.json(nuxt.config.ts 以包版本优先,
9
+ # 本字段仅作回退)—— 长期不同步过(曾停在 0.7.9 而包已 0.7.35),勿再依赖它。
10
+ # ============================================================
11
+
12
+ app:
13
+ name: AgentWorkShop
14
+ title: AgentWorkShop
15
+ version: 0.7.43
16
+ description: 基于 Nuxt 4 的配置驱动运行范式
17
+
18
+ # 运行模式(dev/prod 实际由启动命令决定,此处仅作运行时展示)
19
+ mode: dev
20
+
21
+ # ------------------------------------------------------------
22
+ # 服务端口:dev 与 prod 可分别自定义
23
+ # ------------------------------------------------------------
24
+ server:
25
+ host: 0.0.0.0
26
+ dev:
27
+ port: 3000
28
+ prod:
29
+ port: 3001
30
+
31
+ # 后端 API(前端 axios 基址 + 服务端行为均由本段驱动)
32
+ api:
33
+ baseURL: /api
34
+ timeout: 15000
35
+ pageSize: 20 # 服务端默认分页大小
36
+ maxPageSize: 100 # 服务端分页大小上限
37
+
38
+ # 国际化
39
+ i18n:
40
+ defaultLocale: zh-CN
41
+ locales:
42
+ - code: zh-CN
43
+ name: 简体中文
44
+ - code: en
45
+ name: English
46
+
47
+ # 主题
48
+ theme:
49
+ # Agent Harness · Digital Twin 控制室色板:品牌绿(交互/确认/DAQ)+ 数据青,见 TownView.vue --hud-*
50
+ primaryColor: "#35e0a0"
51
+ mode: light # light | dark
52
+
53
+ # 安全配置
54
+ # 数据采集基础设施(数采 DAQ;地址与 docker-compose.yml 默认一致)
55
+ # startInfrastructure: never=启动探测,不通且有 Docker 则自动 docker compose 拉起;
56
+ # always=仅 Docker 拉起;never=只直连。连接失败降级并警告,可前端一键重连。
57
+ daq:
58
+ startInfrastructure: auto
59
+ mqtt:
60
+ host: 127.0.0.1
61
+ port: 1883
62
+ timescale:
63
+ host: 127.0.0.1
64
+ port: 5432
65
+ user: postgres
66
+ password: awshop
67
+ database: awshop
68
+ # 对象存储(图像帧;MinIO,S3 兼容)。不可达时自动降级本地磁盘 data/daq-objects/,采集不中断。
69
+ objectstore:
70
+ host: 127.0.0.1
71
+ port: 9000
72
+ accessKey: awshop
73
+ secretKey: awshop-secret
74
+ bucket: daq
75
+ # 采样节拍(live 可调,热重载):节点未显式指定 intervalMs 时的采集周期与可配置下限。
76
+ # 下限同时钳制 create/patch/存量节点;设置页/`aw config set daq.sampling.*` 均可改。
77
+ sampling:
78
+ defaultIntervalMs: 5000 # 默认 5s
79
+ minIntervalMs: 1000 # 下限 1s(绝对硬底 200ms)
80
+ # 时序查询节拍(live 可调,热重载):查询未指定 bucketMs 时的降采样桶宽与下限。
81
+ # samples / 产线数据查询 / Agent daq_query 三处共用;Agent 工具描述实时携带当前值。
82
+ query:
83
+ defaultBucketMs: 15000 # 缺省 15s
84
+ minBucketMs: 1000 # 下限 1s(绝对硬底 100ms)
85
+
86
+ security:
87
+ # Session cookie 加密密钥(nuxt-auth-utils 使用)
88
+ # 生产环境必须修改为强随机值;可用环境变量 NUXT_SESSION_PASSWORD 覆盖
89
+ sessionPassword: awshop-dev-secret-change-me-0123456789
90
+ # HITL 审批超时窗 ms(超时默认拒绝;env HITL_TIMEOUT_MS 兼容)
91
+ # hitl_timeout_ms: 180000
92
+
93
+ # ------------------------------------------------------------
94
+ # 以下运行语义组:全部键均可被 env AW_<键>(点转下划线)或历史别名覆盖,
95
+ # 优先级 config.yml < data/runtime-settings.json < 环境变量。缺省即用默认。
96
+ # ------------------------------------------------------------
97
+
98
+ # Agent 记忆系统(env AW_MEMORY_*)
99
+ memory:
100
+ primer_tokens: 300 # 记忆引子 token 预算(AW_MEMORY_PRIMER_TOKENS)
101
+ inject_total: 500 # 单次注入总硬顶(AW_MEMORY_INJECT_TOTAL)
102
+ maintenance_ms: 21600000 # 维护调度周期(AW_MEMORY_MAINTENANCE_MS)
103
+ expire_days: 180 # 情景记忆保留天数(AW_MEMORY_EXPIRE_DAYS)
104
+ expire_session_days: 14 # 会话记忆保留天数(AW_MEMORY_EXPIRE_SESSION_DAYS)
105
+ cap: 500 # 条目驱逐上限(AW_MEMORY_CAP)
106
+ reflect_trigger: 8 # 空闲反思触发阈值(AW_MEMORY_REFLECT_TRIGGER)
107
+ embed_base_url: '' # OpenAI 兼容 /embeddings 基址(AW_MEMORY_EMBED_BASE_URL;空=纯 FTS)
108
+ embed_model: '' # 向量模型名(AW_MEMORY_EMBED_MODEL)
109
+ embed_api_key: '' # Bearer 密钥(AW_MEMORY_EMBED_API_KEY)
110
+
111
+ # omp Agent Harness(env AW_OMP_COMPACT_*)
112
+ omp:
113
+ compact_enabled: true # 上下文自动压缩总开关(AW_OMP_COMPACT_ENABLED=0 可关)
114
+ compact_threshold: 0.7 # 触发压缩的上下文占用比例(AW_OMP_COMPACT_THRESHOLD)
115
+ compact_min_interval_ms: 300000 # 两次压缩最小间隔(AW_OMP_COMPACT_MIN_INTERVAL_MS)
116
+ compact_wait_ms: 120000 # 等待压缩完成超时(AW_OMP_COMPACT_WAIT_MS)
117
+
118
+ # 数控写控制(env DCW_ROLLBACK_*)
119
+ dcw:
120
+ rollback_cooldown_ms: 300000 # 回退后同向重写冷却(DCW_ROLLBACK_COOLDOWN_MS)
121
+ rollback_min_window_ms: 120000 # 判定最小观察窗(DCW_ROLLBACK_MIN_WINDOW_MS)
122
+ rollback_baseline_ms: 600000 # 基线回看窗(DCW_ROLLBACK_BASELINE_MS)
123
+ rollback_stale_ms: 1800000 # open 记录接管阈值(DCW_ROLLBACK_STALE_MS)
124
+
125
+ # 车间运行(env WORKSHOP_IDLE_*)
126
+ workshop:
127
+ idle_sweep_ms: 30000 # 空闲 agent 扫描周期(WORKSHOP_IDLE_SWEEP_MS)
128
+ idle_grace_ms: 120000 # 空闲卸载宽限(WORKSHOP_IDLE_GRACE_MS)
129
+
130
+ # 数据备份(env BACKUP_*)
131
+ backup:
132
+ disabled: false # BACKUP_DISABLED=1 关闭
133
+ interval_hours: 24 # 备份间隔(BACKUP_INTERVAL_HOURS)
134
+ keep: 7 # 保留份数(BACKUP_KEEP)
135
+
136
+ # 数据保留清理(env RETENTION_DISABLED / AW_EVENTS_RETENTION_D 等)
137
+ retention:
138
+ disabled: false # RETENTION_DISABLED=1 / AW_RETENTION_DISABLED=1 关闭
139
+ events_days: 7 # WS 事件流保留天数(AW_EVENTS_RETENTION_D)
140
+ messages_days: 30 # Channel 消息(AW_MESSAGES_RETENTION_D)
141
+ audit_days: 90 # 审计日志(AW_AUDIT_RETENTION_D)
142
+ approval_days: 180 # 审批历史(AW_APPROVAL_RETENTION_D)
143
+
144
+ # 服务端日志(env AWSHOP_LOG_LEVEL)
145
+ log:
146
+ level: info # debug | info | warn | error
147
+
148
+ # AML 自动建模平台(Python 训练运行时/作业限额/GC 保留/评测门禁;全部键见 shared/config/schema.json)
149
+ aml:
150
+ python:
151
+ pythonBin: '' # 空=自动探测 python / py -3
152
+ uvBin: '' # 空=自动探测 uv(存在则优先)
153
+ indexUrl: '' # PyPI 兼容镜像,空=默认源;仅 venv 供给阶段联网,训练进程不联网
154
+ job:
155
+ timeoutMs: 1800000
156
+ maxConcurrent: 2
157
+ diskQuotaMb: 2048
158
+ stallMs: 600000
159
+ dataset:
160
+ maxRows: 200000
161
+ retentionDays: 30
162
+ allowCrossRecipe: false
163
+ model:
164
+ retiredKeepDays: 90
165
+ gates:
166
+ nrmse: 0.10
167
+ rolloutNrmse: 0.25
168
+ valTestGap: 0.20
169
+ minRows: 500
170
+ minRuns: 3
@@ -74,7 +74,6 @@
74
74
  | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-render-regression.mjs http://127.0.0.1:3001 admin@awshop.local admin123` | 关键页渲染回归 | 29 |
75
75
  | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/e2e-config-groups.mjs` | 配置分组系统 + 两桥接插件正确/错误 token·URL 实测 | 58 |
76
76
  | `E2E_USER=admin@awshop.local E2E_PASS=admin123 NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-groups-ui-verify.mjs` | 设置页分组 UI(浏览器实测) | 16 |
77
- | `node scripts/_dbg-daq-rowstyle-verify.mjs` | 数采行样式 + 设置页三节拍 | 10+6 |
78
77
  | `node scripts/_dbg-daq-intervals-func.mjs` | 三节拍(采集/WS下发/趋势刷新)独立热生效 + 下限钳制 + 详情页按节拍实测重拉 | 13 |
79
78
  | `node scripts/_dbg-town-smoke.mjs` | 数字孪生画布/场景钩子/帧推进 | 5 |
80
79
 
@@ -87,7 +86,7 @@
87
86
  | 脚本 | 覆盖 | 基线 |
88
87
  |---|---|---|
89
88
  | `NO_PROXY='*' node scripts/_dbg-protocol-matrix.mjs` | 5 协议 DAQ 读取 + 4 路 DCW 读/写闭环(modbus-tcp SP→PV 真收敛) | 全绿 |
90
- | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-live-line-e2e.mjs http://127.0.0.1:3001` | S1 夹具→S2 协议连通→S3 数采落库→S4 五路数控→S5 Agent 闭环(CLOSEDLOOP-OK)→S6 HITL 真实写入 | 37 |
89
+ | `node bench/pipeline.mjs --profile integrated` | 五协议工业闭环现行门禁(原 37 项 live-line 脚本因模拟器端口演进退役,覆盖并入 bench P 阶段):连通→数采落库→五路数控→Agent 闭环→HITL→配方/参数回退 | 75 |
91
90
  | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/e2e-plc-plugin-closedloop.mjs` | A 插件健康 / B 产线供给 / C 数采交叉核对 / D 真实诊断 / E 知识闭环 / F 参数逐键热生效 / G Channel 级开关 | 71 |
92
91
  | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/production-closed-loop-e2e.mjs` | 生产闭环增强:事件自动诊断(source=auto)→kb_search→dcw_control(HITL)→回写 | 23 |
93
92
  | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/three-system-e2e.mjs`(可选 `--full` 走 omp 真实诊断) | AW × 深度诊断 × rag-knowledge 三系统;插件启停热重载 | 52 |
@@ -135,7 +134,7 @@
135
134
  ## Phase 7 浏览器目视验收(Puppeteer 截图逐页过目)
136
135
 
137
136
  覆盖页:登录/仪表盘/产线管理/数采列表+详情(趋势图在动)/数控/数字孪生(帧推进+无黑屏)/设置(分组渲染+折叠+来源徽标)/插件/运维日志 /logs/AML/AgentTeam。
138
- 工具:`scripts/ui-screenshot.mjs`、`scripts/_dbg-audit-all-pages.mjs`(全页 console error 扫描=0)。截图存 `.e2e-shots/` 逐张目视;破版/白屏/控制台报错即红项。
137
+ 工具:`scripts/ui-screenshot.mjs`、`scripts/ui/audit-layout.mjs`、`scripts/_sweep-button-contrast.mjs`(双主题全路由按钮对比度+空按钮扫描)。截图存 `.e2e-shots/` 逐张目视;破版/白屏/控制台报错即红项。
139
138
 
140
139
  ---
141
140