@witty-ai/skill-insight 0.5.0-beta → 0.7.0-beta

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 (303) hide show
  1. package/.env.example +6 -0
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/routes-manifest.json +24 -0
  7. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  8. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  19. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/api/config/create/route.js +4 -3
  25. package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/config/route.js +5 -4
  27. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/route.js +6 -5
  29. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/evaluation/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +6 -5
  32. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +4 -3
  34. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
  36. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +4 -3
  37. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/rejudge/route.js +6 -5
  39. package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/session/route.js +4 -4
  41. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/app-paths-manifest.json +3 -0
  43. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/build-manifest.json +11 -0
  44. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/server-reference-manifest.json +4 -0
  45. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js +6 -0
  46. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.map +5 -0
  47. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.nft.json +1 -0
  48. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route_client-reference-manifest.js +2 -0
  49. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/app-paths-manifest.json +3 -0
  50. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/build-manifest.json +11 -0
  51. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/server-reference-manifest.json +4 -0
  52. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js +6 -0
  53. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.map +5 -0
  54. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.nft.json +1 -0
  55. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route_client-reference-manifest.js +2 -0
  56. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js +3 -2
  58. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +5 -2
  60. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +5 -2
  62. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/skills/logs/route.js +6 -5
  64. package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/skills/route.js +3 -2
  66. package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/app-paths-manifest.json +3 -0
  68. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/build-manifest.json +11 -0
  69. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/server-reference-manifest.json +4 -0
  70. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js +8 -0
  71. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.map +5 -0
  72. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -0
  73. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route_client-reference-manifest.js +2 -0
  74. package/.next/standalone/.next/server/app/api/skills/upload/route.js +5 -2
  75. package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/task-stats/route/app-paths-manifest.json +3 -0
  77. package/.next/standalone/.next/server/app/api/task-stats/route/build-manifest.json +11 -0
  78. package/.next/standalone/.next/server/app/api/task-stats/route/server-reference-manifest.json +4 -0
  79. package/.next/standalone/.next/server/app/api/task-stats/route.js +12 -0
  80. package/.next/standalone/.next/server/app/api/task-stats/route.js.map +5 -0
  81. package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -0
  82. package/.next/standalone/.next/server/app/api/task-stats/route_client-reference-manifest.js +2 -0
  83. package/.next/standalone/.next/server/app/api/upload/route.js +5 -4
  84. package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +2 -2
  86. package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/details.html +1 -1
  89. package/.next/standalone/.next/server/app/details.rsc +5 -5
  90. package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
  91. package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
  93. package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
  94. package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
  95. package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
  96. package/.next/standalone/.next/server/app/index.html +1 -1
  97. package/.next/standalone/.next/server/app/index.rsc +5 -5
  98. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  99. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  100. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  101. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  102. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  103. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/login.html +1 -1
  106. package/.next/standalone/.next/server/app/login.rsc +5 -5
  107. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
  108. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  109. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
  110. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  111. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  112. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  113. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  114. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/skills.html +1 -1
  118. package/.next/standalone/.next/server/app/skills.rsc +5 -5
  119. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
  120. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  121. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
  122. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  123. package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
  124. package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  125. package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
  126. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +3 -0
  128. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +1 -1
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__23efcd78._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6261d672._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +3 -0
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3d72e3._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa5c8858._.js +2 -2
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +1 -1
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c20da96a._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c602c518._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +1 -1
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f9e66e02._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/_3e8b4d8c._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/_46f10554._.js +3 -0
  162. package/.next/standalone/.next/server/chunks/_4c806e26._.js +3 -0
  163. package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
  164. package/.next/standalone/.next/server/chunks/_ddffef3e._.js +1 -1
  165. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_setup_opencode-tui_route_actions_fc8ae29f.js +3 -0
  166. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_skills_sync-enterprise_route_actions_0ca45899.js +3 -0
  167. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_task-stats_route_actions_983505cd.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ce889_server_app_api_setup_opencode-commands_si-optimizer_route_actions_fcde30ef.js +3 -0
  169. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +47 -4
  170. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -1
  171. package/.next/standalone/.next/server/chunks/src_98433cb8._.js +237 -0
  172. package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +57 -8
  173. package/.next/standalone/.next/server/chunks/src_lib_119f6c7b._.js +3 -0
  174. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9ab7cc4a._.js → [root-of-the-server]__082c32a2._.js} +2 -2
  175. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
  176. package/.next/standalone/.next/server/chunks/ssr/_049876f0._.js +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/_09546b95._.js +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +9 -9
  180. package/.next/standalone/.next/server/chunks/ssr/{_b121f1ae._.js → _e2faf4f5._.js} +2 -2
  181. package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -1
  182. package/.next/standalone/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_3582f3d0.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_a1341fea._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js +1 -1
  185. package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +1 -1
  186. package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
  187. package/.next/standalone/.next/server/pages/404.html +1 -1
  188. package/.next/standalone/.next/server/pages/500.html +2 -2
  189. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  191. package/.next/standalone/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
  192. package/.next/standalone/.next/static/chunks/09f192c9b0609ad8.js +1 -0
  193. package/.next/standalone/.next/static/chunks/1945a5514fbc393c.css +1 -0
  194. package/.next/{static/chunks/07c9f28a269c701a.js → standalone/.next/static/chunks/361e4cf1e9a71ccb.js} +1 -1
  195. package/.next/{static/chunks/5432ce4a494bc74d.js → standalone/.next/static/chunks/60bc50374fd32f20.js} +3 -3
  196. package/.next/standalone/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
  197. package/.next/standalone/.next/static/chunks/961f7fa606dd26a8.js +1 -0
  198. package/.next/standalone/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
  199. package/.next/standalone/.next/static/chunks/c513373e5cfedd5b.js +2 -0
  200. package/.next/standalone/.next/static/chunks/ca3017e51e817855.js +1 -0
  201. package/.next/{static/chunks/7e35f4cf2e266022.js → standalone/.next/static/chunks/cb104c3cb4c52833.js} +1 -1
  202. package/.next/{static/chunks/ff6357067630b168.js → standalone/.next/static/chunks/e13d208072a48316.js} +1 -1
  203. package/.next/standalone/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
  204. package/.next/standalone/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
  205. package/.next/standalone/node_modules/.prisma/client/edge.js +7 -3
  206. package/.next/standalone/node_modules/.prisma/client/index-browser.js +4 -0
  207. package/.next/standalone/node_modules/.prisma/client/index.js +7 -3
  208. package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
  209. package/.next/standalone/node_modules/.prisma/client/schema.prisma +26 -22
  210. package/.next/standalone/node_modules/.prisma/client/wasm.js +4 -0
  211. package/.next/standalone/node_modules/adm-zip/util/constants.js +142 -0
  212. package/.next/standalone/node_modules/adm-zip/util/decoder.js +5 -0
  213. package/.next/standalone/node_modules/adm-zip/util/errors.js +63 -0
  214. package/.next/standalone/node_modules/adm-zip/util/fattr.js +76 -0
  215. package/.next/standalone/node_modules/adm-zip/util/index.js +5 -0
  216. package/.next/standalone/node_modules/adm-zip/util/utils.js +339 -0
  217. package/.next/standalone/package.json +6 -2
  218. package/.next/standalone/prisma/schema.prisma +7 -3
  219. package/.next/standalone/scripts/opencode_plugin.ts +158 -50
  220. package/.next/standalone/scripts/opencode_tui_plugin.tsx +308 -0
  221. package/.next/standalone/scripts/si-optimizer.md +5 -0
  222. package/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
  223. package/.next/static/chunks/09f192c9b0609ad8.js +1 -0
  224. package/.next/static/chunks/1945a5514fbc393c.css +1 -0
  225. package/.next/{standalone/.next/static/chunks/07c9f28a269c701a.js → static/chunks/361e4cf1e9a71ccb.js} +1 -1
  226. package/.next/{standalone/.next/static/chunks/5432ce4a494bc74d.js → static/chunks/60bc50374fd32f20.js} +3 -3
  227. package/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
  228. package/.next/static/chunks/961f7fa606dd26a8.js +1 -0
  229. package/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
  230. package/.next/static/chunks/c513373e5cfedd5b.js +2 -0
  231. package/.next/static/chunks/ca3017e51e817855.js +1 -0
  232. package/.next/{standalone/.next/static/chunks/7e35f4cf2e266022.js → static/chunks/cb104c3cb4c52833.js} +1 -1
  233. package/.next/{standalone/.next/static/chunks/ff6357067630b168.js → static/chunks/e13d208072a48316.js} +1 -1
  234. package/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
  235. package/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
  236. package/package.json +6 -2
  237. package/prisma/schema.prisma +7 -3
  238. package/scripts/activate_telemetry.sh +44 -1
  239. package/scripts/opencode_plugin.ts +158 -50
  240. package/scripts/opencode_tui_plugin.tsx +308 -0
  241. package/scripts/si-optimizer.md +5 -0
  242. package/scripts/utils.js +0 -1
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +0 -3
  244. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/_41a98bd8._.js +0 -3
  250. package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +0 -175
  251. package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +0 -3
  252. package/.next/standalone/.next/static/chunks/01eddf501c574a44.js +0 -1
  253. package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +0 -1
  254. package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
  255. package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +0 -1
  256. package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +0 -1
  257. package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +0 -1
  258. package/.next/standalone/.next/static/chunks/dc59a07a8f327b40.js +0 -1
  259. package/.next/standalone/LICENSE +0 -21
  260. package/.next/standalone/bin/cli.js +0 -106
  261. package/.next/standalone/custom-models.example.json +0 -21
  262. package/.next/standalone/eslint.config.mjs +0 -18
  263. package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +0 -126
  264. package/.next/standalone/features/feature-skill-used-jump-link/feature.json +0 -32
  265. package/.next/standalone/features/feature-skill-used-jump-link/issue.md +0 -32
  266. package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +0 -528
  267. package/.next/standalone/next.config.ts +0 -41
  268. package/.next/standalone/scripts/activate_telemetry.sh +0 -159
  269. package/.next/standalone/scripts/create_migration_package.sh +0 -124
  270. package/.next/standalone/scripts/fix_models.js +0 -66
  271. package/.next/standalone/scripts/init_opengauss.py +0 -284
  272. package/.next/standalone/scripts/install.js +0 -273
  273. package/.next/standalone/scripts/logs.js +0 -38
  274. package/.next/standalone/scripts/otel_data/logs.jsonl +0 -12
  275. package/.next/standalone/scripts/otel_data/metrics.jsonl +0 -21
  276. package/.next/standalone/scripts/otel_data/raw_requests.jsonl +0 -8
  277. package/.next/standalone/scripts/otel_data/raw_requests.jsonl.bak +0 -6
  278. package/.next/standalone/scripts/otel_receiver.py +0 -580
  279. package/.next/standalone/scripts/postinstall.js +0 -192
  280. package/.next/standalone/scripts/publish-npm.js +0 -401
  281. package/.next/standalone/scripts/restart.js +0 -26
  282. package/.next/standalone/scripts/restart.sh +0 -138
  283. package/.next/standalone/scripts/restart_dev.sh +0 -132
  284. package/.next/standalone/scripts/start.js +0 -291
  285. package/.next/standalone/scripts/status.js +0 -41
  286. package/.next/standalone/scripts/stop.js +0 -90
  287. package/.next/standalone/scripts/sync_skills.js +0 -216
  288. package/.next/standalone/scripts/utils.js +0 -235
  289. package/.next/standalone/tests/setup_skill_optimizer.sh +0 -118
  290. package/.next/standalone/tsconfig.json +0 -34
  291. package/.next/static/chunks/01eddf501c574a44.js +0 -1
  292. package/.next/static/chunks/1e782a49beaf489c.js +0 -1
  293. package/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
  294. package/.next/static/chunks/67bd1a5de2195779.js +0 -1
  295. package/.next/static/chunks/a87b5e84254095a5.js +0 -1
  296. package/.next/static/chunks/c6bd2818656b1f20.css +0 -1
  297. package/.next/static/chunks/dc59a07a8f327b40.js +0 -1
  298. /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
  299. /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
  300. /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
  301. /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
  302. /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
  303. /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
@@ -0,0 +1,237 @@
1
+ module.exports=[50374,e=>{"use strict";function t(e){if(!e||!Array.isArray(e)||0===e.length)return[];if(e.some(e=>e&&(e.requestMessages||e.responseMessage)))return e;let t=[],n=[],i=e=>{if(0===e.length)return;let n=-1;for(let t=e.length-1;t>=0;t--)if("assistant"===e[t].role||"subagent"===e[t].role){n=t;break}-1!==n?t.push({requestMessages:e.slice(0,n),responseMessage:e[n]}):t.push({requestMessages:e,responseMessage:null})};for(let t of e){if(!t)continue;let e=t.role||"unknown";("user"===e||"opencode"===e)&&n.length>0&&(i(n),n=[]),n.push(t)}return i(n),t}function n(e){let t=new Set,n=[],i=/^[a-zA-Z0-9_\-\.]+$/,s=e=>{if(e)for(let s of e.tool_calls||e.toolCalls||[]){let e=(s?.function?.name??s?.name??"").toLowerCase(),o=s?.function?.arguments??s?.arguments??"";try{let s="string"==typeof o?JSON.parse(o):o;if("skill"===e||"load_skill"===e){let e=s?.name??s?.skill_name??s?.skillName??s?.skill;if(null!=e&&String(e).trim()){let o=String(e).trim().replace(/^['"]+|['"]+$/g,"");if(i.test(o)&&!t.has(o)){t.add(o);let e=s?.version!=null?Number(s.version):null;n.push({name:o,version:null===e||isNaN(e)?null:e})}}continue}if("task"===e){let e=s?.load_skills??s?.loadSkills??s?.skills??[];if(Array.isArray(e))for(let s of e){let e="string"==typeof s?s:s?.name??s?.skill??s?.skill_name??s?.skillName;if(null==e||!String(e).trim())continue;let o=String(e).trim().replace(/^['"]+|['"]+$/g,"");if(!i.test(o)||t.has(o))continue;t.add(o);let r="object"==typeof s?s?.version:null,l=null!=r?Number(r):null;n.push({name:o,version:null===l||isNaN(l)?null:l})}}}catch{}}};for(let t of e)for(let e of(s(t.responseMessage),t.requestMessages||[]))("assistant"===e.role||"subagent"===e.role)&&s(e);return n}function i(e){let t=new Set,n=[],i=e=>{if(e&&Array.isArray(e))for(let i of e){if(i?.type!=="tool_use")continue;let e=(i?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let s=i.input,o=s?.skill??s?.skill_name??s?.skillName??s?.name;if(null==o||!String(o).trim())continue;let r=String(o).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(r)&&!t.has(r)){t.add(r);let e=s?.version!=null?Number(s.version):null;n.push({name:r,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&i(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&i(e.content);return n}function s(e){let t=new Set,n=[],i=e=>{if(e&&Array.isArray(e))for(let i of e){if(i?.type!=="toolCall")continue;let e=(i?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let s=i?.arguments,o=s?.skill??s?.skill_name??s?.skillName??s?.name;if(null==o||!String(o).trim())continue;let r=String(o).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(r)&&!t.has(r)){t.add(r);let e=s?.version!=null?Number(s.version):null;n.push({name:r,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&i(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&i(e.content);return n}e.s(["extractSkillsWithVersionsFromClaudeSession",()=>i,"extractSkillsWithVersionsFromOpenClawSession",()=>s,"extractSkillsWithVersionsFromOpencodeSession",()=>n,"normalizeInteractions",()=>t])},62414,e=>{"use strict";function t(e,t,n,i,s,o,r){let l=s?`Reference Skill Definition (Using this skill as the context for evaluation):
2
+ ${s}
3
+
4
+ `:"",a=e=>{let t="";return"optional"===e.controlFlowType?t=" [可选 - 未执行不扣分]":"conditional"===e.controlFlowType?t=` [条件分支 - ${e.branchLabel||e.condition||""}]`:"loop"===e.controlFlowType?t=` [循环 - ${e.loopCondition||""}, 预期${e.expectedMinCount??"?"}~${e.expectedMaxCount??"?"}次]`:"handoff"===e.controlFlowType&&(t=" [衔接 - 技能间转换]"),` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}${t}`};if("root_causes"===o)return`
5
+ You are an objective and strict judge. Your task is evaluate "Root Causes" against the "User Answer" for a given "User Query".
6
+
7
+ ${l}User Query: ${e}
8
+ User Answer: ${t}
9
+
10
+ Evaluation Criteria - Root Causes (Must identify these issues):
11
+ ${n.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
12
+
13
+ Evaluation Steps:
14
+ 1. For each Root Cause listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0) based on the User Answer.
15
+ - 0.0 = Not mentioned or completely wrong.
16
+ - 0.5 = Partially mentioned or vague.
17
+ - 1.0 = Clearly and correctly addressed.
18
+ 2. Provide a brief explanation (in Chinese) for your evaluation of each item.
19
+
20
+ Respond ONLY with a JSON object in the following format:
21
+ {
22
+ "evaluations": [
23
+ { "id": "RC-0", "match_score": 0.5, "explanation": "此处用中文简要解释评分理由..." }
24
+ ...
25
+ ]
26
+ }
27
+ `;if("key_actions"===o){let n=r?`Execution Steps (actual steps extracted from the execution trace):
28
+ ${r}
29
+
30
+ `:"",s=r?"Please evaluate each Key Action based on the Execution Steps above. Determine whether each action was actually performed during execution.":`User Answer: ${t}
31
+
32
+ Please evaluate each Key Action based on the User Answer above.`;return`
33
+ You are an objective and strict judge. Your task is to evaluate "Key Actions" against the execution trace for a given "User Query".
34
+
35
+ ${l}User Query: ${e}
36
+ ${n}${s}
37
+
38
+ Evaluation Criteria - Key Actions:
39
+ ${i.map(e=>a(e)).join("\n")||" (None)"}
40
+
41
+ Evaluation Steps:
42
+ 1. For each Key Action listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0).
43
+ - 0.0 = Not performed at all.
44
+ - 0.5 = Partially performed or performed incorrectly.
45
+ - 1.0 = Clearly and correctly performed.
46
+ 2. **CRITICAL**: For Key Actions involving specific operations (e.g., "backup", "modify", "restart"), you must find EXPLICIT EVIDENCE in the execution steps that these actions were actually performed. Checking/reading is NOT the same as backing up/modifying.
47
+ 3. Provide a brief explanation (in Chinese) for your evaluation of each item.
48
+
49
+ Special Scoring Rules for Control Flow Types:
50
+ - **可选 (optional)**: If this action was NOT performed, give a score of 0.0 but note in your explanation that it is optional and does not affect the overall score. If it WAS performed, score normally.
51
+ - **条件分支 (conditional)**: This action belongs to a conditional branch. Only evaluate whether this specific branch's action was performed. If the actual scenario did not require this branch (e.g., the fault type was different), a score of 0.0 is acceptable and should be explained as "此分支未触发" (this branch was not triggered).
52
+ - **循环 (loop)**: This action is part of a loop. Evaluate whether the loop body was executed, and if the number of executions falls within the expected range. If executed the expected number of times, score 1.0. If executed but fewer times than expected, score 0.5. If not executed at all, score 0.0.
53
+
54
+ Respond ONLY with a JSON object in the following format:
55
+ {
56
+ "evaluations": [
57
+ { "id": "KA-0", "match_score": 1.0, "explanation": "..." }
58
+ ...
59
+ ]
60
+ }
61
+ `}return`
62
+ You are an objective and strict judge. Your task is to evaluate a "User Answer" against a set of weighted criteria for a given "User Query".
63
+
64
+ ${l}User Query: ${e}
65
+ User Answer: ${t}
66
+
67
+ Evaluation Criteria (Score strictly based on these weighted items):
68
+ 1. Root Causes (Must identify these issues):
69
+ ${n.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
70
+
71
+ 2. Key Actions:
72
+ ${i.map(e=>a(e)).join("\n")||" (None)"}
73
+
74
+ Evaluation Steps:
75
+ 1. For each item listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0).
76
+ - 0.0 = Not mentioned or completely wrong.
77
+ - 0.5 = Partially mentioned or vague.
78
+ - 1.0 = Clearly and correctly addressed.
79
+ **CRITICAL**: For Key Actions involving specific operations (e.g., "backup", "modify", "restart"), you must find EXPLICT EVIDENCE in the User Answer that these actions were performed (checking/reading is NOT the same as backing up).
80
+ 2. Provide a brief explanation (in Chinese) for your evaluation of each item.
81
+ 3. If a Reference Skill Definition is provided, consider whether the answer aligns with the skill's capabilities and instructions, but primarily score based on the specific Root Causes and Key Actions listed above.
82
+
83
+ Special Scoring Rules for Control Flow Types:
84
+ - **可选 (optional)**: If this action was NOT performed, give a score of 0.0 but note in your explanation that it is optional and does not affect the overall score. If it WAS performed, score normally.
85
+ - **条件分支 (conditional)**: This action belongs to a conditional branch. Only evaluate whether this specific branch's action was performed. If the actual scenario did not require this branch (e.g., the fault type was different), a score of 0.0 is acceptable and should be explained as "此分支未触发" (this branch was not triggered).
86
+ - **循环 (loop)**: This action is part of a loop. Evaluate whether the loop body was executed, and if the number of executions falls within the expected range. If executed the expected number of times, score 1.0. If executed but fewer times than expected, score 0.5. If not executed at all, score 0.0.
87
+
88
+ Respond ONLY with a JSON object in the following format:
89
+ {
90
+ "evaluations": [
91
+ { "id": "RC-0", "match_score": 0.5, "explanation": "此处用中文简要解释评分理由..." },
92
+ { "id": "KA-0", "match_score": 1.0, "explanation": "..." }
93
+ ...
94
+ ]
95
+ }
96
+ `}e.s(["generateJudgePrompt",()=>t])},33526,e=>{"use strict";let t=`
97
+ 你是一个专业的 Skill 优化分析师。你的任务是:
98
+
99
+ 1. 分析 Agent 在某个评分项上扣分的原因
100
+ 2. 判断该扣分是否可以通过优化 Skill 定义来解决
101
+ 3. 检查 Agent 的实际执行过程是否符合 Skill 中定义的步骤
102
+
103
+ ## 判断标准
104
+
105
+ **是 Skill 问题的情况**:
106
+ - Skill 中完全没有提到该知识点或操作步骤
107
+ - Skill 中的描述不够清晰或不够详细,导致 Agent 无法正确理解
108
+ - Skill 中缺少关键的参数说明、工具使用方法或注意事项
109
+ - Skill 中的信息过时或与实际情况不符
110
+ - Agent 的执行步骤与 Skill 定义不一致,但 Skill 的指导本身存在问题(如步骤顺序不合理、缺少前置条件说明等)
111
+
112
+ **不是 Skill 问题的情况**:
113
+ - Skill 中已经清楚地包含了相关信息,但 Agent 没有正确使用(模型能力问题)
114
+ - 该评分项要求的是通用知识,不在 Skill 的职责范围内
115
+ - 该评分项涉及的是运行时环境问题(网络、权限等)
116
+ - Agent 的执行过程偏离了 Skill 的指导,但 Skill 的指导本身是正确和清晰的
117
+
118
+ ## 分析步骤
119
+
120
+ 1. **阅读 Skill 定义**:理解 Skill 规定的操作步骤和知识要点
121
+ 2. **查看交互历史**:观察 Agent 实际执行了哪些操作
122
+ 3. **对比分析**:
123
+ - Agent 的执行是否遵循了 Skill 的指导?
124
+ - 如果没有遵循,是因为 Skill 不清晰,还是 Agent 自身的问题?
125
+ - 评分项要求的内容在 Skill 中是否有足够的覆盖?
126
+ 4. **得出结论**:判断是否是 Skill 问题,并给出改进建议
127
+
128
+ ## 输出格式
129
+
130
+ 请以 JSON 格式返回:
131
+ {
132
+ "id": "评分项ID",
133
+ "is_skill_issue": true或false,
134
+ "reasoning": "使用中文详细解释判断依据,需要:1) 引用 Skill 定义中的相关内容 2) 说明 Agent 执行过程中的表现 3) 解释为什么是/不是 Skill 问题",
135
+ "improvement_suggestion": "如果是 Skill 问题,给出具体的改进建议,说明应该在 Skill 中添加或修改什么内容;否则留空或不填"
136
+ }
137
+ `;function n(e,n,i,s,o){return`${t}
138
+
139
+ ---
140
+
141
+ ## 分析材料
142
+
143
+ ### [当前 Skill 定义]
144
+ \`\`\`
145
+ ${e}
146
+ \`\`\`
147
+
148
+ ### [用户问题]
149
+ ${i}
150
+
151
+ ### [Agent 执行过程 - 完整交互历史]
152
+ \`\`\`
153
+ ${o}
154
+ \`\`\`
155
+
156
+ ### [Agent 最终回答]
157
+ ${s}
158
+
159
+ ### [待分析的评分项]
160
+ - **ID**: ${n.id}
161
+ - **类型**: ${"root_cause"===n.type?"Root Cause (根因分析)":"Key Action (关键操作)"}
162
+ - **评分标准**: ${n.content}
163
+ - **得分**: ${(100*n.match_score).toFixed(0)}% (满分 100%)
164
+ - **扣分原因**: ${n.explanation}
165
+ - **权重**: ${n.weight}
166
+
167
+ ---
168
+
169
+ 请根据以上材料,判断此评分项的扣分是否可以通过优化 Skill 定义来改善,并输出 JSON 结果:`}e.s(["SKILL_ISSUE_ANALYSIS_PROMPT",0,t,"generateSkillIssuePrompt",()=>n])},44087,e=>{"use strict";let t=`
170
+ 你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的对话历史(包括工具输出),并提取任何“中间故障”或“异常过程”。
171
+
172
+ “中间故障”或“异常过程”定义如下:
173
+ 1. **工具执行错误**:代理尝试运行工具(例如 bash 命令、python 脚本)但失败了(非零退出代码、堆栈跟踪、错误消息)。
174
+ 2. **逻辑/推理修正**:代理意识到自己犯了错误并明确纠正自己(例如,“我犯了一个错误...”,“之前的方法失败了...”)。
175
+ 3. **超时/卡住**:代理提到等待太久或进程卡住。
176
+ 4. **无效参数**:代理尝试使用带有无效参数的工具并被系统拒绝。
177
+
178
+ 你将获得包含完整对话历史的最后一次交互内容。
179
+
180
+ 逐步分析历史记录。对于发现的每个故障,提取:
181
+ - failure_type: (Tool Error / Reasoning Error / Timeout / Invalid Usage)
182
+ - description: 用中文简要总结出了什么问题。
183
+ - context: 导致失败的具体命令或推理内容。
184
+ - recovery: 代理如何尝试恢复(如果有)。
185
+
186
+ 仅以以下 JSON 格式响应:
187
+ {
188
+ "failures": [
189
+ {
190
+ "failure_type": "Tool Error",
191
+ "description": "无法安装包 'xyz'",
192
+ "context": "pip install xyz",
193
+ "recovery": "代理尝试改用 apt-get。"
194
+ },
195
+ ...
196
+ ]
197
+ }
198
+
199
+ 如果未发现故障,请返回:
200
+ {
201
+ "failures": []
202
+ }
203
+ `;function n(e){return`
204
+ ${t}
205
+
206
+ Conversation History:
207
+ ${e}
208
+ `}e.s(["FAILURE_EXTRACTION_PROMPT",0,t,"generateFailureAnalysisPrompt",()=>n])},18868,e=>{"use strict";let t=`
209
+ 你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的完整对话历史,并精准提取本次会话的**最终执行结果**。
210
+
211
+ **提取规则:**
212
+ 1. **必须完整保留**:如果最终结果分散在多个连续的回复中(例如先输出长篇详细报告,紧接着输出总结摘要),必须将它们**全部提取并按顺序拼接**,形成一个完整的报告。
213
+ 2. **剔除过程噪声**:只提取最终交付给用户的有效信息(如分析报告、代码方案、问题解答)。必须剔除之前的思考过程、工具调用命令(如 bash/python)、工具执行日志、自我纠正的尝试等中间过程。
214
+ 3. **保持原样**:提取的内容必须**完全保持原样(Verbatim)**,不要进行总结、改写或缩减。包括 Markdown 格式(标题、列表、代码块)都要保留。
215
+ 4. **识别头部**:通常最终结果会以明确的标题开始(如 "# 分析报告"、"## 结论"),或者直接给出用户请求的答案。
216
+
217
+ **输入数据:**
218
+ 完整的对话历史记录。
219
+
220
+ **输出格式:**
221
+ 请直接返回提取后的最终结果内容。不要包含 JSON 格式,不要包含 "Here is the result:" 等废话,由于内容可能包含 Markdown,请确保输出是纯文本格式的 Markdown 内容。
222
+ `;function n(e){return`
223
+ ${t}
224
+
225
+ **对话历史:**
226
+ ${e}
227
+
228
+ **请提取最终结果:**
229
+ `}e.s(["EXTRACTION_PROMPT",0,t,"generateExtractionPrompt",()=>n])},85874,e=>e.a(async(t,n)=>{try{var i=e.i(22734);e.i(89228);var s=e.i(88045),o=e.i(14747),r=e.i(74008),l=e.i(22965),a=e.i(50374),c=t([l]);[l]=c.then?(await c)():c;let k=o.default.join(process.cwd(),"data","model_debug.jsonl");function u(e,t,n){try{let s=o.default.dirname(k);i.default.existsSync(s)||i.default.mkdirSync(s,{recursive:!0});let r={timestamp:new Date().toISOString(),stage:e,input:t,output:n};i.default.appendFileSync(k,JSON.stringify(r)+"\n")}catch(e){console.error("Log error",e)}}async function f(e){let t=await (0,l.getActiveConfig)(e);if(!t)return{client:null,model:null};let n=t.apiKey||"no-api-key-required",i=t.baseUrl||"https://api.deepseek.com",{customFetch:o}=(0,r.getProxyConfig)();return{client:new s.OpenAI({apiKey:n,baseURL:i,fetch:o}),model:t.model||"deepseek-chat"}}async function h(e,t){let n,i=(n=Number(process.env.JUDGMENT_TIMEOUT_MS||15e3),!Number.isFinite(n)||n<=0?15e3:n);return await Promise.race([e,new Promise((e,n)=>setTimeout(()=>n(Error(`${t} timeout after ${i}ms`)),i))])}async function d(t,n,i,s,o){let{client:r,model:l}=await f(s);if(!r||!r.apiKey)return console.warn("LLM Evaluation disabled or missing config. Skipping."),{is_correct:!1,score:0,reason:"请在首页左上角的设置中配置 LLM"};try{let s=n.root_causes||[],a=n.key_actions||[],c=s.map((e,t)=>({id:`RC-${t}`,...e})),f=a.map((e,t)=>({id:`KA-${t}`,...e})),{generateJudgePrompt:d}=e.r(62414),g=[];if(c.length>0){let e=d(t,i,c,[],n.skill_definition,"root_causes"),s=await h(r.chat.completions.create({messages:[{role:"user",content:e}],model:l}),"RC Judgment API");console.log(`[Judge API Debug] RC Model: ${l}. Received response choices:`,s?.choices?.length);let o=s.choices?.[0]?.message?.content;if(u("rc_evaluation",{prompt:e},{raw_output:o}),o){let e=o.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),n=e.lastIndexOf("}");-1!==t&&-1!==n&&n>=t&&(e=e.substring(t,n+1))}try{let t=JSON.parse(e);g.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse RC result:",e)}}}if(f.length>0){let e=o&&o.length>0?o.map((e,t)=>`步骤${t+1}: [${e.type}] ${e.name} - ${e.description}`).join("\n"):null,s=d(t,e||i,[],f,n.skill_definition,"key_actions",e||null),a=await h(r.chat.completions.create({messages:[{role:"user",content:s}],model:l}),"KA Judgment API");console.log(`[Judge API Debug] KA Model: ${l}. Received response choices:`,a?.choices?.length);let c=a.choices?.[0]?.message?.content;if(u("ka_evaluation",{prompt:s},{raw_output:c}),c){let e=c.trim(),t=e.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(t)e=t[1];else{let t=e.indexOf("{"),n=e.lastIndexOf("}");-1!==t&&-1!==n&&n>=t&&(e=e.substring(t,n+1))}try{let t=JSON.parse(e);g.push(...t.evaluations||[])}catch(e){console.warn("[Judge] Failed to parse KA result:",e)}}}let p=0,m=0,y=[];c.forEach(e=>{let t=g.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,i=t?.explanation||"未找到评分结果";p+=n*e.weight,m+=e.weight,y.push(`1. **Root Cause** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${i} (Weight: ${e.weight})`)});let $=new Map,k=[];for(let e of f){let t=e.groupId,n=e.controlFlowType||"required";"conditional"===n&&t?($.has(t)||$.set(t,[]),$.get(t).push(e)):k.push(e)}for(let[e,t]of $){let e=t.map(e=>{let t=g.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,i=t?.explanation||"未找到评分结果";return{ka:e,ev:t,match:n,explanation:i}}),n=e.find(e=>e.match>0||!e.explanation.includes("此分支未触发"));if(n){let{ka:t,ev:i,match:s,explanation:o}=n,r=t.branchLabel||"";for(let i of(p+=s*t.weight,m+=t.weight,y.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${r?" - "+r:""}): ${(100*s).toFixed(0)}% match. ${o} (Weight: ${t.weight})`),e))i.ka.id!==n.ka.id&&y.push(`2. **Key Action** [${i.ka.content.replace(/\n/g," ")}] (条件分支${i.ka.branchLabel?" - "+i.ka.branchLabel:""}): ${(100*i.match).toFixed(0)}% match. ${i.explanation} (该分支未触发,不计入总分)`)}else{let{ka:t,ev:n,match:i,explanation:s}=e[0],o=t.branchLabel||"";p+=0*t.weight,m+=t.weight,y.push(`2. **Key Action** [${t.content.replace(/\n/g," ")}] (条件分支${o?" - "+o:""}): ${(100*i).toFixed(0)}% match. ${s} (所有分支均未触发,Weight: ${t.weight})`);for(let t=1;t<e.length;t++){let n=e[t];y.push(`2. **Key Action** [${n.ka.content.replace(/\n/g," ")}] (条件分支${n.ka.branchLabel?" - "+n.ka.branchLabel:""}): ${(100*n.match).toFixed(0)}% match. ${n.explanation} (该分支未触发,不计入总分)`)}}}k.forEach(e=>{let t=g.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,i=t?.explanation||"未找到评分结果",s=e.controlFlowType||"required";if("optional"===s)return void y.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (可选): ${(100*n).toFixed(0)}% match. ${i} (Weight: 0, 不扣分)`);if("handoff"===s){p+=n*e.weight,m+=e.weight,y.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (衔接): ${(100*n).toFixed(0)}% match. ${i} (Weight: ${e.weight})`);return}if("loop"===s){let t=e.loopCondition||"",s=e.expectedMinCount,o=e.expectedMaxCount;p+=n*e.weight,m+=e.weight,y.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}] (循环${t?" - "+t:""}): ${(100*n).toFixed(0)}% match. ${i} (Weight: ${e.weight}, 预期次数: ${s??"?"}~${o??"?"})`);return}p+=n*e.weight,m+=e.weight,y.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${i} (Weight: ${e.weight})`)});let S=0;S=m>0?p/m:0;let A=y.map(e=>{let t=e.match(/(\d+)% match/),n=e.match(/\(Weight: ([\d\.]+)\)/);if(t&&n){let e=(parseInt(t[1])/100).toFixed(1),i=parseFloat(n[1]).toFixed(1);return`${e}*${i}`}return null}).filter(e=>e).join(" + "),w=y.map(e=>{let t=e.match(/\(Weight: ([\d\.]+)\)/);return t?parseFloat(t[1]).toFixed(1):null}).filter(e=>e).join(" + "),b=`**Calculation**: (${A}) / (${w}) = ${p.toFixed(2)} / ${m.toFixed(2)} = ${S.toFixed(2)}`;y.push("",b);let x=y.join("\n");return{is_correct:S>=.8,score:S,reason:x}}catch(e){if(console.error("LLM Judgment Error:",e),String(e?.message||"").includes("timeout"))return{is_correct:!1,score:0,reason:"Judgment API failed: timeout"};return{is_correct:!1,score:0,reason:"Judgment API failed"}}}async function g(t,n,i,s,o,r){console.log("[ItemAttribution] Starting analysis...");let{client:l,model:a}=await f(r);if(!l||!t||!n)return console.warn(`[ItemAttribution] ✗ Early return: client=${l?"present":"absent"}, skillDef=${t?"present":"absent"}, judgmentReason=${n?"present":"absent"}`),[];let c=function(e){let t=[];if(!e)return t;let n=e.split("\n"),i={rc:0,ka:0};for(let e of n){let n=e.match(/\*\*Root Cause\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(n){t.push({id:`RC-${i.rc++}`,type:"root_cause",content:n[1].replace(/\.{3}$/,""),match_score:parseInt(n[2])/100,explanation:n[3].trim(),weight:parseFloat(n[4])});continue}let s=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);s&&t.push({id:`KA-${i.ka++}`,type:"key_action",content:s[1].replace(/\.{3}$/,""),match_score:parseInt(s[2])/100,explanation:s[3].trim(),weight:parseFloat(s[4])})}return t}(n);console.log(`[ItemAttribution] Parsed ${c.length} evaluation items from judgment reason`);let d=c.filter(e=>e.match_score<1);if(console.log(`[ItemAttribution] ${d.length} items need analysis (score < 100%)`),0===d.length)return console.log(`[ItemAttribution] ✗ No imperfect items found, returning empty array`),[];let{generateSkillIssuePrompt:g}=e.r(33526),p=[];for(let e of d)try{let n=g(t,e,i,s,o),r=await h(l.chat.completions.create({messages:[{role:"user",content:n}],model:a}),"Skill issue analysis API"),c=r.choices?.[0]?.message?.content;if(!c){console.error(`
230
+ [SkillAnalysis API Error 🚨] LLM content is empty for item: ${e.id}`),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(r,null,2)),console.error("<<<\n");continue}u("skill_issue_analysis",{item_id:e.id,prompt:n},{raw_output:c});let f=c.trim(),d=f.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(d)f=d[1];else{let e=f.indexOf("{"),t=f.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(f=f.substring(e,t+1))}let m=JSON.parse(f);!0===m.is_skill_issue?(p.push({...e,is_skill_issue:!0,reasoning:m.reasoning??"",improvement_suggestion:m.improvement_suggestion}),console.log(`[SkillAnalysis] ${e.id}: IS Skill Issue - ${m.reasoning?.substring(0,50)}...`)):console.log(`[SkillAnalysis] ${e.id}: NOT Skill Issue - ${m.reasoning?.substring(0,50)}...`)}catch(t){console.error(`[SkillAnalysis] Error analyzing ${e.id}:`,t.message),u("skill_issue_analysis_error",{item_id:e.id},{error:t.message})}return p}async function p(t,n,i,s,o,r,l,a){let c=y(t);if(!c||0===c.length)return{failures:[]};try{let{client:t,model:d}=await f(a);if(!t||!t.apiKey)return console.warn("LLM Analysis disabled. Skipping."),{failures:[],skill_issues:[]};let p="",m=c[c.length-1];(m.requestMessages||[]).forEach(e=>{let t="";"string"==typeof e.content?t=e.content:Array.isArray(e.content)&&(t=JSON.stringify(e.content)),p+=`[${(e.role||"UNKNOWN").toUpperCase()}]: ${t}
231
+ `});let y=m.responseMessage;if(y){let e="";"string"==typeof y.content?e=y.content:Array.isArray(y.content)&&(e=JSON.stringify(y.content)),p+=`[ASSISTANT]: ${e}
232
+ `}else m.debug_raw_stream&&(p+=`[SYSTEM/TOOL OUTPUTS]: (Check raw logs for full details)
233
+ `);let{generateFailureAnalysisPrompt:$}=e.r(44087),k=$(p),S=await h(t.chat.completions.create({messages:[{role:"user",content:k}],model:d}),"Failure analysis API"),A=S.choices?.[0]?.message?.content;if(!A)return console.error("\n[Failure Analysis API Error 🚨] LLM content is empty!"),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(S,null,2)),console.error("<<<\n"),{failures:[]};u("failure_analysis",{prompt:k,history_length:p.length},{raw_output:A});let w=A.trim(),b=w.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(b)w=b[1];else{let e=w.indexOf("{"),t=w.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(w=w.substring(e,t+1))}let x=JSON.parse(w).failures||[],_=[];if(console.log(`[SkillAnalysis] Checking: skillName=${n||"none"}, skillDef=${i?"present":"absent"}, failuresCount=${x.length}, answerScore=${s}`),n&&i){console.log(`[SkillAnalysis] ✓ Skill name and definition found`);let e=l||"(见交互历史)",t=r||"(未知)";console.log(`[SkillAnalysis] Conditions check: answerScore=${s}, judgmentReason=${o?"present":"absent"}, history=${p?"present":"absent"}`),void 0!==s&&s<1&&o&&p?(console.log(`[SkillAnalysis] ✓ All conditions met. Score is imperfect (${s}). Analyzing which items are Skill issues...`),console.log(`[SkillAnalysis] Using: query=${t.substring(0,50)}..., answer=${e.substring(0,50)}..., history_len=${p.length}`),_=await g(i,o,t,e,p,a),console.log(`[SkillAnalysis] Analysis complete: ${_.length} items identified as Skill issues`)):void 0!==s&&s>=1?console.log(`[SkillAnalysis] ✗ Skipped: Perfect score (${s}). No Skill analysis needed.`):console.log(`[SkillAnalysis] ✗ Skipped: Conditions not met - answerScore=${s}, judgmentReason=${o?"present":"absent"}, history=${p?"present":"absent"}`)}else console.warn(`[SkillAnalysis] ✗ Skipped: Missing skillName (${n||"none"}) or skillDef (${i?"present":"absent"})`);return{failures:x,skill_issues:_.length>0?_:void 0}}catch(e){return console.error("Failure Analysis Error:",e),{failures:[]}}}function m(e){if(!e||"string"!=typeof e)return!1;try{let t=JSON.parse(e);if(t&&"object"==typeof t)return!0}catch(e){}return!1}function y(e){return(0,a.normalizeInteractions)(e)}async function $(t,n){let i=y(t);if(!i||0===i.length)return{query:"",skill:"",final_result:""};let s="",o="",r="";for(let e of i){let t=(e.requestMessages||[]).find(e=>"user"===e.role);if(t){let e="";if("string"==typeof t.content)e=t.content;else if(Array.isArray(t.content)){let n=t.content.filter(e=>"text"===e.type&&!e.text.trim().startsWith("<system-reminder>")&&!e.text.includes("[SUGGESTION MODE:"));n.length>0&&(e=n.map(e=>e.text).join("\n").trim())}if(e){let t=(e=e.replace(/<EXTRA_INFO>[\s\S]*?<\/EXTRA_INFO>/g,"")).trim();if("count"===t||"ping"===t||t.startsWith("Please write a 5-10 word title")||"hi"===t||"hello"===t&&i.length>2)continue;if(s||(s=t),s)break}}}for(let e=i.length-1;e>=0;e--){let t=i[e];if((t.requestMessages||[]).some(e=>"string"==typeof e.content?e.content.includes("[SUGGESTION MODE:"):!!Array.isArray(e.content)&&e.content.some(e=>e.text&&e.text.includes("[SUGGESTION MODE:"))))continue;let n=t.responseMessage,s="";if(n&&n.content&&"string"==typeof n.content)s=n.content;else if(n&&Array.isArray(n.content)){let e=n.content.find(e=>"text"===e.type);e&&(s=e.text)}if((!s||""===s.trim())&&t.debug_raw_stream)try{let e="";for(let n of t.debug_raw_stream)n.choices&&n.choices[0]&&n.choices[0].delta&&n.choices[0].delta.content&&(e+=n.choices[0].delta.content),"content_block_delta"===n.type&&n.delta&&"text_delta"===n.delta.type&&(e+=n.delta.text);e&&(s=e)}catch(e){}let r=[];if(t.requestMessages&&t.requestMessages.length>0)for(let e=t.requestMessages.length-1;e>=0;e--){let n=t.requestMessages[e];if("assistant"===n.role){let e="";if("string"==typeof n.content)e=n.content;else if(Array.isArray(n.content)){let t=n.content.find(e=>"text"===e.type);t&&(e=t.text)}if(e&&e.trim()){let t=e.trim();if(!m(t)&&(r.unshift(t),t.startsWith("#")||t.startsWith("##")||t.startsWith("###")))break}else break}else break}if(s&&s.trim()){let e=s.trim();!m(e)&&(r.push(e),e.startsWith("#")||e.startsWith("##")||e.startsWith("###"))}if(r.length>0){o=r.join("\n\n");break}}let l=new Set,a="";for(let e of i){(e.requestMessages||[]).forEach(e=>{"string"==typeof e.content?a+=e.content+"\n":Array.isArray(e.content)&&e.content.forEach(e=>{"text"===e.type&&(a+=e.text+"\n")})});let t=e.responseMessage;t&&("string"==typeof t.content?a+=t.content+"\n":Array.isArray(t.content)&&t.content.forEach(e=>{"text"===e.type&&(a+=e.text+"\n")}),t.tool_calls&&Array.isArray(t.tool_calls)&&t.tool_calls.forEach(e=>{let t=e.function?.name??e.name;if(t)if("skill"===t||"load_skill"===t)try{let t=e.function?.arguments??e.arguments,n="string"==typeof t?JSON.parse(t):t,i=n?.name??n?.skill_name??n?.skillName??n?.skill;i&&l.add(i)}catch(e){}else l.add(t)}),t.function_call&&t.function_call.name&&l.add(t.function_call.name))}let c=a.match(/(?:Loading skill|Load skill)[:\s]+([a-zA-Z0-9_\-\.]+)/i);c&&c[1]&&l.add(c[1].trim());let d=a.match(/Skill\s+([a-zA-Z0-9_\-\.]+)\s+loaded/i);d&&d[1]&&l.add(d[1].trim()),l.size>0&&(r=Array.from(l).join(", ")),console.log(`[Rule-Based Analysis] Query: ${s.substring(0,20)}..., Skill: ${r}, Result Length: ${o.length}`),u("extraction",{messages_summary:`Total ${i.length} interactions`,notes:"Scanned full history"},{query:s,skill:r,final_result:o});let g="";try{let{client:t,model:s}=await f(n);if(t&&t.apiKey){let n="";i.forEach(e=>{(e.requestMessages||[]).forEach(e=>{let t="";if("string"==typeof e.content)t=e.content;else if(Array.isArray(e.content)){let n=e.content.find(e=>"text"===e.type);n&&(t=n.text)}n+=`[${(e.role||"UNKNOWN").toUpperCase()}]: ${t}
234
+ `});let t=e.responseMessage;if(t){let e="";if("string"==typeof t.content)e=t.content;else if(Array.isArray(t.content)){let n=t.content.find(e=>"text"===e.type);n&&(e=n.text)}n+=`[ASSISTANT]: ${e}
235
+ `}});let{generateExtractionPrompt:o}=e.r(18868),r=o(n),l=(await h(t.chat.completions.create({messages:[{role:"user",content:r}],model:s,temperature:.1}),"Session extraction API")).choices[0].message.content;l&&(g=l.trim(),u("result_extraction_llm",{history_length:n.length},{extracted:g}))}}catch(e){console.error("LLM Extraction Failed",e)}return g&&g.length>20?(console.log(`[Judge] LLM extraction preferred (Length: ${g.length} vs Rule: ${o.length})`),o=g):o&&console.log(`[Judge] Rule-Based extraction used (Length: ${o.length})`),{query:s,skill:r,final_result:o}}e.s(["analyzeFailures",()=>p,"analyzeSession",()=>$,"judgeAnswer",()=>d,"normalizeInteractions",()=>y]),n()}catch(e){n(e)}},!1)];
236
+
237
+ //# sourceMappingURL=src_98433cb8._.js.map
@@ -4,7 +4,10 @@ module.exports=[17309,e=>{"use strict";function t(e){return`
4
4
  给定一个 Skill 定义文档(SKILL.md),你的任务是:
5
5
  1. 提取预期的执行流程/步骤序列
6
6
  2. 识别每个步骤应该完成什么(不一定是具体工具)
7
- 3. 注意任何条件分支或可选步骤
7
+ 3. 注意任何条件分支、循环或可选步骤
8
+ 4. 识别循环模式("逐项处理"、"重试直到"、"遍历"、"对每个...执行"等)
9
+ 5. 识别可选步骤("如果需要则"、"可选地"、"视情况"等)
10
+ 6. 识别多路条件分支(if/else、根据输入类型走不同路径等)
8
11
 
9
12
  Skill 定义:
10
13
  ---
@@ -43,6 +46,17 @@ ${e}
43
46
  - 同一操作多次执行(可能因为某些报错)应总结成一个步骤
44
47
  - 每个步骤都应该有独立存在的价值
45
48
 
49
+ 五、控制流识别规则
50
+ 1. 线性步骤:直接描述的顺序操作,isOptional 设为 false
51
+ 2. 可选步骤:包含"如果需要则"、"可选地"、"视情况"等表述的步骤,isOptional 设为 true
52
+ 3. 条件分支:包含"如果...则..."、"根据...选择"、"当...时执行"等表述的步骤
53
+ - 将条件判断步骤放在 branches 之前
54
+ - 在 conditionalGroups 中描述分支条件和各分支包含的步骤
55
+ - 支持多路分支(不限于 if/else 二元分支)
56
+ 4. 循环:包含"逐项处理"、"遍历"、"对每个...执行"、"重试直到"等表述的步骤
57
+ - 将循环体步骤放在 steps 中
58
+ - 在 loopGroups 中描述循环条件、循环体步骤和预期次数范围
59
+
46
60
  请只用 JSON 对象回复,格式如下:
47
61
  {
48
62
  "steps": [
@@ -61,12 +75,47 @@ ${e}
61
75
  "falseStepId": "step-y"
62
76
  }
63
77
  ],
78
+ "conditionalGroups": [
79
+ {
80
+ "id": "cg-1",
81
+ "condition": "根据故障类型选择诊断路径",
82
+ "branches": [
83
+ {
84
+ "label": "网络故障",
85
+ "stepIds": ["step-3a"]
86
+ },
87
+ {
88
+ "label": "磁盘故障",
89
+ "stepIds": ["step-3b"]
90
+ },
91
+ {
92
+ "label": "内存故障",
93
+ "stepIds": ["step-3c"]
94
+ }
95
+ ]
96
+ }
97
+ ],
98
+ "loopGroups": [
99
+ {
100
+ "id": "lg-1",
101
+ "loopCondition": "对每个受影响的服务执行健康检查",
102
+ "bodyStepIds": ["step-5a", "step-5b"],
103
+ "expectedMinCount": 1,
104
+ "expectedMaxCount": 10
105
+ }
106
+ ],
64
107
  "summary": "整体流程的简要总结"
65
108
  }
66
- `}function r(e,t,r){return`
109
+
110
+ 注意:
111
+ - conditionalGroups 和 loopGroups 是可选字段,如果没有条件分支或循环,可以省略
112
+ - branches 字段保留用于简单的 if/else 二元分支,conditionalGroups 用于更复杂的多路分支
113
+ - 如果同时存在 branches 和 conditionalGroups,优先使用 conditionalGroups
114
+ - loopGroups 的 expectedMinCount 和 expectedMaxCount 应根据 Skill 描述合理估计
115
+ `}function o(e,t,o){return`
67
116
  你是一个专家,擅长分析 Agent 执行轨迹并提取执行步骤。
68
117
 
69
- 这是第 ${t+1} 批对话数据(对话序号从 ${r} 开始):
118
+ 这是第 ${t+1} 批对话数据(对话序号从 ${o} 开始):
70
119
  ---
71
120
  ${e}
72
121
  ---
@@ -120,13 +169,13 @@ ${e}
120
169
  }
121
170
 
122
171
  注意事项:
123
- - "dialogStartIndex" 和 "dialogEndIndex" 是这批对话中的相对序号(从 ${r} 开始)
172
+ - "dialogStartIndex" 和 "dialogEndIndex" 是这批对话中的相对序号(从 ${o} 开始)
124
173
  - 如果这批对话没有有效步骤,返回空数组 {"steps": []}
125
174
  - 忽略无关的闲聊或重复内容
126
- `}function s(e,t,r){return`
175
+ `}function s(e,t,o){return`
127
176
  你是一个专家,擅长分析 Agent 执行轨迹并将其与预期工作流程进行比较。
128
177
 
129
- Skill "${r}" 的预期流程:
178
+ Skill "${o}" 的预期流程:
130
179
  ---
131
180
  ${JSON.stringify(e,null,2)}
132
181
  ---
@@ -202,7 +251,7 @@ ${t}
202
251
  - unexpected: 贡献 -0.2 分(惩罚)
203
252
  - skipped: 贡献 0 分
204
253
  - orderViolations: 每个 -0.1 分惩罚
205
- `}function a(e){return`
254
+ `}function n(e){return`
206
255
  你是一个专家,擅长分析 Agent 执行轨迹并生成执行流程图。
207
256
 
208
257
  实际执行步骤:
@@ -246,6 +295,6 @@ ${e}
246
295
  1. matches 数组必须包含每个步骤的记录,不能遗漏
247
296
  2. actualStepIndex 使用步骤的 dialogStartIndex
248
297
  3. type 保持与原步骤一致
249
- `}e.s(["generateDynamicOnlyMatchPrompt",()=>a,"generateExecutionMatchPrompt",()=>s,"generateFlowParsePrompt",()=>t,"generateStepExtractPrompt",()=>r])},2988,e=>e.a(async(t,r)=>{try{e.i(89228);var s=e.i(88045),a=e.i(74008),n=e.i(22965),i=e.i(98043),c=e.i(17309),l=e.i(22734),o=e.i(14747),p=t([n,i]);[n,i]=p.then?(await p)():p;let O=o.default.join(process.cwd(),"data","flow_debug.jsonl");function u(e,t,r){try{let s=o.default.dirname(O);l.default.existsSync(s)||l.default.mkdirSync(s,{recursive:!0});let a={timestamp:new Date().toISOString(),stage:e,input:t,output:r};l.default.appendFileSync(O,JSON.stringify(a)+"\n")}catch(e){console.error("Log error",e)}}async function d(e){let t=await (0,n.getActiveConfig)(e);if(!t)return{client:null,model:null};let r=t.apiKey;if(!r)return{client:null,model:null};let i=t.baseUrl||"https://api.deepseek.com",{customFetch:c}=(0,a.getProxyConfig)();return{client:new s.OpenAI({apiKey:r,baseURL:i,fetch:c}),model:t.model||"deepseek-chat"}}async function f(e,t,r,s){let{client:a,model:n}=await d(s);if(!a||!a.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};if(!e||0===e.trim().length)return{success:!1,error:"Skill 内容为空"};try{let l=(0,c.generateFlowParsePrompt)(e),o=await a.chat.completions.create({messages:[{role:"user",content:l}],model:n,temperature:.3}),p=o.choices?.[0]?.message?.content;if(!p)return{success:!1,error:"LLM 返回内容为空"};u("flow_parse",{skillId:t,version:r},{raw_output:p});let d=p.trim(),f=d.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(f)d=f[1];else{let e=d.indexOf("{"),t=d.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(d=d.substring(e,t+1))}let m=JSON.parse(d);if(!m.steps||!Array.isArray(m.steps)||0===m.steps.length)return{success:!1,error:"解析结果中未找到有效步骤"};let S=function(e){let t=["flowchart TD"];e.steps.forEach((e,r)=>{let s=`S${r+1}`,a=h(`${r+1}. ${e.name}`),n="decision"===e.type?"{"+a+"}":"output"===e.type?"(("+a+"))":"["+a+"]";t.push(` ${s}${n}`)});for(let r=0;r<e.steps.length-1;r++){let s=`S${r+1}`,a=`S${r+2}`,n=e.branches?.find(t=>t.trueStepId===e.steps[r+1]?.id||t.falseStepId===e.steps[r+1]?.id);if(n&&"decision"===e.steps[r].type){t.push(` ${s} -->|是| ${a}`);let i=e.steps.findIndex(e=>e.id===n.falseStepId);-1!==i&&i!==r+1&&t.push(` ${s} -->|否| S${i+1}`)}else t.push(` ${s} --> ${a}`)}t.push(""),t.push(" style S1 fill:#38bdf8,color:#0f172a");let r=`S${e.steps.length}`;return e.steps[e.steps.length-1]?.type==="output"&&t.push(` style ${r} fill:#4ade80,color:#0f172a`),t.join("\n")}(m);return await i.db.upsertParsedFlow({skillId:t,version:r,user:s||null,flowJson:JSON.stringify(m),mermaidCode:S}),{success:!0,flow:m,mermaidCode:S}}catch(t){let e=t instanceof Error?t.message:"解析失败";return console.error("Flow parse error:",t),{success:!1,error:e}}}function h(e){return e.replace(/\\/g,"\\\\").replace(/"/g,"'").replace(/\(/g,"(").replace(/\)/g,")").replace(/\[/g,"[").replace(/\]/g,"]").replace(/\{/g,"{").replace(/\}/g,"}").replace(/</g,"<").replace(/>/g,">").replace(/\|/g,"|").replace(/\n/g," ").trim()}async function m(e,t,r,s){let{client:a,model:n}=await d(s);if(!a||!a.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};try{let c,l=await i.db.findParsedFlow(t,r,s||null);if(!l)return{success:!1,error:"请先解析 Skill 流程"};let o=await i.db.findSessionByTaskId(e);if(!o||!o.interactions)return{success:!1,error:"未找到执行记录或交互数据"};try{c="string"==typeof o.interactions?JSON.parse(o.interactions):o.interactions}catch{return{success:!1,error:"交互数据解析失败"}}let p=Array.isArray(c)?c.length:0,u=JSON.parse(l.flowJson),d=await S(a,n,c),f=g(d),m=await y(a,n,u,f,t),x=function(e,t,r,s){let a=["flowchart LR"],n={matched:"#4ade80",partial:"#fbbf24",unexpected:"#f87171",skipped:"#94a3b8"};a.push(" subgraph Skill流程"),a.push(" direction LR"),e.steps.forEach((e,t)=>{let r=`S${t+1}`,s=h(`${t+1}. ${e.name}`),n="decision"===e.type?"{"+s+"}":"output"===e.type?"(("+s+"))":"["+s+"]";a.push(` ${r}${n}`)});for(let t=0;t<e.steps.length-1;t++){let e=`S${t+1}`,r=`S${t+2}`;a.push(` ${e} --> ${r}`)}a.push(" end"),a.push(""),a.push(" subgraph 实际执行轨迹"),a.push(" direction LR");let i=[];if([...t.filter(e=>"skipped"!==e.matchStatus)].sort((e,t)=>e.actualStepIndex-t.actualStepIndex).forEach((e,t)=>{let r=`A${t+1}`,n=e.matchStatus,c=e.actualStepIndex,l=h(`#${c} ${e.actualAction}`),o=s.find(e=>e.dialogStartIndex<=c&&e.dialogEndIndex>=c),p=o?.type||"action";i.push({id:r,label:l,status:n,targetStep:e.expectedStepId,dialogIndex:c,type:p});let u="decision"===p?"{"+l+"}":"output"===p?"(("+l+"))":"["+l+"]";a.push(` ${r}${u}`)}),i.length>1)for(let e=0;e<i.length-1;e++)a.push(` ${i[e].id} --> ${i[e+1].id}`);return a.push(" end"),a.push(""),i.forEach(t=>{if("unexpected"!==t.status&&t.targetStep){let r=e.steps.findIndex(e=>e.id===t.targetStep);if(-1!==r){let e=`S${r+1}`;a.push(` ${e} -.- ${t.id}`)}}}),a.push(""),e.steps.forEach((e,s)=>{let i=`S${s+1}`,c=r.some(t=>t.expectedStepId===e.id),l=t.find(t=>t.expectedStepId===e.id&&"partial"===t.matchStatus),o=n[c?"skipped":l?"partial":"matched"];a.push(` style ${i} fill:${o},color:#0f172a`)}),i.forEach(e=>{let t=n[e.status];a.push(` style ${e.id} fill:${t},color:#0f172a`)}),a.join("\n")}(u,m.matches,m.skippedExpectedSteps,f);return await i.db.upsertExecutionMatch({executionId:e,skillId:t,skillVersion:r,user:s||null,mode:"compare",matchJson:JSON.stringify(m),staticMermaid:l.mermaidCode,dynamicMermaid:x,analysisText:JSON.stringify(m.problemSteps),extractedSteps:JSON.stringify(f),interactionCount:p}),{success:!0,result:m,staticMermaid:l.mermaidCode,dynamicMermaid:x,interactionCount:p}}catch(t){let e=t instanceof Error?t.message:"分析失败";return console.error("Execution match error:",t),{success:!1,error:e}}}async function S(e,t,r){if(!Array.isArray(r)||0===r.length)return[];let s=[];for(let e=0;e<r.length;e+=10)s.push(r.slice(e,e+10));let a=s.map(async(r,s)=>{var a,n;let i,l=10*s,o=(a=r,n=l,i=[],a.forEach((e,t)=>{let r=e.role||"unknown",s="";if("string"==typeof e.content)s=e.content.substring(0,300);else if(Array.isArray(e.content)){s=e.content.filter(e=>"text"===e.type).map(e=>e.text||"").join(" ").substring(0,300);let t=e.content.filter(e=>"toolCall"===e.type||"tool_use"===e.type);t.length>0&&(s+=` [工具调用: ${t.map(e=>e.name).join(", ")}]`)}i.push(`[${n+t}] ${r.toUpperCase()}: ${s}${s.length>=300?"...":""}`)}),i.join("\n")),p=(0,c.generateStepExtractPrompt)(o,s,l);try{let r=await e.chat.completions.create({messages:[{role:"user",content:p}],model:t,temperature:.3}),s=r.choices?.[0]?.message?.content;if(!s)return[];let a=s.trim(),n=a.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(n)a=n[1];else{let e=a.indexOf("{"),t=a.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(a=a.substring(e,t+1))}return JSON.parse(a).steps||[]}catch(e){return console.error(`Batch ${s} extract error:`,e),[]}});return(await Promise.all(a)).flat()}function g(e){return 0===e.length?[]:[...e].sort((e,t)=>e.dialogStartIndex-t.dialogStartIndex)}async function y(e,t,r,s,a){let n=JSON.stringify(s,null,2),i=(0,c.generateExecutionMatchPrompt)(r,n,a),l=await e.chat.completions.create({messages:[{role:"user",content:i}],model:t,temperature:.3}),o=l.choices?.[0]?.message?.content;if(!o)throw Error("LLM 返回内容为空");u("execution_match",{skillId:a},{raw_output:o});let p=o.trim(),d=p.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(d)p=d[1];else{let e=p.indexOf("{"),t=p.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(p=p.substring(e,t+1))}return JSON.parse(p)}async function x(e,t,r){return i.db.findParsedFlow(e,t,r||null)}async function $(e){return i.db.findExecutionMatch(e)}async function I(e,t){let{client:r,model:s}=await d(t);if(!r||!r.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};try{let a,n=await i.db.findSessionByTaskId(e);if(!n||!n.interactions)return{success:!1,error:"未找到执行记录或交互数据"};try{a="string"==typeof n.interactions?JSON.parse(n.interactions):n.interactions}catch{return{success:!1,error:"交互数据解析失败"}}let c=Array.isArray(a)?a.length:0,l=await S(r,s,a),o=g(l),p=await w(r,s,o),u=function(e,t){let r=["flowchart LR"];e.forEach((e,t)=>{let s=`S${t+1}`,a=e.actualStepIndex,n=h(`#${a} ${e.actualAction}`),i="decision"===e.type?"{"+n+"}":"output"===e.type?"(("+n+"))":"["+n+"]";r.push(` ${s}${i}`)});for(let t=0;t<e.length-1;t++){let e=`S${t+1}`,s=`S${t+2}`;r.push(` ${e} --> ${s}`)}return r.push(""),e.forEach((e,t)=>{let s=`S${t+1}`;r.push(` style ${s} fill:#38bdf8,color:#0f172a`)}),r.join("\n")}(p.matches,0),d=JSON.stringify(o);return await i.db.upsertExecutionMatch({executionId:e,skillId:null,skillVersion:null,user:t||null,mode:"dynamic",matchJson:JSON.stringify(p),staticMermaid:null,dynamicMermaid:u,analysisText:null,extractedSteps:d,interactionCount:c}),{success:!0,dynamicMermaid:u,interactionCount:c}}catch(t){let e=t instanceof Error?t.message:"分析失败";return console.error("Dynamic analysis error:",t),{success:!1,error:e}}}async function w(e,t,r){let s=JSON.stringify(r,null,2),a=(0,c.generateDynamicOnlyMatchPrompt)(s),n=await e.chat.completions.create({messages:[{role:"user",content:a}],model:t,temperature:.3}),i=n.choices?.[0]?.message?.content;if(!i)throw Error("LLM 返回内容为空");let l=i.trim(),o=l.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(o)l=o[1];else{let e=l.indexOf("{"),t=l.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(l=l.substring(e,t+1))}return JSON.parse(l)}e.s(["analyzeDynamicOnly",()=>I,"analyzeExecutionMatch",()=>m,"getExecutionMatch",()=>$,"getParsedFlow",()=>x,"parseSkillFlow",()=>f]),r()}catch(e){r(e)}},!1)];
298
+ `}e.s(["generateDynamicOnlyMatchPrompt",()=>n,"generateExecutionMatchPrompt",()=>s,"generateFlowParsePrompt",()=>t,"generateStepExtractPrompt",()=>o])},2988,e=>e.a(async(t,o)=>{try{e.i(89228);var s=e.i(88045),n=e.i(74008),r=e.i(22965),i=e.i(98043),l=e.i(17309),a=e.i(22734),p=e.i(14747),c=t([r,i]);[r,i]=c.then?(await c)():c;let G=p.default.join(process.cwd(),"data","flow_debug.jsonl");function d(e,t,o){try{let s=p.default.dirname(G);a.default.existsSync(s)||a.default.mkdirSync(s,{recursive:!0});let n={timestamp:new Date().toISOString(),stage:e,input:t,output:o};a.default.appendFileSync(G,JSON.stringify(n)+"\n")}catch(e){console.error("Log error",e)}}async function u(e){let t=await (0,r.getActiveConfig)(e);if(!t)return{client:null,model:null};let o=t.apiKey;if(!o)return{client:null,model:null};let i=t.baseUrl||"https://api.deepseek.com",{customFetch:l}=(0,n.getProxyConfig)();return{client:new s.OpenAI({apiKey:o,baseURL:i,fetch:l}),model:t.model||"deepseek-chat"}}async function f(e,t,o,s){let{client:n,model:r}=await u(s);if(!n||!n.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};if(!e||0===e.trim().length)return{success:!1,error:"Skill 内容为空"};try{await i.db.upsertParsedFlow({skillId:t,version:o,user:s||null,flowJson:null,mermaidCode:null});let a=(0,l.generateFlowParsePrompt)(e),p=await n.chat.completions.create({messages:[{role:"user",content:a}],model:r,temperature:.3}),c=p.choices?.[0]?.message?.content;if(!c)return{success:!1,error:"LLM 返回内容为空"};d("flow_parse",{skillId:t,version:o},{raw_output:c});let u=c.trim(),f=u.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(f)u=f[1];else{let e=u.indexOf("{"),t=u.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(u=u.substring(e,t+1))}let m=JSON.parse(u);if(!m.steps||!Array.isArray(m.steps)||0===m.steps.length)return{success:!1,error:"解析结果中未找到有效步骤"};let y=new Set(m.steps.map(e=>e.id));if(m.conditionalGroups&&Array.isArray(m.conditionalGroups))for(let e of m.conditionalGroups)e.branches&&Array.isArray(e.branches)||console.warn(`[FlowParse] ConditionalGroup ${e.id} has invalid branches, degrading to required`);else m.conditionalGroups=[];m.loopGroups&&Array.isArray(m.loopGroups)||(m.loopGroups=[]);let g=new Set;for(let e of m.loopGroups){if(!e.bodyStepIds||!Array.isArray(e.bodyStepIds)){console.warn(`[FlowParse] LoopGroup ${e.id} has invalid bodyStepIds, degrading to required`);continue}for(let t of e.bodyStepIds)y.has(t)?g.add(t):console.warn(`[FlowParse] LoopGroup ${e.id} references invalid stepId ${t}, degrading to required`)}let S=new Set;if(m.conditionalGroups){for(let e of m.conditionalGroups)if(e.branches){for(let t of e.branches)if(t.stepIds)for(let o of t.stepIds)y.has(o)?S.add(o):console.warn(`[FlowParse] ConditionalGroup ${e.id} references invalid stepId ${o}, degrading to required`)}}for(let e of m.steps)e.controlFlowType||(g.has(e.id)?e.controlFlowType="loop":S.has(e.id)?e.controlFlowType="conditional":e.isOptional?e.controlFlowType="optional":e.controlFlowType="required");let $=function(e){let t=["flowchart TD"];e.steps.forEach((e,o)=>{let s=`S${o+1}`,n=e.controlFlowType||"required",r=h(`${"loop"===n?"🔄 ":""}${o+1}. ${e.name}`),i="decision"===e.type?"{"+r+"}":"output"===e.type?"(("+r+"))":"["+r+"]";t.push(` ${s}${i}`)});let o=new Set,s=new Map;if(e.conditionalGroups){for(let t of e.conditionalGroups)for(let e of t.branches)if(e.stepIds&&e.stepIds.length>0)for(let t of(s.set(e.label,e.stepIds),e.stepIds))o.add(t)}for(let n=0;n<e.steps.length-1;n++){let r=e.steps[n],i=e.steps[n+1],l=`S${n+1}`,a=`S${n+2}`,p=e.branches?.find(e=>e.trueStepId===i?.id||e.falseStepId===i?.id);if(p&&"decision"===r.type){t.push(` ${l} -->|是| ${a}`);let o=e.steps.findIndex(e=>e.id===p.falseStepId);-1!==o&&o!==n+1&&t.push(` ${l} -->|否| S${o+1}`)}else{let e=o.has(r.id),n=o.has(i.id);if(!e&&n)continue;if(e&&n){let e=!1;for(let[t,o]of s){let t=o.indexOf(r.id),s=o.indexOf(i.id);if(-1!==t&&-1!==s&&s===t+1){e=!0;break}}if(!e)continue}t.push(` ${l} --> ${a}`)}}if(e.conditionalGroups)for(let o of e.conditionalGroups){let s=-1,n=e.steps.length;for(let t of o.branches){if(!t.stepIds||0===t.stepIds.length)continue;let o=e.steps.findIndex(e=>e.id===t.stepIds[0]);-1!==o&&o<n&&(n=o),t.stepIds.forEach(t=>{let o=e.steps.findIndex(e=>e.id===t);o>s&&(s=o)})}let r=-1;if(n>0&&"decision"===e.steps[n-1].type)r=n-1;else{let t=e.steps.find(e=>"decision"===e.type);t&&(r=e.steps.indexOf(t))}if(-1!==r)for(let s of o.branches){if(!s.stepIds||0===s.stepIds.length)continue;let o=e.steps.findIndex(e=>e.id===s.stepIds[0]);-1!==o&&t.push(` S${r+1} -->|${s.label}| S${o+1}`)}let i=s+1;if(i>0&&i<e.steps.length){let s=`S${i+1}`;for(let n of o.branches){if(!n.stepIds||0===n.stepIds.length)continue;let o=n.stepIds[n.stepIds.length-1],r=e.steps.findIndex(e=>e.id===o);-1!==r&&r!==i-1&&t.push(` S${r+1} --> ${s}`)}}}t.push(""),t.push(" style S1 fill:#38bdf8,color:#0f172a");let n=`S${e.steps.length}`;return e.steps[e.steps.length-1]?.type==="output"&&t.push(` style ${n} fill:#4ade80,color:#0f172a`),e.steps.forEach((e,o)=>{let s=`S${o+1}`,n=e.controlFlowType||"required";"optional"===n?t.push(` style ${s} stroke-dasharray: 5 5`):"loop"===n?t.push(` style ${s} fill:#a78bfa,color:#0f172a`):"conditional"===n?t.push(` style ${s} fill:#fbbf24,color:#0f172a`):"handoff"===n&&t.push(` style ${s} fill:#4ade80,color:#0f172a`)}),t.join("\n")}(m);return await i.db.upsertParsedFlow({skillId:t,version:o,user:s||null,flowJson:JSON.stringify(m),mermaidCode:$}),{success:!0,flow:m,mermaidCode:$}}catch(t){let e=t instanceof Error?t.message:"解析失败";return console.error("Flow parse error:",t),{success:!1,error:e}}}function h(e){return e.replace(/\\/g,"\\\\").replace(/"/g,"'").replace(/\(/g,"(").replace(/\)/g,")").replace(/\[/g,"[").replace(/\]/g,"]").replace(/\{/g,"{").replace(/\}/g,"}").replace(/</g,"<").replace(/>/g,">").replace(/\|/g,"|").replace(/\n/g," ").trim()}function m(e){let t=[],o=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let s of e.stepIds)o.set(s,{type:"conditional",group:t});if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)o.set(e,{type:"loop",group:t});let s=new Set(e.steps.map(e=>e.id));if(e.conditionalGroups)for(let t of e.conditionalGroups)for(let e of t.branches)for(let n of e.stepIds)s.has(n)||(console.warn(`[FlowParse] ConditionalGroup ${t.id} references invalid stepId ${n}, degrading to required`),o.delete(n));if(e.loopGroups)for(let t of e.loopGroups)for(let e of t.bodyStepIds)s.has(e)||(console.warn(`[FlowParse] LoopGroup ${t.id} references invalid stepId ${e}, degrading to required`),o.delete(e));let n=new Map;if(e.conditionalGroups)for(let t of e.conditionalGroups)n.set(t.id,t.branches.length);for(let s of e.steps){let e=o.get(s.id);if(s.isOptional&&!e){t.push({id:s.id,content:s.name,weight:0,controlFlowType:"optional"});continue}if(e?.type==="conditional"){let o=e.group,r=o.branches.find(e=>e.stepIds.includes(s.id)),i=n.get(o.id)||1;t.push({id:s.id,content:s.name,weight:1/i,controlFlowType:"conditional",condition:o.condition,branchLabel:r?.label,groupId:o.id});continue}if(e?.type==="loop"){let o=e.group;t.push({id:s.id,content:s.name,weight:1,controlFlowType:"loop",loopCondition:o.loopCondition,expectedMinCount:o.expectedMinCount,expectedMaxCount:o.expectedMaxCount,groupId:o.id});continue}if(s.isOptional){t.push({id:s.id,content:s.name,weight:0,controlFlowType:"optional"});continue}t.push({id:s.id,content:s.name,weight:1,controlFlowType:"required"})}return t}function y(e){let t=[];for(let o=0;o<e.length;o++){let{name:s,actions:n}=e[o];for(let e of n)t.push({...e,id:`${s}-${e.id}`,skillSource:s});if(o<e.length-1){let n=e[o+1].name;t.push({id:`handoff-${s}-to-${n}`,content:`从 ${s} 输出衔接至 ${n} 输入`,weight:1,controlFlowType:"handoff",skillSource:`${s}->${n}`})}}return t}async function g(e,t,o,s){let{client:n,model:r}=await u(s);if(!n||!n.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};try{let l,a=await i.db.findParsedFlow(t,o,s||null);if(!a)return{success:!1,error:"请先解析 Skill 流程"};let p=await i.db.findSessionByTaskId(e);if(!p||!p.interactions)return{success:!1,error:"未找到执行记录或交互数据"};try{l="string"==typeof p.interactions?JSON.parse(p.interactions):p.interactions}catch{return{success:!1,error:"交互数据解析失败"}}let c=Array.isArray(l)?l.length:0,d=JSON.parse(a.flowJson),u=await S(n,r,l),f=$(u),m=await x(n,r,d,f,t),y=function(e,t,o,s){let n=["flowchart LR"],r={matched:"#4ade80",partial:"#fbbf24",unexpected:"#f87171",skipped:"#94a3b8"};n.push(" subgraph Skill流程"),n.push(" direction LR"),e.steps.forEach((e,t)=>{let o=`S${t+1}`,s=h(`${t+1}. ${e.name}`),r="decision"===e.type?"{"+s+"}":"output"===e.type?"(("+s+"))":"["+s+"]";n.push(` ${o}${r}`)});for(let t=0;t<e.steps.length-1;t++){let e=`S${t+1}`,o=`S${t+2}`;n.push(` ${e} --> ${o}`)}n.push(" end"),n.push(""),n.push(" subgraph 实际执行轨迹"),n.push(" direction LR");let i=[];if([...t.filter(e=>"skipped"!==e.matchStatus)].sort((e,t)=>e.actualStepIndex-t.actualStepIndex).forEach((e,t)=>{let o=`A${t+1}`,r=e.matchStatus,l=e.actualStepIndex,a=h(`#${l} ${e.actualAction}`),p=s.find(e=>e.dialogStartIndex<=l&&e.dialogEndIndex>=l),c=p?.type||"action";i.push({id:o,label:a,status:r,targetStep:e.expectedStepId,dialogIndex:l,type:c});let d="decision"===c?"{"+a+"}":"output"===c?"(("+a+"))":"["+a+"]";n.push(` ${o}${d}`)}),i.length>1)for(let e=0;e<i.length-1;e++)n.push(` ${i[e].id} --> ${i[e+1].id}`);return n.push(" end"),n.push(""),i.forEach(t=>{if("unexpected"!==t.status&&t.targetStep){let o=e.steps.findIndex(e=>e.id===t.targetStep);if(-1!==o){let e=`S${o+1}`;n.push(` ${e} -.- ${t.id}`)}}}),n.push(""),e.steps.forEach((e,s)=>{let i=`S${s+1}`,l=o.some(t=>t.expectedStepId===e.id),a=t.find(t=>t.expectedStepId===e.id&&"partial"===t.matchStatus),p=r[l?"skipped":a?"partial":"matched"];n.push(` style ${i} fill:${p},color:#0f172a`)}),i.forEach(e=>{let t=r[e.status];n.push(` style ${e.id} fill:${t},color:#0f172a`)}),n.join("\n")}(d,m.matches,m.skippedExpectedSteps,f);return await i.db.upsertExecutionMatch({executionId:e,skillId:t,skillVersion:o,user:s||null,mode:"compare",matchJson:JSON.stringify(m),staticMermaid:a.mermaidCode,dynamicMermaid:y,analysisText:JSON.stringify(m.problemSteps),extractedSteps:JSON.stringify(f),interactionCount:c}),{success:!0,result:m,staticMermaid:a.mermaidCode,dynamicMermaid:y,interactionCount:c}}catch(t){let e=t instanceof Error?t.message:"分析失败";return console.error("Execution match error:",t),{success:!1,error:e}}}async function S(e,t,o){if(!Array.isArray(o)||0===o.length)return[];let s=[];for(let e=0;e<o.length;e+=10)s.push(o.slice(e,e+10));let n=s.map(async(o,s)=>{var n,r;let i,a=10*s,p=(n=o,r=a,i=[],n.forEach((e,t)=>{let o=e.role||"unknown",s="";if("string"==typeof e.content)s=e.content.substring(0,300);else if(Array.isArray(e.content)){s=e.content.filter(e=>"text"===e.type).map(e=>e.text||"").join(" ").substring(0,300);let t=e.content.filter(e=>"toolCall"===e.type||"tool_use"===e.type);t.length>0&&(s+=` [工具调用: ${t.map(e=>e.name).join(", ")}]`)}i.push(`[${r+t}] ${o.toUpperCase()}: ${s}${s.length>=300?"...":""}`)}),i.join("\n")),c=(0,l.generateStepExtractPrompt)(p,s,a);try{let o=await e.chat.completions.create({messages:[{role:"user",content:c}],model:t,temperature:.3}),s=o.choices?.[0]?.message?.content;if(!s)return[];let n=s.trim(),r=n.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(r)n=r[1];else{let e=n.indexOf("{"),t=n.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(n=n.substring(e,t+1))}return JSON.parse(n).steps||[]}catch(e){return console.error(`Batch ${s} extract error:`,e),[]}});return(await Promise.all(n)).flat()}function $(e){return 0===e.length?[]:[...e].sort((e,t)=>e.dialogStartIndex-t.dialogStartIndex)}async function x(e,t,o,s,n){let r=JSON.stringify(s,null,2),i=(0,l.generateExecutionMatchPrompt)(o,r,n),a=await e.chat.completions.create({messages:[{role:"user",content:i}],model:t,temperature:.3}),p=a.choices?.[0]?.message?.content;if(!p)throw Error("LLM 返回内容为空");d("execution_match",{skillId:n},{raw_output:p});let c=p.trim(),u=c.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(u)c=u[1];else{let e=c.indexOf("{"),t=c.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(c=c.substring(e,t+1))}return JSON.parse(c)}async function w(e,t,o){return i.db.findParsedFlow(e,t,o||null)}async function I(e){return i.db.findExecutionMatch(e)}async function b(e,t){let{client:o,model:s}=await u(t);if(!o||!o.apiKey)return{success:!1,error:"请在首页左上角的设置中配置 LLM"};try{let n,r=await i.db.findSessionByTaskId(e);if(!r||!r.interactions)return{success:!1,error:"未找到执行记录或交互数据"};try{n="string"==typeof r.interactions?JSON.parse(r.interactions):r.interactions}catch{return{success:!1,error:"交互数据解析失败"}}let l=Array.isArray(n)?n.length:0;await i.db.upsertExecutionMatch({executionId:e,skillId:null,skillVersion:null,user:t||null,mode:"dynamic",matchJson:null,staticMermaid:null,dynamicMermaid:null,analysisText:null,extractedSteps:null,interactionCount:l});let a=await S(o,s,n),p=$(a),c=await O(o,s,p),d=function(e,t){let o=["flowchart LR"];e.forEach((e,t)=>{let s=`S${t+1}`,n=e.actualStepIndex,r=h(`#${n} ${e.actualAction}`),i="decision"===e.type?"{"+r+"}":"output"===e.type?"(("+r+"))":"["+r+"]";o.push(` ${s}${i}`)});for(let t=0;t<e.length-1;t++){let e=`S${t+1}`,s=`S${t+2}`;o.push(` ${e} --> ${s}`)}return o.push(""),e.forEach((e,t)=>{let s=`S${t+1}`;o.push(` style ${s} fill:#38bdf8,color:#0f172a`)}),o.join("\n")}(c.matches,0),u=JSON.stringify(p);return await i.db.upsertExecutionMatch({executionId:e,skillId:null,skillVersion:null,user:t||null,mode:"dynamic",matchJson:JSON.stringify(c),staticMermaid:null,dynamicMermaid:d,analysisText:null,extractedSteps:u,interactionCount:l}),{success:!0,dynamicMermaid:d,interactionCount:l}}catch(t){let e=t instanceof Error?t.message:"分析失败";return console.error("Dynamic analysis error:",t),{success:!1,error:e}}}async function O(e,t,o){let s=JSON.stringify(o,null,2),n=(0,l.generateDynamicOnlyMatchPrompt)(s),r=await e.chat.completions.create({messages:[{role:"user",content:n}],model:t,temperature:.3}),i=r.choices?.[0]?.message?.content;if(!i)throw Error("LLM 返回内容为空");let a=i.trim(),p=a.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);if(p)a=p[1];else{let e=a.indexOf("{"),t=a.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(a=a.substring(e,t+1))}return JSON.parse(a)}e.s(["analyzeDynamicOnly",()=>b,"analyzeExecutionMatch",()=>g,"extractKeyActionsFromFlow",()=>m,"getExecutionMatch",()=>I,"getParsedFlow",()=>w,"mergeKeyActionsFromMultipleSkills",()=>y,"parseSkillFlow",()=>f]),o()}catch(e){o(e)}},!1)];
250
299
 
251
300
  //# sourceMappingURL=src_c8971a2d._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[11811,e=>{"use strict";var t=e.i(22734),l=e.i(14747);let n={"claude-opus-4-6":{inputTokenPrice:5,outputTokenPrice:25,cacheReadInputTokenPrice:.5,cacheCreationInputTokenPrice:6.25},"claude-sonnet-4-6":{inputTokenPrice:3,outputTokenPrice:15,cacheReadInputTokenPrice:.3,cacheCreationInputTokenPrice:3.75},"deepseek-chat":{inputTokenPrice:.28,outputTokenPrice:.42,cacheReadInputTokenPrice:.028},"deepseek-reasoner":{inputTokenPrice:.28,outputTokenPrice:.42,cacheReadInputTokenPrice:.028},"minimax-m2.5-free":{inputTokenPrice:0,outputTokenPrice:0}},i={"claude-opus-4-6":1e6,"claude-sonnet-4-6":1e6,"deepseek-chat":128e3,"deepseek-reasoner":128e3,"minimax-m2.5-free":196608},o=l.default.join(process.cwd(),"custom-models.json"),r={},s={},a=-1;function u(){try{let e=t.default.statSync(o).mtimeMs;if(e===a)return{pricing:r,contextWindows:s};let l=JSON.parse(t.default.readFileSync(o,"utf-8")),n={},i={};for(let[e,t]of Object.entries(l))e.startsWith("_")||("number"==typeof t.inputTokenPrice&&"number"==typeof t.outputTokenPrice&&(n[e]=t),"number"==typeof t.contextWindow&&(i[e]=t.contextWindow));r=n,s=i,a=e}catch(e){e instanceof SyntaxError&&console.warn("[model-config] Failed to parse custom-models.json:",e.message),r={},s={},a=-1}return{pricing:r,contextWindows:s}}function c(e,t){if(t[e])return t[e];for(let[l,n]of Object.entries(t).sort((e,t)=>t[0].length-e[0].length))if(e.startsWith(l))return n;return null}function d(e){let{pricing:t}=u(),l=c(e,t);if(l)return{pricing:l,source:"custom"};let i=c(e,n);return i?{pricing:i,source:"default"}:null}function k(e){let{contextWindows:t}=u(),l=c(e,t);if(null!=l)return{contextWindow:l,source:"custom"};let n=c(e,i);return null!=n?{contextWindow:n,source:"default"}:null}function _(e,t,l,n,i){let o=l.cacheReadInputTokenPrice??.1*l.inputTokenPrice,r=l.cacheCreationInputTokenPrice??1.25*l.inputTokenPrice;return(e*l.inputTokenPrice+(n??0)*o+(i??0)*r+t*l.outputTokenPrice)/1e6}e.s(["DEFAULT_CACHE_CREATION_RATIO",0,1.25,"DEFAULT_CACHE_READ_RATIO",0,.1,"calculateCost",()=>_,"getModelContextWindow",()=>k,"getModelPricing",()=>d])},26962,e=>{"use strict";function t(e){if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(!t)return null;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?e:null}let l=Date.parse(t);return Number.isFinite(l)?l:null}return null}function l(e){let l=0,n=0,i="",o="",r=0,s=0,a=0,u=0,c=0,d=0,k=0,_=0,p=0;for(let f of e||[]){if(!f)continue;let e=f.role,m="assistant"===e||"subagent"===e;if("assistant"===e){let e="string"==typeof f.content?f.content:"";e&&e.trim()&&(o=e),"string"==typeof f.model&&f.model?i=f.model:"string"==typeof f.modelID&&f.modelID&&(i=f.modelID)}if(!m)continue;d++;let g=f.usage;if(g){let e=function(e){let t=Number(e?.input_tokens??e?.input??0)||0,l=Number(e?.output_tokens??e?.output??0)||0,n=Number(e?.cache?.read??e?.cache_read_input_tokens??0)||0,i=Number(e?.cache?.write??e?.cache_creation_input_tokens??0)||0,o=Number(e?.reasoning??e?.reasoning_tokens??e?.completion_tokens_details?.reasoning_tokens??0)||0,r=e?.reasoning!==void 0&&o>0&&l<o?l+o:l;return{total:e?.total!==void 0?Number(e.total)||0:t+r+n+i,input:t,output:r,cacheRead:n,cacheWrite:i,reasoning:o,maxSingleCallTokens:t+r+n+i}}(g);l+=e.total,r+=e.input,s+=e.output,a+=e.cacheRead,u+=e.cacheWrite,c+=e.reasoning,e.maxSingleCallTokens>p&&(p=e.maxSingleCallTokens)}let y=0,v=t(f.timeInfo?.created),h=t(f.timeInfo?.completed);if(null!=v&&null!=h?y=h-v:"number"==typeof f.partBasedDuration&&f.partBasedDuration>0&&(y=f.partBasedDuration+100),y>0&&y<36e5&&(n+=y),Array.isArray(f.tool_calls))for(let e of(k+=f.tool_calls.length,f.tool_calls))(e?.state==="error"||e?.state==="failed")&&_++}return{model:i||void 0,final_result:o||void 0,tokens:Math.round(l),latency:n/1e3,input_tokens:Math.round(r),output_tokens:Math.round(s),tool_call_count:k,tool_call_error_count:_,llm_call_count:d,cache_read_input_tokens:Math.round(a),cache_creation_input_tokens:Math.round(u),max_single_call_tokens:Math.round(p),reasoning_tokens:Math.round(c)}}e.s(["deriveOpencodeExecutionFields",()=>l])},58622,e=>{"use strict";function t(e){let t="string"==typeof e.incomingLabel?e.incomingLabel.trim():void 0;if(void 0!==t){if(!t)return;return t}let l="string"==typeof e.existingLabel?e.existingLabel.trim():"",n="string"==typeof e.skill?e.skill.trim():"",i=e.skillVersion??null;if(l&&!function(e,t,l){if(!e)return!1;if("without-skill"===e)return!0;if(!t)return!1;let n=e.match(/^(.+)-v(\d+)$/);if(!n)return!1;let i=n[1];return!!Number.isFinite(Number(n[2]))&&i===t}(l,n||void 0,0))return l;if(n){let e="number"==typeof i&&Number.isFinite(i)?i:1;return`${n}-v${e}`}return"without-skill"}e.s(["chooseExecutionLabel",()=>t])},18975,e=>{"use strict";function t(e){let t="string"==typeof e?e.trim():"";if(!t||"without-skill"===t)return null;let l=t.match(/^(.+)-v(\d+)$/);if(!l)return null;let n=(l[1]||"").trim(),i=Number(l[2]);return n&&Number.isFinite(i)&&!(i<0)?{skill:n,skill_version:i,skills:[n],invokedSkills:[{name:n,version:i}]}:null}e.s(["parseLabelSkillVersionBinding",()=>t])},85765,e=>e.a(async(t,l)=>{try{var n=e.i(22734),i=e.i(14747),o=e.i(85874),r=e.i(98043),s=e.i(11811),a=e.i(26962),u=e.i(58622),c=e.i(18975),d=e.i(2988),k=t([o,r,d]);function _(e){let t=e.trim(),l=[['"','"'],["'","'"],["“","”"],["‘","’"],["`","`"],["《","》"],["(",")"],["(",")"],["【","】"],["[","]"],["{","}"],["<",">"]];for(let e=0;e<6;e++){let e=t;for(let[e,n]of(t=t.trim(),l))t.startsWith(e)&&t.endsWith(n)&&t.length>=e.length+n.length+1&&(t=t.slice(e.length,-n.length));if(t===e)break}return t=(t=(t=t.replace(/[\s"'“”‘’`。.]/g,"")).replace(/^[\s.,,。!?!?;;::、·…]+|[\s.,,。!?!?;;::、·…]+$/g,"")).replace(/\s+/g," ").trim()}function p(e,t){if(!t)return;let l=_(t);if(!l)return;let n=e.filter(e=>e.query&&e.query.trim()).filter(e=>{let t=_(e.query);return!!t&&l.endsWith(t)});if(0!==n.length)return n.reduce((e,t)=>{let l=_(e.query).length;return _(t.query).length>l?t:e})}[o,r,d]=k.then?(await k)():k;let y=i.default.join(process.cwd(),"data"),v=i.default.join(y,"evaluation_result.json");async function f(e,t){let l={};if(e&&(l.OR=[{user:e},{user:null}]),!t?.query&&t?.taskId){let e=await r.db.findExecutionById(t.taskId);e&&e.query?(l.query=e.query,t.framework&&(l.framework=t.framework)):l.id=t.taskId}else t?.query&&(l.query=t.query,t.framework&&(l.framework=t.framework));t?.skill!==void 0&&(l.skill=t.skill),t?.skillVersion!==void 0&&(l.skillVersion=t.skillVersion);let n=await r.db.findExecutions(l,{timestamp:"desc"}),i=new Map;for(let e of n){let t=e.taskId||null;t&&(i.has(t)||i.set(t,[]),i.get(t).push(e))}let o=new Set;for(let[e,t]of i.entries()){if(1===t.length){o.add(t[0].id);continue}let l=t.find(t=>t.id===e);if(l){o.add(l.id);continue}let n=t.slice().sort((e,t)=>{let l=new Date(e.timestamp).getTime(),n=new Date(t.timestamp).getTime();if(n!==l)return n-l;let i=String(e.finalResult||"").length;return String(t.finalResult||"").length-i});o.add(n[0].id)}let a=n.filter(e=>!e.taskId||o.has(e.id));for(let[e,t]of i.entries())if(!(t.length<=1))for(let e of t)o.has(e.id)||r.db.deleteExecution(e.id).catch(()=>{});return a.map(e=>{let t=e.model??null,l=t?(0,s.getModelPricing)(t):null,n=l?.pricing??null,i=t&&null!=e.maxSingleCallTokens?(0,s.getModelContextWindow)(t):null;return{...e,upload_id:e.id,task_id:e.taskId||void 0,query:e.query||void 0,framework:e.framework||void 0,tokens:e.tokens||void 0,cost:n&&null!=e.inputTokens&&null!=e.outputTokens?(0,s.calculateCost)(e.inputTokens,e.outputTokens,n,e.cacheReadInputTokens??void 0,e.cacheCreationInputTokens??void 0):void 0,latency:e.latency||void 0,timestamp:e.timestamp?.toISOString?.()||e.timestamp,final_result:e.finalResult||void 0,skill:e.skill||void 0,skills:e.skills?JSON.parse(e.skills):void 0,invokedSkills:e.invokedSkills?JSON.parse(e.invokedSkills):void 0,is_skill_correct:e.isSkillCorrect||!1,is_answer_correct:e.isAnswerCorrect||!1,answer_score:void 0!==e.answerScore?e.answerScore:void 0,skill_score:void 0!==e.skillScore?e.skillScore:void 0,judgment_reason:e.judgmentReason||void 0,failures:e.failures?JSON.parse(e.failures):void 0,label:e.label??null,user:e.user??null,skill_issues:e.skillIssues?JSON.parse(e.skillIssues):[],skill_version:e.skillVersion??null,model:t,tool_call_count:e.toolCallCount??void 0,llm_call_count:e.llmCallCount??void 0,input_tokens:e.inputTokens??void 0,output_tokens:e.outputTokens??void 0,tool_call_error_count:e.toolCallErrorCount??void 0,cache_read_input_tokens:e.cacheReadInputTokens??void 0,cache_creation_input_tokens:e.cacheCreationInputTokens??void 0,max_single_call_tokens:e.maxSingleCallTokens??void 0,reasoning_tokens:e.reasoningTokens??void 0,expected_skill_version:e.expectedSkillVersion??null,skill_recall_rate:e.skillRecallRate??null,context_window_pct:null!=e.maxSingleCallTokens&&i?Math.round(e.maxSingleCallTokens/i.contextWindow*1e3)/10:void 0,context_window_limit:i?.contextWindow,context_window_source:i?.source,cost_pricing:n?{inputTokenPrice:n.inputTokenPrice,outputTokenPrice:n.outputTokenPrice,cacheReadInputTokenPrice:n.cacheReadInputTokenPrice??n.inputTokenPrice*s.DEFAULT_CACHE_READ_RATIO,cacheCreationInputTokenPrice:n.cacheCreationInputTokenPrice??n.inputTokenPrice*s.DEFAULT_CACHE_CREATION_RATIO,source:l?.source??"default"}:null}})}async function m(e){let t={};return e&&(t.OR=[{user:e},{user:null}]),(await r.db.findConfigs(t)).map(e=>{let t=(t,l)=>{if(t)try{return JSON.parse(t)}catch(t){console.error(`[readConfig] Failed to parse ${l} for config ${e.id}:`,t);return}};return{id:e.id,query:e.query,skill:e.skill,skillVersion:e.skillVersion,expectedSkills:t(e.expectedSkills,"expectedSkills"),standard_answer:e.standardAnswer,root_causes:t(e.rootCauses,"rootCauses"),key_actions:t(e.keyActions,"keyActions"),extractedKeyActions:t(e.extractedKeyActions,"extractedKeyActions"),parse_status:e.parseStatus||"completed"}})}async function g(e){let t=e.upload_id||e.task_id||crypto.randomUUID();if(e.task_id)try{let l={taskId:e.task_id};e.framework&&(l.framework=e.framework);let n=await r.db.findExecutions(l,{timestamp:"desc"});if(n&&n.length>0&&n[0]?.id){let l=n.find(t=>t.id===e.task_id),i=l&&l.id?l.id:n[0].id;i!==t&&(t=i)}}catch{}let l=null,i=await r.db.findExecutionById(t);i&&(l={...i,upload_id:i.id,task_id:i.taskId||void 0,query:i.query||void 0,framework:i.framework||void 0,tokens:i.tokens||void 0,cost:i.cost||void 0,latency:i.latency||void 0,timestamp:i.timestamp?.toISOString?.()||i.timestamp,final_result:i.finalResult||void 0,skill:i.skill||void 0,skills:i.skills?JSON.parse(i.skills):void 0,invokedSkills:i.invokedSkills?(()=>{try{return JSON.parse(i.invokedSkills)}catch{return}})():void 0,is_skill_correct:i.isSkillCorrect||!1,is_answer_correct:i.isAnswerCorrect||!1,answer_score:i.answerScore||void 0,skill_score:i.skillScore||void 0,judgment_reason:i.judgmentReason||void 0,failures:i.failures?JSON.parse(i.failures):void 0,skill_issues:i.skillIssues?JSON.parse(i.skillIssues):void 0,label:i.label||void 0,user:i.user||void 0,skill_version:i.skillVersion??void 0,expected_skill_version:i.expectedSkillVersion??null,skill_recall_rate:i.skillRecallRate??null,model:i.model||void 0,tool_call_count:i.toolCallCount??void 0,llm_call_count:i.llmCallCount??void 0,input_tokens:i.inputTokens??void 0,output_tokens:i.outputTokens??void 0,tool_call_error_count:i.toolCallErrorCount??void 0,cache_read_input_tokens:i.cacheReadInputTokens??void 0,cache_creation_input_tokens:i.cacheCreationInputTokens??void 0,max_single_call_tokens:i.maxSingleCallTokens??void 0,reasoning_tokens:i.reasoningTokens??void 0});let s=l?{...l}:{},k=!!l;k||s.timestamp||e.timestamp?e.timestamp&&(s.timestamp=e.timestamp):s.timestamp=new Date().toISOString();let _=!!e.force_query_update,f="string"==typeof l?.query?l.query.trim():"",g="string"==typeof e.query?e.query.trim():"";if("string"==typeof e.label){let t=(0,c.parseLabelSkillVersionBinding)(e.label);t&&(e.skill=t.skill,e.skill_version=t.skill_version,e.skills=t.skills,e.invokedSkills=t.invokedSkills)}if(s={...s,...e},f&&!_?s.query=f:!f&&g?s.query=g:"string"!=typeof s.query||s.query.trim()?"string"==typeof s.query&&(s.query=s.query.trim()):s.query=void 0,!s.upload_id&&s.task_id&&(s.upload_id=s.task_id),!s.task_id&&s.upload_id&&(s.task_id=s.upload_id),s.upload_id=t,(!s.label||!s.model||!s.user)&&s.task_id){let e=await r.db.findSessionByTaskId(s.task_id);e&&(!s.label&&e.label&&(s.label=e.label),!s.model&&e.model&&(s.model=e.model),!s.user&&e.user&&(s.user=e.user))}if(!s.user)try{let e=r.db.getClient();if("query"in e){let t=await e.query('SELECT username FROM "User" LIMIT 1');t.rows[0]&&(s.user=t.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${s.task_id} to: ${s.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let y=e.Token||e.token||e.tokens;void 0!==y&&(s.tokens=Number(y)),void 0!==e.tool_call_count&&(s.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(s.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(s.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(s.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(s.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(s.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(s.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(s.max_single_call_tokens=Number(e.max_single_call_tokens)),void 0!==e.reasoning_tokens&&(s.reasoning_tokens=Number(e.reasoning_tokens));let h=null;if(s.task_id&&s.interactions){let e="string"==typeof s.interactions?(()=>{try{return JSON.parse(s.interactions)}catch{return[]}})():s.interactions;h=e;try{let t=await r.db.findSessionByTaskId(s.task_id),l=t?.interactions?(()=>{try{return JSON.parse(t.interactions)}catch{return[]}})():[];Array.isArray(l)&&l.length>0&&(h=!Array.isArray(e)||e.length<l.length?l:e.map((e,t)=>{let n=l[t],i=e?.content===""||e?.content==null,o="string"==typeof n?.content&&n.content.length>0;return i&&o&&n?.role===e?.role?{...e,content:n.content}:e}))}catch{}if(s.interactions=h,"opencode"===s.framework&&Array.isArray(h)){let e=(0,a.deriveOpencodeExecutionFields)(h);e.model&&(s.model=e.model),e.final_result&&(s.final_result=e.final_result),s.tokens=e.tokens,s.latency=e.latency,s.input_tokens=e.input_tokens,s.output_tokens=e.output_tokens,s.tool_call_count=e.tool_call_count,s.tool_call_error_count=e.tool_call_error_count,s.llm_call_count=e.llm_call_count,s.cache_read_input_tokens=e.cache_read_input_tokens,s.cache_creation_input_tokens=e.cache_creation_input_tokens,s.max_single_call_tokens=e.max_single_call_tokens,s.reasoning_tokens=e.reasoning_tokens}}let w="未找到匹配的评测配置",S=!1,b=s.is_answer_correct||!1,x=s.judgment_reason||w,T=await m(s.user);if(s.query&&T.length>0){let t=p(T,s.query);if(t){let n=Array.isArray(s.invokedSkills)?s.invokedSkills:[],i=(Array.isArray(s.skills)?s.skills:[]).map(e=>({name:e,version:null})),a=t.expectedSkills||[];if(a.length>0){let e=n.length>0?n:i;if(e.length>0){let t=0,l=a.filter(e=>e.skill?.trim()),n=l.map(e=>e.skill.trim()),i=new Map;if(n.length>0)try{for(let e of(await r.db.findSkills({name:{in:n},user:s.user||null})))i.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let n of l){let l=n.skill.trim(),o=n.version??null,r=e.find(e=>e.name===l);if(r){let e=!1;if(null===o)e=!0;else if(null!==r.version)e=r.version===o;else{let t=i.get(l);e=!!t&&(t.activeVersion||0)===o}e&&(t++,S||(S=!0))}}l.length>0&&(s.skill_recall_rate=t/l.length)}}if(s.is_skill_correct=S,!t.key_actions||0===t.key_actions.length){let e=t.expectedSkills||[],l=t.skill?.trim(),n=e.length>0?e.map(e=>e.skill.trim()).filter(Boolean):l?[l]:[];if(n.length>0)try{let e=[];for(let t of n){let l=await r.db.findSkill(t,s.user||null);if(!l)continue;let n=l.activeVersion||0,i=l.versions?.find(e=>e.version===n)||l.versions?.[0];if(!i?.content)continue;let o=await r.db.findParsedFlow(l.id,i.version,s.user||null);if(o){let l=JSON.parse(o.flowJson),n=(0,d.extractKeyActionsFromFlow)(l);e.push({name:t,actions:n})}}if(e.length>0){let l;t.key_actions=(l=1===e.length?e[0].actions:(0,d.mergeKeyActionsFromMultipleSkills)(e)).map(e=>({content:e.content,weight:e.weight,..."required"!==e.controlFlowType?{controlFlowType:e.controlFlowType}:{},...e.condition?{condition:e.condition}:{},...e.branchLabel?{branchLabel:e.branchLabel}:{},...e.loopCondition?{loopCondition:e.loopCondition}:{},...void 0!==e.expectedMinCount?{expectedMinCount:e.expectedMinCount}:{},...void 0!==e.expectedMaxCount?{expectedMaxCount:e.expectedMaxCount}:{},...e.groupId?{groupId:e.groupId}:{}})),t.extractedKeyActions=l;try{await r.db.updateConfig(t.id,{keyActions:JSON.stringify(t.key_actions),extractedKeyActions:JSON.stringify(l)}),console.log(`[AutoExtract] Auto-filled key_actions for config ${t.id} from ${n.join(", ")}`)}catch(e){console.error("[AutoExtract] Error updating config with extracted key_actions:",e)}}}catch(e){console.error("[AutoExtract] Error extracting key_actions from Skill:",e)}}if(void 0!==s.final_result){let n=!0;if(k&&!e.force_judgment&&l&&l.query===s.query&&l.final_result===s.final_result&&(n=!1),n&&!s.skip_evaluation){let e,l=(s.skill||t.skill||"").trim();if(l)try{let t=await r.db.findSkill(l,s.user||null);if(t){let l=t.activeVersion||0,n=t.versions?.find(e=>e.version===l);if(n&&n.content)e=n.content,s.skill_version=n.version;else if(t.versions&&t.versions.length>0){let l=t.versions[0];l&&l.content&&(e=l.content,s.skill_version=l.version)}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let n=null;try{let e=await r.db.findExecutionMatch(s.task_id||s.upload_id||"");e?.extractedSteps&&(n="string"==typeof e.extractedSteps?JSON.parse(e.extractedSteps):e.extractedSteps)}catch(e){console.warn("[Judgment] Failed to load execution steps for KA evaluation:",e)}let i=await (0,o.judgeAnswer)(s.query||"",{standard_answer_example:t.standard_answer,root_causes:t.root_causes,key_actions:t.key_actions,skill_definition:e},s.final_result,s.user,n);b=i.is_correct,s.answer_score=i.score,x=i.reason||"Judged by Evaluation Model"}}}else k&&!e.force_judgment||s.answer_score||(b=!1,x=w,s.answer_score=null)}else s.query&&(!k||e.force_judgment)&&!s.answer_score&&(b=!1,x=w,s.answer_score=null);e.skip_evaluation&&(s.answer_score=null,x="结果评估中..."),s.is_skill_correct=S,s.is_answer_correct=b,s.judgment_reason=x;let C=Array.isArray(s.skills)&&s.skills.length>0?s.skills[0]:void 0;if(C){let e=function(){if(!n.default.existsSync(v))return{};try{return JSON.parse(n.default.readFileSync(v,"utf-8"))}catch{return{}}}()[C];e&&(s.skill_score=parseFloat(e))}if(s.label=(0,u.chooseExecutionLabel)({existingLabel:l?.label,incomingLabel:e.label,skill:s.skill,skillVersion:s.skill_version??null}),await r.db.upsertExecution({where:{id:t},create:{id:t,taskId:s.task_id,query:s.query,framework:s.framework,tokens:s.tokens,cost:s.cost,latency:s.latency,timestamp:s.timestamp?new Date(s.timestamp):new Date,finalResult:s.final_result,skill:s.skill,skills:s.skills?JSON.stringify(s.skills):null,invokedSkills:s.invokedSkills?JSON.stringify(s.invokedSkills):null,isSkillCorrect:s.is_skill_correct,isAnswerCorrect:s.is_answer_correct,answerScore:s.answer_score,skillScore:s.skill_score,judgmentReason:s.judgment_reason,failures:s.failures?JSON.stringify(s.failures):null,skillIssues:s.skill_issues?JSON.stringify(s.skill_issues):null,label:s.label,user:s.user,skillVersion:s.skill_version,model:s.model,toolCallCount:s.tool_call_count,llmCallCount:s.llm_call_count,inputTokens:s.input_tokens,outputTokens:s.output_tokens,toolCallErrorCount:s.tool_call_error_count,skillRecallRate:s.skill_recall_rate,cacheReadInputTokens:s.cache_read_input_tokens,cacheCreationInputTokens:s.cache_creation_input_tokens,maxSingleCallTokens:s.max_single_call_tokens,reasoningTokens:s.reasoning_tokens},update:{taskId:s.task_id,query:s.query,framework:s.framework,tokens:s.tokens,cost:s.cost,latency:s.latency,timestamp:s.timestamp?new Date(s.timestamp):new Date,finalResult:s.final_result,skill:s.skill,skills:s.skills?JSON.stringify(s.skills):null,invokedSkills:s.invokedSkills?JSON.stringify(s.invokedSkills):null,isSkillCorrect:s.is_skill_correct,isAnswerCorrect:s.is_answer_correct,answerScore:s.answer_score,skillScore:s.skill_score,judgmentReason:s.judgment_reason,failures:s.failures?JSON.stringify(s.failures):null,skillIssues:s.skill_issues?JSON.stringify(s.skill_issues):null,label:s.label,user:s.user,skillVersion:s.skill_version,model:s.model,toolCallCount:s.tool_call_count,llmCallCount:s.llm_call_count,inputTokens:s.input_tokens,outputTokens:s.output_tokens,toolCallErrorCount:s.tool_call_error_count,skillRecallRate:s.skill_recall_rate,cacheReadInputTokens:s.cache_read_input_tokens,cacheCreationInputTokens:s.cache_creation_input_tokens,maxSingleCallTokens:s.max_single_call_tokens,reasoningTokens:s.reasoning_tokens}}),e.upload_id&&e.task_id&&e.upload_id!==t)try{let t=await r.db.findExecutionById(e.upload_id);t&&t.taskId===e.task_id&&await r.db.deleteExecution(e.upload_id)}catch{}return s.task_id&&h&&await r.db.upsertSession(s.task_id,{taskId:s.task_id,query:s.query,label:s.label,user:s.user,model:s.model,interactions:JSON.stringify(h)},{query:s.query,label:s.label,user:s.user,model:s.model,interactions:JSON.stringify(h)}),{success:!0,record:s}}e.s(["findBestMatchConfig",()=>p,"readConfig",()=>m,"readRecords",()=>f,"saveExecutionRecord",()=>g]),l()}catch(e){l(e)}},!1)];
2
+
3
+ //# sourceMappingURL=src_lib_119f6c7b._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},60721,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131),e=a.i(19032);let f=(0,d.createContext)(void 0);function g({children:a}){let[g,h]=(0,d.useState)(null),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(!1),[m,n]=(0,d.useState)(!1),[o,p]=(0,d.useState)(!1),q=(0,c.useRouter)(),r=(0,c.usePathname)();return(0,d.useEffect)(()=>{(0,e.apiFetch)("/api/config/status?check_org=true").then(a=>a.json()).then(a=>l(a.org_mode||!1)).catch(()=>{}).finally(()=>p(!0))},[]),(0,d.useEffect)(()=>{if(!o)return;let a=localStorage.getItem("user_id"),b=localStorage.getItem("api_key");a?(h(a),b&&j(b)):k&&!m?(n(!0),(0,e.apiFetch)("/api/auth/organization").then(async a=>{let b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b?.error||`Organization auth failed: ${a.status}`);return b}).then(a=>{let b=a?.displayName||a?.username,c=a?.apiKey;if(!b)throw Error("Organization auth response missing username");localStorage.setItem("user_id",b),c&&localStorage.setItem("api_key",c),h(b),c&&j(c)}).catch(a=>console.error("Organization auth failed:",a)).finally(()=>n(!1))):"/login"!==r&&q.push("/login")},[r,q,k,m,o]),(0,b.jsx)(f.Provider,{value:{user:g,apiKey:i,login:(a,b)=>{localStorage.setItem("user_id",a),h(a),b&&(localStorage.setItem("api_key",b),j(b)),q.replace("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),h(null),j(null),q.push("/login")}},children:a})}function h(){let a=(0,d.useContext)(f);if(void 0===a)throw Error("useAuth must be used within an AuthProvider");return a}a.s(["AuthProvider",()=>g,"useAuth",()=>h])},14020,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d=(0,c.createContext)(void 0);function e({children:a}){let[e,f]=(0,c.useState)("light"),[g,h]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{h(!0);let a=localStorage.getItem("skill-insight-theme");a&&f(a)},[]),(0,c.useEffect)(()=>{g&&(localStorage.setItem("skill-insight-theme",e),document.documentElement.setAttribute("data-theme",e))},[e,g]),g)?(0,b.jsx)(d.Provider,{value:{theme:e,toggleTheme:()=>{f(a=>"light"===a?"dark":"light")},isDark:"dark"===e},children:a}):null}function f(){let a=(0,c.useContext)(d);if(void 0===a)throw Error("useTheme must be used within a ThemeProvider");return a}a.s(["ThemeProvider",()=>e,"useTheme",()=>f])},18175,a=>{"use strict";var b=a.i(87924),c=a.i(60721),d=a.i(14020);function e({children:a}){return(0,b.jsx)(d.ThemeProvider,{children:(0,b.jsx)(c.AuthProvider,{children:a})})}a.s(["Providers",()=>e])}];
1
+ module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},60721,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131),e=a.i(19032);let f=(0,d.createContext)(void 0);function g({children:a}){let[g,h]=(0,d.useState)(null),[i,j]=(0,d.useState)(null),[k,l]=(0,d.useState)(!1),[m,n]=(0,d.useState)(!1),[o,p]=(0,d.useState)(!1),q=(0,c.useRouter)(),r=(0,c.usePathname)();return(0,d.useEffect)(()=>{(0,e.apiFetch)("/api/config/status?check_org=true").then(a=>a.json()).then(a=>l(a.org_mode||!1)).catch(()=>{}).finally(()=>p(!0))},[]),(0,d.useEffect)(()=>{if(!o)return;let a=localStorage.getItem("user_id"),b=localStorage.getItem("api_key");a?(h(a),b&&j(b)):k&&!m?(n(!0),(0,e.apiFetch)("/api/auth/organization").then(async a=>{let b=await a.json().catch(()=>({}));if(!a.ok)throw Error(b?.error||`Organization auth failed: ${a.status}`);return b}).then(a=>{let b=a?.displayName||a?.username,c=a?.apiKey;if(!b)throw Error("Organization auth response missing username");localStorage.setItem("user_id",b),c&&localStorage.setItem("api_key",c),h(b),c&&j(c)}).catch(a=>console.error("Organization auth failed:",a)).finally(()=>n(!1))):"/login"!==r&&q.push("/login")},[r,q,k,m,o]),(0,b.jsx)(f.Provider,{value:{user:g,apiKey:i,login:(a,b)=>{localStorage.setItem("user_id",a),h(a),b&&(localStorage.setItem("api_key",b),j(b)),q.replace("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),h(null),j(null),q.push("/login")}},children:a})}function h(){let a=(0,d.useContext)(f);if(void 0===a)throw Error("useAuth must be used within an AuthProvider");return a}a.s(["AuthProvider",()=>g,"useAuth",()=>h])},18175,a=>{"use strict";var b=a.i(87924),c=a.i(60721),d=a.i(14020);function e({children:a}){return(0,b.jsx)(d.ThemeProvider,{children:(0,b.jsx)(c.AuthProvider,{children:a})})}a.s(["Providers",()=>e])}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__9ab7cc4a._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__082c32a2._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50645,a=>{a.n(a.i(27572))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},72187,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/Dashboard.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/Dashboard.tsx <module evaluation>","default")},92848,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/Dashboard.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/Dashboard.tsx","default")},22671,a=>{"use strict";a.i(72187);var b=a.i(92848);a.n(b)},60168,a=>{"use strict";var b=a.i(7997),c=a.i(22671);function d(){return(0,b.jsx)("main",{children:(0,b.jsx)(c.default,{})})}a.s(["default",()=>d,"metadata",0,{title:"Skill-Insight",description:"智能体技能评估、分析与优化"}])}];
1
+ module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},50645,a=>{a.n(a.i(27572))},43619,a=>{a.n(a.i(79962))},13718,a=>{a.n(a.i(85523))},18198,a=>{a.n(a.i(45518))},62212,a=>{a.n(a.i(66114))},72187,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/Dashboard.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/Dashboard.tsx <module evaluation>","default")},92848,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/Dashboard.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/Dashboard.tsx","default")},22671,a=>{"use strict";a.i(72187);var b=a.i(92848);a.n(b)},60168,a=>{"use strict";var b=a.i(7997),c=a.i(22671);function d(){return(0,b.jsx)("main",{children:(0,b.jsx)(c.default,{})})}a.s(["default",()=>d,"metadata",0,{title:"Skill-insight",description:"智能体技能评估、分析与优化"}])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__51073007._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},68063,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},94086,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131);function e({skillId:a,skillName:d,version:e,user:f}){let g=(0,c.useRouter)();return a||d?(0,b.jsxs)("span",{onClick:b=>{b.preventDefault();let c=new URLSearchParams;a?c.set("id",a):(c.set("name",d),f&&c.set("user",f)),null!=e&&c.set("version",String(e)),g.push(`/skills?${c.toString()}`)},style:{color:"#60a5fa",cursor:"pointer",textDecoration:"none",transition:"color 0.2s"},onMouseEnter:a=>{a.currentTarget.style.textDecoration="underline",a.currentTarget.style.color="#93c5fd"},onMouseLeave:a=>{a.currentTarget.style.textDecoration="none",a.currentTarget.style.color="#60a5fa"},children:[d,e?` (v${e})`:""]}):(0,b.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}function f({skills:a,skill:c,skillId:f,skillIds:g,skillVersion:h,user:i}){return a?.length||c?a?.length?(0,b.jsx)(b.Fragment,{children:a.map((a,c)=>{let f=g?.[c]||null;return(0,b.jsxs)(d.default.Fragment,{children:[c>0&&(0,b.jsx)("span",{style:{color:"#e2e8f0"},children:", "}),(0,b.jsx)(e,{skillId:f,skillName:a,version:h,user:i})]},c)})}):(0,b.jsx)(e,{skillId:f,skillName:c,version:h,user:i}):(0,b.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}a.s(["SkillLinks",()=>f])},34673,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_53af751a._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_8f6f313e.js","server/chunks/ssr/node_modules_514c148b._.js","server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-O4XLMI2P_mjs_2332a4d1._.js","server/chunks/ssr/node_modules_lodash-es_a02ffc59._.js","server/chunks/ssr/node_modules_6f351e1e._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-KYZI473N_mjs_639a8020._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-PU5JKC2W_mjs_36bd25de._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-7R4GIKGN_mjs_e5dda8cc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-GEFDOKGD_mjs_dfa64fe1._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-XPW4576I_mjs_642f0a51._.js"].map(b=>a.l(b))).then(()=>b(83384)))}];
1
+ module.exports=[35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},68063,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getDeploymentId:function(){return f},getDeploymentIdQueryOrEmptyString:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(){return!1}function g(){return""}},94086,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(72131),e=a.i(14020);function f({skillId:a,skillName:d,version:f,user:g}){let h=(0,c.useRouter)(),{isDark:i}=(0,e.useTheme)();return a||d?(0,b.jsxs)("span",{onClick:b=>{b.preventDefault();let c=new URLSearchParams;a?c.set("id",a):(c.set("name",d),g&&c.set("user",g)),null!=f&&c.set("version",String(f)),h.push(`/skills?${c.toString()}`)},style:{color:i?"#60a5fa":"#2563eb",cursor:"pointer",textDecoration:"none",transition:"color 0.15s"},onMouseEnter:a=>{a.currentTarget.style.textDecoration="underline",a.currentTarget.style.color=i?"#93c5fd":"#2563eb"},onMouseLeave:a=>{a.currentTarget.style.textDecoration="none",a.currentTarget.style.color=i?"#60a5fa":"#2563eb"},children:[d,f?` (v${f})`:""]}):(0,b.jsx)("span",{style:{color:i?"#71717a":"#a1a1aa"},children:"(None)"})}function g({skills:a,skill:c,skillId:g,skillIds:h,skillVersion:i,user:j}){let{isDark:k}=(0,e.useTheme)();return a?.length||c?a?.length?(0,b.jsx)(b.Fragment,{children:a.map((a,c)=>{let e=h?.[c]||null;return(0,b.jsxs)(d.default.Fragment,{children:[c>0&&(0,b.jsx)("span",{style:{color:k?"#3f3f46":"#d4d4d8"},children:", "}),(0,b.jsx)(f,{skillId:e,skillName:a,version:i,user:j})]},c)})}):(0,b.jsx)(f,{skillId:g,skillName:c,version:i,user:j}):(0,b.jsx)("span",{style:{color:k?"#71717a":"#a1a1aa"},children:"(None)"})}a.s(["SkillLinks",()=>g])},34673,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_53af751a._.js","server/chunks/ssr/node_modules_roughjs_bundled_rough_esm_8f6f313e.js","server/chunks/ssr/node_modules_514c148b._.js","server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-O4XLMI2P_mjs_2332a4d1._.js","server/chunks/ssr/node_modules_lodash-es_a02ffc59._.js","server/chunks/ssr/node_modules_6f351e1e._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-KYZI473N_mjs_639a8020._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-PU5JKC2W_mjs_36bd25de._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-7R4GIKGN_mjs_e5dda8cc._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-GEFDOKGD_mjs_dfa64fe1._.js","server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-XPW4576I_mjs_642f0a51._.js"].map(b=>a.l(b))).then(()=>b(83384)))}];
2
2
 
3
3
  //# sourceMappingURL=_049876f0._.js.map