agentworkshop 0.8.5 → 0.8.6
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.en.json +3 -3
- package/.AgentWorkShop/prompts/host-tools.json +14 -4
- package/.output/.AgentWorkShop/prompts/host-tools.en.json +3 -3
- package/.output/.AgentWorkShop/prompts/host-tools.json +14 -4
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{U_n8pryv2.js → 7op-BMk82.js} +1 -1
- package/.output/public/_nuxt/{zWZ26UWi.js → B1SIgyrl.js} +1 -1
- package/.output/public/_nuxt/{C4tXwpSt.js → BA2lmfW4.js} +1 -1
- package/.output/public/_nuxt/{EJkmXP432.js → BDXQqSkl2.js} +1 -1
- package/.output/public/_nuxt/{CY_7u1ST2.js → BI9jj13f2.js} +1 -1
- package/.output/public/_nuxt/{CGf9neEK2.js → BiXqyYNw2.js} +1 -1
- package/.output/public/_nuxt/{D9GoOkyP2.js → BlOm8JIs2.js} +1 -1
- package/.output/public/_nuxt/{CQ31GiJU2.js → BoXKUOiN2.js} +1 -1
- package/.output/public/_nuxt/{DZzbCFY2.js → BuLoPmcf.js} +1 -1
- package/.output/public/_nuxt/{D9ppMCbw.js → BwOK42JQ.js} +1 -1
- package/.output/public/_nuxt/{CZJ5cw6r2.js → C1RMfPoB2.js} +1 -1
- package/.output/public/_nuxt/{CGviZq4E.js → COfo_Bg3.js} +1 -1
- package/.output/public/_nuxt/CTGJHZ8X2.js +1 -0
- package/.output/public/_nuxt/{SgsmmrsZ.js → CY2NkFvI.js} +1 -1
- package/.output/public/_nuxt/{B4GOTVfN.js → C_4mzQ5X.js} +1 -1
- package/.output/public/_nuxt/{DGmFHb7m.js → CdvMP3lv.js} +1 -1
- package/.output/public/_nuxt/{iqxZGXsY.js → CooauJ7D.js} +1 -1
- package/.output/public/_nuxt/{C3vxePED.js → D1eVi1zr.js} +1 -1
- package/.output/public/_nuxt/{DnuJ66Jy.js → D6PUmBb0.js} +1 -1
- package/.output/public/_nuxt/{BBhroEeN.js → DC8sMA36.js} +1 -1
- package/.output/public/_nuxt/{DOUuGOQR2.js → DDHh85c42.js} +1 -1
- package/.output/public/_nuxt/{Cy_HDgSl.js → DDXOfmo2.js} +2 -2
- package/.output/public/_nuxt/{Cr2xJ_CY.js → DMFwLxfu.js} +1 -1
- package/.output/public/_nuxt/{BZg_MIK42.js → DoprKJ5a2.js} +1 -1
- package/.output/public/_nuxt/{BzBBEE-o2.js → Dr1FVeQG2.js} +1 -1
- package/.output/public/_nuxt/{W0sNnJQh.js → DtnsTW7e.js} +1 -1
- package/.output/public/_nuxt/{gUYi1hLJ2.js → DxDqd6T42.js} +1 -1
- package/.output/public/_nuxt/{B0UUODeh.js → DzU3zEKX.js} +1 -1
- package/.output/public/_nuxt/{BkO5WdX5.js → EgO70wrE.js} +1 -1
- package/.output/public/_nuxt/{7OZQiw002.js → HJKu4eEV2.js} +1 -1
- package/.output/public/_nuxt/{ChF6qLpY2.js → K5Xen0wZ2.js} +1 -1
- package/.output/public/_nuxt/{CNrRZmSx2.js → Rb4o4o-82.js} +1 -1
- package/.output/public/_nuxt/{BqBTlfiz.js → Tf6SJSDj.js} +1 -1
- package/.output/public/_nuxt/{DJaGVY4v2.js → ZzOyoXex2.js} +1 -1
- package/.output/public/_nuxt/{PbzVdCTA2.js → azOGy_tU2.js} +1 -1
- package/.output/public/_nuxt/{D1thFC3z.js → be-4wyTo.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/593b65bd-cf1d-4b7f-a993-57e939c38f36.json +1 -0
- package/.output/public/_nuxt/{8b9CKi6F.js → dcjPjLPI.js} +1 -1
- package/.output/public/_nuxt/{ae2-5ZPt.js → h-Fn7pRD.js} +1 -1
- package/.output/public/_nuxt/{-gy9k_TE2.js → hyLdZsOd2.js} +1 -1
- package/.output/public/_nuxt/{BHxG41IQ2.js → o8sYG6xx2.js} +1 -1
- package/.output/server/chunks/_/access.mjs +1 -1
- package/.output/server/chunks/_/agent-dto.mjs +26 -0
- package/.output/server/chunks/_/agent-dto.mjs.map +1 -0
- package/.output/server/chunks/_/data-export.mjs +6 -6
- package/.output/server/chunks/_/data-query.mjs +3 -3
- package/.output/server/chunks/_/eda-run.repo.mjs +2 -2
- package/.output/server/chunks/_/features.mjs +5 -5
- package/.output/server/chunks/_/golden.mjs +3 -3
- package/.output/server/chunks/_/harness-spawn-policy.mjs +77 -0
- package/.output/server/chunks/_/harness-spawn-policy.mjs.map +1 -0
- package/.output/server/chunks/_/index.mjs +1 -1
- package/.output/server/chunks/_/line-scope.mjs +32 -0
- package/.output/server/chunks/_/line-scope.mjs.map +1 -0
- package/.output/server/chunks/_/mes-console.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +2429 -1726
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/ocap.mjs +1 -1
- package/.output/server/chunks/_/rest-auth.mjs +1 -1
- package/.output/server/chunks/_/spc.mjs +1 -1
- package/.output/server/chunks/build/TownView-BWMDbosY.mjs +1 -1
- package/.output/server/chunks/build/daq-CdxcfY_G.mjs +1 -1
- package/.output/server/chunks/build/dcw-BlDQtS4q.mjs +1 -1
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
- package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs +1 -1
- package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +1 -1
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
- package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +17 -9
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +3 -0
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +6 -0
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +5 -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/index.get.mjs +5 -2
- 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 +7 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +8 -6
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +29 -49
- package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs.map +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_.patch.mjs +6 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +14 -5
- 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 -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 +7 -4
- 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 -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 +6 -2
- 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 +6 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +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 +6 -1
- 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 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +7 -4
- 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 -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 +6 -2
- 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 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +7 -4
- 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 -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 +6 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +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 +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/mes-artifacts/file.get.mjs +6 -2
- package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.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 +6 -2
- 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 +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +5 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +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/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +7 -3
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +8 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +6 -2
- 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 -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 +7 -4
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +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.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +8 -3
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +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/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/solve.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/process-model/datasets.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/train.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/tools/sync.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +4 -2
- package/README.md +9 -2
- package/config.yml +1 -1
- package/docker-compose.yml +4 -2
- package/docs/cli.en.md +2 -2
- package/docs/cli.md +2 -2
- package/docs/plugins.en.md +1 -1
- package/docs/plugins.md +1 -1
- package/docs/sdk.en.md +1 -1
- package/docs/sdk.md +1 -1
- package/package.json +1 -1
- package/scripts/_audit/_live-mqtt-e2e-20261028.mjs +219 -0
- package/scripts/_audit/prompt-injection-probe.mts +76 -0
- package/scripts/api-live-e2e.mjs +9 -3
- package/scripts/e2e-multiexpert-remediation-real.mjs +453 -0
- package/scripts/e2e-node-binding-3mode-real.mjs +697 -0
- package/scripts/e2e-node-binding-authz.mjs +332 -0
- package/scripts/security-acceptance.mjs +218 -0
- package/server/api/workshop/agent-tools/bindings/index.post.ts +33 -17
- package/server/api/workshop/agents/[id].patch.ts +3 -0
- package/server/api/workshop/agents/index.post.ts +3 -0
- package/server/api/workshop/channel-templates/[id].patch.ts +5 -0
- package/server/api/workshop/channel-templates/index.post.ts +6 -0
- package/server/api/workshop/channels/[id]/agents/[agentId].patch.ts +5 -0
- package/server/api/workshop/channels/[id]/agents/index.get.ts +8 -2
- package/server/api/workshop/channels/[id]/agents/index.post.ts +7 -0
- package/server/api/workshop/channels/[id]/index.get.ts +10 -4
- package/server/api/workshop/channels.post.ts +3 -0
- package/server/api/workshop/daq/[id]/ingest.post.ts +26 -22
- package/server/api/workshop/daq/[id].patch.ts +8 -0
- package/server/api/workshop/daq/alarms.get.ts +18 -16
- package/server/api/workshop/daq/infra/reconnect.post.ts +21 -5
- package/server/api/workshop/daq/test-driver.post.ts +10 -3
- package/server/api/workshop/dcw/[id]/param-ledger.get.ts +7 -1
- package/server/api/workshop/dcw/[id]/read.post.ts +6 -1
- package/server/api/workshop/dcw/[id].patch.ts +49 -40
- package/server/api/workshop/dcw/journal/index.get.ts +7 -3
- package/server/api/workshop/dcw/mes-artifacts/file.get.ts +7 -1
- package/server/api/workshop/dcw/mes-artifacts/index.get.ts +7 -1
- package/server/api/workshop/dcw/optimizations/[id]/series.get.ts +6 -1
- package/server/api/workshop/dcw/optimizations/[id].get.ts +3 -1
- package/server/api/workshop/dcw/optimizations/index.get.ts +6 -3
- package/server/api/workshop/dcw/params/[id]/read.post.ts +22 -17
- package/server/api/workshop/dcw/recipes/[id]/versions.get.ts +20 -14
- package/server/api/workshop/dcw/recipes/[id].delete.ts +33 -25
- package/server/api/workshop/dcw/recipes/index.get.ts +17 -12
- package/server/api/workshop/dcw/runs/[id]/close.post.ts +21 -15
- package/server/api/workshop/dcw/test-driver.post.ts +21 -16
- package/server/api/workshop/ws/hub.ts +2 -1
- package/server/plugins/01-instance-guard.ts +82 -0
- package/server/plugins/daq.ts +40 -8
- package/server/plugins/workshop.ts +12 -0
- package/server/services/workshop/agents/adapters/line-spawn.ts +24 -1
- package/server/services/workshop/agents/agent-dto.ts +54 -0
- package/server/services/workshop/agents/harness-spawn-policy.ts +114 -0
- package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +22 -0
- package/server/services/workshop/agents/host-tool-bridge/index.ts +1 -1
- package/server/services/workshop/agents/host-tool-bridge/per-agent.ts +17 -3
- package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +1 -1
- package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +5 -1
- package/server/services/workshop/agents/industrial/dcw-tools.ts +6 -2
- package/server/services/workshop/agents/industrial/ops-tools.ts +54 -12
- package/server/services/workshop/agents/industrial/recipe-gate.ts +68 -15
- package/server/services/workshop/agents/industrial/tool-verify-legacy-specs.ts +2 -2
- package/server/services/workshop/agents/industrial/tool-verify.ts +31 -2
- package/server/services/workshop/agents/node-bindings.repo.ts +4 -3
- package/server/services/workshop/agents/node-delegation.ts +49 -4
- package/server/services/workshop/agents/tool-approvals.ts +23 -0
- package/server/services/workshop/agents/tool-reference-spec.ts +3 -0
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +12 -0
- package/server/services/workshop/daq/daq-controller/crud.ts +5 -3
- package/server/services/workshop/daq/daq-controller/ingest.ts +23 -0
- package/server/services/workshop/daq/daq-controller/push.ts +24 -3
- package/server/services/workshop/daq/daq-controller/runtime-control.ts +6 -0
- package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +3 -1
- package/server/services/workshop/daq/daq-controller/tsdb-twin.ts +21 -1
- package/server/services/workshop/daq/daq-node.repo.ts +10 -7
- package/server/services/workshop/daq/daq-node.ts +2 -0
- package/server/services/workshop/daq/daq-runtime.ts +10 -2
- package/server/services/workshop/daq/drivers/modbus-tcp.ts +8 -5
- package/server/services/workshop/daq/drivers/registry.ts +5 -4
- package/server/services/workshop/daq/infra.ts +13 -0
- package/server/services/workshop/daq/ingest-policy.ts +24 -1
- package/server/services/workshop/daq/storage/timescale.adapter.ts +42 -3
- package/server/services/workshop/db/database/migrations.ts +83 -68
- package/server/services/workshop/dcw/dcw-controller/crud.ts +27 -2
- package/server/services/workshop/dcw/dcw-controller/lines.ts +14 -3
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +63 -5
- package/server/services/workshop/dcw/dcw-recipe.repo.ts +10 -1
- package/server/services/workshop/dcw/dcw-runtime.ts +37 -14
- package/server/services/workshop/dcw/drivers/shared.ts +62 -6
- package/server/services/workshop/dcw/recipe-op-anchor.ts +28 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/rollback.ts +204 -190
- package/server/services/workshop/dcw/recipe-rollback-manager/sweep.ts +97 -77
- package/server/services/workshop/line-scope.ts +80 -0
- package/server/services/workshop/optimization/dispatch.service.ts +18 -2
- package/server/services/workshop/permissions.ts +2 -0
- package/server/services/workshop/runtime/agent-runtime/message.ts +17 -0
- package/server/services/workshop/runtime/agent-runtime/state.ts +9 -3
- package/server/services/workshop/runtime/agent-runtime/types.ts +2 -1
- package/server/services/workshop/runtime/channel-runtime.ts +3 -1
- package/server/services/workshop/runtime/mailbox.ts +6 -3
- package/server/services/workshop/runtime/manager/a2a.ts +4 -2
- package/server/services/workshop/runtime/manager/admin-channel.ts +1 -1
- package/server/services/workshop/runtime/manager/chat.ts +3 -1
- package/server/services/workshop/runtime/manager/host-tools.ts +1 -1
- package/server/services/workshop/runtime/manager/runtime-wiring.ts +31 -19
- package/server/services/workshop/runtime/manager/state.ts +43 -1
- package/server/services/workshop/runtime/permission-scope.ts +21 -0
- package/server/services/workshop/runtime/scheduler-loop/tick.ts +16 -4
- package/server/services/workshop/scene-events.ts +19 -0
- package/shared/daq-protocol.ts +24 -5
- package/shared/dcw-protocol/catalog.ts +4 -4
- package/.output/public/_nuxt/CCI-fwcS2.js +0 -1
- package/.output/public/_nuxt/builds/meta/5cd11284-05bf-4fcd-9a69-56a01c9f56dd.json +0 -1
package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs
CHANGED
|
@@ -51,7 +51,7 @@ const instantiate_post = defineApiHandler(async (event) => {
|
|
|
51
51
|
if (body.bindLineId) {
|
|
52
52
|
await manager.bindChannelLine(result.channelId, body.bindLineId);
|
|
53
53
|
}
|
|
54
|
-
const { ensureStream } = await import('../../../../../_/nitro.mjs').then(function (n) { return n.
|
|
54
|
+
const { ensureStream } = await import('../../../../../_/nitro.mjs').then(function (n) { return n.dD; });
|
|
55
55
|
ensureStream(manager, result.channelId);
|
|
56
56
|
return result;
|
|
57
57
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { d as defineApiHandler, f as getRouterParam, H as readValidatedBody, I as zValidator, g as getWorkshopManager, A as AppError } from '../../../../_/nitro.mjs';
|
|
3
3
|
import { resolveUser } from '../caller.mjs';
|
|
4
|
+
import { a as assertSpawnConfigAllowed } from '../../../../_/harness-spawn-policy.mjs';
|
|
4
5
|
import 'node:crypto';
|
|
5
6
|
import 'node:http';
|
|
6
7
|
import 'node:https';
|
|
@@ -47,6 +48,7 @@ const patchSchema = z.object({
|
|
|
47
48
|
visibility: z.enum(["private", "public"]).optional()
|
|
48
49
|
});
|
|
49
50
|
const _id__patch = defineApiHandler(async (event) => {
|
|
51
|
+
var _a;
|
|
50
52
|
const templateId = getRouterParam(event, "id");
|
|
51
53
|
const user = resolveUser(event);
|
|
52
54
|
const body = await readValidatedBody(event, zValidator(patchSchema));
|
|
@@ -54,6 +56,10 @@ const _id__patch = defineApiHandler(async (event) => {
|
|
|
54
56
|
const tpl = manager.getChannelTemplate(templateId);
|
|
55
57
|
if (!tpl) throw new AppError(404, "NOT_FOUND", `Channel \u6A21\u677F\u4E0D\u5B58\u5728: ${templateId}`);
|
|
56
58
|
manager.requireWritable(tpl.ownerUserId, user, "Channel \u6A21\u677F");
|
|
59
|
+
if (body.lead) assertSpawnConfigAllowed(body.lead.harness, body.lead.config, user);
|
|
60
|
+
for (const m of (_a = body.members) != null ? _a : []) {
|
|
61
|
+
if ("inline" in m) assertSpawnConfigAllowed(m.inline.harness, m.inline.config, user);
|
|
62
|
+
}
|
|
57
63
|
return manager.updateChannelTemplate(templateId, body);
|
|
58
64
|
});
|
|
59
65
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_id_.patch.mjs","sources":["../../../../../../../server/api/workshop/channel-templates/[id].patch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_id_.patch.mjs","sources":["../../../../../../../server/api/workshop/channel-templates/[id].patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { d as defineApiHandler, f as getRouterParam, r as readBody, g as getWorkshopManager, A as AppError } from '../../../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../../../caller.mjs';
|
|
3
|
+
import { a as assertSpawnConfigAllowed } from '../../../../../../_/harness-spawn-policy.mjs';
|
|
3
4
|
import 'node:crypto';
|
|
4
5
|
import 'node:http';
|
|
5
6
|
import 'node:https';
|
|
@@ -32,6 +33,10 @@ const _agentId__patch = defineApiHandler(async (event) => {
|
|
|
32
33
|
manager.requireWritable(channel.ownerUserId, user, "channel");
|
|
33
34
|
const members = await manager.listChannelAgents(channelId);
|
|
34
35
|
if (!members.some((a) => a.id === agentId)) throw new AppError(404, "NOT_FOUND", `\u6210\u5458\u4E0D\u5B58\u5728: ${agentId}`);
|
|
36
|
+
if (body == null ? void 0 : body.config) {
|
|
37
|
+
const member = members.find((a) => a.id === agentId);
|
|
38
|
+
assertSpawnConfigAllowed(member.harness, body.config, user);
|
|
39
|
+
}
|
|
35
40
|
const patch = {};
|
|
36
41
|
if (typeof (body == null ? void 0 : body.name) === "string" && body.name.trim()) patch.name = body.name.trim();
|
|
37
42
|
if ((body == null ? void 0 : body.config) && typeof body.config === "object") patch.config = body.config;
|
package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_agentId_.patch.mjs","sources":["../../../../../../../../../server/api/workshop/channels/[id]/agents/[agentId].patch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_agentId_.patch.mjs","sources":["../../../../../../../../../server/api/workshop/channels/[id]/agents/[agentId].patch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAYA,wBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAC/C,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,EAAO,SAAS,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAiG,KAAK,CAAA;AACzH,EAAA,MAAM,UAAU,kBAAA,EAAmB;AACnC,EAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,iBAAA,CAAkB,SAAA,EAAW,KAAK,EAAE,CAAA;AAC5D,EAAA,OAAA,CAAQ,eAAA,CAAgB,OAAA,CAAQ,WAAA,EAAa,IAAA,EAAM,SAAS,CAAA;AAC5D,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,iBAAA,CAAkB,SAAS,CAAA;AACzD,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,EAAA,KAAO,OAAO,CAAA,EAAG,MAAM,IAAI,QAAA,CAAS,GAAA,EAAK,WAAA,EAAa,CAAA,gCAAA,EAAU,OAAO,CAAA,CAAE,CAAA;AAClG,EAAA,IAAI,6BAAM,MAAA,EAAQ;AAChB,IAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AACjD,IAAA,wBAAA,CAAyB,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAA;AAAA,EAC5D;AACA,EAAA,MAAM,QAA+E,EAAC;AACtF,EAAA,IAAI,QAAO,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,IAAA,CAAA,KAAS,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,EAAG,KAAA,CAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK;AACpF,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,WAAU,OAAO,IAAA,CAAK,WAAW,QAAA,EAAU,KAAA,CAAM,SAAS,IAAA,CAAK,MAAA;AACzE,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,aAAY,CAAA,IAAA,CAAK,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,aAAY,CAAA,EAAG,KAAA,CAAM,UAAU,IAAA,CAAK,OAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,kBAAA,CAAmB,OAAA,EAAS,KAAA,EAAO,EAAE,SAAA,EAAW,EAAA,EAAI,MAAA,EAAQ,MAAA,EAAQ,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,QAAQ,CAAA;AAC9G,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,CAAM,EAAA,EAAI,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,OAAA,EAAS,KAAA,CAAM,OAAA,EAAS,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK;AACzF,CAAC,CAAA;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { d as defineApiHandler, f as getRouterParam, g as getWorkshopManager, A as AppError } from '../../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser, resolveCallerOrNull } from '../../caller.mjs';
|
|
3
|
+
import { c as channelAgentSummaries } from '../../../../../_/agent-dto.mjs';
|
|
3
4
|
import 'node:crypto';
|
|
4
5
|
import 'node:http';
|
|
5
6
|
import 'node:https';
|
|
@@ -25,8 +26,9 @@ import 'node:readline';
|
|
|
25
26
|
const index_get = defineApiHandler(async (event) => {
|
|
26
27
|
const channelId = getRouterParam(event, "id");
|
|
27
28
|
const manager = getWorkshopManager();
|
|
29
|
+
let user = null;
|
|
28
30
|
try {
|
|
29
|
-
|
|
31
|
+
user = resolveUser(event);
|
|
30
32
|
manager.getChannelForUser(channelId, user.id);
|
|
31
33
|
} catch (err) {
|
|
32
34
|
const caller = resolveCallerOrNull(event);
|
|
@@ -34,7 +36,8 @@ const index_get = defineApiHandler(async (event) => {
|
|
|
34
36
|
}
|
|
35
37
|
const channel = (await manager.listChannels()).find((c) => c.id === channelId);
|
|
36
38
|
if (!channel) throw new AppError(404, "NOT_FOUND", `channel \u4E0D\u5B58\u5728: ${channelId}`);
|
|
37
|
-
|
|
39
|
+
const includeConfig = Boolean(user && (user.role === "admin" || channel.ownerUserId === user.id));
|
|
40
|
+
return channelAgentSummaries(await manager.listChannelAgents(channelId), { includeConfig });
|
|
38
41
|
});
|
|
39
42
|
|
|
40
43
|
export { index_get as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.get.mjs","sources":["../../../../../../../../server/api/workshop/channels/[id]/agents/index.get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.get.mjs","sources":["../../../../../../../../server/api/workshop/channels/[id]/agents/index.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,kBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAC/C,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,IAAI,CAAA;AAC5C,EAAA,MAAM,UAAU,kBAAA,EAAmB;AAEnC,EAAA,IAAI,IAAA,GAA4C,IAAA;AAChD,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,YAAY,KAAK,CAAA;AACxB,IAAA,OAAA,CAAQ,iBAAA,CAAkB,SAAA,EAAW,IAAA,CAAK,EAAE,CAAA;AAAA,EAC9C,SACO,GAAA,EAAK;AACV,IAAA,MAAM,MAAA,GAAS,oBAAoB,KAAK,CAAA;AACxC,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,SAAA,KAAc,WAAW,MAAM,GAAA;AAAA,EACvD;AACA,EAAA,MAAM,OAAA,GAAA,CAAW,MAAM,OAAA,CAAQ,YAAA,IAAgB,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,EAAA,KAAO,SAAS,CAAA;AAC3E,EAAA,IAAI,CAAC,SAAS,MAAM,IAAI,SAAS,GAAA,EAAK,WAAA,EAAa,CAAA,4BAAA,EAAgB,SAAS,CAAA,CAAE,CAAA;AAC9E,EAAA,MAAM,aAAA,GAAgB,QAAQ,IAAA,KAAS,IAAA,CAAK,SAAS,OAAA,IAAW,OAAA,CAAQ,WAAA,KAAgB,IAAA,CAAK,EAAA,CAAG,CAAA;AAChG,EAAA,OAAO,qBAAA,CAAsB,MAAM,OAAA,CAAQ,iBAAA,CAAkB,SAAS,CAAA,EAAG,EAAE,eAAe,CAAA;AAC5F,CAAC,CAAA;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { resolveUser } from '../../caller.mjs';
|
|
3
3
|
import { d as defineApiHandler, f as getRouterParam, H as readValidatedBody, I as zValidator, g as getWorkshopManager, A as AppError, aJ as ensureLeadSchedulerLoop } from '../../../../../_/nitro.mjs';
|
|
4
|
+
import { a as assertSpawnConfigAllowed } from '../../../../../_/harness-spawn-policy.mjs';
|
|
4
5
|
import 'node:crypto';
|
|
5
6
|
import 'node:http';
|
|
6
7
|
import 'node:https';
|
|
@@ -30,7 +31,7 @@ const createAgentSchema = z.object({
|
|
|
30
31
|
config: z.record(z.string(), z.unknown()).optional()
|
|
31
32
|
});
|
|
32
33
|
const index_post = defineApiHandler(async (event) => {
|
|
33
|
-
var _a;
|
|
34
|
+
var _a, _b;
|
|
34
35
|
const channelId = getRouterParam(event, "id");
|
|
35
36
|
const user = resolveUser(event);
|
|
36
37
|
const body = await readValidatedBody(event, zValidator(createAgentSchema));
|
|
@@ -40,6 +41,11 @@ const index_post = defineApiHandler(async (event) => {
|
|
|
40
41
|
const ch = manager.getChannelForUser(channelId, user.id);
|
|
41
42
|
manager.requireWritable(ch.ownerUserId, user, "channel");
|
|
42
43
|
const role = (_a = body.role) != null ? _a : "worker";
|
|
44
|
+
if (body.harness) assertSpawnConfigAllowed(body.harness, body.config, user);
|
|
45
|
+
else if (body.config) {
|
|
46
|
+
const tplHarness = body.agentId ? (_b = manager.getAgent(body.agentId)) == null ? void 0 : _b.harness : void 0;
|
|
47
|
+
if (tplHarness) assertSpawnConfigAllowed(tplHarness, body.config, user);
|
|
48
|
+
}
|
|
43
49
|
if (body.agentId) {
|
|
44
50
|
const tpl = manager.getAgent(body.agentId);
|
|
45
51
|
if (!tpl) throw new AppError(404, "NOT_FOUND", `Agent \u6A21\u677F\u4E0D\u5B58\u5728: ${body.agentId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.post.mjs","sources":["../../../../../../../../server/api/workshop/channels/[id]/agents/index.post.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.post.mjs","sources":["../../../../../../../../server/api/workshop/channels/[id]/agents/index.post.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { d as defineApiHandler, f as getRouterParam, g as getWorkshopManager, aJ as ensureLeadSchedulerLoop } from '../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../caller.mjs';
|
|
3
|
+
import { c as channelAgentSummaries } from '../../../../_/agent-dto.mjs';
|
|
3
4
|
import 'node:crypto';
|
|
4
5
|
import 'node:http';
|
|
5
6
|
import 'node:https';
|
|
@@ -29,7 +30,8 @@ const index_get = defineApiHandler(async (event) => {
|
|
|
29
30
|
manager.getChannelForUser(channelId, user.id);
|
|
30
31
|
const channel = await manager.getChannel(channelId);
|
|
31
32
|
ensureLeadSchedulerLoop(manager, channelId);
|
|
32
|
-
|
|
33
|
+
const includeConfig = user.role === "admin" || channel.ownerUserId === user.id;
|
|
34
|
+
return { ...channel, agents: channelAgentSummaries(channel.agents, { includeConfig }) };
|
|
33
35
|
});
|
|
34
36
|
|
|
35
37
|
export { index_get as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.get.mjs","sources":["../../../../../../../server/api/workshop/channels/[id]/index.get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.get.mjs","sources":["../../../../../../../server/api/workshop/channels/[id]/index.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAaA,kBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAC/C,EAAA,MAAM,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,IAAI,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,EAAA,MAAM,UAAU,kBAAA,EAAmB;AACnC,EAAA,OAAA,CAAQ,iBAAA,CAAkB,SAAA,EAAW,IAAA,CAAK,EAAE,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA;AAElD,EAAA,uBAAA,CAAwB,SAAS,SAAS,CAAA;AAC1C,EAAA,MAAM,gBAAgB,IAAA,CAAK,IAAA,KAAS,OAAA,IAAW,OAAA,CAAQ,gBAAgB,IAAA,CAAK,EAAA;AAC5E,EAAA,OAAO,EAAE,GAAG,OAAA,EAAS,MAAA,EAAQ,qBAAA,CAAsB,QAAQ,MAAA,EAAQ,EAAE,aAAA,EAAe,CAAA,EAAE;AACxF,CAAC,CAAA;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { resolveUser } from './caller.mjs';
|
|
3
3
|
import { d as defineApiHandler, H as readValidatedBody, I as zValidator, g as getWorkshopManager, aJ as ensureLeadSchedulerLoop } from '../../../_/nitro.mjs';
|
|
4
|
+
import { a as assertSpawnConfigAllowed } from '../../../_/harness-spawn-policy.mjs';
|
|
4
5
|
import 'node:crypto';
|
|
5
6
|
import 'node:http';
|
|
6
7
|
import 'node:https';
|
|
@@ -45,6 +46,7 @@ const createChannelSchema = z.object({
|
|
|
45
46
|
const channels_post = defineApiHandler(async (event) => {
|
|
46
47
|
const user = resolveUser(event);
|
|
47
48
|
const body = await readValidatedBody(event, zValidator(createChannelSchema));
|
|
49
|
+
if (body.leadAgent) assertSpawnConfigAllowed(body.leadAgent.harness, body.leadAgent.config, user);
|
|
48
50
|
const manager = getWorkshopManager();
|
|
49
51
|
const result = await manager.createChannel({
|
|
50
52
|
name: body.name,
|
|
@@ -55,25 +57,25 @@ const channels_post = defineApiHandler(async (event) => {
|
|
|
55
57
|
ownerUserId: user.id
|
|
56
58
|
});
|
|
57
59
|
if (Array.isArray(body.plugins) && body.plugins.length) {
|
|
58
|
-
const { getPluginHost, pluginManifest } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
60
|
+
const { getPluginHost, pluginManifest } = await import('../../../_/nitro.mjs').then(function (n) { return n.dq; });
|
|
59
61
|
const registered = new Set(getPluginHost() ? pluginManifest().filter((p) => p.enabled).map((p) => p.name) : []);
|
|
60
|
-
const { getChannelPluginsRepo } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
62
|
+
const { getChannelPluginsRepo } = await import('../../../_/nitro.mjs').then(function (n) { return n.dE; });
|
|
61
63
|
getChannelPluginsRepo().setMany(
|
|
62
64
|
result.channelId,
|
|
63
65
|
body.plugins.filter((p) => p && typeof p.name === "string" && registered.has(p.name))
|
|
64
66
|
);
|
|
65
67
|
}
|
|
66
68
|
if (body.lineId) {
|
|
67
|
-
const { requireLineMode } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
68
|
-
const { getDcwLineRepo } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
69
|
+
const { requireLineMode } = await import('../../../_/nitro.mjs').then(function (n) { return n.dC; });
|
|
70
|
+
const { getDcwLineRepo } = await import('../../../_/nitro.mjs').then(function (n) { return n.dx; });
|
|
69
71
|
if (!getDcwLineRepo().byId(body.lineId)) {
|
|
70
|
-
const { AppError, ErrorCodes } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
72
|
+
const { AppError, ErrorCodes } = await import('../../../_/nitro.mjs').then(function (n) { return n.dp; });
|
|
71
73
|
throw new AppError(404, ErrorCodes.NOT_FOUND, `\u4EA7\u7EBF\u4E0D\u5B58\u5728: ${body.lineId}`);
|
|
72
74
|
}
|
|
73
75
|
requireLineMode(user, body.lineId, "readonly");
|
|
74
76
|
await manager.bindChannelLine(result.channelId, body.lineId);
|
|
75
77
|
}
|
|
76
|
-
const { ensureStream } = await import('../../../_/nitro.mjs').then(function (n) { return n.
|
|
78
|
+
const { ensureStream } = await import('../../../_/nitro.mjs').then(function (n) { return n.dD; });
|
|
77
79
|
ensureStream(manager, result.channelId);
|
|
78
80
|
if (result.leadAgentId) {
|
|
79
81
|
ensureLeadSchedulerLoop(manager, result.channelId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels.post.mjs","sources":["../../../../../../server/api/workshop/channels.post.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channels.post.mjs","sources":["../../../../../../server/api/workshop/channels.post.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d as defineApiHandler, f as getRouterParam, a2 as getDaqController, A as AppError, a9 as getHeader, C as recordOps, cH as findDaqTemplate, r as readBody, cI as daqObjectKey, cJ as getObjectStore, b9 as getDaqQueue } from '../../../../../_/nitro.mjs';
|
|
1
|
+
import { d as defineApiHandler, f as getRouterParam, a2 as getDaqController, A as AppError, b4 as ingestAuthMode, a9 as getHeader, b5 as isWideBackfillWindow, b6 as ingestBackfillWindowMs, C as recordOps, b7 as findDaqTemplate, r as readBody, b8 as ingestTimeVerdict, b9 as ingestFutureSkewMs, ba as getDaqQueue } from '../../../../../_/nitro.mjs';
|
|
3
2
|
import { resolveUser } from '../../caller.mjs';
|
|
3
|
+
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
5
5
|
import 'node:https';
|
|
6
6
|
import 'node:events';
|
|
@@ -22,29 +22,6 @@ import 'node:util';
|
|
|
22
22
|
import 'node:v8';
|
|
23
23
|
import 'node:readline';
|
|
24
24
|
|
|
25
|
-
const DEFAULT_BACKFILL_MS = 36e5;
|
|
26
|
-
const MAX_BACKFILL_MS = 7 * 24 * 36e5;
|
|
27
|
-
const WIDE_WINDOW_THRESHOLD_MS = 36e5;
|
|
28
|
-
function ingestBackfillWindowMs(env = process.env) {
|
|
29
|
-
const rawEnv = env.AW_DAQ_INGEST_BACKFILL_MS;
|
|
30
|
-
if (rawEnv === void 0 || String(rawEnv).trim() === "") return DEFAULT_BACKFILL_MS;
|
|
31
|
-
const raw = Number(rawEnv);
|
|
32
|
-
if (!Number.isFinite(raw) || raw < 0) return DEFAULT_BACKFILL_MS;
|
|
33
|
-
return Math.min(raw, MAX_BACKFILL_MS);
|
|
34
|
-
}
|
|
35
|
-
function isWideBackfillWindow(env = process.env) {
|
|
36
|
-
return ingestBackfillWindowMs(env) > WIDE_WINDOW_THRESHOLD_MS;
|
|
37
|
-
}
|
|
38
|
-
function withinBackfillWindow(atMs, now, windowMs) {
|
|
39
|
-
return Number.isFinite(atMs) && Math.abs(atMs - now) <= windowMs;
|
|
40
|
-
}
|
|
41
|
-
function ingestAuthMode(input) {
|
|
42
|
-
if (input.configuredToken) {
|
|
43
|
-
return input.providedToken === input.configuredToken ? "token" : "token-mismatch";
|
|
44
|
-
}
|
|
45
|
-
return "session";
|
|
46
|
-
}
|
|
47
|
-
|
|
48
25
|
const IMAGE_MAX_BYTES = 10 * 1024 * 1024;
|
|
49
26
|
const VECTOR_MAX_POINTS = 4096;
|
|
50
27
|
let wideWindowWarned = false;
|
|
@@ -68,7 +45,7 @@ function metricsOf(raw) {
|
|
|
68
45
|
return out;
|
|
69
46
|
}
|
|
70
47
|
const ingest_post = defineApiHandler(async (event) => {
|
|
71
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
48
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
|
|
72
49
|
const id = (_a = getRouterParam(event, "id")) != null ? _a : "";
|
|
73
50
|
const node = getDaqController().byId(id);
|
|
74
51
|
if (!node) throw new AppError(404, "NOT_FOUND", `\u6570\u91C7\u8282\u70B9\u4E0D\u5B58\u5728: ${id}`);
|
|
@@ -82,7 +59,7 @@ const ingest_post = defineApiHandler(async (event) => {
|
|
|
82
59
|
}
|
|
83
60
|
if (mode === "session") {
|
|
84
61
|
const user = resolveUser(event);
|
|
85
|
-
const { requireLineMode } = await import('../../../../../_/nitro.mjs').then(function (n) { return n.
|
|
62
|
+
const { requireLineMode } = await import('../../../../../_/nitro.mjs').then(function (n) { return n.dC; });
|
|
86
63
|
requireLineMode(user, node.lineId, "operate");
|
|
87
64
|
}
|
|
88
65
|
if (isWideBackfillWindow() && !wideWindowWarned) {
|
|
@@ -113,8 +90,12 @@ const ingest_post = defineApiHandler(async (event) => {
|
|
|
113
90
|
const atMs = atRaw ? Date.parse(atRaw) : now;
|
|
114
91
|
if (!Number.isFinite(atMs)) throw new AppError(400, "VALIDATION_ERROR", `at \u4E0D\u662F\u5408\u6CD5\u65F6\u95F4: ${atRaw}(\u793A\u4F8B 2026-10-19T12:00:00+08:00)`);
|
|
115
92
|
const windowMs = ingestBackfillWindowMs();
|
|
116
|
-
|
|
117
|
-
|
|
93
|
+
const verdict = ingestTimeVerdict(atMs, now, windowMs, ingestFutureSkewMs());
|
|
94
|
+
if (verdict === "future") {
|
|
95
|
+
throw new AppError(400, "FUTURE_TIMESTAMP", `at \u8D85\u51FA\u5F53\u524D\u65F6\u95F4\u5141\u8BB8\u7684\u524D\u77BB\u504F\u5DEE(\u6700\u591A ${Math.round(ingestFutureSkewMs() / 1e3)}s);\u8BF7\u6821\u51C6\u4E0A\u6E38\u65F6\u949F\u540E\u91CD\u8BD5\u3002`);
|
|
96
|
+
}
|
|
97
|
+
if (verdict === "out-of-window") {
|
|
98
|
+
throw new AppError(400, "VALIDATION_ERROR", `at \u8D85\u51FA\u5141\u8BB8\u7684\u56DE\u586B\u8303\u56F4(${Math.round(windowMs / 6e4)} \u5206\u949F),\u8BF7\u68C0\u67E5\u65F6\u533A/\u65F6\u949F\u3002`);
|
|
118
99
|
}
|
|
119
100
|
const at = new Date(atMs).toISOString();
|
|
120
101
|
const state = ["ok", "warn", "alarm", "offline"].includes(String((_f = body.state) != null ? _f : "")) ? String(body.state) : "ok";
|
|
@@ -134,40 +115,39 @@ const ingest_post = defineApiHandler(async (event) => {
|
|
|
134
115
|
}
|
|
135
116
|
if (buf.length === 0) throw new AppError(400, "VALIDATION_ERROR", "\u56FE\u50CF\u5185\u5BB9\u4E3A\u7A7A\u3002");
|
|
136
117
|
if (buf.length > IMAGE_MAX_BYTES) throw new AppError(413, "PAYLOAD_TOO_LARGE", `\u56FE\u50CF\u8D85\u8FC7 ${IMAGE_MAX_BYTES / 1024 / 1024}MB \u4E0A\u9650\u3002`);
|
|
137
|
-
const objectKey = daqObjectKey(node.id, atMs, mime.includes("jpeg") ? ".jpg" : mime.includes("webp") ? ".webp" : ".png");
|
|
138
|
-
await getObjectStore().put(objectKey, buf, mime);
|
|
139
|
-
const sha256 = createHash("sha256").update(buf).digest("hex");
|
|
140
118
|
const width = Number(body.image && typeof body.image === "object" ? body.image.width : NaN);
|
|
141
119
|
const height = Number(body.image && typeof body.image === "object" ? body.image.height : NaN);
|
|
120
|
+
const processed = await getDaqController().processExternalFrame(node, {
|
|
121
|
+
kind: "image",
|
|
122
|
+
blob: buf,
|
|
123
|
+
mime,
|
|
124
|
+
width: Number.isFinite(width) ? width : void 0,
|
|
125
|
+
height: Number.isFinite(height) ? height : void 0,
|
|
126
|
+
metrics
|
|
127
|
+
}, atMs);
|
|
128
|
+
if (!processed) throw new AppError(400, "VALIDATION_ERROR", "\u56FE\u50CF\u5E27\u88AB sink \u7BA1\u7EBF\u62D2\u7EDD(\u6A21\u677F/\u5904\u7406\u5668\u914D\u7F6E\u4E0D\u652F\u6301\u8BE5\u5E27)\u3002");
|
|
142
129
|
env = {
|
|
143
130
|
nodeId: node.id,
|
|
144
131
|
templateRef: node.templateRef,
|
|
145
|
-
value: Number(((_i = metrics.avg) != null ?
|
|
132
|
+
value: Number(((_k = (_j = (_i = processed.frame.metrics) == null ? void 0 : _i.avg) != null ? _j : metrics.avg) != null ? _k : 0).toFixed(node.decimals)),
|
|
146
133
|
state,
|
|
147
134
|
at,
|
|
148
|
-
frame:
|
|
149
|
-
kind: "image",
|
|
150
|
-
objectKey,
|
|
151
|
-
mime,
|
|
152
|
-
width: Number.isFinite(width) ? width : void 0,
|
|
153
|
-
height: Number.isFinite(height) ? height : void 0,
|
|
154
|
-
sha256,
|
|
155
|
-
size: buf.length,
|
|
156
|
-
metrics
|
|
157
|
-
}
|
|
135
|
+
frame: processed.frame
|
|
158
136
|
};
|
|
159
137
|
} else if (kind === "vector") {
|
|
160
|
-
const points = finiteList((
|
|
138
|
+
const points = finiteList((_l = body.points) != null ? _l : body.values);
|
|
161
139
|
if (!points || points.length === 0) throw new AppError(400, "VALIDATION_ERROR", "\u5411\u91CF\u8282\u70B9\u7684\u8F7D\u8377\u5FC5\u987B\u63D0\u4F9B points \u6570\u7EC4\u3002");
|
|
162
140
|
if (points.length > VECTOR_MAX_POINTS) throw new AppError(413, "PAYLOAD_TOO_LARGE", `\u5411\u91CF\u70B9\u6570 ${points.length} \u8D85\u8FC7 ${VECTOR_MAX_POINTS} \u4E0A\u9650\u3002`);
|
|
163
141
|
const avg = points.reduce((a, b) => a + b, 0) / points.length;
|
|
142
|
+
const processed = await getDaqController().processExternalFrame(node, { kind: "vector", points, metrics }, atMs);
|
|
143
|
+
if (!processed) throw new AppError(400, "VALIDATION_ERROR", "\u5411\u91CF\u5E27\u88AB sink \u7BA1\u7EBF\u62D2\u7EDD(\u6A21\u677F/\u5904\u7406\u5668\u914D\u7F6E\u4E0D\u652F\u6301\u8BE5\u5E27)\u3002");
|
|
164
144
|
env = {
|
|
165
145
|
nodeId: node.id,
|
|
166
146
|
templateRef: node.templateRef,
|
|
167
|
-
value: Number(((
|
|
147
|
+
value: Number(((_o = (_n = (_m = processed.frame.metrics) == null ? void 0 : _m.avg) != null ? _n : metrics.avg) != null ? _o : avg).toFixed(node.decimals)),
|
|
168
148
|
state,
|
|
169
149
|
at,
|
|
170
|
-
frame:
|
|
150
|
+
frame: processed.frame
|
|
171
151
|
};
|
|
172
152
|
} else {
|
|
173
153
|
const value = Number(body.value);
|
|
@@ -180,9 +160,9 @@ const ingest_post = defineApiHandler(async (event) => {
|
|
|
180
160
|
nodeId: node.id,
|
|
181
161
|
kind,
|
|
182
162
|
at,
|
|
183
|
-
lineId: (
|
|
184
|
-
...((
|
|
185
|
-
...((
|
|
163
|
+
lineId: (_p = node.lineId) != null ? _p : null,
|
|
164
|
+
...((_q = env.frame) == null ? void 0 : _q.kind) === "image" ? { objectKey: env.frame.objectKey, bytes: env.frame.size } : {},
|
|
165
|
+
...((_r = env.frame) == null ? void 0 : _r.kind) === "vector" ? { points: (_s = env.frame.points) == null ? void 0 : _s.length } : {}
|
|
186
166
|
};
|
|
187
167
|
});
|
|
188
168
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.post.mjs","sources":["../../../../../../../../server/
|
|
1
|
+
{"version":3,"file":"ingest.post.mjs","sources":["../../../../../../../../server/api/workshop/daq/[id]/ingest.post.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineApiHandler, f as getRouterParam, ab as requireLineMode, a2 as getDaqController, l as getQuery,
|
|
1
|
+
import { d as defineApiHandler, f as getRouterParam, ab as requireLineMode, a2 as getDaqController, l as getQuery, bb as daqRuntimeSettings } from '../../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../../caller.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineApiHandler, ax as broadcastSceneEvent, f as getRouterParam, r as readBody, ab as requireLineMode, a2 as getDaqController, C as recordOps } from '../../../../_/nitro.mjs';
|
|
1
|
+
import { d as defineApiHandler, ax as broadcastSceneEvent, f as getRouterParam, r as readBody, ab as requireLineMode, a2 as getDaqController, A as AppError, C as recordOps } from '../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../caller.mjs';
|
|
3
3
|
import { bindDaqHost } from '../../../../_/host-bindings.mjs';
|
|
4
4
|
import 'node:crypto';
|
|
@@ -30,6 +30,11 @@ const _id__patch = defineApiHandler(async (event) => {
|
|
|
30
30
|
const id = (_a = getRouterParam(event, "id")) != null ? _a : "";
|
|
31
31
|
const body = (_b = await readBody(event)) != null ? _b : {};
|
|
32
32
|
requireLineMode(user, (_c = getDaqController().byId(id)) == null ? void 0 : _c.lineId, "operate");
|
|
33
|
+
const DAQ_ADMIN_ONLY = ["driver", "driverConfig"];
|
|
34
|
+
const denied = DAQ_ADMIN_ONLY.filter((k) => body[k] !== void 0);
|
|
35
|
+
if (denied.length > 0 && user.role !== "admin") {
|
|
36
|
+
throw new AppError(403, "DAQ_CONFIG_ADMIN_ONLY", `\u5B57\u6BB5\u300C${denied.join("/")}\u300D\u51B3\u5B9A\u91C7\u96C6\u843D\u70B9\u4E0E\u534F\u8BAE\u53C2\u6570\uFF0C\u4EC5\u7BA1\u7406\u5458\u53EF\u4FEE\u6539\uFF08\u5F53\u524D\u89D2\u8272 ${user.role}\uFF09\u3002`);
|
|
37
|
+
}
|
|
33
38
|
const node = getDaqController().patch(id, body);
|
|
34
39
|
recordOps({
|
|
35
40
|
actor: user.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_id_.patch.mjs","sources":["../../../../../../../server/api/workshop/daq/[id].patch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"_id_.patch.mjs","sources":["../../../../../../../server/api/workshop/daq/[id].patch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAaA,mBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAbjD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAcE,EAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,EAAA,WAAA,CAAY,mBAAmB,CAAA;AAC/B,EAAA,MAAM,EAAA,GAAA,CAAK,EAAA,GAAA,cAAA,CAAe,KAAA,EAAO,IAAI,MAA1B,IAAA,GAAA,EAAA,GAA+B,EAAA;AAC1C,EAAA,MAAM,QAAO,EAAA,GAAA,MAAM,QAAA,CAAwB,KAAK,CAAA,KAAnC,YAAwC,EAAC;AAEtD,EAAA,eAAA,CAAgB,IAAA,EAAA,CAAM,uBAAiB,CAAE,IAAA,CAAK,EAAE,CAAA,KAA1B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA6B,QAAQ,SAAS,CAAA;AAGpE,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,EAAU,cAAc,CAAA;AAChD,EAAA,MAAM,SAAS,cAAA,CAAe,MAAA,CAAO,OAAM,IAAA,CAAiC,CAAC,MAAM,KAAA,CAAS,CAAA;AAC5F,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,IAAA,CAAK,SAAS,OAAA,EAAS;AAC9C,IAAA,MAAM,IAAI,QAAA,CAAS,GAAA,EAAK,uBAAA,EAAyB,CAAA,kBAAA,EAAM,MAAA,CAAO,IAAA,CAAK,GAAG,CAAC,CAAA,uJAAA,EAA6B,IAAA,CAAK,IAAI,CAAA,YAAA,CAAI,CAAA;AAAA,EACnH;AACA,EAAA,MAAM,IAAA,GAAO,gBAAA,EAAiB,CAAE,KAAA,CAAM,IAAI,IAAI,CAAA;AAC9C,EAAA,SAAA,CAAU;AAAA,IACR,OAAO,IAAA,CAAK,EAAA;AAAA,IACZ,WAAW,IAAA,CAAK,IAAA;AAAA,IAChB,SAAA,EAAW,MAAA;AAAA,IACX,MAAA,EAAQ,gBAAA;AAAA,IACR,IAAA,EAAM,KAAA;AAAA,IACN,UAAA,EAAY,UAAA;AAAA,IACZ,QAAA,EAAU,EAAA;AAAA,IACV,OAAA,EAAS,CAAA,0CAAA,EAAU,IAAA,CAAK,IAAI,CAAA,OAAA,EAAK,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,oBAAK,CAAA,CAAA,CAAA;AAAA,IACrE,MAAA,EAAA,CAAQ,EAAA,GAAA,IAAA,CAAK,MAAA,KAAL,IAAA,GAAA,EAAA,GAAe,EAAA;AAAA,IACvB,QAAQ,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AAAE,GACnC,CAAA;AACD,EAAA,OAAO,EAAE,IAAA,EAAM,IAAA,CAAK,MAAA,EAAO,EAAE;AAC/B,CAAC,CAAA;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { d as defineApiHandler, l as getQuery, a2 as getDaqController } from '../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../caller.mjs';
|
|
3
|
+
import { f as filterRowsByLine, d as daqNodeLineId } from '../../../../_/line-scope.mjs';
|
|
3
4
|
import 'node:crypto';
|
|
4
5
|
import 'node:http';
|
|
5
6
|
import 'node:https';
|
|
@@ -23,11 +24,12 @@ import 'node:v8';
|
|
|
23
24
|
import 'node:readline';
|
|
24
25
|
|
|
25
26
|
const alarms_get = defineApiHandler(async (event) => {
|
|
26
|
-
resolveUser(event);
|
|
27
|
+
const user = resolveUser(event);
|
|
27
28
|
const q = getQuery(event);
|
|
28
29
|
const scope = q.scope === "all" ? "all" : "open";
|
|
29
30
|
const limit = Math.min(500, Math.max(1, Number(q.limit) || 100));
|
|
30
|
-
|
|
31
|
+
const alarms = getDaqController().listAlarms(scope, limit);
|
|
32
|
+
return { alarms: filterRowsByLine(user, alarms, (a) => daqNodeLineId(a.nodeId)) };
|
|
31
33
|
});
|
|
32
34
|
|
|
33
35
|
export { alarms_get as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarms.get.mjs","sources":["../../../../../../../server/api/workshop/daq/alarms.get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alarms.get.mjs","sources":["../../../../../../../server/api/workshop/daq/alarms.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,mBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAC/C,EAAA,MAAM,IAAA,GAAO,YAAY,KAAK,CAAA;AAC9B,EAAA,MAAM,CAAA,GAAI,SAAS,KAAK,CAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,KAAA,GAAQ,MAAA;AAC1C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,IAAK,GAAG,CAAC,CAAA;AAC/D,EAAA,MAAM,MAAA,GAAS,gBAAA,EAAiB,CAAE,UAAA,CAAW,OAAO,KAAK,CAAA;AACzD,EAAA,OAAO,EAAE,MAAA,EAAQ,gBAAA,CAAiB,IAAA,EAAM,MAAA,EAAQ,OAAK,aAAA,CAAc,CAAA,CAAE,MAAM,CAAC,CAAA,EAAE;AAChF,CAAC,CAAA;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineApiHandler, r as readBody,
|
|
1
|
+
import { d as defineApiHandler, r as readBody, bl as getDaqTemplateRegistry, ax as broadcastSceneEvent } from '../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../caller.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d as defineApiHandler,
|
|
1
|
+
import { requireRole } from '../../caller.mjs';
|
|
2
|
+
import { d as defineApiHandler, bi as daqInfraStatus, A as AppError, bj as daqInfraConfig } from '../../../../../_/nitro.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
5
5
|
import 'node:https';
|
|
@@ -22,14 +22,23 @@ import 'node:util';
|
|
|
22
22
|
import 'node:v8';
|
|
23
23
|
import 'node:readline';
|
|
24
24
|
|
|
25
|
+
const g = globalThis;
|
|
25
26
|
const reconnect_post = defineApiHandler(async (event) => {
|
|
26
|
-
|
|
27
|
+
requireRole(event, ["admin", "editor"]);
|
|
27
28
|
const apply = globalThis.__daqApplyInfra;
|
|
28
29
|
if (!apply) {
|
|
29
30
|
return { infra: { ...daqInfraStatus(), warning: "\u542F\u52A8\u63D2\u4EF6\u672A\u5C31\u7EEA,\u7A0D\u540E\u91CD\u8BD5" } };
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
if (g.__daqReconnectInFlight) {
|
|
33
|
+
throw new AppError(409, "RECONNECT_IN_FLIGHT", "\u5DF2\u6709\u4E00\u6B21\u57FA\u7840\u8BBE\u65BD\u91CD\u8FDE\u5728\u6267\u884C,\u8BF7\u7B49\u5F85\u5B8C\u6210\u540E\u518D\u8BD5");
|
|
34
|
+
}
|
|
35
|
+
g.__daqReconnectInFlight = true;
|
|
36
|
+
try {
|
|
37
|
+
await apply(daqInfraConfig());
|
|
38
|
+
return { infra: daqInfraStatus() };
|
|
39
|
+
} finally {
|
|
40
|
+
g.__daqReconnectInFlight = false;
|
|
41
|
+
}
|
|
33
42
|
});
|
|
34
43
|
|
|
35
44
|
export { reconnect_post as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconnect.post.mjs","sources":["../../../../../../../../server/api/workshop/daq/infra/reconnect.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"reconnect.post.mjs","sources":["../../../../../../../../server/api/workshop/daq/infra/reconnect.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,CAAA,GAAI,UAAA;AAEV,uBAAe,gBAAA,CAAiB,OAAO,KAAA,KAAU;AAC/C,EAAA,WAAA,CAAY,KAAA,EAAO,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AACtC,EAAA,MAAM,QAAS,UAAA,CAAqF,eAAA;AACpG,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,EAAE,OAAO,EAAE,GAAG,gBAAe,EAAG,OAAA,EAAS,uEAAe,EAAE;AAAA,EACnE;AACA,EAAA,IAAI,EAAE,sBAAA,EAAwB;AAC5B,IAAA,MAAM,IAAI,QAAA,CAAS,GAAA,EAAK,qBAAA,EAAuB,iIAAwB,CAAA;AAAA,EACzE;AACA,EAAA,CAAA,CAAE,sBAAA,GAAyB,IAAA;AAC3B,EAAA,IAAI;AAEF,IAAA,MAAM,KAAA,CAAM,gBAAgB,CAAA;AAC5B,IAAA,OAAO,EAAE,KAAA,EAAO,cAAA,EAAe,EAAE;AAAA,EACnC,CAAA,SACA;AACE,IAAA,CAAA,CAAE,sBAAA,GAAyB,KAAA;AAAA,EAC7B;AACF,CAAC,CAAA;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveUser } from '../caller.mjs';
|
|
2
|
-
import { d as defineApiHandler,
|
|
2
|
+
import { d as defineApiHandler, bi as daqInfraStatus } from '../../../../_/nitro.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
5
5
|
import 'node:https';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineApiHandler, f as getRouterParam,
|
|
1
|
+
import { d as defineApiHandler, f as getRouterParam, bl as getDaqTemplateRegistry, ax as broadcastSceneEvent } from '../../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../../caller.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineApiHandler, f as getRouterParam, r as readBody,
|
|
1
|
+
import { d as defineApiHandler, f as getRouterParam, r as readBody, bl as getDaqTemplateRegistry, ax as broadcastSceneEvent } from '../../../../../_/nitro.mjs';
|
|
2
2
|
import { resolveUser } from '../../caller.mjs';
|
|
3
3
|
import 'node:crypto';
|
|
4
4
|
import 'node:http';
|