@witty-ai/skill-insight 0.6.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 (207) hide show
  1. package/.env.example +1 -0
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  15. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  16. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  18. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/standalone/.next/server/app/api/config/create/route.js +4 -3
  22. package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/config/route.js +3 -2
  24. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/data/route.js +5 -4
  26. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/evaluation/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +5 -4
  29. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +3 -2
  31. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
  33. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +4 -3
  34. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/rejudge/route.js +5 -4
  36. package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/session/route.js +4 -4
  38. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +5 -2
  42. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +5 -2
  44. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/skills/logs/route.js +5 -4
  46. package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/skills/upload/route.js +5 -2
  50. package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/task-stats/route.js +5 -4
  52. package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/upload/route.js +4 -3
  54. package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +1 -1
  56. package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/details.html +1 -1
  59. package/.next/standalone/.next/server/app/details.rsc +5 -5
  60. package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
  61. package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
  63. package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
  64. package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
  65. package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/index.html +1 -1
  67. package/.next/standalone/.next/server/app/index.rsc +5 -5
  68. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  70. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  71. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  72. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  73. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/login.html +1 -1
  76. package/.next/standalone/.next/server/app/login.rsc +5 -5
  77. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
  78. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  79. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
  80. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  81. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  82. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  83. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/skills.html +1 -1
  88. package/.next/standalone/.next/server/app/skills.rsc +5 -5
  89. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
  90. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  91. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
  92. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  93. package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
  94. package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  95. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +1 -1
  96. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +1 -1
  97. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +1 -1
  98. package/.next/standalone/.next/server/chunks/[root-of-the-server]__23efcd78._.js +3 -0
  99. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +1 -1
  100. package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +1 -1
  101. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +1 -1
  102. package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +1 -1
  103. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +1 -1
  104. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6261d672._.js +3 -0
  105. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +1 -1
  106. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +1 -1
  113. package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3d72e3._.js +3 -0
  114. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +1 -1
  117. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c602c518._.js +3 -0
  119. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +1 -1
  120. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +1 -1
  122. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +1 -1
  123. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +1 -1
  125. package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
  126. package/.next/standalone/.next/server/chunks/_46f10554._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/_4c806e26._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
  129. package/.next/standalone/.next/server/chunks/src_98433cb8._.js +77 -15
  130. package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +57 -8
  131. package/.next/standalone/.next/server/chunks/src_lib_119f6c7b._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9ab7cc4a._.js → [root-of-the-server]__082c32a2._.js} +2 -2
  133. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/ssr/_049876f0._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/_09546b95._.js +1 -1
  136. package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +9 -9
  138. package/.next/standalone/.next/server/chunks/ssr/{_b121f1ae._.js → _e2faf4f5._.js} +2 -2
  139. package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -2
  140. package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
  142. package/.next/standalone/.next/server/pages/404.html +1 -1
  143. package/.next/standalone/.next/server/pages/500.html +2 -2
  144. package/.next/standalone/.next/static/chunks/{9445b2873a413c58.js → 015467355d3866a3.js} +1 -1
  145. package/.next/standalone/.next/static/chunks/09f192c9b0609ad8.js +1 -0
  146. package/.next/standalone/.next/static/chunks/1945a5514fbc393c.css +1 -0
  147. package/.next/standalone/.next/static/chunks/{07c9f28a269c701a.js → 361e4cf1e9a71ccb.js} +1 -1
  148. package/.next/{static/chunks/5432ce4a494bc74d.js → standalone/.next/static/chunks/60bc50374fd32f20.js} +3 -3
  149. package/.next/standalone/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
  150. package/.next/standalone/.next/static/chunks/961f7fa606dd26a8.js +1 -0
  151. package/.next/standalone/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
  152. package/.next/standalone/.next/static/chunks/c513373e5cfedd5b.js +2 -0
  153. package/.next/standalone/.next/static/chunks/ca3017e51e817855.js +1 -0
  154. package/.next/{static/chunks/7e35f4cf2e266022.js → standalone/.next/static/chunks/cb104c3cb4c52833.js} +1 -1
  155. package/.next/standalone/.next/static/chunks/{cd0fde15dc0dfcca.js → f786bb68e17b12b4.js} +1 -1
  156. package/.next/standalone/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
  157. package/.next/standalone/node_modules/.prisma/client/edge.js +4 -3
  158. package/.next/standalone/node_modules/.prisma/client/index-browser.js +1 -0
  159. package/.next/standalone/node_modules/.prisma/client/index.js +4 -3
  160. package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
  161. package/.next/standalone/node_modules/.prisma/client/schema.prisma +14 -13
  162. package/.next/standalone/node_modules/.prisma/client/wasm.js +1 -0
  163. package/.next/standalone/package.json +1 -1
  164. package/.next/standalone/prisma/schema.prisma +4 -3
  165. package/.next/standalone/scripts/opencode_plugin.ts +135 -45
  166. package/.next/static/chunks/{9445b2873a413c58.js → 015467355d3866a3.js} +1 -1
  167. package/.next/static/chunks/09f192c9b0609ad8.js +1 -0
  168. package/.next/static/chunks/1945a5514fbc393c.css +1 -0
  169. package/.next/static/chunks/{07c9f28a269c701a.js → 361e4cf1e9a71ccb.js} +1 -1
  170. package/.next/{standalone/.next/static/chunks/5432ce4a494bc74d.js → static/chunks/60bc50374fd32f20.js} +3 -3
  171. package/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
  172. package/.next/static/chunks/961f7fa606dd26a8.js +1 -0
  173. package/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
  174. package/.next/static/chunks/c513373e5cfedd5b.js +2 -0
  175. package/.next/static/chunks/ca3017e51e817855.js +1 -0
  176. package/.next/{standalone/.next/static/chunks/7e35f4cf2e266022.js → static/chunks/cb104c3cb4c52833.js} +1 -1
  177. package/.next/static/chunks/{cd0fde15dc0dfcca.js → f786bb68e17b12b4.js} +1 -1
  178. package/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
  179. package/package.json +1 -1
  180. package/prisma/schema.prisma +4 -3
  181. package/scripts/opencode_plugin.ts +135 -45
  182. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +0 -3
  183. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +0 -3
  184. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +0 -3
  185. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +0 -3
  186. package/.next/standalone/.next/server/chunks/_41a98bd8._.js +0 -3
  187. package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +0 -3
  188. package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +0 -1
  189. package/.next/standalone/.next/static/chunks/4ee8dc41c9f15b7b.js +0 -1
  190. package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +0 -1
  191. package/.next/standalone/.next/static/chunks/94dfb15df65ef720.js +0 -2
  192. package/.next/standalone/.next/static/chunks/9d1c5c3494fa53de.js +0 -109
  193. package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +0 -1
  194. package/.next/standalone/.next/static/chunks/dc59a07a8f327b40.js +0 -1
  195. package/.next/static/chunks/1e782a49beaf489c.js +0 -1
  196. package/.next/static/chunks/4ee8dc41c9f15b7b.js +0 -1
  197. package/.next/static/chunks/67bd1a5de2195779.js +0 -1
  198. package/.next/static/chunks/94dfb15df65ef720.js +0 -2
  199. package/.next/static/chunks/9d1c5c3494fa53de.js +0 -109
  200. package/.next/static/chunks/c6bd2818656b1f20.css +0 -1
  201. package/.next/static/chunks/dc59a07a8f327b40.js +0 -1
  202. /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
  203. /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
  204. /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
  205. /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
  206. /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
  207. /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
@@ -1,7 +1,64 @@
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=[],s=e=>{if(0===e.length)return;let n=-1;for(let t=e.length-1;t>=0;t--)if("assistant"===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)t&&("user"===(t.role||"unknown")&&n.length>0&&(s(n),n=[]),n.push(t));return s(n),t}function n(e){let t=new Set,n=[],s=/^[a-zA-Z0-9_\-\.]+$/,i=e=>{if(e)for(let i of e.tool_calls||e.toolCalls||[]){let e=(i?.function?.name??i?.name??"").toLowerCase(),l=i?.function?.arguments??i?.arguments??"";try{let i="string"==typeof l?JSON.parse(l):l;if("skill"===e||"load_skill"===e){let e=i?.name??i?.skill_name??i?.skillName??i?.skill;if(null!=e&&String(e).trim()){let l=String(e).trim().replace(/^['"]+|['"]+$/g,"");if(s.test(l)&&!t.has(l)){t.add(l);let e=i?.version!=null?Number(i.version):null;n.push({name:l,version:null===e||isNaN(e)?null:e})}}continue}if("task"===e){let e=i?.load_skills??i?.loadSkills??i?.skills??[];if(Array.isArray(e))for(let i of e){let e="string"==typeof i?i:i?.name??i?.skill??i?.skill_name??i?.skillName;if(null==e||!String(e).trim())continue;let l=String(e).trim().replace(/^['"]+|['"]+$/g,"");if(!s.test(l)||t.has(l))continue;t.add(l);let r="object"==typeof i?i?.version:null,o=null!=r?Number(r):null;n.push({name:l,version:null===o||isNaN(o)?null:o})}}}catch{}}};for(let t of e)for(let e of(i(t.responseMessage),t.requestMessages||[]))"assistant"===e.role&&i(e);return n}function s(e){let t=new Set,n=[],s=e=>{if(e&&Array.isArray(e))for(let s of e){if(s?.type!=="tool_use")continue;let e=(s?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let i=s.input,l=i?.skill??i?.skill_name??i?.skillName??i?.name;if(null==l||!String(l).trim())continue;let r=String(l).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(r)&&!t.has(r)){t.add(r);let e=i?.version!=null?Number(i.version):null;n.push({name:r,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&s(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&s(e.content);return n}function i(e){let t=new Set,n=[],s=e=>{if(e&&Array.isArray(e))for(let s of e){if(s?.type!=="toolCall")continue;let e=(s?.name||"").toLowerCase();if("skill"!==e&&"load_skill"!==e)continue;let i=s?.arguments,l=i?.skill??i?.skill_name??i?.skillName??i?.name;if(null==l||!String(l).trim())continue;let r=String(l).trim().replace(/^['"]+|['"]+$/g,"");if(/^[a-zA-Z0-9_\-\.]+$/.test(r)&&!t.has(r)){t.add(r);let e=i?.version!=null?Number(i.version):null;n.push({name:r,version:null===e||isNaN(e)?null:e})}}};for(let t of e)if(t.responseMessage?.content&&s(t.responseMessage.content),t.requestMessages)for(let e of t.requestMessages)"assistant"===e.role&&e.content&&s(e.content);return n}e.s(["extractSkillsWithVersionsFromClaudeSession",()=>s,"extractSkillsWithVersionsFromOpenClawSession",()=>i,"extractSkillsWithVersionsFromOpencodeSession",()=>n,"normalizeInteractions",()=>t])},62414,e=>{"use strict";function t(e,t,n,s,i){let l=i?`Reference Skill Definition (Using this skill as the context for evaluation):
2
- ${i}
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}
3
37
 
4
- `:"";return`
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`
5
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".
6
63
 
7
64
  ${l}User Query: ${e}
@@ -11,8 +68,8 @@ Evaluation Criteria (Score strictly based on these weighted items):
11
68
  1. Root Causes (Must identify these issues):
12
69
  ${n.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
13
70
 
14
- 2. Key Actions (Must perform these actions):
15
- ${s.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
71
+ 2. Key Actions:
72
+ ${i.map(e=>a(e)).join("\n")||" (None)"}
16
73
 
17
74
  Evaluation Steps:
18
75
  1. For each item listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0).
@@ -23,6 +80,11 @@ Evaluation Steps:
23
80
  2. Provide a brief explanation (in Chinese) for your evaluation of each item.
24
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.
25
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
+
26
88
  Respond ONLY with a JSON object in the following format:
27
89
  {
28
90
  "evaluations": [
@@ -72,7 +134,7 @@ Respond ONLY with a JSON object in the following format:
72
134
  "reasoning": "使用中文详细解释判断依据,需要:1) 引用 Skill 定义中的相关内容 2) 说明 Agent 执行过程中的表现 3) 解释为什么是/不是 Skill 问题",
73
135
  "improvement_suggestion": "如果是 Skill 问题,给出具体的改进建议,说明应该在 Skill 中添加或修改什么内容;否则留空或不填"
74
136
  }
75
- `;function n(e,n,s,i,l){return`${t}
137
+ `;function n(e,n,i,s,o){return`${t}
76
138
 
77
139
  ---
78
140
 
@@ -84,15 +146,15 @@ ${e}
84
146
  \`\`\`
85
147
 
86
148
  ### [用户问题]
87
- ${s}
149
+ ${i}
88
150
 
89
151
  ### [Agent 执行过程 - 完整交互历史]
90
152
  \`\`\`
91
- ${l}
153
+ ${o}
92
154
  \`\`\`
93
155
 
94
156
  ### [Agent 最终回答]
95
- ${i}
157
+ ${s}
96
158
 
97
159
  ### [待分析的评分项]
98
160
  - **ID**: ${n.id}
@@ -164,12 +226,12 @@ ${t}
164
226
  ${e}
165
227
 
166
228
  **请提取最终结果:**
167
- `}e.s(["EXTRACTION_PROMPT",0,t,"generateExtractionPrompt",()=>n])},85874,e=>e.a(async(t,n)=>{try{var s=e.i(22734);e.i(89228);var i=e.i(88045),l=e.i(14747),r=e.i(74008),o=e.i(22965),a=e.i(50374),c=t([o]);[o]=c.then?(await c)():c;let k=l.default.join(process.cwd(),"data","model_debug.jsonl");function u(e,t,n){try{let i=l.default.dirname(k);s.default.existsSync(i)||s.default.mkdirSync(i,{recursive:!0});let r={timestamp:new Date().toISOString(),stage:e,input:t,output:n};s.default.appendFileSync(k,JSON.stringify(r)+"\n")}catch(e){console.error("Log error",e)}}async function f(e){let t=await (0,o.getActiveConfig)(e);if(!t)return{client:null,model:null};let n=t.apiKey||"no-api-key-required",s=t.baseUrl||"https://api.deepseek.com",{customFetch:l}=(0,r.getProxyConfig)();return{client:new i.OpenAI({apiKey:n,baseURL:s,fetch:l}),model:t.model||"deepseek-chat"}}async function g(t,n,s,i){let{client:l,model:r}=await f(i);if(!l||!l.apiKey)return console.warn("LLM Evaluation disabled or missing config. Skipping."),{is_correct:!1,score:0,reason:"请在首页左上角的设置中配置 LLM"};try{let i=n.root_causes||[],o=n.key_actions||[],a=i.map((e,t)=>({id:`RC-${t}`,...e})),c=o.map((e,t)=>({id:`KA-${t}`,...e})),{generateJudgePrompt:f}=e.r(62414),g=f(t,s,a,c,n.skill_definition),m=await l.chat.completions.create({messages:[{role:"user",content:g}],model:r});console.log(`[Judge API Debug] Model: ${r}. Received response choices:`,m?.choices?.length);let d=m.choices?.[0]?.message?.content;if(u("result_evaluation",{prompt:g},{raw_output:d}),!d)throw console.error("\n[Judge API Error 🚨] LLM content is empty or undefined!"),console.error(">>> Full LLM Response:"),console.error(JSON.stringify(m,null,2)),console.error("<<<\n"),Error("No content from evaluation model");let h=d.trim(),p=h.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(p)h=p[1];else{let e=h.indexOf("{"),t=h.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(h=h.substring(e,t+1))}let y=JSON.parse(h).evaluations||[],k=0,S=0,A=[];a.forEach(e=>{let t=y.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,s=t?.explanation||"未找到评分结果";k+=n*e.weight,S+=e.weight,A.push(`1. **Root Cause** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${s} (Weight: ${e.weight})`)}),c.forEach(e=>{let t=y.find(t=>t.id===e.id),n=t?Math.max(0,Math.min(1,Number(t.match_score))):0,s=t?.explanation||"未找到评分结果";k+=n*e.weight,S+=e.weight,A.push(`2. **Key Action** [${e.content.replace(/\n/g," ")}]: ${(100*n).toFixed(0)}% match. ${s} (Weight: ${e.weight})`)});let $=0;$=S>0?k/S:0;let _=A.map(e=>{let t=e.match(/(\d+)% match/),n=e.match(/\(Weight: ([\d\.]+)\)/);if(t&&n){let e=(parseInt(t[1])/100).toFixed(1),s=parseFloat(n[1]).toFixed(1);return`${e}*${s}`}return null}).filter(e=>e).join(" + "),w=A.map(e=>{let t=e.match(/\(Weight: ([\d\.]+)\)/);return t?parseFloat(t[1]).toFixed(1):null}).filter(e=>e).join(" + "),N=`**Calculation**: (${_}) / (${w}) = ${k.toFixed(2)} / ${S.toFixed(2)} = ${$.toFixed(2)}`;A.push("",N);let x=A.join("\n");return{is_correct:$>=.8,score:$,reason:x}}catch(e){return console.error("LLM Judgment Error:",e),{is_correct:!1,score:0,reason:"Judgment API failed"}}}async function m(t,n,s,i,l,r){console.log("[ItemAttribution] Starting analysis...");let{client:o,model:a}=await f(r);if(!o||!t||!n)return console.warn(`[ItemAttribution] ✗ Early return: client=${o?"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"),s={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-${s.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 i=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);i&&t.push({id:`KA-${s.ka++}`,type:"key_action",content:i[1].replace(/\.{3}$/,""),match_score:parseInt(i[2])/100,explanation:i[3].trim(),weight:parseFloat(i[4])})}return t}(n);console.log(`[ItemAttribution] Parsed ${c.length} evaluation items from judgment reason`);let g=c.filter(e=>e.match_score<1);if(console.log(`[ItemAttribution] ${g.length} items need analysis (score < 100%)`),0===g.length)return console.log(`[ItemAttribution] ✗ No imperfect items found, returning empty array`),[];let{generateSkillIssuePrompt:m}=e.r(33526),d=[];for(let e of g)try{let n=m(t,e,s,i,l),r=await o.chat.completions.create({messages:[{role:"user",content:n}],model:a}),c=r.choices?.[0]?.message?.content;if(!c){console.error(`
168
- [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(),g=f.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(g)f=g[1];else{let e=f.indexOf("{"),t=f.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&(f=f.substring(e,t+1))}let h=JSON.parse(f);!0===h.is_skill_issue?(d.push({...e,is_skill_issue:!0,reasoning:h.reasoning??"",improvement_suggestion:h.improvement_suggestion}),console.log(`[SkillAnalysis] ${e.id}: IS Skill Issue - ${h.reasoning?.substring(0,50)}...`)):console.log(`[SkillAnalysis] ${e.id}: NOT Skill Issue - ${h.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 d}async function d(t,n,s,i,l,r,o,a){let c=p(t);if(!c||0===c.length)return{failures:[]};try{let{client:t,model:g}=await f(a);if(!t||!t.apiKey)return console.warn("LLM Analysis disabled. Skipping."),{failures:[],skill_issues:[]};let d="",h=c[c.length-1];(h.requestMessages||[]).forEach(e=>{let t="";"string"==typeof e.content?t=e.content:Array.isArray(e.content)&&(t=JSON.stringify(e.content)),d+=`[${(e.role||"UNKNOWN").toUpperCase()}]: ${t}
169
- `});let p=h.responseMessage;if(p){let e="";"string"==typeof p.content?e=p.content:Array.isArray(p.content)&&(e=JSON.stringify(p.content)),d+=`[ASSISTANT]: ${e}
170
- `}else h.debug_raw_stream&&(d+=`[SYSTEM/TOOL OUTPUTS]: (Check raw logs for full details)
171
- `);let{generateFailureAnalysisPrompt:y}=e.r(44087),k=y(d),S=await t.chat.completions.create({messages:[{role:"user",content:k}],model:g}),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:d.length},{raw_output:A});let $=A.trim(),_=$.match(/```(?:json)?\\s*([\\s\\S]*?)\\s*```/i);if(_)$=_[1];else{let e=$.indexOf("{"),t=$.lastIndexOf("}");-1!==e&&-1!==t&&t>=e&&($=$.substring(e,t+1))}let w=JSON.parse($).failures||[],N=[];if(console.log(`[SkillAnalysis] Checking: skillName=${n||"none"}, skillDef=${s?"present":"absent"}, failuresCount=${w.length}, answerScore=${i}`),n&&s){console.log(`[SkillAnalysis] ✓ Skill name and definition found`);let e=o||"(见交互历史)",t=r||"(未知)";console.log(`[SkillAnalysis] Conditions check: answerScore=${i}, judgmentReason=${l?"present":"absent"}, history=${d?"present":"absent"}`),void 0!==i&&i<1&&l&&d?(console.log(`[SkillAnalysis] ✓ All conditions met. Score is imperfect (${i}). Analyzing which items are Skill issues...`),console.log(`[SkillAnalysis] Using: query=${t.substring(0,50)}..., answer=${e.substring(0,50)}..., history_len=${d.length}`),N=await m(s,l,t,e,d,a),console.log(`[SkillAnalysis] Analysis complete: ${N.length} items identified as Skill issues`)):void 0!==i&&i>=1?console.log(`[SkillAnalysis] ✗ Skipped: Perfect score (${i}). No Skill analysis needed.`):console.log(`[SkillAnalysis] ✗ Skipped: Conditions not met - answerScore=${i}, judgmentReason=${l?"present":"absent"}, history=${d?"present":"absent"}`)}else console.warn(`[SkillAnalysis] ✗ Skipped: Missing skillName (${n||"none"}) or skillDef (${s?"present":"absent"})`);return{failures:w,skill_issues:N.length>0?N:void 0}}catch(e){return console.error("Failure Analysis Error:",e),{failures:[]}}}function h(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 p(e){return(0,a.normalizeInteractions)(e)}async function y(t,n){let s=p(t);if(!s||0===s.length)return{query:"",skill:"",final_result:""};let i="",l="",r="";for(let e of s){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&&s.length>2)continue;if(i||(i=t),i)break}}}for(let e=s.length-1;e>=0;e--){let t=s[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,i="";if(n&&n.content&&"string"==typeof n.content)i=n.content;else if(n&&Array.isArray(n.content)){let e=n.content.find(e=>"text"===e.type);e&&(i=e.text)}if((!i||""===i.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&&(i=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(!h(t)&&(r.unshift(t),t.startsWith("#")||t.startsWith("##")||t.startsWith("###")))break}else break}else break}if(i&&i.trim()){let e=i.trim();!h(e)&&(r.push(e),e.startsWith("#")||e.startsWith("##")||e.startsWith("###"))}if(r.length>0){l=r.join("\n\n");break}}let o=new Set,a="";for(let e of s){(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,s=n?.name??n?.skill_name??n?.skillName??n?.skill;s&&o.add(s)}catch(e){}else o.add(t)}),t.function_call&&t.function_call.name&&o.add(t.function_call.name))}let c=a.match(/(?:Loading skill|Load skill)[:\s]+([a-zA-Z0-9_\-\.]+)/i);c&&c[1]&&o.add(c[1].trim());let g=a.match(/Skill\s+([a-zA-Z0-9_\-\.]+)\s+loaded/i);g&&g[1]&&o.add(g[1].trim()),o.size>0&&(r=Array.from(o).join(", ")),console.log(`[Rule-Based Analysis] Query: ${i.substring(0,20)}..., Skill: ${r}, Result Length: ${l.length}`),u("extraction",{messages_summary:`Total ${s.length} interactions`,notes:"Scanned full history"},{query:i,skill:r,final_result:l});let m="";try{let{client:t,model:i}=await f(n);if(t&&t.apiKey){let n="";s.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}
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}
172
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}
173
- `}});let{generateExtractionPrompt:l}=e.r(18868),r=l(n),o=(await t.chat.completions.create({messages:[{role:"user",content:r}],model:i,temperature:.1})).choices[0].message.content;o&&(m=o.trim(),u("result_extraction_llm",{history_length:n.length},{extracted:m}))}}catch(e){console.error("LLM Extraction Failed",e)}return m&&m.length>20?(console.log(`[Judge] LLM extraction preferred (Length: ${m.length} vs Rule: ${l.length})`),l=m):l&&console.log(`[Judge] Rule-Based extraction used (Length: ${l.length})`),{query:i,skill:r,final_result:l}}e.s(["analyzeFailures",()=>d,"analyzeSession",()=>y,"judgeAnswer",()=>g,"normalizeInteractions",()=>p]),n()}catch(e){n(e)}},!1)];
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)];
174
236
 
175
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