agentworkshop 0.6.1 → 0.7.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/host-tools.json +17 -0
- package/.env.example +37 -0
- package/.output/.AgentWorkShop/prompts/host-tools.json +17 -0
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{Bc_mM2cU.js → BH0Z05CS.js} +1 -1
- package/.output/public/_nuxt/Bxgaym6j.js +1 -0
- package/.output/public/_nuxt/{DRlJ2-4p.js → By-LNp3k.js} +1 -1
- package/.output/public/_nuxt/{C2QSTAWf.js → Bz40vyZS.js} +1 -1
- package/.output/public/_nuxt/{CwS_UHeH.js → CS8R0_J3.js} +1 -1
- package/.output/public/_nuxt/{ClptO7LA.js → CUxV8Bw_.js} +1 -1
- package/.output/public/_nuxt/CXmkVXS5.js +1 -0
- package/.output/public/_nuxt/DC-QMEk1.js +2 -0
- package/.output/public/_nuxt/{C-Y5ydB6.js → Dgp2wK2U.js} +6 -6
- package/.output/public/_nuxt/{Ck6tznoQ.js → DjqcbFBE.js} +1 -1
- package/.output/public/_nuxt/{B0haAGoq.js → GP2wXyuY.js} +1 -1
- package/.output/public/_nuxt/TownView.Bt33bo1M.css +1 -0
- package/.output/public/_nuxt/{MhK4buEJ.js → XVB9_zwP.js} +1 -1
- package/.output/public/_nuxt/_id_.BeqSLvl_.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/90ae66f6-f649-4b44-8df9-bcd9e9a957a2.json +1 -0
- package/.output/public/_nuxt/{Bq_KKxCg.js → i_MKObHo.js} +1 -1
- package/.output/public/_nuxt/settings.DeRNNUcP.css +1 -0
- package/.output/public/_nuxt/{CclO6GyL.js → tpDMVY5w.js} +1 -1
- package/.output/public/_nuxt/{C0FogB-p.js → zwdqvGN_.js} +1 -1
- package/.output/server/chunks/_/nitro.mjs +4910 -4591
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{TownView-D9yCQe1T.mjs → TownView-BkHxMiwZ.mjs} +168 -159
- package/.output/server/chunks/build/{TownView-D9yCQe1T.mjs.map → TownView-BkHxMiwZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-xR3AChMO.mjs → _id_-Bna1_JuB.mjs} +5 -4
- package/.output/server/chunks/build/_id_-Bna1_JuB.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CmKAEFHV.mjs → _id_-GnRJPykX.mjs} +161 -119
- package/.output/server/chunks/build/_id_-GnRJPykX.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-C45nVrl-.mjs → _wsId_-CzLDGT_V.mjs} +6 -5
- package/.output/server/chunks/build/{_wsId_-C45nVrl-.mjs.map → _wsId_-CzLDGT_V.mjs.map} +1 -1
- package/.output/server/chunks/build/agents-D4l1icvn.mjs +1 -0
- package/.output/server/chunks/build/agents-D4l1icvn.mjs.map +1 -1
- package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs +1 -0
- package/.output/server/chunks/build/channel-templates-DqjtC-R0.mjs.map +1 -1
- package/.output/server/chunks/build/{daq-Boz_dlAQ.mjs → daq-D_W59QOe.mjs} +6 -5
- package/.output/server/chunks/build/daq-D_W59QOe.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-wTRwBAUi.mjs → dcw-BTM5YU-B.mjs} +3 -2
- package/.output/server/chunks/build/dcw-BTM5YU-B.mjs.map +1 -0
- package/.output/server/chunks/build/default-Dt6xLdpd.mjs +1 -0
- package/.output/server/chunks/build/{logs-Cdi-eXlN.mjs → logs-CUQt1z7D.mjs} +4 -3
- package/.output/server/chunks/build/logs-CUQt1z7D.mjs.map +1 -0
- package/.output/server/chunks/build/monitor-yNoV98rf.mjs +1 -0
- package/.output/server/chunks/build/{pages-bWKy0ZsA.mjs → pages-DR2bzczM.mjs} +4 -3
- package/.output/server/chunks/build/pages-DR2bzczM.mjs.map +1 -0
- package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs +1 -0
- package/.output/server/chunks/build/plugins-B-ZNey0Z.mjs.map +1 -1
- package/.output/server/chunks/build/{settings-C3T5hR2A.mjs → settings-Cr06lbRy.mjs} +26 -18
- package/.output/server/chunks/build/settings-Cr06lbRy.mjs.map +1 -0
- package/.output/server/chunks/build/teams-QR3BBF7A.mjs +1 -0
- package/.output/server/chunks/build/teams-QR3BBF7A.mjs.map +1 -1
- package/.output/server/chunks/build/tokens-DFvr_TLj.mjs +1 -0
- package/.output/server/chunks/build/tokens-DFvr_TLj.mjs.map +1 -1
- package/.output/server/chunks/build/{town-CKg6Qxba.mjs → town-BN4vQPb8.mjs} +6 -5
- package/.output/server/chunks/build/town-BN4vQPb8.mjs.map +1 -0
- package/.output/server/chunks/build/town-BUqRobze.mjs +1 -0
- package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqStream-zHEptJQ_.mjs → useDaqStream-hwkhJHFU.mjs} +2 -2
- package/.output/server/chunks/build/{useDaqStream-zHEptJQ_.mjs.map → useDaqStream-hwkhJHFU.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDcwStream-BkWDGaWp.mjs → useDcwStream-Bdew_yrr.mjs} +16 -1
- package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs.map +1 -0
- package/.output/server/chunks/build/{useDeviceTwins-NhtXqSkU.mjs → useDeviceTwins-C6EBg9oN.mjs} +2 -2
- package/.output/server/chunks/build/{useDeviceTwins-NhtXqSkU.mjs.map → useDeviceTwins-C6EBg9oN.mjs.map} +1 -1
- package/.output/server/chunks/build/{useOpsLog-CU64VDg5.mjs → useOpsLog-DdCqKVVG.mjs} +2 -2
- package/.output/server/chunks/build/{useOpsLog-CU64VDg5.mjs.map → useOpsLog-DdCqKVVG.mjs.map} +1 -1
- package/.output/server/chunks/build/users-4FZ0yFUO.mjs +1 -0
- package/.output/server/chunks/build/users-4FZ0yFUO.mjs.map +1 -1
- package/.output/server/chunks/build/workshop-CLhwe5eo.mjs +1 -0
- package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +1 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -0
- package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +1 -0
- package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs +1 -0
- package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -0
- 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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -0
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +1 -0
- package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +1 -0
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -0
- package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +1 -0
- package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +1 -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 +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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/read.post.mjs +31 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -0
- package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -0
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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 +1 -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/virtual/entry.mjs +287 -85
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +1 -0
- package/.output/server/package.json +1 -1
- package/README-zh.md +434 -430
- package/README.md +5 -1
- package/app/components/workshop/DeviceTwinPanel.vue +34 -0
- package/app/components/workshop/town/TownView.vue +5 -0
- package/app/composables/workshop/useDcwStream.ts +15 -1
- package/app/config/schema.ts +54 -0
- package/app/pages/dcw/[id].vue +57 -0
- package/app/pages/settings.vue +2 -1
- package/config.yml +58 -1
- package/i18n/dicts/_en.json +56 -2
- package/i18n/dicts/dcwDetail.json +9 -1
- package/i18n/dicts/deviceTwinPanel.json +2 -1
- package/i18n/dicts/settings.json +48 -1
- package/i18n/locales/en.ts +139 -38
- package/i18n/locales/zh-CN.ts +139 -38
- package/package.json +1 -1
- package/scripts/_dbg-agent-dcw-rw.ts +131 -0
- package/scripts/_dbg-config-smoke.ts +28 -0
- package/scripts/_dbg-dcw-read-rest.mjs +103 -0
- package/scripts/_dbg-dcw-read-toolface.ts +13 -0
- package/scripts/_dbg-dcw-read-ui.mjs +74 -0
- package/scripts/_dbg-plugin-ui-wizard.mjs +125 -0
- package/scripts/test-config-precedence.ts +124 -0
- package/scripts/test-dcw-read.ts +153 -0
- package/server/api/workshop/dcw/[id]/read.post.ts +18 -0
- package/server/api/workshop/ws.ts +6 -4
- package/server/data/daqs.json +55 -9
- package/server/data/dcw-rollback.json +221 -1
- package/server/data/dcw-runs.json +41 -18
- package/server/data/dcw-writes.json +264 -0
- package/server/data/dcws.json +646 -4
- package/server/data/line-runs.json +12 -1
- package/server/plugins/backup.ts +7 -5
- package/server/plugins/retention.ts +59 -57
- package/server/plugins/workshop.ts +5 -4
- package/server/services/workshop/agents/industrial-tools.ts +50 -1
- package/server/services/workshop/agents/omp-agent.ts +10 -8
- package/server/services/workshop/agents/tool-approvals.ts +175 -174
- package/server/services/workshop/daq/alarm-notify.ts +102 -100
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +14 -15
- package/server/services/workshop/daq/storage/sqlite.adapter.ts +5 -4
- package/server/services/workshop/daq/storage/timescale.adapter.ts +5 -4
- package/server/services/workshop/db/retention.ts +49 -50
- package/server/services/workshop/dcw/dcw-controller.ts +56 -1
- package/server/services/workshop/dcw/dcw-node.ts +233 -200
- package/server/services/workshop/dcw/dcw-runtime.ts +46 -9
- package/server/services/workshop/dcw/drivers.ts +98 -0
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +16 -15
- package/server/services/workshop/logger.ts +65 -58
- package/server/services/workshop/runtime/embedding-provider.ts +9 -5
- package/server/services/workshop/runtime/manager.ts +16 -7
- package/server/services/workshop/runtime/memory.ts +14 -7
- package/server/services/workshop/settings.ts +143 -0
- package/shared/config/engine.mjs +6 -2
- package/shared/config/schema.json +48 -1
- package/shared/dcw-protocol.ts +21 -0
- package/.output/public/_nuxt/BD9D9pl4.js +0 -1
- package/.output/public/_nuxt/BxD8Fg_Z.js +0 -2
- package/.output/public/_nuxt/CwcOEM8m.js +0 -1
- package/.output/public/_nuxt/TownView.CI2Wpzty.css +0 -1
- package/.output/public/_nuxt/_id_.Ci4u30cR.css +0 -1
- package/.output/public/_nuxt/builds/meta/221de779-a113-4232-b9a1-31a614f5e3c7.json +0 -1
- package/.output/public/_nuxt/settings.BG0K9_MG.css +0 -1
- package/.output/server/chunks/build/_id_-CmKAEFHV.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-xR3AChMO.mjs.map +0 -1
- package/.output/server/chunks/build/daq-Boz_dlAQ.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-wTRwBAUi.mjs.map +0 -1
- package/.output/server/chunks/build/logs-Cdi-eXlN.mjs.map +0 -1
- package/.output/server/chunks/build/pages-bWKy0ZsA.mjs.map +0 -1
- package/.output/server/chunks/build/settings-C3T5hR2A.mjs.map +0 -1
- package/.output/server/chunks/build/town-CKg6Qxba.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-BkWDGaWp.mjs.map +0 -1
|
@@ -10,6 +10,7 @@ import { join } from 'node:path'
|
|
|
10
10
|
import { DatabaseSync } from 'node:sqlite'
|
|
11
11
|
import { ensureDataDir } from '@/shared/config/home.mjs'
|
|
12
12
|
import type { DaqQueryOpts, DaqSampleRow, TsdbPoint, TsdbPort } from './tsdb-port'
|
|
13
|
+
import { daqRuntimeSettings } from '../../settings'
|
|
13
14
|
|
|
14
15
|
const log = createLogger('daq.tsdb.sqlite')
|
|
15
16
|
|
|
@@ -18,8 +19,8 @@ const DB_PATH = join(ensureDataDir(), 'daq-timeseries.sqlite')
|
|
|
18
19
|
export class SqliteTimeSeriesAdapter implements TsdbPort {
|
|
19
20
|
readonly backend = 'sqlite-emulated'
|
|
20
21
|
private db: DatabaseSync | null = null
|
|
21
|
-
/** 启动清理水位(
|
|
22
|
-
private readonly retentionH =
|
|
22
|
+
/** 启动清理水位(daq.tsRetentionH;env DAQ_TS_RETENTION_H 兼容) */
|
|
23
|
+
private readonly retentionH = daqRuntimeSettings().tsRetentionH
|
|
23
24
|
private retentionTimer: NodeJS.Timeout | null = null
|
|
24
25
|
|
|
25
26
|
async init(): Promise<void> {
|
|
@@ -262,10 +263,10 @@ export class SqliteTimeSeriesAdapter implements TsdbPort {
|
|
|
262
263
|
}))
|
|
263
264
|
}
|
|
264
265
|
|
|
265
|
-
/** 帧保留期清理(
|
|
266
|
+
/** 帧保留期清理(与样本同拍;daq.frameRetentionH,env DAQ_FRAME_RETENTION_H 兼容) */
|
|
266
267
|
private sweepFrameRetention(): void {
|
|
267
268
|
if (!this.db) return
|
|
268
|
-
const cutoff = Date.now() -
|
|
269
|
+
const cutoff = Date.now() - daqRuntimeSettings().frameRetentionH * 3600_000
|
|
269
270
|
try {
|
|
270
271
|
this.db.prepare('DELETE FROM daq_frames WHERE ts_ms < ?').run(cutoff)
|
|
271
272
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { createRequire } from 'node:module'
|
|
9
9
|
import type { Pool } from 'pg'
|
|
10
10
|
import type { DaqQueryOpts, DaqSampleRow, TsdbPoint, TsdbPort } from './tsdb-port'
|
|
11
|
+
import { daqRuntimeSettings } from '../../settings'
|
|
11
12
|
|
|
12
13
|
/* nitro(Windows)dev 下对 external 的动态 import 会生成绝对盘符路径 → ESM loader
|
|
13
14
|
* 拒绝 'd:' scheme;用 createRequire 走 CJS require 由 Node 原生解析(生产亦同)。 */
|
|
@@ -17,10 +18,10 @@ export class TimescaleAdapter implements TsdbPort {
|
|
|
17
18
|
readonly backend = 'timescale'
|
|
18
19
|
private pool: Pool | null = null
|
|
19
20
|
private retentionTimer: NodeJS.Timeout | null = null
|
|
20
|
-
/** 保留期(
|
|
21
|
-
private readonly retentionH =
|
|
22
|
-
/** 帧保留期(
|
|
23
|
-
private readonly frameRetentionH =
|
|
21
|
+
/** 保留期(daq.tsRetentionH;env DAQ_TS_RETENTION_H 兼容) */
|
|
22
|
+
private readonly retentionH = daqRuntimeSettings().tsRetentionH
|
|
23
|
+
/** 帧保留期(daq.frameRetentionH;env DAQ_FRAME_RETENTION_H 兼容) */
|
|
24
|
+
private readonly frameRetentionH = daqRuntimeSettings().frameRetentionH
|
|
24
25
|
|
|
25
26
|
constructor(private readonly url: string) {}
|
|
26
27
|
|
|
@@ -1,50 +1,49 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 增长治理保留策略(hardening GROW-1)。
|
|
3
|
-
*
|
|
4
|
-
* 为无保留机制的只增表做分批清理(每批 ≤5000,循环到 0,避免长事务持锁):
|
|
5
|
-
* messages 默认 30d (
|
|
6
|
-
* audit_log 默认 90d (
|
|
7
|
-
* approval_history 默认 180d (
|
|
8
|
-
* AW_RETENTION_DISABLED
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 增长治理保留策略(hardening GROW-1;配置驱动)。
|
|
3
|
+
*
|
|
4
|
+
* 为无保留机制的只增表做分批清理(每批 ≤5000,循环到 0,避免长事务持锁):
|
|
5
|
+
* messages 默认 30d (retention.messages_days)
|
|
6
|
+
* audit_log 默认 90d (retention.audit_days;合规观察期,从严保留)
|
|
7
|
+
* approval_history 默认 180d (retention.approval_days;历史裁决主张不可变,放宽)
|
|
8
|
+
* retention.disabled 整体逃生门(env AW_RETENTION_DISABLED / RETENTION_DISABLED 兼容别名)。
|
|
9
|
+
* 覆盖链:config.yml < runtime-settings < env(AW_<键> 或历史别名)。时间列均为 TEXT ISO。
|
|
10
|
+
* channel_events 与 daq_samples 已有各自保留机制,此处不重复覆盖。
|
|
11
|
+
*/
|
|
12
|
+
import { retentionSettings } from '../settings'
|
|
13
|
+
|
|
14
|
+
type DatabaseSyncLike = {
|
|
15
|
+
prepare: (sql: string) => { run: (...args: unknown[]) => { changes: number | bigint } }
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const DAY_MS = 86_400_000
|
|
19
|
+
const BATCH = 5000
|
|
20
|
+
|
|
21
|
+
const TARGETS = [
|
|
22
|
+
{ table: 'messages', column: 'created_at', days: 30, cfgKey: 'messages_days' },
|
|
23
|
+
{ table: 'audit_log', column: 'at', days: 90, cfgKey: 'audit_days' },
|
|
24
|
+
{ table: 'approval_history', column: 'created_at', days: 180, cfgKey: 'approval_days' },
|
|
25
|
+
] as const
|
|
26
|
+
|
|
27
|
+
export interface RetentionResult { table: string, removed: number, days: number }
|
|
28
|
+
|
|
29
|
+
/** 对单库执行一轮保留清理;返回各表删除行数(调用方负责 try/catch 与日志)。 */
|
|
30
|
+
export function runRetentionSweep(db: DatabaseSyncLike): RetentionResult[] {
|
|
31
|
+
const retention = retentionSettings()
|
|
32
|
+
if (retention.disabled) return []
|
|
33
|
+
const out: RetentionResult[] = []
|
|
34
|
+
for (const t of TARGETS) {
|
|
35
|
+
const days = retention[t.cfgKey]
|
|
36
|
+
const before = new Date(Date.now() - days * DAY_MS).toISOString()
|
|
37
|
+
let removed = 0
|
|
38
|
+
for (;;) {
|
|
39
|
+
const res = db.prepare(
|
|
40
|
+
`DELETE FROM ${t.table} WHERE rowid IN (SELECT rowid FROM ${t.table} WHERE ${t.column} < ? LIMIT ${BATCH})`,
|
|
41
|
+
).run(before)
|
|
42
|
+
const n = Number(res.changes)
|
|
43
|
+
removed += n
|
|
44
|
+
if (n < BATCH) break
|
|
45
|
+
}
|
|
46
|
+
out.push({ table: t.table, removed, days })
|
|
47
|
+
}
|
|
48
|
+
return out
|
|
49
|
+
}
|
|
@@ -30,6 +30,9 @@ import { recordOps } from '../ops/ops'
|
|
|
30
30
|
/** 运维日志写下发防噪:同节点同值 10s 内的心跳重下发不重复入册 */
|
|
31
31
|
const opsWriteMemo = new Map<string, { eng: number, at: number }>()
|
|
32
32
|
|
|
33
|
+
/** 周期读网关默认间隔(节点 readIntervalMs=null 时生效;真实 PLC 建议按链路承载调整) */
|
|
34
|
+
const DEFAULT_READ_INTERVAL_MS = 5000
|
|
35
|
+
|
|
33
36
|
/** write() 来源 → 日志来源(user 人工下发 / agent 智能体 / system 配方·回退等系统路径) */
|
|
34
37
|
function opsActorKindOf(source: string): 'user' | 'agent' | 'system' {
|
|
35
38
|
if (source === 'agent') return 'agent'
|
|
@@ -47,6 +50,8 @@ export interface DcwCreateInput {
|
|
|
47
50
|
/** 数据语义标定钩子(encode:物理值 → PLC 设定值) */
|
|
48
51
|
transform?: DataTransform
|
|
49
52
|
holdIntervalMs?: number | null
|
|
53
|
+
/** 周期读间隔 ms(null = 网关默认;0 = 仅手动读取) */
|
|
54
|
+
readIntervalMs?: number | null
|
|
50
55
|
unit?: string
|
|
51
56
|
decimals?: number
|
|
52
57
|
min?: number
|
|
@@ -68,6 +73,8 @@ export interface DcwPatchInput {
|
|
|
68
73
|
/** 数据语义标定钩子(encode) */
|
|
69
74
|
transform?: DataTransform
|
|
70
75
|
holdIntervalMs?: number | null
|
|
76
|
+
/** 周期读间隔 ms(null = 网关默认;0 = 仅手动读取) */
|
|
77
|
+
readIntervalMs?: number | null
|
|
71
78
|
unit?: string
|
|
72
79
|
decimals?: number
|
|
73
80
|
min?: number
|
|
@@ -128,9 +135,10 @@ class DcwController {
|
|
|
128
135
|
|
|
129
136
|
private host = {
|
|
130
137
|
running: () => this.running,
|
|
131
|
-
defaults: () => ({ holdIntervalMs: 0 }),
|
|
138
|
+
defaults: () => ({ holdIntervalMs: 0, readIntervalMs: DEFAULT_READ_INTERVAL_MS }),
|
|
132
139
|
executeWrite: async (node: DcwNode, eng: number, tolerance: number, recipeRunId: string | null) =>
|
|
133
140
|
this.executeWrite(node, eng, tolerance, recipeRunId),
|
|
141
|
+
executeRead: async (node: DcwNode) => this.executeRead(node),
|
|
134
142
|
}
|
|
135
143
|
|
|
136
144
|
/**
|
|
@@ -200,6 +208,48 @@ class DcwController {
|
|
|
200
208
|
this.broadcast?.('dcw.node.changed', payload)
|
|
201
209
|
}
|
|
202
210
|
|
|
211
|
+
/**
|
|
212
|
+
* 核心读执行:驱动读(寄存器解码 + 工程量映射在驱动内)→ 标定 decode(PLC 值 → 物理值)
|
|
213
|
+
* → 读状态记账(节点 readValue/lastReadAt,失败记 lastReadError 不动写状态机)→ WS dcw.read 直推。
|
|
214
|
+
* 不支持读的驱动(mock 外的 mqtt/http)不产生节点状态噪音,直接返回说明。
|
|
215
|
+
*/
|
|
216
|
+
private async executeRead(node: DcwNode): Promise<{ ok: boolean, value: number | null, raw: number | null, message: string, at: string }> {
|
|
217
|
+
const at = new Date().toISOString()
|
|
218
|
+
const driver = resolveDcwDriver(node.driver)
|
|
219
|
+
if (!driver.read) {
|
|
220
|
+
return { ok: false, value: null, raw: null, message: `驱动 ${node.driver} 不支持读取(仅观测型通道)`, at }
|
|
221
|
+
}
|
|
222
|
+
let r: { ok: boolean, message: string, eng: number | null, raw: number | null }
|
|
223
|
+
try {
|
|
224
|
+
r = await driver.read({ domain: { min: node.min, max: node.max }, driverConfig: node.driverConfig })
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
r = { ok: false, eng: null, raw: null, message: err instanceof Error ? err.message : String(err) }
|
|
228
|
+
}
|
|
229
|
+
// 读回的是 PLC 设定值域 → 经标定 decode 换算物理量(与写链路 inverse 互逆)
|
|
230
|
+
const value = r.ok && r.eng != null ? applyTransform(r.eng, node.transform) : null
|
|
231
|
+
node.applyReadResult(value, r.raw, r.ok, r.message, at)
|
|
232
|
+
this.repo.flushDebounced()
|
|
233
|
+
this.broadcast?.('dcw.read', {
|
|
234
|
+
nodeId: node.id,
|
|
235
|
+
templateRef: node.templateRef,
|
|
236
|
+
value,
|
|
237
|
+
raw: r.raw,
|
|
238
|
+
ok: r.ok,
|
|
239
|
+
message: r.message,
|
|
240
|
+
at,
|
|
241
|
+
})
|
|
242
|
+
return { ok: r.ok, value, raw: r.raw, message: r.message, at }
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/** 手动读取(REST/前端「读取」按钮/Agent 工具;走运行时在飞互斥) */
|
|
246
|
+
async readNow(id: string): Promise<{ ok: boolean, value: number | null, raw: number | null, message: string, at: string }> {
|
|
247
|
+
this.ensureLoop()
|
|
248
|
+
const rt = this.runtimes.get(id)
|
|
249
|
+
if (!rt) throw new AppError(404, ErrorCodes.NOT_FOUND, `控制节点不存在: ${id}`)
|
|
250
|
+
return rt.readNow()
|
|
251
|
+
}
|
|
252
|
+
|
|
203
253
|
setBroadcast(fn: BroadcastFn | null): void {
|
|
204
254
|
this.broadcast = fn
|
|
205
255
|
// 调控闭环 WS 帧(dcw.optimization.changed)与既有帧同一广播通道
|
|
@@ -286,6 +336,7 @@ class DcwController {
|
|
|
286
336
|
transform: normalizeDataTransform(input.transform),
|
|
287
337
|
enabled: input.enabled,
|
|
288
338
|
holdIntervalMs: input.holdIntervalMs ?? null,
|
|
339
|
+
readIntervalMs: input.readIntervalMs ?? null,
|
|
289
340
|
unit: input.unit,
|
|
290
341
|
decimals: input.decimals,
|
|
291
342
|
min: input.min,
|
|
@@ -323,6 +374,10 @@ class DcwController {
|
|
|
323
374
|
node.holdIntervalMs = patch.holdIntervalMs == null ? null : Math.max(0, Math.min(3_600_000, Math.round(patch.holdIntervalMs)))
|
|
324
375
|
rearm = true
|
|
325
376
|
}
|
|
377
|
+
if (patch.readIntervalMs !== undefined) {
|
|
378
|
+
node.readIntervalMs = patch.readIntervalMs == null ? null : Math.max(0, Math.min(3_600_000, Math.round(patch.readIntervalMs)))
|
|
379
|
+
rearm = true
|
|
380
|
+
}
|
|
326
381
|
if (patch.enabled !== undefined) {
|
|
327
382
|
node.enabled = patch.enabled
|
|
328
383
|
// 暂停/恢复的状态同步:暂停 → offline(暂停控制);恢复 → 回到待机(等下次写 ACK 转 ok)
|