agentworkshop 0.7.52 → 0.7.53
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 +70 -1
- package/.output/.AgentWorkShop/prompts/host-tools.json +70 -1
- package/.output/.AgentWorkShop/schema.json +2 -0
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{D0ldVwl-.js → 77DRSnQv.js} +1 -1
- package/.output/public/_nuxt/8oRmGaAV.js +1 -0
- package/.output/public/_nuxt/{BPou3U7b.js → BLnLjzka.js} +1 -1
- package/.output/public/_nuxt/{CFQyYMEn2.js → BSdJTnk12.js} +1 -1
- package/.output/public/_nuxt/{C4lagVdN2.js → BUD1CNvB2.js} +1 -1
- package/.output/public/_nuxt/{CTvh8v4T.js → BXR3tgEk.js} +1 -1
- package/.output/public/_nuxt/{Cbeifv55.js → BhlRInVa.js} +1 -1
- package/.output/public/_nuxt/{mNnuUoSy.js → BkfA3BbD.js} +1 -1
- package/.output/public/_nuxt/{ChGuLxwW2.js → BpcQDwKM2.js} +1 -1
- package/.output/public/_nuxt/{DQMbdg4t.js → BwlGxRxA.js} +1 -1
- package/.output/public/_nuxt/{Bt2ZL5332.js → C4sQKuhk2.js} +1 -1
- package/.output/public/_nuxt/{CkPxL4UX2.js → CBUIODly2.js} +1 -1
- package/.output/public/_nuxt/CR-ILcRu2.js +1 -0
- package/.output/public/_nuxt/CZLnEnbE.js +14 -0
- package/.output/public/_nuxt/{qPsch_ny2.js → Chxx-DIE2.js} +1 -1
- package/.output/public/_nuxt/{BiUhxH3t2.js → CjwxhpwR2.js} +1 -1
- package/.output/public/_nuxt/{B9cGf8mg.js → CvGYm7w8.js} +1 -1
- package/.output/public/_nuxt/{B9BmiUil.js → DAGuPgXa.js} +1 -1
- package/.output/public/_nuxt/{DefDtlKK.js → DE6H1HdJ.js} +1 -1
- package/.output/public/_nuxt/{D_Ce9Fon2.js → DFhyhDGa2.js} +1 -1
- package/.output/public/_nuxt/{BXx9AxdF2.js → DSqMyLCV2.js} +1 -1
- package/.output/public/_nuxt/{B8zP7kaj2.js → DV5joWTn2.js} +1 -1
- package/.output/public/_nuxt/{Da90gveK.js → DVOR2pWg.js} +1 -1
- package/.output/public/_nuxt/DWsgRq2c.js +1 -0
- package/.output/public/_nuxt/{mgWHSRc8.js → DZDi8inD.js} +1 -1
- package/.output/public/_nuxt/{xQX5r6tW.js → Dep0Hc9w.js} +1 -1
- package/.output/public/_nuxt/{evt5VGDh.js → DffgG8vT.js} +1 -1
- package/.output/public/_nuxt/{B_opxrHJ.js → DlCktWDT.js} +1 -1
- package/.output/public/_nuxt/{BVzw5a_0.js → DmzmgYHb.js} +1 -1
- package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +1 -0
- package/.output/public/_nuxt/{ty5W5QwO.js → WmMwIS4y.js} +1 -1
- package/.output/public/_nuxt/{_id_.DamiFT0Q.css → _id_.rdGx-UDx.css} +1 -1
- package/.output/public/_nuxt/{BgEDwFMf.js → _kUzq9VF.js} +1 -1
- package/.output/public/_nuxt/_wsId_.XjmieZaJ.css +1 -0
- package/.output/public/_nuxt/{C00Rd6Cg.js → aV6YPjg0.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/5ccc21c2-aba0-4b63-9a13-410e0569e345.json +1 -0
- package/.output/public/_nuxt/{default.CXb_zoN6.css → default.CyLpQD1C.css} +1 -1
- package/.output/public/_nuxt/o9rJf00k.js +1 -0
- package/.output/public/_nuxt/sl1EEoCr2.js +21 -0
- package/.output/public/robots.txt +3 -0
- package/.output/server/chunks/_/binding-authz.mjs +1 -1
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/entity.mjs +1 -1
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +1945 -1420
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs → PluginSlot-CT4YaNrB.mjs} +5 -5
- package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs.map → PluginSlot-CT4YaNrB.mjs.map} +1 -1
- package/.output/server/chunks/build/TownView-fP9BiALv.mjs +1 -1
- package/.output/server/chunks/build/{_id_-BUpQSlzo.mjs → _id_-CK-QFrDV.mjs} +55 -51
- package/.output/server/chunks/build/_id_-CK-QFrDV.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs → _wsId_-DdqXzycE.mjs} +320 -202
- package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs.map → _wsId_-DdqXzycE.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs → agents-DqICy4AL.mjs} +6 -6
- package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs.map → agents-DqICy4AL.mjs.map} +1 -1
- package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs → channel-templates-gdCLajKy.mjs} +2 -2
- package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs.map → channel-templates-gdCLajKy.mjs.map} +1 -1
- package/.output/server/chunks/build/daq-N69AOtgw.mjs +1 -1
- package/.output/server/chunks/build/dcw-CN9d3Rs7.mjs +1 -1
- package/.output/server/chunks/build/{default-DCf9tn1i.mjs → default-CXUe4HL7.mjs} +65 -62
- package/.output/server/chunks/build/{default-DCf9tn1i.mjs.map → default-CXUe4HL7.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-BzmrmLL_.mjs → pages-CRMeXrxG.mjs} +3 -3
- package/.output/server/chunks/build/{pages-BzmrmLL_.mjs.map → pages-CRMeXrxG.mjs.map} +1 -1
- package/.output/server/chunks/build/{plugins-DSka7-vS.mjs → plugins-NAS9MQ5r.mjs} +2 -2
- package/.output/server/chunks/build/{plugins-DSka7-vS.mjs.map → plugins-NAS9MQ5r.mjs.map} +1 -1
- package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs → schedules-D8vYHgQ5.mjs} +2 -2
- package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs.map → schedules-D8vYHgQ5.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-UyZ78w2e.mjs → settings-B7HA-sdb.mjs} +3 -3
- package/.output/server/chunks/build/{settings-UyZ78w2e.mjs.map → settings-B7HA-sdb.mjs.map} +1 -1
- package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs → teams-wM-MdLv9.mjs} +8 -8
- package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs.map → teams-wM-MdLv9.mjs.map} +1 -1
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs → useAgentHarnessOptions-BnFCh23W.mjs} +2 -2
- package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs.map → useAgentHarnessOptions-BnFCh23W.mjs.map} +1 -1
- package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs → useAgentTemplateActions-DsBRUQni.mjs} +2 -2
- package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs.map → useAgentTemplateActions-DsBRUQni.mjs.map} +1 -1
- package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs → useAgentTemplateForm-DzQ_t2Ue.mjs} +2 -2
- package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs.map → useAgentTemplateForm-DzQ_t2Ue.mjs.map} +1 -1
- package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs → useAgentTemplatesCatalog-Q7LgG1Af.mjs} +2 -2
- package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs.map → useAgentTemplatesCatalog-Q7LgG1Af.mjs.map} +1 -1
- package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailNode-D_vhG0jF.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs +1 -1
- package/.output/server/chunks/build/useDaqFilters-BUQtZ82a.mjs +1 -1
- package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs +1 -1
- package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs +1 -1
- package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs → useDashboardData-DWJ6vHjm.mjs} +2 -2
- package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs.map → useDashboardData-DWJ6vHjm.mjs.map} +1 -1
- package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs +1 -1
- package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs → useTeamActions-BOLQkYxg.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs.map → useTeamActions-BOLQkYxg.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs → useTeamAddMemberDialog-BCgrLPxI.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs.map → useTeamAddMemberDialog-BCgrLPxI.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs → useTeamCreateDialog-CJk40LqS.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs.map → useTeamCreateDialog-CJk40LqS.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs → useTeamDeployDialog-49hdUXQP.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs.map → useTeamDeployDialog-49hdUXQP.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs → useTeamPluginDialog-Dh-QOoiU.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs.map → useTeamPluginDialog-Dh-QOoiU.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs → useTeamsCatalog-HBSyKt5P.mjs} +2 -2
- package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs.map → useTeamsCatalog-HBSyKt5P.mjs.map} +1 -1
- package/.output/server/chunks/build/{useWorkshopApi-CO3ophqt.mjs → useWorkshopApi-C9sTYu1F.mjs} +9 -1
- package/.output/server/chunks/build/useWorkshopApi-C9sTYu1F.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +14 -3
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +43 -14
- 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 +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs +47 -0
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +35 -0
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +15 -4
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +15 -3
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +14 -3
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +14 -3
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +3 -2
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +4 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +19 -15
- 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 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +8 -3
- 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_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +37 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +6 -1
- 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 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +14 -2
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +4 -1
- 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 -2
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +340 -52
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +7 -3
- package/README.md +11 -5
- package/app/components/app-header/HitlBell.vue +9 -9
- package/app/components/dcw/DcwAddNodeModal.vue +3 -3
- package/app/components/dcw/DcwNodesTable.vue +4 -4
- package/app/components/dcw/DcwRecipeEditModal.vue +2 -2
- package/app/components/workshop/ChatMemberPanel.vue +39 -38
- package/app/components/workshop/ChatTimeline.vue +33 -24
- package/app/components/workshop/Composer.vue +7 -7
- package/app/components/workshop/NotificationCenter.vue +22 -13
- package/app/components/workshop/PluginSlot.vue +1 -1
- package/app/components/workshop/TaskInspectorDrawer.vue +5 -5
- package/app/components/workshop/blocks/ClusterTool.vue +1 -1
- package/app/components/workshop/composer/ComposerToolbar.vue +2 -2
- package/app/components/workshop/composer/MentionMenu.vue +1 -1
- package/app/components/workshop/composer/ReplyChip.vue +2 -2
- package/app/components/workshop/composer/StatusChip.vue +7 -7
- package/app/components/workshop/console/LineOperationsPanel.vue +15 -14
- package/app/components/workshop/lanes/LaneHeader.vue +5 -3
- package/app/components/workshop/session-list/ChannelSettingsModal.vue +43 -1
- package/app/composables/useCodeCopy.ts +16 -2
- package/app/composables/workshop/useWorkshopApi.ts +7 -0
- package/app/stores/workshop/notifications.ts +43 -17
- package/docs/cli.en.md +1 -1
- package/i18n/dicts/_en.json +1551 -1557
- package/i18n/dicts/_en2.json +300 -300
- package/i18n/dicts/_en4.json +114 -115
- package/i18n/dicts/agentLanesView.json +61 -57
- package/i18n/dicts/appHeader.json +17 -7
- package/i18n/dicts/channelSessionList.json +51 -48
- package/i18n/dicts/chat.json +79 -0
- package/i18n/dicts/clusterTool.json +4 -3
- package/i18n/dicts/composer.json +38 -38
- package/i18n/dicts/dcwDetail.json +219 -209
- package/i18n/dicts/lineOps.json +14 -0
- package/i18n/dicts/multiChannelView.json +13 -13
- package/i18n/dicts/notifications.json +13 -0
- package/i18n/dicts/taskInspectorDrawer.json +25 -19
- package/i18n/locales/en.ts +152 -8
- package/i18n/locales/zh-CN.ts +152 -8
- package/package.json +1 -1
- package/public/robots.txt +3 -0
- package/server/api/mcp/workshop.ts +8 -1
- package/server/api/metrics.ts +4 -1
- package/server/api/plugins/[name]/[...path].ts +4 -3
- package/server/api/system/backup/list.get.ts +32 -0
- package/server/api/system/backup/run.post.ts +21 -0
- package/server/api/system/settings/index.patch.ts +12 -2
- package/server/api/system/settings/reset.post.ts +11 -2
- package/server/api/users/[id].delete.ts +9 -2
- package/server/api/users/[id].put.ts +9 -2
- package/server/api/users/index.post.ts +9 -2
- package/server/api/users/login.post.ts +3 -3
- package/server/api/users/register.post.ts +11 -1
- package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +23 -13
- package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -0
- package/server/api/workshop/channels/[id]/line.put.ts +30 -0
- package/server/api/workshop/dcw/line/query.get.ts +6 -0
- package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +3 -2
- package/server/api/workshop/fs/dirs.get.ts +19 -1
- package/server/api/workshop/ops-logs/index.get.ts +3 -2
- package/server/api/workshop/users/register.post.ts +7 -0
- package/server/mcp/workshop-server.ts +36 -13
- package/server/middleware/00-security-headers.ts +38 -0
- package/server/middleware/01-rate-guard.ts +101 -0
- package/server/plugins/backup.ts +56 -1
- package/server/plugins-builtin/diag-bridge/host/plugin.mjs +18 -11
- package/server/repositories/user.repository.ts +10 -5
- package/server/services/user.service.ts +24 -1
- package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +1 -1
- package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -2
- package/server/services/workshop/agents/industrial/index.ts +1 -1
- package/server/services/workshop/agents/industrial/ops-tools.ts +168 -26
- package/server/services/workshop/agents/tool-classes.ts +2 -0
- package/server/services/workshop/aml/dataset-builder.ts +4 -2
- package/server/services/workshop/aml/job-orchestrator/process.ts +1 -0
- package/server/services/workshop/aml/job-orchestrator/shared.ts +2 -0
- package/server/services/workshop/aml/job-orchestrator/start-job.ts +5 -2
- package/server/services/workshop/db/channel.repo.ts +11 -1
- package/server/services/workshop/db/database/migrations.ts +2 -0
- package/server/services/workshop/db/database/rows.ts +2 -0
- package/server/services/workshop/db/database/seed.ts +19 -9
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +60 -4
- package/server/services/workshop/dcw/dcw-controller/write.ts +35 -6
- package/server/services/workshop/dcw/dcw-recipe.repo.ts +4 -3
- package/server/services/workshop/dcw/param-map.repo.ts +3 -0
- package/server/services/workshop/plugins/host/init.mjs +9 -1
- package/server/services/workshop/plugins/host/load.mjs +2 -2
- package/server/services/workshop/runtime/manager/admin-channel.ts +27 -1
- package/server/services/workshop/runtime/manager/channel-templates.ts +5 -4
- package/server/services/workshop/runtime/manager/runtime-wiring.ts +17 -1
- package/shared/config/schema.json +2 -0
- package/.output/public/_nuxt/4wrEQ3np2.js +0 -21
- package/.output/public/_nuxt/CGQvF-Gg.js +0 -14
- package/.output/public/_nuxt/CcGuXiOa.js +0 -1
- package/.output/public/_nuxt/D0SNhlnt.js +0 -1
- package/.output/public/_nuxt/DnH9SRMW2.js +0 -1
- package/.output/public/_nuxt/ON2x-t6n.js +0 -1
- package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +0 -1
- package/.output/public/_nuxt/_wsId_.DkrQkT6r.css +0 -1
- package/.output/public/_nuxt/builds/meta/c64014ca-3595-4b7a-a5ca-055687c83ba2.json +0 -1
- package/.output/server/chunks/build/_id_-BUpQSlzo.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopApi-CO3ophqt.mjs.map +0 -1
- package/scripts/.chk-tok +0 -1
- package/scripts/.retrain-body.json +0 -1
- package/scripts/.retrain3-body.json +0 -1
- package/scripts/.rt-tok +0 -1
- package/scripts/.rt3-tok +0 -1
package/i18n/locales/en.ts
CHANGED
|
@@ -17,6 +17,8 @@ export default {
|
|
|
17
17
|
delete: 'Delete',
|
|
18
18
|
status: 'Status',
|
|
19
19
|
all: 'All',
|
|
20
|
+
copy: 'Copy',
|
|
21
|
+
copied: 'Copied',
|
|
20
22
|
},
|
|
21
23
|
menu: {
|
|
22
24
|
system: 'AgentWorkShop',
|
|
@@ -296,6 +298,8 @@ export default {
|
|
|
296
298
|
security: {
|
|
297
299
|
hitlTimeoutMs: 'HITL approval timeout (ms)',
|
|
298
300
|
approvalGate: 'Dual approval for high-risk ops',
|
|
301
|
+
allowRegistration: 'Open self-service registration',
|
|
302
|
+
hstsEnabled: 'Send HSTS header',
|
|
299
303
|
},
|
|
300
304
|
server: {
|
|
301
305
|
host: 'Listen address',
|
|
@@ -1159,6 +1163,16 @@ export default {
|
|
|
1159
1163
|
k13awowo134: 'Process range (min/max) is required',
|
|
1160
1164
|
k1b6qe0r135: 'A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)',
|
|
1161
1165
|
kszv5sq136: 'No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)',
|
|
1166
|
+
stepLimitLabel: 'Exploration per-step limit',
|
|
1167
|
+
stepLimitUnit: 'engineering units',
|
|
1168
|
+
stepLimitPlaceholder: 'Leave empty for the node default (2% of range)',
|
|
1169
|
+
stepLimitHint: 'Maximum change per agent write; exploration writes are rejected when no finite value is set.',
|
|
1170
|
+
thStepLimit: 'Step limit',
|
|
1171
|
+
stepInputTitle: 'Live control of the per-step max change; leave empty to disable exploration writes',
|
|
1172
|
+
stepCurrent: 'Current Δ≤{p0}',
|
|
1173
|
+
stepUnset: 'unset',
|
|
1174
|
+
recipeStepLimitLabel: 'Recipe per-step limit Δ≤',
|
|
1175
|
+
recipeStepLimitPlaceholder: 'Follow node default',
|
|
1162
1176
|
},
|
|
1163
1177
|
teams: {
|
|
1164
1178
|
selectChannel: 'Select a target channel',
|
|
@@ -1448,6 +1462,10 @@ export default {
|
|
|
1448
1462
|
kfvflle033: 'user edits member info / scenario prompt',
|
|
1449
1463
|
k13xo8sz034: 'Select an agent template to clone',
|
|
1450
1464
|
k1tjd5ab035: 'Select an AgentTeam to deploy',
|
|
1465
|
+
supervisionWatchdogTitle: 'Watchdog observation threshold triggered ({p0}); this is an observation signal, not a cancel',
|
|
1466
|
+
supervisionRunningTitle: 'Supervision round in progress (attempt={p0}, tick={p1})',
|
|
1467
|
+
supervisionDecisionText: 'Decision {p0}',
|
|
1468
|
+
supervisionDecisionTitle: 'Last lead decision: {p0} ({p1})',
|
|
1451
1469
|
},
|
|
1452
1470
|
artifactCard: {
|
|
1453
1471
|
empty: '(empty)',
|
|
@@ -1510,6 +1528,9 @@ export default {
|
|
|
1510
1528
|
k1098zie005: 'The working-scenario spec shared by all agents of this channel, injected into every harness together with the system design handbook… e.g. all deliverables must include a Chinese summary; code changes need a plan first; end replies with a [DONE] marker',
|
|
1511
1529
|
kmgv4h5006: 'Working directory (team workspace mount point)',
|
|
1512
1530
|
k1i8q46x007: 'Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)',
|
|
1531
|
+
bindLineLabel: 'Bind line (read-only grant)',
|
|
1532
|
+
bindLinePlaceholder: 'Pick a line to bind (clear to unbind)',
|
|
1533
|
+
bindLineHint: 'Bound members can read the line ops logs, recipe history and live status without node bindings; writes still require node authorization.',
|
|
1513
1534
|
ku3ugac008: 'The working-scenario spec shared by all agents of this channel…',
|
|
1514
1535
|
k67dzev009: 'Working directory (agents\' cwd; omp subprocesses restart with the new directory after editing)',
|
|
1515
1536
|
k6kpql010: 'Save as Channel Template',
|
|
@@ -1545,6 +1566,112 @@ export default {
|
|
|
1545
1566
|
kyh87lw001: 'Deliverable body matches the reply above',
|
|
1546
1567
|
k49les002: 'Hide',
|
|
1547
1568
|
},
|
|
1569
|
+
chat: {
|
|
1570
|
+
title: 'Group chat',
|
|
1571
|
+
messageCount: '{p0} msgs',
|
|
1572
|
+
refreshTitle: 'Refresh members and settings',
|
|
1573
|
+
refresh: 'Refresh',
|
|
1574
|
+
join: 'Join channel',
|
|
1575
|
+
notMemberHint: 'Not a member — owner invitation required or the channel is private',
|
|
1576
|
+
privateHint: 'This channel is private or group chat is disabled — owner invitation required',
|
|
1577
|
+
pendingHint: 'Join request pending owner approval',
|
|
1578
|
+
leave: 'Leave channel',
|
|
1579
|
+
leaveConfirm: 'Leaving immediately revokes read, post, approval and notification catch-up access. Leave?',
|
|
1580
|
+
ownerHint: 'You are the owner (cannot leave; transfer ownership or delete the channel instead)',
|
|
1581
|
+
approve: 'Approve',
|
|
1582
|
+
removeConfirm: 'Removing this member immediately revokes their chat and approval access. Remove?',
|
|
1583
|
+
rosterHidden: 'Roster not visible (non-member)',
|
|
1584
|
+
settingsTitle: 'Chat settings',
|
|
1585
|
+
visibilityLabel: 'Visibility',
|
|
1586
|
+
visibilityPrivate: 'Private (members only)',
|
|
1587
|
+
visibilityPublic: 'Public (discoverable by signed-in users)',
|
|
1588
|
+
joinPolicyLabel: 'Join policy',
|
|
1589
|
+
joinPolicyOwnerApprove: 'Owner approval required',
|
|
1590
|
+
joinPolicyOpen: 'Open to join',
|
|
1591
|
+
approvalPolicyLabel: 'Approval policy',
|
|
1592
|
+
approvalOwnerOnly: 'Only the owner decides',
|
|
1593
|
+
approvalAnyMember: 'Any member decides',
|
|
1594
|
+
chatEnabledLabel: 'Enable group chat',
|
|
1595
|
+
saveSettings: 'Save settings',
|
|
1596
|
+
statusActive: 'Active',
|
|
1597
|
+
statusPending: 'Pending',
|
|
1598
|
+
statusLeft: 'Left',
|
|
1599
|
+
statusRemoved: 'Removed',
|
|
1600
|
+
joinedPending: 'Join request submitted — waiting for owner approval',
|
|
1601
|
+
joinedOk: 'Joined the channel',
|
|
1602
|
+
errChatDisabled: 'Group chat is disabled for this channel',
|
|
1603
|
+
errChannelPrivate: 'This channel is private — an owner invitation is required',
|
|
1604
|
+
leftOk: 'You have left the channel',
|
|
1605
|
+
errOwnerCannotLeave: 'The owner cannot leave — transfer ownership first',
|
|
1606
|
+
approvedOk: 'Join request approved',
|
|
1607
|
+
removedOk: 'Member removed',
|
|
1608
|
+
settingsSaved: 'Chat settings saved',
|
|
1609
|
+
settingsConflict: 'Channel settings were changed by someone else — refresh and retry',
|
|
1610
|
+
avatarHuman: 'U',
|
|
1611
|
+
earlierMessage: 'Earlier message',
|
|
1612
|
+
backToLatest: 'Back to latest',
|
|
1613
|
+
latest: 'Latest',
|
|
1614
|
+
loading: 'Loading…',
|
|
1615
|
+
loadEarlier: 'Load earlier messages',
|
|
1616
|
+
emptyTitle: 'No group chat messages yet',
|
|
1617
|
+
emptyHint: 'Plain messages only go to the group (0 agent runs); {\'@\'} mention an agent to trigger a run, or {\'@\'} a member for a direct notification.',
|
|
1618
|
+
roleUser: 'User',
|
|
1619
|
+
roleSystem: 'System',
|
|
1620
|
+
replyTitle: 'Reply quoting this message',
|
|
1621
|
+
reply: 'Reply',
|
|
1622
|
+
mentionAgentTitle: 'Click to open this agent',
|
|
1623
|
+
mentionMemberTitle: 'Mentioned member (does not trigger an agent)',
|
|
1624
|
+
answeredFrom: 'Answering {p0}',
|
|
1625
|
+
askedBy: '· asked by {p0}',
|
|
1626
|
+
deliveryPending: 'Pending',
|
|
1627
|
+
deliveryDelivered: 'Delivered',
|
|
1628
|
+
deliveryConsumed: 'Consumed',
|
|
1629
|
+
deliveryFailed: 'Delivery failed',
|
|
1630
|
+
deliveryCancelled: 'Cancelled',
|
|
1631
|
+
toolbarChatTitle: 'Group chat: only explicit {\'@\'}agent mentions trigger a run',
|
|
1632
|
+
reachAgentsTitle: 'Only explicit {\'@\'}agent mentions trigger a run',
|
|
1633
|
+
reachAgentsText: '{\'@\'}{p0} · will trigger {p1} agent run(s)',
|
|
1634
|
+
reachNoAgentTitle: 'No {\'@\'}agent: the message only goes to the group, no agent runs',
|
|
1635
|
+
reachNoAgentText: 'Group only · 0 agent runs',
|
|
1636
|
+
notifyMembersSuffix: ' will receive a direct notification',
|
|
1637
|
+
mentionHint: 'Type {\'@\'} to mention members · Enter to send',
|
|
1638
|
+
cancelReply: 'Cancel reply',
|
|
1639
|
+
unresolvedMentions: 'Unrecognized {\'@\'}: {p0} (not in this channel, not delivered)',
|
|
1640
|
+
sentToChat: 'Sent to the group · {p0} agent(s) received it',
|
|
1641
|
+
sentToChatNoAgent: 'Sent to the group (no {\'@\'}agent, no agent run)',
|
|
1642
|
+
composerChatDisabled: 'Group chat is disabled for this channel — ask the owner to enable it in the members panel and retry',
|
|
1643
|
+
composerNotMember: 'You are not a member of this channel yet — join via the members panel',
|
|
1644
|
+
composerPlaceholder: 'Send to group chat… {\'@\'} mention an agent (triggers a run) or a member (notification only)',
|
|
1645
|
+
blockChatDisabled: 'Group chat is disabled for this channel (the owner can enable it in the members panel)',
|
|
1646
|
+
blockNotMember: 'You are not a member yet — join via the members panel to post',
|
|
1647
|
+
},
|
|
1648
|
+
notifications: {
|
|
1649
|
+
bellTitle: 'My notifications (mentions / agent replies / approvals)',
|
|
1650
|
+
title: 'My notifications',
|
|
1651
|
+
unreadCount: '{p0} unread',
|
|
1652
|
+
markAllRead: 'Mark all read',
|
|
1653
|
+
markReadFailed: 'Failed to mark as read',
|
|
1654
|
+
empty: 'No notifications yet — mentions, agent replies and approval requests will show up here',
|
|
1655
|
+
typeMention: 'Mention',
|
|
1656
|
+
typeAgentReply: 'Agent reply',
|
|
1657
|
+
typeHitlRequest: 'Approval needed',
|
|
1658
|
+
typeHitlResolved: 'Approval result',
|
|
1659
|
+
typeMember: 'Membership change',
|
|
1660
|
+
},
|
|
1661
|
+
lineOps: {
|
|
1662
|
+
panelAria: 'Line operations panel',
|
|
1663
|
+
title: 'Line Operations',
|
|
1664
|
+
statDcw: 'Write control',
|
|
1665
|
+
statDaq: 'Acquisition',
|
|
1666
|
+
statAml: 'Training',
|
|
1667
|
+
statSafe: 'Blocked',
|
|
1668
|
+
filterAria: 'Operations filter',
|
|
1669
|
+
filterDaq: 'Fetch',
|
|
1670
|
+
filterTwin: 'Twin',
|
|
1671
|
+
filterSafety: 'Safety',
|
|
1672
|
+
empty: 'Waiting for line operations events',
|
|
1673
|
+
systemName: 'System',
|
|
1674
|
+
},
|
|
1548
1675
|
clusterError: {
|
|
1549
1676
|
showAll: 'All {p0}',
|
|
1550
1677
|
k40p82001: 'Collapse',
|
|
@@ -1608,6 +1735,7 @@ export default {
|
|
|
1608
1735
|
clusterTool: {
|
|
1609
1736
|
expandAll: 'Expand all {p0} calls',
|
|
1610
1737
|
k40p82001: 'Collapse',
|
|
1738
|
+
kindIndustrial: 'Industrial',
|
|
1611
1739
|
},
|
|
1612
1740
|
commandPalette: {
|
|
1613
1741
|
gotoTeams: 'Go to: AgentTeam groups',
|
|
@@ -1631,14 +1759,14 @@ export default {
|
|
|
1631
1759
|
},
|
|
1632
1760
|
composer: {
|
|
1633
1761
|
loopIntervalRange: 'Loop interval must be between 1 and 86400 seconds',
|
|
1634
|
-
defaultLeadTitle: 'No {\'@\'} target: tasks route through lead scheduling; {\'@\'} a member to send directly',
|
|
1635
|
-
chipHint: 'Type {\'@\'} to mention members · ⌘/Ctrl+Enter to send',
|
|
1762
|
+
defaultLeadTitle: 'No {\'{\'@\'}\'} target: tasks route through lead scheduling; {\'{\'@\'}\'} a member to send directly',
|
|
1763
|
+
chipHint: 'Type {\'{\'@\'}\'} to mention members · ⌘/Ctrl+Enter to send',
|
|
1636
1764
|
seconds: 's',
|
|
1637
1765
|
sendTitle: 'Send (⌘/Ctrl+Enter)',
|
|
1638
|
-
kl3604i033: 'Direct to {\'@\'}{p0}',
|
|
1766
|
+
kl3604i033: 'Direct to {\'{\'@\'}\'}{p0}',
|
|
1639
1767
|
k1cxjc4m034: 'Live Injection',
|
|
1640
|
-
k1d2idgj035: 'Task dispatched → {\'@\'}{p0} ({p1})',
|
|
1641
|
-
k1wk4bf036: 'Message sent to {\'@\'}{p0} ({p1})',
|
|
1768
|
+
k1d2idgj035: 'Task dispatched → {\'{\'@\'}\'}{p0} ({p1})',
|
|
1769
|
+
k1wk4bf036: 'Message sent to {\'{\'@\'}\'}{p0} ({p1})',
|
|
1642
1770
|
k2z0fsx032: ' · direct',
|
|
1643
1771
|
k1b38y2b001: 'Unlimited',
|
|
1644
1772
|
k1jqqvhe002: 'HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)',
|
|
@@ -1655,7 +1783,7 @@ export default {
|
|
|
1655
1783
|
k1bosqfv013: 'Live inject',
|
|
1656
1784
|
kqdhdlq014: 'Task title is required',
|
|
1657
1785
|
k1l36qf9015: 'Max runs must be 1–10000; empty means unlimited',
|
|
1658
|
-
k1bw65is016: 'Select a target agent ({\'@\'} mention available)',
|
|
1786
|
+
k1bw65is016: 'Select a target agent ({\'{\'@\'}\'} mention available)',
|
|
1659
1787
|
k1ww0ftm017: 'Running · the task joins its mailbox queue',
|
|
1660
1788
|
k9eq10w018: 'Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn',
|
|
1661
1789
|
kbhz1rp019: 'Stopped · the task is queued and runs after wake-up',
|
|
@@ -1669,8 +1797,8 @@ export default {
|
|
|
1669
1797
|
kmf7lcc027: 'Target runtime stopped: the message is safely queued and processed after re-enabling',
|
|
1670
1798
|
k1tet5df028: 'Idle · a turn starts immediately to handle it',
|
|
1671
1799
|
kn600in029: 'Target idle: processing starts right after delivery',
|
|
1672
|
-
k2h5jwc030: 'Type a task (first line = title, {\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit',
|
|
1673
|
-
k15mwzt7031: 'Type a message/notice ({\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send',
|
|
1800
|
+
k2h5jwc030: 'Type a task (first line = title, {\'{\'@\'}\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit',
|
|
1801
|
+
k15mwzt7031: 'Type a message/notice ({\'{\'@\'}\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send',
|
|
1674
1802
|
},
|
|
1675
1803
|
deviceTwinPanel: {
|
|
1676
1804
|
armDelete: 'Click again to confirm deleting this device instance',
|
|
@@ -1839,6 +1967,12 @@ export default {
|
|
|
1839
1967
|
k401n2012: 'none)',
|
|
1840
1968
|
k1xj595a013: 'Cancellation requested',
|
|
1841
1969
|
ke7bh8u014: 'Re-dispatched for execution',
|
|
1970
|
+
timedOut: 'Timed out',
|
|
1971
|
+
remainingMinutes: 'About {p0} min left',
|
|
1972
|
+
deadlineAt: 'Due {p0}',
|
|
1973
|
+
cancelWithChildren: 'This also stops {p0} active descendant tasks; completed results are kept. Continue?',
|
|
1974
|
+
cancelConfirm: 'Cancel this task?',
|
|
1975
|
+
childrenStats: 'Descendants {p0} · active {p1} · cancelled {p2}',
|
|
1842
1976
|
},
|
|
1843
1977
|
townView: {
|
|
1844
1978
|
saveLayoutTip: 'Write all devices\' position/rotation/scale to the database',
|
|
@@ -2220,6 +2354,16 @@ export default {
|
|
|
2220
2354
|
hitlKindDsh: 'dsh permission',
|
|
2221
2355
|
hitlApprove: 'Approve',
|
|
2222
2356
|
hitlReject: 'Reject',
|
|
2357
|
+
hitlReqQuestion: 'Question',
|
|
2358
|
+
hitlReqApproval: 'Approval',
|
|
2359
|
+
hitlPolicy: 'Policy: {p0}',
|
|
2360
|
+
hitlEngineNote: 'This item must be handled in its engine UI',
|
|
2361
|
+
hitlPermsLoading: 'Loading approval permissions…',
|
|
2362
|
+
hitlNoPerm: 'No approval permission',
|
|
2363
|
+
hitlAnswerPlaceholder: 'Type your answer',
|
|
2364
|
+
hitlSupplementPlaceholder: 'Additional notes (optional)',
|
|
2365
|
+
hitlSubmitAnswer: 'Submit answer',
|
|
2366
|
+
hitlCancelRequest: 'Cancel request',
|
|
2223
2367
|
},
|
|
2224
2368
|
ompTerminalPanel: {
|
|
2225
2369
|
switchTarget: '── Switch target · {p0} ──',
|
package/i18n/locales/zh-CN.ts
CHANGED
|
@@ -17,6 +17,8 @@ export default {
|
|
|
17
17
|
delete: '删除',
|
|
18
18
|
status: '状态',
|
|
19
19
|
all: '全部',
|
|
20
|
+
copy: '复制',
|
|
21
|
+
copied: '已复制',
|
|
20
22
|
},
|
|
21
23
|
menu: {
|
|
22
24
|
system: 'AgentWorkShop',
|
|
@@ -296,6 +298,8 @@ export default {
|
|
|
296
298
|
security: {
|
|
297
299
|
hitlTimeoutMs: 'HITL 审批超时(ms)',
|
|
298
300
|
approvalGate: '高危操作双人复核',
|
|
301
|
+
allowRegistration: '开放自助注册',
|
|
302
|
+
hstsEnabled: '下发 HSTS 头',
|
|
299
303
|
},
|
|
300
304
|
server: {
|
|
301
305
|
host: '监听地址',
|
|
@@ -1159,6 +1163,16 @@ export default {
|
|
|
1159
1163
|
k13awowo134: '工艺量程(min/max)必填',
|
|
1160
1164
|
k1b6qe0r135: '开跑前必须先设定配方:请选择产品与配方(配方需含工艺参数)',
|
|
1161
1165
|
kszv5sq136: '窗口内无匹配数据(检查产品/配方/时间范围;仅产线运行中的样本带产线标识)',
|
|
1166
|
+
stepLimitLabel: '探索阶段单步上限',
|
|
1167
|
+
stepLimitUnit: '工程量',
|
|
1168
|
+
stepLimitPlaceholder: '留空:按节点量程 2% 默认值',
|
|
1169
|
+
stepLimitHint: 'Agent 每次写入的最大变化量;无有限值时探索写入会被拒绝。',
|
|
1170
|
+
thStepLimit: '探索步长',
|
|
1171
|
+
stepInputTitle: '在线控制单步最大变化量;留空将关闭探索写入',
|
|
1172
|
+
stepCurrent: '当前 Δ≤{p0}',
|
|
1173
|
+
stepUnset: '未配置',
|
|
1174
|
+
recipeStepLimitLabel: 'Recipe 单步上限 Δ≤',
|
|
1175
|
+
recipeStepLimitPlaceholder: '跟随节点默认',
|
|
1162
1176
|
},
|
|
1163
1177
|
teams: {
|
|
1164
1178
|
selectChannel: '选择目标 Channel',
|
|
@@ -1448,6 +1462,10 @@ export default {
|
|
|
1448
1462
|
kfvflle033: 'user 编辑成员信息/场景提示词',
|
|
1449
1463
|
k13xo8sz034: '请选择要克隆的 Agent 模板',
|
|
1450
1464
|
k1tjd5ab035: '请选择要部署的 AgentTeam',
|
|
1465
|
+
supervisionWatchdogTitle: '监督观察阈值已触发({p0});这是观察信号,不是取消',
|
|
1466
|
+
supervisionRunningTitle: '监督回合进行中(attempt={p0},tick={p1})',
|
|
1467
|
+
supervisionDecisionText: '决策 {p0}',
|
|
1468
|
+
supervisionDecisionTitle: 'Lead 最后决策:{p0}({p1})',
|
|
1451
1469
|
},
|
|
1452
1470
|
artifactCard: {
|
|
1453
1471
|
empty: '(空)',
|
|
@@ -1510,6 +1528,9 @@ export default {
|
|
|
1510
1528
|
k1098zie005: '该 channel 全部 Agent 共享的作业场景规范,与系统设计手册组合注入每个 harness……例如:所有产出必须附中文摘要;代码修改需先列计划再动手;回复末尾附 [DONE] 标记',
|
|
1511
1529
|
kmgv4h5006: '工作目录(团队作业挂载点)',
|
|
1512
1530
|
k1i8q46x007: '作业场景 Prompt(修改后成员运行时自动回收,按新场景重装配)',
|
|
1531
|
+
bindLineLabel: '绑定产线(只读授权)',
|
|
1532
|
+
bindLinePlaceholder: '选择要绑定的产线(可清除=解绑)',
|
|
1533
|
+
bindLineHint: '绑定后频道成员无需节点绑定即可读取该产线的运维日志、配方历史与实时状态;参数下发等写操作仍需节点授权。',
|
|
1513
1534
|
ku3ugac008: '该 channel 全部 Agent 共享的作业场景规范……',
|
|
1514
1535
|
k67dzev009: '工作目录(Agent 作业 cwd;修改后 omp 子进程按新目录重启)',
|
|
1515
1536
|
k6kpql010: '保存为 Channel 模板',
|
|
@@ -1545,6 +1566,112 @@ export default {
|
|
|
1545
1566
|
kyh87lw001: '交付物正文与上方回复一致',
|
|
1546
1567
|
k49les002: '隐藏',
|
|
1547
1568
|
},
|
|
1569
|
+
chat: {
|
|
1570
|
+
title: '群聊',
|
|
1571
|
+
messageCount: '{p0} 条',
|
|
1572
|
+
refreshTitle: '刷新成员与设置',
|
|
1573
|
+
refresh: '刷新',
|
|
1574
|
+
join: '加入群聊',
|
|
1575
|
+
notMemberHint: '未加入群聊 —— 需 owner 邀请或 Channel 未公开',
|
|
1576
|
+
privateHint: '该 Channel 未公开或未开启群聊 —— 需 owner 邀请',
|
|
1577
|
+
pendingHint: '加入申请待 owner 批准',
|
|
1578
|
+
leave: '退出群聊',
|
|
1579
|
+
leaveConfirm: '退出群聊后将立即失去读、发言、审批与通知补拉权限,确认退出?',
|
|
1580
|
+
ownerHint: '你是 owner(不可退出,可转移 owner 或删除 Channel)',
|
|
1581
|
+
approve: '批准',
|
|
1582
|
+
removeConfirm: '移除该成员后其立即失去群聊与审批权限,确认?',
|
|
1583
|
+
rosterHidden: '名册不可见(非成员)',
|
|
1584
|
+
settingsTitle: '群聊设置',
|
|
1585
|
+
visibilityLabel: '可见性',
|
|
1586
|
+
visibilityPrivate: '私有(仅成员可见)',
|
|
1587
|
+
visibilityPublic: '公开(登录用户可发现)',
|
|
1588
|
+
joinPolicyLabel: '加入策略',
|
|
1589
|
+
joinPolicyOwnerApprove: '需 owner 批准',
|
|
1590
|
+
joinPolicyOpen: '开放加入',
|
|
1591
|
+
approvalPolicyLabel: '审批策略',
|
|
1592
|
+
approvalOwnerOnly: '仅 owner 可决策',
|
|
1593
|
+
approvalAnyMember: '任一成员可决策',
|
|
1594
|
+
chatEnabledLabel: '开启群聊',
|
|
1595
|
+
saveSettings: '保存设置',
|
|
1596
|
+
statusActive: '在群',
|
|
1597
|
+
statusPending: '待批准',
|
|
1598
|
+
statusLeft: '已退出',
|
|
1599
|
+
statusRemoved: '已移除',
|
|
1600
|
+
joinedPending: '已提交加入申请,等待 owner 批准',
|
|
1601
|
+
joinedOk: '已加入群聊',
|
|
1602
|
+
errChatDisabled: '该 Channel 未开启群聊',
|
|
1603
|
+
errChannelPrivate: '该 Channel 未公开,需 owner 邀请',
|
|
1604
|
+
leftOk: '已退出群聊',
|
|
1605
|
+
errOwnerCannotLeave: 'owner 不能退出群聊,请先转移 owner',
|
|
1606
|
+
approvedOk: '已批准加入',
|
|
1607
|
+
removedOk: '已移除成员',
|
|
1608
|
+
settingsSaved: '群聊设置已保存',
|
|
1609
|
+
settingsConflict: 'Channel 设置已被他人修改,请刷新后重试',
|
|
1610
|
+
avatarHuman: '人',
|
|
1611
|
+
earlierMessage: '更早的消息',
|
|
1612
|
+
backToLatest: '回到最新',
|
|
1613
|
+
latest: '最新',
|
|
1614
|
+
loading: '加载中…',
|
|
1615
|
+
loadEarlier: '加载更早的消息',
|
|
1616
|
+
emptyTitle: '还没有群聊消息',
|
|
1617
|
+
emptyHint: '直接发言只进群聊(0 次 Agent 执行);输入 {\'@\'} 提及 Agent 才会触发执行,{\'@\'} 成员只发定向通知。',
|
|
1618
|
+
roleUser: '用户',
|
|
1619
|
+
roleSystem: '系统',
|
|
1620
|
+
replyTitle: '引用这条消息回复',
|
|
1621
|
+
reply: '回复',
|
|
1622
|
+
mentionAgentTitle: '点击查看该 Agent',
|
|
1623
|
+
mentionMemberTitle: '被 {\'@\'} 的成员(不触发 Agent)',
|
|
1624
|
+
answeredFrom: '回答自 {p0}',
|
|
1625
|
+
askedBy: '· 提问者 {p0}',
|
|
1626
|
+
deliveryPending: '待投递',
|
|
1627
|
+
deliveryDelivered: '已入信箱',
|
|
1628
|
+
deliveryConsumed: '已被消费',
|
|
1629
|
+
deliveryFailed: '投递失败',
|
|
1630
|
+
deliveryCancelled: '已取消',
|
|
1631
|
+
toolbarChatTitle: '群聊:仅显式 {\'@\'}Agent 才触发执行',
|
|
1632
|
+
reachAgentsTitle: '仅显式 {\'@\'}Agent 触发执行',
|
|
1633
|
+
reachAgentsText: '{\'@\'}{p0} · 将触发 {p1} 次 Agent 执行',
|
|
1634
|
+
reachNoAgentTitle: '未 {\'@\'}Agent:消息只进群聊,不触发任何 Agent',
|
|
1635
|
+
reachNoAgentText: '仅群聊 · 0 次 Agent 执行',
|
|
1636
|
+
notifyMembersSuffix: ' 将收到定向通知',
|
|
1637
|
+
mentionHint: '输入 {\'@\'} 提及成员 · Enter 发送',
|
|
1638
|
+
cancelReply: '取消回复',
|
|
1639
|
+
unresolvedMentions: '未识别的 {\'@\'}: {p0}(不在本群成员内,未投递)',
|
|
1640
|
+
sentToChat: '已发到群聊 · {p0} 个 Agent 已收到投递',
|
|
1641
|
+
sentToChatNoAgent: '已发到群聊(未 {\'@\'}Agent,无 Agent 执行)',
|
|
1642
|
+
composerChatDisabled: '该 Channel 未开启群聊 —— 请 owner 在右侧成员面板开启后重试',
|
|
1643
|
+
composerNotMember: '你还不是该 Channel 的群成员 —— 请在右侧成员面板加入群聊',
|
|
1644
|
+
composerPlaceholder: '发送到群聊… {\'@\'} 提及 Agent(触发执行)或成员(仅通知)',
|
|
1645
|
+
blockChatDisabled: '该 Channel 未开启群聊(owner 可在右侧成员面板开启)',
|
|
1646
|
+
blockNotMember: '你还不是群成员 —— 请在右侧成员面板加入群聊后发言',
|
|
1647
|
+
},
|
|
1648
|
+
notifications: {
|
|
1649
|
+
bellTitle: '我的通知({\'@\'} 提及 / Agent 回复 / 审批)',
|
|
1650
|
+
title: '我的通知',
|
|
1651
|
+
unreadCount: '{p0} 未读',
|
|
1652
|
+
markAllRead: '全部已读',
|
|
1653
|
+
markReadFailed: '标记已读失败',
|
|
1654
|
+
empty: '暂无通知 —— 被 {\'@\'} 、收到 Agent 回复或审批请求时会出现在这里',
|
|
1655
|
+
typeMention: '{\'@\'} 提及',
|
|
1656
|
+
typeAgentReply: 'Agent 回复',
|
|
1657
|
+
typeHitlRequest: '待审批',
|
|
1658
|
+
typeHitlResolved: '审批结果',
|
|
1659
|
+
typeMember: '成员变更',
|
|
1660
|
+
},
|
|
1661
|
+
lineOps: {
|
|
1662
|
+
panelAria: '产线作业面板',
|
|
1663
|
+
title: '产线作业',
|
|
1664
|
+
statDcw: '写控',
|
|
1665
|
+
statDaq: '采集',
|
|
1666
|
+
statAml: '训练',
|
|
1667
|
+
statSafe: '拦截',
|
|
1668
|
+
filterAria: '作业筛选',
|
|
1669
|
+
filterDaq: '取数',
|
|
1670
|
+
filterTwin: '孪生',
|
|
1671
|
+
filterSafety: '安全',
|
|
1672
|
+
empty: '等待产线作业事件',
|
|
1673
|
+
systemName: '系统',
|
|
1674
|
+
},
|
|
1548
1675
|
clusterError: {
|
|
1549
1676
|
showAll: '全部 {p0} 条',
|
|
1550
1677
|
k40p82001: '收起',
|
|
@@ -1608,6 +1735,7 @@ export default {
|
|
|
1608
1735
|
clusterTool: {
|
|
1609
1736
|
expandAll: '展开全部 {p0} 个调用',
|
|
1610
1737
|
k40p82001: '收起',
|
|
1738
|
+
kindIndustrial: '工业',
|
|
1611
1739
|
},
|
|
1612
1740
|
commandPalette: {
|
|
1613
1741
|
gotoTeams: '前往:AgentTeam 编组库',
|
|
@@ -1631,14 +1759,14 @@ export default {
|
|
|
1631
1759
|
},
|
|
1632
1760
|
composer: {
|
|
1633
1761
|
loopIntervalRange: 'loop 间隔需设置为 1 到 86400 秒',
|
|
1634
|
-
defaultLeadTitle: '未 {\'@\'} 指定:任务自动路由 lead 调度;{\'@\'} 某成员可直发',
|
|
1635
|
-
chipHint: '输入 {\'@\'} 提及成员 · ⌘/Ctrl+Enter 发送',
|
|
1762
|
+
defaultLeadTitle: '未 {\'{\'@\'}\'} 指定:任务自动路由 lead 调度;{\'{\'@\'}\'} 某成员可直发',
|
|
1763
|
+
chipHint: '输入 {\'{\'@\'}\'} 提及成员 · ⌘/Ctrl+Enter 发送',
|
|
1636
1764
|
seconds: '秒',
|
|
1637
1765
|
sendTitle: '发送(⌘/Ctrl+Enter)',
|
|
1638
|
-
kl3604i033: '直发 {\'@\'}{p0}',
|
|
1766
|
+
kl3604i033: '直发 {\'{\'@\'}\'}{p0}',
|
|
1639
1767
|
k1cxjc4m034: '实时注入',
|
|
1640
|
-
k1d2idgj035: '任务已下发 → {\'@\'}{p0}({p1})',
|
|
1641
|
-
k1wk4bf036: '消息已发送给 {\'@\'}{p0}({p1})',
|
|
1768
|
+
k1d2idgj035: '任务已下发 → {\'{\'@\'}\'}{p0}({p1})',
|
|
1769
|
+
k1wk4bf036: '消息已发送给 {\'{\'@\'}\'}{p0}({p1})',
|
|
1642
1770
|
k2z0fsx032: ' · 直发',
|
|
1643
1771
|
k1b38y2b001: '不限次数',
|
|
1644
1772
|
k1jqqvhe002: 'HITL 实时注入:目标运行中时直接注入其当前回合(同轮可见)',
|
|
@@ -1655,7 +1783,7 @@ export default {
|
|
|
1655
1783
|
k1bosqfv013: '即时注入',
|
|
1656
1784
|
kqdhdlq014: '任务标题不能为空',
|
|
1657
1785
|
k1l36qf9015: '最大次数需设置为 1 到 10000 次,留空表示不限次数',
|
|
1658
|
-
k1bw65is016: '请选择目标 Agent(可用 {\'@\'} 提及)',
|
|
1786
|
+
k1bw65is016: '请选择目标 Agent(可用 {\'{\'@\'}\'} 提及)',
|
|
1659
1787
|
k1ww0ftm017: '运行中 · 任务进入其信箱排队',
|
|
1660
1788
|
k9eq10w018: '目标正在执行:新任务投递到信箱,当前回合结束后按 FIFO 处理',
|
|
1661
1789
|
kbhz1rp019: '已停止 · 任务将入队,唤醒后执行',
|
|
@@ -1669,8 +1797,8 @@ export default {
|
|
|
1669
1797
|
kmf7lcc027: '目标运行时已停止:消息安全入队,重新启用后自动处理',
|
|
1670
1798
|
k1tet5df028: '空闲 · 将立即起回合处理',
|
|
1671
1799
|
kn600in029: '目标空闲:消息投递后立即开始处理',
|
|
1672
|
-
k2h5jwc030: '输入任务下发(首行标题,{\'@\'} 成员直发,缺省 lead)… ⌘/Ctrl+Enter 提交',
|
|
1673
|
-
k15mwzt7031: '输入消息/通知({\'@\'} 成员指定目标,缺省 lead)… ⌘/Ctrl+Enter 发送',
|
|
1800
|
+
k2h5jwc030: '输入任务下发(首行标题,{\'{\'@\'}\'} 成员直发,缺省 lead)… ⌘/Ctrl+Enter 提交',
|
|
1801
|
+
k15mwzt7031: '输入消息/通知({\'{\'@\'}\'} 成员指定目标,缺省 lead)… ⌘/Ctrl+Enter 发送',
|
|
1674
1802
|
},
|
|
1675
1803
|
deviceTwinPanel: {
|
|
1676
1804
|
armDelete: '再次点击确认删除该设备实例',
|
|
@@ -1839,6 +1967,12 @@ export default {
|
|
|
1839
1967
|
k401n2012: '无)',
|
|
1840
1968
|
k1xj595a013: '已请求取消',
|
|
1841
1969
|
ke7bh8u014: '已重新投递执行',
|
|
1970
|
+
timedOut: '已超时',
|
|
1971
|
+
remainingMinutes: '剩余约 {p0} 分钟',
|
|
1972
|
+
deadlineAt: '截止 {p0}',
|
|
1973
|
+
cancelWithChildren: '这会同时停止 {p0} 个活动后代任务,已完成结果会保留。确定继续?',
|
|
1974
|
+
cancelConfirm: '确定取消这个任务吗?',
|
|
1975
|
+
childrenStats: '后代 {p0} · 活动 {p1} · 已取消 {p2}',
|
|
1842
1976
|
},
|
|
1843
1977
|
townView: {
|
|
1844
1978
|
saveLayoutTip: '把全部设备的位置/朝向/缩放写入数据库',
|
|
@@ -2220,6 +2354,16 @@ export default {
|
|
|
2220
2354
|
hitlKindDsh: 'dsh 权限',
|
|
2221
2355
|
hitlApprove: '批准',
|
|
2222
2356
|
hitlReject: '拒绝',
|
|
2357
|
+
hitlReqQuestion: '提问',
|
|
2358
|
+
hitlReqApproval: '审批',
|
|
2359
|
+
hitlPolicy: '策略:{p0}',
|
|
2360
|
+
hitlEngineNote: '该类型待办需在对应引擎界面处理',
|
|
2361
|
+
hitlPermsLoading: '读取审批权限…',
|
|
2362
|
+
hitlNoPerm: '无审批权限',
|
|
2363
|
+
hitlAnswerPlaceholder: '输入答案',
|
|
2364
|
+
hitlSupplementPlaceholder: '补充说明(可选)',
|
|
2365
|
+
hitlSubmitAnswer: '提交答案',
|
|
2366
|
+
hitlCancelRequest: '取消请求',
|
|
2223
2367
|
},
|
|
2224
2368
|
ompTerminalPanel: {
|
|
2225
2369
|
switchTarget: '── 切换目标 · {p0} ──',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentworkshop",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.53",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgentWorkShop \u8f6f\u4ef6\u5f00\u53d1\u7cfb\u7edf - \u57fa\u4e8e Nuxt 4 \u7684\u914d\u7f6e\u9a71\u52a8\u8fd0\u884c\u8303\u5f0f",
|
|
6
6
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
@@ -21,7 +21,8 @@ import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/
|
|
|
21
21
|
import { createWorkshopMcpServer } from '../../mcp/workshop-server'
|
|
22
22
|
import { getWorkshopManager } from '../../plugins/workshop'
|
|
23
23
|
|
|
24
|
-
/** 会话注册表:sessionId → transport(stateful 会话状态保留) */
|
|
24
|
+
/** 会话注册表:sessionId → transport(stateful 会话状态保留);上限防匿名刷爆内存 */
|
|
25
|
+
const MAX_MCP_SESSIONS = 64
|
|
25
26
|
const sessions = new Map<string, WebStandardStreamableHTTPServerTransport>()
|
|
26
27
|
|
|
27
28
|
/** h3 event → web Request(跨 h3 1.x/2.x 兼容:不用版本互异的转换助手) */
|
|
@@ -65,6 +66,12 @@ export default defineEventHandler(async (event) => {
|
|
|
65
66
|
|
|
66
67
|
// 新会话:预生成 sessionId,transport 在 initialize 时把它写入响应头
|
|
67
68
|
if (!transport) {
|
|
69
|
+
if (sessions.size >= MAX_MCP_SESSIONS) {
|
|
70
|
+
return new Response(JSON.stringify({ error: 'TOO_MANY_SESSIONS', message: `MCP 会话数已达上限 ${MAX_MCP_SESSIONS}` }), {
|
|
71
|
+
status: 429,
|
|
72
|
+
headers: { 'content-type': 'application/json' },
|
|
73
|
+
})
|
|
74
|
+
}
|
|
68
75
|
const newSessionId = randomUUID()
|
|
69
76
|
transport = new WebStandardStreamableHTTPServerTransport({
|
|
70
77
|
sessionIdGenerator: () => newSessionId,
|
package/server/api/metrics.ts
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* GET /api/metrics —— 运维指标端点(R4,production-readiness-plan)。
|
|
3
3
|
*
|
|
4
4
|
* text/plain 简易指标格式(键值行,Prometheus 可用 textfile/自定义采集器接入)。
|
|
5
|
-
*
|
|
5
|
+
* 鉴权:任意有效用户 token(Bearer)——聚合计数与时间戳不含业务数据,
|
|
6
|
+
* 但公网部署下不向匿名暴露运行面信息;采集器配 Token 头即可接入。
|
|
6
7
|
* 只读 globalThis 单例(不主动实例化),服务未装配时输出 0 —— 首次抓取即合法。
|
|
7
8
|
*/
|
|
8
9
|
import { defineEventHandler, setResponseHeader } from 'h3'
|
|
9
10
|
import { getOps } from '../services/workshop/ops/ops'
|
|
11
|
+
import { resolveUser } from './workshop/caller'
|
|
10
12
|
|
|
11
13
|
interface MetricLine { name: string, help: string, value: number | string }
|
|
12
14
|
|
|
@@ -15,6 +17,7 @@ function fmt(lines: MetricLine[]): string {
|
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
export default defineEventHandler(async (event) => {
|
|
20
|
+
resolveUser(event)
|
|
18
21
|
const g = globalThis as typeof globalThis & {
|
|
19
22
|
__daqController?: { controllerState(): Record<string, number | boolean>, running?: boolean }
|
|
20
23
|
__daqQueue?: { lost?: number }
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* /api/plugins/:name/** —— 插件自注册 API 的转发层(exact-match)。
|
|
3
3
|
* 插件经 ctx.route(method, path, handler) 注册;handler(event) 返回值由 nitro 序列化。
|
|
4
|
-
* 鉴权:插件在入口声明 auth:'user' | 'admin' | 'agent-or-user'
|
|
5
|
-
* (
|
|
4
|
+
* 鉴权:插件在入口声明 auth:'user' | 'admin' | 'agent-or-user' | 'none' 时由转发层统一校验。
|
|
5
|
+
* 安全默认 = 'user'(default-deny):未声明的插件不再匿名暴露,须显式声明 'none' 才开放
|
|
6
|
+
* (公网部署基线;确需匿名的只读面由插件作者显式声明并承担暴露责任)。
|
|
6
7
|
* 错误隔离:插件 handler 抛错 → 结构化日志(带插件归属)+ 干净 500 信封,不裸传堆栈。
|
|
7
8
|
*/
|
|
8
9
|
import { defineEventHandler, createError, readBody } from 'h3'
|
|
@@ -16,7 +17,7 @@ export default defineEventHandler(async (event) => {
|
|
|
16
17
|
const path = '/' + (event.context.params?.path ?? '').replace(/^\/+/, '')
|
|
17
18
|
const rec = host.plugins.get(name)
|
|
18
19
|
// 声明式鉴权门:在进入插件 handler 前统一校验(禁用插件的路由表已不含其路由,天然 404)
|
|
19
|
-
const authMode = String(rec?.auth ?? '
|
|
20
|
+
const authMode = String(rec?.auth ?? 'user')
|
|
20
21
|
if (authMode !== 'none') {
|
|
21
22
|
try {
|
|
22
23
|
if (authMode === 'admin') await requireAdmin(event)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GET /api/system/backup/list —— 备份清单(admin):库快照文件 + JSON/配置束目录。
|
|
3
|
+
* 只列文件名与大小/时间,不回传内容;恢复操作 = 停实例后由运维手工替换(安全优先不给在线恢复 API)。
|
|
4
|
+
*/
|
|
5
|
+
import { readdirSync, statSync } from 'node:fs'
|
|
6
|
+
import { resolve } from 'node:path'
|
|
7
|
+
import { defineApiHandler } from '../../../utils/response'
|
|
8
|
+
import { requireAdmin } from '../../workshop/caller'
|
|
9
|
+
import { ensureDataDir } from '@/shared/config/home.mjs'
|
|
10
|
+
|
|
11
|
+
export default defineApiHandler(async (event) => {
|
|
12
|
+
requireAdmin(event)
|
|
13
|
+
const backupDir = resolve(ensureDataDir(), 'backups')
|
|
14
|
+
let entries: Array<{ name: string, kind: 'db' | 'files', bytes: number, mtime: string }> = []
|
|
15
|
+
try {
|
|
16
|
+
entries = readdirSync(backupDir, { withFileTypes: true }).flatMap((e) => {
|
|
17
|
+
const full = resolve(backupDir, e.name)
|
|
18
|
+
try {
|
|
19
|
+
const st = statSync(full)
|
|
20
|
+
return [{
|
|
21
|
+
name: e.name,
|
|
22
|
+
kind: (e.isDirectory() ? 'files' : 'db') as 'db' | 'files',
|
|
23
|
+
bytes: st.size,
|
|
24
|
+
mtime: st.mtime.toISOString(),
|
|
25
|
+
}]
|
|
26
|
+
}
|
|
27
|
+
catch { return [] }
|
|
28
|
+
}).sort((a, b) => b.mtime.localeCompare(a.mtime))
|
|
29
|
+
}
|
|
30
|
+
catch { /* 备份目录尚不存在 = 还没备过 */ }
|
|
31
|
+
return { backupDir, count: entries.length, entries: entries.slice(0, 200) }
|
|
32
|
+
})
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /api/system/backup/run —— 手动触发一次全量备份(admin)。
|
|
3
|
+
* 复用 server/plugins/backup.ts 的 backupOnce(三库在线快照 + JSON/配置面 + 保留轮转),
|
|
4
|
+
* 成败均落 audit_log(system.backup.*)。
|
|
5
|
+
*/
|
|
6
|
+
import { defineApiHandler } from '../../../utils/response'
|
|
7
|
+
import { requireAdmin } from '../../workshop/caller'
|
|
8
|
+
import { AppError } from '../../../utils/errors'
|
|
9
|
+
|
|
10
|
+
export default defineApiHandler(async (event) => {
|
|
11
|
+
requireAdmin(event)
|
|
12
|
+
const { backupOnce } = await import('../../../plugins/backup')
|
|
13
|
+
const { ensureDataDir } = await import('@/shared/config/home.mjs')
|
|
14
|
+
try {
|
|
15
|
+
await backupOnce(ensureDataDir())
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
throw new AppError(500, 'BACKUP_FAILED', `备份失败: ${err instanceof Error ? err.message : String(err)}`)
|
|
19
|
+
}
|
|
20
|
+
return { ok: true, at: new Date().toISOString() }
|
|
21
|
+
})
|
|
@@ -10,13 +10,23 @@ import { readBody } from 'h3'
|
|
|
10
10
|
import { defineApiHandler } from '../../../utils/response'
|
|
11
11
|
import { requireRole } from '../../workshop/caller'
|
|
12
12
|
import { getSystemConfigService } from '../../../services/system-config'
|
|
13
|
+
import { recordOps } from '../../../services/workshop/ops/ops'
|
|
13
14
|
|
|
14
15
|
export default defineApiHandler(async (event) => {
|
|
15
|
-
requireRole(event, ['admin'])
|
|
16
|
+
const user = requireRole(event, ['admin'])
|
|
16
17
|
const body = (await readBody<Record<string, unknown>>(event)) ?? {}
|
|
17
18
|
const overrides = body.override ?? body.overrides ?? body
|
|
18
19
|
if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides)) {
|
|
19
20
|
return { ok: false, message: '请求体应为 { "override": { key: value } }' }
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
const res = getSystemConfigService().patch(overrides as Record<string, unknown>)
|
|
23
|
+
// 高危管理面留痕:改了哪些键(值不落审计——可能含凭据),谁改的
|
|
24
|
+
if (res.changed?.length) {
|
|
25
|
+
recordOps({
|
|
26
|
+
actor: user.id, actorName: user.name, actorKind: 'user',
|
|
27
|
+
action: 'system.settings.update', kind: 'system',
|
|
28
|
+
summary: `运行时设置变更:${res.changed.join(', ')}`,
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
return { ok: true, ...res }
|
|
22
32
|
})
|