agentworkshop 0.7.71 → 0.8.1

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.
Files changed (629) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +455 -0
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +455 -0
  3. package/.output/nitro.json +1 -1
  4. package/.output/public/_nuxt/{DJJDigim2.js → -FhgRqJl2.js} +1 -1
  5. package/.output/public/_nuxt/{CGk_VUhO2.js → 0qvcO_KM2.js} +1 -1
  6. package/.output/public/_nuxt/26OL4Ao82.js +1 -0
  7. package/.output/public/_nuxt/{sBDZymdy2.js → 2Kwo_j9G2.js} +1 -1
  8. package/.output/public/_nuxt/{BqYVLAcm.js → 2v5GdspM.js} +1 -1
  9. package/.output/public/_nuxt/{DkQBMVTs2.js → 8M7wFbEN2.js} +1 -1
  10. package/.output/public/_nuxt/{DtiY69xi2.js → 8SZLbrI42.js} +1 -1
  11. package/.output/public/_nuxt/{DF32f5EL2.js → B2NbzUau2.js} +1 -1
  12. package/.output/public/_nuxt/{CwZW1ZCe2.js → B4JlRHBB2.js} +1 -1
  13. package/.output/public/_nuxt/{BQOn0q6Y.js → B6C4WofF.js} +1 -1
  14. package/.output/public/_nuxt/{BC7W6lNm.js → B6UwtJ1a.js} +1 -1
  15. package/.output/public/_nuxt/{BfQ-ptH0.js → B8HFUsMH.js} +1 -1
  16. package/.output/public/_nuxt/{DzBbYWrw2.js → BBB_j2LU2.js} +1 -1
  17. package/.output/public/_nuxt/BCLUwdP52.js +1 -0
  18. package/.output/public/_nuxt/{CLxmY3Rh.js → BK4wbfGS.js} +1 -1
  19. package/.output/public/_nuxt/{BRMVDfPl2.js → BKidykmV2.js} +1 -1
  20. package/.output/public/_nuxt/BPUQZ9Lq2.js +8 -0
  21. package/.output/public/_nuxt/BRYBzVMJ.js +1 -0
  22. package/.output/public/_nuxt/{Bj5sjA5O.js → BRci9D_l.js} +1 -1
  23. package/.output/public/_nuxt/{Dmgqz2np2.js → BVGzwAxr2.js} +1 -1
  24. package/.output/public/_nuxt/BVg2R2VB2.js +1 -0
  25. package/.output/public/_nuxt/{C3aUN4Vp2.js → BW2uTUx52.js} +1 -1
  26. package/.output/public/_nuxt/{B5FKaMM02.js → BY3Lbz3h2.js} +1 -1
  27. package/.output/public/_nuxt/{DIwmMa_7.js → BYzim_Bn.js} +1 -1
  28. package/.output/public/_nuxt/{D8xUsQGt.js → B_Obcbiu.js} +1 -1
  29. package/.output/public/_nuxt/BaYDgyaR.js +3 -0
  30. package/.output/public/_nuxt/{DZJ11BTI.js → BbACaREb.js} +1 -1
  31. package/.output/public/_nuxt/{BJrj5JVe2.js → BcosvNXb2.js} +1 -1
  32. package/.output/public/_nuxt/{B_-vAvzb.js → BfeXib9G.js} +1 -1
  33. package/.output/public/_nuxt/{CeLqojCJ.js → BfgTar9L.js} +1 -1
  34. package/.output/public/_nuxt/BfvuWqSa.js +1 -0
  35. package/.output/public/_nuxt/{D8r8PNQa2.js → BiZWwdcD2.js} +1 -1
  36. package/.output/public/_nuxt/BkEokGX5.js +1 -0
  37. package/.output/public/_nuxt/{CJSohaqk2.js → BklGqEto2.js} +2 -2
  38. package/.output/public/_nuxt/{DkpmSnHX.js → Bko5adbu.js} +1 -1
  39. package/.output/public/_nuxt/{DTQTGA6v2.js → BmBlIIJo2.js} +1 -1
  40. package/.output/public/_nuxt/{D_NjL-Hz.js → Bmvt9ydE.js} +1 -1
  41. package/.output/public/_nuxt/{Cp4r6Eiz.js → BoyuIoSm.js} +1 -1
  42. package/.output/public/_nuxt/{62J4vljm2.js → Bq-tmkst.js} +1 -1
  43. package/.output/public/_nuxt/{BMMoqi94.js → BqFaZ4kS.js} +1 -1
  44. package/.output/public/_nuxt/BsJYieAL2.js +1 -0
  45. package/.output/public/_nuxt/{DD4J2Otc.js → BtZKe9ZV.js} +1 -1
  46. package/.output/public/_nuxt/{BnpY_zNx.js → BtumQhZK.js} +1 -1
  47. package/.output/public/_nuxt/{BjLzqWJH2.js → BwWs9EdO2.js} +1 -1
  48. package/.output/public/_nuxt/{Bx2a9cuY2.js → BxxpJxZf2.js} +1 -1
  49. package/.output/public/_nuxt/{qRXa-PM22.js → ByTnUqFw2.js} +1 -1
  50. package/.output/public/_nuxt/{DvOETuoT2.js → Byiiiwc72.js} +1 -1
  51. package/.output/public/_nuxt/{Car2lkbb.js → C1-SuwUN.js} +1 -1
  52. package/.output/public/_nuxt/{Dg81dOEO.js → C14pM5G4.js} +1 -1
  53. package/.output/public/_nuxt/{MDhaRQq_.js → C2Yp-B8m.js} +1 -1
  54. package/.output/public/_nuxt/{BJ2nJNlK2.js → C4e6_nom2.js} +1 -1
  55. package/.output/public/_nuxt/{CiCEprsp2.js → C5OStZJ62.js} +1 -1
  56. package/.output/public/_nuxt/{ByMj6e7s.js → C6lssmvl.js} +2 -2
  57. package/.output/public/_nuxt/{C6uBP0Xa.js → CC-GEjfN.js} +1 -1
  58. package/.output/public/_nuxt/CC2Pv8VL2.js +1 -0
  59. package/.output/public/_nuxt/{DKiqdYnj.js → CCcMgxV9.js} +1 -1
  60. package/.output/public/_nuxt/{5S26I34j2.js → CDL30A2z2.js} +1 -1
  61. package/.output/public/_nuxt/{B8C-QJB5.js → CDYLasP8.js} +1 -1
  62. package/.output/public/_nuxt/CElzwyXQ.js +1 -0
  63. package/.output/public/_nuxt/{2KE8xGVm.js → CEvJu-xI.js} +1 -1
  64. package/.output/public/_nuxt/{CR612R752.js → CFQRFctQ2.js} +1 -1
  65. package/.output/public/_nuxt/{DnzjxC0u.js → CHk9XxNi.js} +2 -2
  66. package/.output/public/_nuxt/{Bx4MR0jd.js → CLFmtXU7.js} +1 -1
  67. package/.output/public/_nuxt/{DW8k_0dQ.js → CMJi6yYS.js} +1 -1
  68. package/.output/public/_nuxt/{DD-r0S1p.js → CPvFGbr8.js} +1 -1
  69. package/.output/public/_nuxt/{CCgbgkid.js → CQSxS_Ek.js} +2 -2
  70. package/.output/public/_nuxt/{jGxHnjW6.js → CQuo31jF.js} +1 -1
  71. package/.output/public/_nuxt/{SoO2K-di.js → CRCrWy-6.js} +1 -1
  72. package/.output/public/_nuxt/CUCFFL9m.js +84 -0
  73. package/.output/public/_nuxt/CZYNy60j2.js +1 -0
  74. package/.output/public/_nuxt/{WPwdj9pg.js → CZsFf7ck.js} +1 -1
  75. package/.output/public/_nuxt/CfFUK6932.js +2 -0
  76. package/.output/public/_nuxt/{DAsjfdZD.js → CfIbFnJz.js} +1 -1
  77. package/.output/public/_nuxt/{Tk6TQZjU.js → CjF4QY9h.js} +1 -1
  78. package/.output/public/_nuxt/{DlUQa0wn.js → Cjo1t2IF.js} +1 -1
  79. package/.output/public/_nuxt/{CDn0eDn8.js → CmuGMxDP.js} +1 -1
  80. package/.output/public/_nuxt/Cn6EojFe.js +1 -0
  81. package/.output/public/_nuxt/{DLqSQbGv.js → CnYazk8d.js} +1 -1
  82. package/.output/public/_nuxt/{DQfy6R_2.js → CnrGVJIr.js} +1 -1
  83. package/.output/public/_nuxt/{C0YL0HKK.js → CtcBhkci.js} +1 -1
  84. package/.output/public/_nuxt/{h5gsh8E92.js → Cv-Mv7_h2.js} +1 -1
  85. package/.output/public/_nuxt/{vPcnBJsa2.js → CzlZrfq82.js} +1 -1
  86. package/.output/public/_nuxt/{C2YYOgMe.js → CznnUTZx.js} +2 -2
  87. package/.output/public/_nuxt/{csitHKnE2.js → D-80EfyA2.js} +1 -1
  88. package/.output/public/_nuxt/{BRdoISnJ2.js → D1C6qtS12.js} +1 -1
  89. package/.output/public/_nuxt/{Cnrmlixo.js → D1MkndMZ.js} +2 -2
  90. package/.output/public/_nuxt/{BLwDhlaa.js → D37gODe0.js} +1 -1
  91. package/.output/public/_nuxt/{NXY37IO62.js → D6FhDrYe2.js} +1 -1
  92. package/.output/public/_nuxt/{Btx8wL4-.js → D7TZLu4F.js} +1 -1
  93. package/.output/public/_nuxt/{qoUdVDnC.js → D7tEwf-o.js} +3 -3
  94. package/.output/public/_nuxt/D8HQPtm62.js +1 -0
  95. package/.output/public/_nuxt/D9O4L4jK.js +1 -0
  96. package/.output/public/_nuxt/{aQ1B7BZa2.js → D9lL3fJM2.js} +2 -2
  97. package/.output/public/_nuxt/{CT-vTjcG2.js → DC-2eKo62.js} +1 -1
  98. package/.output/public/_nuxt/DF9ETYJ32.js +1 -0
  99. package/.output/public/_nuxt/DGGBrc0q2.js +1 -0
  100. package/.output/public/_nuxt/DGu_fna7.js +1 -0
  101. package/.output/public/_nuxt/{BupBjt6B.js → DKOvbitt.js} +1 -1
  102. package/.output/public/_nuxt/{B1PzYsqN.js → DNxudyND.js} +1 -1
  103. package/.output/public/_nuxt/{BfX6_AjY.js → DOT-XQyi.js} +1 -1
  104. package/.output/public/_nuxt/{BsTZnkVK.js → DPPC9Teq.js} +1 -1
  105. package/.output/public/_nuxt/{HxohXQ_r.js → DRskyE7l.js} +1 -1
  106. package/.output/public/_nuxt/{B-U7E_Mc2.js → DW4ZgInh2.js} +1 -1
  107. package/.output/public/_nuxt/{BErG4kzc2.js → DWe6BMlp2.js} +1 -1
  108. package/.output/public/_nuxt/DWy0AjON.js +1 -0
  109. package/.output/public/_nuxt/{Bc_k6AVA.js → DXgw1dVL.js} +4 -4
  110. package/.output/public/_nuxt/{C3sWJ8SD2.js → DZsKIzKD2.js} +1 -1
  111. package/.output/public/_nuxt/D_59BNP1.js +14 -0
  112. package/.output/public/_nuxt/{BQIO4MkA2.js → D_FZ3KZI2.js} +1 -1
  113. package/.output/public/_nuxt/{n_Njdwii2.js → D__vJGHF2.js} +1 -1
  114. package/.output/public/_nuxt/{C9gErLQc2.js → DaizNGUm2.js} +1 -1
  115. package/.output/public/_nuxt/{C-MY-JQE2.js → DdyE0ylS.js} +1 -1
  116. package/.output/public/_nuxt/DgrK8UCQ.js +0 -0
  117. package/.output/public/_nuxt/DhLlTxQh2.js +1 -0
  118. package/.output/public/_nuxt/DhW7cFOa.js +1 -0
  119. package/.output/public/_nuxt/{Rt2i6k7C2.js → DhjgWrB62.js} +1 -1
  120. package/.output/public/_nuxt/{KwT4sN_d.js → DiWcX4gj.js} +1 -1
  121. package/.output/public/_nuxt/DiloA8vK.js +1 -0
  122. package/.output/public/_nuxt/{DX-c5laM2.js → DlS-SkQ42.js} +1 -1
  123. package/.output/public/_nuxt/{D_Zspo1y.js → DmHp9yQ3.js} +1 -1
  124. package/.output/public/_nuxt/{dq1HKoGD.js → DoL9u6wu.js} +1 -1
  125. package/.output/public/_nuxt/{CIvMT5Ic.js → DqxBCeDe.js} +1 -1
  126. package/.output/public/_nuxt/{BnNmkGJS2.js → DrlnrdvY2.js} +3 -3
  127. package/.output/public/_nuxt/{BAcjVcku2.js → Dt8TL8_X2.js} +1 -1
  128. package/.output/public/_nuxt/{BtfwbNC0.js → Du7gS8RU.js} +1 -1
  129. package/.output/public/_nuxt/DuUc4bbY2.js +1 -0
  130. package/.output/public/_nuxt/{DPUXbTg9.js → DudoisLM.js} +1 -1
  131. package/.output/public/_nuxt/{Ce5R-ZGf2.js → DwgVlehj2.js} +1 -1
  132. package/.output/public/_nuxt/Dyxf2xZw.js +1 -0
  133. package/.output/public/_nuxt/Dz9C2pTa.js +1 -0
  134. package/.output/public/_nuxt/{BYxG9Hb2.js → EMbqTHfT.js} +1 -1
  135. package/.output/public/_nuxt/{B1SzppY12.js → FsRVXpyF2.js} +1 -1
  136. package/.output/public/_nuxt/{0MLy6ogg2.js → GQrEW8nk2.js} +1 -1
  137. package/.output/public/_nuxt/{Tuz5LcLM.js → IXR1BWP5.js} +1 -1
  138. package/.output/public/_nuxt/{-jpUnM1I2.js → Iub61dX92.js} +1 -1
  139. package/.output/public/_nuxt/{CQgOzpvI.js → JegDslce.js} +2 -2
  140. package/.output/public/_nuxt/{DrF3TWoj.js → KzK37yIr.js} +1 -1
  141. package/.output/public/_nuxt/{Br3MggOL.js → N-CCmCsX.js} +1 -1
  142. package/.output/public/_nuxt/{DHhmq7s_.js → NfvZ5Lzv.js} +1 -1
  143. package/.output/public/_nuxt/{CzX_kaPL.js → POTcePF_.js} +1 -1
  144. package/.output/public/_nuxt/{D7s96J3r2.js → Q-JpBT032.js} +1 -1
  145. package/.output/public/_nuxt/{DzwIZ81f2.js → R1g64DNi2.js} +1 -1
  146. package/.output/public/_nuxt/{JgheoP3e.js → R5Pz7BqB.js} +1 -1
  147. package/.output/public/_nuxt/{yLyz0-Yz.js → SvjzWbn8.js} +1 -1
  148. package/.output/public/_nuxt/{Dd7MZc_Q.js → XqXoaoDs.js} +1 -1
  149. package/.output/public/_nuxt/{B6jtLy6z.js → YAA98rWJ.js} +11 -11
  150. package/.output/public/_nuxt/{HX4_xnak2.js → YLYSczSq2.js} +1 -1
  151. package/.output/public/_nuxt/{BBw9ylUY2.js → YNhAoK-R2.js} +1 -1
  152. package/.output/public/_nuxt/Zkbt8Uk5.js +1 -0
  153. package/.output/public/_nuxt/aml.PalMp-5n.css +1 -0
  154. package/.output/public/_nuxt/{C41CcsiD.js → b7UcqLKi.js} +1 -1
  155. package/.output/public/_nuxt/builds/latest.json +1 -1
  156. package/.output/public/_nuxt/builds/meta/fa0af8b5-3929-428d-a6de-3b5cc6b8248f.json +1 -0
  157. package/.output/public/_nuxt/{DVkFSOZi.js → cKj4vSo5.js} +1 -1
  158. package/.output/public/_nuxt/{r1CpGsFp.js → dHwWyr6b.js} +1 -1
  159. package/.output/public/_nuxt/{default.BzOcvmSE.css → default.BEXGWZFQ.css} +1 -1
  160. package/.output/public/_nuxt/{DlcA9Gxl.js → eePbiWEh.js} +1 -1
  161. package/.output/public/_nuxt/{entry.CL2i0F8o.css → entry.C7koBPom.css} +1 -1
  162. package/.output/public/_nuxt/{cjRzSvAg2.js → eymRov9Y2.js} +1 -1
  163. package/.output/public/_nuxt/{B8cViLJT.js → geMze5qw.js} +1 -1
  164. package/.output/public/_nuxt/{uu1wfdfR2.js → gh-WMxV_2.js} +1 -1
  165. package/.output/public/_nuxt/{Ce6e1mPk2.js → hCN555XP2.js} +1 -1
  166. package/.output/public/_nuxt/{rdUE8Khf.js → hZG5MLjK.js} +3 -3
  167. package/.output/public/_nuxt/{CcX_jP-d.js → hlfahYxK.js} +1 -1
  168. package/.output/public/_nuxt/{cGSl2GZp2.js → ilJHF1nA2.js} +1 -1
  169. package/.output/public/_nuxt/{D6ZcgHPz.js → jDuiDtGb.js} +1 -1
  170. package/.output/public/_nuxt/{DbeNMehP.js → k9b520K-.js} +1 -1
  171. package/.output/public/_nuxt/ontology.B_3Wn907.css +1 -0
  172. package/.output/public/_nuxt/optimizer.CLA8I1sy.css +1 -0
  173. package/.output/public/_nuxt/{DSORcpTJ.js → rDvMijKA.js} +2 -2
  174. package/.output/public/_nuxt/{CAiHhX8P2.js → rF7mggl72.js} +2 -2
  175. package/.output/public/_nuxt/ri9UF8rk.js +2 -0
  176. package/.output/public/_nuxt/{KgnxOsMr.js → toG_qAMH.js} +1 -1
  177. package/.output/public/_nuxt/{KQZmHR_K.js → u3h4pGpm.js} +2 -2
  178. package/.output/public/_nuxt/{dJ7gK7C2.js → uomnHjhM.js} +1 -1
  179. package/.output/public/_nuxt/{BUTg4W_x2.js → v77qozuJ2.js} +1 -1
  180. package/.output/public/_nuxt/{BcEr7tIB.js → v7cV7hJa.js} +1 -1
  181. package/.output/public/_nuxt/{D25dVZ822.js → vkQoYNQR2.js} +2 -2
  182. package/.output/public/_nuxt/{wR_w07322.js → vp3LtnTz2.js} +1 -1
  183. package/.output/public/_nuxt/{Bnc8HELj2.js → we7-sMSo2.js} +1 -1
  184. package/.output/public/_nuxt/{kN3ZzR1-.js → wxISMS1i.js} +1 -1
  185. package/.output/public/_nuxt/{DGrrucbG2.js → zy7efYKR.js} +1 -1
  186. package/.output/server/chunks/_/access.mjs +1 -1
  187. package/.output/server/chunks/_/binding-authz.mjs +1 -1
  188. package/.output/server/chunks/_/catalog-view.mjs +1 -1
  189. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  190. package/.output/server/chunks/_/chart-repo.mjs +1 -1
  191. package/.output/server/chunks/_/dashboard-repo.mjs +1 -1
  192. package/.output/server/chunks/_/data-export.mjs +6 -6
  193. package/.output/server/chunks/_/data-query.mjs +3 -3
  194. package/.output/server/chunks/_/eda-run.repo.mjs +2 -2
  195. package/.output/server/chunks/_/entity.mjs +1 -1
  196. package/.output/server/chunks/_/features.mjs +5 -5
  197. package/.output/server/chunks/_/golden.mjs +3 -3
  198. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  199. package/.output/server/chunks/_/index.mjs +1 -1
  200. package/.output/server/chunks/_/mes-console.mjs +1 -1
  201. package/.output/server/chunks/_/nitro.mjs +7291 -3540
  202. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  203. package/.output/server/chunks/_/ocap.mjs +1 -1
  204. package/.output/server/chunks/_/rest-auth.mjs +1 -1
  205. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  206. package/.output/server/chunks/_/spc.mjs +2 -2
  207. package/.output/server/chunks/build/TownView-BWMDbosY.mjs +1 -1
  208. package/.output/server/chunks/build/{_wsId_-BNKrrV1H.mjs → _wsId_-BPy-Aj9L.mjs} +3 -3
  209. package/.output/server/chunks/build/{_wsId_-BNKrrV1H.mjs.map → _wsId_-BPy-Aj9L.mjs.map} +1 -1
  210. package/.output/server/chunks/build/{agents-8tV9xL97.mjs → agents-CpNLdI8E.mjs} +6 -6
  211. package/.output/server/chunks/build/{agents-8tV9xL97.mjs.map → agents-CpNLdI8E.mjs.map} +1 -1
  212. package/.output/server/chunks/build/{aml-BNTEDOsl.mjs → aml-DRAFRcGU.mjs} +15 -12
  213. package/.output/server/chunks/build/{aml-BNTEDOsl.mjs.map → aml-DRAFRcGU.mjs.map} +1 -1
  214. package/.output/server/chunks/build/api-BEW_ebY_.mjs +64 -0
  215. package/.output/server/chunks/build/api-BEW_ebY_.mjs.map +1 -0
  216. package/.output/server/chunks/build/{channel-templates-Iot9Y3vV.mjs → channel-templates-ByHOQQkO.mjs} +2 -2
  217. package/.output/server/chunks/build/{channel-templates-Iot9Y3vV.mjs.map → channel-templates-ByHOQQkO.mjs.map} +1 -1
  218. package/.output/server/chunks/build/daq-CdxcfY_G.mjs +1 -1
  219. package/.output/server/chunks/build/dcw-BlDQtS4q.mjs +1 -1
  220. package/.output/server/chunks/build/{default-BeB88U7y.mjs → default-CNWS6NUw.mjs} +17 -11
  221. package/.output/server/chunks/build/{default-BeB88U7y.mjs.map → default-CNWS6NUw.mjs.map} +1 -1
  222. package/.output/server/chunks/build/{dropdown-CjwsxU39.mjs → dropdown-BNwTVGde.mjs} +2 -2
  223. package/.output/server/chunks/build/{dropdown-CjwsxU39.mjs.map → dropdown-BNwTVGde.mjs.map} +1 -1
  224. package/.output/server/chunks/build/{dropdown-C6YH_kSO.mjs → dropdown-Cd-xPhR6.mjs} +2 -2
  225. package/.output/server/chunks/build/{dropdown-C6YH_kSO.mjs.map → dropdown-Cd-xPhR6.mjs.map} +1 -1
  226. package/.output/server/chunks/build/input-number-BNlNDK7H.mjs +1 -1
  227. package/.output/server/chunks/build/{logs-BTfJQ6vQ.mjs → logs-pRb-TMWa.mjs} +3 -3
  228. package/.output/server/chunks/build/{logs-BTfJQ6vQ.mjs.map → logs-pRb-TMWa.mjs.map} +1 -1
  229. package/.output/server/chunks/build/{monitor-DvaR3yo8.mjs → monitor-Cq6hRFeQ.mjs} +6 -6
  230. package/.output/server/chunks/build/{monitor-DvaR3yo8.mjs.map → monitor-Cq6hRFeQ.mjs.map} +1 -1
  231. package/.output/server/chunks/build/ontology-DK0Mf0zT.mjs +1406 -0
  232. package/.output/server/chunks/build/ontology-DK0Mf0zT.mjs.map +1 -0
  233. package/.output/server/chunks/build/{operations-Cl8nVm9D.mjs → operations-SMQrRAcr.mjs} +3 -3
  234. package/.output/server/chunks/build/{operations-Cl8nVm9D.mjs.map → operations-SMQrRAcr.mjs.map} +1 -1
  235. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +202 -0
  236. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs.map +1 -0
  237. package/.output/server/chunks/build/{pagination-KaIvHBzi.mjs → pagination-DTAconUo.mjs} +2 -2
  238. package/.output/server/chunks/build/{pagination-KaIvHBzi.mjs.map → pagination-DTAconUo.mjs.map} +1 -1
  239. package/.output/server/chunks/build/{permissions-CVTfixZj.mjs → permissions-DgXQZSyx.mjs} +6 -6
  240. package/.output/server/chunks/build/{permissions-CVTfixZj.mjs.map → permissions-DgXQZSyx.mjs.map} +1 -1
  241. package/.output/server/chunks/build/{schedules-BLhn2CLn.mjs → schedules-dSnr8url.mjs} +6 -6
  242. package/.output/server/chunks/build/{schedules-BLhn2CLn.mjs.map → schedules-dSnr8url.mjs.map} +1 -1
  243. package/.output/server/chunks/build/{select--XFl7CtY.mjs → select-B3Dsb9yq.mjs} +3 -3
  244. package/.output/server/chunks/build/{select--XFl7CtY.mjs.map → select-B3Dsb9yq.mjs.map} +1 -1
  245. package/.output/server/chunks/build/{settings-DIf_iYdu.mjs → settings-BrIhnS2Z.mjs} +2 -2
  246. package/.output/server/chunks/build/{settings-DIf_iYdu.mjs.map → settings-BrIhnS2Z.mjs.map} +1 -1
  247. package/.output/server/chunks/build/{table-DIu_YCJN.mjs → table-CmVD-cA9.mjs} +4 -4
  248. package/.output/server/chunks/build/{table-DIu_YCJN.mjs.map → table-CmVD-cA9.mjs.map} +1 -1
  249. package/.output/server/chunks/build/{teams-B2J6ouRY.mjs → teams-B1d32eHK.mjs} +4 -4
  250. package/.output/server/chunks/build/{teams-B2J6ouRY.mjs.map → teams-B1d32eHK.mjs.map} +1 -1
  251. package/.output/server/chunks/build/{tokens-DFQGaN2n.mjs → tokens-GYaGJ35Z.mjs} +6 -6
  252. package/.output/server/chunks/build/{tokens-DFQGaN2n.mjs.map → tokens-GYaGJ35Z.mjs.map} +1 -1
  253. package/.output/server/chunks/build/{tools-DWJFnU_t.mjs → tools-s_9U1Djj.mjs} +6 -6
  254. package/.output/server/chunks/build/{tools-DWJFnU_t.mjs.map → tools-s_9U1Djj.mjs.map} +1 -1
  255. package/.output/server/chunks/build/types-D6J7slEa.mjs +6 -2
  256. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
  257. package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs +1 -1
  258. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
  259. package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs +1 -1
  260. package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +1 -1
  261. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
  262. package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs +1 -1
  263. package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs +1 -1
  264. package/.output/server/chunks/build/{users-BWw0VCr9.mjs → users-DjiVC_tS.mjs} +6 -6
  265. package/.output/server/chunks/build/{users-BWw0VCr9.mjs.map → users-DjiVC_tS.mjs.map} +1 -1
  266. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  267. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +2 -2
  268. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +17 -4
  269. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  270. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
  274. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +1 -1
  276. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  280. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
  281. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
  282. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
  285. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
  286. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  287. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  288. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
  290. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
  291. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
  294. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
  295. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  296. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  297. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  298. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
  299. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
  300. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  301. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  302. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
  303. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +8 -2
  304. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
  306. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
  307. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
  309. package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +1 -1
  310. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +1 -1
  311. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +1 -1
  312. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  316. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  317. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  319. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  320. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs +1 -1
  321. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  322. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  323. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
  324. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
  325. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +1 -1
  326. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  327. package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs +1 -1
  328. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
  329. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
  330. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +7 -7
  332. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  333. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  334. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  335. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  336. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +2 -2
  337. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  338. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  339. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  340. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  341. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -1
  343. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  344. package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs +1 -1
  345. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
  346. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  347. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  348. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  349. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  350. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  351. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  352. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  353. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  356. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  357. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  359. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  360. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  361. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  362. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  365. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  366. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  367. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  368. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  369. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  370. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  374. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  375. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  376. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  377. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
  378. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +1 -1
  379. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +1 -1
  380. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +1 -1
  381. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  383. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
  386. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
  387. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  389. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  390. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +1 -1
  394. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  395. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +1 -1
  396. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  397. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  400. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  401. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +1 -1
  410. package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  419. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  422. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  423. package/.output/server/chunks/routes/api/workshop/index.mjs +62 -0
  424. package/.output/server/chunks/routes/api/workshop/index.mjs.map +1 -0
  425. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  426. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -1
  427. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +1 -1
  428. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +1 -1
  429. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  430. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  431. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  432. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  433. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  434. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  435. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  436. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  437. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -1
  438. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
  439. package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +1 -1
  440. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +52 -0
  441. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs.map +1 -0
  442. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +54 -0
  443. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs.map +1 -0
  444. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +51 -0
  445. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs.map +1 -0
  446. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +67 -0
  447. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs.map +1 -0
  448. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +49 -0
  449. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs.map +1 -0
  450. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +35 -0
  451. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs.map +1 -0
  452. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +49 -0
  453. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs.map +1 -0
  454. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +38 -0
  455. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs.map +1 -0
  456. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +35 -0
  457. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs.map +1 -0
  458. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +70 -0
  459. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs.map +1 -0
  460. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +64 -0
  461. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs.map +1 -0
  462. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +44 -0
  463. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs.map +1 -0
  464. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +43 -0
  465. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs.map +1 -0
  466. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +38 -0
  467. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs.map +1 -0
  468. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +40 -0
  469. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs.map +1 -0
  470. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +63 -0
  471. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs.map +1 -0
  472. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
  473. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +1 -1
  474. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
  475. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
  476. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
  477. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
  478. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
  479. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +1 -1
  480. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  481. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  482. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
  483. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
  484. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +1 -1
  485. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
  486. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
  487. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
  488. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  489. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  490. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  491. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  492. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  493. package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +1 -1
  494. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
  495. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  496. package/.output/server/chunks/routes/renderer.mjs +2 -2
  497. package/.output/server/chunks/virtual/entry.mjs +323 -18
  498. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  499. package/.output/server/package.json +1 -1
  500. package/README-zh.md +28 -6
  501. package/README.md +26 -4
  502. package/app/components/AppSidebar.vue +1 -0
  503. package/app/components/aml/AmlModelsTable.vue +5 -0
  504. package/app/components/ontology/OntologyGraph.vue +356 -0
  505. package/app/pages/aml/styles.css +1 -0
  506. package/app/pages/ontology/api.ts +18 -0
  507. package/app/pages/ontology/index.vue +1062 -0
  508. package/app/pages/ontology/types.ts +164 -0
  509. package/app/pages/optimizer/index.vue +21 -4
  510. package/config.yml +1 -1
  511. package/docs/cli.en.md +2 -2
  512. package/docs/cli.md +2 -2
  513. package/docs/plugins.en.md +1 -1
  514. package/docs/plugins.md +1 -1
  515. package/docs/sdk.en.md +1 -1
  516. package/docs/sdk.md +1 -1
  517. package/i18n/locales/en.ts +84 -0
  518. package/i18n/locales/zh-CN.ts +84 -0
  519. package/mcp/aw-mcp-server.mjs +53 -1
  520. package/package.json +1 -1
  521. package/scripts/docs-shots.mjs +36 -0
  522. package/scripts/e2e-direct-rest-simulator-paper.mjs +624 -0
  523. package/scripts/e2e-idd-results.mjs +177 -0
  524. package/scripts/e2e-model-loop-live.mjs +785 -0
  525. package/scripts/e2e-ontology-live.mjs +909 -0
  526. package/scripts/e2e-ontology.mjs +393 -0
  527. package/scripts/e2e-pi-simulator-paper.mjs +2316 -0
  528. package/scripts/e2e-registered-harness-simulator-paper.mjs +1926 -0
  529. package/scripts/e2e-simulator-optimizer-paper.mjs +264 -0
  530. package/scripts/fixtures/omp-paper-harness.mjs +163 -0
  531. package/scripts/ontology-idd-rag-e2e.mjs +449 -0
  532. package/sdk/context.mjs +6 -0
  533. package/sdk/index.d.mts +2 -0
  534. package/server/api/workshop/agent-tools/approvals/[id]/decide.post.ts +16 -0
  535. package/server/api/workshop/aml/models/[id].patch.ts +36 -30
  536. package/server/api/workshop/ontology/drafts/[draftId]/autofix.ts +31 -0
  537. package/server/api/workshop/ontology/drafts/[draftId]/compile.ts +39 -0
  538. package/server/api/workshop/ontology/drafts/[draftId]/evidence.ts +33 -0
  539. package/server/api/workshop/ontology/drafts/[draftId]/publish.ts +44 -0
  540. package/server/api/workshop/ontology/drafts/[draftId]/rules/[ruleId]/approval-decision.ts +28 -0
  541. package/server/api/workshop/ontology/drafts/[draftId]/rules/[ruleId]/approval.ts +17 -0
  542. package/server/api/workshop/ontology/drafts/[draftId]/rules/[ruleId]/transition.ts +32 -0
  543. package/server/api/workshop/ontology/drafts/[draftId]/subgraph.ts +24 -0
  544. package/server/api/workshop/ontology/drafts/[draftId]/validate.ts +16 -0
  545. package/server/api/workshop/ontology/drafts/[draftId].ts +52 -0
  546. package/server/api/workshop/ontology/drafts/index.ts +20 -0
  547. package/server/api/workshop/ontology/export/[ontologyId].ts +50 -0
  548. package/server/api/workshop/ontology/index.ts +38 -0
  549. package/server/api/workshop/ontology/scene.ts +34 -0
  550. package/server/api/workshop/ontology/traces/[ontologyId].ts +19 -0
  551. package/server/api/workshop/ontology/versions/[ontologyId]/compare.ts +21 -0
  552. package/server/api/workshop/ontology/versions/[ontologyId].ts +42 -0
  553. package/server/plugins-builtin/diag-bridge/client.mjs +390 -239
  554. package/server/plugins-builtin/diag-bridge/host/helpers.mjs +80 -0
  555. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +264 -2
  556. package/server/plugins-builtin/diag-bridge/i18n.json +84 -4
  557. package/server/services/workshop/agents/adapters/omp-rpc-client/frames.ts +129 -111
  558. package/server/services/workshop/agents/hitl-decision/dispatcher.ts +15 -0
  559. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +17 -2
  560. package/server/services/workshop/agents/industrial/aml-job-tools.ts +602 -569
  561. package/server/services/workshop/agents/industrial/grant-guard.ts +73 -0
  562. package/server/services/workshop/agents/industrial/index.ts +38 -32
  563. package/server/services/workshop/agents/industrial/ontology-tools.ts +380 -0
  564. package/server/services/workshop/agents/industrial/ops-tools.ts +54 -16
  565. package/server/services/workshop/agents/industrial/optimizer-tools.ts +81 -0
  566. package/server/services/workshop/agents/industrial/recipe-gate.ts +19 -6
  567. package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +1 -1
  568. package/server/services/workshop/agents/industrial/tool-verify.ts +32 -2
  569. package/server/services/workshop/agents/omp-agent/supervision-history.ts +38 -0
  570. package/server/services/workshop/agents/omp-agent/tools-steer.ts +18 -1
  571. package/server/services/workshop/agents/tool-reference-spec.ts +1 -1
  572. package/server/services/workshop/aml/aml.repo.ts +16 -0
  573. package/server/services/workshop/aml/twin/physics-spec.ts +6 -22
  574. package/server/services/workshop/daq/bus/index.ts +12 -5
  575. package/server/services/workshop/daq/storage/index.ts +6 -5
  576. package/server/services/workshop/daq/storage/sqlite.adapter.ts +25 -13
  577. package/server/services/workshop/db/database/open.ts +97 -95
  578. package/server/services/workshop/db/database/schema.ts +156 -1
  579. package/server/services/workshop/ontology/autofix.ts +198 -0
  580. package/server/services/workshop/ontology/compiler.ts +474 -0
  581. package/server/services/workshop/ontology/contracts.ts +443 -0
  582. package/server/services/workshop/ontology/guards.ts +139 -0
  583. package/server/services/workshop/ontology/index.ts +12 -0
  584. package/server/services/workshop/ontology/ontology.service.ts +938 -0
  585. package/server/services/workshop/ontology/repo.ts +449 -0
  586. package/server/services/workshop/ontology/semantic-binding.service.ts +226 -0
  587. package/server/services/workshop/ontology/subgraph.core.ts +300 -0
  588. package/server/services/workshop/ontology/subgraph.service.ts +113 -0
  589. package/server/services/workshop/ontology/validator.ts +218 -0
  590. package/server/services/workshop/optimization/binding.repo.ts +7 -0
  591. package/server/services/workshop/optimization/contracts.ts +16 -0
  592. package/server/services/workshop/optimization/dispatch.service.ts +16 -0
  593. package/server/services/workshop/optimization/profile-adopt.service.ts +261 -0
  594. package/server/services/workshop/optimization/profile.repo.ts +24 -6
  595. package/server/services/workshop/optimization/python/__pycache__/problems.cpython-312.pyc +0 -0
  596. package/shared/dimensions.ts +124 -0
  597. package/.output/public/_nuxt/B3Y5bCrM.js +0 -1
  598. package/.output/public/_nuxt/B7s2qeyT.js +0 -14
  599. package/.output/public/_nuxt/B8N8nsad2.js +0 -2
  600. package/.output/public/_nuxt/BO0BJx3w.js +0 -8
  601. package/.output/public/_nuxt/BWn-lfCp2.js +0 -1
  602. package/.output/public/_nuxt/Bcs9zzO62.js +0 -1
  603. package/.output/public/_nuxt/BwO2Y5FH2.js +0 -1
  604. package/.output/public/_nuxt/C-LU6xv_.js +0 -1
  605. package/.output/public/_nuxt/CJ0bjZ6v2.js +0 -1
  606. package/.output/public/_nuxt/CJ3Vul2u.js +0 -1
  607. package/.output/public/_nuxt/CNwx04ln.js +0 -84
  608. package/.output/public/_nuxt/CVCscYzb2.js +0 -1
  609. package/.output/public/_nuxt/C_A0MCol2.js +0 -1
  610. package/.output/public/_nuxt/CnP6snIz.js +0 -3
  611. package/.output/public/_nuxt/D3buuIkE.js +0 -1
  612. package/.output/public/_nuxt/D4_INWgq.js +0 -1
  613. package/.output/public/_nuxt/D5kCimyw.js +0 -1
  614. package/.output/public/_nuxt/DBtXLkyA.js +0 -1
  615. package/.output/public/_nuxt/DHURbGkn2.js +0 -1
  616. package/.output/public/_nuxt/DaBzS-iu.js +0 -1
  617. package/.output/public/_nuxt/DnlhV7Xe.js +0 -1
  618. package/.output/public/_nuxt/GtI6PUI32.js +0 -1
  619. package/.output/public/_nuxt/LHIav-Kv.js +0 -1
  620. package/.output/public/_nuxt/Nw_6OpQZ.js +0 -1
  621. package/.output/public/_nuxt/RuMLNeQE.js +0 -1
  622. package/.output/public/_nuxt/Y4sMSPrS.js +0 -1
  623. package/.output/public/_nuxt/aml.CeLxRzvI.css +0 -1
  624. package/.output/public/_nuxt/builds/meta/0ae8cb0f-6ce5-4096-9692-9b1fc197b30d.json +0 -1
  625. package/.output/public/_nuxt/goF_oZHF.js +0 -2
  626. package/.output/public/_nuxt/optimizer.B8gCbU1b.css +0 -1
  627. package/.output/public/_nuxt/rJ7To74v2.js +0 -1
  628. package/.output/server/chunks/build/optimizer-BOtGWEtc.mjs +0 -200
  629. package/.output/server/chunks/build/optimizer-BOtGWEtc.mjs.map +0 -1
@@ -0,0 +1,1406 @@
1
+ import { t as table_default } from './table-CmVD-cA9.mjs';
2
+ import { h as _plugin_vue_export_helper_default, a as useI18n, d as useUserStore, j as button_default, b as api$1 } from '../virtual/entry.mjs';
3
+ import { S as Select } from './select-B3Dsb9yq.mjs';
4
+ import { T as Tag } from './tag-y0sn-xv9.mjs';
5
+ import { d as drawer_default } from './drawer-Caji0PLs.mjs';
6
+ import { s as segmented_default } from './segmented-D3HWtHPw.mjs';
7
+ import { a as apiErrorMessage } from './api-error-BwAQLw44.mjs';
8
+ import { n as ontologyApi } from './api-BEW_ebY_.mjs';
9
+ import { defineComponent, ref, computed, mergeProps, unref, withCtx, createTextVNode, toDisplayString, openBlock, createBlock, Fragment, createVNode, createCommentVNode, renderList, useId, useSSRContext } from 'vue';
10
+ import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent, ssrRenderList, ssrRenderClass, ssrRenderAttr, ssrRenderStyle } from 'vue/server-renderer';
11
+ import './firstNotUndefined-8H5_qHUu.mjs';
12
+ import '../_/SearchOutlined.mjs';
13
+ import './tooltip-C2n2nNiQ.mjs';
14
+ import './input-GtPuSEgt.mjs';
15
+ import './FormItemContext-BlyzocS0.mjs';
16
+ import './menu-BXt-X0dt.mjs';
17
+ import './pagination-DTAconUo.mjs';
18
+ import './responsiveObserve-DM3hpzhU.mjs';
19
+ import '../_/RightOutlined.mjs';
20
+ import '../_/LeftOutlined.mjs';
21
+ import './checkbox-CrT4cnfu.mjs';
22
+ import './dropdown-BNwTVGde.mjs';
23
+ import './dropdown-Cd-xPhR6.mjs';
24
+ import './spin-C2cuvGth.mjs';
25
+ import '../_/nitro.mjs';
26
+ import 'node:crypto';
27
+ import 'node:http';
28
+ import 'node:https';
29
+ import 'node:events';
30
+ import 'node:buffer';
31
+ import 'node:fs';
32
+ import 'node:path';
33
+ import 'node:url';
34
+ import 'js-yaml';
35
+ import 'node:os';
36
+ import 'zod';
37
+ import 'node:child_process';
38
+ import 'node:sqlite';
39
+ import 'node:module';
40
+ import 'node:zlib';
41
+ import 'node:dns/promises';
42
+ import 'node:net';
43
+ import 'node:fs/promises';
44
+ import 'node:util';
45
+ import 'node:v8';
46
+ import 'node:readline';
47
+ import 'unhead/utils';
48
+ import '../routes/renderer.mjs';
49
+ import 'unhead/server';
50
+ import 'unhead/legacy';
51
+ import 'unhead/plugins';
52
+ import 'nostics';
53
+ import 'vue-bundle-renderer/runtime';
54
+ import 'devalue';
55
+ import 'vue-router';
56
+ import 'pinia';
57
+ import '@ant-design/colors';
58
+ import 'axios';
59
+ import './isNumeric-CP7q_yhz.mjs';
60
+ import './apiClient-BvXtNzC8.mjs';
61
+
62
+ //#region app/components/ontology/OntologyGraph.vue?vue&type=script&setup=true&lang.ts
63
+ var WIDTH = 980;
64
+ var NODE_R = 7;
65
+ var OntologyGraph_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
66
+ __name: "OntologyGraph",
67
+ __ssrInlineRender: true,
68
+ props: {
69
+ entities: {},
70
+ relations: {},
71
+ selectedKey: {}
72
+ },
73
+ emits: ["select"],
74
+ setup(__props, { emit: __emit }) {
75
+ /**
76
+ * 本体节点-边可视化(自绘 SVG,零第三方图库)。
77
+ *
78
+ * 布局纪律:不做物理模拟 —— 按编译器口径分三道(与 compiler.ts 的 roleBucket 同源):
79
+ * MV = control / disturbance / feature
80
+ * CV = target / observation
81
+ * 结构/状态 = state / guard / 无 role
82
+ * 同道具内按文档顺序均布,因此布局确定性、可被 e2e 用 bounding box 断言。
83
+ */
84
+ const props = __props;
85
+ const { t } = useI18n();
86
+ const uid = useId().replace(/[^a-zA-Z0-9_-]/g, "");
87
+ const LANE_X = [
88
+ 150,
89
+ 490,
90
+ 830
91
+ ];
92
+ const LANE_OF_ROLE = {
93
+ control: 0,
94
+ disturbance: 0,
95
+ feature: 0,
96
+ target: 1,
97
+ observation: 1,
98
+ state: 2,
99
+ guard: 2
100
+ };
101
+ function laneOf(entity) {
102
+ return LANE_OF_ROLE[entity.role ?? ""] ?? 2;
103
+ }
104
+ function shortKey(key) {
105
+ const tail = key.includes(".") ? key.slice(key.indexOf(".") + 1) : key;
106
+ return tail.length > 18 ? `${tail.slice(0, 17)}…` : tail;
107
+ }
108
+ const laneLabels = computed(() => [
109
+ t("ontology.graph.lane.mv"),
110
+ t("ontology.graph.lane.cv"),
111
+ t("ontology.graph.lane.structural")
112
+ ]);
113
+ const laneMembers = computed(() => {
114
+ const lanes = [
115
+ [],
116
+ [],
117
+ []
118
+ ];
119
+ for (const entity of props.entities) lanes[laneOf(entity)].push(entity);
120
+ return lanes;
121
+ });
122
+ const height = computed(() => {
123
+ const maxCount = Math.max(1, ...laneMembers.value.map((list) => list.length));
124
+ return Math.max(360, Math.min(760, maxCount * 46 + 96));
125
+ });
126
+ const positions = computed(() => {
127
+ const map = /* @__PURE__ */ new Map();
128
+ laneMembers.value.forEach((members, lane) => {
129
+ const count = members.length;
130
+ members.forEach((entity, index) => {
131
+ const span = height.value - 96;
132
+ const y = count === 1 ? 48 + span / 2 : 48 + span * index / (count - 1);
133
+ map.set(entity.key, {
134
+ x: LANE_X[lane],
135
+ y,
136
+ lane
137
+ });
138
+ });
139
+ });
140
+ return map;
141
+ });
142
+ const entityKeys = computed(() => new Set(props.entities.map((e) => e.key)));
143
+ const visibleRelations = computed(() => props.relations.filter((relation) => entityKeys.value.has(relation.srcKey) && entityKeys.value.has(relation.dstKey)));
144
+ const edgePaths = computed(() => visibleRelations.value.flatMap((relation, index) => {
145
+ const from = positions.value.get(relation.srcKey);
146
+ const to = positions.value.get(relation.dstKey);
147
+ if (!from || !to) return [];
148
+ const tier = relation.properties?.evidenceTier ?? "candidate_influence";
149
+ const sameLane = from.lane === to.lane;
150
+ const curve = sameLane ? 46 + index * 6 : 0;
151
+ const x1 = from.x + (to.x >= from.x ? NODE_R : -7);
152
+ const x2 = to.x + (to.x >= from.x ? -7 : NODE_R);
153
+ const cx1 = sameLane ? from.x + curve : (x1 + x2) / 2;
154
+ const cx2 = sameLane ? to.x + curve : (x1 + x2) / 2;
155
+ return [{
156
+ id: relation.id,
157
+ kind: relation.kind,
158
+ tier,
159
+ d: `M ${x1} ${from.y} C ${cx1} ${from.y}, ${cx2} ${to.y}, ${x2} ${to.y}`,
160
+ labelX: (x1 + x2) / 2,
161
+ labelY: (from.y + to.y) / 2,
162
+ src: relation.srcKey,
163
+ dst: relation.dstKey
164
+ }];
165
+ }));
166
+ const tierClass = (tier) => `tier-${tier.replace(/_/g, "-")}`;
167
+ return (_ctx, _push, _parent, _attrs) => {
168
+ _push(`<div${ssrRenderAttrs(mergeProps({
169
+ class: "ontology-graph",
170
+ "data-testid": "ontology-graph"
171
+ }, _attrs))} data-v-9e1af505><svg class="graph-svg"${ssrRenderAttr("viewBox", `0 0 ${WIDTH} ${height.value}`)} style="${ssrRenderStyle({ height: `${height.value}px` })}" role="img"${ssrRenderAttr("aria-label", unref(t)("ontology.graph.aria"))} data-v-9e1af505><defs data-v-9e1af505><marker${ssrRenderAttr("id", `ont-arrow-${unref(uid)}`)} viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse" data-v-9e1af505><path d="M 0 0 L 10 5 L 0 10 z" class="edge-arrow" data-v-9e1af505></path></marker></defs><!--[-->`);
172
+ ssrRenderList(laneLabels.value, (label, index) => {
173
+ _push(`<g class="lane" data-v-9e1af505><line${ssrRenderAttr("x1", LANE_X[index])} y1="30"${ssrRenderAttr("x2", LANE_X[index])}${ssrRenderAttr("y2", height.value - 30)} class="lane-line" data-v-9e1af505></line><text${ssrRenderAttr("x", LANE_X[index])} y="18" class="lane-label" data-v-9e1af505>${ssrInterpolate(label)}</text></g>`);
174
+ });
175
+ _push(`<!--]--><!--[-->`);
176
+ ssrRenderList(edgePaths.value, (edge) => {
177
+ _push(`<g${ssrRenderAttr("data-edge-id", edge.id)}${ssrRenderAttr("data-src", edge.src)}${ssrRenderAttr("data-dst", edge.dst)}${ssrRenderAttr("data-kind", edge.kind)}${ssrRenderAttr("data-tier", edge.tier)} class="${ssrRenderClass([tierClass(edge.tier), "edge"])}" data-v-9e1af505><title data-v-9e1af505>${ssrInterpolate(edge.id)} · ${ssrInterpolate(edge.kind)}</title><path${ssrRenderAttr("d", edge.d)} class="edge-line"${ssrRenderAttr("marker-end", `url(#ont-arrow-${unref(uid)})`)} data-v-9e1af505></path></g>`);
178
+ });
179
+ _push(`<!--]--><!--[-->`);
180
+ ssrRenderList(__props.entities, (entity) => {
181
+ _push(`<g${ssrRenderAttr("data-node-key", entity.key)}${ssrRenderAttr("data-role", entity.role ?? "")}${ssrRenderAttr("data-kind", entity.kind)} class="${ssrRenderClass([{ selected: entity.key === __props.selectedKey }, "node"])}" role="button" tabindex="0"${ssrRenderAttr("aria-label", `${entity.key} · ${entity.name}`)} data-v-9e1af505><title data-v-9e1af505>${ssrInterpolate(entity.key)} · ${ssrInterpolate(entity.name)}${ssrInterpolate(entity.unit ? ` (${entity.unit})` : "")}</title>`);
182
+ if (entity.key === __props.selectedKey) _push(`<circle${ssrRenderAttr("cx", positions.value.get(entity.key)?.x ?? 0)}${ssrRenderAttr("cy", positions.value.get(entity.key)?.y ?? 0)}${ssrRenderAttr("r", 12)} class="node-halo" data-role="selection-halo" data-v-9e1af505></circle>`);
183
+ else _push(`<!---->`);
184
+ _push(`<circle${ssrRenderAttr("cx", positions.value.get(entity.key)?.x ?? 0)}${ssrRenderAttr("cy", positions.value.get(entity.key)?.y ?? 0)}${ssrRenderAttr("r", NODE_R)} class="node-dot" data-v-9e1af505></circle><text${ssrRenderAttr("x", (positions.value.get(entity.key)?.x ?? 0) + NODE_R + 6)}${ssrRenderAttr("y", (positions.value.get(entity.key)?.y ?? 0) + 4)} class="node-label" data-v-9e1af505>${ssrInterpolate(shortKey(entity.key))}</text></g>`);
185
+ });
186
+ _push(`<!--]--></svg><div class="legend" data-v-9e1af505><span class="legend-item candidate_influence" data-v-9e1af505>${ssrInterpolate(unref(t)("ontology.graph.tier.candidate"))}</span><span class="legend-item observed_correlation" data-v-9e1af505>${ssrInterpolate(unref(t)("ontology.graph.tier.observed"))}</span><span class="legend-item validated_control" data-v-9e1af505>${ssrInterpolate(unref(t)("ontology.graph.tier.validated"))}</span></div></div>`);
187
+ };
188
+ }
189
+ });
190
+ //#endregion
191
+ //#region app/components/ontology/OntologyGraph.vue
192
+ var _sfc_setup$1 = OntologyGraph_vue_vue_type_script_setup_true_lang_default.setup;
193
+ OntologyGraph_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
194
+ const ssrContext = useSSRContext();
195
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ontology/OntologyGraph.vue");
196
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
197
+ };
198
+ var OntologyGraph_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(OntologyGraph_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9e1af505"]]), { __name: "OntologyGraph" });
199
+ //#endregion
200
+ //#region app/pages/ontology/index.vue?vue&type=script&setup=true&lang.ts
201
+ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
202
+ __name: "index",
203
+ __ssrInlineRender: true,
204
+ setup(__props) {
205
+ /**
206
+ * 本体模型管理台(/ontology)—— 工业本体与语义资产的构建、审核、发布与编译预览。
207
+ *
208
+ * 三块职责:
209
+ * 1) 资产面:实体/关系/约束规则/语义绑定(本体 ↔ 数采/数控/配方参数)的可读可编辑视图;
210
+ * 2) 治理面:规则生命周期推进(proposed→reviewed→validated→approved_for_control)、
211
+ * 第二人批准、版本冻结与退役(发布仅 admin);
212
+ * 3) 解释面:编译预览四类产物 + Rule Trace,回答「这条建议为什么受此限制」。
213
+ *
214
+ * 设计纪律:页面不自己发明约束语义 —— 所有校验/编译/审批判定由服务端裁决,
215
+ * 前端只呈现结果与可行动原因(409/422 原样展示)。
216
+ */
217
+ const { t } = useI18n();
218
+ const userStore = useUserStore();
219
+ const tab = ref("overview");
220
+ const tabs = [
221
+ "overview",
222
+ "graph",
223
+ "rules",
224
+ "bindings",
225
+ "versions",
226
+ "compile"
227
+ ];
228
+ const loading = ref(false);
229
+ const busy = ref(false);
230
+ const overview = ref({
231
+ ontologies: [],
232
+ drafts: []
233
+ });
234
+ const draftId = ref("");
235
+ const detail = ref(null);
236
+ const versions = ref([]);
237
+ const diff = ref(null);
238
+ const preview = ref(null);
239
+ const diffFrom = ref(void 0);
240
+ const diffTo = ref(void 0);
241
+ const isAdmin = computed(() => userStore.isAdmin);
242
+ const doc = computed(() => detail.value?.doc ?? null);
243
+ const issues = computed(() => detail.value?.validation.issues ?? []);
244
+ const errors = computed(() => issues.value.filter((i) => i.severity === "error"));
245
+ const bindingFailures = computed(() => detail.value?.bindings.failures ?? []);
246
+ const lastFixes = ref([]);
247
+ const graphView = ref("graph");
248
+ const selectedKey = ref("");
249
+ const hops = ref(1);
250
+ const neighbors = ref(null);
251
+ const neighborsLoading = ref(false);
252
+ const neighborsError = ref("");
253
+ let neighborReq = 0;
254
+ const graphViewOptions = computed(() => [{
255
+ value: "graph",
256
+ label: t("ontology.graph.viewGraph")
257
+ }, {
258
+ value: "table",
259
+ label: t("ontology.graph.viewTable")
260
+ }]);
261
+ const selectedEntity = computed(() => (doc.value?.entities ?? []).find((e) => e.key === selectedKey.value) ?? null);
262
+ const selectedBindings = computed(() => (doc.value?.bindings ?? []).filter((b) => b.entityKey === selectedKey.value));
263
+ const drawerOpen = computed(() => Boolean(selectedEntity.value));
264
+ const neighborNodes = computed(() => (neighbors.value?.nodes ?? []).filter((n) => n.hop > 0));
265
+ const entityOptions = computed(() => (doc.value?.entities ?? []).map((e) => ({
266
+ value: e.key,
267
+ label: `${e.key} · ${e.name}`
268
+ })));
269
+ const largeGraph = computed(() => (doc.value?.entities.length ?? 0) > 60);
270
+ const draftOptions = computed(() => overview.value.drafts.map((d) => ({
271
+ value: d.id,
272
+ label: `${d.ontologyId} · rev ${d.rev}${d.baseVersion ? ` · 基线 v${d.baseVersion}` : ""}`
273
+ })));
274
+ const versionOptions = computed(() => versions.value.map((v) => ({
275
+ value: v.version,
276
+ label: `v${v.version}(${v.status})`
277
+ })));
278
+ const entityColumns = [
279
+ {
280
+ title: "key",
281
+ dataIndex: "key",
282
+ key: "key",
283
+ width: 180
284
+ },
285
+ {
286
+ title: t("ontology.col.kind"),
287
+ dataIndex: "kind",
288
+ key: "kind",
289
+ width: 140
290
+ },
291
+ {
292
+ title: t("ontology.col.name"),
293
+ dataIndex: "name",
294
+ key: "name"
295
+ },
296
+ {
297
+ title: t("ontology.col.role"),
298
+ dataIndex: "role",
299
+ key: "role",
300
+ width: 110
301
+ },
302
+ {
303
+ title: t("ontology.col.unit"),
304
+ dataIndex: "unit",
305
+ key: "unit",
306
+ width: 90
307
+ }
308
+ ];
309
+ const relationColumns = [
310
+ {
311
+ title: "id",
312
+ dataIndex: "id",
313
+ key: "id",
314
+ width: 180
315
+ },
316
+ {
317
+ title: t("ontology.col.predicate"),
318
+ dataIndex: "kind",
319
+ key: "kind",
320
+ width: 130
321
+ },
322
+ {
323
+ title: "src → dst",
324
+ key: "edge",
325
+ width: 300
326
+ },
327
+ {
328
+ title: t("ontology.col.evidenceTier"),
329
+ key: "tier",
330
+ width: 170
331
+ }
332
+ ];
333
+ const ruleColumns = [
334
+ {
335
+ title: "id",
336
+ dataIndex: "id",
337
+ key: "id",
338
+ width: 160
339
+ },
340
+ {
341
+ title: t("ontology.col.ruleKind"),
342
+ dataIndex: "kind",
343
+ key: "kind",
344
+ width: 140
345
+ },
346
+ {
347
+ title: t("ontology.col.level"),
348
+ dataIndex: "constraintLevel",
349
+ key: "level",
350
+ width: 90
351
+ },
352
+ {
353
+ title: t("ontology.col.status"),
354
+ dataIndex: "status",
355
+ key: "status",
356
+ width: 170
357
+ },
358
+ {
359
+ title: t("ontology.col.evidence"),
360
+ key: "evidence",
361
+ width: 200
362
+ },
363
+ {
364
+ title: t("ontology.col.action"),
365
+ key: "action",
366
+ width: 260
367
+ }
368
+ ];
369
+ const bindingColumns = [
370
+ {
371
+ title: "id",
372
+ dataIndex: "id",
373
+ key: "id",
374
+ width: 150
375
+ },
376
+ {
377
+ title: t("ontology.col.entity"),
378
+ dataIndex: "entityKey",
379
+ key: "entityKey",
380
+ width: 180
381
+ },
382
+ {
383
+ title: t("ontology.col.target"),
384
+ key: "target"
385
+ },
386
+ {
387
+ title: t("ontology.col.direction"),
388
+ dataIndex: "direction",
389
+ key: "direction",
390
+ width: 110
391
+ },
392
+ {
393
+ title: t("ontology.col.unitPair"),
394
+ key: "unitPair",
395
+ width: 160
396
+ }
397
+ ];
398
+ const versionColumns = [
399
+ {
400
+ title: t("ontology.col.version"),
401
+ dataIndex: "version",
402
+ key: "version",
403
+ width: 90
404
+ },
405
+ {
406
+ title: t("ontology.col.status"),
407
+ dataIndex: "status",
408
+ key: "status",
409
+ width: 110
410
+ },
411
+ {
412
+ title: "hash",
413
+ dataIndex: "contentHash",
414
+ key: "contentHash",
415
+ width: 220
416
+ },
417
+ {
418
+ title: t("ontology.col.line"),
419
+ dataIndex: "lineId",
420
+ key: "lineId",
421
+ width: 140
422
+ },
423
+ {
424
+ title: t("ontology.col.parent"),
425
+ dataIndex: "parentVersion",
426
+ key: "parentVersion",
427
+ width: 90
428
+ },
429
+ {
430
+ title: t("ontology.col.createdAt"),
431
+ dataIndex: "createdAt",
432
+ key: "createdAt"
433
+ }
434
+ ];
435
+ const traceColumns = [
436
+ {
437
+ title: "ruleId",
438
+ dataIndex: "ruleId",
439
+ key: "ruleId",
440
+ width: 150
441
+ },
442
+ {
443
+ title: t("ontology.col.decision"),
444
+ dataIndex: "decision",
445
+ key: "decision",
446
+ width: 110
447
+ },
448
+ {
449
+ title: t("ontology.col.code"),
450
+ dataIndex: "decisionCode",
451
+ key: "decisionCode",
452
+ width: 220
453
+ },
454
+ {
455
+ title: t("ontology.col.evidence"),
456
+ dataIndex: "evidenceLevel",
457
+ key: "evidenceLevel",
458
+ width: 160
459
+ },
460
+ {
461
+ title: t("ontology.col.message"),
462
+ dataIndex: "message",
463
+ key: "message"
464
+ }
465
+ ];
466
+ function statusColor(status) {
467
+ if (status === "approved_for_control") return "green";
468
+ if (status === "validated") return "blue";
469
+ if (status === "reviewed") return "cyan";
470
+ if (status === "deprecated") return "red";
471
+ return "default";
472
+ }
473
+ function tierColor(tier) {
474
+ if (tier === "validated_control") return "green";
475
+ if (tier === "observed_correlation") return "blue";
476
+ return "default";
477
+ }
478
+ async function loadOverview() {
479
+ loading.value = true;
480
+ try {
481
+ overview.value = await ontologyApi("");
482
+ if (!draftId.value && overview.value.drafts.length > 0) draftId.value = overview.value.drafts[0].id;
483
+ } catch (e) {
484
+ api$1.error(apiErrorMessage(e, t("ontology.loadFail")));
485
+ } finally {
486
+ loading.value = false;
487
+ }
488
+ }
489
+ async function loadDraft() {
490
+ if (!draftId.value) {
491
+ detail.value = null;
492
+ return;
493
+ }
494
+ try {
495
+ detail.value = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}`);
496
+ } catch (e) {
497
+ api$1.error(apiErrorMessage(e, t("ontology.loadDraftFail")));
498
+ }
499
+ }
500
+ async function loadNeighbors() {
501
+ if (!selectedKey.value || !draftId.value) return;
502
+ const req = ++neighborReq;
503
+ neighborsLoading.value = true;
504
+ neighborsError.value = "";
505
+ try {
506
+ const qs = new URLSearchParams({
507
+ entity: selectedKey.value,
508
+ hops: String(hops.value),
509
+ limit: "100"
510
+ });
511
+ const res = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/subgraph?${qs.toString()}`);
512
+ if (req === neighborReq) neighbors.value = res.subgraph;
513
+ } catch (e) {
514
+ if (req === neighborReq) {
515
+ neighbors.value = null;
516
+ neighborsError.value = apiErrorMessage(e, t("ontology.graph.loadNeighborsFail"));
517
+ }
518
+ } finally {
519
+ if (req === neighborReq) neighborsLoading.value = false;
520
+ }
521
+ }
522
+ function openNode(key) {
523
+ selectedKey.value = key;
524
+ hops.value = 1;
525
+ neighbors.value = null;
526
+ loadNeighbors();
527
+ }
528
+ function setHops(next) {
529
+ hops.value = next;
530
+ loadNeighbors();
531
+ }
532
+ function closeDrawer() {
533
+ neighborReq += 1;
534
+ selectedKey.value = "";
535
+ neighbors.value = null;
536
+ neighborsError.value = "";
537
+ neighborsLoading.value = false;
538
+ }
539
+ async function loadVersions(ontologyId) {
540
+ if (!ontologyId) {
541
+ versions.value = [];
542
+ return;
543
+ }
544
+ try {
545
+ const res = await ontologyApi(`/versions/${encodeURIComponent(ontologyId)}`);
546
+ versions.value = res.versions;
547
+ if (versions.value.length >= 2) {
548
+ diffTo.value = versions.value[0].version;
549
+ diffFrom.value = versions.value[1].version;
550
+ }
551
+ } catch (e) {
552
+ api$1.error(apiErrorMessage(e, t("ontology.loadVersionsFail")));
553
+ }
554
+ }
555
+ async function createDraft() {
556
+ const ontologyId = (void 0).prompt(t("ontology.prompt.ontologyId"));
557
+ if (!ontologyId) return;
558
+ const lineId = (void 0).prompt(t("ontology.prompt.lineId")) ?? "";
559
+ busy.value = true;
560
+ try {
561
+ const res = await ontologyApi("", {
562
+ method: "POST",
563
+ body: {
564
+ ontologyId,
565
+ lineId
566
+ }
567
+ });
568
+ api$1.success(t("ontology.draftCreated", { id: res.draft.id }));
569
+ draftId.value = res.draft.id;
570
+ await loadOverview();
571
+ await loadDraft();
572
+ } catch (e) {
573
+ api$1.error(apiErrorMessage(e, t("ontology.draftCreateFail")));
574
+ } finally {
575
+ busy.value = false;
576
+ }
577
+ }
578
+ async function runValidate() {
579
+ if (!draftId.value) return;
580
+ busy.value = true;
581
+ try {
582
+ const res = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/validate`, {
583
+ method: "POST",
584
+ body: {}
585
+ });
586
+ api$1[res.ok ? "success" : "warning"](res.ok ? t("ontology.validateOk") : t("ontology.validateFail"));
587
+ await loadDraft();
588
+ } catch (e) {
589
+ api$1.error(apiErrorMessage(e, t("ontology.validateFail")));
590
+ } finally {
591
+ busy.value = false;
592
+ }
593
+ }
594
+ /** 自动修复:补描述/量纲跟随单位/作用域回填/悬空与重复确定性修复(证据不伪造) */
595
+ async function runAutofix() {
596
+ if (!draftId.value) return;
597
+ busy.value = true;
598
+ try {
599
+ const res = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/autofix`, {
600
+ method: "POST",
601
+ body: {}
602
+ });
603
+ lastFixes.value = res.fixes ?? [];
604
+ if (res.fixedCount > 0) api$1.success(t("ontology.autofixDone", { n: res.fixedCount }));
605
+ else api$1.info(t("ontology.autofixNothing"));
606
+ if (!res.validation.ok || !res.bindings.ok) api$1.warning(t("ontology.autofixPartial"));
607
+ await loadDraft();
608
+ } catch (e) {
609
+ api$1.error(apiErrorMessage(e, t("ontology.autofixFail")));
610
+ } finally {
611
+ busy.value = false;
612
+ }
613
+ }
614
+ async function runCompile() {
615
+ if (!draftId.value) return;
616
+ busy.value = true;
617
+ try {
618
+ preview.value = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/compile`, {
619
+ method: "POST",
620
+ body: {}
621
+ });
622
+ tab.value = "compile";
623
+ api$1.success(t("ontology.compileOk", { status: preview.value.status }));
624
+ } catch (e) {
625
+ api$1.error(apiErrorMessage(e, t("ontology.compileFail")));
626
+ } finally {
627
+ busy.value = false;
628
+ }
629
+ }
630
+ async function runPublish() {
631
+ if (!draftId.value) return;
632
+ busy.value = true;
633
+ try {
634
+ const res = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/publish`, {
635
+ method: "POST",
636
+ body: {}
637
+ });
638
+ api$1.success(t("ontology.publishOk", { version: res.version.version }));
639
+ if (doc.value) await loadVersions(doc.value.name ? overview.value.drafts.find((d) => d.id === draftId.value)?.ontologyId ?? "" : "");
640
+ await loadDraft();
641
+ } catch (e) {
642
+ api$1.error(apiErrorMessage(e, t("ontology.publishFail")));
643
+ } finally {
644
+ busy.value = false;
645
+ }
646
+ }
647
+ async function transitionRule(ruleId, to) {
648
+ if (!draftId.value) return;
649
+ busy.value = true;
650
+ try {
651
+ await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/rules/${encodeURIComponent(ruleId)}/transition`, {
652
+ method: "POST",
653
+ body: { to }
654
+ });
655
+ api$1.success(t("ontology.ruleTransitionOk", {
656
+ rule: ruleId,
657
+ to
658
+ }));
659
+ await loadDraft();
660
+ } catch (e) {
661
+ api$1.error(apiErrorMessage(e, t("ontology.ruleTransitionFail")));
662
+ } finally {
663
+ busy.value = false;
664
+ }
665
+ }
666
+ async function requestApproval(ruleId) {
667
+ if (!draftId.value) return;
668
+ busy.value = true;
669
+ try {
670
+ const res = await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/rules/${encodeURIComponent(ruleId)}/approval`, {
671
+ method: "POST",
672
+ body: {}
673
+ });
674
+ api$1.success(t("ontology.approvalRequested", { id: res.approvalId }));
675
+ const approvalId = (void 0).prompt(t("ontology.prompt.approvalId"), res.approvalId);
676
+ if (approvalId) {
677
+ await ontologyApi(`/drafts/${encodeURIComponent(draftId.value)}/rules/${encodeURIComponent(ruleId)}/approval-decision`, {
678
+ method: "POST",
679
+ body: {
680
+ approvalId,
681
+ approved: true
682
+ }
683
+ });
684
+ api$1.success(t("ontology.approvalDecided"));
685
+ await loadDraft();
686
+ }
687
+ } catch (e) {
688
+ api$1.error(apiErrorMessage(e, t("ontology.approvalFail")));
689
+ } finally {
690
+ busy.value = false;
691
+ }
692
+ }
693
+ async function runCompare() {
694
+ const ontologyId = overview.value.drafts.find((d) => d.id === draftId.value)?.ontologyId ?? overview.value.ontologies[0]?.id ?? "";
695
+ if (!ontologyId || diffFrom.value === void 0 || diffTo.value === void 0) return;
696
+ try {
697
+ diff.value = await ontologyApi(`/versions/${encodeURIComponent(ontologyId)}/compare?from=${diffFrom.value}&to=${diffTo.value}`);
698
+ } catch (e) {
699
+ api$1.error(apiErrorMessage(e, t("ontology.compareFail")));
700
+ }
701
+ }
702
+ async function retire(version) {
703
+ const ontologyId = overview.value.drafts.find((d) => d.id === draftId.value)?.ontologyId ?? overview.value.ontologies[0]?.id ?? "";
704
+ if (!ontologyId) return;
705
+ busy.value = true;
706
+ try {
707
+ await ontologyApi(`/versions/${encodeURIComponent(ontologyId)}`, {
708
+ method: "POST",
709
+ body: { version }
710
+ });
711
+ api$1.success(t("ontology.retireOk", { version }));
712
+ await loadVersions(ontologyId);
713
+ } catch (e) {
714
+ api$1.error(apiErrorMessage(e, t("ontology.retireFail")));
715
+ } finally {
716
+ busy.value = false;
717
+ }
718
+ }
719
+ function currentOntologyId() {
720
+ return overview.value.drafts.find((d) => d.id === draftId.value)?.ontologyId ?? overview.value.ontologies[0]?.id ?? "";
721
+ }
722
+ function onDraftChange() {
723
+ closeDrawer();
724
+ loadDraft();
725
+ loadVersions(currentOntologyId());
726
+ }
727
+ function issueColor(severity) {
728
+ return severity === "error" ? "red" : "orange";
729
+ }
730
+ function diffLabel(part) {
731
+ return `+${part.added.length} / −${part.removed.length} / ±${part.changed.length}`;
732
+ }
733
+ return (_ctx, _push, _parent, _attrs) => {
734
+ const _component_a_button = button_default;
735
+ const _component_a_select = Select;
736
+ const _component_a_tag = Tag;
737
+ const _component_a_segmented = segmented_default;
738
+ const _component_a_table = table_default;
739
+ const _component_a_drawer = drawer_default;
740
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "ontology-page" }, _attrs))} data-v-45b08e35><header class="aw-page-head" data-v-45b08e35><div data-v-45b08e35><p class="aw-kicker" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.kicker"))}</p><h1 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.title"))}</h1><p class="sub" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.subtitle"))}</p>`);
741
+ if (doc.value?.description) _push(`<p class="model-desc" data-v-45b08e35><span class="model-desc-tag" data-v-45b08e35>${ssrInterpolate(doc.value.name)}</span> ${ssrInterpolate(doc.value.description)}</p>`);
742
+ else _push(`<!---->`);
743
+ _push(`</div><div class="head-actions" data-v-45b08e35>`);
744
+ _push(ssrRenderComponent(_component_a_button, {
745
+ loading: loading.value,
746
+ onClick: loadOverview
747
+ }, {
748
+ default: withCtx((_, _push, _parent, _scopeId) => {
749
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.refresh"))}`);
750
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.refresh")), 1)];
751
+ }),
752
+ _: 1
753
+ }, _parent));
754
+ _push(ssrRenderComponent(_component_a_button, {
755
+ type: "primary",
756
+ loading: busy.value,
757
+ onClick: createDraft
758
+ }, {
759
+ default: withCtx((_, _push, _parent, _scopeId) => {
760
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.newDraft"))}`);
761
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.newDraft")), 1)];
762
+ }),
763
+ _: 1
764
+ }, _parent));
765
+ _push(`</div></header><section class="toolbar" data-v-45b08e35>`);
766
+ _push(ssrRenderComponent(_component_a_select, {
767
+ value: draftId.value,
768
+ style: { "min-width": "320px" },
769
+ options: draftOptions.value,
770
+ placeholder: unref(t)("ontology.pickDraft"),
771
+ "show-search": "",
772
+ onChange: (v) => {
773
+ draftId.value = String(v ?? "");
774
+ onDraftChange();
775
+ }
776
+ }, null, _parent));
777
+ _push(ssrRenderComponent(_component_a_button, {
778
+ disabled: !draftId.value,
779
+ loading: busy.value,
780
+ onClick: runValidate
781
+ }, {
782
+ default: withCtx((_, _push, _parent, _scopeId) => {
783
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.validate"))}`);
784
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.validate")), 1)];
785
+ }),
786
+ _: 1
787
+ }, _parent));
788
+ _push(ssrRenderComponent(_component_a_button, {
789
+ disabled: !draftId.value || issues.value.length === 0 && bindingFailures.value.length === 0,
790
+ loading: busy.value,
791
+ onClick: runAutofix
792
+ }, {
793
+ default: withCtx((_, _push, _parent, _scopeId) => {
794
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.autofix"))}`);
795
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.autofix")), 1)];
796
+ }),
797
+ _: 1
798
+ }, _parent));
799
+ _push(ssrRenderComponent(_component_a_button, {
800
+ disabled: !draftId.value,
801
+ loading: busy.value,
802
+ onClick: runCompile
803
+ }, {
804
+ default: withCtx((_, _push, _parent, _scopeId) => {
805
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.compile"))}`);
806
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.compile")), 1)];
807
+ }),
808
+ _: 1
809
+ }, _parent));
810
+ if (isAdmin.value) _push(ssrRenderComponent(_component_a_button, {
811
+ disabled: !draftId.value || errors.value.length > 0 || bindingFailures.value.length > 0,
812
+ type: "primary",
813
+ loading: busy.value,
814
+ onClick: runPublish
815
+ }, {
816
+ default: withCtx((_, _push, _parent, _scopeId) => {
817
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.publish"))}`);
818
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.publish")), 1)];
819
+ }),
820
+ _: 1
821
+ }, _parent));
822
+ else _push(`<!---->`);
823
+ _push(`<span class="hint" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.publishHint"))}</span></section><div class="tabs" data-v-45b08e35><!--[-->`);
824
+ ssrRenderList(tabs, (key) => {
825
+ _push(`<button class="${ssrRenderClass([{ active: tab.value === key }, "pill-btn"])}" data-v-45b08e35>${ssrInterpolate(unref(t)(`ontology.tab.${key}`))}</button>`);
826
+ });
827
+ _push(`<!--]--></div>`);
828
+ if (tab.value === "overview") {
829
+ _push(`<section class="panel" data-v-45b08e35><div class="stats" data-v-45b08e35><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.stat.ontologies"))}</span><strong data-v-45b08e35>${ssrInterpolate(overview.value.ontologies.length)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.stat.drafts"))}</span><strong data-v-45b08e35>${ssrInterpolate(overview.value.drafts.length)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.stat.entities"))}</span><strong data-v-45b08e35>${ssrInterpolate(doc.value?.entities.length ?? 0)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.stat.rules"))}</span><strong data-v-45b08e35>${ssrInterpolate(doc.value?.rules.length ?? 0)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.stat.bindings"))}</span><strong data-v-45b08e35>${ssrInterpolate(doc.value?.bindings.length ?? 0)}</strong></div></div><div class="two-col" data-v-45b08e35><div data-v-45b08e35><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.ontologies"))}</h2><ul class="plain" data-v-45b08e35><!--[-->`);
830
+ ssrRenderList(overview.value.ontologies, (o) => {
831
+ _push(`<li data-v-45b08e35><strong data-v-45b08e35>${ssrInterpolate(o.id)}</strong><span data-v-45b08e35>${ssrInterpolate(o.lineId || unref(t)("ontology.global"))} · v${ssrInterpolate(o.latest)} · ${ssrInterpolate(o.status)}</span></li>`);
832
+ });
833
+ _push(`<!--]-->`);
834
+ if (overview.value.ontologies.length === 0) _push(`<li class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.empty.ontologies"))}</li>`);
835
+ else _push(`<!---->`);
836
+ _push(`</ul></div><div data-v-45b08e35><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.issues"))}</h2><ul class="plain" data-v-45b08e35><!--[-->`);
837
+ ssrRenderList(issues.value.slice(0, 20), (issue, index) => {
838
+ _push(`<li data-v-45b08e35>`);
839
+ _push(ssrRenderComponent(_component_a_tag, { color: issueColor(issue.severity) }, {
840
+ default: withCtx((_, _push, _parent, _scopeId) => {
841
+ if (_push) _push(`${ssrInterpolate(issue.severity)}`);
842
+ else return [createTextVNode(toDisplayString(issue.severity), 1)];
843
+ }),
844
+ _: 2
845
+ }, _parent));
846
+ _push(`<strong data-v-45b08e35>${ssrInterpolate(issue.code)}</strong><span data-v-45b08e35>${ssrInterpolate(issue.message)}</span>`);
847
+ if (issue.hint) _push(`<em data-v-45b08e35>${ssrInterpolate(issue.hint)}</em>`);
848
+ else _push(`<!---->`);
849
+ _push(`</li>`);
850
+ });
851
+ _push(`<!--]-->`);
852
+ if (issues.value.length === 0) _push(`<li class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.empty.issues"))}</li>`);
853
+ else _push(`<!---->`);
854
+ _push(`</ul>`);
855
+ if (lastFixes.value.length) {
856
+ _push(`<div class="autofix-log" data-v-45b08e35><h3 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.autofixLog", { n: lastFixes.value.length }))}</h3><ul class="plain" data-v-45b08e35><!--[-->`);
857
+ ssrRenderList(lastFixes.value, (f, i) => {
858
+ _push(`<li data-v-45b08e35>`);
859
+ _push(ssrRenderComponent(_component_a_tag, { color: "green" }, {
860
+ default: withCtx((_, _push, _parent, _scopeId) => {
861
+ if (_push) _push(`${ssrInterpolate(f.code)}`);
862
+ else return [createTextVNode(toDisplayString(f.code), 1)];
863
+ }),
864
+ _: 2
865
+ }, _parent));
866
+ _push(`<span data-v-45b08e35>${ssrInterpolate(f.message)}</span></li>`);
867
+ });
868
+ _push(`<!--]--></ul></div>`);
869
+ } else _push(`<!---->`);
870
+ _push(`</div></div></section>`);
871
+ } else if (tab.value === "graph") {
872
+ _push(`<section class="panel" data-v-45b08e35><div class="graph-toolbar" data-v-45b08e35>`);
873
+ _push(ssrRenderComponent(_component_a_segmented, {
874
+ value: graphView.value,
875
+ "onUpdate:value": ($event) => graphView.value = $event,
876
+ size: "small",
877
+ options: graphViewOptions.value
878
+ }, null, _parent));
879
+ _push(`<span class="hint" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.graph.hint"))}</span>`);
880
+ _push(ssrRenderComponent(_component_a_select, {
881
+ value: selectedKey.value || void 0,
882
+ options: entityOptions.value,
883
+ "show-search": "",
884
+ "allow-clear": "",
885
+ placeholder: unref(t)("ontology.graph.searchEntity"),
886
+ class: "node-search",
887
+ onChange: (v) => {
888
+ const key = String(v ?? "");
889
+ if (key) openNode(key);
890
+ else closeDrawer();
891
+ }
892
+ }, null, _parent));
893
+ _push(`</div>`);
894
+ if (graphView.value === "graph") {
895
+ _push(`<!--[-->`);
896
+ if (largeGraph.value) _push(`<p class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.graph.largeGraph", { n: doc.value?.entities.length ?? 0 }))}</p>`);
897
+ else _push(ssrRenderComponent(OntologyGraph_default, {
898
+ entities: doc.value?.entities ?? [],
899
+ relations: doc.value?.relations ?? [],
900
+ "selected-key": selectedKey.value,
901
+ onSelect: openNode
902
+ }, null, _parent));
903
+ _push(`<!--]-->`);
904
+ } else {
905
+ _push(`<!--[--><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.entities"))}</h2>`);
906
+ _push(ssrRenderComponent(_component_a_table, {
907
+ "data-testid": "entity-table",
908
+ columns: entityColumns,
909
+ "data-source": doc.value?.entities ?? [],
910
+ "row-key": "key",
911
+ size: "small",
912
+ pagination: { pageSize: 12 }
913
+ }, null, _parent));
914
+ _push(`<h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.relations"))}</h2>`);
915
+ _push(ssrRenderComponent(_component_a_table, {
916
+ "data-testid": "relation-table",
917
+ columns: relationColumns,
918
+ "data-source": doc.value?.relations ?? [],
919
+ "row-key": "id",
920
+ size: "small",
921
+ pagination: { pageSize: 12 }
922
+ }, {
923
+ bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
924
+ if (_push) {
925
+ if (column.key === "edge") _push(`<!--[--><code data-v-45b08e35${_scopeId}>${ssrInterpolate(record.srcKey)}</code> → <code data-v-45b08e35${_scopeId}>${ssrInterpolate(record.dstKey)}</code><!--]-->`);
926
+ else if (column.key === "tier") {
927
+ _push(`<!--[-->`);
928
+ _push(ssrRenderComponent(_component_a_tag, { color: tierColor(record.properties?.evidenceTier) }, {
929
+ default: withCtx((_, _push, _parent, _scopeId) => {
930
+ if (_push) _push(`${ssrInterpolate(record.properties?.evidenceTier)}`);
931
+ else return [createTextVNode(toDisplayString(record.properties?.evidenceTier), 1)];
932
+ }),
933
+ _: 2
934
+ }, _parent, _scopeId));
935
+ if (record.properties?.lagMs !== void 0) _push(`<span class="muted" data-v-45b08e35${_scopeId}>lag ${ssrInterpolate(record.properties.lagMs)}ms</span>`);
936
+ else _push(`<!---->`);
937
+ _push(`<!--]-->`);
938
+ } else _push(`<!---->`);
939
+ } else return [column.key === "edge" ? (openBlock(), createBlock(Fragment, { key: 0 }, [
940
+ createVNode("code", null, toDisplayString(record.srcKey), 1),
941
+ createTextVNode(" → "),
942
+ createVNode("code", null, toDisplayString(record.dstKey), 1)
943
+ ], 64)) : column.key === "tier" ? (openBlock(), createBlock(Fragment, { key: 1 }, [createVNode(_component_a_tag, { color: tierColor(record.properties?.evidenceTier) }, {
944
+ default: withCtx(() => [createTextVNode(toDisplayString(record.properties?.evidenceTier), 1)]),
945
+ _: 2
946
+ }, 1032, ["color"]), record.properties?.lagMs !== void 0 ? (openBlock(), createBlock("span", {
947
+ key: 0,
948
+ class: "muted"
949
+ }, "lag " + toDisplayString(record.properties.lagMs) + "ms", 1)) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)];
950
+ }),
951
+ _: 1
952
+ }, _parent));
953
+ _push(`<!--]-->`);
954
+ }
955
+ _push(ssrRenderComponent(_component_a_drawer, {
956
+ open: drawerOpen.value,
957
+ width: "560",
958
+ title: selectedEntity.value ? `${selectedEntity.value.name} · ${selectedEntity.value.key}` : "",
959
+ onClose: closeDrawer
960
+ }, {
961
+ default: withCtx((_, _push, _parent, _scopeId) => {
962
+ if (_push) {
963
+ if (selectedEntity.value) {
964
+ _push(`<div data-testid="node-drawer" data-v-45b08e35${_scopeId}><dl class="node-detail" data-v-45b08e35${_scopeId}><dt data-v-45b08e35${_scopeId}>kind</dt><dd data-v-45b08e35${_scopeId}>${ssrInterpolate(selectedEntity.value.kind)}</dd><dt data-v-45b08e35${_scopeId}>role</dt><dd data-v-45b08e35${_scopeId}>${ssrInterpolate(selectedEntity.value.role || "—")}</dd><dt data-v-45b08e35${_scopeId}>unit</dt><dd data-v-45b08e35${_scopeId}>${ssrInterpolate(selectedEntity.value.unit || "—")}</dd><dt data-v-45b08e35${_scopeId}>description</dt><dd data-v-45b08e35${_scopeId}>${ssrInterpolate(selectedEntity.value.description || "—")}</dd></dl><h4 data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.drawer.bindings"))}</h4>`);
965
+ if (selectedBindings.value.length === 0) _push(`<p class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.drawer.noBindings"))}</p>`);
966
+ else {
967
+ _push(`<ul class="plain" data-v-45b08e35${_scopeId}><!--[-->`);
968
+ ssrRenderList(selectedBindings.value, (b) => {
969
+ _push(`<li data-v-45b08e35${_scopeId}><code data-v-45b08e35${_scopeId}>${ssrInterpolate(b.platformKind)}:${ssrInterpolate(b.platformId)}${ssrInterpolate(b.targetSub ? `#${b.targetSub}` : "")}</code><span data-v-45b08e35${_scopeId}>${ssrInterpolate(b.direction)} · ${ssrInterpolate(b.unitDeclared || "—")} → ${ssrInterpolate(b.unitTarget || "—")}</span></li>`);
970
+ });
971
+ _push(`<!--]--></ul>`);
972
+ }
973
+ _push(`<h4 data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.graph.neighbors"))}</h4>`);
974
+ _push(ssrRenderComponent(_component_a_segmented, {
975
+ value: hops.value,
976
+ size: "small",
977
+ options: [{
978
+ value: 1,
979
+ label: unref(t)("ontology.graph.direct")
980
+ }, {
981
+ value: 2,
982
+ label: unref(t)("ontology.graph.indirect")
983
+ }],
984
+ onChange: (v) => setHops(Number(v) === 2 ? 2 : 1)
985
+ }, null, _parent, _scopeId));
986
+ if (neighborsLoading.value) _push(`<p class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.graph.loading"))}</p>`);
987
+ else if (neighborsError.value) _push(`<p class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(neighborsError.value)}</p>`);
988
+ else if (neighbors.value) {
989
+ _push(`<!--[-->`);
990
+ if (neighbors.value.truncated) _push(`<p class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.graph.truncated"))}</p>`);
991
+ else _push(`<!---->`);
992
+ if (neighborNodes.value.length === 0) _push(`<p class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.graph.noNeighbors"))}</p>`);
993
+ else {
994
+ _push(`<ul class="plain" data-v-45b08e35${_scopeId}><!--[-->`);
995
+ ssrRenderList(neighborNodes.value, (n) => {
996
+ _push(`<li${ssrRenderAttr("data-neighbor-key", n.key)}${ssrRenderAttr("data-hop", n.hop)} data-v-45b08e35${_scopeId}><strong data-v-45b08e35${_scopeId}>${ssrInterpolate(n.key)}</strong><span data-v-45b08e35${_scopeId}>${ssrInterpolate(n.kind)} · ${ssrInterpolate(n.role || "—")} · hop ${ssrInterpolate(n.hop)}</span></li>`);
997
+ });
998
+ _push(`<!--]--></ul>`);
999
+ }
1000
+ if (neighbors.value.edges.length) {
1001
+ _push(`<ul class="plain edges" data-v-45b08e35${_scopeId}><!--[-->`);
1002
+ ssrRenderList(neighbors.value.edges, (e) => {
1003
+ _push(`<li${ssrRenderAttr("data-edge-id", e.id)} data-v-45b08e35${_scopeId}><code data-v-45b08e35${_scopeId}>${ssrInterpolate(e.srcKey)} -${ssrInterpolate(e.kind)}-&gt; ${ssrInterpolate(e.dstKey)}</code><span data-v-45b08e35${_scopeId}>hop ${ssrInterpolate(e.hop)} · ${ssrInterpolate(e.direction)} · ${ssrInterpolate(e.evidenceTier)}</span></li>`);
1004
+ });
1005
+ _push(`<!--]--></ul>`);
1006
+ } else _push(`<!---->`);
1007
+ _push(`<!--]-->`);
1008
+ } else _push(`<!---->`);
1009
+ _push(`</div>`);
1010
+ } else _push(`<!---->`);
1011
+ } else return [selectedEntity.value ? (openBlock(), createBlock("div", {
1012
+ key: 0,
1013
+ "data-testid": "node-drawer"
1014
+ }, [
1015
+ createVNode("dl", { class: "node-detail" }, [
1016
+ createVNode("dt", null, "kind"),
1017
+ createVNode("dd", null, toDisplayString(selectedEntity.value.kind), 1),
1018
+ createVNode("dt", null, "role"),
1019
+ createVNode("dd", null, toDisplayString(selectedEntity.value.role || "—"), 1),
1020
+ createVNode("dt", null, "unit"),
1021
+ createVNode("dd", null, toDisplayString(selectedEntity.value.unit || "—"), 1),
1022
+ createVNode("dt", null, "description"),
1023
+ createVNode("dd", null, toDisplayString(selectedEntity.value.description || "—"), 1)
1024
+ ]),
1025
+ createVNode("h4", null, toDisplayString(unref(t)("ontology.drawer.bindings")), 1),
1026
+ selectedBindings.value.length === 0 ? (openBlock(), createBlock("p", {
1027
+ key: 0,
1028
+ class: "muted"
1029
+ }, toDisplayString(unref(t)("ontology.drawer.noBindings")), 1)) : (openBlock(), createBlock("ul", {
1030
+ key: 1,
1031
+ class: "plain"
1032
+ }, [(openBlock(true), createBlock(Fragment, null, renderList(selectedBindings.value, (b) => {
1033
+ return openBlock(), createBlock("li", { key: b.id }, [createVNode("code", null, toDisplayString(b.platformKind) + ":" + toDisplayString(b.platformId) + toDisplayString(b.targetSub ? `#${b.targetSub}` : ""), 1), createVNode("span", null, toDisplayString(b.direction) + " · " + toDisplayString(b.unitDeclared || "—") + " → " + toDisplayString(b.unitTarget || "—"), 1)]);
1034
+ }), 128))])),
1035
+ createVNode("h4", null, toDisplayString(unref(t)("ontology.graph.neighbors")), 1),
1036
+ createVNode(_component_a_segmented, {
1037
+ value: hops.value,
1038
+ size: "small",
1039
+ options: [{
1040
+ value: 1,
1041
+ label: unref(t)("ontology.graph.direct")
1042
+ }, {
1043
+ value: 2,
1044
+ label: unref(t)("ontology.graph.indirect")
1045
+ }],
1046
+ onChange: (v) => setHops(Number(v) === 2 ? 2 : 1)
1047
+ }, null, 8, [
1048
+ "value",
1049
+ "options",
1050
+ "onChange"
1051
+ ]),
1052
+ neighborsLoading.value ? (openBlock(), createBlock("p", {
1053
+ key: 2,
1054
+ class: "muted"
1055
+ }, toDisplayString(unref(t)("ontology.graph.loading")), 1)) : neighborsError.value ? (openBlock(), createBlock("p", {
1056
+ key: 3,
1057
+ class: "muted"
1058
+ }, toDisplayString(neighborsError.value), 1)) : neighbors.value ? (openBlock(), createBlock(Fragment, { key: 4 }, [
1059
+ neighbors.value.truncated ? (openBlock(), createBlock("p", {
1060
+ key: 0,
1061
+ class: "muted"
1062
+ }, toDisplayString(unref(t)("ontology.graph.truncated")), 1)) : createCommentVNode("", true),
1063
+ neighborNodes.value.length === 0 ? (openBlock(), createBlock("p", {
1064
+ key: 1,
1065
+ class: "muted"
1066
+ }, toDisplayString(unref(t)("ontology.graph.noNeighbors")), 1)) : (openBlock(), createBlock("ul", {
1067
+ key: 2,
1068
+ class: "plain"
1069
+ }, [(openBlock(true), createBlock(Fragment, null, renderList(neighborNodes.value, (n) => {
1070
+ return openBlock(), createBlock("li", {
1071
+ key: n.key,
1072
+ "data-neighbor-key": n.key,
1073
+ "data-hop": n.hop
1074
+ }, [createVNode("strong", null, toDisplayString(n.key), 1), createVNode("span", null, toDisplayString(n.kind) + " · " + toDisplayString(n.role || "—") + " · hop " + toDisplayString(n.hop), 1)], 8, ["data-neighbor-key", "data-hop"]);
1075
+ }), 128))])),
1076
+ neighbors.value.edges.length ? (openBlock(), createBlock("ul", {
1077
+ key: 3,
1078
+ class: "plain edges"
1079
+ }, [(openBlock(true), createBlock(Fragment, null, renderList(neighbors.value.edges, (e) => {
1080
+ return openBlock(), createBlock("li", {
1081
+ key: e.id,
1082
+ "data-edge-id": e.id
1083
+ }, [createVNode("code", null, toDisplayString(e.srcKey) + " -" + toDisplayString(e.kind) + "-> " + toDisplayString(e.dstKey), 1), createVNode("span", null, "hop " + toDisplayString(e.hop) + " · " + toDisplayString(e.direction) + " · " + toDisplayString(e.evidenceTier), 1)], 8, ["data-edge-id"]);
1084
+ }), 128))])) : createCommentVNode("", true)
1085
+ ], 64)) : createCommentVNode("", true)
1086
+ ])) : createCommentVNode("", true)];
1087
+ }),
1088
+ _: 1
1089
+ }, _parent));
1090
+ _push(`</section>`);
1091
+ } else if (tab.value === "rules") {
1092
+ _push(`<section class="panel" data-v-45b08e35>`);
1093
+ _push(ssrRenderComponent(_component_a_table, {
1094
+ columns: ruleColumns,
1095
+ "data-source": doc.value?.rules ?? [],
1096
+ "row-key": "id",
1097
+ size: "small",
1098
+ pagination: { pageSize: 10 }
1099
+ }, {
1100
+ bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
1101
+ if (_push) {
1102
+ if (column.key === "status") _push(ssrRenderComponent(_component_a_tag, { color: statusColor(record.status) }, {
1103
+ default: withCtx((_, _push, _parent, _scopeId) => {
1104
+ if (_push) _push(`${ssrInterpolate(record.status)}`);
1105
+ else return [createTextVNode(toDisplayString(record.status), 1)];
1106
+ }),
1107
+ _: 2
1108
+ }, _parent, _scopeId));
1109
+ else if (column.key === "evidence") {
1110
+ _push(`<!--[--><!--[-->`);
1111
+ ssrRenderList(record.evidence, (e, i) => {
1112
+ _push(`<span data-v-45b08e35${_scopeId}>`);
1113
+ _push(ssrRenderComponent(_component_a_tag, { color: tierColor(e.level) }, {
1114
+ default: withCtx((_, _push, _parent, _scopeId) => {
1115
+ if (_push) _push(`${ssrInterpolate(e.level)}`);
1116
+ else return [createTextVNode(toDisplayString(e.level), 1)];
1117
+ }),
1118
+ _: 2
1119
+ }, _parent, _scopeId));
1120
+ _push(`</span>`);
1121
+ });
1122
+ _push(`<!--]-->`);
1123
+ if (record.evidence.length === 0) _push(`<span class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.noEvidence"))}</span>`);
1124
+ else _push(`<!---->`);
1125
+ _push(`<!--]-->`);
1126
+ } else if (column.key === "action") {
1127
+ _push(`<!--[-->`);
1128
+ if (record.status === "proposed") _push(ssrRenderComponent(_component_a_button, {
1129
+ size: "small",
1130
+ loading: busy.value,
1131
+ onClick: ($event) => transitionRule(record.id, "reviewed")
1132
+ }, {
1133
+ default: withCtx((_, _push, _parent, _scopeId) => {
1134
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.action.review"))}`);
1135
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.action.review")), 1)];
1136
+ }),
1137
+ _: 2
1138
+ }, _parent, _scopeId));
1139
+ else _push(`<!---->`);
1140
+ if (record.status === "reviewed") _push(ssrRenderComponent(_component_a_button, {
1141
+ size: "small",
1142
+ loading: busy.value,
1143
+ onClick: ($event) => transitionRule(record.id, "validated")
1144
+ }, {
1145
+ default: withCtx((_, _push, _parent, _scopeId) => {
1146
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.action.validate"))}`);
1147
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.action.validate")), 1)];
1148
+ }),
1149
+ _: 2
1150
+ }, _parent, _scopeId));
1151
+ else _push(`<!---->`);
1152
+ if (record.status === "validated") _push(ssrRenderComponent(_component_a_button, {
1153
+ size: "small",
1154
+ type: "primary",
1155
+ loading: busy.value,
1156
+ onClick: ($event) => requestApproval(record.id)
1157
+ }, {
1158
+ default: withCtx((_, _push, _parent, _scopeId) => {
1159
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.action.approve"))}`);
1160
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.action.approve")), 1)];
1161
+ }),
1162
+ _: 2
1163
+ }, _parent, _scopeId));
1164
+ else _push(`<!---->`);
1165
+ _push(`<!--]-->`);
1166
+ } else _push(`<!---->`);
1167
+ } else return [column.key === "status" ? (openBlock(), createBlock(_component_a_tag, {
1168
+ key: 0,
1169
+ color: statusColor(record.status)
1170
+ }, {
1171
+ default: withCtx(() => [createTextVNode(toDisplayString(record.status), 1)]),
1172
+ _: 2
1173
+ }, 1032, ["color"])) : column.key === "evidence" ? (openBlock(), createBlock(Fragment, { key: 1 }, [(openBlock(true), createBlock(Fragment, null, renderList(record.evidence, (e, i) => {
1174
+ return openBlock(), createBlock("span", { key: i }, [createVNode(_component_a_tag, { color: tierColor(e.level) }, {
1175
+ default: withCtx(() => [createTextVNode(toDisplayString(e.level), 1)]),
1176
+ _: 2
1177
+ }, 1032, ["color"])]);
1178
+ }), 128)), record.evidence.length === 0 ? (openBlock(), createBlock("span", {
1179
+ key: 0,
1180
+ class: "muted"
1181
+ }, toDisplayString(unref(t)("ontology.noEvidence")), 1)) : createCommentVNode("", true)], 64)) : column.key === "action" ? (openBlock(), createBlock(Fragment, { key: 2 }, [
1182
+ record.status === "proposed" ? (openBlock(), createBlock(_component_a_button, {
1183
+ key: 0,
1184
+ size: "small",
1185
+ loading: busy.value,
1186
+ onClick: ($event) => transitionRule(record.id, "reviewed")
1187
+ }, {
1188
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("ontology.action.review")), 1)]),
1189
+ _: 1
1190
+ }, 8, ["loading", "onClick"])) : createCommentVNode("", true),
1191
+ record.status === "reviewed" ? (openBlock(), createBlock(_component_a_button, {
1192
+ key: 1,
1193
+ size: "small",
1194
+ loading: busy.value,
1195
+ onClick: ($event) => transitionRule(record.id, "validated")
1196
+ }, {
1197
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("ontology.action.validate")), 1)]),
1198
+ _: 1
1199
+ }, 8, ["loading", "onClick"])) : createCommentVNode("", true),
1200
+ record.status === "validated" ? (openBlock(), createBlock(_component_a_button, {
1201
+ key: 2,
1202
+ size: "small",
1203
+ type: "primary",
1204
+ loading: busy.value,
1205
+ onClick: ($event) => requestApproval(record.id)
1206
+ }, {
1207
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("ontology.action.approve")), 1)]),
1208
+ _: 1
1209
+ }, 8, ["loading", "onClick"])) : createCommentVNode("", true)
1210
+ ], 64)) : createCommentVNode("", true)];
1211
+ }),
1212
+ _: 1
1213
+ }, _parent));
1214
+ _push(`</section>`);
1215
+ } else if (tab.value === "bindings") {
1216
+ _push(`<section class="panel" data-v-45b08e35>`);
1217
+ _push(ssrRenderComponent(_component_a_table, {
1218
+ columns: bindingColumns,
1219
+ "data-source": doc.value?.bindings ?? [],
1220
+ "row-key": "id",
1221
+ size: "small",
1222
+ pagination: { pageSize: 12 }
1223
+ }, {
1224
+ bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
1225
+ if (_push) {
1226
+ if (column.key === "target") _push(`<code data-v-45b08e35${_scopeId}>${ssrInterpolate(record.platformKind)}:${ssrInterpolate(record.platformId)}${ssrInterpolate(record.targetSub ? `#${record.targetSub}` : "")}</code>`);
1227
+ else if (column.key === "unitPair") _push(`<span data-v-45b08e35${_scopeId}>${ssrInterpolate(record.unitDeclared || "—")} → ${ssrInterpolate(record.unitTarget || "—")}</span>`);
1228
+ else _push(`<!---->`);
1229
+ } else return [column.key === "target" ? (openBlock(), createBlock("code", { key: 0 }, toDisplayString(record.platformKind) + ":" + toDisplayString(record.platformId) + toDisplayString(record.targetSub ? `#${record.targetSub}` : ""), 1)) : column.key === "unitPair" ? (openBlock(), createBlock("span", { key: 1 }, toDisplayString(record.unitDeclared || "—") + " → " + toDisplayString(record.unitTarget || "—"), 1)) : createCommentVNode("", true)];
1230
+ }),
1231
+ _: 1
1232
+ }, _parent));
1233
+ if (bindingFailures.value.length) {
1234
+ _push(`<div class="failures" data-v-45b08e35><h3 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.bindingFailures"))}</h3><!--[-->`);
1235
+ ssrRenderList(bindingFailures.value, (f) => {
1236
+ _push(`<p data-v-45b08e35>`);
1237
+ _push(ssrRenderComponent(_component_a_tag, { color: "red" }, {
1238
+ default: withCtx((_, _push, _parent, _scopeId) => {
1239
+ if (_push) _push(`${ssrInterpolate(f.code)}`);
1240
+ else return [createTextVNode(toDisplayString(f.code), 1)];
1241
+ }),
1242
+ _: 2
1243
+ }, _parent));
1244
+ _push(`${ssrInterpolate(f.message)}</p>`);
1245
+ });
1246
+ _push(`<!--]--></div>`);
1247
+ } else _push(`<!---->`);
1248
+ _push(`</section>`);
1249
+ } else if (tab.value === "versions") {
1250
+ _push(`<section class="panel" data-v-45b08e35>`);
1251
+ _push(ssrRenderComponent(_component_a_table, {
1252
+ columns: versionColumns,
1253
+ "data-source": versions.value,
1254
+ "row-key": "version",
1255
+ size: "small",
1256
+ pagination: { pageSize: 10 }
1257
+ }, {
1258
+ bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
1259
+ if (_push) {
1260
+ if (column.key === "status") _push(ssrRenderComponent(_component_a_tag, { color: record.status === "published" ? "green" : record.status === "retired" ? "red" : "default" }, {
1261
+ default: withCtx((_, _push, _parent, _scopeId) => {
1262
+ if (_push) _push(`${ssrInterpolate(record.status)}`);
1263
+ else return [createTextVNode(toDisplayString(record.status), 1)];
1264
+ }),
1265
+ _: 2
1266
+ }, _parent, _scopeId));
1267
+ else if (column.key === "contentHash") _push(`<code data-v-45b08e35${_scopeId}>${ssrInterpolate(String(record.contentHash).slice(0, 16))}…</code>`);
1268
+ else if (column.key === "createdAt") {
1269
+ _push(`<!--[--><span data-v-45b08e35${_scopeId}>${ssrInterpolate(record.createdAt)}</span>`);
1270
+ if (isAdmin.value && record.status === "published") _push(ssrRenderComponent(_component_a_button, {
1271
+ size: "small",
1272
+ danger: "",
1273
+ class: "retire",
1274
+ loading: busy.value,
1275
+ onClick: ($event) => retire(record.version)
1276
+ }, {
1277
+ default: withCtx((_, _push, _parent, _scopeId) => {
1278
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.action.retire"))}`);
1279
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.action.retire")), 1)];
1280
+ }),
1281
+ _: 2
1282
+ }, _parent, _scopeId));
1283
+ else _push(`<!---->`);
1284
+ _push(`<!--]-->`);
1285
+ } else _push(`<!---->`);
1286
+ } else return [column.key === "status" ? (openBlock(), createBlock(_component_a_tag, {
1287
+ key: 0,
1288
+ color: record.status === "published" ? "green" : record.status === "retired" ? "red" : "default"
1289
+ }, {
1290
+ default: withCtx(() => [createTextVNode(toDisplayString(record.status), 1)]),
1291
+ _: 2
1292
+ }, 1032, ["color"])) : column.key === "contentHash" ? (openBlock(), createBlock("code", { key: 1 }, toDisplayString(String(record.contentHash).slice(0, 16)) + "…", 1)) : column.key === "createdAt" ? (openBlock(), createBlock(Fragment, { key: 2 }, [createVNode("span", null, toDisplayString(record.createdAt), 1), isAdmin.value && record.status === "published" ? (openBlock(), createBlock(_component_a_button, {
1293
+ key: 0,
1294
+ size: "small",
1295
+ danger: "",
1296
+ class: "retire",
1297
+ loading: busy.value,
1298
+ onClick: ($event) => retire(record.version)
1299
+ }, {
1300
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("ontology.action.retire")), 1)]),
1301
+ _: 1
1302
+ }, 8, ["loading", "onClick"])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)];
1303
+ }),
1304
+ _: 1
1305
+ }, _parent));
1306
+ _push(`<div class="compare" data-v-45b08e35>`);
1307
+ _push(ssrRenderComponent(_component_a_select, {
1308
+ value: diffFrom.value,
1309
+ "onUpdate:value": ($event) => diffFrom.value = $event,
1310
+ options: versionOptions.value,
1311
+ style: { "width": "140px" },
1312
+ placeholder: unref(t)("ontology.from")
1313
+ }, null, _parent));
1314
+ _push(`<span data-v-45b08e35>→</span>`);
1315
+ _push(ssrRenderComponent(_component_a_select, {
1316
+ value: diffTo.value,
1317
+ "onUpdate:value": ($event) => diffTo.value = $event,
1318
+ options: versionOptions.value,
1319
+ style: { "width": "140px" },
1320
+ placeholder: unref(t)("ontology.to")
1321
+ }, null, _parent));
1322
+ _push(ssrRenderComponent(_component_a_button, {
1323
+ loading: busy.value,
1324
+ onClick: runCompare
1325
+ }, {
1326
+ default: withCtx((_, _push, _parent, _scopeId) => {
1327
+ if (_push) _push(`${ssrInterpolate(unref(t)("ontology.compare"))}`);
1328
+ else return [createTextVNode(toDisplayString(unref(t)("ontology.compare")), 1)];
1329
+ }),
1330
+ _: 1
1331
+ }, _parent));
1332
+ _push(`</div>`);
1333
+ if (diff.value) {
1334
+ _push(`<div class="diff" data-v-45b08e35><p data-v-45b08e35><strong data-v-45b08e35>v${ssrInterpolate(diff.value.from)} → v${ssrInterpolate(diff.value.to)}</strong></p><p data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.entities"))}: ${ssrInterpolate(diffLabel(diff.value.entities))}</p><p data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.relations"))}: ${ssrInterpolate(diffLabel(diff.value.relations))}</p><p data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.rules"))}: ${ssrInterpolate(diffLabel(diff.value.rules))}</p><p data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.bindings"))}: ${ssrInterpolate(diffLabel(diff.value.bindings))}</p>`);
1335
+ if (diff.value.rules.changed.length) {
1336
+ _push(`<p data-v-45b08e35><strong data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.rulesChanged"))}:</strong><!--[-->`);
1337
+ ssrRenderList(diff.value.rules.changed, (id) => {
1338
+ _push(`<code class="chip" data-v-45b08e35>${ssrInterpolate(id)}</code>`);
1339
+ });
1340
+ _push(`<!--]--></p>`);
1341
+ } else _push(`<!---->`);
1342
+ _push(`</div>`);
1343
+ } else _push(`<!---->`);
1344
+ _push(`</section>`);
1345
+ } else {
1346
+ _push(`<section class="panel" data-v-45b08e35>`);
1347
+ if (!preview.value) _push(`<div class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.compileEmpty"))}</div>`);
1348
+ else {
1349
+ _push(`<!--[--><div class="stats" data-v-45b08e35><div class="stat" data-v-45b08e35><span data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.col.status"))}</span><strong data-v-45b08e35>${ssrInterpolate(preview.value.status)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>compiled</span><strong data-v-45b08e35>${ssrInterpolate(preview.value.counts.compiled)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>guard</span><strong data-v-45b08e35>${ssrInterpolate(preview.value.counts.guard)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>explained</span><strong data-v-45b08e35>${ssrInterpolate(preview.value.counts.explained)}</strong></div><div class="stat" data-v-45b08e35><span data-v-45b08e35>rejected</span><strong data-v-45b08e35>${ssrInterpolate(preview.value.counts.rejected)}</strong></div></div><p class="muted" data-v-45b08e35> packHash <code data-v-45b08e35>${ssrInterpolate(preview.value.packHash.slice(0, 24))}…</code></p><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.artifacts"))}</h2><div class="artifacts" data-v-45b08e35><div data-v-45b08e35><h3 data-v-45b08e35>problem_ir</h3><pre data-v-45b08e35>${ssrInterpolate(JSON.stringify({
1350
+ mvBounds: preview.value.artifacts.problemIr.mvBounds,
1351
+ cvBounds: preview.value.artifacts.problemIr.cvBounds
1352
+ }, null, 2))}</pre></div><div data-v-45b08e35><h3 data-v-45b08e35>control_guard</h3><pre data-v-45b08e35>${ssrInterpolate(JSON.stringify(preview.value.artifacts.controlGuard, null, 2))}</pre></div><div data-v-45b08e35><h3 data-v-45b08e35>process_model</h3><pre data-v-45b08e35>${ssrInterpolate(JSON.stringify({
1353
+ featureCandidates: preview.value.artifacts.processModel.featureCandidates.length,
1354
+ delayPriors: preview.value.artifacts.processModel.delayPriors.length
1355
+ }, null, 2))}</pre></div><div data-v-45b08e35><h3 data-v-45b08e35>scene_contract</h3><pre data-v-45b08e35>${ssrInterpolate(JSON.stringify({
1356
+ variables: preview.value.artifacts.sceneContract.variables.length,
1357
+ constraints: preview.value.artifacts.sceneContract.constraints.length,
1358
+ relations: preview.value.artifacts.sceneContract.inferredRelations.length
1359
+ }, null, 2))}</pre></div></div><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.ruleTrace"))}</h2>`);
1360
+ _push(ssrRenderComponent(_component_a_table, {
1361
+ columns: traceColumns,
1362
+ "data-source": preview.value.traces,
1363
+ "row-key": "ruleId",
1364
+ size: "small",
1365
+ pagination: { pageSize: 10 }
1366
+ }, {
1367
+ bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
1368
+ if (_push) {
1369
+ if (column.key === "decision") _push(ssrRenderComponent(_component_a_tag, { color: record.decision === "compiled" ? "green" : record.decision === "guard" ? "blue" : record.decision === "rejected" ? "red" : "default" }, {
1370
+ default: withCtx((_, _push, _parent, _scopeId) => {
1371
+ if (_push) _push(`${ssrInterpolate(record.decision)}`);
1372
+ else return [createTextVNode(toDisplayString(record.decision), 1)];
1373
+ }),
1374
+ _: 2
1375
+ }, _parent, _scopeId));
1376
+ else _push(`<!---->`);
1377
+ } else return [column.key === "decision" ? (openBlock(), createBlock(_component_a_tag, {
1378
+ key: 0,
1379
+ color: record.decision === "compiled" ? "green" : record.decision === "guard" ? "blue" : record.decision === "rejected" ? "red" : "default"
1380
+ }, {
1381
+ default: withCtx(() => [createTextVNode(toDisplayString(record.decision), 1)]),
1382
+ _: 2
1383
+ }, 1032, ["color"])) : createCommentVNode("", true)];
1384
+ }),
1385
+ _: 1
1386
+ }, _parent));
1387
+ _push(`<!--]-->`);
1388
+ }
1389
+ _push(`</section>`);
1390
+ }
1391
+ _push(`</div>`);
1392
+ };
1393
+ }
1394
+ });
1395
+ //#endregion
1396
+ //#region app/pages/ontology/index.vue
1397
+ var _sfc_setup = index_vue_vue_type_script_setup_true_lang_default.setup;
1398
+ index_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
1399
+ const ssrContext = useSSRContext();
1400
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/ontology/index.vue");
1401
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1402
+ };
1403
+ var ontology_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-45b08e35"]]);
1404
+
1405
+ export { ontology_default as default };
1406
+ //# sourceMappingURL=ontology-DK0Mf0zT.mjs.map