@witty-ai/skill-insight 0.4.0-beta → 0.6.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 (347) hide show
  1. package/.env.example +55 -5
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-path-routes-manifest.json +5 -0
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/routes-manifest.json +30 -0
  7. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  8. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  19. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/api/auth/organization/route/app-paths-manifest.json +3 -0
  25. package/.next/standalone/.next/server/app/api/auth/organization/route/build-manifest.json +11 -0
  26. package/.next/standalone/.next/server/app/api/auth/organization/route/server-reference-manifest.json +4 -0
  27. package/.next/standalone/.next/server/app/api/auth/organization/route.js +7 -0
  28. package/.next/standalone/.next/server/app/api/auth/organization/route.js.map +5 -0
  29. package/.next/standalone/.next/server/app/api/auth/organization/route.js.nft.json +1 -0
  30. package/.next/standalone/.next/server/app/api/auth/organization/route_client-reference-manifest.js +2 -0
  31. package/.next/standalone/.next/server/app/api/config/create/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/config/route.js +4 -4
  34. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/data/route.js +3 -3
  36. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js +1 -1
  38. package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +3 -3
  40. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +2 -2
  42. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
  44. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +5 -5
  46. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/rejudge/route.js +3 -3
  48. package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/session/route.js +3 -3
  50. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
  52. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/app-paths-manifest.json +3 -0
  54. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/build-manifest.json +11 -0
  55. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/server-reference-manifest.json +4 -0
  56. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js +6 -0
  57. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.map +5 -0
  58. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.nft.json +1 -0
  59. package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route_client-reference-manifest.js +2 -0
  60. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/app-paths-manifest.json +3 -0
  61. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/build-manifest.json +11 -0
  62. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/server-reference-manifest.json +4 -0
  63. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js +6 -0
  64. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.map +5 -0
  65. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.nft.json +1 -0
  66. package/.next/standalone/.next/server/app/api/setup/opencode-tui/route_client-reference-manifest.js +2 -0
  67. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js +1 -1
  69. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js +3 -2
  71. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/skills/logs/route.js +2 -2
  74. package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/skills/route.js +3 -2
  76. package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/app-paths-manifest.json +3 -0
  78. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/build-manifest.json +11 -0
  79. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/server-reference-manifest.json +4 -0
  80. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js +8 -0
  81. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.map +5 -0
  82. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -0
  83. package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route_client-reference-manifest.js +2 -0
  84. package/.next/standalone/.next/server/app/api/task-stats/route/app-paths-manifest.json +3 -0
  85. package/.next/standalone/.next/server/app/api/task-stats/route/build-manifest.json +11 -0
  86. package/.next/standalone/.next/server/app/api/task-stats/route/server-reference-manifest.json +4 -0
  87. package/.next/standalone/.next/server/app/api/task-stats/route.js +11 -0
  88. package/.next/standalone/.next/server/app/api/task-stats/route.js.map +5 -0
  89. package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -0
  90. package/.next/standalone/.next/server/app/api/task-stats/route_client-reference-manifest.js +2 -0
  91. package/.next/standalone/.next/server/app/api/upload/route.js +2 -2
  92. package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +2 -2
  94. package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/details.html +1 -1
  97. package/.next/standalone/.next/server/app/details.rsc +4 -4
  98. package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +4 -4
  99. package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
  100. package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
  101. package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
  102. package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
  103. package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
  104. package/.next/standalone/.next/server/app/index.html +1 -1
  105. package/.next/standalone/.next/server/app/index.rsc +4 -4
  106. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  107. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  108. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  109. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  110. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  111. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/login.html +1 -1
  114. package/.next/standalone/.next/server/app/login.rsc +4 -4
  115. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +4 -4
  116. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  117. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
  118. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  119. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  120. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  121. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  122. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/skills.html +1 -1
  126. package/.next/standalone/.next/server/app/skills.rsc +4 -4
  127. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +4 -4
  128. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  129. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
  130. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  131. package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
  132. package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  133. package/.next/standalone/.next/server/app-paths-manifest.json +5 -0
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +3 -0
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa5c8858._.js +2 -2
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c20da96a._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__f9e66e02._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/_3e8b4d8c._.js +1 -1
  157. package/.next/standalone/.next/server/chunks/_41a98bd8._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/_4c806e26._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/_ddffef3e._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_auth_organization_route_actions_f58710b7.js +3 -0
  162. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_setup_opencode-tui_route_actions_fc8ae29f.js +3 -0
  163. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_skills_sync-enterprise_route_actions_0ca45899.js +3 -0
  164. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_task-stats_route_actions_983505cd.js +3 -0
  165. package/.next/standalone/.next/server/chunks/ce889_server_app_api_setup_opencode-commands_si-optimizer_route_actions_fcde30ef.js +3 -0
  166. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +47 -43
  167. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -1
  168. package/.next/standalone/.next/server/chunks/src_98433cb8._.js +175 -0
  169. package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__5d576168._.js → [root-of-the-server]__40353d98._.js} +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89851212._.js → [root-of-the-server]__480fcd92._.js} +1 -1
  172. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__28978655._.js → [root-of-the-server]__48f8fbcb._.js} +1 -1
  173. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a5ef0b61._.js → [root-of-the-server]__49921b2a._.js} +1 -1
  174. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__317833f9._.js → [root-of-the-server]__593be3d6._.js} +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ca101543._.js → [root-of-the-server]__5e9ff641._.js} +1 -1
  176. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__90641614._.js → [root-of-the-server]__66cc6ff2._.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__cda1e286._.js → [root-of-the-server]__9889bdc8._.js} +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__42ba97b6._.js → [root-of-the-server]__9905ca7a._.js} +2 -2
  179. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ab7cc4a._.js +3 -0
  180. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7bb97139._.js → [root-of-the-server]__9d6b7d48._.js} +1 -1
  181. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__6b8b9bb9._.js → [root-of-the-server]__b8edc8c6._.js} +1 -1
  182. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b9972e88._.js → [root-of-the-server]__d691ecb0._.js} +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__52851239._.js → [root-of-the-server]__e5ddfd15._.js} +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9630dedf._.js → [root-of-the-server]__f72f330e._.js} +1 -1
  185. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__99ab66d7._.js → [root-of-the-server]__f843e085._.js} +1 -1
  186. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d424fa04._.js → [root-of-the-server]__fd69d276._.js} +2 -2
  187. package/.next/standalone/.next/server/chunks/ssr/{_7688d7cd._.js → _049876f0._.js} +2 -2
  188. package/.next/standalone/.next/server/chunks/ssr/{_72a74a0c._.js → _09546b95._.js} +2 -2
  189. package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/{node_modules_cf1f3d2c._.js → _b121f1ae._.js} +2 -2
  191. package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +2 -2
  192. package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -1
  193. package/.next/standalone/.next/server/chunks/ssr/{node_modules_f2653232._.js → node_modules_039c6a11._.js} +1 -1
  194. package/.next/standalone/.next/server/chunks/ssr/{node_modules_da87f0e3._.js → node_modules_0d3530cd._.js} +2 -2
  195. package/.next/standalone/.next/server/chunks/ssr/{node_modules_afb1ecef._.js → node_modules_0e883565._.js} +1 -1
  196. package/.next/standalone/.next/server/chunks/ssr/{node_modules_8d9e56b7._.js → node_modules_11dbf165._.js} +2 -2
  197. package/.next/standalone/.next/server/chunks/ssr/{node_modules_76d6c533._.js → node_modules_2041c122._.js} +2 -2
  198. package/.next/standalone/.next/server/chunks/ssr/{node_modules_b007145b._.js → node_modules_235267bb._.js} +1 -1
  199. package/.next/standalone/.next/server/chunks/ssr/{node_modules_11d81adf._.js → node_modules_25dfb0ba._.js} +2 -2
  200. package/.next/standalone/.next/server/chunks/ssr/{node_modules_4ea9b27b._.js → node_modules_2b12c669._.js} +2 -2
  201. package/.next/standalone/.next/server/chunks/ssr/{node_modules_cc19e85c._.js → node_modules_32996880._.js} +2 -2
  202. package/.next/standalone/.next/server/chunks/ssr/{node_modules_62621b34._.js → node_modules_35885fe9._.js} +2 -2
  203. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed4150ad._.js → node_modules_38a95353._.js} +2 -2
  204. package/.next/standalone/.next/server/chunks/ssr/{node_modules_f596a14c._.js → node_modules_3a317c51._.js} +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/{node_modules_fddab329._.js → node_modules_44966ab2._.js} +1 -1
  206. package/.next/standalone/.next/server/chunks/ssr/{node_modules_e272ac31._.js → node_modules_53af751a._.js} +2 -2
  207. package/.next/standalone/.next/server/chunks/ssr/{node_modules_abf4f826._.js → node_modules_5f539891._.js} +1 -1
  208. package/.next/standalone/.next/server/chunks/ssr/{node_modules_86b6ffa4._.js → node_modules_60402210._.js} +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3769cd60._.js → node_modules_60eccfb6._.js} +1 -1
  210. package/.next/standalone/.next/server/chunks/ssr/{node_modules_fdf808cf._.js → node_modules_632c098c._.js} +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/{node_modules_442994dc._.js → node_modules_6c42f75c._.js} +1 -1
  212. package/.next/standalone/.next/server/chunks/ssr/{node_modules_5b6dbbc3._.js → node_modules_6fbe276d._.js} +2 -2
  213. package/.next/standalone/.next/server/chunks/ssr/{node_modules_6716e25d._.js → node_modules_740e9d59._.js} +2 -2
  214. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed1f1845._.js → node_modules_7a3d551c._.js} +1 -1
  215. package/.next/standalone/.next/server/chunks/ssr/{node_modules_4f41f172._.js → node_modules_861cb9cf._.js} +2 -2
  216. package/.next/standalone/.next/server/chunks/ssr/{node_modules_2aaea4ea._.js → node_modules_8a892761._.js} +1 -1
  217. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3964c298._.js → node_modules_a5a4946e._.js} +1 -1
  218. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3d9afa91._.js → node_modules_a712c937._.js} +1 -1
  219. package/.next/standalone/.next/server/chunks/ssr/{node_modules_330b9e3c._.js → node_modules_a8c276dd._.js} +2 -2
  220. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ad69a9e4._.js → node_modules_acc9d529._.js} +1 -1
  221. package/.next/standalone/.next/server/chunks/ssr/{node_modules_8301968d._.js → node_modules_ad07ab39._.js} +1 -1
  222. package/.next/standalone/.next/server/chunks/ssr/{node_modules_1d88c7cc._.js → node_modules_b38efa22._.js} +1 -1
  223. package/.next/standalone/.next/server/chunks/ssr/{node_modules_e20e8c2a._.js → node_modules_b4ef036d._.js} +2 -2
  224. package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e206c58._.js → node_modules_b6bad701._.js} +2 -2
  225. package/.next/standalone/.next/server/chunks/ssr/{node_modules_c90fa812._.js → node_modules_b9810024._.js} +1 -1
  226. package/.next/standalone/.next/server/chunks/ssr/{node_modules_db8af6e3._.js → node_modules_b9ad808d._.js} +1 -1
  227. package/.next/standalone/.next/server/chunks/ssr/{node_modules_7287189a._.js → node_modules_bc287d9f._.js} +1 -1
  228. package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e38bc5c._.js → node_modules_c6469d93._.js} +1 -1
  229. package/.next/standalone/.next/server/chunks/ssr/{node_modules_c657890f._.js → node_modules_c704e802._.js} +1 -1
  230. package/.next/standalone/.next/server/chunks/ssr/{node_modules_b8803ba6._.js → node_modules_cda46cfc._.js} +2 -2
  231. package/.next/standalone/.next/server/chunks/ssr/{node_modules_aa6da06c._.js → node_modules_cf171d0c._.js} +1 -1
  232. package/.next/standalone/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_3582f3d0.js +1 -1
  233. package/.next/standalone/.next/server/chunks/ssr/{node_modules_2d9e03d1._.js → node_modules_e8927fc2._.js} +1 -1
  234. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_a1341fea._.js +1 -1
  235. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js +1 -1
  236. package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
  237. package/.next/standalone/.next/server/pages/404.html +1 -1
  238. package/.next/standalone/.next/server/pages/500.html +2 -2
  239. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  241. package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +1 -0
  242. package/.next/standalone/.next/static/chunks/{01eddf501c574a44.js → 4ee8dc41c9f15b7b.js} +1 -1
  243. package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +1 -0
  244. package/.next/standalone/.next/static/chunks/{737b8cff3c6a4e30.js → 9445b2873a413c58.js} +1 -1
  245. package/.next/standalone/.next/static/chunks/94dfb15df65ef720.js +2 -0
  246. package/.next/standalone/.next/static/chunks/9d1c5c3494fa53de.js +109 -0
  247. package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +1 -0
  248. package/.next/standalone/.next/static/chunks/{e09d9ee16fe90255.js → cd0fde15dc0dfcca.js} +1 -1
  249. package/.next/standalone/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
  250. package/.next/standalone/.next/static/chunks/{ff6357067630b168.js → e13d208072a48316.js} +1 -1
  251. package/.next/standalone/node_modules/.prisma/client/edge.js +6 -3
  252. package/.next/standalone/node_modules/.prisma/client/index-browser.js +3 -0
  253. package/.next/standalone/node_modules/.prisma/client/index.js +6 -3
  254. package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
  255. package/.next/standalone/node_modules/.prisma/client/schema.prisma +12 -9
  256. package/.next/standalone/node_modules/.prisma/client/wasm.js +3 -0
  257. package/.next/standalone/node_modules/adm-zip/util/constants.js +142 -0
  258. package/.next/standalone/node_modules/adm-zip/util/decoder.js +5 -0
  259. package/.next/standalone/node_modules/adm-zip/util/errors.js +63 -0
  260. package/.next/standalone/node_modules/adm-zip/util/fattr.js +76 -0
  261. package/.next/standalone/node_modules/adm-zip/util/index.js +5 -0
  262. package/.next/standalone/node_modules/adm-zip/util/utils.js +339 -0
  263. package/.next/standalone/package.json +6 -2
  264. package/.next/standalone/prisma/schema.prisma +3 -0
  265. package/.next/standalone/scripts/opencode_plugin.ts +279 -40
  266. package/.next/standalone/scripts/opencode_tui_plugin.tsx +308 -0
  267. package/.next/standalone/scripts/si-optimizer.md +5 -0
  268. package/.next/static/chunks/1e782a49beaf489c.js +1 -0
  269. package/.next/static/chunks/{01eddf501c574a44.js → 4ee8dc41c9f15b7b.js} +1 -1
  270. package/.next/static/chunks/67bd1a5de2195779.js +1 -0
  271. package/.next/static/chunks/{737b8cff3c6a4e30.js → 9445b2873a413c58.js} +1 -1
  272. package/.next/static/chunks/94dfb15df65ef720.js +2 -0
  273. package/.next/static/chunks/9d1c5c3494fa53de.js +109 -0
  274. package/.next/static/chunks/c6bd2818656b1f20.css +1 -0
  275. package/.next/static/chunks/{e09d9ee16fe90255.js → cd0fde15dc0dfcca.js} +1 -1
  276. package/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
  277. package/.next/static/chunks/{ff6357067630b168.js → e13d208072a48316.js} +1 -1
  278. package/package.json +6 -2
  279. package/prisma/schema.prisma +3 -0
  280. package/scripts/activate_telemetry.sh +44 -1
  281. package/scripts/opencode_plugin.ts +279 -40
  282. package/scripts/opencode_tui_plugin.tsx +308 -0
  283. package/scripts/si-optimizer.md +5 -0
  284. package/scripts/utils.js +0 -1
  285. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fceba52._.js +0 -3
  286. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13132848._.js +0 -3
  287. package/.next/standalone/.next/server/chunks/[root-of-the-server]__30769f6e._.js +0 -3
  288. package/.next/standalone/.next/server/chunks/[root-of-the-server]__426bc4ab._.js +0 -3
  289. package/.next/standalone/.next/server/chunks/[root-of-the-server]__610d08bc._.js +0 -3
  290. package/.next/standalone/.next/server/chunks/[root-of-the-server]__75e3674c._.js +0 -3
  291. package/.next/standalone/.next/server/chunks/[root-of-the-server]__761462f8._.js +0 -3
  292. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9aa700a4._.js +0 -3
  293. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b7ad2649._.js +0 -3
  294. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c00180dd._.js +0 -3
  295. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +0 -3
  296. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ed8f9b78._.js +0 -3
  297. package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +0 -3
  298. package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +0 -175
  299. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__082c32a2._.js +0 -3
  300. package/.next/standalone/.next/static/chunks/222a937a6c859036.js +0 -1
  301. package/.next/standalone/.next/static/chunks/2a3dd49367e2c198.js +0 -1
  302. package/.next/standalone/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
  303. package/.next/standalone/.next/static/chunks/428e6cf64b115e9d.css +0 -1
  304. package/.next/standalone/.next/static/chunks/62129f27f303a5ba.js +0 -1
  305. package/.next/standalone/LICENSE +0 -21
  306. package/.next/standalone/bin/cli.js +0 -106
  307. package/.next/standalone/custom-models.example.json +0 -21
  308. package/.next/standalone/eslint.config.mjs +0 -18
  309. package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +0 -126
  310. package/.next/standalone/features/feature-skill-used-jump-link/feature.json +0 -32
  311. package/.next/standalone/features/feature-skill-used-jump-link/issue.md +0 -32
  312. package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +0 -528
  313. package/.next/standalone/next.config.ts +0 -29
  314. package/.next/standalone/scripts/activate_telemetry.sh +0 -159
  315. package/.next/standalone/scripts/create_migration_package.sh +0 -124
  316. package/.next/standalone/scripts/fix_models.js +0 -66
  317. package/.next/standalone/scripts/init_opengauss.py +0 -284
  318. package/.next/standalone/scripts/install.js +0 -273
  319. package/.next/standalone/scripts/logs.js +0 -38
  320. package/.next/standalone/scripts/otel_data/logs.jsonl +0 -12
  321. package/.next/standalone/scripts/otel_data/metrics.jsonl +0 -21
  322. package/.next/standalone/scripts/otel_data/raw_requests.jsonl +0 -8
  323. package/.next/standalone/scripts/otel_data/raw_requests.jsonl.bak +0 -6
  324. package/.next/standalone/scripts/otel_receiver.py +0 -580
  325. package/.next/standalone/scripts/postinstall.js +0 -192
  326. package/.next/standalone/scripts/publish-npm.js +0 -401
  327. package/.next/standalone/scripts/restart.js +0 -26
  328. package/.next/standalone/scripts/restart.sh +0 -138
  329. package/.next/standalone/scripts/restart_dev.sh +0 -132
  330. package/.next/standalone/scripts/start.js +0 -291
  331. package/.next/standalone/scripts/status.js +0 -41
  332. package/.next/standalone/scripts/stop.js +0 -90
  333. package/.next/standalone/scripts/sync_skills.js +0 -216
  334. package/.next/standalone/scripts/utils.js +0 -235
  335. package/.next/standalone/tests/setup_skill_optimizer.sh +0 -118
  336. package/.next/standalone/tsconfig.json +0 -34
  337. package/.next/static/chunks/222a937a6c859036.js +0 -1
  338. package/.next/static/chunks/2a3dd49367e2c198.js +0 -1
  339. package/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
  340. package/.next/static/chunks/428e6cf64b115e9d.css +0 -1
  341. package/.next/static/chunks/62129f27f303a5ba.js +0 -1
  342. /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_buildManifest.js +0 -0
  343. /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_clientMiddlewareManifest.json +0 -0
  344. /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_ssgManifest.js +0 -0
  345. /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_buildManifest.js +0 -0
  346. /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_clientMiddlewareManifest.json +0 -0
  347. /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[26984,e=>{"use strict";var n=e.i(47909),t=e.i(74017),i=e.i(60476),s=e.i(59756),l=e.i(61916),o=e.i(74677),r=e.i(69741),a=e.i(16795),c=e.i(87718),h=e.i(95169),S=e.i(47587),_=e.i(66012),I=e.i(70101),E=e.i(26937),d=e.i(10372),p=e.i(93695);e.i(52474);var L=e.i(220),u=e.i(89171);async function $(e){let n,t,i=e.headers.get("x-forwarded-host")||e.headers.get("host")||"127.0.0.1:3000",s=e.headers.get("x-forwarded-proto")||"https",l=new URL(e.url).pathname.replace(/\/api\/setup\/?$/,""),o=`${s}://${i}${l}`,r=`${s}://${i}${l}`;if("windows"==(n=e.headers.get("user-agent")||"",(t=e.headers.get("x-platform")||"")?"windows"===t.toLowerCase()?"windows":"unix":n.toLowerCase().includes("windows")?"windows":"unix")){let e=["# =============================================================================\n# Skill-insight One-Click Setup (PowerShell)\n# =============================================================================\n",'$SKILL_INSIGHT_HOST = "'+r+'"','$SKILL_INSIGHT_BASE_URL = "'+o+'"','\nWrite-Host "🚀 Fetching Skill-insight telemetry components from $SKILL_INSIGHT_BASE_URL..."\n\n# 1. Setup Directories\n$homeDir = $env:USERPROFILE\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.skill-insight" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.skill-insight\\logs" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.opencode\\plugins" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.opencode\\skills" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.claude\\projects" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.openclaw\\agents" | Out-Null\nNew-Item -ItemType Directory -Force -Path ".opencode\\skills" | Out-Null\nWrite-Host "📂 Created necessary directories"\n\n# 2. Interactive Framework Selection with inquirer\nWrite-Host ""\n\n$SELECTOR_SCRIPT = "$homeDir\\.skill-insight\\framework_selector.mjs"\n$SELECTOR_RESULT = "$homeDir\\.skill-insight\\.selector_result"\n\n# Install inquirer if not already installed\nSet-Location "$homeDir\\.skill-insight"\nif (-not (Test-Path "node_modules\\inquirer")) {\n Write-Host "📦 Installing inquirer for interactive selection..."\n npm install inquirer --save 2>$null\n}\n\n$selectorContent = @\'\nimport inquirer from \'inquirer\';\nimport fs from \'fs\';\n\nconst frameworks = [\n { name: \'OpenCode\', value: \'opencode\' },\n { name: \'Claude Code\', value: \'claude\' },\n { name: \'OpenClaw\', value: \'openclaw\' }\n];\n\nasync function select() {\n console.log(\'\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╔══════════════════════════════════════════════════════════╗\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[1m\\x1b[36m%s\\x1b[0m\', \'║ ✨ Skill-insight ✨ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╚══════════════════════════════════════════════════════════╝\');\n console.log(\'\');\n console.log(\'\\x1b[90m%s\\x1b[0m\', \' 提示: ↑↓ 移动 | 空格 选择 | a 全选 | i 反选 | Enter 确认\');\n console.log(\'\');\n\n const answers = await inquirer.prompt([\n {\n type: \'checkbox\',\n name: \'frameworks\',\n message: \'集成到:\',\n choices: frameworks,\n pageSize: 10,\n loop: false\n }\n ]);\n\n const selected = answers.frameworks;\n \n if (selected.length > 0) {\n console.log(\'\');\n console.log(\'\\x1b[32m%s\\x1b[0m\', \'✅ 将安装以下组件:\');\n selected.forEach(fw => {\n const name = frameworks.find(f => f.value === fw)?.name || fw;\n console.log(\'\\x1b[32m%s\\x1b[0m\', \' • \' + name);\n });\n console.log(\'\');\n } else {\n console.log(\'\');\n console.log(\'\\x1b[33m%s\\x1b[0m\', \'⚠️ 未选择任何组件,将不进行安装。\');\n console.log(\'\');\n }\n\n const resultFile = process.env.SELECTOR_RESULT_FILE || process.env.USERPROFILE + \'\\\\.skill-insight\\\\.selector_result\';\n fs.writeFileSync(resultFile, selected.join(\',\'));\n}\n\nselect().catch(err => {\n console.error(\'Error:\', err);\n process.exit(1);\n});\n\'@\n\nSet-Content -Path $SELECTOR_SCRIPT -Value $selectorContent -Encoding UTF8\n\n# Run the selector interactively\n$env:SELECTOR_RESULT_FILE = $SELECTOR_RESULT\nSet-Location "$homeDir\\.skill-insight"\nnpx -y tsx $SELECTOR_SCRIPT\n\n# Read the selection result from file\nif (Test-Path $SELECTOR_RESULT) {\n $SELECTED_FRAMEWORKS = Get-Content $SELECTOR_RESULT\n Remove-Item $SELECTOR_RESULT -Force\n} else {\n $SELECTED_FRAMEWORKS = ""\n}\n\n# Set installation flags based on selection\n$INSTALL_OPENCODE = $false\n$INSTALL_CLAUDE = $false\n$INSTALL_OPENCLAW = $false\n\nif ($SELECTED_FRAMEWORKS -match "opencode") {\n $INSTALL_OPENCODE = $true\n}\nif ($SELECTED_FRAMEWORKS -match "claude") {\n $INSTALL_CLAUDE = $true\n}\nif ($SELECTED_FRAMEWORKS -match "openclaw") {\n $INSTALL_OPENCLAW = $true\n}\n\n# Exit if nothing selected\nif (-not $INSTALL_OPENCODE -and -not $INSTALL_CLAUDE -and -not $INSTALL_OPENCLAW) {\n Write-Host "⚠️ 未选择任何框架组件,将跳过插件安装。"\n Write-Host " 继续执行配置步骤..."\n Write-Host ""\n}\n\n# 3. Download Components\nif ($INSTALL_OPENCODE) {\n Write-Host "⏬ Downloading OpenCode Plugin..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/opencode" -OutFile "$homeDir\\.opencode\\plugins\\Witty-Skill-Insight.ts"\n \n Write-Host "⏬ Downloading Skill Sync Tool..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/sync_skills.ts" -OutFile "$homeDir\\.skill-insight\\sync_skills.ts"\n}\n\nif ($INSTALL_CLAUDE) {\n Write-Host "⏬ Downloading Claude Code Watcher..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/claude-watcher" -OutFile "$homeDir\\.skill-insight\\claude_watcher_client.ts"\n}\n\nif ($INSTALL_OPENCLAW) {\n Write-Host "⏬ Downloading OpenClaw Watcher..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/openclaw-watcher" -OutFile "$homeDir\\.skill-insight\\openclaw_watcher_client.ts"\n}\n\n# 4. Configure ~/.skill-insight/.env\n$SKILL_INSIGHT_CONFIG_FILE = "$homeDir\\.skill-insight\\.env"\n$EXISTING_KEY = ""\n$EXISTING_HOST = ""\nif (Test-Path $SKILL_INSIGHT_CONFIG_FILE) {\n $content = Get-Content $SKILL_INSIGHT_CONFIG_FILE\n $keyLine = $content | Select-String \'^SKILL_INSIGHT_API_KEY=\' | Select-Object -First 1\n $hostLine = $content | Select-String \'^SKILL_INSIGHT_HOST=\' | Select-Object -First 1\n if ($keyLine) {\n $EXISTING_KEY = $keyLine.Line.Substring(\'SKILL_INSIGHT_API_KEY=\'.Length)\n }\n if ($hostLine) {\n $EXISTING_HOST = $hostLine.Line.Substring(\'SKILL_INSIGHT_HOST=\'.Length)\n }\n}\n\n# -- API Key Logic --\n$FINAL_KEY = $EXISTING_KEY\nif ($EXISTING_KEY) {\n Write-Host "🔑 Found existing API Key."\n $USE_EXISTING = Read-Host "👉 Use existing key? (y/N, Default: y)"\n if ($USE_EXISTING -match \'^[Nn]$\') {\n $FINAL_KEY = Read-Host "👉 Please enter your NEW API Key"\n }\n} else {\n Write-Host "🔑 SKILL_INSIGHT_API_KEY is not set."\n $FINAL_KEY = Read-Host "👉 Please enter your API Key"\n}\n\n# -- Host Logic --\n$FINAL_HOST = $SKILL_INSIGHT_HOST\nif ($EXISTING_HOST -and ($EXISTING_HOST -ne $SKILL_INSIGHT_HOST)) {\n Write-Host "🌐 Current Host in config: $EXISTING_HOST"\n Write-Host "🌐 New Host detected: $SKILL_INSIGHT_HOST"\n $CHANGE_HOST = Read-Host "👉 Change to new Host? (y/N, Default: y)"\n if ($CHANGE_HOST -match \'^[Nn]$\') {\n $FINAL_HOST = $EXISTING_HOST\n }\n} elseif (-not $EXISTING_HOST) {\n $FINAL_HOST = $SKILL_INSIGHT_HOST\n}\n\nif (-not $FINAL_KEY) {\n Write-Host "⚠️ Warning: No API Key provided. Telemetry upload will fail until you set it in $SKILL_INSIGHT_CONFIG_FILE"\n}\n\nWrite-Host "⚙️ Updating configuration..."\nNew-Item -ItemType File -Path $SKILL_INSIGHT_CONFIG_FILE -Force | Out-Null\nCopy-Item $SKILL_INSIGHT_CONFIG_FILE "$SKILL_INSIGHT_CONFIG_FILE.bak"\n$content = Get-Content "$SKILL_INSIGHT_CONFIG_FILE.bak"\n$content | Where-Object { $_ -notmatch \'^SKILL_INSIGHT_HOST=\' -and $_ -notmatch \'^SKILL_INSIGHT_API_KEY=\' } | Set-Content $SKILL_INSIGHT_CONFIG_FILE\nAdd-Content $SKILL_INSIGHT_CONFIG_FILE "SKILL_INSIGHT_HOST=$FINAL_HOST"\nAdd-Content $SKILL_INSIGHT_CONFIG_FILE "SKILL_INSIGHT_API_KEY=$FINAL_KEY"\nRemove-Item "$SKILL_INSIGHT_CONFIG_FILE.bak" -Force\nWrite-Host "✅ Configuration updated at $SKILL_INSIGHT_CONFIG_FILE"\n\n# 5. Sync Opencode Skills\nif ($INSTALL_OPENCODE) {\n Write-Host ""\n Write-Host "🚀 Syncing Opencode Skills..."\n if (Get-Command npx -ErrorAction SilentlyContinue) {\n npx -y tsx "$homeDir\\.skill-insight\\sync_skills.ts" --agent opencode\n } else {\n Write-Host "⚠️ Node.js (npx) not found. Skipping skill sync."\n }\n}\n\n# 6. Install Watcher Dependencies\nif ($INSTALL_CLAUDE -or $INSTALL_OPENCLAW) {\n Write-Host ""\n Write-Host "📦 Installing watcher dependencies..."\n if (Get-Command npm -ErrorAction SilentlyContinue) {\n Set-Location "$homeDir\\.skill-insight"\n if (-not (Test-Path "package.json")) {\n \'{"name": "skill-insight-watcher", "version": "1.0.0", "type": "module", "dependencies": {}}\' | Out-File -FilePath "package.json" -Encoding utf8\n }\n npm install chokidar --save 2>$null\n Write-Host "✅ Dependencies installed"\n } else {\n Write-Host "⚠️ npm not found. Skipping dependency installation."\n }\n}\n\n# 7. Create Watcher Startup/Stop Scripts\n$NEEDS_WATCHER_SCRIPTS = $false\nif ($INSTALL_CLAUDE -or $INSTALL_OPENCLAW) {\n $NEEDS_WATCHER_SCRIPTS = $true\n}\n\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "📝 Creating watcher management scripts..."\n\n if ($INSTALL_CLAUDE) {\n $startScript = @\'\npkill -f "claude_watcher_client.ts" 2>/dev/null\nSet-Location "$env:USERPROFILE\\.skill-insight"\nStart-Process -FilePath "npx" -ArgumentList "-y", "tsx", "$env:USERPROFILE\\.skill-insight\\claude_watcher_client.ts" -RedirectStandardOutput "$env:USERPROFILE\\.skill-insight\\logs\\claude_watcher.log" -RedirectStandardError "$env:USERPROFILE\\.skill-insight\\logs\\claude_watcher_error.log" -NoNewWindow\nWrite-Host "Claude watcher started"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\start_claude_watcher.ps1" -Value $startScript -Encoding UTF8\n\n $stopScript = @\'\nGet-Process | Where-Object { $_.CommandLine -like "*claude_watcher_client.ts*" } | Stop-Process -Force -ErrorAction SilentlyContinue\nRemove-Item "$env:USERPROFILE\\.skill-insight\\claude_watcher.pid" -Force -ErrorAction SilentlyContinue\nWrite-Host "Claude watcher stopped"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\stop_claude_watcher.ps1" -Value $stopScript -Encoding UTF8\n }\n\n if ($INSTALL_OPENCLAW) {\n $startScript = @\'\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\nSet-Location "$env:USERPROFILE\\.skill-insight"\nStart-Process -FilePath "npx" -ArgumentList "-y", "tsx", "$env:USERPROFILE\\.skill-insight\\openclaw_watcher_client.ts" -RedirectStandardOutput "$env:USERPROFILE\\.skill-insight\\logs\\openclaw_watcher.log" -RedirectStandardError "$env:USERPROFILE\\.skill-insight\\logs\\openclaw_watcher_error.log" -NoNewWindow\nWrite-Host "OpenClaw watcher started"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\start_openclaw_watcher.ps1" -Value $startScript -Encoding UTF8\n\n $stopScript = @\'\nGet-Process | Where-Object { $_.CommandLine -like "*openclaw_watcher_client.ts*" } | Stop-Process -Force -ErrorAction SilentlyContinue\nRemove-Item "$env:USERPROFILE\\.skill-insight\\openclaw_watcher.pid" -Force -ErrorAction SilentlyContinue\nWrite-Host "OpenClaw watcher stopped"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\stop_openclaw_watcher.ps1" -Value $stopScript -Encoding UTF8\n }\n\n $combinedStart = \'Write-Host "Starting Skill-Insight watchers..."\'\n if ($INSTALL_CLAUDE) { $combinedStart += [char]10 + "& `"$homeDir\\.skill-insight\\start_claude_watcher.ps1`"" }\n if ($INSTALL_OPENCLAW) { $combinedStart += [char]10 + "& `"$homeDir\\.skill-insight\\start_openclaw_watcher.ps1`"" }\n $combinedStart += [char]10 + \'Write-Host "All watchers started!"\'\n Set-Content -Path "$homeDir\\.skill-insight\\start_watchers.ps1" -Value $combinedStart -Encoding UTF8\n\n $combinedStop = \'Write-Host "Stopping Skill-Insight watchers..."\'\n if ($INSTALL_CLAUDE) { $combinedStop += [char]10 + "& `"$homeDir\\.skill-insight\\stop_claude_watcher.ps1`"" }\n if ($INSTALL_OPENCLAW) { $combinedStop += [char]10 + "& `"$homeDir\\.skill-insight\\stop_openclaw_watcher.ps1`"" }\n $combinedStop += [char]10 + \'Write-Host "All watchers stopped!"\'\n Set-Content -Path "$homeDir\\.skill-insight\\stop_watchers.ps1" -Value $combinedStop -Encoding UTF8\n}\n\n# 8. Start Watchers Now\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "🚀 Starting telemetry watchers..."\n if (Get-Command npx -ErrorAction SilentlyContinue) {\n & "$homeDir\\.skill-insight\\start_watchers.ps1"\n } else {\n Write-Host "⚠️ Node.js (npx) not found. Skipping watcher startup."\n }\n}\n\n# 9. Configure Claude Code Auto-Sync Wrapper\nif ($INSTALL_CLAUDE) {\n Write-Host ""\n Write-Host "🔄 Configuring Claude Code Auto-Sync Wrapper..."\n \n $profileContent = @\'\n\n# Skill Insight Claude Alliance\nfunction skill-insight-claude {\n if (Get-Command npx -ErrorAction SilentlyContinue) {\n npx -y tsx "$env:USERPROFILE\\.skill-insight\\sync_skills.ts" --agent claude 2>$null\n }\n claude $args\n}\nSet-Alias -Name claude -Value skill-insight-claude -Force\n\'@\n\n $profilePath = $PROFILE\n if (-not (Test-Path $profilePath)) {\n $profileDir = Split-Path $profilePath -Parent\n if (-not (Test-Path $profileDir)) {\n New-Item -ItemType Directory -Path $profileDir -Force | Out-Null\n }\n New-Item -ItemType File -Path $profilePath -Force | Out-Null\n }\n \n $currentProfile = Get-Content $profilePath -Raw -ErrorAction SilentlyContinue\n if ($currentProfile -notmatch "skill-insight-claude") {\n Add-Content -Path $profilePath -Value $profileContent\n Write-Host "✅ Installed Claude wrapper to $profilePath"\n }\n}\n\n# 10. Final Summary\nWrite-Host ""\nWrite-Host "🌟 Skill-Insight Telemetry: READY"\nWrite-Host "------------------------------------------------"\nWrite-Host "Installed Components:"\nif ($INSTALL_OPENCODE) { Write-Host " ✅ OpenCode Plugin: ~/.opencode/plugins/Witty-Skill-Insight.ts" }\nif ($INSTALL_CLAUDE) { Write-Host " ✅ Claude Watcher: ~/.skill-insight/claude_watcher_client.ts" }\nif ($INSTALL_OPENCLAW) { Write-Host " ✅ OpenClaw Watcher: ~/.skill-insight/openclaw_watcher_client.ts" }\n\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "Watcher Management:"\n Write-Host " Start all: ~/.skill-insight/start_watchers.ps1"\n Write-Host " Stop all: ~/.skill-insight/stop_watchers.ps1"\n Write-Host " Logs: ~/.skill-insight/logs/"\n}\n\nWrite-Host ""\nWrite-Host "Usage:"\nif ($INSTALL_OPENCODE) { Write-Host " 1. Run: opencode run \'hello\'" }\nif ($INSTALL_CLAUDE) { Write-Host " 2. Run: claude (restart terminal first)" }\nif ($INSTALL_OPENCLAW) { Write-Host " 3. OpenClaw will automatically monitor and upload telemetry" }\nWrite-Host "------------------------------------------------"'].join("\n");return new u.NextResponse(e,{headers:{"Content-Type":"text/plain; charset=utf-8"}})}{let e=["#!/bin/bash\n# =============================================================================\n# Skill-insight One-Click Setup\n# =============================================================================\n",'SKILL_INSIGHT_HOST="'+r+'"','SKILL_INSIGHT_BASE_URL="'+o+'"','\necho "🚀 Fetching Skill-insight telemetry components from $SKILL_INSIGHT_BASE_URL..."\n\n# 1. Setup Directories\nmkdir -p "$HOME/.skill-insight"\nmkdir -p "$HOME/.skill-insight/logs"\nmkdir -p "$HOME/.opencode/plugins"\nmkdir -p "$HOME/.opencode/skills"\nmkdir -p "$HOME/.claude/projects"\nmkdir -p "$HOME/.openclaw/agents"\nmkdir -p ".opencode/skills"\necho "📂 Created necessary directories"\n\n# 2. Interactive Framework Selection with inquirer\necho ""\n\nSELECTOR_SCRIPT="$HOME/.skill-insight/framework_selector.mjs"\nSELECTOR_RESULT="$HOME/.skill-insight/.selector_result"\n\n# Install inquirer if not already installed\ncd "$HOME/.skill-insight"\nif [ ! -d "node_modules/inquirer" ]; then\n echo "📦 Installing inquirer for interactive selection..."\n npm install inquirer --save 2>/dev/null\nfi\n\ncat > "$SELECTOR_SCRIPT" << \'SELECTOR_EOF\'\nimport inquirer from \'inquirer\';\nimport fs from \'fs\';\n\nconst frameworks = [\n { name: \'OpenCode\', value: \'opencode\' },\n { name: \'Claude Code\', value: \'claude\' },\n { name: \'OpenClaw\', value: \'openclaw\' }\n];\n\nasync function select() {\n console.log(\'\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╔══════════════════════════════════════════════════════════╗\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[1m\\x1b[36m%s\\x1b[0m\', \'║ ✨ Skill-insight ✨ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╚══════════════════════════════════════════════════════════╝\');\n console.log(\'\');\n console.log(\'\\x1b[90m%s\\x1b[0m\', \' 提示: ↑↓ 移动 | 空格 选择 | a 全选 | i 反选 | Enter 确认\');\n console.log(\'\');\n\n const answers = await inquirer.prompt([\n {\n type: \'checkbox\',\n name: \'frameworks\',\n message: \'集成到:\',\n choices: frameworks,\n pageSize: 10,\n loop: false\n }\n ]);\n\n const selected = answers.frameworks;\n \n if (selected.length > 0) {\n console.log(\'\');\n console.log(\'\\x1b[32m%s\\x1b[0m\', \'✅ 将安装以下组件:\');\n selected.forEach(fw => {\n const name = frameworks.find(f => f.value === fw)?.name || fw;\n console.log(\'\\x1b[32m%s\\x1b[0m\', \' • \' + name);\n });\n console.log(\'\');\n } else {\n console.log(\'\');\n console.log(\'\\x1b[33m%s\\x1b[0m\', \'⚠️ 未选择任何组件,将不进行安装。\');\n console.log(\'\');\n }\n\n const resultFile = process.env.SELECTOR_RESULT_FILE || process.env.HOME + \'/.skill-insight/.selector_result\';\n fs.writeFileSync(resultFile, selected.join(\',\'));\n}\n\nselect().catch(err => {\n console.error(\'Error:\', err);\n process.exit(1);\n});\nSELECTOR_EOF\n\n# Run the selector interactively from /dev/tty\nexport SELECTOR_RESULT_FILE="$SELECTOR_RESULT"\ncd "$HOME/.skill-insight" && npx -y tsx "$SELECTOR_SCRIPT" < /dev/tty\n\n# Read the selection result from file\nif [ -f "$SELECTOR_RESULT" ]; then\n SELECTED_FRAMEWORKS=$(cat "$SELECTOR_RESULT")\n rm -f "$SELECTOR_RESULT"\nelse\n SELECTED_FRAMEWORKS=""\nfi\n\n# Set installation flags based on selection\nINSTALL_OPENCODE=false\nINSTALL_CLAUDE=false\nINSTALL_OPENCLAW=false\n\nif [[ "$SELECTED_FRAMEWORKS" == *"opencode"* ]]; then\n INSTALL_OPENCODE=true\nfi\nif [[ "$SELECTED_FRAMEWORKS" == *"claude"* ]]; then\n INSTALL_CLAUDE=true\nfi\nif [[ "$SELECTED_FRAMEWORKS" == *"openclaw"* ]]; then\n INSTALL_OPENCLAW=true\nfi\n\n# Exit if nothing selected\nif [ "$INSTALL_OPENCODE" = "false" ] && [ "$INSTALL_CLAUDE" = "false" ] && [ "$INSTALL_OPENCLAW" = "false" ]; then\n echo "⚠️ 未选择任何框架组件,将跳过插件安装。"\n echo " 继续执行配置步骤..."\n echo ""\nfi\n\n# 3. Download Components\nif [ "$INSTALL_OPENCODE" = "true" ]; then\n echo "⏬ Downloading OpenCode Plugin..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/opencode" -o "$HOME/.opencode/plugins/Witty-Skill-Insight.ts"\n \n echo "⏬ Downloading Skill Sync Tool..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/sync_skills.ts" -o "$HOME/.skill-insight/sync_skills.ts"\nfi\n\nif [ "$INSTALL_CLAUDE" = "true" ]; then\n echo "⏬ Downloading Claude Code Watcher..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/claude-watcher" -o "$HOME/.skill-insight/claude_watcher_client.ts"\nfi\n\nif [ "$INSTALL_OPENCLAW" = "true" ]; then\n echo "⏬ Downloading OpenClaw Watcher..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/openclaw-watcher" -o "$HOME/.skill-insight/openclaw_watcher_client.ts"\nfi\n\n# 4. Configure ~/.skill-insight/.env\nSKILL_INSIGHT_CONFIG_FILE="$HOME/.skill-insight/.env"\nEXISTING_KEY=""\nEXISTING_HOST=""\nif [ -f "$SKILL_INSIGHT_CONFIG_FILE" ]; then\n EXISTING_KEY=$(grep \'^SKILL_INSIGHT_API_KEY=\' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d\'=\' -f2-)\n EXISTING_HOST=$(grep \'^SKILL_INSIGHT_HOST=\' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d\'=\' -f2-)\nfi\n\n# -- API Key Logic --\nFINAL_KEY="$EXISTING_KEY"\nif [ -n "$EXISTING_KEY" ]; then\n echo "🔑 Found existing API Key."\n read -p "👉 Use existing key? (y/N, Default: y): " USE_EXISTING < /dev/tty\n if [[ "$USE_EXISTING" =~ ^[Nn]$ ]]; then\n read -p "👉 Please enter your NEW API Key: " FINAL_KEY < /dev/tty\n fi\nelse\n echo "🔑 SKILL_INSIGHT_API_KEY is not set."\n read -p "👉 Please enter your API Key: " FINAL_KEY < /dev/tty\nfi\n\n# -- Host Logic --\nFINAL_HOST="$SKILL_INSIGHT_HOST"\nif [ -n "$EXISTING_HOST" ] && [ "$EXISTING_HOST" != "$SKILL_INSIGHT_HOST" ]; then\n echo "🌐 Current Host in config: $EXISTING_HOST"\n echo "🌐 New Host detected: $SKILL_INSIGHT_HOST"\n read -p "👉 Change to new Host? (y/N, Default: y): " CHANGE_HOST < /dev/tty\n if [[ "$CHANGE_HOST" =~ ^[Nn]$ ]]; then\n FINAL_HOST="$EXISTING_HOST"\n fi\nelif [ -z "$EXISTING_HOST" ]; then\n FINAL_HOST="$SKILL_INSIGHT_HOST"\nfi\n\nif [ -z "$FINAL_KEY" ]; then\n echo "⚠️ Warning: No API Key provided. Telemetry upload will fail until you set it in $SKILL_INSIGHT_CONFIG_FILE"\nfi\n\necho "⚙️ Updating configuration..."\ntouch "$SKILL_INSIGHT_CONFIG_FILE"\ncp "$SKILL_INSIGHT_CONFIG_FILE" "${SKILL_INSIGHT_CONFIG_FILE}.bak"\ngrep -v "^SKILL_INSIGHT_HOST=" "${SKILL_INSIGHT_CONFIG_FILE}.bak" | grep -v "^SKILL_INSIGHT_API_KEY=" > "$SKILL_INSIGHT_CONFIG_FILE"\necho "SKILL_INSIGHT_HOST=$FINAL_HOST" >> "$SKILL_INSIGHT_CONFIG_FILE"\necho "SKILL_INSIGHT_API_KEY=$FINAL_KEY" >> "$SKILL_INSIGHT_CONFIG_FILE"\nrm "${SKILL_INSIGHT_CONFIG_FILE}.bak"\necho "✅ Configuration updated at $SKILL_INSIGHT_CONFIG_FILE"\n\n# 5. Sync Opencode Skills\nif [ "$INSTALL_OPENCODE" = "true" ]; then\n echo ""\n echo "🚀 Syncing Opencode Skills..."\n if command -v npx &> /dev/null; then\n npx -y tsx "$HOME/.skill-insight/sync_skills.ts" --agent opencode\n else\n echo "⚠️ Node.js (npx) not found. Skipping skill sync."\n fi\nfi\n\n# 6. Install Watcher Dependencies\nif [ "$INSTALL_CLAUDE" = "true" ] || [ "$INSTALL_OPENCLAW" = "true" ]; then\n echo ""\n echo "📦 Installing watcher dependencies..."\n if command -v npm &> /dev/null; then\n cd "$HOME/.skill-insight"\n if [ ! -f "package.json" ]; then\n echo \'{"name": "skill-insight-watcher", "version": "1.0.0", "type": "module", "dependencies": {}}\' > package.json\n fi\n npm install chokidar --save 2>/dev/null\n echo "✅ Dependencies installed"\n else\n echo "⚠️ npm not found. Skipping dependency installation."\n fi\nfi\n\n# 7. Create Watcher Startup/Stop Scripts\nNEEDS_WATCHER_SCRIPTS=false\nif [ "$INSTALL_CLAUDE" = "true" ] || [ "$INSTALL_OPENCLAW" = "true" ]; then\n NEEDS_WATCHER_SCRIPTS=true\nfi\n\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "📝 Creating watcher management scripts..."\n\n if [ "$INSTALL_CLAUDE" = "true" ]; then\n cat > "$HOME/.skill-insight/start_claude_watcher.sh" << \'WATCHER_EOF\'\n#!/bin/bash\npkill -f "claude_watcher_client.ts" 2>/dev/null\ncd "$HOME/.skill-insight" && nohup npx -y tsx "$HOME/.skill-insight/claude_watcher_client.ts" > "$HOME/.skill-insight/logs/claude_watcher.log" 2>&1 &\necho $! > "$HOME/.skill-insight/claude_watcher.pid"\necho "Claude watcher started with PID $(cat $HOME/.skill-insight/claude_watcher.pid)"\nWATCHER_EOF\n chmod +x "$HOME/.skill-insight/start_claude_watcher.sh"\n\n cat > "$HOME/.skill-insight/stop_claude_watcher.sh" << \'STOP_CLAUDE_EOF\'\n#!/bin/bash\npkill -f "claude_watcher_client.ts" 2>/dev/null\nrm -f "$HOME/.skill-insight/claude_watcher.pid"\necho "Claude watcher stopped"\nSTOP_CLAUDE_EOF\n chmod +x "$HOME/.skill-insight/stop_claude_watcher.sh"\n fi\n\n if [ "$INSTALL_OPENCLAW" = "true" ]; then\n cat > "$HOME/.skill-insight/start_openclaw_watcher.sh" << \'WATCHER_EOF\'\n#!/bin/bash\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\ncd "$HOME/.skill-insight" && nohup npx -y tsx "$HOME/.skill-insight/openclaw_watcher_client.ts" > "$HOME/.skill-insight/logs/openclaw_watcher.log" 2>&1 &\necho $! > "$HOME/.skill-insight/openclaw_watcher.pid"\necho "OpenClaw watcher started with PID $(cat $HOME/.skill-insight/openclaw_watcher.pid)"\nWATCHER_EOF\n chmod +x "$HOME/.skill-insight/start_openclaw_watcher.sh"\n\n cat > "$HOME/.skill-insight/stop_openclaw_watcher.sh" << \'STOP_OPENCLAW_EOF\'\n#!/bin/bash\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\nrm -f "$HOME/.skill-insight/openclaw_watcher.pid"\necho "OpenClaw watcher stopped"\nSTOP_OPENCLAW_EOF\n chmod +x "$HOME/.skill-insight/stop_openclaw_watcher.sh"\n fi\n\n cat > "$HOME/.skill-insight/start_watchers.sh" << \'WATCHER_HEADER\'\n#!/bin/bash\necho "Starting Skill-Insight watchers..."\nWATCHER_HEADER\n if [ "$INSTALL_CLAUDE" = "true" ]; then echo \'"$HOME/.skill-insight/start_claude_watcher.sh"\' >> "$HOME/.skill-insight/start_watchers.sh"; fi\n if [ "$INSTALL_OPENCLAW" = "true" ]; then echo \'"$HOME/.skill-insight/start_openclaw_watcher.sh"\' >> "$HOME/.skill-insight/start_watchers.sh"; fi\n echo \'echo "All watchers started!"\' >> "$HOME/.skill-insight/start_watchers.sh"\n chmod +x "$HOME/.skill-insight/start_watchers.sh"\n\n cat > "$HOME/.skill-insight/stop_watchers.sh" << \'STOP_HEADER\'\n#!/bin/bash\necho "Stopping Skill-Insight watchers..."\nSTOP_HEADER\n if [ "$INSTALL_CLAUDE" = "true" ]; then echo \'"$HOME/.skill-insight/stop_claude_watcher.sh"\' >> "$HOME/.skill-insight/stop_watchers.sh"; fi\n if [ "$INSTALL_OPENCLAW" = "true" ]; then echo \'"$HOME/.skill-insight/stop_openclaw_watcher.sh"\' >> "$HOME/.skill-insight/stop_watchers.sh"; fi\n echo \'echo "All watchers stopped!"\' >> "$HOME/.skill-insight/stop_watchers.sh"\n chmod +x "$HOME/.skill-insight/stop_watchers.sh"\nfi\n\n# 8. Start Watchers Now\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "🚀 Starting telemetry watchers..."\n if command -v npx &> /dev/null; then\n "$HOME/.skill-insight/start_watchers.sh"\n else\n echo "⚠️ Node.js (npx) not found. Skipping watcher startup."\n fi\nfi\n\n# 9. Configure Claude Code Auto-Sync Wrapper\nif [ "$INSTALL_CLAUDE" = "true" ]; then\n echo ""\n echo "🔄 Configuring Claude Code Auto-Sync Wrapper..."\n for rc_file in "$HOME/.bashrc" "$HOME/.zshrc"; do\n if [ -f "$rc_file" ]; then\n if ! grep -q "skill-insight-claude()" "$rc_file" 2>/dev/null; then\n cat >> "$rc_file" << \'CLAUDE_EOF\'\n\n# Skill Insight Claude Alliance\nskill-insight-claude() {\n if command -v npx &> /dev/null; then\n npx -y tsx "$HOME/.skill-insight/sync_skills.ts" --agent claude >/dev/null 2>&1\n fi\n command claude "$@"\n}\nalias claude="skill-insight-claude"\nCLAUDE_EOF\n echo "✅ Installed Claude wrapper to $rc_file"\n fi\n fi\n done\nfi\n\n# 10. Final Summary\necho ""\necho "🌟 Skill-Insight Telemetry: READY"\necho "------------------------------------------------"\necho "Installed Components:"\nif [ "$INSTALL_OPENCODE" = "true" ]; then echo " ✅ OpenCode Plugin: ~/.opencode/plugins/Witty-Skill-Insight.ts"; fi\nif [ "$INSTALL_CLAUDE" = "true" ]; then echo " ✅ Claude Watcher: ~/.skill-insight/claude_watcher_client.ts"; fi\nif [ "$INSTALL_OPENCLAW" = "true" ]; then echo " ✅ OpenClaw Watcher: ~/.skill-insight/openclaw_watcher_client.ts"; fi\n\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "Watcher Management:"\n echo " Start all: ~/.skill-insight/start_watchers.sh"\n echo " Stop all: ~/.skill-insight/stop_watchers.sh"\n echo " Logs: ~/.skill-insight/logs/"\nfi\n\necho ""\necho "Usage:"\nif [ "$INSTALL_OPENCODE" = "true" ]; then echo " 1. Run: opencode run \'hello\'"; fi\nif [ "$INSTALL_CLAUDE" = "true" ]; then echo " 2. Run: claude (restart terminal first)"; fi\nif [ "$INSTALL_OPENCLAW" = "true" ]; then echo " 3. OpenClaw will automatically monitor and upload telemetry"; fi\necho "------------------------------------------------"'].join("\n");return new u.NextResponse(e,{headers:{"Content-Type":"text/x-shellscript"}})}}e.s(["GET",()=>$],21965);var T=e.i(21965);let g=new n.AppRouteRouteModule({definition:{kind:t.RouteKind.APP_ROUTE,page:"/api/setup/route",pathname:"/api/setup",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/setup/route.ts",nextConfigOutput:"standalone",userland:T}),{workAsyncStorage:N,workUnitAsyncStorage:f,serverHooks:O}=g;function C(){return(0,i.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:f})}async function m(e,n,i){g.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let u="/api/setup/route";u=u.replace(/\/index$/,"")||"/";let $=await g.prepare(e,n,{srcPage:u,multiZoneDraftMode:!1});if(!$)return n.statusCode=400,n.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:T,params:N,nextConfig:f,parsedUrl:O,isDraftMode:C,prerenderManifest:m,routerServerContext:H,isOnDemandRevalidate:w,revalidateOnlyGenerated:A,resolvedPathname:R,clientReferenceManifest:k,serverActionsManifest:P}=$,F=(0,r.normalizeAppPath)(u),y=!!(m.dynamicRoutes[F]||m.routes[R]),W=async()=>((null==H?void 0:H.render404)?await H.render404(e,n,O,!1):n.end("This page could not be found"),null);if(y&&!C){let e=!!m.routes[R],n=m.dynamicRoutes[F];if(n&&!1===n.fallback&&!e){if(f.experimental.adapterPath)return await W();throw new p.NoFallbackError}}let D=null;!y||g.isDev||C||(D="/index"===(D=R)?"/":D);let G=!0===g.isDev||!y,x=y&&!G;P&&k&&(0,o.setManifestsSingleton)({page:u,clientReferenceManifest:k,serverActionsManifest:P});let v=e.method||"GET",K=(0,l.getTracer)(),b=K.getActiveScopeSpan(),U={params:N,prerenderManifest:m,renderOpts:{experimental:{authInterrupts:!!f.experimental.authInterrupts},cacheComponents:!!f.cacheComponents,supportsDynamicResponse:G,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:f.cacheLife,waitUntil:i.waitUntil,onClose:e=>{n.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(n,t,i,s)=>g.onRequestError(e,n,i,s,H)},sharedContext:{buildId:T}},M=new a.NodeNextRequest(e),q=new a.NodeNextResponse(n),X=c.NextRequestAdapter.fromNodeNextRequest(M,(0,c.signalFromNodeResponse)(n));try{let o=async e=>g.handle(X,U).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":n.statusCode,"next.rsc":!1});let t=K.getRootSpanAttributes();if(!t)return;if(t.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${t.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=t.get("next.route");if(i){let n=`${v} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":n}),e.updateName(n)}else e.updateName(`${v} ${u}`)}),r=!!(0,s.getRequestMeta)(e,"minimalMode"),a=async s=>{var l,a;let c=async({previousCacheEntry:t})=>{try{if(!r&&w&&A&&!t)return n.statusCode=404,n.setHeader("x-nextjs-cache","REVALIDATED"),n.end("This page could not be found"),null;let l=await o(s);e.fetchMetrics=U.renderOpts.fetchMetrics;let a=U.renderOpts.pendingWaitUntil;a&&i.waitUntil&&(i.waitUntil(a),a=void 0);let c=U.renderOpts.collectedTags;if(!y)return await (0,_.sendResponse)(M,q,l,U.renderOpts.pendingWaitUntil),null;{let e=await l.blob(),n=(0,I.toNodeOutgoingHttpHeaders)(l.headers);c&&(n[d.NEXT_CACHE_TAGS_HEADER]=c),!n["content-type"]&&e.type&&(n["content-type"]=e.type);let t=void 0!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=d.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,i=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=d.INFINITE_CACHE?void 0:U.renderOpts.collectedExpire;return{value:{kind:L.CachedRouteKind.APP_ROUTE,status:l.status,body:Buffer.from(await e.arrayBuffer()),headers:n},cacheControl:{revalidate:t,expire:i}}}}catch(n){throw(null==t?void 0:t.isStale)&&await g.onRequestError(e,n,{routerKind:"App Router",routePath:u,routeType:"route",revalidateReason:(0,S.getRevalidateReason)({isStaticGeneration:x,isOnDemandRevalidate:w})},!1,H),n}},h=await g.handleResponse({req:e,nextConfig:f,cacheKey:D,routeKind:t.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:m,isRoutePPREnabled:!1,isOnDemandRevalidate:w,revalidateOnlyGenerated:A,responseGenerator:c,waitUntil:i.waitUntil,isMinimalMode:r});if(!y)return null;if((null==h||null==(l=h.value)?void 0:l.kind)!==L.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==h||null==(a=h.value)?void 0:a.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});r||n.setHeader("x-nextjs-cache",w?"REVALIDATED":h.isMiss?"MISS":h.isStale?"STALE":"HIT"),C&&n.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,I.fromNodeOutgoingHttpHeaders)(h.value.headers);return r&&y||p.delete(d.NEXT_CACHE_TAGS_HEADER),!h.cacheControl||n.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,E.getCacheControlHeader)(h.cacheControl)),await (0,_.sendResponse)(M,q,new Response(h.value.body,{headers:p,status:h.value.status||200})),null};b?await a(b):await K.withPropagatedContext(e.headers,()=>K.trace(h.BaseServerSpan.handleRequest,{spanName:`${v} ${u}`,kind:l.SpanKind.SERVER,attributes:{"http.method":v,"http.target":e.url}},a))}catch(n){if(n instanceof p.NoFallbackError||await g.onRequestError(e,n,{routerKind:"App Router",routePath:F,routeType:"route",revalidateReason:(0,S.getRevalidateReason)({isStaticGeneration:x,isOnDemandRevalidate:w})},!1,H),y)throw n;return await (0,_.sendResponse)(M,q,new Response(null,{status:500})),null}}e.s(["handler",()=>m,"patchFetch",()=>C,"routeModule",()=>g,"serverHooks",()=>O,"workAsyncStorage",()=>N,"workUnitAsyncStorage",()=>f],26984)}];
1
+ module.exports=[26984,e=>{"use strict";var n=e.i(47909),t=e.i(74017),i=e.i(60476),o=e.i(59756),s=e.i(61916),l=e.i(74677),r=e.i(69741),a=e.i(16795),c=e.i(87718),S=e.i(95169),_=e.i(47587),I=e.i(66012),h=e.i(70101),E=e.i(26937),d=e.i(10372),p=e.i(93695);e.i(52474);var L=e.i(220),u=e.i(89171);async function T(e){let n,t,i=e.headers.get("x-forwarded-host")||e.headers.get("host")||"127.0.0.1:3000",o=e.headers.get("x-forwarded-proto")||"https";new URL(e.url).pathname.replace(/\/api\/setup\/?$/,"");let s=`${o}://${i}`;if("windows"==(n=e.headers.get("user-agent")||"",(t=e.headers.get("x-platform")||"")?"windows"===t.toLowerCase()?"windows":"unix":n.toLowerCase().includes("windows")?"windows":"unix")){let e=["# =============================================================================\n# Skill-insight One-Click Setup (PowerShell)\n# =============================================================================\n",'$SKILL_INSIGHT_HOST = "'+s+'"','$SKILL_INSIGHT_BASE_URL = "'+s+'"','\nWrite-Host "🚀 Fetching Skill-insight telemetry components from $SKILL_INSIGHT_BASE_URL..."\n\n# 1. Setup Directories\n$homeDir = $env:USERPROFILE\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.skill-insight" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.skill-insight\\logs" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.opencode\\plugins" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.opencode\\skills" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.claude\\projects" | Out-Null\nNew-Item -ItemType Directory -Force -Path "$homeDir\\.openclaw\\agents" | Out-Null\nNew-Item -ItemType Directory -Force -Path ".opencode\\skills" | Out-Null\nWrite-Host "📂 Created necessary directories"\n\n# 2. Interactive Framework Selection with inquirer\nWrite-Host ""\n\n$SELECTOR_SCRIPT = "$homeDir\\.skill-insight\\framework_selector.mjs"\n$SELECTOR_RESULT = "$homeDir\\.skill-insight\\.selector_result"\n\n# Install inquirer if not already installed\nSet-Location "$homeDir\\.skill-insight"\nif (-not (Test-Path "node_modules\\inquirer")) {\n Write-Host "📦 Installing inquirer for interactive selection..."\n npm install inquirer --save 2>$null\n}\n\n$selectorContent = @\'\nimport inquirer from \'inquirer\';\nimport fs from \'fs\';\n\nconst frameworks = [\n { name: \'OpenCode\', value: \'opencode\' },\n { name: \'Claude Code\', value: \'claude\' },\n { name: \'OpenClaw\', value: \'openclaw\' }\n];\n\nasync function select() {\n console.log(\'\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╔══════════════════════════════════════════════════════════╗\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[1m\\x1b[36m%s\\x1b[0m\', \'║ ✨ Skill-insight ✨ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╚══════════════════════════════════════════════════════════╝\');\n console.log(\'\');\n console.log(\'\\x1b[90m%s\\x1b[0m\', \' 提示: ↑↓ 移动 | 空格 选择 | a 全选 | i 反选 | Enter 确认\');\n console.log(\'\');\n\n const answers = await inquirer.prompt([\n {\n type: \'checkbox\',\n name: \'frameworks\',\n message: \'集成到:\',\n choices: frameworks,\n pageSize: 10,\n loop: false\n }\n ]);\n\n const selected = answers.frameworks;\n \n if (selected.length > 0) {\n console.log(\'\');\n console.log(\'\\x1b[32m%s\\x1b[0m\', \'✅ 将安装以下组件:\');\n selected.forEach(fw => {\n const name = frameworks.find(f => f.value === fw)?.name || fw;\n console.log(\'\\x1b[32m%s\\x1b[0m\', \' • \' + name);\n });\n console.log(\'\');\n } else {\n console.log(\'\');\n console.log(\'\\x1b[33m%s\\x1b[0m\', \'⚠️ 未选择任何组件,将不进行安装。\');\n console.log(\'\');\n }\n\n const resultFile = process.env.SELECTOR_RESULT_FILE || process.env.USERPROFILE + \'\\\\.skill-insight\\\\.selector_result\';\n fs.writeFileSync(resultFile, selected.join(\',\'));\n}\n\nselect().catch(err => {\n console.error(\'Error:\', err);\n process.exit(1);\n});\n\'@\n\nSet-Content -Path $SELECTOR_SCRIPT -Value $selectorContent -Encoding UTF8\n\n# Run the selector interactively\n$env:SELECTOR_RESULT_FILE = $SELECTOR_RESULT\nSet-Location "$homeDir\\.skill-insight"\nnpx -y tsx $SELECTOR_SCRIPT\n\n# Read the selection result from file\nif (Test-Path $SELECTOR_RESULT) {\n $SELECTED_FRAMEWORKS = Get-Content $SELECTOR_RESULT\n Remove-Item $SELECTOR_RESULT -Force\n} else {\n $SELECTED_FRAMEWORKS = ""\n}\n\n# Set installation flags based on selection\n$INSTALL_OPENCODE = $false\n$INSTALL_CLAUDE = $false\n$INSTALL_OPENCLAW = $false\n\nif ($SELECTED_FRAMEWORKS -match "opencode") {\n $INSTALL_OPENCODE = $true\n}\nif ($SELECTED_FRAMEWORKS -match "claude") {\n $INSTALL_CLAUDE = $true\n}\nif ($SELECTED_FRAMEWORKS -match "openclaw") {\n $INSTALL_OPENCLAW = $true\n}\n\n# Exit if nothing selected\nif (-not $INSTALL_OPENCODE -and -not $INSTALL_CLAUDE -and -not $INSTALL_OPENCLAW) {\n Write-Host "⚠️ 未选择任何框架组件,将跳过插件安装。"\n Write-Host " 继续执行配置步骤..."\n Write-Host ""\n}\n\n# 3. Download Components\nif ($INSTALL_OPENCODE) {\n Write-Host "⏬ Downloading OpenCode Plugin..."\n $opencodeConfigDir = if ($env:XDG_CONFIG_HOME) { Join-Path $env:XDG_CONFIG_HOME "opencode" } elseif ($env:APPDATA) { Join-Path $env:APPDATA "opencode" } else { Join-Path $homeDir ".config\\opencode" }\n New-Item -ItemType Directory -Path (Join-Path $opencodeConfigDir "plugins") -Force | Out-Null\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/opencode" -OutFile (Join-Path $opencodeConfigDir "plugins\\Witty-Skill-Insight.ts")\n Copy-Item (Join-Path $opencodeConfigDir "plugins\\Witty-Skill-Insight.ts") "$homeDir\\.opencode\\plugins\\Witty-Skill-Insight.ts" -Force -ErrorAction SilentlyContinue\n Write-Host "⏬ Downloading OpenCode TUI Plugin..."\n $tuiPluginPath = (Join-Path $opencodeConfigDir "plugins\\Witty-Skill-Insight.tui.tsx")\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/opencode-tui" -OutFile $tuiPluginPath\n Copy-Item $tuiPluginPath "$homeDir\\.opencode\\plugins\\Witty-Skill-Insight.tui.tsx" -Force -ErrorAction SilentlyContinue\n $tuiConfigFile = (Join-Path $opencodeConfigDir "tui.json")\n try {\n $data = @{}\n if (Test-Path $tuiConfigFile) {\n $raw = Get-Content $tuiConfigFile -Raw\n if ($raw -and $raw.Trim()) { $data = $raw | ConvertFrom-Json }\n }\n if (-not $data.plugin) { $data | Add-Member -MemberType NoteProperty -Name plugin -Value @() -Force }\n if ($data.plugin -notcontains $tuiPluginPath) { $data.plugin += $tuiPluginPath }\n $data | ConvertTo-Json -Depth 10 | Set-Content -Path $tuiConfigFile -Encoding UTF8\n } catch {\n Write-Host "⚠️ Failed to patch tui.json for TUI plugin."\n }\n}\n\nif ($INSTALL_CLAUDE) {\n Write-Host "⏬ Downloading Claude Code Watcher..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/claude-watcher" -OutFile "$homeDir\\.skill-insight\\claude_watcher_client.ts"\n}\n\nif ($INSTALL_OPENCLAW) {\n Write-Host "⏬ Downloading OpenClaw Watcher..."\n Invoke-WebRequest -Uri "$SKILL_INSIGHT_BASE_URL/api/setup/openclaw-watcher" -OutFile "$homeDir\\.skill-insight\\openclaw_watcher_client.ts"\n}\n\n# 4. Configure ~/.skill-insight/.env\n$SKILL_INSIGHT_CONFIG_FILE = "$homeDir\\.skill-insight\\.env"\n$EXISTING_KEY = ""\n$EXISTING_HOST = ""\n$EXISTING_SHOW_TASK_STATS = ""\nif (Test-Path $SKILL_INSIGHT_CONFIG_FILE) {\n $content = Get-Content $SKILL_INSIGHT_CONFIG_FILE\n $keyLine = $content | Select-String \'^SKILL_INSIGHT_API_KEY=\' | Select-Object -First 1\n $hostLine = $content | Select-String \'^SKILL_INSIGHT_HOST=\' | Select-Object -First 1\n $showLine = $content | Select-String \'^SKILL_INSIGHT_SHOW_TASK_STATS=\' | Select-Object -First 1\n if ($keyLine) {\n $EXISTING_KEY = $keyLine.Line.Substring(\'SKILL_INSIGHT_API_KEY=\'.Length)\n }\n if ($hostLine) {\n $EXISTING_HOST = $hostLine.Line.Substring(\'SKILL_INSIGHT_HOST=\'.Length)\n }\n if ($showLine) {\n $EXISTING_SHOW_TASK_STATS = $showLine.Line.Substring(\'SKILL_INSIGHT_SHOW_TASK_STATS=\'.Length)\n }\n}\n\n# -- API Key Logic --\n$FINAL_KEY = $EXISTING_KEY\nif ($EXISTING_KEY) {\n Write-Host "🔑 Found existing API Key."\n $USE_EXISTING = Read-Host "👉 Use existing key? (y/N, Default: y)"\n if ($USE_EXISTING -match \'^[Nn]$\') {\n $FINAL_KEY = Read-Host "👉 Please enter your NEW API Key"\n }\n} else {\n Write-Host "🔑 SKILL_INSIGHT_API_KEY is not set."\n $FINAL_KEY = Read-Host "👉 Please enter your API Key"\n}\n\n# -- Host Logic --\n$FINAL_HOST = $SKILL_INSIGHT_HOST\nif ($EXISTING_HOST -and ($EXISTING_HOST -ne $SKILL_INSIGHT_HOST)) {\n Write-Host "🌐 Current Host in config: $EXISTING_HOST"\n Write-Host "🌐 New Host detected: $SKILL_INSIGHT_HOST"\n $CHANGE_HOST = Read-Host "👉 Change to new Host? (y/N, Default: y)"\n if ($CHANGE_HOST -match \'^[Nn]$\') {\n $FINAL_HOST = $EXISTING_HOST\n }\n} elseif (-not $EXISTING_HOST) {\n $FINAL_HOST = $SKILL_INSIGHT_HOST\n}\n\n$FINAL_SHOW_TASK_STATS = $EXISTING_SHOW_TASK_STATS\nif (-not $FINAL_SHOW_TASK_STATS) {\n $FINAL_SHOW_TASK_STATS = "true"\n}\n\nif (-not $FINAL_KEY) {\n Write-Host "⚠️ Warning: No API Key provided. Telemetry upload will fail until you set it in $SKILL_INSIGHT_CONFIG_FILE"\n}\n\nWrite-Host "⚙️ Updating configuration..."\nNew-Item -ItemType File -Path $SKILL_INSIGHT_CONFIG_FILE -Force | Out-Null\nCopy-Item $SKILL_INSIGHT_CONFIG_FILE "$SKILL_INSIGHT_CONFIG_FILE.bak"\n$content = Get-Content "$SKILL_INSIGHT_CONFIG_FILE.bak"\n$content | Where-Object { $_ -notmatch \'^SKILL_INSIGHT_HOST=\' -and $_ -notmatch \'^SKILL_INSIGHT_API_KEY=\' -and $_ -notmatch \'^SKILL_INSIGHT_SHOW_TASK_STATS=\' } | Set-Content $SKILL_INSIGHT_CONFIG_FILE\nAdd-Content $SKILL_INSIGHT_CONFIG_FILE "SKILL_INSIGHT_HOST=$FINAL_HOST"\nAdd-Content $SKILL_INSIGHT_CONFIG_FILE "SKILL_INSIGHT_API_KEY=$FINAL_KEY"\nAdd-Content $SKILL_INSIGHT_CONFIG_FILE "SKILL_INSIGHT_SHOW_TASK_STATS=$FINAL_SHOW_TASK_STATS"\nRemove-Item "$SKILL_INSIGHT_CONFIG_FILE.bak" -Force\nWrite-Host "✅ Configuration updated at $SKILL_INSIGHT_CONFIG_FILE"\n\n# 6. Install Watcher Dependencies\nif ($INSTALL_CLAUDE -or $INSTALL_OPENCLAW) {\n Write-Host ""\n Write-Host "📦 Installing watcher dependencies..."\n if (Get-Command npm -ErrorAction SilentlyContinue) {\n Set-Location "$homeDir\\.skill-insight"\n if (-not (Test-Path "package.json")) {\n \'{"name": "skill-insight-watcher", "version": "1.0.0", "type": "module", "dependencies": {}}\' | Out-File -FilePath "package.json" -Encoding utf8\n }\n npm install chokidar --save 2>$null\n Write-Host "✅ Dependencies installed"\n } else {\n Write-Host "⚠️ npm not found. Skipping dependency installation."\n }\n}\n\n# 7. Create Watcher Startup/Stop Scripts\n$NEEDS_WATCHER_SCRIPTS = $false\nif ($INSTALL_CLAUDE -or $INSTALL_OPENCLAW) {\n $NEEDS_WATCHER_SCRIPTS = $true\n}\n\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "📝 Creating watcher management scripts..."\n\n if ($INSTALL_CLAUDE) {\n $startScript = @\'\npkill -f "claude_watcher_client.ts" 2>/dev/null\nSet-Location "$env:USERPROFILE\\.skill-insight"\nStart-Process -FilePath "npx" -ArgumentList "-y", "tsx", "$env:USERPROFILE\\.skill-insight\\claude_watcher_client.ts" -RedirectStandardOutput "$env:USERPROFILE\\.skill-insight\\logs\\claude_watcher.log" -RedirectStandardError "$env:USERPROFILE\\.skill-insight\\logs\\claude_watcher_error.log" -NoNewWindow\nWrite-Host "Claude watcher started"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\start_claude_watcher.ps1" -Value $startScript -Encoding UTF8\n\n $stopScript = @\'\nGet-Process | Where-Object { $_.CommandLine -like "*claude_watcher_client.ts*" } | Stop-Process -Force -ErrorAction SilentlyContinue\nRemove-Item "$env:USERPROFILE\\.skill-insight\\claude_watcher.pid" -Force -ErrorAction SilentlyContinue\nWrite-Host "Claude watcher stopped"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\stop_claude_watcher.ps1" -Value $stopScript -Encoding UTF8\n }\n\n if ($INSTALL_OPENCLAW) {\n $startScript = @\'\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\nSet-Location "$env:USERPROFILE\\.skill-insight"\nStart-Process -FilePath "npx" -ArgumentList "-y", "tsx", "$env:USERPROFILE\\.skill-insight\\openclaw_watcher_client.ts" -RedirectStandardOutput "$env:USERPROFILE\\.skill-insight\\logs\\openclaw_watcher.log" -RedirectStandardError "$env:USERPROFILE\\.skill-insight\\logs\\openclaw_watcher_error.log" -NoNewWindow\nWrite-Host "OpenClaw watcher started"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\start_openclaw_watcher.ps1" -Value $startScript -Encoding UTF8\n\n $stopScript = @\'\nGet-Process | Where-Object { $_.CommandLine -like "*openclaw_watcher_client.ts*" } | Stop-Process -Force -ErrorAction SilentlyContinue\nRemove-Item "$env:USERPROFILE\\.skill-insight\\openclaw_watcher.pid" -Force -ErrorAction SilentlyContinue\nWrite-Host "OpenClaw watcher stopped"\n\'@\n Set-Content -Path "$homeDir\\.skill-insight\\stop_openclaw_watcher.ps1" -Value $stopScript -Encoding UTF8\n }\n\n $combinedStart = \'Write-Host "Starting Skill-Insight watchers..."\'\n if ($INSTALL_CLAUDE) { $combinedStart += [char]10 + "& `"$homeDir\\.skill-insight\\start_claude_watcher.ps1`"" }\n if ($INSTALL_OPENCLAW) { $combinedStart += [char]10 + "& `"$homeDir\\.skill-insight\\start_openclaw_watcher.ps1`"" }\n $combinedStart += [char]10 + \'Write-Host "All watchers started!"\'\n Set-Content -Path "$homeDir\\.skill-insight\\start_watchers.ps1" -Value $combinedStart -Encoding UTF8\n\n $combinedStop = \'Write-Host "Stopping Skill-Insight watchers..."\'\n if ($INSTALL_CLAUDE) { $combinedStop += [char]10 + "& `"$homeDir\\.skill-insight\\stop_claude_watcher.ps1`"" }\n if ($INSTALL_OPENCLAW) { $combinedStop += [char]10 + "& `"$homeDir\\.skill-insight\\stop_openclaw_watcher.ps1`"" }\n $combinedStop += [char]10 + \'Write-Host "All watchers stopped!"\'\n Set-Content -Path "$homeDir\\.skill-insight\\stop_watchers.ps1" -Value $combinedStop -Encoding UTF8\n}\n\n# 8. Start Watchers Now\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "🚀 Starting telemetry watchers..."\n if (Get-Command npx -ErrorAction SilentlyContinue) {\n & "$homeDir\\.skill-insight\\start_watchers.ps1"\n } else {\n Write-Host "⚠️ Node.js (npx) not found. Skipping watcher startup."\n }\n}\n\n# 10. Final Summary\nWrite-Host ""\nWrite-Host "🌟 Skill-Insight Telemetry: READY"\nWrite-Host "------------------------------------------------"\nWrite-Host "Installed Components:"\nif ($INSTALL_OPENCODE) { Write-Host " ✅ OpenCode Plugin: ~/.opencode/plugins/Witty-Skill-Insight.ts" }\nif ($INSTALL_CLAUDE) { Write-Host " ✅ Claude Watcher: ~/.skill-insight/claude_watcher_client.ts" }\nif ($INSTALL_OPENCLAW) { Write-Host " ✅ OpenClaw Watcher: ~/.skill-insight/openclaw_watcher_client.ts" }\n\nif ($NEEDS_WATCHER_SCRIPTS) {\n Write-Host ""\n Write-Host "Watcher Management:"\n Write-Host " Start all: ~/.skill-insight/start_watchers.ps1"\n Write-Host " Stop all: ~/.skill-insight/stop_watchers.ps1"\n Write-Host " Logs: ~/.skill-insight/logs/"\n}\n\nWrite-Host ""\nWrite-Host "Usage:"\nif ($INSTALL_OPENCODE) { Write-Host " 1. Run: opencode run \'hello\'" }\nif ($INSTALL_CLAUDE) { Write-Host " 2. Run: claude (restart terminal first)" }\nif ($INSTALL_OPENCLAW) { Write-Host " 3. OpenClaw will automatically monitor and upload telemetry" }\nWrite-Host "------------------------------------------------"'].join("\n");return new u.NextResponse(e,{headers:{"Content-Type":"text/plain; charset=utf-8"}})}{let e=["#!/bin/bash\n# =============================================================================\n# Skill-insight One-Click Setup\n# =============================================================================\n",'SKILL_INSIGHT_HOST="'+s+'"','SKILL_INSIGHT_BASE_URL="'+s+'"','OPENCODE_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/opencode"\n\necho "🚀 Fetching Skill-insight telemetry components from $SKILL_INSIGHT_BASE_URL..."\n\n# 1. Setup Directories\nmkdir -p "$HOME/.skill-insight"\nmkdir -p "$HOME/.skill-insight/logs"\nmkdir -p "$HOME/.opencode/plugins"\nmkdir -p "$OPENCODE_CONFIG_DIR/plugins"\nmkdir -p "$HOME/.opencode/skills"\nmkdir -p "$HOME/.claude/projects"\nmkdir -p "$HOME/.openclaw/agents"\nmkdir -p ".opencode/skills"\necho "📂 Created necessary directories"\n\n# 2. Interactive Framework Selection with inquirer\necho ""\n\nSELECTOR_SCRIPT="$HOME/.skill-insight/framework_selector.mjs"\nSELECTOR_RESULT="$HOME/.skill-insight/.selector_result"\n\n# Install inquirer if not already installed\ncd "$HOME/.skill-insight"\nif [ ! -d "node_modules/inquirer" ]; then\n echo "📦 Installing inquirer for interactive selection..."\n npm install inquirer --save 2>/dev/null\nfi\n\ncat > "$SELECTOR_SCRIPT" << \'SELECTOR_EOF\'\nimport inquirer from \'inquirer\';\nimport fs from \'fs\';\n\nconst frameworks = [\n { name: \'OpenCode\', value: \'opencode\' },\n { name: \'Claude Code\', value: \'claude\' },\n { name: \'OpenClaw\', value: \'openclaw\' }\n];\n\nasync function select() {\n console.log(\'\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╔══════════════════════════════════════════════════════════╗\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[1m\\x1b[36m%s\\x1b[0m\', \'║ ✨ Skill-insight ✨ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'║ ║\');\n console.log(\'\\x1b[36m%s\\x1b[0m\', \'╚══════════════════════════════════════════════════════════╝\');\n console.log(\'\');\n console.log(\'\\x1b[90m%s\\x1b[0m\', \' 提示: ↑↓ 移动 | 空格 选择 | a 全选 | i 反选 | Enter 确认\');\n console.log(\'\');\n\n const answers = await inquirer.prompt([\n {\n type: \'checkbox\',\n name: \'frameworks\',\n message: \'集成到:\',\n choices: frameworks,\n pageSize: 10,\n loop: false\n }\n ]);\n\n const selected = answers.frameworks;\n \n if (selected.length > 0) {\n console.log(\'\');\n console.log(\'\\x1b[32m%s\\x1b[0m\', \'✅ 将安装以下组件:\');\n selected.forEach(fw => {\n const name = frameworks.find(f => f.value === fw)?.name || fw;\n console.log(\'\\x1b[32m%s\\x1b[0m\', \' • \' + name);\n });\n console.log(\'\');\n } else {\n console.log(\'\');\n console.log(\'\\x1b[33m%s\\x1b[0m\', \'⚠️ 未选择任何组件,将不进行安装。\');\n console.log(\'\');\n }\n\n const resultFile = process.env.SELECTOR_RESULT_FILE || process.env.HOME + \'/.skill-insight/.selector_result\';\n fs.writeFileSync(resultFile, selected.join(\',\'));\n}\n\nselect().catch(err => {\n console.error(\'Error:\', err);\n process.exit(1);\n});\nSELECTOR_EOF\n\n# Run the selector interactively from /dev/tty\nexport SELECTOR_RESULT_FILE="$SELECTOR_RESULT"\ncd "$HOME/.skill-insight" && npx -y tsx "$SELECTOR_SCRIPT" < /dev/tty\n\n# Read the selection result from file\nif [ -f "$SELECTOR_RESULT" ]; then\n SELECTED_FRAMEWORKS=$(cat "$SELECTOR_RESULT")\n rm -f "$SELECTOR_RESULT"\nelse\n SELECTED_FRAMEWORKS=""\nfi\n\n# Set installation flags based on selection\nINSTALL_OPENCODE=false\nINSTALL_CLAUDE=false\nINSTALL_OPENCLAW=false\n\nif [[ "$SELECTED_FRAMEWORKS" == *"opencode"* ]]; then\n INSTALL_OPENCODE=true\nfi\nif [[ "$SELECTED_FRAMEWORKS" == *"claude"* ]]; then\n INSTALL_CLAUDE=true\nfi\nif [[ "$SELECTED_FRAMEWORKS" == *"openclaw"* ]]; then\n INSTALL_OPENCLAW=true\nfi\n\n# Exit if nothing selected\nif [ "$INSTALL_OPENCODE" = "false" ] && [ "$INSTALL_CLAUDE" = "false" ] && [ "$INSTALL_OPENCLAW" = "false" ]; then\n echo "⚠️ 未选择任何框架组件,将跳过插件安装。"\n echo " 继续执行配置步骤..."\n echo ""\nfi\n\n# 3. Download Components\nif [ "$INSTALL_OPENCODE" = "true" ]; then\n echo "⏬ Downloading OpenCode Plugin..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/opencode" -o "$OPENCODE_CONFIG_DIR/plugins/Witty-Skill-Insight.ts"\n cp "$OPENCODE_CONFIG_DIR/plugins/Witty-Skill-Insight.ts" "$HOME/.opencode/plugins/Witty-Skill-Insight.ts" 2>/dev/null || true\n echo "⏬ Installing OpenCode commands..."\n mkdir -p "$OPENCODE_CONFIG_DIR/commands"\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/opencode-commands/si-optimizer" -o "$OPENCODE_CONFIG_DIR/commands/si-optimizer.md"\n echo "⏬ Downloading OpenCode TUI Plugin..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/opencode-tui" -o "$OPENCODE_CONFIG_DIR/plugins/Witty-Skill-Insight.tui.tsx"\n cp "$OPENCODE_CONFIG_DIR/plugins/Witty-Skill-Insight.tui.tsx" "$HOME/.opencode/plugins/Witty-Skill-Insight.tui.tsx" 2>/dev/null || true\n export TUI_PLUGIN_PATH="$OPENCODE_CONFIG_DIR/plugins/Witty-Skill-Insight.tui.tsx"\n export TUI_CONFIG_FILE="$OPENCODE_CONFIG_DIR/tui.json"\n if command -v node &> /dev/null; then\n node - <<\'NODE\'\nconst fs = require("fs");\nconst path = require("path");\nconst file = process.env.TUI_CONFIG_FILE;\nconst pluginPath = process.env.TUI_PLUGIN_PATH;\nlet data = {};\ntry {\n if (fs.existsSync(file)) {\n const text = fs.readFileSync(file, "utf8");\n data = text && text.trim() ? JSON.parse(text) : {};\n }\n} catch {}\nif (!data || typeof data !== "object") data = {};\nconst list = Array.isArray(data.plugin) ? data.plugin.slice() : [];\nif (pluginPath && !list.includes(pluginPath)) list.push(pluginPath);\ndata.plugin = list;\nfs.mkdirSync(path.dirname(file), { recursive: true });\nfs.writeFileSync(file, JSON.stringify(data, null, 2));\nNODE\n else\n echo "⚠️ node not found; skip TUI plugin config patch."\n fi\nfi\n\nif [ "$INSTALL_CLAUDE" = "true" ]; then\n echo "⏬ Downloading Claude Code Watcher..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/claude-watcher" -o "$HOME/.skill-insight/claude_watcher_client.ts"\nfi\n\nif [ "$INSTALL_OPENCLAW" = "true" ]; then\n echo "⏬ Downloading OpenClaw Watcher..."\n curl -sSf "$SKILL_INSIGHT_BASE_URL/api/setup/openclaw-watcher" -o "$HOME/.skill-insight/openclaw_watcher_client.ts"\nfi\n\n# 4. Configure ~/.skill-insight/.env\nSKILL_INSIGHT_CONFIG_FILE="$HOME/.skill-insight/.env"\nEXISTING_KEY=""\nEXISTING_HOST=""\nEXISTING_SHOW_TASK_STATS=""\nif [ -f "$SKILL_INSIGHT_CONFIG_FILE" ]; then\n EXISTING_KEY=$(grep \'^SKILL_INSIGHT_API_KEY=\' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d\'=\' -f2-)\n EXISTING_HOST=$(grep \'^SKILL_INSIGHT_HOST=\' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d\'=\' -f2-)\n EXISTING_SHOW_TASK_STATS=$(grep \'^SKILL_INSIGHT_SHOW_TASK_STATS=\' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d\'=\' -f2-)\nfi\n\n# -- API Key Logic --\nFINAL_KEY="$EXISTING_KEY"\nif [ -n "$EXISTING_KEY" ]; then\n echo "🔑 Found existing API Key."\n read -p "👉 Use existing key? (y/N, Default: y): " USE_EXISTING < /dev/tty\n if [[ "$USE_EXISTING" =~ ^[Nn]$ ]]; then\n read -p "👉 Please enter your NEW API Key: " FINAL_KEY < /dev/tty\n fi\nelse\n echo "🔑 SKILL_INSIGHT_API_KEY is not set."\n read -p "👉 Please enter your API Key: " FINAL_KEY < /dev/tty\nfi\n\n# -- Host Logic --\nFINAL_HOST="$SKILL_INSIGHT_HOST"\nif [ -n "$EXISTING_HOST" ] && [ "$EXISTING_HOST" != "$SKILL_INSIGHT_HOST" ]; then\n echo "🌐 Current Host in config: $EXISTING_HOST"\n echo "🌐 New Host detected: $SKILL_INSIGHT_HOST"\n read -p "👉 Change to new Host? (y/N, Default: y): " CHANGE_HOST < /dev/tty\n if [[ "$CHANGE_HOST" =~ ^[Nn]$ ]]; then\n FINAL_HOST="$EXISTING_HOST"\n fi\nelif [ -z "$EXISTING_HOST" ]; then\n FINAL_HOST="$SKILL_INSIGHT_HOST"\nfi\n\nFINAL_SHOW_TASK_STATS="$EXISTING_SHOW_TASK_STATS"\nif [ -z "$FINAL_SHOW_TASK_STATS" ]; then\n FINAL_SHOW_TASK_STATS="true"\nfi\n\nif [ -z "$FINAL_KEY" ]; then\n echo "⚠️ Warning: No API Key provided. Telemetry upload will fail until you set it in $SKILL_INSIGHT_CONFIG_FILE"\nfi\n\necho "⚙️ Updating configuration..."\ntouch "$SKILL_INSIGHT_CONFIG_FILE"\ncp "$SKILL_INSIGHT_CONFIG_FILE" "${SKILL_INSIGHT_CONFIG_FILE}.bak"\ngrep -v "^SKILL_INSIGHT_HOST=" "${SKILL_INSIGHT_CONFIG_FILE}.bak" | grep -v "^SKILL_INSIGHT_API_KEY=" | grep -v "^SKILL_INSIGHT_SHOW_TASK_STATS=" > "$SKILL_INSIGHT_CONFIG_FILE"\necho "SKILL_INSIGHT_HOST=$FINAL_HOST" >> "$SKILL_INSIGHT_CONFIG_FILE"\necho "SKILL_INSIGHT_API_KEY=$FINAL_KEY" >> "$SKILL_INSIGHT_CONFIG_FILE"\necho "SKILL_INSIGHT_SHOW_TASK_STATS=$FINAL_SHOW_TASK_STATS" >> "$SKILL_INSIGHT_CONFIG_FILE"\nrm "${SKILL_INSIGHT_CONFIG_FILE}.bak"\necho "✅ Configuration updated at $SKILL_INSIGHT_CONFIG_FILE"\n\n# 6. Install Watcher Dependencies\nif [ "$INSTALL_CLAUDE" = "true" ] || [ "$INSTALL_OPENCLAW" = "true" ]; then\n echo ""\n echo "📦 Installing watcher dependencies..."\n if command -v npm &> /dev/null; then\n cd "$HOME/.skill-insight"\n if [ ! -f "package.json" ]; then\n echo \'{"name": "skill-insight-watcher", "version": "1.0.0", "type": "module", "dependencies": {}}\' > package.json\n fi\n npm install chokidar --save 2>/dev/null\n echo "✅ Dependencies installed"\n else\n echo "⚠️ npm not found. Skipping dependency installation."\n fi\nfi\n\n# 7. Create Watcher Startup/Stop Scripts\nNEEDS_WATCHER_SCRIPTS=false\nif [ "$INSTALL_CLAUDE" = "true" ] || [ "$INSTALL_OPENCLAW" = "true" ]; then\n NEEDS_WATCHER_SCRIPTS=true\nfi\n\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "📝 Creating watcher management scripts..."\n\n if [ "$INSTALL_CLAUDE" = "true" ]; then\n cat > "$HOME/.skill-insight/start_claude_watcher.sh" << \'WATCHER_EOF\'\n#!/bin/bash\npkill -f "claude_watcher_client.ts" 2>/dev/null\ncd "$HOME/.skill-insight" && nohup npx -y tsx "$HOME/.skill-insight/claude_watcher_client.ts" > "$HOME/.skill-insight/logs/claude_watcher.log" 2>&1 &\necho $! > "$HOME/.skill-insight/claude_watcher.pid"\necho "Claude watcher started with PID $(cat $HOME/.skill-insight/claude_watcher.pid)"\nWATCHER_EOF\n chmod +x "$HOME/.skill-insight/start_claude_watcher.sh"\n\n cat > "$HOME/.skill-insight/stop_claude_watcher.sh" << \'STOP_CLAUDE_EOF\'\n#!/bin/bash\npkill -f "claude_watcher_client.ts" 2>/dev/null\nrm -f "$HOME/.skill-insight/claude_watcher.pid"\necho "Claude watcher stopped"\nSTOP_CLAUDE_EOF\n chmod +x "$HOME/.skill-insight/stop_claude_watcher.sh"\n fi\n\n if [ "$INSTALL_OPENCLAW" = "true" ]; then\n cat > "$HOME/.skill-insight/start_openclaw_watcher.sh" << \'WATCHER_EOF\'\n#!/bin/bash\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\ncd "$HOME/.skill-insight" && nohup npx -y tsx "$HOME/.skill-insight/openclaw_watcher_client.ts" > "$HOME/.skill-insight/logs/openclaw_watcher.log" 2>&1 &\necho $! > "$HOME/.skill-insight/openclaw_watcher.pid"\necho "OpenClaw watcher started with PID $(cat $HOME/.skill-insight/openclaw_watcher.pid)"\nWATCHER_EOF\n chmod +x "$HOME/.skill-insight/start_openclaw_watcher.sh"\n\n cat > "$HOME/.skill-insight/stop_openclaw_watcher.sh" << \'STOP_OPENCLAW_EOF\'\n#!/bin/bash\npkill -f "openclaw_watcher_client.ts" 2>/dev/null\nrm -f "$HOME/.skill-insight/openclaw_watcher.pid"\necho "OpenClaw watcher stopped"\nSTOP_OPENCLAW_EOF\n chmod +x "$HOME/.skill-insight/stop_openclaw_watcher.sh"\n fi\n\n cat > "$HOME/.skill-insight/start_watchers.sh" << \'WATCHER_HEADER\'\n#!/bin/bash\necho "Starting Skill-Insight watchers..."\nWATCHER_HEADER\n if [ "$INSTALL_CLAUDE" = "true" ]; then echo \'"$HOME/.skill-insight/start_claude_watcher.sh"\' >> "$HOME/.skill-insight/start_watchers.sh"; fi\n if [ "$INSTALL_OPENCLAW" = "true" ]; then echo \'"$HOME/.skill-insight/start_openclaw_watcher.sh"\' >> "$HOME/.skill-insight/start_watchers.sh"; fi\n echo \'echo "All watchers started!"\' >> "$HOME/.skill-insight/start_watchers.sh"\n chmod +x "$HOME/.skill-insight/start_watchers.sh"\n\n cat > "$HOME/.skill-insight/stop_watchers.sh" << \'STOP_HEADER\'\n#!/bin/bash\necho "Stopping Skill-Insight watchers..."\nSTOP_HEADER\n if [ "$INSTALL_CLAUDE" = "true" ]; then echo \'"$HOME/.skill-insight/stop_claude_watcher.sh"\' >> "$HOME/.skill-insight/stop_watchers.sh"; fi\n if [ "$INSTALL_OPENCLAW" = "true" ]; then echo \'"$HOME/.skill-insight/stop_openclaw_watcher.sh"\' >> "$HOME/.skill-insight/stop_watchers.sh"; fi\n echo \'echo "All watchers stopped!"\' >> "$HOME/.skill-insight/stop_watchers.sh"\n chmod +x "$HOME/.skill-insight/stop_watchers.sh"\nfi\n\n# 8. Start Watchers Now\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "🚀 Starting telemetry watchers..."\n if command -v npx &> /dev/null; then\n "$HOME/.skill-insight/start_watchers.sh"\n else\n echo "⚠️ Node.js (npx) not found. Skipping watcher startup."\n fi\nfi\n\n# 10. Final Summary\necho ""\necho "🌟 Skill-Insight Telemetry: READY"\necho "------------------------------------------------"\necho "Installed Components:"\nif [ "$INSTALL_OPENCODE" = "true" ]; then echo " ✅ OpenCode Plugin: ~/.opencode/plugins/Witty-Skill-Insight.ts"; fi\nif [ "$INSTALL_OPENCODE" = "true" ]; then echo " ✅ OpenCode Command: ~/.config/opencode/commands/si-optimizer.md"; fi\nif [ "$INSTALL_CLAUDE" = "true" ]; then echo " ✅ Claude Watcher: ~/.skill-insight/claude_watcher_client.ts"; fi\nif [ "$INSTALL_OPENCLAW" = "true" ]; then echo " ✅ OpenClaw Watcher: ~/.skill-insight/openclaw_watcher_client.ts"; fi\n\nif [ "$NEEDS_WATCHER_SCRIPTS" = "true" ]; then\n echo ""\n echo "Watcher Management:"\n echo " Start all: ~/.skill-insight/start_watchers.sh"\n echo " Stop all: ~/.skill-insight/stop_watchers.sh"\n echo " Logs: ~/.skill-insight/logs/"\nfi\n\necho ""\necho "Usage:"\nif [ "$INSTALL_OPENCODE" = "true" ]; then echo " 1. Run: opencode run \'hello\'"; fi\nif [ "$INSTALL_CLAUDE" = "true" ]; then echo " 2. Run: claude (restart terminal first)"; fi\nif [ "$INSTALL_OPENCLAW" = "true" ]; then echo " 3. OpenClaw will automatically monitor and upload telemetry"; fi\necho "------------------------------------------------"'].join("\n");return new u.NextResponse(e,{headers:{"Content-Type":"text/x-shellscript"}})}}e.s(["GET",()=>T],21965);var $=e.i(21965);let N=new n.AppRouteRouteModule({definition:{kind:t.RouteKind.APP_ROUTE,page:"/api/setup/route",pathname:"/api/setup",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/setup/route.ts",nextConfigOutput:"standalone",userland:$}),{workAsyncStorage:O,workUnitAsyncStorage:g,serverHooks:C}=N;function f(){return(0,i.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:g})}async function H(e,n,i){N.isDev&&(0,o.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let u="/api/setup/route";u=u.replace(/\/index$/,"")||"/";let T=await N.prepare(e,n,{srcPage:u,multiZoneDraftMode:!1});if(!T)return n.statusCode=400,n.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:$,params:O,nextConfig:g,parsedUrl:C,isDraftMode:f,prerenderManifest:H,routerServerContext:m,isOnDemandRevalidate:A,revalidateOnlyGenerated:w,resolvedPathname:R,clientReferenceManifest:F,serverActionsManifest:P}=T,k=(0,r.normalizeAppPath)(u),G=!!(H.dynamicRoutes[k]||H.routes[R]),W=async()=>((null==m?void 0:m.render404)?await m.render404(e,n,C,!1):n.end("This page could not be found"),null);if(G&&!f){let e=!!H.routes[R],n=H.dynamicRoutes[k];if(n&&!1===n.fallback&&!e){if(g.experimental.adapterPath)return await W();throw new p.NoFallbackError}}let D=null;!G||N.isDev||f||(D="/index"===(D=R)?"/":D);let y=!0===N.isDev||!G,K=G&&!y;P&&F&&(0,l.setManifestsSingleton)({page:u,clientReferenceManifest:F,serverActionsManifest:P});let v=e.method||"GET",x=(0,s.getTracer)(),U=x.getActiveScopeSpan(),b={params:O,prerenderManifest:H,renderOpts:{experimental:{authInterrupts:!!g.experimental.authInterrupts},cacheComponents:!!g.cacheComponents,supportsDynamicResponse:y,incrementalCache:(0,o.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:g.cacheLife,waitUntil:i.waitUntil,onClose:e=>{n.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(n,t,i,o)=>N.onRequestError(e,n,i,o,m)},sharedContext:{buildId:$}},M=new a.NodeNextRequest(e),X=new a.NodeNextResponse(n),q=c.NextRequestAdapter.fromNodeNextRequest(M,(0,c.signalFromNodeResponse)(n));try{let l=async e=>N.handle(q,b).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":n.statusCode,"next.rsc":!1});let t=x.getRootSpanAttributes();if(!t)return;if(t.get("next.span_type")!==S.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${t.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=t.get("next.route");if(i){let n=`${v} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":n}),e.updateName(n)}else e.updateName(`${v} ${u}`)}),r=!!(0,o.getRequestMeta)(e,"minimalMode"),a=async o=>{var s,a;let c=async({previousCacheEntry:t})=>{try{if(!r&&A&&w&&!t)return n.statusCode=404,n.setHeader("x-nextjs-cache","REVALIDATED"),n.end("This page could not be found"),null;let s=await l(o);e.fetchMetrics=b.renderOpts.fetchMetrics;let a=b.renderOpts.pendingWaitUntil;a&&i.waitUntil&&(i.waitUntil(a),a=void 0);let c=b.renderOpts.collectedTags;if(!G)return await (0,I.sendResponse)(M,X,s,b.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),n=(0,h.toNodeOutgoingHttpHeaders)(s.headers);c&&(n[d.NEXT_CACHE_TAGS_HEADER]=c),!n["content-type"]&&e.type&&(n["content-type"]=e.type);let t=void 0!==b.renderOpts.collectedRevalidate&&!(b.renderOpts.collectedRevalidate>=d.INFINITE_CACHE)&&b.renderOpts.collectedRevalidate,i=void 0===b.renderOpts.collectedExpire||b.renderOpts.collectedExpire>=d.INFINITE_CACHE?void 0:b.renderOpts.collectedExpire;return{value:{kind:L.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:n},cacheControl:{revalidate:t,expire:i}}}}catch(n){throw(null==t?void 0:t.isStale)&&await N.onRequestError(e,n,{routerKind:"App Router",routePath:u,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:A})},!1,m),n}},S=await N.handleResponse({req:e,nextConfig:g,cacheKey:D,routeKind:t.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:H,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:w,responseGenerator:c,waitUntil:i.waitUntil,isMinimalMode:r});if(!G)return null;if((null==S||null==(s=S.value)?void 0:s.kind)!==L.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==S||null==(a=S.value)?void 0:a.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});r||n.setHeader("x-nextjs-cache",A?"REVALIDATED":S.isMiss?"MISS":S.isStale?"STALE":"HIT"),f&&n.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(S.value.headers);return r&&G||p.delete(d.NEXT_CACHE_TAGS_HEADER),!S.cacheControl||n.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,E.getCacheControlHeader)(S.cacheControl)),await (0,I.sendResponse)(M,X,new Response(S.value.body,{headers:p,status:S.value.status||200})),null};U?await a(U):await x.withPropagatedContext(e.headers,()=>x.trace(S.BaseServerSpan.handleRequest,{spanName:`${v} ${u}`,kind:s.SpanKind.SERVER,attributes:{"http.method":v,"http.target":e.url}},a))}catch(n){if(n instanceof p.NoFallbackError||await N.onRequestError(e,n,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,_.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:A})},!1,m),G)throw n;return await (0,I.sendResponse)(M,X,new Response(null,{status:500})),null}}e.s(["handler",()=>H,"patchFetch",()=>f,"routeModule",()=>N,"serverHooks",()=>C,"workAsyncStorage",()=>O,"workUnitAsyncStorage",()=>g],26984)}];
2
2
 
3
3
  //# sourceMappingURL=node_modules_next_dist_esm_build_templates_app-route_f42faeee.js.map
@@ -0,0 +1,175 @@
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}
3
+
4
+ `:"";return`
5
+ 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
+
7
+ ${l}User Query: ${e}
8
+ User Answer: ${t}
9
+
10
+ Evaluation Criteria (Score strictly based on these weighted items):
11
+ 1. Root Causes (Must identify these issues):
12
+ ${n.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
13
+
14
+ 2. Key Actions (Must perform these actions):
15
+ ${s.map(e=>` - [ID: ${e.id}] [Weight: ${e.weight}] ${e.content}`).join("\n")||" (None)"}
16
+
17
+ Evaluation Steps:
18
+ 1. For each item listed above (marked with [ID: ...]), determine the degree of match (0.0 to 1.0).
19
+ - 0.0 = Not mentioned or completely wrong.
20
+ - 0.5 = Partially mentioned or vague.
21
+ - 1.0 = Clearly and correctly addressed.
22
+ **CRITICAL**: For Key Actions involving specific operations (e.g., "backup", "modify", "restart"), you must find EXPLICT EVIDENCE in the User Answer that these actions were performed (checking/reading is NOT the same as backing up).
23
+ 2. Provide a brief explanation (in Chinese) for your evaluation of each item.
24
+ 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
+
26
+ Respond ONLY with a JSON object in the following format:
27
+ {
28
+ "evaluations": [
29
+ { "id": "RC-0", "match_score": 0.5, "explanation": "此处用中文简要解释评分理由..." },
30
+ { "id": "KA-0", "match_score": 1.0, "explanation": "..." }
31
+ ...
32
+ ]
33
+ }
34
+ `}e.s(["generateJudgePrompt",()=>t])},33526,e=>{"use strict";let t=`
35
+ 你是一个专业的 Skill 优化分析师。你的任务是:
36
+
37
+ 1. 分析 Agent 在某个评分项上扣分的原因
38
+ 2. 判断该扣分是否可以通过优化 Skill 定义来解决
39
+ 3. 检查 Agent 的实际执行过程是否符合 Skill 中定义的步骤
40
+
41
+ ## 判断标准
42
+
43
+ **是 Skill 问题的情况**:
44
+ - Skill 中完全没有提到该知识点或操作步骤
45
+ - Skill 中的描述不够清晰或不够详细,导致 Agent 无法正确理解
46
+ - Skill 中缺少关键的参数说明、工具使用方法或注意事项
47
+ - Skill 中的信息过时或与实际情况不符
48
+ - Agent 的执行步骤与 Skill 定义不一致,但 Skill 的指导本身存在问题(如步骤顺序不合理、缺少前置条件说明等)
49
+
50
+ **不是 Skill 问题的情况**:
51
+ - Skill 中已经清楚地包含了相关信息,但 Agent 没有正确使用(模型能力问题)
52
+ - 该评分项要求的是通用知识,不在 Skill 的职责范围内
53
+ - 该评分项涉及的是运行时环境问题(网络、权限等)
54
+ - Agent 的执行过程偏离了 Skill 的指导,但 Skill 的指导本身是正确和清晰的
55
+
56
+ ## 分析步骤
57
+
58
+ 1. **阅读 Skill 定义**:理解 Skill 规定的操作步骤和知识要点
59
+ 2. **查看交互历史**:观察 Agent 实际执行了哪些操作
60
+ 3. **对比分析**:
61
+ - Agent 的执行是否遵循了 Skill 的指导?
62
+ - 如果没有遵循,是因为 Skill 不清晰,还是 Agent 自身的问题?
63
+ - 评分项要求的内容在 Skill 中是否有足够的覆盖?
64
+ 4. **得出结论**:判断是否是 Skill 问题,并给出改进建议
65
+
66
+ ## 输出格式
67
+
68
+ 请以 JSON 格式返回:
69
+ {
70
+ "id": "评分项ID",
71
+ "is_skill_issue": true或false,
72
+ "reasoning": "使用中文详细解释判断依据,需要:1) 引用 Skill 定义中的相关内容 2) 说明 Agent 执行过程中的表现 3) 解释为什么是/不是 Skill 问题",
73
+ "improvement_suggestion": "如果是 Skill 问题,给出具体的改进建议,说明应该在 Skill 中添加或修改什么内容;否则留空或不填"
74
+ }
75
+ `;function n(e,n,s,i,l){return`${t}
76
+
77
+ ---
78
+
79
+ ## 分析材料
80
+
81
+ ### [当前 Skill 定义]
82
+ \`\`\`
83
+ ${e}
84
+ \`\`\`
85
+
86
+ ### [用户问题]
87
+ ${s}
88
+
89
+ ### [Agent 执行过程 - 完整交互历史]
90
+ \`\`\`
91
+ ${l}
92
+ \`\`\`
93
+
94
+ ### [Agent 最终回答]
95
+ ${i}
96
+
97
+ ### [待分析的评分项]
98
+ - **ID**: ${n.id}
99
+ - **类型**: ${"root_cause"===n.type?"Root Cause (根因分析)":"Key Action (关键操作)"}
100
+ - **评分标准**: ${n.content}
101
+ - **得分**: ${(100*n.match_score).toFixed(0)}% (满分 100%)
102
+ - **扣分原因**: ${n.explanation}
103
+ - **权重**: ${n.weight}
104
+
105
+ ---
106
+
107
+ 请根据以上材料,判断此评分项的扣分是否可以通过优化 Skill 定义来改善,并输出 JSON 结果:`}e.s(["SKILL_ISSUE_ANALYSIS_PROMPT",0,t,"generateSkillIssuePrompt",()=>n])},44087,e=>{"use strict";let t=`
108
+ 你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的对话历史(包括工具输出),并提取任何“中间故障”或“异常过程”。
109
+
110
+ “中间故障”或“异常过程”定义如下:
111
+ 1. **工具执行错误**:代理尝试运行工具(例如 bash 命令、python 脚本)但失败了(非零退出代码、堆栈跟踪、错误消息)。
112
+ 2. **逻辑/推理修正**:代理意识到自己犯了错误并明确纠正自己(例如,“我犯了一个错误...”,“之前的方法失败了...”)。
113
+ 3. **超时/卡住**:代理提到等待太久或进程卡住。
114
+ 4. **无效参数**:代理尝试使用带有无效参数的工具并被系统拒绝。
115
+
116
+ 你将获得包含完整对话历史的最后一次交互内容。
117
+
118
+ 逐步分析历史记录。对于发现的每个故障,提取:
119
+ - failure_type: (Tool Error / Reasoning Error / Timeout / Invalid Usage)
120
+ - description: 用中文简要总结出了什么问题。
121
+ - context: 导致失败的具体命令或推理内容。
122
+ - recovery: 代理如何尝试恢复(如果有)。
123
+
124
+ 仅以以下 JSON 格式响应:
125
+ {
126
+ "failures": [
127
+ {
128
+ "failure_type": "Tool Error",
129
+ "description": "无法安装包 'xyz'",
130
+ "context": "pip install xyz",
131
+ "recovery": "代理尝试改用 apt-get。"
132
+ },
133
+ ...
134
+ ]
135
+ }
136
+
137
+ 如果未发现故障,请返回:
138
+ {
139
+ "failures": []
140
+ }
141
+ `;function n(e){return`
142
+ ${t}
143
+
144
+ Conversation History:
145
+ ${e}
146
+ `}e.s(["FAILURE_EXTRACTION_PROMPT",0,t,"generateFailureAnalysisPrompt",()=>n])},18868,e=>{"use strict";let t=`
147
+ 你是一位专家级的日志分析师。你的任务是分析用户与 AI 助手之间的完整对话历史,并精准提取本次会话的**最终执行结果**。
148
+
149
+ **提取规则:**
150
+ 1. **必须完整保留**:如果最终结果分散在多个连续的回复中(例如先输出长篇详细报告,紧接着输出总结摘要),必须将它们**全部提取并按顺序拼接**,形成一个完整的报告。
151
+ 2. **剔除过程噪声**:只提取最终交付给用户的有效信息(如分析报告、代码方案、问题解答)。必须剔除之前的思考过程、工具调用命令(如 bash/python)、工具执行日志、自我纠正的尝试等中间过程。
152
+ 3. **保持原样**:提取的内容必须**完全保持原样(Verbatim)**,不要进行总结、改写或缩减。包括 Markdown 格式(标题、列表、代码块)都要保留。
153
+ 4. **识别头部**:通常最终结果会以明确的标题开始(如 "# 分析报告"、"## 结论"),或者直接给出用户请求的答案。
154
+
155
+ **输入数据:**
156
+ 完整的对话历史记录。
157
+
158
+ **输出格式:**
159
+ 请直接返回提取后的最终结果内容。不要包含 JSON 格式,不要包含 "Here is the result:" 等废话,由于内容可能包含 Markdown,请确保输出是纯文本格式的 Markdown 内容。
160
+ `;function n(e){return`
161
+ ${t}
162
+
163
+ **对话历史:**
164
+ ${e}
165
+
166
+ **请提取最终结果:**
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}
172
+ `});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)];
174
+
175
+ //# sourceMappingURL=src_98433cb8._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[11811,e=>{"use strict";var l=e.i(22734),t=e.i(14747);let i={"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}},o={"claude-opus-4-6":1e6,"claude-sonnet-4-6":1e6,"deepseek-chat":128e3,"deepseek-reasoner":128e3,"minimax-m2.5-free":196608},n=t.default.join(process.cwd(),"custom-models.json"),s={},r={},a=-1;function u(){try{let e=l.default.statSync(n).mtimeMs;if(e===a)return{pricing:s,contextWindows:r};let t=JSON.parse(l.default.readFileSync(n,"utf-8")),i={},o={};for(let[e,l]of Object.entries(t))e.startsWith("_")||("number"==typeof l.inputTokenPrice&&"number"==typeof l.outputTokenPrice&&(i[e]=l),"number"==typeof l.contextWindow&&(o[e]=l.contextWindow));s=i,r=o,a=e}catch(e){e instanceof SyntaxError&&console.warn("[model-config] Failed to parse custom-models.json:",e.message),s={},r={},a=-1}return{pricing:s,contextWindows:r}}function c(e,l){if(l[e])return l[e];for(let[t,i]of Object.entries(l).sort((e,l)=>l[0].length-e[0].length))if(e.startsWith(t))return i;return null}function k(e){let{pricing:l}=u(),t=c(e,l);if(t)return{pricing:t,source:"custom"};let o=c(e,i);return o?{pricing:o,source:"default"}:null}function d(e){let{contextWindows:l}=u(),t=c(e,l);if(null!=t)return{contextWindow:t,source:"custom"};let i=c(e,o);return null!=i?{contextWindow:i,source:"default"}:null}function _(e,l,t,i,o){let n=t.cacheReadInputTokenPrice??.1*t.inputTokenPrice,s=t.cacheCreationInputTokenPrice??1.25*t.inputTokenPrice;return(e*t.inputTokenPrice+(i??0)*n+(o??0)*s+l*t.outputTokenPrice)/1e6}e.s(["DEFAULT_CACHE_CREATION_RATIO",0,1.25,"DEFAULT_CACHE_READ_RATIO",0,.1,"calculateCost",()=>_,"getModelContextWindow",()=>d,"getModelPricing",()=>k])},85765,e=>e.a(async(l,t)=>{try{var i=e.i(22734),o=e.i(14747),n=e.i(31390),s=e.i(98043),r=e.i(11811),a=l([n,s]);function u(e,l){if(!l)return;let t=l.trim(),i=e.filter(e=>e.query&&e.query.trim()).filter(e=>{let l=e.query.trim();return t.endsWith(l)});if(0!==i.length)return i.reduce((e,l)=>{let t=e.query.trim().length;return l.query.trim().length>t?l:e})}[n,s]=a.then?(await a)():a;let _=o.default.join(process.cwd(),"data"),p=o.default.join(_,"evaluation_result.json");async function c(e,l){let t={};if(e&&(t.OR=[{user:e},{user:null}]),!l?.query&&l?.taskId){let e=await s.db.findExecutionById(l.taskId);e&&e.query?(t.query=e.query,l.framework&&(t.framework=l.framework)):t.id=l.taskId}else l?.query&&(t.query=l.query,l.framework&&(t.framework=l.framework));return l?.skill!==void 0&&(t.skill=l.skill),l?.skillVersion!==void 0&&(t.skillVersion=l.skillVersion),(await s.db.findExecutions(t,{timestamp:"desc"})).map(e=>{let l=e.model??null,t=l?(0,r.getModelPricing)(l):null,i=t?.pricing??null,o=l&&null!=e.maxSingleCallTokens?(0,r.getModelContextWindow)(l):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:i&&null!=e.inputTokens&&null!=e.outputTokens?(0,r.calculateCost)(e.inputTokens,e.outputTokens,i,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:l,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,expected_skill_version:e.expectedSkillVersion??null,skill_recall_rate:e.skillRecallRate??null,context_window_pct:null!=e.maxSingleCallTokens&&o?Math.round(e.maxSingleCallTokens/o.contextWindow*1e3)/10:void 0,context_window_limit:o?.contextWindow,context_window_source:o?.source,cost_pricing:i?{inputTokenPrice:i.inputTokenPrice,outputTokenPrice:i.outputTokenPrice,cacheReadInputTokenPrice:i.cacheReadInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_READ_RATIO,cacheCreationInputTokenPrice:i.cacheCreationInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_CREATION_RATIO,source:t?.source??"default"}:null}})}async function k(e){let l={};return e&&(l.OR=[{user:e},{user:null}]),(await s.db.findConfigs(l)).map(e=>{let l=(l,t)=>{if(l)try{return JSON.parse(l)}catch(l){console.error(`[readConfig] Failed to parse ${t} for config ${e.id}:`,l);return}};return{id:e.id,query:e.query,skill:e.skill,skillVersion:e.skillVersion,expectedSkills:l(e.expectedSkills,"expectedSkills"),standard_answer:e.standardAnswer,root_causes:l(e.rootCauses,"rootCauses"),key_actions:l(e.keyActions,"keyActions"),parse_status:e.parseStatus||"completed"}})}async function d(e){let l=e.upload_id||e.task_id||crypto.randomUUID(),t=null,o=await s.db.findExecutionById(l);o&&(t={...o,upload_id:o.id,task_id:o.taskId||void 0,query:o.query||void 0,framework:o.framework||void 0,tokens:o.tokens||void 0,cost:o.cost||void 0,latency:o.latency||void 0,timestamp:o.timestamp?.toISOString?.()||o.timestamp,final_result:o.finalResult||void 0,skill:o.skill||void 0,skills:o.skills?JSON.parse(o.skills):void 0,is_skill_correct:o.isSkillCorrect||!1,is_answer_correct:o.isAnswerCorrect||!1,answer_score:o.answerScore||void 0,skill_score:o.skillScore||void 0,judgment_reason:o.judgmentReason||void 0,failures:o.failures?JSON.parse(o.failures):void 0,skill_issues:o.skillIssues?JSON.parse(o.skillIssues):void 0,label:o.label||void 0,user:o.user||void 0,skill_version:o.skillVersion||void 0,expected_skill_version:o.expectedSkillVersion??null,skill_recall_rate:o.skillRecallRate??null,model:o.model||void 0,tool_call_count:o.toolCallCount??void 0,llm_call_count:o.llmCallCount??void 0,input_tokens:o.inputTokens??void 0,output_tokens:o.outputTokens??void 0,tool_call_error_count:o.toolCallErrorCount??void 0,cache_read_input_tokens:o.cacheReadInputTokens??void 0,cache_creation_input_tokens:o.cacheCreationInputTokens??void 0,max_single_call_tokens:o.maxSingleCallTokens??void 0});let r=t?{...t}:{},a=!!t;if(a||r.timestamp||e.timestamp?e.timestamp&&(r.timestamp=e.timestamp):r.timestamp=new Date().toISOString(),!(r={...r,...e}).upload_id&&r.task_id&&(r.upload_id=r.task_id),!r.task_id&&r.upload_id&&(r.task_id=r.upload_id),r.upload_id=l,(!r.label||!r.model||!r.user)&&r.task_id){let e=await s.db.findSessionByTaskId(r.task_id);e&&(!r.label&&e.label&&(r.label=e.label),!r.model&&e.model&&(r.model=e.model),!r.user&&e.user&&(r.user=e.user))}if(!r.user)try{let e=s.db.getClient();if("query"in e){let l=await e.query('SELECT username FROM "User" LIMIT 1');l.rows[0]&&(r.user=l.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${r.task_id} to: ${r.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let c=e.Token||e.token||e.tokens;void 0!==c&&(r.tokens=Number(c)),void 0!==e.tool_call_count&&(r.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(r.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(r.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(r.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(r.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(r.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(r.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(r.max_single_call_tokens=Number(e.max_single_call_tokens));let d="未找到匹配的评测配置",_=!1,m=r.is_answer_correct||!1,f=r.judgment_reason||d,v=await k(r.user);if(r.query&&v.length>0){let l=u(v,r.query);if(l){let i=r.invokedSkills||[],o=(r.skills||[]).map(e=>({name:e,version:null})),u=l.expectedSkills||[];if(u.length>0){let e=i.length>0?i:o;if(e.length>0){let l=0,t=u.filter(e=>e.skill?.trim()),i=t.map(e=>e.skill.trim()),o=new Map;if(i.length>0)try{for(let e of(await s.db.findSkills({name:{in:i},user:r.user||null})))o.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let i of t){let t=i.skill.trim(),n=i.version??null,s=e.find(e=>e.name===t);if(s){let e=!1;if(null===n)e=!0;else if(null!==s.version)e=s.version===n;else{let l=o.get(t);e=!!l&&(l.activeVersion||0)===n}e&&(l++,_||(_=!0))}}t.length>0&&(r.skill_recall_rate=l/t.length)}}if(r.is_skill_correct=_,void 0!==r.final_result){let i=!0;if(a&&!e.force_judgment&&t&&t.query===r.query&&t.final_result===r.final_result&&(i=!1),i&&!r.skip_evaluation){let e,t=(r.skill||l.skill||"").trim();if(t)try{let l=await s.db.findSkill(t,r.user||null);if(l){let t=l.activeVersion||0,i=l.versions?.find(e=>e.version===t);if(i&&i.content)e=i.content,r.skill_version=i.version;else if(l.versions&&l.versions.length>0){let t=l.versions[0];t&&t.content&&(e=t.content,r.skill_version=t.version)}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let i=await (0,n.judgeAnswer)(r.query||"",{standard_answer_example:l.standard_answer,root_causes:l.root_causes,key_actions:l.key_actions,skill_definition:e},r.final_result,r.user);m=i.is_correct,r.answer_score=i.score,f=i.reason||"Judged by Evaluation Model"}}}else a&&!e.force_judgment||r.answer_score||(m=!1,f=d,r.answer_score=null)}else r.query&&(!a||e.force_judgment)&&!r.answer_score&&(m=!1,f=d,r.answer_score=null);e.skip_evaluation&&(r.answer_score=null,f="结果评估中..."),r.is_skill_correct=_,r.is_answer_correct=m,r.judgment_reason=f;let w=Array.isArray(r.skills)&&r.skills.length>0?r.skills[0]:void 0;if(w){let e=function(){if(!i.default.existsSync(p))return{};try{return JSON.parse(i.default.readFileSync(p,"utf-8"))}catch{return{}}}()[w];e&&(r.skill_score=parseFloat(e))}return r.skill&&void 0!==r.skill_version&&null!==r.skill_version?r.label=`${r.skill}-v${r.skill_version}`:r.skill?r.label=`${r.skill}-v1`:r.label="without-skill",await s.db.upsertExecution({where:{id:l},create:{id:l,taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens},update:{taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens}}),r.task_id&&r.interactions&&await s.db.upsertSession(r.task_id,{taskId:r.task_id,query:r.query,label:r.label,user:r.user,model:r.model,interactions:"string"==typeof r.interactions?r.interactions:JSON.stringify(r.interactions)},{query:r.query,label:r.label,user:r.user,model:r.model,interactions:"string"==typeof r.interactions?r.interactions:JSON.stringify(r.interactions)}),{success:!0,record:r}}e.s(["findBestMatchConfig",()=>u,"readConfig",()=>k,"readRecords",()=>c,"saveExecutionRecord",()=>d]),t()}catch(e){t(e)}},!1)];
1
+ module.exports=[11811,e=>{"use strict";var t=e.i(22734),l=e.i(14747);let i={"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}},n={"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"),s={},r={},a=-1;function u(){try{let e=t.default.statSync(o).mtimeMs;if(e===a)return{pricing:s,contextWindows:r};let l=JSON.parse(t.default.readFileSync(o,"utf-8")),i={},n={};for(let[e,t]of Object.entries(l))e.startsWith("_")||("number"==typeof t.inputTokenPrice&&"number"==typeof t.outputTokenPrice&&(i[e]=t),"number"==typeof t.contextWindow&&(n[e]=t.contextWindow));s=i,r=n,a=e}catch(e){e instanceof SyntaxError&&console.warn("[model-config] Failed to parse custom-models.json:",e.message),s={},r={},a=-1}return{pricing:s,contextWindows:r}}function c(e,t){if(t[e])return t[e];for(let[l,i]of Object.entries(t).sort((e,t)=>t[0].length-e[0].length))if(e.startsWith(l))return i;return null}function d(e){let{pricing:t}=u(),l=c(e,t);if(l)return{pricing:l,source:"custom"};let n=c(e,i);return n?{pricing:n,source:"default"}:null}function k(e){let{contextWindows:t}=u(),l=c(e,t);if(null!=l)return{contextWindow:l,source:"custom"};let i=c(e,n);return null!=i?{contextWindow:i,source:"default"}:null}function _(e,t,l,i,n){let o=l.cacheReadInputTokenPrice??.1*l.inputTokenPrice,s=l.cacheCreationInputTokenPrice??1.25*l.inputTokenPrice;return(e*l.inputTokenPrice+(i??0)*o+(n??0)*s+t*l.outputTokenPrice)/1e6}e.s(["DEFAULT_CACHE_CREATION_RATIO",0,1.25,"DEFAULT_CACHE_READ_RATIO",0,.1,"calculateCost",()=>_,"getModelContextWindow",()=>k,"getModelPricing",()=>d])},85765,e=>e.a(async(t,l)=>{try{var i=e.i(22734),n=e.i(14747),o=e.i(85874),s=e.i(98043),r=e.i(11811),a=t([o,s]);function u(e){let t=e.trim(),l=[['"','"'],["'","'"],["“","”"],["‘","’"],["`","`"],["《","》"],["(",")"],["(",")"],["【","】"],["[","]"],["{","}"],["<",">"]];for(let e=0;e<6;e++){let e=t;for(let[e,i]of(t=t.trim(),l))t.startsWith(e)&&t.endsWith(i)&&t.length>=e.length+i.length+1&&(t=t.slice(e.length,-i.length));if(t===e)break}return t=(t=(t=t.replace(/[\s"'“”‘’`。.]/g,"")).replace(/^[\s.,,。!?!?;;::、·…]+|[\s.,,。!?!?;;::、·…]+$/g,"")).replace(/\s+/g," ").trim()}function c(e,t){if(!t)return;let l=u(t);if(!l)return;let i=e.filter(e=>e.query&&e.query.trim()).filter(e=>{let t=u(e.query);return!!t&&l.endsWith(t)});if(0!==i.length)return i.reduce((e,t)=>{let l=u(e.query).length;return u(t.query).length>l?t:e})}[o,s]=a.then?(await a)():a;let p=n.default.join(process.cwd(),"data"),f=n.default.join(p,"evaluation_result.json");async function d(e,t){let l={};if(e&&(l.OR=[{user:e},{user:null}]),!t?.query&&t?.taskId){let e=await s.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 i=await s.db.findExecutions(l,{timestamp:"desc"}),n=new Map;for(let e of i){let t=e.taskId||null;t&&(n.has(t)||n.set(t,[]),n.get(t).push(e))}let o=new Set;for(let[e,t]of n.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 i=t.slice().sort((e,t)=>{let l=new Date(e.timestamp).getTime(),i=new Date(t.timestamp).getTime();if(i!==l)return i-l;let n=String(e.finalResult||"").length;return String(t.finalResult||"").length-n});o.add(i[0].id)}let a=i.filter(e=>!e.taskId||o.has(e.id));for(let[e,t]of n.entries())if(!(t.length<=1))for(let e of t)o.has(e.id)||s.db.deleteExecution(e.id).catch(()=>{});return a.map(e=>{let t=e.model??null,l=t?(0,r.getModelPricing)(t):null,i=l?.pricing??null,n=t&&null!=e.maxSingleCallTokens?(0,r.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:i&&null!=e.inputTokens&&null!=e.outputTokens?(0,r.calculateCost)(e.inputTokens,e.outputTokens,i,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&&n?Math.round(e.maxSingleCallTokens/n.contextWindow*1e3)/10:void 0,context_window_limit:n?.contextWindow,context_window_source:n?.source,cost_pricing:i?{inputTokenPrice:i.inputTokenPrice,outputTokenPrice:i.outputTokenPrice,cacheReadInputTokenPrice:i.cacheReadInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_READ_RATIO,cacheCreationInputTokenPrice:i.cacheCreationInputTokenPrice??i.inputTokenPrice*r.DEFAULT_CACHE_CREATION_RATIO,source:l?.source??"default"}:null}})}async function k(e){let t={};return e&&(t.OR=[{user:e},{user:null}]),(await s.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"),parse_status:e.parseStatus||"completed"}})}async function _(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 i=await s.db.findExecutions(l,{timestamp:"desc"});if(i&&i.length>0&&i[0]?.id){let l=i.find(t=>t.id===e.task_id),n=l&&l.id?l.id:i[0].id;n!==t&&(t=n)}}catch{}let l=null,n=await s.db.findExecutionById(t);n&&(l={...n,upload_id:n.id,task_id:n.taskId||void 0,query:n.query||void 0,framework:n.framework||void 0,tokens:n.tokens||void 0,cost:n.cost||void 0,latency:n.latency||void 0,timestamp:n.timestamp?.toISOString?.()||n.timestamp,final_result:n.finalResult||void 0,skill:n.skill||void 0,skills:n.skills?JSON.parse(n.skills):void 0,invokedSkills:n.invokedSkills?(()=>{try{return JSON.parse(n.invokedSkills)}catch{return}})():void 0,is_skill_correct:n.isSkillCorrect||!1,is_answer_correct:n.isAnswerCorrect||!1,answer_score:n.answerScore||void 0,skill_score:n.skillScore||void 0,judgment_reason:n.judgmentReason||void 0,failures:n.failures?JSON.parse(n.failures):void 0,skill_issues:n.skillIssues?JSON.parse(n.skillIssues):void 0,label:n.label||void 0,user:n.user||void 0,skill_version:n.skillVersion??void 0,expected_skill_version:n.expectedSkillVersion??null,skill_recall_rate:n.skillRecallRate??null,model:n.model||void 0,tool_call_count:n.toolCallCount??void 0,llm_call_count:n.llmCallCount??void 0,input_tokens:n.inputTokens??void 0,output_tokens:n.outputTokens??void 0,tool_call_error_count:n.toolCallErrorCount??void 0,cache_read_input_tokens:n.cacheReadInputTokens??void 0,cache_creation_input_tokens:n.cacheCreationInputTokens??void 0,max_single_call_tokens:n.maxSingleCallTokens??void 0,reasoning_tokens:n.reasoningTokens??void 0});let r=l?{...l}:{},a=!!l;a||r.timestamp||e.timestamp?e.timestamp&&(r.timestamp=e.timestamp):r.timestamp=new Date().toISOString();let u=!!e.force_query_update,d="string"==typeof l?.query?l.query.trim():"",_="string"==typeof e.query?e.query.trim():"";if(r={...r,...e},d&&!u?r.query=d:!d&&_?r.query=_:"string"!=typeof r.query||r.query.trim()?"string"==typeof r.query&&(r.query=r.query.trim()):r.query=void 0,!r.upload_id&&r.task_id&&(r.upload_id=r.task_id),!r.task_id&&r.upload_id&&(r.task_id=r.upload_id),r.upload_id=t,(!r.label||!r.model||!r.user)&&r.task_id){let e=await s.db.findSessionByTaskId(r.task_id);e&&(!r.label&&e.label&&(r.label=e.label),!r.model&&e.model&&(r.model=e.model),!r.user&&e.user&&(r.user=e.user))}if(!r.user)try{let e=s.db.getClient();if("query"in e){let t=await e.query('SELECT username FROM "User" LIMIT 1');t.rows[0]&&(r.user=t.rows[0].username,console.log(`[Data-Service] Fallback resolved user for task ${r.task_id} to: ${r.user}`))}}catch(e){console.warn("[Data-Service] Fallback user lookup failed:",e)}let p=e.Token||e.token||e.tokens;void 0!==p&&(r.tokens=Number(p)),void 0!==e.tool_call_count&&(r.tool_call_count=Number(e.tool_call_count)),void 0!==e.llm_call_count&&(r.llm_call_count=Number(e.llm_call_count)),void 0!==e.input_tokens&&(r.input_tokens=Number(e.input_tokens)),void 0!==e.output_tokens&&(r.output_tokens=Number(e.output_tokens)),void 0!==e.tool_call_error_count&&(r.tool_call_error_count=Number(e.tool_call_error_count)),void 0!==e.cache_read_input_tokens&&(r.cache_read_input_tokens=Number(e.cache_read_input_tokens)),void 0!==e.cache_creation_input_tokens&&(r.cache_creation_input_tokens=Number(e.cache_creation_input_tokens)),void 0!==e.max_single_call_tokens&&(r.max_single_call_tokens=Number(e.max_single_call_tokens)),void 0!==e.reasoning_tokens&&(r.reasoning_tokens=Number(e.reasoning_tokens));let m="未找到匹配的评测配置",v=!1,g=r.is_answer_correct||!1,y=r.judgment_reason||m,w=await k(r.user);if(r.query&&w.length>0){let t=c(w,r.query);if(t){let i=Array.isArray(r.invokedSkills)?r.invokedSkills:[],n=(Array.isArray(r.skills)?r.skills:[]).map(e=>({name:e,version:null})),u=t.expectedSkills||[];if(u.length>0){let e=i.length>0?i:n;if(e.length>0){let t=0,l=u.filter(e=>e.skill?.trim()),i=l.map(e=>e.skill.trim()),n=new Map;if(i.length>0)try{for(let e of(await s.db.findSkills({name:{in:i},user:r.user||null})))n.set(e.name,e)}catch(e){console.error("[Judgment] Error fetching skills for version check:",e)}for(let i of l){let l=i.skill.trim(),o=i.version??null,s=e.find(e=>e.name===l);if(s){let e=!1;if(null===o)e=!0;else if(null!==s.version)e=s.version===o;else{let t=n.get(l);e=!!t&&(t.activeVersion||0)===o}e&&(t++,v||(v=!0))}}l.length>0&&(r.skill_recall_rate=t/l.length)}}if(r.is_skill_correct=v,void 0!==r.final_result){let i=!0;if(a&&!e.force_judgment&&l&&l.query===r.query&&l.final_result===r.final_result&&(i=!1),i&&!r.skip_evaluation){let e,l=(r.skill||t.skill||"").trim();if(l)try{let t=await s.db.findSkill(l,r.user||null);if(t){let l=t.activeVersion||0,i=t.versions?.find(e=>e.version===l);if(i&&i.content)e=i.content,r.skill_version=i.version;else if(t.versions&&t.versions.length>0){let l=t.versions[0];l&&l.content&&(e=l.content,r.skill_version=l.version)}}}catch(e){console.error("[Judgment] Error fetching skill definition:",e)}let i=await (0,o.judgeAnswer)(r.query||"",{standard_answer_example:t.standard_answer,root_causes:t.root_causes,key_actions:t.key_actions,skill_definition:e},r.final_result,r.user);g=i.is_correct,r.answer_score=i.score,y=i.reason||"Judged by Evaluation Model"}}}else a&&!e.force_judgment||r.answer_score||(g=!1,y=m,r.answer_score=null)}else r.query&&(!a||e.force_judgment)&&!r.answer_score&&(g=!1,y=m,r.answer_score=null);e.skip_evaluation&&(r.answer_score=null,y="结果评估中..."),r.is_skill_correct=v,r.is_answer_correct=g,r.judgment_reason=y;let h=Array.isArray(r.skills)&&r.skills.length>0?r.skills[0]:void 0;if(h){let e=function(){if(!i.default.existsSync(f))return{};try{return JSON.parse(i.default.readFileSync(f,"utf-8"))}catch{return{}}}()[h];e&&(r.skill_score=parseFloat(e))}if(r.skill&&void 0!==r.skill_version&&null!==r.skill_version?r.label=`${r.skill}-v${r.skill_version}`:r.skill?r.label=`${r.skill}-v1`:r.label="without-skill",await s.db.upsertExecution({where:{id:t},create:{id:t,taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens,reasoningTokens:r.reasoning_tokens},update:{taskId:r.task_id,query:r.query,framework:r.framework,tokens:r.tokens,cost:r.cost,latency:r.latency,timestamp:r.timestamp?new Date(r.timestamp):new Date,finalResult:r.final_result,skill:r.skill,skills:r.skills?JSON.stringify(r.skills):null,invokedSkills:r.invokedSkills?JSON.stringify(r.invokedSkills):null,isSkillCorrect:r.is_skill_correct,isAnswerCorrect:r.is_answer_correct,answerScore:r.answer_score,skillScore:r.skill_score,judgmentReason:r.judgment_reason,failures:r.failures?JSON.stringify(r.failures):null,skillIssues:r.skill_issues?JSON.stringify(r.skill_issues):null,label:r.label,user:r.user,skillVersion:r.skill_version,model:r.model,toolCallCount:r.tool_call_count,llmCallCount:r.llm_call_count,inputTokens:r.input_tokens,outputTokens:r.output_tokens,toolCallErrorCount:r.tool_call_error_count,skillRecallRate:r.skill_recall_rate,cacheReadInputTokens:r.cache_read_input_tokens,cacheCreationInputTokens:r.cache_creation_input_tokens,maxSingleCallTokens:r.max_single_call_tokens,reasoningTokens:r.reasoning_tokens}}),e.upload_id&&e.task_id&&e.upload_id!==t)try{let t=await s.db.findExecutionById(e.upload_id);t&&t.taskId===e.task_id&&await s.db.deleteExecution(e.upload_id)}catch{}if(r.task_id&&r.interactions){let e="string"==typeof r.interactions?(()=>{try{return JSON.parse(r.interactions)}catch{return[]}})():r.interactions,t=e;try{let l=await s.db.findSessionByTaskId(r.task_id),i=l?.interactions?(()=>{try{return JSON.parse(l.interactions)}catch{return[]}})():[];Array.isArray(i)&&i.length>0&&(t=!Array.isArray(e)||e.length<i.length?i:e.map((e,t)=>{let l=i[t],n=e?.content===""||e?.content==null,o="string"==typeof l?.content&&l.content.length>0;return n&&o&&l?.role===e?.role?{...e,content:l.content}:e}))}catch{}await s.db.upsertSession(r.task_id,{taskId:r.task_id,query:r.query,label:r.label,user:r.user,model:r.model,interactions:JSON.stringify(t)},{query:r.query,label:r.label,user:r.user,model:r.model,interactions:JSON.stringify(t)})}return{success:!0,record:r}}e.s(["findBestMatchConfig",()=>c,"readConfig",()=>k,"readRecords",()=>d,"saveExecutionRecord",()=>_]),l()}catch(e){l(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=src_lib_12408140._.js.map
@@ -23,4 +23,4 @@ module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},14747,(a,
23
23
  }
24
24
  `},"styles")};a.s(["diagram",()=>p])},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js"].map(b=>a.l(b))).then(()=>b(48986)))},6232,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fb968e17._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(97111)))},47047,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__cde752c2._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(76742)))},63887,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fc868106._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(82019)))},47394,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4102af94._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(13690)))},97680,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__f7bf496d._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(2206)))},26341,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__60f835cc._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(26084)))},61952,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__8e8b1c34._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(18506)))}];
25
25
 
26
- //# sourceMappingURL=%5Broot-of-the-server%5D__5d576168._.js.map
26
+ //# sourceMappingURL=%5Broot-of-the-server%5D__40353d98._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},14747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},54799,(a,b,c)=>{b.exports=a.x("crypto",()=>require("crypto"))},47542,39679,16936,39776,43763,19473,25581,38916,94052,71131,a=>{"use strict";function b(a,b,c){a.prototype=b.prototype=c,c.constructor=a}function c(a,b){var c=Object.create(a.prototype);for(var d in b)c[d]=b[d];return c}function d(){}a.s(["default",()=>U],94052),a.s(["default",0,b,"extend",()=>c],39679);var e="\\s*([+-]?\\d+)\\s*",f="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",g="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",h=/^#([0-9a-f]{3,8})$/,i=RegExp(`^rgb\\(${e},${e},${e}\\)$`),j=RegExp(`^rgb\\(${g},${g},${g}\\)$`),k=RegExp(`^rgba\\(${e},${e},${e},${f}\\)$`),l=RegExp(`^rgba\\(${g},${g},${g},${f}\\)$`),m=RegExp(`^hsl\\(${f},${g},${g}\\)$`),n=RegExp(`^hsla\\(${f},${g},${g},${f}\\)$`),o={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32};function p(){return this.rgb().formatHex()}function q(){return this.rgb().formatRgb()}function r(a){var b,c;return a=(a+"").trim().toLowerCase(),(b=h.exec(a))?(c=b[1].length,b=parseInt(b[1],16),6===c?s(b):3===c?new w(b>>8&15|b>>4&240,b>>4&15|240&b,(15&b)<<4|15&b,1):8===c?t(b>>24&255,b>>16&255,b>>8&255,(255&b)/255):4===c?t(b>>12&15|b>>8&240,b>>8&15|b>>4&240,b>>4&15|240&b,((15&b)<<4|15&b)/255):null):(b=i.exec(a))?new w(b[1],b[2],b[3],1):(b=j.exec(a))?new w(255*b[1]/100,255*b[2]/100,255*b[3]/100,1):(b=k.exec(a))?t(b[1],b[2],b[3],b[4]):(b=l.exec(a))?t(255*b[1]/100,255*b[2]/100,255*b[3]/100,b[4]):(b=m.exec(a))?C(b[1],b[2]/100,b[3]/100,1):(b=n.exec(a))?C(b[1],b[2]/100,b[3]/100,b[4]):o.hasOwnProperty(a)?s(o[a]):"transparent"===a?new w(NaN,NaN,NaN,0):null}function s(a){return new w(a>>16&255,a>>8&255,255&a,1)}function t(a,b,c,d){return d<=0&&(a=b=c=NaN),new w(a,b,c,d)}function u(a){return(a instanceof d||(a=r(a)),a)?new w((a=a.rgb()).r,a.g,a.b,a.opacity):new w}function v(a,b,c,d){return 1==arguments.length?u(a):new w(a,b,c,null==d?1:d)}function w(a,b,c,d){this.r=+a,this.g=+b,this.b=+c,this.opacity=+d}function x(){return`#${B(this.r)}${B(this.g)}${B(this.b)}`}function y(){let a=z(this.opacity);return`${1===a?"rgb(":"rgba("}${A(this.r)}, ${A(this.g)}, ${A(this.b)}${1===a?")":`, ${a})`}`}function z(a){return isNaN(a)?1:Math.max(0,Math.min(1,a))}function A(a){return Math.max(0,Math.min(255,Math.round(a)||0))}function B(a){return((a=A(a))<16?"0":"")+a.toString(16)}function C(a,b,c,d){return d<=0?a=b=c=NaN:c<=0||c>=1?a=b=NaN:b<=0&&(a=NaN),new E(a,b,c,d)}function D(a){if(a instanceof E)return new E(a.h,a.s,a.l,a.opacity);if(a instanceof d||(a=r(a)),!a)return new E;if(a instanceof E)return a;var b=(a=a.rgb()).r/255,c=a.g/255,e=a.b/255,f=Math.min(b,c,e),g=Math.max(b,c,e),h=NaN,i=g-f,j=(g+f)/2;return i?(h=b===g?(c-e)/i+(c<e)*6:c===g?(e-b)/i+2:(b-c)/i+4,i/=j<.5?g+f:2-g-f,h*=60):i=j>0&&j<1?0:h,new E(h,i,j,a.opacity)}function E(a,b,c,d){this.h=+a,this.s=+b,this.l=+c,this.opacity=+d}function F(a){return(a=(a||0)%360)<0?a+360:a}function G(a){return Math.max(0,Math.min(1,a||0))}function H(a,b,c){return(a<60?b+(c-b)*a/60:a<180?c:a<240?b+(c-b)*(240-a)/60:b)*255}function I(a,b,c,d,e){var f=a*a,g=f*a;return((1-3*a+3*f-g)*b+(4-6*f+3*g)*c+(1+3*a+3*f-3*g)*d+g*e)/6}b(d,r,{copy(a){return Object.assign(new this.constructor,this,a)},displayable(){return this.rgb().displayable()},hex:p,formatHex:p,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return D(this).formatHsl()},formatRgb:q,toString:q}),b(w,v,c(d,{brighter(a){return a=null==a?1.4285714285714286:Math.pow(1.4285714285714286,a),new w(this.r*a,this.g*a,this.b*a,this.opacity)},darker(a){return a=null==a?.7:Math.pow(.7,a),new w(this.r*a,this.g*a,this.b*a,this.opacity)},rgb(){return this},clamp(){return new w(A(this.r),A(this.g),A(this.b),z(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:x,formatHex:x,formatHex8:function(){return`#${B(this.r)}${B(this.g)}${B(this.b)}${B((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:y,toString:y})),b(E,function(a,b,c,d){return 1==arguments.length?D(a):new E(a,b,c,null==d?1:d)},c(d,{brighter(a){return a=null==a?1.4285714285714286:Math.pow(1.4285714285714286,a),new E(this.h,this.s,this.l*a,this.opacity)},darker(a){return a=null==a?.7:Math.pow(.7,a),new E(this.h,this.s,this.l*a,this.opacity)},rgb(){var a=this.h%360+(this.h<0)*360,b=isNaN(a)||isNaN(this.s)?0:this.s,c=this.l,d=c+(c<.5?c:1-c)*b,e=2*c-d;return new w(H(a>=240?a-240:a+120,e,d),H(a,e,d),H(a<120?a+240:a-120,e,d),this.opacity)},clamp(){return new E(F(this.h),G(this.s),G(this.l),z(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let a=z(this.opacity);return`${1===a?"hsl(":"hsla("}${F(this.h)}, ${100*G(this.s)}%, ${100*G(this.l)}%${1===a?")":`, ${a})`}`}})),a.s(["Color",()=>d,"Rgb",()=>w,"default",()=>r,"rgb",()=>v,"rgbConvert",()=>u],16936),a.s(["color",()=>r],39776);let J=a=>()=>a;function K(a,b){return function(c){return a+c*b}}function L(a,b){var c=b-a;return c?K(a,c>180||c<-180?c-360*Math.round(c/360):c):J(isNaN(a)?b:a)}function M(a){return 1==(a*=1)?N:function(b,c){var d,e,f;return c-b?(d=b,e=c,d=Math.pow(d,f=a),e=Math.pow(e,f)-d,f=1/f,function(a){return Math.pow(d+a*e,f)}):J(isNaN(b)?c:b)}}function N(a,b){var c=b-a;return c?K(a,c):J(isNaN(a)?b:a)}a.s(["default",()=>N,"gamma",()=>M,"hue",()=>L],43763);let O=function a(b){var c=M(b);function d(a,b){var d=c((a=v(a)).r,(b=v(b)).r),e=c(a.g,b.g),f=c(a.b,b.b),g=N(a.opacity,b.opacity);return function(b){return a.r=d(b),a.g=e(b),a.b=f(b),a.opacity=g(b),a+""}}return d.gamma=a,d}(1);function P(a){return function(b){var c,d,e=b.length,f=Array(e),g=Array(e),h=Array(e);for(c=0;c<e;++c)d=v(b[c]),f[c]=d.r||0,g[c]=d.g||0,h[c]=d.b||0;return f=a(f),g=a(g),h=a(h),d.opacity=1,function(a){return d.r=f(a),d.g=g(a),d.b=h(a),d+""}}}function Q(a,b){return a*=1,b*=1,function(c){return a*(1-c)+b*c}}P(function(a){var b=a.length-1;return function(c){var d=c<=0?c=0:c>=1?(c=1,b-1):Math.floor(c*b),e=a[d],f=a[d+1],g=d>0?a[d-1]:2*e-f,h=d<b-1?a[d+2]:2*f-e;return I((c-d/b)*b,g,e,f,h)}}),P(function(a){var b=a.length;return function(c){var d=Math.floor(((c%=1)<0?++c:c)*b),e=a[(d+b-1)%b],f=a[d%b],g=a[(d+1)%b],h=a[(d+2)%b];return I((c-d/b)*b,e,f,g,h)}}),a.s(["default",0,O],19473),a.s(["default",0,Q],25581);var R=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,S=RegExp(R.source,"g");function T(a,b){var c,d,e,f,g,h=R.lastIndex=S.lastIndex=0,i=-1,j=[],k=[];for(a+="",b+="";(e=R.exec(a))&&(f=S.exec(b));)(g=f.index)>h&&(g=b.slice(h,g),j[i]?j[i]+=g:j[++i]=g),(e=e[0])===(f=f[0])?j[i]?j[i]+=f:j[++i]=f:(j[++i]=null,k.push({i:i,x:Q(e,f)})),h=S.lastIndex;return h<b.length&&(g=b.slice(h),j[i]?j[i]+=g:j[++i]=g),j.length<2?k[0]?(c=k[0].x,function(a){return c(a)+""}):(d=b,function(){return d}):(b=k.length,function(a){for(var c,d=0;d<b;++d)j[(c=k[d]).i]=c.x(a);return j.join("")})}function U(a,b){var c,d,e=typeof b;return null==b||"boolean"===e?J(b):("number"===e?Q:"string"===e?(d=r(b))?(b=d,O):T:b instanceof r?O:b instanceof Date?function(a,b){var c=new Date;return a*=1,b*=1,function(d){return c.setTime(a*(1-d)+b*d),c}}:!ArrayBuffer.isView(c=b)||c instanceof DataView?Array.isArray(b)?function(a,b){var c,d=b?b.length:0,e=a?Math.min(d,a.length):0,f=Array(e),g=Array(d);for(c=0;c<e;++c)f[c]=U(a[c],b[c]);for(;c<d;++c)g[c]=b[c];return function(a){for(c=0;c<e;++c)g[c]=f[c](a);return g}}:"function"!=typeof b.valueOf&&"function"!=typeof b.toString||isNaN(b)?function(a,b){var c,d={},e={};for(c in(null===a||"object"!=typeof a)&&(a={}),(null===b||"object"!=typeof b)&&(b={}),b)c in a?d[c]=U(a[c],b[c]):e[c]=b[c];return function(a){for(c in d)e[c]=d[c](a);return e}}:Q:function(a,b){b||(b=[]);var c,d=a?Math.min(b.length,a.length):0,e=b.slice();return function(f){for(c=0;c<d;++c)e[c]=a[c]*(1-f)+b[c]*f;return e}})(a,b)}a.s(["default",0,T],38916),a.s(["interpolate",0,U],47542),a.s(["interpolateNumber",0,Q],71131)},63841,a=>{"use strict";var b=a.i(59066),c=a.i(34603);a.i(75930);var d=a.i(71731),e=(0,c.__name)(a=>{let{securityLevel:c}=(0,b.getConfig2)(),e=(0,d.select)("body");if("sandbox"===c){let b=(0,d.select)(`#i${a}`),c=b.node()?.contentDocument??document;e=(0,d.select)(c.body)}return e.select(`#${a}`)},"selectSvgElement");a.s(["selectSvgElement",()=>e])},52435,a=>{"use strict";var b=a.i(63841),c=a.i(59066),d=a.i(34603),e=a.i(38673),f={parse:(0,d.__name)(async a=>{let b=await (0,e.parse)("info",a);d.log.debug(b)},"parse")},g=(0,d.__name)(()=>"11.13.0","getVersion"),h={parser:f,db:{getVersion:g},renderer:{draw:(0,d.__name)((a,e,f)=>{d.log.debug("rendering info diagram\n"+a);let g=(0,b.selectSvgElement)(e);(0,c.configureSvgSize)(g,100,400,!0),g.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${f}`)},"draw")}};a.s(["diagram",()=>h])},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js"].map(b=>a.l(b))).then(()=>b(48986)))},6232,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fb968e17._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(97111)))},47047,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__cde752c2._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(76742)))},63887,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fc868106._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(82019)))},47394,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4102af94._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(13690)))},97680,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__f7bf496d._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(2206)))},26341,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__60f835cc._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(26084)))},61952,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__8e8b1c34._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(18506)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__89851212._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__480fcd92._.js.map
@@ -42,4 +42,4 @@ module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},14747,(a,
42
42
  ${D(b,c)}
43
43
  `},"styles")};a.s(["diagram",()=>F])},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js"].map(b=>a.l(b))).then(()=>b(48986)))},6232,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fb968e17._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(97111)))},47047,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__cde752c2._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(76742)))},63887,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fc868106._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(82019)))},47394,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4102af94._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(13690)))},97680,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__f7bf496d._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(2206)))},26341,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__60f835cc._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(26084)))},61952,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__8e8b1c34._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(18506)))}];
44
44
 
45
- //# sourceMappingURL=%5Broot-of-the-server%5D__28978655._.js.map
45
+ //# sourceMappingURL=%5Broot-of-the-server%5D__48f8fbcb._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},14747,(a,b,c)=>{b.exports=a.x("path",()=>require("path"))},54799,(a,b,c)=>{b.exports=a.x("crypto",()=>require("crypto"))},56788,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.BLANK_URL=c.relativeFirstCharacters=c.whitespaceEscapeCharsRegex=c.urlSchemeRegex=c.ctrlCharactersRegex=c.htmlCtrlEntityRegex=c.htmlEntitiesRegex=c.invalidProtocolRegex=void 0,c.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,c.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,c.htmlCtrlEntityRegex=/&(newline|tab);/gi,c.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,c.urlSchemeRegex=/^.+(:|&colon;)/gim,c.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,c.relativeFirstCharacters=[".","/"],c.BLANK_URL="about:blank"},70773,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizeUrl=function(a){if(!a)return d.BLANK_URL;var b,c=e(a.trim());do b=(c=e(c=c.replace(d.ctrlCharactersRegex,"").replace(d.htmlEntitiesRegex,function(a,b){return String.fromCharCode(b)}).replace(d.htmlCtrlEntityRegex,"").replace(d.ctrlCharactersRegex,"").replace(d.whitespaceEscapeCharsRegex,"").trim())).match(d.ctrlCharactersRegex)||c.match(d.htmlEntitiesRegex)||c.match(d.htmlCtrlEntityRegex)||c.match(d.whitespaceEscapeCharsRegex);while(b&&b.length>0)var f=c;if(!f)return d.BLANK_URL;if(d.relativeFirstCharacters.indexOf(f[0])>-1)return f;var g=f.trimStart(),h=g.match(d.urlSchemeRegex);if(!h)return f;var i=h[0].toLowerCase().trim();if(d.invalidProtocolRegex.test(i))return d.BLANK_URL;var j=g.replace(/\\/g,"/");if("mailto:"===i||i.includes("://"))return j;if("http:"===i||"https:"===i){if(!URL.canParse(j))return d.BLANK_URL;var k=new URL(j);return k.protocol=k.protocol.toLowerCase(),k.hostname=k.hostname.toLowerCase(),k.toString()}return j};var d=a.r(56788);function e(a){try{return decodeURIComponent(a)}catch(b){return a}}},91160,a=>{"use strict";function b(a,b){a.accDescr&&b.setAccDescription?.(a.accDescr),a.accTitle&&b.setAccTitle?.(a.accTitle),a.title&&b.setDiagramTitle?.(a.title)}(0,a.i(34603).__name)(b,"populateCommonDb"),a.s(["populateCommonDb",()=>b])},20718,a=>{"use strict";var b=a.i(34603),c=class{constructor(a){this.init=a,this.records=this.init()}static{(0,b.__name)(this,"ImperativeState")}reset(){this.records=this.init()}};a.s(["ImperativeState",()=>c])},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js"].map(b=>a.l(b))).then(()=>b(48986)))},6232,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fb968e17._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(97111)))},47047,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__cde752c2._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(76742)))},63887,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fc868106._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(82019)))},47394,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4102af94._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(13690)))},97680,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__f7bf496d._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(2206)))},26341,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__60f835cc._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(26084)))},61952,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__8e8b1c34._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(18506)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__a5ef0b61._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__49921b2a._.js.map
@@ -23,4 +23,4 @@ module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},14747,(a,
23
23
  }
24
24
  `},"styles")};a.s(["diagram",()=>p])},92025,a=>{a.v(b=>Promise.all(["server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js"].map(b=>a.l(b))).then(()=>b(48986)))},6232,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fb968e17._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(97111)))},47047,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__cde752c2._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(76742)))},63887,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__fc868106._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(82019)))},47394,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4102af94._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(13690)))},97680,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__f7bf496d._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(2206)))},26341,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__60f835cc._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(26084)))},61952,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__8e8b1c34._.js","server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js","server/chunks/ssr/node_modules_lodash-es_05c57bbf._.js","server/chunks/ssr/[root-of-the-server]__1b0dc0de._.js","server/chunks/ssr/node_modules_lodash-es_33e24dce._.js"].map(b=>a.l(b))).then(()=>b(18506)))}];
25
25
 
26
- //# sourceMappingURL=%5Broot-of-the-server%5D__317833f9._.js.map
26
+ //# sourceMappingURL=%5Broot-of-the-server%5D__593be3d6._.js.map