@witty-ai/skill-insight 0.3.0-beta → 0.5.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 (412) hide show
  1. package/.env.example +51 -6
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/app-path-routes-manifest.json +2 -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 +12 -0
  7. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  8. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  19. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/api/auth/apikey/route.js +2 -2
  25. package/.next/standalone/.next/server/app/api/auth/apikey/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/auth/organization/route/app-paths-manifest.json +3 -0
  27. package/.next/standalone/.next/server/app/api/auth/organization/route/build-manifest.json +11 -0
  28. package/.next/standalone/.next/server/app/api/auth/organization/route/server-reference-manifest.json +4 -0
  29. package/.next/standalone/.next/server/app/api/auth/organization/route.js +7 -0
  30. package/.next/standalone/.next/server/app/api/auth/organization/route.js.map +5 -0
  31. package/.next/standalone/.next/server/app/api/auth/organization/route.js.nft.json +1 -0
  32. package/.next/standalone/.next/server/app/api/auth/organization/route_client-reference-manifest.js +2 -0
  33. package/.next/standalone/.next/server/app/api/config/create/route.js +5 -5
  34. package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/config/route.js +5 -4
  36. package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/config/status/route.js +2 -2
  38. package/.next/standalone/.next/server/app/api/config/status/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/data/route.js +5 -4
  40. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js +4 -4
  42. package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/guide/route/app-paths-manifest.json +3 -0
  44. package/.next/standalone/.next/server/app/api/guide/route/build-manifest.json +11 -0
  45. package/.next/standalone/.next/server/app/api/guide/route/server-reference-manifest.json +4 -0
  46. package/.next/standalone/.next/server/app/api/guide/route.js +7 -0
  47. package/.next/standalone/.next/server/app/api/guide/route.js.map +5 -0
  48. package/.next/standalone/.next/server/app/api/guide/route.js.nft.json +1 -0
  49. package/.next/standalone/.next/server/app/api/guide/route_client-reference-manifest.js +2 -0
  50. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +5 -4
  51. package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +5 -4
  53. package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +3 -3
  55. package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +5 -4
  57. package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/proxy/[taskId]/start/route.js +2 -2
  59. package/.next/standalone/.next/server/app/api/proxy/[taskId]/start/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/api/rejudge/route.js +5 -4
  61. package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/session/route.js +5 -5
  63. package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/settings/route.js +2 -2
  65. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/settings/test/route.js +2 -2
  67. package/.next/standalone/.next/server/app/api/settings/test/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/skills/[id]/activate/route.js +2 -2
  69. package/.next/standalone/.next/server/app/api/skills/[id]/activate/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/skills/[id]/toggle/route.js +2 -2
  71. package/.next/standalone/.next/server/app/api/skills/[id]/toggle/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js +3 -3
  73. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js +4 -4
  75. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js +2 -2
  77. package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +2 -2
  79. package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +2 -2
  81. package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/skills/automation/push/route.js +2 -2
  83. package/.next/standalone/.next/server/app/api/skills/automation/push/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/skills/by-name/route.js +2 -2
  85. package/.next/standalone/.next/server/app/api/skills/by-name/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/skills/logs/route.js +5 -4
  87. package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/skills/route.js +2 -2
  89. package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/skills/upload/route.js +2 -2
  91. package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/sync/manifest/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/sync/manifest/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/sync/opencode/route.js +2 -2
  95. package/.next/standalone/.next/server/app/api/sync/opencode/route.js.nft.json +1 -1
  96. package/.next/standalone/.next/server/app/api/upload/route.js +5 -3
  97. package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +3 -3
  99. package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/details.html +1 -1
  102. package/.next/standalone/.next/server/app/details.rsc +5 -5
  103. package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
  104. package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
  105. package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
  106. package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
  107. package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
  108. package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
  109. package/.next/standalone/.next/server/app/index.html +1 -1
  110. package/.next/standalone/.next/server/app/index.rsc +5 -5
  111. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  112. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
  113. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  114. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
  115. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  116. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/login.html +1 -1
  119. package/.next/standalone/.next/server/app/login.rsc +5 -5
  120. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
  121. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  122. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
  123. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  124. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  125. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/skills.html +1 -1
  131. package/.next/standalone/.next/server/app/skills.rsc +5 -5
  132. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
  133. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  134. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
  135. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  136. package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
  137. package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
  138. package/.next/standalone/.next/server/app-paths-manifest.json +2 -0
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05e510f4._.js +3 -0
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a140a5a._.js +122 -0
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +3 -0
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +3 -0
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__73ce6d21._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +3 -0
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +3 -0
  158. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__c6c98b22._.js → [root-of-the-server]__aa5c8858._.js} +3 -3
  159. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +3 -0
  161. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +3 -0
  162. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +3 -0
  163. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +3 -0
  164. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +3 -0
  165. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +3 -0
  167. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +3 -0
  171. package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
  172. package/.next/standalone/.next/server/chunks/_41a98bd8._.js +3 -0
  173. package/.next/standalone/.next/server/chunks/_c48f7c66._.js +1 -1
  174. package/.next/standalone/.next/server/chunks/_c82df3e0._.js +3 -3
  175. package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
  176. package/.next/standalone/.next/server/chunks/_fa49adfa._.js +3 -3
  177. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_auth_organization_route_actions_f58710b7.js +3 -0
  178. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_guide_route_actions_6c188449.js +3 -0
  179. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +71 -110
  180. package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -400
  181. package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +22 -22
  182. package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +3 -0
  184. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__5d576168._.js → [root-of-the-server]__40353d98._.js} +1 -1
  185. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89851212._.js → [root-of-the-server]__480fcd92._.js} +1 -1
  186. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__72a7f3ed._.js → [root-of-the-server]__48f8fbcb._.js} +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__438a2c90._.js → [root-of-the-server]__49921b2a._.js} +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__c9e3c893._.js → [root-of-the-server]__593be3d6._.js} +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ca101543._.js → [root-of-the-server]__5e9ff641._.js} +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__90641614._.js → [root-of-the-server]__66cc6ff2._.js} +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__37bfda90._.js → [root-of-the-server]__9889bdc8._.js} +1 -1
  193. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__42ba97b6._.js → [root-of-the-server]__9905ca7a._.js} +2 -2
  194. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ab7cc4a._.js +3 -0
  195. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7bb97139._.js → [root-of-the-server]__9d6b7d48._.js} +1 -1
  196. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__6b8b9bb9._.js → [root-of-the-server]__b8edc8c6._.js} +1 -1
  197. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1dfe61f8._.js → [root-of-the-server]__d691ecb0._.js} +1 -1
  198. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d0917d6e._.js → [root-of-the-server]__e5ddfd15._.js} +1 -1
  199. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__e5e3a145._.js → [root-of-the-server]__f72f330e._.js} +1 -1
  200. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__99ab66d7._.js → [root-of-the-server]__f843e085._.js} +1 -1
  201. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__8a82ef12._.js → [root-of-the-server]__fd69d276._.js} +2 -2
  202. package/.next/standalone/.next/server/chunks/ssr/{_7688d7cd._.js → _049876f0._.js} +2 -2
  203. package/.next/standalone/.next/server/chunks/ssr/{_981cd263._.js → _09546b95._.js} +2 -2
  204. package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/ssr/{node_modules_cf1f3d2c._.js → _b121f1ae._.js} +2 -2
  206. package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +18 -42
  207. package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +3 -0
  208. package/.next/standalone/.next/server/chunks/ssr/{node_modules_a4a1f3c3._.js → node_modules_039c6a11._.js} +1 -1
  209. package/.next/standalone/.next/server/chunks/ssr/{node_modules_a7a82280._.js → node_modules_0d3530cd._.js} +2 -2
  210. package/.next/standalone/.next/server/chunks/ssr/{node_modules_0c2939c3._.js → node_modules_0e883565._.js} +1 -1
  211. package/.next/standalone/.next/server/chunks/ssr/{node_modules_8d9e56b7._.js → node_modules_11dbf165._.js} +2 -2
  212. package/.next/standalone/.next/server/chunks/ssr/{node_modules_76d6c533._.js → node_modules_2041c122._.js} +2 -2
  213. package/.next/standalone/.next/server/chunks/ssr/{node_modules_b007145b._.js → node_modules_235267bb._.js} +1 -1
  214. package/.next/standalone/.next/server/chunks/ssr/{node_modules_11d81adf._.js → node_modules_25dfb0ba._.js} +2 -2
  215. package/.next/standalone/.next/server/chunks/ssr/{node_modules_205ce1c9._.js → node_modules_2b12c669._.js} +2 -2
  216. package/.next/standalone/.next/server/chunks/ssr/{node_modules_cc19e85c._.js → node_modules_32996880._.js} +2 -2
  217. package/.next/standalone/.next/server/chunks/ssr/{node_modules_62621b34._.js → node_modules_35885fe9._.js} +2 -2
  218. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ee43cfd6._.js → node_modules_38a95353._.js} +2 -2
  219. package/.next/standalone/.next/server/chunks/ssr/{node_modules_f596a14c._.js → node_modules_3a317c51._.js} +1 -1
  220. package/.next/standalone/.next/server/chunks/ssr/{node_modules_776b68cf._.js → node_modules_44966ab2._.js} +1 -1
  221. package/.next/standalone/.next/server/chunks/ssr/node_modules_514c148b._.js +3 -0
  222. package/.next/standalone/.next/server/chunks/ssr/{node_modules_e272ac31._.js → node_modules_53af751a._.js} +2 -2
  223. package/.next/standalone/.next/server/chunks/ssr/{node_modules_23d38260._.js → node_modules_5f539891._.js} +1 -1
  224. package/.next/standalone/.next/server/chunks/ssr/{node_modules_86b6ffa4._.js → node_modules_60402210._.js} +1 -1
  225. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3769cd60._.js → node_modules_60eccfb6._.js} +1 -1
  226. package/.next/standalone/.next/server/chunks/ssr/{node_modules_fdf808cf._.js → node_modules_632c098c._.js} +1 -1
  227. package/.next/standalone/.next/server/chunks/ssr/{node_modules_60cf7de2._.js → node_modules_6c42f75c._.js} +1 -1
  228. package/.next/standalone/.next/server/chunks/ssr/{node_modules_2f215d2b._.js → node_modules_6fbe276d._.js} +2 -2
  229. package/.next/standalone/.next/server/chunks/ssr/{node_modules_4cd41088._.js → node_modules_740e9d59._.js} +2 -2
  230. package/.next/standalone/.next/server/chunks/ssr/{node_modules_d0af4cb2._.js → node_modules_7a3d551c._.js} +1 -1
  231. package/.next/standalone/.next/server/chunks/ssr/{node_modules_4f41f172._.js → node_modules_861cb9cf._.js} +2 -2
  232. package/.next/standalone/.next/server/chunks/ssr/{node_modules_db8af6e3._.js → node_modules_8a892761._.js} +1 -1
  233. package/.next/standalone/.next/server/chunks/ssr/{node_modules_28fef057._.js → node_modules_a5a4946e._.js} +1 -1
  234. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3d9afa91._.js → node_modules_a712c937._.js} +1 -1
  235. package/.next/standalone/.next/server/chunks/ssr/{node_modules_330b9e3c._.js → node_modules_a8c276dd._.js} +2 -2
  236. package/.next/standalone/.next/server/chunks/ssr/{node_modules_abf4f826._.js → node_modules_acc9d529._.js} +1 -1
  237. package/.next/standalone/.next/server/chunks/ssr/{node_modules_39a3e684._.js → node_modules_ad07ab39._.js} +1 -1
  238. package/.next/standalone/.next/server/chunks/ssr/{node_modules_1d88c7cc._.js → node_modules_b38efa22._.js} +1 -1
  239. package/.next/standalone/.next/server/chunks/ssr/{node_modules_8633bac6._.js → node_modules_b4ef036d._.js} +2 -2
  240. package/.next/standalone/.next/server/chunks/ssr/{node_modules_abc9e5a6._.js → node_modules_b6bad701._.js} +2 -2
  241. package/.next/standalone/.next/server/chunks/ssr/{node_modules_c90fa812._.js → node_modules_b9810024._.js} +1 -1
  242. package/.next/standalone/.next/server/chunks/ssr/{node_modules_f56b62b0._.js → node_modules_b9ad808d._.js} +1 -1
  243. package/.next/standalone/.next/server/chunks/ssr/{node_modules_7287189a._.js → node_modules_bc287d9f._.js} +1 -1
  244. package/.next/standalone/.next/server/chunks/ssr/{node_modules_5ab83f0a._.js → node_modules_c411d7df._.js} +2 -2
  245. package/.next/standalone/.next/server/chunks/ssr/{node_modules_c98dd942._.js → node_modules_c6469d93._.js} +1 -1
  246. package/.next/standalone/.next/server/chunks/ssr/{node_modules_6391b0cd._.js → node_modules_c704e802._.js} +1 -1
  247. package/.next/standalone/.next/server/chunks/ssr/{node_modules_df113a74._.js → node_modules_cda46cfc._.js} +2 -2
  248. package/.next/standalone/.next/server/chunks/ssr/{node_modules_aa6da06c._.js → node_modules_cf171d0c._.js} +1 -1
  249. package/.next/standalone/.next/server/chunks/ssr/{node_modules_be61cdef._.js → node_modules_e8927fc2._.js} +1 -1
  250. package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js +1 -1
  251. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-7R4GIKGN_mjs_e5dda8cc._.js +1 -1
  252. package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +1 -1
  253. package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
  254. package/.next/standalone/.next/server/pages/404.html +1 -1
  255. package/.next/standalone/.next/server/pages/500.html +2 -2
  256. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  258. package/.next/standalone/.next/static/chunks/{d60f0b3e2f4689ac.js → 01eddf501c574a44.js} +1 -1
  259. package/.next/{static/chunks/ec0de430276c8209.js → standalone/.next/static/chunks/078d76156083f265.js} +1 -1
  260. package/.next/standalone/.next/static/chunks/{6a17b619eed04f07.js → 07c9f28a269c701a.js} +2 -2
  261. package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +1 -0
  262. package/.next/{static/chunks/55723b38de737547.js → standalone/.next/static/chunks/21105f8885631d60.js} +1 -1
  263. package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
  264. package/.next/{static/chunks/052f178ab7519d8d.js → standalone/.next/static/chunks/5432ce4a494bc74d.js} +2 -2
  265. package/.next/standalone/.next/static/chunks/59cd76b8d89e776a.js +1 -0
  266. package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +1 -0
  267. package/.next/standalone/.next/static/chunks/6baf949fafec6be3.js +1 -0
  268. package/.next/standalone/.next/static/chunks/737b8cff3c6a4e30.js +1 -0
  269. package/.next/standalone/.next/static/chunks/7e35f4cf2e266022.js +1 -0
  270. package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +1 -0
  271. package/.next/standalone/.next/static/chunks/b43afe7d924243d9.js +2 -0
  272. package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +1 -0
  273. package/.next/{static/chunks/559e55a53f22f5d1.js → standalone/.next/static/chunks/c875bd2ff662b46f.js} +1 -1
  274. package/.next/{static/chunks/6d12c79948c7e0ac.js → standalone/.next/static/chunks/dc59a07a8f327b40.js} +1 -1
  275. package/.next/standalone/.next/static/chunks/e09d9ee16fe90255.js +1 -0
  276. package/.next/standalone/.next/static/chunks/{20337e5244416041.js → e20b02ee30c11a26.js} +1 -1
  277. package/.next/standalone/.next/static/chunks/ff6357067630b168.js +1 -0
  278. package/.next/standalone/LICENSE +1 -1
  279. package/.next/standalone/bin/cli.js +1 -1
  280. package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +126 -0
  281. package/.next/standalone/features/feature-skill-used-jump-link/feature.json +32 -0
  282. package/.next/standalone/features/feature-skill-used-jump-link/issue.md +32 -0
  283. package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +528 -0
  284. package/.next/standalone/next.config.ts +14 -2
  285. package/.next/standalone/node_modules/.prisma/client/edge.js +23 -5
  286. package/.next/standalone/node_modules/.prisma/client/index-browser.js +20 -2
  287. package/.next/standalone/node_modules/.prisma/client/index.js +23 -5
  288. package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
  289. package/.next/standalone/node_modules/.prisma/client/schema.prisma +19 -2
  290. package/.next/standalone/node_modules/.prisma/client/wasm.js +20 -2
  291. package/.next/standalone/node_modules/@img/colour/color.cjs +11 -9
  292. package/.next/standalone/node_modules/@img/colour/package.json +21 -8
  293. package/.next/standalone/package.json +1 -1
  294. package/.next/standalone/prisma/schema.prisma +19 -2
  295. package/.next/standalone/scripts/activate_telemetry.sh +24 -24
  296. package/.next/standalone/scripts/claude_watcher_client.ts +9 -7
  297. package/.next/standalone/scripts/init_opengauss.py +15 -0
  298. package/.next/standalone/scripts/install.js +68 -35
  299. package/.next/standalone/scripts/logs.js +1 -1
  300. package/.next/standalone/scripts/openclaw_watcher_client.ts +9 -7
  301. package/.next/standalone/scripts/opencode_plugin.ts +278 -46
  302. package/.next/standalone/scripts/postinstall.js +80 -38
  303. package/.next/standalone/scripts/restart.js +1 -1
  304. package/.next/standalone/scripts/start.js +84 -60
  305. package/.next/standalone/scripts/status.js +1 -1
  306. package/.next/standalone/scripts/stop.js +38 -14
  307. package/.next/standalone/scripts/sync_skills.js +5 -5
  308. package/.next/standalone/scripts/utils.js +91 -23
  309. package/.next/standalone/tests/setup_skill_optimizer.sh +118 -0
  310. package/.next/static/chunks/{d60f0b3e2f4689ac.js → 01eddf501c574a44.js} +1 -1
  311. package/.next/{standalone/.next/static/chunks/ec0de430276c8209.js → static/chunks/078d76156083f265.js} +1 -1
  312. package/.next/static/chunks/{6a17b619eed04f07.js → 07c9f28a269c701a.js} +2 -2
  313. package/.next/static/chunks/1e782a49beaf489c.js +1 -0
  314. package/.next/{standalone/.next/static/chunks/55723b38de737547.js → static/chunks/21105f8885631d60.js} +1 -1
  315. package/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
  316. package/.next/{standalone/.next/static/chunks/052f178ab7519d8d.js → static/chunks/5432ce4a494bc74d.js} +2 -2
  317. package/.next/static/chunks/59cd76b8d89e776a.js +1 -0
  318. package/.next/static/chunks/67bd1a5de2195779.js +1 -0
  319. package/.next/static/chunks/6baf949fafec6be3.js +1 -0
  320. package/.next/static/chunks/737b8cff3c6a4e30.js +1 -0
  321. package/.next/static/chunks/7e35f4cf2e266022.js +1 -0
  322. package/.next/static/chunks/a87b5e84254095a5.js +1 -0
  323. package/.next/static/chunks/b43afe7d924243d9.js +2 -0
  324. package/.next/static/chunks/c6bd2818656b1f20.css +1 -0
  325. package/.next/{standalone/.next/static/chunks/559e55a53f22f5d1.js → static/chunks/c875bd2ff662b46f.js} +1 -1
  326. package/.next/{standalone/.next/static/chunks/6d12c79948c7e0ac.js → static/chunks/dc59a07a8f327b40.js} +1 -1
  327. package/.next/static/chunks/e09d9ee16fe90255.js +1 -0
  328. package/.next/static/chunks/{20337e5244416041.js → e20b02ee30c11a26.js} +1 -1
  329. package/.next/static/chunks/ff6357067630b168.js +1 -0
  330. package/LICENSE +1 -1
  331. package/README.md +7 -6
  332. package/bin/cli.js +1 -1
  333. package/package.json +1 -1
  334. package/prisma/schema.prisma +19 -2
  335. package/scripts/activate_telemetry.sh +24 -24
  336. package/scripts/claude_watcher_client.ts +9 -7
  337. package/scripts/init_opengauss.py +15 -0
  338. package/scripts/install.js +68 -35
  339. package/scripts/logs.js +1 -1
  340. package/scripts/openclaw_watcher_client.ts +9 -7
  341. package/scripts/opencode_plugin.ts +278 -46
  342. package/scripts/postinstall.js +80 -38
  343. package/scripts/restart.js +1 -1
  344. package/scripts/start.js +84 -60
  345. package/scripts/status.js +1 -1
  346. package/scripts/stop.js +38 -14
  347. package/scripts/sync_skills.js +5 -5
  348. package/scripts/utils.js +91 -23
  349. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1306e4eb._.js +0 -3
  350. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1809fb2b._.js +0 -3
  351. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19594bdd._.js +0 -3
  352. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19db3d34._.js +0 -3
  353. package/.next/standalone/.next/server/chunks/[root-of-the-server]__2b2e7f49._.js +0 -3
  354. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3c02de9b._.js +0 -3
  355. package/.next/standalone/.next/server/chunks/[root-of-the-server]__3f3ad12b._.js +0 -3
  356. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4c1ad182._.js +0 -3
  357. package/.next/standalone/.next/server/chunks/[root-of-the-server]__4dce0fe6._.js +0 -3
  358. package/.next/standalone/.next/server/chunks/[root-of-the-server]__582cdc68._.js +0 -3
  359. package/.next/standalone/.next/server/chunks/[root-of-the-server]__625e84f3._.js +0 -3
  360. package/.next/standalone/.next/server/chunks/[root-of-the-server]__68b5a8b3._.js +0 -3
  361. package/.next/standalone/.next/server/chunks/[root-of-the-server]__704b8533._.js +0 -3
  362. package/.next/standalone/.next/server/chunks/[root-of-the-server]__78ea20f2._.js +0 -3
  363. package/.next/standalone/.next/server/chunks/[root-of-the-server]__7f754db9._.js +0 -3
  364. package/.next/standalone/.next/server/chunks/[root-of-the-server]__824c33e1._.js +0 -3
  365. package/.next/standalone/.next/server/chunks/[root-of-the-server]__92449e6d._.js +0 -3
  366. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9465727f._.js +0 -3
  367. package/.next/standalone/.next/server/chunks/[root-of-the-server]__9c3018b5._.js +0 -3
  368. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a12846e0._.js +0 -3
  369. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a637116a._.js +0 -3
  370. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a8f83ee4._.js +0 -3
  371. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a8ffc1b1._.js +0 -3
  372. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9cb205c._.js +0 -122
  373. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ab7048b0._.js +0 -3
  374. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac25e4ae._.js +0 -3
  375. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ae5ac9cd._.js +0 -3
  376. package/.next/standalone/.next/server/chunks/[root-of-the-server]__bebf4267._.js +0 -3
  377. package/.next/standalone/.next/server/chunks/[root-of-the-server]__c5ae3ebd._.js +0 -3
  378. package/.next/standalone/.next/server/chunks/[root-of-the-server]__ebdafae4._.js +0 -3
  379. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eefd5f5b._.js +0 -3
  380. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__082c32a2._.js +0 -3
  381. package/.next/standalone/.next/server/chunks/ssr/_b7889f85._.js +0 -3
  382. package/.next/standalone/.next/server/chunks/ssr/node_modules_0b762d3e._.js +0 -3
  383. package/.next/standalone/.next/static/chunks/024c9acb4aa490c8.js +0 -1
  384. package/.next/standalone/.next/static/chunks/104f2c1fb93033c0.js +0 -1
  385. package/.next/standalone/.next/static/chunks/222a937a6c859036.js +0 -1
  386. package/.next/standalone/.next/static/chunks/2e1b2125198a02c4.js +0 -1
  387. package/.next/standalone/.next/static/chunks/32b26ff1bbd034fd.js +0 -1
  388. package/.next/standalone/.next/static/chunks/428e6cf64b115e9d.css +0 -1
  389. package/.next/standalone/.next/static/chunks/62e251619a96dc26.js +0 -1
  390. package/.next/standalone/.next/static/chunks/65c652f23d2d68bd.js +0 -133
  391. package/.next/standalone/.next/static/chunks/876e2d70185fd438.js +0 -1
  392. package/.next/standalone/.next/static/chunks/c647b2e4532050e0.js +0 -1
  393. package/.next/standalone/.next/static/chunks/d2e574310159a10b.js +0 -1
  394. package/.next/standalone/.next/static/chunks/dab1749712763979.js +0 -2
  395. package/.next/static/chunks/024c9acb4aa490c8.js +0 -1
  396. package/.next/static/chunks/104f2c1fb93033c0.js +0 -1
  397. package/.next/static/chunks/222a937a6c859036.js +0 -1
  398. package/.next/static/chunks/2e1b2125198a02c4.js +0 -1
  399. package/.next/static/chunks/32b26ff1bbd034fd.js +0 -1
  400. package/.next/static/chunks/428e6cf64b115e9d.css +0 -1
  401. package/.next/static/chunks/62e251619a96dc26.js +0 -1
  402. package/.next/static/chunks/65c652f23d2d68bd.js +0 -133
  403. package/.next/static/chunks/876e2d70185fd438.js +0 -1
  404. package/.next/static/chunks/c647b2e4532050e0.js +0 -1
  405. package/.next/static/chunks/d2e574310159a10b.js +0 -1
  406. package/.next/static/chunks/dab1749712763979.js +0 -2
  407. /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
  408. /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
  409. /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
  410. /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
  411. /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
  412. /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
@@ -13,21 +13,26 @@ const {
13
13
  ensureEnvFile,
14
14
  ensureDataDirectory,
15
15
  runCommand,
16
- sleep
16
+ sleep,
17
+ getDataRoot
17
18
  } = require('./utils.js')
18
19
 
19
20
  const PACKAGE_ROOT = path.resolve(__dirname, '..')
20
21
 
22
+ const isWindows = process.platform === 'win32'
23
+ const pythonCmd = isWindows ? 'python' : 'python3'
24
+ const pipCmd = isWindows ? 'pip' : 'pip3'
25
+
21
26
  function loadEnvFile(envPath) {
22
27
  if (!fs.existsSync(envPath)) return {}
23
-
28
+
24
29
  const content = fs.readFileSync(envPath, 'utf8')
25
30
  const env = {}
26
-
31
+
27
32
  content.split('\n').forEach(line => {
28
33
  const trimmed = line.trim()
29
34
  if (!trimmed || trimmed.startsWith('#')) return
30
-
35
+
31
36
  const match = trimmed.match(/^([^=]+)=(.*)$/)
32
37
  if (match) {
33
38
  const key = match[1].trim()
@@ -39,7 +44,7 @@ function loadEnvFile(envPath) {
39
44
  env[key] = value
40
45
  }
41
46
  })
42
-
47
+
43
48
  return env
44
49
  }
45
50
 
@@ -48,7 +53,7 @@ let spawnedProc = null
48
53
  async function createAdminUser(port) {
49
54
  return new Promise((resolve) => {
50
55
  const postData = JSON.stringify({ username: 'admin' })
51
-
56
+
52
57
  const options = {
53
58
  hostname: 'localhost',
54
59
  port: port,
@@ -59,7 +64,7 @@ async function createAdminUser(port) {
59
64
  'Content-Length': Buffer.byteLength(postData)
60
65
  }
61
66
  }
62
-
67
+
63
68
  const req = http.request(options, (res) => {
64
69
  let data = ''
65
70
  res.on('data', (chunk) => { data += chunk })
@@ -68,11 +73,11 @@ async function createAdminUser(port) {
68
73
  try {
69
74
  const result = JSON.parse(data)
70
75
  if (result.apiKey) {
71
- const wittyDir = path.join(os.homedir(), '.witty')
72
- if (!fs.existsSync(wittyDir)) {
73
- fs.mkdirSync(wittyDir, { recursive: true })
76
+ const skillInsightDir = path.join(os.homedir(), '.skill-insight')
77
+ if (!fs.existsSync(skillInsightDir)) {
78
+ fs.mkdirSync(skillInsightDir, { recursive: true })
74
79
  }
75
- const keyFilePath = path.join(wittyDir, '.admin_api_key')
80
+ const keyFilePath = path.join(skillInsightDir, '.admin_api_key')
76
81
  fs.writeFileSync(keyFilePath, result.apiKey, 'utf8')
77
82
  console.log('✓ Admin user created successfully')
78
83
  console.log(` API Key saved to: ${keyFilePath}`)
@@ -86,12 +91,12 @@ async function createAdminUser(port) {
86
91
  resolve()
87
92
  })
88
93
  })
89
-
94
+
90
95
  req.on('error', (e) => {
91
96
  console.log('⚠️ Failed to create admin user:', e.message)
92
97
  resolve()
93
98
  })
94
-
99
+
95
100
  req.write(postData)
96
101
  req.end()
97
102
  })
@@ -119,13 +124,14 @@ process.on('SIGTERM', () => {
119
124
 
120
125
  async function run(options) {
121
126
  const port = getPort(options)
122
-
123
- console.log('=== Starting Witty-Skill-Insight Service ===\n')
124
-
125
- ensureEnvFile(PACKAGE_ROOT)
126
- ensureDataDirectory(PACKAGE_ROOT)
127
+ const dataRoot = getDataRoot()
128
+
129
+ console.log('=== Starting Skill-Insight Service ===\n')
130
+
131
+ ensureEnvFile()
132
+ ensureDataDirectory()
127
133
  console.log()
128
-
134
+
129
135
  const existingPid = findPidOnPort(port)
130
136
  if (existingPid) {
131
137
  console.log(`⚠️ Port ${port} is already in use by PID: ${existingPid}`)
@@ -133,81 +139,89 @@ async function run(options) {
133
139
  console.log(`\nTo stop: npx @witty-ai/skill-insight stop --port ${port}`)
134
140
  process.exit(1)
135
141
  }
136
-
137
- const dbPath = path.join(PACKAGE_ROOT, 'data', 'witty_insight.db')
138
- process.env.DATABASE_URL = `file:${dbPath}`
139
-
140
- const envPath = path.join(PACKAGE_ROOT, '.env')
142
+
143
+ const dbPath = path.join(dataRoot, 'data', 'witty_insight.db')
144
+ const dbUrl = `file:${dbPath}`
145
+ process.env.DATABASE_URL = dbUrl
146
+
147
+ const envPath = path.join(dataRoot, '.env')
141
148
  const fileEnv = loadEnvFile(envPath)
142
-
149
+
143
150
  if (fileEnv.DB_HOST) {
144
151
  console.log('OpenGauss configuration detected (DB_HOST=' + fileEnv.DB_HOST + ')')
145
152
  console.log('Initializing OpenGauss database with project schema...')
146
-
153
+
147
154
  try {
148
- execSync('python3 -c "import psycopg2"', { stdio: 'pipe' })
155
+ execSync(`${pythonCmd} -c "import psycopg2"`, { stdio: 'pipe' })
149
156
  } catch (e) {
150
157
  console.log('psycopg2 not found. Installing psycopg2-binary...')
151
158
  try {
152
- execSync('pip3 install psycopg2-binary', { stdio: 'inherit' })
159
+ execSync(`${pipCmd} install psycopg2-binary`, { stdio: 'inherit' })
153
160
  } catch (pipError) {
154
161
  console.log('Warning: Could not install psycopg2-binary. OpenGauss init may fail.')
155
162
  }
156
163
  }
157
-
164
+
158
165
  const initScript = path.join(PACKAGE_ROOT, 'scripts', 'init_opengauss.py')
159
166
  if (fs.existsSync(initScript)) {
160
167
  try {
161
168
  const initEnv = { ...process.env, ...fileEnv }
162
- execSync('python3 "' + initScript + '"', {
163
- stdio: 'inherit',
169
+ execSync(`${pythonCmd} "${initScript}"`, {
170
+ stdio: 'inherit',
164
171
  cwd: PACKAGE_ROOT,
165
172
  env: initEnv
166
173
  })
167
174
  console.log('✓ OpenGauss initialized successfully')
168
175
  } catch (initError) {
169
176
  console.error('Warning: OpenGauss initialization failed:', initError.message)
170
- console.error('You may need to run it manually: python3 scripts/init_opengauss.py')
177
+ console.error(`You may need to run it manually: ${pythonCmd} scripts/init_opengauss.py`)
171
178
  }
172
179
  } else {
173
180
  console.log('Warning: init_opengauss.py not found, skipping OpenGauss init')
174
181
  }
175
182
  console.log()
176
183
  }
177
-
184
+
178
185
  try {
179
186
  console.log('Syncing database schema...')
180
- await runCommand('npx prisma db push', { cwd: PACKAGE_ROOT })
187
+ await runCommand('npx prisma db push', {
188
+ cwd: PACKAGE_ROOT,
189
+ env: { ...process.env, DATABASE_URL: dbUrl }
190
+ })
181
191
  console.log('✓ Database schema synced')
182
192
  console.log()
183
-
193
+
184
194
  console.log('Generating Prisma client...')
185
- await runCommand('npx prisma generate', { cwd: PACKAGE_ROOT })
195
+ await runCommand('npx prisma generate', {
196
+ cwd: PACKAGE_ROOT,
197
+ env: { ...process.env, DATABASE_URL: dbUrl }
198
+ })
186
199
  console.log('✓ Prisma client generated')
187
200
  console.log()
188
201
  } catch (error) {
189
202
  console.error('❌ Database initialization failed:', error.message)
190
203
  process.exit(1)
191
204
  }
192
-
205
+
193
206
  const standaloneServer = path.join(PACKAGE_ROOT, '.next', 'standalone', 'server.js')
194
207
  const isStandalone = fs.existsSync(standaloneServer)
195
208
  const nextDir = path.join(PACKAGE_ROOT, '.next')
196
209
  const isProduction = fs.existsSync(nextDir) && fs.existsSync(path.join(nextDir, 'BUILD_ID'))
197
-
210
+
198
211
  console.log(`Starting server on port ${port}...`)
199
-
200
- const logPath = path.join(PACKAGE_ROOT, 'server.log')
201
- const env = {
202
- ...process.env,
203
- ...fileEnv,
204
- DATABASE_URL: `file:${dbPath}`,
212
+
213
+ const logPath = path.join(dataRoot, 'server.log')
214
+
215
+ const env = {
216
+ ...process.env,
217
+ ...fileEnv,
218
+ DATABASE_URL: dbUrl,
205
219
  PORT: port.toString(),
206
220
  HOSTNAME: '0.0.0.0'
207
221
  }
208
-
222
+
209
223
  let command, args
210
-
224
+
211
225
  if (isStandalone) {
212
226
  console.log('Mode: production (standalone)')
213
227
  command = 'node'
@@ -221,31 +235,41 @@ async function run(options) {
221
235
  command = 'npm'
222
236
  args = ['run', 'dev']
223
237
  }
224
-
238
+
225
239
  try {
226
240
  const logFd = fs.openSync(logPath, 'a')
227
-
228
- spawnedProc = spawn(command, args, {
229
- stdio: ['ignore', logFd, logFd],
230
- env,
231
- detached: true,
232
- cwd: PACKAGE_ROOT
233
- })
234
-
241
+
242
+ if (isWindows) {
243
+ spawnedProc = spawn(command, args, {
244
+ stdio: ['ignore', logFd, logFd],
245
+ env,
246
+ detached: true,
247
+ cwd: PACKAGE_ROOT,
248
+ windowsHide: true
249
+ })
250
+ } else {
251
+ spawnedProc = spawn(command, args, {
252
+ stdio: ['ignore', logFd, logFd],
253
+ env,
254
+ detached: true,
255
+ cwd: PACKAGE_ROOT
256
+ })
257
+ }
258
+
235
259
  spawnedProc.on('error', (error) => {
236
260
  console.error('❌ Failed to spawn process:', error.message)
237
261
  process.exit(1)
238
262
  })
239
-
263
+
240
264
  spawnedProc.unref()
241
265
  } catch (error) {
242
266
  console.error('❌ Failed to spawn process:', error.message)
243
267
  process.exit(1)
244
268
  }
245
-
269
+
246
270
  const maxRetries = 10
247
271
  const retryDelay = 500
248
-
272
+
249
273
  for (let i = 0; i < maxRetries; i++) {
250
274
  await sleep(retryDelay)
251
275
  const pid = findPidOnPort(port)
@@ -259,9 +283,9 @@ async function run(options) {
259
283
  return
260
284
  }
261
285
  }
262
-
286
+
263
287
  console.error('❌ Failed to start server. Check server.log for details.')
264
288
  process.exit(1)
265
289
  }
266
290
 
267
- module.exports = { run }
291
+ module.exports = { run }
@@ -10,7 +10,7 @@ async function run(options) {
10
10
  try {
11
11
  const port = getPort(options)
12
12
 
13
- console.log(`=== Witty-Skill-Insight Service Status ===\n`)
13
+ console.log(`=== Skill-Insight Service Status ===\n`)
14
14
 
15
15
  const pid = findPidOnPort(port)
16
16
 
@@ -8,10 +8,30 @@ const {
8
8
  isPortListening
9
9
  } = require('./utils.js')
10
10
 
11
+ const isWindows = process.platform === 'win32'
12
+
13
+ function killProcessByName(pattern) {
14
+ if (isWindows) {
15
+ try {
16
+ execSync(`powershell -Command "Get-Process | Where-Object { $_.CommandLine -like '*${pattern}*' } | Stop-Process -Force"`, { stdio: 'ignore' })
17
+ return true
18
+ } catch (e) {
19
+ return false
20
+ }
21
+ } else {
22
+ try {
23
+ execSync(`pkill -f "${pattern}"`, { stdio: 'ignore' })
24
+ return true
25
+ } catch (e) {
26
+ return false
27
+ }
28
+ }
29
+ }
30
+
11
31
  async function run(options) {
12
32
  const port = getPort(options)
13
33
 
14
- console.log(`=== Stopping Witty-Skill-Insight Service (Port: ${port}) ===\n`)
34
+ console.log(`=== Stopping Skill-Insight Service (Port: ${port}) ===\n`)
15
35
 
16
36
  const pid = findPidOnPort(port)
17
37
 
@@ -23,7 +43,11 @@ async function run(options) {
23
43
  } else {
24
44
  console.error(`❌ Failed to stop service (PID: ${pid})`)
25
45
  console.error('You may need to manually kill the process:')
26
- console.error(` kill -9 ${pid}`)
46
+ if (isWindows) {
47
+ console.error(` taskkill /F /PID ${pid}`)
48
+ } else {
49
+ console.error(` kill -9 ${pid}`)
50
+ }
27
51
  process.exit(1)
28
52
  }
29
53
  return
@@ -32,15 +56,10 @@ async function run(options) {
32
56
  const isListening = await isPortListening(port)
33
57
  if (isListening) {
34
58
  console.log(`Service is running on port ${port} but PID not available.`)
35
- console.log('Trying to stop via pkill...')
36
-
37
- try {
38
- execSync('pkill -f "next dev"', { stdio: 'ignore' })
39
- } catch (e) {}
59
+ console.log('Trying to stop via process name...')
40
60
 
41
- try {
42
- execSync('pkill -f "next start"', { stdio: 'ignore' })
43
- } catch (e) {}
61
+ killProcessByName('next dev')
62
+ killProcessByName('next start')
44
63
 
45
64
  await new Promise(resolve => setTimeout(resolve, 1000))
46
65
 
@@ -52,10 +71,15 @@ async function run(options) {
52
71
 
53
72
  console.error('❌ Failed to stop service automatically.')
54
73
  console.error('Please stop the service manually:')
55
- console.error(` pkill -f "next dev"`)
56
- console.error(` pkill -f "next start"`)
57
- console.error(' or find the process and kill it:')
58
- console.error(` ps aux | grep next`)
74
+ if (isWindows) {
75
+ console.error(' taskkill /F /IM node.exe')
76
+ console.error(' or use Task Manager to find and end the process')
77
+ } else {
78
+ console.error(` pkill -f "next dev"`)
79
+ console.error(` pkill -f "next start"`)
80
+ console.error(' or find the process and kill it:')
81
+ console.error(` ps aux | grep next`)
82
+ }
59
83
  process.exit(1)
60
84
  return
61
85
  }
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  /**
3
- * Witty-Skill-Insight Skill Synchronizer
3
+ * Skill-Insight Skill Synchronizer
4
4
  *
5
5
  * Fetches configured skills from Dashboard and installs them locally.
6
6
  * Usage: node sync_skills.js [--check-only] [--agent <name>]
7
7
  *
8
- * Requires: ~/.witty/.env configuration
8
+ * Requires: ~/.skill-insight/.env configuration
9
9
  */
10
10
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
11
  if (k2 === undefined) k2 = k;
@@ -55,7 +55,7 @@ const AGENTS_DIR_MAP = {
55
55
  function loadConfiguration() {
56
56
  let config = {};
57
57
  try {
58
- const envPath = path.join(os.homedir(), '.witty', '.env');
58
+ const envPath = path.join(os.homedir(), '.skill-insight', '.env');
59
59
  if (fs.existsSync(envPath)) {
60
60
  const content = fs.readFileSync(envPath, 'utf8');
61
61
  content.split('\n').forEach(line => {
@@ -68,8 +68,8 @@ function loadConfiguration() {
68
68
  }
69
69
  catch (e) { }
70
70
  return {
71
- apiKey: config['WITTY_INSIGHT_API_KEY'] || process.env.WITTY_INSIGHT_API_KEY,
72
- host: config['WITTY_INSIGHT_HOST'] || process.env.WITTY_INSIGHT_HOST || '127.0.0.1:3000'
71
+ apiKey: config['SKILL_INSIGHT_API_KEY'] || process.env.SKILL_INSIGHT_API_KEY,
72
+ host: config['SKILL_INSIGHT_HOST'] || process.env.SKILL_INSIGHT_HOST || '127.0.0.1:3000'
73
73
  };
74
74
  }
75
75
  async function fetchManifest(host) {
@@ -2,20 +2,73 @@ const { execSync, spawn } = require('child_process')
2
2
  const fs = require('fs')
3
3
  const path = require('path')
4
4
  const http = require('http')
5
+ const os = require('os')
6
+
7
+ function getDataRoot() {
8
+ if (process.env.SKILL_INSIGHT_DATA_DIR) {
9
+ return process.env.SKILL_INSIGHT_DATA_DIR
10
+ }
11
+ if (__dirname.includes('node_modules')) {
12
+ return path.join(os.homedir(), '.skill-insight')
13
+ }
14
+ return path.resolve(__dirname, '..')
15
+ }
16
+
17
+ function migrateDataIfNeeded() {
18
+ const newDataRoot = path.join(os.homedir(), '.skill-insight')
19
+ const newDbPath = path.join(newDataRoot, 'data', 'witty_insight.db')
20
+ const oldDbPath = path.resolve(__dirname, '../data/witty_insight.db')
21
+
22
+ const newExists = fs.existsSync(newDbPath)
23
+ const oldExists = fs.existsSync(oldDbPath)
24
+
25
+ if (newExists && oldExists) {
26
+ console.log('Database already exists at new location, skipping migration')
27
+ return
28
+ }
29
+
30
+ if (newExists && !oldExists) {
31
+ console.log('Using existing database at ' + newDbPath)
32
+ return
33
+ }
34
+
35
+ if (!newExists && oldExists) {
36
+ console.log('Migrating database to new location...')
37
+ const newDataPath = path.join(newDataRoot, 'data')
38
+ if (!fs.existsSync(newDataPath)) {
39
+ fs.mkdirSync(newDataPath, { recursive: true })
40
+ }
41
+ fs.copyFileSync(oldDbPath, newDbPath)
42
+ console.log('✓ Database migrated to ' + newDbPath)
43
+
44
+ try { fs.renameSync(oldDbPath, oldDbPath + '.bak') } catch (e) {}
45
+ return
46
+ }
47
+
48
+ console.log('Creating new database at ' + newDbPath)
49
+ }
5
50
 
6
51
  function findPidOnPort(port) {
7
52
  const platform = process.platform
8
-
53
+
9
54
  try {
10
55
  if (platform === 'win32') {
11
56
  const output = execSync(`netstat -ano | findstr :${port}`, { encoding: 'utf8' })
12
57
  const lines = output.trim().split('\n')
13
58
  for (const line of lines) {
14
59
  const parts = line.trim().split(/\s+/)
15
- if (parts.length >= 5 && parts[1].includes(`:${port}`)) {
16
- return parts[parts.length - 1]
60
+ if (parts.length >= 5) {
61
+ const localAddress = parts[1]
62
+ const state = parts[3]
63
+ const pid = parts[4]
64
+ const portMatch = localAddress.match(/:(\d+)$/)
65
+ if (portMatch && parseInt(portMatch[1]) === port && state === 'LISTENING') {
66
+ console.log(`[Windows] Found process ${pid} listening on port ${port}`)
67
+ return pid
68
+ }
17
69
  }
18
70
  }
71
+ console.log(`[Windows] No process found listening on port ${port}`)
19
72
  } else {
20
73
  if (fs.existsSync('/usr/bin/lsof') || fs.existsSync('/usr/sbin/lsof')) {
21
74
  try {
@@ -23,7 +76,7 @@ function findPidOnPort(port) {
23
76
  if (pid.trim()) return pid.trim()
24
77
  } catch (e) {}
25
78
  }
26
-
79
+
27
80
  if (fs.existsSync('/bin/ss') || fs.existsSync('/usr/bin/ss')) {
28
81
  try {
29
82
  const output = execSync(`ss -lptn "sport = :${port}"`, { encoding: 'utf8' })
@@ -31,7 +84,7 @@ function findPidOnPort(port) {
31
84
  if (match) return match[1]
32
85
  } catch (e) {}
33
86
  }
34
-
87
+
35
88
  if (fs.existsSync('/bin/netstat') || fs.existsSync('/usr/bin/netstat')) {
36
89
  try {
37
90
  const output = execSync(`netstat -nlp 2>/dev/null | grep ":${port} "`, { encoding: 'utf8' })
@@ -39,14 +92,14 @@ function findPidOnPort(port) {
39
92
  if (match) return match[1]
40
93
  } catch (e) {}
41
94
  }
42
-
95
+
43
96
  try {
44
97
  const output = execSync(`fuser ${port}/tcp 2>/dev/null`, { encoding: 'utf8' })
45
98
  if (output.trim()) return output.trim()
46
99
  } catch (e) {}
47
100
  }
48
101
  } catch (e) {}
49
-
102
+
50
103
  return null
51
104
  }
52
105
 
@@ -61,25 +114,37 @@ function isPortListening(port) {
61
114
  }, (res) => {
62
115
  resolve(true)
63
116
  })
64
-
117
+
65
118
  req.on('error', () => {
66
119
  resolve(false)
67
120
  })
68
-
121
+
69
122
  req.on('timeout', () => {
70
123
  req.destroy()
71
124
  resolve(false)
72
125
  })
73
-
126
+
74
127
  req.end()
75
128
  })
76
129
  }
77
130
 
78
131
  function killProcess(pid) {
132
+ const platform = process.platform
133
+
79
134
  try {
80
- execSync(`kill -9 ${pid}`, { stdio: 'ignore' })
81
- return true
135
+ if (platform === 'win32') {
136
+ console.log(`[Windows] Attempting to kill process with PID ${pid} using taskkill...`)
137
+ execSync(`taskkill /F /PID ${pid}`, { stdio: 'ignore' })
138
+ console.log(`[Windows] Successfully killed process ${pid}`)
139
+ return true
140
+ } else {
141
+ console.log(`[Unix] Attempting to kill process with PID ${pid} using kill -9...`)
142
+ execSync(`kill -9 ${pid}`, { stdio: 'ignore' })
143
+ console.log(`[Unix] Successfully killed process ${pid}`)
144
+ return true
145
+ }
82
146
  } catch (e) {
147
+ console.error(`Failed to kill process ${pid}: ${e.message}`)
83
148
  return false
84
149
  }
85
150
  }
@@ -87,36 +152,37 @@ function killProcess(pid) {
87
152
  function getPort(options) {
88
153
  if (options.port) return options.port
89
154
  if (process.env.PORT) return parseInt(process.env.PORT)
90
-
155
+
91
156
  const envPath = path.join(process.cwd(), '.env')
92
157
  if (fs.existsSync(envPath)) {
93
158
  const envContent = fs.readFileSync(envPath, 'utf8')
94
159
  const match = envContent.match(/^PORT=(\d+)$/m)
95
160
  if (match) return parseInt(match[1])
96
161
  }
97
-
162
+
98
163
  return 3000
99
164
  }
100
165
 
101
166
  function ensureEnvFile(packageRoot) {
102
- const root = packageRoot || path.resolve(__dirname, '..')
167
+ const root = getDataRoot()
103
168
  const envPath = path.join(root, '.env')
104
- const envExamplePath = path.join(root, '.env.example')
105
-
169
+ const envExamplePath = path.join(path.resolve(__dirname, '..'), '.env.example')
170
+
106
171
  if (!fs.existsSync(envPath) && fs.existsSync(envExamplePath)) {
107
172
  console.log('No .env found. Initializing from .env.example...')
173
+ fs.mkdirSync(path.dirname(envPath), { recursive: true })
108
174
  fs.copyFileSync(envExamplePath, envPath)
109
- console.log('✓ .env file created')
175
+ console.log('✓ .env file created at ' + envPath)
110
176
  }
111
177
  }
112
178
 
113
179
  function ensureDataDirectory(packageRoot) {
114
- const root = packageRoot || path.resolve(__dirname, '..')
180
+ const root = getDataRoot()
115
181
  const dataPath = path.join(root, 'data')
116
182
  if (!fs.existsSync(dataPath)) {
117
183
  console.log('Creating data directory...')
118
184
  fs.mkdirSync(dataPath, { recursive: true })
119
- console.log('✓ data directory created')
185
+ console.log('✓ data directory created at ' + dataPath)
120
186
  }
121
187
  }
122
188
 
@@ -129,7 +195,7 @@ function runCommand(command, options = {}) {
129
195
  shell: true,
130
196
  ...options
131
197
  })
132
-
198
+
133
199
  proc.on('close', (code) => {
134
200
  if (code === 0) {
135
201
  resolve()
@@ -163,5 +229,7 @@ module.exports = {
163
229
  runCommand,
164
230
  sleep,
165
231
  isPortListening,
166
- findAvailablePort
167
- }
232
+ findAvailablePort,
233
+ getDataRoot,
234
+ migrateDataIfNeeded
235
+ }