@witty-ai/skill-insight 0.5.0-beta → 0.7.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +6 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +24 -0
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/config/create/route.js +4 -3
- package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +5 -4
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +6 -5
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +6 -5
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +4 -3
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +4 -3
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/rejudge/route.js +6 -5
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +4 -4
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js +6 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-commands/si-optimizer/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js +6 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/setup/opencode-tui/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js +3 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +6 -5
- package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/route.js +3 -2
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js +8 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/skills/upload/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/task-stats/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/task-stats/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/task-stats/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js +12 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/task-stats/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/upload/route.js +5 -4
- package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/details.html +1 -1
- package/.next/standalone/.next/server/app/details.rsc +5 -5
- package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +5 -5
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +5 -5
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__23efcd78._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6261d672._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3d72e3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa5c8858._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c20da96a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c602c518._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f9e66e02._.js +3 -0
- package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
- package/.next/standalone/.next/server/chunks/_3e8b4d8c._.js +1 -1
- package/.next/standalone/.next/server/chunks/_46f10554._.js +3 -0
- package/.next/standalone/.next/server/chunks/_4c806e26._.js +3 -0
- package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
- package/.next/standalone/.next/server/chunks/_ddffef3e._.js +1 -1
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_setup_opencode-tui_route_actions_fc8ae29f.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_skills_sync-enterprise_route_actions_0ca45899.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_task-stats_route_actions_983505cd.js +3 -0
- package/.next/standalone/.next/server/chunks/ce889_server_app_api_setup_opencode-commands_si-optimizer_route_actions_fcde30ef.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +47 -4
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -1
- package/.next/standalone/.next/server/chunks/src_98433cb8._.js +237 -0
- package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +57 -8
- package/.next/standalone/.next/server/chunks/src_lib_119f6c7b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9ab7cc4a._.js → [root-of-the-server]__082c32a2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_049876f0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_09546b95._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +9 -9
- package/.next/standalone/.next/server/chunks/ssr/{_b121f1ae._.js → _e2faf4f5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_3582f3d0.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_a1341fea._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_e1de6ed8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
- package/.next/standalone/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/standalone/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/{static/chunks/07c9f28a269c701a.js → standalone/.next/static/chunks/361e4cf1e9a71ccb.js} +1 -1
- package/.next/{static/chunks/5432ce4a494bc74d.js → standalone/.next/static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/standalone/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/standalone/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/standalone/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/standalone/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/standalone/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{static/chunks/7e35f4cf2e266022.js → standalone/.next/static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/{static/chunks/ff6357067630b168.js → standalone/.next/static/chunks/e13d208072a48316.js} +1 -1
- package/.next/standalone/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
- package/.next/standalone/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/.next/standalone/node_modules/.prisma/client/edge.js +7 -3
- package/.next/standalone/node_modules/.prisma/client/index-browser.js +4 -0
- package/.next/standalone/node_modules/.prisma/client/index.js +7 -3
- package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
- package/.next/standalone/node_modules/.prisma/client/schema.prisma +26 -22
- package/.next/standalone/node_modules/.prisma/client/wasm.js +4 -0
- package/.next/standalone/node_modules/adm-zip/util/constants.js +142 -0
- package/.next/standalone/node_modules/adm-zip/util/decoder.js +5 -0
- package/.next/standalone/node_modules/adm-zip/util/errors.js +63 -0
- package/.next/standalone/node_modules/adm-zip/util/fattr.js +76 -0
- package/.next/standalone/node_modules/adm-zip/util/index.js +5 -0
- package/.next/standalone/node_modules/adm-zip/util/utils.js +339 -0
- package/.next/standalone/package.json +6 -2
- package/.next/standalone/prisma/schema.prisma +7 -3
- package/.next/standalone/scripts/opencode_plugin.ts +158 -50
- package/.next/standalone/scripts/opencode_tui_plugin.tsx +308 -0
- package/.next/standalone/scripts/si-optimizer.md +5 -0
- package/.next/static/chunks/{737b8cff3c6a4e30.js → 015467355d3866a3.js} +1 -1
- package/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/{standalone/.next/static/chunks/07c9f28a269c701a.js → static/chunks/361e4cf1e9a71ccb.js} +1 -1
- package/.next/{standalone/.next/static/chunks/5432ce4a494bc74d.js → static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{standalone/.next/static/chunks/7e35f4cf2e266022.js → static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/{standalone/.next/static/chunks/ff6357067630b168.js → static/chunks/e13d208072a48316.js} +1 -1
- package/.next/static/chunks/{e09d9ee16fe90255.js → f786bb68e17b12b4.js} +1 -1
- package/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/package.json +6 -2
- package/prisma/schema.prisma +7 -3
- package/scripts/activate_telemetry.sh +44 -1
- package/scripts/opencode_plugin.ts +158 -50
- package/scripts/opencode_tui_plugin.tsx +308 -0
- package/scripts/si-optimizer.md +5 -0
- package/scripts/utils.js +0 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +0 -3
- package/.next/standalone/.next/server/chunks/_41a98bd8._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +0 -175
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +0 -3
- package/.next/standalone/.next/static/chunks/01eddf501c574a44.js +0 -1
- package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +0 -1
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/standalone/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- package/.next/standalone/LICENSE +0 -21
- package/.next/standalone/bin/cli.js +0 -106
- package/.next/standalone/custom-models.example.json +0 -21
- package/.next/standalone/eslint.config.mjs +0 -18
- package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +0 -126
- package/.next/standalone/features/feature-skill-used-jump-link/feature.json +0 -32
- package/.next/standalone/features/feature-skill-used-jump-link/issue.md +0 -32
- package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +0 -528
- package/.next/standalone/next.config.ts +0 -41
- package/.next/standalone/scripts/activate_telemetry.sh +0 -159
- package/.next/standalone/scripts/create_migration_package.sh +0 -124
- package/.next/standalone/scripts/fix_models.js +0 -66
- package/.next/standalone/scripts/init_opengauss.py +0 -284
- package/.next/standalone/scripts/install.js +0 -273
- package/.next/standalone/scripts/logs.js +0 -38
- package/.next/standalone/scripts/otel_data/logs.jsonl +0 -12
- package/.next/standalone/scripts/otel_data/metrics.jsonl +0 -21
- package/.next/standalone/scripts/otel_data/raw_requests.jsonl +0 -8
- package/.next/standalone/scripts/otel_data/raw_requests.jsonl.bak +0 -6
- package/.next/standalone/scripts/otel_receiver.py +0 -580
- package/.next/standalone/scripts/postinstall.js +0 -192
- package/.next/standalone/scripts/publish-npm.js +0 -401
- package/.next/standalone/scripts/restart.js +0 -26
- package/.next/standalone/scripts/restart.sh +0 -138
- package/.next/standalone/scripts/restart_dev.sh +0 -132
- package/.next/standalone/scripts/start.js +0 -291
- package/.next/standalone/scripts/status.js +0 -41
- package/.next/standalone/scripts/stop.js +0 -90
- package/.next/standalone/scripts/sync_skills.js +0 -216
- package/.next/standalone/scripts/utils.js +0 -235
- package/.next/standalone/tests/setup_skill_optimizer.sh +0 -118
- package/.next/standalone/tsconfig.json +0 -34
- package/.next/static/chunks/01eddf501c574a44.js +0 -1
- package/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/static/chunks/4071dbec4cf7e72e.js +0 -109
- package/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/static/chunks/a87b5e84254095a5.js +0 -1
- package/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{H581Rok68JtPV4bAVVH3l → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# =============================================================================
|
|
4
|
-
# Skill-Insight Official Setup Script (Fixed Path Logic)
|
|
5
|
-
#
|
|
6
|
-
# Installs native telemetry hooks for Claude Code and OpenCode.
|
|
7
|
-
# =============================================================================
|
|
8
|
-
|
|
9
|
-
# Define project root relative to this script's location
|
|
10
|
-
# Using a more robust way to handle 'source' from different shells
|
|
11
|
-
if [ -n "$BASH_SOURCE" ]; then
|
|
12
|
-
SELF_PATH="$BASH_SOURCE"
|
|
13
|
-
else
|
|
14
|
-
SELF_PATH="$0"
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
# Go to script dir, then up to project root
|
|
18
|
-
SCRIPTS_DIR="$( cd -- "$( dirname -- "$SELF_PATH" )" &> /dev/null && pwd )"
|
|
19
|
-
PROJECT_ROOT="$( dirname "$SCRIPTS_DIR" )"
|
|
20
|
-
|
|
21
|
-
echo "🚀 Starting Skill-Insight Telemetry Setup..."
|
|
22
|
-
echo "📂 Project Root: $PROJECT_ROOT"
|
|
23
|
-
|
|
24
|
-
# --- 1. Load Configurations ---
|
|
25
|
-
if [ -f "$PROJECT_ROOT/.env" ]; then
|
|
26
|
-
export $(grep -v '^#' "$PROJECT_ROOT/.env" | xargs)
|
|
27
|
-
echo "✅ Configuration loaded from .env"
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
# --- 2. Setup OpenCode Plugin (Priority) ---
|
|
31
|
-
OPENCODE_PLUGIN_SRC="$SCRIPTS_DIR/opencode_plugin.ts"
|
|
32
|
-
OPENCODE_PLUGIN_DEST="$HOME/.opencode/plugins/Witty-Skill-Insight.ts"
|
|
33
|
-
|
|
34
|
-
if [ -f "$OPENCODE_PLUGIN_SRC" ]; then
|
|
35
|
-
echo "🛠️ Syncing OpenCode Plugin..."
|
|
36
|
-
|
|
37
|
-
# Create plugin directory
|
|
38
|
-
mkdir -p "$HOME/.opencode/plugins"
|
|
39
|
-
cp "$OPENCODE_PLUGIN_SRC" "$OPENCODE_PLUGIN_DEST"
|
|
40
|
-
echo "✅ OpenCode Plugin installed to $OPENCODE_PLUGIN_DEST"
|
|
41
|
-
|
|
42
|
-
# --- 2.1 Setup Skill-Insight Config (~/.skill-insight/.env) ---
|
|
43
|
-
SKILL_INSIGHT_CONFIG_DIR="$HOME/.skill-insight"
|
|
44
|
-
SKILL_INSIGHT_CONFIG_FILE="$SKILL_INSIGHT_CONFIG_DIR/.env"
|
|
45
|
-
mkdir -p "$SKILL_INSIGHT_CONFIG_DIR"
|
|
46
|
-
|
|
47
|
-
EXISTING_KEY=""
|
|
48
|
-
EXISTING_HOST=""
|
|
49
|
-
if [ -f "$SKILL_INSIGHT_CONFIG_FILE" ]; then
|
|
50
|
-
# match only UNCOMMENTED lines
|
|
51
|
-
EXISTING_KEY=$(grep '^SKILL_INSIGHT_API_KEY=' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d'=' -f2-)
|
|
52
|
-
EXISTING_HOST=$(grep '^SKILL_INSIGHT_HOST=' "$SKILL_INSIGHT_CONFIG_FILE" | head -n 1 | cut -d'=' -f2-)
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
# API Key Selection Logic
|
|
56
|
-
API_KEY=""
|
|
57
|
-
if [ -n "$EXISTING_KEY" ]; then
|
|
58
|
-
echo "🔑 Found existing API Key in $SKILL_INSIGHT_CONFIG_FILE."
|
|
59
|
-
read -p "👉 Use existing key? (y/N, Default: y): " USE_EXISTING < /dev/tty
|
|
60
|
-
if [[ "$USE_EXISTING" =~ ^[Nn]$ ]]; then
|
|
61
|
-
read -p "👉 Please enter your NEW API Key: " API_KEY < /dev/tty
|
|
62
|
-
else
|
|
63
|
-
API_KEY="$EXISTING_KEY"
|
|
64
|
-
fi
|
|
65
|
-
elif [ -n "$SKILL_INSIGHT_API_KEY" ]; then
|
|
66
|
-
echo "🔑 Found API Key in current environment/env file: $SKILL_INSIGHT_API_KEY"
|
|
67
|
-
read -p "👉 Use this key for global config? (y/N, Default: y): " USE_ENV < /dev/tty
|
|
68
|
-
if [[ "$USE_ENV" =~ ^[Nn]$ ]]; then
|
|
69
|
-
read -p "👉 Please enter your API Key: " API_KEY < /dev/tty
|
|
70
|
-
else
|
|
71
|
-
API_KEY="$SKILL_INSIGHT_API_KEY"
|
|
72
|
-
fi
|
|
73
|
-
else
|
|
74
|
-
read -p "👉 Please enter your API Key: " API_KEY < /dev/tty
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
# -- Host Logic --
|
|
78
|
-
NEW_HOST="${SKILL_INSIGHT_HOST:-127.0.0.1:3000}"
|
|
79
|
-
FINAL_HOST="$NEW_HOST"
|
|
80
|
-
if [ -n "$EXISTING_HOST" ] && [ "$EXISTING_HOST" != "$NEW_HOST" ]; then
|
|
81
|
-
echo "🌐 Current Host in global config: $EXISTING_HOST"
|
|
82
|
-
echo "🌐 New Host detected: $NEW_HOST"
|
|
83
|
-
read -p "👉 Change to new Host? (y/N, Default: y): " CHANGE_HOST < /dev/tty
|
|
84
|
-
if [[ "$CHANGE_HOST" =~ ^[Nn]$ ]]; then
|
|
85
|
-
FINAL_HOST="$EXISTING_HOST"
|
|
86
|
-
fi
|
|
87
|
-
fi
|
|
88
|
-
|
|
89
|
-
if [ -z "$API_KEY" ]; then
|
|
90
|
-
echo "⚠️ Warning: No API Key provided. Data reporting will fail."
|
|
91
|
-
fi
|
|
92
|
-
|
|
93
|
-
echo "⚙️ Syncing configuration to $SKILL_INSIGHT_CONFIG_FILE..."
|
|
94
|
-
touch "$SKILL_INSIGHT_CONFIG_FILE"
|
|
95
|
-
cp "$SKILL_INSIGHT_CONFIG_FILE" "${SKILL_INSIGHT_CONFIG_FILE}.bak"
|
|
96
|
-
grep -v "^SKILL_INSIGHT_API_KEY=" "${SKILL_INSIGHT_CONFIG_FILE}.bak" | grep -v "^SKILL_INSIGHT_HOST=" > "$SKILL_INSIGHT_CONFIG_FILE"
|
|
97
|
-
echo "SKILL_INSIGHT_API_KEY=$API_KEY" >> "$SKILL_INSIGHT_CONFIG_FILE"
|
|
98
|
-
echo "SKILL_INSIGHT_HOST=$FINAL_HOST" >> "$SKILL_INSIGHT_CONFIG_FILE"
|
|
99
|
-
rm "${SKILL_INSIGHT_CONFIG_FILE}.bak"
|
|
100
|
-
echo "✅ Configuration updated (Other settings preserved)."
|
|
101
|
-
|
|
102
|
-
# NEW: Register Sync Hook into .zshrc / .bashrc
|
|
103
|
-
SYNC_SCRIPT="$HOME/.skill-insight/sync_skills.js"
|
|
104
|
-
if [ -f "$SYNC_SCRIPT" ]; then
|
|
105
|
-
SHELL_RC="$HOME/.zshrc"
|
|
106
|
-
[ -f "$HOME/.bashrc" ] && SHELL_RC="$HOME/.bashrc"
|
|
107
|
-
|
|
108
|
-
# Add aliases if not present
|
|
109
|
-
if ! grep -q "witty_sync_wrapper" "$SHELL_RC"; then
|
|
110
|
-
echo "" >> "$SHELL_RC"
|
|
111
|
-
echo "# Skill-Insight Auto-Sync" >> "$SHELL_RC"
|
|
112
|
-
echo "alias opencode='node $SYNC_SCRIPT --agent opencode && opencode'" >> "$SHELL_RC"
|
|
113
|
-
echo "alias claude='node $SYNC_SCRIPT --agent claude && claude'" >> "$SHELL_RC"
|
|
114
|
-
echo "✅ Auto-sync aliases added to $SHELL_RC"
|
|
115
|
-
fi
|
|
116
|
-
fi
|
|
117
|
-
|
|
118
|
-
else
|
|
119
|
-
echo "❌ Error: OpenCode plugin source not found at $OPENCODE_PLUGIN_SRC"
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# --- 3. Setup Claude Code Hook ---
|
|
123
|
-
CLAUDE_HOOK="$SCRIPTS_DIR/capture_claude.js"
|
|
124
|
-
if [ -f "$CLAUDE_HOOK" ]; then
|
|
125
|
-
echo "🛠️ Configuring Claude Code Hook..."
|
|
126
|
-
chmod +x "$CLAUDE_HOOK"
|
|
127
|
-
if command -v claude &> /dev/null; then
|
|
128
|
-
# Check for active Claude processes which can cause config locks/hangs
|
|
129
|
-
CLAUDE_PIDS=$(pgrep -x claude 2>/dev/null)
|
|
130
|
-
if [ -n "$CLAUDE_PIDS" ]; then
|
|
131
|
-
echo "⚠️ Detected running Claude Code process(es): $CLAUDE_PIDS"
|
|
132
|
-
echo " Active sessions can prevent configuration updates from completing."
|
|
133
|
-
read -p "👉 Would you like to terminate these processes to speed up registration? (y/N): " KILL_CLAUDE < /dev/tty
|
|
134
|
-
if [[ "$KILL_CLAUDE" =~ ^[Yy]$ ]]; then
|
|
135
|
-
echo "🔪 Terminating Claude processes..."
|
|
136
|
-
kill -9 $CLAUDE_PIDS 2>/dev/null
|
|
137
|
-
sleep 1
|
|
138
|
-
else
|
|
139
|
-
echo "⏳ Continuing (Warning: this step may hang if Claude is busy)..."
|
|
140
|
-
fi
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
claude config set hooks.Stop "$CLAUDE_HOOK" >/dev/null 2>&1
|
|
144
|
-
echo "✅ Claude Hook registered: $CLAUDE_HOOK"
|
|
145
|
-
fi
|
|
146
|
-
else
|
|
147
|
-
echo "❌ Error: Claude hook script not found at $CLAUDE_HOOK"
|
|
148
|
-
fi
|
|
149
|
-
|
|
150
|
-
# --- 4. Final Cleanup ---
|
|
151
|
-
unset ANTHROPIC_BASE_URL
|
|
152
|
-
unset DEEPSEEK_BASE_URL
|
|
153
|
-
unset OPENAI_BASE_URL
|
|
154
|
-
|
|
155
|
-
echo ""
|
|
156
|
-
echo "🌟 Skill-Insight Telemetry: READY"
|
|
157
|
-
echo "------------------------------------------------"
|
|
158
|
-
echo "To test, run: opencode run 'hello'"
|
|
159
|
-
echo ""
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# scripts/create_migration_package.sh
|
|
3
|
-
|
|
4
|
-
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
5
|
-
PACKAGE_NAME="migration_data_$TIMESTAMP"
|
|
6
|
-
mkdir -p "$PACKAGE_NAME/data"
|
|
7
|
-
|
|
8
|
-
echo "📦 Creating migration package: $PACKAGE_NAME"
|
|
9
|
-
|
|
10
|
-
# 1. Back up Database Safely
|
|
11
|
-
DB_NAME="witty_insight.db"
|
|
12
|
-
DB_PATH="data/$DB_NAME"
|
|
13
|
-
if [ -f "$DB_PATH" ]; then
|
|
14
|
-
echo " Running safe backup of SQLite database..."
|
|
15
|
-
if command -v sqlite3 &> /dev/null; then
|
|
16
|
-
sqlite3 "$DB_PATH" ".backup '$PACKAGE_NAME/data/$DB_NAME'"
|
|
17
|
-
else
|
|
18
|
-
echo " ⚠️ sqlite3 command not found, falling back to direct copy."
|
|
19
|
-
echo " ⚠️ Recommended: Stop the application before running this script to ensure data consistency."
|
|
20
|
-
cp "$DB_PATH" "$PACKAGE_NAME/data/"
|
|
21
|
-
fi
|
|
22
|
-
echo " ✔ Database backed up to $PACKAGE_NAME/data/$DB_NAME"
|
|
23
|
-
else
|
|
24
|
-
echo " ❌ Database file not found at $DB_PATH!"
|
|
25
|
-
rm -rf "$PACKAGE_NAME"
|
|
26
|
-
exit 1
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
# 2. Copy .env (Optional/Warning)
|
|
30
|
-
if [ -f ".env" ]; then
|
|
31
|
-
echo " ✔ Copying .env file (Contains secrets!)"
|
|
32
|
-
cp ".env" "$PACKAGE_NAME/"
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
# 3. Copy Prisma Schema (Critical for Prisma Client gen)
|
|
36
|
-
if [ -d "prisma" ]; then
|
|
37
|
-
echo " ✔ Copying Prisma schema"
|
|
38
|
-
mkdir -p "$PACKAGE_NAME/prisma"
|
|
39
|
-
cp -r prisma/* "$PACKAGE_NAME/prisma/"
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
# 4. Create Restore Instructions
|
|
43
|
-
cat > "$PACKAGE_NAME/HOW_TO_RESTORE.txt" <<EOF
|
|
44
|
-
MIGRATION RESTORE INSTRUCTIONS
|
|
45
|
-
==============================
|
|
46
|
-
|
|
47
|
-
1. Pre-requisites:
|
|
48
|
-
- Node.js installed on target server.
|
|
49
|
-
- Project code (git clone) is present on target server.
|
|
50
|
-
|
|
51
|
-
2. Files in this package:
|
|
52
|
-
- data/$DB_NAME: The database file (User data, Skills, Executions).
|
|
53
|
-
- .env: Environment variables (Review before using).
|
|
54
|
-
- prisma/: Database schema files.
|
|
55
|
-
|
|
56
|
-
3. Restore Steps:
|
|
57
|
-
a. Stop the running application on the new server (e.g., pm2 stop all).
|
|
58
|
-
|
|
59
|
-
b. Extract the package on the destination server:
|
|
60
|
-
tar -xzf $PACKAGE_NAME.tar.gz
|
|
61
|
-
cd $PACKAGE_NAME
|
|
62
|
-
|
|
63
|
-
c. Copy database to the project's 'data/' folder:
|
|
64
|
-
mkdir -p /path/to/your/project/data
|
|
65
|
-
cp data/$DB_NAME /path/to/your/project/data/
|
|
66
|
-
|
|
67
|
-
d. Ensure '.env' is correctly set up in project root.
|
|
68
|
-
(Check if DATABASE_URL="file:../data/$DB_NAME" is set)
|
|
69
|
-
cp .env /path/to/your/project/
|
|
70
|
-
|
|
71
|
-
e. Regenerate Prisma Client (CRITICAL STEP):
|
|
72
|
-
cd /path/to/your/project
|
|
73
|
-
npm install
|
|
74
|
-
npx prisma generate
|
|
75
|
-
|
|
76
|
-
f. Restart the application.
|
|
77
|
-
npm run dev (or npm run start / pm2 start ...)
|
|
78
|
-
|
|
79
|
-
EOF
|
|
80
|
-
|
|
81
|
-
# 5. Compress
|
|
82
|
-
# Use COPYFILE_DISABLE=1 to prevent ._ resource fork files on macOS
|
|
83
|
-
# Use --no-xattrs to prevent macOS extended attributes (like provenance) from causing warnings on Linux
|
|
84
|
-
if tar --version | grep -q "bsdtar"; then
|
|
85
|
-
# macOS usually uses bsdtar
|
|
86
|
-
COPYFILE_DISABLE=1 tar --no-xattrs -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_NAME"
|
|
87
|
-
else
|
|
88
|
-
# GNU tar or other
|
|
89
|
-
tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_NAME"
|
|
90
|
-
fi
|
|
91
|
-
rm -rf "$PACKAGE_NAME"
|
|
92
|
-
|
|
93
|
-
echo ""
|
|
94
|
-
echo "✅ Migration package created: ${PACKAGE_NAME}.tar.gz"
|
|
95
|
-
echo "---------------------------------------------------"
|
|
96
|
-
echo "NEXT STEPS (Execute on OBJECTIVE SERVER):"
|
|
97
|
-
echo ""
|
|
98
|
-
echo "1. Transfer the file:"
|
|
99
|
-
echo " scp ${PACKAGE_NAME}.tar.gz user@target-server:/path/to/project_root/"
|
|
100
|
-
echo ""
|
|
101
|
-
echo "2. Log in and extract:"
|
|
102
|
-
echo " ssh user@target-server"
|
|
103
|
-
echo " cd /path/to/project_root/"
|
|
104
|
-
echo " tar -xzf ${PACKAGE_NAME}.tar.gz"
|
|
105
|
-
echo ""
|
|
106
|
-
echo "3. Restore data & environment:"
|
|
107
|
-
echo " cd ${PACKAGE_NAME}"
|
|
108
|
-
echo " # Stop app if running"
|
|
109
|
-
echo " # Copy Database"
|
|
110
|
-
echo " mkdir -p ../data"
|
|
111
|
-
echo " cp data/$DB_NAME ../data/"
|
|
112
|
-
echo " # Copy Config"
|
|
113
|
-
echo " cp .env ../.env"
|
|
114
|
-
echo " # Copy Schema (just in case code is old)"
|
|
115
|
-
echo " cp -r prisma/* ../prisma/"
|
|
116
|
-
echo ""
|
|
117
|
-
echo "4. Rebuild Database Client (CRITICAL):"
|
|
118
|
-
echo " cd .."
|
|
119
|
-
echo " npm install"
|
|
120
|
-
echo " npx prisma generate"
|
|
121
|
-
echo ""
|
|
122
|
-
echo "5. Start App:"
|
|
123
|
-
echo " npm run dev"
|
|
124
|
-
echo "---------------------------------------------------"
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const { PrismaClient } = require('@prisma/client');
|
|
3
|
-
const prisma = new PrismaClient();
|
|
4
|
-
|
|
5
|
-
async function main() {
|
|
6
|
-
console.log('开始刷新历史模型数据...');
|
|
7
|
-
|
|
8
|
-
// 1. 更新 Execution 表
|
|
9
|
-
const updateExecutions = await prisma.execution.updateMany({
|
|
10
|
-
where: {
|
|
11
|
-
OR: [
|
|
12
|
-
{ model: null },
|
|
13
|
-
{ model: '' },
|
|
14
|
-
{ model: 'unknown' },
|
|
15
|
-
{ model: 'Unknown' }
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
data: {
|
|
19
|
-
model: 'deepseek-chat'
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
console.log(`已刷新 ${updateExecutions.count} 条 Execution 记录。`);
|
|
23
|
-
|
|
24
|
-
// 2. 更新 Session 表
|
|
25
|
-
const updateSessions = await prisma.session.updateMany({
|
|
26
|
-
where: {
|
|
27
|
-
OR: [
|
|
28
|
-
{ model: null },
|
|
29
|
-
{ model: '' },
|
|
30
|
-
{ model: 'unknown' },
|
|
31
|
-
{ model: 'Unknown' }
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
data: {
|
|
35
|
-
model: 'deepseek-chat'
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
console.log(`已刷新 ${updateSessions.count} 条 Session 记录。`);
|
|
39
|
-
|
|
40
|
-
// 3. 更新 User 表中的 defaultModel(防止旧的无效偏好干扰)
|
|
41
|
-
const updateUsers = await prisma.user.updateMany({
|
|
42
|
-
where: {
|
|
43
|
-
OR: [
|
|
44
|
-
{ defaultModel: null },
|
|
45
|
-
{ defaultModel: '' },
|
|
46
|
-
{ defaultModel: 'unknown' },
|
|
47
|
-
{ defaultModel: 'Unknown' }
|
|
48
|
-
]
|
|
49
|
-
},
|
|
50
|
-
data: {
|
|
51
|
-
defaultModel: 'deepseek-chat'
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
console.log(`已重置 ${updateUsers.count} 个用户的默认模型偏好。`);
|
|
55
|
-
|
|
56
|
-
console.log('数据刷新完成。');
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
main()
|
|
60
|
-
.catch(e => {
|
|
61
|
-
console.error('刷新失败:', e);
|
|
62
|
-
process.exit(1);
|
|
63
|
-
})
|
|
64
|
-
.finally(async () => {
|
|
65
|
-
await prisma.$disconnect();
|
|
66
|
-
});
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
import os
|
|
3
|
-
import sys
|
|
4
|
-
import logging
|
|
5
|
-
import uuid
|
|
6
|
-
|
|
7
|
-
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
8
|
-
logger = logging.getLogger(__name__)
|
|
9
|
-
|
|
10
|
-
try:
|
|
11
|
-
import psycopg2
|
|
12
|
-
from psycopg2 import Error
|
|
13
|
-
except ImportError:
|
|
14
|
-
logger.error("未找到 psycopg2 模块。请使用 'pip install psycopg2-binary' 安装。")
|
|
15
|
-
sys.exit(1)
|
|
16
|
-
|
|
17
|
-
TABLE_DEFINITIONS = {
|
|
18
|
-
"User": {
|
|
19
|
-
"columns": [
|
|
20
|
-
("id", "TEXT PRIMARY KEY"),
|
|
21
|
-
("username", "TEXT UNIQUE NOT NULL"),
|
|
22
|
-
("apiKey", "TEXT UNIQUE NOT NULL"),
|
|
23
|
-
("createdAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
24
|
-
],
|
|
25
|
-
"unique_constraints": []
|
|
26
|
-
},
|
|
27
|
-
"Skill": {
|
|
28
|
-
"columns": [
|
|
29
|
-
("id", "TEXT PRIMARY KEY"),
|
|
30
|
-
("name", "TEXT NOT NULL"),
|
|
31
|
-
("category", "TEXT DEFAULT 'Other'"),
|
|
32
|
-
("description", "TEXT"),
|
|
33
|
-
("tags", "TEXT"),
|
|
34
|
-
("visibility", "TEXT DEFAULT 'private'"),
|
|
35
|
-
("author", "TEXT"),
|
|
36
|
-
("user", "TEXT"),
|
|
37
|
-
("createdAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
38
|
-
("updatedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
39
|
-
("activeVersion", "INTEGER DEFAULT 0"),
|
|
40
|
-
("isUploaded", "BOOLEAN DEFAULT FALSE"),
|
|
41
|
-
],
|
|
42
|
-
"unique_constraints": ["UNIQUE(name, \"user\")"]
|
|
43
|
-
},
|
|
44
|
-
"SkillVersion": {
|
|
45
|
-
"columns": [
|
|
46
|
-
("id", "TEXT PRIMARY KEY"),
|
|
47
|
-
("skillId", "TEXT NOT NULL"),
|
|
48
|
-
("version", "INTEGER NOT NULL"),
|
|
49
|
-
("content", "TEXT NOT NULL"),
|
|
50
|
-
("assetPath", "TEXT"),
|
|
51
|
-
("files", "TEXT"),
|
|
52
|
-
("changeLog", "TEXT"),
|
|
53
|
-
("createdAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
54
|
-
],
|
|
55
|
-
"unique_constraints": ["UNIQUE(\"skillId\", version)"],
|
|
56
|
-
"foreign_keys": ["FOREIGN KEY (\"skillId\") REFERENCES \"Skill\"(id) ON DELETE CASCADE"]
|
|
57
|
-
},
|
|
58
|
-
"Execution": {
|
|
59
|
-
"columns": [
|
|
60
|
-
("id", "TEXT PRIMARY KEY"),
|
|
61
|
-
("taskId", "TEXT"),
|
|
62
|
-
("query", "TEXT"),
|
|
63
|
-
("framework", "TEXT"),
|
|
64
|
-
("tokens", "INTEGER"),
|
|
65
|
-
("cost", "FLOAT"),
|
|
66
|
-
("latency", "FLOAT"),
|
|
67
|
-
("timestamp", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
68
|
-
("model", "TEXT"),
|
|
69
|
-
("finalResult", "TEXT"),
|
|
70
|
-
("skill", "TEXT"),
|
|
71
|
-
("skills", "TEXT"),
|
|
72
|
-
("isSkillCorrect", "BOOLEAN DEFAULT FALSE"),
|
|
73
|
-
("isAnswerCorrect", "BOOLEAN DEFAULT FALSE"),
|
|
74
|
-
("answerScore", "FLOAT"),
|
|
75
|
-
("skillScore", "FLOAT"),
|
|
76
|
-
("judgmentReason", "TEXT"),
|
|
77
|
-
("failures", "TEXT"),
|
|
78
|
-
("skillIssues", "TEXT"),
|
|
79
|
-
("skillVersion", "INTEGER"),
|
|
80
|
-
("label", "TEXT"),
|
|
81
|
-
("user", "TEXT"),
|
|
82
|
-
("toolCallCount", "INTEGER"),
|
|
83
|
-
("llmCallCount", "INTEGER"),
|
|
84
|
-
("inputTokens", "INTEGER"),
|
|
85
|
-
("outputTokens", "INTEGER"),
|
|
86
|
-
("toolCallErrorCount", "INTEGER"),
|
|
87
|
-
("cacheReadInputTokens", "INTEGER"),
|
|
88
|
-
("cacheCreationInputTokens", "INTEGER"),
|
|
89
|
-
("maxSingleCallTokens", "INTEGER"),
|
|
90
|
-
],
|
|
91
|
-
"unique_constraints": []
|
|
92
|
-
},
|
|
93
|
-
"Config": {
|
|
94
|
-
"columns": [
|
|
95
|
-
("id", "TEXT PRIMARY KEY"),
|
|
96
|
-
("query", "TEXT NOT NULL"),
|
|
97
|
-
("skill", "TEXT NOT NULL"),
|
|
98
|
-
("standardAnswer", "TEXT NOT NULL"),
|
|
99
|
-
("rootCauses", "TEXT"),
|
|
100
|
-
("keyActions", "TEXT"),
|
|
101
|
-
("user", "TEXT"),
|
|
102
|
-
("parseStatus", "TEXT DEFAULT 'completed'"),
|
|
103
|
-
],
|
|
104
|
-
"unique_constraints": ["UNIQUE(query, \"user\")"]
|
|
105
|
-
},
|
|
106
|
-
"Session": {
|
|
107
|
-
"columns": [
|
|
108
|
-
("id", "TEXT PRIMARY KEY"),
|
|
109
|
-
("taskId", "TEXT UNIQUE NOT NULL"),
|
|
110
|
-
("label", "TEXT"),
|
|
111
|
-
("query", "TEXT"),
|
|
112
|
-
("startTime", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
113
|
-
("endTime", "TIMESTAMP"),
|
|
114
|
-
("interactions", "TEXT"),
|
|
115
|
-
("user", "TEXT"),
|
|
116
|
-
("model", "TEXT"),
|
|
117
|
-
],
|
|
118
|
-
"unique_constraints": []
|
|
119
|
-
},
|
|
120
|
-
"UserSettings": {
|
|
121
|
-
"columns": [
|
|
122
|
-
("id", "TEXT PRIMARY KEY"),
|
|
123
|
-
("user", "TEXT UNIQUE NOT NULL"),
|
|
124
|
-
("settingsJson", "TEXT NOT NULL"),
|
|
125
|
-
("createdAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
126
|
-
("updatedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
127
|
-
],
|
|
128
|
-
"unique_constraints": []
|
|
129
|
-
},
|
|
130
|
-
"ParsedFlow": {
|
|
131
|
-
"columns": [
|
|
132
|
-
("id", "TEXT PRIMARY KEY"),
|
|
133
|
-
("skillId", "TEXT NOT NULL"),
|
|
134
|
-
("version", "INTEGER NOT NULL"),
|
|
135
|
-
("user", "TEXT"),
|
|
136
|
-
("flowJson", "TEXT NOT NULL"),
|
|
137
|
-
("mermaidCode", "TEXT NOT NULL"),
|
|
138
|
-
("parsedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
139
|
-
],
|
|
140
|
-
"unique_constraints": ["UNIQUE(\"skillId\", version, \"user\")"]
|
|
141
|
-
},
|
|
142
|
-
"ExecutionMatch": {
|
|
143
|
-
"columns": [
|
|
144
|
-
("id", "TEXT PRIMARY KEY"),
|
|
145
|
-
("executionId", "TEXT UNIQUE NOT NULL"),
|
|
146
|
-
("skillId", "TEXT NOT NULL"),
|
|
147
|
-
("skillVersion", "INTEGER NOT NULL"),
|
|
148
|
-
("user", "TEXT"),
|
|
149
|
-
("matchJson", "TEXT NOT NULL"),
|
|
150
|
-
("staticMermaid", "TEXT NOT NULL"),
|
|
151
|
-
("dynamicMermaid", "TEXT NOT NULL"),
|
|
152
|
-
("analysisText", "TEXT"),
|
|
153
|
-
("interactionCount", "INTEGER NOT NULL"),
|
|
154
|
-
("matchedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
155
|
-
],
|
|
156
|
-
"unique_constraints": []
|
|
157
|
-
},
|
|
158
|
-
"UserGuideState": {
|
|
159
|
-
"columns": [
|
|
160
|
-
("id", "TEXT PRIMARY KEY"),
|
|
161
|
-
("user", "TEXT UNIQUE NOT NULL"),
|
|
162
|
-
("guideDisabled", "BOOLEAN DEFAULT FALSE"),
|
|
163
|
-
("currentStep", "INTEGER DEFAULT 0"),
|
|
164
|
-
("completedSteps", "TEXT DEFAULT '[]'"),
|
|
165
|
-
("skippedSteps", "TEXT DEFAULT '[]'"),
|
|
166
|
-
("lastShownAt", "TIMESTAMP"),
|
|
167
|
-
("dismissedAt", "TIMESTAMP"),
|
|
168
|
-
("createdAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
169
|
-
("updatedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
170
|
-
],
|
|
171
|
-
"unique_constraints": []
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
def get_existing_columns(cursor, table_name):
|
|
176
|
-
cursor.execute("""
|
|
177
|
-
SELECT column_name
|
|
178
|
-
FROM information_schema.columns
|
|
179
|
-
WHERE table_name = %s
|
|
180
|
-
""", (table_name,))
|
|
181
|
-
return [row[0] for row in cursor.fetchall()]
|
|
182
|
-
|
|
183
|
-
def table_exists(cursor, table_name):
|
|
184
|
-
cursor.execute("""
|
|
185
|
-
SELECT EXISTS (
|
|
186
|
-
SELECT 1 FROM information_schema.tables
|
|
187
|
-
WHERE table_name = %s
|
|
188
|
-
)
|
|
189
|
-
""", (table_name,))
|
|
190
|
-
return cursor.fetchone()[0]
|
|
191
|
-
|
|
192
|
-
def init_opengauss_db():
|
|
193
|
-
connection = None
|
|
194
|
-
cursor = None
|
|
195
|
-
try:
|
|
196
|
-
host = os.getenv("DB_HOST", "127.0.0.1")
|
|
197
|
-
port = os.getenv("DB_PORT", "26000")
|
|
198
|
-
dbname = os.getenv("DB_NAME", "postgres")
|
|
199
|
-
user = os.getenv("DB_USER", "omm")
|
|
200
|
-
password = os.getenv("DB_PASSWORD", "")
|
|
201
|
-
|
|
202
|
-
logger.info(f"正在以用户 {user} 连接到 OpenGauss ({host}:{port})...")
|
|
203
|
-
|
|
204
|
-
connection = psycopg2.connect(
|
|
205
|
-
host=host,
|
|
206
|
-
port=port,
|
|
207
|
-
dbname=dbname,
|
|
208
|
-
user=user,
|
|
209
|
-
password=password
|
|
210
|
-
)
|
|
211
|
-
connection.autocommit = True
|
|
212
|
-
logger.info("数据库连接成功")
|
|
213
|
-
|
|
214
|
-
cursor = connection.cursor()
|
|
215
|
-
|
|
216
|
-
cursor.execute("SELECT version();")
|
|
217
|
-
db_version = cursor.fetchone()
|
|
218
|
-
print(f"成功连接到 OpenGauss!版本: {db_version[0]}\n")
|
|
219
|
-
|
|
220
|
-
for table_name, table_def in TABLE_DEFINITIONS.items():
|
|
221
|
-
print(f"处理表: {table_name}")
|
|
222
|
-
|
|
223
|
-
if not table_exists(cursor, table_name):
|
|
224
|
-
columns_sql = ", ".join([f'"{col[0]}" {col[1]}' for col in table_def["columns"]])
|
|
225
|
-
constraints_sql = ""
|
|
226
|
-
if table_def.get("unique_constraints"):
|
|
227
|
-
constraints_sql = ", " + ", ".join(table_def["unique_constraints"])
|
|
228
|
-
if table_def.get("foreign_keys"):
|
|
229
|
-
constraints_sql += ", " + ", ".join(table_def["foreign_keys"])
|
|
230
|
-
|
|
231
|
-
create_sql = f'CREATE TABLE "{table_name}" ({columns_sql}{constraints_sql})'
|
|
232
|
-
cursor.execute(create_sql)
|
|
233
|
-
print(f" ✓ 创建表 {table_name}")
|
|
234
|
-
else:
|
|
235
|
-
existing_columns = get_existing_columns(cursor, table_name)
|
|
236
|
-
added_columns = []
|
|
237
|
-
|
|
238
|
-
for col_name, col_def in table_def["columns"]:
|
|
239
|
-
if col_name not in existing_columns:
|
|
240
|
-
alter_sql = f'ALTER TABLE "{table_name}" ADD COLUMN "{col_name}" {col_def}'
|
|
241
|
-
cursor.execute(alter_sql)
|
|
242
|
-
added_columns.append(col_name)
|
|
243
|
-
|
|
244
|
-
if added_columns:
|
|
245
|
-
print(f" ✓ 添加缺失列: {', '.join(added_columns)}")
|
|
246
|
-
else:
|
|
247
|
-
print(f" ✓ 表结构完整,无需修改")
|
|
248
|
-
|
|
249
|
-
print("\nOpenGauss 数据库表结构同步完成。")
|
|
250
|
-
|
|
251
|
-
test_user_id = str(uuid.uuid4())
|
|
252
|
-
try:
|
|
253
|
-
insert_query = 'INSERT INTO "User" (id, username, "apiKey") VALUES (%s, %s, %s)'
|
|
254
|
-
record_to_insert = (test_user_id, "GaussDeveloper", "gauss-dev-key")
|
|
255
|
-
cursor.execute(insert_query, record_to_insert)
|
|
256
|
-
connection.commit()
|
|
257
|
-
print("测试用户记录插入成功。")
|
|
258
|
-
except Error as e:
|
|
259
|
-
if e.pgcode == '23505':
|
|
260
|
-
print("测试用户记录已存在,跳过插入。")
|
|
261
|
-
connection.rollback()
|
|
262
|
-
else:
|
|
263
|
-
raise e
|
|
264
|
-
|
|
265
|
-
cursor.execute('SELECT * FROM "User" WHERE username = %s', ("GaussDeveloper",))
|
|
266
|
-
record = cursor.fetchone()
|
|
267
|
-
if record:
|
|
268
|
-
print(f"验证用户: ID={record[0]}, Username={record[1]}")
|
|
269
|
-
|
|
270
|
-
except (Exception, Error) as error:
|
|
271
|
-
print(f"操作 OpenGauss 时发生错误: {error}")
|
|
272
|
-
if connection:
|
|
273
|
-
connection.rollback()
|
|
274
|
-
sys.exit(1)
|
|
275
|
-
|
|
276
|
-
finally:
|
|
277
|
-
if cursor:
|
|
278
|
-
cursor.close()
|
|
279
|
-
if connection:
|
|
280
|
-
connection.close()
|
|
281
|
-
print("\n数据库连接已安全关闭。")
|
|
282
|
-
|
|
283
|
-
if __name__ == "__main__":
|
|
284
|
-
init_opengauss_db()
|