@witty-ai/skill-insight 0.3.0-beta → 0.5.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +51 -6
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +2 -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 +12 -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/auth/apikey/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/apikey/route.js.nft.json +1 -1
- 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 +5 -5
- 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/config/status/route.js +2 -2
- package/.next/standalone/.next/server/app/api/config/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +5 -4
- 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 +4 -4
- package/.next/standalone/.next/server/app/api/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/guide/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/guide/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/guide/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/guide/route.js +7 -0
- package/.next/standalone/.next/server/app/api/guide/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/guide/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/guide/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +5 -4
- 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 +5 -4
- 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 +3 -3
- 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 -4
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/start/route.js +2 -2
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/rejudge/route.js +5 -4
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +5 -5
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/test/route.js +2 -2
- package/.next/standalone/.next/server/app/api/settings/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/activate/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/activate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/toggle/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/toggle/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js +3 -3
- 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 +4 -4
- 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 +2 -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 +2 -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 +2 -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/automation/push/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/automation/push/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/by-name/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/by-name/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +5 -4
- 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 +2 -2
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/upload/route.js +2 -2
- package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sync/manifest/route.js +2 -2
- package/.next/standalone/.next/server/app/api/sync/manifest/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sync/opencode/route.js +2 -2
- package/.next/standalone/.next/server/app/api/sync/opencode/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/route.js +5 -3
- 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 +3 -3
- 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 +2 -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]__05e510f4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a140a5a._.js +122 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.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]__591248f3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.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 +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__73ce6d21._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.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]__9d551ea2._.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]__c6c98b22._.js → [root-of-the-server]__aa5c8858._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +3 -0
- 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]__d7fab946._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e2f0baee._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__fc05579d._.js +3 -0
- package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
- package/.next/standalone/.next/server/chunks/_41a98bd8._.js +3 -0
- package/.next/standalone/.next/server/chunks/_c48f7c66._.js +1 -1
- package/.next/standalone/.next/server/chunks/_c82df3e0._.js +3 -3
- package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
- package/.next/standalone/.next/server/chunks/_fa49adfa._.js +3 -3
- 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_guide_route_actions_6c188449.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c33286ed.js +71 -110
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_f42faeee.js +1 -400
- package/.next/standalone/.next/server/chunks/src_497d2ad2._.js +22 -22
- package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +3 -0
- 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]__72a7f3ed._.js → [root-of-the-server]__48f8fbcb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__438a2c90._.js → [root-of-the-server]__49921b2a._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__c9e3c893._.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]__37bfda90._.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]__1dfe61f8._.js → [root-of-the-server]__d691ecb0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__d0917d6e._.js → [root-of-the-server]__e5ddfd15._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__e5e3a145._.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]__8a82ef12._.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/{_981cd263._.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 +18 -42
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_a4a1f3c3._.js → node_modules_039c6a11._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_a7a82280._.js → node_modules_0d3530cd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_0c2939c3._.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_205ce1c9._.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_ee43cfd6._.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_776b68cf._.js → node_modules_44966ab2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_514c148b._.js +3 -0
- 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_23d38260._.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_60cf7de2._.js → node_modules_6c42f75c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_2f215d2b._.js → node_modules_6fbe276d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_4cd41088._.js → node_modules_740e9d59._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_d0af4cb2._.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_db8af6e3._.js → node_modules_8a892761._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_28fef057._.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_abf4f826._.js → node_modules_acc9d529._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_39a3e684._.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_8633bac6._.js → node_modules_b4ef036d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_abc9e5a6._.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_f56b62b0._.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_5ab83f0a._.js → node_modules_c411d7df._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_c98dd942._.js → node_modules_c6469d93._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_6391b0cd._.js → node_modules_c704e802._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_df113a74._.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_be61cdef._.js → node_modules_e8927fc2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_d037b3b1._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-7R4GIKGN_mjs_e5dda8cc._.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/{d60f0b3e2f4689ac.js → 01eddf501c574a44.js} +1 -1
- package/.next/{static/chunks/ec0de430276c8209.js → standalone/.next/static/chunks/078d76156083f265.js} +1 -1
- package/.next/standalone/.next/static/chunks/{6a17b619eed04f07.js → 07c9f28a269c701a.js} +2 -2
- package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +1 -0
- package/.next/{static/chunks/55723b38de737547.js → standalone/.next/static/chunks/21105f8885631d60.js} +1 -1
- package/.next/standalone/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
- package/.next/{static/chunks/052f178ab7519d8d.js → standalone/.next/static/chunks/5432ce4a494bc74d.js} +2 -2
- package/.next/standalone/.next/static/chunks/59cd76b8d89e776a.js +1 -0
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/standalone/.next/static/chunks/6baf949fafec6be3.js +1 -0
- package/.next/standalone/.next/static/chunks/737b8cff3c6a4e30.js +1 -0
- package/.next/standalone/.next/static/chunks/7e35f4cf2e266022.js +1 -0
- package/.next/standalone/.next/static/chunks/a87b5e84254095a5.js +1 -0
- package/.next/standalone/.next/static/chunks/b43afe7d924243d9.js +2 -0
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/{static/chunks/559e55a53f22f5d1.js → standalone/.next/static/chunks/c875bd2ff662b46f.js} +1 -1
- package/.next/{static/chunks/6d12c79948c7e0ac.js → standalone/.next/static/chunks/dc59a07a8f327b40.js} +1 -1
- package/.next/standalone/.next/static/chunks/e09d9ee16fe90255.js +1 -0
- package/.next/standalone/.next/static/chunks/{20337e5244416041.js → e20b02ee30c11a26.js} +1 -1
- package/.next/standalone/.next/static/chunks/ff6357067630b168.js +1 -0
- package/.next/standalone/LICENSE +1 -1
- package/.next/standalone/bin/cli.js +1 -1
- package/.next/standalone/features/feature-skill-used-jump-link/design/2026-03-18-skill-used-jump-link-design.md +126 -0
- package/.next/standalone/features/feature-skill-used-jump-link/feature.json +32 -0
- package/.next/standalone/features/feature-skill-used-jump-link/issue.md +32 -0
- package/.next/standalone/features/feature-skill-used-jump-link/plans/2026-03-18-skill-used-jump-link.md +528 -0
- package/.next/standalone/next.config.ts +14 -2
- package/.next/standalone/node_modules/.prisma/client/edge.js +23 -5
- package/.next/standalone/node_modules/.prisma/client/index-browser.js +20 -2
- package/.next/standalone/node_modules/.prisma/client/index.js +23 -5
- package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
- package/.next/standalone/node_modules/.prisma/client/schema.prisma +19 -2
- package/.next/standalone/node_modules/.prisma/client/wasm.js +20 -2
- package/.next/standalone/node_modules/@img/colour/color.cjs +11 -9
- package/.next/standalone/node_modules/@img/colour/package.json +21 -8
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/prisma/schema.prisma +19 -2
- package/.next/standalone/scripts/activate_telemetry.sh +24 -24
- package/.next/standalone/scripts/claude_watcher_client.ts +9 -7
- package/.next/standalone/scripts/init_opengauss.py +15 -0
- package/.next/standalone/scripts/install.js +68 -35
- package/.next/standalone/scripts/logs.js +1 -1
- package/.next/standalone/scripts/openclaw_watcher_client.ts +9 -7
- package/.next/standalone/scripts/opencode_plugin.ts +278 -46
- package/.next/standalone/scripts/postinstall.js +80 -38
- package/.next/standalone/scripts/restart.js +1 -1
- package/.next/standalone/scripts/start.js +84 -60
- package/.next/standalone/scripts/status.js +1 -1
- package/.next/standalone/scripts/stop.js +38 -14
- package/.next/standalone/scripts/sync_skills.js +5 -5
- package/.next/standalone/scripts/utils.js +91 -23
- package/.next/standalone/tests/setup_skill_optimizer.sh +118 -0
- package/.next/static/chunks/{d60f0b3e2f4689ac.js → 01eddf501c574a44.js} +1 -1
- package/.next/{standalone/.next/static/chunks/ec0de430276c8209.js → static/chunks/078d76156083f265.js} +1 -1
- package/.next/static/chunks/{6a17b619eed04f07.js → 07c9f28a269c701a.js} +2 -2
- package/.next/static/chunks/1e782a49beaf489c.js +1 -0
- package/.next/{standalone/.next/static/chunks/55723b38de737547.js → static/chunks/21105f8885631d60.js} +1 -1
- package/.next/static/chunks/4071dbec4cf7e72e.js +109 -0
- package/.next/{standalone/.next/static/chunks/052f178ab7519d8d.js → static/chunks/5432ce4a494bc74d.js} +2 -2
- package/.next/static/chunks/59cd76b8d89e776a.js +1 -0
- package/.next/static/chunks/67bd1a5de2195779.js +1 -0
- package/.next/static/chunks/6baf949fafec6be3.js +1 -0
- package/.next/static/chunks/737b8cff3c6a4e30.js +1 -0
- package/.next/static/chunks/7e35f4cf2e266022.js +1 -0
- package/.next/static/chunks/a87b5e84254095a5.js +1 -0
- package/.next/static/chunks/b43afe7d924243d9.js +2 -0
- package/.next/static/chunks/c6bd2818656b1f20.css +1 -0
- package/.next/{standalone/.next/static/chunks/559e55a53f22f5d1.js → static/chunks/c875bd2ff662b46f.js} +1 -1
- package/.next/{standalone/.next/static/chunks/6d12c79948c7e0ac.js → static/chunks/dc59a07a8f327b40.js} +1 -1
- package/.next/static/chunks/e09d9ee16fe90255.js +1 -0
- package/.next/static/chunks/{20337e5244416041.js → e20b02ee30c11a26.js} +1 -1
- package/.next/static/chunks/ff6357067630b168.js +1 -0
- package/LICENSE +1 -1
- package/README.md +7 -6
- package/bin/cli.js +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +19 -2
- package/scripts/activate_telemetry.sh +24 -24
- package/scripts/claude_watcher_client.ts +9 -7
- package/scripts/init_opengauss.py +15 -0
- package/scripts/install.js +68 -35
- package/scripts/logs.js +1 -1
- package/scripts/openclaw_watcher_client.ts +9 -7
- package/scripts/opencode_plugin.ts +278 -46
- package/scripts/postinstall.js +80 -38
- package/scripts/restart.js +1 -1
- package/scripts/start.js +84 -60
- package/scripts/status.js +1 -1
- package/scripts/stop.js +38 -14
- package/scripts/sync_skills.js +5 -5
- package/scripts/utils.js +91 -23
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1306e4eb._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1809fb2b._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__19594bdd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__19db3d34._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__2b2e7f49._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3c02de9b._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__3f3ad12b._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4c1ad182._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4dce0fe6._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__582cdc68._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__625e84f3._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__68b5a8b3._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__704b8533._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__78ea20f2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__7f754db9._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__824c33e1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__92449e6d._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9465727f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9c3018b5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a12846e0._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a637116a._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a8f83ee4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a8ffc1b1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9cb205c._.js +0 -122
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ab7048b0._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ac25e4ae._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ae5ac9cd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bebf4267._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c5ae3ebd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ebdafae4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__eefd5f5b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__082c32a2._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_b7889f85._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0b762d3e._.js +0 -3
- package/.next/standalone/.next/static/chunks/024c9acb4aa490c8.js +0 -1
- package/.next/standalone/.next/static/chunks/104f2c1fb93033c0.js +0 -1
- package/.next/standalone/.next/static/chunks/222a937a6c859036.js +0 -1
- package/.next/standalone/.next/static/chunks/2e1b2125198a02c4.js +0 -1
- package/.next/standalone/.next/static/chunks/32b26ff1bbd034fd.js +0 -1
- package/.next/standalone/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/standalone/.next/static/chunks/62e251619a96dc26.js +0 -1
- package/.next/standalone/.next/static/chunks/65c652f23d2d68bd.js +0 -133
- package/.next/standalone/.next/static/chunks/876e2d70185fd438.js +0 -1
- package/.next/standalone/.next/static/chunks/c647b2e4532050e0.js +0 -1
- package/.next/standalone/.next/static/chunks/d2e574310159a10b.js +0 -1
- package/.next/standalone/.next/static/chunks/dab1749712763979.js +0 -2
- package/.next/static/chunks/024c9acb4aa490c8.js +0 -1
- package/.next/static/chunks/104f2c1fb93033c0.js +0 -1
- package/.next/static/chunks/222a937a6c859036.js +0 -1
- package/.next/static/chunks/2e1b2125198a02c4.js +0 -1
- package/.next/static/chunks/32b26ff1bbd034fd.js +0 -1
- package/.next/static/chunks/428e6cf64b115e9d.css +0 -1
- package/.next/static/chunks/62e251619a96dc26.js +0 -1
- package/.next/static/chunks/65c652f23d2d68bd.js +0 -133
- package/.next/static/chunks/876e2d70185fd438.js +0 -1
- package/.next/static/chunks/c647b2e4532050e0.js +0 -1
- package/.next/static/chunks/d2e574310159a10b.js +0 -1
- package/.next/static/chunks/dab1749712763979.js +0 -2
- /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
- /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_buildManifest.js +0 -0
- /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{Zt2VD1Py2IilfVNJL-9Wm → H581Rok68JtPV4bAVVH3l}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
# =============================================================================
|
|
4
|
-
#
|
|
4
|
+
# Skill-Insight Official Setup Script (Fixed Path Logic)
|
|
5
5
|
#
|
|
6
6
|
# Installs native telemetry hooks for Claude Code and OpenCode.
|
|
7
7
|
# =============================================================================
|
|
@@ -18,7 +18,7 @@ fi
|
|
|
18
18
|
SCRIPTS_DIR="$( cd -- "$( dirname -- "$SELF_PATH" )" &> /dev/null && pwd )"
|
|
19
19
|
PROJECT_ROOT="$( dirname "$SCRIPTS_DIR" )"
|
|
20
20
|
|
|
21
|
-
echo "🚀 Starting
|
|
21
|
+
echo "🚀 Starting Skill-Insight Telemetry Setup..."
|
|
22
22
|
echo "📂 Project Root: $PROJECT_ROOT"
|
|
23
23
|
|
|
24
24
|
# --- 1. Load Configurations ---
|
|
@@ -39,43 +39,43 @@ if [ -f "$OPENCODE_PLUGIN_SRC" ]; then
|
|
|
39
39
|
cp "$OPENCODE_PLUGIN_SRC" "$OPENCODE_PLUGIN_DEST"
|
|
40
40
|
echo "✅ OpenCode Plugin installed to $OPENCODE_PLUGIN_DEST"
|
|
41
41
|
|
|
42
|
-
# --- 2.1 Setup
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
mkdir -p "$
|
|
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
46
|
|
|
47
47
|
EXISTING_KEY=""
|
|
48
48
|
EXISTING_HOST=""
|
|
49
|
-
if [ -f "$
|
|
49
|
+
if [ -f "$SKILL_INSIGHT_CONFIG_FILE" ]; then
|
|
50
50
|
# match only UNCOMMENTED lines
|
|
51
|
-
EXISTING_KEY=$(grep '^
|
|
52
|
-
EXISTING_HOST=$(grep '^
|
|
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
53
|
fi
|
|
54
54
|
|
|
55
55
|
# API Key Selection Logic
|
|
56
56
|
API_KEY=""
|
|
57
57
|
if [ -n "$EXISTING_KEY" ]; then
|
|
58
|
-
echo "🔑 Found existing API Key in $
|
|
58
|
+
echo "🔑 Found existing API Key in $SKILL_INSIGHT_CONFIG_FILE."
|
|
59
59
|
read -p "👉 Use existing key? (y/N, Default: y): " USE_EXISTING < /dev/tty
|
|
60
60
|
if [[ "$USE_EXISTING" =~ ^[Nn]$ ]]; then
|
|
61
61
|
read -p "👉 Please enter your NEW API Key: " API_KEY < /dev/tty
|
|
62
62
|
else
|
|
63
63
|
API_KEY="$EXISTING_KEY"
|
|
64
64
|
fi
|
|
65
|
-
elif [ -n "$
|
|
66
|
-
echo "🔑 Found API Key in current environment/env file: $
|
|
65
|
+
elif [ -n "$SKILL_INSIGHT_API_KEY" ]; then
|
|
66
|
+
echo "🔑 Found API Key in current environment/env file: $SKILL_INSIGHT_API_KEY"
|
|
67
67
|
read -p "👉 Use this key for global config? (y/N, Default: y): " USE_ENV < /dev/tty
|
|
68
68
|
if [[ "$USE_ENV" =~ ^[Nn]$ ]]; then
|
|
69
69
|
read -p "👉 Please enter your API Key: " API_KEY < /dev/tty
|
|
70
70
|
else
|
|
71
|
-
API_KEY="$
|
|
71
|
+
API_KEY="$SKILL_INSIGHT_API_KEY"
|
|
72
72
|
fi
|
|
73
73
|
else
|
|
74
74
|
read -p "👉 Please enter your API Key: " API_KEY < /dev/tty
|
|
75
75
|
fi
|
|
76
76
|
|
|
77
77
|
# -- Host Logic --
|
|
78
|
-
NEW_HOST="${
|
|
78
|
+
NEW_HOST="${SKILL_INSIGHT_HOST:-127.0.0.1:3000}"
|
|
79
79
|
FINAL_HOST="$NEW_HOST"
|
|
80
80
|
if [ -n "$EXISTING_HOST" ] && [ "$EXISTING_HOST" != "$NEW_HOST" ]; then
|
|
81
81
|
echo "🌐 Current Host in global config: $EXISTING_HOST"
|
|
@@ -90,17 +90,17 @@ if [ -f "$OPENCODE_PLUGIN_SRC" ]; then
|
|
|
90
90
|
echo "⚠️ Warning: No API Key provided. Data reporting will fail."
|
|
91
91
|
fi
|
|
92
92
|
|
|
93
|
-
echo "⚙️ Syncing configuration to $
|
|
94
|
-
touch "$
|
|
95
|
-
cp "$
|
|
96
|
-
grep -v "^
|
|
97
|
-
echo "
|
|
98
|
-
echo "
|
|
99
|
-
rm "${
|
|
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
100
|
echo "✅ Configuration updated (Other settings preserved)."
|
|
101
101
|
|
|
102
102
|
# NEW: Register Sync Hook into .zshrc / .bashrc
|
|
103
|
-
SYNC_SCRIPT="$HOME/.
|
|
103
|
+
SYNC_SCRIPT="$HOME/.skill-insight/sync_skills.js"
|
|
104
104
|
if [ -f "$SYNC_SCRIPT" ]; then
|
|
105
105
|
SHELL_RC="$HOME/.zshrc"
|
|
106
106
|
[ -f "$HOME/.bashrc" ] && SHELL_RC="$HOME/.bashrc"
|
|
@@ -108,7 +108,7 @@ if [ -f "$OPENCODE_PLUGIN_SRC" ]; then
|
|
|
108
108
|
# Add aliases if not present
|
|
109
109
|
if ! grep -q "witty_sync_wrapper" "$SHELL_RC"; then
|
|
110
110
|
echo "" >> "$SHELL_RC"
|
|
111
|
-
echo "#
|
|
111
|
+
echo "# Skill-Insight Auto-Sync" >> "$SHELL_RC"
|
|
112
112
|
echo "alias opencode='node $SYNC_SCRIPT --agent opencode && opencode'" >> "$SHELL_RC"
|
|
113
113
|
echo "alias claude='node $SYNC_SCRIPT --agent claude && claude'" >> "$SHELL_RC"
|
|
114
114
|
echo "✅ Auto-sync aliases added to $SHELL_RC"
|
|
@@ -153,7 +153,7 @@ unset DEEPSEEK_BASE_URL
|
|
|
153
153
|
unset OPENAI_BASE_URL
|
|
154
154
|
|
|
155
155
|
echo ""
|
|
156
|
-
echo "🌟
|
|
156
|
+
echo "🌟 Skill-Insight Telemetry: READY"
|
|
157
157
|
echo "------------------------------------------------"
|
|
158
158
|
echo "To test, run: opencode run 'hello'"
|
|
159
159
|
echo ""
|
|
@@ -250,14 +250,14 @@ class ClaudeParser {
|
|
|
250
250
|
// HTTP Upload (replaces saveExecutionRecord)
|
|
251
251
|
// ============================================================================
|
|
252
252
|
|
|
253
|
-
function
|
|
253
|
+
function loadSkillInsightConfig(): { apiKey: string; host: string } {
|
|
254
254
|
const config: { apiKey: string; host: string } = { apiKey: '', host: '' };
|
|
255
255
|
try {
|
|
256
|
-
const envPath = path.join(os.homedir(), '.
|
|
256
|
+
const envPath = path.join(os.homedir(), '.skill-insight', '.env');
|
|
257
257
|
if (fs.existsSync(envPath)) {
|
|
258
258
|
const content = fs.readFileSync(envPath, 'utf-8');
|
|
259
|
-
const apiKeyMatch = content.match(/
|
|
260
|
-
const hostMatch = content.match(/
|
|
259
|
+
const apiKeyMatch = content.match(/SKILL_INSIGHT_API_KEY=(.*)/);
|
|
260
|
+
const hostMatch = content.match(/SKILL_INSIGHT_HOST=(.*)/);
|
|
261
261
|
if (apiKeyMatch && apiKeyMatch[1]) {
|
|
262
262
|
config.apiKey = apiKeyMatch[1].trim();
|
|
263
263
|
}
|
|
@@ -266,13 +266,13 @@ function loadWittyConfig(): { apiKey: string; host: string } {
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
} catch (e) {
|
|
269
|
-
console.error('[ClaudeWatcher] Error reading
|
|
269
|
+
console.error('[ClaudeWatcher] Error reading skill-insight config:', e);
|
|
270
270
|
}
|
|
271
271
|
return config;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
async function uploadExecutionRecord(record: any): Promise<void> {
|
|
275
|
-
const config =
|
|
275
|
+
const config = loadSkillInsightConfig();
|
|
276
276
|
if (!config.apiKey || !config.host) {
|
|
277
277
|
console.error('[ClaudeWatcher] Missing API key or host in config');
|
|
278
278
|
return;
|
|
@@ -289,10 +289,12 @@ async function uploadExecutionRecord(record: any): Promise<void> {
|
|
|
289
289
|
|
|
290
290
|
const body = JSON.stringify(record);
|
|
291
291
|
|
|
292
|
+
const basePath = parsedUrl.pathname === '/' ? '' : parsedUrl.pathname;
|
|
293
|
+
|
|
292
294
|
const options: http.RequestOptions = {
|
|
293
295
|
hostname: parsedUrl.hostname,
|
|
294
296
|
port: parsedUrl.port || (isHttps ? 443 : 80),
|
|
295
|
-
path:
|
|
297
|
+
path: `${basePath}/api/upload`,
|
|
296
298
|
method: 'POST',
|
|
297
299
|
headers: {
|
|
298
300
|
'Content-Type': 'application/json',
|
|
@@ -154,6 +154,21 @@ TABLE_DEFINITIONS = {
|
|
|
154
154
|
("matchedAt", "TIMESTAMP DEFAULT CURRENT_TIMESTAMP"),
|
|
155
155
|
],
|
|
156
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": []
|
|
157
172
|
}
|
|
158
173
|
}
|
|
159
174
|
|
|
@@ -16,7 +16,7 @@ async function runCommand(command, options = {}) {
|
|
|
16
16
|
shell: true,
|
|
17
17
|
...options
|
|
18
18
|
})
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
proc.on('close', (code) => {
|
|
21
21
|
if (code === 0) {
|
|
22
22
|
resolve()
|
|
@@ -24,7 +24,7 @@ async function runCommand(command, options = {}) {
|
|
|
24
24
|
reject(new Error(`Command failed with code ${code}`))
|
|
25
25
|
}
|
|
26
26
|
})
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
proc.on('error', (err) => {
|
|
29
29
|
reject(err)
|
|
30
30
|
})
|
|
@@ -46,7 +46,7 @@ async function waitForService(port, maxRetries = 30, retryDelay = 1000) {
|
|
|
46
46
|
async function getApiKey(port) {
|
|
47
47
|
return new Promise((resolve, reject) => {
|
|
48
48
|
const postData = JSON.stringify({ username: 'admin' })
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
const options = {
|
|
51
51
|
hostname: 'localhost',
|
|
52
52
|
port: port,
|
|
@@ -57,7 +57,7 @@ async function getApiKey(port) {
|
|
|
57
57
|
'Content-Length': Buffer.byteLength(postData)
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
const req = http.request(options, (res) => {
|
|
62
62
|
let data = ''
|
|
63
63
|
res.on('data', (chunk) => { data += chunk })
|
|
@@ -78,11 +78,11 @@ async function getApiKey(port) {
|
|
|
78
78
|
}
|
|
79
79
|
})
|
|
80
80
|
})
|
|
81
|
-
|
|
81
|
+
|
|
82
82
|
req.on('error', (e) => {
|
|
83
83
|
reject(e)
|
|
84
84
|
})
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
req.write(postData)
|
|
87
87
|
req.end()
|
|
88
88
|
})
|
|
@@ -90,13 +90,17 @@ async function getApiKey(port) {
|
|
|
90
90
|
|
|
91
91
|
async function callAutoSetup(port, apiKey) {
|
|
92
92
|
return new Promise((resolve, reject) => {
|
|
93
|
+
const isWindows = process.platform === 'win32'
|
|
93
94
|
const options = {
|
|
94
95
|
hostname: 'localhost',
|
|
95
96
|
port: port,
|
|
96
97
|
path: `/api/setup/auto?apiKey=${encodeURIComponent(apiKey)}&host=localhost:${port}`,
|
|
97
|
-
method: 'GET'
|
|
98
|
+
method: 'GET',
|
|
99
|
+
headers: {
|
|
100
|
+
'x-platform': isWindows ? 'windows' : 'unix'
|
|
101
|
+
}
|
|
98
102
|
}
|
|
99
|
-
|
|
103
|
+
|
|
100
104
|
const req = http.request(options, (res) => {
|
|
101
105
|
let data = ''
|
|
102
106
|
res.on('data', (chunk) => { data += chunk })
|
|
@@ -108,11 +112,11 @@ async function callAutoSetup(port, apiKey) {
|
|
|
108
112
|
}
|
|
109
113
|
})
|
|
110
114
|
})
|
|
111
|
-
|
|
115
|
+
|
|
112
116
|
req.on('error', (e) => {
|
|
113
117
|
reject(e)
|
|
114
118
|
})
|
|
115
|
-
|
|
119
|
+
|
|
116
120
|
req.end()
|
|
117
121
|
})
|
|
118
122
|
}
|
|
@@ -120,16 +124,32 @@ async function callAutoSetup(port, apiKey) {
|
|
|
120
124
|
async function run(options = {}) {
|
|
121
125
|
let port = options.port || 3000
|
|
122
126
|
const errors = []
|
|
123
|
-
|
|
127
|
+
|
|
124
128
|
console.log('\n')
|
|
125
129
|
console.log('╔════════════════════════════════════════════════════════════╗')
|
|
126
130
|
console.log('║ ║')
|
|
127
|
-
console.log('║ 🚀 Skill-
|
|
131
|
+
console.log('║ 🚀 Skill-insight 一键部署 🚀 ║')
|
|
128
132
|
console.log('║ ║')
|
|
129
133
|
console.log('╚════════════════════════════════════════════════════════════╝')
|
|
130
134
|
console.log('')
|
|
131
|
-
|
|
135
|
+
|
|
132
136
|
console.log('📦 【步骤 1/5】安装 npm 包...')
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
const oldDbPath = path.join(process.cwd(), 'node_modules', '@witty-ai', 'skill-insight', 'data', 'witty_insight.db')
|
|
140
|
+
const newDbDir = path.join(os.homedir(), '.skill-insight', 'data')
|
|
141
|
+
const newDbPath = path.join(newDbDir, 'witty_insight.db')
|
|
142
|
+
|
|
143
|
+
if (fs.existsSync(oldDbPath) && !fs.existsSync(newDbPath)) {
|
|
144
|
+
console.log(' ⚠️ 检测到 node_modules 中存在旧版数据,正在执行迁移...')
|
|
145
|
+
if (!fs.existsSync(newDbDir)) fs.mkdirSync(newDbDir, { recursive: true })
|
|
146
|
+
fs.copyFileSync(oldDbPath, newDbPath)
|
|
147
|
+
console.log(' ✅ 旧版数据已成功迁移至安全目录')
|
|
148
|
+
}
|
|
149
|
+
} catch (e) {
|
|
150
|
+
console.log(' ⚠️ 数据迁移检测失败,跳过: ' + e.message)
|
|
151
|
+
}
|
|
152
|
+
|
|
133
153
|
try {
|
|
134
154
|
await runCommand('npm install @witty-ai/skill-insight', { silent: true })
|
|
135
155
|
console.log(' ✅ npm 包安装成功\n')
|
|
@@ -137,21 +157,21 @@ async function run(options = {}) {
|
|
|
137
157
|
errors.push({ step: 1, message: `npm install 失败: ${error.message}` })
|
|
138
158
|
console.log(` ❌ npm 包安装失败: ${error.message}\n`)
|
|
139
159
|
}
|
|
140
|
-
|
|
160
|
+
|
|
141
161
|
const availablePort = findAvailablePort(port)
|
|
142
162
|
if (availablePort !== port) {
|
|
143
163
|
console.log(`🔄 端口 ${port} 已被占用,自动切换到端口 ${availablePort}\n`)
|
|
144
164
|
port = availablePort
|
|
145
165
|
}
|
|
146
|
-
|
|
166
|
+
|
|
147
167
|
console.log('🔧 【步骤 2/5】启动服务...')
|
|
148
168
|
try {
|
|
149
|
-
const logPath = path.join(os.homedir(), '.
|
|
169
|
+
const logPath = path.join(os.homedir(), '.skill-insight', 'install.log')
|
|
150
170
|
const logDir = path.dirname(logPath)
|
|
151
171
|
if (!fs.existsSync(logDir)) {
|
|
152
172
|
fs.mkdirSync(logDir, { recursive: true })
|
|
153
173
|
}
|
|
154
|
-
|
|
174
|
+
|
|
155
175
|
const startProc = spawn('npx', ['@witty-ai/skill-insight', 'start', '--port', port.toString()], {
|
|
156
176
|
stdio: ['ignore', fs.openSync(logPath, 'a'), fs.openSync(logPath, 'a')],
|
|
157
177
|
shell: true,
|
|
@@ -163,7 +183,7 @@ async function run(options = {}) {
|
|
|
163
183
|
errors.push({ step: 2, message: `启动服务失败: ${error.message}` })
|
|
164
184
|
console.log(` ❌ 启动服务失败: ${error.message}\n`)
|
|
165
185
|
}
|
|
166
|
-
|
|
186
|
+
|
|
167
187
|
console.log('🔑 【步骤 3/5】等待服务就绪并获取 API Key...')
|
|
168
188
|
let apiKey = null
|
|
169
189
|
try {
|
|
@@ -173,36 +193,49 @@ async function run(options = {}) {
|
|
|
173
193
|
throw new Error(`服务在端口 ${port} 未就绪`)
|
|
174
194
|
}
|
|
175
195
|
console.log(' ✅ 服务已就绪')
|
|
176
|
-
|
|
196
|
+
|
|
177
197
|
apiKey = await getApiKey(port)
|
|
178
198
|
console.log(' ✅ 获取到 API Key\n')
|
|
179
199
|
} catch (error) {
|
|
180
200
|
errors.push({ step: 3, message: `获取 API Key 失败: ${error.message}` })
|
|
181
201
|
console.log(`\n ❌ 获取 API Key 失败: ${error.message}\n`)
|
|
182
202
|
}
|
|
183
|
-
|
|
203
|
+
|
|
184
204
|
console.log('🔌 【步骤 4/5】安装插件组件...')
|
|
185
205
|
try {
|
|
186
206
|
if (!apiKey) {
|
|
187
207
|
throw new Error('没有可用的 API Key,跳过自动配置')
|
|
188
208
|
}
|
|
189
|
-
|
|
209
|
+
|
|
190
210
|
const scriptContent = await callAutoSetup(port, apiKey)
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
fs.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
211
|
+
const isWindows = process.platform === 'win32'
|
|
212
|
+
const scriptDir = path.join(os.homedir(), '.skill-insight')
|
|
213
|
+
|
|
214
|
+
fs.mkdirSync(scriptDir, { recursive: true })
|
|
215
|
+
|
|
216
|
+
let scriptPath, executeCommand
|
|
217
|
+
if (isWindows) {
|
|
218
|
+
scriptPath = path.join(scriptDir, 'auto_setup.ps1')
|
|
219
|
+
fs.writeFileSync(scriptPath, scriptContent)
|
|
220
|
+
console.log(' ✅ 配置脚本已下载 (PowerShell)')
|
|
221
|
+
console.log(' 📋 请选择要安装的框架...')
|
|
222
|
+
executeCommand = `powershell -ExecutionPolicy Bypass -File "${scriptPath}"`
|
|
223
|
+
} else {
|
|
224
|
+
scriptPath = path.join(scriptDir, 'auto_setup.sh')
|
|
225
|
+
fs.writeFileSync(scriptPath, scriptContent, { mode: 0o755 })
|
|
226
|
+
console.log(' ✅ 配置脚本已下载 (Shell)')
|
|
227
|
+
console.log(' 📋 请选择要安装的框架...')
|
|
228
|
+
executeCommand = `bash "${scriptPath}"`
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
await runCommand(executeCommand)
|
|
232
|
+
|
|
200
233
|
console.log('\n ✅ 插件安装完成\n')
|
|
201
234
|
} catch (error) {
|
|
202
235
|
errors.push({ step: 4, message: `插件安装失败: ${error.message}` })
|
|
203
236
|
console.log(` ❌ 插件安装失败: ${error.message}\n`)
|
|
204
237
|
}
|
|
205
|
-
|
|
238
|
+
|
|
206
239
|
console.log('📚 【步骤 5/5】添加技能...')
|
|
207
240
|
try {
|
|
208
241
|
await runCommand('npx skills add https://atomgit.com/openeuler/witty-skill-insight.git')
|
|
@@ -211,11 +244,11 @@ async function run(options = {}) {
|
|
|
211
244
|
errors.push({ step: 5, message: `添加技能失败: ${error.message}` })
|
|
212
245
|
console.log(` ❌ 添加技能失败: ${error.message}\n`)
|
|
213
246
|
}
|
|
214
|
-
|
|
247
|
+
|
|
215
248
|
console.log('════════════════════════════════════════════════════════════')
|
|
216
249
|
console.log(' 🎉 部署完成 🎉')
|
|
217
250
|
console.log('════════════════════════════════════════════════════════════')
|
|
218
|
-
|
|
251
|
+
|
|
219
252
|
if (errors.length > 0) {
|
|
220
253
|
console.log('\n')
|
|
221
254
|
console.log('⚠️ 以下步骤执行失败:')
|
|
@@ -227,7 +260,7 @@ async function run(options = {}) {
|
|
|
227
260
|
console.log('\n')
|
|
228
261
|
console.log('✅ 所有步骤执行成功!')
|
|
229
262
|
}
|
|
230
|
-
|
|
263
|
+
|
|
231
264
|
console.log('\n')
|
|
232
265
|
console.log('┌─────────────────────────────────────────────────────────────┐')
|
|
233
266
|
console.log('│ │')
|
|
@@ -237,4 +270,4 @@ async function run(options = {}) {
|
|
|
237
270
|
console.log('')
|
|
238
271
|
}
|
|
239
272
|
|
|
240
|
-
module.exports = { run }
|
|
273
|
+
module.exports = { run }
|
|
@@ -12,7 +12,7 @@ async function run(options) {
|
|
|
12
12
|
return
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
console.log('===
|
|
15
|
+
console.log('=== Skill-Insight Service Logs ===\n')
|
|
16
16
|
console.log('Press Ctrl+C to exit\n')
|
|
17
17
|
|
|
18
18
|
const tail = spawn('tail', ['-f', logPath], { stdio: 'inherit' })
|
|
@@ -221,14 +221,14 @@ class OpenClawParser {
|
|
|
221
221
|
// HTTP Upload (replaces saveExecutionRecord)
|
|
222
222
|
// ============================================================================
|
|
223
223
|
|
|
224
|
-
function
|
|
224
|
+
function loadSkillInsightConfig(): { apiKey: string; host: string } {
|
|
225
225
|
const config: { apiKey: string; host: string } = { apiKey: '', host: '' };
|
|
226
226
|
try {
|
|
227
|
-
const envPath = path.join(os.homedir(), '.
|
|
227
|
+
const envPath = path.join(os.homedir(), '.skill-insight', '.env');
|
|
228
228
|
if (fs.existsSync(envPath)) {
|
|
229
229
|
const content = fs.readFileSync(envPath, 'utf-8');
|
|
230
|
-
const apiKeyMatch = content.match(/
|
|
231
|
-
const hostMatch = content.match(/
|
|
230
|
+
const apiKeyMatch = content.match(/SKILL_INSIGHT_API_KEY=(.*)/);
|
|
231
|
+
const hostMatch = content.match(/SKILL_INSIGHT_HOST=(.*)/);
|
|
232
232
|
if (apiKeyMatch && apiKeyMatch[1]) {
|
|
233
233
|
config.apiKey = apiKeyMatch[1].trim();
|
|
234
234
|
}
|
|
@@ -237,13 +237,13 @@ function loadWittyConfig(): { apiKey: string; host: string } {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
} catch (e) {
|
|
240
|
-
console.error('[OpenClawWatcher] Error reading
|
|
240
|
+
console.error('[OpenClawWatcher] Error reading skill-insight config:', e);
|
|
241
241
|
}
|
|
242
242
|
return config;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
async function uploadExecutionRecord(record: any): Promise<void> {
|
|
246
|
-
const config =
|
|
246
|
+
const config = loadSkillInsightConfig();
|
|
247
247
|
if (!config.apiKey || !config.host) {
|
|
248
248
|
console.error('[OpenClawWatcher] Missing API key or host in config');
|
|
249
249
|
return;
|
|
@@ -260,10 +260,12 @@ async function uploadExecutionRecord(record: any): Promise<void> {
|
|
|
260
260
|
|
|
261
261
|
const body = JSON.stringify(record);
|
|
262
262
|
|
|
263
|
+
const basePath = parsedUrl.pathname === '/' ? '' : parsedUrl.pathname;
|
|
264
|
+
|
|
263
265
|
const options: http.RequestOptions = {
|
|
264
266
|
hostname: parsedUrl.hostname,
|
|
265
267
|
port: parsedUrl.port || (isHttps ? 443 : 80),
|
|
266
|
-
path:
|
|
268
|
+
path: `${basePath}/api/upload`,
|
|
267
269
|
method: 'POST',
|
|
268
270
|
headers: {
|
|
269
271
|
'Content-Type': 'application/json',
|