@agent-spaces/server 0.1.0
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/dist/adapters/agent-runtime-types.js +7 -0
- package/dist/adapters/agent-runtime.js +23 -0
- package/dist/adapters/claude-code-runtime/adapter-pool.js +62 -0
- package/dist/adapters/claude-code-runtime/anthropic-bridge.js +209 -0
- package/dist/adapters/claude-code-runtime/index.js +195 -0
- package/dist/adapters/claude-code-runtime/message-format.js +241 -0
- package/dist/adapters/claude-code-runtime/protocol-converter.js +332 -0
- package/dist/adapters/claude-code-runtime/sdk-config.js +178 -0
- package/dist/adapters/claude-code-runtime/types.js +11 -0
- package/dist/adapters/codex-runtime.js +514 -0
- package/dist/adapters/git.js +335 -0
- package/dist/adapters/open-agent-sdk-runtime.js +87 -0
- package/dist/agents/agent-context.js +6 -0
- package/dist/agents/agent-message-parts.js +513 -0
- package/dist/agents/commit-agent.js +214 -0
- package/dist/agents/issue-agent-progress.js +112 -0
- package/dist/agents/issue-agent-runner.js +38 -0
- package/dist/agents/issue-task-controller.js +494 -0
- package/dist/agents/planner-agent.js +154 -0
- package/dist/agents/reviewer-agent.js +169 -0
- package/dist/agents/scheduler-agent.js +52 -0
- package/dist/app.js +133 -0
- package/dist/hooks/agent-hooks.js +19 -0
- package/dist/install.sh +84 -0
- package/dist/middleware/auth.js +19 -0
- package/dist/package.json +47 -0
- package/dist/routes/agent.js +87 -0
- package/dist/routes/auth.js +30 -0
- package/dist/routes/channel.js +131 -0
- package/dist/routes/file.js +110 -0
- package/dist/routes/folder.js +101 -0
- package/dist/routes/git.js +153 -0
- package/dist/routes/issue.js +208 -0
- package/dist/routes/llm.js +113 -0
- package/dist/routes/task.js +110 -0
- package/dist/routes/workspace.js +196 -0
- package/dist/services/agent.js +638 -0
- package/dist/services/auth-store.js +22 -0
- package/dist/services/builtin-tools.js +184 -0
- package/dist/services/channel.js +90 -0
- package/dist/services/file.js +89 -0
- package/dist/services/issue-comment.js +54 -0
- package/dist/services/issue-retry.js +59 -0
- package/dist/services/issue.js +197 -0
- package/dist/services/llm-model-config.js +16 -0
- package/dist/services/message.js +70 -0
- package/dist/services/notification-hub/bot-agent.js +87 -0
- package/dist/services/notification-hub/bot-commands.js +360 -0
- package/dist/services/notification-hub/events.js +96 -0
- package/dist/services/notification-hub/format.js +34 -0
- package/dist/services/notification-hub/helpers.js +72 -0
- package/dist/services/notification-hub/index.js +7 -0
- package/dist/services/notification-hub/lark-adapter.js +110 -0
- package/dist/services/notification-hub/lark-api.js +40 -0
- package/dist/services/notification-hub/service.js +80 -0
- package/dist/services/notification-hub/types.js +31 -0
- package/dist/services/notification-hub/wechat-adapter.js +126 -0
- package/dist/services/notification-hub/wechat-api.js +212 -0
- package/dist/services/pty.js +52 -0
- package/dist/services/task.js +131 -0
- package/dist/services/tool-detail.js +19 -0
- package/dist/services/workspace-prompt.js +25 -0
- package/dist/services/workspace.js +74 -0
- package/dist/storage/agent-store.js +326 -0
- package/dist/storage/issue-store.js +39 -0
- package/dist/storage/json-store.js +24 -0
- package/dist/storage/llm-store.js +79 -0
- package/dist/storage/task-store.js +38 -0
- package/dist/storage/usage.js +28 -0
- package/dist/storage/workspace-store.js +35 -0
- package/dist/web/404.html +1 -0
- package/dist/web/__next.__PAGE__.txt +9 -0
- package/dist/web/__next._full.txt +28 -0
- package/dist/web/__next._head.txt +6 -0
- package/dist/web/__next._index.txt +10 -0
- package/dist/web/__next._tree.txt +8 -0
- package/dist/web/_next/static/chunks/0-oog4zg4_m~m.css +5 -0
- package/dist/web/_next/static/chunks/0202ia13sijwb.js +1 -0
- package/dist/web/_next/static/chunks/031c~uxc3ie87.js +1 -0
- package/dist/web/_next/static/chunks/038whpa0zpnas.js +1 -0
- package/dist/web/_next/static/chunks/03~yq9q893hmn.js +1 -0
- package/dist/web/_next/static/chunks/06q5go~xoz5a3.js +1 -0
- package/dist/web/_next/static/chunks/095.wizobwtyg.js +2 -0
- package/dist/web/_next/static/chunks/0bfg.w~u-83h5.js +1 -0
- package/dist/web/_next/static/chunks/0ce7i6~sb20rv.js +113 -0
- package/dist/web/_next/static/chunks/0d4~pcva1uk-a.js +1 -0
- package/dist/web/_next/static/chunks/0iq70n_u75nyu.js +1 -0
- package/dist/web/_next/static/chunks/0memz-8zsbxpu.js +1 -0
- package/dist/web/_next/static/chunks/0nw~w.3~twebx.js +2 -0
- package/dist/web/_next/static/chunks/0pyytgz~5vt0f.js +31 -0
- package/dist/web/_next/static/chunks/0ujjcrz~1nq.q.css +1 -0
- package/dist/web/_next/static/chunks/0vdnx9n41dyjl.js +1 -0
- package/dist/web/_next/static/chunks/0yl4mqmxtll6g.js +1 -0
- package/dist/web/_next/static/chunks/0zcbfka5tcle3.js +1 -0
- package/dist/web/_next/static/chunks/0~eo58u99i.fr.js +8 -0
- package/dist/web/_next/static/chunks/13_2vxyccsv84.js +4 -0
- package/dist/web/_next/static/chunks/13wfs~urgxu0w.js +1 -0
- package/dist/web/_next/static/chunks/157~3c6wqkt83.js +1 -0
- package/dist/web/_next/static/chunks/15jvow_z4uq-..js +1 -0
- package/dist/web/_next/static/chunks/15v697nf~r-cy.js +2 -0
- package/dist/web/_next/static/chunks/168ojsxhm7ypc.js +1 -0
- package/dist/web/_next/static/chunks/17oc2l.ekcs8b.css +1 -0
- package/dist/web/_next/static/chunks/turbopack-164~7ulq9o9yc.js +1 -0
- package/dist/web/_next/static/media/0a7740363b4d4863-s.1110aazvokzp..woff2 +0 -0
- package/dist/web/_next/static/media/0da9c7f357bd9d4d-s.0ek5sshv8wk3m.woff2 +0 -0
- package/dist/web/_next/static/media/1b99372b3eaef0c8-s.p.0gx2haw2tmll8.woff2 +0 -0
- package/dist/web/_next/static/media/41e95f694c5c4549-s.0r1jrq7neqdsq.woff2 +0 -0
- package/dist/web/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2 +0 -0
- package/dist/web/_next/static/media/5f9d24ebef5d5292-s.0esuu2f5si~v8.woff2 +0 -0
- package/dist/web/_next/static/media/6c55a692938ebbbc-s.0g6rbszwfgn9y.woff2 +0 -0
- package/dist/web/_next/static/media/8e6fa89aa22d24ec-s.p.0uvzar8hswo3p.woff2 +0 -0
- package/dist/web/_next/static/media/a218039a3287bcfd-s.p.17-1enzs_j91b.woff2 +0 -0
- package/dist/web/_next/static/media/b2ea385cb5ae8625-s.0kjod.kaq1k69.woff2 +0 -0
- package/dist/web/_next/static/media/bdc7e24a509eb931-s.0apt5mko2.qn3.woff2 +0 -0
- package/dist/web/_next/static/media/c3cb240f9c892514-s.163v2i5cux7-c.woff2 +0 -0
- package/dist/web/_next/static/media/e2334d715941921e-s.p.12skym0rqknxy.woff2 +0 -0
- package/dist/web/_next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
- package/dist/web/_next/static/owMnKmxATbtXK_J_k_uHh/_buildManifest.js +21 -0
- package/dist/web/_next/static/owMnKmxATbtXK_J_k_uHh/_clientMiddlewareManifest.js +6 -0
- package/dist/web/_next/static/owMnKmxATbtXK_J_k_uHh/_ssgManifest.js +1 -0
- package/dist/web/_not-found/__next._full.txt +21 -0
- package/dist/web/_not-found/__next._head.txt +6 -0
- package/dist/web/_not-found/__next._index.txt +10 -0
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/web/_not-found/__next._not-found.txt +5 -0
- package/dist/web/_not-found/__next._tree.txt +3 -0
- package/dist/web/_not-found.html +1 -0
- package/dist/web/_not-found.txt +21 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/file.svg +1 -0
- package/dist/web/globe.svg +1 -0
- package/dist/web/icons/default_file.svg +1 -0
- package/dist/web/icons/default_folder.svg +1 -0
- package/dist/web/icons/default_folder_opened.svg +1 -0
- package/dist/web/icons/default_root_folder.svg +1 -0
- package/dist/web/icons/default_root_folder_opened.svg +1 -0
- package/dist/web/icons/file_type_access.svg +1 -0
- package/dist/web/icons/file_type_access2.svg +1 -0
- package/dist/web/icons/file_type_actionscript.svg +1 -0
- package/dist/web/icons/file_type_actionscript2.svg +1 -0
- package/dist/web/icons/file_type_ada.svg +1 -0
- package/dist/web/icons/file_type_advpl.svg +1 -0
- package/dist/web/icons/file_type_affectscript.svg +1 -0
- package/dist/web/icons/file_type_affinitydesigner.svg +1 -0
- package/dist/web/icons/file_type_affinityphoto.svg +1 -0
- package/dist/web/icons/file_type_affinitypublisher.svg +1 -0
- package/dist/web/icons/file_type_ai.svg +1 -0
- package/dist/web/icons/file_type_ai2.svg +1 -0
- package/dist/web/icons/file_type_al.svg +1 -0
- package/dist/web/icons/file_type_angular.svg +1 -0
- package/dist/web/icons/file_type_ansible.svg +1 -0
- package/dist/web/icons/file_type_antlr.svg +1 -0
- package/dist/web/icons/file_type_anyscript.svg +1 -0
- package/dist/web/icons/file_type_apache.svg +1 -0
- package/dist/web/icons/file_type_apex.svg +1 -0
- package/dist/web/icons/file_type_api_extractor.svg +1 -0
- package/dist/web/icons/file_type_apib.svg +1 -0
- package/dist/web/icons/file_type_apib2.svg +1 -0
- package/dist/web/icons/file_type_apl.svg +1 -0
- package/dist/web/icons/file_type_applescript.svg +1 -0
- package/dist/web/icons/file_type_appsemble.svg +1 -0
- package/dist/web/icons/file_type_appveyor.svg +1 -0
- package/dist/web/icons/file_type_arduino.svg +1 -0
- package/dist/web/icons/file_type_asciidoc.svg +1 -0
- package/dist/web/icons/file_type_asp.svg +1 -0
- package/dist/web/icons/file_type_aspx.svg +1 -0
- package/dist/web/icons/file_type_assembly.svg +1 -0
- package/dist/web/icons/file_type_astro.svg +1 -0
- package/dist/web/icons/file_type_astroconfig.svg +1 -0
- package/dist/web/icons/file_type_ats.svg +1 -0
- package/dist/web/icons/file_type_audio.svg +1 -0
- package/dist/web/icons/file_type_aurelia.svg +1 -0
- package/dist/web/icons/file_type_autohotkey.svg +1 -0
- package/dist/web/icons/file_type_autoit.svg +1 -0
- package/dist/web/icons/file_type_avif.svg +1 -0
- package/dist/web/icons/file_type_avro.svg +1 -0
- package/dist/web/icons/file_type_awk.svg +1 -0
- package/dist/web/icons/file_type_aws.svg +1 -0
- package/dist/web/icons/file_type_azure.svg +1 -0
- package/dist/web/icons/file_type_azurepipelines.svg +1 -0
- package/dist/web/icons/file_type_babel.svg +1 -0
- package/dist/web/icons/file_type_babel2.svg +1 -0
- package/dist/web/icons/file_type_ballerina.svg +1 -0
- package/dist/web/icons/file_type_bat.svg +1 -0
- package/dist/web/icons/file_type_bats.svg +1 -0
- package/dist/web/icons/file_type_bazaar.svg +1 -0
- package/dist/web/icons/file_type_bazel.svg +1 -0
- package/dist/web/icons/file_type_befunge.svg +1 -0
- package/dist/web/icons/file_type_bicep.svg +1 -0
- package/dist/web/icons/file_type_biml.svg +1 -0
- package/dist/web/icons/file_type_binary.svg +1 -0
- package/dist/web/icons/file_type_bitbucketpipeline.svg +1 -0
- package/dist/web/icons/file_type_bithound.svg +1 -0
- package/dist/web/icons/file_type_blade.svg +1 -0
- package/dist/web/icons/file_type_blitzbasic.svg +1 -0
- package/dist/web/icons/file_type_bolt.svg +1 -0
- package/dist/web/icons/file_type_bosque.svg +1 -0
- package/dist/web/icons/file_type_bower.svg +1 -0
- package/dist/web/icons/file_type_bower2.svg +1 -0
- package/dist/web/icons/file_type_browserslist.svg +1 -0
- package/dist/web/icons/file_type_buckbuild.svg +1 -0
- package/dist/web/icons/file_type_bundler.svg +1 -0
- package/dist/web/icons/file_type_c.svg +1 -0
- package/dist/web/icons/file_type_c2.svg +1 -0
- package/dist/web/icons/file_type_c3.svg +1 -0
- package/dist/web/icons/file_type_c_al.svg +1 -0
- package/dist/web/icons/file_type_cabal.svg +1 -0
- package/dist/web/icons/file_type_caddy.svg +1 -0
- package/dist/web/icons/file_type_cake.svg +1 -0
- package/dist/web/icons/file_type_cakephp.svg +1 -0
- package/dist/web/icons/file_type_capacitor.svg +1 -0
- package/dist/web/icons/file_type_cargo.svg +1 -0
- package/dist/web/icons/file_type_casc.svg +1 -0
- package/dist/web/icons/file_type_cddl.svg +1 -0
- package/dist/web/icons/file_type_cert.svg +1 -0
- package/dist/web/icons/file_type_ceylon.svg +1 -0
- package/dist/web/icons/file_type_cf.svg +1 -0
- package/dist/web/icons/file_type_cf2.svg +1 -0
- package/dist/web/icons/file_type_cfc.svg +1 -0
- package/dist/web/icons/file_type_cfc2.svg +1 -0
- package/dist/web/icons/file_type_cfm.svg +1 -0
- package/dist/web/icons/file_type_cfm2.svg +1 -0
- package/dist/web/icons/file_type_cheader.svg +1 -0
- package/dist/web/icons/file_type_chef.svg +1 -0
- package/dist/web/icons/file_type_chef_cookbook.svg +1 -0
- package/dist/web/icons/file_type_circleci.svg +1 -0
- package/dist/web/icons/file_type_class.svg +1 -0
- package/dist/web/icons/file_type_clojure.svg +1 -0
- package/dist/web/icons/file_type_clojurescript.svg +1 -0
- package/dist/web/icons/file_type_cloudfoundry.svg +1 -0
- package/dist/web/icons/file_type_cmake.svg +1 -0
- package/dist/web/icons/file_type_cobol.svg +1 -0
- package/dist/web/icons/file_type_codacy.svg +1 -0
- package/dist/web/icons/file_type_codeclimate.svg +1 -0
- package/dist/web/icons/file_type_codecov.svg +1 -0
- package/dist/web/icons/file_type_codekit.svg +1 -0
- package/dist/web/icons/file_type_codeql.svg +1 -0
- package/dist/web/icons/file_type_coffeelint.svg +1 -0
- package/dist/web/icons/file_type_coffeescript.svg +1 -0
- package/dist/web/icons/file_type_commitlint.svg +1 -0
- package/dist/web/icons/file_type_compass.svg +1 -0
- package/dist/web/icons/file_type_composer.svg +1 -0
- package/dist/web/icons/file_type_conan.svg +1 -0
- package/dist/web/icons/file_type_conda.svg +1 -0
- package/dist/web/icons/file_type_config.svg +1 -0
- package/dist/web/icons/file_type_confluence.svg +1 -0
- package/dist/web/icons/file_type_coveralls.svg +1 -0
- package/dist/web/icons/file_type_cpp.svg +1 -0
- package/dist/web/icons/file_type_cpp2.svg +1 -0
- package/dist/web/icons/file_type_cpp3.svg +1 -0
- package/dist/web/icons/file_type_cppheader.svg +1 -0
- package/dist/web/icons/file_type_crowdin.svg +1 -0
- package/dist/web/icons/file_type_crystal.svg +1 -0
- package/dist/web/icons/file_type_csharp.svg +1 -0
- package/dist/web/icons/file_type_csharp2.svg +1 -0
- package/dist/web/icons/file_type_csproj.svg +1 -0
- package/dist/web/icons/file_type_css.svg +1 -0
- package/dist/web/icons/file_type_csscomb.svg +1 -0
- package/dist/web/icons/file_type_csslint.svg +1 -0
- package/dist/web/icons/file_type_cssmap.svg +1 -0
- package/dist/web/icons/file_type_cucumber.svg +1 -0
- package/dist/web/icons/file_type_cuda.svg +1 -0
- package/dist/web/icons/file_type_cvs.svg +1 -0
- package/dist/web/icons/file_type_cypress.svg +1 -0
- package/dist/web/icons/file_type_cython.svg +1 -0
- package/dist/web/icons/file_type_dal.svg +1 -0
- package/dist/web/icons/file_type_darcs.svg +1 -0
- package/dist/web/icons/file_type_dartlang.svg +1 -0
- package/dist/web/icons/file_type_db.svg +1 -0
- package/dist/web/icons/file_type_delphi.svg +1 -0
- package/dist/web/icons/file_type_dependabot.svg +1 -0
- package/dist/web/icons/file_type_dependencies.svg +1 -0
- package/dist/web/icons/file_type_devcontainer.svg +1 -0
- package/dist/web/icons/file_type_diff.svg +1 -0
- package/dist/web/icons/file_type_django.svg +1 -0
- package/dist/web/icons/file_type_dlang.svg +1 -0
- package/dist/web/icons/file_type_docker.svg +1 -0
- package/dist/web/icons/file_type_docker2.svg +1 -0
- package/dist/web/icons/file_type_dockertest.svg +1 -0
- package/dist/web/icons/file_type_dockertest2.svg +1 -0
- package/dist/web/icons/file_type_docpad.svg +1 -0
- package/dist/web/icons/file_type_docz.svg +1 -0
- package/dist/web/icons/file_type_dojo.svg +1 -0
- package/dist/web/icons/file_type_dotjs.svg +1 -0
- package/dist/web/icons/file_type_doxygen.svg +1 -0
- package/dist/web/icons/file_type_drawio.svg +1 -0
- package/dist/web/icons/file_type_drone.svg +1 -0
- package/dist/web/icons/file_type_drools.svg +1 -0
- package/dist/web/icons/file_type_dustjs.svg +1 -0
- package/dist/web/icons/file_type_dvc.svg +1 -0
- package/dist/web/icons/file_type_dylan.svg +1 -0
- package/dist/web/icons/file_type_edge.svg +1 -0
- package/dist/web/icons/file_type_edge2.svg +1 -0
- package/dist/web/icons/file_type_editorconfig.svg +1 -0
- package/dist/web/icons/file_type_eex.svg +1 -0
- package/dist/web/icons/file_type_ejs.svg +1 -0
- package/dist/web/icons/file_type_elastic.svg +1 -0
- package/dist/web/icons/file_type_elasticbeanstalk.svg +1 -0
- package/dist/web/icons/file_type_elixir.svg +1 -0
- package/dist/web/icons/file_type_elm.svg +1 -0
- package/dist/web/icons/file_type_elm2.svg +1 -0
- package/dist/web/icons/file_type_emacs.svg +1 -0
- package/dist/web/icons/file_type_ember.svg +1 -0
- package/dist/web/icons/file_type_ensime.svg +1 -0
- package/dist/web/icons/file_type_eps.svg +1 -0
- package/dist/web/icons/file_type_erb.svg +1 -0
- package/dist/web/icons/file_type_erlang.svg +1 -0
- package/dist/web/icons/file_type_erlang2.svg +1 -0
- package/dist/web/icons/file_type_eslint.svg +1 -0
- package/dist/web/icons/file_type_eslint2.svg +1 -0
- package/dist/web/icons/file_type_excel.svg +1 -0
- package/dist/web/icons/file_type_excel2.svg +1 -0
- package/dist/web/icons/file_type_expo.svg +1 -0
- package/dist/web/icons/file_type_falcon.svg +1 -0
- package/dist/web/icons/file_type_fauna.svg +1 -0
- package/dist/web/icons/file_type_favicon.svg +1 -0
- package/dist/web/icons/file_type_fbx.svg +1 -0
- package/dist/web/icons/file_type_firebase.svg +1 -0
- package/dist/web/icons/file_type_firebasehosting.svg +1 -0
- package/dist/web/icons/file_type_firestore.svg +1 -0
- package/dist/web/icons/file_type_fla.svg +1 -0
- package/dist/web/icons/file_type_flash.svg +1 -0
- package/dist/web/icons/file_type_floobits.svg +1 -0
- package/dist/web/icons/file_type_flow.svg +1 -0
- package/dist/web/icons/file_type_flutter.svg +1 -0
- package/dist/web/icons/file_type_flutter_package.svg +1 -0
- package/dist/web/icons/file_type_font.svg +1 -0
- package/dist/web/icons/file_type_fortran.svg +1 -0
- package/dist/web/icons/file_type_fossa.svg +1 -0
- package/dist/web/icons/file_type_fossil.svg +1 -0
- package/dist/web/icons/file_type_freemarker.svg +1 -0
- package/dist/web/icons/file_type_fsharp.svg +1 -0
- package/dist/web/icons/file_type_fsharp2.svg +1 -0
- package/dist/web/icons/file_type_fsproj.svg +1 -0
- package/dist/web/icons/file_type_fthtml.svg +1 -0
- package/dist/web/icons/file_type_fusebox.svg +1 -0
- package/dist/web/icons/file_type_galen.svg +1 -0
- package/dist/web/icons/file_type_galen2.svg +1 -0
- package/dist/web/icons/file_type_gamemaker.svg +1 -0
- package/dist/web/icons/file_type_gamemaker2.svg +1 -0
- package/dist/web/icons/file_type_gamemaker81.svg +1 -0
- package/dist/web/icons/file_type_gatsby.svg +1 -0
- package/dist/web/icons/file_type_gcode.svg +1 -0
- package/dist/web/icons/file_type_genstat.svg +1 -0
- package/dist/web/icons/file_type_git.svg +1 -0
- package/dist/web/icons/file_type_git2.svg +1 -0
- package/dist/web/icons/file_type_gitlab.svg +1 -0
- package/dist/web/icons/file_type_gitpod.svg +1 -0
- package/dist/web/icons/file_type_glide.svg +1 -0
- package/dist/web/icons/file_type_glitter.svg +1 -0
- package/dist/web/icons/file_type_glsl.svg +1 -0
- package/dist/web/icons/file_type_glyphs.svg +1 -0
- package/dist/web/icons/file_type_gnuplot.svg +1 -0
- package/dist/web/icons/file_type_go.svg +1 -0
- package/dist/web/icons/file_type_go_aqua.svg +1 -0
- package/dist/web/icons/file_type_go_black.svg +1 -0
- package/dist/web/icons/file_type_go_fuchsia.svg +1 -0
- package/dist/web/icons/file_type_go_gopher.svg +1 -0
- package/dist/web/icons/file_type_go_lightblue.svg +1 -0
- package/dist/web/icons/file_type_go_package.svg +1 -0
- package/dist/web/icons/file_type_go_white.svg +1 -0
- package/dist/web/icons/file_type_go_yellow.svg +1 -0
- package/dist/web/icons/file_type_godot.svg +1 -0
- package/dist/web/icons/file_type_gradle.svg +1 -0
- package/dist/web/icons/file_type_gradle2.svg +1 -0
- package/dist/web/icons/file_type_graphql.svg +1 -0
- package/dist/web/icons/file_type_graphql_config.svg +1 -0
- package/dist/web/icons/file_type_graphviz.svg +1 -0
- package/dist/web/icons/file_type_greenkeeper.svg +1 -0
- package/dist/web/icons/file_type_gridsome.svg +1 -0
- package/dist/web/icons/file_type_groovy.svg +1 -0
- package/dist/web/icons/file_type_groovy2.svg +1 -0
- package/dist/web/icons/file_type_grunt.svg +1 -0
- package/dist/web/icons/file_type_gulp.svg +1 -0
- package/dist/web/icons/file_type_haml.svg +1 -0
- package/dist/web/icons/file_type_handlebars.svg +1 -0
- package/dist/web/icons/file_type_handlebars2.svg +1 -0
- package/dist/web/icons/file_type_harbour.svg +1 -0
- package/dist/web/icons/file_type_haskell.svg +1 -0
- package/dist/web/icons/file_type_haskell2.svg +1 -0
- package/dist/web/icons/file_type_haxe.svg +1 -0
- package/dist/web/icons/file_type_haxecheckstyle.svg +1 -0
- package/dist/web/icons/file_type_haxedevelop.svg +1 -0
- package/dist/web/icons/file_type_helix.svg +1 -0
- package/dist/web/icons/file_type_helm.svg +1 -0
- package/dist/web/icons/file_type_hjson.svg +1 -0
- package/dist/web/icons/file_type_hlsl.svg +1 -0
- package/dist/web/icons/file_type_homeassistant.svg +1 -0
- package/dist/web/icons/file_type_horusec.svg +1 -0
- package/dist/web/icons/file_type_host.svg +1 -0
- package/dist/web/icons/file_type_html.svg +1 -0
- package/dist/web/icons/file_type_htmlhint.svg +1 -0
- package/dist/web/icons/file_type_http.svg +1 -0
- package/dist/web/icons/file_type_hunspell.svg +1 -0
- package/dist/web/icons/file_type_husky.svg +1 -0
- package/dist/web/icons/file_type_hy.svg +1 -0
- package/dist/web/icons/file_type_hygen.svg +1 -0
- package/dist/web/icons/file_type_hypr.svg +1 -0
- package/dist/web/icons/file_type_icl.svg +1 -0
- package/dist/web/icons/file_type_idris.svg +1 -0
- package/dist/web/icons/file_type_idrisbin.svg +1 -0
- package/dist/web/icons/file_type_idrispkg.svg +1 -0
- package/dist/web/icons/file_type_image.svg +1 -0
- package/dist/web/icons/file_type_imba.svg +1 -0
- package/dist/web/icons/file_type_inc.svg +1 -0
- package/dist/web/icons/file_type_infopath.svg +1 -0
- package/dist/web/icons/file_type_informix.svg +1 -0
- package/dist/web/icons/file_type_ini.svg +1 -0
- package/dist/web/icons/file_type_ink.svg +1 -0
- package/dist/web/icons/file_type_innosetup.svg +1 -0
- package/dist/web/icons/file_type_io.svg +1 -0
- package/dist/web/icons/file_type_iodine.svg +1 -0
- package/dist/web/icons/file_type_ionic.svg +1 -0
- package/dist/web/icons/file_type_jake.svg +1 -0
- package/dist/web/icons/file_type_janet.svg +1 -0
- package/dist/web/icons/file_type_jar.svg +1 -0
- package/dist/web/icons/file_type_jasmine.svg +1 -0
- package/dist/web/icons/file_type_java.svg +1 -0
- package/dist/web/icons/file_type_jbuilder.svg +1 -0
- package/dist/web/icons/file_type_jekyll.svg +1 -0
- package/dist/web/icons/file_type_jenkins.svg +1 -0
- package/dist/web/icons/file_type_jest.svg +1 -0
- package/dist/web/icons/file_type_jest_snapshot.svg +1 -0
- package/dist/web/icons/file_type_jinja.svg +1 -0
- package/dist/web/icons/file_type_jpm.svg +1 -0
- package/dist/web/icons/file_type_js.svg +1 -0
- package/dist/web/icons/file_type_js_official.svg +1 -0
- package/dist/web/icons/file_type_jsbeautify.svg +1 -0
- package/dist/web/icons/file_type_jsconfig.svg +1 -0
- package/dist/web/icons/file_type_jscpd.svg +1 -0
- package/dist/web/icons/file_type_jshint.svg +1 -0
- package/dist/web/icons/file_type_jsmap.svg +1 -0
- package/dist/web/icons/file_type_json.svg +1 -0
- package/dist/web/icons/file_type_json2.svg +1 -0
- package/dist/web/icons/file_type_json5.svg +1 -0
- package/dist/web/icons/file_type_json_official.svg +1 -0
- package/dist/web/icons/file_type_jsonld.svg +1 -0
- package/dist/web/icons/file_type_jsonnet.svg +1 -0
- package/dist/web/icons/file_type_jsp.svg +1 -0
- package/dist/web/icons/file_type_jss.svg +1 -0
- package/dist/web/icons/file_type_julia.svg +1 -0
- package/dist/web/icons/file_type_julia2.svg +1 -0
- package/dist/web/icons/file_type_jupyter.svg +1 -0
- package/dist/web/icons/file_type_karma.svg +1 -0
- package/dist/web/icons/file_type_key.svg +1 -0
- package/dist/web/icons/file_type_kitchenci.svg +1 -0
- package/dist/web/icons/file_type_kite.svg +1 -0
- package/dist/web/icons/file_type_kivy.svg +1 -0
- package/dist/web/icons/file_type_kos.svg +1 -0
- package/dist/web/icons/file_type_kotlin.svg +1 -0
- package/dist/web/icons/file_type_kusto.svg +1 -0
- package/dist/web/icons/file_type_latino.svg +1 -0
- package/dist/web/icons/file_type_layout.svg +1 -0
- package/dist/web/icons/file_type_lerna.svg +1 -0
- package/dist/web/icons/file_type_less.svg +1 -0
- package/dist/web/icons/file_type_lex.svg +1 -0
- package/dist/web/icons/file_type_license.svg +1 -0
- package/dist/web/icons/file_type_licensebat.svg +1 -0
- package/dist/web/icons/file_type_light_actionscript2.svg +1 -0
- package/dist/web/icons/file_type_light_ada.svg +1 -0
- package/dist/web/icons/file_type_light_apl.svg +1 -0
- package/dist/web/icons/file_type_light_babel.svg +1 -0
- package/dist/web/icons/file_type_light_babel2.svg +1 -0
- package/dist/web/icons/file_type_light_cabal.svg +1 -0
- package/dist/web/icons/file_type_light_circleci.svg +1 -0
- package/dist/web/icons/file_type_light_cloudfoundry.svg +1 -0
- package/dist/web/icons/file_type_light_codacy.svg +1 -0
- package/dist/web/icons/file_type_light_codeclimate.svg +1 -0
- package/dist/web/icons/file_type_light_config.svg +1 -0
- package/dist/web/icons/file_type_light_crystal.svg +1 -0
- package/dist/web/icons/file_type_light_db.svg +1 -0
- package/dist/web/icons/file_type_light_docpad.svg +1 -0
- package/dist/web/icons/file_type_light_drone.svg +1 -0
- package/dist/web/icons/file_type_light_expo.svg +1 -0
- package/dist/web/icons/file_type_light_firebasehosting.svg +1 -0
- package/dist/web/icons/file_type_light_fla.svg +1 -0
- package/dist/web/icons/file_type_light_font.svg +1 -0
- package/dist/web/icons/file_type_light_gamemaker2.svg +1 -0
- package/dist/web/icons/file_type_light_gradle.svg +1 -0
- package/dist/web/icons/file_type_light_hjson.svg +1 -0
- package/dist/web/icons/file_type_light_ini.svg +1 -0
- package/dist/web/icons/file_type_light_io.svg +1 -0
- package/dist/web/icons/file_type_light_js.svg +1 -0
- package/dist/web/icons/file_type_light_jsconfig.svg +1 -0
- package/dist/web/icons/file_type_light_jsmap.svg +1 -0
- package/dist/web/icons/file_type_light_json.svg +1 -0
- package/dist/web/icons/file_type_light_json5.svg +1 -0
- package/dist/web/icons/file_type_light_jsonld.svg +1 -0
- package/dist/web/icons/file_type_light_kite.svg +1 -0
- package/dist/web/icons/file_type_light_lerna.svg +1 -0
- package/dist/web/icons/file_type_light_mdx.svg +1 -0
- package/dist/web/icons/file_type_light_mlang.svg +1 -0
- package/dist/web/icons/file_type_light_mustache.svg +1 -0
- package/dist/web/icons/file_type_light_next.svg +1 -0
- package/dist/web/icons/file_type_light_nim.svg +1 -0
- package/dist/web/icons/file_type_light_openHAB.svg +1 -0
- package/dist/web/icons/file_type_light_pcl.svg +1 -0
- package/dist/web/icons/file_type_light_pnpm.svg +1 -0
- package/dist/web/icons/file_type_light_prettier.svg +1 -0
- package/dist/web/icons/file_type_light_prisma.svg +1 -0
- package/dist/web/icons/file_type_light_purescript.svg +1 -0
- package/dist/web/icons/file_type_light_razzle.svg +1 -0
- package/dist/web/icons/file_type_light_rehype.svg +1 -0
- package/dist/web/icons/file_type_light_remark.svg +1 -0
- package/dist/web/icons/file_type_light_retext.svg +1 -0
- package/dist/web/icons/file_type_light_rubocop.svg +1 -0
- package/dist/web/icons/file_type_light_rust.svg +1 -0
- package/dist/web/icons/file_type_light_rust_toolchain.svg +1 -0
- package/dist/web/icons/file_type_light_shaderlab.svg +1 -0
- package/dist/web/icons/file_type_light_solidity.svg +1 -0
- package/dist/web/icons/file_type_light_stylelint.svg +1 -0
- package/dist/web/icons/file_type_light_stylus.svg +1 -0
- package/dist/web/icons/file_type_light_symfony.svg +1 -0
- package/dist/web/icons/file_type_light_systemd.svg +1 -0
- package/dist/web/icons/file_type_light_systemverilog.svg +1 -0
- package/dist/web/icons/file_type_light_testcafe.svg +1 -0
- package/dist/web/icons/file_type_light_testjs.svg +1 -0
- package/dist/web/icons/file_type_light_tex.svg +1 -0
- package/dist/web/icons/file_type_light_todo.svg +1 -0
- package/dist/web/icons/file_type_light_toml.svg +1 -0
- package/dist/web/icons/file_type_light_unibeautify.svg +1 -0
- package/dist/web/icons/file_type_light_vash.svg +1 -0
- package/dist/web/icons/file_type_light_vsix.svg +1 -0
- package/dist/web/icons/file_type_light_vsixmanifest.svg +1 -0
- package/dist/web/icons/file_type_light_xfl.svg +1 -0
- package/dist/web/icons/file_type_light_yaml.svg +1 -0
- package/dist/web/icons/file_type_light_zeit.svg +1 -0
- package/dist/web/icons/file_type_lighthouse.svg +1 -0
- package/dist/web/icons/file_type_lime.svg +1 -0
- package/dist/web/icons/file_type_lintstagedrc.svg +1 -0
- package/dist/web/icons/file_type_liquid.svg +1 -0
- package/dist/web/icons/file_type_lisp.svg +1 -0
- package/dist/web/icons/file_type_livescript.svg +1 -0
- package/dist/web/icons/file_type_lnk.svg +1 -0
- package/dist/web/icons/file_type_locale.svg +1 -0
- package/dist/web/icons/file_type_log.svg +1 -0
- package/dist/web/icons/file_type_lolcode.svg +1 -0
- package/dist/web/icons/file_type_lsl.svg +1 -0
- package/dist/web/icons/file_type_lua.svg +1 -0
- package/dist/web/icons/file_type_lync.svg +1 -0
- package/dist/web/icons/file_type_makefile.svg +1 -0
- package/dist/web/icons/file_type_manifest.svg +1 -0
- package/dist/web/icons/file_type_manifest_bak.svg +1 -0
- package/dist/web/icons/file_type_manifest_skip.svg +1 -0
- package/dist/web/icons/file_type_map.svg +1 -0
- package/dist/web/icons/file_type_mariadb.svg +1 -0
- package/dist/web/icons/file_type_markdown.svg +1 -0
- package/dist/web/icons/file_type_markdownlint.svg +1 -0
- package/dist/web/icons/file_type_marko.svg +1 -0
- package/dist/web/icons/file_type_markojs.svg +1 -0
- package/dist/web/icons/file_type_matlab.png +0 -0
- package/dist/web/icons/file_type_matlab.svg +1 -0
- package/dist/web/icons/file_type_maven.svg +1 -0
- package/dist/web/icons/file_type_maxscript.svg +1 -0
- package/dist/web/icons/file_type_maya.svg +1 -0
- package/dist/web/icons/file_type_mdx.svg +1 -0
- package/dist/web/icons/file_type_mediawiki.svg +1 -0
- package/dist/web/icons/file_type_mercurial.svg +1 -0
- package/dist/web/icons/file_type_meson.svg +1 -0
- package/dist/web/icons/file_type_meteor.svg +1 -0
- package/dist/web/icons/file_type_mjml.svg +1 -0
- package/dist/web/icons/file_type_mlang.svg +1 -0
- package/dist/web/icons/file_type_mocha.svg +1 -0
- package/dist/web/icons/file_type_modernizr.svg +1 -0
- package/dist/web/icons/file_type_mojolicious.svg +1 -0
- package/dist/web/icons/file_type_moleculer.svg +1 -0
- package/dist/web/icons/file_type_mongo.svg +1 -0
- package/dist/web/icons/file_type_monotone.svg +1 -0
- package/dist/web/icons/file_type_mson.svg +1 -0
- package/dist/web/icons/file_type_mustache.svg +1 -0
- package/dist/web/icons/file_type_mysql.svg +1 -0
- package/dist/web/icons/file_type_nearly.svg +1 -0
- package/dist/web/icons/file_type_nest_adapter_js.svg +1 -0
- package/dist/web/icons/file_type_nest_adapter_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_controller_js.svg +1 -0
- package/dist/web/icons/file_type_nest_controller_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_decorator_js.svg +1 -0
- package/dist/web/icons/file_type_nest_decorator_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_filter_js.svg +1 -0
- package/dist/web/icons/file_type_nest_filter_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_gateway_js.svg +1 -0
- package/dist/web/icons/file_type_nest_gateway_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_guard_js.svg +1 -0
- package/dist/web/icons/file_type_nest_guard_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_interceptor_js.svg +1 -0
- package/dist/web/icons/file_type_nest_interceptor_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_middleware_js.svg +1 -0
- package/dist/web/icons/file_type_nest_middleware_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_module_js.svg +1 -0
- package/dist/web/icons/file_type_nest_module_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_pipe_js.svg +1 -0
- package/dist/web/icons/file_type_nest_pipe_ts.svg +1 -0
- package/dist/web/icons/file_type_nest_service_js.svg +1 -0
- package/dist/web/icons/file_type_nest_service_ts.svg +1 -0
- package/dist/web/icons/file_type_nestjs.svg +1 -0
- package/dist/web/icons/file_type_netlify.svg +1 -0
- package/dist/web/icons/file_type_next.svg +1 -0
- package/dist/web/icons/file_type_ng_component_css.svg +1 -0
- package/dist/web/icons/file_type_ng_component_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_component_html.svg +1 -0
- package/dist/web/icons/file_type_ng_component_js.svg +1 -0
- package/dist/web/icons/file_type_ng_component_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_component_less.svg +1 -0
- package/dist/web/icons/file_type_ng_component_sass.svg +1 -0
- package/dist/web/icons/file_type_ng_component_scss.svg +1 -0
- package/dist/web/icons/file_type_ng_component_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_component_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_controller_js.svg +1 -0
- package/dist/web/icons/file_type_ng_controller_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_directive_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_directive_js.svg +1 -0
- package/dist/web/icons/file_type_ng_directive_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_directive_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_directive_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_guard_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_guard_js.svg +1 -0
- package/dist/web/icons/file_type_ng_guard_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_interceptor_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_interceptor_js.svg +1 -0
- package/dist/web/icons/file_type_ng_interceptor_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_module_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_module_js.svg +1 -0
- package/dist/web/icons/file_type_ng_module_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_module_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_module_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_pipe_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_pipe_js.svg +1 -0
- package/dist/web/icons/file_type_ng_pipe_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_pipe_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_pipe_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_routing_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_routing_js.svg +1 -0
- package/dist/web/icons/file_type_ng_routing_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_routing_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_routing_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_service_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_service_js.svg +1 -0
- package/dist/web/icons/file_type_ng_service_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_service_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_service_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_smart_component_dart.svg +1 -0
- package/dist/web/icons/file_type_ng_smart_component_js.svg +1 -0
- package/dist/web/icons/file_type_ng_smart_component_js2.svg +1 -0
- package/dist/web/icons/file_type_ng_smart_component_ts.svg +1 -0
- package/dist/web/icons/file_type_ng_smart_component_ts2.svg +1 -0
- package/dist/web/icons/file_type_ng_tailwind.svg +1 -0
- package/dist/web/icons/file_type_nginx.svg +1 -0
- package/dist/web/icons/file_type_nim.svg +1 -0
- package/dist/web/icons/file_type_nimble.svg +1 -0
- package/dist/web/icons/file_type_ninja.svg +1 -0
- package/dist/web/icons/file_type_nix.svg +1 -0
- package/dist/web/icons/file_type_njsproj.svg +1 -0
- package/dist/web/icons/file_type_node.svg +1 -0
- package/dist/web/icons/file_type_node2.svg +1 -0
- package/dist/web/icons/file_type_nodemon.svg +1 -0
- package/dist/web/icons/file_type_npm.svg +1 -0
- package/dist/web/icons/file_type_nsi.svg +1 -0
- package/dist/web/icons/file_type_nsri-integrity.svg +1 -0
- package/dist/web/icons/file_type_nsri.svg +1 -0
- package/dist/web/icons/file_type_nuget.svg +1 -0
- package/dist/web/icons/file_type_numpy.svg +1 -0
- package/dist/web/icons/file_type_nunjucks.svg +1 -0
- package/dist/web/icons/file_type_nuxt.svg +1 -0
- package/dist/web/icons/file_type_nyc.svg +1 -0
- package/dist/web/icons/file_type_objectivec.svg +1 -0
- package/dist/web/icons/file_type_objectivecpp.svg +1 -0
- package/dist/web/icons/file_type_ocaml.svg +1 -0
- package/dist/web/icons/file_type_ogone.svg +1 -0
- package/dist/web/icons/file_type_onenote.svg +1 -0
- package/dist/web/icons/file_type_openHAB.svg +1 -0
- package/dist/web/icons/file_type_opencl.svg +1 -0
- package/dist/web/icons/file_type_openscad.svg +1 -0
- package/dist/web/icons/file_type_org.svg +1 -0
- package/dist/web/icons/file_type_outlook.svg +1 -0
- package/dist/web/icons/file_type_ovpn.svg +1 -0
- package/dist/web/icons/file_type_package.svg +1 -0
- package/dist/web/icons/file_type_paket.svg +1 -0
- package/dist/web/icons/file_type_patch.svg +1 -0
- package/dist/web/icons/file_type_pcl.svg +1 -0
- package/dist/web/icons/file_type_pddl.svg +1 -0
- package/dist/web/icons/file_type_pddl_happenings.svg +1 -0
- package/dist/web/icons/file_type_pddl_plan.svg +1 -0
- package/dist/web/icons/file_type_pdf.svg +1 -0
- package/dist/web/icons/file_type_pdf2.svg +1 -0
- package/dist/web/icons/file_type_perl.svg +1 -0
- package/dist/web/icons/file_type_perl2.svg +1 -0
- package/dist/web/icons/file_type_perl6.svg +1 -0
- package/dist/web/icons/file_type_pgsql.svg +1 -0
- package/dist/web/icons/file_type_photoshop.svg +1 -0
- package/dist/web/icons/file_type_photoshop2.svg +1 -0
- package/dist/web/icons/file_type_php.svg +1 -0
- package/dist/web/icons/file_type_php2.svg +1 -0
- package/dist/web/icons/file_type_php3.svg +1 -0
- package/dist/web/icons/file_type_phpcsfixer.svg +1 -0
- package/dist/web/icons/file_type_phpunit.svg +1 -0
- package/dist/web/icons/file_type_phraseapp.svg +1 -0
- package/dist/web/icons/file_type_pine.svg +1 -0
- package/dist/web/icons/file_type_pip.svg +1 -0
- package/dist/web/icons/file_type_pipeline.svg +3 -0
- package/dist/web/icons/file_type_plantuml.svg +1 -0
- package/dist/web/icons/file_type_platformio.svg +1 -0
- package/dist/web/icons/file_type_plsql.svg +1 -0
- package/dist/web/icons/file_type_plsql_package.svg +1 -0
- package/dist/web/icons/file_type_plsql_package_body.svg +1 -0
- package/dist/web/icons/file_type_plsql_package_header.svg +1 -0
- package/dist/web/icons/file_type_plsql_package_spec.svg +1 -0
- package/dist/web/icons/file_type_pnpm.svg +1 -0
- package/dist/web/icons/file_type_poedit.svg +1 -0
- package/dist/web/icons/file_type_polymer.svg +1 -0
- package/dist/web/icons/file_type_pony.svg +1 -0
- package/dist/web/icons/file_type_postcss.svg +1 -0
- package/dist/web/icons/file_type_postcssconfig.svg +1 -0
- package/dist/web/icons/file_type_powerpoint.svg +1 -0
- package/dist/web/icons/file_type_powerpoint2.svg +1 -0
- package/dist/web/icons/file_type_powershell.svg +1 -0
- package/dist/web/icons/file_type_powershell2.svg +1 -0
- package/dist/web/icons/file_type_powershell_format.svg +1 -0
- package/dist/web/icons/file_type_powershell_psd.svg +1 -0
- package/dist/web/icons/file_type_powershell_psd2.svg +1 -0
- package/dist/web/icons/file_type_powershell_psm.svg +1 -0
- package/dist/web/icons/file_type_powershell_psm2.svg +1 -0
- package/dist/web/icons/file_type_powershell_types.svg +1 -0
- package/dist/web/icons/file_type_preact.svg +1 -0
- package/dist/web/icons/file_type_precommit.svg +1 -0
- package/dist/web/icons/file_type_prettier.svg +1 -0
- package/dist/web/icons/file_type_prisma.svg +1 -0
- package/dist/web/icons/file_type_processinglang.svg +1 -0
- package/dist/web/icons/file_type_procfile.svg +1 -0
- package/dist/web/icons/file_type_progress.svg +1 -0
- package/dist/web/icons/file_type_prolog.svg +1 -0
- package/dist/web/icons/file_type_prometheus.svg +1 -0
- package/dist/web/icons/file_type_protobuf.svg +1 -0
- package/dist/web/icons/file_type_protractor.svg +1 -0
- package/dist/web/icons/file_type_publisher.svg +1 -0
- package/dist/web/icons/file_type_pug.svg +1 -0
- package/dist/web/icons/file_type_puppet.svg +1 -0
- package/dist/web/icons/file_type_purescript.svg +1 -0
- package/dist/web/icons/file_type_pyret.svg +1 -0
- package/dist/web/icons/file_type_python.svg +1 -0
- package/dist/web/icons/file_type_pytyped.svg +1 -0
- package/dist/web/icons/file_type_pyup.svg +1 -0
- package/dist/web/icons/file_type_q.svg +1 -0
- package/dist/web/icons/file_type_qbs.svg +1 -0
- package/dist/web/icons/file_type_qlikview.svg +1 -0
- package/dist/web/icons/file_type_qml.svg +1 -0
- package/dist/web/icons/file_type_qmldir.svg +1 -0
- package/dist/web/icons/file_type_qsharp.svg +1 -0
- package/dist/web/icons/file_type_quasar.svg +1 -0
- package/dist/web/icons/file_type_r.svg +1 -0
- package/dist/web/icons/file_type_racket.svg +1 -0
- package/dist/web/icons/file_type_rails.svg +1 -0
- package/dist/web/icons/file_type_rake.svg +1 -0
- package/dist/web/icons/file_type_raml.svg +1 -0
- package/dist/web/icons/file_type_razor.svg +1 -0
- package/dist/web/icons/file_type_razzle.svg +1 -0
- package/dist/web/icons/file_type_reactjs.svg +1 -0
- package/dist/web/icons/file_type_reacttemplate.svg +1 -0
- package/dist/web/icons/file_type_reactts.svg +1 -0
- package/dist/web/icons/file_type_reason.svg +1 -0
- package/dist/web/icons/file_type_red.svg +1 -0
- package/dist/web/icons/file_type_registry.svg +1 -0
- package/dist/web/icons/file_type_rego.svg +1 -0
- package/dist/web/icons/file_type_rehype.svg +1 -0
- package/dist/web/icons/file_type_remark.svg +1 -0
- package/dist/web/icons/file_type_renovate.svg +1 -0
- package/dist/web/icons/file_type_rescript.svg +1 -0
- package/dist/web/icons/file_type_rest.svg +1 -0
- package/dist/web/icons/file_type_retext.svg +1 -0
- package/dist/web/icons/file_type_rexx.svg +1 -0
- package/dist/web/icons/file_type_riot.svg +1 -0
- package/dist/web/icons/file_type_rmd.svg +1 -0
- package/dist/web/icons/file_type_robotframework.svg +1 -0
- package/dist/web/icons/file_type_robots.svg +1 -0
- package/dist/web/icons/file_type_rollup.svg +1 -0
- package/dist/web/icons/file_type_rproj.svg +1 -0
- package/dist/web/icons/file_type_rspec.svg +1 -0
- package/dist/web/icons/file_type_rubocop.svg +1 -0
- package/dist/web/icons/file_type_ruby.svg +1 -0
- package/dist/web/icons/file_type_rust.svg +1 -0
- package/dist/web/icons/file_type_rust_toolchain.svg +1 -0
- package/dist/web/icons/file_type_sails.svg +1 -0
- package/dist/web/icons/file_type_saltstack.svg +1 -0
- package/dist/web/icons/file_type_san.svg +1 -0
- package/dist/web/icons/file_type_sas.svg +1 -0
- package/dist/web/icons/file_type_sass.svg +1 -0
- package/dist/web/icons/file_type_sbt.svg +1 -0
- package/dist/web/icons/file_type_scala.svg +1 -0
- package/dist/web/icons/file_type_scilab.svg +1 -0
- package/dist/web/icons/file_type_script.svg +1 -0
- package/dist/web/icons/file_type_scss.svg +1 -0
- package/dist/web/icons/file_type_scss2.svg +1 -0
- package/dist/web/icons/file_type_sdlang.svg +1 -0
- package/dist/web/icons/file_type_sentry.svg +1 -0
- package/dist/web/icons/file_type_sequelize.svg +1 -0
- package/dist/web/icons/file_type_serverless.svg +1 -0
- package/dist/web/icons/file_type_shaderlab.svg +1 -0
- package/dist/web/icons/file_type_shell.svg +1 -0
- package/dist/web/icons/file_type_silverstripe.svg +1 -0
- package/dist/web/icons/file_type_sketch.svg +1 -0
- package/dist/web/icons/file_type_skipper.svg +1 -0
- package/dist/web/icons/file_type_slang.svg +1 -0
- package/dist/web/icons/file_type_slice.svg +1 -0
- package/dist/web/icons/file_type_slim.svg +1 -0
- package/dist/web/icons/file_type_sln.svg +1 -0
- package/dist/web/icons/file_type_sln2.svg +1 -0
- package/dist/web/icons/file_type_smarty.svg +1 -0
- package/dist/web/icons/file_type_snapcraft.svg +1 -0
- package/dist/web/icons/file_type_snort.svg +1 -0
- package/dist/web/icons/file_type_snyk.svg +1 -0
- package/dist/web/icons/file_type_solidarity.svg +1 -0
- package/dist/web/icons/file_type_solidity.svg +1 -0
- package/dist/web/icons/file_type_source.svg +1 -0
- package/dist/web/icons/file_type_spacengine.svg +1 -0
- package/dist/web/icons/file_type_sparql.svg +1 -0
- package/dist/web/icons/file_type_sqf.svg +1 -0
- package/dist/web/icons/file_type_sql.svg +1 -0
- package/dist/web/icons/file_type_sqlite.svg +1 -0
- package/dist/web/icons/file_type_squirrel.svg +1 -0
- package/dist/web/icons/file_type_sss.svg +1 -0
- package/dist/web/icons/file_type_stan.svg +1 -0
- package/dist/web/icons/file_type_stata.svg +1 -0
- package/dist/web/icons/file_type_stencil.svg +1 -0
- package/dist/web/icons/file_type_storyboard.svg +1 -0
- package/dist/web/icons/file_type_storybook.svg +1 -0
- package/dist/web/icons/file_type_stylable.svg +1 -0
- package/dist/web/icons/file_type_style.svg +1 -0
- package/dist/web/icons/file_type_styled.svg +1 -0
- package/dist/web/icons/file_type_stylelint.svg +1 -0
- package/dist/web/icons/file_type_stylish_haskell.svg +1 -0
- package/dist/web/icons/file_type_stylus.svg +1 -0
- package/dist/web/icons/file_type_subversion.svg +1 -0
- package/dist/web/icons/file_type_svelte.svg +1 -0
- package/dist/web/icons/file_type_svg.svg +1 -0
- package/dist/web/icons/file_type_swagger.svg +1 -0
- package/dist/web/icons/file_type_swift.svg +1 -0
- package/dist/web/icons/file_type_swig.svg +1 -0
- package/dist/web/icons/file_type_symfony.svg +1 -0
- package/dist/web/icons/file_type_systemd.svg +1 -0
- package/dist/web/icons/file_type_systemverilog.svg +1 -0
- package/dist/web/icons/file_type_t4tt.svg +1 -0
- package/dist/web/icons/file_type_tailwind.svg +1 -0
- package/dist/web/icons/file_type_tcl.svg +1 -0
- package/dist/web/icons/file_type_teal.svg +1 -0
- package/dist/web/icons/file_type_tera.svg +1 -0
- package/dist/web/icons/file_type_terraform.svg +1 -0
- package/dist/web/icons/file_type_test.svg +1 -0
- package/dist/web/icons/file_type_testcafe.svg +1 -0
- package/dist/web/icons/file_type_testjs.svg +1 -0
- package/dist/web/icons/file_type_testts.svg +1 -0
- package/dist/web/icons/file_type_tex.svg +1 -0
- package/dist/web/icons/file_type_text.svg +1 -0
- package/dist/web/icons/file_type_textile.svg +1 -0
- package/dist/web/icons/file_type_tfs.svg +1 -0
- package/dist/web/icons/file_type_tiltfile.svg +1 -0
- package/dist/web/icons/file_type_todo.svg +1 -0
- package/dist/web/icons/file_type_toml.svg +1 -0
- package/dist/web/icons/file_type_tox.svg +1 -0
- package/dist/web/icons/file_type_travis.svg +1 -0
- package/dist/web/icons/file_type_tsconfig.svg +1 -0
- package/dist/web/icons/file_type_tsconfig_official.svg +1 -0
- package/dist/web/icons/file_type_tslint.svg +1 -0
- package/dist/web/icons/file_type_tt.svg +1 -0
- package/dist/web/icons/file_type_ttcn.svg +1 -0
- package/dist/web/icons/file_type_tuc.svg +1 -0
- package/dist/web/icons/file_type_twig.svg +1 -0
- package/dist/web/icons/file_type_typedoc.svg +1 -0
- package/dist/web/icons/file_type_typescript.svg +1 -0
- package/dist/web/icons/file_type_typescript_official.svg +1 -0
- package/dist/web/icons/file_type_typescriptdef.svg +1 -0
- package/dist/web/icons/file_type_typescriptdef_official.svg +1 -0
- package/dist/web/icons/file_type_typo3.svg +1 -0
- package/dist/web/icons/file_type_unibeautify.svg +1 -0
- package/dist/web/icons/file_type_unlicense.svg +1 -0
- package/dist/web/icons/file_type_vagrant.svg +1 -0
- package/dist/web/icons/file_type_vala.svg +1 -0
- package/dist/web/icons/file_type_vapi.svg +1 -0
- package/dist/web/icons/file_type_vapor.svg +1 -0
- package/dist/web/icons/file_type_vash.svg +1 -0
- package/dist/web/icons/file_type_vb.svg +1 -0
- package/dist/web/icons/file_type_vba.svg +1 -0
- package/dist/web/icons/file_type_vbhtml.svg +1 -0
- package/dist/web/icons/file_type_vbproj.svg +1 -0
- package/dist/web/icons/file_type_vcxproj.svg +1 -0
- package/dist/web/icons/file_type_velocity.svg +1 -0
- package/dist/web/icons/file_type_verilog.svg +1 -0
- package/dist/web/icons/file_type_vhdl.svg +1 -0
- package/dist/web/icons/file_type_video.svg +1 -0
- package/dist/web/icons/file_type_view.svg +1 -0
- package/dist/web/icons/file_type_vim.svg +1 -0
- package/dist/web/icons/file_type_vite.svg +1 -0
- package/dist/web/icons/file_type_vlang.svg +1 -0
- package/dist/web/icons/file_type_volt.svg +1 -0
- package/dist/web/icons/file_type_vscode-insiders.svg +1 -0
- package/dist/web/icons/file_type_vscode.svg +1 -0
- package/dist/web/icons/file_type_vscode2.svg +1 -0
- package/dist/web/icons/file_type_vscode3.svg +1 -0
- package/dist/web/icons/file_type_vsix.svg +1 -0
- package/dist/web/icons/file_type_vsixmanifest.svg +1 -0
- package/dist/web/icons/file_type_vue.svg +1 -0
- package/dist/web/icons/file_type_vueconfig.svg +1 -0
- package/dist/web/icons/file_type_wallaby.svg +1 -0
- package/dist/web/icons/file_type_wasm.svg +1 -0
- package/dist/web/icons/file_type_watchmanconfig.svg +1 -0
- package/dist/web/icons/file_type_webp.svg +1 -0
- package/dist/web/icons/file_type_webpack.svg +1 -0
- package/dist/web/icons/file_type_wenyan.svg +1 -0
- package/dist/web/icons/file_type_wercker.svg +1 -0
- package/dist/web/icons/file_type_wolfram.svg +1 -0
- package/dist/web/icons/file_type_word.svg +1 -0
- package/dist/web/icons/file_type_word2.svg +1 -0
- package/dist/web/icons/file_type_wpml.svg +1 -0
- package/dist/web/icons/file_type_wurst.svg +1 -0
- package/dist/web/icons/file_type_wxml.svg +1 -0
- package/dist/web/icons/file_type_wxss.svg +1 -0
- package/dist/web/icons/file_type_xcode.svg +1 -0
- package/dist/web/icons/file_type_xfl.svg +1 -0
- package/dist/web/icons/file_type_xib.svg +1 -0
- package/dist/web/icons/file_type_xliff.svg +1 -0
- package/dist/web/icons/file_type_xmake.svg +1 -0
- package/dist/web/icons/file_type_xml.svg +1 -0
- package/dist/web/icons/file_type_xquery.svg +1 -0
- package/dist/web/icons/file_type_xsl.svg +1 -0
- package/dist/web/icons/file_type_yacc.svg +1 -0
- package/dist/web/icons/file_type_yaml.svg +1 -0
- package/dist/web/icons/file_type_yamllint.svg +1 -0
- package/dist/web/icons/file_type_yandex.svg +1 -0
- package/dist/web/icons/file_type_yang.svg +1 -0
- package/dist/web/icons/file_type_yarn.svg +1 -0
- package/dist/web/icons/file_type_yeoman.svg +1 -0
- package/dist/web/icons/file_type_zeit.svg +1 -0
- package/dist/web/icons/file_type_zig.svg +1 -0
- package/dist/web/icons/file_type_zip.svg +1 -0
- package/dist/web/icons/file_type_zip2.svg +1 -0
- package/dist/web/icons/folder_type_android.svg +1 -0
- package/dist/web/icons/folder_type_android_opened.svg +1 -0
- package/dist/web/icons/folder_type_api.svg +1 -0
- package/dist/web/icons/folder_type_api_opened.svg +1 -0
- package/dist/web/icons/folder_type_app.svg +1 -0
- package/dist/web/icons/folder_type_app_opened.svg +1 -0
- package/dist/web/icons/folder_type_arangodb.svg +1 -0
- package/dist/web/icons/folder_type_arangodb_opened.svg +1 -0
- package/dist/web/icons/folder_type_asset.svg +1 -0
- package/dist/web/icons/folder_type_asset_opened.svg +1 -0
- package/dist/web/icons/folder_type_audio.svg +1 -0
- package/dist/web/icons/folder_type_audio_opened.svg +1 -0
- package/dist/web/icons/folder_type_aurelia.svg +1 -0
- package/dist/web/icons/folder_type_aurelia_opened.svg +1 -0
- package/dist/web/icons/folder_type_aws.svg +1 -0
- package/dist/web/icons/folder_type_aws_opened.svg +1 -0
- package/dist/web/icons/folder_type_azure.svg +1 -0
- package/dist/web/icons/folder_type_azure_opened.svg +1 -0
- package/dist/web/icons/folder_type_azurepipelines.svg +1 -0
- package/dist/web/icons/folder_type_azurepipelines_opened.svg +1 -0
- package/dist/web/icons/folder_type_binary.svg +1 -0
- package/dist/web/icons/folder_type_binary_opened.svg +1 -0
- package/dist/web/icons/folder_type_bloc.svg +1 -0
- package/dist/web/icons/folder_type_bloc_opened.svg +1 -0
- package/dist/web/icons/folder_type_blueprint.svg +1 -0
- package/dist/web/icons/folder_type_blueprint_opened.svg +1 -0
- package/dist/web/icons/folder_type_bower.svg +1 -0
- package/dist/web/icons/folder_type_bower_opened.svg +1 -0
- package/dist/web/icons/folder_type_buildkite.svg +1 -0
- package/dist/web/icons/folder_type_buildkite_opened.svg +1 -0
- package/dist/web/icons/folder_type_cake.svg +1 -0
- package/dist/web/icons/folder_type_cake_opened.svg +1 -0
- package/dist/web/icons/folder_type_certificate.svg +1 -0
- package/dist/web/icons/folder_type_certificate_opened.svg +1 -0
- package/dist/web/icons/folder_type_chef.svg +1 -0
- package/dist/web/icons/folder_type_chef_opened.svg +1 -0
- package/dist/web/icons/folder_type_circleci.svg +1 -0
- package/dist/web/icons/folder_type_circleci_opened.svg +1 -0
- package/dist/web/icons/folder_type_cli.svg +1 -0
- package/dist/web/icons/folder_type_cli_opened.svg +1 -0
- package/dist/web/icons/folder_type_client.svg +1 -0
- package/dist/web/icons/folder_type_client_opened.svg +1 -0
- package/dist/web/icons/folder_type_cmake.svg +1 -0
- package/dist/web/icons/folder_type_cmake_opened.svg +1 -0
- package/dist/web/icons/folder_type_component.svg +1 -0
- package/dist/web/icons/folder_type_component_opened.svg +1 -0
- package/dist/web/icons/folder_type_composer.svg +1 -0
- package/dist/web/icons/folder_type_composer_opened.svg +1 -0
- package/dist/web/icons/folder_type_config.svg +1 -0
- package/dist/web/icons/folder_type_config_opened.svg +1 -0
- package/dist/web/icons/folder_type_controller.svg +1 -0
- package/dist/web/icons/folder_type_controller_opened.svg +1 -0
- package/dist/web/icons/folder_type_coverage.svg +1 -0
- package/dist/web/icons/folder_type_coverage_opened.svg +1 -0
- package/dist/web/icons/folder_type_css.svg +1 -0
- package/dist/web/icons/folder_type_css_opened.svg +1 -0
- package/dist/web/icons/folder_type_cubit.svg +1 -0
- package/dist/web/icons/folder_type_cubit_opened.svg +1 -0
- package/dist/web/icons/folder_type_cypress.svg +1 -0
- package/dist/web/icons/folder_type_cypress_opened.svg +1 -0
- package/dist/web/icons/folder_type_dapr.svg +1 -0
- package/dist/web/icons/folder_type_dapr_opened.svg +1 -0
- package/dist/web/icons/folder_type_db.svg +1 -0
- package/dist/web/icons/folder_type_db_opened.svg +1 -0
- package/dist/web/icons/folder_type_debian.svg +1 -0
- package/dist/web/icons/folder_type_debian_opened.svg +1 -0
- package/dist/web/icons/folder_type_dependabot.svg +1 -0
- package/dist/web/icons/folder_type_dependabot_opened.svg +1 -0
- package/dist/web/icons/folder_type_devcontainer.svg +1 -0
- package/dist/web/icons/folder_type_devcontainer_opened.svg +1 -0
- package/dist/web/icons/folder_type_dist.svg +1 -0
- package/dist/web/icons/folder_type_dist_opened.svg +1 -0
- package/dist/web/icons/folder_type_docker.svg +1 -0
- package/dist/web/icons/folder_type_docker_opened.svg +1 -0
- package/dist/web/icons/folder_type_docs.svg +1 -0
- package/dist/web/icons/folder_type_docs_opened.svg +1 -0
- package/dist/web/icons/folder_type_e2e.svg +1 -0
- package/dist/web/icons/folder_type_e2e_opened.svg +1 -0
- package/dist/web/icons/folder_type_elasticbeanstalk.svg +1 -0
- package/dist/web/icons/folder_type_elasticbeanstalk_opened.svg +1 -0
- package/dist/web/icons/folder_type_electron.svg +1 -0
- package/dist/web/icons/folder_type_electron_opened.svg +1 -0
- package/dist/web/icons/folder_type_expo.svg +1 -0
- package/dist/web/icons/folder_type_expo_opened.svg +1 -0
- package/dist/web/icons/folder_type_favicon.svg +1 -0
- package/dist/web/icons/folder_type_favicon_opened.svg +1 -0
- package/dist/web/icons/folder_type_flow.svg +1 -0
- package/dist/web/icons/folder_type_flow_opened.svg +1 -0
- package/dist/web/icons/folder_type_fonts.svg +1 -0
- package/dist/web/icons/folder_type_fonts_opened.svg +1 -0
- package/dist/web/icons/folder_type_gcp.svg +1 -0
- package/dist/web/icons/folder_type_gcp_opened.svg +1 -0
- package/dist/web/icons/folder_type_git.svg +1 -0
- package/dist/web/icons/folder_type_git_opened.svg +1 -0
- package/dist/web/icons/folder_type_github.svg +1 -0
- package/dist/web/icons/folder_type_github_opened.svg +1 -0
- package/dist/web/icons/folder_type_gitlab.svg +1 -0
- package/dist/web/icons/folder_type_gitlab_opened.svg +1 -0
- package/dist/web/icons/folder_type_gradle.svg +1 -0
- package/dist/web/icons/folder_type_gradle_opened.svg +1 -0
- package/dist/web/icons/folder_type_graphql.svg +1 -0
- package/dist/web/icons/folder_type_graphql_opened.svg +1 -0
- package/dist/web/icons/folder_type_grunt.svg +1 -0
- package/dist/web/icons/folder_type_grunt_opened.svg +1 -0
- package/dist/web/icons/folder_type_gulp.svg +1 -0
- package/dist/web/icons/folder_type_gulp_opened.svg +1 -0
- package/dist/web/icons/folder_type_haxelib.svg +1 -0
- package/dist/web/icons/folder_type_haxelib_opened.svg +1 -0
- package/dist/web/icons/folder_type_helper.svg +1 -0
- package/dist/web/icons/folder_type_helper_opened.svg +1 -0
- package/dist/web/icons/folder_type_hook.svg +1 -0
- package/dist/web/icons/folder_type_hook_opened.svg +1 -0
- package/dist/web/icons/folder_type_husky.svg +1 -0
- package/dist/web/icons/folder_type_husky_opened.svg +1 -0
- package/dist/web/icons/folder_type_idea.svg +1 -0
- package/dist/web/icons/folder_type_idea_opened.svg +1 -0
- package/dist/web/icons/folder_type_images.svg +1 -0
- package/dist/web/icons/folder_type_images_opened.svg +1 -0
- package/dist/web/icons/folder_type_include.svg +1 -0
- package/dist/web/icons/folder_type_include_opened.svg +1 -0
- package/dist/web/icons/folder_type_interfaces.svg +1 -0
- package/dist/web/icons/folder_type_interfaces_opened.svg +1 -0
- package/dist/web/icons/folder_type_ios.svg +1 -0
- package/dist/web/icons/folder_type_ios_opened.svg +1 -0
- package/dist/web/icons/folder_type_js.svg +1 -0
- package/dist/web/icons/folder_type_js_opened.svg +1 -0
- package/dist/web/icons/folder_type_json.svg +1 -0
- package/dist/web/icons/folder_type_json_official.svg +1 -0
- package/dist/web/icons/folder_type_json_official_opened.svg +1 -0
- package/dist/web/icons/folder_type_json_opened.svg +1 -0
- package/dist/web/icons/folder_type_kubernetes.svg +1 -0
- package/dist/web/icons/folder_type_kubernetes_opened.svg +1 -0
- package/dist/web/icons/folder_type_less.svg +1 -0
- package/dist/web/icons/folder_type_less_opened.svg +1 -0
- package/dist/web/icons/folder_type_library.svg +1 -0
- package/dist/web/icons/folder_type_library_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_electron.svg +1 -0
- package/dist/web/icons/folder_type_light_electron_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_expo.svg +1 -0
- package/dist/web/icons/folder_type_light_expo_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_fonts.svg +1 -0
- package/dist/web/icons/folder_type_light_fonts_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_gradle.svg +1 -0
- package/dist/web/icons/folder_type_light_gradle_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_meteor.svg +1 -0
- package/dist/web/icons/folder_type_light_meteor_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_mysql.svg +1 -0
- package/dist/web/icons/folder_type_light_mysql_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_node.svg +1 -0
- package/dist/web/icons/folder_type_light_node_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_redux.svg +1 -0
- package/dist/web/icons/folder_type_light_redux_opened.svg +1 -0
- package/dist/web/icons/folder_type_light_sass.svg +1 -0
- package/dist/web/icons/folder_type_light_sass_opened.svg +1 -0
- package/dist/web/icons/folder_type_linux.svg +1 -0
- package/dist/web/icons/folder_type_linux_opened.svg +1 -0
- package/dist/web/icons/folder_type_locale.svg +1 -0
- package/dist/web/icons/folder_type_locale_opened.svg +1 -0
- package/dist/web/icons/folder_type_log.svg +1 -0
- package/dist/web/icons/folder_type_log_opened.svg +1 -0
- package/dist/web/icons/folder_type_macos.svg +1 -0
- package/dist/web/icons/folder_type_macos_opened.svg +1 -0
- package/dist/web/icons/folder_type_mariadb.svg +1 -0
- package/dist/web/icons/folder_type_mariadb_opened.svg +1 -0
- package/dist/web/icons/folder_type_maven.svg +1 -0
- package/dist/web/icons/folder_type_maven_opened.svg +1 -0
- package/dist/web/icons/folder_type_memcached.svg +1 -0
- package/dist/web/icons/folder_type_memcached_opened.svg +1 -0
- package/dist/web/icons/folder_type_meteor.svg +1 -0
- package/dist/web/icons/folder_type_meteor_opened.svg +1 -0
- package/dist/web/icons/folder_type_middleware.svg +1 -0
- package/dist/web/icons/folder_type_middleware_opened.svg +1 -0
- package/dist/web/icons/folder_type_minikube.svg +1 -0
- package/dist/web/icons/folder_type_minikube_opened.svg +1 -0
- package/dist/web/icons/folder_type_mjml.svg +1 -0
- package/dist/web/icons/folder_type_mjml_opened.svg +1 -0
- package/dist/web/icons/folder_type_mock.svg +1 -0
- package/dist/web/icons/folder_type_mock_opened.svg +1 -0
- package/dist/web/icons/folder_type_model.svg +1 -0
- package/dist/web/icons/folder_type_model_opened.svg +1 -0
- package/dist/web/icons/folder_type_module.svg +1 -0
- package/dist/web/icons/folder_type_module_opened.svg +1 -0
- package/dist/web/icons/folder_type_mongodb.svg +1 -0
- package/dist/web/icons/folder_type_mongodb_opened.svg +1 -0
- package/dist/web/icons/folder_type_mysql.svg +1 -0
- package/dist/web/icons/folder_type_mysql_opened.svg +1 -0
- package/dist/web/icons/folder_type_next.svg +1 -0
- package/dist/web/icons/folder_type_next_opened.svg +1 -0
- package/dist/web/icons/folder_type_nginx.svg +1 -0
- package/dist/web/icons/folder_type_nginx_opened.svg +1 -0
- package/dist/web/icons/folder_type_node.svg +1 -0
- package/dist/web/icons/folder_type_node_opened.svg +1 -0
- package/dist/web/icons/folder_type_notification.svg +1 -0
- package/dist/web/icons/folder_type_notification_opened.svg +1 -0
- package/dist/web/icons/folder_type_nuget.svg +1 -0
- package/dist/web/icons/folder_type_nuget_opened.svg +1 -0
- package/dist/web/icons/folder_type_nuxt.svg +1 -0
- package/dist/web/icons/folder_type_nuxt_opened.svg +1 -0
- package/dist/web/icons/folder_type_package.svg +1 -0
- package/dist/web/icons/folder_type_package_opened.svg +1 -0
- package/dist/web/icons/folder_type_paket.svg +1 -0
- package/dist/web/icons/folder_type_paket_opened.svg +1 -0
- package/dist/web/icons/folder_type_php.svg +1 -0
- package/dist/web/icons/folder_type_php_opened.svg +1 -0
- package/dist/web/icons/folder_type_platformio.svg +1 -0
- package/dist/web/icons/folder_type_platformio_opened.svg +1 -0
- package/dist/web/icons/folder_type_plugin.svg +1 -0
- package/dist/web/icons/folder_type_plugin_opened.svg +1 -0
- package/dist/web/icons/folder_type_private.svg +1 -0
- package/dist/web/icons/folder_type_private_opened.svg +1 -0
- package/dist/web/icons/folder_type_public.svg +1 -0
- package/dist/web/icons/folder_type_public_opened.svg +1 -0
- package/dist/web/icons/folder_type_python.svg +1 -0
- package/dist/web/icons/folder_type_python_opened.svg +1 -0
- package/dist/web/icons/folder_type_ravendb.svg +1 -0
- package/dist/web/icons/folder_type_ravendb_opened.svg +1 -0
- package/dist/web/icons/folder_type_redis.svg +1 -0
- package/dist/web/icons/folder_type_redis_opened.svg +1 -0
- package/dist/web/icons/folder_type_redux.svg +1 -0
- package/dist/web/icons/folder_type_redux_opened.svg +1 -0
- package/dist/web/icons/folder_type_route.svg +1 -0
- package/dist/web/icons/folder_type_route_opened.svg +1 -0
- package/dist/web/icons/folder_type_sass.svg +1 -0
- package/dist/web/icons/folder_type_sass_opened.svg +1 -0
- package/dist/web/icons/folder_type_script.svg +1 -0
- package/dist/web/icons/folder_type_script_opened.svg +1 -0
- package/dist/web/icons/folder_type_server.svg +1 -0
- package/dist/web/icons/folder_type_server_opened.svg +1 -0
- package/dist/web/icons/folder_type_services.svg +1 -0
- package/dist/web/icons/folder_type_services_opened.svg +1 -0
- package/dist/web/icons/folder_type_src.svg +1 -0
- package/dist/web/icons/folder_type_src_opened.svg +1 -0
- package/dist/web/icons/folder_type_sso.svg +1 -0
- package/dist/web/icons/folder_type_sso_opened.svg +1 -0
- package/dist/web/icons/folder_type_story.svg +1 -0
- package/dist/web/icons/folder_type_story_opened.svg +1 -0
- package/dist/web/icons/folder_type_style.svg +1 -0
- package/dist/web/icons/folder_type_style_opened.svg +1 -0
- package/dist/web/icons/folder_type_temp.svg +1 -0
- package/dist/web/icons/folder_type_temp_opened.svg +1 -0
- package/dist/web/icons/folder_type_template.svg +1 -0
- package/dist/web/icons/folder_type_template_opened.svg +1 -0
- package/dist/web/icons/folder_type_test.svg +1 -0
- package/dist/web/icons/folder_type_test_opened.svg +1 -0
- package/dist/web/icons/folder_type_theme.svg +1 -0
- package/dist/web/icons/folder_type_theme_opened.svg +1 -0
- package/dist/web/icons/folder_type_tools.svg +1 -0
- package/dist/web/icons/folder_type_tools_opened.svg +1 -0
- package/dist/web/icons/folder_type_travis.svg +1 -0
- package/dist/web/icons/folder_type_travis_opened.svg +1 -0
- package/dist/web/icons/folder_type_typescript.svg +1 -0
- package/dist/web/icons/folder_type_typescript_opened.svg +1 -0
- package/dist/web/icons/folder_type_typings.svg +1 -0
- package/dist/web/icons/folder_type_typings2.svg +1 -0
- package/dist/web/icons/folder_type_typings2_opened.svg +1 -0
- package/dist/web/icons/folder_type_typings_opened.svg +1 -0
- package/dist/web/icons/folder_type_vagrant.svg +1 -0
- package/dist/web/icons/folder_type_vagrant_opened.svg +1 -0
- package/dist/web/icons/folder_type_video.svg +1 -0
- package/dist/web/icons/folder_type_video_opened.svg +1 -0
- package/dist/web/icons/folder_type_view.svg +1 -0
- package/dist/web/icons/folder_type_view_opened.svg +1 -0
- package/dist/web/icons/folder_type_vs.svg +1 -0
- package/dist/web/icons/folder_type_vs2.svg +1 -0
- package/dist/web/icons/folder_type_vs2_opened.svg +1 -0
- package/dist/web/icons/folder_type_vs_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode.svg +1 -0
- package/dist/web/icons/folder_type_vscode2.svg +1 -0
- package/dist/web/icons/folder_type_vscode2_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode3.svg +1 -0
- package/dist/web/icons/folder_type_vscode3_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test2.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test2_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test3.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test3_opened.svg +1 -0
- package/dist/web/icons/folder_type_vscode_test_opened.svg +1 -0
- package/dist/web/icons/folder_type_webpack.svg +1 -0
- package/dist/web/icons/folder_type_webpack_opened.svg +1 -0
- package/dist/web/icons/folder_type_windows.svg +1 -0
- package/dist/web/icons/folder_type_windows_opened.svg +1 -0
- package/dist/web/icons/folder_type_www.svg +1 -0
- package/dist/web/icons/folder_type_www_opened.svg +1 -0
- package/dist/web/index.html +1 -0
- package/dist/web/index.txt +28 -0
- package/dist/web/login/__next._full.txt +30 -0
- package/dist/web/login/__next._head.txt +6 -0
- package/dist/web/login/__next._index.txt +10 -0
- package/dist/web/login/__next._tree.txt +8 -0
- package/dist/web/login/__next.login.__PAGE__.txt +9 -0
- package/dist/web/login/__next.login.txt +5 -0
- package/dist/web/login.html +1 -0
- package/dist/web/login.txt +30 -0
- package/dist/web/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
- package/dist/web/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/web/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/web/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
- package/dist/web/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/dist/web/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
- package/dist/web/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/dist/web/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
- package/dist/web/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/web/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/web/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/web/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/web/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/web/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/web/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/web/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/web/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/web/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/web/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/web/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
- package/dist/web/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/web/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/web/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/web/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/web/monaco/vs/editor/editor.main.css +1 -0
- package/dist/web/monaco/vs/editor/editor.main.js +5 -0
- package/dist/web/monaco/vs/editor.api-CalNCsUg.js +903 -0
- package/dist/web/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/web/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/web/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
- package/dist/web/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/web/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/web/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/web/monaco/vs/handlebars-OwglfO-1.js +1 -0
- package/dist/web/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/web/monaco/vs/html-Pa1xEWsY.js +1 -0
- package/dist/web/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
- package/dist/web/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/web/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/web/monaco/vs/javascript-PczUCGdz.js +1 -0
- package/dist/web/monaco/vs/jsonMode-DULH5oaX.js +7 -0
- package/dist/web/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/web/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/web/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/web/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/web/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/web/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/web/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/web/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/web/monaco/vs/liquid-DqKjdPGy.js +1 -0
- package/dist/web/monaco/vs/loader.js +1368 -0
- package/dist/web/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/dist/web/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/web/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/web/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/web/monaco/vs/mdx-DEWtB1K5.js +1 -0
- package/dist/web/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/web/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/dist/web/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/dist/web/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/dist/web/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/dist/web/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/web/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/web/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/web/monaco/vs/nls.messages.cs.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.de.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.es.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.fr.js.js +15 -0
- package/dist/web/monaco/vs/nls.messages.it.js.js +15 -0
- package/dist/web/monaco/vs/nls.messages.ja.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.js.js +10 -0
- package/dist/web/monaco/vs/nls.messages.ko.js.js +25 -0
- package/dist/web/monaco/vs/nls.messages.pl.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.pt-br.js.js +6 -0
- package/dist/web/monaco/vs/nls.messages.ru.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.tr.js.js +15 -0
- package/dist/web/monaco/vs/nls.messages.zh-cn.js.js +17 -0
- package/dist/web/monaco/vs/nls.messages.zh-tw.js.js +15 -0
- package/dist/web/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/web/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/web/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/web/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/web/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/web/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/web/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/web/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/web/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/web/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/web/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/web/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/web/monaco/vs/python-Cr0UkIbn.js +1 -0
- package/dist/web/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/web/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/web/monaco/vs/razor-BYAHOTkz.js +1 -0
- package/dist/web/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/web/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/web/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/web/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/web/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/web/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/web/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/web/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/web/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/web/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/web/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/web/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/web/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/web/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/web/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/web/monaco/vs/swift-n-2HociN.js +3 -0
- package/dist/web/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/web/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/web/monaco/vs/tsMode-CZz1Umrk.js +11 -0
- package/dist/web/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/web/monaco/vs/typescript-DfOrAzoV.js +1 -0
- package/dist/web/monaco/vs/typespec-D-PIh9Xw.js +1 -0
- package/dist/web/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/web/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/web/monaco/vs/workers-DcJshg-q.js +1 -0
- package/dist/web/monaco/vs/xml-CdsdnY8S.js +1 -0
- package/dist/web/monaco/vs/yaml-DYGvmE88.js +1 -0
- package/dist/web/next.svg +1 -0
- package/dist/web/vercel.svg +1 -0
- package/dist/web/window.svg +1 -0
- package/dist/web/workspace/_/__next._full.txt +28 -0
- package/dist/web/workspace/_/__next._head.txt +6 -0
- package/dist/web/workspace/_/__next._index.txt +10 -0
- package/dist/web/workspace/_/__next._tree.txt +9 -0
- package/dist/web/workspace/_/__next.workspace.$d$id.__PAGE__.txt +7 -0
- package/dist/web/workspace/_/__next.workspace.$d$id.txt +5 -0
- package/dist/web/workspace/_/__next.workspace.txt +5 -0
- package/dist/web/workspace/_.html +1 -0
- package/dist/web/workspace/_.txt +28 -0
- package/dist/web/workspaces/__next._full.txt +30 -0
- package/dist/web/workspaces/__next._head.txt +6 -0
- package/dist/web/workspaces/__next._index.txt +10 -0
- package/dist/web/workspaces/__next._tree.txt +8 -0
- package/dist/web/workspaces/__next.workspaces.__PAGE__.txt +9 -0
- package/dist/web/workspaces/__next.workspaces.txt +5 -0
- package/dist/web/workspaces.html +1 -0
- package/dist/web/workspaces.txt +30 -0
- package/dist/ws/connection-manager.js +34 -0
- package/dist/ws/handler.js +1285 -0
- package/dist/ws/terminal-handler.js +33 -0
- package/package.json +47 -0
- package/public/avatars/1777813826407-bea0ja-minimax.svg +1 -0
- package/public/avatars/1777813967088-3xlvd0-minimax.svg +1 -0
- package/public/avatars/1777814041714-yp0qeq-minimax.svg +1 -0
- package/public/avatars/1777815865622-08wp9m-user.jpg +0 -0
- package/public/avatars/1777904986095-rg26je-icon.png +0 -0
- package/public/provider-icons/aicodemirror.svg +19 -0
- package/public/provider-icons/aicoding.svg +20 -0
- package/public/provider-icons/aihubmix-color.svg +1 -0
- package/public/provider-icons/algocode.svg +51 -0
- package/public/provider-icons/alibaba.svg +1 -0
- package/public/provider-icons/anthropic.svg +1 -0
- package/public/provider-icons/aws.svg +1 -0
- package/public/provider-icons/azure.svg +1 -0
- package/public/provider-icons/baidu.svg +1 -0
- package/public/provider-icons/bailian.svg +1 -0
- package/public/provider-icons/bytedance.svg +1 -0
- package/public/provider-icons/catcoder.svg +1 -0
- package/public/provider-icons/chatglm.svg +1 -0
- package/public/provider-icons/claude.svg +1 -0
- package/public/provider-icons/claw.svg +22 -0
- package/public/provider-icons/cloudflare.svg +1 -0
- package/public/provider-icons/cohere.svg +1 -0
- package/public/provider-icons/copilot.svg +1 -0
- package/public/provider-icons/crazyrouter.svg +1 -0
- package/public/provider-icons/ctok.svg +21 -0
- package/public/provider-icons/cubence.svg +9 -0
- package/public/provider-icons/dds.svg +2225 -0
- package/public/provider-icons/deepseek.svg +1 -0
- package/public/provider-icons/doubao.svg +1 -0
- package/public/provider-icons/eflowcode.png +0 -0
- package/public/provider-icons/gemini.svg +1 -0
- package/public/provider-icons/gemma.svg +1 -0
- package/public/provider-icons/github.svg +1 -0
- package/public/provider-icons/githubcopilot.svg +1 -0
- package/public/provider-icons/google.svg +1 -0
- package/public/provider-icons/googlecloud.svg +1 -0
- package/public/provider-icons/grok.svg +1 -0
- package/public/provider-icons/hermes.png +0 -0
- package/public/provider-icons/huawei.svg +1 -0
- package/public/provider-icons/huggingface.svg +1 -0
- package/public/provider-icons/hunyuan.svg +1 -0
- package/public/provider-icons/index.ts +114 -0
- package/public/provider-icons/kimi.svg +1 -0
- package/public/provider-icons/lemondata.png +0 -0
- package/public/provider-icons/lioncc.svg +6 -0
- package/public/provider-icons/longcat-color.svg +1 -0
- package/public/provider-icons/mcp.svg +1 -0
- package/public/provider-icons/meta.svg +1 -0
- package/public/provider-icons/metadata.ts +469 -0
- package/public/provider-icons/micu.svg +23 -0
- package/public/provider-icons/midjourney.svg +1 -0
- package/public/provider-icons/minimax.svg +1 -0
- package/public/provider-icons/mistral.svg +1 -0
- package/public/provider-icons/modelscope-color.svg +1 -0
- package/public/provider-icons/newapi.svg +1 -0
- package/public/provider-icons/notion.svg +1 -0
- package/public/provider-icons/novita.svg +11 -0
- package/public/provider-icons/nvidia.svg +1 -0
- package/public/provider-icons/ollama.svg +1 -0
- package/public/provider-icons/openai.svg +1 -0
- package/public/provider-icons/opencode-logo-light.svg +1 -0
- package/public/provider-icons/openrouter.svg +1 -0
- package/public/provider-icons/packycode.svg +1 -0
- package/public/provider-icons/palm.svg +1 -0
- package/public/provider-icons/perplexity.svg +1 -0
- package/public/provider-icons/pipellm.png +0 -0
- package/public/provider-icons/qwen.svg +1 -0
- package/public/provider-icons/rc.svg +1 -0
- package/public/provider-icons/shengsuanyun.svg +4 -0
- package/public/provider-icons/siliconflow.svg +1 -0
- package/public/provider-icons/sssaicode.svg +73 -0
- package/public/provider-icons/stability.svg +1 -0
- package/public/provider-icons/stepfun.svg +10 -0
- package/public/provider-icons/tencent.svg +1 -0
- package/public/provider-icons/ucloud.svg +1 -0
- package/public/provider-icons/vercel.svg +1 -0
- package/public/provider-icons/wenxin.svg +1 -0
- package/public/provider-icons/xai.svg +1 -0
- package/public/provider-icons/xiaomimimo.svg +1 -0
- package/public/provider-icons/yi.svg +1 -0
- package/public/provider-icons/zeroone.svg +1 -0
- package/public/provider-icons/zhipu.svg +1 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reviewer Agent reviews completed task output.
|
|
3
|
+
*/
|
|
4
|
+
import * as agentService from '../services/agent.js';
|
|
5
|
+
import * as taskService from '../services/task.js';
|
|
6
|
+
import * as issueService from '../services/issue.js';
|
|
7
|
+
import * as channelService from '../services/channel.js';
|
|
8
|
+
import { createAgentRuntime } from '../adapters/agent-runtime.js';
|
|
9
|
+
import { createIssueFunctionTools } from '../services/builtin-tools.js';
|
|
10
|
+
import { completeIssueAgentProgress, createIssueAgentProgress, createIssueAgentProgressTracker } from './issue-agent-progress.js';
|
|
11
|
+
import { getThinkingRuntimeConfig } from '../services/llm-model-config.js';
|
|
12
|
+
export async function runReviewer(workspaceId, taskId, issueId, taskResult, ctx) {
|
|
13
|
+
const issue = issueService.getById(workspaceId, issueId);
|
|
14
|
+
if (!issue) {
|
|
15
|
+
console.warn(`[reviewer] issue not found workspaceId=${workspaceId} issueId=${issueId} taskId=${taskId}`);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const reviewerPreset = findIssueMemberAgent(workspaceId, issue, 'reviewer');
|
|
19
|
+
if (!reviewerPreset) {
|
|
20
|
+
console.warn(`[reviewer] no reviewer member found workspaceId=${workspaceId} issueId=${issueId} channelId=${issue.channelId} taskId=${taskId}`);
|
|
21
|
+
const currentTask = taskService.getById(workspaceId, taskId);
|
|
22
|
+
const doneTask = taskService.updateStatus(workspaceId, taskId, 'done', { result: taskResult });
|
|
23
|
+
ctx.broadcast('task.status_changed', { taskId, from: currentTask?.status ?? 'running', to: 'done' });
|
|
24
|
+
if (doneTask)
|
|
25
|
+
ctx.broadcast('task.updated', doneTask);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const reviewer = agentService.getOrCreateSessionForConfig(workspaceId, reviewerPreset);
|
|
29
|
+
ctx.broadcast('agent.started', reviewer);
|
|
30
|
+
const currentTask = taskService.getById(workspaceId, taskId);
|
|
31
|
+
const reviewingTask = taskService.updateStatus(workspaceId, taskId, 'reviewing', { result: taskResult });
|
|
32
|
+
ctx.broadcast('task.status_changed', { taskId, from: currentTask?.status ?? 'running', to: 'reviewing' });
|
|
33
|
+
if (reviewingTask)
|
|
34
|
+
ctx.broadcast('task.updated', reviewingTask);
|
|
35
|
+
const reviewerFromStatus = reviewer.status;
|
|
36
|
+
agentService.updateStatus(workspaceId, reviewer.id, 'active');
|
|
37
|
+
issueService.addAgent(workspaceId, issueId, reviewerPreset.id);
|
|
38
|
+
ctx.broadcast('agent.status_changed', { agentId: reviewer.id, from: reviewerFromStatus, to: 'active' });
|
|
39
|
+
ctx.broadcast('agent.output', {
|
|
40
|
+
agentId: reviewer.id,
|
|
41
|
+
data: `Reviewing task: ${taskId}`,
|
|
42
|
+
});
|
|
43
|
+
const startTime = Date.now();
|
|
44
|
+
const progress = createIssueAgentProgress(workspaceId, issue, reviewerPreset, reviewer.id, {
|
|
45
|
+
runtime: reviewerPreset.runtimeKind,
|
|
46
|
+
model: reviewerPreset.modelId,
|
|
47
|
+
taskId,
|
|
48
|
+
phase: 'reviewer',
|
|
49
|
+
});
|
|
50
|
+
const reviewerWorkingDir = agentService.resolveWorkingDir(workspaceId, reviewerPreset);
|
|
51
|
+
const reviewerTracker = createIssueAgentProgressTracker({
|
|
52
|
+
workspaceId,
|
|
53
|
+
issue,
|
|
54
|
+
progress,
|
|
55
|
+
agentSessionId: reviewer.id,
|
|
56
|
+
workspaceRoot: reviewerWorkingDir,
|
|
57
|
+
onOutput: (line) => {
|
|
58
|
+
ctx.broadcast('agent.output', { agentId: reviewer.id, data: line });
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
// Use runtime to review.
|
|
62
|
+
const runtime = createAgentRuntime({
|
|
63
|
+
kind: reviewerPreset.runtimeKind,
|
|
64
|
+
provider: reviewerPreset.modelProvider,
|
|
65
|
+
model: reviewerPreset.modelId,
|
|
66
|
+
apiKey: reviewerPreset.apiKey,
|
|
67
|
+
baseURL: reviewerPreset.apiBase,
|
|
68
|
+
...getThinkingRuntimeConfig(reviewerPreset),
|
|
69
|
+
});
|
|
70
|
+
const reviewResult = await runtime.execute(buildReviewerPrompt(issue, taskId, taskResult, reviewerWorkingDir), reviewerWorkingDir, {
|
|
71
|
+
maxTurns: 100,
|
|
72
|
+
mcpServers: agentService.getMcpServers(reviewerPreset.mcps),
|
|
73
|
+
functionTools: createReviewerIssueTools(workspaceId, issue, reviewerPreset),
|
|
74
|
+
skills: agentService.getAvailableSkillNames(agentService.getAgentConfigDir(workspaceId, reviewerPreset), reviewerPreset.skills),
|
|
75
|
+
configDir: agentService.getAgentConfigDir(workspaceId, reviewerPreset),
|
|
76
|
+
sandboxDirs: reviewerPreset.sandboxDirs,
|
|
77
|
+
onEvent: reviewerTracker.handleEvent,
|
|
78
|
+
});
|
|
79
|
+
if (reviewerTracker.output.length === 0) {
|
|
80
|
+
for (const line of reviewResult.output) {
|
|
81
|
+
reviewerTracker.output.push(line);
|
|
82
|
+
ctx.broadcast('agent.output', { agentId: reviewer.id, data: line });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
completeIssueAgentProgress(workspaceId, issue, progress, reviewResult.summary, reviewerTracker.output, {
|
|
86
|
+
runtime: reviewerPreset.runtimeKind,
|
|
87
|
+
model: reviewerPreset.modelId,
|
|
88
|
+
duration: Date.now() - startTime,
|
|
89
|
+
messageStatus: reviewResult.success ? 'completed' : 'error',
|
|
90
|
+
parts: reviewerTracker.buildParts({
|
|
91
|
+
sessionId: reviewer.id,
|
|
92
|
+
workspaceRoot: reviewerWorkingDir,
|
|
93
|
+
model: reviewerPreset.modelId,
|
|
94
|
+
usage: reviewResult.usage,
|
|
95
|
+
success: reviewResult.success,
|
|
96
|
+
error: reviewResult.error,
|
|
97
|
+
}),
|
|
98
|
+
});
|
|
99
|
+
// Mock: always approve for now
|
|
100
|
+
const approved = true;
|
|
101
|
+
agentService.complete(workspaceId, reviewer.id, undefined, {
|
|
102
|
+
runtime: reviewerPreset.runtimeKind,
|
|
103
|
+
model: reviewerPreset.modelId,
|
|
104
|
+
summary: reviewResult.summary,
|
|
105
|
+
output: reviewerTracker.output.length ? reviewerTracker.output : reviewResult.output,
|
|
106
|
+
durationMs: Date.now() - startTime,
|
|
107
|
+
usage: reviewResult.usage,
|
|
108
|
+
costUsd: reviewResult.costUsd,
|
|
109
|
+
});
|
|
110
|
+
ctx.broadcast('agent.completed', {
|
|
111
|
+
agentId: reviewer.id,
|
|
112
|
+
result: { success: true, summary: approved ? 'Approved' : 'Changes requested', artifacts: [] },
|
|
113
|
+
});
|
|
114
|
+
if (approved) {
|
|
115
|
+
const doneTask = taskService.updateStatus(workspaceId, taskId, 'done', { result: taskResult });
|
|
116
|
+
ctx.broadcast('task.status_changed', { taskId, from: 'reviewing', to: 'done' });
|
|
117
|
+
if (doneTask)
|
|
118
|
+
ctx.broadcast('task.updated', doneTask);
|
|
119
|
+
ctx.broadcast('agent.output', {
|
|
120
|
+
agentId: reviewer.id,
|
|
121
|
+
data: `Task ${taskId} approved.`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const failedTask = taskService.updateStatus(workspaceId, taskId, 'failed', {
|
|
126
|
+
result: { ...taskResult, error: 'Changes requested by reviewer' },
|
|
127
|
+
});
|
|
128
|
+
ctx.broadcast('task.status_changed', { taskId, from: 'reviewing', to: 'failed' });
|
|
129
|
+
if (failedTask)
|
|
130
|
+
ctx.broadcast('task.updated', failedTask);
|
|
131
|
+
const changedIssue = issueService.updateStatus(workspaceId, issueId, 'changes_requested');
|
|
132
|
+
ctx.broadcast('issue.status_changed', { issueId, from: 'in_progress', to: 'changes_requested' });
|
|
133
|
+
if (changedIssue)
|
|
134
|
+
ctx.broadcast('issue.updated', changedIssue);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function findIssueMemberAgent(workspaceId, issue, role) {
|
|
138
|
+
const channel = channelService.getChannel(workspaceId, issue.channelId);
|
|
139
|
+
if (!channel)
|
|
140
|
+
return null;
|
|
141
|
+
return agentService.findEnabledPresetByRoleInMembers(workspaceId, channel.members, role);
|
|
142
|
+
}
|
|
143
|
+
function buildReviewerPrompt(issue, taskId, taskResult, workingDir) {
|
|
144
|
+
return [
|
|
145
|
+
'Before reviewing, call ViewCurrentChannelIssue with the current channel id to load the latest shared issue context and comments.',
|
|
146
|
+
`The current workspace working directory is: ${workingDir}`,
|
|
147
|
+
'Review files under this working directory. Treat deliverables outside it, especially in /tmp, as misplaced unless the task explicitly asked for temporary output.',
|
|
148
|
+
'For Bash commands that inspect files under this working directory, prefer relative paths instead of absolute paths.',
|
|
149
|
+
'',
|
|
150
|
+
'Current issue:',
|
|
151
|
+
`- Issue id: ${issue.id}`,
|
|
152
|
+
`- Channel id: ${issue.channelId}`,
|
|
153
|
+
`- Title: ${issue.title}`,
|
|
154
|
+
'',
|
|
155
|
+
'Task result to review:',
|
|
156
|
+
`- Task id: ${taskId}`,
|
|
157
|
+
`- Success: ${taskResult.success}`,
|
|
158
|
+
`- Summary: ${taskResult.summary}`,
|
|
159
|
+
taskResult.error ? `- Error: ${taskResult.error}` : '',
|
|
160
|
+
].filter(Boolean).join('\n');
|
|
161
|
+
}
|
|
162
|
+
function createReviewerIssueTools(workspaceId, issue, preset) {
|
|
163
|
+
const channel = channelService.getChannel(workspaceId, issue.channelId);
|
|
164
|
+
return createIssueFunctionTools(workspaceId, channel, {
|
|
165
|
+
senderId: preset.id,
|
|
166
|
+
senderRole: preset.role,
|
|
167
|
+
}, ['ViewCurrentChannelIssue', 'AddCurrentChannelComment']);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=reviewer-agent.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler Agent — periodically checks for unfinished issues and wakes the Planner.
|
|
3
|
+
*/
|
|
4
|
+
import * as issueService from '../services/issue.js';
|
|
5
|
+
import * as workspaceService from '../services/workspace.js';
|
|
6
|
+
import { hasActiveIssueAutomation, runIssueAutomation } from './issue-agent-runner.js';
|
|
7
|
+
import { retryErrorIssues } from '../services/issue-retry.js';
|
|
8
|
+
const CHECK_INTERVAL = 10 * 60 * 1000; // 10m
|
|
9
|
+
const timers = new Map();
|
|
10
|
+
export function startScheduler(workspaceId, ctx) {
|
|
11
|
+
if (timers.has(workspaceId)) {
|
|
12
|
+
console.log(`[scheduler:${workspaceId}] already running, skip`);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
console.log(`[scheduler:${workspaceId}] started (interval=${CHECK_INTERVAL}ms)`);
|
|
16
|
+
const tick = async () => {
|
|
17
|
+
// 检查 workspace 是否关闭了自动处理
|
|
18
|
+
const workspace = workspaceService.getById(workspaceId);
|
|
19
|
+
if (workspace && workspace.autoProcessIssues === false) {
|
|
20
|
+
console.log(`[scheduler:${workspaceId}] auto-processing disabled for this workspace, skip`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await retryErrorIssues(workspaceId, ctx);
|
|
24
|
+
const allIssues = issueService.list(workspaceId);
|
|
25
|
+
const unfinished = allIssues.filter((i) => i.status === 'draft' || i.status === 'changes_requested');
|
|
26
|
+
if (unfinished.length === 0) {
|
|
27
|
+
console.log(`[scheduler:${workspaceId}] tick: no unfinished issues (total=${allIssues.length})`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.log(`[scheduler:${workspaceId}] tick: ${unfinished.length} unfinished issue(s):`, unfinished.map((i) => ({ id: i.id, title: i.title, status: i.status })));
|
|
31
|
+
if (hasActiveIssueAutomation(workspaceId)) {
|
|
32
|
+
console.log(`[scheduler:${workspaceId}] issue automation already active, waiting`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const nextIssue = unfinished[0];
|
|
36
|
+
console.log(`[scheduler:${workspaceId}] running automation for issue "${nextIssue.title}" (${nextIssue.id})`);
|
|
37
|
+
runIssueAutomation(workspaceId, nextIssue.id, ctx).catch((err) => {
|
|
38
|
+
console.error(`[scheduler:${workspaceId}] issue automation error for issue ${nextIssue.id}:`, err);
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
timers.set(workspaceId, setInterval(tick, CHECK_INTERVAL));
|
|
42
|
+
tick();
|
|
43
|
+
}
|
|
44
|
+
export function stopScheduler(workspaceId) {
|
|
45
|
+
const timer = timers.get(workspaceId);
|
|
46
|
+
if (timer) {
|
|
47
|
+
clearInterval(timer);
|
|
48
|
+
timers.delete(workspaceId);
|
|
49
|
+
console.log(`[scheduler:${workspaceId}] stopped`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=scheduler-agent.js.map
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { config as loadDotenv } from 'dotenv';
|
|
3
|
+
loadDotenv();
|
|
4
|
+
import express from 'express';
|
|
5
|
+
import cors from 'cors';
|
|
6
|
+
import { createServer } from 'node:http';
|
|
7
|
+
import { WebSocketServer } from 'ws';
|
|
8
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
9
|
+
import { writeFile } from 'node:fs/promises';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
import workspaceRouter from './routes/workspace.js';
|
|
13
|
+
import fileRouter from './routes/file.js';
|
|
14
|
+
import channelRouter from './routes/channel.js';
|
|
15
|
+
import issueRouter from './routes/issue.js';
|
|
16
|
+
import agentRouter from './routes/agent.js';
|
|
17
|
+
import taskRouter from './routes/task.js';
|
|
18
|
+
import gitRouter from './routes/git.js';
|
|
19
|
+
import llmRouter from './routes/llm.js';
|
|
20
|
+
import authRouter from './routes/auth.js';
|
|
21
|
+
import folderRouter from './routes/folder.js';
|
|
22
|
+
import { authMiddleware, verifyToken } from './middleware/auth.js';
|
|
23
|
+
import { handleConnection } from './ws/handler.js';
|
|
24
|
+
import { startScheduler, stopScheduler } from './agents/scheduler-agent.js';
|
|
25
|
+
import { recoverRunningWorkOnStartup } from './services/issue-retry.js';
|
|
26
|
+
import { startPersistedNotificationServices } from './services/notification-hub/index.js';
|
|
27
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
28
|
+
const PORT = parseInt(process.env.PORT || '3100', 10);
|
|
29
|
+
const IS_PROD = process.env.NODE_ENV === 'production';
|
|
30
|
+
const resolveRuntimeDir = (name) => {
|
|
31
|
+
const currentDir = join(__dirname, name);
|
|
32
|
+
if (existsSync(currentDir))
|
|
33
|
+
return currentDir;
|
|
34
|
+
return join(__dirname, '..', name);
|
|
35
|
+
};
|
|
36
|
+
const app = express();
|
|
37
|
+
app.use(cors());
|
|
38
|
+
app.use(express.json({ limit: '50mb' }));
|
|
39
|
+
app.use('/api', authMiddleware);
|
|
40
|
+
// Serve static files from public/
|
|
41
|
+
const publicDir = resolveRuntimeDir('public');
|
|
42
|
+
app.use('/public', express.static(publicDir));
|
|
43
|
+
app.get('/api/health', (_req, res) => {
|
|
44
|
+
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
45
|
+
});
|
|
46
|
+
app.use('/api/auth', authRouter);
|
|
47
|
+
// Avatar upload
|
|
48
|
+
app.post('/api/upload/avatar', async (req, res) => {
|
|
49
|
+
const { dataUrl, filename } = req.body;
|
|
50
|
+
if (!dataUrl || !dataUrl.startsWith('data:')) {
|
|
51
|
+
res.status(400).json({ error: 'Invalid dataUrl' });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);
|
|
55
|
+
if (!match) {
|
|
56
|
+
res.status(400).json({ error: 'Invalid base64 data' });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const [, mime, base64] = match;
|
|
60
|
+
const ext = mime === 'image/png' ? 'png' : mime === 'image/webp' ? 'webp' : 'jpg';
|
|
61
|
+
const id = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
62
|
+
const name = filename ? `${id}-${filename.replace(/[^a-zA-Z0-9._-]/g, '_')}` : `${id}.${ext}`;
|
|
63
|
+
const avatarsDir = join(publicDir, 'avatars');
|
|
64
|
+
if (!existsSync(avatarsDir))
|
|
65
|
+
mkdirSync(avatarsDir, { recursive: true });
|
|
66
|
+
await writeFile(join(avatarsDir, name), Buffer.from(base64, 'base64'));
|
|
67
|
+
res.json({ url: `/static/avatars/${name}` });
|
|
68
|
+
});
|
|
69
|
+
app.use('/api/workspaces', workspaceRouter);
|
|
70
|
+
app.use('/api/workspaces/:id/files', fileRouter);
|
|
71
|
+
app.use('/api/workspaces/:id/channels', channelRouter);
|
|
72
|
+
app.use('/api/workspaces/:id/issues', issueRouter);
|
|
73
|
+
app.use('/api/workspaces/:id/agents', agentRouter);
|
|
74
|
+
app.use('/api/workspaces/:id/tasks', taskRouter);
|
|
75
|
+
app.use('/api/workspaces/:id/git', gitRouter);
|
|
76
|
+
app.use('/api/agents', agentRouter);
|
|
77
|
+
app.use('/api', llmRouter);
|
|
78
|
+
app.use('/api/folder', folderRouter);
|
|
79
|
+
// Serve static web frontend in production (after API routes, before catch-all)
|
|
80
|
+
if (IS_PROD) {
|
|
81
|
+
const webDir = resolveRuntimeDir('web');
|
|
82
|
+
if (existsSync(webDir)) {
|
|
83
|
+
// /static/* -> public/* (avatar URLs etc.)
|
|
84
|
+
app.use('/static', express.static(publicDir));
|
|
85
|
+
// web static assets (_next, monaco, etc.)
|
|
86
|
+
app.use(express.static(webDir));
|
|
87
|
+
// SPA fallback: serve correct HTML for each route
|
|
88
|
+
const indexHtml = join(webDir, 'index.html');
|
|
89
|
+
const workspaceHtml = join(webDir, 'workspace', '_.html');
|
|
90
|
+
// /workspace/* -> workspace SPA page
|
|
91
|
+
if (existsSync(workspaceHtml)) {
|
|
92
|
+
app.get('/workspace/:id', (_req, res) => {
|
|
93
|
+
res.sendFile(workspaceHtml);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Everything else -> root index.html
|
|
97
|
+
app.use((_req, res) => {
|
|
98
|
+
res.sendFile(indexHtml);
|
|
99
|
+
});
|
|
100
|
+
console.log(`[server] serving web frontend from ${webDir}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
console.warn('[server] web frontend not found at', webDir, '- run \`pnpm build\` first');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const server = createServer(app);
|
|
107
|
+
const wss = new WebSocketServer({ server, path: '/ws' });
|
|
108
|
+
wss.on('connection', (ws, req) => {
|
|
109
|
+
const url = new URL(req.url || '', `http://localhost:${PORT}`);
|
|
110
|
+
const workspaceId = url.searchParams.get('workspaceId');
|
|
111
|
+
if (!workspaceId) {
|
|
112
|
+
ws.close(4001, 'workspaceId required');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const token = url.searchParams.get('token');
|
|
116
|
+
if (!verifyToken(token)) {
|
|
117
|
+
ws.close(4003, 'Unauthorized');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
handleConnection(ws, workspaceId);
|
|
121
|
+
});
|
|
122
|
+
const HOST = process.env.HOST || '0.0.0.0';
|
|
123
|
+
server.listen(PORT, HOST, () => {
|
|
124
|
+
console.log(`[server] listening on http://${HOST}:${PORT}`);
|
|
125
|
+
console.log(`[server] websocket on ws://${HOST}:${PORT}/ws?workspaceId=...`);
|
|
126
|
+
recoverRunningWorkOnStartup();
|
|
127
|
+
startPersistedNotificationServices().catch((err) => {
|
|
128
|
+
console.error('[notification] failed to restore persisted services:', err);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
// Start scheduler for all workspaces (lazy: started on first WS connection)
|
|
132
|
+
export { startScheduler, stopScheduler };
|
|
133
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent hooks: chain executor completion to reviewer processing.
|
|
3
|
+
*/
|
|
4
|
+
import { runReviewer } from '../agents/reviewer-agent.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hook: executor complete triggers reviewer.
|
|
7
|
+
* This is the core hook in the agent orchestration pipeline.
|
|
8
|
+
*/
|
|
9
|
+
export async function onExecutorComplete(workspaceId, taskId, issueId, result, ctx) {
|
|
10
|
+
console.log(`[hook:onExecutorComplete] entered workspaceId=${workspaceId} taskId=${taskId} issueId=${issueId} success=${result.success} summary=${JSON.stringify(result.summary)}`);
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
console.warn(`[hook:onExecutorComplete] task ${taskId} failed: ${result.error}`);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
console.log(`[hook:onExecutorComplete] triggering reviewer taskId=${taskId} issueId=${issueId}`);
|
|
16
|
+
await runReviewer(workspaceId, taskId, issueId, result, ctx);
|
|
17
|
+
console.log(`[hook:onExecutorComplete] reviewer completed taskId=${taskId} issueId=${issueId}`);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=agent-hooks.js.map
|
package/dist/install.sh
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -Eeuo pipefail
|
|
3
|
+
|
|
4
|
+
cd "$(dirname "$0")"
|
|
5
|
+
|
|
6
|
+
cat > .npmrc <<'EOF'
|
|
7
|
+
shamefully-hoist=true
|
|
8
|
+
strict-peer-dependencies=false
|
|
9
|
+
only-built-dependencies[]=node-pty
|
|
10
|
+
only-built-dependencies[]=protobufjs
|
|
11
|
+
EOF
|
|
12
|
+
|
|
13
|
+
node <<'NODE'
|
|
14
|
+
const fs = require('node:fs');
|
|
15
|
+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
16
|
+
pkg.pnpm ??= {};
|
|
17
|
+
pkg.pnpm.overrides = {
|
|
18
|
+
'@codeany/open-agent-sdk>zod': '3.25.76',
|
|
19
|
+
'@codeany/open-agent-sdk>zod-to-json-schema': '3.24.6',
|
|
20
|
+
};
|
|
21
|
+
pkg.pnpm.onlyBuiltDependencies = ['node-pty', 'protobufjs'];
|
|
22
|
+
pkg.pnpm.supportedArchitectures = {
|
|
23
|
+
os: ['current'],
|
|
24
|
+
cpu: ['current'],
|
|
25
|
+
libc: ['current'],
|
|
26
|
+
};
|
|
27
|
+
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
|
|
28
|
+
NODE
|
|
29
|
+
|
|
30
|
+
if ! command -v pnpm >/dev/null 2>&1; then
|
|
31
|
+
corepack enable
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
pnpm_cmd=(corepack pnpm@10.17.1)
|
|
35
|
+
|
|
36
|
+
rm -rf node_modules pnpm-lock.yaml
|
|
37
|
+
"${pnpm_cmd[@]}" install --prod --ignore-scripts
|
|
38
|
+
"${pnpm_cmd[@]}" rebuild node-pty protobufjs
|
|
39
|
+
|
|
40
|
+
if find node_modules/.pnpm -maxdepth 1 -name 'zod-to-json-schema@3.25.2_zod@3.23.0' | grep -q .; then
|
|
41
|
+
echo "Bad zod peer resolution remains: zod-to-json-schema@3.25.2_zod@3.23.0" >&2
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
"${pnpm_cmd[@]}" ignored-builds
|
|
46
|
+
if find node_modules/.pnpm -maxdepth 1 \( -name '@openai+codex@*-darwin-*' -o -name '@openai+codex@*-win32-*' -o -name '@anthropic-ai+claude-agent-sdk-darwin-*' -o -name '@anthropic-ai+claude-agent-sdk-win32-*' \) | grep -q .; then
|
|
47
|
+
echo "Unexpected non-Linux agent platform package was installed" >&2
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
node <<'NODE'
|
|
52
|
+
const packagesByPlatform = {
|
|
53
|
+
'darwin-arm64': '@anthropic-ai/claude-agent-sdk-darwin-arm64',
|
|
54
|
+
'darwin-x64': '@anthropic-ai/claude-agent-sdk-darwin-x64',
|
|
55
|
+
'linux-arm64-glibc': '@anthropic-ai/claude-agent-sdk-linux-arm64',
|
|
56
|
+
'linux-arm64-musl': '@anthropic-ai/claude-agent-sdk-linux-arm64-musl',
|
|
57
|
+
'linux-x64-glibc': '@anthropic-ai/claude-agent-sdk-linux-x64',
|
|
58
|
+
'linux-x64-musl': '@anthropic-ai/claude-agent-sdk-linux-x64-musl',
|
|
59
|
+
'win32-arm64': '@anthropic-ai/claude-agent-sdk-win32-arm64',
|
|
60
|
+
'win32-x64': '@anthropic-ai/claude-agent-sdk-win32-x64',
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const libc = process.platform === 'linux'
|
|
64
|
+
? (process.report?.getReport?.().header?.glibcVersionRuntime ? 'glibc' : 'musl')
|
|
65
|
+
: undefined;
|
|
66
|
+
const key = [process.platform, process.arch, libc].filter(Boolean).join('-');
|
|
67
|
+
const claudePackage = packagesByPlatform[key];
|
|
68
|
+
|
|
69
|
+
Promise.resolve()
|
|
70
|
+
.then(() => import('zod-to-json-schema'))
|
|
71
|
+
.then(() => import('@codeany/open-agent-sdk'))
|
|
72
|
+
.then(() => require('node-pty'))
|
|
73
|
+
.then(() => {
|
|
74
|
+
if (!claudePackage) return;
|
|
75
|
+
require.resolve(claudePackage + '/claude');
|
|
76
|
+
})
|
|
77
|
+
.then(() => console.log('install verification ok'))
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
console.error(error);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
});
|
|
82
|
+
NODE
|
|
83
|
+
|
|
84
|
+
echo "Install complete. Start with: npm run start"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getSecret } from '../services/auth-store.js';
|
|
2
|
+
export function authMiddleware(req, res, next) {
|
|
3
|
+
const secret = getSecret();
|
|
4
|
+
const openPaths = ['/api/health', '/api/auth/login', '/api/auth/check'];
|
|
5
|
+
if (openPaths.includes(req.path))
|
|
6
|
+
return next();
|
|
7
|
+
const auth = req.headers.authorization;
|
|
8
|
+
const token = auth?.startsWith('Bearer ') ? auth.slice(7) : '';
|
|
9
|
+
if (token !== secret) {
|
|
10
|
+
res.status(401).json({ error: 'Unauthorized' });
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
next();
|
|
14
|
+
}
|
|
15
|
+
export function verifyToken(token) {
|
|
16
|
+
const secret = getSecret();
|
|
17
|
+
return (token ?? '') === secret;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agent-spaces/server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "app.js",
|
|
6
|
+
"packageManager": "pnpm@10.17.1",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "NODE_ENV=production node app.js",
|
|
9
|
+
"setup": "bash ./install.sh"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@agent-spaces/shared": "file:./shared",
|
|
13
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.126",
|
|
14
|
+
"@codeany/open-agent-sdk": "^0.2.1",
|
|
15
|
+
"@larksuiteoapi/node-sdk": "^1.62.1",
|
|
16
|
+
"@openai/codex-sdk": "^0.128.0",
|
|
17
|
+
"cors": "^2.8.5",
|
|
18
|
+
"dotenv": "^17.4.2",
|
|
19
|
+
"express": "^5.1.0",
|
|
20
|
+
"node-pty": "^1.1.0",
|
|
21
|
+
"simple-git": "^3.36.0",
|
|
22
|
+
"uuid": "^11.1.0",
|
|
23
|
+
"ws": "^8.18.2",
|
|
24
|
+
"zod": "^4.0.0"
|
|
25
|
+
},
|
|
26
|
+
"pnpm": {
|
|
27
|
+
"overrides": {
|
|
28
|
+
"@codeany/open-agent-sdk>zod": "3.25.76",
|
|
29
|
+
"@codeany/open-agent-sdk>zod-to-json-schema": "3.24.6"
|
|
30
|
+
},
|
|
31
|
+
"onlyBuiltDependencies": [
|
|
32
|
+
"node-pty",
|
|
33
|
+
"protobufjs"
|
|
34
|
+
],
|
|
35
|
+
"supportedArchitectures": {
|
|
36
|
+
"os": [
|
|
37
|
+
"current"
|
|
38
|
+
],
|
|
39
|
+
"cpu": [
|
|
40
|
+
"current"
|
|
41
|
+
],
|
|
42
|
+
"libc": [
|
|
43
|
+
"current"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import * as agentService from '../services/agent.js';
|
|
3
|
+
const router = Router({ mergeParams: true });
|
|
4
|
+
router.get('/usage/dashboard', (req, res) => {
|
|
5
|
+
const days = Number(req.query.days ?? 30);
|
|
6
|
+
res.json(agentService.usageDashboard(Number.isFinite(days) ? days : 30));
|
|
7
|
+
});
|
|
8
|
+
router.get('/presets', (req, res) => {
|
|
9
|
+
const presets = agentService.listPresets(req.params.id);
|
|
10
|
+
if (!presets) {
|
|
11
|
+
res.status(404).json({ error: 'workspace not found' });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
res.json(presets);
|
|
15
|
+
});
|
|
16
|
+
router.post('/presets', (req, res) => {
|
|
17
|
+
const preset = agentService.createPreset(req.params.id, req.body);
|
|
18
|
+
if (!preset) {
|
|
19
|
+
res.status(404).json({ error: 'workspace not found' });
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
res.status(201).json(preset);
|
|
23
|
+
});
|
|
24
|
+
router.post('/presets/test-connection', async (req, res) => {
|
|
25
|
+
const result = await agentService.testConnection(req.params.id, req.body);
|
|
26
|
+
if (!result) {
|
|
27
|
+
res.status(404).json({ error: 'workspace not found' });
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
res.status(result.success ? 200 : 400).json(result);
|
|
31
|
+
});
|
|
32
|
+
router.put('/presets/:presetId', (req, res) => {
|
|
33
|
+
const preset = agentService.updatePreset(req.params.id, req.params.presetId, req.body);
|
|
34
|
+
if (!preset) {
|
|
35
|
+
res.status(404).json({ error: 'agent preset not found' });
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
res.json(preset);
|
|
39
|
+
});
|
|
40
|
+
router.delete('/presets/:presetId', (req, res) => {
|
|
41
|
+
const deleted = agentService.deletePreset(req.params.id, req.params.presetId);
|
|
42
|
+
if (deleted === null) {
|
|
43
|
+
res.status(404).json({ error: 'workspace not found' });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!deleted) {
|
|
47
|
+
res.status(404).json({ error: 'agent preset not found' });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
res.status(204).end();
|
|
51
|
+
});
|
|
52
|
+
router.get('/', (req, res) => {
|
|
53
|
+
const sessions = agentService.list(req.params.id);
|
|
54
|
+
res.json(sessions);
|
|
55
|
+
});
|
|
56
|
+
router.post('/start', (req, res) => {
|
|
57
|
+
const { role, issueId } = req.body;
|
|
58
|
+
if (!role) {
|
|
59
|
+
res.status(400).json({ error: 'role is required' });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const validRoles = ['scheduler', 'planner', 'executor', 'reviewer', 'custom', 'bot'];
|
|
63
|
+
if (!validRoles.includes(role)) {
|
|
64
|
+
res.status(400).json({ error: `invalid role: ${role}` });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const session = agentService.create(req.params.id, role);
|
|
68
|
+
res.status(201).json(session);
|
|
69
|
+
});
|
|
70
|
+
router.post('/:agentId/stop', (req, res) => {
|
|
71
|
+
const session = agentService.complete(req.params.id, req.params.agentId);
|
|
72
|
+
if (!session) {
|
|
73
|
+
res.status(404).json({ error: 'agent session not found' });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
res.json(session);
|
|
77
|
+
});
|
|
78
|
+
router.get('/:agentId', (req, res) => {
|
|
79
|
+
const session = agentService.getById(req.params.id, req.params.agentId);
|
|
80
|
+
if (!session) {
|
|
81
|
+
res.status(404).json({ error: 'agent session not found' });
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
res.json(session);
|
|
85
|
+
});
|
|
86
|
+
export default router;
|
|
87
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { getSecret, setSecret } from '../services/auth-store.js';
|
|
3
|
+
const router = Router();
|
|
4
|
+
router.post('/login', (req, res) => {
|
|
5
|
+
const { secret } = req.body;
|
|
6
|
+
const currentSecret = getSecret();
|
|
7
|
+
if ((secret ?? '') !== currentSecret) {
|
|
8
|
+
res.status(403).json({ error: 'Invalid secret' });
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
res.json({ ok: true, token: currentSecret });
|
|
12
|
+
});
|
|
13
|
+
router.get('/check', (req, res) => {
|
|
14
|
+
const currentSecret = getSecret();
|
|
15
|
+
const auth = req.headers.authorization;
|
|
16
|
+
const token = auth?.startsWith('Bearer ') ? auth.slice(7) : '';
|
|
17
|
+
res.json({ authenticated: token === currentSecret, secretSet: currentSecret !== '' });
|
|
18
|
+
});
|
|
19
|
+
router.post('/change-secret', (req, res) => {
|
|
20
|
+
const { newSecret, currentToken } = req.body;
|
|
21
|
+
const currentSecret = getSecret();
|
|
22
|
+
if ((currentToken ?? '') !== currentSecret) {
|
|
23
|
+
res.status(403).json({ error: 'Unauthorized' });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setSecret(newSecret ?? '');
|
|
27
|
+
res.json({ ok: true });
|
|
28
|
+
});
|
|
29
|
+
export default router;
|
|
30
|
+
//# sourceMappingURL=auth.js.map
|