nsarrazin commited on
Commit
de36cdc
·
unverified ·
1 Parent(s): 97802e3

feat: add a local endpoint type for inference directly from chat-ui (#1778)

Browse files

* feat: add a local endpoint type running llama.cpp from chat-ui

* fix: build image

* fix: lock file

* wip: try to make it more reliable

* feat: load chat template from .gguf file

* feat: load gguf models from `models/` folder

* fix: default config

* feat: make endpoint use chatSession instead of completion

* refactor: improve exit handling, exit immediately on second sinal

* fix: various fixes to improve reliability when calling multiple models at once

* docs: add instructions for adding .gguf files to the models directory

.env CHANGED
@@ -41,6 +41,8 @@ MODELS=`[
41
  ]
42
  }
43
  ]`
 
 
44
  ## Text Embedding Models used for websearch
45
  # Default is a model that runs locally on CPU.
46
  TEXT_EMBEDDING_MODELS = `[
 
41
  ]
42
  }
43
  ]`
44
+
45
+ LOAD_GGUF_MODELS=true
46
  ## Text Embedding Models used for websearch
47
  # Default is a model that runs locally on CPU.
48
  TEXT_EMBEDDING_MODELS = `[
.gitignore CHANGED
@@ -12,4 +12,6 @@ SECRET_CONFIG
12
  !.env.ci
13
  !.env
14
  gcp-*.json
15
- db
 
 
 
12
  !.env.ci
13
  !.env
14
  gcp-*.json
15
+ db
16
+ models/*
17
+ !models/add-your-models-here.txt
models/add-your-models-here.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ You can add .gguf files to this folder, and they will be picked up automatically by chat-ui.
package-lock.json CHANGED
@@ -86,6 +86,7 @@
86
  "js-yaml": "^4.1.0",
87
  "minimist": "^1.2.8",
88
  "mongodb-memory-server": "^10.1.2",
 
89
  "prettier": "^3.1.0",
90
  "prettier-plugin-svelte": "^3.2.6",
91
  "prettier-plugin-tailwindcss": "^0.6.11",
@@ -106,7 +107,7 @@
106
  "@anthropic-ai/vertex-sdk": "^0.4.1",
107
  "@aws-sdk/client-bedrock-runtime": "^3.631.0",
108
  "@google-cloud/vertexai": "^1.1.0",
109
- "@google/generative-ai": "^0.14.1",
110
  "aws4fetch": "^1.0.17",
111
  "cohere-ai": "^7.9.0",
112
  "openai": "^4.44.0"
@@ -1979,9 +1980,10 @@
1979
  }
1980
  },
1981
  "node_modules/@google/generative-ai": {
1982
- "version": "0.14.1",
1983
- "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.14.1.tgz",
1984
- "integrity": "sha512-pevEyZCb0Oc+dYNlSberW8oZBm4ofeTD5wN01TowQMhTwdAbGAnJMtQzoklh6Blq2AKsx8Ox6FWa44KioZLZiA==",
 
1985
  "optional": true,
1986
  "engines": {
1987
  "node": ">=18.0.0"
@@ -2031,9 +2033,9 @@
2031
  }
2032
  },
2033
  "node_modules/@huggingface/jinja": {
2034
- "version": "0.3.2",
2035
- "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.3.2.tgz",
2036
- "integrity": "sha512-F2FvuIc+w1blGsaqJI/OErRbWH6bVJDCBI8Rm5D86yZ2wlwrGERsfIaru7XUv9eYC3DMP3ixDRRtF0h6d8AZcQ==",
2037
  "license": "MIT",
2038
  "engines": {
2039
  "node": ">=18"
@@ -2754,6 +2756,23 @@
2754
  "@jridgewell/sourcemap-codec": "^1.4.14"
2755
  }
2756
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2757
  "node_modules/@mongodb-js/saslprep": {
2758
  "version": "1.1.9",
2759
  "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz",
@@ -2780,6 +2799,197 @@
2780
  "node": ">=18"
2781
  }
2782
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2783
  "node_modules/@nodelib/fs.scandir": {
2784
  "version": "2.1.5",
2785
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2812,6 +3022,372 @@
2812
  "node": ">= 8"
2813
  }
2814
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2815
  "node_modules/@open-draft/deferred-promise": {
2816
  "version": "2.2.0",
2817
  "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
@@ -2934,6 +3510,10 @@
2934
  "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
2935
  "license": "BSD-3-Clause"
2936
  },
 
 
 
 
2937
  "node_modules/@remusao/guess-url-type": {
2938
  "version": "1.3.0",
2939
  "resolved": "https://registry.npmjs.org/@remusao/guess-url-type/-/guess-url-type-1.3.0.tgz",
@@ -4304,8 +4884,22 @@
4304
  "lodash.merge": "^4.6.2",
4305
  "postcss-selector-parser": "6.0.10"
4306
  },
4307
- "peerDependencies": {
4308
- "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4309
  }
4310
  },
4311
  "node_modules/@tokenizer/token": {
@@ -4345,6 +4939,13 @@
4345
  "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
4346
  "devOptional": true
4347
  },
 
 
 
 
 
 
 
4348
  "node_modules/@types/body-parser": {
4349
  "version": "1.19.5",
4350
  "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
@@ -5128,6 +5729,43 @@
5128
  "node": ">= 8"
5129
  }
5130
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5131
  "node_modules/arg": {
5132
  "version": "5.0.2",
5133
  "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -5183,6 +5821,16 @@
5183
  "tslib": "^2.4.0"
5184
  }
5185
  },
 
 
 
 
 
 
 
 
 
 
5186
  "node_modules/asynckit": {
5187
  "version": "0.4.0",
5188
  "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -5275,6 +5923,18 @@
5275
  "integrity": "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==",
5276
  "optional": true
5277
  },
 
 
 
 
 
 
 
 
 
 
 
 
5278
  "node_modules/axobject-query": {
5279
  "version": "4.1.0",
5280
  "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
@@ -5323,6 +5983,13 @@
5323
  }
5324
  ]
5325
  },
 
 
 
 
 
 
 
5326
  "node_modules/bignumber.js": {
5327
  "version": "9.1.2",
5328
  "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
@@ -5404,6 +6071,13 @@
5404
  "url": "https://github.com/sponsors/ljharb"
5405
  }
5406
  },
 
 
 
 
 
 
 
5407
  "node_modules/bowser": {
5408
  "version": "2.11.0",
5409
  "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
@@ -5649,6 +6323,13 @@
5649
  "node": ">= 16"
5650
  }
5651
  },
 
 
 
 
 
 
 
5652
  "node_modules/chokidar": {
5653
  "version": "3.6.0",
5654
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -5692,6 +6373,22 @@
5692
  "node": ">=18"
5693
  }
5694
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5695
  "node_modules/cli-cursor": {
5696
  "version": "5.0.0",
5697
  "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
@@ -5706,6 +6403,19 @@
5706
  "url": "https://github.com/sponsors/sindresorhus"
5707
  }
5708
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
5709
  "node_modules/cli-truncate": {
5710
  "version": "4.0.0",
5711
  "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
@@ -5836,6 +6546,99 @@
5836
  "node": ">=6"
5837
  }
5838
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5839
  "node_modules/cohere-ai": {
5840
  "version": "7.13.0",
5841
  "resolved": "https://registry.npmjs.org/cohere-ai/-/cohere-ai-7.13.0.tgz",
@@ -5911,6 +6714,16 @@
5911
  "simple-swizzle": "^0.2.2"
5912
  }
5913
  },
 
 
 
 
 
 
 
 
 
 
5914
  "node_modules/colorette": {
5915
  "version": "2.0.20",
5916
  "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
@@ -5954,6 +6767,13 @@
5954
  "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
5955
  "dev": true
5956
  },
 
 
 
 
 
 
 
5957
  "node_modules/content-disposition": {
5958
  "version": "0.5.4",
5959
  "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -5993,10 +6813,30 @@
5993
  "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
5994
  "devOptional": true
5995
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5996
  "node_modules/cross-spawn": {
5997
- "version": "7.0.5",
5998
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
5999
- "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
 
6000
  "dependencies": {
6001
  "path-key": "^3.1.0",
6002
  "shebang-command": "^2.0.0",
@@ -6123,6 +6963,16 @@
6123
  "node": ">=6"
6124
  }
6125
  },
 
 
 
 
 
 
 
 
 
 
6126
  "node_modules/deep-is": {
6127
  "version": "0.1.4",
6128
  "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -6160,6 +7010,13 @@
6160
  "node": ">=0.4.0"
6161
  }
6162
  },
 
 
 
 
 
 
 
6163
  "node_modules/depd": {
6164
  "version": "2.0.0",
6165
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -6373,6 +7230,16 @@
6373
  "url": "https://github.com/fb55/entities?sponsor=1"
6374
  }
6375
  },
 
 
 
 
 
 
 
 
 
 
6376
  "node_modules/environment": {
6377
  "version": "1.1.0",
6378
  "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
@@ -7020,6 +7887,23 @@
7020
  "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
7021
  "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
7022
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7023
  "node_modules/fast-copy": {
7024
  "version": "3.0.2",
7025
  "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
@@ -7156,6 +8040,35 @@
7156
  "url": "https://github.com/sindresorhus/file-type?sponsor=1"
7157
  }
7158
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7159
  "node_modules/fill-range": {
7160
  "version": "7.1.1",
7161
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -7361,6 +8274,57 @@
7361
  "node": ">= 0.6"
7362
  }
7363
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7364
  "node_modules/fs.realpath": {
7365
  "version": "1.0.0",
7366
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -7377,15 +8341,75 @@
7377
  "darwin"
7378
  ],
7379
  "engines": {
7380
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7381
  }
7382
  },
7383
- "node_modules/function-bind": {
7384
- "version": "1.1.2",
7385
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
7386
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
7387
- "funding": {
7388
- "url": "https://github.com/sponsors/ljharb"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7389
  }
7390
  },
7391
  "node_modules/gaxios": {
@@ -7596,6 +8620,13 @@
7596
  "url": "https://github.com/sponsors/ljharb"
7597
  }
7598
  },
 
 
 
 
 
 
 
7599
  "node_modules/graphemer": {
7600
  "version": "1.4.0",
7601
  "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -7689,6 +8720,13 @@
7689
  "url": "https://github.com/sponsors/ljharb"
7690
  }
7691
  },
 
 
 
 
 
 
 
7692
  "node_modules/hash-wasm": {
7693
  "version": "4.11.0",
7694
  "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.11.0.tgz",
@@ -7950,6 +8988,13 @@
7950
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
7951
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
7952
  },
 
 
 
 
 
 
 
7953
  "node_modules/int53": {
7954
  "version": "0.2.4",
7955
  "resolved": "https://registry.npmjs.org/int53/-/int53-0.2.4.tgz",
@@ -7975,6 +9020,185 @@
7975
  "node": ">= 0.10"
7976
  }
7977
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7978
  "node_modules/is-arrayish": {
7979
  "version": "0.3.2",
7980
  "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -8035,6 +9259,19 @@
8035
  "node": ">=0.10.0"
8036
  }
8037
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
8038
  "node_modules/is-module": {
8039
  "version": "1.0.0",
8040
  "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
@@ -8099,6 +9336,19 @@
8099
  "url": "https://github.com/sponsors/sindresorhus"
8100
  }
8101
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
8102
  "node_modules/isexe": {
8103
  "version": "2.0.0",
8104
  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -8455,6 +9705,29 @@
8455
  "node": ">=6"
8456
  }
8457
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8458
  "node_modules/jsonpath": {
8459
  "version": "1.1.1",
8460
  "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz",
@@ -8543,6 +9816,13 @@
8543
  "node": ">= 0.8.0"
8544
  }
8545
  },
 
 
 
 
 
 
 
8546
  "node_modules/lilconfig": {
8547
  "version": "3.1.2",
8548
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
@@ -8744,6 +10024,13 @@
8744
  "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
8745
  "dev": true
8746
  },
 
 
 
 
 
 
 
8747
  "node_modules/lodash.isplainobject": {
8748
  "version": "4.0.6",
8749
  "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@@ -8756,6 +10043,23 @@
8756
  "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
8757
  "dev": true
8758
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8759
  "node_modules/log-update": {
8760
  "version": "6.1.0",
8761
  "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
@@ -8884,6 +10188,22 @@
8884
  "dev": true,
8885
  "license": "MIT"
8886
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8887
  "node_modules/lru-cache": {
8888
  "version": "6.0.0",
8889
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -8963,14 +10283,39 @@
8963
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
8964
  "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
8965
  "engines": {
8966
- "node": ">= 0.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8967
  }
8968
  },
8969
- "node_modules/memory-pager": {
8970
- "version": "1.5.0",
8971
- "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
8972
- "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
8973
- },
8974
  "node_modules/merge-descriptors": {
8975
  "version": "1.0.3",
8976
  "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
@@ -9123,6 +10468,19 @@
9123
  "url": "https://github.com/sponsors/isaacs"
9124
  }
9125
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
9126
  "node_modules/mlly": {
9127
  "version": "1.7.1",
9128
  "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz",
@@ -9571,6 +10929,23 @@
9571
  "node": ">=12.22.0"
9572
  }
9573
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9574
  "node_modules/node-domexception": {
9575
  "version": "1.0.0",
9576
  "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
@@ -9643,6 +11018,202 @@
9643
  "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
9644
  "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
9645
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9646
  "node_modules/node-releases": {
9647
  "version": "2.0.18",
9648
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
@@ -9689,6 +11260,23 @@
9689
  "url": "https://github.com/sponsors/sindresorhus"
9690
  }
9691
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9692
  "node_modules/nwsapi": {
9693
  "version": "2.2.12",
9694
  "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
@@ -9729,6 +11317,28 @@
9729
  "node": ">=0.10"
9730
  }
9731
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9732
  "node_modules/oidc-token-hash": {
9733
  "version": "5.0.3",
9734
  "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
@@ -9893,7 +11503,121 @@
9893
  "word-wrap": "^1.2.5"
9894
  },
9895
  "engines": {
9896
- "node": ">= 0.8.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9897
  }
9898
  },
9899
  "node_modules/outvariant": {
@@ -10007,6 +11731,19 @@
10007
  "hex-rgb": "^4.1.0"
10008
  }
10009
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
10010
  "node_modules/parse-srcset": {
10011
  "version": "1.0.2",
10012
  "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
@@ -10687,6 +12424,35 @@
10687
  }
10688
  }
10689
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10690
  "node_modules/process": {
10691
  "version": "0.11.10",
10692
  "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -10713,6 +12479,35 @@
10713
  "node": "^16 || ^18 || >=20"
10714
  }
10715
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10716
  "node_modules/protobufjs": {
10717
  "version": "7.4.0",
10718
  "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
@@ -10749,6 +12544,13 @@
10749
  "node": ">= 0.10"
10750
  }
10751
  },
 
 
 
 
 
 
 
10752
  "node_modules/psl": {
10753
  "version": "1.9.0",
10754
  "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@@ -10862,6 +12664,32 @@
10862
  "node": ">= 0.8"
10863
  }
10864
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10865
  "node_modules/read-cache": {
10866
  "version": "1.0.0",
10867
  "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -10976,6 +12804,16 @@
10976
  "url": "https://github.com/sponsors/sindresorhus"
10977
  }
10978
  },
 
 
 
 
 
 
 
 
 
 
10979
  "node_modules/reusify": {
10980
  "version": "1.0.4",
10981
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -11244,9 +13082,10 @@
11244
  }
11245
  },
11246
  "node_modules/semver": {
11247
- "version": "7.6.3",
11248
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
11249
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
 
11250
  "bin": {
11251
  "semver": "bin/semver.js"
11252
  },
@@ -11320,6 +13159,13 @@
11320
  "node": ">= 0.8"
11321
  }
11322
  },
 
 
 
 
 
 
 
11323
  "node_modules/set-cookie-parser": {
11324
  "version": "2.7.0",
11325
  "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
@@ -11438,6 +13284,22 @@
11438
  "url": "https://github.com/sponsors/isaacs"
11439
  }
11440
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11441
  "node_modules/simple-swizzle": {
11442
  "version": "0.2.2",
11443
  "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -11469,6 +13331,13 @@
11469
  "node": ">=8"
11470
  }
11471
  },
 
 
 
 
 
 
 
11472
  "node_modules/slice-ansi": {
11473
  "version": "5.0.0",
11474
  "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
@@ -11596,6 +13465,121 @@
11596
  "dev": true,
11597
  "license": "MIT"
11598
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11599
  "node_modules/streamx": {
11600
  "version": "2.20.1",
11601
  "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
@@ -12300,6 +14284,16 @@
12300
  "node": ">=8.0"
12301
  }
12302
  },
 
 
 
 
 
 
 
 
 
 
12303
  "node_modules/toidentifier": {
12304
  "version": "1.0.1",
12305
  "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -12542,6 +14536,20 @@
12542
  "tiny-inflate": "^1.0.0"
12543
  }
12544
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12545
  "node_modules/universalify": {
12546
  "version": "0.2.0",
12547
  "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
@@ -12663,7 +14671,7 @@
12663
  "version": "4.0.1",
12664
  "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
12665
  "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
12666
- "optional": true
12667
  },
12668
  "node_modules/url-parse": {
12669
  "version": "1.5.10",
@@ -12705,6 +14713,16 @@
12705
  "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
12706
  "devOptional": true
12707
  },
 
 
 
 
 
 
 
 
 
 
12708
  "node_modules/varint": {
12709
  "version": "5.0.2",
12710
  "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
@@ -13072,6 +15090,48 @@
13072
  "node": ">=8"
13073
  }
13074
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13075
  "node_modules/word-wrap": {
13076
  "version": "1.2.5",
13077
  "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -13338,6 +15398,19 @@
13338
  "url": "https://github.com/sponsors/sindresorhus"
13339
  }
13340
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
13341
  "node_modules/yoctocolors-cjs": {
13342
  "version": "2.1.2",
13343
  "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
 
86
  "js-yaml": "^4.1.0",
87
  "minimist": "^1.2.8",
88
  "mongodb-memory-server": "^10.1.2",
89
+ "node-llama-cpp": "^3.6.0",
90
  "prettier": "^3.1.0",
91
  "prettier-plugin-svelte": "^3.2.6",
92
  "prettier-plugin-tailwindcss": "^0.6.11",
 
107
  "@anthropic-ai/vertex-sdk": "^0.4.1",
108
  "@aws-sdk/client-bedrock-runtime": "^3.631.0",
109
  "@google-cloud/vertexai": "^1.1.0",
110
+ "@google/generative-ai": "^0.24.0",
111
  "aws4fetch": "^1.0.17",
112
  "cohere-ai": "^7.9.0",
113
  "openai": "^4.44.0"
 
1980
  }
1981
  },
1982
  "node_modules/@google/generative-ai": {
1983
+ "version": "0.24.0",
1984
+ "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.24.0.tgz",
1985
+ "integrity": "sha512-fnEITCGEB7NdX0BhoYZ/cq/7WPZ1QS5IzJJfC3Tg/OwkvBetMiVJciyaan297OvE4B9Jg1xvo0zIazX/9sGu1Q==",
1986
+ "license": "Apache-2.0",
1987
  "optional": true,
1988
  "engines": {
1989
  "node": ">=18.0.0"
 
2033
  }
2034
  },
2035
  "node_modules/@huggingface/jinja": {
2036
+ "version": "0.3.3",
2037
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.3.3.tgz",
2038
+ "integrity": "sha512-vQQr2JyWvVFba3Lj9es4q9vCl1sAc74fdgnEMoX8qHrXtswap9ge9uO3ONDzQB0cQ0PUyaKY2N6HaVbTBvSXvw==",
2039
  "license": "MIT",
2040
  "engines": {
2041
  "node": ">=18"
 
2756
  "@jridgewell/sourcemap-codec": "^1.4.14"
2757
  }
2758
  },
2759
+ "node_modules/@kwsites/file-exists": {
2760
+ "version": "1.1.1",
2761
+ "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
2762
+ "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
2763
+ "dev": true,
2764
+ "license": "MIT",
2765
+ "dependencies": {
2766
+ "debug": "^4.1.1"
2767
+ }
2768
+ },
2769
+ "node_modules/@kwsites/promise-deferred": {
2770
+ "version": "1.1.1",
2771
+ "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
2772
+ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==",
2773
+ "dev": true,
2774
+ "license": "MIT"
2775
+ },
2776
  "node_modules/@mongodb-js/saslprep": {
2777
  "version": "1.1.9",
2778
  "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz",
 
2799
  "node": ">=18"
2800
  }
2801
  },
2802
+ "node_modules/@node-llama-cpp/linux-arm64": {
2803
+ "version": "3.6.0",
2804
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/linux-arm64/-/linux-arm64-3.6.0.tgz",
2805
+ "integrity": "sha512-hE/hqxtr5DQyY1DohwOcY742NQZtEFag8H/FQP2Y7fnlNQYhiOe45PcAJDiqmEUMmlCGVvHZaCWbaNVoTMYdWg==",
2806
+ "cpu": [
2807
+ "arm64",
2808
+ "x64"
2809
+ ],
2810
+ "dev": true,
2811
+ "license": "MIT",
2812
+ "optional": true,
2813
+ "os": [
2814
+ "linux"
2815
+ ],
2816
+ "engines": {
2817
+ "node": ">=18.0.0"
2818
+ }
2819
+ },
2820
+ "node_modules/@node-llama-cpp/linux-armv7l": {
2821
+ "version": "3.6.0",
2822
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/linux-armv7l/-/linux-armv7l-3.6.0.tgz",
2823
+ "integrity": "sha512-aRyDVf8szfJJWHnNWG56Ir3LtfXxj9vwLXbXy4XwfHlMTuBHWhmrRXyB8f3A/aJ8h6u48wMVxqxdmwnXigSKWg==",
2824
+ "cpu": [
2825
+ "arm",
2826
+ "x64"
2827
+ ],
2828
+ "dev": true,
2829
+ "license": "MIT",
2830
+ "optional": true,
2831
+ "os": [
2832
+ "linux"
2833
+ ],
2834
+ "engines": {
2835
+ "node": ">=18.0.0"
2836
+ }
2837
+ },
2838
+ "node_modules/@node-llama-cpp/linux-x64": {
2839
+ "version": "3.6.0",
2840
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/linux-x64/-/linux-x64-3.6.0.tgz",
2841
+ "integrity": "sha512-lUzTTY7AwRz5j/f6rss6fPc2u3YNOmo4k8Zap38kzy9H6rL+U2nlanN+4STs5j/7gcx5f/VHRnPrYDl5OPcmTw==",
2842
+ "cpu": [
2843
+ "x64"
2844
+ ],
2845
+ "dev": true,
2846
+ "license": "MIT",
2847
+ "optional": true,
2848
+ "os": [
2849
+ "linux"
2850
+ ],
2851
+ "engines": {
2852
+ "node": ">=18.0.0"
2853
+ }
2854
+ },
2855
+ "node_modules/@node-llama-cpp/linux-x64-cuda": {
2856
+ "version": "3.6.0",
2857
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/linux-x64-cuda/-/linux-x64-cuda-3.6.0.tgz",
2858
+ "integrity": "sha512-lS9F+aX2cGV1I/pAuCNeQm9bGELNmnvKqbF4k4ZjNk64ZT2sE74o2S/uN6GvMJETG+rgQiKRuKb1l/yIm0LOfA==",
2859
+ "cpu": [
2860
+ "x64"
2861
+ ],
2862
+ "dev": true,
2863
+ "license": "MIT",
2864
+ "optional": true,
2865
+ "os": [
2866
+ "linux"
2867
+ ],
2868
+ "engines": {
2869
+ "node": ">=18.0.0"
2870
+ }
2871
+ },
2872
+ "node_modules/@node-llama-cpp/linux-x64-vulkan": {
2873
+ "version": "3.6.0",
2874
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/linux-x64-vulkan/-/linux-x64-vulkan-3.6.0.tgz",
2875
+ "integrity": "sha512-1Wc6e1YJRpjllD6MRfwYPxE7z8qvmaYrEFyVPzTe9sghKXUswpBmmb0mM/yOzwT/mUBygSwOEBvTkp3nG+pWhg==",
2876
+ "cpu": [
2877
+ "x64"
2878
+ ],
2879
+ "dev": true,
2880
+ "license": "MIT",
2881
+ "optional": true,
2882
+ "os": [
2883
+ "linux"
2884
+ ],
2885
+ "engines": {
2886
+ "node": ">=18.0.0"
2887
+ }
2888
+ },
2889
+ "node_modules/@node-llama-cpp/mac-arm64-metal": {
2890
+ "version": "3.6.0",
2891
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/mac-arm64-metal/-/mac-arm64-metal-3.6.0.tgz",
2892
+ "integrity": "sha512-bOtZkJ6dCWHnZ1SP8EJ+LOdIFKo/7clb0ck+IwD/Bn/2ePzObVBsq30IxpRnUXx8pZ54+CzmTQuS2NOMHXS0PQ==",
2893
+ "cpu": [
2894
+ "arm64",
2895
+ "x64"
2896
+ ],
2897
+ "dev": true,
2898
+ "license": "MIT",
2899
+ "optional": true,
2900
+ "os": [
2901
+ "darwin"
2902
+ ],
2903
+ "engines": {
2904
+ "node": ">=18.0.0"
2905
+ }
2906
+ },
2907
+ "node_modules/@node-llama-cpp/mac-x64": {
2908
+ "version": "3.6.0",
2909
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/mac-x64/-/mac-x64-3.6.0.tgz",
2910
+ "integrity": "sha512-xjyEAsOXQ6i3VuXoQYB5llYuNz0sP9YnrDzAJ8sqovXXYkSyXPRyTCF5/PaAFc6QMkpsFIw3fSbavJeSzR5IGw==",
2911
+ "cpu": [
2912
+ "x64"
2913
+ ],
2914
+ "dev": true,
2915
+ "license": "MIT",
2916
+ "optional": true,
2917
+ "os": [
2918
+ "darwin"
2919
+ ],
2920
+ "engines": {
2921
+ "node": ">=18.0.0"
2922
+ }
2923
+ },
2924
+ "node_modules/@node-llama-cpp/win-arm64": {
2925
+ "version": "3.6.0",
2926
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/win-arm64/-/win-arm64-3.6.0.tgz",
2927
+ "integrity": "sha512-o4gEUBVMZ1R3Oy1f642UA1vJtnVLAJq2W+diPUxJVqXs9KYDOf7+JuxVcTEzSj6+wBsN3ZRtt36Xst41Jwp6FQ==",
2928
+ "cpu": [
2929
+ "arm64",
2930
+ "x64"
2931
+ ],
2932
+ "dev": true,
2933
+ "license": "MIT",
2934
+ "optional": true,
2935
+ "os": [
2936
+ "win32"
2937
+ ],
2938
+ "engines": {
2939
+ "node": ">=18.0.0"
2940
+ }
2941
+ },
2942
+ "node_modules/@node-llama-cpp/win-x64": {
2943
+ "version": "3.6.0",
2944
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/win-x64/-/win-x64-3.6.0.tgz",
2945
+ "integrity": "sha512-JDJoDeBkJhvFlINwi7tyTuOjSTJoBF6yyf7o89iMZ2xniyo6BzhI2d/79PGLkXht/1+sGNoCyzbuz3cBgP06Fg==",
2946
+ "cpu": [
2947
+ "x64"
2948
+ ],
2949
+ "dev": true,
2950
+ "license": "MIT",
2951
+ "optional": true,
2952
+ "os": [
2953
+ "win32"
2954
+ ],
2955
+ "engines": {
2956
+ "node": ">=18.0.0"
2957
+ }
2958
+ },
2959
+ "node_modules/@node-llama-cpp/win-x64-cuda": {
2960
+ "version": "3.6.0",
2961
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/win-x64-cuda/-/win-x64-cuda-3.6.0.tgz",
2962
+ "integrity": "sha512-vxNrz4BwMNgmfbRxALdTnb7RlJnO6p5uXlZP8fxpaD0zyBllenURTTzEo3Wobpa98af5DWEY1AueH9RFixvscA==",
2963
+ "cpu": [
2964
+ "x64"
2965
+ ],
2966
+ "dev": true,
2967
+ "license": "MIT",
2968
+ "optional": true,
2969
+ "os": [
2970
+ "win32"
2971
+ ],
2972
+ "engines": {
2973
+ "node": ">=18.0.0"
2974
+ }
2975
+ },
2976
+ "node_modules/@node-llama-cpp/win-x64-vulkan": {
2977
+ "version": "3.6.0",
2978
+ "resolved": "https://registry.npmjs.org/@node-llama-cpp/win-x64-vulkan/-/win-x64-vulkan-3.6.0.tgz",
2979
+ "integrity": "sha512-2XhzVQaRw5QxMqtg+517W+tn0fgDqvo12I0/wVpaBctwIaX+yOcj+njGlVUbMBFzhR9VM9wo5N2bjfRYI6y+PA==",
2980
+ "cpu": [
2981
+ "x64"
2982
+ ],
2983
+ "dev": true,
2984
+ "license": "MIT",
2985
+ "optional": true,
2986
+ "os": [
2987
+ "win32"
2988
+ ],
2989
+ "engines": {
2990
+ "node": ">=18.0.0"
2991
+ }
2992
+ },
2993
  "node_modules/@nodelib/fs.scandir": {
2994
  "version": "2.1.5",
2995
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
 
3022
  "node": ">= 8"
3023
  }
3024
  },
3025
+ "node_modules/@octokit/app": {
3026
+ "version": "15.1.5",
3027
+ "resolved": "https://registry.npmjs.org/@octokit/app/-/app-15.1.5.tgz",
3028
+ "integrity": "sha512-6cxLT9U8x7GGQ7lNWsKtFr4ccg9oLkGvowk373sX9HvX5U37kql5d55SzaQUxPE8PwgX2cqkzDm5NF5aPKevqg==",
3029
+ "dev": true,
3030
+ "license": "MIT",
3031
+ "dependencies": {
3032
+ "@octokit/auth-app": "^7.1.5",
3033
+ "@octokit/auth-unauthenticated": "^6.1.2",
3034
+ "@octokit/core": "^6.1.4",
3035
+ "@octokit/oauth-app": "^7.1.6",
3036
+ "@octokit/plugin-paginate-rest": "^11.4.2",
3037
+ "@octokit/types": "^13.8.0",
3038
+ "@octokit/webhooks": "^13.6.1"
3039
+ },
3040
+ "engines": {
3041
+ "node": ">= 18"
3042
+ }
3043
+ },
3044
+ "node_modules/@octokit/auth-app": {
3045
+ "version": "7.1.5",
3046
+ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.1.5.tgz",
3047
+ "integrity": "sha512-boklS4E6LpbA3nRx+SU2fRKRGZJdOGoSZne/i3Y0B5rfHOcGwFgcXrwDLdtbv4igfDSnAkZaoNBv1GYjPDKRNw==",
3048
+ "dev": true,
3049
+ "license": "MIT",
3050
+ "dependencies": {
3051
+ "@octokit/auth-oauth-app": "^8.1.3",
3052
+ "@octokit/auth-oauth-user": "^5.1.3",
3053
+ "@octokit/request": "^9.2.1",
3054
+ "@octokit/request-error": "^6.1.7",
3055
+ "@octokit/types": "^13.8.0",
3056
+ "toad-cache": "^3.7.0",
3057
+ "universal-github-app-jwt": "^2.2.0",
3058
+ "universal-user-agent": "^7.0.0"
3059
+ },
3060
+ "engines": {
3061
+ "node": ">= 18"
3062
+ }
3063
+ },
3064
+ "node_modules/@octokit/auth-oauth-app": {
3065
+ "version": "8.1.3",
3066
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.3.tgz",
3067
+ "integrity": "sha512-4e6OjVe5rZ8yBe8w7byBjpKtSXFuro7gqeGAAZc7QYltOF8wB93rJl2FE0a4U1Mt88xxPv/mS+25/0DuLk0Ewg==",
3068
+ "dev": true,
3069
+ "license": "MIT",
3070
+ "dependencies": {
3071
+ "@octokit/auth-oauth-device": "^7.1.3",
3072
+ "@octokit/auth-oauth-user": "^5.1.3",
3073
+ "@octokit/request": "^9.2.1",
3074
+ "@octokit/types": "^13.6.2",
3075
+ "universal-user-agent": "^7.0.0"
3076
+ },
3077
+ "engines": {
3078
+ "node": ">= 18"
3079
+ }
3080
+ },
3081
+ "node_modules/@octokit/auth-oauth-device": {
3082
+ "version": "7.1.4",
3083
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.4.tgz",
3084
+ "integrity": "sha512-yK35I9VGDGjYxu0NPZ9Rl+zXM/+DO/Hu1VR5FUNz+ZsU6i8B8oQ43TPwci9nuH8bAF6rQrKDNR9F0r0+kzYJhA==",
3085
+ "dev": true,
3086
+ "license": "MIT",
3087
+ "dependencies": {
3088
+ "@octokit/oauth-methods": "^5.1.4",
3089
+ "@octokit/request": "^9.2.1",
3090
+ "@octokit/types": "^13.6.2",
3091
+ "universal-user-agent": "^7.0.0"
3092
+ },
3093
+ "engines": {
3094
+ "node": ">= 18"
3095
+ }
3096
+ },
3097
+ "node_modules/@octokit/auth-oauth-user": {
3098
+ "version": "5.1.3",
3099
+ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.3.tgz",
3100
+ "integrity": "sha512-zNPByPn9K7TC+OOHKGxU+MxrE9SZAN11UHYEFLsK2NRn3akJN2LHRl85q+Eypr3tuB2GrKx3rfj2phJdkYCvzw==",
3101
+ "dev": true,
3102
+ "license": "MIT",
3103
+ "dependencies": {
3104
+ "@octokit/auth-oauth-device": "^7.1.3",
3105
+ "@octokit/oauth-methods": "^5.1.3",
3106
+ "@octokit/request": "^9.2.1",
3107
+ "@octokit/types": "^13.6.2",
3108
+ "universal-user-agent": "^7.0.0"
3109
+ },
3110
+ "engines": {
3111
+ "node": ">= 18"
3112
+ }
3113
+ },
3114
+ "node_modules/@octokit/auth-token": {
3115
+ "version": "5.1.2",
3116
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
3117
+ "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
3118
+ "dev": true,
3119
+ "license": "MIT",
3120
+ "engines": {
3121
+ "node": ">= 18"
3122
+ }
3123
+ },
3124
+ "node_modules/@octokit/auth-unauthenticated": {
3125
+ "version": "6.1.2",
3126
+ "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-6.1.2.tgz",
3127
+ "integrity": "sha512-07DlUGcz/AAVdzu3EYfi/dOyMSHp9YsOxPl/MPmtlVXWiD//GlV8HgZsPhud94DEyx+RfrW0wSl46Lx+AWbOlg==",
3128
+ "dev": true,
3129
+ "license": "MIT",
3130
+ "dependencies": {
3131
+ "@octokit/request-error": "^6.1.7",
3132
+ "@octokit/types": "^13.6.2"
3133
+ },
3134
+ "engines": {
3135
+ "node": ">= 18"
3136
+ }
3137
+ },
3138
+ "node_modules/@octokit/core": {
3139
+ "version": "6.1.4",
3140
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
3141
+ "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
3142
+ "dev": true,
3143
+ "license": "MIT",
3144
+ "dependencies": {
3145
+ "@octokit/auth-token": "^5.0.0",
3146
+ "@octokit/graphql": "^8.1.2",
3147
+ "@octokit/request": "^9.2.1",
3148
+ "@octokit/request-error": "^6.1.7",
3149
+ "@octokit/types": "^13.6.2",
3150
+ "before-after-hook": "^3.0.2",
3151
+ "universal-user-agent": "^7.0.0"
3152
+ },
3153
+ "engines": {
3154
+ "node": ">= 18"
3155
+ }
3156
+ },
3157
+ "node_modules/@octokit/endpoint": {
3158
+ "version": "10.1.3",
3159
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
3160
+ "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
3161
+ "dev": true,
3162
+ "license": "MIT",
3163
+ "dependencies": {
3164
+ "@octokit/types": "^13.6.2",
3165
+ "universal-user-agent": "^7.0.2"
3166
+ },
3167
+ "engines": {
3168
+ "node": ">= 18"
3169
+ }
3170
+ },
3171
+ "node_modules/@octokit/graphql": {
3172
+ "version": "8.2.1",
3173
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz",
3174
+ "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==",
3175
+ "dev": true,
3176
+ "license": "MIT",
3177
+ "dependencies": {
3178
+ "@octokit/request": "^9.2.2",
3179
+ "@octokit/types": "^13.8.0",
3180
+ "universal-user-agent": "^7.0.0"
3181
+ },
3182
+ "engines": {
3183
+ "node": ">= 18"
3184
+ }
3185
+ },
3186
+ "node_modules/@octokit/oauth-app": {
3187
+ "version": "7.1.6",
3188
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-7.1.6.tgz",
3189
+ "integrity": "sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA==",
3190
+ "dev": true,
3191
+ "license": "MIT",
3192
+ "dependencies": {
3193
+ "@octokit/auth-oauth-app": "^8.1.3",
3194
+ "@octokit/auth-oauth-user": "^5.1.3",
3195
+ "@octokit/auth-unauthenticated": "^6.1.2",
3196
+ "@octokit/core": "^6.1.4",
3197
+ "@octokit/oauth-authorization-url": "^7.1.1",
3198
+ "@octokit/oauth-methods": "^5.1.4",
3199
+ "@types/aws-lambda": "^8.10.83",
3200
+ "universal-user-agent": "^7.0.0"
3201
+ },
3202
+ "engines": {
3203
+ "node": ">= 18"
3204
+ }
3205
+ },
3206
+ "node_modules/@octokit/oauth-authorization-url": {
3207
+ "version": "7.1.1",
3208
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz",
3209
+ "integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==",
3210
+ "dev": true,
3211
+ "license": "MIT",
3212
+ "engines": {
3213
+ "node": ">= 18"
3214
+ }
3215
+ },
3216
+ "node_modules/@octokit/oauth-methods": {
3217
+ "version": "5.1.4",
3218
+ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.4.tgz",
3219
+ "integrity": "sha512-Jc/ycnePClOvO1WL7tlC+TRxOFtyJBGuTDsL4dzXNiVZvzZdrPuNw7zHI3qJSUX2n6RLXE5L0SkFmYyNaVUFoQ==",
3220
+ "dev": true,
3221
+ "license": "MIT",
3222
+ "dependencies": {
3223
+ "@octokit/oauth-authorization-url": "^7.0.0",
3224
+ "@octokit/request": "^9.2.1",
3225
+ "@octokit/request-error": "^6.1.7",
3226
+ "@octokit/types": "^13.6.2"
3227
+ },
3228
+ "engines": {
3229
+ "node": ">= 18"
3230
+ }
3231
+ },
3232
+ "node_modules/@octokit/openapi-types": {
3233
+ "version": "24.2.0",
3234
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
3235
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==",
3236
+ "dev": true,
3237
+ "license": "MIT"
3238
+ },
3239
+ "node_modules/@octokit/openapi-webhooks-types": {
3240
+ "version": "10.3.0",
3241
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-webhooks-types/-/openapi-webhooks-types-10.3.0.tgz",
3242
+ "integrity": "sha512-Dog+FB4pvsfcGZ9CFyYwb7I6K4QkzCDuN0H3hh5Nr9mMQ4wbBceqUKyJNKN2A0SQ6j4UU3CYNuvfoX9mQlhLUQ==",
3243
+ "dev": true,
3244
+ "license": "MIT"
3245
+ },
3246
+ "node_modules/@octokit/plugin-paginate-graphql": {
3247
+ "version": "5.2.4",
3248
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-5.2.4.tgz",
3249
+ "integrity": "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==",
3250
+ "dev": true,
3251
+ "license": "MIT",
3252
+ "engines": {
3253
+ "node": ">= 18"
3254
+ },
3255
+ "peerDependencies": {
3256
+ "@octokit/core": ">=6"
3257
+ }
3258
+ },
3259
+ "node_modules/@octokit/plugin-paginate-rest": {
3260
+ "version": "11.6.0",
3261
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz",
3262
+ "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==",
3263
+ "dev": true,
3264
+ "license": "MIT",
3265
+ "dependencies": {
3266
+ "@octokit/types": "^13.10.0"
3267
+ },
3268
+ "engines": {
3269
+ "node": ">= 18"
3270
+ },
3271
+ "peerDependencies": {
3272
+ "@octokit/core": ">=6"
3273
+ }
3274
+ },
3275
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
3276
+ "version": "13.5.0",
3277
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz",
3278
+ "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==",
3279
+ "dev": true,
3280
+ "license": "MIT",
3281
+ "dependencies": {
3282
+ "@octokit/types": "^13.10.0"
3283
+ },
3284
+ "engines": {
3285
+ "node": ">= 18"
3286
+ },
3287
+ "peerDependencies": {
3288
+ "@octokit/core": ">=6"
3289
+ }
3290
+ },
3291
+ "node_modules/@octokit/plugin-retry": {
3292
+ "version": "7.2.0",
3293
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.2.0.tgz",
3294
+ "integrity": "sha512-psMbEYb/Fh+V+ZaFo8J16QiFz4sVTv3GntCSU+hYqzHiMdc3P+hhHLVv+dJt0PGIPAGoIA5u+J2DCJdK6lEPsQ==",
3295
+ "dev": true,
3296
+ "license": "MIT",
3297
+ "dependencies": {
3298
+ "@octokit/request-error": "^6.1.7",
3299
+ "@octokit/types": "^13.6.2",
3300
+ "bottleneck": "^2.15.3"
3301
+ },
3302
+ "engines": {
3303
+ "node": ">= 18"
3304
+ },
3305
+ "peerDependencies": {
3306
+ "@octokit/core": ">=6"
3307
+ }
3308
+ },
3309
+ "node_modules/@octokit/plugin-throttling": {
3310
+ "version": "9.6.0",
3311
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.6.0.tgz",
3312
+ "integrity": "sha512-zn7m1N3vpJDaVzLqjCRdJ0cRzNiekHEWPi8Ww9xyPNrDt5PStHvVE0eR8wy4RSU8Eg7YO8MHyvn6sv25EGVhhg==",
3313
+ "dev": true,
3314
+ "license": "MIT",
3315
+ "dependencies": {
3316
+ "@octokit/types": "^13.7.0",
3317
+ "bottleneck": "^2.15.3"
3318
+ },
3319
+ "engines": {
3320
+ "node": ">= 18"
3321
+ },
3322
+ "peerDependencies": {
3323
+ "@octokit/core": "^6.1.3"
3324
+ }
3325
+ },
3326
+ "node_modules/@octokit/request": {
3327
+ "version": "9.2.2",
3328
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
3329
+ "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
3330
+ "dev": true,
3331
+ "license": "MIT",
3332
+ "dependencies": {
3333
+ "@octokit/endpoint": "^10.1.3",
3334
+ "@octokit/request-error": "^6.1.7",
3335
+ "@octokit/types": "^13.6.2",
3336
+ "fast-content-type-parse": "^2.0.0",
3337
+ "universal-user-agent": "^7.0.2"
3338
+ },
3339
+ "engines": {
3340
+ "node": ">= 18"
3341
+ }
3342
+ },
3343
+ "node_modules/@octokit/request-error": {
3344
+ "version": "6.1.7",
3345
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
3346
+ "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
3347
+ "dev": true,
3348
+ "license": "MIT",
3349
+ "dependencies": {
3350
+ "@octokit/types": "^13.6.2"
3351
+ },
3352
+ "engines": {
3353
+ "node": ">= 18"
3354
+ }
3355
+ },
3356
+ "node_modules/@octokit/types": {
3357
+ "version": "13.10.0",
3358
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
3359
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
3360
+ "dev": true,
3361
+ "license": "MIT",
3362
+ "dependencies": {
3363
+ "@octokit/openapi-types": "^24.2.0"
3364
+ }
3365
+ },
3366
+ "node_modules/@octokit/webhooks": {
3367
+ "version": "13.7.5",
3368
+ "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-13.7.5.tgz",
3369
+ "integrity": "sha512-qmmu4cfKmm58RWyDPUDoI7ls9JWw88qbqPzEi+TDBaSirHQPsixxdPU4OjPDcnDnjee7JXv525yv4qNN3BRlyg==",
3370
+ "dev": true,
3371
+ "license": "MIT",
3372
+ "dependencies": {
3373
+ "@octokit/openapi-webhooks-types": "10.3.0",
3374
+ "@octokit/request-error": "^6.1.7",
3375
+ "@octokit/webhooks-methods": "^5.1.1"
3376
+ },
3377
+ "engines": {
3378
+ "node": ">= 18"
3379
+ }
3380
+ },
3381
+ "node_modules/@octokit/webhooks-methods": {
3382
+ "version": "5.1.1",
3383
+ "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-5.1.1.tgz",
3384
+ "integrity": "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg==",
3385
+ "dev": true,
3386
+ "license": "MIT",
3387
+ "engines": {
3388
+ "node": ">= 18"
3389
+ }
3390
+ },
3391
  "node_modules/@open-draft/deferred-promise": {
3392
  "version": "2.2.0",
3393
  "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
 
3510
  "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
3511
  "license": "BSD-3-Clause"
3512
  },
3513
+ "node_modules/@reflink/reflink": {
3514
+ "resolved": "node_modules/ipull/stub/@reflink/reflink",
3515
+ "link": true
3516
+ },
3517
  "node_modules/@remusao/guess-url-type": {
3518
  "version": "1.3.0",
3519
  "resolved": "https://registry.npmjs.org/@remusao/guess-url-type/-/guess-url-type-1.3.0.tgz",
 
4884
  "lodash.merge": "^4.6.2",
4885
  "postcss-selector-parser": "6.0.10"
4886
  },
4887
+ "peerDependencies": {
4888
+ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20"
4889
+ }
4890
+ },
4891
+ "node_modules/@tinyhttp/content-disposition": {
4892
+ "version": "2.2.2",
4893
+ "resolved": "https://registry.npmjs.org/@tinyhttp/content-disposition/-/content-disposition-2.2.2.tgz",
4894
+ "integrity": "sha512-crXw1txzrS36huQOyQGYFvhTeLeG0Si1xu+/l6kXUVYpE0TjFjEZRqTbuadQLfKGZ0jaI+jJoRyqaWwxOSHW2g==",
4895
+ "dev": true,
4896
+ "license": "MIT",
4897
+ "engines": {
4898
+ "node": ">=12.20.0"
4899
+ },
4900
+ "funding": {
4901
+ "type": "individual",
4902
+ "url": "https://github.com/tinyhttp/tinyhttp?sponsor=1"
4903
  }
4904
  },
4905
  "node_modules/@tokenizer/token": {
 
4939
  "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
4940
  "devOptional": true
4941
  },
4942
+ "node_modules/@types/aws-lambda": {
4943
+ "version": "8.10.148",
4944
+ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.148.tgz",
4945
+ "integrity": "sha512-JL+2cfkY9ODQeE06hOxSFNkafjNk4JRBgY837kpoq1GHDttq2U3BA9IzKOWxS4DLjKoymGB4i9uBrlCkjUl1yg==",
4946
+ "dev": true,
4947
+ "license": "MIT"
4948
+ },
4949
  "node_modules/@types/body-parser": {
4950
  "version": "1.19.5",
4951
  "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
 
5729
  "node": ">= 8"
5730
  }
5731
  },
5732
+ "node_modules/aproba": {
5733
+ "version": "2.0.0",
5734
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
5735
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
5736
+ "dev": true,
5737
+ "license": "ISC"
5738
+ },
5739
+ "node_modules/are-we-there-yet": {
5740
+ "version": "3.0.1",
5741
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
5742
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
5743
+ "deprecated": "This package is no longer supported.",
5744
+ "dev": true,
5745
+ "license": "ISC",
5746
+ "dependencies": {
5747
+ "delegates": "^1.0.0",
5748
+ "readable-stream": "^3.6.0"
5749
+ },
5750
+ "engines": {
5751
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
5752
+ }
5753
+ },
5754
+ "node_modules/are-we-there-yet/node_modules/readable-stream": {
5755
+ "version": "3.6.2",
5756
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
5757
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
5758
+ "dev": true,
5759
+ "license": "MIT",
5760
+ "dependencies": {
5761
+ "inherits": "^2.0.3",
5762
+ "string_decoder": "^1.1.1",
5763
+ "util-deprecate": "^1.0.1"
5764
+ },
5765
+ "engines": {
5766
+ "node": ">= 6"
5767
+ }
5768
+ },
5769
  "node_modules/arg": {
5770
  "version": "5.0.2",
5771
  "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
 
5821
  "tslib": "^2.4.0"
5822
  }
5823
  },
5824
+ "node_modules/async-retry": {
5825
+ "version": "1.3.3",
5826
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
5827
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
5828
+ "dev": true,
5829
+ "license": "MIT",
5830
+ "dependencies": {
5831
+ "retry": "0.13.1"
5832
+ }
5833
+ },
5834
  "node_modules/asynckit": {
5835
  "version": "0.4.0",
5836
  "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 
5923
  "integrity": "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==",
5924
  "optional": true
5925
  },
5926
+ "node_modules/axios": {
5927
+ "version": "1.8.4",
5928
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
5929
+ "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
5930
+ "dev": true,
5931
+ "license": "MIT",
5932
+ "dependencies": {
5933
+ "follow-redirects": "^1.15.6",
5934
+ "form-data": "^4.0.0",
5935
+ "proxy-from-env": "^1.1.0"
5936
+ }
5937
+ },
5938
  "node_modules/axobject-query": {
5939
  "version": "4.1.0",
5940
  "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
 
5983
  }
5984
  ]
5985
  },
5986
+ "node_modules/before-after-hook": {
5987
+ "version": "3.0.2",
5988
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
5989
+ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
5990
+ "dev": true,
5991
+ "license": "Apache-2.0"
5992
+ },
5993
  "node_modules/bignumber.js": {
5994
  "version": "9.1.2",
5995
  "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
 
6071
  "url": "https://github.com/sponsors/ljharb"
6072
  }
6073
  },
6074
+ "node_modules/bottleneck": {
6075
+ "version": "2.19.5",
6076
+ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz",
6077
+ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==",
6078
+ "dev": true,
6079
+ "license": "MIT"
6080
+ },
6081
  "node_modules/bowser": {
6082
  "version": "2.11.0",
6083
  "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
 
6323
  "node": ">= 16"
6324
  }
6325
  },
6326
+ "node_modules/chmodrp": {
6327
+ "version": "1.0.2",
6328
+ "resolved": "https://registry.npmjs.org/chmodrp/-/chmodrp-1.0.2.tgz",
6329
+ "integrity": "sha512-TdngOlFV1FLTzU0o1w8MB6/BFywhtLC0SzRTGJU7T9lmdjlCWeMRt1iVo0Ki+ldwNk0BqNiKoc8xpLZEQ8mY1w==",
6330
+ "dev": true,
6331
+ "license": "MIT"
6332
+ },
6333
  "node_modules/chokidar": {
6334
  "version": "3.6.0",
6335
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
 
6373
  "node": ">=18"
6374
  }
6375
  },
6376
+ "node_modules/ci-info": {
6377
+ "version": "4.2.0",
6378
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
6379
+ "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
6380
+ "dev": true,
6381
+ "funding": [
6382
+ {
6383
+ "type": "github",
6384
+ "url": "https://github.com/sponsors/sibiraj-s"
6385
+ }
6386
+ ],
6387
+ "license": "MIT",
6388
+ "engines": {
6389
+ "node": ">=8"
6390
+ }
6391
+ },
6392
  "node_modules/cli-cursor": {
6393
  "version": "5.0.0",
6394
  "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
 
6403
  "url": "https://github.com/sponsors/sindresorhus"
6404
  }
6405
  },
6406
+ "node_modules/cli-spinners": {
6407
+ "version": "2.9.2",
6408
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
6409
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
6410
+ "dev": true,
6411
+ "license": "MIT",
6412
+ "engines": {
6413
+ "node": ">=6"
6414
+ },
6415
+ "funding": {
6416
+ "url": "https://github.com/sponsors/sindresorhus"
6417
+ }
6418
+ },
6419
  "node_modules/cli-truncate": {
6420
  "version": "4.0.0",
6421
  "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
 
6546
  "node": ">=6"
6547
  }
6548
  },
6549
+ "node_modules/cmake-js": {
6550
+ "version": "7.3.0",
6551
+ "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-7.3.0.tgz",
6552
+ "integrity": "sha512-dXs2zq9WxrV87bpJ+WbnGKv8WUBXDw8blNiwNHoRe/it+ptscxhQHKB1SJXa1w+kocLMeP28Tk4/eTCezg4o+w==",
6553
+ "dev": true,
6554
+ "license": "MIT",
6555
+ "dependencies": {
6556
+ "axios": "^1.6.5",
6557
+ "debug": "^4",
6558
+ "fs-extra": "^11.2.0",
6559
+ "lodash.isplainobject": "^4.0.6",
6560
+ "memory-stream": "^1.0.0",
6561
+ "node-api-headers": "^1.1.0",
6562
+ "npmlog": "^6.0.2",
6563
+ "rc": "^1.2.7",
6564
+ "semver": "^7.5.4",
6565
+ "tar": "^6.2.0",
6566
+ "url-join": "^4.0.1",
6567
+ "which": "^2.0.2",
6568
+ "yargs": "^17.7.2"
6569
+ },
6570
+ "bin": {
6571
+ "cmake-js": "bin/cmake-js"
6572
+ },
6573
+ "engines": {
6574
+ "node": ">= 14.15.0"
6575
+ }
6576
+ },
6577
+ "node_modules/cmake-js/node_modules/chownr": {
6578
+ "version": "2.0.0",
6579
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
6580
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
6581
+ "dev": true,
6582
+ "license": "ISC",
6583
+ "engines": {
6584
+ "node": ">=10"
6585
+ }
6586
+ },
6587
+ "node_modules/cmake-js/node_modules/minipass": {
6588
+ "version": "5.0.0",
6589
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
6590
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
6591
+ "dev": true,
6592
+ "license": "ISC",
6593
+ "engines": {
6594
+ "node": ">=8"
6595
+ }
6596
+ },
6597
+ "node_modules/cmake-js/node_modules/minizlib": {
6598
+ "version": "2.1.2",
6599
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
6600
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
6601
+ "dev": true,
6602
+ "license": "MIT",
6603
+ "dependencies": {
6604
+ "minipass": "^3.0.0",
6605
+ "yallist": "^4.0.0"
6606
+ },
6607
+ "engines": {
6608
+ "node": ">= 8"
6609
+ }
6610
+ },
6611
+ "node_modules/cmake-js/node_modules/minizlib/node_modules/minipass": {
6612
+ "version": "3.3.6",
6613
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
6614
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
6615
+ "dev": true,
6616
+ "license": "ISC",
6617
+ "dependencies": {
6618
+ "yallist": "^4.0.0"
6619
+ },
6620
+ "engines": {
6621
+ "node": ">=8"
6622
+ }
6623
+ },
6624
+ "node_modules/cmake-js/node_modules/tar": {
6625
+ "version": "6.2.1",
6626
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
6627
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
6628
+ "dev": true,
6629
+ "license": "ISC",
6630
+ "dependencies": {
6631
+ "chownr": "^2.0.0",
6632
+ "fs-minipass": "^2.0.0",
6633
+ "minipass": "^5.0.0",
6634
+ "minizlib": "^2.1.1",
6635
+ "mkdirp": "^1.0.3",
6636
+ "yallist": "^4.0.0"
6637
+ },
6638
+ "engines": {
6639
+ "node": ">=10"
6640
+ }
6641
+ },
6642
  "node_modules/cohere-ai": {
6643
  "version": "7.13.0",
6644
  "resolved": "https://registry.npmjs.org/cohere-ai/-/cohere-ai-7.13.0.tgz",
 
6714
  "simple-swizzle": "^0.2.2"
6715
  }
6716
  },
6717
+ "node_modules/color-support": {
6718
+ "version": "1.1.3",
6719
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
6720
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
6721
+ "dev": true,
6722
+ "license": "ISC",
6723
+ "bin": {
6724
+ "color-support": "bin.js"
6725
+ }
6726
+ },
6727
  "node_modules/colorette": {
6728
  "version": "2.0.20",
6729
  "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
 
6767
  "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
6768
  "dev": true
6769
  },
6770
+ "node_modules/console-control-strings": {
6771
+ "version": "1.1.0",
6772
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
6773
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
6774
+ "dev": true,
6775
+ "license": "ISC"
6776
+ },
6777
  "node_modules/content-disposition": {
6778
  "version": "0.5.4",
6779
  "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
 
6813
  "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
6814
  "devOptional": true
6815
  },
6816
+ "node_modules/cross-env": {
6817
+ "version": "7.0.3",
6818
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
6819
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
6820
+ "dev": true,
6821
+ "license": "MIT",
6822
+ "dependencies": {
6823
+ "cross-spawn": "^7.0.1"
6824
+ },
6825
+ "bin": {
6826
+ "cross-env": "src/bin/cross-env.js",
6827
+ "cross-env-shell": "src/bin/cross-env-shell.js"
6828
+ },
6829
+ "engines": {
6830
+ "node": ">=10.14",
6831
+ "npm": ">=6",
6832
+ "yarn": ">=1"
6833
+ }
6834
+ },
6835
  "node_modules/cross-spawn": {
6836
+ "version": "7.0.6",
6837
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
6838
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
6839
+ "license": "MIT",
6840
  "dependencies": {
6841
  "path-key": "^3.1.0",
6842
  "shebang-command": "^2.0.0",
 
6963
  "node": ">=6"
6964
  }
6965
  },
6966
+ "node_modules/deep-extend": {
6967
+ "version": "0.6.0",
6968
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
6969
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
6970
+ "dev": true,
6971
+ "license": "MIT",
6972
+ "engines": {
6973
+ "node": ">=4.0.0"
6974
+ }
6975
+ },
6976
  "node_modules/deep-is": {
6977
  "version": "0.1.4",
6978
  "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
 
7010
  "node": ">=0.4.0"
7011
  }
7012
  },
7013
+ "node_modules/delegates": {
7014
+ "version": "1.0.0",
7015
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
7016
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
7017
+ "dev": true,
7018
+ "license": "MIT"
7019
+ },
7020
  "node_modules/depd": {
7021
  "version": "2.0.0",
7022
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
 
7230
  "url": "https://github.com/fb55/entities?sponsor=1"
7231
  }
7232
  },
7233
+ "node_modules/env-var": {
7234
+ "version": "7.5.0",
7235
+ "resolved": "https://registry.npmjs.org/env-var/-/env-var-7.5.0.tgz",
7236
+ "integrity": "sha512-mKZOzLRN0ETzau2W2QXefbFjo5EF4yWq28OyKb9ICdeNhHJlOE/pHHnz4hdYJ9cNZXcJHo5xN4OT4pzuSHSNvA==",
7237
+ "dev": true,
7238
+ "license": "MIT",
7239
+ "engines": {
7240
+ "node": ">=10"
7241
+ }
7242
+ },
7243
  "node_modules/environment": {
7244
  "version": "1.1.0",
7245
  "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
 
7887
  "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
7888
  "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
7889
  },
7890
+ "node_modules/fast-content-type-parse": {
7891
+ "version": "2.0.1",
7892
+ "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
7893
+ "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
7894
+ "dev": true,
7895
+ "funding": [
7896
+ {
7897
+ "type": "github",
7898
+ "url": "https://github.com/sponsors/fastify"
7899
+ },
7900
+ {
7901
+ "type": "opencollective",
7902
+ "url": "https://opencollective.com/fastify"
7903
+ }
7904
+ ],
7905
+ "license": "MIT"
7906
+ },
7907
  "node_modules/fast-copy": {
7908
  "version": "3.0.2",
7909
  "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
 
8040
  "url": "https://github.com/sindresorhus/file-type?sponsor=1"
8041
  }
8042
  },
8043
+ "node_modules/filename-reserved-regex": {
8044
+ "version": "3.0.0",
8045
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
8046
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
8047
+ "dev": true,
8048
+ "license": "MIT",
8049
+ "engines": {
8050
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
8051
+ },
8052
+ "funding": {
8053
+ "url": "https://github.com/sponsors/sindresorhus"
8054
+ }
8055
+ },
8056
+ "node_modules/filenamify": {
8057
+ "version": "6.0.0",
8058
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz",
8059
+ "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==",
8060
+ "dev": true,
8061
+ "license": "MIT",
8062
+ "dependencies": {
8063
+ "filename-reserved-regex": "^3.0.0"
8064
+ },
8065
+ "engines": {
8066
+ "node": ">=16"
8067
+ },
8068
+ "funding": {
8069
+ "url": "https://github.com/sponsors/sindresorhus"
8070
+ }
8071
+ },
8072
  "node_modules/fill-range": {
8073
  "version": "7.1.1",
8074
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
 
8274
  "node": ">= 0.6"
8275
  }
8276
  },
8277
+ "node_modules/fs-extra": {
8278
+ "version": "11.3.0",
8279
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
8280
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
8281
+ "dev": true,
8282
+ "license": "MIT",
8283
+ "dependencies": {
8284
+ "graceful-fs": "^4.2.0",
8285
+ "jsonfile": "^6.0.1",
8286
+ "universalify": "^2.0.0"
8287
+ },
8288
+ "engines": {
8289
+ "node": ">=14.14"
8290
+ }
8291
+ },
8292
+ "node_modules/fs-extra/node_modules/universalify": {
8293
+ "version": "2.0.1",
8294
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
8295
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
8296
+ "dev": true,
8297
+ "license": "MIT",
8298
+ "engines": {
8299
+ "node": ">= 10.0.0"
8300
+ }
8301
+ },
8302
+ "node_modules/fs-minipass": {
8303
+ "version": "2.1.0",
8304
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
8305
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
8306
+ "dev": true,
8307
+ "license": "ISC",
8308
+ "dependencies": {
8309
+ "minipass": "^3.0.0"
8310
+ },
8311
+ "engines": {
8312
+ "node": ">= 8"
8313
+ }
8314
+ },
8315
+ "node_modules/fs-minipass/node_modules/minipass": {
8316
+ "version": "3.3.6",
8317
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
8318
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
8319
+ "dev": true,
8320
+ "license": "ISC",
8321
+ "dependencies": {
8322
+ "yallist": "^4.0.0"
8323
+ },
8324
+ "engines": {
8325
+ "node": ">=8"
8326
+ }
8327
+ },
8328
  "node_modules/fs.realpath": {
8329
  "version": "1.0.0",
8330
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 
8341
  "darwin"
8342
  ],
8343
  "engines": {
8344
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
8345
+ }
8346
+ },
8347
+ "node_modules/function-bind": {
8348
+ "version": "1.1.2",
8349
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
8350
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
8351
+ "funding": {
8352
+ "url": "https://github.com/sponsors/ljharb"
8353
+ }
8354
+ },
8355
+ "node_modules/gauge": {
8356
+ "version": "4.0.4",
8357
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
8358
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
8359
+ "deprecated": "This package is no longer supported.",
8360
+ "dev": true,
8361
+ "license": "ISC",
8362
+ "dependencies": {
8363
+ "aproba": "^1.0.3 || ^2.0.0",
8364
+ "color-support": "^1.1.3",
8365
+ "console-control-strings": "^1.1.0",
8366
+ "has-unicode": "^2.0.1",
8367
+ "signal-exit": "^3.0.7",
8368
+ "string-width": "^4.2.3",
8369
+ "strip-ansi": "^6.0.1",
8370
+ "wide-align": "^1.1.5"
8371
+ },
8372
+ "engines": {
8373
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
8374
+ }
8375
+ },
8376
+ "node_modules/gauge/node_modules/emoji-regex": {
8377
+ "version": "8.0.0",
8378
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
8379
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
8380
+ "dev": true,
8381
+ "license": "MIT"
8382
+ },
8383
+ "node_modules/gauge/node_modules/is-fullwidth-code-point": {
8384
+ "version": "3.0.0",
8385
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
8386
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
8387
+ "dev": true,
8388
+ "license": "MIT",
8389
+ "engines": {
8390
+ "node": ">=8"
8391
  }
8392
  },
8393
+ "node_modules/gauge/node_modules/signal-exit": {
8394
+ "version": "3.0.7",
8395
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
8396
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
8397
+ "dev": true,
8398
+ "license": "ISC"
8399
+ },
8400
+ "node_modules/gauge/node_modules/string-width": {
8401
+ "version": "4.2.3",
8402
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
8403
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
8404
+ "dev": true,
8405
+ "license": "MIT",
8406
+ "dependencies": {
8407
+ "emoji-regex": "^8.0.0",
8408
+ "is-fullwidth-code-point": "^3.0.0",
8409
+ "strip-ansi": "^6.0.1"
8410
+ },
8411
+ "engines": {
8412
+ "node": ">=8"
8413
  }
8414
  },
8415
  "node_modules/gaxios": {
 
8620
  "url": "https://github.com/sponsors/ljharb"
8621
  }
8622
  },
8623
+ "node_modules/graceful-fs": {
8624
+ "version": "4.2.11",
8625
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
8626
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
8627
+ "dev": true,
8628
+ "license": "ISC"
8629
+ },
8630
  "node_modules/graphemer": {
8631
  "version": "1.4.0",
8632
  "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
 
8720
  "url": "https://github.com/sponsors/ljharb"
8721
  }
8722
  },
8723
+ "node_modules/has-unicode": {
8724
+ "version": "2.0.1",
8725
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
8726
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
8727
+ "dev": true,
8728
+ "license": "ISC"
8729
+ },
8730
  "node_modules/hash-wasm": {
8731
  "version": "4.11.0",
8732
  "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.11.0.tgz",
 
8988
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
8989
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
8990
  },
8991
+ "node_modules/ini": {
8992
+ "version": "1.3.8",
8993
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
8994
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
8995
+ "dev": true,
8996
+ "license": "ISC"
8997
+ },
8998
  "node_modules/int53": {
8999
  "version": "0.2.4",
9000
  "resolved": "https://registry.npmjs.org/int53/-/int53-0.2.4.tgz",
 
9020
  "node": ">= 0.10"
9021
  }
9022
  },
9023
+ "node_modules/ipull": {
9024
+ "version": "3.9.2",
9025
+ "resolved": "https://registry.npmjs.org/ipull/-/ipull-3.9.2.tgz",
9026
+ "integrity": "sha512-YbCDsqcf0ytc3b8304ygBlvRtKJTvyygkQX2xcmPkih6vdVKbRw13pDdtSR+vEqLql3owyuPj9m6iT6IfwFaCg==",
9027
+ "dev": true,
9028
+ "license": "MIT",
9029
+ "dependencies": {
9030
+ "@tinyhttp/content-disposition": "^2.2.0",
9031
+ "async-retry": "^1.3.3",
9032
+ "chalk": "^5.3.0",
9033
+ "ci-info": "^4.0.0",
9034
+ "cli-spinners": "^2.9.2",
9035
+ "commander": "^10.0.0",
9036
+ "eventemitter3": "^5.0.1",
9037
+ "filenamify": "^6.0.0",
9038
+ "fs-extra": "^11.1.1",
9039
+ "is-unicode-supported": "^2.0.0",
9040
+ "lifecycle-utils": "^1.3.1",
9041
+ "lodash.debounce": "^4.0.8",
9042
+ "lowdb": "^7.0.1",
9043
+ "pretty-bytes": "^6.1.0",
9044
+ "pretty-ms": "^8.0.0",
9045
+ "sleep-promise": "^9.1.0",
9046
+ "slice-ansi": "^7.1.0",
9047
+ "stdout-update": "^4.0.1",
9048
+ "strip-ansi": "^7.1.0"
9049
+ },
9050
+ "bin": {
9051
+ "ipull": "dist/cli/cli.js"
9052
+ },
9053
+ "engines": {
9054
+ "node": ">=18.0.0"
9055
+ },
9056
+ "funding": {
9057
+ "type": "github",
9058
+ "url": "https://github.com/ido-pluto/ipull?sponsor=1"
9059
+ },
9060
+ "optionalDependencies": {
9061
+ "@reflink/reflink": "^0.1.16"
9062
+ }
9063
+ },
9064
+ "node_modules/ipull/node_modules/ansi-regex": {
9065
+ "version": "6.1.0",
9066
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
9067
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
9068
+ "dev": true,
9069
+ "license": "MIT",
9070
+ "engines": {
9071
+ "node": ">=12"
9072
+ },
9073
+ "funding": {
9074
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
9075
+ }
9076
+ },
9077
+ "node_modules/ipull/node_modules/ansi-styles": {
9078
+ "version": "6.2.1",
9079
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
9080
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
9081
+ "dev": true,
9082
+ "license": "MIT",
9083
+ "engines": {
9084
+ "node": ">=12"
9085
+ },
9086
+ "funding": {
9087
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
9088
+ }
9089
+ },
9090
+ "node_modules/ipull/node_modules/chalk": {
9091
+ "version": "5.4.1",
9092
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
9093
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
9094
+ "dev": true,
9095
+ "license": "MIT",
9096
+ "engines": {
9097
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
9098
+ },
9099
+ "funding": {
9100
+ "url": "https://github.com/chalk/chalk?sponsor=1"
9101
+ }
9102
+ },
9103
+ "node_modules/ipull/node_modules/commander": {
9104
+ "version": "10.0.1",
9105
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
9106
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
9107
+ "dev": true,
9108
+ "license": "MIT",
9109
+ "engines": {
9110
+ "node": ">=14"
9111
+ }
9112
+ },
9113
+ "node_modules/ipull/node_modules/is-fullwidth-code-point": {
9114
+ "version": "5.0.0",
9115
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
9116
+ "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
9117
+ "dev": true,
9118
+ "license": "MIT",
9119
+ "dependencies": {
9120
+ "get-east-asian-width": "^1.0.0"
9121
+ },
9122
+ "engines": {
9123
+ "node": ">=18"
9124
+ },
9125
+ "funding": {
9126
+ "url": "https://github.com/sponsors/sindresorhus"
9127
+ }
9128
+ },
9129
+ "node_modules/ipull/node_modules/lifecycle-utils": {
9130
+ "version": "1.7.3",
9131
+ "resolved": "https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-1.7.3.tgz",
9132
+ "integrity": "sha512-T7zs7J6/sgsqwVyG34Sfo5LTQmlPmmqaUe3yBhdF8nq24RtR/HtbkNZRhNbr9BEaKySdSgH+P9H5U9X+p0WjXw==",
9133
+ "dev": true,
9134
+ "license": "MIT"
9135
+ },
9136
+ "node_modules/ipull/node_modules/parse-ms": {
9137
+ "version": "3.0.0",
9138
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz",
9139
+ "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==",
9140
+ "dev": true,
9141
+ "license": "MIT",
9142
+ "engines": {
9143
+ "node": ">=12"
9144
+ },
9145
+ "funding": {
9146
+ "url": "https://github.com/sponsors/sindresorhus"
9147
+ }
9148
+ },
9149
+ "node_modules/ipull/node_modules/pretty-ms": {
9150
+ "version": "8.0.0",
9151
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz",
9152
+ "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==",
9153
+ "dev": true,
9154
+ "license": "MIT",
9155
+ "dependencies": {
9156
+ "parse-ms": "^3.0.0"
9157
+ },
9158
+ "engines": {
9159
+ "node": ">=14.16"
9160
+ },
9161
+ "funding": {
9162
+ "url": "https://github.com/sponsors/sindresorhus"
9163
+ }
9164
+ },
9165
+ "node_modules/ipull/node_modules/slice-ansi": {
9166
+ "version": "7.1.0",
9167
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
9168
+ "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
9169
+ "dev": true,
9170
+ "license": "MIT",
9171
+ "dependencies": {
9172
+ "ansi-styles": "^6.2.1",
9173
+ "is-fullwidth-code-point": "^5.0.0"
9174
+ },
9175
+ "engines": {
9176
+ "node": ">=18"
9177
+ },
9178
+ "funding": {
9179
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
9180
+ }
9181
+ },
9182
+ "node_modules/ipull/node_modules/strip-ansi": {
9183
+ "version": "7.1.0",
9184
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
9185
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
9186
+ "dev": true,
9187
+ "license": "MIT",
9188
+ "dependencies": {
9189
+ "ansi-regex": "^6.0.1"
9190
+ },
9191
+ "engines": {
9192
+ "node": ">=12"
9193
+ },
9194
+ "funding": {
9195
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
9196
+ }
9197
+ },
9198
+ "node_modules/ipull/stub/@reflink/reflink": {
9199
+ "dev": true,
9200
+ "optional": true
9201
+ },
9202
  "node_modules/is-arrayish": {
9203
  "version": "0.3.2",
9204
  "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
 
9259
  "node": ">=0.10.0"
9260
  }
9261
  },
9262
+ "node_modules/is-interactive": {
9263
+ "version": "2.0.0",
9264
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
9265
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
9266
+ "dev": true,
9267
+ "license": "MIT",
9268
+ "engines": {
9269
+ "node": ">=12"
9270
+ },
9271
+ "funding": {
9272
+ "url": "https://github.com/sponsors/sindresorhus"
9273
+ }
9274
+ },
9275
  "node_modules/is-module": {
9276
  "version": "1.0.0",
9277
  "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
 
9336
  "url": "https://github.com/sponsors/sindresorhus"
9337
  }
9338
  },
9339
+ "node_modules/is-unicode-supported": {
9340
+ "version": "2.1.0",
9341
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
9342
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
9343
+ "dev": true,
9344
+ "license": "MIT",
9345
+ "engines": {
9346
+ "node": ">=18"
9347
+ },
9348
+ "funding": {
9349
+ "url": "https://github.com/sponsors/sindresorhus"
9350
+ }
9351
+ },
9352
  "node_modules/isexe": {
9353
  "version": "2.0.0",
9354
  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
 
9705
  "node": ">=6"
9706
  }
9707
  },
9708
+ "node_modules/jsonfile": {
9709
+ "version": "6.1.0",
9710
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
9711
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
9712
+ "dev": true,
9713
+ "license": "MIT",
9714
+ "dependencies": {
9715
+ "universalify": "^2.0.0"
9716
+ },
9717
+ "optionalDependencies": {
9718
+ "graceful-fs": "^4.1.6"
9719
+ }
9720
+ },
9721
+ "node_modules/jsonfile/node_modules/universalify": {
9722
+ "version": "2.0.1",
9723
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
9724
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
9725
+ "dev": true,
9726
+ "license": "MIT",
9727
+ "engines": {
9728
+ "node": ">= 10.0.0"
9729
+ }
9730
+ },
9731
  "node_modules/jsonpath": {
9732
  "version": "1.1.1",
9733
  "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz",
 
9816
  "node": ">= 0.8.0"
9817
  }
9818
  },
9819
+ "node_modules/lifecycle-utils": {
9820
+ "version": "2.0.0",
9821
+ "resolved": "https://registry.npmjs.org/lifecycle-utils/-/lifecycle-utils-2.0.0.tgz",
9822
+ "integrity": "sha512-KIkV6NeD2n0jZnO+fdIGKI5Or7alyhb6UTFzeaqf6EnE5y3pdK821+kd7yOMBUL/sPYhHU5ny74J0QKslLikGw==",
9823
+ "dev": true,
9824
+ "license": "MIT"
9825
+ },
9826
  "node_modules/lilconfig": {
9827
  "version": "3.1.2",
9828
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
 
10024
  "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
10025
  "dev": true
10026
  },
10027
+ "node_modules/lodash.debounce": {
10028
+ "version": "4.0.8",
10029
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
10030
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
10031
+ "dev": true,
10032
+ "license": "MIT"
10033
+ },
10034
  "node_modules/lodash.isplainobject": {
10035
  "version": "4.0.6",
10036
  "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
 
10043
  "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
10044
  "dev": true
10045
  },
10046
+ "node_modules/log-symbols": {
10047
+ "version": "7.0.0",
10048
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.0.tgz",
10049
+ "integrity": "sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==",
10050
+ "dev": true,
10051
+ "license": "MIT",
10052
+ "dependencies": {
10053
+ "is-unicode-supported": "^2.0.0",
10054
+ "yoctocolors": "^2.1.1"
10055
+ },
10056
+ "engines": {
10057
+ "node": ">=18"
10058
+ },
10059
+ "funding": {
10060
+ "url": "https://github.com/sponsors/sindresorhus"
10061
+ }
10062
+ },
10063
  "node_modules/log-update": {
10064
  "version": "6.1.0",
10065
  "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
 
10188
  "dev": true,
10189
  "license": "MIT"
10190
  },
10191
+ "node_modules/lowdb": {
10192
+ "version": "7.0.1",
10193
+ "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-7.0.1.tgz",
10194
+ "integrity": "sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==",
10195
+ "dev": true,
10196
+ "license": "MIT",
10197
+ "dependencies": {
10198
+ "steno": "^4.0.2"
10199
+ },
10200
+ "engines": {
10201
+ "node": ">=18"
10202
+ },
10203
+ "funding": {
10204
+ "url": "https://github.com/sponsors/typicode"
10205
+ }
10206
+ },
10207
  "node_modules/lru-cache": {
10208
  "version": "6.0.0",
10209
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
 
10283
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
10284
  "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
10285
  "engines": {
10286
+ "node": ">= 0.6"
10287
+ }
10288
+ },
10289
+ "node_modules/memory-pager": {
10290
+ "version": "1.5.0",
10291
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
10292
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
10293
+ },
10294
+ "node_modules/memory-stream": {
10295
+ "version": "1.0.0",
10296
+ "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-1.0.0.tgz",
10297
+ "integrity": "sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==",
10298
+ "dev": true,
10299
+ "license": "MIT",
10300
+ "dependencies": {
10301
+ "readable-stream": "^3.4.0"
10302
+ }
10303
+ },
10304
+ "node_modules/memory-stream/node_modules/readable-stream": {
10305
+ "version": "3.6.2",
10306
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
10307
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
10308
+ "dev": true,
10309
+ "license": "MIT",
10310
+ "dependencies": {
10311
+ "inherits": "^2.0.3",
10312
+ "string_decoder": "^1.1.1",
10313
+ "util-deprecate": "^1.0.1"
10314
+ },
10315
+ "engines": {
10316
+ "node": ">= 6"
10317
  }
10318
  },
 
 
 
 
 
10319
  "node_modules/merge-descriptors": {
10320
  "version": "1.0.3",
10321
  "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
 
10468
  "url": "https://github.com/sponsors/isaacs"
10469
  }
10470
  },
10471
+ "node_modules/mkdirp": {
10472
+ "version": "1.0.4",
10473
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
10474
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
10475
+ "dev": true,
10476
+ "license": "MIT",
10477
+ "bin": {
10478
+ "mkdirp": "bin/cmd.js"
10479
+ },
10480
+ "engines": {
10481
+ "node": ">=10"
10482
+ }
10483
+ },
10484
  "node_modules/mlly": {
10485
  "version": "1.7.1",
10486
  "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz",
 
10929
  "node": ">=12.22.0"
10930
  }
10931
  },
10932
+ "node_modules/node-addon-api": {
10933
+ "version": "8.3.1",
10934
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz",
10935
+ "integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==",
10936
+ "dev": true,
10937
+ "license": "MIT",
10938
+ "engines": {
10939
+ "node": "^18 || ^20 || >= 21"
10940
+ }
10941
+ },
10942
+ "node_modules/node-api-headers": {
10943
+ "version": "1.5.0",
10944
+ "resolved": "https://registry.npmjs.org/node-api-headers/-/node-api-headers-1.5.0.tgz",
10945
+ "integrity": "sha512-Yi/FgnN8IU/Cd6KeLxyHkylBUvDTsSScT0Tna2zTrz8klmc8qF2ppj6Q1LHsmOueJWhigQwR4cO2p0XBGW5IaQ==",
10946
+ "dev": true,
10947
+ "license": "MIT"
10948
+ },
10949
  "node_modules/node-domexception": {
10950
  "version": "1.0.0",
10951
  "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
 
11018
  "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
11019
  "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
11020
  },
11021
+ "node_modules/node-llama-cpp": {
11022
+ "version": "3.6.0",
11023
+ "resolved": "https://registry.npmjs.org/node-llama-cpp/-/node-llama-cpp-3.6.0.tgz",
11024
+ "integrity": "sha512-SzjsZLuG2pQPPkgMniTgK4sCcslA6ion5L55L8qeGnIb0cAhzVDbJ0Lxl5NhuTMm8KkxVZXF2yTihyulPMSLhw==",
11025
+ "dev": true,
11026
+ "hasInstallScript": true,
11027
+ "license": "MIT",
11028
+ "dependencies": {
11029
+ "@huggingface/jinja": "^0.3.3",
11030
+ "async-retry": "^1.3.3",
11031
+ "bytes": "^3.1.2",
11032
+ "chalk": "^5.4.1",
11033
+ "chmodrp": "^1.0.2",
11034
+ "cmake-js": "^7.3.0",
11035
+ "cross-env": "^7.0.3",
11036
+ "cross-spawn": "^7.0.6",
11037
+ "env-var": "^7.5.0",
11038
+ "filenamify": "^6.0.0",
11039
+ "fs-extra": "^11.3.0",
11040
+ "ignore": "^7.0.0",
11041
+ "ipull": "^3.9.2",
11042
+ "is-unicode-supported": "^2.1.0",
11043
+ "lifecycle-utils": "^2.0.0",
11044
+ "log-symbols": "^7.0.0",
11045
+ "nanoid": "^5.0.9",
11046
+ "node-addon-api": "^8.3.0",
11047
+ "octokit": "^4.1.0",
11048
+ "ora": "^8.1.1",
11049
+ "pretty-ms": "^9.2.0",
11050
+ "proper-lockfile": "^4.1.2",
11051
+ "semver": "^7.7.0",
11052
+ "simple-git": "^3.27.0",
11053
+ "slice-ansi": "^7.1.0",
11054
+ "stdout-update": "^4.0.1",
11055
+ "strip-ansi": "^7.1.0",
11056
+ "validate-npm-package-name": "^6.0.0",
11057
+ "which": "^5.0.0",
11058
+ "yargs": "^17.7.2"
11059
+ },
11060
+ "bin": {
11061
+ "nlc": "dist/cli/cli.js",
11062
+ "node-llama-cpp": "dist/cli/cli.js"
11063
+ },
11064
+ "engines": {
11065
+ "node": ">=18.0.0"
11066
+ },
11067
+ "funding": {
11068
+ "type": "github",
11069
+ "url": "https://github.com/sponsors/giladgd"
11070
+ },
11071
+ "optionalDependencies": {
11072
+ "@node-llama-cpp/linux-arm64": "3.6.0",
11073
+ "@node-llama-cpp/linux-armv7l": "3.6.0",
11074
+ "@node-llama-cpp/linux-x64": "3.6.0",
11075
+ "@node-llama-cpp/linux-x64-cuda": "3.6.0",
11076
+ "@node-llama-cpp/linux-x64-vulkan": "3.6.0",
11077
+ "@node-llama-cpp/mac-arm64-metal": "3.6.0",
11078
+ "@node-llama-cpp/mac-x64": "3.6.0",
11079
+ "@node-llama-cpp/win-arm64": "3.6.0",
11080
+ "@node-llama-cpp/win-x64": "3.6.0",
11081
+ "@node-llama-cpp/win-x64-cuda": "3.6.0",
11082
+ "@node-llama-cpp/win-x64-vulkan": "3.6.0"
11083
+ },
11084
+ "peerDependencies": {
11085
+ "typescript": ">=5.0.0"
11086
+ },
11087
+ "peerDependenciesMeta": {
11088
+ "typescript": {
11089
+ "optional": true
11090
+ }
11091
+ }
11092
+ },
11093
+ "node_modules/node-llama-cpp/node_modules/ansi-regex": {
11094
+ "version": "6.1.0",
11095
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
11096
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
11097
+ "dev": true,
11098
+ "license": "MIT",
11099
+ "engines": {
11100
+ "node": ">=12"
11101
+ },
11102
+ "funding": {
11103
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
11104
+ }
11105
+ },
11106
+ "node_modules/node-llama-cpp/node_modules/ansi-styles": {
11107
+ "version": "6.2.1",
11108
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
11109
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
11110
+ "dev": true,
11111
+ "license": "MIT",
11112
+ "engines": {
11113
+ "node": ">=12"
11114
+ },
11115
+ "funding": {
11116
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
11117
+ }
11118
+ },
11119
+ "node_modules/node-llama-cpp/node_modules/chalk": {
11120
+ "version": "5.4.1",
11121
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
11122
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
11123
+ "dev": true,
11124
+ "license": "MIT",
11125
+ "engines": {
11126
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
11127
+ },
11128
+ "funding": {
11129
+ "url": "https://github.com/chalk/chalk?sponsor=1"
11130
+ }
11131
+ },
11132
+ "node_modules/node-llama-cpp/node_modules/ignore": {
11133
+ "version": "7.0.3",
11134
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz",
11135
+ "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==",
11136
+ "dev": true,
11137
+ "license": "MIT",
11138
+ "engines": {
11139
+ "node": ">= 4"
11140
+ }
11141
+ },
11142
+ "node_modules/node-llama-cpp/node_modules/is-fullwidth-code-point": {
11143
+ "version": "5.0.0",
11144
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
11145
+ "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
11146
+ "dev": true,
11147
+ "license": "MIT",
11148
+ "dependencies": {
11149
+ "get-east-asian-width": "^1.0.0"
11150
+ },
11151
+ "engines": {
11152
+ "node": ">=18"
11153
+ },
11154
+ "funding": {
11155
+ "url": "https://github.com/sponsors/sindresorhus"
11156
+ }
11157
+ },
11158
+ "node_modules/node-llama-cpp/node_modules/isexe": {
11159
+ "version": "3.1.1",
11160
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
11161
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
11162
+ "dev": true,
11163
+ "license": "ISC",
11164
+ "engines": {
11165
+ "node": ">=16"
11166
+ }
11167
+ },
11168
+ "node_modules/node-llama-cpp/node_modules/slice-ansi": {
11169
+ "version": "7.1.0",
11170
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
11171
+ "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
11172
+ "dev": true,
11173
+ "license": "MIT",
11174
+ "dependencies": {
11175
+ "ansi-styles": "^6.2.1",
11176
+ "is-fullwidth-code-point": "^5.0.0"
11177
+ },
11178
+ "engines": {
11179
+ "node": ">=18"
11180
+ },
11181
+ "funding": {
11182
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
11183
+ }
11184
+ },
11185
+ "node_modules/node-llama-cpp/node_modules/strip-ansi": {
11186
+ "version": "7.1.0",
11187
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
11188
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
11189
+ "dev": true,
11190
+ "license": "MIT",
11191
+ "dependencies": {
11192
+ "ansi-regex": "^6.0.1"
11193
+ },
11194
+ "engines": {
11195
+ "node": ">=12"
11196
+ },
11197
+ "funding": {
11198
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
11199
+ }
11200
+ },
11201
+ "node_modules/node-llama-cpp/node_modules/which": {
11202
+ "version": "5.0.0",
11203
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
11204
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
11205
+ "dev": true,
11206
+ "license": "ISC",
11207
+ "dependencies": {
11208
+ "isexe": "^3.1.1"
11209
+ },
11210
+ "bin": {
11211
+ "node-which": "bin/which.js"
11212
+ },
11213
+ "engines": {
11214
+ "node": "^18.17.0 || >=20.5.0"
11215
+ }
11216
+ },
11217
  "node_modules/node-releases": {
11218
  "version": "2.0.18",
11219
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
 
11260
  "url": "https://github.com/sponsors/sindresorhus"
11261
  }
11262
  },
11263
+ "node_modules/npmlog": {
11264
+ "version": "6.0.2",
11265
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
11266
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
11267
+ "deprecated": "This package is no longer supported.",
11268
+ "dev": true,
11269
+ "license": "ISC",
11270
+ "dependencies": {
11271
+ "are-we-there-yet": "^3.0.0",
11272
+ "console-control-strings": "^1.1.0",
11273
+ "gauge": "^4.0.3",
11274
+ "set-blocking": "^2.0.0"
11275
+ },
11276
+ "engines": {
11277
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
11278
+ }
11279
+ },
11280
  "node_modules/nwsapi": {
11281
  "version": "2.2.12",
11282
  "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
 
11317
  "node": ">=0.10"
11318
  }
11319
  },
11320
+ "node_modules/octokit": {
11321
+ "version": "4.1.2",
11322
+ "resolved": "https://registry.npmjs.org/octokit/-/octokit-4.1.2.tgz",
11323
+ "integrity": "sha512-0kcTxJOK3yQrJsRb8wKa28hlTze4QOz4sLuUnfXXnhboDhFKgv8LxS86tFwbsafDW9JZ08ByuVAE8kQbYJIZkA==",
11324
+ "dev": true,
11325
+ "license": "MIT",
11326
+ "dependencies": {
11327
+ "@octokit/app": "^15.1.4",
11328
+ "@octokit/core": "^6.1.4",
11329
+ "@octokit/oauth-app": "^7.1.6",
11330
+ "@octokit/plugin-paginate-graphql": "^5.2.4",
11331
+ "@octokit/plugin-paginate-rest": "^11.4.2",
11332
+ "@octokit/plugin-rest-endpoint-methods": "^13.3.1",
11333
+ "@octokit/plugin-retry": "^7.1.4",
11334
+ "@octokit/plugin-throttling": "^9.4.0",
11335
+ "@octokit/request-error": "^6.1.7",
11336
+ "@octokit/types": "^13.7.0"
11337
+ },
11338
+ "engines": {
11339
+ "node": ">= 18"
11340
+ }
11341
+ },
11342
  "node_modules/oidc-token-hash": {
11343
  "version": "5.0.3",
11344
  "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
 
11503
  "word-wrap": "^1.2.5"
11504
  },
11505
  "engines": {
11506
+ "node": ">= 0.8.0"
11507
+ }
11508
+ },
11509
+ "node_modules/ora": {
11510
+ "version": "8.2.0",
11511
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
11512
+ "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
11513
+ "dev": true,
11514
+ "license": "MIT",
11515
+ "dependencies": {
11516
+ "chalk": "^5.3.0",
11517
+ "cli-cursor": "^5.0.0",
11518
+ "cli-spinners": "^2.9.2",
11519
+ "is-interactive": "^2.0.0",
11520
+ "is-unicode-supported": "^2.0.0",
11521
+ "log-symbols": "^6.0.0",
11522
+ "stdin-discarder": "^0.2.2",
11523
+ "string-width": "^7.2.0",
11524
+ "strip-ansi": "^7.1.0"
11525
+ },
11526
+ "engines": {
11527
+ "node": ">=18"
11528
+ },
11529
+ "funding": {
11530
+ "url": "https://github.com/sponsors/sindresorhus"
11531
+ }
11532
+ },
11533
+ "node_modules/ora/node_modules/ansi-regex": {
11534
+ "version": "6.1.0",
11535
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
11536
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
11537
+ "dev": true,
11538
+ "license": "MIT",
11539
+ "engines": {
11540
+ "node": ">=12"
11541
+ },
11542
+ "funding": {
11543
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
11544
+ }
11545
+ },
11546
+ "node_modules/ora/node_modules/chalk": {
11547
+ "version": "5.4.1",
11548
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
11549
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
11550
+ "dev": true,
11551
+ "license": "MIT",
11552
+ "engines": {
11553
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
11554
+ },
11555
+ "funding": {
11556
+ "url": "https://github.com/chalk/chalk?sponsor=1"
11557
+ }
11558
+ },
11559
+ "node_modules/ora/node_modules/log-symbols": {
11560
+ "version": "6.0.0",
11561
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
11562
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
11563
+ "dev": true,
11564
+ "license": "MIT",
11565
+ "dependencies": {
11566
+ "chalk": "^5.3.0",
11567
+ "is-unicode-supported": "^1.3.0"
11568
+ },
11569
+ "engines": {
11570
+ "node": ">=18"
11571
+ },
11572
+ "funding": {
11573
+ "url": "https://github.com/sponsors/sindresorhus"
11574
+ }
11575
+ },
11576
+ "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": {
11577
+ "version": "1.3.0",
11578
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
11579
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
11580
+ "dev": true,
11581
+ "license": "MIT",
11582
+ "engines": {
11583
+ "node": ">=12"
11584
+ },
11585
+ "funding": {
11586
+ "url": "https://github.com/sponsors/sindresorhus"
11587
+ }
11588
+ },
11589
+ "node_modules/ora/node_modules/string-width": {
11590
+ "version": "7.2.0",
11591
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
11592
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
11593
+ "dev": true,
11594
+ "license": "MIT",
11595
+ "dependencies": {
11596
+ "emoji-regex": "^10.3.0",
11597
+ "get-east-asian-width": "^1.0.0",
11598
+ "strip-ansi": "^7.1.0"
11599
+ },
11600
+ "engines": {
11601
+ "node": ">=18"
11602
+ },
11603
+ "funding": {
11604
+ "url": "https://github.com/sponsors/sindresorhus"
11605
+ }
11606
+ },
11607
+ "node_modules/ora/node_modules/strip-ansi": {
11608
+ "version": "7.1.0",
11609
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
11610
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
11611
+ "dev": true,
11612
+ "license": "MIT",
11613
+ "dependencies": {
11614
+ "ansi-regex": "^6.0.1"
11615
+ },
11616
+ "engines": {
11617
+ "node": ">=12"
11618
+ },
11619
+ "funding": {
11620
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
11621
  }
11622
  },
11623
  "node_modules/outvariant": {
 
11731
  "hex-rgb": "^4.1.0"
11732
  }
11733
  },
11734
+ "node_modules/parse-ms": {
11735
+ "version": "4.0.0",
11736
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
11737
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
11738
+ "dev": true,
11739
+ "license": "MIT",
11740
+ "engines": {
11741
+ "node": ">=18"
11742
+ },
11743
+ "funding": {
11744
+ "url": "https://github.com/sponsors/sindresorhus"
11745
+ }
11746
+ },
11747
  "node_modules/parse-srcset": {
11748
  "version": "1.0.2",
11749
  "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
 
12424
  }
12425
  }
12426
  },
12427
+ "node_modules/pretty-bytes": {
12428
+ "version": "6.1.1",
12429
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz",
12430
+ "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==",
12431
+ "dev": true,
12432
+ "license": "MIT",
12433
+ "engines": {
12434
+ "node": "^14.13.1 || >=16.0.0"
12435
+ },
12436
+ "funding": {
12437
+ "url": "https://github.com/sponsors/sindresorhus"
12438
+ }
12439
+ },
12440
+ "node_modules/pretty-ms": {
12441
+ "version": "9.2.0",
12442
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
12443
+ "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
12444
+ "dev": true,
12445
+ "license": "MIT",
12446
+ "dependencies": {
12447
+ "parse-ms": "^4.0.0"
12448
+ },
12449
+ "engines": {
12450
+ "node": ">=18"
12451
+ },
12452
+ "funding": {
12453
+ "url": "https://github.com/sponsors/sindresorhus"
12454
+ }
12455
+ },
12456
  "node_modules/process": {
12457
  "version": "0.11.10",
12458
  "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
 
12479
  "node": "^16 || ^18 || >=20"
12480
  }
12481
  },
12482
+ "node_modules/proper-lockfile": {
12483
+ "version": "4.1.2",
12484
+ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz",
12485
+ "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==",
12486
+ "dev": true,
12487
+ "license": "MIT",
12488
+ "dependencies": {
12489
+ "graceful-fs": "^4.2.4",
12490
+ "retry": "^0.12.0",
12491
+ "signal-exit": "^3.0.2"
12492
+ }
12493
+ },
12494
+ "node_modules/proper-lockfile/node_modules/retry": {
12495
+ "version": "0.12.0",
12496
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
12497
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
12498
+ "dev": true,
12499
+ "license": "MIT",
12500
+ "engines": {
12501
+ "node": ">= 4"
12502
+ }
12503
+ },
12504
+ "node_modules/proper-lockfile/node_modules/signal-exit": {
12505
+ "version": "3.0.7",
12506
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
12507
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
12508
+ "dev": true,
12509
+ "license": "ISC"
12510
+ },
12511
  "node_modules/protobufjs": {
12512
  "version": "7.4.0",
12513
  "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
 
12544
  "node": ">= 0.10"
12545
  }
12546
  },
12547
+ "node_modules/proxy-from-env": {
12548
+ "version": "1.1.0",
12549
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
12550
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
12551
+ "dev": true,
12552
+ "license": "MIT"
12553
+ },
12554
  "node_modules/psl": {
12555
  "version": "1.9.0",
12556
  "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
 
12664
  "node": ">= 0.8"
12665
  }
12666
  },
12667
+ "node_modules/rc": {
12668
+ "version": "1.2.8",
12669
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
12670
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
12671
+ "dev": true,
12672
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
12673
+ "dependencies": {
12674
+ "deep-extend": "^0.6.0",
12675
+ "ini": "~1.3.0",
12676
+ "minimist": "^1.2.0",
12677
+ "strip-json-comments": "~2.0.1"
12678
+ },
12679
+ "bin": {
12680
+ "rc": "cli.js"
12681
+ }
12682
+ },
12683
+ "node_modules/rc/node_modules/strip-json-comments": {
12684
+ "version": "2.0.1",
12685
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
12686
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
12687
+ "dev": true,
12688
+ "license": "MIT",
12689
+ "engines": {
12690
+ "node": ">=0.10.0"
12691
+ }
12692
+ },
12693
  "node_modules/read-cache": {
12694
  "version": "1.0.0",
12695
  "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
 
12804
  "url": "https://github.com/sponsors/sindresorhus"
12805
  }
12806
  },
12807
+ "node_modules/retry": {
12808
+ "version": "0.13.1",
12809
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
12810
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
12811
+ "dev": true,
12812
+ "license": "MIT",
12813
+ "engines": {
12814
+ "node": ">= 4"
12815
+ }
12816
+ },
12817
  "node_modules/reusify": {
12818
  "version": "1.0.4",
12819
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
 
13082
  }
13083
  },
13084
  "node_modules/semver": {
13085
+ "version": "7.7.1",
13086
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
13087
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
13088
+ "license": "ISC",
13089
  "bin": {
13090
  "semver": "bin/semver.js"
13091
  },
 
13159
  "node": ">= 0.8"
13160
  }
13161
  },
13162
+ "node_modules/set-blocking": {
13163
+ "version": "2.0.0",
13164
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
13165
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
13166
+ "dev": true,
13167
+ "license": "ISC"
13168
+ },
13169
  "node_modules/set-cookie-parser": {
13170
  "version": "2.7.0",
13171
  "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
 
13284
  "url": "https://github.com/sponsors/isaacs"
13285
  }
13286
  },
13287
+ "node_modules/simple-git": {
13288
+ "version": "3.27.0",
13289
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz",
13290
+ "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==",
13291
+ "dev": true,
13292
+ "license": "MIT",
13293
+ "dependencies": {
13294
+ "@kwsites/file-exists": "^1.1.1",
13295
+ "@kwsites/promise-deferred": "^1.1.1",
13296
+ "debug": "^4.3.5"
13297
+ },
13298
+ "funding": {
13299
+ "type": "github",
13300
+ "url": "https://github.com/steveukx/git-js?sponsor=1"
13301
+ }
13302
+ },
13303
  "node_modules/simple-swizzle": {
13304
  "version": "0.2.2",
13305
  "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
 
13331
  "node": ">=8"
13332
  }
13333
  },
13334
+ "node_modules/sleep-promise": {
13335
+ "version": "9.1.0",
13336
+ "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-9.1.0.tgz",
13337
+ "integrity": "sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==",
13338
+ "dev": true,
13339
+ "license": "MIT"
13340
+ },
13341
  "node_modules/slice-ansi": {
13342
  "version": "5.0.0",
13343
  "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
 
13465
  "dev": true,
13466
  "license": "MIT"
13467
  },
13468
+ "node_modules/stdin-discarder": {
13469
+ "version": "0.2.2",
13470
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
13471
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
13472
+ "dev": true,
13473
+ "license": "MIT",
13474
+ "engines": {
13475
+ "node": ">=18"
13476
+ },
13477
+ "funding": {
13478
+ "url": "https://github.com/sponsors/sindresorhus"
13479
+ }
13480
+ },
13481
+ "node_modules/stdout-update": {
13482
+ "version": "4.0.1",
13483
+ "resolved": "https://registry.npmjs.org/stdout-update/-/stdout-update-4.0.1.tgz",
13484
+ "integrity": "sha512-wiS21Jthlvl1to+oorePvcyrIkiG/6M3D3VTmDUlJm7Cy6SbFhKkAvX+YBuHLxck/tO3mrdpC/cNesigQc3+UQ==",
13485
+ "dev": true,
13486
+ "license": "MIT",
13487
+ "dependencies": {
13488
+ "ansi-escapes": "^6.2.0",
13489
+ "ansi-styles": "^6.2.1",
13490
+ "string-width": "^7.1.0",
13491
+ "strip-ansi": "^7.1.0"
13492
+ },
13493
+ "engines": {
13494
+ "node": ">=16.0.0"
13495
+ }
13496
+ },
13497
+ "node_modules/stdout-update/node_modules/ansi-escapes": {
13498
+ "version": "6.2.1",
13499
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz",
13500
+ "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==",
13501
+ "dev": true,
13502
+ "license": "MIT",
13503
+ "engines": {
13504
+ "node": ">=14.16"
13505
+ },
13506
+ "funding": {
13507
+ "url": "https://github.com/sponsors/sindresorhus"
13508
+ }
13509
+ },
13510
+ "node_modules/stdout-update/node_modules/ansi-regex": {
13511
+ "version": "6.1.0",
13512
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
13513
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
13514
+ "dev": true,
13515
+ "license": "MIT",
13516
+ "engines": {
13517
+ "node": ">=12"
13518
+ },
13519
+ "funding": {
13520
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
13521
+ }
13522
+ },
13523
+ "node_modules/stdout-update/node_modules/ansi-styles": {
13524
+ "version": "6.2.1",
13525
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
13526
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
13527
+ "dev": true,
13528
+ "license": "MIT",
13529
+ "engines": {
13530
+ "node": ">=12"
13531
+ },
13532
+ "funding": {
13533
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
13534
+ }
13535
+ },
13536
+ "node_modules/stdout-update/node_modules/string-width": {
13537
+ "version": "7.2.0",
13538
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
13539
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
13540
+ "dev": true,
13541
+ "license": "MIT",
13542
+ "dependencies": {
13543
+ "emoji-regex": "^10.3.0",
13544
+ "get-east-asian-width": "^1.0.0",
13545
+ "strip-ansi": "^7.1.0"
13546
+ },
13547
+ "engines": {
13548
+ "node": ">=18"
13549
+ },
13550
+ "funding": {
13551
+ "url": "https://github.com/sponsors/sindresorhus"
13552
+ }
13553
+ },
13554
+ "node_modules/stdout-update/node_modules/strip-ansi": {
13555
+ "version": "7.1.0",
13556
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
13557
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
13558
+ "dev": true,
13559
+ "license": "MIT",
13560
+ "dependencies": {
13561
+ "ansi-regex": "^6.0.1"
13562
+ },
13563
+ "engines": {
13564
+ "node": ">=12"
13565
+ },
13566
+ "funding": {
13567
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
13568
+ }
13569
+ },
13570
+ "node_modules/steno": {
13571
+ "version": "4.0.2",
13572
+ "resolved": "https://registry.npmjs.org/steno/-/steno-4.0.2.tgz",
13573
+ "integrity": "sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==",
13574
+ "dev": true,
13575
+ "license": "MIT",
13576
+ "engines": {
13577
+ "node": ">=18"
13578
+ },
13579
+ "funding": {
13580
+ "url": "https://github.com/sponsors/typicode"
13581
+ }
13582
+ },
13583
  "node_modules/streamx": {
13584
  "version": "2.20.1",
13585
  "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz",
 
14284
  "node": ">=8.0"
14285
  }
14286
  },
14287
+ "node_modules/toad-cache": {
14288
+ "version": "3.7.0",
14289
+ "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
14290
+ "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
14291
+ "dev": true,
14292
+ "license": "MIT",
14293
+ "engines": {
14294
+ "node": ">=12"
14295
+ }
14296
+ },
14297
  "node_modules/toidentifier": {
14298
  "version": "1.0.1",
14299
  "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
 
14536
  "tiny-inflate": "^1.0.0"
14537
  }
14538
  },
14539
+ "node_modules/universal-github-app-jwt": {
14540
+ "version": "2.2.2",
14541
+ "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-2.2.2.tgz",
14542
+ "integrity": "sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw==",
14543
+ "dev": true,
14544
+ "license": "MIT"
14545
+ },
14546
+ "node_modules/universal-user-agent": {
14547
+ "version": "7.0.2",
14548
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
14549
+ "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
14550
+ "dev": true,
14551
+ "license": "ISC"
14552
+ },
14553
  "node_modules/universalify": {
14554
  "version": "0.2.0",
14555
  "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
 
14671
  "version": "4.0.1",
14672
  "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
14673
  "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
14674
+ "devOptional": true
14675
  },
14676
  "node_modules/url-parse": {
14677
  "version": "1.5.10",
 
14713
  "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
14714
  "devOptional": true
14715
  },
14716
+ "node_modules/validate-npm-package-name": {
14717
+ "version": "6.0.0",
14718
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.0.tgz",
14719
+ "integrity": "sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==",
14720
+ "dev": true,
14721
+ "license": "ISC",
14722
+ "engines": {
14723
+ "node": "^18.17.0 || >=20.5.0"
14724
+ }
14725
+ },
14726
  "node_modules/varint": {
14727
  "version": "5.0.2",
14728
  "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
 
15090
  "node": ">=8"
15091
  }
15092
  },
15093
+ "node_modules/wide-align": {
15094
+ "version": "1.1.5",
15095
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
15096
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
15097
+ "dev": true,
15098
+ "license": "ISC",
15099
+ "dependencies": {
15100
+ "string-width": "^1.0.2 || 2 || 3 || 4"
15101
+ }
15102
+ },
15103
+ "node_modules/wide-align/node_modules/emoji-regex": {
15104
+ "version": "8.0.0",
15105
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
15106
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
15107
+ "dev": true,
15108
+ "license": "MIT"
15109
+ },
15110
+ "node_modules/wide-align/node_modules/is-fullwidth-code-point": {
15111
+ "version": "3.0.0",
15112
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
15113
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
15114
+ "dev": true,
15115
+ "license": "MIT",
15116
+ "engines": {
15117
+ "node": ">=8"
15118
+ }
15119
+ },
15120
+ "node_modules/wide-align/node_modules/string-width": {
15121
+ "version": "4.2.3",
15122
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
15123
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
15124
+ "dev": true,
15125
+ "license": "MIT",
15126
+ "dependencies": {
15127
+ "emoji-regex": "^8.0.0",
15128
+ "is-fullwidth-code-point": "^3.0.0",
15129
+ "strip-ansi": "^6.0.1"
15130
+ },
15131
+ "engines": {
15132
+ "node": ">=8"
15133
+ }
15134
+ },
15135
  "node_modules/word-wrap": {
15136
  "version": "1.2.5",
15137
  "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
 
15398
  "url": "https://github.com/sponsors/sindresorhus"
15399
  }
15400
  },
15401
+ "node_modules/yoctocolors": {
15402
+ "version": "2.1.1",
15403
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
15404
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
15405
+ "dev": true,
15406
+ "license": "MIT",
15407
+ "engines": {
15408
+ "node": ">=18"
15409
+ },
15410
+ "funding": {
15411
+ "url": "https://github.com/sponsors/sindresorhus"
15412
+ }
15413
+ },
15414
  "node_modules/yoctocolors-cjs": {
15415
  "version": "2.1.2",
15416
  "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
package.json CHANGED
@@ -46,6 +46,7 @@
46
  "js-yaml": "^4.1.0",
47
  "minimist": "^1.2.8",
48
  "mongodb-memory-server": "^10.1.2",
 
49
  "prettier": "^3.1.0",
50
  "prettier-plugin-svelte": "^3.2.6",
51
  "prettier-plugin-tailwindcss": "^0.6.11",
@@ -116,9 +117,12 @@
116
  "@anthropic-ai/vertex-sdk": "^0.4.1",
117
  "@aws-sdk/client-bedrock-runtime": "^3.631.0",
118
  "@google-cloud/vertexai": "^1.1.0",
119
- "@google/generative-ai": "^0.14.1",
120
  "aws4fetch": "^1.0.17",
121
  "cohere-ai": "^7.9.0",
122
  "openai": "^4.44.0"
 
 
 
123
  }
124
  }
 
46
  "js-yaml": "^4.1.0",
47
  "minimist": "^1.2.8",
48
  "mongodb-memory-server": "^10.1.2",
49
+ "node-llama-cpp": "^3.6.0",
50
  "prettier": "^3.1.0",
51
  "prettier-plugin-svelte": "^3.2.6",
52
  "prettier-plugin-tailwindcss": "^0.6.11",
 
117
  "@anthropic-ai/vertex-sdk": "^0.4.1",
118
  "@aws-sdk/client-bedrock-runtime": "^3.631.0",
119
  "@google-cloud/vertexai": "^1.1.0",
120
+ "@google/generative-ai": "^0.24.0",
121
  "aws4fetch": "^1.0.17",
122
  "cohere-ai": "^7.9.0",
123
  "openai": "^4.44.0"
124
+ },
125
+ "overrides": {
126
+ "@reflink/reflink": "file:stub/@reflink/reflink"
127
  }
128
  }
src/lib/buildPrompt.ts CHANGED
@@ -24,7 +24,10 @@ export async function buildPrompt({
24
 
25
  let prompt = model
26
  .chatPromptRender({
27
- messages: filteredMessages,
 
 
 
28
  preprompt,
29
  tools,
30
  toolResults,
 
24
 
25
  let prompt = model
26
  .chatPromptRender({
27
+ messages: filteredMessages.map((m) => ({
28
+ ...m,
29
+ role: m.from,
30
+ })),
31
  preprompt,
32
  tools,
33
  toolResults,
src/lib/server/database.ts CHANGED
@@ -22,19 +22,12 @@ import { onExit } from "./exitHandler";
22
  import { fileURLToPath } from "url";
23
  import { dirname, join } from "path";
24
  import { existsSync, mkdirSync } from "fs";
 
25
 
26
  export const CONVERSATION_STATS_COLLECTION = "conversations.stats";
27
 
28
- function findRepoRoot(startPath: string): string {
29
- let currentPath = startPath;
30
- while (currentPath !== "/") {
31
- if (existsSync(join(currentPath, "package.json"))) {
32
- return currentPath;
33
- }
34
- currentPath = dirname(currentPath);
35
- }
36
- throw new Error("Could not find repository root (no package.json found)");
37
- }
38
 
39
  export class Database {
40
  private client?: MongoClient;
@@ -46,24 +39,17 @@ export class Database {
46
  if (!env.MONGODB_URL) {
47
  logger.warn("No MongoDB URL found, using in-memory server");
48
 
49
- // Find repo root by looking for package.json
50
- const currentFilePath = fileURLToPath(import.meta.url);
51
- const repoRoot = findRepoRoot(dirname(currentFilePath));
52
-
53
- // Use MONGO_STORAGE_PATH from env if set, otherwise use db/ in repo root
54
- const dbPath = env.MONGO_STORAGE_PATH || join(repoRoot, "db");
55
-
56
- logger.info(`Using database path: ${dbPath}`);
57
  // Create db directory if it doesn't exist
58
- if (!existsSync(dbPath)) {
59
- logger.info(`Creating database directory at ${dbPath}`);
60
- mkdirSync(dbPath, { recursive: true });
61
  }
62
 
63
  this.mongoServer = await MongoMemoryServer.create({
64
  instance: {
65
  dbName: env.MONGODB_DB_NAME + (import.meta.env.MODE === "test" ? "-test" : ""),
66
- dbPath,
67
  },
68
  binary: {
69
  version: "7.0.18",
 
22
  import { fileURLToPath } from "url";
23
  import { dirname, join } from "path";
24
  import { existsSync, mkdirSync } from "fs";
25
+ import { findRepoRoot } from "./findRepoRoot";
26
 
27
  export const CONVERSATION_STATS_COLLECTION = "conversations.stats";
28
 
29
+ export const DB_FOLDER =
30
+ env.MONGO_STORAGE_PATH || join(findRepoRoot(dirname(fileURLToPath(import.meta.url))), "db");
 
 
 
 
 
 
 
 
31
 
32
  export class Database {
33
  private client?: MongoClient;
 
39
  if (!env.MONGODB_URL) {
40
  logger.warn("No MongoDB URL found, using in-memory server");
41
 
42
+ logger.info(`Using database path: ${DB_FOLDER}`);
 
 
 
 
 
 
 
43
  // Create db directory if it doesn't exist
44
+ if (!existsSync(DB_FOLDER)) {
45
+ logger.info(`Creating database directory at ${DB_FOLDER}`);
46
+ mkdirSync(DB_FOLDER, { recursive: true });
47
  }
48
 
49
  this.mongoServer = await MongoMemoryServer.create({
50
  instance: {
51
  dbName: env.MONGODB_DB_NAME + (import.meta.env.MODE === "test" ? "-test" : ""),
52
+ dbPath: DB_FOLDER,
53
  },
54
  binary: {
55
  version: "7.0.18",
src/lib/server/endpoints/endpoints.ts CHANGED
@@ -30,6 +30,7 @@ import endpointLangserve, {
30
 
31
  import type { Tool, ToolCall, ToolResult } from "$lib/types/Tool";
32
  import type { ObjectId } from "mongodb";
 
33
 
34
  export type EndpointMessage = Omit<Message, "id">;
35
 
@@ -75,6 +76,7 @@ export const endpoints = {
75
  cloudflare: endpointCloudflare,
76
  cohere: endpointCohere,
77
  langserve: endpointLangserve,
 
78
  };
79
 
80
  export const endpointSchema = z.discriminatedUnion("type", [
@@ -91,5 +93,6 @@ export const endpointSchema = z.discriminatedUnion("type", [
91
  endpointCloudflareParametersSchema,
92
  endpointCohereParametersSchema,
93
  endpointLangserveParametersSchema,
 
94
  ]);
95
  export default endpoints;
 
30
 
31
  import type { Tool, ToolCall, ToolResult } from "$lib/types/Tool";
32
  import type { ObjectId } from "mongodb";
33
+ import { endpointLocal, endpointLocalParametersSchema } from "./local/endpointLocal";
34
 
35
  export type EndpointMessage = Omit<Message, "id">;
36
 
 
76
  cloudflare: endpointCloudflare,
77
  cohere: endpointCohere,
78
  langserve: endpointLangserve,
79
+ local: endpointLocal,
80
  };
81
 
82
  export const endpointSchema = z.discriminatedUnion("type", [
 
93
  endpointCloudflareParametersSchema,
94
  endpointCohereParametersSchema,
95
  endpointLangserveParametersSchema,
96
+ endpointLocalParametersSchema,
97
  ]);
98
  export default endpoints;
src/lib/server/endpoints/local/endpointLocal.ts ADDED
@@ -0,0 +1,237 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { env } from "$env/dynamic/private";
2
+ import type {
3
+ Endpoint,
4
+ EndpointMessage,
5
+ TextGenerationStreamOutputWithToolsAndWebSources,
6
+ } from "../endpoints";
7
+ import { z } from "zod";
8
+ import {
9
+ createImageProcessorOptionsValidator,
10
+ makeImageProcessor,
11
+ type ImageProcessor,
12
+ } from "../images";
13
+
14
+ import { LlamaChatSession, LlamaContextSequence, resolveModelFile } from "node-llama-cpp";
15
+ import { findRepoRoot } from "$lib/server/findRepoRoot";
16
+ import { fileURLToPath } from "url";
17
+ import { dirname, join } from "path";
18
+ import { logger } from "$lib/server/logger";
19
+ import { llama } from "./utilsLocal";
20
+
21
+ export const endpointLocalParametersSchema = z.object({
22
+ weight: z.number().int().positive().default(1),
23
+ model: z.any(),
24
+ modelPath: z.string().optional(),
25
+ type: z.literal("local"),
26
+ multimodal: z
27
+ .object({
28
+ // Assumes IDEFICS
29
+ image: createImageProcessorOptionsValidator({
30
+ supportedMimeTypes: ["image/jpeg", "image/webp"],
31
+ preferredMimeType: "image/webp",
32
+ maxSizeInMB: 5,
33
+ maxWidth: 378,
34
+ maxHeight: 980,
35
+ }),
36
+ })
37
+ .default({}),
38
+ });
39
+
40
+ export async function endpointLocal(
41
+ input: z.input<typeof endpointLocalParametersSchema>
42
+ ): Promise<Endpoint> {
43
+ // Parse and validate input
44
+ const {
45
+ modelPath: modelPathInput,
46
+ multimodal,
47
+ model,
48
+ } = endpointLocalParametersSchema.parse(input);
49
+
50
+ // Setup model path and folder
51
+ const path = modelPathInput ?? `hf:${model.id ?? model.name}`;
52
+ const modelFolder =
53
+ env.MODELS_STORAGE_PATH ||
54
+ join(findRepoRoot(dirname(fileURLToPath(import.meta.url))), "models");
55
+
56
+ // Initialize Llama model
57
+
58
+ const modelPath = await resolveModelFile(path, modelFolder);
59
+ const modelLoaded = await llama.loadModel({
60
+ modelPath,
61
+ });
62
+ // Create context and image processor
63
+ const context = await modelLoaded.createContext({ sequences: 1 });
64
+ const imageProcessor = makeImageProcessor(multimodal.image);
65
+
66
+ return async function ({
67
+ messages,
68
+ preprompt,
69
+ continueMessage,
70
+ generateSettings,
71
+ // tools,
72
+ // toolResults,
73
+ isMultimodal,
74
+ }) {
75
+ // Process messages and build prompt
76
+ const processedMessages = await Promise.all(
77
+ messages.map((msg) => prepareMessage(Boolean(isMultimodal), msg, imageProcessor))
78
+ );
79
+
80
+ let sequence: LlamaContextSequence;
81
+ try {
82
+ sequence = context.getSequence();
83
+ } catch (error) {
84
+ logger.error(error, `Error getting sequence`);
85
+ throw error;
86
+ }
87
+
88
+ const chatSession = new LlamaChatSession({
89
+ contextSequence: sequence,
90
+ systemPrompt: preprompt,
91
+ });
92
+
93
+ chatSession.setChatHistory(
94
+ messages.slice(0, -1).map((message) => {
95
+ switch (message.from) {
96
+ case "user":
97
+ return {
98
+ type: "user",
99
+ text: message.content,
100
+ };
101
+ case "assistant":
102
+ return {
103
+ type: "model",
104
+ response: [message.content],
105
+ };
106
+ case "system":
107
+ return {
108
+ type: "system",
109
+ text: message.content,
110
+ };
111
+ }
112
+ })
113
+ );
114
+
115
+ async function* generateTokens(): AsyncGenerator<TextGenerationStreamOutputWithToolsAndWebSources> {
116
+ let tokenId = 0;
117
+ let fullText = "";
118
+ // A simple queue for tokens that have been produced
119
+ const queue: TextGenerationStreamOutputWithToolsAndWebSources[] = [];
120
+ let waitingResolve:
121
+ | ((value: TextGenerationStreamOutputWithToolsAndWebSources | null) => void)
122
+ | null = null;
123
+ let generationCompleted = false;
124
+
125
+ // Helper function to push tokens to the queue
126
+ function pushOutput(output: TextGenerationStreamOutputWithToolsAndWebSources) {
127
+ if (waitingResolve) {
128
+ waitingResolve(output);
129
+ waitingResolve = null;
130
+ } else {
131
+ queue.push(output);
132
+ }
133
+ }
134
+
135
+ const options = {
136
+ maxTokens: generateSettings?.max_new_tokens,
137
+ temperature: generateSettings?.temperature ?? 0.2,
138
+ topP: generateSettings?.top_p ?? 0.9,
139
+ topK: generateSettings?.top_k ?? 40,
140
+ onTextChunk: (text: string) => {
141
+ fullText += text;
142
+ const output: TextGenerationStreamOutputWithToolsAndWebSources = {
143
+ token: {
144
+ id: tokenId++,
145
+ text,
146
+ logprob: 0,
147
+ special: false,
148
+ },
149
+ generated_text: null,
150
+ details: null,
151
+ };
152
+ // Instead of returning the token, push it into our queue.
153
+ pushOutput(output);
154
+ },
155
+ };
156
+
157
+ let generationPromise;
158
+ if (!continueMessage)
159
+ // Start the token generation process
160
+ generationPromise = chatSession.prompt(
161
+ processedMessages[processedMessages.length - 1].content,
162
+ options
163
+ );
164
+ else {
165
+ generationPromise = chatSession.completePrompt(
166
+ processedMessages[processedMessages.length - 1].content,
167
+ options
168
+ );
169
+ }
170
+
171
+ try {
172
+ // Yield tokens as they become available
173
+ while (!generationCompleted || queue.length > 0) {
174
+ if (queue.length === 0) {
175
+ const output =
176
+ await new Promise<TextGenerationStreamOutputWithToolsAndWebSources | null>(
177
+ (resolve) => (waitingResolve = resolve)
178
+ );
179
+
180
+ // When output is null, it indicates generation completion.
181
+ if (output === null || !output.token.text) break;
182
+ if (model.parameters.stop_sequences?.includes(output.token.text)) {
183
+ break;
184
+ }
185
+ yield output;
186
+ } else {
187
+ const output = queue.shift();
188
+ if (output) yield output;
189
+ }
190
+ }
191
+
192
+ // Wait for the generation process to complete (and catch errors if any)
193
+ await generationPromise.finally(() => {
194
+ generationCompleted = true;
195
+ // Resolve any pending waiters so the loop can end.
196
+ if (waitingResolve) {
197
+ waitingResolve(null);
198
+ waitingResolve = null;
199
+ }
200
+ });
201
+
202
+ // Yield a final token that contains the full generated text.
203
+ yield {
204
+ token: {
205
+ id: tokenId,
206
+ text: "",
207
+ logprob: 0,
208
+ special: true,
209
+ },
210
+ generated_text: fullText,
211
+ details: null,
212
+ };
213
+ } catch (error) {
214
+ logger.error(error, `Generation error`);
215
+ // Ensure we clean up the LlamaManager in case of errors
216
+ throw error;
217
+ }
218
+ }
219
+
220
+ return generateTokens();
221
+ };
222
+ }
223
+
224
+ async function prepareMessage(
225
+ isMultimodal: boolean,
226
+ message: EndpointMessage,
227
+ imageProcessor: ImageProcessor
228
+ ): Promise<EndpointMessage> {
229
+ if (!isMultimodal) return message;
230
+ const files = await Promise.all(message.files?.map(imageProcessor) ?? []);
231
+ const markdowns = files.map(
232
+ (file) => `![](data:${file.mime};base64,${file.image.toString("base64")})`
233
+ );
234
+ const content = message.content + "\n" + markdowns.join("\n ");
235
+
236
+ return { ...message, content };
237
+ }
src/lib/server/endpoints/local/utilsLocal.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ import { getLlama } from "node-llama-cpp";
2
+
3
+ export const llama = await getLlama();
src/lib/server/exitHandler.ts CHANGED
@@ -24,18 +24,36 @@ async function runExitHandler(handler: ExitHandler): Promise<void> {
24
  export function initExitHandler() {
25
  let signalCount = 0;
26
  const exitHandler = async () => {
27
- signalCount++;
28
  if (signalCount === 1) {
29
  logger.info("Received signal... Exiting");
30
  await Promise.all(Array.from(listeners.values()).map(runExitHandler));
31
  logger.info("All exit handlers ran... Waiting for svelte server to exit");
32
  }
33
- if (signalCount === 3) {
34
- logger.warn("Received 3 signals... Exiting immediately");
35
- process.exit(1);
36
- }
37
  };
38
 
39
- process.on("SIGINT", exitHandler);
40
- process.on("SIGTERM", exitHandler);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
 
24
  export function initExitHandler() {
25
  let signalCount = 0;
26
  const exitHandler = async () => {
 
27
  if (signalCount === 1) {
28
  logger.info("Received signal... Exiting");
29
  await Promise.all(Array.from(listeners.values()).map(runExitHandler));
30
  logger.info("All exit handlers ran... Waiting for svelte server to exit");
31
  }
 
 
 
 
32
  };
33
 
34
+ process.on("SIGINT", () => {
35
+ signalCount++;
36
+
37
+ if (signalCount >= 2) {
38
+ process.kill(process.pid, "SIGKILL");
39
+ } else {
40
+ exitHandler().catch((err) => {
41
+ logger.error("Exit handler error:", err);
42
+ process.kill(process.pid, "SIGKILL");
43
+ });
44
+ }
45
+ });
46
+
47
+ process.on("SIGTERM", () => {
48
+ signalCount++;
49
+
50
+ if (signalCount >= 2) {
51
+ process.kill(process.pid, "SIGKILL");
52
+ } else {
53
+ exitHandler().catch((err) => {
54
+ logger.error("Exit handler error:", err);
55
+ process.kill(process.pid, "SIGKILL");
56
+ });
57
+ }
58
+ });
59
  }
src/lib/server/findRepoRoot.ts ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { existsSync } from "fs";
2
+ import { join, dirname } from "path";
3
+
4
+ export function findRepoRoot(startPath: string): string {
5
+ let currentPath = startPath;
6
+ while (currentPath !== "/") {
7
+ if (existsSync(join(currentPath, "package.json"))) {
8
+ return currentPath;
9
+ }
10
+ currentPath = dirname(currentPath);
11
+ }
12
+ throw new Error("Could not find repository root (no package.json found)");
13
+ }
src/lib/server/generateFromDefaultEndpoint.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { smallModel } from "$lib/server/models";
2
  import { MessageUpdateType, type MessageUpdate } from "$lib/types/MessageUpdate";
3
  import type { EndpointMessage } from "./endpoints/endpoints";
4
 
@@ -11,7 +11,7 @@ export async function* generateFromDefaultEndpoint({
11
  preprompt?: string;
12
  generateSettings?: Record<string, unknown>;
13
  }): AsyncGenerator<MessageUpdate, string, undefined> {
14
- const endpoint = await smallModel.getEndpoint();
15
 
16
  const tokenStream = await endpoint({ messages, preprompt, generateSettings });
17
 
@@ -19,7 +19,7 @@ export async function* generateFromDefaultEndpoint({
19
  // if not generated_text is here it means the generation is not done
20
  if (output.generated_text) {
21
  let generated_text = output.generated_text;
22
- for (const stop of [...(smallModel.parameters?.stop ?? []), "<|endoftext|>"]) {
23
  if (generated_text.endsWith(stop)) {
24
  generated_text = generated_text.slice(0, -stop.length).trimEnd();
25
  }
 
1
+ import { taskModel } from "$lib/server/models";
2
  import { MessageUpdateType, type MessageUpdate } from "$lib/types/MessageUpdate";
3
  import type { EndpointMessage } from "./endpoints/endpoints";
4
 
 
11
  preprompt?: string;
12
  generateSettings?: Record<string, unknown>;
13
  }): AsyncGenerator<MessageUpdate, string, undefined> {
14
+ const endpoint = await taskModel.getEndpoint();
15
 
16
  const tokenStream = await endpoint({ messages, preprompt, generateSettings });
17
 
 
19
  // if not generated_text is here it means the generation is not done
20
  if (output.generated_text) {
21
  let generated_text = output.generated_text;
22
+ for (const stop of [...(taskModel.parameters?.stop ?? []), "<|endoftext|>"]) {
23
  if (generated_text.endsWith(stop)) {
24
  generated_text = generated_text.slice(0, -stop.length).trimEnd();
25
  }
src/lib/server/models.ts CHANGED
@@ -14,6 +14,15 @@ import { getTokenizer } from "$lib/utils/getTokenizer";
14
  import { logger } from "$lib/server/logger";
15
  import { ToolResultStatus, type ToolInput } from "$lib/types/Tool";
16
  import { isHuggingChat } from "$lib/utils/isHuggingChat";
 
 
 
 
 
 
 
 
 
17
 
18
  type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
19
 
@@ -88,11 +97,51 @@ const modelConfig = z.object({
88
  reasoning: reasoningSchema.optional(),
89
  });
90
 
91
- const modelsRaw = z.array(modelConfig).parse(JSON5.parse(env.MODELS));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
  async function getChatPromptRender(
94
  m: z.infer<typeof modelConfig>
95
  ): Promise<ReturnType<typeof compileTemplate<ChatTemplateInput>>> {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  if (m.chatPromptTemplate) {
97
  return compileTemplate<ChatTemplateInput>(m.chatPromptTemplate, m);
98
  }
@@ -305,6 +354,8 @@ const addEndpoint = (m: Awaited<ReturnType<typeof processModel>>) => ({
305
  switch (args.type) {
306
  case "tgi":
307
  return endpoints.tgi(args);
 
 
308
  case "anthropic":
309
  return endpoints.anthropic(args);
310
  case "anthropic-vertex":
@@ -393,13 +444,13 @@ export const validateModel = (_models: BackendModel[]) => {
393
 
394
  // if `TASK_MODEL` is string & name of a model in `MODELS`, then we use `MODELS[TASK_MODEL]`, else we try to parse `TASK_MODEL` as a model config itself
395
 
396
- export const smallModel = env.TASK_MODEL
397
- ? ((models.find((m) => m.name === env.TASK_MODEL) ||
398
- (await processModel(modelConfig.parse(JSON5.parse(env.TASK_MODEL))).then((m) =>
399
- addEndpoint(m)
400
- ))) ??
401
- defaultModel)
402
- : defaultModel;
403
 
404
  export type BackendModel = Optional<
405
  typeof defaultModel,
 
14
  import { logger } from "$lib/server/logger";
15
  import { ToolResultStatus, type ToolInput } from "$lib/types/Tool";
16
  import { isHuggingChat } from "$lib/utils/isHuggingChat";
17
+ import { join, dirname } from "path";
18
+ import { resolveModelFile, readGgufFileInfo } from "node-llama-cpp";
19
+ import { fileURLToPath } from "url";
20
+ import { findRepoRoot } from "./findRepoRoot";
21
+ import { Template } from "@huggingface/jinja";
22
+ import { readdirSync } from "fs";
23
+
24
+ export const MODELS_FOLDER =
25
+ env.MODELS_STORAGE_PATH || join(findRepoRoot(dirname(fileURLToPath(import.meta.url))), "models");
26
 
27
  type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
28
 
 
97
  reasoning: reasoningSchema.optional(),
98
  });
99
 
100
+ const ggufModelsConfig = await Promise.all(
101
+ readdirSync(MODELS_FOLDER)
102
+ .filter((f) => f.endsWith(".gguf"))
103
+ .map(async (f) => {
104
+ return {
105
+ name: f.replace(".gguf", ""),
106
+ endpoints: [
107
+ {
108
+ type: "local" as const,
109
+ modelPath: f,
110
+ },
111
+ ],
112
+ };
113
+ })
114
+ );
115
+
116
+ let modelsRaw = z.array(modelConfig).parse(JSON5.parse(env.MODELS ?? "[]"));
117
+
118
+ if (env.LOAD_GGUF_MODELS === "true" || modelsRaw.length === 0) {
119
+ const parsedGgufModels = z.array(modelConfig).parse(ggufModelsConfig);
120
+ modelsRaw = [...modelsRaw, ...parsedGgufModels];
121
+ }
122
 
123
  async function getChatPromptRender(
124
  m: z.infer<typeof modelConfig>
125
  ): Promise<ReturnType<typeof compileTemplate<ChatTemplateInput>>> {
126
+ if (m.endpoints?.some((e) => e.type === "local")) {
127
+ const endpoint = m.endpoints?.find((e) => e.type === "local");
128
+ const path = endpoint?.modelPath ?? `hf:${m.id ?? m.name}`;
129
+
130
+ const modelPath = await resolveModelFile(path, MODELS_FOLDER);
131
+
132
+ const info = await readGgufFileInfo(modelPath, {
133
+ readTensorInfo: false,
134
+ });
135
+
136
+ if (info.metadata.tokenizer.chat_template) {
137
+ // compile with jinja
138
+ const jinjaTemplate = new Template(info.metadata.tokenizer.chat_template);
139
+ return (inputs: ChatTemplateInput) => {
140
+ return jinjaTemplate.render({ ...m, ...inputs });
141
+ };
142
+ }
143
+ }
144
+
145
  if (m.chatPromptTemplate) {
146
  return compileTemplate<ChatTemplateInput>(m.chatPromptTemplate, m);
147
  }
 
354
  switch (args.type) {
355
  case "tgi":
356
  return endpoints.tgi(args);
357
+ case "local":
358
+ return endpoints.local(args);
359
  case "anthropic":
360
  return endpoints.anthropic(args);
361
  case "anthropic-vertex":
 
444
 
445
  // if `TASK_MODEL` is string & name of a model in `MODELS`, then we use `MODELS[TASK_MODEL]`, else we try to parse `TASK_MODEL` as a model config itself
446
 
447
+ export const taskModel = addEndpoint(
448
+ env.TASK_MODEL
449
+ ? ((models.find((m) => m.name === env.TASK_MODEL) ||
450
+ (await processModel(modelConfig.parse(JSON5.parse(env.TASK_MODEL))))) ??
451
+ defaultModel)
452
+ : defaultModel
453
+ );
454
 
455
  export type BackendModel = Optional<
456
  typeof defaultModel,
src/lib/server/textGeneration/reasoning.ts CHANGED
@@ -1,5 +1,5 @@
1
  import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint";
2
- import { smallModel } from "../models";
3
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
4
  import { getToolOutput } from "../tools/getToolOutput";
5
  import type { Tool } from "$lib/types/Tool";
@@ -18,7 +18,7 @@ export async function generateSummaryOfReasoning(buffer: string): Promise<string
18
  const preprompt = `You are tasked with submitting a summary of the latest reasoning steps into a tool. Never describe results of the reasoning, only the process. Remain vague in your summary.
19
  The text might be incomplete, try your best to summarize it in one very short sentence, starting with a gerund and ending with three points. The sentence must be very short, ideally 5 words or less.`;
20
 
21
- if (smallModel.tools) {
22
  const summaryTool = {
23
  name: "summary",
24
  description: "Submit a summary for the submitted text",
@@ -33,7 +33,7 @@ The text might be incomplete, try your best to summarize it in one very short se
33
  ],
34
  } as unknown as Tool;
35
 
36
- const endpoint = await smallModel.getEndpoint();
37
  summary = await getToolOutput({
38
  messages,
39
  preprompt,
 
1
  import { generateFromDefaultEndpoint } from "../generateFromDefaultEndpoint";
2
+ import { taskModel } from "../models";
3
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
4
  import { getToolOutput } from "../tools/getToolOutput";
5
  import type { Tool } from "$lib/types/Tool";
 
18
  const preprompt = `You are tasked with submitting a summary of the latest reasoning steps into a tool. Never describe results of the reasoning, only the process. Remain vague in your summary.
19
  The text might be incomplete, try your best to summarize it in one very short sentence, starting with a gerund and ending with three points. The sentence must be very short, ideally 5 words or less.`;
20
 
21
+ if (taskModel.tools) {
22
  const summaryTool = {
23
  name: "summary",
24
  description: "Submit a summary for the submitted text",
 
33
  ],
34
  } as unknown as Tool;
35
 
36
+ const endpoint = await taskModel.getEndpoint();
37
  summary = await getToolOutput({
38
  messages,
39
  preprompt,
src/lib/server/textGeneration/title.ts CHANGED
@@ -4,7 +4,7 @@ import { logger } from "$lib/server/logger";
4
  import { MessageUpdateType, type MessageUpdate } from "$lib/types/MessageUpdate";
5
  import type { Conversation } from "$lib/types/Conversation";
6
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
7
- import { smallModel } from "../models";
8
  import type { Tool } from "$lib/types/Tool";
9
  import { getToolOutput } from "../tools/getToolOutput";
10
 
@@ -33,7 +33,7 @@ export async function generateTitle(prompt: string) {
33
  return prompt.split(/\s+/g).slice(0, 5).join(" ");
34
  }
35
 
36
- if (smallModel.tools) {
37
  const titleTool = {
38
  name: "title",
39
  description:
@@ -48,7 +48,7 @@ export async function generateTitle(prompt: string) {
48
  ],
49
  } as unknown as Tool;
50
 
51
- const endpoint = await smallModel.getEndpoint();
52
  const title = await getToolOutput({
53
  messages: [
54
  {
 
4
  import { MessageUpdateType, type MessageUpdate } from "$lib/types/MessageUpdate";
5
  import type { Conversation } from "$lib/types/Conversation";
6
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
7
+ import { taskModel } from "../models";
8
  import type { Tool } from "$lib/types/Tool";
9
  import { getToolOutput } from "../tools/getToolOutput";
10
 
 
33
  return prompt.split(/\s+/g).slice(0, 5).join(" ");
34
  }
35
 
36
+ if (taskModel.tools) {
37
  const titleTool = {
38
  name: "title",
39
  description:
 
48
  ],
49
  } as unknown as Tool;
50
 
51
+ const endpoint = await taskModel.getEndpoint();
52
  const title = await getToolOutput({
53
  messages: [
54
  {
src/lib/server/websearch/search/generateQuery.ts CHANGED
@@ -3,14 +3,14 @@ import { format } from "date-fns";
3
  import type { EndpointMessage } from "../../endpoints/endpoints";
4
  import { generateFromDefaultEndpoint } from "../../generateFromDefaultEndpoint";
5
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
6
- import { smallModel } from "$lib/server/models";
7
  import type { Tool } from "$lib/types/Tool";
8
  import { getToolOutput } from "$lib/server/tools/getToolOutput";
9
 
10
  export async function generateQuery(messages: Message[]) {
11
  const currentDate = format(new Date(), "MMMM d, yyyy");
12
 
13
- if (smallModel.tools) {
14
  const webSearchTool = {
15
  name: "web_search",
16
  description: "Search the web for information",
@@ -24,7 +24,7 @@ export async function generateQuery(messages: Message[]) {
24
  ],
25
  } as unknown as Tool;
26
 
27
- const endpoint = await smallModel.getEndpoint();
28
  const query = await getToolOutput({
29
  messages,
30
  preprompt: `The user wants you to search the web for information. Give a relevant google search query to answer the question. Answer with only the query. Today is ${currentDate}`,
 
3
  import type { EndpointMessage } from "../../endpoints/endpoints";
4
  import { generateFromDefaultEndpoint } from "../../generateFromDefaultEndpoint";
5
  import { getReturnFromGenerator } from "$lib/utils/getReturnFromGenerator";
6
+ import { taskModel } from "$lib/server/models";
7
  import type { Tool } from "$lib/types/Tool";
8
  import { getToolOutput } from "$lib/server/tools/getToolOutput";
9
 
10
  export async function generateQuery(messages: Message[]) {
11
  const currentDate = format(new Date(), "MMMM d, yyyy");
12
 
13
+ if (taskModel.tools) {
14
  const webSearchTool = {
15
  name: "web_search",
16
  description: "Search the web for information",
 
24
  ],
25
  } as unknown as Tool;
26
 
27
+ const endpoint = await taskModel.getEndpoint();
28
  const query = await getToolOutput({
29
  messages,
30
  preprompt: `The user wants you to search the web for information. Give a relevant google search query to answer the question. Answer with only the query. Today is ${currentDate}`,
src/lib/utils/template.ts CHANGED
@@ -1,6 +1,7 @@
1
  import type { Message } from "$lib/types/Message";
2
  import Handlebars from "handlebars";
3
  import { Template } from "@huggingface/jinja";
 
4
 
5
  // Register Handlebars helpers
6
  Handlebars.registerHelper("ifUser", function (this: Pick<Message, "from" | "content">, options) {
@@ -24,6 +25,7 @@ export function compileTemplate<T>(
24
  // Try to compile with Jinja
25
  jinjaTemplate = new Template(input);
26
  } catch (e) {
 
27
  // Could not compile with Jinja
28
  jinjaTemplate = undefined;
29
  }
@@ -41,6 +43,7 @@ export function compileTemplate<T>(
41
  try {
42
  return jinjaTemplate.render({ ...model, ...inputs });
43
  } catch (e) {
 
44
  // Fallback to Handlebars if Jinja rendering fails
45
  return hbTemplate({ ...model, ...inputs });
46
  }
 
1
  import type { Message } from "$lib/types/Message";
2
  import Handlebars from "handlebars";
3
  import { Template } from "@huggingface/jinja";
4
+ import { logger } from "$lib/server/logger";
5
 
6
  // Register Handlebars helpers
7
  Handlebars.registerHelper("ifUser", function (this: Pick<Message, "from" | "content">, options) {
 
25
  // Try to compile with Jinja
26
  jinjaTemplate = new Template(input);
27
  } catch (e) {
28
+ logger.error(e, "Could not compile with Jinja");
29
  // Could not compile with Jinja
30
  jinjaTemplate = undefined;
31
  }
 
43
  try {
44
  return jinjaTemplate.render({ ...model, ...inputs });
45
  } catch (e) {
46
+ logger.error(e, "Could not render with Jinja");
47
  // Fallback to Handlebars if Jinja rendering fails
48
  return hbTemplate({ ...model, ...inputs });
49
  }
stub/@reflink/reflink/index.js ADDED
File without changes
stub/@reflink/reflink/package.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "name": "@reflink/reflink",
3
+ "version": "0.0.0",
4
+ "main": "index.js"
5
+ }