@witty-ai/skill-insight 0.4.0-beta → 0.6.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +55 -5
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +5 -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 +30 -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 +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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/auth/organization/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js +7 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/auth/organization/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/config/create/route.js +2 -2
- 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 +4 -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 +3 -3
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js +1 -1
- package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +3 -3
- 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 +2 -2
- 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]/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +5 -5
- 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 +3 -3
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +3 -3
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/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]/parse-flow/route.js +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/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/automation/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +2 -2
- 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/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 +11 -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 +2 -2
- 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 +4 -4
- package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +4 -4
- 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 +5 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.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 +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.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]__bd91659b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c20da96a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +3 -0
- 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 +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__f9e66e02._.js +3 -0
- package/.next/standalone/.next/server/chunks/_3e8b4d8c._.js +1 -1
- package/.next/standalone/.next/server/chunks/_41a98bd8._.js +1 -1
- 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_auth_organization_route_actions_f58710b7.js +3 -0
- 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 -43
- 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 +175 -0
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__5d576168._.js → [root-of-the-server]__40353d98._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__89851212._.js → [root-of-the-server]__480fcd92._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__28978655._.js → [root-of-the-server]__48f8fbcb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__a5ef0b61._.js → [root-of-the-server]__49921b2a._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__317833f9._.js → [root-of-the-server]__593be3d6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__ca101543._.js → [root-of-the-server]__5e9ff641._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__90641614._.js → [root-of-the-server]__66cc6ff2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__cda1e286._.js → [root-of-the-server]__9889bdc8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__42ba97b6._.js → [root-of-the-server]__9905ca7a._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9ab7cc4a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7bb97139._.js → [root-of-the-server]__9d6b7d48._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__6b8b9bb9._.js → [root-of-the-server]__b8edc8c6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__b9972e88._.js → [root-of-the-server]__d691ecb0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__52851239._.js → [root-of-the-server]__e5ddfd15._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9630dedf._.js → [root-of-the-server]__f72f330e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__99ab66d7._.js → [root-of-the-server]__f843e085._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d424fa04._.js → [root-of-the-server]__fd69d276._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_7688d7cd._.js → _049876f0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_72a74a0c._.js → _09546b95._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_cf1f3d2c._.js → _b121f1ae._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_f2653232._.js → node_modules_039c6a11._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_da87f0e3._.js → node_modules_0d3530cd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_afb1ecef._.js → node_modules_0e883565._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_8d9e56b7._.js → node_modules_11dbf165._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_76d6c533._.js → node_modules_2041c122._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_b007145b._.js → node_modules_235267bb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_11d81adf._.js → node_modules_25dfb0ba._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_4ea9b27b._.js → node_modules_2b12c669._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_cc19e85c._.js → node_modules_32996880._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_62621b34._.js → node_modules_35885fe9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed4150ad._.js → node_modules_38a95353._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_f596a14c._.js → node_modules_3a317c51._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_fddab329._.js → node_modules_44966ab2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_e272ac31._.js → node_modules_53af751a._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_abf4f826._.js → node_modules_5f539891._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_86b6ffa4._.js → node_modules_60402210._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3769cd60._.js → node_modules_60eccfb6._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_fdf808cf._.js → node_modules_632c098c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_442994dc._.js → node_modules_6c42f75c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_5b6dbbc3._.js → node_modules_6fbe276d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_6716e25d._.js → node_modules_740e9d59._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed1f1845._.js → node_modules_7a3d551c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_4f41f172._.js → node_modules_861cb9cf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2aaea4ea._.js → node_modules_8a892761._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3964c298._.js → node_modules_a5a4946e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3d9afa91._.js → node_modules_a712c937._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_330b9e3c._.js → node_modules_a8c276dd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ad69a9e4._.js → node_modules_acc9d529._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_8301968d._.js → node_modules_ad07ab39._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_1d88c7cc._.js → node_modules_b38efa22._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_e20e8c2a._.js → node_modules_b4ef036d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e206c58._.js → node_modules_b6bad701._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_c90fa812._.js → node_modules_b9810024._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_db8af6e3._.js → node_modules_b9ad808d._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_7287189a._.js → node_modules_bc287d9f._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2e38bc5c._.js → node_modules_c6469d93._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_c657890f._.js → node_modules_c704e802._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_b8803ba6._.js → node_modules_cda46cfc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_aa6da06c._.js → node_modules_cf171d0c._.js} +1 -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_2d9e03d1._.js → node_modules_e8927fc2._.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_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/1e782a49beaf489c.js +1 -0
- package/.next/standalone/.next/static/chunks/{01eddf501c574a44.js → 4ee8dc41c9f15b7b.js} +1 -1
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/standalone/.next/static/chunks/{737b8cff3c6a4e30.js → 9445b2873a413c58.js} +1 -1
- package/.next/standalone/.next/static/chunks/94dfb15df65ef720.js +2 -0
- package/.next/standalone/.next/static/chunks/9d1c5c3494fa53de.js +109 -0
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/standalone/.next/static/chunks/{e09d9ee16fe90255.js → cd0fde15dc0dfcca.js} +1 -1
- package/.next/standalone/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
- package/.next/standalone/.next/static/chunks/{ff6357067630b168.js → e13d208072a48316.js} +1 -1
- package/.next/standalone/node_modules/.prisma/client/edge.js +6 -3
- package/.next/standalone/node_modules/.prisma/client/index-browser.js +3 -0
- package/.next/standalone/node_modules/.prisma/client/index.js +6 -3
- package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
- package/.next/standalone/node_modules/.prisma/client/schema.prisma +12 -9
- package/.next/standalone/node_modules/.prisma/client/wasm.js +3 -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 +3 -0
- package/.next/standalone/scripts/opencode_plugin.ts +279 -40
- package/.next/standalone/scripts/opencode_tui_plugin.tsx +308 -0
- package/.next/standalone/scripts/si-optimizer.md +5 -0
- package/.next/static/chunks/1e782a49beaf489c.js +1 -0
- package/.next/static/chunks/{01eddf501c574a44.js → 4ee8dc41c9f15b7b.js} +1 -1
- package/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/static/chunks/{737b8cff3c6a4e30.js → 9445b2873a413c58.js} +1 -1
- package/.next/static/chunks/94dfb15df65ef720.js +2 -0
- package/.next/static/chunks/9d1c5c3494fa53de.js +109 -0
- package/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/static/chunks/{e09d9ee16fe90255.js → cd0fde15dc0dfcca.js} +1 -1
- package/.next/static/chunks/{6d12c79948c7e0ac.js → dc59a07a8f327b40.js} +1 -1
- package/.next/static/chunks/{ff6357067630b168.js → e13d208072a48316.js} +1 -1
- package/package.json +6 -2
- package/prisma/schema.prisma +3 -0
- package/scripts/activate_telemetry.sh +44 -1
- package/scripts/opencode_plugin.ts +279 -40
- 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]__0fceba52._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13132848._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__30769f6e._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__426bc4ab._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__610d08bc._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__75e3674c._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__761462f8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9aa700a4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b7ad2649._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c00180dd._.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]__ed8f9b78._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +0 -175
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__082c32a2._.js +0 -3
- package/.next/standalone/.next/static/chunks/222a937a6c859036.js +0 -1
- package/.next/standalone/.next/static/chunks/2a3dd49367e2c198.js +0 -1
- package/.next/standalone/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
- package/.next/standalone/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/standalone/.next/static/chunks/62129f27f303a5ba.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 -29
- 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/222a937a6c859036.js +0 -1
- package/.next/static/chunks/2a3dd49367e2c198.js +0 -1
- package/.next/static/chunks/3e33f7adc10a38d3.js +0 -109
- package/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/static/chunks/62129f27f303a5ba.js +0 -1
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_ssgManifest.js +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_buildManifest.js +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{Eytv_Fh4x2HPaupjXiAYj → 0uvhCJooDO_gMNlKOaHwB}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/** @jsxImportSource @opentui/solid */
|
|
3
|
+
import { Show, createEffect, createMemo, createSignal } from "solid-js"
|
|
4
|
+
import fs from "fs"
|
|
5
|
+
import os from "os"
|
|
6
|
+
import path from "path"
|
|
7
|
+
import { spawn } from "child_process"
|
|
8
|
+
|
|
9
|
+
function parseBool(input: unknown, defaultValue: boolean) {
|
|
10
|
+
if (input === undefined || input === null) return defaultValue
|
|
11
|
+
const value = String(input).trim().toLowerCase()
|
|
12
|
+
if (!value) return defaultValue
|
|
13
|
+
if (value === "1" || value === "true" || value === "yes" || value === "y" || value === "on") return true
|
|
14
|
+
if (value === "0" || value === "false" || value === "no" || value === "n" || value === "off") return false
|
|
15
|
+
return defaultValue
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function loadSkillInsightConfig() {
|
|
19
|
+
const config: Record<string, string> = {}
|
|
20
|
+
try {
|
|
21
|
+
const envPath = path.join(os.homedir(), ".skill-insight", ".env")
|
|
22
|
+
if (fs.existsSync(envPath)) {
|
|
23
|
+
const content = fs.readFileSync(envPath, "utf8")
|
|
24
|
+
for (const line of content.split("\n")) {
|
|
25
|
+
const match = line.match(/^\s*([\w_]+)\s*=\s*(.*)?\s*$/)
|
|
26
|
+
if (!match) continue
|
|
27
|
+
const key = match[1]
|
|
28
|
+
const raw = (match[2] || "").trim()
|
|
29
|
+
const value = raw.replace(/^['"](.*)['"]$/, "$1")
|
|
30
|
+
config[key] = value
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
} catch {}
|
|
34
|
+
|
|
35
|
+
const apiKey = config["SKILL_INSIGHT_API_KEY"] || process.env.SKILL_INSIGHT_API_KEY
|
|
36
|
+
const host = config["SKILL_INSIGHT_HOST"] || process.env.SKILL_INSIGHT_HOST
|
|
37
|
+
const showTaskStats = parseBool(
|
|
38
|
+
config["SKILL_INSIGHT_SHOW_TASK_STATS"] ?? process.env.SKILL_INSIGHT_SHOW_TASK_STATS,
|
|
39
|
+
true,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
return { apiKey, host, showTaskStats }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function normalizeHost(host: string) {
|
|
46
|
+
const raw = host.trim()
|
|
47
|
+
if (!raw) return null
|
|
48
|
+
try {
|
|
49
|
+
const urlStr = raw.match(/^https?:\/\//) ? raw : `http://${raw}`
|
|
50
|
+
const u = new URL(urlStr)
|
|
51
|
+
return u
|
|
52
|
+
} catch {
|
|
53
|
+
return null
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function formatLatencySeconds(input: unknown) {
|
|
58
|
+
const n = typeof input === "number" ? input : Number(input)
|
|
59
|
+
if (!Number.isFinite(n) || n < 0) return "-"
|
|
60
|
+
if (n < 10) return `${n.toFixed(2)}s`
|
|
61
|
+
if (n < 60) return `${n.toFixed(1)}s`
|
|
62
|
+
return `${Math.round(n)}s`
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function formatNumber(input: unknown) {
|
|
66
|
+
const n = typeof input === "number" ? input : Number(input)
|
|
67
|
+
if (!Number.isFinite(n)) return "-"
|
|
68
|
+
return new Intl.NumberFormat("en-US").format(n)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async function sleep(ms: number) {
|
|
72
|
+
await new Promise((r) => setTimeout(r, ms))
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function fetchTaskStats(base: URL, taskId: string, apiKey?: string) {
|
|
76
|
+
const url = new URL("/api/task-stats", base)
|
|
77
|
+
url.searchParams.set("taskId", taskId)
|
|
78
|
+
url.searchParams.set("framework", "opencode")
|
|
79
|
+
const headers: Record<string, string> = {}
|
|
80
|
+
if (apiKey) headers["x-witty-api-key"] = apiKey
|
|
81
|
+
|
|
82
|
+
const res = await fetch(url, { headers })
|
|
83
|
+
if (!res.ok) return null
|
|
84
|
+
const json = (await res.json()) as any
|
|
85
|
+
if (!json || json.found !== true) return null
|
|
86
|
+
return json
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function buildDetailsUrl(base: URL, taskId: string) {
|
|
90
|
+
const u = new URL("/details", base)
|
|
91
|
+
u.searchParams.set("framework", "opencode")
|
|
92
|
+
u.searchParams.set("expandTaskId", taskId)
|
|
93
|
+
return u.toString()
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function openUrl(url: string) {
|
|
97
|
+
try {
|
|
98
|
+
if (process.platform === "darwin") {
|
|
99
|
+
spawn("open", [url], { stdio: "ignore", detached: true }).unref()
|
|
100
|
+
return true
|
|
101
|
+
}
|
|
102
|
+
if (process.platform === "win32") {
|
|
103
|
+
spawn("cmd", ["/c", "start", "", url], { stdio: "ignore", detached: true, windowsHide: true }).unref()
|
|
104
|
+
return true
|
|
105
|
+
}
|
|
106
|
+
spawn("xdg-open", [url], { stdio: "ignore", detached: true }).unref()
|
|
107
|
+
return true
|
|
108
|
+
} catch {
|
|
109
|
+
return false
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function formatStatsMessage(stats: any, detailsUrl: string) {
|
|
114
|
+
const latency = formatLatencySeconds(stats?.latency)
|
|
115
|
+
const tokens = formatNumber(stats?.tokens)
|
|
116
|
+
const inputTokens = formatNumber(stats?.input_tokens)
|
|
117
|
+
const outputTokens = formatNumber(stats?.output_tokens)
|
|
118
|
+
const toolCalls = formatNumber(stats?.tool_call_count)
|
|
119
|
+
const llmCalls = formatNumber(stats?.llm_call_count)
|
|
120
|
+
return [
|
|
121
|
+
`时延: ${latency}`,
|
|
122
|
+
`Token: ${tokens} (入: ${inputTokens}, 出: ${outputTokens})`,
|
|
123
|
+
`LLM: ${llmCalls} | 工具: ${toolCalls}`,
|
|
124
|
+
`详情: ${detailsUrl}`,
|
|
125
|
+
].join("\n")
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function StatsFooter(props: {
|
|
129
|
+
api: any
|
|
130
|
+
sessionId: string
|
|
131
|
+
getEntry: (sid: string) => any
|
|
132
|
+
ensure: (sid: string) => void
|
|
133
|
+
config: { host?: string; apiKey?: string }
|
|
134
|
+
}) {
|
|
135
|
+
const theme = () => props.api.theme.current
|
|
136
|
+
|
|
137
|
+
createEffect(() => {
|
|
138
|
+
if (!props.sessionId) return
|
|
139
|
+
props.ensure(props.sessionId)
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
const entry = createMemo(() => {
|
|
143
|
+
if (!props.sessionId) return null
|
|
144
|
+
return props.getEntry(props.sessionId)
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
const title = createMemo(() => {
|
|
148
|
+
return "Skill Insight"
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
<box gap={1}>
|
|
153
|
+
<Show when={!props.config.host}>
|
|
154
|
+
<box
|
|
155
|
+
backgroundColor={theme().backgroundElement}
|
|
156
|
+
paddingTop={1}
|
|
157
|
+
paddingBottom={1}
|
|
158
|
+
paddingLeft={2}
|
|
159
|
+
paddingRight={2}
|
|
160
|
+
flexDirection="column"
|
|
161
|
+
gap={0}
|
|
162
|
+
>
|
|
163
|
+
<text fg={theme().text}>
|
|
164
|
+
<b>Skill Insight</b>
|
|
165
|
+
</text>
|
|
166
|
+
<text fg={theme().textMuted}>未配置 SKILL_INSIGHT_HOST</text>
|
|
167
|
+
<text fg={theme().textMuted}>请在 ~/.skill-insight/.env 设置 SKILL_INSIGHT_HOST</text>
|
|
168
|
+
</box>
|
|
169
|
+
</Show>
|
|
170
|
+
<Show when={entry()}>
|
|
171
|
+
{(x: any) => (
|
|
172
|
+
<box
|
|
173
|
+
backgroundColor={theme().backgroundElement}
|
|
174
|
+
paddingTop={1}
|
|
175
|
+
paddingBottom={1}
|
|
176
|
+
paddingLeft={2}
|
|
177
|
+
paddingRight={2}
|
|
178
|
+
flexDirection="column"
|
|
179
|
+
gap={0}
|
|
180
|
+
>
|
|
181
|
+
<box flexDirection="row" justifyContent="space-between">
|
|
182
|
+
<text fg={theme().text}>
|
|
183
|
+
<b>{title()}</b>
|
|
184
|
+
</text>
|
|
185
|
+
</box>
|
|
186
|
+
<Show when={x().state === "loading"}>
|
|
187
|
+
<text fg={theme().textMuted}>等待任务执行完毕</text>
|
|
188
|
+
</Show>
|
|
189
|
+
<Show when={x().state === "error"}>
|
|
190
|
+
<text fg={theme().textMuted}>统计暂不可用</text>
|
|
191
|
+
</Show>
|
|
192
|
+
<Show when={x().state === "ready"}>
|
|
193
|
+
<text fg={theme().textMuted}>时延: {formatLatencySeconds(x().stats?.latency)}</text>
|
|
194
|
+
<text fg={theme().textMuted}>
|
|
195
|
+
Token: {formatNumber(x().stats?.tokens)} (入: {formatNumber(x().stats?.input_tokens)}, 出:{" "}
|
|
196
|
+
{formatNumber(x().stats?.output_tokens)})
|
|
197
|
+
</text>
|
|
198
|
+
<text fg={theme().textMuted}>
|
|
199
|
+
LLM: {formatNumber(x().stats?.llm_call_count)} | 工具: {formatNumber(x().stats?.tool_call_count)}
|
|
200
|
+
</text>
|
|
201
|
+
<text
|
|
202
|
+
fg={theme().primary}
|
|
203
|
+
onMouseDown={() => {
|
|
204
|
+
const ok = openUrl(x().detailsUrl)
|
|
205
|
+
if (!ok) props.api.ui.toast({ message: "打开失败(可复制链接到浏览器)", variant: "error" })
|
|
206
|
+
}}
|
|
207
|
+
>
|
|
208
|
+
<b>查看详情 ↗</b> <span style={{ fg: theme().textMuted }}>(点击打开)</span>
|
|
209
|
+
</text>
|
|
210
|
+
</Show>
|
|
211
|
+
</box>
|
|
212
|
+
)}
|
|
213
|
+
</Show>
|
|
214
|
+
<Show when={!entry()}>
|
|
215
|
+
<text fg={theme().textMuted}>Skill Insight:暂无任务统计</text>
|
|
216
|
+
</Show>
|
|
217
|
+
</box>
|
|
218
|
+
)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const tui = async (api: any) => {
|
|
222
|
+
const [entries, setEntries] = createSignal({})
|
|
223
|
+
|
|
224
|
+
const getEntry = (sid: string) => entries()[sid]
|
|
225
|
+
const setEntry = (sid: string, value: any) => {
|
|
226
|
+
const prev = entries()
|
|
227
|
+
setEntries({ ...prev, [sid]: value })
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const ensure = async (sessionId: string, opts?: { force?: boolean }) => {
|
|
231
|
+
const existing = getEntry(sessionId)
|
|
232
|
+
if (existing?.state === "loading") return
|
|
233
|
+
if (!opts?.force && existing?.state === "ready") return
|
|
234
|
+
|
|
235
|
+
const cfg = loadSkillInsightConfig()
|
|
236
|
+
if (!cfg.showTaskStats) return
|
|
237
|
+
if (!cfg.host) return
|
|
238
|
+
const base = normalizeHost(cfg.host)
|
|
239
|
+
if (!base) return
|
|
240
|
+
|
|
241
|
+
const detailsUrl = buildDetailsUrl(base, sessionId)
|
|
242
|
+
setEntry(sessionId, {
|
|
243
|
+
sessionId,
|
|
244
|
+
state: "loading",
|
|
245
|
+
detailsUrl,
|
|
246
|
+
updatedAt: Date.now(),
|
|
247
|
+
prevTimestamp: existing?.stats?.timestamp,
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
let stats: any = null
|
|
251
|
+
const maxAttempts = 8
|
|
252
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
253
|
+
stats = await fetchTaskStats(base, sessionId, cfg.apiKey)
|
|
254
|
+
if (stats) {
|
|
255
|
+
if (opts?.force && existing?.stats?.timestamp && stats.timestamp) {
|
|
256
|
+
const prevMs = Date.parse(existing.stats.timestamp)
|
|
257
|
+
const curMs = Date.parse(stats.timestamp)
|
|
258
|
+
if (Number.isFinite(prevMs) && Number.isFinite(curMs) && curMs <= prevMs) {
|
|
259
|
+
stats = null
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (stats) break
|
|
264
|
+
await sleep(i < 2 ? 800 : 1200)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (!stats) {
|
|
268
|
+
setEntry(sessionId, { sessionId, state: "error", detailsUrl, updatedAt: Date.now() })
|
|
269
|
+
return
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
setEntry(sessionId, { sessionId, state: "ready", detailsUrl, stats, updatedAt: Date.now() })
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
api.slots.register({
|
|
276
|
+
order: 80,
|
|
277
|
+
slots: {
|
|
278
|
+
sidebar_content(_ctx: any, props: any) {
|
|
279
|
+
const cfg = loadSkillInsightConfig()
|
|
280
|
+
if (!cfg.showTaskStats) return null
|
|
281
|
+
const sid = props?.session_id
|
|
282
|
+
if (!sid || typeof sid !== "string") return null
|
|
283
|
+
return <StatsFooter api={api} sessionId={sid} getEntry={getEntry} ensure={ensure} config={cfg} />
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
api.event.on("session.idle", async (evt: any) => {
|
|
289
|
+
const sessionId =
|
|
290
|
+
evt?.properties?.sessionId ||
|
|
291
|
+
evt?.properties?.sessionID ||
|
|
292
|
+
evt?.properties?.session_id ||
|
|
293
|
+
evt?.session_id ||
|
|
294
|
+
evt?.payload?.session_id
|
|
295
|
+
|
|
296
|
+
if (!sessionId || typeof sessionId !== "string") return
|
|
297
|
+
if (!sessionId.startsWith("ses")) return
|
|
298
|
+
api.kv.set("skill_insight_latest_session_id", sessionId)
|
|
299
|
+
ensure(sessionId, { force: true })
|
|
300
|
+
})
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
const plugin = {
|
|
304
|
+
id: "witty-skill-insight-task-stats",
|
|
305
|
+
tui,
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export default plugin
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},9165,e=>{"use strict";async function t(e,t){return fetch(""+e,t)}function r(e){return""+e}e.s(["apiFetch",()=>t,"getApiUrl",()=>r])},94690,e=>{"use strict";var t=e.i(43476),r=e.i(18566),i=e.i(71645),o=e.i(9165);let a=(0,i.createContext)(void 0);function u({children:e}){let[u,s]=(0,i.useState)(null),[n,l]=(0,i.useState)(null),[c,h]=(0,i.useState)(!1),[g,d]=(0,i.useState)(!1),[m,f]=(0,i.useState)(!1),v=(0,r.useRouter)(),p=(0,r.usePathname)();return(0,i.useEffect)(()=>{(0,o.apiFetch)("/api/config/status?check_org=true").then(e=>e.json()).then(e=>h(e.org_mode||!1)).catch(()=>{}).finally(()=>f(!0))},[]),(0,i.useEffect)(()=>{if(!m)return;let e=localStorage.getItem("user_id"),t=localStorage.getItem("api_key");e?(s(e),t&&l(t)):c&&!g?(d(!0),(0,o.apiFetch)("/api/auth/organization").then(async e=>{let t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t?.error||`Organization auth failed: ${e.status}`);return t}).then(e=>{let t=e?.displayName||e?.username,r=e?.apiKey;if(!t)throw Error("Organization auth response missing username");localStorage.setItem("user_id",t),r&&localStorage.setItem("api_key",r),s(t),r&&l(r)}).catch(e=>console.error("Organization auth failed:",e)).finally(()=>d(!1))):"/login"!==p&&v.push("/login")},[p,v,c,g,m]),(0,t.jsx)(a.Provider,{value:{user:u,apiKey:n,login:(e,t)=>{localStorage.setItem("user_id",e),s(e),t&&(localStorage.setItem("api_key",t),l(t)),v.replace("/")},logout:()=>{localStorage.removeItem("user_id"),localStorage.removeItem("api_key"),s(null),l(null),v.push("/login")}},children:e})}function s(){let e=(0,i.useContext)(a);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}e.s(["AuthProvider",()=>u,"useAuth",()=>s])},97703,e=>{"use strict";var t=e.i(43476),r=e.i(71645);let i=(0,r.createContext)(void 0);function o({children:e}){let[o,a]=(0,r.useState)("light"),[u,s]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{s(!0);let e=localStorage.getItem("skill-insight-theme");e&&a(e)},[]),(0,r.useEffect)(()=>{u&&(localStorage.setItem("skill-insight-theme",o),document.documentElement.setAttribute("data-theme",o))},[o,u]),u)?(0,t.jsx)(i.Provider,{value:{theme:o,toggleTheme:()=>{a(e=>"light"===e?"dark":"light")},isDark:"dark"===o},children:e}):null}function a(){let e=(0,r.useContext)(i);if(void 0===e)throw Error("useTheme must be used within a ThemeProvider");return e}e.s(["ThemeProvider",()=>o,"useTheme",()=>a])},1661,e=>{"use strict";var t=e.i(43476),r=e.i(94690),i=e.i(97703);function o({children:e}){return(0,t.jsx)(i.ThemeProvider,{children:(0,t.jsx)(r.AuthProvider,{children:e})})}e.s(["Providers",()=>o])}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,9665,e=>{"use strict";var s=e.i(43476),t=e.i(18566),
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,9665,e=>{"use strict";var s=e.i(43476),t=e.i(18566),c=e.i(71645);function n({skillId:e,skillName:c,version:n,user:a}){let r=(0,t.useRouter)();return e||c?(0,s.jsxs)("span",{onClick:s=>{s.preventDefault();let t=new URLSearchParams;e?t.set("id",e):(t.set("name",c),a&&t.set("user",a)),null!=n&&t.set("version",String(n)),r.push(`/skills?${t.toString()}`)},style:{color:"#60a5fa",cursor:"pointer",textDecoration:"none",transition:"color 0.2s"},onMouseEnter:e=>{e.currentTarget.style.textDecoration="underline",e.currentTarget.style.color="#93c5fd"},onMouseLeave:e=>{e.currentTarget.style.textDecoration="none",e.currentTarget.style.color="#60a5fa"},children:[c,n?` (v${n})`:""]}):(0,s.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}function a({skills:e,skill:t,skillId:a,skillIds:r,skillVersion:l,user:i}){return e?.length||t?e?.length?(0,s.jsx)(s.Fragment,{children:e.map((e,t)=>{let a=r?.[t]||null;return(0,s.jsxs)(c.default.Fragment,{children:[t>0&&(0,s.jsx)("span",{style:{color:"#e2e8f0"},children:", "}),(0,s.jsx)(n,{skillId:a,skillName:e,version:l,user:i})]},t)})}):(0,s.jsx)(n,{skillId:a,skillName:t,version:l,user:i}):(0,s.jsx)("span",{style:{color:"#64748b"},children:"(None)"})}e.s(["SkillLinks",()=>a])},95802,e=>{e.v(s=>Promise.all(["static/chunks/f7a6fed60fb079dd.js","static/chunks/5432ce4a494bc74d.js","static/chunks/b43afe7d924243d9.js","static/chunks/68e4bccbce97556a.js","static/chunks/21105f8885631d60.js","static/chunks/7a95be670a5c981c.js","static/chunks/aa21d65228612e46.js","static/chunks/07668c4577ece2d3.js","static/chunks/78fd227efc628935.js"].map(s=>e.l(s))).then(()=>s(76913)))},34486,e=>{e.v(s=>Promise.all(["static/chunks/6baf949fafec6be3.js","static/chunks/cd0fde15dc0dfcca.js","static/chunks/e13d208072a48316.js"].map(s=>e.l(s))).then(()=>s(13143)))},14524,e=>{e.v(s=>Promise.all(["static/chunks/fec58f85bfaa3c39.js"].map(s=>e.l(s))).then(()=>s(17847)))}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94542,e=>{"use strict";var t=e.i(43476),r=e.i(94690),i=e.i(18566),a=e.i(71645),n=e.i(9165);function o(){let[e,o]=(0,a.useState)(""),[s,l]=(0,a.useState)(""),[c,d]=(0,a.useState)(!1),[m,u]=(0,a.useState)(""),{login:p}=(0,r.useAuth)(),h=(0,i.useRouter)();(0,a.useEffect)(()=>{(0,n.apiFetch)("/api/config/status?check_org=true").then(e=>e.json()).then(e=>{d(e.org_mode||!1),u(e.org_login_redirect_url||"")}).catch(()=>{})},[]),(0,a.useEffect)(()=>{if(!c||!m)return;let e=!1;return(async()=>{try{let t=await (0,n.apiFetch)("/api/auth/organization",{cache:"no-store"});if(!t.ok){e||401!==t.status&&403!==t.status||(window.location.href=m);return}let r=await t.json();!e&&r?.username&&(p(r.username,r.apiKey),h.replace("/"))}catch(t){e||(window.location.href=m)}})(),()=>{e=!0}},[c,m,p,h]);let g=async t=>{if(t.preventDefault(),l(""),!e.trim())return void l("请输入邮箱地址");try{let t=await (0,n.apiFetch)("/api/auth/apikey",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e.trim()})}),r=await t.json();t.ok?p(r.username,r.apiKey):l(r.error||"登录失败,请重试")}catch(e){console.error(e),l("网络错误,请检查连接")}};return c?(0,t.jsx)("div",{className:"login-container",children:(0,t.jsx)("div",{className:"login-box",children:(0,t.jsx)("p",{style:{color:"#94a3b8",textAlign:"center"},children:"正在跳转到企业登录页..."})})}):(0,t.jsx)("div",{className:"login-container",children:(0,t.jsxs)("div",{className:"login-box",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"1.5rem",marginBottom:"2.5rem"},children:[(0,t.jsx)("div",{style:{background:"linear-gradient(135deg, #38bdf8, #818cf8)",color:"white",fontWeight:"bold",fontSize:"1.8rem",padding:"0.8rem 1.2rem",borderRadius:"0.75rem",whiteSpace:"nowrap",boxShadow:"0 10px 15px -3px rgba(56, 189, 248, 0.4), 0 4px 6px -2px rgba(56, 189, 248, 0.2)"},children:"Skill"}),(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column"},children:[(0,t.jsx)("h1",{style:{fontSize:"3rem",fontWeight:"800",color:"#f8fafc",margin:0,lineHeight:1,letterSpacing:"-0.02em",textShadow:"0 2px 4px rgba(0,0,0,0.3)"},children:"Insight"}),(0,t.jsx)("span",{style:{fontSize:"1rem",color:"#94a3b8",letterSpacing:"0.1em",textTransform:"uppercase",marginTop:"0.25rem"},children:"智能体技能评估、分析与优化"})]})]}),(0,t.jsxs)("form",{className:"login-form",children:[(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsx)("label",{className:"login-label",htmlFor:"username",children:"邮箱地址"}),(0,t.jsx)("input",{className:"login-input",id:"username",type:"email",placeholder:"your.email@example.com",value:e,onChange:e=>{o(e.target.value),l("")},style:s?{borderColor:"#ef4444"}:{}}),s&&(0,t.jsxs)("div",{style:{color:"#ef4444",fontSize:"0.875rem",marginTop:"0.5rem",padding:"0.5rem 0.75rem",background:"rgba(239, 68, 68, 0.1)",borderRadius:"0.375rem",border:"1px solid rgba(239, 68, 68, 0.3)"},children:["⚠️ ",s]})]}),(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:(0,t.jsx)("button",{className:"login-btn",type:"button",onClick:g,children:"Sign In"})})]})]})})}e.s(["default",()=>o])}]);
|