agentworkshop 0.7.38 → 0.7.40

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 (392) hide show
  1. package/.AgentWorkShop/prompts/aml-mission-default.md +20 -20
  2. package/.AgentWorkShop/prompts/aml-playbook.md +49 -49
  3. package/.AgentWorkShop/prompts/host-tools.json +1293 -1238
  4. package/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
  5. package/.output/.AgentWorkShop/prompts/aml-mission-default.md +20 -20
  6. package/.output/.AgentWorkShop/prompts/aml-playbook.md +49 -49
  7. package/.output/.AgentWorkShop/prompts/host-tools.json +1293 -1238
  8. package/.output/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
  9. package/.output/nitro.json +1 -1
  10. package/.output/public/_nuxt/88GOowgO2.js +1 -0
  11. package/.output/public/_nuxt/{BNT8gYU92.js → BC9wjTJK2.js} +2 -2
  12. package/.output/public/_nuxt/BOt2SP4z.js +1 -0
  13. package/.output/public/_nuxt/BP-NyKVG.js +18 -0
  14. package/.output/public/_nuxt/{HBLJ-wei.js → BXxH0UQE.js} +1 -1
  15. package/.output/public/_nuxt/{zIGh7R49.js → BneN7fbu.js} +1 -1
  16. package/.output/public/_nuxt/BsROmY89.js +1 -0
  17. package/.output/public/_nuxt/{C_OLzD09.js → C4oW1HsE.js} +1 -1
  18. package/.output/public/_nuxt/CFxtLwjp.js +1 -0
  19. package/.output/public/_nuxt/{Cec0Ua3F.js → CS50LB_l.js} +1 -1
  20. package/.output/public/_nuxt/C_iYD-EB.js +1 -0
  21. package/.output/public/_nuxt/{DAe0h2MB.js → ClILjvWH.js} +1 -1
  22. package/.output/public/_nuxt/CssgYAAL2.js +1 -0
  23. package/.output/public/_nuxt/{CY9LbPCI.js → CzOCSGLe.js} +1 -1
  24. package/.output/public/_nuxt/D8qvkfyY.js +1 -0
  25. package/.output/public/_nuxt/DCn7QZ5N.js +2 -0
  26. package/.output/public/_nuxt/DGIuvyRN2.js +1 -0
  27. package/.output/public/_nuxt/{CojCTLKD.js → DGj-WEBg.js} +1 -1
  28. package/.output/public/_nuxt/{DDShH71m.js → DS8qj8EL.js} +1 -1
  29. package/.output/public/_nuxt/DTFCy6h-.js +1 -0
  30. package/.output/public/_nuxt/{DrYV5i68.js → DUjW5Yq5.js} +1 -1
  31. package/.output/public/_nuxt/DZshyNLa.js +1 -0
  32. package/.output/public/_nuxt/{45zuyAso.js → D_OTvQza.js} +1 -1
  33. package/.output/public/_nuxt/DcsCcxp4.js +1 -0
  34. package/.output/public/_nuxt/{DUrecWPx.js → Dihnimlk.js} +2 -2
  35. package/.output/public/_nuxt/Dqw1lpr-.js +1 -0
  36. package/.output/public/_nuxt/{BG8sCcwx.js → Dr9v6C0f.js} +9 -9
  37. package/.output/public/_nuxt/{8NMOXZOV.js → Du9ZJtnj.js} +1 -1
  38. package/.output/public/_nuxt/TownView.f-YOdXRs.css +1 -0
  39. package/.output/public/_nuxt/_id_.CM4bIgKY.css +1 -0
  40. package/.output/public/_nuxt/_id_.bNV69Dtf.css +1 -0
  41. package/.output/public/_nuxt/_wsId_.B4WiqkIS.css +1 -0
  42. package/.output/public/_nuxt/agents.ZD0rVdHE.css +1 -0
  43. package/.output/public/_nuxt/aml.BN8ZEW4h.css +1 -0
  44. package/.output/public/_nuxt/builds/latest.json +1 -1
  45. package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +1 -0
  46. package/.output/public/_nuxt/channel-templates.BOtahzPi.css +1 -0
  47. package/.output/public/_nuxt/daq.B0D3dPAc.css +1 -0
  48. package/.output/public/_nuxt/dcw.8Y7FqCVN.css +1 -0
  49. package/.output/public/_nuxt/default.J32SgqFY.css +1 -0
  50. package/.output/public/_nuxt/entry.bdm0tv6M.css +1 -0
  51. package/.output/public/_nuxt/logs.BpKzmKsh.css +1 -0
  52. package/.output/public/_nuxt/monitor.D9pe7qN6.css +1 -0
  53. package/.output/public/_nuxt/pages.D7aSDlUI.css +1 -0
  54. package/.output/public/_nuxt/permissions.DwTVlFe6.css +1 -0
  55. package/.output/public/_nuxt/plugins.sb4nDGqr.css +1 -0
  56. package/.output/public/_nuxt/{Cbq-mryP.js → qr6R6Ha1.js} +1 -1
  57. package/.output/public/_nuxt/settings.BTgR-NiE.css +1 -0
  58. package/.output/public/_nuxt/teams.CxnxKVVs.css +1 -0
  59. package/.output/public/_nuxt/tokens.BFY7qv4f.css +1 -0
  60. package/.output/public/_nuxt/{town.DKIAhKnx.css → town.BBXZmeoP.css} +1 -1
  61. package/.output/public/_nuxt/users.DLgZ1D0h.css +1 -0
  62. package/.output/public/_nuxt/workshop.CR_QzeAN.css +1 -0
  63. package/.output/public/_nuxt/{BzHEilTt.js → xh3_vYcu.js} +1 -1
  64. package/.output/public/_nuxt/yF0aYMF1.js +4 -0
  65. package/.output/server/chunks/_/entity.mjs.map +1 -1
  66. package/.output/server/chunks/_/nitro.mjs +2244 -1464
  67. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  68. package/.output/server/chunks/build/{TownView-jVazYOjN.mjs → TownView-BuLAsmpR.mjs} +288 -206
  69. package/.output/server/chunks/build/TownView-BuLAsmpR.mjs.map +1 -0
  70. package/.output/server/chunks/build/{_id_-CfVosNg3.mjs → _id_-BU1wfOID.mjs} +138 -138
  71. package/.output/server/chunks/build/{_id_-CfVosNg3.mjs.map → _id_-BU1wfOID.mjs.map} +1 -1
  72. package/.output/server/chunks/build/{_id_-Hwr4rZpr.mjs → _id_-BYsEua57.mjs} +33 -32
  73. package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +1 -0
  74. package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs → _wsId_-BxlDcJHg.mjs} +293 -259
  75. package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs.map → _wsId_-BxlDcJHg.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{agents-Bvin73QY.mjs → agents-CLQqJF2y.mjs} +21 -27
  77. package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +1 -0
  78. package/.output/server/chunks/build/{aml-BCSJCdX7.mjs → aml-_7FdFL2p.mjs} +109 -109
  79. package/.output/server/chunks/build/{aml-BCSJCdX7.mjs.map → aml-_7FdFL2p.mjs.map} +1 -1
  80. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -1
  81. package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs → channel-templates-p6SZNjlM.mjs} +19 -19
  82. package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs.map → channel-templates-p6SZNjlM.mjs.map} +1 -1
  83. package/.output/server/chunks/build/{daq-C03Uu5UE.mjs → daq-cgyjKmJu.mjs} +188 -122
  84. package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +1 -0
  85. package/.output/server/chunks/build/{dcw-6vEYVeje.mjs → dcw-CoTxBlAZ.mjs} +45 -45
  86. package/.output/server/chunks/build/{dcw-6vEYVeje.mjs.map → dcw-CoTxBlAZ.mjs.map} +1 -1
  87. package/.output/server/chunks/build/{default-hseyOqBT.mjs → default-BE4r0FZN.mjs} +158 -79
  88. package/.output/server/chunks/build/{default-hseyOqBT.mjs.map → default-BE4r0FZN.mjs.map} +1 -1
  89. package/.output/server/chunks/build/{logs-B-xhuqln.mjs → logs-BSOeZwwI.mjs} +34 -34
  90. package/.output/server/chunks/build/{logs-B-xhuqln.mjs.map → logs-BSOeZwwI.mjs.map} +1 -1
  91. package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs → monitor-C0okQaXz.mjs} +33 -33
  92. package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs.map → monitor-C0okQaXz.mjs.map} +1 -1
  93. package/.output/server/chunks/build/{pages-BO7yZsXA.mjs → pages-DFxjn9Xa.mjs} +33 -17
  94. package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +1 -0
  95. package/.output/server/chunks/build/{permissions-B52oOmaO.mjs → permissions-68SsNjex.mjs} +12 -12
  96. package/.output/server/chunks/build/{permissions-B52oOmaO.mjs.map → permissions-68SsNjex.mjs.map} +1 -1
  97. package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs → plugins-lGlUr1lj.mjs} +17 -17
  98. package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs.map → plugins-lGlUr1lj.mjs.map} +1 -1
  99. package/.output/server/chunks/build/{settings-DoQ2Oq3P.mjs → settings-Ddd1qx2Z.mjs} +50 -47
  100. package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +1 -0
  101. package/.output/server/chunks/build/{teams-2kz3CusY.mjs → teams-MEDLZdMn.mjs} +38 -34
  102. package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +1 -0
  103. package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs → tokens-C7fTM5C2.mjs} +14 -14
  104. package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs.map → tokens-C7fTM5C2.mjs.map} +1 -1
  105. package/.output/server/chunks/build/{town-BOl6hs9B.mjs → town-qMPql9Se.mjs} +36 -10
  106. package/.output/server/chunks/build/town-qMPql9Se.mjs.map +1 -0
  107. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
  108. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
  109. package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs +49 -0
  110. package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +1 -0
  111. package/.output/server/chunks/build/{users-fohSmF-J.mjs → users-Cfd5-l2-.mjs} +6 -6
  112. package/.output/server/chunks/build/{users-fohSmF-J.mjs.map → users-Cfd5-l2-.mjs.map} +1 -1
  113. package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs → workshop-BL5bhfs0.mjs} +15 -15
  114. package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs.map → workshop-BL5bhfs0.mjs.map} +1 -1
  115. package/.output/server/chunks/build/{workspaces-BuydxM-3.mjs → workspaces-Bgz5Ekwp.mjs} +18 -3
  116. package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +1 -0
  117. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
  118. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
  120. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  121. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +6 -2
  122. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  123. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -1
  124. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  125. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  126. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  127. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  128. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  129. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  130. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +3 -2
  131. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  132. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
  133. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  134. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +8 -6
  135. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +5 -5
  137. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  138. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +14 -4
  139. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +4 -4
  141. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  142. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -3
  143. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +31 -0
  145. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -0
  146. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +28 -0
  147. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -0
  148. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  149. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +32 -0
  150. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -0
  151. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +34 -0
  152. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -0
  153. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +33 -0
  154. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -0
  155. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +34 -0
  156. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -0
  157. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
  165. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -1
  167. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  173. package/.output/server/chunks/routes/renderer.mjs +3 -3
  174. package/.output/server/chunks/virtual/entry.mjs +53 -25
  175. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  176. package/.output/server/package.json +1 -1
  177. package/README-zh.md +204 -40
  178. package/README.md +739 -591
  179. package/app/app.vue +9 -3
  180. package/app/assets/css/main.css +517 -7
  181. package/app/components/AppHeader.vue +98 -24
  182. package/app/components/AppSidebar.vue +118 -11
  183. package/app/components/AwChart.vue +2 -1
  184. package/app/components/workshop/AgentInspectorDrawer.vue +6 -6
  185. package/app/components/workshop/AgentLanesView.vue +52 -1
  186. package/app/components/workshop/AssetLibrary.vue +4 -2
  187. package/app/components/workshop/ChannelSessionList.vue +4 -2
  188. package/app/components/workshop/Composer.vue +96 -0
  189. package/app/components/workshop/DaqNodeRow.vue +19 -0
  190. package/app/components/workshop/DaqTemplateIcon.vue +33 -0
  191. package/app/components/workshop/DeviceTwinPanel.vue +37 -35
  192. package/app/components/workshop/EventBlock.vue +3 -3
  193. package/app/components/workshop/InspectorPanel.vue +47 -11
  194. package/app/components/workshop/LiveAgentBar.vue +34 -0
  195. package/app/components/workshop/TaskBoardView.vue +83 -33
  196. package/app/components/workshop/TranscriptTimeline.vue +56 -0
  197. package/app/components/workshop/blocks/ClusterError.vue +1 -1
  198. package/app/components/workshop/blocks/ClusterRoute.vue +3 -1
  199. package/app/components/workshop/blocks/ClusterStatus.vue +2 -2
  200. package/app/components/workshop/blocks/ClusterStream.vue +8 -2
  201. package/app/components/workshop/town/ModelPreview3D.vue +1 -1
  202. package/app/components/workshop/town/TownView.vue +507 -82
  203. package/app/composables/useResponsive.ts +88 -0
  204. package/app/composables/useRouteMeta.ts +3 -0
  205. package/app/composables/workshop/useDcwStream.ts +1 -1
  206. package/app/composables/workshop/useVisibleInterval.ts +2 -2
  207. package/app/composables/workshop/useWorkshopApi.ts +1 -1
  208. package/app/layouts/default.vue +46 -2
  209. package/app/pages/aml/index.vue +712 -616
  210. package/app/pages/daq/[id].vue +3 -2
  211. package/app/pages/daq/index.vue +209 -9
  212. package/app/pages/dcw/[id].vue +109 -28
  213. package/app/pages/dcw/index.vue +83 -23
  214. package/app/pages/index.vue +35 -1
  215. package/app/pages/logs/index.vue +147 -13
  216. package/app/pages/monitor.vue +56 -12
  217. package/app/pages/permissions/index.vue +34 -0
  218. package/app/pages/plugins/index.vue +35 -4
  219. package/app/pages/settings.vue +90 -21
  220. package/app/pages/tokens.vue +23 -0
  221. package/app/pages/town.vue +50 -5
  222. package/app/pages/users.vue +23 -0
  223. package/app/pages/workshop/agents.vue +92 -2
  224. package/app/pages/workshop/channel-templates.vue +53 -0
  225. package/app/pages/workshop/index.vue +14 -0
  226. package/app/pages/workshop/teams.vue +66 -6
  227. package/app/pages/workshop/w/[wsId].vue +202 -14
  228. package/app/plugins/aw-plugins.client.ts +13 -8
  229. package/app/stores/app.ts +33 -1
  230. package/app/stores/workshop/user.ts +1 -1
  231. package/app/stores/workshop/workspaces.ts +18 -2
  232. package/app/utils/api-error.ts +1 -1
  233. package/cli/commands/build.mjs +8 -1
  234. package/docker-compose.yml +6 -0
  235. package/docs/full-test-plan.md +4 -0
  236. package/docs/plugins.en.md +1 -0
  237. package/docs/plugins.md +1 -0
  238. package/i18n/locales/en.ts +3 -0
  239. package/i18n/locales/zh-CN.ts +3 -0
  240. package/nuxt.config.ts +31 -0
  241. package/package.json +9 -1
  242. package/scripts/_audit/detached-start.mjs +103 -0
  243. package/scripts/_audit/guard-upstream-liveness.mjs +104 -0
  244. package/scripts/_dbg-param-map-e2e.ts +242 -0
  245. package/scripts/_dbg-param-map-rest-smoke.mjs +73 -0
  246. package/scripts/_dbg-param-real-scenario.mjs +153 -0
  247. package/scripts/_dbg-perms-e2e.mjs +10 -3
  248. package/scripts/_dbg-protocol-matrix.mjs +453 -441
  249. package/scripts/_dbg-render-regression.mjs +151 -130
  250. package/scripts/_dbg-town-agents-probe.mjs +60 -0
  251. package/scripts/_dbg-visual-acceptance.mjs +63 -0
  252. package/scripts/api-live-e2e.mjs +40 -8
  253. package/scripts/capture-walkthrough.mjs +232 -0
  254. package/scripts/e2e-agent-team.mjs +5 -3
  255. package/scripts/render-walkthrough-figure.mjs +46 -0
  256. package/scripts/seed-walkthrough-fixture.mjs +143 -0
  257. package/scripts/test-plugin-hardening.mjs +8 -0
  258. package/scripts/three-system-e2e.mjs +6 -6
  259. package/scripts/ui/admin-shots.mjs +46 -0
  260. package/scripts/ui/audit-layout.mjs +301 -0
  261. package/scripts/ui/bump-microfont.mjs +39 -0
  262. package/scripts/ui/lib.mjs +198 -0
  263. package/scripts/ui/linkcheck2.mjs +37 -0
  264. package/scripts/ui/live-render-check.mjs +72 -0
  265. package/scripts/ui/md-lint.mjs +80 -0
  266. package/scripts/ui/perf-audit.mjs +132 -0
  267. package/scripts/ui/readme-assets.mjs +30 -0
  268. package/scripts/ui/readme-shots.mjs +42 -0
  269. package/scripts/ui/record.mjs +225 -0
  270. package/scripts/ui/seed-admin.mjs +68 -0
  271. package/scripts/ui/seed-demo.mjs +83 -0
  272. package/scripts/ui/shot-hero.mjs +25 -0
  273. package/scripts/ui/shots.mjs +75 -0
  274. package/scripts/ui/sim-ui-shot.mjs +16 -0
  275. package/scripts/ui/verify-nav.mjs +51 -0
  276. package/scripts/ui/verify-responsive.mjs +285 -0
  277. package/server/api/system/config-groups/[id].patch.ts +1 -1
  278. package/server/api/system/config-groups/index.post.ts +1 -1
  279. package/server/api/system/settings/events.get.ts +1 -1
  280. package/server/api/system/settings/index.patch.ts +1 -1
  281. package/server/api/workshop/agent-tools/invoke.post.ts +16 -2
  282. package/server/api/workshop/aml/datasets/[id].get.ts +8 -1
  283. package/server/api/workshop/daq/infra/reconnect.post.ts +1 -1
  284. package/server/api/workshop/daq/templates/[key].delete.ts +1 -0
  285. package/server/api/workshop/daq/templates/[key].patch.ts +1 -0
  286. package/server/api/workshop/daq/templates/index.post.ts +1 -0
  287. package/server/api/workshop/dcw/[id]/write.post.ts +10 -2
  288. package/server/api/workshop/dcw/[id].delete.ts +5 -2
  289. package/server/api/workshop/dcw/index.get.ts +2 -0
  290. package/server/api/workshop/dcw/lines/[id].patch.ts +1 -1
  291. package/server/api/workshop/dcw/params/[id]/read.post.ts +17 -0
  292. package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -0
  293. package/server/api/workshop/dcw/params/[id].delete.ts +19 -0
  294. package/server/api/workshop/dcw/params/[id].patch.ts +23 -0
  295. package/server/api/workshop/dcw/params/index.get.ts +27 -0
  296. package/server/api/workshop/dcw/params/index.post.ts +25 -0
  297. package/server/api/workshop/permissions/index.get.ts +3 -1
  298. package/server/plugins/aw-plugins.ts +14 -3
  299. package/server/plugins/dev-stability-guard.ts +3 -1
  300. package/server/plugins/system-config.ts +6 -1
  301. package/server/plugins-builtin/rag-bridge/index.mjs +9 -2
  302. package/server/services/system-config.ts +28 -9
  303. package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +2 -1
  304. package/server/services/workshop/agents/agent-interface.ts +8 -6
  305. package/server/services/workshop/agents/base-agent.ts +18 -4
  306. package/server/services/workshop/agents/claude-agent.ts +7 -3
  307. package/server/services/workshop/agents/codex-agent.ts +3 -3
  308. package/server/services/workshop/agents/dsh-agent.ts +3 -3
  309. package/server/services/workshop/agents/goose-agent.ts +0 -1
  310. package/server/services/workshop/agents/harness-terminal.ts +14 -1
  311. package/server/services/workshop/agents/hermes-agent.ts +4 -2
  312. package/server/services/workshop/agents/host-tool-bridge.ts +5 -1
  313. package/server/services/workshop/agents/industrial-context.ts +4 -1
  314. package/server/services/workshop/agents/industrial-tools.ts +164 -6
  315. package/server/services/workshop/agents/omp-agent.ts +15 -9
  316. package/server/services/workshop/agents/opencode-agent.ts +47 -21
  317. package/server/services/workshop/agents/qwen-agent.ts +10 -5
  318. package/server/services/workshop/aml/entity.ts +3 -1
  319. package/server/services/workshop/aml/python-runtime.ts +3 -2
  320. package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -4
  321. package/server/services/workshop/daq/daq-controller.ts +18 -3
  322. package/server/services/workshop/daq/daq-runtime.ts +5 -3
  323. package/server/services/workshop/daq/drivers.ts +63 -8
  324. package/server/services/workshop/daq/host-ports.ts +3 -2
  325. package/server/services/workshop/daq/storage/timescale.adapter.ts +3 -1
  326. package/server/services/workshop/db/channel.repo.ts +4 -0
  327. package/server/services/workshop/db/ops.repo.ts +5 -2
  328. package/server/services/workshop/db/retention.ts +8 -3
  329. package/server/services/workshop/dcw/dcw-controller.ts +143 -16
  330. package/server/services/workshop/dcw/dcw-product.repo.ts +38 -1
  331. package/server/services/workshop/dcw/dcw-runtime.ts +3 -2
  332. package/server/services/workshop/dcw/drivers.ts +5 -2
  333. package/server/services/workshop/dcw/param-conversion.ts +78 -0
  334. package/server/services/workshop/dcw/param-limits.ts +142 -0
  335. package/server/services/workshop/dcw/param-map.repo.ts +305 -0
  336. package/server/services/workshop/dcw/recipe-rollback-manager.ts +13 -7
  337. package/server/services/workshop/runtime/agent-runtime.ts +4 -0
  338. package/server/services/workshop/runtime/manager.ts +9 -2
  339. package/server/services/workshop/settings.ts +4 -2
  340. package/server/types/pg.d.ts +49 -0
  341. package/server/utils/stability-severity.ts +13 -2
  342. package/shared/config/groups.mjs +22 -1
  343. package/shared/config/home.d.mts +28 -0
  344. package/shared/dcw-protocol.ts +136 -0
  345. package/uno.config.ts +12 -1
  346. package/.output/public/_nuxt/BFkgkW8u.js +0 -4
  347. package/.output/public/_nuxt/C5gUkRwn.js +0 -1
  348. package/.output/public/_nuxt/CM12FuB42.js +0 -1
  349. package/.output/public/_nuxt/CZiw7sEV.js +0 -1
  350. package/.output/public/_nuxt/Cc_9VzD42.js +0 -1
  351. package/.output/public/_nuxt/CdPzkOMV.js +0 -1
  352. package/.output/public/_nuxt/D1YDxZpZ.js +0 -1
  353. package/.output/public/_nuxt/D20Yamr4.js +0 -1
  354. package/.output/public/_nuxt/DVsjtsvZ2.js +0 -1
  355. package/.output/public/_nuxt/DmqknNvV.js +0 -18
  356. package/.output/public/_nuxt/DnUuIR83.js +0 -1
  357. package/.output/public/_nuxt/S_fVQwJK.js +0 -1
  358. package/.output/public/_nuxt/TownView.0oLiQgTC.css +0 -1
  359. package/.output/public/_nuxt/_id_.D-SYuyZb.css +0 -1
  360. package/.output/public/_nuxt/_id_.hma_BU6T.css +0 -1
  361. package/.output/public/_nuxt/_wsId_.B12v3PhY.css +0 -1
  362. package/.output/public/_nuxt/agents.BV70ioCv.css +0 -1
  363. package/.output/public/_nuxt/ahgEJu2R.js +0 -1
  364. package/.output/public/_nuxt/aml.COEKNNqK.css +0 -1
  365. package/.output/public/_nuxt/builds/meta/44b66249-54d0-4c8a-9057-9755a32329e2.json +0 -1
  366. package/.output/public/_nuxt/channel-templates.C-M5nKcC.css +0 -1
  367. package/.output/public/_nuxt/daq.B3265ZDn.css +0 -1
  368. package/.output/public/_nuxt/dcw.DLYZqEhT.css +0 -1
  369. package/.output/public/_nuxt/default.DE_vT238.css +0 -1
  370. package/.output/public/_nuxt/entry.BB-Eeh-J.css +0 -1
  371. package/.output/public/_nuxt/logs.CqFyMrJw.css +0 -1
  372. package/.output/public/_nuxt/monitor.B--1dPzs.css +0 -1
  373. package/.output/public/_nuxt/pages.ooEzrMm9.css +0 -1
  374. package/.output/public/_nuxt/permissions.B1pjGChZ.css +0 -1
  375. package/.output/public/_nuxt/plugins.5e5chZ67.css +0 -1
  376. package/.output/public/_nuxt/pz2JDAM7.js +0 -2
  377. package/.output/public/_nuxt/settings.Dm3M0RLy.css +0 -1
  378. package/.output/public/_nuxt/teams.BC75EGnR.css +0 -1
  379. package/.output/public/_nuxt/tokens.xRb1fSPU.css +0 -1
  380. package/.output/public/_nuxt/users.CXnP2E08.css +0 -1
  381. package/.output/public/_nuxt/workshop.Jk5HxWPE.css +0 -1
  382. package/.output/server/chunks/build/TownView-jVazYOjN.mjs.map +0 -1
  383. package/.output/server/chunks/build/_id_-Hwr4rZpr.mjs.map +0 -1
  384. package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +0 -1
  385. package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +0 -1
  386. package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +0 -1
  387. package/.output/server/chunks/build/settings-DoQ2Oq3P.mjs.map +0 -1
  388. package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +0 -1
  389. package/.output/server/chunks/build/town-BOl6hs9B.mjs.map +0 -1
  390. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +0 -1
  391. /package/.output/public/_nuxt/{36oeS8_R2.js → 36oeS8_R.js} +0 -0
  392. /package/.output/public/_nuxt/{CYWVXZTS.js → CYWVXZTS2.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { V as Icon, _ as _plugin_vue_export_helper_default, aL as theme_default, aI as useSiteConfig, h as _extends, e as useConfigInject_default, i as classNames, j as _objectSpread2, b as useUserStore, u as useI18n, a as useRoute, aH as useAppStore, az as NuxtLink, P as PropTypes, a0 as tuple, n as navigateTo, aM as composables_exports, aN as storages, d as api$1, l as genComponentStyleHook, m as merge } from '../virtual/entry.mjs';
1
+ import { V as Icon, _ as _plugin_vue_export_helper_default, aM as theme_default, aI as useSiteConfig, h as _extends, e as useConfigInject_default, i as classNames, j as _objectSpread2, b as useUserStore, u as useI18n, a as useRoute, aH as useAppStore, P as PropTypes, a0 as tuple, n as navigateTo, aN as composables_exports, aO as storages, d as api$1, l as genComponentStyleHook, m as merge } from '../virtual/entry.mjs';
2
2
  import { C as ClientOnly } from './client-only-D5BzSQc6.mjs';
3
3
  import { t as tooltip_default } from '../_/SearchOutlined.mjs';
4
4
  import { i as initDefaultProps } from './initDefaultProps-DIbWwP4R.mjs';
@@ -7,11 +7,12 @@ import { S as Select } from './select-D-CeE5vY.mjs';
7
7
  import { S as SiderHookProviderKey, a as SiderCollapsedKey, m as menu_default, D as Divider_default, M as MenuItem_default } from './menu-WCrlpYVh.mjs';
8
8
  import { i as isNumeric } from './isNumeric-CP7q_yhz.mjs';
9
9
  import { d as dropdown_default } from './dropdown-CGQ0KAzA.mjs';
10
- import { u as useWorkspacesStore } from './workspaces-BuydxM-3.mjs';
10
+ import { u as useResponsive } from './useResponsive-BKDMGTHs.mjs';
11
+ import { u as useWorkspacesStore } from './workspaces-Bgz5Ekwp.mjs';
11
12
  import { a as apiErrorMessage } from './api-error-dul30BYQ.mjs';
12
13
  import { g as useHitlStore, a as useWorkshopWs, f as useWsConnectionStore } from './useWorkshopWs-C_I7q9As.mjs';
13
14
  import { u as useWorkshopApi } from './useWorkshopApi-NyjL0L3j.mjs';
14
- import { createVNode, defineComponent, mergeProps, withCtx, unref, renderSlot, toDisplayString, inject, shallowRef, watch, provide, computed, Transition, withDirectives, vShow, openBlock, createBlock, Fragment, renderList, ref, createTextVNode, TransitionGroup, createCommentVNode, withKeys, withModifiers, useSSRContext } from 'vue';
15
+ import { createVNode, defineComponent, mergeProps, withCtx, unref, renderSlot, toDisplayString, inject, shallowRef, watch, provide, ref, computed, watchEffect, Transition, withDirectives, vShow, openBlock, createBlock, Fragment, renderList, createTextVNode, TransitionGroup, createCommentVNode, withKeys, withModifiers, useSSRContext } from 'vue';
15
16
  import { R as RightOutlined } from './dropdown-vhn1NPFs.mjs';
16
17
  import { L as LeftOutlined } from '../_/LeftOutlined.mjs';
17
18
  import { ssrRenderComponent, ssrRenderSlot, ssrInterpolate, ssrRenderStyle, ssrRenderList, ssrRenderClass, ssrRenderAttr, ssrRenderAttrs } from 'vue/server-renderer';
@@ -471,9 +472,9 @@ var AwLogo_default = Object.assign(AwLogo_vue_vue_type_script_setup_true_lang_de
471
472
  //#endregion
472
473
  //#region app/components/AppSidebar.vue?vue&type=script&setup=true&lang.ts
473
474
  /**
474
- * 导航信息架构:12 个平铺条目 → 三组语义分区(控制台 / 运维 / 系统)。
475
- * 分组的价值不在多一层容器,而在"扫视成本":同组内的入口是同一件事的不同面,
476
- * 组与组之间才是真正的语境切换。空组自动折叠,权限过滤后不残留空标题。
475
+ * 是否已完成客户端水合。
476
+ * 服务端拿不到会话(cookie 里的 workshop.user 只在浏览器可读),
477
+ * 任何"按身份增删 DOM"的渲染都必须由它门控,否则 SSR 与客户端首帧结构不一致。
477
478
  */
478
479
  var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
479
480
  __name: "AppSidebar",
@@ -484,6 +485,12 @@ var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
484
485
  const route = useRoute();
485
486
  const site = useSiteConfig();
486
487
  const store = useAppStore();
488
+ const navHydrated = ref(false);
489
+ /**
490
+ * 导航信息架构:12 个平铺条目 → 三组语义分区(控制台 / 运维 / 系统)。
491
+ * 分组的价值不在多一层容器,而在"扫视成本":同组内的入口是同一件事的不同面,
492
+ * 组与组之间才是真正的语境切换。空组自动折叠,权限过滤后不残留空标题。
493
+ */
487
494
  const menuGroups = computed(() => [
488
495
  {
489
496
  id: "console",
@@ -518,6 +525,12 @@ var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
518
525
  icon: "i-tabler-settings-automation",
519
526
  label: t("menu.dcw"),
520
527
  motion: "im-pop"
528
+ },
529
+ {
530
+ key: "/aml",
531
+ icon: "i-tabler-flask",
532
+ label: t("menu.aml"),
533
+ motion: "im-pop"
521
534
  }
522
535
  ]
523
536
  },
@@ -575,44 +588,66 @@ var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
575
588
  }
576
589
  ].map((g) => ({
577
590
  ...g,
578
- items: g.items.filter((m) => !m.adminOnly || userStore.isAdmin)
591
+ items: g.items.filter((m) => !m.adminOnly || navHydrated.value && userStore.isAdmin)
579
592
  })).filter((g) => g.items.length > 0));
580
593
  const isActive = (key) => key === "/" ? route.path === "/" : route.path.startsWith(key);
581
594
  const go = (key) => {
595
+ if (isDrawer.value) store.closeMobileNav();
582
596
  if (!isActive(key)) navigateTo(key);
583
597
  };
598
+ const { isDrawer, isTablet } = useResponsive();
599
+ const navMode = computed(() => navHydrated.value ? isDrawer.value ? "drawer" : isTablet.value ? "rail" : "full" : void 0);
600
+ const effectiveCollapsed = computed(() => isDrawer.value ? false : isTablet.value ? true : store.sidebarCollapsed);
601
+ const showLabels = computed(() => !effectiveCollapsed.value);
602
+ const drawerOpen = computed(() => isDrawer.value && store.mobileNavOpen);
603
+ /** 路由变化即收抽屉:抽屉是"去别处"的中转,不是常驻面板 */
604
+ watch(() => route.path, () => {
605
+ if (store.mobileNavOpen) store.closeMobileNav();
606
+ });
607
+ /**
608
+ * 形态镜像到 <body>(nav-drawer / nav-drawer-open)。
609
+ *
610
+ * 为什么不用 :class 直接打在 a-layout-sider 上:实测 antd 的 Sider 不会把
611
+ * 动态 class 落到它渲染的 <aside> 上(静态 class 可以,DOM 里查不到 is-drawer)。
612
+ * 依赖第三方组件的 attr 透传行为来做**结构性**布局是脆的 ——
613
+ * 改为把形态写在 body 上,CSS 由 main.css 的响应式层接管,只依赖自己的状态。
614
+ */
615
+ watchEffect(() => {});
616
+ /** 抽屉展开时锁画布滚动(否则背景跟着手指跑,浮层失去"压在台面上"的物理感) */
617
+ watch(drawerOpen, (open) => {});
584
618
  return (_ctx, _push, _parent, _attrs) => {
585
619
  const _component_a_layout_sider = LayoutSider;
586
620
  const _component_AwLogo = AwLogo_default;
587
- _push(ssrRenderComponent(_component_a_layout_sider, mergeProps({
588
- collapsed: unref(store).sidebarCollapsed,
589
- "onUpdate:collapsed": ($event) => unref(store).sidebarCollapsed = $event,
621
+ _push(`<!--[-->`);
622
+ _push(ssrRenderComponent(_component_a_layout_sider, {
623
+ collapsed: unref(effectiveCollapsed),
590
624
  trigger: null,
591
625
  collapsible: "",
592
- breakpoint: "lg",
593
626
  width: 228,
594
627
  "collapsed-width": 64,
595
- class: "app-sider"
596
- }, _attrs), {
628
+ class: "app-sider",
629
+ "data-nav-mode": unref(navMode),
630
+ "aria-hidden": unref(isDrawer) && !unref(drawerOpen) ? "true" : void 0
631
+ }, {
597
632
  default: withCtx((_, _push, _parent, _scopeId) => {
598
633
  if (_push) {
599
- _push(`<div class="logo" data-v-095cc5a0${_scopeId}><div class="logo-mark" aria-hidden="true" data-v-095cc5a0${_scopeId}>`);
634
+ _push(`<div class="logo" data-v-a91ac3dd${_scopeId}><div class="logo-mark" aria-hidden="true" data-v-a91ac3dd${_scopeId}>`);
600
635
  _push(ssrRenderComponent(_component_AwLogo, { size: 30 }, null, _parent, _scopeId));
601
- _push(`</div><div class="logo-text" style="${ssrRenderStyle(!unref(store).sidebarCollapsed ? null : { display: "none" })}" data-v-095cc5a0${_scopeId}><span class="logo-title" data-v-095cc5a0${_scopeId}>${ssrInterpolate(unref(site).name)}</span><span class="logo-sub" data-v-095cc5a0${_scopeId}>digital twin</span></div></div><nav class="app-menu" data-v-095cc5a0${_scopeId}><!--[-->`);
636
+ _push(`</div><div class="logo-text" style="${ssrRenderStyle(unref(showLabels) ? null : { display: "none" })}" data-v-a91ac3dd${_scopeId}><span class="logo-title" data-v-a91ac3dd${_scopeId}>${ssrInterpolate(unref(site).name)}</span><span class="logo-sub" data-v-a91ac3dd${_scopeId}>digital twin</span></div></div><nav class="app-menu" data-v-a91ac3dd${_scopeId}><!--[-->`);
602
637
  ssrRenderList(unref(menuGroups), (group) => {
603
- _push(`<div class="menu-group" data-v-095cc5a0${_scopeId}><div class="menu-group-label" style="${ssrRenderStyle(!unref(store).sidebarCollapsed ? null : { display: "none" })}" data-v-095cc5a0${_scopeId}><span class="menu-group-text" data-v-095cc5a0${_scopeId}>${ssrInterpolate(group.label)}</span><span class="menu-group-rule" aria-hidden="true" data-v-095cc5a0${_scopeId}></span></div><div class="menu-group-sep" aria-hidden="true" style="${ssrRenderStyle(unref(store).sidebarCollapsed ? null : { display: "none" })}" data-v-095cc5a0${_scopeId}></div><!--[-->`);
638
+ _push(`<div class="menu-group" data-v-a91ac3dd${_scopeId}><div class="menu-group-label" style="${ssrRenderStyle(unref(showLabels) ? null : { display: "none" })}" data-v-a91ac3dd${_scopeId}><span class="menu-group-text" data-v-a91ac3dd${_scopeId}>${ssrInterpolate(group.label)}</span><span class="menu-group-rule" aria-hidden="true" data-v-a91ac3dd${_scopeId}></span></div><div class="menu-group-sep" aria-hidden="true" style="${ssrRenderStyle(!unref(showLabels) ? null : { display: "none" })}" data-v-a91ac3dd${_scopeId}></div><!--[-->`);
604
639
  ssrRenderList(group.items, (item) => {
605
- _push(`<button type="button" class="${ssrRenderClass([{ active: isActive(item.key) }, "menu-item im"])}"${ssrRenderAttr("title", unref(store).sidebarCollapsed ? item.label : void 0)} data-v-095cc5a0${_scopeId}><span class="${ssrRenderClass([[item.icon, item.motion], "menu-icon"])}" data-v-095cc5a0${_scopeId}></span><span class="menu-label" style="${ssrRenderStyle(!unref(store).sidebarCollapsed ? null : { display: "none" })}" data-v-095cc5a0${_scopeId}>${ssrInterpolate(item.label)}</span></button>`);
640
+ _push(`<button type="button" class="${ssrRenderClass([{ active: isActive(item.key) }, "menu-item im"])}"${ssrRenderAttr("title", !unref(showLabels) ? item.label : void 0)} data-v-a91ac3dd${_scopeId}><span class="${ssrRenderClass([[item.icon, item.motion], "menu-icon"])}" data-v-a91ac3dd${_scopeId}></span><span class="menu-label" style="${ssrRenderStyle(unref(showLabels) ? null : { display: "none" })}" data-v-a91ac3dd${_scopeId}>${ssrInterpolate(item.label)}</span></button>`);
606
641
  });
607
642
  _push(`<!--]--></div>`);
608
643
  });
609
- _push(`<!--]--></nav><div class="sider-footer" style="${ssrRenderStyle(!unref(store).sidebarCollapsed ? null : { display: "none" })}" data-v-095cc5a0${_scopeId}><div class="footer-rule" data-v-095cc5a0${_scopeId}></div><div class="footer-line" data-v-095cc5a0${_scopeId}><span data-v-095cc5a0${_scopeId}>v${ssrInterpolate(unref(site).version)}</span><span class="sep" data-v-095cc5a0${_scopeId}>/</span><span data-v-095cc5a0${_scopeId}>${ssrInterpolate(unref(site).mode)}</span></div></div>`);
644
+ _push(`<!--]--></nav><div class="sider-footer" style="${ssrRenderStyle(unref(showLabels) ? null : { display: "none" })}" data-v-a91ac3dd${_scopeId}><div class="footer-rule" data-v-a91ac3dd${_scopeId}></div><div class="footer-line" data-v-a91ac3dd${_scopeId}><span data-v-a91ac3dd${_scopeId}>v${ssrInterpolate(unref(site).version)}</span><span class="sep" data-v-a91ac3dd${_scopeId}>/</span><span data-v-a91ac3dd${_scopeId}>${ssrInterpolate(unref(site).mode)}</span></div></div>`);
610
645
  } else return [
611
646
  createVNode("div", { class: "logo" }, [createVNode("div", {
612
647
  class: "logo-mark",
613
648
  "aria-hidden": "true"
614
649
  }, [createVNode(_component_AwLogo, { size: 30 })]), createVNode(Transition, { name: "slide-fade" }, {
615
- default: withCtx(() => [withDirectives(createVNode("div", { class: "logo-text" }, [createVNode("span", { class: "logo-title" }, toDisplayString(unref(site).name), 1), createVNode("span", { class: "logo-sub" }, "digital twin")], 512), [[vShow, !unref(store).sidebarCollapsed]])]),
650
+ default: withCtx(() => [withDirectives(createVNode("div", { class: "logo-text" }, [createVNode("span", { class: "logo-title" }, toDisplayString(unref(site).name), 1), createVNode("span", { class: "logo-sub" }, "digital twin")], 512), [[vShow, unref(showLabels)]])]),
616
651
  _: 1
617
652
  })]),
618
653
  createVNode("nav", { class: "app-menu" }, [(openBlock(true), createBlock(Fragment, null, renderList(unref(menuGroups), (group) => {
@@ -623,19 +658,19 @@ var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
623
658
  withDirectives(createVNode("div", { class: "menu-group-label" }, [createVNode("span", { class: "menu-group-text" }, toDisplayString(group.label), 1), createVNode("span", {
624
659
  class: "menu-group-rule",
625
660
  "aria-hidden": "true"
626
- })], 512), [[vShow, !unref(store).sidebarCollapsed]]),
661
+ })], 512), [[vShow, unref(showLabels)]]),
627
662
  withDirectives(createVNode("div", {
628
663
  class: "menu-group-sep",
629
664
  "aria-hidden": "true"
630
- }, null, 512), [[vShow, unref(store).sidebarCollapsed]]),
665
+ }, null, 512), [[vShow, !unref(showLabels)]]),
631
666
  (openBlock(true), createBlock(Fragment, null, renderList(group.items, (item) => {
632
667
  return openBlock(), createBlock("button", {
633
668
  key: item.key,
634
669
  type: "button",
635
670
  class: ["menu-item im", { active: isActive(item.key) }],
636
- title: unref(store).sidebarCollapsed ? item.label : void 0,
671
+ title: !unref(showLabels) ? item.label : void 0,
637
672
  onClick: ($event) => go(item.key)
638
- }, [createVNode("span", { class: ["menu-icon", [item.icon, item.motion]] }, null, 2), withDirectives(createVNode("span", { class: "menu-label" }, toDisplayString(item.label), 513), [[vShow, !unref(store).sidebarCollapsed]])], 10, ["title", "onClick"]);
673
+ }, [createVNode("span", { class: ["menu-icon", [item.icon, item.motion]] }, null, 2), withDirectives(createVNode("span", { class: "menu-label" }, toDisplayString(item.label), 513), [[vShow, unref(showLabels)]])], 10, ["title", "onClick"]);
639
674
  }), 128))
640
675
  ]);
641
676
  }), 128))]),
@@ -643,11 +678,14 @@ var AppSidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
643
678
  createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
644
679
  createVNode("span", { class: "sep" }, "/"),
645
680
  createVNode("span", null, toDisplayString(unref(site).mode), 1)
646
- ])], 512), [[vShow, !unref(store).sidebarCollapsed]])
681
+ ])], 512), [[vShow, unref(showLabels)]])
647
682
  ];
648
683
  }),
649
684
  _: 1
650
685
  }, _parent));
686
+ if (unref(drawerOpen)) _push(`<div class="nav-scrim" aria-hidden="true" data-v-a91ac3dd></div>`);
687
+ else _push(`<!---->`);
688
+ _push(`<!--]-->`);
651
689
  };
652
690
  }
653
691
  });
@@ -659,7 +697,7 @@ AppSidebar_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
659
697
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/AppSidebar.vue");
660
698
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
661
699
  };
662
- var AppSidebar_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AppSidebar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-095cc5a0"]]), { __name: "AppSidebar" });
700
+ var AppSidebar_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AppSidebar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a91ac3dd"]]), { __name: "AppSidebar" });
663
701
  //#endregion
664
702
  //#region app/stores/route-trail.ts
665
703
  var useRouteTrailStore = (0, composables_exports.defineStore)("app.routeTrail", () => {
@@ -741,6 +779,10 @@ function useRouteMeta() {
741
779
  key: "menu.dcw",
742
780
  icon: "i-tabler-settings-automation"
743
781
  },
782
+ "/aml": {
783
+ key: "menu.aml",
784
+ icon: "i-tabler-flask"
785
+ },
744
786
  "/logs": {
745
787
  key: "menu.logs",
746
788
  icon: "i-tabler-list-details"
@@ -854,7 +896,7 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
854
896
  }
855
897
  };
856
898
  const localeOptions = computed(() => locales.value.map((l) => ({
857
- label: l.name,
899
+ label: isMobile.value ? l.code.split("-")[0].toUpperCase() : l.name,
858
900
  value: l.code
859
901
  })));
860
902
  const switchLocale = (value) => {
@@ -864,6 +906,13 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
864
906
  (void 0).location.reload();
865
907
  }
866
908
  };
909
+ const { isDrawer, isMobile } = useResponsive();
910
+ const navToggleLabel = computed(() => isDrawer.value ? store.mobileNavOpen ? t("header.closeNav") : t("header.openNav") : store.sidebarCollapsed ? t("header.expand") : t("header.collapse"));
911
+ const toggleNav = () => {
912
+ if (isDrawer.value) store.toggleMobileNav();
913
+ else store.toggleSidebar();
914
+ };
915
+ const currentTitle = computed(() => metaFor(route.path).title);
867
916
  const hydrated = ref(false);
868
917
  const plotting = ref(false);
869
918
  let plotTimer = null;
@@ -954,7 +1003,6 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
954
1003
  };
955
1004
  return (_ctx, _push, _parent, _attrs) => {
956
1005
  const _component_a_layout_header = LayoutHeader;
957
- const _component_NuxtLink = NuxtLink;
958
1006
  const _component_ClientOnly = ClientOnly;
959
1007
  const _component_a_dropdown = dropdown_default;
960
1008
  const _component_a_button = button_default;
@@ -966,41 +1014,29 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
966
1014
  _push(ssrRenderComponent(_component_a_layout_header, mergeProps({ class: "app-header app-header-glass" }, _attrs), {
967
1015
  default: withCtx((_, _push, _parent, _scopeId) => {
968
1016
  if (_push) {
969
- _push(`<div class="header-left" data-v-1fa471c5${_scopeId}><button class="collapse-btn"${ssrRenderAttr("aria-label", unref(store).sidebarCollapsed ? unref(t)("header.expand") : unref(t)("header.collapse"))} data-v-1fa471c5${_scopeId}><span class="i-tabler-menu-2" data-v-1fa471c5${_scopeId}></span></button><span class="rail-mark i-tabler-route" data-v-1fa471c5${_scopeId}></span>`);
970
- _push(ssrRenderComponent(_component_NuxtLink, {
971
- class: ["trail-node aml-entry", { active: unref(route).path.startsWith("/aml") }],
972
- to: "/aml",
973
- title: unref(t)("aml.k1amlx159")
974
- }, {
975
- default: withCtx((_, _push, _parent, _scopeId) => {
976
- if (_push) _push(`<span class="node-icon i-tabler-flask" data-v-1fa471c5${_scopeId}></span><span class="node-title" data-v-1fa471c5${_scopeId}>${ssrInterpolate(unref(t)("aml.k1amlx158"))}</span>`);
977
- else return [createVNode("span", { class: "node-icon i-tabler-flask" }), createVNode("span", { class: "node-title" }, toDisplayString(unref(t)("aml.k1amlx158")), 1)];
978
- }),
979
- _: 1
980
- }, _parent, _scopeId));
981
- _push(`<nav class="trail"${ssrRenderAttr("aria-label", unref(t)("header.trail"))} data-v-1fa471c5${_scopeId}><div${ssrRenderAttrs({
1017
+ _push(`<div class="header-left" data-v-a6ff3f55${_scopeId}><button class="collapse-btn"${ssrRenderAttr("aria-label", unref(navToggleLabel))}${ssrRenderAttr("aria-expanded", unref(isDrawer) ? unref(store).mobileNavOpen : !unref(store).sidebarCollapsed)} data-v-a6ff3f55${_scopeId}><span class="i-tabler-menu-2" data-v-a6ff3f55${_scopeId}></span></button><span class="mobile-title" data-v-a6ff3f55${_scopeId}>${ssrInterpolate(unref(currentTitle))}</span><span class="rail-mark i-tabler-route" data-v-a6ff3f55${_scopeId}></span><nav class="trail"${ssrRenderAttr("aria-label", unref(t)("header.trail"))} data-v-a6ff3f55${_scopeId}><div${ssrRenderAttrs({
982
1018
  name: "stamp",
983
1019
  class: "trail-row"
984
- })} data-v-1fa471c5>`);
1020
+ })} data-v-a6ff3f55>`);
985
1021
  if (unref(hydrated)) {
986
1022
  _push(`<!--[-->`);
987
1023
  ssrRenderList(unref(trail).waypoints, (w, i) => {
988
1024
  _push(`<!--[-->`);
989
- if (i > 0) _push(`<span class="trail-link" aria-hidden="true" data-v-1fa471c5${_scopeId}></span>`);
1025
+ if (i > 0) _push(`<span class="trail-link" aria-hidden="true" data-v-a6ff3f55${_scopeId}></span>`);
990
1026
  else _push(`<!---->`);
991
- _push(`<div class="${ssrRenderClass([{ active: w.path === unref(route).path }, "trail-node"])}" role="button" tabindex="0"${ssrRenderAttr("title", unref(metaFor)(w.path).title)} data-v-1fa471c5${_scopeId}><span class="${ssrRenderClass([unref(metaFor)(w.path).icon, "node-icon"])}" data-v-1fa471c5${_scopeId}></span><span class="node-title" data-v-1fa471c5${_scopeId}>${ssrInterpolate(unref(metaFor)(w.path).title)}</span><button class="node-close"${ssrRenderAttr("aria-label", _ctx.$t("appHeader.kzwjv99001", { p0: unref(metaFor)(w.path).title }))}${ssrRenderAttr("title", _ctx.$t("appHeader.kzwjv99001", { p0: unref(metaFor)(w.path).title }))} data-v-1fa471c5${_scopeId}><span class="i-tabler-x" data-v-1fa471c5${_scopeId}></span></button></div><!--]-->`);
1027
+ _push(`<div class="${ssrRenderClass([{ active: w.path === unref(route).path }, "trail-node"])}" role="button" tabindex="0"${ssrRenderAttr("title", unref(metaFor)(w.path).title)} data-v-a6ff3f55${_scopeId}><span class="${ssrRenderClass([unref(metaFor)(w.path).icon, "node-icon"])}" data-v-a6ff3f55${_scopeId}></span><span class="node-title" data-v-a6ff3f55${_scopeId}>${ssrInterpolate(unref(metaFor)(w.path).title)}</span><button class="node-close"${ssrRenderAttr("aria-label", _ctx.$t("appHeader.kzwjv99001", { p0: unref(metaFor)(w.path).title }))}${ssrRenderAttr("title", _ctx.$t("appHeader.kzwjv99001", { p0: unref(metaFor)(w.path).title }))} data-v-a6ff3f55${_scopeId}><span class="i-tabler-x" data-v-a6ff3f55${_scopeId}></span></button></div><!--]-->`);
992
1028
  });
993
1029
  _push(`<!--]-->`);
994
1030
  }
995
- _push(`</div></nav></div><div class="header-right" data-v-1fa471c5${_scopeId}>`);
1031
+ _push(`</div></nav></div><div class="header-right" data-v-a6ff3f55${_scopeId}>`);
996
1032
  _push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent, _scopeId));
997
- if (unref(wsVisible)) _push(`<span class="${ssrRenderClass([unref(wsClass), "ws-dot"])}"${ssrRenderAttr("title", unref(wsLabel))} data-v-1fa471c5${_scopeId}></span>`);
1033
+ if (unref(hydrated) && unref(wsVisible)) _push(`<span class="${ssrRenderClass([unref(wsClass), "ws-dot"])}"${ssrRenderAttr("title", unref(wsLabel))} data-v-a6ff3f55${_scopeId}></span>`);
998
1034
  else _push(`<!---->`);
999
1035
  _push(ssrRenderComponent(_component_a_tooltip, { title: unref(t)("header.fullscreen") }, {
1000
1036
  default: withCtx((_, _push, _parent, _scopeId) => {
1001
- if (_push) _push(`<button class="icon-btn" data-v-1fa471c5${_scopeId}><span class="${ssrRenderClass([{ hidden: unref(isFullscreen) }, "i-tabler-arrows-maximize"])}" data-v-1fa471c5${_scopeId}></span><span class="${ssrRenderClass([{ hidden: !unref(isFullscreen) }, "i-tabler-arrows-minimize"])}" data-v-1fa471c5${_scopeId}></span></button>`);
1037
+ if (_push) _push(`<button class="icon-btn hdr-fullscreen" data-v-a6ff3f55${_scopeId}><span class="${ssrRenderClass([{ hidden: unref(isFullscreen) }, "i-tabler-arrows-maximize"])}" data-v-a6ff3f55${_scopeId}></span><span class="${ssrRenderClass([{ hidden: !unref(isFullscreen) }, "i-tabler-arrows-minimize"])}" data-v-a6ff3f55${_scopeId}></span></button>`);
1002
1038
  else return [createVNode("button", {
1003
- class: "icon-btn",
1039
+ class: "icon-btn hdr-fullscreen",
1004
1040
  onClick: toggleFullscreen
1005
1041
  }, [createVNode("span", { class: ["i-tabler-arrows-maximize", { hidden: unref(isFullscreen) }] }, null, 2), createVNode("span", { class: ["i-tabler-arrows-minimize", { hidden: !unref(isFullscreen) }] }, null, 2)])];
1006
1042
  }),
@@ -1016,7 +1052,7 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
1016
1052
  }, null, _parent, _scopeId));
1017
1053
  _push(ssrRenderComponent(_component_a_tooltip, { title: unref(store).isDark ? unref(t)("common.light") : unref(t)("common.dark") }, {
1018
1054
  default: withCtx((_, _push, _parent, _scopeId) => {
1019
- if (_push) _push(`<button class="icon-btn" data-v-1fa471c5${_scopeId}><span class="${ssrRenderClass([{ hidden: unref(store).isDark }, "i-tabler-sun-high"])}" data-v-1fa471c5${_scopeId}></span><span class="${ssrRenderClass([{ hidden: !unref(store).isDark }, "i-tabler-moon-stars"])}" data-v-1fa471c5${_scopeId}></span></button>`);
1055
+ if (_push) _push(`<button class="icon-btn" data-v-a6ff3f55${_scopeId}><span class="${ssrRenderClass([{ hidden: unref(store).isDark }, "i-tabler-sun-high"])}" data-v-a6ff3f55${_scopeId}></span><span class="${ssrRenderClass([{ hidden: !unref(store).isDark }, "i-tabler-moon-stars"])}" data-v-a6ff3f55${_scopeId}></span></button>`);
1020
1056
  else return [createVNode("button", {
1021
1057
  class: "icon-btn",
1022
1058
  onClick: ($event) => unref(store).toggleDark()
@@ -1038,7 +1074,7 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
1038
1074
  danger: item.danger
1039
1075
  }, {
1040
1076
  default: withCtx((_, _push, _parent, _scopeId) => {
1041
- if (_push) _push(`<span class="${ssrRenderClass([item.icon, "mr-2"])}" data-v-1fa471c5${_scopeId}></span> ${ssrInterpolate(item.label)}`);
1077
+ if (_push) _push(`<span class="${ssrRenderClass([item.icon, "mr-2"])}" data-v-a6ff3f55${_scopeId}></span> ${ssrInterpolate(item.label)}`);
1042
1078
  else return [createVNode("span", { class: [item.icon, "mr-2"] }, null, 2), createTextVNode(" " + toDisplayString(item.label), 1)];
1043
1079
  }),
1044
1080
  _: 2
@@ -1073,9 +1109,9 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
1073
1109
  }),
1074
1110
  default: withCtx((_, _push, _parent, _scopeId) => {
1075
1111
  if (_push) {
1076
- _push(`<div class="user-chip" data-v-1fa471c5${_scopeId}>`);
1112
+ _push(`<div class="user-chip" data-v-a6ff3f55${_scopeId}>`);
1077
1113
  _push(ssrRenderComponent(_component_ClientOnly, null, { fallback: withCtx((_, _push, _parent, _scopeId) => {
1078
- if (_push) _push(`<span class="user-initial aw-avatar" data-v-1fa471c5${_scopeId}>·</span><span class="user-meta" data-v-1fa471c5${_scopeId}><span class="user-name" data-v-1fa471c5${_scopeId}>·</span><span class="user-role" data-v-1fa471c5${_scopeId}>·</span></span>`);
1114
+ if (_push) _push(`<span class="user-initial aw-avatar" data-v-a6ff3f55${_scopeId}>·</span><span class="user-meta" data-v-a6ff3f55${_scopeId}><span class="user-name" data-v-a6ff3f55${_scopeId}>·</span><span class="user-role" data-v-a6ff3f55${_scopeId}>·</span></span>`);
1079
1115
  else return [createVNode("span", { class: "user-initial aw-avatar" }, "·"), createVNode("span", { class: "user-meta" }, [createVNode("span", { class: "user-name" }, "·"), createVNode("span", { class: "user-role" }, "·")])];
1080
1116
  }) }, _parent, _scopeId));
1081
1117
  _push(`</div>`);
@@ -1087,23 +1123,21 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
1087
1123
  }),
1088
1124
  _: 1
1089
1125
  }, _parent, _scopeId));
1090
- _push(`</div><span class="${ssrRenderClass([{ run: unref(plotting) }, "plotter-line"])}" aria-hidden="true" data-v-1fa471c5${_scopeId}></span>`);
1126
+ _push(`</div><span class="${ssrRenderClass([{ run: unref(plotting) }, "plotter-line"])}" aria-hidden="true" data-v-a6ff3f55${_scopeId}></span>`);
1091
1127
  } else return [
1092
1128
  createVNode("div", { class: "header-left" }, [
1093
1129
  createVNode("button", {
1094
1130
  class: "collapse-btn",
1095
- "aria-label": unref(store).sidebarCollapsed ? unref(t)("header.expand") : unref(t)("header.collapse"),
1096
- onClick: ($event) => unref(store).toggleSidebar()
1097
- }, [createVNode("span", { class: "i-tabler-menu-2" })], 8, ["aria-label", "onClick"]),
1131
+ "aria-label": unref(navToggleLabel),
1132
+ "aria-expanded": unref(isDrawer) ? unref(store).mobileNavOpen : !unref(store).sidebarCollapsed,
1133
+ onClick: ($event) => toggleNav()
1134
+ }, [createVNode("span", { class: "i-tabler-menu-2" })], 8, [
1135
+ "aria-label",
1136
+ "aria-expanded",
1137
+ "onClick"
1138
+ ]),
1139
+ createVNode("span", { class: "mobile-title" }, toDisplayString(unref(currentTitle)), 1),
1098
1140
  createVNode("span", { class: "rail-mark i-tabler-route" }),
1099
- createVNode(_component_NuxtLink, {
1100
- class: ["trail-node aml-entry", { active: unref(route).path.startsWith("/aml") }],
1101
- to: "/aml",
1102
- title: unref(t)("aml.k1amlx159")
1103
- }, {
1104
- default: withCtx(() => [createVNode("span", { class: "node-icon i-tabler-flask" }), createVNode("span", { class: "node-title" }, toDisplayString(unref(t)("aml.k1amlx158")), 1)]),
1105
- _: 1
1106
- }, 8, ["class", "title"]),
1107
1141
  createVNode("nav", {
1108
1142
  class: "trail",
1109
1143
  "aria-label": unref(t)("header.trail")
@@ -1191,14 +1225,14 @@ var AppHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
1191
1225
  })) : createCommentVNode("", true)]),
1192
1226
  _: 1
1193
1227
  }),
1194
- unref(wsVisible) ? (openBlock(), createBlock("span", {
1228
+ unref(hydrated) && unref(wsVisible) ? (openBlock(), createBlock("span", {
1195
1229
  key: 0,
1196
1230
  class: ["ws-dot", unref(wsClass)],
1197
1231
  title: unref(wsLabel)
1198
1232
  }, null, 10, ["title"])) : createCommentVNode("", true),
1199
1233
  createVNode(_component_a_tooltip, { title: unref(t)("header.fullscreen") }, {
1200
1234
  default: withCtx(() => [createVNode("button", {
1201
- class: "icon-btn",
1235
+ class: "icon-btn hdr-fullscreen",
1202
1236
  onClick: toggleFullscreen
1203
1237
  }, [createVNode("span", { class: ["i-tabler-arrows-maximize", { hidden: unref(isFullscreen) }] }, null, 2), createVNode("span", { class: ["i-tabler-arrows-minimize", { hidden: !unref(isFullscreen) }] }, null, 2)])]),
1204
1238
  _: 1
@@ -1258,7 +1292,7 @@ AppHeader_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
1258
1292
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/AppHeader.vue");
1259
1293
  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
1260
1294
  };
1261
- var AppHeader_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AppHeader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1fa471c5"]]), { __name: "AppHeader" });
1295
+ var AppHeader_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AppHeader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a6ff3f55"]]), { __name: "AppHeader" });
1262
1296
  //#endregion
1263
1297
  //#region app/layouts/default.vue?vue&type=script&setup=true&lang.ts
1264
1298
  var default_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -1309,13 +1343,28 @@ var default_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
1309
1343
  style: { color: unref(token)?.colorTextSecondary }
1310
1344
  }, {
1311
1345
  default: withCtx((_, _push, _parent, _scopeId) => {
1312
- if (_push) _push(`<span class="footer-title aw-serif-accent" data-v-b48dd792${_scopeId}>${ssrInterpolate(unref(site).title)}</span><span class="sep" data-v-b48dd792${_scopeId}>/</span><span data-v-b48dd792${_scopeId}>v${ssrInterpolate(unref(site).version)}</span><span class="sep" data-v-b48dd792${_scopeId}>/</span><span data-v-b48dd792${_scopeId}>mode=${ssrInterpolate(unref(site).mode)}</span>`);
1346
+ if (_push) _push(`<span class="footer-title aw-serif-accent" data-v-e4abc244${_scopeId}>${ssrInterpolate(unref(site).title)}</span><span class="sep" data-v-e4abc244${_scopeId}>/</span><span data-v-e4abc244${_scopeId}>mode=${ssrInterpolate(unref(site).mode)}</span><span class="footer-corner" data-v-e4abc244${_scopeId}><span data-v-e4abc244${_scopeId}>v${ssrInterpolate(unref(site).version)}</span><span class="sep" data-v-e4abc244${_scopeId}>·</span><a class="footer-link" href="https://github.com/kingdol666/AgentWorkShop" target="_blank" rel="noopener" data-v-e4abc244${_scopeId}>GitHub</a><span class="sep" data-v-e4abc244${_scopeId}>·</span><a class="footer-link" href="https://kingdol666.github.io/AgentWorkShop/" target="_blank" rel="noopener" data-v-e4abc244${_scopeId}>Docs</a></span>`);
1313
1347
  else return [
1314
1348
  createVNode("span", { class: "footer-title aw-serif-accent" }, toDisplayString(unref(site).title), 1),
1315
1349
  createVNode("span", { class: "sep" }, "/"),
1316
- createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1317
- createVNode("span", { class: "sep" }, "/"),
1318
- createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1)
1350
+ createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1),
1351
+ createVNode("span", { class: "footer-corner" }, [
1352
+ createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1353
+ createVNode("span", { class: "sep" }, "·"),
1354
+ createVNode("a", {
1355
+ class: "footer-link",
1356
+ href: "https://github.com/kingdol666/AgentWorkShop",
1357
+ target: "_blank",
1358
+ rel: "noopener"
1359
+ }, "GitHub"),
1360
+ createVNode("span", { class: "sep" }, "·"),
1361
+ createVNode("a", {
1362
+ class: "footer-link",
1363
+ href: "https://kingdol666.github.io/AgentWorkShop/",
1364
+ target: "_blank",
1365
+ rel: "noopener"
1366
+ }, "Docs")
1367
+ ])
1319
1368
  ];
1320
1369
  }),
1321
1370
  _: 1
@@ -1333,9 +1382,24 @@ var default_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
1333
1382
  default: withCtx(() => [
1334
1383
  createVNode("span", { class: "footer-title aw-serif-accent" }, toDisplayString(unref(site).title), 1),
1335
1384
  createVNode("span", { class: "sep" }, "/"),
1336
- createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1337
- createVNode("span", { class: "sep" }, "/"),
1338
- createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1)
1385
+ createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1),
1386
+ createVNode("span", { class: "footer-corner" }, [
1387
+ createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1388
+ createVNode("span", { class: "sep" }, "·"),
1389
+ createVNode("a", {
1390
+ class: "footer-link",
1391
+ href: "https://github.com/kingdol666/AgentWorkShop",
1392
+ target: "_blank",
1393
+ rel: "noopener"
1394
+ }, "GitHub"),
1395
+ createVNode("span", { class: "sep" }, "·"),
1396
+ createVNode("a", {
1397
+ class: "footer-link",
1398
+ href: "https://kingdol666.github.io/AgentWorkShop/",
1399
+ target: "_blank",
1400
+ rel: "noopener"
1401
+ }, "Docs")
1402
+ ])
1339
1403
  ]),
1340
1404
  _: 1
1341
1405
  }, 8, ["style"])
@@ -1343,7 +1407,7 @@ var default_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
1343
1407
  }),
1344
1408
  _: 3
1345
1409
  }, _parent, _scopeId));
1346
- _push(`<span class="aw-noise" aria-hidden="true" data-v-b48dd792${_scopeId}></span>`);
1410
+ _push(`<span class="aw-noise" aria-hidden="true" data-v-e4abc244${_scopeId}></span>`);
1347
1411
  } else return [
1348
1412
  createVNode(_component_AppSidebar),
1349
1413
  createVNode(_component_a_layout, {
@@ -1373,9 +1437,24 @@ var default_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
1373
1437
  default: withCtx(() => [
1374
1438
  createVNode("span", { class: "footer-title aw-serif-accent" }, toDisplayString(unref(site).title), 1),
1375
1439
  createVNode("span", { class: "sep" }, "/"),
1376
- createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1377
- createVNode("span", { class: "sep" }, "/"),
1378
- createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1)
1440
+ createVNode("span", null, "mode=" + toDisplayString(unref(site).mode), 1),
1441
+ createVNode("span", { class: "footer-corner" }, [
1442
+ createVNode("span", null, "v" + toDisplayString(unref(site).version), 1),
1443
+ createVNode("span", { class: "sep" }, "·"),
1444
+ createVNode("a", {
1445
+ class: "footer-link",
1446
+ href: "https://github.com/kingdol666/AgentWorkShop",
1447
+ target: "_blank",
1448
+ rel: "noopener"
1449
+ }, "GitHub"),
1450
+ createVNode("span", { class: "sep" }, "·"),
1451
+ createVNode("a", {
1452
+ class: "footer-link",
1453
+ href: "https://kingdol666.github.io/AgentWorkShop/",
1454
+ target: "_blank",
1455
+ rel: "noopener"
1456
+ }, "Docs")
1457
+ ])
1379
1458
  ]),
1380
1459
  _: 1
1381
1460
  }, 8, ["style"])
@@ -1401,7 +1480,7 @@ default_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
1401
1480
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("layouts/default.vue");
1402
1481
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1403
1482
  };
1404
- var default_default = /*#__PURE__*/ _plugin_vue_export_helper_default(default_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b48dd792"]]);
1483
+ var default_default = /*#__PURE__*/ _plugin_vue_export_helper_default(default_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e4abc244"]]);
1405
1484
 
1406
1485
  export { default_default as default };
1407
- //# sourceMappingURL=default-hseyOqBT.mjs.map
1486
+ //# sourceMappingURL=default-BE4r0FZN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-hseyOqBT.mjs","sources":["../../../../node_modules/.pnpm/@ant-design+icons-svg@4.5.0/node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","../../../../node_modules/.pnpm/@ant-design+icons-vue@7.0.1_vue@3.5.41_typescript@5.9.3_/node_modules/@ant-design/icons-vue/es/icons/BarsOutlined.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/style/light.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/style/index.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/layout.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/Sider.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/index.js","../../../../app/components/AwLogo.vue","../../../../app/components/AppSidebar.vue","../../../../app/stores/route-trail.ts","../../../../app/composables/useRouteMeta.ts","../../../../app/components/AppHeader.vue","../../../../app/layouts/default.vue"],"names":["BarsOutlined","_createVNode","AntdIcon","BarsOutlinedSvg","mergeToken","useConfigInject","useStyle","Sider","api","$t"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6]}
1
+ {"version":3,"file":"default-BE4r0FZN.mjs","sources":["../../../../node_modules/.pnpm/@ant-design+icons-svg@4.5.0/node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","../../../../node_modules/.pnpm/@ant-design+icons-vue@7.0.1_vue@3.5.41_typescript@5.9.3_/node_modules/@ant-design/icons-vue/es/icons/BarsOutlined.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/style/light.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/style/index.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/layout.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/Sider.js","../../../../node_modules/.pnpm/ant-design-vue@4.2.6_vue@3.5.41_typescript@5.9.3_/node_modules/ant-design-vue/es/layout/index.js","../../../../app/components/AwLogo.vue","../../../../app/components/AppSidebar.vue","../../../../app/stores/route-trail.ts","../../../../app/composables/useRouteMeta.ts","../../../../app/components/AppHeader.vue","../../../../app/layouts/default.vue"],"names":["BarsOutlined","_createVNode","AntdIcon","BarsOutlinedSvg","mergeToken","useConfigInject","useStyle","Sider","api","$t"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6]}