@newsails/veil-studio 1.0.1 → 2.0.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/README.md +11 -1
- package/nuxt-app/.output/public/200.html +9 -6
- package/nuxt-app/.output/public/404.html +9 -6
- package/nuxt-app/.output/public/_nuxt/abap.DLDM7-KI.js +1 -0
- package/nuxt-app/.output/public/_nuxt/apex.DNDY2TF8.js +1 -0
- package/nuxt-app/.output/public/_nuxt/azcli.Y6nb8tq_.js +1 -0
- package/nuxt-app/.output/public/_nuxt/bat.BwHxbl9M.js +1 -0
- package/nuxt-app/.output/public/_nuxt/bicep.CFznDFnq.js +2 -0
- package/nuxt-app/.output/public/_nuxt/cameligo.Bf6VGUru.js +1 -0
- package/nuxt-app/.output/public/_nuxt/clojure.Dnu-v4kV.js +1 -0
- package/nuxt-app/.output/public/_nuxt/codicon.ngg6Pgfi.ttf +0 -0
- package/nuxt-app/.output/public/_nuxt/coffee.Bd8akH9Z.js +1 -0
- package/nuxt-app/.output/public/_nuxt/cpp.BbWJElDN.js +1 -0
- package/nuxt-app/.output/public/_nuxt/csharp.Co3qMtFm.js +1 -0
- package/nuxt-app/.output/public/_nuxt/csp.D-4FJmMZ.js +1 -0
- package/nuxt-app/.output/public/_nuxt/css.DdJfP1eB.js +3 -0
- package/nuxt-app/.output/public/_nuxt/css.worker-V_k7FkW4.js +93 -0
- package/nuxt-app/.output/public/_nuxt/cssMode.Cn3v6mN5.js +1 -0
- package/nuxt-app/.output/public/_nuxt/cursor-editorTextHighlight.kG3uUOwL.svg +8 -0
- package/nuxt-app/.output/public/_nuxt/cypher.cTPe9QuQ.js +1 -0
- package/nuxt-app/.output/public/_nuxt/dart.BOtBlQCF.js +1 -0
- package/nuxt-app/.output/public/_nuxt/dockerfile.BG73LgW2.js +1 -0
- package/nuxt-app/.output/public/_nuxt/ecl.BEgZUVRK.js +1 -0
- package/nuxt-app/.output/public/_nuxt/editor.j6bgW0Rn.css +1 -0
- package/nuxt-app/.output/public/_nuxt/editor.main.BXnwZDNv.js +913 -0
- package/nuxt-app/.output/public/_nuxt/elixir.BkW5O-1t.js +1 -0
- package/nuxt-app/.output/public/_nuxt/entry.BTBLr2_9.js +178 -0
- package/nuxt-app/.output/public/_nuxt/entry.Bi330XvK.css +1 -0
- package/nuxt-app/.output/public/_nuxt/{error-404.VEDCv4Jx.js → error-404.BtcTx28A.js} +1 -1
- package/nuxt-app/.output/public/_nuxt/{error-500.DdyAxHjI.js → error-500.DOSB4mL7.js} +1 -1
- package/nuxt-app/.output/public/_nuxt/flow9.BeJ5waoc.js +1 -0
- package/nuxt-app/.output/public/_nuxt/freemarker2.DTkTX0AV.js +3 -0
- package/nuxt-app/.output/public/_nuxt/fsharp.PahG7c26.js +1 -0
- package/nuxt-app/.output/public/_nuxt/go.acbASCJo.js +1 -0
- package/nuxt-app/.output/public/_nuxt/graphql.BxJiqAUM.js +1 -0
- package/nuxt-app/.output/public/_nuxt/handlebars.1jygEZpg.js +1 -0
- package/nuxt-app/.output/public/_nuxt/hcl.DtV1sZF8.js +1 -0
- package/nuxt-app/.output/public/_nuxt/html.BpM62ame.js +1 -0
- package/nuxt-app/.output/public/_nuxt/html.worker-CAp20DN1.js +470 -0
- package/nuxt-app/.output/public/_nuxt/htmlMode.Cy5jAJfq.js +1 -0
- package/nuxt-app/.output/public/_nuxt/index.BLgiPK1n.js +415 -0
- package/nuxt-app/.output/public/_nuxt/index.DgMzrTGH.css +1 -0
- package/nuxt-app/.output/public/_nuxt/ini.Kd9XrMLS.js +1 -0
- package/nuxt-app/.output/public/_nuxt/java.CXBNlu9o.js +1 -0
- package/nuxt-app/.output/public/_nuxt/javascript.BUf38kZw.js +1 -0
- package/nuxt-app/.output/public/_nuxt/json.worker-6D_tMdcV.js +58 -0
- package/nuxt-app/.output/public/_nuxt/jsonMode.C0IX_rGY.js +7 -0
- package/nuxt-app/.output/public/_nuxt/julia.cl7-CwDS.js +1 -0
- package/nuxt-app/.output/public/_nuxt/kotlin.s7OhZKlX.js +1 -0
- package/nuxt-app/.output/public/_nuxt/less.9HpZscsL.js +2 -0
- package/nuxt-app/.output/public/_nuxt/lexon.OrD6JF1K.js +1 -0
- package/nuxt-app/.output/public/_nuxt/liquid.DL96V_07.js +1 -0
- package/nuxt-app/.output/public/_nuxt/lspLanguageFeatures.xehlwcr0.js +4 -0
- package/nuxt-app/.output/public/_nuxt/lua.Cyyb5UIc.js +1 -0
- package/nuxt-app/.output/public/_nuxt/m3.B8OfTtLu.js +1 -0
- package/nuxt-app/.output/public/_nuxt/markdown.BFxVWTOG.js +1 -0
- package/nuxt-app/.output/public/_nuxt/mdx.BNt0FFnz.js +1 -0
- package/nuxt-app/.output/public/_nuxt/mips.CiqrrVzr.js +1 -0
- package/nuxt-app/.output/public/_nuxt/msdax.DmeGPVcC.js +1 -0
- package/nuxt-app/.output/public/_nuxt/mysql.C_tMU-Nz.js +1 -0
- package/nuxt-app/.output/public/_nuxt/objective-c.BDtDVThU.js +1 -0
- package/nuxt-app/.output/public/_nuxt/pascal.vHIfCaH5.js +1 -0
- package/nuxt-app/.output/public/_nuxt/pascaligo.DtZ0uQbO.js +1 -0
- package/nuxt-app/.output/public/_nuxt/perl.Ub6l9XKa.js +1 -0
- package/nuxt-app/.output/public/_nuxt/pgsql.BlNEE0v7.js +1 -0
- package/nuxt-app/.output/public/_nuxt/php.BBUBE1dy.js +1 -0
- package/nuxt-app/.output/public/_nuxt/pla.DSh2-awV.js +1 -0
- package/nuxt-app/.output/public/_nuxt/postiats.CocnycG-.js +1 -0
- package/nuxt-app/.output/public/_nuxt/powerquery.tScXyioY.js +1 -0
- package/nuxt-app/.output/public/_nuxt/powershell.COWaemsV.js +1 -0
- package/nuxt-app/.output/public/_nuxt/protobuf.Brw8urJB.js +2 -0
- package/nuxt-app/.output/public/_nuxt/pug.8SOpv6rk.js +1 -0
- package/nuxt-app/.output/public/_nuxt/python.DjrP6G10.js +1 -0
- package/nuxt-app/.output/public/_nuxt/qsharp.Bw9ernYp.js +1 -0
- package/nuxt-app/.output/public/_nuxt/r.j7ic8hl3.js +1 -0
- package/nuxt-app/.output/public/_nuxt/razor.Du9jUt14.js +1 -0
- package/nuxt-app/.output/public/_nuxt/redis.Bu5POkcn.js +1 -0
- package/nuxt-app/.output/public/_nuxt/redshift.Bs9aos_-.js +1 -0
- package/nuxt-app/.output/public/_nuxt/restructuredtext.CqXO7rUv.js +1 -0
- package/nuxt-app/.output/public/_nuxt/ruby.zBfavPgS.js +1 -0
- package/nuxt-app/.output/public/_nuxt/rust.BzKRNQWT.js +1 -0
- package/nuxt-app/.output/public/_nuxt/sb.BBc9UKZt.js +1 -0
- package/nuxt-app/.output/public/_nuxt/scala.D9hQfWCl.js +1 -0
- package/nuxt-app/.output/public/_nuxt/scheme.BPhDTwHR.js +1 -0
- package/nuxt-app/.output/public/_nuxt/scss.CBJaRo0y.js +3 -0
- package/nuxt-app/.output/public/_nuxt/shell.DiJ1NA_G.js +1 -0
- package/nuxt-app/.output/public/_nuxt/solidity.Db0IVjzk.js +1 -0
- package/nuxt-app/.output/public/_nuxt/sophia.CnS9iZB_.js +1 -0
- package/nuxt-app/.output/public/_nuxt/sparql.CJmd_6j2.js +1 -0
- package/nuxt-app/.output/public/_nuxt/sql.ClhHkBeG.js +1 -0
- package/nuxt-app/.output/public/_nuxt/st.CHwy0fLd.js +1 -0
- package/nuxt-app/.output/public/_nuxt/swift.Bqt4WxQ4.js +3 -0
- package/nuxt-app/.output/public/_nuxt/systemverilog.Bs9z6M-B.js +1 -0
- package/nuxt-app/.output/public/_nuxt/tcl.Dm6ycUr_.js +1 -0
- package/nuxt-app/.output/public/_nuxt/ts.worker-B0yERHG1.js +67731 -0
- package/nuxt-app/.output/public/_nuxt/tsMode.BSdAUy8X.js +11 -0
- package/nuxt-app/.output/public/_nuxt/twig.Csy3S7wG.js +1 -0
- package/nuxt-app/.output/public/_nuxt/typescript.DGCEyVS5.js +1 -0
- package/nuxt-app/.output/public/_nuxt/typespec.Btyra-wh.js +1 -0
- package/nuxt-app/.output/public/_nuxt/vb.Db0cS2oM.js +1 -0
- package/nuxt-app/.output/public/_nuxt/{vue.-sixQ7xP.DWUp_HHF.js → vue.-sixQ7xP.BPDPwbEb.js} +1 -1
- package/nuxt-app/.output/public/_nuxt/wgsl.BTesnYfV.js +298 -0
- package/nuxt-app/.output/public/_nuxt/xml.B1Yz6scE.js +1 -0
- package/nuxt-app/.output/public/_nuxt/yaml.DyJuxYw-.js +1 -0
- package/nuxt-app/.output/public/icons/default_file.svg +1 -0
- package/nuxt-app/.output/public/icons/default_folder.svg +54 -0
- package/nuxt-app/.output/public/icons/default_folder_opened.svg +58 -0
- package/nuxt-app/.output/public/icons/default_root_folder.svg +1 -0
- package/nuxt-app/.output/public/icons/default_root_folder_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_access.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_access2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_actionscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_actionscript2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ada.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_advpl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_affectscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_affinity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_affinitydesigner.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_affinityphoto.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_affinitypublisher.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_agda.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_agents.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ai.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ai2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_al.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_al_dal.svg +11 -0
- package/nuxt-app/.output/public/icons/file_type_alchemy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_allcontributors.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_alloy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_allure.svg +49 -0
- package/nuxt-app/.output/public/icons/file_type_angular.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ansible.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_antlers_html.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_antlr.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_anyscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_apache.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_apex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_api_extractor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_apib.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_apib2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_apl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_applescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_appscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_appsemble.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_appveyor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_arduino.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_asciidoc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_aseprite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_asp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_aspx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_assembly.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_assembly_script.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_astro.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_astroconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_atom.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ats.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_attw.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_audio.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_aurelia.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_autohotkey.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_autoit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_avif.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_avro.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_awk.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_aws.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_azure.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_azurepipelines.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_babel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_babel2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bak.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ballerina.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bat.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bats.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bazaar.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bazel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bazel_ignore.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bazel_version.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_befunge.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bicep.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_biml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_binary.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_biome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bitbucketpipeline.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bithound.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_blade.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_blender.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_blitzbasic.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bolt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bosque.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bower.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bower2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_browserslist.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bruno.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_buckbuild.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_buf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bun.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bundlemon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bundler.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_bunfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_c.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_c2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_c3.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_c_al.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cabal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_caddy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cakephp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_capacitor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_capnp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cargo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_casc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cddl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cert.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ceylon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cf2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cfc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cfc2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cfm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cfm2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_changie.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cheader.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_chef.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_chef_cookbook.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_circleci.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_circom.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_class.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_claude.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_clojure.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_clojurescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cloudflare.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cloudfoundry.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cmake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cobol.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codacy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codeclimate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codecov.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codekit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codemagic.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codeowners.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_codeql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_coderabbit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_coffeelint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_coffeescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_commitizen.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_commitlint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_compass.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_composer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_conan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_conda.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_config.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_confluence.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_copilot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_coverage.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_coveralls.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cpp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cpp2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cpp3.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cppheader.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_craco.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_crowdin.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_crystal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_csharp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_csharp2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cspell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_csproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_css.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_css2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_css2map.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_csscomb.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_csslint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cssmap.svg +8 -0
- package/nuxt-app/.output/public/icons/file_type_cucumber.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cuda.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cursorrules.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cvs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cypress.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cypress_spec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_cython.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_darcs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dartlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dartlang_generated.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dartlang_ignore.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_datadog.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_db.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_debian.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_delphi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_deno.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_denoify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dependabot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dependencies.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_design_tokens.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_devcontainer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_devvit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dhall.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_diff.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_django.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_docker.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_docker2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dockertest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dockertest2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_docpad.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_docusaurus.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_docz.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dojo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_doppler.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dotenv.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dotjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_doxygen.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_drawio.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_drone.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_drools.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dtd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dune.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dustjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dvc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_dylan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_earthly.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eas-metadata.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_edge.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_edge2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_editorconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ejs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_elastic.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_elasticbeanstalk.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_electron.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eleventy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eleventy2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_elixir.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_elm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_elm2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_emacs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ember.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ensime.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eps.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_epub.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_erb.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_erlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_erlang2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_esbuild.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eslint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_eslint2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_esphome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_excalidraw.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_excel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_excel2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_expo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_falcon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fantasticon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fastly.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fauna.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_favicon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fbx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_firebase.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_firebasehosting.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_firebasestorage.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_firestore.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fitbit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fla.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flareact.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flash.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_floobits.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flow.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flutter.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flutter_package.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_flyio.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_font.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_formkit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fortran.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fossa.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fossil.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_freemarker.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_frontcommerce.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fsharp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fsharp2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fsproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fthtml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_funding.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_fusebox.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_galen.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_galen2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gamemaker.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gamemaker2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gamemaker81.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gatsby.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gcloud.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gcode.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gdscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gduid.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gemini.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_genstat.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_geojson.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gimp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_git.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_git2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gitlab.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gitpod.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gleam.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gleamconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_glide.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_glimmer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_glitter.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_glsl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gltf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_glyphs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gnu.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gnuplot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_aqua.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_black.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_fuchsia.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_gopher.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_lightblue.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_package.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_white.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_work.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_go_yellow.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_goctl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_godot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gpg.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gradle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gradle2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_grain.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_graphql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_graphql_config.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_graphviz.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_greenkeeper.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gridsome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_grit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_groovy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_groovy2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_grunt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_gulp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_handlebars.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_handlebars2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_harbour.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hardhat.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hashicorp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haskell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haskell2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haxe.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haxecheckstyle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_haxedevelop.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_helix.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_helm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_histoire.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hjson.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hlsl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_homeassistant.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_horusec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_host.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_html.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_htmlhint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_htmlvalidate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_http.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hugo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_humanstxt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hunspell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_husky.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hygen.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_hypr.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_icl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_idris.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_idrisbin.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_idrispkg.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_image.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_imba.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_inc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_infopath.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_informix.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ini.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ink.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_innosetup.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_io.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_iodine.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ionic.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_janet.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jar.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jasmine.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_java.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jbuilder.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jekyll.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jenkins.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jest_snapshot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jetbrains.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jinja.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jpm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_js_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsbeautify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jscpd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jshint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsmap.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_json.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_json2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_json5.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_json_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_json_schema.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsonld.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsonnet.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jsr.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_juice.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_julia.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_julia2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_jupyter.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_just.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_k.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_karma.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_key.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kitchenci.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kivy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_knip.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kos.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kotlin.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_kusto.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_language_configuration.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lark.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_latino.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_layout.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lean.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_leanconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lefthook.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lemon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lerna.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_less.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_liara.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_base.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_calc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_draw.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_impress.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_math.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_libreoffice_writer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_license.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_licensebat.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_actionscript2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_ada.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_agda.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_agents.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_apl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_astro.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_astroconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_babel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_babel2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_cabal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_circleci.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_cloudfoundry.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_codacy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_codeclimate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_codeowners.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_config.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_copilot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_crystal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_cypress.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_cypress_spec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_db.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_dhall.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_docpad.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_drone.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_eas-metadata.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_eleventy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_eleventy2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_esphome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_expo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_firebasehosting.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_fla.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_font.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_gamemaker2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_gradle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_hashicorp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_hjson.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_ini.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_io.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_jsconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_jsmap.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_json.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_json5.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_json_schema.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_jsonld.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_kite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_lark.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_lean.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_leanconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_lerna.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mailing.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_markuplint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mcp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mdx-components.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mdx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mustache.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_mypy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_neo4j.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_netlify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_next.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_nim.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_nx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_objidconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_openHAB.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_oxc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_packship.svg +4 -0
- package/nuxt-app/.output/public/icons/file_type_light_pcl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_pnpm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_prettier.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_prisma.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_purescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_quasar.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_railway.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_raku.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_razzle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_reactrouter.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rehype.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_remark.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_replit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_retext.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rolldown.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rubocop.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rust.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_rust_toolchain.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_safetensors.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_shadcn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_shaderlab.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_skill.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_solidity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_spin.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_stylelint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_stylus.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_symfony.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_systemd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_systemverilog.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_testcafe.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_testjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_tex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_tm.svg +141 -0
- package/nuxt-app/.output/public/icons/file_type_light_tmux.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_todo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_toit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_toml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_toon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_tree.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_turbo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_unibeautify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vash.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vercel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vitest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vsix.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_vsixmanifest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_xfl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_xorg.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_yaml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_light_yaml_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lighthouse.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lilypond.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lime.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lintstagedrc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_liquid.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lisp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_livescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lnk.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_locale.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_log.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lolcode.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lsl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lua.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_luau.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_lync.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mailing.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_manifest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_manifest_bak.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_manifest_skip.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_map.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mariadb.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_markdown.svg +65 -0
- package/nuxt-app/.output/public/icons/file_type_markdownlint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_markdownlint_ignore.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_marko.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_markojs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_markuplint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_master-co.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_matlab.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_maven.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_maxscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_maya.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mcp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mdx-components.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mdx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mdxlint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mediawiki.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mercurial.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mermaid.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_meson.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_metal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_meteor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_minecraft.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mise.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mivascript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mjml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mocha.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_modernizr.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mojo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mojolicious.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_moleculer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mondoo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mongo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_monotone.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_motif.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mson.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mustache.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mvt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mvtcss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mvtjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mypy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_mysql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_n64.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nanostaged.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ndst.svg +7 -0
- package/nuxt-app/.output/public/icons/file_type_nearly.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_neo4j.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_adapter_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_adapter_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_controller_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_controller_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_decorator_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_decorator_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_filter_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_filter_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_gateway_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_gateway_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_guard_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_guard_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_interceptor_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_interceptor_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_middleware_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_middleware_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_module_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_module_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_pipe_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_pipe_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_service_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nest_service_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nestjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_netlify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_next.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nextflow.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_css.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_html.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_less.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_sass.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_scss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_component_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_controller_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_controller_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_directive_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_directive_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_directive_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_directive_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_directive_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_guard_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_guard_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_guard_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_interceptor_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_interceptor_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_interceptor_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_module_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_module_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_module_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_module_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_module_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_pipe_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_pipe_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_pipe_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_pipe_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_pipe_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_routing_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_routing_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_routing_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_routing_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_routing_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_service_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_service_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_service_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_service_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_service_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_smart_component_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_smart_component_js.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_smart_component_js2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_smart_component_ts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_smart_component_ts2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ng_tailwind.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nginx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nim.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nimble.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ninja.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nix.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_njsproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_noc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_node.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_node2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nodemon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_npm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_npmpackagejsonlint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nsi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nsri-integrity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nsri.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nuget.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_numpy.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nunjucks.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nushell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nuxt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_nyc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_objectivec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_objectivecpp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_objidconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ocaml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ocaml_intf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ogone.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_onenote.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_opam.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_openHAB.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_opencl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_openscad.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_opentofu.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_org.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_outlook.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ovpn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_oxc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_package.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_packship.svg +4 -0
- package/nuxt-app/.output/public/icons/file_type_paket.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pandacss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_patch.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pcl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pddl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pddl_happenings.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pddl_plan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pdf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pdf2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pdm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_peeky.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_perl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_perl2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_perl6.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pgsql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_photoshop.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_photoshop2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_php.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_php2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_php3.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_phpcsfixer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_phpstan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_phpunit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_phraseapp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pine.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pip.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pipeline.svg +3 -0
- package/nuxt-app/.output/public/icons/file_type_plantuml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_platformio.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_playwright.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_plsql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_plsql_package.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_plsql_package_body.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_plsql_package_header.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_plsql_package_spec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pm2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pnpm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_poedit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_poetry.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_polyglot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_polymer.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pony.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_postcss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_postcssconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_postman.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_postscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powerpoint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powerpoint2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_format.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_psd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_psd2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_psm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_psm2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_powershell_types.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_preact.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_precommit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_prettier.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_prisma.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_prismaconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_processinglang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_procfile.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_progress.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_prolog.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_prometheus.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_protobuf.svg +9 -0
- package/nuxt-app/.output/public/icons/file_type_protractor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_publiccode.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_publisher.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pug.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pulumi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_puppet.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_purescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_purgecss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pyenv.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pypi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pyret.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pyscript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pytest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_python.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pythowo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pytyped.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_pyup.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_q.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_qbs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_qlikview.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_qml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_qmldir.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_qsharp.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_quasar.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_r.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ra_syntax_tree.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_racket.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rails.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_railway.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_raku.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_raml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_razor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_razzle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_reactjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_reactrouter.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_reacttemplate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_reactts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_reason.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_red.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_registry.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rego.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rehype.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_remark.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_renovate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_replit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_retext.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rexx.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_riot.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ripple.svg +4 -0
- package/nuxt-app/.output/public/icons/file_type_rmd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rnc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_robotframework.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_robots.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rolldown.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rollup.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rome.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ron.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rspec.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rubocop.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ruby.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rust.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_rust_toolchain.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_s-lang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_safetensors.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sails.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_saltstack.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_san.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sapphire_framework_cli.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sas.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sass.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sbt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_scala.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_scilab.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_script.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_scss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_scss2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sdlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_search_result.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_seedkit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sentry.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sequelize.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_serverless.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_shadcn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_shaderlab.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_shell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_shellcheck.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_shuttle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_silverstripe.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sino.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sitemap.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_siyuan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sketch.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_skill.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_skipper.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_slang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_slashup.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_slice.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_slim.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_slint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sln.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sln2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_smarty.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_smithery.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_snakemake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_snapcraft.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_snaplet.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_snort.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_snyk.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_solidarity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_solidity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_source.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_spacengine.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sparql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_spin.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sqf.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sql.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sqlite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_squirrel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sst.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stackblitz.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stata.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stencil.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_storyboard.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_storybook.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stryker.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stylable.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_style.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_styled.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stylelint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stylish_haskell.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_stylus.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_sublime.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_subversion.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_svelte.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_svelteconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_svg.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_svgo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_swagger.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_swc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_swift.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_swig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_symfony.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_syncpack.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_systemd.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_systemverilog.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_t4tt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tailwind.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tamagui.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_taplo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_taskfile.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tauri.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tcl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_teal.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_templ.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tera.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_terraform.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_test.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_testcafe.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_testjs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_testplane.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_testts.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_text.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_textile.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tfs.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tiltfile.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tmux.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_todo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_toit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_toml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_toon.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tox.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_travis.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tree.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tres.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_truffle.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_trunk.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tsbuildinfo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tscn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tsconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tsconfig_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tsdoc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tsdown.svg +2 -0
- package/nuxt-app/.output/public/icons/file_type_tslint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_ttcn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_tuc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_turbo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_twig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typedoc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typescript.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typescript_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typescriptdef.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typescriptdef_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_typo3.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_uiua.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_unibeautify.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_unison.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_unlicense.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_unocss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_uv.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vagrant.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vala.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vanilla_extract.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vapi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vapor.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vash.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vb.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vba.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vbhtml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vbproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vcxproj.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_velocity.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vento.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vercel.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_verilog.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vhdl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_video.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_view.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vim.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vite.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vitest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vlang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_volt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vroom.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vscode-insiders.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vscode.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vscode2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vscode3.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vscode_test.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vsix.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vsixmanifest.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vue.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vueconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vvvvvv.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_vyper.svg +3 -0
- package/nuxt-app/.output/public/icons/file_type_wallaby.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wally.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wasm.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_watchmanconfig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wdio.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_weblate.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_webpack.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wenyan.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wercker.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wgsl.svg +86 -0
- package/nuxt-app/.output/public/icons/file_type_wikitext.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_windi.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wit.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wolfram.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_word.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_word2.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wpml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wurst.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wxml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wxss.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_wxt.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xaml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xcode.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xfl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xib.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xliff.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xmake.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xo.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xorg.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xquery.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_xsl.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yacc.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yaml.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yaml_official.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yamllint.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yandex.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yang.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yarn.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_yeoman.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_zig.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_zip.svg +1 -0
- package/nuxt-app/.output/public/icons/file_type_zip2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_android.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_android_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_angular.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_angular_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_apache.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_apache_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_api.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_api_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_app.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_app_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_arangodb.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_arangodb_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_asset.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_asset_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_astro.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_astro_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_audio.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_audio_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_aurelia.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_aurelia_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_aws.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_aws_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_azure.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_azure_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_azurepipelines.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_azurepipelines_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_binary.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_binary_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bloc.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bloc_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_blueprint.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_blueprint_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bot.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bot_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bower.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_bower_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_buildkite.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_buildkite_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cake.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cake_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cargo.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cargo_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_certificate.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_certificate_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_changesets.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_changesets_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_chef.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_chef_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_circleci.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_circleci_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_claude.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_claude_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cli.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cli_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_client.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_client_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cloudflare.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cloudflare_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cmake.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cmake_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_common.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_common_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_component.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_component_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_composer.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_composer_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_config.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_config_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_controller.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_controller_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_coverage.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_coverage_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_css.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_css2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_css2_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_css_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cubit.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cubit_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cursor.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cursor_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cypress.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_cypress_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dapr.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dapr_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dart.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dart_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_datadog.svg +66 -0
- package/nuxt-app/.output/public/icons/folder_type_datadog_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_db.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_db_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_debian.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_debian_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dependabot.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dependabot_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_devcontainer.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_devcontainer_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dist.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_dist_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_docker.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_docker_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_docs.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_docs_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_e2e.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_e2e_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_elasticbeanstalk.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_elasticbeanstalk_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_electron.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_electron_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_expo.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_expo_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_favicon.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_favicon_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_flow.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_flow_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_flutter.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_flutter_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_fonts.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_fonts_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_frontcommerce.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_frontcommerce_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gcp.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gcp_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gemini.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gemini_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_git.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_git_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_github.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_github_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gitlab.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gitlab_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_godot.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_godot_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gradle.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gradle_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_graphql.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_graphql_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_grunt.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_grunt_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gulp.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_gulp_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_haxelib.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_haxelib_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_helper.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_helper_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_histoire.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_histoire_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_hook.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_hook_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_husky.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_husky_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_idea.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_idea_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_images.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_images_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_include.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_include_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_interfaces.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_interfaces_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_ios.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_ios_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_js.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_js_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_json.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_json_official.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_json_official_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_json_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_junie.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_junie_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_kotlin.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_kotlin_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_kubernetes.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_kubernetes_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_less.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_less_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_library.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_library_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_cursor.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_cursor_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_cypress.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_cypress_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_electron.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_electron_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_expo.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_expo_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_fonts.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_fonts_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_gradle.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_gradle_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_meteor.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_meteor_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_mypy.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_mypy_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_mysql.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_mysql_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_node.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_node_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_redux.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_redux_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_sass.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_sass_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_zed.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_light_zed_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_linux.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_linux_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_locale.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_locale_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_log.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_log_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_macos.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_macos_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mariadb.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mariadb_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_maven.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_maven_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mediawiki.svg +41 -0
- package/nuxt-app/.output/public/icons/folder_type_mediawiki_opened.svg +42 -0
- package/nuxt-app/.output/public/icons/folder_type_memcached.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_memcached_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_meteor.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_meteor_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_middleware.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_middleware_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_minecraft.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_minecraft_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_minikube.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_minikube_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mjml.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mjml_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mock.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mock_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_model.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_model_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_module.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_module_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mojo.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mojo_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mongodb.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mongodb_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mypy.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mypy_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mysql.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_mysql_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_netlify.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_netlify_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_next.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_next_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nginx.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nginx_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nix.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nix_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_node.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_node_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_notebooks.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_notebooks_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_notification.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_notification_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nuget.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nuget_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nuxt.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_nuxt_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_package.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_package_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_paket.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_paket_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_php.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_php_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_platformio.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_platformio_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_plugin.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_plugin_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_prisma.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_prisma_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_private.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_private_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_public.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_public_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_pytest.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_pytest_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_python.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_python_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_ravendb.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_ravendb_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_redis.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_redis_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_redux.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_redux_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_route.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_route_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_sass.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_sass_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_script.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_script_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_seedkit.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_seedkit_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_server.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_server_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_services.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_services_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_shared.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_shared_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_snaplet.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_snaplet_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_spin.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_spin_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_src.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_src_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_sso.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_sso_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_story.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_story_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_style.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_style_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_supabase.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_supabase_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_svelte.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_svelte_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_tauri.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_tauri_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_temp.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_temp_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_template.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_template_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_test.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_test_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_theme.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_theme_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_tools.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_tools_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_travis.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_travis_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_trunk.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_trunk_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_turbo.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_turbo_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typescript.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typescript_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typings.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typings2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typings2_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_typings_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vagrant.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vagrant_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vercel.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vercel_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_video.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_video_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_view.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_view_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vitepress.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vitepress_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vs.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vs2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vs2_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vs_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode2_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode3.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode3_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test2.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test2_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test3.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test3_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_vscode_test_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_wasm.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_wasm_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_webpack.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_webpack_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_windows.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_windows_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_windsurf.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_windsurf_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_wit.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_wit_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_www.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_www_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_yarn.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_yarn_opened.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_zed.svg +1 -0
- package/nuxt-app/.output/public/icons/folder_type_zed_opened.svg +1 -0
- package/nuxt-app/.output/public/index.html +9 -6
- package/package.json +26 -4
- package/server/index.js +45 -10
- package/server/routes/ai-dev/index.js +175 -0
- package/server/routes/ai.js +40 -0
- package/server/routes/files.js +119 -3
- package/server/routes/git.js +276 -0
- package/server/routes/stt.js +66 -0
- package/server/socket.js +411 -21
- package/server/utils/board-hooks.js +30 -0
- package/server/utils/board-state.js +39 -4
- package/server/utils/config.js +2 -0
- package/server/utils/element-hooks.js +17 -0
- package/server/utils/element-instances.js +9 -3
- package/server/utils/element-registry.js +2 -2
- package/server/utils/elements/agent-instance.js +2 -2
- package/server/utils/elements/agent.js +0 -2
- package/server/utils/elements/chat-view.js +2 -2
- package/server/utils/elements/html.js +2 -2
- package/server/utils/elements/terminal.js +38 -0
- package/server/utils/elements/web-preview.js +31 -0
- package/server/utils/file-utils.js +94 -20
- package/server/utils/file-watcher.js +93 -0
- package/server/utils/git.js +516 -0
- package/server/utils/orchestration-graph.js +359 -0
- package/server/utils/server-app.js +23 -0
- package/server/utils/session-watcher.js +2 -63
- package/server/utils/terminal-manager.js +212 -0
- package/server/utils/veil-client.js +229 -9
- package/server/utils/veil-ws.js +66 -0
- package/nuxt-app/.output/public/_nuxt/builds/latest.json +0 -1
- package/nuxt-app/.output/public/_nuxt/builds/meta/36837a3c-177e-42b6-ad7c-e2396d7093e8.json +0 -1
- package/nuxt-app/.output/public/_nuxt/entry.BQ7NhIi1.js +0 -120
- package/nuxt-app/.output/public/_nuxt/entry.CYnp7zY5.css +0 -1
- package/nuxt-app/.output/public/_nuxt/index.BEoXSIOu.css +0 -1
- package/nuxt-app/.output/public/_nuxt/index.D05qTKIv.js +0 -1
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const AGENT_TOOLS = new Set(['agent_spawn', 'agent_message', 'agent_send'])
|
|
4
|
+
const PENDING_TTL = 60_000 // 60s timeout for pending tool results
|
|
5
|
+
|
|
6
|
+
class OrchestrationGraph {
|
|
7
|
+
constructor() {
|
|
8
|
+
this._nodes = new Map() // sessionId → { id, title, agentName, instance_name, parent_session_id, status }
|
|
9
|
+
this._edges = new Map() // `${from}:${to}:${type}` → { from, to, type, count }
|
|
10
|
+
this._pending = new Map() // toolCallId → { sessionId, toolName, agentName, ts }
|
|
11
|
+
this._built = false
|
|
12
|
+
this._io = null
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
setIO(io) { this._io = io }
|
|
16
|
+
|
|
17
|
+
_emitDeltas(deltas) {
|
|
18
|
+
if (this._io && deltas.length) {
|
|
19
|
+
this._io.to('board').emit('orchestration:delta', deltas)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// PR-9 item 3a: `_ensureNode` now accepts optional `extras` carrying
|
|
24
|
+
// `instance_name` and `parent_session_id`. The first invocation creates the
|
|
25
|
+
// node + emits a `node:add` delta; later invocations BACKFILL missing extras
|
|
26
|
+
// (so a spawn-message that arrived first can be stamped with instance_name
|
|
27
|
+
// / parent_session_id once the session.created event lands). We return a
|
|
28
|
+
// `node:update` delta in the backfill case so the client store refreshes.
|
|
29
|
+
_ensureNode(sessionId, title, agentName, status, extras = {}) {
|
|
30
|
+
const existing = this._nodes.get(sessionId)
|
|
31
|
+
if (existing) {
|
|
32
|
+
let changed = false
|
|
33
|
+
if (extras.instance_name !== undefined && existing.instance_name == null && extras.instance_name != null) {
|
|
34
|
+
existing.instance_name = extras.instance_name
|
|
35
|
+
changed = true
|
|
36
|
+
}
|
|
37
|
+
if (extras.parent_session_id !== undefined && existing.parent_session_id == null && extras.parent_session_id != null) {
|
|
38
|
+
existing.parent_session_id = extras.parent_session_id
|
|
39
|
+
changed = true
|
|
40
|
+
}
|
|
41
|
+
if (agentName && !existing.agentName) {
|
|
42
|
+
existing.agentName = agentName
|
|
43
|
+
changed = true
|
|
44
|
+
}
|
|
45
|
+
if (title && (existing.title === 'Untitled' || !existing.title)) {
|
|
46
|
+
existing.title = title
|
|
47
|
+
changed = true
|
|
48
|
+
}
|
|
49
|
+
return changed ? { type: 'node:update', data: { ...existing } } : null
|
|
50
|
+
}
|
|
51
|
+
const node = {
|
|
52
|
+
id: sessionId,
|
|
53
|
+
title: title || 'Untitled',
|
|
54
|
+
agentName: agentName || '',
|
|
55
|
+
instance_name: extras.instance_name ?? null,
|
|
56
|
+
parent_session_id: extras.parent_session_id ?? null,
|
|
57
|
+
status: status || 'active',
|
|
58
|
+
}
|
|
59
|
+
this._nodes.set(sessionId, node)
|
|
60
|
+
return { type: 'node:add', data: node }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
_addOrUpdateEdge(from, to, type) {
|
|
64
|
+
const key = `${from}:${to}:${type}`
|
|
65
|
+
const existing = this._edges.get(key)
|
|
66
|
+
if (existing) {
|
|
67
|
+
existing.count++
|
|
68
|
+
return { type: 'edge:update', data: { ...existing } }
|
|
69
|
+
}
|
|
70
|
+
const edge = { from, to, type, count: 1 }
|
|
71
|
+
this._edges.set(key, edge)
|
|
72
|
+
return { type: 'edge:add', data: edge }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// PR-9 Miss1 (M4 critique): Veil's `core/router.js:416` emits
|
|
76
|
+
// `{type: 'session.created', sessionId, agentName, event: { mode,
|
|
77
|
+
// parentSessionId, instanceName, timestamp }}` whenever a sub-session is
|
|
78
|
+
// created (agent_spawn / agent_message). Studio previously dropped this
|
|
79
|
+
// event so freshly-spawned sub-sessions had no `instance_name` /
|
|
80
|
+
// `parent_session_id` until the next `/sessions` rebuild on reconnect.
|
|
81
|
+
// This handler live-stamps the graph node and (when the parent is already
|
|
82
|
+
// known) ensures a `spawn` edge so the popup tree shows accurate
|
|
83
|
+
// hierarchy immediately. Idempotent — replays update the same node.
|
|
84
|
+
handleSessionCreated({ sessionId, agentName, instance_name, parent_session_id }) {
|
|
85
|
+
if (!sessionId) return null
|
|
86
|
+
const deltas = []
|
|
87
|
+
const nd = this._ensureNode(sessionId, null, agentName || '', 'active', {
|
|
88
|
+
instance_name: instance_name ?? null,
|
|
89
|
+
parent_session_id: parent_session_id ?? null,
|
|
90
|
+
})
|
|
91
|
+
if (nd) deltas.push(nd)
|
|
92
|
+
if (parent_session_id) {
|
|
93
|
+
// Stub-create the parent if missing so the spawn edge can always be
|
|
94
|
+
// emitted. A top-level parent created in this Studio session never
|
|
95
|
+
// received its own session.created event (Veil only fires it for
|
|
96
|
+
// sub-sessions), so without this stub the edge would be dropped and
|
|
97
|
+
// getSubgraph BFS in the client would not reach the new child.
|
|
98
|
+
// Stub agentName is backfilled by processMessage when the agent_spawn
|
|
99
|
+
// tool result arrives via the parent's SSE; title only refreshes on
|
|
100
|
+
// user rename (veil:patch-session) or next bulk init at restart.
|
|
101
|
+
const parentStub = this._ensureNode(parent_session_id, null, '', 'active')
|
|
102
|
+
if (parentStub) deltas.push(parentStub)
|
|
103
|
+
// Guard with _edges.has() so a duplicate fire from processMessage's
|
|
104
|
+
// tool-result branch (lines 159) does not inflate count past 1.
|
|
105
|
+
const edgeKey = `${parent_session_id}:${sessionId}:spawn`
|
|
106
|
+
if (!this._edges.has(edgeKey)) {
|
|
107
|
+
deltas.push(this._addOrUpdateEdge(parent_session_id, sessionId, 'spawn'))
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (deltas.length) this._emitDeltas(deltas)
|
|
111
|
+
return deltas.length ? deltas : null
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Process a single message — handles both assistant (tool_calls) and tool (results)
|
|
115
|
+
processMessage(sessionId, message, agentName) {
|
|
116
|
+
const deltas = []
|
|
117
|
+
|
|
118
|
+
if (message.role === 'assistant' && Array.isArray(message.tool_calls)) {
|
|
119
|
+
for (const tc of message.tool_calls) {
|
|
120
|
+
const name = tc.function?.name || tc.name || ''
|
|
121
|
+
if (!AGENT_TOOLS.has(name)) continue
|
|
122
|
+
|
|
123
|
+
if (name === 'agent_spawn') {
|
|
124
|
+
// PR-9 item 3a: agent_spawn args may carry `instance_name`. Pull it
|
|
125
|
+
// out so the new sub-node is stamped immediately, before any
|
|
126
|
+
// session.created / GET /sessions backfill races.
|
|
127
|
+
const spawnArgs = this._extractArgs(tc)
|
|
128
|
+
const instanceName = spawnArgs?.instance_name ?? null
|
|
129
|
+
|
|
130
|
+
// Check if result is already available (history path)
|
|
131
|
+
const resultId = this._extractSessionIdFromResult(tc.result)
|
|
132
|
+
if (resultId) {
|
|
133
|
+
const nd = this._ensureNode(sessionId, null, agentName, 'active')
|
|
134
|
+
if (nd) deltas.push(nd)
|
|
135
|
+
const cd = this._ensureNode(resultId, null, '', 'active', {
|
|
136
|
+
instance_name: instanceName,
|
|
137
|
+
parent_session_id: sessionId,
|
|
138
|
+
})
|
|
139
|
+
if (cd) deltas.push(cd)
|
|
140
|
+
const edgeKey = `${sessionId}:${resultId}:spawn`
|
|
141
|
+
if (!this._edges.has(edgeKey)) {
|
|
142
|
+
deltas.push(this._addOrUpdateEdge(sessionId, resultId, 'spawn'))
|
|
143
|
+
}
|
|
144
|
+
} else if (tc.id) {
|
|
145
|
+
// Streaming path: result not yet available, store pending
|
|
146
|
+
this._pending.set(tc.id, { sessionId, toolName: name, agentName, ts: Date.now(), instanceName })
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
// agent_message / agent_send — target session ID is in the arguments
|
|
150
|
+
const args = this._extractArgs(tc)
|
|
151
|
+
const targetId = args ? (args.session_id || args.sessionId || null) : null
|
|
152
|
+
if (targetId) {
|
|
153
|
+
const nd = this._ensureNode(sessionId, null, agentName, 'active')
|
|
154
|
+
if (nd) deltas.push(nd)
|
|
155
|
+
const td = this._ensureNode(targetId, null, '', 'active')
|
|
156
|
+
if (td) deltas.push(td)
|
|
157
|
+
deltas.push(this._addOrUpdateEdge(sessionId, targetId, 'message'))
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Tool result — resolve pending agent_spawn
|
|
164
|
+
if (message.role === 'tool' && message.tool_call_id) {
|
|
165
|
+
const pending = this._pending.get(message.tool_call_id)
|
|
166
|
+
if (pending && pending.toolName === 'agent_spawn') {
|
|
167
|
+
this._pending.delete(message.tool_call_id)
|
|
168
|
+
const spawnedId = this._extractSessionIdFromResult(message.content)
|
|
169
|
+
if (spawnedId) {
|
|
170
|
+
const nd = this._ensureNode(pending.sessionId, null, pending.agentName, 'active')
|
|
171
|
+
if (nd) deltas.push(nd)
|
|
172
|
+
const cd = this._ensureNode(spawnedId, null, '', 'active', {
|
|
173
|
+
instance_name: pending.instanceName ?? null,
|
|
174
|
+
parent_session_id: pending.sessionId,
|
|
175
|
+
})
|
|
176
|
+
if (cd) deltas.push(cd)
|
|
177
|
+
// Guard against handleSessionCreated having already added this edge
|
|
178
|
+
// — spawn is one-shot per parent/child pair, count must stay at 1.
|
|
179
|
+
const edgeKey = `${pending.sessionId}:${spawnedId}:spawn`
|
|
180
|
+
if (!this._edges.has(edgeKey)) {
|
|
181
|
+
deltas.push(this._addOrUpdateEdge(pending.sessionId, spawnedId, 'spawn'))
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return deltas.length ? deltas : null
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Process full message history for a session (startup scan)
|
|
191
|
+
processSessionHistory(sessionId, messages, agentName) {
|
|
192
|
+
const deltas = []
|
|
193
|
+
for (const msg of messages) {
|
|
194
|
+
const d = this.processMessage(sessionId, msg, agentName)
|
|
195
|
+
if (d) deltas.push(...d)
|
|
196
|
+
}
|
|
197
|
+
return deltas.length ? deltas : null
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
handleSessionDeleted(sessionId) {
|
|
201
|
+
const deltas = []
|
|
202
|
+
if (this._nodes.has(sessionId)) {
|
|
203
|
+
this._nodes.delete(sessionId)
|
|
204
|
+
deltas.push({ type: 'node:remove', data: { id: sessionId } })
|
|
205
|
+
}
|
|
206
|
+
// Collect keys first to avoid deleting during iteration
|
|
207
|
+
const toRemove = []
|
|
208
|
+
for (const [key, edge] of this._edges) {
|
|
209
|
+
if (edge.from === sessionId || edge.to === sessionId) {
|
|
210
|
+
toRemove.push(key)
|
|
211
|
+
deltas.push({ type: 'edge:remove', data: edge })
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
for (const key of toRemove) this._edges.delete(key)
|
|
215
|
+
return deltas.length ? deltas : null
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
handleSessionUpdated(sessionId, meta) {
|
|
219
|
+
const node = this._nodes.get(sessionId)
|
|
220
|
+
if (!node) return null
|
|
221
|
+
let changed = false
|
|
222
|
+
if (meta.title && meta.title !== node.title) { node.title = meta.title; changed = true }
|
|
223
|
+
if (meta.status && meta.status !== node.status) { node.status = meta.status; changed = true }
|
|
224
|
+
if (meta.agent_name && meta.agent_name !== node.agentName) { node.agentName = meta.agent_name; changed = true }
|
|
225
|
+
if (meta.instance_name !== undefined && meta.instance_name !== node.instance_name) {
|
|
226
|
+
node.instance_name = meta.instance_name
|
|
227
|
+
changed = true
|
|
228
|
+
}
|
|
229
|
+
if (meta.parent_session_id !== undefined && meta.parent_session_id !== node.parent_session_id) {
|
|
230
|
+
node.parent_session_id = meta.parent_session_id
|
|
231
|
+
changed = true
|
|
232
|
+
}
|
|
233
|
+
return changed ? [{ type: 'node:update', data: { ...node } }] : null
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
getFullGraph() {
|
|
237
|
+
return {
|
|
238
|
+
nodes: Object.fromEntries(this._nodes),
|
|
239
|
+
edges: [...this._edges.values()],
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
hasOrchestration(sessionId) {
|
|
244
|
+
return this._nodes.has(sessionId)
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Reset graph state (used before rebuild on reconnect)
|
|
248
|
+
reset() {
|
|
249
|
+
this._nodes.clear()
|
|
250
|
+
this._edges.clear()
|
|
251
|
+
this._pending.clear()
|
|
252
|
+
this._built = false
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Periodic cleanup of stale pending entries
|
|
256
|
+
cleanupPending() {
|
|
257
|
+
const now = Date.now()
|
|
258
|
+
for (const [id, entry] of this._pending) {
|
|
259
|
+
if (now - entry.ts > PENDING_TTL) this._pending.delete(id)
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
_extractArgs(tc) {
|
|
264
|
+
try {
|
|
265
|
+
const raw = tc.function?.arguments ?? tc.args
|
|
266
|
+
return typeof raw === 'string' ? JSON.parse(raw) : (raw || {})
|
|
267
|
+
} catch { return null }
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
_extractSessionIdFromArgs(tc) {
|
|
271
|
+
const args = this._extractArgs(tc)
|
|
272
|
+
if (!args) return null
|
|
273
|
+
return args.session_id || args.sessionId || null
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
_extractSessionIdFromResult(content) {
|
|
277
|
+
if (!content) return null
|
|
278
|
+
try {
|
|
279
|
+
const result = typeof content === 'string' ? JSON.parse(content) : content
|
|
280
|
+
if (typeof result === 'object' && result !== null) {
|
|
281
|
+
return result.session_id || result.sessionId || null
|
|
282
|
+
}
|
|
283
|
+
return null
|
|
284
|
+
} catch {
|
|
285
|
+
return null
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const _graph = new OrchestrationGraph()
|
|
291
|
+
|
|
292
|
+
// Cleanup pending entries every 30s
|
|
293
|
+
setInterval(() => _graph.cleanupPending(), 30_000)
|
|
294
|
+
|
|
295
|
+
async function initOrchestrationGraph(veilGet) {
|
|
296
|
+
// Reset before rebuild (handles reconnect without inflating counts)
|
|
297
|
+
_graph.reset()
|
|
298
|
+
try {
|
|
299
|
+
const sessRes = await veilGet('/sessions?limit=10000')
|
|
300
|
+
const sessions = Array.isArray(sessRes) ? sessRes : (sessRes.sessions || sessRes.data || [])
|
|
301
|
+
|
|
302
|
+
// Bootstrap nodes from /sessions — provides title, instance_name,
|
|
303
|
+
// parent_session_id, agent_name, status, and includes lone top-level
|
|
304
|
+
// sessions that /orchestration/graph omits.
|
|
305
|
+
for (const session of sessions) {
|
|
306
|
+
_graph._ensureNode(session.id, session.title || 'Untitled', session.agent_name || '', session.status || 'active', {
|
|
307
|
+
instance_name: session.instance_name ?? null,
|
|
308
|
+
parent_session_id: session.parent_session_id ?? null,
|
|
309
|
+
})
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Fetch edges from /orchestration/graph (single bulk call replacing N+1 messages loop)
|
|
313
|
+
let graphEdges = []
|
|
314
|
+
let graphNodes = []
|
|
315
|
+
try {
|
|
316
|
+
const graphRes = await veilGet('/orchestration/graph?depth=50')
|
|
317
|
+
graphEdges = Array.isArray(graphRes?.edges) ? graphRes.edges : []
|
|
318
|
+
graphNodes = Array.isArray(graphRes?.nodes) ? graphRes.nodes : []
|
|
319
|
+
} catch (err) {
|
|
320
|
+
console.warn(`[orchestration] GET /orchestration/graph failed, proceeding with empty edges: ${err.message}`)
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// Defensive: ensure every node referenced by the graph API has a row in _nodes
|
|
324
|
+
for (const node of graphNodes) {
|
|
325
|
+
if (node.sessionId && !_graph._nodes.has(node.sessionId)) {
|
|
326
|
+
_graph._ensureNode(node.sessionId, null, node.agentName || '', node.status || 'active', {
|
|
327
|
+
instance_name: null,
|
|
328
|
+
parent_session_id: node.parentSessionId ?? null,
|
|
329
|
+
})
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Adapt edges from /orchestration/graph into the local graph.
|
|
334
|
+
// Use _edges.has() guard before calling _addOrUpdateEdge so that a live WS
|
|
335
|
+
// delta that already created the edge during init isn't double-incremented.
|
|
336
|
+
for (const e of graphEdges) {
|
|
337
|
+
if (e.type === 'spawn' && e.parentSessionId && e.childSessionId) {
|
|
338
|
+
const key = `${e.parentSessionId}:${e.childSessionId}:spawn`
|
|
339
|
+
if (!_graph._edges.has(key)) {
|
|
340
|
+
_graph._addOrUpdateEdge(e.parentSessionId, e.childSessionId, 'spawn')
|
|
341
|
+
}
|
|
342
|
+
} else if (e.type === 'message' && e.fromSessionId && e.targetSessionId) {
|
|
343
|
+
const key = `${e.fromSessionId}:${e.targetSessionId}:message`
|
|
344
|
+
if (!_graph._edges.has(key)) {
|
|
345
|
+
_graph._addOrUpdateEdge(e.fromSessionId, e.targetSessionId, 'message')
|
|
346
|
+
}
|
|
347
|
+
const edge = _graph._edges.get(key)
|
|
348
|
+
if (edge && typeof e.messageCount === 'number') edge.count = e.messageCount
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
_graph._built = true
|
|
353
|
+
console.log(`[orchestration] Graph built: ${_graph._nodes.size} nodes, ${_graph._edges.size} edges (sessions API + graph API)`)
|
|
354
|
+
} catch (err) {
|
|
355
|
+
console.warn(`[orchestration] Build failed, starting empty: ${err.message}`)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
module.exports = { orchestrationGraph: _graph, initOrchestrationGraph }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Express app and httpServer singleton — mirrors the socket-io.js pattern.
|
|
5
|
+
* Call setApp(app) and setHttpServer(server) from index.js after creation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
let _app = null
|
|
9
|
+
let _httpServer = null
|
|
10
|
+
|
|
11
|
+
function setApp(app) { _app = app }
|
|
12
|
+
function getApp() {
|
|
13
|
+
if (!_app) throw new Error('Express app not initialised yet')
|
|
14
|
+
return _app
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function setHttpServer(server) { _httpServer = server }
|
|
18
|
+
function getHttpServer() {
|
|
19
|
+
if (!_httpServer) throw new Error('HTTP server not initialised yet')
|
|
20
|
+
return _httpServer
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = { setApp, getApp, setHttpServer, getHttpServer }
|
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { veilGet } = require('./veil-client.js')
|
|
4
|
-
const { getIO } = require('./socket-io.js')
|
|
5
4
|
|
|
6
5
|
// Map<sessionId, number> — message count baseline (messages already seen by Studio)
|
|
7
|
-
// undefined = not initialized → first syncSession will set baseline without emitting
|
|
8
6
|
const _sessionState = new Map()
|
|
9
7
|
|
|
10
|
-
// Prevent concurrent syncs for the same session
|
|
11
|
-
const _syncing = new Set()
|
|
12
|
-
|
|
13
8
|
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
14
9
|
|
|
15
|
-
async function syncSession(sessionId) {
|
|
16
|
-
if (_syncing.has(sessionId)) return
|
|
17
|
-
_syncing.add(sessionId)
|
|
18
|
-
try {
|
|
19
|
-
await _doSync(sessionId)
|
|
20
|
-
} catch (err) {
|
|
21
|
-
console.warn(`[session-sync] syncSession ${sessionId} failed: ${err.message}`)
|
|
22
|
-
} finally {
|
|
23
|
-
_syncing.delete(sessionId)
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
10
|
async function touchSession(sessionId) {
|
|
28
11
|
// Refresh baseline without emitting — call after chat:send completes
|
|
29
12
|
// so the Studio-sent messages are not re-emitted on the next external sync
|
|
@@ -36,7 +19,7 @@ async function touchSession(sessionId) {
|
|
|
36
19
|
|
|
37
20
|
async function initSessionStates() {
|
|
38
21
|
// Pre-populate message-count baselines for all active sessions so that
|
|
39
|
-
// the
|
|
22
|
+
// the WebSocket bridge only emits truly NEW messages
|
|
40
23
|
try {
|
|
41
24
|
const res = await veilGet('/sessions')
|
|
42
25
|
const sessions = Array.isArray(res) ? res : (res.sessions ?? [])
|
|
@@ -61,48 +44,4 @@ async function initSessionStates() {
|
|
|
61
44
|
}
|
|
62
45
|
}
|
|
63
46
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
async function _doSync(sessionId) {
|
|
67
|
-
const res = await veilGet(`/sessions/${encodeURIComponent(sessionId)}/messages`)
|
|
68
|
-
const messages = Array.isArray(res) ? res : (res.messages ?? [])
|
|
69
|
-
|
|
70
|
-
const baseline = _sessionState.get(sessionId)
|
|
71
|
-
|
|
72
|
-
if (baseline === undefined) {
|
|
73
|
-
// First contact with this session — set baseline without emitting historical messages
|
|
74
|
-
_sessionState.set(sessionId, messages.length)
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const newMessages = messages.slice(baseline)
|
|
79
|
-
_sessionState.set(sessionId, messages.length)
|
|
80
|
-
|
|
81
|
-
if (newMessages.length === 0) return
|
|
82
|
-
|
|
83
|
-
const io = getIO()
|
|
84
|
-
|
|
85
|
-
for (const msg of newMessages) {
|
|
86
|
-
if (msg.role === 'user') {
|
|
87
|
-
const content = typeof msg.content === 'string'
|
|
88
|
-
? msg.content
|
|
89
|
-
: (msg.content?.[0]?.text ?? '')
|
|
90
|
-
io.to('board').emit('chat:user-message', {
|
|
91
|
-
sessionId,
|
|
92
|
-
agentName: msg.agentName || '',
|
|
93
|
-
message: content,
|
|
94
|
-
})
|
|
95
|
-
} else if (msg.role === 'assistant') {
|
|
96
|
-
io.to('board').emit('chat:stream', {
|
|
97
|
-
sessionId,
|
|
98
|
-
eventType: 'message',
|
|
99
|
-
data: msg,
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Signal end of streaming after the batch
|
|
105
|
-
io.to('board').emit('chat:done', { sessionId, message: null, tokenUsage: null })
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
module.exports = { syncSession, touchSession, initSessionStates }
|
|
47
|
+
module.exports = { touchSession, initSessionStates }
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const pty = require('node-pty')
|
|
4
|
+
const { getIO } = require('./socket-io.js')
|
|
5
|
+
|
|
6
|
+
const MAX_BUFFER_BYTES = 2 * 1024 * 1024 // 2 MB
|
|
7
|
+
|
|
8
|
+
// terminalId → TerminalSession
|
|
9
|
+
const sessions = new Map()
|
|
10
|
+
// socketId → Set<terminalId> (reverse index for fast disconnect cleanup)
|
|
11
|
+
const socketToTerminals = new Map()
|
|
12
|
+
|
|
13
|
+
// ── Public API ───────────────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Spawn (or respawn) a PTY for the given terminalId.
|
|
17
|
+
* Safe to call on an already-exited session — clears the buffer and creates a fresh PTY.
|
|
18
|
+
* Will log a warning and do nothing if called for a still-live session.
|
|
19
|
+
*/
|
|
20
|
+
function createPTY(terminalId, { cols = 80, rows = 24, cwd, shell } = {}) {
|
|
21
|
+
const existing = sessions.get(terminalId)
|
|
22
|
+
|
|
23
|
+
if (existing && existing.pty && !existing.exited) {
|
|
24
|
+
console.warn(`[terminal-manager] createPTY called for live session "${terminalId}" — ignoring`)
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Create (or reset) session — preserve subscriber list on respawn so existing viewers reconnect
|
|
29
|
+
const resolvedShell = shell || process.env.SHELL || '/bin/bash'
|
|
30
|
+
const resolvedCwd = cwd || process.cwd()
|
|
31
|
+
|
|
32
|
+
const session = {
|
|
33
|
+
pty: null,
|
|
34
|
+
bufferChunks: [],
|
|
35
|
+
bufferSize: 0,
|
|
36
|
+
subscribers: existing ? existing.subscribers : new Set(),
|
|
37
|
+
exited: false,
|
|
38
|
+
exitCode: 0,
|
|
39
|
+
cwd: resolvedCwd,
|
|
40
|
+
shell: resolvedShell,
|
|
41
|
+
}
|
|
42
|
+
sessions.set(terminalId, session)
|
|
43
|
+
|
|
44
|
+
let ptyProcess
|
|
45
|
+
try {
|
|
46
|
+
ptyProcess = pty.spawn(resolvedShell, [], {
|
|
47
|
+
name: 'xterm-color',
|
|
48
|
+
cols,
|
|
49
|
+
rows,
|
|
50
|
+
cwd: resolvedCwd,
|
|
51
|
+
env: { ...process.env, TERM: 'xterm-color', COLORTERM: 'truecolor' },
|
|
52
|
+
})
|
|
53
|
+
} catch (err) {
|
|
54
|
+
console.error(`[terminal-manager] Failed to spawn PTY for "${terminalId}":`, err.message)
|
|
55
|
+
sessions.delete(terminalId)
|
|
56
|
+
const io = getIO()
|
|
57
|
+
for (const socketId of session.subscribers) {
|
|
58
|
+
io.to(socketId).emit('terminal:exit', { terminalId, code: -1 })
|
|
59
|
+
}
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
session.pty = ptyProcess
|
|
64
|
+
|
|
65
|
+
ptyProcess.on('data', (data) => {
|
|
66
|
+
// Append raw output to replay buffer (ANSI sequences included — xterm re-parses on write)
|
|
67
|
+
session.bufferChunks.push(data)
|
|
68
|
+
session.bufferSize += data.length
|
|
69
|
+
// Trim oldest chunks when over cap
|
|
70
|
+
while (session.bufferSize > MAX_BUFFER_BYTES && session.bufferChunks.length > 1) {
|
|
71
|
+
session.bufferSize -= session.bufferChunks[0].length
|
|
72
|
+
session.bufferChunks.shift()
|
|
73
|
+
}
|
|
74
|
+
// Broadcast to all subscribers
|
|
75
|
+
const io = getIO()
|
|
76
|
+
for (const socketId of session.subscribers) {
|
|
77
|
+
io.to(socketId).emit('terminal:data', { terminalId, data })
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
ptyProcess.on('exit', (code) => {
|
|
82
|
+
// Guard: session may have already been removed by destroyPTY()
|
|
83
|
+
if (!sessions.has(terminalId)) return
|
|
84
|
+
session.pty = null
|
|
85
|
+
session.exited = true
|
|
86
|
+
session.exitCode = code ?? 0
|
|
87
|
+
const io = getIO()
|
|
88
|
+
for (const socketId of session.subscribers) {
|
|
89
|
+
io.to(socketId).emit('terminal:exit', { terminalId, code: code ?? 0 })
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Kill the PTY and remove the session entirely.
|
|
96
|
+
* Called by: element onDestroy(), terminal:destroy socket event.
|
|
97
|
+
*/
|
|
98
|
+
function destroyPTY(terminalId) {
|
|
99
|
+
const session = sessions.get(terminalId)
|
|
100
|
+
if (!session) return
|
|
101
|
+
if (session.pty) {
|
|
102
|
+
try { session.pty.kill() } catch (_) {}
|
|
103
|
+
session.pty = null
|
|
104
|
+
}
|
|
105
|
+
// Clean up reverse-map entries for all subscribers
|
|
106
|
+
for (const socketId of session.subscribers) {
|
|
107
|
+
const set = socketToTerminals.get(socketId)
|
|
108
|
+
if (set) set.delete(terminalId)
|
|
109
|
+
}
|
|
110
|
+
sessions.delete(terminalId)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Register a socket as a viewer of a terminal session.
|
|
115
|
+
* Creates a stub session entry if one doesn't exist yet.
|
|
116
|
+
* Returns true if this is a NEW subscription (socket wasn't already subscribed).
|
|
117
|
+
*/
|
|
118
|
+
function subscribe(terminalId, socketId) {
|
|
119
|
+
if (!sessions.has(terminalId)) {
|
|
120
|
+
sessions.set(terminalId, {
|
|
121
|
+
pty: null, bufferChunks: [], bufferSize: 0,
|
|
122
|
+
subscribers: new Set(), exited: false, exitCode: 0,
|
|
123
|
+
})
|
|
124
|
+
}
|
|
125
|
+
const session = sessions.get(terminalId)
|
|
126
|
+
const isNew = !session.subscribers.has(socketId)
|
|
127
|
+
session.subscribers.add(socketId)
|
|
128
|
+
|
|
129
|
+
if (!socketToTerminals.has(socketId)) socketToTerminals.set(socketId, new Set())
|
|
130
|
+
socketToTerminals.get(socketId).add(terminalId)
|
|
131
|
+
|
|
132
|
+
return isNew
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Remove a socket from all terminal subscriptions.
|
|
137
|
+
* Called on socket disconnect — does NOT kill any PTYs.
|
|
138
|
+
*/
|
|
139
|
+
function unsubscribeSocket(socketId) {
|
|
140
|
+
const terminals = socketToTerminals.get(socketId)
|
|
141
|
+
if (!terminals) return
|
|
142
|
+
for (const terminalId of terminals) {
|
|
143
|
+
const session = sessions.get(terminalId)
|
|
144
|
+
if (session) session.subscribers.delete(socketId)
|
|
145
|
+
}
|
|
146
|
+
socketToTerminals.delete(socketId)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function write(terminalId, data) {
|
|
150
|
+
const session = sessions.get(terminalId)
|
|
151
|
+
if (!session || !session.pty) return
|
|
152
|
+
session.pty.write(data)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function resize(terminalId, cols, rows) {
|
|
156
|
+
const session = sessions.get(terminalId)
|
|
157
|
+
if (!session || !session.pty) return
|
|
158
|
+
try { session.pty.resize(cols, rows) } catch (_) {}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function getReplayBuffer(terminalId) {
|
|
162
|
+
const session = sessions.get(terminalId)
|
|
163
|
+
if (!session || session.bufferChunks.length === 0) return ''
|
|
164
|
+
return session.bufferChunks.join('')
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function hasPTY(terminalId) {
|
|
168
|
+
const s = sessions.get(terminalId)
|
|
169
|
+
return !!(s && s.pty)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function isExited(terminalId) {
|
|
173
|
+
const s = sessions.get(terminalId)
|
|
174
|
+
return !!(s && s.exited)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function getPID(terminalId) {
|
|
178
|
+
const s = sessions.get(terminalId)
|
|
179
|
+
return s?.pty?.pid ?? null
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Returns metadata for all currently-tracked sessions (including exited ones).
|
|
184
|
+
* Used by clients to rediscover running terminals after a page reload.
|
|
185
|
+
*/
|
|
186
|
+
function listSessions() {
|
|
187
|
+
const result = []
|
|
188
|
+
for (const [terminalId, session] of sessions) {
|
|
189
|
+
result.push({
|
|
190
|
+
terminalId,
|
|
191
|
+
pid: session.pty?.pid ?? null,
|
|
192
|
+
cwd: session.cwd ?? null,
|
|
193
|
+
shell: session.shell ?? null,
|
|
194
|
+
exited: session.exited,
|
|
195
|
+
})
|
|
196
|
+
}
|
|
197
|
+
return result
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
module.exports = {
|
|
201
|
+
createPTY,
|
|
202
|
+
destroyPTY,
|
|
203
|
+
subscribe,
|
|
204
|
+
unsubscribeSocket,
|
|
205
|
+
write,
|
|
206
|
+
resize,
|
|
207
|
+
getReplayBuffer,
|
|
208
|
+
hasPTY,
|
|
209
|
+
isExited,
|
|
210
|
+
getPID,
|
|
211
|
+
listSessions,
|
|
212
|
+
}
|