agentworkshop 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.AgentWorkShop/prompts/host-tools.json +68 -0
- package/.output/.AgentWorkShop/prompts/host-tools.json +68 -0
- package/.output/.AgentWorkShop/schema.json +2 -0
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{Cdi9qfTr.js → CDO7Zey1.js} +2 -2
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/f507c33b-4ecc-4e32-af88-2e3736b443e9.json +1 -0
- package/.output/server/chunks/_/access.mjs +1 -1
- package/.output/server/chunks/_/data-export.mjs +5 -5
- package/.output/server/chunks/_/data-query.mjs +2 -2
- package/.output/server/chunks/_/eda-run.repo.mjs +3 -3
- package/.output/server/chunks/_/features.mjs +5 -5
- package/.output/server/chunks/_/golden.mjs +2 -2
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/index.mjs +2 -2
- package/.output/server/chunks/_/mes-secrets.repo.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +2556 -1314
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/spc.mjs +2 -2
- package/.output/server/chunks/build/_id_-CsCtnbwe.mjs +1 -1
- package/.output/server/chunks/build/_id_-P1W47Gqq.mjs +1 -1
- package/.output/server/chunks/build/_wsId_-DpOErFj6.mjs +1 -1
- package/.output/server/chunks/build/agents-D7CdEUTv.mjs +1 -1
- package/.output/server/chunks/build/aml-DRAFRcGU.mjs +1 -1
- package/.output/server/chunks/build/analysis-J9axLuRt.mjs +1 -1
- package/.output/server/chunks/build/api-B4Om0mEc.mjs +1 -1
- package/.output/server/chunks/build/api-BEW_ebY_.mjs +1 -1
- package/.output/server/chunks/build/api-BsAgXWxi.mjs +1 -1
- package/.output/server/chunks/build/board-CJUc032b.mjs +1 -1
- package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +1 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +1 -1
- package/.output/server/chunks/build/daq-B_dRMDw4.mjs +1 -1
- package/.output/server/chunks/build/data-D8uX1dnm.mjs +1 -1
- package/.output/server/chunks/build/dcw-D_HD_H_2.mjs +1 -1
- package/.output/server/chunks/build/default-CNWS6NUw.mjs +1 -1
- package/.output/server/chunks/build/es-Bxu10NJ2.mjs +1 -1
- package/.output/server/chunks/build/logs-BnYSMRXM.mjs +1 -1
- package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +1 -1
- package/.output/server/chunks/build/ontology-ohICfVVb.mjs +1 -1
- package/.output/server/chunks/build/operations-4zOVhW7o.mjs +1 -1
- package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +1 -1
- package/.output/server/chunks/build/pages-DEv4ProW.mjs +1 -1
- package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +1 -1
- package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +1 -1
- package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +1 -1
- package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +1 -1
- package/.output/server/chunks/build/settings-DXLJPq7d.mjs +1 -1
- package/.output/server/chunks/build/studio-hSqH9TYS.mjs +1 -1
- package/.output/server/chunks/build/teams-BbwYJyzv.mjs +1 -1
- package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +1 -1
- package/.output/server/chunks/build/tools-CnYi9cou.mjs +1 -1
- package/.output/server/chunks/build/town-BV-hbwb5.mjs +1 -1
- package/.output/server/chunks/build/town-CcoQKjMj.mjs +1 -1
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/types-DWqIeMRP.mjs +1 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +1 -1
- package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +1 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +1 -1
- package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +1 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +1 -1
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +1 -1
- package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +1 -1
- package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +1 -1
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +1 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +1 -1
- package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +1 -1
- package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +1 -1
- package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +1 -1
- package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +1 -1
- package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +1 -1
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs +1 -1
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
- package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs +1 -1
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +1 -1
- package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs +1 -1
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +1 -1
- package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs +1 -1
- package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs +1 -1
- package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs +1 -1
- package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs +1 -1
- package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs +1 -1
- package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs +1 -1
- package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs +1 -1
- package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs +1 -1
- package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs +1 -1
- package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs +1 -1
- package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs +1 -1
- package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs +1 -1
- package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs +1 -1
- package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs +1 -1
- package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs +1 -1
- package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs +1 -1
- package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +1 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +1 -1
- package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs +1 -1
- package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +1 -1
- package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs +1 -1
- package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +1 -1
- package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +1 -1
- package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +1 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +1 -1
- package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +1 -1
- package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +1 -1
- package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +1 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +1 -1
- package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +1 -1
- package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +1 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +1 -1
- package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +1 -1
- package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +1 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +1 -1
- package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +1 -1
- package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +1 -1
- package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +1 -1
- package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +1 -1
- package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +1 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +1 -1
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +1 -1
- package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +1 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +1 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +1 -1
- package/.output/server/chunks/build/users-DjiVC_tS.mjs +1 -1
- package/.output/server/chunks/build/workshop-1gKeDASV.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs +1 -1
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +3 -3
- 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/config.get.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 +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/monitor.get.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 +1 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/users/change-password.post.mjs +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 +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 +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/_...path_.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 +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 +2 -2
- 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_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.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.get.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/analysis/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.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/character/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.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.get.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 +2 -2
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +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.get.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/_memoryId_.delete.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/agents/_agentId/model.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.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/chat/messages/_messageId/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.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/execution-mode.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.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.get.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/index2.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.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/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.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/_id_.delete.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.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +7 -7
- 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/ingest.post.mjs +2 -2
- 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/export/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +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 +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/storage.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/index7.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 +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/mes-artifacts/file.get.mjs +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 +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 +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 +2 -2
- 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/eda/charts/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.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.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.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/index10.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index15.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index16.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.get.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 +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.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/bindings/_id_.delete.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/plugins/index.get.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/experiments.mjs +305 -20
- package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs.map +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/runtime.get.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/scene/layouts.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.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_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.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/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.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/retry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.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.get.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/members/_agentId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +5 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +3 -3
- package/README.md +3 -3
- package/config.yml +1 -1
- package/docs/aml.md +112 -112
- package/docs/cli.en.md +4 -4
- package/docs/cli.md +3 -3
- 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/i18n/locales/en.ts +2 -0
- package/i18n/locales/zh-CN.ts +2 -0
- package/package.json +1 -1
- package/scripts/_audit/demo-shot-studio.mjs +37 -0
- package/scripts/_audit/demo-shots.mjs +38 -0
- package/scripts/_audit/gen-demo-report.py +69 -0
- package/scripts/_audit/mqtt-pub.mjs +13 -0
- package/scripts/_audit/mqtt-topic-probe.mjs +15 -0
- package/scripts/_audit/proto-b3-device-4021.mjs +90 -0
- package/scripts/_audit/proto-doc-device-4120.mjs +53 -0
- package/scripts/acceptance-scientific-loop.ts +224 -0
- package/scripts/generate-identifiability-fixtures.ts +98 -0
- package/server/api/workshop/process-model/experiments.ts +28 -2
- package/server/plugins-builtin/diag-bridge/host/plugin.mjs +759 -753
- package/server/plugins-builtin/rag-bridge/index.mjs +490 -484
- package/server/repositories/user.repository.ts +24 -1
- package/server/services/user.service.ts +8 -6
- package/server/services/workshop/agents/host-tool-bridge/catalog.ts +2 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -1
- package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +5 -1
- package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +3 -0
- package/server/services/workshop/agents/industrial/bench-approval-only.ts +335 -58
- package/server/services/workshop/agents/industrial/dcw-tools.ts +7 -1
- package/server/services/workshop/agents/industrial/identifiability-tools.ts +247 -0
- package/server/services/workshop/agents/industrial/index.ts +1 -0
- package/server/services/workshop/agents/industrial/manual-approval.ts +3 -1
- package/server/services/workshop/agents/industrial/ops-tools.ts +58 -15
- package/server/services/workshop/agents/industrial/optimization-tools.ts +33 -19
- package/server/services/workshop/agents/plugin-governance.ts +22 -2
- package/server/services/workshop/aml/action-coverage.ts +253 -0
- package/server/services/workshop/aml/causal-claim.ts +68 -0
- package/server/services/workshop/aml/dataset-builder.ts +19 -0
- package/server/services/workshop/aml/gates.ts +45 -1
- package/server/services/workshop/aml/identifiability.ts +335 -0
- package/server/services/workshop/aml/intervention-ledger.ts +281 -0
- package/server/services/workshop/aml/ontology-learning.ts +143 -0
- package/server/services/workshop/aml/twin/cross-check.ts +176 -0
- package/server/services/workshop/daq/daq-controller/contracts.ts +3 -0
- package/server/services/workshop/daq/daq-controller/crud.ts +12 -2
- package/server/services/workshop/daq/daq-controller/push.ts +22 -0
- package/server/services/workshop/daq/drivers/mqtt.ts +28 -0
- package/server/services/workshop/daq/drivers/shared.ts +6 -0
- package/server/services/workshop/db/database/open.ts +2 -0
- package/server/services/workshop/db/database/rows.ts +4 -1
- package/server/services/workshop/db/database/schema.ts +38 -2
- package/server/services/workshop/db/message.repo.ts +10 -3
- package/server/services/workshop/dcw/dcw-controller/write-audit.ts +21 -1
- package/server/services/workshop/process-model/experiment-runner.ts +393 -0
- package/server/services/workshop/process-model/experiment.ts +25 -10
- package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +34 -11
- package/server/services/workshop/runtime/agent-runtime/state.ts +6 -1
- package/server/services/workshop/settings.ts +4 -1
- package/server/services/workshop/types/a2a.ts +16 -1
- package/shared/config/schema.json +2 -0
- package/shared/dcw-protocol/closed-loop.ts +2 -0
- package/.output/public/_nuxt/builds/meta/1231252d-2864-43c0-83b2-4e70d3b86dea.json +0 -1
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 可辨识性工具族(科学探索计划 P1/P2,docs/plans/2026-11-02-scientific-exploration-plan.md):
|
|
3
|
+
* - explorationIdentifiabilityPreflight:optimization_explore 前置门(上次干预未收口/欠功效建议窗未过 → 拦)
|
|
4
|
+
* - identifiabilityLearningText:verdict → 判读学习文案(方向性外推措辞仅在效应可分辨时出现)
|
|
5
|
+
* - toolDaqIdentifiability:对数采节点做可辨识性预检(主导周期/建议试验窗/半窗对比)
|
|
6
|
+
* - toolInterventionHistory:干预台账查询(只读;可读线口径与 line_context 同源)
|
|
7
|
+
* 全部只读;逃生开关 AW_IDENT_GATE=0 一键回到旧行为(零回归通道)。
|
|
8
|
+
*/
|
|
9
|
+
import { getDaqController } from '../../daq/daq-controller'
|
|
10
|
+
import { resolveRefFaces } from './tool-verify'
|
|
11
|
+
import { assessIdentifiability, dominantPeriod, type IdentifiabilityVerdict } from '../../aml/identifiability'
|
|
12
|
+
import { summarize } from '../../aml/stats'
|
|
13
|
+
import { backfillInterventionEvidence } from '../../aml/ontology-learning'
|
|
14
|
+
import {
|
|
15
|
+
attachAssessment,
|
|
16
|
+
interventionLines,
|
|
17
|
+
latestIntervention,
|
|
18
|
+
listInterventions,
|
|
19
|
+
pendingUnclosedEvent,
|
|
20
|
+
recentBlockedVerdictEvent,
|
|
21
|
+
verdictCodeOf,
|
|
22
|
+
verdictDetailOf,
|
|
23
|
+
verdictLabel,
|
|
24
|
+
} from '../../aml/intervention-ledger'
|
|
25
|
+
|
|
26
|
+
/** 门禁总开关(缺省启用;AW_IDENT_GATE=0 回到旧行为) */
|
|
27
|
+
export function identGateEnabled(): boolean {
|
|
28
|
+
return process.env.AW_IDENT_GATE !== '0'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 时序取数(与 readTargetMean 同源:daq samples,1s 桶,value/avg 兼容)。
|
|
33
|
+
* 一次调用同时产出均值(台账旧链用)与序列(引擎判读用)—— 判读不增取数。
|
|
34
|
+
*/
|
|
35
|
+
export async function readTargetWindow(nodeId: string, fromMs: number, toMs: number): Promise<{ mean: number | null, values: number[] }> {
|
|
36
|
+
try {
|
|
37
|
+
const pts = await getDaqController().samples(nodeId, { fromMs, toMs, bucketMs: 1000, limit: Math.max(60, Math.ceil((toMs - fromMs) / 1000) + 10) }) as Array<{ at?: number, value?: number, avg?: number }>
|
|
38
|
+
const values = pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
|
|
39
|
+
if (values.length === 0) return { mean: null, values }
|
|
40
|
+
return { mean: values.reduce((a, b) => a + b, 0) / values.length, values }
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return { mean: null, values: [] }
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** 序列周期提示(非阻断;从已取序列派生,不额外取数) */
|
|
48
|
+
export function periodHintFromSeries(values: number[]): string {
|
|
49
|
+
if (values.length < 32) return ''
|
|
50
|
+
const period = dominantPeriod(values)
|
|
51
|
+
if (period.lagBeats == null) return ''
|
|
52
|
+
const periodMin = (period.lagBeats / 60).toFixed(2)
|
|
53
|
+
return `目标节点检出主导扰动周期 ≈${periodMin} min:建议单次响应窗(settle_seconds)≥ ${Math.ceil((3 * period.lagBeats) / 60)} min、以 ≥3 个水平做正交阶梯探索,否则单步差分大概率不可辨识。`
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface ExplorationGateResult {
|
|
57
|
+
blocked: boolean
|
|
58
|
+
/** blocked 时的拒绝文案(结构化、带正交化建议) */
|
|
59
|
+
text: string
|
|
60
|
+
/** 非阻断提示(拼进探索回包,提醒窗长/水平设计) */
|
|
61
|
+
hint: string
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* optimization_explore 前置门(零取数,只查台账):同节点上一次干预未收口(判读窗未满)
|
|
66
|
+
* 或欠功效/混杂建议窗未过期 → 拒绝新激励。周期探测提示在写后从写前序列派生,不在此读数。
|
|
67
|
+
*/
|
|
68
|
+
export async function explorationIdentifiabilityPreflight(controlNodeId: string): Promise<ExplorationGateResult> {
|
|
69
|
+
if (!identGateEnabled()) return { blocked: false, text: '', hint: '' }
|
|
70
|
+
const pending = pendingUnclosedEvent(controlNodeId)
|
|
71
|
+
if (pending) {
|
|
72
|
+
return {
|
|
73
|
+
blocked: true,
|
|
74
|
+
text: `可辨识性门禁:节点 ${controlNodeId} 上一次干预(${pending.row.ts})判读尚未收口,剩余约 ${Math.ceil(pending.remainMs / 1000)}s。两次干预的响应会叠加,判读必然失真 —— 请先等待收口(或以 daq_query 确认上一步响应已回稳),再发新激励。`,
|
|
75
|
+
hint: '',
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const blockedVerdict = recentBlockedVerdictEvent(controlNodeId)
|
|
79
|
+
if (blockedVerdict) {
|
|
80
|
+
const elapsedMin = Math.max(0, Math.ceil((Date.now() - Date.parse(blockedVerdict.row.ts)) / 60000))
|
|
81
|
+
return {
|
|
82
|
+
blocked: true,
|
|
83
|
+
text: `可辨识性门禁:上一次对 ${controlNodeId} 的干预判定为「${verdictLabel(blockedVerdict.row.verdict)}」,其建议试验窗(≈${Math.round(blockedVerdict.suggestedWindowMs / 60000)} min)尚未过期(已过 ${elapsedMin} min)。继续同幅激励大概率重复欠功效探索 —— 建议改为:① settle_seconds ≥ 3×主导周期;② ≥3 个水平正交阶梯往返(随机化顺序);③ 或换目标量/执行器。如确需立即继续,设 AW_IDENT_GATE=0 停用门禁并自行承担判读风险。`,
|
|
84
|
+
hint: '',
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { blocked: false, text: '', hint: '' }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** verdict → 判读学习文案(方向性外推措辞仅在效应可分辨时出现 —— P1 门禁挂钩第二处) */
|
|
91
|
+
export function identifiabilityLearningText(v: IdentifiabilityVerdict): string {
|
|
92
|
+
const fmt = (x: number | null): string => (x != null && Number.isFinite(x) ? x.toPrecision(4) : '?')
|
|
93
|
+
switch (v.verdict) {
|
|
94
|
+
case 'IDENTIFIABLE':
|
|
95
|
+
if (v.significant) {
|
|
96
|
+
return `学习(可辨识): 该方向目标响应 ${v.effect != null && v.effect > 0 ? '上升' : '下降'} ${fmt(Math.abs(v.effect ?? 0))}(95% CI [${fmt(v.ciLow)}, ${fmt(v.ciHigh)}]);可按此符号外推,建议以反向步验证。`
|
|
97
|
+
}
|
|
98
|
+
return `学习(负结论): 本步幅下无可分辨效应:Δ=${fmt(v.effect)},CI 含 0,分辨率 MDE=${fmt(v.mde)}。负结论可入库;若工艺上预期有效应,请增大 step 或 settle_seconds 后重试,不要据本步外推方向。`
|
|
99
|
+
case 'UNDERPOWERED':
|
|
100
|
+
return `学习(不可辨识): 响应窗仅覆盖 ${v.postCoveragePeriods != null ? v.postCoveragePeriods.toFixed(2) : '?'} 个主导扰动周期(<3),分辨率 MDE=${fmt(v.mde)}。建议 settle_seconds ≥ ${v.suggestedWindowMs != null ? Math.round(v.suggestedWindowMs / 1000) : '?'}s、≥3 水平正交阶梯;本次结论按暂定处理,不要外推。`
|
|
101
|
+
case 'CONFOUNDED':
|
|
102
|
+
return `学习(被混杂): 控制量与自然漂移在时间上不可分(|r|=${v.collinearity != null ? v.collinearity.toFixed(3) : '?'}),判读不可信。建议随机化干预相位或 ABAB 往返校验后再判;本次结论按暂定处理。`
|
|
103
|
+
default:
|
|
104
|
+
return ''
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* P5 审批卡科学载荷(写咽喉 manual 分支用):把该节点最近一次干预的判定
|
|
110
|
+
* (效应/CI/MDE/建议窗)与可证伪方式装成结构化 payload + 人读行。
|
|
111
|
+
* 无历史 → 字段为 null 并如实写"未评估"(不编造方向性结论)。
|
|
112
|
+
*/
|
|
113
|
+
export function scientificPayloadForWrite(nodeId: string, nodeName: string, proposedValue: number): { payload: Record<string, unknown>, lines: string[] } {
|
|
114
|
+
const last = latestIntervention(nodeId)
|
|
115
|
+
const fmt = (x: number | null): string => (x != null && Number.isFinite(x) ? x.toPrecision(4) : '—')
|
|
116
|
+
const payload = {
|
|
117
|
+
controlNodeId: nodeId,
|
|
118
|
+
nodeName,
|
|
119
|
+
proposedValue,
|
|
120
|
+
lastVerdict: last?.verdict ?? null,
|
|
121
|
+
lastEffect: last?.effect ?? null,
|
|
122
|
+
lastCiLow: last?.ciLow ?? null,
|
|
123
|
+
lastCiHigh: last?.ciHigh ?? null,
|
|
124
|
+
lastMde: last?.mde ?? null,
|
|
125
|
+
suggestedWindowMs: (last?.verdictDetail?.suggestedWindowMs as number | undefined) ?? null,
|
|
126
|
+
actionCoverage: (last?.verdictDetail?.controlLevels as number | undefined) ?? null,
|
|
127
|
+
falsificationMethod: last
|
|
128
|
+
? `若响应窗(≥3 个主导扰动周期)内目标变化 95% CI 不含 0 且方向与上次判定相反,则上次因果断言被否证;Δ 小于 MDE 时只能记"不可辨识"`
|
|
129
|
+
: `首次干预:须在响应窗(≥3 个主导扰动周期)后按 bootstrap CI 判定;Δ 小于 MDE 记"不可辨识",不外推方向`,
|
|
130
|
+
}
|
|
131
|
+
const lines = [
|
|
132
|
+
`[科学依据] 上次判定:${last ? `${verdictLabel(last.verdict)}${last.effect != null ? `;效应 ${fmt(last.effect)}` : ''}${last.mde != null ? `;MDE=${fmt(last.mde)}` : ''}` : '无历史(首次干预,判读窗口须覆盖 ≥3 个主导扰动周期)'}`,
|
|
133
|
+
...(payload.suggestedWindowMs ? [`[科学依据] 建议响应窗 ≥ ${Math.round((payload.suggestedWindowMs as number) / 1000)}s(3×主导周期)`] : []),
|
|
134
|
+
`[可证伪] ${payload.falsificationMethod}`,
|
|
135
|
+
]
|
|
136
|
+
return { payload, lines }
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** 探索步后:引擎判定回填干预台账(写咽喉已落行,此处挂目标与判定)+ 回灌本体证据 */
|
|
140
|
+
export function attachExplorationVerdict(controlNodeId: string, targetNodeId: string, v: IdentifiabilityVerdict): void {
|
|
141
|
+
try {
|
|
142
|
+
const ev = latestIntervention(controlNodeId)
|
|
143
|
+
if (!ev || ev.path !== 'agent') return
|
|
144
|
+
attachAssessment(ev.id, {
|
|
145
|
+
verdict: verdictCodeOf(v),
|
|
146
|
+
effect: v.effect,
|
|
147
|
+
ciLow: v.ciLow,
|
|
148
|
+
ciHigh: v.ciHigh,
|
|
149
|
+
mde: v.mde,
|
|
150
|
+
targetNodeId,
|
|
151
|
+
detail: verdictDetailOf(v),
|
|
152
|
+
})
|
|
153
|
+
// P6:判定回灌本体证据(幂等;无已发布本体则暂留在台账)
|
|
154
|
+
const updated = latestIntervention(controlNodeId)
|
|
155
|
+
if (updated) {
|
|
156
|
+
try {
|
|
157
|
+
backfillInterventionEvidence(updated)
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// 证据登记失败不影响探索回包(台账仍是事实源)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// 回填失败不影响探索回包
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* daq_identifiability:对数采节点做可辨识性预检(只读)。
|
|
171
|
+
* 输出:序列摘要 / 主导扰动周期 / 建议试验窗 / 前后半窗对比判定(漂移与自然波动基线)。
|
|
172
|
+
*/
|
|
173
|
+
export async function toolDaqIdentifiability(agentId: string, args: { node_id?: string, minutes?: number | string }): Promise<{ text: string, isError?: boolean }> {
|
|
174
|
+
try {
|
|
175
|
+
const nodeId = String(args.node_id ?? '').trim()
|
|
176
|
+
if (!nodeId) return { text: '缺少 node_id。', isError: true }
|
|
177
|
+
const faces = resolveRefFaces(agentId)
|
|
178
|
+
if (!faces.daqBoundNodes.has(nodeId) && !faces.channelLineNodes.has(nodeId)) {
|
|
179
|
+
return {
|
|
180
|
+
text: `节点 ${nodeId} 不在你的数采可见范围(绑定数采节点:${[...faces.daqBoundNodes].join(', ') || '(无)'}${faces.channelLineNodes.size > 0 ? `;频道绑线只读节点:${faces.channelLineNodes.size} 个` : ''})。请让用户或 lead 绑定该数采节点。`,
|
|
181
|
+
isError: true,
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const minutes = Math.min(240, Math.max(5, Math.floor(Number(args.minutes ?? 30) || 30)))
|
|
185
|
+
const now = Date.now()
|
|
186
|
+
const series = (await readTargetWindow(nodeId, now - minutes * 60_000, now)).values
|
|
187
|
+
if (series.length < 8) {
|
|
188
|
+
return { text: `节点 ${nodeId} 近 ${minutes} min 仅 ${series.length} 拍(需 ≥8):采样不足或节点不活跃,无法做可辨识性预检。`, isError: true }
|
|
189
|
+
}
|
|
190
|
+
const sum = summarize(nodeId, 'target', series, 0, 0)
|
|
191
|
+
const lines = [
|
|
192
|
+
`可辨识性预检(${nodeId},近 ${minutes} min):`,
|
|
193
|
+
` 序列:${sum.count} 拍,均值 ${sum.mean.toFixed(4)},σ=${sum.std.toFixed(4)},范围 [${sum.min.toFixed(4)}, ${sum.max.toFixed(4)}]`,
|
|
194
|
+
]
|
|
195
|
+
const period = dominantPeriod(series)
|
|
196
|
+
if (period.lagBeats != null) {
|
|
197
|
+
const periodMin = (period.lagBeats / 60).toFixed(2)
|
|
198
|
+
lines.push(` 主导扰动周期 ≈ ${periodMin} min(自相关峰 r=${period.peakCorr.toFixed(2)})`)
|
|
199
|
+
lines.push(` 建议正交试验:单点响应窗 ≥ ${(3 * period.lagBeats / 60).toFixed(1)} min(3×周期),≥3 个水平阶梯往返`)
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
lines.push(' 未检出显著周期性;试验窗按噪声分辨率(MDE)评估即可')
|
|
203
|
+
}
|
|
204
|
+
const half = Math.floor(series.length / 2)
|
|
205
|
+
const v = assessIdentifiability({ pre: series.slice(0, half), post: series.slice(half), beatMs: 1000 })
|
|
206
|
+
lines.push(` 前后半窗对比:Δ=${v.effect != null ? v.effect.toPrecision(4) : '?'}(95% CI [${v.ciLow?.toPrecision(4) ?? '?'}, ${v.ciHigh?.toPrecision(4) ?? '?'}]),判定:${v.verdict}${v.significant ? '(显著漂移)' : ''}`)
|
|
207
|
+
for (const r of v.reasons) lines.push(` · ${r}`)
|
|
208
|
+
return { text: lines.join('\n') }
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
return { text: `可辨识性预检失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* intervention_history:干预台账查询(只读;可见性 = 可读产线 ∪ 绑定节点,与 line_context 同源)。
|
|
217
|
+
*/
|
|
218
|
+
export async function toolInterventionHistory(agentId: string, args: { node_id?: string, line_id?: string, limit?: number | string }): Promise<{ text: string, isError?: boolean }> {
|
|
219
|
+
try {
|
|
220
|
+
const faces = resolveRefFaces(agentId)
|
|
221
|
+
const limit = Math.min(50, Math.max(1, Math.floor(Number(args.limit ?? 10) || 10)))
|
|
222
|
+
const nodeId = String(args.node_id ?? '').trim()
|
|
223
|
+
const lineId = String(args.line_id ?? '').trim()
|
|
224
|
+
if (!nodeId && !lineId) {
|
|
225
|
+
return { text: '请传 node_id 或 line_id(可先用 line_context 取产线 id)。', isError: true }
|
|
226
|
+
}
|
|
227
|
+
const rows = listInterventions({ nodeId: nodeId || undefined, lineId: lineId || undefined, limit })
|
|
228
|
+
const visible = rows.filter(r => faces.readableLines.has(r.lineId) || faces.boundNodes.has(r.nodeId))
|
|
229
|
+
if (rows.length > 0 && visible.length === 0) {
|
|
230
|
+
return { text: '查询命中记录但均不在你的可读范围(可读产线 ∪ 绑定节点)内,已按 fail-closed 隐藏。', isError: true }
|
|
231
|
+
}
|
|
232
|
+
if (visible.length === 0) {
|
|
233
|
+
return { text: `干预台账暂无${nodeId ? `节点 ${nodeId}` : ''}${lineId ? `产线 ${lineId}` : ''}的记录(台账记录所有已受理下发,含手动/Agent/配方/回退;2026-11-02 起积累)。` }
|
|
234
|
+
}
|
|
235
|
+
const byVerdict = new Map<string, number>()
|
|
236
|
+
for (const r of visible) byVerdict.set(r.verdict, (byVerdict.get(r.verdict) ?? 0) + 1)
|
|
237
|
+
const stats = [...byVerdict.entries()].map(([k, n]) => `${verdictLabel(k)}×${n}`).join(', ')
|
|
238
|
+
const lines = [
|
|
239
|
+
`干预台账(最近 ${visible.length} 条${nodeId ? `,节点 ${nodeId}` : ''}${lineId ? `,产线 ${lineId}` : ''};判定分布:${stats}):`,
|
|
240
|
+
...interventionLines(visible).map(l => ` ${l}`),
|
|
241
|
+
]
|
|
242
|
+
return { text: lines.join('\n') }
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
return { text: `台账查询失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -25,6 +25,7 @@ export { toolAmlNodeCatalog, toolAmlDatasetBuild, toolAmlDatasetStats } from './
|
|
|
25
25
|
export { toolAmlJobSubmit, toolAmlJobStatus, toolAmlJobLogs, toolAmlJobCancel, toolAmlLeaderboard, toolAmlModelFind, toolAmlModelPromote, toolAmlModelReference, toolAmlModelAnnotate, toolAmlTrainingPlanList, toolAmlTrainingPlanTrain, toolAmlTrainingPlanCreate } from './aml-job-tools'
|
|
26
26
|
|
|
27
27
|
export { toolOptimizationExplore } from './optimization-tools'
|
|
28
|
+
export { toolDaqIdentifiability, toolInterventionHistory } from './identifiability-tools'
|
|
28
29
|
export { toolTwinProviderCatalog, toolTwinSceneDiscover, toolTwinSceneCompile, toolTwinSceneFreeze, toolTwinSceneRead, toolTwinPhysicsSpecDraft, toolTwinPhysicsSpecValidate, toolTwinPhysicsSpecCompile, toolTwinSnapshotCreate, toolTwinTrialRun, toolMpcOptimize, toolTwinGateEvaluate, toolTwinCalibrationRequest, toolTwinBayesOptimize } from './twin-tools'
|
|
29
30
|
export { toolAmlActivity } from './aml-activity'
|
|
30
31
|
export { toolRecipePropose } from './recipe-propose-tools'
|
|
@@ -21,6 +21,8 @@ export async function requestManualApproval(args: {
|
|
|
21
21
|
* 配方授权路径传「绑定配方仍存在且仍包含该参数节点」——否则批准时绑定已解除仍会执行。
|
|
22
22
|
*/
|
|
23
23
|
verify?: () => boolean
|
|
24
|
+
/** P5 科学载荷(效应/CI/MDE/证据边/可证伪方式):随审批卡结构化落库,前端直接渲染 */
|
|
25
|
+
payload?: unknown
|
|
24
26
|
}): Promise<{ ok: true, comment: string, approvalId: string } | { ok: false, text: string, isError: true }> {
|
|
25
27
|
const action = args.action ?? '下发'
|
|
26
28
|
const pendingText = action === '回退'
|
|
@@ -31,7 +33,7 @@ export async function requestManualApproval(args: {
|
|
|
31
33
|
if (approvals.hasPendingFor(args.agentId, args.nodeId)) {
|
|
32
34
|
return { ok: false, text: pendingText, isError: true }
|
|
33
35
|
}
|
|
34
|
-
const ap = await approvals.request(args.agentId, args.nodeId, 'dcw', args.detail)
|
|
36
|
+
const ap = await approvals.request(args.agentId, args.nodeId, 'dcw', args.detail, args.payload !== undefined ? { payload: args.payload } : undefined)
|
|
35
37
|
if (!ap.approved) {
|
|
36
38
|
return {
|
|
37
39
|
ok: false,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* (由 server/services/workshop/agents/industrial-tools.ts 按职责拆出;内容逐行原文搬运)
|
|
4
4
|
*/
|
|
5
5
|
import type { RecipeView } from '../../../../../shared/dcw-protocol'
|
|
6
|
+
import { randomUUID } from 'node:crypto'
|
|
6
7
|
import { agentBadgeLabel } from '../agent-badge'
|
|
7
8
|
import { getActiveLineRun } from '../../dcw/line-run'
|
|
8
9
|
import { getAgentNodeBindingRepo } from '../node-bindings.repo'
|
|
@@ -18,7 +19,7 @@ import { settingOf } from '../../settings'
|
|
|
18
19
|
import { fanoutQuery, windowOf } from './audit-query'
|
|
19
20
|
import { assertRecipeCreate, assertRecipeOperation, recipeApprovalPayload, type ActiveRecipeContext } from './recipe-gate'
|
|
20
21
|
import { RECOVERY_RETRY_HINT, RECOVERY_TRACE_HINT, RECOVERY_VERIFY_HINT } from './fallback-hints'
|
|
21
|
-
import { approvalOnlyTrialReceipt } from './bench-approval-only'
|
|
22
|
+
import { approvalOnlyTrialReceipt, sameApprovalOnlyTrialReceipt, type ApprovalOnlyTrialReceipt } from './bench-approval-only'
|
|
22
23
|
import { currentToolInvocation } from '../governance-harness-audit'
|
|
23
24
|
import { executionModeOfAgent } from '../execution-mode'
|
|
24
25
|
|
|
@@ -1007,18 +1008,30 @@ async function hitlDispatchGate(agentId: string, recipeId: string, detail: strin
|
|
|
1007
1008
|
payload?: unknown
|
|
1008
1009
|
trialTargets?: Array<{ id: string, driver: string, driverConfig: Record<string, unknown> }>
|
|
1009
1010
|
lineId?: string
|
|
1010
|
-
|
|
1011
|
+
trialParams?: Array<{ node_id: string, value: number }>
|
|
1012
|
+
hypothesis?: string
|
|
1013
|
+
invocationId?: string
|
|
1014
|
+
}): Promise<{ approved: boolean, comment: string, id: string, approval_bypassed?: true, approval_receipt?: ApprovalOnlyTrialReceipt }> {
|
|
1011
1015
|
if (opts?.trialTargets) {
|
|
1012
|
-
const receipt = approvalOnlyTrialReceipt({
|
|
1016
|
+
const receipt = approvalOnlyTrialReceipt({
|
|
1017
|
+
stage: 'approval',
|
|
1018
|
+
invocationId: opts.invocationId ?? '',
|
|
1019
|
+
actorId: agentId,
|
|
1020
|
+
recipeId,
|
|
1021
|
+
line: getDcwLineRepo().byId(opts.lineId ?? ''),
|
|
1022
|
+
nodes: opts.trialTargets,
|
|
1023
|
+
hypothesis: opts.hypothesis ?? '',
|
|
1024
|
+
params: opts.trialParams ?? [],
|
|
1025
|
+
})
|
|
1013
1026
|
if (receipt) {
|
|
1014
1027
|
recordOps({
|
|
1015
1028
|
actor: agentId, actorName: agentBadgeLabel(agentId), actorKind: 'agent',
|
|
1016
1029
|
action: 'recipe.approval.bypassed', kind: 'recipe', targetKind: 'recipe', targetId: recipeId,
|
|
1017
1030
|
lineId: opts.lineId ?? '', recipeId,
|
|
1018
1031
|
summary: '隔离模拟器审批消融:仅跳过人工审批等待,无人工批准记录',
|
|
1019
|
-
detail: receipt,
|
|
1032
|
+
detail: { ...receipt, stage: 'approval-gate' },
|
|
1020
1033
|
})
|
|
1021
|
-
return { approved: true, comment: '', id: '', approval_bypassed: true }
|
|
1034
|
+
return { approved: true, comment: '', id: '', approval_bypassed: true, approval_receipt: receipt }
|
|
1022
1035
|
}
|
|
1023
1036
|
}
|
|
1024
1037
|
const { getToolApprovals } = await import('../tool-approvals')
|
|
@@ -1148,6 +1161,7 @@ export async function toolRecipeTrial(agentId: string, args: {
|
|
|
1148
1161
|
if (!target.ok) return { text: target.text, isError: true }
|
|
1149
1162
|
const recipe = target.recipe
|
|
1150
1163
|
const recipeId = recipe.id
|
|
1164
|
+
const toolInvocationId = currentToolInvocation()?.invocationId ?? randomUUID()
|
|
1151
1165
|
// 权限模型 v2 + 2026-10-28 双轨:recipe 绑定 ∨ 本次候选覆盖集 ⊆ dcw 节点绑定面
|
|
1152
1166
|
const gate = assertRecipeOperation(agentId, recipe, 'trial', list.map(p => p.nodeId))
|
|
1153
1167
|
if (!gate.ok) return { text: gate.text, isError: true }
|
|
@@ -1171,6 +1185,7 @@ export async function toolRecipeTrial(agentId: string, args: {
|
|
|
1171
1185
|
let hitlNote = ''
|
|
1172
1186
|
let gateApprovalId = ''
|
|
1173
1187
|
let approvalBypassed = false
|
|
1188
|
+
let approvalReceipt: ApprovalOnlyTrialReceipt | null = null
|
|
1174
1189
|
if (gate.hitlRequired) {
|
|
1175
1190
|
const gateDecision = await hitlDispatchGate(
|
|
1176
1191
|
agentId,
|
|
@@ -1181,18 +1196,32 @@ export async function toolRecipeTrial(agentId: string, args: {
|
|
|
1181
1196
|
return `${node?.name ?? p.nodeId} ${old ?? '?'}→${p.value}${node?.unit ?? ''}`
|
|
1182
1197
|
}).join(';')} | 假设:${hypothesis} | 批准=整批下发试验(不写版本);拒绝可附指导`,
|
|
1183
1198
|
`${emergency ? '【应急】' : ''}配方试验(整批候选)下发审批`,
|
|
1184
|
-
{
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1199
|
+
{
|
|
1200
|
+
lineId: recipe.lineId,
|
|
1201
|
+
trialTargets: list.map(p => getDcwController().byId(p.nodeId)!),
|
|
1202
|
+
trialParams: list.map(p => ({ node_id: p.nodeId, value: p.value })),
|
|
1203
|
+
hypothesis,
|
|
1204
|
+
invocationId: toolInvocationId,
|
|
1205
|
+
payload: {
|
|
1206
|
+
...recipeApprovalPayload('trial', recipe.id, recipe.name, {
|
|
1207
|
+
reason: hypothesis,
|
|
1208
|
+
params: list.map((p) => {
|
|
1209
|
+
const node = getDcwController().byId(p.nodeId)
|
|
1210
|
+
const old = recipe.params.find(x => x.nodeId === p.nodeId)?.value
|
|
1211
|
+
return { nodeId: p.nodeId, name: node?.name ?? p.nodeId, from: old ?? null, to: p.value, unit: node?.unit }
|
|
1212
|
+
}),
|
|
1213
|
+
context: gate.activeContext,
|
|
1214
|
+
}),
|
|
1215
|
+
...(emergency ? { emergency: true } : {}),
|
|
1216
|
+
},
|
|
1217
|
+
},
|
|
1193
1218
|
)
|
|
1194
1219
|
gateApprovalId = gateDecision.id
|
|
1195
1220
|
approvalBypassed = gateDecision.approval_bypassed === true
|
|
1221
|
+
approvalReceipt = gateDecision.approval_receipt ?? null
|
|
1222
|
+
if (approvalBypassed && !approvalReceipt) {
|
|
1223
|
+
return { text: 'Approval-only qualification receipt is missing; dispatch was refused.', isError: true, approval_bypassed: true }
|
|
1224
|
+
}
|
|
1196
1225
|
if (!gateDecision.approved) {
|
|
1197
1226
|
return {
|
|
1198
1227
|
text: `人工未批准本次试验下发。人工指导:${gateDecision.comment || '(无附言,仅不同意候选)'}。请按人工指导修订候选参数(必要时先 recipe_update 调整基线),然后重新提交 recipe_trial。`,
|
|
@@ -1211,7 +1240,21 @@ export async function toolRecipeTrial(agentId: string, args: {
|
|
|
1211
1240
|
const execGate = assertRecipeOperation(agentId, recipe, 'trial', list.map(p => p.nodeId))
|
|
1212
1241
|
if (!execGate.ok) return { text: `下发前授权复核未通过,本次未执行:${execGate.text}`, isError: true }
|
|
1213
1242
|
// Recheck the qualified driver/PID after the asynchronous grant revalidation.
|
|
1214
|
-
if (approvalBypassed)
|
|
1243
|
+
if (approvalBypassed) {
|
|
1244
|
+
const dispatchReceipt = approvalOnlyTrialReceipt({
|
|
1245
|
+
stage: 'dispatch',
|
|
1246
|
+
invocationId: toolInvocationId,
|
|
1247
|
+
actorId: agentId,
|
|
1248
|
+
recipeId,
|
|
1249
|
+
line: getDcwLineRepo().byId(recipe.lineId),
|
|
1250
|
+
nodes: list.map(p => getDcwController().byId(p.nodeId)!),
|
|
1251
|
+
hypothesis,
|
|
1252
|
+
params: list.map(p => ({ node_id: p.nodeId, value: p.value })),
|
|
1253
|
+
})
|
|
1254
|
+
if (!sameApprovalOnlyTrialReceipt(approvalReceipt, dispatchReceipt)) {
|
|
1255
|
+
return { text: 'Approval-only qualification changed or was consumed before dispatch; write was refused.', isError: true, approval_bypassed: true }
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1215
1258
|
const invocation = currentToolInvocation()
|
|
1216
1259
|
const run = await getDcwController().applyRecipe(recipeId, {
|
|
1217
1260
|
overrides: list, trial: true, agentDispatch: true, agentApprovalId: gateApprovalId, emergency,
|
|
@@ -13,27 +13,16 @@ import { createId } from '../../aml/twin/contracts'
|
|
|
13
13
|
import { getAmlRuntime } from '../../aml/runtime'
|
|
14
14
|
import { getChannelTwinProfile } from '../../aml/twin/channel-profile'
|
|
15
15
|
import { getAgentNodeBindingRepo } from '../node-bindings.repo'
|
|
16
|
-
import { getDaqController } from '../../daq/daq-controller'
|
|
17
16
|
import { getDcwController } from '../../dcw/dcw-controller'
|
|
18
17
|
import type { HostToolResult } from '../host-tool-bridge/types'
|
|
19
18
|
import { dcwControlGovernedInternal } from './dcw-tools'
|
|
20
19
|
import { resolveRefFaces } from './tool-verify'
|
|
20
|
+
// P1/P2(科学探索计划):可辨识性前置门 + 引擎判读 + 台账回填
|
|
21
|
+
import { assessIdentifiability } from '../../aml/identifiability'
|
|
22
|
+
import { attachExplorationVerdict, explorationIdentifiabilityPreflight, identGateEnabled, identifiabilityLearningText, periodHintFromSeries, readTargetWindow } from './identifiability-tools'
|
|
21
23
|
|
|
22
24
|
const sleep = (ms: number) => new Promise(r => setTimeout(r, ms))
|
|
23
25
|
|
|
24
|
-
async function readTargetMean(nodeId: string, windowMs = 45_000): Promise<number | null> {
|
|
25
|
-
const now = Date.now()
|
|
26
|
-
try {
|
|
27
|
-
const pts = await getDaqController().samples(nodeId, { fromMs: now - windowMs, toMs: now, bucketMs: 1000, limit: 60 }) as Array<{ at?: number, value?: number, avg?: number }>
|
|
28
|
-
const vals = pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
|
|
29
|
-
if (vals.length === 0) return null
|
|
30
|
-
return vals.reduce((a, b) => a + b, 0) / vals.length
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return null
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
26
|
export async function toolOptimizationExplore(agentId: string, args: {
|
|
38
27
|
control_node_id?: string
|
|
39
28
|
target_node_id?: string
|
|
@@ -93,10 +82,17 @@ export async function toolOptimizationExplore(agentId: string, args: {
|
|
|
93
82
|
}
|
|
94
83
|
}
|
|
95
84
|
|
|
96
|
-
|
|
85
|
+
// P1 可辨识性前置门:上次干预未收口(判读窗未满)或欠功效/混杂建议窗未过期 → 拒发新激励
|
|
86
|
+
// (两次激励响应叠加必致判读失真;门禁零取数只查台账;AW_IDENT_GATE=0 为逃生开关)
|
|
87
|
+
const gate = await explorationIdentifiabilityPreflight(controlNodeId)
|
|
88
|
+
if (gate.blocked) return { text: gate.text, isError: true }
|
|
97
89
|
|
|
98
90
|
// 真实写入:复用 dcw_control 全治理链(手动绑定会挂 HITL,auto+bounded 走限界直写)
|
|
99
91
|
const settleSec = Math.min(300, Math.max(10, Number(args.settle_seconds ?? 45)))
|
|
92
|
+
const writeAtMs = Date.now()
|
|
93
|
+
// 写前窗(=settle 窗):均值走旧台账链,序列留给引擎判读 —— 同一次取数,不增读
|
|
94
|
+
const preWindow = await readTargetWindow(targetNodeId, writeAtMs - settleSec * 1000, writeAtMs)
|
|
95
|
+
const targetBefore = preWindow.mean
|
|
100
96
|
const write = await dcwControlGovernedInternal(agentId, {
|
|
101
97
|
node_id: controlNodeId,
|
|
102
98
|
value: target,
|
|
@@ -105,9 +101,20 @@ export async function toolOptimizationExplore(agentId: string, args: {
|
|
|
105
101
|
const writeOk = !write.isError
|
|
106
102
|
|
|
107
103
|
let targetAfter: number | null = null
|
|
104
|
+
let verdictText = ''
|
|
108
105
|
if (writeOk) {
|
|
109
106
|
await sleep(settleSec * 1000)
|
|
110
|
-
|
|
107
|
+
// 写后窗(=settle 窗):一次取数同时取均值与序列(与写前窗对称)
|
|
108
|
+
const postWindow = await readTargetWindow(targetNodeId, writeAtMs, Date.now())
|
|
109
|
+
targetAfter = postWindow.mean
|
|
110
|
+
// P1 判读:前后窗完整序列交给可辨识性引擎(不再以单点差分作因果依据),
|
|
111
|
+
// 判定回填干预台账(intervention_events);序列不足时 verdictText 空 → 中性文案,不外推。
|
|
112
|
+
if (identGateEnabled() && preWindow.values.length >= 8 && postWindow.values.length >= 8) {
|
|
113
|
+
const v = assessIdentifiability({ pre: preWindow.values, post: postWindow.values, beatMs: 1000 })
|
|
114
|
+
attachExplorationVerdict(controlNodeId, targetNodeId, v)
|
|
115
|
+
verdictText = identifiabilityLearningText(v)
|
|
116
|
+
if (!gate.hint) gate.hint = periodHintFromSeries(preWindow.values)
|
|
117
|
+
}
|
|
111
118
|
}
|
|
112
119
|
|
|
113
120
|
const record = {
|
|
@@ -146,11 +153,18 @@ export async function toolOptimizationExplore(agentId: string, args: {
|
|
|
146
153
|
` 控制: ${node.name}(${controlNodeId}) ${record.controlBefore} → ${record.controlAfter}(步长 ${Number(step).toFixed(3)},方向 ${record.direction}${clamped ? ',触调试边界截断' : ''})`,
|
|
147
154
|
` 响应: ${targetNodeId} ${targetBefore != null ? targetBefore.toFixed(3) : 'n/a'} → ${targetAfter != null ? targetAfter.toFixed(3) : 'n/a'}(Δ=${deltaTarget != null ? deltaTarget.toFixed(3) : 'n/a'},窗口 ${settleSec}s)`,
|
|
148
155
|
` goal: ${goalText}`,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
// P1 门禁挂钩:方向性外推措辞只在引擎判"效应可分辨"时出现(verdictText);
|
|
157
|
+
// 判读欠功效/混杂/负结论时如实转述;拍数不足时中性提示,不外推。
|
|
158
|
+
verdictText
|
|
159
|
+
? ` ${verdictText}`
|
|
160
|
+
: deltaTarget != null
|
|
161
|
+
? (identGateEnabled()
|
|
162
|
+
? ` 学习: 响应窗拍数不足以做可辨识性判读(前后各需 ≥8 拍);单点差分 Δ=${deltaTarget > 0 ? '+' : ''}${deltaTarget.toFixed(3)} 仅供参考,不要据此直接外推方向。建议增大 settle_seconds 或检查目标节点采样。`
|
|
163
|
+
: ` 学习: 该方向目标响应 ${deltaTarget > 0 ? '上升' : '下降'} ${Math.abs(deltaTarget).toFixed(3)};继续探索请按此符号外推,或反向验证。`)
|
|
164
|
+
: ' 学习: 响应窗口内未读到稳定差分;建议增大 settle_seconds 或检查目标节点采样。',
|
|
152
165
|
`探索记录已归档,可在 AML 界面与训练数据回流中使用。`,
|
|
153
166
|
]
|
|
167
|
+
if (gate.hint) lines.push(` 提示: ${gate.hint}`)
|
|
154
168
|
return { text: lines.join('\n') }
|
|
155
169
|
}
|
|
156
170
|
catch (err) {
|
|
@@ -14,6 +14,7 @@ import { checkToolAgainstScope } from '../runtime/permission-scope'
|
|
|
14
14
|
import { getToolApprovals } from './tool-approvals'
|
|
15
15
|
import { verifyToolReferences } from './industrial/tool-verify'
|
|
16
16
|
import { recordOps } from '../ops/ops'
|
|
17
|
+
import { assessCausalClaim, causalClaimLines } from '../aml/causal-claim'
|
|
17
18
|
import type { HostToolResult } from './host-tool-bridge/types'
|
|
18
19
|
|
|
19
20
|
export interface PluginGovernanceIdentity {
|
|
@@ -66,11 +67,30 @@ async function governKbAgent(identity: PluginGovernanceIdentity, toolName: strin
|
|
|
66
67
|
}
|
|
67
68
|
return null
|
|
68
69
|
}
|
|
70
|
+
// P6 因果断言质量门:识别无证据锚的因果叙述(事故:无锚叙述污染 KB),
|
|
71
|
+
// 在审批卡标注 anecdotal 并留 ops 告警;不禁止写入(人审可见即可)。
|
|
72
|
+
const claim = assessCausalClaim(prompt)
|
|
73
|
+
if (claim.anecdotal) {
|
|
74
|
+
recordOps({
|
|
75
|
+
actor: identity.agentId, actorName: identity.name, actorKind: 'agent',
|
|
76
|
+
action: 'plugin.kb.anecdotal_causal_claim', kind: 'system', level: 'warn',
|
|
77
|
+
targetKind: 'tool', targetId: toolName,
|
|
78
|
+
summary: '知识库入库含无证据锚的因果断言(anecdotal),已在审批卡标注',
|
|
79
|
+
detail: { reasons: claim.reasons, prompt: prompt.slice(0, 300) },
|
|
80
|
+
})
|
|
81
|
+
}
|
|
69
82
|
// 写入知识库:显式人工审批(与配方/产线写同源审批服务;缺省超时=拒绝)
|
|
70
|
-
const
|
|
83
|
+
const qualityLines = causalClaimLines(claim)
|
|
84
|
+
const detail = `知识库入库审批(kb_agent):\n${prompt.slice(0, 1200)}${qualityLines.length ? `\n${qualityLines.join('\n')}` : ''}`
|
|
71
85
|
const decision = await getToolApprovals().request(identity.agentId, '', 'kb', detail, {
|
|
72
86
|
title: '知识库入库审批',
|
|
73
|
-
payload: {
|
|
87
|
+
payload: {
|
|
88
|
+
tool: 'kb_agent',
|
|
89
|
+
action: 'ingest',
|
|
90
|
+
prompt: prompt.slice(0, 2000),
|
|
91
|
+
mode: String(args.mode ?? 'sync'),
|
|
92
|
+
causalClaim: { isCausal: claim.isCausal, hasEvidenceRef: claim.hasEvidenceRef, anecdotal: claim.anecdotal, refs: claim.refs },
|
|
93
|
+
},
|
|
74
94
|
})
|
|
75
95
|
if (!decision.approved) {
|
|
76
96
|
recordOps({
|