agentworkshop 0.8.0 → 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 (396) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +123 -0
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +123 -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/{DIFkTkdS.js → BkEokGX5.js} +1 -1
  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/{62J4vljm.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/{BH8RvpVy.js → DWy0AjON.js} +1 -1
  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-JQE.js → DdyE0ylS.js} +1 -1
  116. package/.output/public/_nuxt/DhLlTxQh2.js +1 -0
  117. package/.output/public/_nuxt/{CxVhG0Xx.js → DhW7cFOa.js} +1 -1
  118. package/.output/public/_nuxt/{Rt2i6k7C2.js → DhjgWrB62.js} +1 -1
  119. package/.output/public/_nuxt/{KwT4sN_d.js → DiWcX4gj.js} +1 -1
  120. package/.output/public/_nuxt/DiloA8vK.js +1 -0
  121. package/.output/public/_nuxt/{DX-c5laM2.js → DlS-SkQ42.js} +1 -1
  122. package/.output/public/_nuxt/{D_Zspo1y.js → DmHp9yQ3.js} +1 -1
  123. package/.output/public/_nuxt/{dq1HKoGD.js → DoL9u6wu.js} +1 -1
  124. package/.output/public/_nuxt/{CIvMT5Ic.js → DqxBCeDe.js} +1 -1
  125. package/.output/public/_nuxt/{BnNmkGJS2.js → DrlnrdvY2.js} +3 -3
  126. package/.output/public/_nuxt/{BAcjVcku2.js → Dt8TL8_X2.js} +1 -1
  127. package/.output/public/_nuxt/{BtfwbNC0.js → Du7gS8RU.js} +1 -1
  128. package/.output/public/_nuxt/DuUc4bbY2.js +1 -0
  129. package/.output/public/_nuxt/{DPUXbTg9.js → DudoisLM.js} +1 -1
  130. package/.output/public/_nuxt/{Ce5R-ZGf2.js → DwgVlehj2.js} +1 -1
  131. package/.output/public/_nuxt/Dyxf2xZw.js +1 -0
  132. package/.output/public/_nuxt/Dz9C2pTa.js +1 -0
  133. package/.output/public/_nuxt/{BYxG9Hb2.js → EMbqTHfT.js} +1 -1
  134. package/.output/public/_nuxt/{B1SzppY12.js → FsRVXpyF2.js} +1 -1
  135. package/.output/public/_nuxt/{0MLy6ogg2.js → GQrEW8nk2.js} +1 -1
  136. package/.output/public/_nuxt/{Tuz5LcLM.js → IXR1BWP5.js} +1 -1
  137. package/.output/public/_nuxt/{-jpUnM1I2.js → Iub61dX92.js} +1 -1
  138. package/.output/public/_nuxt/{CQgOzpvI.js → JegDslce.js} +2 -2
  139. package/.output/public/_nuxt/{DrF3TWoj.js → KzK37yIr.js} +1 -1
  140. package/.output/public/_nuxt/{Br3MggOL.js → N-CCmCsX.js} +1 -1
  141. package/.output/public/_nuxt/{DHhmq7s_.js → NfvZ5Lzv.js} +1 -1
  142. package/.output/public/_nuxt/{CzX_kaPL.js → POTcePF_.js} +1 -1
  143. package/.output/public/_nuxt/{D7s96J3r2.js → Q-JpBT032.js} +1 -1
  144. package/.output/public/_nuxt/{DzwIZ81f2.js → R1g64DNi2.js} +1 -1
  145. package/.output/public/_nuxt/{JgheoP3e.js → R5Pz7BqB.js} +1 -1
  146. package/.output/public/_nuxt/{yLyz0-Yz.js → SvjzWbn8.js} +1 -1
  147. package/.output/public/_nuxt/{Dd7MZc_Q.js → XqXoaoDs.js} +1 -1
  148. package/.output/public/_nuxt/{B6jtLy6z.js → YAA98rWJ.js} +11 -11
  149. package/.output/public/_nuxt/{HX4_xnak2.js → YLYSczSq2.js} +1 -1
  150. package/.output/public/_nuxt/{BBw9ylUY2.js → YNhAoK-R2.js} +1 -1
  151. package/.output/public/_nuxt/Zkbt8Uk5.js +1 -0
  152. package/.output/public/_nuxt/aml.PalMp-5n.css +1 -0
  153. package/.output/public/_nuxt/{C41CcsiD.js → b7UcqLKi.js} +1 -1
  154. package/.output/public/_nuxt/builds/latest.json +1 -1
  155. package/.output/public/_nuxt/builds/meta/fa0af8b5-3929-428d-a6de-3b5cc6b8248f.json +1 -0
  156. package/.output/public/_nuxt/{DVkFSOZi.js → cKj4vSo5.js} +1 -1
  157. package/.output/public/_nuxt/{r1CpGsFp.js → dHwWyr6b.js} +1 -1
  158. package/.output/public/_nuxt/{DlcA9Gxl.js → eePbiWEh.js} +1 -1
  159. package/.output/public/_nuxt/{cjRzSvAg2.js → eymRov9Y2.js} +1 -1
  160. package/.output/public/_nuxt/{B8cViLJT.js → geMze5qw.js} +1 -1
  161. package/.output/public/_nuxt/{uu1wfdfR2.js → gh-WMxV_2.js} +1 -1
  162. package/.output/public/_nuxt/{Ce6e1mPk2.js → hCN555XP2.js} +1 -1
  163. package/.output/public/_nuxt/{rdUE8Khf.js → hZG5MLjK.js} +3 -3
  164. package/.output/public/_nuxt/{CcX_jP-d.js → hlfahYxK.js} +1 -1
  165. package/.output/public/_nuxt/{cGSl2GZp2.js → ilJHF1nA2.js} +1 -1
  166. package/.output/public/_nuxt/{D6ZcgHPz.js → jDuiDtGb.js} +1 -1
  167. package/.output/public/_nuxt/{DbeNMehP.js → k9b520K-.js} +1 -1
  168. package/.output/public/_nuxt/ontology.B_3Wn907.css +1 -0
  169. package/.output/public/_nuxt/optimizer.CLA8I1sy.css +1 -0
  170. package/.output/public/_nuxt/{DSORcpTJ.js → rDvMijKA.js} +2 -2
  171. package/.output/public/_nuxt/{CAiHhX8P2.js → rF7mggl72.js} +2 -2
  172. package/.output/public/_nuxt/ri9UF8rk.js +2 -0
  173. package/.output/public/_nuxt/{KgnxOsMr.js → toG_qAMH.js} +1 -1
  174. package/.output/public/_nuxt/{KQZmHR_K.js → u3h4pGpm.js} +2 -2
  175. package/.output/public/_nuxt/{dJ7gK7C2.js → uomnHjhM.js} +1 -1
  176. package/.output/public/_nuxt/{BUTg4W_x2.js → v77qozuJ2.js} +1 -1
  177. package/.output/public/_nuxt/{BcEr7tIB.js → v7cV7hJa.js} +1 -1
  178. package/.output/public/_nuxt/{D25dVZ822.js → vkQoYNQR2.js} +2 -2
  179. package/.output/public/_nuxt/{wR_w07322.js → vp3LtnTz2.js} +1 -1
  180. package/.output/public/_nuxt/{Bnc8HELj2.js → we7-sMSo2.js} +1 -1
  181. package/.output/public/_nuxt/{kN3ZzR1-.js → wxISMS1i.js} +1 -1
  182. package/.output/public/_nuxt/{DGrrucbG.js → zy7efYKR.js} +1 -1
  183. package/.output/server/chunks/_/data-export.mjs +5 -5
  184. package/.output/server/chunks/_/data-query.mjs +2 -2
  185. package/.output/server/chunks/_/eda-run.repo.mjs +2 -2
  186. package/.output/server/chunks/_/features.mjs +4 -4
  187. package/.output/server/chunks/_/golden.mjs +2 -2
  188. package/.output/server/chunks/_/index.mjs +1 -1
  189. package/.output/server/chunks/_/mes-console.mjs +1 -1
  190. package/.output/server/chunks/_/nitro.mjs +2149 -1520
  191. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  192. package/.output/server/chunks/_/spc.mjs +1 -1
  193. package/.output/server/chunks/build/TownView-BWMDbosY.mjs +1 -1
  194. package/.output/server/chunks/build/{_wsId_-BNKrrV1H.mjs → _wsId_-BPy-Aj9L.mjs} +3 -3
  195. package/.output/server/chunks/build/{_wsId_-BNKrrV1H.mjs.map → _wsId_-BPy-Aj9L.mjs.map} +1 -1
  196. package/.output/server/chunks/build/{agents-8tV9xL97.mjs → agents-CpNLdI8E.mjs} +6 -6
  197. package/.output/server/chunks/build/{agents-8tV9xL97.mjs.map → agents-CpNLdI8E.mjs.map} +1 -1
  198. package/.output/server/chunks/build/{aml-BNTEDOsl.mjs → aml-DRAFRcGU.mjs} +15 -12
  199. package/.output/server/chunks/build/{aml-BNTEDOsl.mjs.map → aml-DRAFRcGU.mjs.map} +1 -1
  200. package/.output/server/chunks/build/{channel-templates-Iot9Y3vV.mjs → channel-templates-ByHOQQkO.mjs} +2 -2
  201. package/.output/server/chunks/build/{channel-templates-Iot9Y3vV.mjs.map → channel-templates-ByHOQQkO.mjs.map} +1 -1
  202. package/.output/server/chunks/build/daq-CdxcfY_G.mjs +1 -1
  203. package/.output/server/chunks/build/dcw-BlDQtS4q.mjs +1 -1
  204. package/.output/server/chunks/build/{default-CJkOcmrm.mjs → default-CNWS6NUw.mjs} +4 -4
  205. package/.output/server/chunks/build/{default-CJkOcmrm.mjs.map → default-CNWS6NUw.mjs.map} +1 -1
  206. package/.output/server/chunks/build/{dropdown-CjwsxU39.mjs → dropdown-BNwTVGde.mjs} +2 -2
  207. package/.output/server/chunks/build/{dropdown-CjwsxU39.mjs.map → dropdown-BNwTVGde.mjs.map} +1 -1
  208. package/.output/server/chunks/build/{dropdown-C6YH_kSO.mjs → dropdown-Cd-xPhR6.mjs} +2 -2
  209. package/.output/server/chunks/build/{dropdown-C6YH_kSO.mjs.map → dropdown-Cd-xPhR6.mjs.map} +1 -1
  210. package/.output/server/chunks/build/input-number-BNlNDK7H.mjs +1 -1
  211. package/.output/server/chunks/build/{logs-BTfJQ6vQ.mjs → logs-pRb-TMWa.mjs} +3 -3
  212. package/.output/server/chunks/build/{logs-BTfJQ6vQ.mjs.map → logs-pRb-TMWa.mjs.map} +1 -1
  213. package/.output/server/chunks/build/{monitor-DvaR3yo8.mjs → monitor-Cq6hRFeQ.mjs} +6 -6
  214. package/.output/server/chunks/build/{monitor-DvaR3yo8.mjs.map → monitor-Cq6hRFeQ.mjs.map} +1 -1
  215. package/.output/server/chunks/build/{ontology-C3HS5pMo.mjs → ontology-DK0Mf0zT.mjs} +510 -81
  216. package/.output/server/chunks/build/ontology-DK0Mf0zT.mjs.map +1 -0
  217. package/.output/server/chunks/build/{operations-Cl8nVm9D.mjs → operations-SMQrRAcr.mjs} +3 -3
  218. package/.output/server/chunks/build/{operations-Cl8nVm9D.mjs.map → operations-SMQrRAcr.mjs.map} +1 -1
  219. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +202 -0
  220. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs.map +1 -0
  221. package/.output/server/chunks/build/{pagination-KaIvHBzi.mjs → pagination-DTAconUo.mjs} +2 -2
  222. package/.output/server/chunks/build/{pagination-KaIvHBzi.mjs.map → pagination-DTAconUo.mjs.map} +1 -1
  223. package/.output/server/chunks/build/{permissions-CVTfixZj.mjs → permissions-DgXQZSyx.mjs} +6 -6
  224. package/.output/server/chunks/build/{permissions-CVTfixZj.mjs.map → permissions-DgXQZSyx.mjs.map} +1 -1
  225. package/.output/server/chunks/build/{schedules-BLhn2CLn.mjs → schedules-dSnr8url.mjs} +6 -6
  226. package/.output/server/chunks/build/{schedules-BLhn2CLn.mjs.map → schedules-dSnr8url.mjs.map} +1 -1
  227. package/.output/server/chunks/build/{select--XFl7CtY.mjs → select-B3Dsb9yq.mjs} +3 -3
  228. package/.output/server/chunks/build/{select--XFl7CtY.mjs.map → select-B3Dsb9yq.mjs.map} +1 -1
  229. package/.output/server/chunks/build/{settings-DIf_iYdu.mjs → settings-BrIhnS2Z.mjs} +2 -2
  230. package/.output/server/chunks/build/{settings-DIf_iYdu.mjs.map → settings-BrIhnS2Z.mjs.map} +1 -1
  231. package/.output/server/chunks/build/{table-DIu_YCJN.mjs → table-CmVD-cA9.mjs} +4 -4
  232. package/.output/server/chunks/build/{table-DIu_YCJN.mjs.map → table-CmVD-cA9.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{teams-B2J6ouRY.mjs → teams-B1d32eHK.mjs} +4 -4
  234. package/.output/server/chunks/build/{teams-B2J6ouRY.mjs.map → teams-B1d32eHK.mjs.map} +1 -1
  235. package/.output/server/chunks/build/{tokens-DFQGaN2n.mjs → tokens-GYaGJ35Z.mjs} +6 -6
  236. package/.output/server/chunks/build/{tokens-DFQGaN2n.mjs.map → tokens-GYaGJ35Z.mjs.map} +1 -1
  237. package/.output/server/chunks/build/{tools-DWJFnU_t.mjs → tools-s_9U1Djj.mjs} +6 -6
  238. package/.output/server/chunks/build/{tools-DWJFnU_t.mjs.map → tools-s_9U1Djj.mjs.map} +1 -1
  239. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  240. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
  241. package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs +1 -1
  242. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
  243. package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs +1 -1
  244. package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +1 -1
  245. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
  246. package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs +1 -1
  247. package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs +1 -1
  248. package/.output/server/chunks/build/{users-BWw0VCr9.mjs → users-DjiVC_tS.mjs} +6 -6
  249. package/.output/server/chunks/build/{users-BWw0VCr9.mjs.map → users-DjiVC_tS.mjs.map} +1 -1
  250. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  251. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +2 -2
  252. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +7 -1
  253. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +6 -6
  256. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +2 -2
  257. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/index.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +52 -0
  261. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs.map +1 -0
  262. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +38 -0
  269. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs.map +1 -0
  270. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +8 -1
  274. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +1 -1
  276. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
  280. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
  281. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
  282. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +1 -1
  285. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  286. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  287. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
  288. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
  290. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
  291. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  293. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  294. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
  295. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  296. package/.output/server/chunks/routes/renderer.mjs +2 -2
  297. package/.output/server/chunks/virtual/entry.mjs +92 -18
  298. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  299. package/.output/server/package.json +1 -1
  300. package/README-zh.md +5 -4
  301. package/README.md +6 -5
  302. package/app/components/aml/AmlModelsTable.vue +5 -0
  303. package/app/components/ontology/OntologyGraph.vue +356 -0
  304. package/app/pages/aml/styles.css +1 -0
  305. package/app/pages/ontology/index.vue +318 -35
  306. package/app/pages/ontology/types.ts +42 -0
  307. package/app/pages/optimizer/index.vue +21 -4
  308. package/config.yml +1 -1
  309. package/docs/cli.en.md +2 -2
  310. package/docs/cli.md +2 -2
  311. package/docs/plugins.en.md +1 -1
  312. package/docs/plugins.md +1 -1
  313. package/docs/sdk.en.md +1 -1
  314. package/docs/sdk.md +1 -1
  315. package/i18n/locales/en.ts +26 -0
  316. package/i18n/locales/zh-CN.ts +26 -0
  317. package/mcp/aw-mcp-server.mjs +20 -2
  318. package/package.json +1 -1
  319. package/scripts/e2e-direct-rest-simulator-paper.mjs +624 -0
  320. package/scripts/e2e-idd-results.mjs +177 -0
  321. package/scripts/e2e-model-loop-live.mjs +58 -4
  322. package/scripts/e2e-ontology-live.mjs +138 -3
  323. package/scripts/e2e-ontology.mjs +393 -328
  324. package/scripts/e2e-pi-simulator-paper.mjs +2316 -0
  325. package/scripts/e2e-registered-harness-simulator-paper.mjs +1926 -0
  326. package/scripts/e2e-simulator-optimizer-paper.mjs +264 -0
  327. package/scripts/fixtures/omp-paper-harness.mjs +163 -0
  328. package/sdk/context.mjs +6 -0
  329. package/sdk/index.d.mts +2 -0
  330. package/server/api/workshop/aml/models/[id].patch.ts +36 -30
  331. package/server/api/workshop/ontology/drafts/[draftId]/autofix.ts +31 -0
  332. package/server/api/workshop/ontology/drafts/[draftId]/subgraph.ts +24 -0
  333. package/server/api/workshop/ontology/scene.ts +14 -1
  334. package/server/plugins-builtin/diag-bridge/client.mjs +390 -239
  335. package/server/plugins-builtin/diag-bridge/host/helpers.mjs +80 -0
  336. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +264 -2
  337. package/server/plugins-builtin/diag-bridge/i18n.json +84 -4
  338. package/server/services/workshop/agents/adapters/omp-rpc-client/frames.ts +129 -111
  339. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +6 -3
  340. package/server/services/workshop/agents/industrial/aml-job-tools.ts +602 -569
  341. package/server/services/workshop/agents/industrial/grant-guard.ts +15 -1
  342. package/server/services/workshop/agents/industrial/index.ts +2 -2
  343. package/server/services/workshop/agents/industrial/ontology-tools.ts +66 -6
  344. package/server/services/workshop/agents/industrial/ops-tools.ts +54 -16
  345. package/server/services/workshop/agents/industrial/optimizer-tools.ts +2 -0
  346. package/server/services/workshop/agents/industrial/recipe-gate.ts +19 -6
  347. package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +1 -1
  348. package/server/services/workshop/agents/omp-agent/supervision-history.ts +38 -0
  349. package/server/services/workshop/agents/omp-agent/tools-steer.ts +18 -1
  350. package/server/services/workshop/aml/aml.repo.ts +16 -0
  351. package/server/services/workshop/daq/bus/index.ts +12 -5
  352. package/server/services/workshop/db/database/open.ts +97 -97
  353. package/server/services/workshop/db/database/schema.ts +1 -0
  354. package/server/services/workshop/ontology/autofix.ts +198 -0
  355. package/server/services/workshop/ontology/contracts.ts +3 -1
  356. package/server/services/workshop/ontology/index.ts +2 -0
  357. package/server/services/workshop/ontology/ontology.service.ts +46 -0
  358. package/server/services/workshop/ontology/subgraph.core.ts +300 -0
  359. package/server/services/workshop/ontology/subgraph.service.ts +113 -0
  360. package/server/services/workshop/optimization/contracts.ts +2 -0
  361. package/server/services/workshop/optimization/profile-adopt.service.ts +5 -0
  362. package/server/services/workshop/optimization/profile.repo.ts +6 -4
  363. package/.output/public/_nuxt/B3Y5bCrM.js +0 -1
  364. package/.output/public/_nuxt/B8N8nsad2.js +0 -2
  365. package/.output/public/_nuxt/BO0BJx3w2.js +0 -8
  366. package/.output/public/_nuxt/BWn-lfCp2.js +0 -1
  367. package/.output/public/_nuxt/Bcs9zzO62.js +0 -1
  368. package/.output/public/_nuxt/BwO2Y5FH2.js +0 -1
  369. package/.output/public/_nuxt/Byf4IxU2.js +0 -14
  370. package/.output/public/_nuxt/C-LU6xv_.js +0 -1
  371. package/.output/public/_nuxt/CJ0bjZ6v2.js +0 -1
  372. package/.output/public/_nuxt/CJ3Vul2u.js +0 -1
  373. package/.output/public/_nuxt/CNwx04ln.js +0 -84
  374. package/.output/public/_nuxt/CVCscYzb2.js +0 -1
  375. package/.output/public/_nuxt/C_A0MCol2.js +0 -1
  376. package/.output/public/_nuxt/CnP6snIz.js +0 -3
  377. package/.output/public/_nuxt/D0mzKkZr.js +0 -1
  378. package/.output/public/_nuxt/D3buuIkE.js +0 -1
  379. package/.output/public/_nuxt/D4_INWgq.js +0 -1
  380. package/.output/public/_nuxt/D5kCimyw2.js +0 -1
  381. package/.output/public/_nuxt/DBtXLkyA.js +0 -1
  382. package/.output/public/_nuxt/DHURbGkn2.js +0 -1
  383. package/.output/public/_nuxt/DaBzS-iu.js +0 -1
  384. package/.output/public/_nuxt/DnlhV7Xe.js +0 -1
  385. package/.output/public/_nuxt/GtI6PUI32.js +0 -1
  386. package/.output/public/_nuxt/Nw_6OpQZ.js +0 -1
  387. package/.output/public/_nuxt/Y4sMSPrS2.js +0 -1
  388. package/.output/public/_nuxt/aml.CeLxRzvI.css +0 -1
  389. package/.output/public/_nuxt/builds/meta/7a79a7e4-d691-4cf5-ae3a-3b01814479fb.json +0 -1
  390. package/.output/public/_nuxt/goF_oZHF.js +0 -2
  391. package/.output/public/_nuxt/ontology.QMGeh66l.css +0 -1
  392. package/.output/public/_nuxt/optimizer.B8gCbU1b.css +0 -1
  393. package/.output/public/_nuxt/rJ7To74v2.js +0 -1
  394. package/.output/server/chunks/build/ontology-C3HS5pMo.mjs.map +0 -1
  395. package/.output/server/chunks/build/optimizer-BOtGWEtc.mjs +0 -200
  396. package/.output/server/chunks/build/optimizer-BOtGWEtc.mjs.map +0 -1
@@ -1,24 +1,26 @@
1
- import { t as table_default } from './table-DIu_YCJN.mjs';
1
+ import { t as table_default } from './table-CmVD-cA9.mjs';
2
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--XFl7CtY.mjs';
3
+ import { S as Select } from './select-B3Dsb9yq.mjs';
4
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';
5
7
  import { a as apiErrorMessage } from './api-error-BwAQLw44.mjs';
6
8
  import { n as ontologyApi } from './api-BEW_ebY_.mjs';
7
- import { defineComponent, ref, computed, mergeProps, unref, withCtx, createTextVNode, toDisplayString, openBlock, createBlock, Fragment, createVNode, createCommentVNode, renderList, useSSRContext } from 'vue';
8
- import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent, ssrRenderList, ssrRenderClass } from 'vue/server-renderer';
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';
9
11
  import './firstNotUndefined-8H5_qHUu.mjs';
10
12
  import '../_/SearchOutlined.mjs';
11
13
  import './tooltip-C2n2nNiQ.mjs';
12
14
  import './input-GtPuSEgt.mjs';
13
15
  import './FormItemContext-BlyzocS0.mjs';
14
16
  import './menu-BXt-X0dt.mjs';
15
- import './pagination-KaIvHBzi.mjs';
17
+ import './pagination-DTAconUo.mjs';
16
18
  import './responsiveObserve-DM3hpzhU.mjs';
17
19
  import '../_/RightOutlined.mjs';
18
20
  import '../_/LeftOutlined.mjs';
19
21
  import './checkbox-CrT4cnfu.mjs';
20
- import './dropdown-CjwsxU39.mjs';
21
- import './dropdown-C6YH_kSO.mjs';
22
+ import './dropdown-BNwTVGde.mjs';
23
+ import './dropdown-Cd-xPhR6.mjs';
22
24
  import './spin-C2cuvGth.mjs';
23
25
  import '../_/nitro.mjs';
24
26
  import 'node:crypto';
@@ -54,8 +56,147 @@ import 'vue-router';
54
56
  import 'pinia';
55
57
  import '@ant-design/colors';
56
58
  import 'axios';
59
+ import './isNumeric-CP7q_yhz.mjs';
57
60
  import './apiClient-BvXtNzC8.mjs';
58
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
59
200
  //#region app/pages/ontology/index.vue?vue&type=script&setup=true&lang.ts
60
201
  var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
61
202
  __name: "index",
@@ -102,6 +243,30 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
102
243
  const issues = computed(() => detail.value?.validation.issues ?? []);
103
244
  const errors = computed(() => issues.value.filter((i) => i.severity === "error"));
104
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);
105
270
  const draftOptions = computed(() => overview.value.drafts.map((d) => ({
106
271
  value: d.id,
107
272
  label: `${d.ontologyId} · rev ${d.rev}${d.baseVersion ? ` · 基线 v${d.baseVersion}` : ""}`
@@ -332,6 +497,45 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
332
497
  api$1.error(apiErrorMessage(e, t("ontology.loadDraftFail")));
333
498
  }
334
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
+ }
335
539
  async function loadVersions(ontologyId) {
336
540
  if (!ontologyId) {
337
541
  versions.value = [];
@@ -387,6 +591,26 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
387
591
  busy.value = false;
388
592
  }
389
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
+ }
390
614
  async function runCompile() {
391
615
  if (!draftId.value) return;
392
616
  busy.value = true;
@@ -496,6 +720,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
496
720
  return overview.value.drafts.find((d) => d.id === draftId.value)?.ontologyId ?? overview.value.ontologies[0]?.id ?? "";
497
721
  }
498
722
  function onDraftChange() {
723
+ closeDrawer();
499
724
  loadDraft();
500
725
  loadVersions(currentOntologyId());
501
726
  }
@@ -509,8 +734,13 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
509
734
  const _component_a_button = button_default;
510
735
  const _component_a_select = Select;
511
736
  const _component_a_tag = Tag;
737
+ const _component_a_segmented = segmented_default;
512
738
  const _component_a_table = table_default;
513
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "ontology-page" }, _attrs))} data-v-96aa4f41><header class="aw-page-head" data-v-96aa4f41><div data-v-96aa4f41><p class="aw-kicker" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.kicker"))}</p><h1 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.title"))}</h1><p class="sub" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.subtitle"))}</p></div><div class="head-actions" data-v-96aa4f41>`);
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>`);
514
744
  _push(ssrRenderComponent(_component_a_button, {
515
745
  loading: loading.value,
516
746
  onClick: loadOverview
@@ -532,7 +762,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
532
762
  }),
533
763
  _: 1
534
764
  }, _parent));
535
- _push(`</div></header><section class="toolbar" data-v-96aa4f41>`);
765
+ _push(`</div></header><section class="toolbar" data-v-45b08e35>`);
536
766
  _push(ssrRenderComponent(_component_a_select, {
537
767
  value: draftId.value,
538
768
  style: { "min-width": "320px" },
@@ -555,6 +785,17 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
555
785
  }),
556
786
  _: 1
557
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));
558
799
  _push(ssrRenderComponent(_component_a_button, {
559
800
  disabled: !draftId.value,
560
801
  loading: busy.value,
@@ -579,22 +820,22 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
579
820
  _: 1
580
821
  }, _parent));
581
822
  else _push(`<!---->`);
582
- _push(`<span class="hint" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.publishHint"))}</span></section><div class="tabs" data-v-96aa4f41><!--[-->`);
823
+ _push(`<span class="hint" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.publishHint"))}</span></section><div class="tabs" data-v-45b08e35><!--[-->`);
583
824
  ssrRenderList(tabs, (key) => {
584
- _push(`<button class="${ssrRenderClass([{ active: tab.value === key }, "pill-btn"])}" data-v-96aa4f41>${ssrInterpolate(unref(t)(`ontology.tab.${key}`))}</button>`);
825
+ _push(`<button class="${ssrRenderClass([{ active: tab.value === key }, "pill-btn"])}" data-v-45b08e35>${ssrInterpolate(unref(t)(`ontology.tab.${key}`))}</button>`);
585
826
  });
586
827
  _push(`<!--]--></div>`);
587
828
  if (tab.value === "overview") {
588
- _push(`<section class="panel" data-v-96aa4f41><div class="stats" data-v-96aa4f41><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.stat.ontologies"))}</span><strong data-v-96aa4f41>${ssrInterpolate(overview.value.ontologies.length)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.stat.drafts"))}</span><strong data-v-96aa4f41>${ssrInterpolate(overview.value.drafts.length)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.stat.entities"))}</span><strong data-v-96aa4f41>${ssrInterpolate(doc.value?.entities.length ?? 0)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.stat.rules"))}</span><strong data-v-96aa4f41>${ssrInterpolate(doc.value?.rules.length ?? 0)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.stat.bindings"))}</span><strong data-v-96aa4f41>${ssrInterpolate(doc.value?.bindings.length ?? 0)}</strong></div></div><div class="two-col" data-v-96aa4f41><div data-v-96aa4f41><h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.ontologies"))}</h2><ul class="plain" data-v-96aa4f41><!--[-->`);
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><!--[-->`);
589
830
  ssrRenderList(overview.value.ontologies, (o) => {
590
- _push(`<li data-v-96aa4f41><strong data-v-96aa4f41>${ssrInterpolate(o.id)}</strong><span data-v-96aa4f41>${ssrInterpolate(o.lineId || unref(t)("ontology.global"))} · v${ssrInterpolate(o.latest)} · ${ssrInterpolate(o.status)}</span></li>`);
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>`);
591
832
  });
592
833
  _push(`<!--]-->`);
593
- if (overview.value.ontologies.length === 0) _push(`<li class="muted" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.empty.ontologies"))}</li>`);
834
+ if (overview.value.ontologies.length === 0) _push(`<li class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.empty.ontologies"))}</li>`);
594
835
  else _push(`<!---->`);
595
- _push(`</ul></div><div data-v-96aa4f41><h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.issues"))}</h2><ul class="plain" data-v-96aa4f41><!--[-->`);
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><!--[-->`);
596
837
  ssrRenderList(issues.value.slice(0, 20), (issue, index) => {
597
- _push(`<li data-v-96aa4f41>`);
838
+ _push(`<li data-v-45b08e35>`);
598
839
  _push(ssrRenderComponent(_component_a_tag, { color: issueColor(issue.severity) }, {
599
840
  default: withCtx((_, _push, _parent, _scopeId) => {
600
841
  if (_push) _push(`${ssrInterpolate(issue.severity)}`);
@@ -602,65 +843,253 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
602
843
  }),
603
844
  _: 2
604
845
  }, _parent));
605
- _push(`<strong data-v-96aa4f41>${ssrInterpolate(issue.code)}</strong><span data-v-96aa4f41>${ssrInterpolate(issue.message)}</span>`);
606
- if (issue.hint) _push(`<em data-v-96aa4f41>${ssrInterpolate(issue.hint)}</em>`);
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>`);
607
848
  else _push(`<!---->`);
608
849
  _push(`</li>`);
609
850
  });
610
851
  _push(`<!--]-->`);
611
- if (issues.value.length === 0) _push(`<li class="muted" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.empty.issues"))}</li>`);
852
+ if (issues.value.length === 0) _push(`<li class="muted" data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.empty.issues"))}</li>`);
612
853
  else _push(`<!---->`);
613
- _push(`</ul></div></div></section>`);
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>`);
614
871
  } else if (tab.value === "graph") {
615
- _push(`<section class="panel" data-v-96aa4f41><h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.entities"))}</h2>`);
616
- _push(ssrRenderComponent(_component_a_table, {
617
- columns: entityColumns,
618
- "data-source": doc.value?.entities ?? [],
619
- "row-key": "key",
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,
620
876
  size: "small",
621
- pagination: { pageSize: 12 }
877
+ options: graphViewOptions.value
622
878
  }, null, _parent));
623
- _push(`<h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.relations"))}</h2>`);
624
- _push(ssrRenderComponent(_component_a_table, {
625
- columns: relationColumns,
626
- "data-source": doc.value?.relations ?? [],
627
- "row-key": "id",
628
- size: "small",
629
- pagination: { pageSize: 12 }
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
630
960
  }, {
631
- bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
961
+ default: withCtx((_, _push, _parent, _scopeId) => {
632
962
  if (_push) {
633
- if (column.key === "edge") _push(`<!--[--><code data-v-96aa4f41${_scopeId}>${ssrInterpolate(record.srcKey)}</code> → <code data-v-96aa4f41${_scopeId}>${ssrInterpolate(record.dstKey)}</code><!--]-->`);
634
- else if (column.key === "tier") {
635
- _push(`<!--[-->`);
636
- _push(ssrRenderComponent(_component_a_tag, { color: tierColor(record.properties?.evidenceTier) }, {
637
- default: withCtx((_, _push, _parent, _scopeId) => {
638
- if (_push) _push(`${ssrInterpolate(record.properties?.evidenceTier)}`);
639
- else return [createTextVNode(toDisplayString(record.properties?.evidenceTier), 1)];
640
- }),
641
- _: 2
642
- }, _parent, _scopeId));
643
- if (record.properties?.lagMs !== void 0) _push(`<span class="muted" data-v-96aa4f41${_scopeId}>lag ${ssrInterpolate(record.properties.lagMs)}ms</span>`);
644
- else _push(`<!---->`);
645
- _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>`);
646
1010
  } else _push(`<!---->`);
647
- } else return [column.key === "edge" ? (openBlock(), createBlock(Fragment, { key: 0 }, [
648
- createVNode("code", null, toDisplayString(record.srcKey), 1),
649
- createTextVNode(" → "),
650
- createVNode("code", null, toDisplayString(record.dstKey), 1)
651
- ], 64)) : column.key === "tier" ? (openBlock(), createBlock(Fragment, { key: 1 }, [createVNode(_component_a_tag, { color: tierColor(record.properties?.evidenceTier) }, {
652
- default: withCtx(() => [createTextVNode(toDisplayString(record.properties?.evidenceTier), 1)]),
653
- _: 2
654
- }, 1032, ["color"]), record.properties?.lagMs !== void 0 ? (openBlock(), createBlock("span", {
1011
+ } else return [selectedEntity.value ? (openBlock(), createBlock("div", {
655
1012
  key: 0,
656
- class: "muted"
657
- }, "lag " + toDisplayString(record.properties.lagMs) + "ms", 1)) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)];
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)];
658
1087
  }),
659
1088
  _: 1
660
1089
  }, _parent));
661
1090
  _push(`</section>`);
662
1091
  } else if (tab.value === "rules") {
663
- _push(`<section class="panel" data-v-96aa4f41>`);
1092
+ _push(`<section class="panel" data-v-45b08e35>`);
664
1093
  _push(ssrRenderComponent(_component_a_table, {
665
1094
  columns: ruleColumns,
666
1095
  "data-source": doc.value?.rules ?? [],
@@ -680,7 +1109,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
680
1109
  else if (column.key === "evidence") {
681
1110
  _push(`<!--[--><!--[-->`);
682
1111
  ssrRenderList(record.evidence, (e, i) => {
683
- _push(`<span data-v-96aa4f41${_scopeId}>`);
1112
+ _push(`<span data-v-45b08e35${_scopeId}>`);
684
1113
  _push(ssrRenderComponent(_component_a_tag, { color: tierColor(e.level) }, {
685
1114
  default: withCtx((_, _push, _parent, _scopeId) => {
686
1115
  if (_push) _push(`${ssrInterpolate(e.level)}`);
@@ -691,7 +1120,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
691
1120
  _push(`</span>`);
692
1121
  });
693
1122
  _push(`<!--]-->`);
694
- if (record.evidence.length === 0) _push(`<span class="muted" data-v-96aa4f41${_scopeId}>${ssrInterpolate(unref(t)("ontology.noEvidence"))}</span>`);
1123
+ if (record.evidence.length === 0) _push(`<span class="muted" data-v-45b08e35${_scopeId}>${ssrInterpolate(unref(t)("ontology.noEvidence"))}</span>`);
695
1124
  else _push(`<!---->`);
696
1125
  _push(`<!--]-->`);
697
1126
  } else if (column.key === "action") {
@@ -784,7 +1213,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
784
1213
  }, _parent));
785
1214
  _push(`</section>`);
786
1215
  } else if (tab.value === "bindings") {
787
- _push(`<section class="panel" data-v-96aa4f41>`);
1216
+ _push(`<section class="panel" data-v-45b08e35>`);
788
1217
  _push(ssrRenderComponent(_component_a_table, {
789
1218
  columns: bindingColumns,
790
1219
  "data-source": doc.value?.bindings ?? [],
@@ -794,17 +1223,17 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
794
1223
  }, {
795
1224
  bodyCell: withCtx(({ column, record }, _push, _parent, _scopeId) => {
796
1225
  if (_push) {
797
- if (column.key === "target") _push(`<code data-v-96aa4f41${_scopeId}>${ssrInterpolate(record.platformKind)}:${ssrInterpolate(record.platformId)}${ssrInterpolate(record.targetSub ? `#${record.targetSub}` : "")}</code>`);
798
- else if (column.key === "unitPair") _push(`<span data-v-96aa4f41${_scopeId}>${ssrInterpolate(record.unitDeclared || "—")} → ${ssrInterpolate(record.unitTarget || "—")}</span>`);
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>`);
799
1228
  else _push(`<!---->`);
800
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)];
801
1230
  }),
802
1231
  _: 1
803
1232
  }, _parent));
804
1233
  if (bindingFailures.value.length) {
805
- _push(`<div class="failures" data-v-96aa4f41><h3 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.bindingFailures"))}</h3><!--[-->`);
1234
+ _push(`<div class="failures" data-v-45b08e35><h3 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.bindingFailures"))}</h3><!--[-->`);
806
1235
  ssrRenderList(bindingFailures.value, (f) => {
807
- _push(`<p data-v-96aa4f41>`);
1236
+ _push(`<p data-v-45b08e35>`);
808
1237
  _push(ssrRenderComponent(_component_a_tag, { color: "red" }, {
809
1238
  default: withCtx((_, _push, _parent, _scopeId) => {
810
1239
  if (_push) _push(`${ssrInterpolate(f.code)}`);
@@ -818,7 +1247,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
818
1247
  } else _push(`<!---->`);
819
1248
  _push(`</section>`);
820
1249
  } else if (tab.value === "versions") {
821
- _push(`<section class="panel" data-v-96aa4f41>`);
1250
+ _push(`<section class="panel" data-v-45b08e35>`);
822
1251
  _push(ssrRenderComponent(_component_a_table, {
823
1252
  columns: versionColumns,
824
1253
  "data-source": versions.value,
@@ -835,9 +1264,9 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
835
1264
  }),
836
1265
  _: 2
837
1266
  }, _parent, _scopeId));
838
- else if (column.key === "contentHash") _push(`<code data-v-96aa4f41${_scopeId}>${ssrInterpolate(String(record.contentHash).slice(0, 16))}…</code>`);
1267
+ else if (column.key === "contentHash") _push(`<code data-v-45b08e35${_scopeId}>${ssrInterpolate(String(record.contentHash).slice(0, 16))}…</code>`);
839
1268
  else if (column.key === "createdAt") {
840
- _push(`<!--[--><span data-v-96aa4f41${_scopeId}>${ssrInterpolate(record.createdAt)}</span>`);
1269
+ _push(`<!--[--><span data-v-45b08e35${_scopeId}>${ssrInterpolate(record.createdAt)}</span>`);
841
1270
  if (isAdmin.value && record.status === "published") _push(ssrRenderComponent(_component_a_button, {
842
1271
  size: "small",
843
1272
  danger: "",
@@ -874,7 +1303,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
874
1303
  }),
875
1304
  _: 1
876
1305
  }, _parent));
877
- _push(`<div class="compare" data-v-96aa4f41>`);
1306
+ _push(`<div class="compare" data-v-45b08e35>`);
878
1307
  _push(ssrRenderComponent(_component_a_select, {
879
1308
  value: diffFrom.value,
880
1309
  "onUpdate:value": ($event) => diffFrom.value = $event,
@@ -882,7 +1311,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
882
1311
  style: { "width": "140px" },
883
1312
  placeholder: unref(t)("ontology.from")
884
1313
  }, null, _parent));
885
- _push(`<span data-v-96aa4f41>→</span>`);
1314
+ _push(`<span data-v-45b08e35>→</span>`);
886
1315
  _push(ssrRenderComponent(_component_a_select, {
887
1316
  value: diffTo.value,
888
1317
  "onUpdate:value": ($event) => diffTo.value = $event,
@@ -902,11 +1331,11 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
902
1331
  }, _parent));
903
1332
  _push(`</div>`);
904
1333
  if (diff.value) {
905
- _push(`<div class="diff" data-v-96aa4f41><p data-v-96aa4f41><strong data-v-96aa4f41>v${ssrInterpolate(diff.value.from)} → v${ssrInterpolate(diff.value.to)}</strong></p><p data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.diff.entities"))}: ${ssrInterpolate(diffLabel(diff.value.entities))}</p><p data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.diff.relations"))}: ${ssrInterpolate(diffLabel(diff.value.relations))}</p><p data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.diff.rules"))}: ${ssrInterpolate(diffLabel(diff.value.rules))}</p><p data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.diff.bindings"))}: ${ssrInterpolate(diffLabel(diff.value.bindings))}</p>`);
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>`);
906
1335
  if (diff.value.rules.changed.length) {
907
- _push(`<p data-v-96aa4f41><strong data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.diff.rulesChanged"))}:</strong><!--[-->`);
1336
+ _push(`<p data-v-45b08e35><strong data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.diff.rulesChanged"))}:</strong><!--[-->`);
908
1337
  ssrRenderList(diff.value.rules.changed, (id) => {
909
- _push(`<code class="chip" data-v-96aa4f41>${ssrInterpolate(id)}</code>`);
1338
+ _push(`<code class="chip" data-v-45b08e35>${ssrInterpolate(id)}</code>`);
910
1339
  });
911
1340
  _push(`<!--]--></p>`);
912
1341
  } else _push(`<!---->`);
@@ -914,20 +1343,20 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
914
1343
  } else _push(`<!---->`);
915
1344
  _push(`</section>`);
916
1345
  } else {
917
- _push(`<section class="panel" data-v-96aa4f41>`);
918
- if (!preview.value) _push(`<div class="muted" data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.compileEmpty"))}</div>`);
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>`);
919
1348
  else {
920
- _push(`<!--[--><div class="stats" data-v-96aa4f41><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.col.status"))}</span><strong data-v-96aa4f41>${ssrInterpolate(preview.value.status)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>compiled</span><strong data-v-96aa4f41>${ssrInterpolate(preview.value.counts.compiled)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>guard</span><strong data-v-96aa4f41>${ssrInterpolate(preview.value.counts.guard)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>explained</span><strong data-v-96aa4f41>${ssrInterpolate(preview.value.counts.explained)}</strong></div><div class="stat" data-v-96aa4f41><span data-v-96aa4f41>rejected</span><strong data-v-96aa4f41>${ssrInterpolate(preview.value.counts.rejected)}</strong></div></div><p class="muted" data-v-96aa4f41> packHash <code data-v-96aa4f41>${ssrInterpolate(preview.value.packHash.slice(0, 24))}…</code></p><h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.artifacts"))}</h2><div class="artifacts" data-v-96aa4f41><div data-v-96aa4f41><h3 data-v-96aa4f41>problem_ir</h3><pre data-v-96aa4f41>${ssrInterpolate(JSON.stringify({
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({
921
1350
  mvBounds: preview.value.artifacts.problemIr.mvBounds,
922
1351
  cvBounds: preview.value.artifacts.problemIr.cvBounds
923
- }, null, 2))}</pre></div><div data-v-96aa4f41><h3 data-v-96aa4f41>control_guard</h3><pre data-v-96aa4f41>${ssrInterpolate(JSON.stringify(preview.value.artifacts.controlGuard, null, 2))}</pre></div><div data-v-96aa4f41><h3 data-v-96aa4f41>process_model</h3><pre data-v-96aa4f41>${ssrInterpolate(JSON.stringify({
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({
924
1353
  featureCandidates: preview.value.artifacts.processModel.featureCandidates.length,
925
1354
  delayPriors: preview.value.artifacts.processModel.delayPriors.length
926
- }, null, 2))}</pre></div><div data-v-96aa4f41><h3 data-v-96aa4f41>scene_contract</h3><pre data-v-96aa4f41>${ssrInterpolate(JSON.stringify({
1355
+ }, null, 2))}</pre></div><div data-v-45b08e35><h3 data-v-45b08e35>scene_contract</h3><pre data-v-45b08e35>${ssrInterpolate(JSON.stringify({
927
1356
  variables: preview.value.artifacts.sceneContract.variables.length,
928
1357
  constraints: preview.value.artifacts.sceneContract.constraints.length,
929
1358
  relations: preview.value.artifacts.sceneContract.inferredRelations.length
930
- }, null, 2))}</pre></div></div><h2 data-v-96aa4f41>${ssrInterpolate(unref(t)("ontology.section.ruleTrace"))}</h2>`);
1359
+ }, null, 2))}</pre></div></div><h2 data-v-45b08e35>${ssrInterpolate(unref(t)("ontology.section.ruleTrace"))}</h2>`);
931
1360
  _push(ssrRenderComponent(_component_a_table, {
932
1361
  columns: traceColumns,
933
1362
  "data-source": preview.value.traces,
@@ -971,7 +1400,7 @@ index_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
971
1400
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/ontology/index.vue");
972
1401
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
973
1402
  };
974
- var ontology_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-96aa4f41"]]);
1403
+ var ontology_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-45b08e35"]]);
975
1404
 
976
1405
  export { ontology_default as default };
977
- //# sourceMappingURL=ontology-C3HS5pMo.mjs.map
1406
+ //# sourceMappingURL=ontology-DK0Mf0zT.mjs.map