agentworkshop 0.5.9 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.AgentWorkShop/prompts/compaction-hints.md +9 -9
- package/.AgentWorkShop/prompts/host-tools.json +42 -0
- package/.output/.AgentWorkShop/prompts/compaction-hints.md +9 -9
- package/.output/.AgentWorkShop/prompts/host-tools.json +42 -0
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{Dm5mD6XT.js → BD9D9pl4.js} +1 -1
- package/.output/public/_nuxt/{BdKzfJiM.js → BxD8Fg_Z.js} +1 -1
- package/.output/public/_nuxt/{dRAyjbJ6.js → C-Y5ydB6.js} +3 -3
- package/.output/public/_nuxt/{Bok1DRqh.js → C0FogB-p.js} +1 -1
- package/.output/public/_nuxt/{BUNGEK2z.js → C2QSTAWf.js} +1 -1
- package/.output/public/_nuxt/{CWDzKGtj.js → CclO6GyL.js} +1 -1
- package/.output/public/_nuxt/{B3__nfxM.js → Ck6tznoQ.js} +1 -1
- package/.output/public/_nuxt/CwS_UHeH.js +1 -0
- package/.output/public/_nuxt/{CE2ynNi9.js → CwcOEM8m.js} +1 -1
- package/.output/public/_nuxt/MhK4buEJ.js +1 -0
- package/.output/public/_nuxt/_id_.DN3U6EF9.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/a0ac51ef-51c0-4ff9-8484-7c90d8dd10ba.json +1 -0
- package/.output/public/_nuxt/{entry.DjhxLu-f.css → entry.DvlXlPwx.css} +1 -1
- package/.output/public/_nuxt/settings.BG0K9_MG.css +1 -0
- package/.output/server/chunks/_/error-500.mjs.map +1 -1
- package/.output/server/chunks/_/nitro.mjs +2648 -1401
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{OmpTerminalPanel-CZnxR3M_.mjs → OmpTerminalPanel-B_SYhmgb.mjs} +2 -2
- package/.output/server/chunks/build/{OmpTerminalPanel-CZnxR3M_.mjs.map → OmpTerminalPanel-B_SYhmgb.mjs.map} +1 -1
- package/.output/server/chunks/build/{TownView-DYlUNRZe.mjs → TownView-D9yCQe1T.mjs} +6 -6
- package/.output/server/chunks/build/{TownView-DYlUNRZe.mjs.map → TownView-D9yCQe1T.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-BOhG2yz8.mjs → _id_-CmKAEFHV.mjs} +4 -2
- package/.output/server/chunks/build/_id_-CmKAEFHV.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CuyMYmhY.mjs → _id_-xR3AChMO.mjs} +74 -26
- package/.output/server/chunks/build/_id_-xR3AChMO.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-B5f5BdW2.mjs → _wsId_-C45nVrl-.mjs} +12 -10
- package/.output/server/chunks/build/{_wsId_-B5f5BdW2.mjs.map → _wsId_-C45nVrl-.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-BVaxN75W.mjs → agents-D4l1icvn.mjs} +5 -3
- package/.output/server/chunks/build/agents-D4l1icvn.mjs.map +1 -0
- package/.output/server/chunks/build/{channel-templates-D1K2IKrE.mjs → channel-templates-DqjtC-R0.mjs} +5 -3
- package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs.map +1 -0
- package/.output/server/chunks/build/{client-only-CFTHwakk.mjs → client-only-D5BzSQc6.mjs} +2 -2
- package/.output/server/chunks/build/client-only-D5BzSQc6.mjs.map +1 -0
- package/.output/server/chunks/build/{daq-ObtN1TQ4.mjs → daq-Boz_dlAQ.mjs} +6 -4
- package/.output/server/chunks/build/daq-Boz_dlAQ.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-fINr-He1.mjs → dcw-wTRwBAUi.mjs} +3 -1
- package/.output/server/chunks/build/dcw-wTRwBAUi.mjs.map +1 -0
- package/.output/server/chunks/build/{default-CVVO40Jj.mjs → default-Dt6xLdpd.mjs} +7 -5
- package/.output/server/chunks/build/{default-CVVO40Jj.mjs.map → default-Dt6xLdpd.mjs.map} +1 -1
- package/.output/server/chunks/build/interval-WlxgjTzO.mjs +9 -0
- package/.output/server/chunks/build/interval-WlxgjTzO.mjs.map +1 -0
- package/.output/server/chunks/build/{logs-DqNgCJAn.mjs → logs-Cdi-eXlN.mjs} +5 -3
- package/.output/server/chunks/build/logs-Cdi-eXlN.mjs.map +1 -0
- package/.output/server/chunks/build/{monitor-CTZLwbdw.mjs → monitor-yNoV98rf.mjs} +6 -4
- package/.output/server/chunks/build/{monitor-CTZLwbdw.mjs.map → monitor-yNoV98rf.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-DC52d7z7.mjs → pages-bWKy0ZsA.mjs} +6 -4
- package/.output/server/chunks/build/pages-bWKy0ZsA.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-DVQty7qG.mjs → plugins-B-ZNey0Z.mjs} +4 -2
- package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-BeergncK.mjs → settings-C3T5hR2A.mjs} +21 -19
- package/.output/server/chunks/build/settings-C3T5hR2A.mjs.map +1 -0
- package/.output/server/chunks/build/{teams-CFeDlHDh.mjs → teams-QR3BBF7A.mjs} +5 -3
- package/.output/server/chunks/build/teams-QR3BBF7A.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-CBAUbOce.mjs → tokens-DFvr_TLj.mjs} +4 -2
- package/.output/server/chunks/build/tokens-DFvr_TLj.mjs.map +1 -0
- package/.output/server/chunks/build/town-BUqRobze.mjs +2 -0
- package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
- package/.output/server/chunks/build/{town-BxH-XXth.mjs → town-CKg6Qxba.mjs} +9 -7
- package/.output/server/chunks/build/town-CKg6Qxba.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqStream-CwORhsD7.mjs → useDaqStream-zHEptJQ_.mjs} +44 -1
- package/.output/server/chunks/build/useDaqStream-zHEptJQ_.mjs.map +1 -0
- package/.output/server/chunks/build/{useSiteConfig-Cc-ABesl.mjs → useSiteConfig-DJe_KMVr.mjs} +1 -1
- package/.output/server/chunks/build/{useSiteConfig-Cc-ABesl.mjs.map → useSiteConfig-DJe_KMVr.mjs.map} +1 -1
- package/.output/server/chunks/build/{useWorkshopApi-5er8_EHZ.mjs → useWorkshopApi-Bh5VUHWu.mjs} +1 -1
- package/.output/server/chunks/build/{useWorkshopApi-5er8_EHZ.mjs.map → useWorkshopApi-Bh5VUHWu.mjs.map} +1 -1
- package/.output/server/chunks/build/{useWorkshopWs-Dwr_1Q8f.mjs → useWorkshopWs-xcdeiSmJ.mjs} +2 -2
- package/.output/server/chunks/build/{useWorkshopWs-Dwr_1Q8f.mjs.map → useWorkshopWs-xcdeiSmJ.mjs.map} +1 -1
- package/.output/server/chunks/build/{user-CpVY4OAA.mjs → user-Dk-ytEUV.mjs} +1 -1
- package/.output/server/chunks/build/{user-CpVY4OAA.mjs.map → user-Dk-ytEUV.mjs.map} +1 -1
- package/.output/server/chunks/build/{users-BMs4s_6K.mjs → users-4FZ0yFUO.mjs} +4 -2
- package/.output/server/chunks/build/users-4FZ0yFUO.mjs.map +1 -0
- package/.output/server/chunks/build/{workshop-CJAyZ5zS.mjs → workshop-CLhwe5eo.mjs} +6 -4
- package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +1 -0
- package/.output/server/chunks/build/{workspaces-Dq-1zvu9.mjs → workspaces-IfORCDJE.mjs} +2 -2
- package/.output/server/chunks/build/{workspaces-Dq-1zvu9.mjs.map → workspaces-IfORCDJE.mjs.map} +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +2 -0
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +2 -0
- package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +2 -0
- package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +2 -0
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -0
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs +2 -0
- package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +2 -0
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -0
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -0
- package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +3 -2
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -0
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +2 -0
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +2 -0
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -0
- package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +2 -0
- package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +2 -0
- package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -0
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +36 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +53 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs.map +1 -1
- package/.output/server/chunks/virtual/entry.mjs +166 -114
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +2 -0
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/app/composables/workshop/useDaqStream.ts +59 -1
- package/app/config/schema.ts +8 -0
- package/app/pages/daq/[id].vue +141 -1
- package/app/pages/settings.vue +10 -5
- package/app/plugins/runtime-config.client.ts +65 -65
- package/app/stores/runtime-config.ts +212 -212
- package/config.yml +77 -70
- package/docker-compose.yml +19 -2
- package/docs/plugins.md +271 -197
- package/i18n/dicts/_en.json +7 -2
- package/i18n/dicts/daqDetail.json +8 -2
- package/i18n/locales/en.ts +55 -29
- package/i18n/locales/zh-CN.ts +55 -29
- package/nuxt.config.ts +1 -1
- package/package.json +144 -143
- package/scripts/_dbg-collab-scenario-e2e.mjs +185 -0
- package/scripts/_dbg-daq-frame-alarm.mjs +49 -0
- package/scripts/_dbg-daq-frame-ui.mjs +62 -0
- package/scripts/_dbg-daq-frame-ws.mjs +72 -0
- package/scripts/_dbg-daq-frames-e2e.mjs +118 -0
- package/scripts/_dbg-host.mjs +16 -0
- package/scripts/_dbg-plugin-agent-read.ts +56 -0
- package/scripts/_dbg-plugin-sink-rest.mjs +70 -0
- package/scripts/_dbg-plugin-sink-ui.mjs +81 -0
- package/scripts/_dbg-prompts-hotreload-test.ts +76 -0
- package/scripts/_dbg-release-smoke.mjs +104 -0
- package/scripts/i18n-merge.mjs +69 -67
- package/scripts/test-context-governor.ts +176 -176
- package/scripts/test-daq-frames.ts +180 -0
- package/scripts/test-daq-minio.ts +77 -0
- package/scripts/test-memory-rrf-mmr.ts +114 -114
- package/scripts/test-plugin-ext.ts +173 -0
- package/server/api/system/settings/events.get.ts +27 -28
- package/server/api/system/settings/index.get.ts +14 -14
- package/server/api/system/settings/index.patch.ts +22 -22
- package/server/api/system/settings/reset.post.ts +12 -12
- package/server/api/workshop/daq/[id]/frames/content.get.ts +24 -0
- package/server/api/workshop/daq/[id]/frames.get.ts +44 -0
- package/server/data/daqs.json +89 -89
- package/server/data/dcw-rollback.json +1 -1
- package/server/data/dcw-runs.json +3136 -2492
- package/server/data/dcw-writes.json +672 -0
- package/server/data/dcws.json +4 -4
- package/server/data/line-runs.json +1 -232
- package/server/plugins/daq.ts +11 -0
- package/server/plugins/system-config.ts +38 -38
- package/server/services/system-config.ts +365 -356
- package/server/services/workshop/agents/industrial-tools.ts +91 -25
- package/server/services/workshop/agents/omp-agent.ts +1955 -1895
- package/server/services/workshop/agents/plugin-tools.ts +145 -0
- package/server/services/workshop/daq/bus/queue-port.ts +18 -0
- package/server/services/workshop/daq/daq-controller.ts +216 -14
- package/server/services/workshop/daq/daq-node.ts +257 -247
- package/server/services/workshop/daq/daq-runtime.ts +36 -4
- package/server/services/workshop/daq/daq-templates.ts +213 -157
- package/server/services/workshop/daq/drivers.ts +134 -30
- package/server/services/workshop/daq/frames.ts +227 -0
- package/server/services/workshop/daq/infra.ts +31 -17
- package/server/services/workshop/daq/objectstore/disk.adapter.ts +38 -0
- package/server/services/workshop/daq/objectstore/index.ts +88 -0
- package/server/services/workshop/daq/objectstore/minio.adapter.ts +60 -0
- package/server/services/workshop/daq/objectstore/objectstore-port.ts +27 -0
- package/server/services/workshop/daq/plugin-bridge.ts +73 -0
- package/server/services/workshop/daq/png-enc.ts +71 -0
- package/server/services/workshop/daq/storage/sqlite.adapter.ts +104 -1
- package/server/services/workshop/daq/storage/timescale.adapter.ts +95 -4
- package/server/services/workshop/daq/storage/tsdb-port.ts +46 -0
- package/server/services/workshop/plugins/host.mjs +479 -417
- package/server/services/workshop/runtime/agent-runtime.ts +744 -744
- package/shared/config/schema.json +6 -1
- package/shared/daq-protocol.ts +88 -0
- package/.output/public/_nuxt/B-PgoIPN.js +0 -1
- package/.output/public/_nuxt/DVNYfGsj.js +0 -1
- package/.output/public/_nuxt/_id_.CbiF5PrV.css +0 -1
- package/.output/public/_nuxt/builds/meta/6f7e40bf-a960-4f51-8a2e-bb1fffeaa5e8.json +0 -1
- package/.output/public/_nuxt/settings.BANibAnV.css +0 -1
- package/.output/server/chunks/build/_id_-BOhG2yz8.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CuyMYmhY.mjs.map +0 -1
- package/.output/server/chunks/build/agents-BVaxN75W.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-D1K2IKrE.mjs.map +0 -1
- package/.output/server/chunks/build/client-only-CFTHwakk.mjs.map +0 -1
- package/.output/server/chunks/build/daq-ObtN1TQ4.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-fINr-He1.mjs.map +0 -1
- package/.output/server/chunks/build/interval-Bt11uRPw.mjs +0 -9
- package/.output/server/chunks/build/interval-Bt11uRPw.mjs.map +0 -1
- package/.output/server/chunks/build/logs-DqNgCJAn.mjs.map +0 -1
- package/.output/server/chunks/build/pages-DC52d7z7.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-DVQty7qG.mjs.map +0 -1
- package/.output/server/chunks/build/settings-BeergncK.mjs.map +0 -1
- package/.output/server/chunks/build/teams-CFeDlHDh.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-CBAUbOce.mjs.map +0 -1
- package/.output/server/chunks/build/town-BxH-XXth.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqStream-CwORhsD7.mjs.map +0 -1
- package/.output/server/chunks/build/users-BMs4s_6K.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-CJAyZ5zS.mjs.map +0 -1
|
@@ -1,212 +1,212 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 运行时配置 Store —— 前端设置持久化 + 热重载的枢纽。
|
|
3
|
-
*
|
|
4
|
-
* - fetchAll(): GET /api/system/settings(描述符驱动的表单数据源)
|
|
5
|
-
* - patch() : PATCH /api/system/settings(持久化 + 服务端热应用 + SSE 广播)
|
|
6
|
-
* - reset() : POST /api/system/settings/reset
|
|
7
|
-
* - startEvents(): fetch + ReadableStream 订阅 SSE,服务端任意写入(UI/CLI/文件监听)都实时同步
|
|
8
|
-
*
|
|
9
|
-
* 与服务端 SystemConfigService 同源(shared/config/schema.json 描述符),
|
|
10
|
-
* 前端看到的值永远等于服务端内存视图。
|
|
11
|
-
*/
|
|
12
|
-
import { useCookie, useRuntimeConfig } from '#imports'
|
|
13
|
-
import { useHttp } from '~/composables/useHttp'
|
|
14
|
-
|
|
15
|
-
export interface SettingsDescriptor {
|
|
16
|
-
key: string
|
|
17
|
-
type: 'string' | 'number' | 'boolean' | 'color' | 'select'
|
|
18
|
-
group: string
|
|
19
|
-
label: string
|
|
20
|
-
labelKey?: string
|
|
21
|
-
description?: string
|
|
22
|
-
applies: 'live' | 'restart'
|
|
23
|
-
default?: unknown
|
|
24
|
-
min?: number
|
|
25
|
-
max?: number
|
|
26
|
-
options?: string[]
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface Snapshot {
|
|
30
|
-
descriptors: SettingsDescriptor[]
|
|
31
|
-
effective: Record<string, unknown>
|
|
32
|
-
overrides: Record<string, unknown>
|
|
33
|
-
sources: Record<string, string>
|
|
34
|
-
settingsPath: string
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
interface SettingsEvent {
|
|
38
|
-
type: 'config:changed' | 'config:reset' | 'config:reloaded'
|
|
39
|
-
changed: string[]
|
|
40
|
-
restartRequired: string[]
|
|
41
|
-
effective: Record<string, unknown>
|
|
42
|
-
sources: Record<string, string>
|
|
43
|
-
overrides: Record<string, unknown>
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const useRuntimeConfigStore = defineStore('runtime-config', () => {
|
|
47
|
-
const descriptors = ref<SettingsDescriptor[]>([])
|
|
48
|
-
const effective = ref<Record<string, unknown>>({})
|
|
49
|
-
const overrides = ref<Record<string, unknown>>({})
|
|
50
|
-
const sources = ref<Record<string, string>>({})
|
|
51
|
-
const settingsPath = ref('')
|
|
52
|
-
const loaded = ref(false)
|
|
53
|
-
const loading = ref(false)
|
|
54
|
-
const lastEvent = ref<SettingsEvent | null>(null)
|
|
55
|
-
|
|
56
|
-
// 分组后的设置项(computed:按 schema.json group 保持声明顺序)
|
|
57
|
-
const groups = computed(() => {
|
|
58
|
-
const out: Array<{ group: string, items: SettingsDescriptor[] }> = []
|
|
59
|
-
for (const d of descriptors.value) {
|
|
60
|
-
const g = out.find(x => x.group === d.group)
|
|
61
|
-
if (g) g.items.push(d)
|
|
62
|
-
else out.push({ group: d.group, items: [d] })
|
|
63
|
-
}
|
|
64
|
-
return out
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
function sourceOf(key: string): string {
|
|
68
|
-
return sources.value[key] ?? 'config.yml'
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/** 取某键当前有效值 */
|
|
72
|
-
function valueOf(key: string): unknown {
|
|
73
|
-
return effective.value[key]
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
async function fetchAll(): Promise<void> {
|
|
77
|
-
loading.value = true
|
|
78
|
-
try {
|
|
79
|
-
const http = useHttp()
|
|
80
|
-
const env = await http.get<{ data: Snapshot }>('/system/settings')
|
|
81
|
-
applySnapshot((env as { data?: Snapshot }).data ?? (env as unknown as Snapshot))
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
// 未登录 / 服务未就绪:保持未加载,UI 显示占位
|
|
85
|
-
console.warn('[runtime-config] 读取设置失败:', err)
|
|
86
|
-
}
|
|
87
|
-
finally {
|
|
88
|
-
loading.value = false
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function applySnapshot(snap: Snapshot): void {
|
|
93
|
-
descriptors.value = snap.descriptors ?? []
|
|
94
|
-
effective.value = snap.effective ?? {}
|
|
95
|
-
overrides.value = snap.overrides ?? {}
|
|
96
|
-
sources.value = snap.sources ?? {}
|
|
97
|
-
settingsPath.value = snap.settingsPath ?? ''
|
|
98
|
-
loaded.value = true
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* 保存一组覆盖(同 PATCH 语义;值为 null 表示清除该键覆盖)。
|
|
103
|
-
* @returns 服务端返回 { changed, restartRequired, effective, sources }
|
|
104
|
-
*/
|
|
105
|
-
async function patch(patchMap: Record<string, unknown | null>): Promise<{ changed: string[], restartRequired: string[], effective: Record<string, unknown> }> {
|
|
106
|
-
const http = useHttp()
|
|
107
|
-
const env = await http.request<{ data: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }>({
|
|
108
|
-
method: 'PATCH',
|
|
109
|
-
url: '/system/settings',
|
|
110
|
-
data: { override: patchMap },
|
|
111
|
-
})
|
|
112
|
-
const res = ((env as { data?: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }).data != null
|
|
113
|
-
? (env as { data: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }).data
|
|
114
|
-
: env as unknown as { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> })
|
|
115
|
-
if (res.effective) effective.value = res.effective
|
|
116
|
-
if (res.sources) sources.value = res.sources
|
|
117
|
-
return res
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/** 清空全部运行时覆盖(回落 config.yml) */
|
|
121
|
-
async function resetAll(): Promise<{ changed: string[], restartRequired: string[] }> {
|
|
122
|
-
const http = useHttp()
|
|
123
|
-
const env = await http.post<{ data: { changed: string[], restartRequired: string[] } }>('/system/settings/reset')
|
|
124
|
-
const res = ((env as { data?: { changed: string[] } }).data ?? (env as unknown as { changed: string[] })) as { changed: string[], restartRequired: string[] }
|
|
125
|
-
if (res.changed?.length) await fetchAll()
|
|
126
|
-
return res
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/* ---------------- SSE 订阅(fetch-based,携带 Authorization 头) ---------------- */
|
|
130
|
-
let controller: AbortController | null = null
|
|
131
|
-
|
|
132
|
-
function startEvents(): void {
|
|
133
|
-
stopEvents()
|
|
134
|
-
if (!import.meta.client) return
|
|
135
|
-
const rt = useRuntimeConfig().public
|
|
136
|
-
const base = (rt.apiBase as string) || '/api'
|
|
137
|
-
const token = useCookie<string | null>('token').value ?? ''
|
|
138
|
-
controller = new AbortController()
|
|
139
|
-
|
|
140
|
-
void (async () => {
|
|
141
|
-
try {
|
|
142
|
-
const res = await fetch(`${base}/system/settings/events`, {
|
|
143
|
-
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
144
|
-
signal: controller?.signal,
|
|
145
|
-
})
|
|
146
|
-
if (!res.ok || !res.body) return
|
|
147
|
-
const reader = res.body.getReader()
|
|
148
|
-
const decoder = new TextDecoder()
|
|
149
|
-
let buf = ''
|
|
150
|
-
try {
|
|
151
|
-
for (;;) {
|
|
152
|
-
const { done, value } = await reader.read()
|
|
153
|
-
if (done) break
|
|
154
|
-
buf += decoder.decode(value, { stream: true })
|
|
155
|
-
let idx
|
|
156
|
-
while ((idx = buf.indexOf('\n\n')) >= 0) {
|
|
157
|
-
const chunk = buf.slice(0, idx)
|
|
158
|
-
buf = buf.slice(idx + 2)
|
|
159
|
-
const dataLine = chunk.split('\n').find(l => l.startsWith('data:'))
|
|
160
|
-
if (!dataLine) continue
|
|
161
|
-
const raw = dataLine.slice(5).trim()
|
|
162
|
-
if (!raw) continue
|
|
163
|
-
try {
|
|
164
|
-
applyEvent(JSON.parse(raw) as SettingsEvent)
|
|
165
|
-
}
|
|
166
|
-
catch { /* 非法载荷忽略 */ }
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
if ((err as Error)?.name !== 'AbortError') console.warn('[runtime-config] SSE 读取中断:', err)
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
catch (err) {
|
|
175
|
-
if ((err as Error)?.name !== 'AbortError') console.warn('[runtime-config] SSE 连接失败:', err)
|
|
176
|
-
}
|
|
177
|
-
})()
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function applyEvent(ev: SettingsEvent): void {
|
|
181
|
-
lastEvent.value = ev
|
|
182
|
-
if (ev.effective) effective.value = ev.effective
|
|
183
|
-
if (ev.sources) sources.value = ev.sources
|
|
184
|
-
if (ev.overrides) overrides.value = ev.overrides
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function stopEvents(): void {
|
|
188
|
-
if (controller) {
|
|
189
|
-
controller.abort()
|
|
190
|
-
controller = null
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return {
|
|
195
|
-
descriptors,
|
|
196
|
-
effective,
|
|
197
|
-
overrides,
|
|
198
|
-
sources,
|
|
199
|
-
settingsPath,
|
|
200
|
-
loaded,
|
|
201
|
-
loading,
|
|
202
|
-
lastEvent,
|
|
203
|
-
groups,
|
|
204
|
-
sourceOf,
|
|
205
|
-
valueOf,
|
|
206
|
-
fetchAll,
|
|
207
|
-
patch,
|
|
208
|
-
resetAll,
|
|
209
|
-
startEvents,
|
|
210
|
-
stopEvents,
|
|
211
|
-
}
|
|
212
|
-
})
|
|
1
|
+
/**
|
|
2
|
+
* 运行时配置 Store —— 前端设置持久化 + 热重载的枢纽。
|
|
3
|
+
*
|
|
4
|
+
* - fetchAll(): GET /api/system/settings(描述符驱动的表单数据源)
|
|
5
|
+
* - patch() : PATCH /api/system/settings(持久化 + 服务端热应用 + SSE 广播)
|
|
6
|
+
* - reset() : POST /api/system/settings/reset
|
|
7
|
+
* - startEvents(): fetch + ReadableStream 订阅 SSE,服务端任意写入(UI/CLI/文件监听)都实时同步
|
|
8
|
+
*
|
|
9
|
+
* 与服务端 SystemConfigService 同源(shared/config/schema.json 描述符),
|
|
10
|
+
* 前端看到的值永远等于服务端内存视图。
|
|
11
|
+
*/
|
|
12
|
+
import { useCookie, useRuntimeConfig } from '#imports'
|
|
13
|
+
import { useHttp } from '~/composables/useHttp'
|
|
14
|
+
|
|
15
|
+
export interface SettingsDescriptor {
|
|
16
|
+
key: string
|
|
17
|
+
type: 'string' | 'number' | 'boolean' | 'color' | 'select'
|
|
18
|
+
group: string
|
|
19
|
+
label: string
|
|
20
|
+
labelKey?: string
|
|
21
|
+
description?: string
|
|
22
|
+
applies: 'live' | 'restart'
|
|
23
|
+
default?: unknown
|
|
24
|
+
min?: number
|
|
25
|
+
max?: number
|
|
26
|
+
options?: string[]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface Snapshot {
|
|
30
|
+
descriptors: SettingsDescriptor[]
|
|
31
|
+
effective: Record<string, unknown>
|
|
32
|
+
overrides: Record<string, unknown>
|
|
33
|
+
sources: Record<string, string>
|
|
34
|
+
settingsPath: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface SettingsEvent {
|
|
38
|
+
type: 'config:changed' | 'config:reset' | 'config:reloaded'
|
|
39
|
+
changed: string[]
|
|
40
|
+
restartRequired: string[]
|
|
41
|
+
effective: Record<string, unknown>
|
|
42
|
+
sources: Record<string, string>
|
|
43
|
+
overrides: Record<string, unknown>
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const useRuntimeConfigStore = defineStore('runtime-config', () => {
|
|
47
|
+
const descriptors = ref<SettingsDescriptor[]>([])
|
|
48
|
+
const effective = ref<Record<string, unknown>>({})
|
|
49
|
+
const overrides = ref<Record<string, unknown>>({})
|
|
50
|
+
const sources = ref<Record<string, string>>({})
|
|
51
|
+
const settingsPath = ref('')
|
|
52
|
+
const loaded = ref(false)
|
|
53
|
+
const loading = ref(false)
|
|
54
|
+
const lastEvent = ref<SettingsEvent | null>(null)
|
|
55
|
+
|
|
56
|
+
// 分组后的设置项(computed:按 schema.json group 保持声明顺序)
|
|
57
|
+
const groups = computed(() => {
|
|
58
|
+
const out: Array<{ group: string, items: SettingsDescriptor[] }> = []
|
|
59
|
+
for (const d of descriptors.value) {
|
|
60
|
+
const g = out.find(x => x.group === d.group)
|
|
61
|
+
if (g) g.items.push(d)
|
|
62
|
+
else out.push({ group: d.group, items: [d] })
|
|
63
|
+
}
|
|
64
|
+
return out
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
function sourceOf(key: string): string {
|
|
68
|
+
return sources.value[key] ?? 'config.yml'
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** 取某键当前有效值 */
|
|
72
|
+
function valueOf(key: string): unknown {
|
|
73
|
+
return effective.value[key]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async function fetchAll(): Promise<void> {
|
|
77
|
+
loading.value = true
|
|
78
|
+
try {
|
|
79
|
+
const http = useHttp()
|
|
80
|
+
const env = await http.get<{ data: Snapshot }>('/system/settings')
|
|
81
|
+
applySnapshot((env as { data?: Snapshot }).data ?? (env as unknown as Snapshot))
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
// 未登录 / 服务未就绪:保持未加载,UI 显示占位
|
|
85
|
+
console.warn('[runtime-config] 读取设置失败:', err)
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
loading.value = false
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function applySnapshot(snap: Snapshot): void {
|
|
93
|
+
descriptors.value = snap.descriptors ?? []
|
|
94
|
+
effective.value = snap.effective ?? {}
|
|
95
|
+
overrides.value = snap.overrides ?? {}
|
|
96
|
+
sources.value = snap.sources ?? {}
|
|
97
|
+
settingsPath.value = snap.settingsPath ?? ''
|
|
98
|
+
loaded.value = true
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* 保存一组覆盖(同 PATCH 语义;值为 null 表示清除该键覆盖)。
|
|
103
|
+
* @returns 服务端返回 { changed, restartRequired, effective, sources }
|
|
104
|
+
*/
|
|
105
|
+
async function patch(patchMap: Record<string, unknown | null>): Promise<{ changed: string[], restartRequired: string[], effective: Record<string, unknown> }> {
|
|
106
|
+
const http = useHttp()
|
|
107
|
+
const env = await http.request<{ data: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }>({
|
|
108
|
+
method: 'PATCH',
|
|
109
|
+
url: '/system/settings',
|
|
110
|
+
data: { override: patchMap },
|
|
111
|
+
})
|
|
112
|
+
const res = ((env as { data?: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }).data != null
|
|
113
|
+
? (env as { data: { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> } }).data
|
|
114
|
+
: env as unknown as { ok: boolean, changed: string[], restartRequired: string[], effective: Record<string, unknown>, sources: Record<string, string> })
|
|
115
|
+
if (res.effective) effective.value = res.effective
|
|
116
|
+
if (res.sources) sources.value = res.sources
|
|
117
|
+
return res
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** 清空全部运行时覆盖(回落 config.yml) */
|
|
121
|
+
async function resetAll(): Promise<{ changed: string[], restartRequired: string[] }> {
|
|
122
|
+
const http = useHttp()
|
|
123
|
+
const env = await http.post<{ data: { changed: string[], restartRequired: string[] } }>('/system/settings/reset')
|
|
124
|
+
const res = ((env as { data?: { changed: string[] } }).data ?? (env as unknown as { changed: string[] })) as { changed: string[], restartRequired: string[] }
|
|
125
|
+
if (res.changed?.length) await fetchAll()
|
|
126
|
+
return res
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* ---------------- SSE 订阅(fetch-based,携带 Authorization 头) ---------------- */
|
|
130
|
+
let controller: AbortController | null = null
|
|
131
|
+
|
|
132
|
+
function startEvents(): void {
|
|
133
|
+
stopEvents()
|
|
134
|
+
if (!import.meta.client) return
|
|
135
|
+
const rt = useRuntimeConfig().public
|
|
136
|
+
const base = (rt.apiBase as string) || '/api'
|
|
137
|
+
const token = useCookie<string | null>('token').value ?? ''
|
|
138
|
+
controller = new AbortController()
|
|
139
|
+
|
|
140
|
+
void (async () => {
|
|
141
|
+
try {
|
|
142
|
+
const res = await fetch(`${base}/system/settings/events`, {
|
|
143
|
+
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
144
|
+
signal: controller?.signal,
|
|
145
|
+
})
|
|
146
|
+
if (!res.ok || !res.body) return
|
|
147
|
+
const reader = res.body.getReader()
|
|
148
|
+
const decoder = new TextDecoder()
|
|
149
|
+
let buf = ''
|
|
150
|
+
try {
|
|
151
|
+
for (;;) {
|
|
152
|
+
const { done, value } = await reader.read()
|
|
153
|
+
if (done) break
|
|
154
|
+
buf += decoder.decode(value, { stream: true })
|
|
155
|
+
let idx
|
|
156
|
+
while ((idx = buf.indexOf('\n\n')) >= 0) {
|
|
157
|
+
const chunk = buf.slice(0, idx)
|
|
158
|
+
buf = buf.slice(idx + 2)
|
|
159
|
+
const dataLine = chunk.split('\n').find(l => l.startsWith('data:'))
|
|
160
|
+
if (!dataLine) continue
|
|
161
|
+
const raw = dataLine.slice(5).trim()
|
|
162
|
+
if (!raw) continue
|
|
163
|
+
try {
|
|
164
|
+
applyEvent(JSON.parse(raw) as SettingsEvent)
|
|
165
|
+
}
|
|
166
|
+
catch { /* 非法载荷忽略 */ }
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
if ((err as Error)?.name !== 'AbortError') console.warn('[runtime-config] SSE 读取中断:', err)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if ((err as Error)?.name !== 'AbortError') console.warn('[runtime-config] SSE 连接失败:', err)
|
|
176
|
+
}
|
|
177
|
+
})()
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function applyEvent(ev: SettingsEvent): void {
|
|
181
|
+
lastEvent.value = ev
|
|
182
|
+
if (ev.effective) effective.value = ev.effective
|
|
183
|
+
if (ev.sources) sources.value = ev.sources
|
|
184
|
+
if (ev.overrides) overrides.value = ev.overrides
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function stopEvents(): void {
|
|
188
|
+
if (controller) {
|
|
189
|
+
controller.abort()
|
|
190
|
+
controller = null
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
descriptors,
|
|
196
|
+
effective,
|
|
197
|
+
overrides,
|
|
198
|
+
sources,
|
|
199
|
+
settingsPath,
|
|
200
|
+
loaded,
|
|
201
|
+
loading,
|
|
202
|
+
lastEvent,
|
|
203
|
+
groups,
|
|
204
|
+
sourceOf,
|
|
205
|
+
valueOf,
|
|
206
|
+
fetchAll,
|
|
207
|
+
patch,
|
|
208
|
+
resetAll,
|
|
209
|
+
startEvents,
|
|
210
|
+
stopEvents,
|
|
211
|
+
}
|
|
212
|
+
})
|
package/config.yml
CHANGED
|
@@ -1,70 +1,77 @@
|
|
|
1
|
-
# ============================================================
|
|
2
|
-
# AgentWorkShop 运行配置 —— 单一事实来源(Single Source of Truth)
|
|
3
|
-
# ------------------------------------------------------------
|
|
4
|
-
# 本文件由 nuxt.config.ts(构建/开发期)与 scripts/start.mjs(生产启动期)
|
|
5
|
-
# 读取并解析,驱动整个运行时。修改后重启对应模式即可生效:
|
|
6
|
-
# 开发:pnpm dev -> 读取 server.dev
|
|
7
|
-
# 生产:pnpm start -> 读取 server.prod
|
|
8
|
-
# ============================================================
|
|
9
|
-
|
|
10
|
-
app:
|
|
11
|
-
name: AgentWorkShop
|
|
12
|
-
title: AgentWorkShop
|
|
13
|
-
version: 0.2.0
|
|
14
|
-
description: 基于 Nuxt 4 的配置驱动运行范式
|
|
15
|
-
|
|
16
|
-
# 运行模式(dev/prod 实际由启动命令决定,此处仅作运行时展示)
|
|
17
|
-
mode: dev
|
|
18
|
-
|
|
19
|
-
# ------------------------------------------------------------
|
|
20
|
-
# 服务端口:dev 与 prod 可分别自定义
|
|
21
|
-
# ------------------------------------------------------------
|
|
22
|
-
server:
|
|
23
|
-
host: 0.0.0.0
|
|
24
|
-
dev:
|
|
25
|
-
port: 3000
|
|
26
|
-
prod:
|
|
27
|
-
port: 3001
|
|
28
|
-
|
|
29
|
-
# 后端 API(前端 axios 基址 + 服务端行为均由本段驱动)
|
|
30
|
-
api:
|
|
31
|
-
baseURL: /api
|
|
32
|
-
timeout: 15000
|
|
33
|
-
pageSize: 20 # 服务端默认分页大小
|
|
34
|
-
maxPageSize: 100 # 服务端分页大小上限
|
|
35
|
-
|
|
36
|
-
# 国际化
|
|
37
|
-
i18n:
|
|
38
|
-
defaultLocale: zh-CN
|
|
39
|
-
locales:
|
|
40
|
-
- code: zh-CN
|
|
41
|
-
name: 简体中文
|
|
42
|
-
- code: en
|
|
43
|
-
name: English
|
|
44
|
-
|
|
45
|
-
# 主题
|
|
46
|
-
theme:
|
|
47
|
-
# Agent Harness · Digital Twin 控制室色板:品牌绿(交互/确认/DAQ)+ 数据青,见 TownView.vue --hud-*
|
|
48
|
-
primaryColor: "#35e0a0"
|
|
49
|
-
mode: light # light | dark
|
|
50
|
-
|
|
51
|
-
# 安全配置
|
|
52
|
-
# 数据采集基础设施(数采 DAQ;地址与 docker-compose.yml 默认一致)
|
|
53
|
-
# startInfrastructure: never=启动探测,不通且有 Docker 则自动 docker compose 拉起;
|
|
54
|
-
# always=仅 Docker 拉起;never=只直连。连接失败降级并警告,可前端一键重连。
|
|
55
|
-
daq:
|
|
56
|
-
startInfrastructure: auto
|
|
57
|
-
mqtt:
|
|
58
|
-
host: 127.0.0.1
|
|
59
|
-
port: 1883
|
|
60
|
-
timescale:
|
|
61
|
-
host: 127.0.0.1
|
|
62
|
-
port: 5432
|
|
63
|
-
user: postgres
|
|
64
|
-
password: awshop
|
|
65
|
-
database: awshop
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
1
|
+
# ============================================================
|
|
2
|
+
# AgentWorkShop 运行配置 —— 单一事实来源(Single Source of Truth)
|
|
3
|
+
# ------------------------------------------------------------
|
|
4
|
+
# 本文件由 nuxt.config.ts(构建/开发期)与 scripts/start.mjs(生产启动期)
|
|
5
|
+
# 读取并解析,驱动整个运行时。修改后重启对应模式即可生效:
|
|
6
|
+
# 开发:pnpm dev -> 读取 server.dev
|
|
7
|
+
# 生产:pnpm start -> 读取 server.prod
|
|
8
|
+
# ============================================================
|
|
9
|
+
|
|
10
|
+
app:
|
|
11
|
+
name: AgentWorkShop
|
|
12
|
+
title: AgentWorkShop
|
|
13
|
+
version: 0.2.0
|
|
14
|
+
description: 基于 Nuxt 4 的配置驱动运行范式
|
|
15
|
+
|
|
16
|
+
# 运行模式(dev/prod 实际由启动命令决定,此处仅作运行时展示)
|
|
17
|
+
mode: dev
|
|
18
|
+
|
|
19
|
+
# ------------------------------------------------------------
|
|
20
|
+
# 服务端口:dev 与 prod 可分别自定义
|
|
21
|
+
# ------------------------------------------------------------
|
|
22
|
+
server:
|
|
23
|
+
host: 0.0.0.0
|
|
24
|
+
dev:
|
|
25
|
+
port: 3000
|
|
26
|
+
prod:
|
|
27
|
+
port: 3001
|
|
28
|
+
|
|
29
|
+
# 后端 API(前端 axios 基址 + 服务端行为均由本段驱动)
|
|
30
|
+
api:
|
|
31
|
+
baseURL: /api
|
|
32
|
+
timeout: 15000
|
|
33
|
+
pageSize: 20 # 服务端默认分页大小
|
|
34
|
+
maxPageSize: 100 # 服务端分页大小上限
|
|
35
|
+
|
|
36
|
+
# 国际化
|
|
37
|
+
i18n:
|
|
38
|
+
defaultLocale: zh-CN
|
|
39
|
+
locales:
|
|
40
|
+
- code: zh-CN
|
|
41
|
+
name: 简体中文
|
|
42
|
+
- code: en
|
|
43
|
+
name: English
|
|
44
|
+
|
|
45
|
+
# 主题
|
|
46
|
+
theme:
|
|
47
|
+
# Agent Harness · Digital Twin 控制室色板:品牌绿(交互/确认/DAQ)+ 数据青,见 TownView.vue --hud-*
|
|
48
|
+
primaryColor: "#35e0a0"
|
|
49
|
+
mode: light # light | dark
|
|
50
|
+
|
|
51
|
+
# 安全配置
|
|
52
|
+
# 数据采集基础设施(数采 DAQ;地址与 docker-compose.yml 默认一致)
|
|
53
|
+
# startInfrastructure: never=启动探测,不通且有 Docker 则自动 docker compose 拉起;
|
|
54
|
+
# always=仅 Docker 拉起;never=只直连。连接失败降级并警告,可前端一键重连。
|
|
55
|
+
daq:
|
|
56
|
+
startInfrastructure: auto
|
|
57
|
+
mqtt:
|
|
58
|
+
host: 127.0.0.1
|
|
59
|
+
port: 1883
|
|
60
|
+
timescale:
|
|
61
|
+
host: 127.0.0.1
|
|
62
|
+
port: 5432
|
|
63
|
+
user: postgres
|
|
64
|
+
password: awshop
|
|
65
|
+
database: awshop
|
|
66
|
+
# 对象存储(图像帧;MinIO,S3 兼容)。不可达时自动降级本地磁盘 data/daq-objects/,采集不中断。
|
|
67
|
+
objectstore:
|
|
68
|
+
host: 127.0.0.1
|
|
69
|
+
port: 9000
|
|
70
|
+
accessKey: awshop
|
|
71
|
+
secretKey: awshop-secret
|
|
72
|
+
bucket: daq
|
|
73
|
+
|
|
74
|
+
security:
|
|
75
|
+
# Session cookie 加密密钥(nuxt-auth-utils 使用)
|
|
76
|
+
# 生产环境必须修改为强随机值;可用环境变量 NUXT_SESSION_PASSWORD 覆盖
|
|
77
|
+
sessionPassword: awshop-dev-secret-change-me-0123456789
|
package/docker-compose.yml
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
# AgentWorkShop 数采基础设施(DAQ infrastructure)
|
|
3
3
|
# ------------------------------------------------------------
|
|
4
4
|
# 与 config.yml `daq:` 段默认一致;项目启动时若端口不通且存在 Docker,
|
|
5
|
-
# 服务端自动执行 `docker compose up -d daq-mosquitto daq-timescale`。
|
|
5
|
+
# 服务端自动执行 `docker compose up -d daq-mosquitto daq-timescale daq-minio`。
|
|
6
6
|
# - daq-mosquitto:标准 MQTT 3.1.1/5 broker(数采下沉队列)
|
|
7
|
-
# - daq-timescale:TimescaleDB(
|
|
7
|
+
# - daq-timescale:TimescaleDB(时序数据/帧元数据持久化;named volume 常驻)
|
|
8
|
+
# - daq-minio: S3 兼容对象存储(图像帧像素;named volume 常驻)
|
|
8
9
|
# 手动启动:docker compose up -d
|
|
9
10
|
# ============================================================
|
|
10
11
|
services:
|
|
@@ -30,5 +31,21 @@ services:
|
|
|
30
31
|
- awshop-daq-tsdata:/var/lib/postgresql/data
|
|
31
32
|
restart: unless-stopped
|
|
32
33
|
|
|
34
|
+
daq-minio:
|
|
35
|
+
image: minio/minio:latest
|
|
36
|
+
container_name: awshop-daq-minio
|
|
37
|
+
# S3 兼容对象存储:图像帧像素落这里,Timescale 只存元数据(daq_frames.meta.objectKey)
|
|
38
|
+
command: ["server", "/data", "--console-address", ":9001"]
|
|
39
|
+
environment:
|
|
40
|
+
MINIO_ROOT_USER: awshop # config.yml daq.objectstore.accessKey
|
|
41
|
+
MINIO_ROOT_PASSWORD: awshop-secret # config.yml daq.objectstore.secretKey
|
|
42
|
+
ports:
|
|
43
|
+
- "9000:9000" # S3 API(与 config.yml daq.objectstore.port 一致)
|
|
44
|
+
- "9001:9001" # Web 控制台(开发态观察用)
|
|
45
|
+
volumes:
|
|
46
|
+
- awshop-daq-objdata:/data
|
|
47
|
+
restart: unless-stopped
|
|
48
|
+
|
|
33
49
|
volumes:
|
|
34
50
|
awshop-daq-tsdata:
|
|
51
|
+
awshop-daq-objdata:
|