jackboy70 commited on
Commit
f25362a
·
0 Parent(s):

Deploy: accurate lite-builder note

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .dockerignore +11 -0
  2. .gitignore +75 -0
  3. .out-of-code-insights/annotations.json +4 -0
  4. BUILD-LOCAL-MAC.command +6 -0
  5. BUILD-LOCAL.cmd +33 -0
  6. BUILD-SSD-MAC.command +6 -0
  7. BUILD-SSD.cmd +28 -0
  8. BUILD-USB-MAC.command +6 -0
  9. BUILD-USB.cmd +34 -0
  10. CHECK-PACKAGE.cmd +38 -0
  11. CLAUDE.md +0 -0
  12. Cargo.lock +2657 -0
  13. Cargo.toml +27 -0
  14. Directory.Build.targets +31 -0
  15. PRODUCTION_CHECKLIST.md +44 -0
  16. README-FIRST.txt +23 -0
  17. README.md +209 -0
  18. START-DESKTOP.cmd +17 -0
  19. START-HERE.cmd +17 -0
  20. START-HERE.command +6 -0
  21. STOP-JACKAILOCAL.cmd +5 -0
  22. STOP-JACKAILOCAL.command +5 -0
  23. TEST-WITHOUT-USB-MAC.command +18 -0
  24. TEST-WITHOUT-USB.cmd +34 -0
  25. UPDATE-FROM-USB.cmd +5 -0
  26. app.py +17 -0
  27. autorun.inf +5 -0
  28. backends/vllm/linux/start-vllm.sh +6 -0
  29. cache/projects.json +3 -0
  30. client-builder/windows/Build-JackAILocalUSB.ps1 +41 -0
  31. client-profiler/windows/Collect-JackAILocalProfile.ps1 +32 -0
  32. config/content-packs.json +49 -0
  33. config/jackailocal.appliance.toml +22 -0
  34. config/jackailocal.linux.toml +22 -0
  35. config/jackailocal.macos.toml +24 -0
  36. config/jackailocal.windows.toml +22 -0
  37. config/model-alias-map.json +31 -0
  38. config/model-catalog.json +290 -0
  39. config/models.json +290 -0
  40. config/update-public-key.xml +1 -0
  41. config/voice-assets.json +49 -0
  42. content-packs/prompts/business-operator.json +9 -0
  43. content-packs/prompts/creator-studio.json +9 -0
  44. content-packs/prompts/general-assistant.json +9 -0
  45. content-packs/prompts/outage.json +9 -0
  46. content-packs/prompts/privacy.json +9 -0
  47. content-packs/prompts/rapid-learning.json +9 -0
  48. content-packs/prompts/research.json +9 -0
  49. content-packs/prompts/study.json +9 -0
  50. content-packs/prompts/survival-mode.json +6 -0
.dockerignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .git
2
+ .jackailocal
3
+ .jackailocal-builder
4
+ diagnostics
5
+ dist
6
+ target
7
+ workspace
8
+ backends/ollama/windows
9
+ bin
10
+ models/ollama
11
+ saas/gradio/__pycache__
.gitignore ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Ignore Visual Studio temporary files, build results, and
2
+ ## files generated by popular Visual Studio add-ons.
3
+ ##
4
+ ## See https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
5
+
6
+ # Outils locaux (Claude Code, insights)
7
+ .claude/
8
+ .out-of-code-insights/
9
+
10
+ # Python - environnements et artefacts generes
11
+ __pycache__/
12
+ *.py[cod]
13
+ *$py.class
14
+
15
+ # Extensions natives Python
16
+ *.so
17
+
18
+ # Distribution / packaging
19
+ .Python
20
+ build/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+
36
+ # Environnements virtuels
37
+ .venv/
38
+ venv/
39
+ env/
40
+ ENV/
41
+
42
+ # Outils et caches
43
+ .mypy_cache/
44
+ .pytest_cache/
45
+ .ruff_cache/
46
+ .pyre/
47
+ .hypothesis/
48
+ .tox/
49
+ .nox/
50
+ .coverage
51
+ .coverage.*
52
+ htmlcov/
53
+
54
+ # Notebooks
55
+ .ipynb_checkpoints/
56
+
57
+ .jackaiagent/
58
+ __pycache__/
59
+ .jackailocal-builder/
60
+ reports/
61
+ target/
62
+ saas/gradio/__pycache__/
63
+ bin/
64
+ data/
65
+ .gitignore
66
+ logs/
67
+ saas/gradio/__pycache__/app.cpython-313.pyc
68
+ models/
69
+ workspace/threads/
70
+
71
+ # Cles privees de signature (licences clients, mises a jour) - ne jamais versionner
72
+ license-keys/
73
+ config/update-private-key.xml
74
+ license/license.json
75
+
.out-of-code-insights/annotations.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "schemaVersion": 2,
3
+ "annotations": []
4
+ }
BUILD-LOCAL-MAC.command ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ chmod +x ./macos/JackAILocal-USB-Builder.sh
5
+ ./macos/JackAILocal-USB-Builder.sh --mode=local
6
+ read -r -p "Press Enter to close..." _
BUILD-LOCAL.cmd ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ cd /d "%~dp0"
4
+ set "ROOT=%~dp0"
5
+ set "BUILDER=%ROOT%windows\JackAILocal-USB-Builder.ps1"
6
+ set "TARGET=%LOCALAPPDATA%\JackAILocal"
7
+
8
+ echo JackAILocal Local Folder Builder
9
+ echo Package root: %ROOT%
10
+ echo Target folder: %TARGET%
11
+ echo.
12
+
13
+ if not exist "%BUILDER%" (
14
+ echo ERROR: Missing Windows builder script:
15
+ echo %BUILDER%
16
+ pause
17
+ exit /b 1
18
+ )
19
+
20
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%BUILDER%" -TargetMode LocalFolder -TargetDrive "%TARGET%"
21
+ if errorlevel 1 (
22
+ echo.
23
+ echo JackAILocal local folder build failed. See .jackailocal-builder\logs for details.
24
+ pause
25
+ exit /b 1
26
+ )
27
+
28
+ echo.
29
+ echo JackAILocal was installed to:
30
+ echo %TARGET%
31
+ echo.
32
+ echo Launching the real local runtime...
33
+ call "%TARGET%\START-HERE.cmd"
BUILD-SSD-MAC.command ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ chmod +x ./macos/JackAILocal-USB-Builder.sh
5
+ ./macos/JackAILocal-USB-Builder.sh --mode=ssd
6
+ read -r -p "Press Enter to close..." _
BUILD-SSD.cmd ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ cd /d "%~dp0"
4
+ set "ROOT=%~dp0"
5
+ set "BUILDER=%ROOT%windows\JackAILocal-USB-Builder.ps1"
6
+
7
+ echo JackAILocal External SSD Builder
8
+ echo Package root: %ROOT%
9
+ echo.
10
+
11
+ if not exist "%BUILDER%" (
12
+ echo ERROR: Missing Windows builder script:
13
+ echo %BUILDER%
14
+ pause
15
+ exit /b 1
16
+ )
17
+
18
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%BUILDER%" -TargetMode SSD
19
+ if errorlevel 1 (
20
+ echo.
21
+ echo JackAILocal SSD build failed. See .jackailocal-builder\logs for details.
22
+ pause
23
+ exit /b 1
24
+ )
25
+
26
+ echo.
27
+ echo JackAILocal SSD Builder finished.
28
+ pause
BUILD-USB-MAC.command ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ chmod +x ./macos/JackAILocal-USB-Builder.sh
5
+ ./macos/JackAILocal-USB-Builder.sh --mode=usb
6
+ read -r -p "Press Enter to close..." _
BUILD-USB.cmd ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ cd /d "%~dp0"
4
+ set "ROOT=%~dp0"
5
+ set "BUILDER=%ROOT%windows\JackAILocal-USB-Builder.ps1"
6
+
7
+ echo JackAILocal USB Builder
8
+ echo Package root: %ROOT%
9
+
10
+ if not exist "%BUILDER%" (
11
+ echo.
12
+ echo ERROR: Missing Windows builder script:
13
+ echo %BUILDER%
14
+ echo Do not copy BUILD-USB.cmd alone. Extract the full ZIP first.
15
+ echo.
16
+ pause
17
+ exit /b 1
18
+ )
19
+
20
+ echo Using builder script:
21
+ echo %BUILDER%
22
+ echo.
23
+
24
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%BUILDER%" -TargetMode USB
25
+ if errorlevel 1 (
26
+ echo.
27
+ echo JackAILocal USB Builder failed. See .jackailocal-builder\logs for details.
28
+ pause
29
+ exit /b 1
30
+ )
31
+
32
+ echo.
33
+ echo JackAILocal USB Builder finished.
34
+ pause
CHECK-PACKAGE.cmd ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ cd /d "%~dp0"
4
+ set "ROOT=%~dp0"
5
+
6
+ echo JackAILocal package structure check
7
+ echo Package root: %ROOT%
8
+ echo.
9
+
10
+ set "FOUND=0"
11
+ if exist "%ROOT%client-builder\windows\JackAILocal-USB-Builder.ps1" (
12
+ echo FOUND: client-builder\windows\JackAILocal-USB-Builder.ps1
13
+ set "FOUND=1"
14
+ )
15
+ if exist "%ROOT%windows\JackAILocal-USB-Builder.ps1" (
16
+ echo FOUND: windows\JackAILocal-USB-Builder.ps1
17
+ set "FOUND=1"
18
+ )
19
+ if exist "%ROOT%client-builder\windows\Build-JackAILocalUSB.ps1" (
20
+ echo FOUND: client-builder\windows\Build-JackAILocalUSB.ps1
21
+ set "FOUND=1"
22
+ )
23
+ if exist "%ROOT%factory\powershell\Prepare-JackAILocalUSB.ps1" (
24
+ echo FOUND: factory\powershell\Prepare-JackAILocalUSB.ps1
25
+ set "FOUND=1"
26
+ )
27
+
28
+ echo.
29
+ if "%FOUND%"=="0" (
30
+ echo FAIL: No builder script found.
31
+ echo Extract the full ZIP again. Do not move only the .cmd files.
32
+ pause
33
+ exit /b 1
34
+ )
35
+
36
+ echo PASS: At least one compatible builder script exists.
37
+ echo.
38
+ pause
CLAUDE.md ADDED
File without changes
Cargo.lock ADDED
@@ -0,0 +1,2657 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
11
+ [[package]]
12
+ name = "aead"
13
+ version = "0.5.2"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
16
+ dependencies = [
17
+ "crypto-common",
18
+ "generic-array",
19
+ ]
20
+
21
+ [[package]]
22
+ name = "aes"
23
+ version = "0.8.4"
24
+ source = "registry+https://github.com/rust-lang/crates.io-index"
25
+ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
26
+ dependencies = [
27
+ "cfg-if",
28
+ "cipher",
29
+ "cpufeatures",
30
+ ]
31
+
32
+ [[package]]
33
+ name = "aes-gcm"
34
+ version = "0.10.3"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
37
+ dependencies = [
38
+ "aead",
39
+ "aes",
40
+ "cipher",
41
+ "ctr",
42
+ "ghash",
43
+ "subtle",
44
+ ]
45
+
46
+ [[package]]
47
+ name = "android_system_properties"
48
+ version = "0.1.5"
49
+ source = "registry+https://github.com/rust-lang/crates.io-index"
50
+ checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
51
+ dependencies = [
52
+ "libc",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "anstream"
57
+ version = "1.0.0"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
60
+ dependencies = [
61
+ "anstyle",
62
+ "anstyle-parse",
63
+ "anstyle-query",
64
+ "anstyle-wincon",
65
+ "colorchoice",
66
+ "is_terminal_polyfill",
67
+ "utf8parse",
68
+ ]
69
+
70
+ [[package]]
71
+ name = "anstyle"
72
+ version = "1.0.14"
73
+ source = "registry+https://github.com/rust-lang/crates.io-index"
74
+ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
75
+
76
+ [[package]]
77
+ name = "anstyle-parse"
78
+ version = "1.0.0"
79
+ source = "registry+https://github.com/rust-lang/crates.io-index"
80
+ checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
81
+ dependencies = [
82
+ "utf8parse",
83
+ ]
84
+
85
+ [[package]]
86
+ name = "anstyle-query"
87
+ version = "1.1.5"
88
+ source = "registry+https://github.com/rust-lang/crates.io-index"
89
+ checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
90
+ dependencies = [
91
+ "windows-sys 0.61.2",
92
+ ]
93
+
94
+ [[package]]
95
+ name = "anstyle-wincon"
96
+ version = "3.0.11"
97
+ source = "registry+https://github.com/rust-lang/crates.io-index"
98
+ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
99
+ dependencies = [
100
+ "anstyle",
101
+ "once_cell_polyfill",
102
+ "windows-sys 0.61.2",
103
+ ]
104
+
105
+ [[package]]
106
+ name = "anyhow"
107
+ version = "1.0.102"
108
+ source = "registry+https://github.com/rust-lang/crates.io-index"
109
+ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
110
+
111
+ [[package]]
112
+ name = "arbitrary"
113
+ version = "1.4.2"
114
+ source = "registry+https://github.com/rust-lang/crates.io-index"
115
+ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
116
+ dependencies = [
117
+ "derive_arbitrary",
118
+ ]
119
+
120
+ [[package]]
121
+ name = "async-trait"
122
+ version = "0.1.89"
123
+ source = "registry+https://github.com/rust-lang/crates.io-index"
124
+ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
125
+ dependencies = [
126
+ "proc-macro2",
127
+ "quote",
128
+ "syn",
129
+ ]
130
+
131
+ [[package]]
132
+ name = "atomic-waker"
133
+ version = "1.1.2"
134
+ source = "registry+https://github.com/rust-lang/crates.io-index"
135
+ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
136
+
137
+ [[package]]
138
+ name = "autocfg"
139
+ version = "1.5.1"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
142
+
143
+ [[package]]
144
+ name = "axum"
145
+ version = "0.7.9"
146
+ source = "registry+https://github.com/rust-lang/crates.io-index"
147
+ checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
148
+ dependencies = [
149
+ "async-trait",
150
+ "axum-core",
151
+ "bytes",
152
+ "futures-util",
153
+ "http",
154
+ "http-body",
155
+ "http-body-util",
156
+ "hyper",
157
+ "hyper-util",
158
+ "itoa",
159
+ "matchit",
160
+ "memchr",
161
+ "mime",
162
+ "percent-encoding",
163
+ "pin-project-lite",
164
+ "rustversion",
165
+ "serde",
166
+ "serde_json",
167
+ "serde_path_to_error",
168
+ "serde_urlencoded",
169
+ "sync_wrapper",
170
+ "tokio",
171
+ "tower",
172
+ "tower-layer",
173
+ "tower-service",
174
+ "tracing",
175
+ ]
176
+
177
+ [[package]]
178
+ name = "axum-core"
179
+ version = "0.4.5"
180
+ source = "registry+https://github.com/rust-lang/crates.io-index"
181
+ checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
182
+ dependencies = [
183
+ "async-trait",
184
+ "bytes",
185
+ "futures-util",
186
+ "http",
187
+ "http-body",
188
+ "http-body-util",
189
+ "mime",
190
+ "pin-project-lite",
191
+ "rustversion",
192
+ "sync_wrapper",
193
+ "tower-layer",
194
+ "tower-service",
195
+ "tracing",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "base64"
200
+ version = "0.22.1"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
203
+
204
+ [[package]]
205
+ name = "base64ct"
206
+ version = "1.8.3"
207
+ source = "registry+https://github.com/rust-lang/crates.io-index"
208
+ checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
209
+
210
+ [[package]]
211
+ name = "bitflags"
212
+ version = "2.12.1"
213
+ source = "registry+https://github.com/rust-lang/crates.io-index"
214
+ checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a"
215
+
216
+ [[package]]
217
+ name = "block-buffer"
218
+ version = "0.10.4"
219
+ source = "registry+https://github.com/rust-lang/crates.io-index"
220
+ checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
221
+ dependencies = [
222
+ "generic-array",
223
+ ]
224
+
225
+ [[package]]
226
+ name = "bumpalo"
227
+ version = "3.20.3"
228
+ source = "registry+https://github.com/rust-lang/crates.io-index"
229
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
230
+
231
+ [[package]]
232
+ name = "bytemuck"
233
+ version = "1.25.0"
234
+ source = "registry+https://github.com/rust-lang/crates.io-index"
235
+ checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
236
+
237
+ [[package]]
238
+ name = "byteorder-lite"
239
+ version = "0.1.0"
240
+ source = "registry+https://github.com/rust-lang/crates.io-index"
241
+ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
242
+
243
+ [[package]]
244
+ name = "bytes"
245
+ version = "1.11.1"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
248
+
249
+ [[package]]
250
+ name = "cc"
251
+ version = "1.2.63"
252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
253
+ checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
254
+ dependencies = [
255
+ "find-msvc-tools",
256
+ "shlex",
257
+ ]
258
+
259
+ [[package]]
260
+ name = "cfg-if"
261
+ version = "1.0.4"
262
+ source = "registry+https://github.com/rust-lang/crates.io-index"
263
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
264
+
265
+ [[package]]
266
+ name = "cfg_aliases"
267
+ version = "0.2.1"
268
+ source = "registry+https://github.com/rust-lang/crates.io-index"
269
+ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
270
+
271
+ [[package]]
272
+ name = "chrono"
273
+ version = "0.4.45"
274
+ source = "registry+https://github.com/rust-lang/crates.io-index"
275
+ checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
276
+ dependencies = [
277
+ "iana-time-zone",
278
+ "js-sys",
279
+ "num-traits",
280
+ "serde",
281
+ "wasm-bindgen",
282
+ "windows-link",
283
+ ]
284
+
285
+ [[package]]
286
+ name = "cipher"
287
+ version = "0.4.4"
288
+ source = "registry+https://github.com/rust-lang/crates.io-index"
289
+ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
290
+ dependencies = [
291
+ "crypto-common",
292
+ "inout",
293
+ ]
294
+
295
+ [[package]]
296
+ name = "clap"
297
+ version = "4.6.1"
298
+ source = "registry+https://github.com/rust-lang/crates.io-index"
299
+ checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
300
+ dependencies = [
301
+ "clap_builder",
302
+ "clap_derive",
303
+ ]
304
+
305
+ [[package]]
306
+ name = "clap_builder"
307
+ version = "4.6.0"
308
+ source = "registry+https://github.com/rust-lang/crates.io-index"
309
+ checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
310
+ dependencies = [
311
+ "anstream",
312
+ "anstyle",
313
+ "clap_lex",
314
+ "strsim",
315
+ ]
316
+
317
+ [[package]]
318
+ name = "clap_derive"
319
+ version = "4.6.1"
320
+ source = "registry+https://github.com/rust-lang/crates.io-index"
321
+ checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
322
+ dependencies = [
323
+ "heck",
324
+ "proc-macro2",
325
+ "quote",
326
+ "syn",
327
+ ]
328
+
329
+ [[package]]
330
+ name = "clap_lex"
331
+ version = "1.1.0"
332
+ source = "registry+https://github.com/rust-lang/crates.io-index"
333
+ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
334
+
335
+ [[package]]
336
+ name = "colorchoice"
337
+ version = "1.0.5"
338
+ source = "registry+https://github.com/rust-lang/crates.io-index"
339
+ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
340
+
341
+ [[package]]
342
+ name = "const-oid"
343
+ version = "0.9.6"
344
+ source = "registry+https://github.com/rust-lang/crates.io-index"
345
+ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
346
+
347
+ [[package]]
348
+ name = "core-foundation-sys"
349
+ version = "0.8.7"
350
+ source = "registry+https://github.com/rust-lang/crates.io-index"
351
+ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
352
+
353
+ [[package]]
354
+ name = "cpufeatures"
355
+ version = "0.2.17"
356
+ source = "registry+https://github.com/rust-lang/crates.io-index"
357
+ checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
358
+ dependencies = [
359
+ "libc",
360
+ ]
361
+
362
+ [[package]]
363
+ name = "crc32fast"
364
+ version = "1.5.0"
365
+ source = "registry+https://github.com/rust-lang/crates.io-index"
366
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
367
+ dependencies = [
368
+ "cfg-if",
369
+ ]
370
+
371
+ [[package]]
372
+ name = "crossbeam-utils"
373
+ version = "0.8.21"
374
+ source = "registry+https://github.com/rust-lang/crates.io-index"
375
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
376
+
377
+ [[package]]
378
+ name = "crypto-common"
379
+ version = "0.1.7"
380
+ source = "registry+https://github.com/rust-lang/crates.io-index"
381
+ checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
382
+ dependencies = [
383
+ "generic-array",
384
+ "rand_core 0.6.4",
385
+ "typenum",
386
+ ]
387
+
388
+ [[package]]
389
+ name = "ctr"
390
+ version = "0.9.2"
391
+ source = "registry+https://github.com/rust-lang/crates.io-index"
392
+ checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
393
+ dependencies = [
394
+ "cipher",
395
+ ]
396
+
397
+ [[package]]
398
+ name = "curve25519-dalek"
399
+ version = "4.1.3"
400
+ source = "registry+https://github.com/rust-lang/crates.io-index"
401
+ checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
402
+ dependencies = [
403
+ "cfg-if",
404
+ "cpufeatures",
405
+ "curve25519-dalek-derive",
406
+ "digest",
407
+ "fiat-crypto",
408
+ "rustc_version",
409
+ "subtle",
410
+ "zeroize",
411
+ ]
412
+
413
+ [[package]]
414
+ name = "curve25519-dalek-derive"
415
+ version = "0.1.1"
416
+ source = "registry+https://github.com/rust-lang/crates.io-index"
417
+ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
418
+ dependencies = [
419
+ "proc-macro2",
420
+ "quote",
421
+ "syn",
422
+ ]
423
+
424
+ [[package]]
425
+ name = "der"
426
+ version = "0.7.10"
427
+ source = "registry+https://github.com/rust-lang/crates.io-index"
428
+ checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
429
+ dependencies = [
430
+ "const-oid",
431
+ "zeroize",
432
+ ]
433
+
434
+ [[package]]
435
+ name = "derive_arbitrary"
436
+ version = "1.4.2"
437
+ source = "registry+https://github.com/rust-lang/crates.io-index"
438
+ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
439
+ dependencies = [
440
+ "proc-macro2",
441
+ "quote",
442
+ "syn",
443
+ ]
444
+
445
+ [[package]]
446
+ name = "digest"
447
+ version = "0.10.7"
448
+ source = "registry+https://github.com/rust-lang/crates.io-index"
449
+ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
450
+ dependencies = [
451
+ "block-buffer",
452
+ "crypto-common",
453
+ "subtle",
454
+ ]
455
+
456
+ [[package]]
457
+ name = "displaydoc"
458
+ version = "0.2.6"
459
+ source = "registry+https://github.com/rust-lang/crates.io-index"
460
+ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
461
+ dependencies = [
462
+ "proc-macro2",
463
+ "quote",
464
+ "syn",
465
+ ]
466
+
467
+ [[package]]
468
+ name = "ed25519"
469
+ version = "2.2.3"
470
+ source = "registry+https://github.com/rust-lang/crates.io-index"
471
+ checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
472
+ dependencies = [
473
+ "pkcs8",
474
+ "signature",
475
+ ]
476
+
477
+ [[package]]
478
+ name = "ed25519-dalek"
479
+ version = "2.2.0"
480
+ source = "registry+https://github.com/rust-lang/crates.io-index"
481
+ checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"
482
+ dependencies = [
483
+ "curve25519-dalek",
484
+ "ed25519",
485
+ "rand_core 0.6.4",
486
+ "serde",
487
+ "sha2",
488
+ "subtle",
489
+ "zeroize",
490
+ ]
491
+
492
+ [[package]]
493
+ name = "equivalent"
494
+ version = "1.0.2"
495
+ source = "registry+https://github.com/rust-lang/crates.io-index"
496
+ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
497
+
498
+ [[package]]
499
+ name = "fiat-crypto"
500
+ version = "0.2.9"
501
+ source = "registry+https://github.com/rust-lang/crates.io-index"
502
+ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
503
+
504
+ [[package]]
505
+ name = "find-msvc-tools"
506
+ version = "0.1.9"
507
+ source = "registry+https://github.com/rust-lang/crates.io-index"
508
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
509
+
510
+ [[package]]
511
+ name = "flate2"
512
+ version = "1.1.9"
513
+ source = "registry+https://github.com/rust-lang/crates.io-index"
514
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
515
+ dependencies = [
516
+ "crc32fast",
517
+ "miniz_oxide",
518
+ ]
519
+
520
+ [[package]]
521
+ name = "foldhash"
522
+ version = "0.1.5"
523
+ source = "registry+https://github.com/rust-lang/crates.io-index"
524
+ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
525
+
526
+ [[package]]
527
+ name = "form_urlencoded"
528
+ version = "1.2.2"
529
+ source = "registry+https://github.com/rust-lang/crates.io-index"
530
+ checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
531
+ dependencies = [
532
+ "percent-encoding",
533
+ ]
534
+
535
+ [[package]]
536
+ name = "futures-channel"
537
+ version = "0.3.32"
538
+ source = "registry+https://github.com/rust-lang/crates.io-index"
539
+ checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
540
+ dependencies = [
541
+ "futures-core",
542
+ ]
543
+
544
+ [[package]]
545
+ name = "futures-core"
546
+ version = "0.3.32"
547
+ source = "registry+https://github.com/rust-lang/crates.io-index"
548
+ checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
549
+
550
+ [[package]]
551
+ name = "futures-sink"
552
+ version = "0.3.32"
553
+ source = "registry+https://github.com/rust-lang/crates.io-index"
554
+ checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
555
+
556
+ [[package]]
557
+ name = "futures-task"
558
+ version = "0.3.32"
559
+ source = "registry+https://github.com/rust-lang/crates.io-index"
560
+ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
561
+
562
+ [[package]]
563
+ name = "futures-util"
564
+ version = "0.3.32"
565
+ source = "registry+https://github.com/rust-lang/crates.io-index"
566
+ checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
567
+ dependencies = [
568
+ "futures-core",
569
+ "futures-task",
570
+ "pin-project-lite",
571
+ "slab",
572
+ ]
573
+
574
+ [[package]]
575
+ name = "generic-array"
576
+ version = "0.14.7"
577
+ source = "registry+https://github.com/rust-lang/crates.io-index"
578
+ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
579
+ dependencies = [
580
+ "typenum",
581
+ "version_check",
582
+ ]
583
+
584
+ [[package]]
585
+ name = "getrandom"
586
+ version = "0.2.17"
587
+ source = "registry+https://github.com/rust-lang/crates.io-index"
588
+ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
589
+ dependencies = [
590
+ "cfg-if",
591
+ "js-sys",
592
+ "libc",
593
+ "wasi",
594
+ "wasm-bindgen",
595
+ ]
596
+
597
+ [[package]]
598
+ name = "getrandom"
599
+ version = "0.3.4"
600
+ source = "registry+https://github.com/rust-lang/crates.io-index"
601
+ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
602
+ dependencies = [
603
+ "cfg-if",
604
+ "js-sys",
605
+ "libc",
606
+ "r-efi 5.3.0",
607
+ "wasip2",
608
+ "wasm-bindgen",
609
+ ]
610
+
611
+ [[package]]
612
+ name = "getrandom"
613
+ version = "0.4.2"
614
+ source = "registry+https://github.com/rust-lang/crates.io-index"
615
+ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
616
+ dependencies = [
617
+ "cfg-if",
618
+ "libc",
619
+ "r-efi 6.0.0",
620
+ "wasip2",
621
+ "wasip3",
622
+ ]
623
+
624
+ [[package]]
625
+ name = "ghash"
626
+ version = "0.5.1"
627
+ source = "registry+https://github.com/rust-lang/crates.io-index"
628
+ checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1"
629
+ dependencies = [
630
+ "opaque-debug",
631
+ "polyval",
632
+ ]
633
+
634
+ [[package]]
635
+ name = "hashbrown"
636
+ version = "0.15.5"
637
+ source = "registry+https://github.com/rust-lang/crates.io-index"
638
+ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
639
+ dependencies = [
640
+ "foldhash",
641
+ ]
642
+
643
+ [[package]]
644
+ name = "hashbrown"
645
+ version = "0.17.1"
646
+ source = "registry+https://github.com/rust-lang/crates.io-index"
647
+ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
648
+
649
+ [[package]]
650
+ name = "heck"
651
+ version = "0.5.0"
652
+ source = "registry+https://github.com/rust-lang/crates.io-index"
653
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
654
+
655
+ [[package]]
656
+ name = "hmac"
657
+ version = "0.12.1"
658
+ source = "registry+https://github.com/rust-lang/crates.io-index"
659
+ checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
660
+ dependencies = [
661
+ "digest",
662
+ ]
663
+
664
+ [[package]]
665
+ name = "http"
666
+ version = "1.4.1"
667
+ source = "registry+https://github.com/rust-lang/crates.io-index"
668
+ checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0"
669
+ dependencies = [
670
+ "bytes",
671
+ "itoa",
672
+ ]
673
+
674
+ [[package]]
675
+ name = "http-body"
676
+ version = "1.0.1"
677
+ source = "registry+https://github.com/rust-lang/crates.io-index"
678
+ checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
679
+ dependencies = [
680
+ "bytes",
681
+ "http",
682
+ ]
683
+
684
+ [[package]]
685
+ name = "http-body-util"
686
+ version = "0.1.3"
687
+ source = "registry+https://github.com/rust-lang/crates.io-index"
688
+ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
689
+ dependencies = [
690
+ "bytes",
691
+ "futures-core",
692
+ "http",
693
+ "http-body",
694
+ "pin-project-lite",
695
+ ]
696
+
697
+ [[package]]
698
+ name = "http-range-header"
699
+ version = "0.4.2"
700
+ source = "registry+https://github.com/rust-lang/crates.io-index"
701
+ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c"
702
+
703
+ [[package]]
704
+ name = "httparse"
705
+ version = "1.10.1"
706
+ source = "registry+https://github.com/rust-lang/crates.io-index"
707
+ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
708
+
709
+ [[package]]
710
+ name = "httpdate"
711
+ version = "1.0.3"
712
+ source = "registry+https://github.com/rust-lang/crates.io-index"
713
+ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
714
+
715
+ [[package]]
716
+ name = "hyper"
717
+ version = "1.10.1"
718
+ source = "registry+https://github.com/rust-lang/crates.io-index"
719
+ checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
720
+ dependencies = [
721
+ "atomic-waker",
722
+ "bytes",
723
+ "futures-channel",
724
+ "futures-core",
725
+ "http",
726
+ "http-body",
727
+ "httparse",
728
+ "httpdate",
729
+ "itoa",
730
+ "pin-project-lite",
731
+ "smallvec",
732
+ "tokio",
733
+ "want",
734
+ ]
735
+
736
+ [[package]]
737
+ name = "hyper-rustls"
738
+ version = "0.27.9"
739
+ source = "registry+https://github.com/rust-lang/crates.io-index"
740
+ checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
741
+ dependencies = [
742
+ "http",
743
+ "hyper",
744
+ "hyper-util",
745
+ "rustls",
746
+ "tokio",
747
+ "tokio-rustls",
748
+ "tower-service",
749
+ "webpki-roots",
750
+ ]
751
+
752
+ [[package]]
753
+ name = "hyper-util"
754
+ version = "0.1.20"
755
+ source = "registry+https://github.com/rust-lang/crates.io-index"
756
+ checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
757
+ dependencies = [
758
+ "base64",
759
+ "bytes",
760
+ "futures-channel",
761
+ "futures-util",
762
+ "http",
763
+ "http-body",
764
+ "hyper",
765
+ "ipnet",
766
+ "libc",
767
+ "percent-encoding",
768
+ "pin-project-lite",
769
+ "socket2",
770
+ "tokio",
771
+ "tower-service",
772
+ "tracing",
773
+ ]
774
+
775
+ [[package]]
776
+ name = "iana-time-zone"
777
+ version = "0.1.65"
778
+ source = "registry+https://github.com/rust-lang/crates.io-index"
779
+ checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
780
+ dependencies = [
781
+ "android_system_properties",
782
+ "core-foundation-sys",
783
+ "iana-time-zone-haiku",
784
+ "js-sys",
785
+ "log",
786
+ "wasm-bindgen",
787
+ "windows-core",
788
+ ]
789
+
790
+ [[package]]
791
+ name = "iana-time-zone-haiku"
792
+ version = "0.1.2"
793
+ source = "registry+https://github.com/rust-lang/crates.io-index"
794
+ checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
795
+ dependencies = [
796
+ "cc",
797
+ ]
798
+
799
+ [[package]]
800
+ name = "icu_collections"
801
+ version = "2.2.0"
802
+ source = "registry+https://github.com/rust-lang/crates.io-index"
803
+ checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
804
+ dependencies = [
805
+ "displaydoc",
806
+ "potential_utf",
807
+ "utf8_iter",
808
+ "yoke",
809
+ "zerofrom",
810
+ "zerovec",
811
+ ]
812
+
813
+ [[package]]
814
+ name = "icu_locale_core"
815
+ version = "2.2.0"
816
+ source = "registry+https://github.com/rust-lang/crates.io-index"
817
+ checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
818
+ dependencies = [
819
+ "displaydoc",
820
+ "litemap",
821
+ "tinystr",
822
+ "writeable",
823
+ "zerovec",
824
+ ]
825
+
826
+ [[package]]
827
+ name = "icu_normalizer"
828
+ version = "2.2.0"
829
+ source = "registry+https://github.com/rust-lang/crates.io-index"
830
+ checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
831
+ dependencies = [
832
+ "icu_collections",
833
+ "icu_normalizer_data",
834
+ "icu_properties",
835
+ "icu_provider",
836
+ "smallvec",
837
+ "zerovec",
838
+ ]
839
+
840
+ [[package]]
841
+ name = "icu_normalizer_data"
842
+ version = "2.2.0"
843
+ source = "registry+https://github.com/rust-lang/crates.io-index"
844
+ checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
845
+
846
+ [[package]]
847
+ name = "icu_properties"
848
+ version = "2.2.0"
849
+ source = "registry+https://github.com/rust-lang/crates.io-index"
850
+ checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
851
+ dependencies = [
852
+ "icu_collections",
853
+ "icu_locale_core",
854
+ "icu_properties_data",
855
+ "icu_provider",
856
+ "zerotrie",
857
+ "zerovec",
858
+ ]
859
+
860
+ [[package]]
861
+ name = "icu_properties_data"
862
+ version = "2.2.0"
863
+ source = "registry+https://github.com/rust-lang/crates.io-index"
864
+ checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
865
+
866
+ [[package]]
867
+ name = "icu_provider"
868
+ version = "2.2.0"
869
+ source = "registry+https://github.com/rust-lang/crates.io-index"
870
+ checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
871
+ dependencies = [
872
+ "displaydoc",
873
+ "icu_locale_core",
874
+ "writeable",
875
+ "yoke",
876
+ "zerofrom",
877
+ "zerotrie",
878
+ "zerovec",
879
+ ]
880
+
881
+ [[package]]
882
+ name = "id-arena"
883
+ version = "2.3.0"
884
+ source = "registry+https://github.com/rust-lang/crates.io-index"
885
+ checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
886
+
887
+ [[package]]
888
+ name = "idna"
889
+ version = "1.1.0"
890
+ source = "registry+https://github.com/rust-lang/crates.io-index"
891
+ checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
892
+ dependencies = [
893
+ "idna_adapter",
894
+ "smallvec",
895
+ "utf8_iter",
896
+ ]
897
+
898
+ [[package]]
899
+ name = "idna_adapter"
900
+ version = "1.2.2"
901
+ source = "registry+https://github.com/rust-lang/crates.io-index"
902
+ checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
903
+ dependencies = [
904
+ "icu_normalizer",
905
+ "icu_properties",
906
+ ]
907
+
908
+ [[package]]
909
+ name = "image"
910
+ version = "0.25.10"
911
+ source = "registry+https://github.com/rust-lang/crates.io-index"
912
+ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
913
+ dependencies = [
914
+ "bytemuck",
915
+ "byteorder-lite",
916
+ "moxcms",
917
+ "num-traits",
918
+ ]
919
+
920
+ [[package]]
921
+ name = "indexmap"
922
+ version = "2.14.0"
923
+ source = "registry+https://github.com/rust-lang/crates.io-index"
924
+ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
925
+ dependencies = [
926
+ "equivalent",
927
+ "hashbrown 0.17.1",
928
+ "serde",
929
+ "serde_core",
930
+ ]
931
+
932
+ [[package]]
933
+ name = "inout"
934
+ version = "0.1.4"
935
+ source = "registry+https://github.com/rust-lang/crates.io-index"
936
+ checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
937
+ dependencies = [
938
+ "generic-array",
939
+ ]
940
+
941
+ [[package]]
942
+ name = "ipnet"
943
+ version = "2.12.0"
944
+ source = "registry+https://github.com/rust-lang/crates.io-index"
945
+ checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
946
+
947
+ [[package]]
948
+ name = "is_terminal_polyfill"
949
+ version = "1.70.2"
950
+ source = "registry+https://github.com/rust-lang/crates.io-index"
951
+ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
952
+
953
+ [[package]]
954
+ name = "itoa"
955
+ version = "1.0.18"
956
+ source = "registry+https://github.com/rust-lang/crates.io-index"
957
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
958
+
959
+ [[package]]
960
+ name = "jackailocald"
961
+ version = "0.3.0"
962
+ dependencies = [
963
+ "aes-gcm",
964
+ "anyhow",
965
+ "axum",
966
+ "base64",
967
+ "chrono",
968
+ "clap",
969
+ "ed25519-dalek",
970
+ "pbkdf2",
971
+ "qrcode",
972
+ "rand 0.8.6",
973
+ "reqwest",
974
+ "serde",
975
+ "serde_json",
976
+ "sha2",
977
+ "tokio",
978
+ "toml",
979
+ "tower-http 0.5.2",
980
+ "tracing",
981
+ "tracing-subscriber",
982
+ "uuid",
983
+ "zip",
984
+ ]
985
+
986
+ [[package]]
987
+ name = "js-sys"
988
+ version = "0.3.85"
989
+ source = "registry+https://github.com/rust-lang/crates.io-index"
990
+ checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
991
+ dependencies = [
992
+ "once_cell",
993
+ "wasm-bindgen",
994
+ ]
995
+
996
+ [[package]]
997
+ name = "lazy_static"
998
+ version = "1.5.0"
999
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1000
+ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
1001
+
1002
+ [[package]]
1003
+ name = "leb128fmt"
1004
+ version = "0.1.0"
1005
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1006
+ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
1007
+
1008
+ [[package]]
1009
+ name = "libc"
1010
+ version = "0.2.186"
1011
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1012
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
1013
+
1014
+ [[package]]
1015
+ name = "litemap"
1016
+ version = "0.8.2"
1017
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1018
+ checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
1019
+
1020
+ [[package]]
1021
+ name = "log"
1022
+ version = "0.4.31"
1023
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1024
+ checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f"
1025
+
1026
+ [[package]]
1027
+ name = "lru-slab"
1028
+ version = "0.1.2"
1029
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1030
+ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
1031
+
1032
+ [[package]]
1033
+ name = "matchit"
1034
+ version = "0.7.3"
1035
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1036
+ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
1037
+
1038
+ [[package]]
1039
+ name = "memchr"
1040
+ version = "2.8.1"
1041
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1042
+ checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
1043
+
1044
+ [[package]]
1045
+ name = "mime"
1046
+ version = "0.3.17"
1047
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1048
+ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
1049
+
1050
+ [[package]]
1051
+ name = "mime_guess"
1052
+ version = "2.0.5"
1053
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1054
+ checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
1055
+ dependencies = [
1056
+ "mime",
1057
+ "unicase",
1058
+ ]
1059
+
1060
+ [[package]]
1061
+ name = "miniz_oxide"
1062
+ version = "0.8.9"
1063
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1064
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
1065
+ dependencies = [
1066
+ "adler2",
1067
+ "simd-adler32",
1068
+ ]
1069
+
1070
+ [[package]]
1071
+ name = "mio"
1072
+ version = "1.2.1"
1073
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1074
+ checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
1075
+ dependencies = [
1076
+ "libc",
1077
+ "wasi",
1078
+ "windows-sys 0.61.2",
1079
+ ]
1080
+
1081
+ [[package]]
1082
+ name = "moxcms"
1083
+ version = "0.8.1"
1084
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1085
+ checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
1086
+ dependencies = [
1087
+ "num-traits",
1088
+ "pxfm",
1089
+ ]
1090
+
1091
+ [[package]]
1092
+ name = "nu-ansi-term"
1093
+ version = "0.50.3"
1094
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1095
+ checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
1096
+ dependencies = [
1097
+ "windows-sys 0.61.2",
1098
+ ]
1099
+
1100
+ [[package]]
1101
+ name = "num-traits"
1102
+ version = "0.2.19"
1103
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1104
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
1105
+ dependencies = [
1106
+ "autocfg",
1107
+ ]
1108
+
1109
+ [[package]]
1110
+ name = "once_cell"
1111
+ version = "1.21.4"
1112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1113
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
1114
+
1115
+ [[package]]
1116
+ name = "once_cell_polyfill"
1117
+ version = "1.70.2"
1118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1119
+ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
1120
+
1121
+ [[package]]
1122
+ name = "opaque-debug"
1123
+ version = "0.3.1"
1124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1125
+ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
1126
+
1127
+ [[package]]
1128
+ name = "pbkdf2"
1129
+ version = "0.12.2"
1130
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1131
+ checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
1132
+ dependencies = [
1133
+ "digest",
1134
+ "hmac",
1135
+ ]
1136
+
1137
+ [[package]]
1138
+ name = "percent-encoding"
1139
+ version = "2.3.2"
1140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1141
+ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
1142
+
1143
+ [[package]]
1144
+ name = "pin-project-lite"
1145
+ version = "0.2.17"
1146
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1147
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
1148
+
1149
+ [[package]]
1150
+ name = "pkcs8"
1151
+ version = "0.10.2"
1152
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1153
+ checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
1154
+ dependencies = [
1155
+ "der",
1156
+ "spki",
1157
+ ]
1158
+
1159
+ [[package]]
1160
+ name = "polyval"
1161
+ version = "0.6.2"
1162
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1163
+ checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
1164
+ dependencies = [
1165
+ "cfg-if",
1166
+ "cpufeatures",
1167
+ "opaque-debug",
1168
+ "universal-hash",
1169
+ ]
1170
+
1171
+ [[package]]
1172
+ name = "potential_utf"
1173
+ version = "0.1.5"
1174
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1175
+ checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
1176
+ dependencies = [
1177
+ "zerovec",
1178
+ ]
1179
+
1180
+ [[package]]
1181
+ name = "ppv-lite86"
1182
+ version = "0.2.21"
1183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1184
+ checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
1185
+ dependencies = [
1186
+ "zerocopy",
1187
+ ]
1188
+
1189
+ [[package]]
1190
+ name = "prettyplease"
1191
+ version = "0.2.37"
1192
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1193
+ checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
1194
+ dependencies = [
1195
+ "proc-macro2",
1196
+ "syn",
1197
+ ]
1198
+
1199
+ [[package]]
1200
+ name = "proc-macro2"
1201
+ version = "1.0.106"
1202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1203
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
1204
+ dependencies = [
1205
+ "unicode-ident",
1206
+ ]
1207
+
1208
+ [[package]]
1209
+ name = "pxfm"
1210
+ version = "0.1.29"
1211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1212
+ checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f"
1213
+
1214
+ [[package]]
1215
+ name = "qrcode"
1216
+ version = "0.14.1"
1217
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1218
+ checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec"
1219
+ dependencies = [
1220
+ "image",
1221
+ ]
1222
+
1223
+ [[package]]
1224
+ name = "quinn"
1225
+ version = "0.11.9"
1226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1227
+ checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
1228
+ dependencies = [
1229
+ "bytes",
1230
+ "cfg_aliases",
1231
+ "pin-project-lite",
1232
+ "quinn-proto",
1233
+ "quinn-udp",
1234
+ "rustc-hash",
1235
+ "rustls",
1236
+ "socket2",
1237
+ "thiserror",
1238
+ "tokio",
1239
+ "tracing",
1240
+ "web-time",
1241
+ ]
1242
+
1243
+ [[package]]
1244
+ name = "quinn-proto"
1245
+ version = "0.11.14"
1246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1247
+ checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
1248
+ dependencies = [
1249
+ "bytes",
1250
+ "getrandom 0.3.4",
1251
+ "lru-slab",
1252
+ "rand 0.9.4",
1253
+ "ring",
1254
+ "rustc-hash",
1255
+ "rustls",
1256
+ "rustls-pki-types",
1257
+ "slab",
1258
+ "thiserror",
1259
+ "tinyvec",
1260
+ "tracing",
1261
+ "web-time",
1262
+ ]
1263
+
1264
+ [[package]]
1265
+ name = "quinn-udp"
1266
+ version = "0.5.14"
1267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1268
+ checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
1269
+ dependencies = [
1270
+ "cfg_aliases",
1271
+ "libc",
1272
+ "once_cell",
1273
+ "socket2",
1274
+ "tracing",
1275
+ "windows-sys 0.60.2",
1276
+ ]
1277
+
1278
+ [[package]]
1279
+ name = "quote"
1280
+ version = "1.0.45"
1281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1282
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
1283
+ dependencies = [
1284
+ "proc-macro2",
1285
+ ]
1286
+
1287
+ [[package]]
1288
+ name = "r-efi"
1289
+ version = "5.3.0"
1290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1291
+ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1292
+
1293
+ [[package]]
1294
+ name = "r-efi"
1295
+ version = "6.0.0"
1296
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1297
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
1298
+
1299
+ [[package]]
1300
+ name = "rand"
1301
+ version = "0.8.6"
1302
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1303
+ checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
1304
+ dependencies = [
1305
+ "libc",
1306
+ "rand_chacha 0.3.1",
1307
+ "rand_core 0.6.4",
1308
+ ]
1309
+
1310
+ [[package]]
1311
+ name = "rand"
1312
+ version = "0.9.4"
1313
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1314
+ checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
1315
+ dependencies = [
1316
+ "rand_chacha 0.9.0",
1317
+ "rand_core 0.9.5",
1318
+ ]
1319
+
1320
+ [[package]]
1321
+ name = "rand_chacha"
1322
+ version = "0.3.1"
1323
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1324
+ checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
1325
+ dependencies = [
1326
+ "ppv-lite86",
1327
+ "rand_core 0.6.4",
1328
+ ]
1329
+
1330
+ [[package]]
1331
+ name = "rand_chacha"
1332
+ version = "0.9.0"
1333
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1334
+ checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
1335
+ dependencies = [
1336
+ "ppv-lite86",
1337
+ "rand_core 0.9.5",
1338
+ ]
1339
+
1340
+ [[package]]
1341
+ name = "rand_core"
1342
+ version = "0.6.4"
1343
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1344
+ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
1345
+ dependencies = [
1346
+ "getrandom 0.2.17",
1347
+ ]
1348
+
1349
+ [[package]]
1350
+ name = "rand_core"
1351
+ version = "0.9.5"
1352
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1353
+ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
1354
+ dependencies = [
1355
+ "getrandom 0.3.4",
1356
+ ]
1357
+
1358
+ [[package]]
1359
+ name = "reqwest"
1360
+ version = "0.12.28"
1361
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1362
+ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
1363
+ dependencies = [
1364
+ "base64",
1365
+ "bytes",
1366
+ "futures-core",
1367
+ "http",
1368
+ "http-body",
1369
+ "http-body-util",
1370
+ "hyper",
1371
+ "hyper-rustls",
1372
+ "hyper-util",
1373
+ "js-sys",
1374
+ "log",
1375
+ "percent-encoding",
1376
+ "pin-project-lite",
1377
+ "quinn",
1378
+ "rustls",
1379
+ "rustls-pki-types",
1380
+ "serde",
1381
+ "serde_json",
1382
+ "serde_urlencoded",
1383
+ "sync_wrapper",
1384
+ "tokio",
1385
+ "tokio-rustls",
1386
+ "tower",
1387
+ "tower-http 0.6.11",
1388
+ "tower-service",
1389
+ "url",
1390
+ "wasm-bindgen",
1391
+ "wasm-bindgen-futures",
1392
+ "web-sys",
1393
+ "webpki-roots",
1394
+ ]
1395
+
1396
+ [[package]]
1397
+ name = "ring"
1398
+ version = "0.17.14"
1399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1400
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
1401
+ dependencies = [
1402
+ "cc",
1403
+ "cfg-if",
1404
+ "getrandom 0.2.17",
1405
+ "libc",
1406
+ "untrusted",
1407
+ "windows-sys 0.52.0",
1408
+ ]
1409
+
1410
+ [[package]]
1411
+ name = "rustc-hash"
1412
+ version = "2.1.2"
1413
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1414
+ checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
1415
+
1416
+ [[package]]
1417
+ name = "rustc_version"
1418
+ version = "0.4.1"
1419
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1420
+ checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1421
+ dependencies = [
1422
+ "semver",
1423
+ ]
1424
+
1425
+ [[package]]
1426
+ name = "rustls"
1427
+ version = "0.23.40"
1428
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1429
+ checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b"
1430
+ dependencies = [
1431
+ "once_cell",
1432
+ "ring",
1433
+ "rustls-pki-types",
1434
+ "rustls-webpki",
1435
+ "subtle",
1436
+ "zeroize",
1437
+ ]
1438
+
1439
+ [[package]]
1440
+ name = "rustls-pki-types"
1441
+ version = "1.14.1"
1442
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1443
+ checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9"
1444
+ dependencies = [
1445
+ "web-time",
1446
+ "zeroize",
1447
+ ]
1448
+
1449
+ [[package]]
1450
+ name = "rustls-webpki"
1451
+ version = "0.103.13"
1452
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1453
+ checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
1454
+ dependencies = [
1455
+ "ring",
1456
+ "rustls-pki-types",
1457
+ "untrusted",
1458
+ ]
1459
+
1460
+ [[package]]
1461
+ name = "rustversion"
1462
+ version = "1.0.22"
1463
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1464
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1465
+
1466
+ [[package]]
1467
+ name = "ryu"
1468
+ version = "1.0.23"
1469
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1470
+ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
1471
+
1472
+ [[package]]
1473
+ name = "semver"
1474
+ version = "1.0.28"
1475
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1476
+ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
1477
+
1478
+ [[package]]
1479
+ name = "serde"
1480
+ version = "1.0.228"
1481
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1482
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1483
+ dependencies = [
1484
+ "serde_core",
1485
+ "serde_derive",
1486
+ ]
1487
+
1488
+ [[package]]
1489
+ name = "serde_core"
1490
+ version = "1.0.228"
1491
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1492
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1493
+ dependencies = [
1494
+ "serde_derive",
1495
+ ]
1496
+
1497
+ [[package]]
1498
+ name = "serde_derive"
1499
+ version = "1.0.228"
1500
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1501
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1502
+ dependencies = [
1503
+ "proc-macro2",
1504
+ "quote",
1505
+ "syn",
1506
+ ]
1507
+
1508
+ [[package]]
1509
+ name = "serde_json"
1510
+ version = "1.0.150"
1511
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1512
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
1513
+ dependencies = [
1514
+ "itoa",
1515
+ "memchr",
1516
+ "serde",
1517
+ "serde_core",
1518
+ "zmij",
1519
+ ]
1520
+
1521
+ [[package]]
1522
+ name = "serde_path_to_error"
1523
+ version = "0.1.20"
1524
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1525
+ checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
1526
+ dependencies = [
1527
+ "itoa",
1528
+ "serde",
1529
+ "serde_core",
1530
+ ]
1531
+
1532
+ [[package]]
1533
+ name = "serde_spanned"
1534
+ version = "0.6.9"
1535
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1536
+ checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
1537
+ dependencies = [
1538
+ "serde",
1539
+ ]
1540
+
1541
+ [[package]]
1542
+ name = "serde_urlencoded"
1543
+ version = "0.7.1"
1544
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1545
+ checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
1546
+ dependencies = [
1547
+ "form_urlencoded",
1548
+ "itoa",
1549
+ "ryu",
1550
+ "serde",
1551
+ ]
1552
+
1553
+ [[package]]
1554
+ name = "sha2"
1555
+ version = "0.10.9"
1556
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1557
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
1558
+ dependencies = [
1559
+ "cfg-if",
1560
+ "cpufeatures",
1561
+ "digest",
1562
+ ]
1563
+
1564
+ [[package]]
1565
+ name = "sharded-slab"
1566
+ version = "0.1.7"
1567
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1568
+ checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
1569
+ dependencies = [
1570
+ "lazy_static",
1571
+ ]
1572
+
1573
+ [[package]]
1574
+ name = "shlex"
1575
+ version = "2.0.1"
1576
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1577
+ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
1578
+
1579
+ [[package]]
1580
+ name = "signature"
1581
+ version = "2.2.0"
1582
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1583
+ checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
1584
+ dependencies = [
1585
+ "rand_core 0.6.4",
1586
+ ]
1587
+
1588
+ [[package]]
1589
+ name = "simd-adler32"
1590
+ version = "0.3.9"
1591
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1592
+ checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
1593
+
1594
+ [[package]]
1595
+ name = "slab"
1596
+ version = "0.4.12"
1597
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1598
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1599
+
1600
+ [[package]]
1601
+ name = "smallvec"
1602
+ version = "1.15.1"
1603
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1604
+ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
1605
+
1606
+ [[package]]
1607
+ name = "socket2"
1608
+ version = "0.6.4"
1609
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1610
+ checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
1611
+ dependencies = [
1612
+ "libc",
1613
+ "windows-sys 0.61.2",
1614
+ ]
1615
+
1616
+ [[package]]
1617
+ name = "spki"
1618
+ version = "0.7.3"
1619
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1620
+ checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
1621
+ dependencies = [
1622
+ "base64ct",
1623
+ "der",
1624
+ ]
1625
+
1626
+ [[package]]
1627
+ name = "stable_deref_trait"
1628
+ version = "1.2.1"
1629
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1630
+ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1631
+
1632
+ [[package]]
1633
+ name = "strsim"
1634
+ version = "0.11.1"
1635
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1636
+ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1637
+
1638
+ [[package]]
1639
+ name = "subtle"
1640
+ version = "2.6.1"
1641
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1642
+ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
1643
+
1644
+ [[package]]
1645
+ name = "syn"
1646
+ version = "2.0.117"
1647
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1648
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
1649
+ dependencies = [
1650
+ "proc-macro2",
1651
+ "quote",
1652
+ "unicode-ident",
1653
+ ]
1654
+
1655
+ [[package]]
1656
+ name = "sync_wrapper"
1657
+ version = "1.0.2"
1658
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1659
+ checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
1660
+ dependencies = [
1661
+ "futures-core",
1662
+ ]
1663
+
1664
+ [[package]]
1665
+ name = "synstructure"
1666
+ version = "0.13.2"
1667
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1668
+ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1669
+ dependencies = [
1670
+ "proc-macro2",
1671
+ "quote",
1672
+ "syn",
1673
+ ]
1674
+
1675
+ [[package]]
1676
+ name = "thiserror"
1677
+ version = "2.0.18"
1678
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1679
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
1680
+ dependencies = [
1681
+ "thiserror-impl",
1682
+ ]
1683
+
1684
+ [[package]]
1685
+ name = "thiserror-impl"
1686
+ version = "2.0.18"
1687
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1688
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
1689
+ dependencies = [
1690
+ "proc-macro2",
1691
+ "quote",
1692
+ "syn",
1693
+ ]
1694
+
1695
+ [[package]]
1696
+ name = "thread_local"
1697
+ version = "1.1.9"
1698
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1699
+ checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
1700
+ dependencies = [
1701
+ "cfg-if",
1702
+ ]
1703
+
1704
+ [[package]]
1705
+ name = "tinystr"
1706
+ version = "0.8.3"
1707
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1708
+ checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
1709
+ dependencies = [
1710
+ "displaydoc",
1711
+ "zerovec",
1712
+ ]
1713
+
1714
+ [[package]]
1715
+ name = "tinyvec"
1716
+ version = "1.11.0"
1717
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1718
+ checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
1719
+ dependencies = [
1720
+ "tinyvec_macros",
1721
+ ]
1722
+
1723
+ [[package]]
1724
+ name = "tinyvec_macros"
1725
+ version = "0.1.1"
1726
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1727
+ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1728
+
1729
+ [[package]]
1730
+ name = "tokio"
1731
+ version = "1.52.3"
1732
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1733
+ checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
1734
+ dependencies = [
1735
+ "bytes",
1736
+ "libc",
1737
+ "mio",
1738
+ "pin-project-lite",
1739
+ "socket2",
1740
+ "tokio-macros",
1741
+ "windows-sys 0.61.2",
1742
+ ]
1743
+
1744
+ [[package]]
1745
+ name = "tokio-macros"
1746
+ version = "2.7.0"
1747
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1748
+ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
1749
+ dependencies = [
1750
+ "proc-macro2",
1751
+ "quote",
1752
+ "syn",
1753
+ ]
1754
+
1755
+ [[package]]
1756
+ name = "tokio-rustls"
1757
+ version = "0.26.4"
1758
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1759
+ checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
1760
+ dependencies = [
1761
+ "rustls",
1762
+ "tokio",
1763
+ ]
1764
+
1765
+ [[package]]
1766
+ name = "tokio-util"
1767
+ version = "0.7.18"
1768
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1769
+ checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
1770
+ dependencies = [
1771
+ "bytes",
1772
+ "futures-core",
1773
+ "futures-sink",
1774
+ "pin-project-lite",
1775
+ "tokio",
1776
+ ]
1777
+
1778
+ [[package]]
1779
+ name = "toml"
1780
+ version = "0.8.23"
1781
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1782
+ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
1783
+ dependencies = [
1784
+ "serde",
1785
+ "serde_spanned",
1786
+ "toml_datetime",
1787
+ "toml_edit",
1788
+ ]
1789
+
1790
+ [[package]]
1791
+ name = "toml_datetime"
1792
+ version = "0.6.11"
1793
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1794
+ checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
1795
+ dependencies = [
1796
+ "serde",
1797
+ ]
1798
+
1799
+ [[package]]
1800
+ name = "toml_edit"
1801
+ version = "0.22.27"
1802
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1803
+ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
1804
+ dependencies = [
1805
+ "indexmap",
1806
+ "serde",
1807
+ "serde_spanned",
1808
+ "toml_datetime",
1809
+ "toml_write",
1810
+ "winnow",
1811
+ ]
1812
+
1813
+ [[package]]
1814
+ name = "toml_write"
1815
+ version = "0.1.2"
1816
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1817
+ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
1818
+
1819
+ [[package]]
1820
+ name = "tower"
1821
+ version = "0.5.3"
1822
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1823
+ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
1824
+ dependencies = [
1825
+ "futures-core",
1826
+ "futures-util",
1827
+ "pin-project-lite",
1828
+ "sync_wrapper",
1829
+ "tokio",
1830
+ "tower-layer",
1831
+ "tower-service",
1832
+ "tracing",
1833
+ ]
1834
+
1835
+ [[package]]
1836
+ name = "tower-http"
1837
+ version = "0.5.2"
1838
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1839
+ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
1840
+ dependencies = [
1841
+ "bitflags",
1842
+ "bytes",
1843
+ "futures-util",
1844
+ "http",
1845
+ "http-body",
1846
+ "http-body-util",
1847
+ "http-range-header",
1848
+ "httpdate",
1849
+ "mime",
1850
+ "mime_guess",
1851
+ "percent-encoding",
1852
+ "pin-project-lite",
1853
+ "tokio",
1854
+ "tokio-util",
1855
+ "tower-layer",
1856
+ "tower-service",
1857
+ "tracing",
1858
+ ]
1859
+
1860
+ [[package]]
1861
+ name = "tower-http"
1862
+ version = "0.6.11"
1863
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1864
+ checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
1865
+ dependencies = [
1866
+ "bitflags",
1867
+ "bytes",
1868
+ "futures-util",
1869
+ "http",
1870
+ "http-body",
1871
+ "pin-project-lite",
1872
+ "tower",
1873
+ "tower-layer",
1874
+ "tower-service",
1875
+ "url",
1876
+ ]
1877
+
1878
+ [[package]]
1879
+ name = "tower-layer"
1880
+ version = "0.3.3"
1881
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1882
+ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
1883
+
1884
+ [[package]]
1885
+ name = "tower-service"
1886
+ version = "0.3.3"
1887
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1888
+ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
1889
+
1890
+ [[package]]
1891
+ name = "tracing"
1892
+ version = "0.1.44"
1893
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1894
+ checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
1895
+ dependencies = [
1896
+ "log",
1897
+ "pin-project-lite",
1898
+ "tracing-attributes",
1899
+ "tracing-core",
1900
+ ]
1901
+
1902
+ [[package]]
1903
+ name = "tracing-attributes"
1904
+ version = "0.1.31"
1905
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1906
+ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
1907
+ dependencies = [
1908
+ "proc-macro2",
1909
+ "quote",
1910
+ "syn",
1911
+ ]
1912
+
1913
+ [[package]]
1914
+ name = "tracing-core"
1915
+ version = "0.1.36"
1916
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1917
+ checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
1918
+ dependencies = [
1919
+ "once_cell",
1920
+ "valuable",
1921
+ ]
1922
+
1923
+ [[package]]
1924
+ name = "tracing-log"
1925
+ version = "0.2.0"
1926
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1927
+ checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
1928
+ dependencies = [
1929
+ "log",
1930
+ "once_cell",
1931
+ "tracing-core",
1932
+ ]
1933
+
1934
+ [[package]]
1935
+ name = "tracing-subscriber"
1936
+ version = "0.3.23"
1937
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1938
+ checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
1939
+ dependencies = [
1940
+ "nu-ansi-term",
1941
+ "sharded-slab",
1942
+ "smallvec",
1943
+ "thread_local",
1944
+ "tracing-core",
1945
+ "tracing-log",
1946
+ ]
1947
+
1948
+ [[package]]
1949
+ name = "try-lock"
1950
+ version = "0.2.5"
1951
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1952
+ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
1953
+
1954
+ [[package]]
1955
+ name = "typenum"
1956
+ version = "1.20.1"
1957
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1958
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
1959
+
1960
+ [[package]]
1961
+ name = "unicase"
1962
+ version = "2.9.0"
1963
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1964
+ checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
1965
+
1966
+ [[package]]
1967
+ name = "unicode-ident"
1968
+ version = "1.0.24"
1969
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1970
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
1971
+
1972
+ [[package]]
1973
+ name = "unicode-xid"
1974
+ version = "0.2.6"
1975
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1976
+ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
1977
+
1978
+ [[package]]
1979
+ name = "universal-hash"
1980
+ version = "0.5.1"
1981
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1982
+ checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
1983
+ dependencies = [
1984
+ "crypto-common",
1985
+ "subtle",
1986
+ ]
1987
+
1988
+ [[package]]
1989
+ name = "untrusted"
1990
+ version = "0.9.0"
1991
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1992
+ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
1993
+
1994
+ [[package]]
1995
+ name = "url"
1996
+ version = "2.5.8"
1997
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1998
+ checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
1999
+ dependencies = [
2000
+ "form_urlencoded",
2001
+ "idna",
2002
+ "percent-encoding",
2003
+ "serde",
2004
+ ]
2005
+
2006
+ [[package]]
2007
+ name = "utf8_iter"
2008
+ version = "1.0.4"
2009
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2010
+ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2011
+
2012
+ [[package]]
2013
+ name = "utf8parse"
2014
+ version = "0.2.2"
2015
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2016
+ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
2017
+
2018
+ [[package]]
2019
+ name = "uuid"
2020
+ version = "1.23.2"
2021
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2022
+ checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
2023
+ dependencies = [
2024
+ "getrandom 0.4.2",
2025
+ "js-sys",
2026
+ "serde_core",
2027
+ "wasm-bindgen",
2028
+ ]
2029
+
2030
+ [[package]]
2031
+ name = "valuable"
2032
+ version = "0.1.1"
2033
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2034
+ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
2035
+
2036
+ [[package]]
2037
+ name = "version_check"
2038
+ version = "0.9.5"
2039
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2040
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
2041
+
2042
+ [[package]]
2043
+ name = "want"
2044
+ version = "0.3.1"
2045
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2046
+ checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
2047
+ dependencies = [
2048
+ "try-lock",
2049
+ ]
2050
+
2051
+ [[package]]
2052
+ name = "wasi"
2053
+ version = "0.11.1+wasi-snapshot-preview1"
2054
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2055
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
2056
+
2057
+ [[package]]
2058
+ name = "wasip2"
2059
+ version = "1.0.3+wasi-0.2.9"
2060
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2061
+ checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
2062
+ dependencies = [
2063
+ "wit-bindgen 0.57.1",
2064
+ ]
2065
+
2066
+ [[package]]
2067
+ name = "wasip3"
2068
+ version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
2069
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2070
+ checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
2071
+ dependencies = [
2072
+ "wit-bindgen 0.51.0",
2073
+ ]
2074
+
2075
+ [[package]]
2076
+ name = "wasm-bindgen"
2077
+ version = "0.2.108"
2078
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2079
+ checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
2080
+ dependencies = [
2081
+ "cfg-if",
2082
+ "once_cell",
2083
+ "rustversion",
2084
+ "wasm-bindgen-macro",
2085
+ "wasm-bindgen-shared",
2086
+ ]
2087
+
2088
+ [[package]]
2089
+ name = "wasm-bindgen-futures"
2090
+ version = "0.4.58"
2091
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2092
+ checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
2093
+ dependencies = [
2094
+ "cfg-if",
2095
+ "futures-util",
2096
+ "js-sys",
2097
+ "once_cell",
2098
+ "wasm-bindgen",
2099
+ "web-sys",
2100
+ ]
2101
+
2102
+ [[package]]
2103
+ name = "wasm-bindgen-macro"
2104
+ version = "0.2.108"
2105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2106
+ checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
2107
+ dependencies = [
2108
+ "quote",
2109
+ "wasm-bindgen-macro-support",
2110
+ ]
2111
+
2112
+ [[package]]
2113
+ name = "wasm-bindgen-macro-support"
2114
+ version = "0.2.108"
2115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2116
+ checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
2117
+ dependencies = [
2118
+ "bumpalo",
2119
+ "proc-macro2",
2120
+ "quote",
2121
+ "syn",
2122
+ "wasm-bindgen-shared",
2123
+ ]
2124
+
2125
+ [[package]]
2126
+ name = "wasm-bindgen-shared"
2127
+ version = "0.2.108"
2128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2129
+ checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
2130
+ dependencies = [
2131
+ "unicode-ident",
2132
+ ]
2133
+
2134
+ [[package]]
2135
+ name = "wasm-encoder"
2136
+ version = "0.244.0"
2137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2138
+ checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
2139
+ dependencies = [
2140
+ "leb128fmt",
2141
+ "wasmparser",
2142
+ ]
2143
+
2144
+ [[package]]
2145
+ name = "wasm-metadata"
2146
+ version = "0.244.0"
2147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2148
+ checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
2149
+ dependencies = [
2150
+ "anyhow",
2151
+ "indexmap",
2152
+ "wasm-encoder",
2153
+ "wasmparser",
2154
+ ]
2155
+
2156
+ [[package]]
2157
+ name = "wasmparser"
2158
+ version = "0.244.0"
2159
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2160
+ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
2161
+ dependencies = [
2162
+ "bitflags",
2163
+ "hashbrown 0.15.5",
2164
+ "indexmap",
2165
+ "semver",
2166
+ ]
2167
+
2168
+ [[package]]
2169
+ name = "web-sys"
2170
+ version = "0.3.85"
2171
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2172
+ checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
2173
+ dependencies = [
2174
+ "js-sys",
2175
+ "wasm-bindgen",
2176
+ ]
2177
+
2178
+ [[package]]
2179
+ name = "web-time"
2180
+ version = "1.1.0"
2181
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2182
+ checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
2183
+ dependencies = [
2184
+ "js-sys",
2185
+ "wasm-bindgen",
2186
+ ]
2187
+
2188
+ [[package]]
2189
+ name = "webpki-roots"
2190
+ version = "1.0.7"
2191
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2192
+ checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d"
2193
+ dependencies = [
2194
+ "rustls-pki-types",
2195
+ ]
2196
+
2197
+ [[package]]
2198
+ name = "windows-core"
2199
+ version = "0.62.2"
2200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2201
+ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
2202
+ dependencies = [
2203
+ "windows-implement",
2204
+ "windows-interface",
2205
+ "windows-link",
2206
+ "windows-result",
2207
+ "windows-strings",
2208
+ ]
2209
+
2210
+ [[package]]
2211
+ name = "windows-implement"
2212
+ version = "0.60.2"
2213
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2214
+ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
2215
+ dependencies = [
2216
+ "proc-macro2",
2217
+ "quote",
2218
+ "syn",
2219
+ ]
2220
+
2221
+ [[package]]
2222
+ name = "windows-interface"
2223
+ version = "0.59.3"
2224
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2225
+ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
2226
+ dependencies = [
2227
+ "proc-macro2",
2228
+ "quote",
2229
+ "syn",
2230
+ ]
2231
+
2232
+ [[package]]
2233
+ name = "windows-link"
2234
+ version = "0.2.1"
2235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2236
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
2237
+
2238
+ [[package]]
2239
+ name = "windows-result"
2240
+ version = "0.4.1"
2241
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2242
+ checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
2243
+ dependencies = [
2244
+ "windows-link",
2245
+ ]
2246
+
2247
+ [[package]]
2248
+ name = "windows-strings"
2249
+ version = "0.5.1"
2250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2251
+ checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
2252
+ dependencies = [
2253
+ "windows-link",
2254
+ ]
2255
+
2256
+ [[package]]
2257
+ name = "windows-sys"
2258
+ version = "0.52.0"
2259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2260
+ checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
2261
+ dependencies = [
2262
+ "windows-targets 0.52.6",
2263
+ ]
2264
+
2265
+ [[package]]
2266
+ name = "windows-sys"
2267
+ version = "0.60.2"
2268
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2269
+ checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
2270
+ dependencies = [
2271
+ "windows-targets 0.53.5",
2272
+ ]
2273
+
2274
+ [[package]]
2275
+ name = "windows-sys"
2276
+ version = "0.61.2"
2277
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2278
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
2279
+ dependencies = [
2280
+ "windows-link",
2281
+ ]
2282
+
2283
+ [[package]]
2284
+ name = "windows-targets"
2285
+ version = "0.52.6"
2286
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2287
+ checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
2288
+ dependencies = [
2289
+ "windows_aarch64_gnullvm 0.52.6",
2290
+ "windows_aarch64_msvc 0.52.6",
2291
+ "windows_i686_gnu 0.52.6",
2292
+ "windows_i686_gnullvm 0.52.6",
2293
+ "windows_i686_msvc 0.52.6",
2294
+ "windows_x86_64_gnu 0.52.6",
2295
+ "windows_x86_64_gnullvm 0.52.6",
2296
+ "windows_x86_64_msvc 0.52.6",
2297
+ ]
2298
+
2299
+ [[package]]
2300
+ name = "windows-targets"
2301
+ version = "0.53.5"
2302
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2303
+ checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
2304
+ dependencies = [
2305
+ "windows-link",
2306
+ "windows_aarch64_gnullvm 0.53.1",
2307
+ "windows_aarch64_msvc 0.53.1",
2308
+ "windows_i686_gnu 0.53.1",
2309
+ "windows_i686_gnullvm 0.53.1",
2310
+ "windows_i686_msvc 0.53.1",
2311
+ "windows_x86_64_gnu 0.53.1",
2312
+ "windows_x86_64_gnullvm 0.53.1",
2313
+ "windows_x86_64_msvc 0.53.1",
2314
+ ]
2315
+
2316
+ [[package]]
2317
+ name = "windows_aarch64_gnullvm"
2318
+ version = "0.52.6"
2319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2320
+ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
2321
+
2322
+ [[package]]
2323
+ name = "windows_aarch64_gnullvm"
2324
+ version = "0.53.1"
2325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2326
+ checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
2327
+
2328
+ [[package]]
2329
+ name = "windows_aarch64_msvc"
2330
+ version = "0.52.6"
2331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2332
+ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
2333
+
2334
+ [[package]]
2335
+ name = "windows_aarch64_msvc"
2336
+ version = "0.53.1"
2337
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2338
+ checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
2339
+
2340
+ [[package]]
2341
+ name = "windows_i686_gnu"
2342
+ version = "0.52.6"
2343
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2344
+ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
2345
+
2346
+ [[package]]
2347
+ name = "windows_i686_gnu"
2348
+ version = "0.53.1"
2349
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2350
+ checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
2351
+
2352
+ [[package]]
2353
+ name = "windows_i686_gnullvm"
2354
+ version = "0.52.6"
2355
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2356
+ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
2357
+
2358
+ [[package]]
2359
+ name = "windows_i686_gnullvm"
2360
+ version = "0.53.1"
2361
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2362
+ checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
2363
+
2364
+ [[package]]
2365
+ name = "windows_i686_msvc"
2366
+ version = "0.52.6"
2367
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2368
+ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2369
+
2370
+ [[package]]
2371
+ name = "windows_i686_msvc"
2372
+ version = "0.53.1"
2373
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2374
+ checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
2375
+
2376
+ [[package]]
2377
+ name = "windows_x86_64_gnu"
2378
+ version = "0.52.6"
2379
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2380
+ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
2381
+
2382
+ [[package]]
2383
+ name = "windows_x86_64_gnu"
2384
+ version = "0.53.1"
2385
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2386
+ checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
2387
+
2388
+ [[package]]
2389
+ name = "windows_x86_64_gnullvm"
2390
+ version = "0.52.6"
2391
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2392
+ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
2393
+
2394
+ [[package]]
2395
+ name = "windows_x86_64_gnullvm"
2396
+ version = "0.53.1"
2397
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2398
+ checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
2399
+
2400
+ [[package]]
2401
+ name = "windows_x86_64_msvc"
2402
+ version = "0.52.6"
2403
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2404
+ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2405
+
2406
+ [[package]]
2407
+ name = "windows_x86_64_msvc"
2408
+ version = "0.53.1"
2409
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2410
+ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
2411
+
2412
+ [[package]]
2413
+ name = "winnow"
2414
+ version = "0.7.15"
2415
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2416
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
2417
+ dependencies = [
2418
+ "memchr",
2419
+ ]
2420
+
2421
+ [[package]]
2422
+ name = "wit-bindgen"
2423
+ version = "0.51.0"
2424
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2425
+ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
2426
+ dependencies = [
2427
+ "wit-bindgen-rust-macro",
2428
+ ]
2429
+
2430
+ [[package]]
2431
+ name = "wit-bindgen"
2432
+ version = "0.57.1"
2433
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2434
+ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
2435
+
2436
+ [[package]]
2437
+ name = "wit-bindgen-core"
2438
+ version = "0.51.0"
2439
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2440
+ checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
2441
+ dependencies = [
2442
+ "anyhow",
2443
+ "heck",
2444
+ "wit-parser",
2445
+ ]
2446
+
2447
+ [[package]]
2448
+ name = "wit-bindgen-rust"
2449
+ version = "0.51.0"
2450
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2451
+ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
2452
+ dependencies = [
2453
+ "anyhow",
2454
+ "heck",
2455
+ "indexmap",
2456
+ "prettyplease",
2457
+ "syn",
2458
+ "wasm-metadata",
2459
+ "wit-bindgen-core",
2460
+ "wit-component",
2461
+ ]
2462
+
2463
+ [[package]]
2464
+ name = "wit-bindgen-rust-macro"
2465
+ version = "0.51.0"
2466
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2467
+ checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
2468
+ dependencies = [
2469
+ "anyhow",
2470
+ "prettyplease",
2471
+ "proc-macro2",
2472
+ "quote",
2473
+ "syn",
2474
+ "wit-bindgen-core",
2475
+ "wit-bindgen-rust",
2476
+ ]
2477
+
2478
+ [[package]]
2479
+ name = "wit-component"
2480
+ version = "0.244.0"
2481
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2482
+ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
2483
+ dependencies = [
2484
+ "anyhow",
2485
+ "bitflags",
2486
+ "indexmap",
2487
+ "log",
2488
+ "serde",
2489
+ "serde_derive",
2490
+ "serde_json",
2491
+ "wasm-encoder",
2492
+ "wasm-metadata",
2493
+ "wasmparser",
2494
+ "wit-parser",
2495
+ ]
2496
+
2497
+ [[package]]
2498
+ name = "wit-parser"
2499
+ version = "0.244.0"
2500
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2501
+ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
2502
+ dependencies = [
2503
+ "anyhow",
2504
+ "id-arena",
2505
+ "indexmap",
2506
+ "log",
2507
+ "semver",
2508
+ "serde",
2509
+ "serde_derive",
2510
+ "serde_json",
2511
+ "unicode-xid",
2512
+ "wasmparser",
2513
+ ]
2514
+
2515
+ [[package]]
2516
+ name = "writeable"
2517
+ version = "0.6.3"
2518
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2519
+ checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
2520
+
2521
+ [[package]]
2522
+ name = "yoke"
2523
+ version = "0.8.3"
2524
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2525
+ checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
2526
+ dependencies = [
2527
+ "stable_deref_trait",
2528
+ "yoke-derive",
2529
+ "zerofrom",
2530
+ ]
2531
+
2532
+ [[package]]
2533
+ name = "yoke-derive"
2534
+ version = "0.8.2"
2535
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2536
+ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
2537
+ dependencies = [
2538
+ "proc-macro2",
2539
+ "quote",
2540
+ "syn",
2541
+ "synstructure",
2542
+ ]
2543
+
2544
+ [[package]]
2545
+ name = "zerocopy"
2546
+ version = "0.8.50"
2547
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2548
+ checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
2549
+ dependencies = [
2550
+ "zerocopy-derive",
2551
+ ]
2552
+
2553
+ [[package]]
2554
+ name = "zerocopy-derive"
2555
+ version = "0.8.50"
2556
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2557
+ checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
2558
+ dependencies = [
2559
+ "proc-macro2",
2560
+ "quote",
2561
+ "syn",
2562
+ ]
2563
+
2564
+ [[package]]
2565
+ name = "zerofrom"
2566
+ version = "0.1.8"
2567
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2568
+ checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
2569
+ dependencies = [
2570
+ "zerofrom-derive",
2571
+ ]
2572
+
2573
+ [[package]]
2574
+ name = "zerofrom-derive"
2575
+ version = "0.1.7"
2576
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2577
+ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
2578
+ dependencies = [
2579
+ "proc-macro2",
2580
+ "quote",
2581
+ "syn",
2582
+ "synstructure",
2583
+ ]
2584
+
2585
+ [[package]]
2586
+ name = "zeroize"
2587
+ version = "1.8.2"
2588
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2589
+ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
2590
+
2591
+ [[package]]
2592
+ name = "zerotrie"
2593
+ version = "0.2.4"
2594
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2595
+ checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
2596
+ dependencies = [
2597
+ "displaydoc",
2598
+ "yoke",
2599
+ "zerofrom",
2600
+ ]
2601
+
2602
+ [[package]]
2603
+ name = "zerovec"
2604
+ version = "0.11.6"
2605
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2606
+ checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
2607
+ dependencies = [
2608
+ "yoke",
2609
+ "zerofrom",
2610
+ "zerovec-derive",
2611
+ ]
2612
+
2613
+ [[package]]
2614
+ name = "zerovec-derive"
2615
+ version = "0.11.3"
2616
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2617
+ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
2618
+ dependencies = [
2619
+ "proc-macro2",
2620
+ "quote",
2621
+ "syn",
2622
+ ]
2623
+
2624
+ [[package]]
2625
+ name = "zip"
2626
+ version = "2.4.2"
2627
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2628
+ checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
2629
+ dependencies = [
2630
+ "arbitrary",
2631
+ "crc32fast",
2632
+ "crossbeam-utils",
2633
+ "displaydoc",
2634
+ "flate2",
2635
+ "indexmap",
2636
+ "memchr",
2637
+ "thiserror",
2638
+ "zopfli",
2639
+ ]
2640
+
2641
+ [[package]]
2642
+ name = "zmij"
2643
+ version = "1.0.21"
2644
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2645
+ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
2646
+
2647
+ [[package]]
2648
+ name = "zopfli"
2649
+ version = "0.8.3"
2650
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2651
+ checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
2652
+ dependencies = [
2653
+ "bumpalo",
2654
+ "crc32fast",
2655
+ "log",
2656
+ "simd-adler32",
2657
+ ]
Cargo.toml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [package]
2
+ name = "jackailocald"
3
+ version = "0.3.0"
4
+ edition = "2021"
5
+
6
+ [dependencies]
7
+ aes-gcm = "0.10"
8
+ anyhow = "1"
9
+ axum = "0.7"
10
+ base64 = "0.22"
11
+ chrono = { version = "0.4", features = ["serde"] }
12
+ clap = { version = "4", features = ["derive"] }
13
+ ed25519-dalek = { version = "2", features = ["rand_core"] }
14
+ pbkdf2 = "0.12"
15
+ qrcode = "0.14"
16
+ rand = "0.8"
17
+ reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
18
+ serde = { version = "1", features = ["derive"] }
19
+ serde_json = "1"
20
+ sha2 = "0.10"
21
+ tokio = { version = "1", features = ["macros", "rt-multi-thread", "net"] }
22
+ toml = "0.8"
23
+ tower-http = { version = "0.5", features = ["fs", "cors"] }
24
+ tracing = "0.1"
25
+ tracing-subscriber = "0.3"
26
+ uuid = { version = "1", features = ["v4", "serde"] }
27
+ zip = { version = "2", default-features = false, features = ["deflate"] }
Directory.Build.targets ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <Project>
2
+ <!-- Remplacement temporaire des PackageReference Zzz par des references DLL locales -->
3
+ <ItemGroup>
4
+ <PackageReference Remove="Zzz.App.Core" />
5
+ <PackageReference Remove="Zzz.App.Service.Core" />
6
+ <PackageReference Remove="Zzz.App.Web.Core" />
7
+ <PackageReference Remove="Zzz.App.Core.AccesDonnees.Oracle.Sql" />
8
+ <PackageReference Remove="Zzz.App.Core.AccesDonnees.Sql" />
9
+ <PackageReference Remove="Zzz.App.Core.Captcha" />
10
+ <PackageReference Remove="Zzz.App.Core.Messagerie.Msgz" />
11
+
12
+ <Reference Include="Zzz.App.Core">
13
+ <HintPath>$(MSBuildThisFileDirectory)Zzz\Zzz.App.Core.dll</HintPath>
14
+ </Reference>
15
+ <Reference Include="Zzz.App.Service.Core">
16
+ <HintPath>$(MSBuildThisFileDirectory)Zzz\Zzz.App.Service.Core.dll</HintPath>
17
+ </Reference>
18
+ <Reference Include="Zzz.App.Web.Core">
19
+ <HintPath>$(MSBuildThisFileDirectory)Zzz\Zzz.App.Web.Core.dll</HintPath>
20
+ </Reference>
21
+ <Reference Include="Zzz.App.Core.AccesDonnees.Oracle.Sql">
22
+ <HintPath>$(MSBuildThisFileDirectory)Zzz\Zzz.App.Core.AccesDonnees.Oracle.Sql.dll</HintPath>
23
+ </Reference>
24
+ <Reference Include="Zzz.App.Core.AccesDonnees.Sql">
25
+ <HintPath>$(MSBuildThisFileDirectory)Zzz\Zzz.App.Core.AccesDonnees.Sql.dll</HintPath>
26
+ </Reference>
27
+
28
+ <!-- Dependances transitives perdues en remplacant les NuGet Zzz par des DLL locales -->
29
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
30
+ </ItemGroup>
31
+ </Project>
PRODUCTION_CHECKLIST.md ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Production Checklist
2
+
3
+ ## Factory build
4
+
5
+ - [ ] Install Rust toolchain on factory PC
6
+ - [ ] Run `factory/powershell/Build-RustBinaries.ps1`
7
+ - [ ] Confirm `bin/JackAILocald.exe` exists
8
+ - [ ] Install or copy Ollama binary
9
+ - [ ] Confirm `backends/ollama/windows/ollama.exe` exists
10
+ - [ ] Install or copy llama.cpp binary
11
+ - [ ] Confirm `backends/llama.cpp/windows/llama-server.exe` exists
12
+ - [ ] Set `OLLAMA_MODELS` to USB `models/ollama`
13
+ - [ ] Pull required Ollama models into USB
14
+ - [ ] Add GGUF models if llama.cpp fallback is enabled
15
+ - [ ] Generate manifest
16
+ - [ ] Run Windows preflight
17
+ - [ ] Run first-launch from USB on clean Windows machine
18
+ - [ ] Run airplane-mode test
19
+ - [ ] Run benchmark demo
20
+ - [ ] Confirm no model download occurs during customer launch
21
+
22
+ ## Security
23
+
24
+ - [ ] Remove placeholder files before release
25
+ - [ ] Replace update warning hook with signature verification
26
+ - [ ] Sign release artifacts
27
+ - [ ] Scan binaries with Microsoft Defender and VirusTotal-compatible workflow
28
+ - [ ] Document realistic host traces
29
+ - [ ] Avoid "leaves no trace" claim
30
+ - [ ] Bind all local services to 127.0.0.1 only
31
+ - [ ] Add process crash recovery
32
+ - [ ] Add request size limit
33
+ - [ ] Add timeout limit
34
+
35
+ ## Linux boot edition
36
+
37
+ - [ ] Flash Linux image to SSD/USB
38
+ - [ ] Install Linux runtime
39
+ - [ ] Install Linux backends
40
+ - [ ] Configure kiosk auto-start
41
+ - [ ] Test boot on Dell/Lenovo/HP/ASUS at minimum
42
+ - [ ] Test Secure Boot behavior
43
+ - [ ] Test no-network mode
44
+ - [ ] Test GPU/CPU fallback
README-FIRST.txt ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ JackAILocal v15
2
+
3
+ Windows local folder:
4
+ BUILD-LOCAL.cmd
5
+
6
+ Windows USB:
7
+ BUILD-USB.cmd
8
+
9
+ Windows external SSD:
10
+ BUILD-SSD.cmd
11
+
12
+ Start an already prepared Windows target:
13
+ START-HERE.cmd
14
+
15
+ Start in a desktop-style browser window:
16
+ START-DESKTOP.cmd
17
+
18
+ macOS builders:
19
+ BUILD-LOCAL-MAC.command
20
+ BUILD-USB-MAC.command
21
+ BUILD-SSD-MAC.command
22
+
23
+ Read README.md and docs/SYSTEM_BEHAVIOR.md for the complete behavior.
README.md ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: JackAILocal
3
+ emoji: 🚀
4
+ colorFrom: green
5
+ colorTo: red
6
+ sdk: gradio
7
+ sdk_version: 6.16.0
8
+ python_version: '3.13'
9
+ app_file: app.py
10
+ pinned: false
11
+ hf_oauth: true
12
+ hf_oauth_scopes:
13
+ - inference-api
14
+ ---
15
+
16
+ # JackAILocal v15
17
+
18
+ JackAILocal is a local-first AI runtime, WebUI, and package builder. It can run from a local folder, USB drive, external SSD, desktop installer, Linux boot disk, or LAN appliance.
19
+
20
+ The normal runtime path is:
21
+
22
+ ```text
23
+ WebUI -> jackailocald -> local Ollama model
24
+ ```
25
+
26
+ No cloud inference fallback is used. A capability is shown as unavailable when its required local binary or model is absent.
27
+
28
+ ## Implemented Capabilities
29
+
30
+ - Local chat through installed Ollama models
31
+ - Optional `llama.cpp` OpenAI-compatible server fallback when explicitly provided
32
+ - Persistent conversation threads with filter, rename, and individual delete
33
+ - SCOUT image analysis and text extraction through an installed vision-capable Ollama model
34
+ - LLM-in-the-loop configuration review through an installed local model, with Gemma 4 12B (`gemma4:12b`) as the preferred config agent
35
+ - Offline speech-to-text through whisper.cpp
36
+ - Offline text-to-speech through Piper
37
+ - Local documents and bilingual Field Manual cards
38
+ - AES-256-GCM encrypted import/export packs for threads, documents, and safe settings
39
+ - Opt-in Phone Access on the local network with pairing token and QR code
40
+ - Hardware status, model availability, benchmark, settings, and privacy-safe support ZIP
41
+ - English and French WebUI
42
+
43
+ ## Runtime Requirements
44
+
45
+ A usable Windows payload contains at least:
46
+
47
+ ```text
48
+ bin/jackailocald.exe
49
+ backends/ollama/windows/ollama.exe
50
+ models/ollama/ one or more real Ollama models
51
+ backends/whisper.cpp/windows/whisper-cli.exe
52
+ backends/piper/windows/piper.exe
53
+ models/whisper/ggml-base.bin
54
+ models/piper/en_US-libritts_r-medium.onnx
55
+ webui/
56
+ config/
57
+ content/
58
+ content-packs/
59
+ ```
60
+
61
+ The builders validate these files before reporting success.
62
+
63
+ ## Start Locally
64
+
65
+ Windows:
66
+
67
+ ```cmd
68
+ START-HERE.cmd
69
+ ```
70
+
71
+ Windows desktop-style browser window:
72
+
73
+ ```cmd
74
+ START-DESKTOP.cmd
75
+ ```
76
+
77
+ macOS:
78
+
79
+ ```bash
80
+ ./START-HERE.command
81
+ ```
82
+
83
+ The default bind is `127.0.0.1:4891`. Phone Access is disabled by default and requires an explicit enable plus runtime restart.
84
+
85
+ ## Build Targets
86
+
87
+ Windows launchers:
88
+
89
+ ```cmd
90
+ BUILD-LOCAL.cmd
91
+ BUILD-USB.cmd
92
+ BUILD-SSD.cmd
93
+ ```
94
+
95
+ macOS launchers:
96
+
97
+ ```bash
98
+ ./BUILD-LOCAL-MAC.command
99
+ ./BUILD-USB-MAC.command
100
+ ./BUILD-SSD-MAC.command
101
+ ```
102
+
103
+ `TEST-WITHOUT-USB.cmd` and `TEST-WITHOUT-USB-MAC.command` build a real local-folder edition for acceptance testing.
104
+
105
+ The builders:
106
+
107
+ 1. Read an embedded or detected build manifest.
108
+ 2. Validate that the target does not overlap the source package.
109
+ 3. Copy the runtime payload (including `legal/`, `licenses/`, and the PC analyzer in `profiler/`).
110
+ 4. Install selected Ollama models into the target model store.
111
+ 5. Install optional LoRA adapters from `manifest/lora-adapters.json` (see `docs/LORA_ADAPTERS.md`).
112
+ 6. Install and verify Voice assets.
113
+ 7. Generate a SHA-256 file manifest.
114
+ 8. Refuse to report success if required runtime assets or legal documents are missing.
115
+
116
+ ## Customer hardware analysis
117
+
118
+ For remote customers, the builder exports a standalone PC analyzer
119
+ (`profiler/`): the customer double-clicks `SCAN-MY-PC.cmd` (Windows) or
120
+ `SCAN-MY-MAC.command` (macOS), gets `JackAILocal-hardware-profile.json` on the
121
+ Desktop, and sends it back. The file is uploaded in the Gradio builder, and
122
+ the configuration agent (Gemma 4 12B, `gemma4:12b`) reviews the plan.
123
+
124
+ ## Offline updates
125
+
126
+ Signed update packages are produced with `updates/Create-UpdatePackage.ps1`
127
+ and applied on the customer machine with `UPDATE-FROM-USB.cmd` (auto-detects
128
+ the update package on removable drives, verifies the RSA signature and all
129
+ SHA-256 checksums, asks for confirmation, keeps a rollback backup). See also
130
+ `updates/JackAILocal-Update-Offline.ps1 -Rollback`.
131
+
132
+ ## Licensing
133
+
134
+ Customer licenses are Ed25519-signed files verified fully offline. Vendor
135
+ tooling: `jackailocald license keygen | issue | verify`. The runtime exposes
136
+ `/api/license`, and the WebUI shows the license state under Settings. Model
137
+ sources and backends (Ollama, Hugging Face GGUF/safetensors, NVIDIA NIM) are
138
+ documented in `docs/MODEL_SOURCES.md`.
139
+
140
+ ## Gradio Builder
141
+
142
+ The Hugging Face Space entrypoint is `app.py`. The full application is in `saas/gradio/app.py`.
143
+
144
+ ```bash
145
+ pip install -r requirements.txt
146
+ python app.py
147
+ ```
148
+
149
+ The Gradio application now starts with a simple flow for non-technical users: choose the intended use, choose a target, then prepare or publish. It can install to this computer, write a USB key or external SSD when running locally on Windows, or publish Windows, macOS, and Linux/Docker appliance ZIPs. Hosted Gradio exports packages only; it does not impersonate a client runtime.
150
+
151
+ ## Desktop Installers
152
+
153
+ Windows installer source:
154
+
155
+ ```powershell
156
+ powershell -ExecutionPolicy Bypass -File installer/windows/Build-Installer.ps1
157
+ ```
158
+
159
+ macOS DMG source:
160
+
161
+ ```bash
162
+ ./installer/macos/build-dmg.sh
163
+ ```
164
+
165
+ Both installer builders require a complete payload with at least one installed Ollama model.
166
+
167
+ ## LAN Appliance
168
+
169
+ ```bash
170
+ cd deploy/appliance
171
+ JACKAILOCAL_MODEL=qwen3.5:4b docker compose up --build -d
172
+ ./show-url.sh
173
+ ```
174
+
175
+ The appliance runs the Rust runtime and Ollama, preloads the selected model into a persistent volume, and protects remote API requests with the pairing token.
176
+
177
+ ## Linux Boot Edition
178
+
179
+ Run the destructive boot-disk preparation only from Linux and only with the correct target device:
180
+
181
+ ```bash
182
+ sudo linux/factory/prepare-linux-boot-disk.sh /dev/sdX
183
+ ```
184
+
185
+ The script builds the runtime, stages Ollama, builds whisper.cpp, installs Voice assets, preloads the selected model, creates a Debian UEFI disk, and enables the JackAILocal services.
186
+
187
+ ## Security Boundaries
188
+
189
+ - Loopback bind by default
190
+ - No shell tools exposed to the model
191
+ - No private update key in exported packages
192
+ - Pairing token required for non-loopback API access
193
+ - AES transfer pack passphrases are never stored
194
+ - Support ZIP excludes conversations and documents
195
+ - SHA-256 package manifest and signed-manifest hooks
196
+
197
+ JackAILocal does not claim protection from a compromised host operating system.
198
+
199
+ ## Verification
200
+
201
+ ```powershell
202
+ cargo check
203
+ cargo test --no-run
204
+ python -m py_compile app.py saas/gradio/app.py
205
+ node --check webui/app-v15.js
206
+ python qa/static_audit.py
207
+ ```
208
+
209
+ See `docs/SYSTEM_BEHAVIOR.md` for the API and behavior summary.
START-DESKTOP.cmd ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal
3
+ cd /d "%~dp0"
4
+ where powershell.exe >nul 2>nul
5
+ if errorlevel 1 (
6
+ echo PowerShell was not found. JackAILocal cannot start.
7
+ pause
8
+ exit /b 1
9
+ )
10
+ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0windows\Start-JackAILocal.ps1" -AppMode
11
+ if errorlevel 1 (
12
+ echo.
13
+ echo JackAILocal Desktop did not start correctly.
14
+ echo Check .jackailocal\logs or run windows\Preflight-Windows.ps1
15
+ pause
16
+ exit /b 1
17
+ )
START-HERE.cmd ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal
3
+ cd /d "%~dp0"
4
+ where powershell.exe >nul 2>nul
5
+ if errorlevel 1 (
6
+ echo PowerShell was not found. JackAILocal cannot start.
7
+ pause
8
+ exit /b 1
9
+ )
10
+ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0windows\Start-JackAILocal.ps1"
11
+ if errorlevel 1 (
12
+ echo.
13
+ echo JackAILocal did not start correctly.
14
+ echo Check .jackailocal\logs or run windows\Preflight-Windows.ps1
15
+ pause
16
+ exit /b 1
17
+ )
START-HERE.command ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ chmod +x ./macos/Start-JackAILocal.sh
5
+ ./macos/Start-JackAILocal.sh
6
+ read -r -p "Press Enter to close..." _
STOP-JACKAILOCAL.cmd ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal
3
+ cd /d "%~dp0"
4
+ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0windows\Stop-JackAILocal.ps1"
5
+ pause
STOP-JACKAILOCAL.command ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ chmod +x ./macos/Stop-JackAILocal.sh
5
+ ./macos/Stop-JackAILocal.sh
TEST-WITHOUT-USB-MAC.command ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "$(dirname "$0")"
4
+ TARGET="$HOME/JackAILocal-Test"
5
+
6
+ echo "JackAILocal real local-folder test"
7
+ echo "This creates a real local runtime folder at:"
8
+ echo " $TARGET"
9
+ echo
10
+ chmod +x ./macos/JackAILocal-USB-Builder.sh
11
+ ./macos/JackAILocal-USB-Builder.sh --mode=local --target="$TARGET"
12
+
13
+ echo
14
+ echo "Real local-folder build complete."
15
+ echo "Location: $TARGET"
16
+ chmod +x "$TARGET/START-HERE.command"
17
+ "$TARGET/START-HERE.command"
18
+ read -r -p "Press Enter to close..." _
TEST-WITHOUT-USB.cmd ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ setlocal EnableExtensions
3
+ cd /d "%~dp0"
4
+ set "ROOT=%~dp0"
5
+ set "BUILDER=%ROOT%windows\JackAILocal-USB-Builder.ps1"
6
+ set "TARGET=%LOCALAPPDATA%\JackAILocal-Test"
7
+
8
+ echo JackAILocal real local-folder test
9
+ echo Package root: %ROOT%
10
+ echo Target folder:
11
+ echo %TARGET%
12
+ echo.
13
+
14
+ if not exist "%BUILDER%" (
15
+ echo ERROR: Missing Windows builder script:
16
+ echo %BUILDER%
17
+ echo Do not copy TEST-WITHOUT-USB.cmd alone. Extract the full ZIP first.
18
+ pause
19
+ exit /b 1
20
+ )
21
+
22
+ set AUTO_CONFIRM=true
23
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%BUILDER%" -TargetMode LocalFolder -TargetDrive "%TARGET%" -CleanTarget
24
+ if errorlevel 1 (
25
+ echo.
26
+ echo Local-folder build failed. See .jackailocal-builder\logs for details.
27
+ pause
28
+ exit /b 1
29
+ )
30
+
31
+ echo.
32
+ echo Real local-folder build complete.
33
+ echo Location: %TARGET%
34
+ call "%TARGET%\START-HERE.cmd"
UPDATE-FROM-USB.cmd ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ @echo off
2
+ rem JackAILocal - Mise a jour hors ligne / Offline update
3
+ cd /d "%~dp0"
4
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0updates\Find-And-Apply-Update.ps1"
5
+ pause
app.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ from saas.gradio.app import build_ui, find_free_port, gradio_launch_kwargs
4
+
5
+ # Build the main demo interface
6
+ demo = build_ui()
7
+
8
+ if __name__ == "__main__":
9
+ requested_port = int(os.environ.get("GRADIO_SERVER_PORT", os.environ.get("PORT", "7860")))
10
+ port = find_free_port(requested_port)
11
+ if port != requested_port:
12
+ print(f"Port {requested_port} is busy; using {port} instead -> http://127.0.0.1:{port}")
13
+ demo.launch(
14
+ server_name=os.environ.get("GRADIO_SERVER_NAME", "127.0.0.1"),
15
+ server_port=port,
16
+ **gradio_launch_kwargs(),
17
+ )
autorun.inf ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ [AutoRun]
2
+ label=JackAILocal
3
+ icon=branding\jackailocal.ico
4
+ open=START-HERE.cmd
5
+ action=Start JackAILocal
backends/vllm/linux/start-vllm.sh ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ MODEL="${1:-/opt/JackAILocal/models/hf/qwen3.5-9b}"
4
+ PORT="${PORT:-8000}"
5
+ source /opt/JackAILocal/backends/vllm/linux/venv/bin/activate
6
+ exec python -m vllm.entrypoints.openai.api_server --host 127.0.0.1 --port "$PORT" --model "$MODEL"
cache/projects.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "E:\\sources\\jackailocal": "a4a798bc-c6f0-454e-be2e-6b9fe99873b9"
3
+ }
client-builder/windows/Build-JackAILocalUSB.ps1 ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [CmdletBinding()]
2
+ param(
3
+ [Parameter(Mandatory=$true)][string]$BuildManifestUrl,
4
+ [Parameter(Mandatory=$true)][string]$TargetDrive,
5
+ [switch]$SkipModelDownloads
6
+ )
7
+ $ErrorActionPreference = "Stop"
8
+ if ($TargetDrive.Length -eq 2 -and $TargetDrive[1] -eq ':') { $TargetDrive = "$TargetDrive\" }
9
+ if (!(Test-Path $TargetDrive)) { throw "Target drive not found: $TargetDrive" }
10
+ $manifest = Invoke-RestMethod -Uri $BuildManifestUrl
11
+ if ($manifest.product -ne "JackAILocal") { throw "Wrong product manifest." }
12
+ $Root = (Resolve-Path $TargetDrive).Path
13
+ New-Item -ItemType Directory -Force -Path "$Root\models\ollama", "$Root\models\gguf", "$Root\backends", "$Root\bin", "$Root\manifest" | Out-Null
14
+
15
+ # Copy seed runtime from the builder folder if present.
16
+ $SeedRoot = Resolve-Path (Join-Path $PSScriptRoot "..\..")
17
+ robocopy $SeedRoot $Root /E /XD ".git" ".jackailocal" "target" | Out-Null
18
+
19
+ foreach ($asset in $manifest.assets) {
20
+ $dest = Join-Path $Root $asset.path
21
+ New-Item -ItemType Directory -Force -Path (Split-Path $dest) | Out-Null
22
+ if ($asset.url -and !(Test-Path $dest)) {
23
+ Invoke-WebRequest -Uri $asset.url -OutFile $dest
24
+ }
25
+ if ($asset.sha256) {
26
+ $h = (Get-FileHash -Algorithm SHA256 $dest).Hash.ToLowerInvariant()
27
+ if ($h -ne $asset.sha256.ToLowerInvariant()) { throw "Checksum failed for $($asset.path)" }
28
+ }
29
+ }
30
+
31
+ if (-not $SkipModelDownloads) {
32
+ $OllamaExe = Join-Path $Root "backends\ollama\windows\ollama.exe"
33
+ if (Test-Path $OllamaExe) {
34
+ $env:OLLAMA_MODELS = Join-Path $Root "models\ollama"
35
+ foreach ($m in $manifest.ollama_models) { & $OllamaExe pull $m }
36
+ }
37
+ }
38
+
39
+ $manifest | ConvertTo-Json -Depth 20 | Set-Content -Encoding UTF8 (Join-Path $Root "manifest\build-manifest.json")
40
+ Write-Host "JackAILocal key built at $Root"
41
+ Write-Host "Use START-HERE.cmd on the key."
client-profiler/windows/Collect-JackAILocalProfile.ps1 ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [CmdletBinding()]
2
+ param(
3
+ [Parameter(Mandatory=$true)][string]$ApiBaseUrl,
4
+ [string]$Email="",
5
+ [string]$OutputPath="jackailocal-hardware-profile.json"
6
+ )
7
+ $ErrorActionPreference = "Stop"
8
+ $cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
9
+ $memBytes = (Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory
10
+ $gpus = Get-CimInstance Win32_VideoController | ForEach-Object {
11
+ [pscustomobject]@{ name=$_.Name; vram_gb=[math]::Round(($_.AdapterRAM / 1GB),1); driver=$_.DriverVersion }
12
+ }
13
+ $which = $null
14
+ if (Get-Command whichllm -ErrorAction SilentlyContinue) {
15
+ try { $which = (whichllm --top 10 --json | ConvertFrom-Json) } catch { $which = @{error=$_.Exception.Message} }
16
+ }
17
+ $profile = [ordered]@{
18
+ product="JackAILocal"
19
+ customer_email=$Email
20
+ collected_at=(Get-Date).ToString("o")
21
+ os="windows"
22
+ cpu_name=$cpu.Name
23
+ cpu_threads=$cpu.NumberOfLogicalProcessors
24
+ ram_gb=[math]::Round($memBytes / 1GB,1)
25
+ gpus=$gpus
26
+ vram_gb=[double](($gpus | Measure-Object -Property vram_gb -Maximum).Maximum)
27
+ whichllm=$which
28
+ }
29
+ $json = $profile | ConvertTo-Json -Depth 30
30
+ $json | Set-Content -Encoding UTF8 $OutputPath
31
+ $response = Invoke-RestMethod -Method Post -Uri "$ApiBaseUrl/api/v1/hardware/submit" -ContentType "application/json" -Body $json
32
+ $response | ConvertTo-Json -Depth 10
config/content-packs.json ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "catalog_version": "2026-06-03-v6",
3
+ "product": "JackAILocal",
4
+ "download_policy": "Content packs are selected during package build. Normal USB insertion must not download packs.",
5
+ "packs": [
6
+ {
7
+ "id": "field_manual_core",
8
+ "label": "Field Manual Core",
9
+ "type": "reference_cards",
10
+ "included_by_default": true,
11
+ "categories": [
12
+ "water",
13
+ "fire",
14
+ "first_aid",
15
+ "shelter",
16
+ "signal",
17
+ "food"
18
+ ],
19
+ "ai_escalation": true,
20
+ "storage_target": "content/field-manual/"
21
+ },
22
+ {
23
+ "id": "starter_prompt_packs",
24
+ "label": "Starter Prompt Packs",
25
+ "type": "prompt_packs",
26
+ "included_by_default": true,
27
+ "packs": [
28
+ "general_assistant",
29
+ "travel",
30
+ "privacy",
31
+ "outage",
32
+ "study"
33
+ ]
34
+ },
35
+ {
36
+ "id": "professional_prompt_packs",
37
+ "label": "Professional Prompt Packs",
38
+ "type": "prompt_packs",
39
+ "included_by_default": false,
40
+ "packs": [
41
+ "business_operator",
42
+ "creator_studio",
43
+ "rapid_learning",
44
+ "translation",
45
+ "research"
46
+ ]
47
+ }
48
+ ]
49
+ }
config/jackailocal.appliance.toml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ product = "JackAILocal"
2
+ bind = "0.0.0.0:4891"
3
+ default_profile = "auto"
4
+ local_only = false
5
+ allow_remote_network = true
6
+ phone_access_available = true
7
+
8
+ [paths]
9
+ models_ollama = "models/ollama"
10
+ models_gguf = "models/gguf"
11
+ cache = ".jackailocal/cache"
12
+ logs = ".jackailocal/logs"
13
+
14
+ [backends.ollama]
15
+ enabled = true
16
+ # url = "http://ollama:11434"
17
+ priority = 10
18
+
19
+ [backends.llamacpp]
20
+ enabled = false
21
+ # url = "http://127.0.0.1:8080"
22
+ priority = 20
config/jackailocal.linux.toml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ product = "JackAILocal"
2
+ bind = "127.0.0.1:4891"
3
+ default_profile = "auto"
4
+ local_only = true
5
+ allow_remote_network = false
6
+ phone_access_available = true
7
+
8
+ [paths]
9
+ models_ollama = "models/ollama"
10
+ models_gguf = "models/gguf"
11
+ cache = ".jackailocal/cache"
12
+ logs = ".jackailocal/logs"
13
+
14
+ [backends.ollama]
15
+ enabled = true
16
+ # url = "http://127.0.0.1:11434"
17
+ priority = 10
18
+
19
+ [backends.llamacpp]
20
+ enabled = true
21
+ # url = "http://127.0.0.1:8080"
22
+ priority = 20
config/jackailocal.macos.toml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [server]
2
+ host = "127.0.0.1"
3
+ port = 4891
4
+
5
+ [paths]
6
+ models = "models"
7
+ webui = "webui"
8
+ workspace = "workspace"
9
+ logs = ".jackailocal/logs"
10
+
11
+ [backends.ollama]
12
+ enabled = true
13
+ # base_url = "http://127.0.0.1:11436"
14
+ models_dir = "models/ollama"
15
+
16
+ [backends.llamacpp]
17
+ enabled = true
18
+ # base_url = "http://127.0.0.1:8080"
19
+
20
+ [security]
21
+ local_only = true
22
+ allow_lan = false
23
+ phone_access_available = true
24
+ allow_shell_tools = false
config/jackailocal.windows.toml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ product = "JackAILocal"
2
+ bind = "127.0.0.1:4891"
3
+ default_profile = "auto"
4
+ local_only = true
5
+ allow_remote_network = false
6
+ phone_access_available = true
7
+
8
+ [paths]
9
+ models_ollama = "models/ollama"
10
+ models_gguf = "models/gguf"
11
+ cache = ".jackailocal/cache"
12
+ logs = ".jackailocal/logs"
13
+
14
+ [backends.ollama]
15
+ enabled = true
16
+ # url = "http://127.0.0.1:11434"
17
+ priority = 10
18
+
19
+ [backends.llamacpp]
20
+ enabled = true
21
+ # url = "http://127.0.0.1:8080"
22
+ priority = 20
config/model-alias-map.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "aliases": [
3
+ {
4
+ "hf_pattern": "Qwen/Qwen3.5-2B",
5
+ "ollama": "qwen3.5:2b",
6
+ "profile": "lite"
7
+ },
8
+ {
9
+ "hf_pattern": "Qwen/Qwen3.5-4B",
10
+ "ollama": "qwen3.5:4b",
11
+ "profile": "balanced"
12
+ },
13
+ {
14
+ "hf_pattern": "Qwen/Qwen3.5-9B",
15
+ "ollama": "qwen3.5:9b",
16
+ "profile": "smart"
17
+ },
18
+ {
19
+ "hf_pattern": "Qwen/Qwen3-VL",
20
+ "ollama": "qwen3-vl:4b",
21
+ "profile": "vision"
22
+ },
23
+ {
24
+ "hf_pattern": "google/gemma-4-12B-it",
25
+ "ollama": "gemma4:12b",
26
+ "profile": "config_agent"
27
+ }
28
+ ],
29
+ "note": "whichllm returns Hugging Face model ids; JackAILocal maps compatible entries to local Ollama model references."
30
+ }
31
+
config/model-catalog.json ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "catalog_version": "2026-06-04-v8-gemma-agent",
3
+ "product": "JackAILocal",
4
+ "policy": {
5
+ "default_pack": "field_default",
6
+ "normal_use_downloads_models": false,
7
+ "factory_or_builder_preloads_models": true,
8
+ "user_can_add_models": true,
9
+ "hackathon_max_params_b": 32,
10
+ "message": "The bundled model set is a sensible offline default, not a hard ceiling. JackAILocal can prepare Qwen3.5 models for normal laptops, Gemma 4 12B as a local configuration agent, and Qwen3.6-27B / other <=32B power models when the customer machine can run them.",
11
+ "primary_model_family": [
12
+ "Qwen3.5",
13
+ "Qwen3.6",
14
+ "Gemma 4"
15
+ ]
16
+ },
17
+ "profiles": [
18
+ {
19
+ "id": "field_default",
20
+ "label": "Field Default",
21
+ "description": "Default offline pack sized for normal laptops. Balanced for privacy, travel, outage, and general assistance.",
22
+ "included_models": [
23
+ "qwen_fast",
24
+ "qwen_balanced",
25
+ "qwen_smart",
26
+ "qwen_vision"
27
+ ],
28
+ "recommended_default": "qwen_smart",
29
+ "min_ram_gb": 16,
30
+ "min_vram_gb": 0,
31
+ "drive_class": "standard_usb3_or_better",
32
+ "content_packs": [
33
+ "field_manual_core",
34
+ "starter_prompt_packs"
35
+ ]
36
+ },
37
+ {
38
+ "id": "core_low_spec",
39
+ "label": "Core Low-Spec",
40
+ "description": "Entry pack for low-spec laptops and CPU-only machines.",
41
+ "included_models": [
42
+ "qwen_fast",
43
+ "qwen_balanced"
44
+ ],
45
+ "recommended_default": "qwen_balanced",
46
+ "min_ram_gb": 8,
47
+ "min_vram_gb": 0,
48
+ "drive_class": "standard_usb3",
49
+ "content_packs": [
50
+ "field_manual_core",
51
+ "starter_prompt_packs"
52
+ ]
53
+ },
54
+ {
55
+ "id": "power_24gb_vram",
56
+ "label": "Power 24GB VRAM",
57
+ "description": "Advanced pack for RTX 3090/4090-class machines. It can include Qwen3.6-27B while staying inside the hackathon small-model limit.",
58
+ "included_models": [
59
+ "qwen_fast",
60
+ "qwen_balanced",
61
+ "qwen_smart",
62
+ "gemma_config_agent_12b",
63
+ "qwen_power_27b",
64
+ "qwen36_power_27b",
65
+ "qwen_power_30b",
66
+ "qwen_vision",
67
+ "qwen_vision_pro_30b"
68
+ ],
69
+ "recommended_default": "qwen36_power_27b",
70
+ "min_ram_gb": 32,
71
+ "min_vram_gb": 24,
72
+ "drive_class": "max_speed_ssd_or_nvme",
73
+ "content_packs": [
74
+ "field_manual_core",
75
+ "professional_prompt_packs"
76
+ ]
77
+ }
78
+ ],
79
+ "models": [
80
+ {
81
+ "id": "qwen_fast",
82
+ "label": "Fast",
83
+ "ollama": "qwen3.5:2b",
84
+ "gguf": "models/gguf/qwen3.5-2b-q4_k_m.gguf",
85
+ "params_b": 2,
86
+ "min_ram_gb": 6,
87
+ "min_vram_gb": 0,
88
+ "features": [
89
+ "chat",
90
+ "vision"
91
+ ],
92
+ "default_context": 4096,
93
+ "allowed_backends": [
94
+ "ollama",
95
+ "llama.cpp"
96
+ ]
97
+ },
98
+ {
99
+ "id": "qwen_balanced",
100
+ "label": "Balanced",
101
+ "ollama": "qwen3.5:4b",
102
+ "gguf": "models/gguf/qwen3.5-4b-q4_k_m.gguf",
103
+ "params_b": 4,
104
+ "min_ram_gb": 8,
105
+ "min_vram_gb": 0,
106
+ "features": [
107
+ "chat",
108
+ "vision",
109
+ "voice"
110
+ ],
111
+ "default_context": 8192,
112
+ "allowed_backends": [
113
+ "ollama",
114
+ "llama.cpp"
115
+ ]
116
+ },
117
+ {
118
+ "id": "qwen_smart",
119
+ "label": "Smart",
120
+ "ollama": "qwen3.5:9b",
121
+ "gguf": "models/gguf/qwen3.5-9b-q4_k_m.gguf",
122
+ "params_b": 9,
123
+ "min_ram_gb": 16,
124
+ "min_vram_gb": 0,
125
+ "features": [
126
+ "chat",
127
+ "vision",
128
+ "thinking"
129
+ ],
130
+ "default_context": 8192,
131
+ "allowed_backends": [
132
+ "ollama",
133
+ "llama.cpp"
134
+ ]
135
+ },
136
+ {
137
+ "id": "gemma_config_agent_12b",
138
+ "label": "Gemma 4 12B Config Agent",
139
+ "hf": "google/gemma-4-12B-it",
140
+ "ollama": "gemma4:12b",
141
+ "gguf": null,
142
+ "params_b": 11.95,
143
+ "min_ram_gb": 24,
144
+ "min_vram_gb": 0,
145
+ "features": [
146
+ "chat",
147
+ "vision",
148
+ "thinking",
149
+ "audio",
150
+ "tools",
151
+ "agent",
152
+ "config_agent",
153
+ "model_selection"
154
+ ],
155
+ "default_context": 8192,
156
+ "max_native_context": 262144,
157
+ "recommended_usb_context": 8192,
158
+ "allowed_backends": [
159
+ "ollama"
160
+ ],
161
+ "hackathon_eligible": true,
162
+ "agent_role": "LLM-in-the-loop assistant for hardware analysis, client model selection, and safe local configuration review.",
163
+ "notes": "Preferred local config-agent model when installed. It must be pulled by the builder or preloaded; the runtime never falls back to cloud."
164
+ },
165
+ {
166
+ "id": "qwen_power_27b",
167
+ "label": "Power 27B",
168
+ "ollama": "qwen3.5:27b",
169
+ "gguf": "models/gguf/qwen3.5-27b-q4_k_m.gguf",
170
+ "params_b": 27,
171
+ "min_ram_gb": 32,
172
+ "min_vram_gb": 16,
173
+ "features": [
174
+ "chat",
175
+ "vision",
176
+ "thinking",
177
+ "longer_answers"
178
+ ],
179
+ "default_context": 8192,
180
+ "allowed_backends": [
181
+ "ollama",
182
+ "llama.cpp"
183
+ ]
184
+ },
185
+ {
186
+ "id": "qwen36_power_27b",
187
+ "label": "Qwen3.6 Power 27B",
188
+ "hf": "Qwen/Qwen3.6-27B",
189
+ "ollama": "qwen3.6:27b",
190
+ "gguf": "models/gguf/qwen3.6-27b-q4_k_m.gguf",
191
+ "params_b": 27,
192
+ "min_ram_gb": 32,
193
+ "min_vram_gb": 24,
194
+ "features": [
195
+ "chat",
196
+ "vision",
197
+ "thinking",
198
+ "coding",
199
+ "agentic_coding",
200
+ "power_user"
201
+ ],
202
+ "default_context": 8192,
203
+ "max_native_context": 262144,
204
+ "recommended_usb_context": 8192,
205
+ "allowed_backends": [
206
+ "ollama",
207
+ "llama.cpp"
208
+ ],
209
+ "hackathon_eligible": true,
210
+ "notes": "Use as Power profile for RTX 3090-class or better machines. Keep USB default context low; the native 262K context is not a default USB setting."
211
+ },
212
+ {
213
+ "id": "qwen_power_30b",
214
+ "label": "Power 30B",
215
+ "ollama": "qwen3:30b",
216
+ "gguf": "models/gguf/qwen3-30b-q4_k_m.gguf",
217
+ "params_b": 30,
218
+ "min_ram_gb": 48,
219
+ "min_vram_gb": 24,
220
+ "features": [
221
+ "chat",
222
+ "thinking",
223
+ "power_user"
224
+ ],
225
+ "default_context": 8192,
226
+ "allowed_backends": [
227
+ "ollama",
228
+ "llama.cpp"
229
+ ]
230
+ },
231
+ {
232
+ "id": "qwen_vision",
233
+ "label": "Vision",
234
+ "ollama": "qwen3-vl:8b",
235
+ "gguf": null,
236
+ "params_b": 8,
237
+ "min_ram_gb": 16,
238
+ "min_vram_gb": 6,
239
+ "features": [
240
+ "vision",
241
+ "image",
242
+ "document"
243
+ ],
244
+ "default_context": 4096,
245
+ "allowed_backends": [
246
+ "ollama"
247
+ ]
248
+ },
249
+ {
250
+ "id": "qwen_vision_pro_30b",
251
+ "label": "Vision Pro 30B",
252
+ "ollama": "qwen3-vl:30b",
253
+ "gguf": null,
254
+ "params_b": 30,
255
+ "min_ram_gb": 48,
256
+ "min_vram_gb": 24,
257
+ "features": [
258
+ "vision",
259
+ "document",
260
+ "power_user"
261
+ ],
262
+ "default_context": 4096,
263
+ "allowed_backends": [
264
+ "ollama"
265
+ ]
266
+ }
267
+ ],
268
+ "selection_rules": {
269
+ "ram_below_8": "qwen_fast",
270
+ "ram_8_to_15": "qwen_balanced",
271
+ "ram_16_plus": "qwen_smart",
272
+ "config_agent": "gemma_config_agent_12b if installed and RAM is sufficient; otherwise use another installed local chat model through Auto",
273
+ "vram_16_plus": "qwen_power_27b optional",
274
+ "vram_24_plus": "qwen_power_30b optional if package size and latency are acceptable",
275
+ "vision": "only enable if hardware supports the selected vision profile"
276
+ },
277
+ "ui_features": {
278
+ "workspace": true,
279
+ "model_cookbook": true,
280
+ "documents": true,
281
+ "benchmark": true,
282
+ "settings": true,
283
+ "support": true,
284
+ "content_packs": true,
285
+ "field_manual": true,
286
+ "phone_access_optional": true,
287
+ "llm_config_agent": true
288
+ }
289
+ }
290
+
config/models.json ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "catalog_version": "2026-06-04-v8-gemma-agent",
3
+ "product": "JackAILocal",
4
+ "policy": {
5
+ "default_pack": "field_default",
6
+ "normal_use_downloads_models": false,
7
+ "factory_or_builder_preloads_models": true,
8
+ "user_can_add_models": true,
9
+ "hackathon_max_params_b": 32,
10
+ "message": "The bundled model set is a sensible offline default, not a hard ceiling. JackAILocal can prepare Qwen3.5 models for normal laptops, Gemma 4 12B as a local configuration agent, and Qwen3.6-27B / other <=32B power models when the customer machine can run them.",
11
+ "primary_model_family": [
12
+ "Qwen3.5",
13
+ "Qwen3.6",
14
+ "Gemma 4"
15
+ ]
16
+ },
17
+ "profiles": [
18
+ {
19
+ "id": "field_default",
20
+ "label": "Field Default",
21
+ "description": "Default offline pack sized for normal laptops. Balanced for privacy, travel, outage, and general assistance.",
22
+ "included_models": [
23
+ "qwen_fast",
24
+ "qwen_balanced",
25
+ "qwen_smart",
26
+ "qwen_vision"
27
+ ],
28
+ "recommended_default": "qwen_smart",
29
+ "min_ram_gb": 16,
30
+ "min_vram_gb": 0,
31
+ "drive_class": "standard_usb3_or_better",
32
+ "content_packs": [
33
+ "field_manual_core",
34
+ "starter_prompt_packs"
35
+ ]
36
+ },
37
+ {
38
+ "id": "core_low_spec",
39
+ "label": "Core Low-Spec",
40
+ "description": "Entry pack for low-spec laptops and CPU-only machines.",
41
+ "included_models": [
42
+ "qwen_fast",
43
+ "qwen_balanced"
44
+ ],
45
+ "recommended_default": "qwen_balanced",
46
+ "min_ram_gb": 8,
47
+ "min_vram_gb": 0,
48
+ "drive_class": "standard_usb3",
49
+ "content_packs": [
50
+ "field_manual_core",
51
+ "starter_prompt_packs"
52
+ ]
53
+ },
54
+ {
55
+ "id": "power_24gb_vram",
56
+ "label": "Power 24GB VRAM",
57
+ "description": "Advanced pack for RTX 3090/4090-class machines. It can include Qwen3.6-27B while staying inside the hackathon small-model limit.",
58
+ "included_models": [
59
+ "qwen_fast",
60
+ "qwen_balanced",
61
+ "qwen_smart",
62
+ "gemma_config_agent_12b",
63
+ "qwen_power_27b",
64
+ "qwen36_power_27b",
65
+ "qwen_power_30b",
66
+ "qwen_vision",
67
+ "qwen_vision_pro_30b"
68
+ ],
69
+ "recommended_default": "qwen36_power_27b",
70
+ "min_ram_gb": 32,
71
+ "min_vram_gb": 24,
72
+ "drive_class": "max_speed_ssd_or_nvme",
73
+ "content_packs": [
74
+ "field_manual_core",
75
+ "professional_prompt_packs"
76
+ ]
77
+ }
78
+ ],
79
+ "models": [
80
+ {
81
+ "id": "qwen_fast",
82
+ "label": "Fast",
83
+ "ollama": "qwen3.5:2b",
84
+ "gguf": "models/gguf/qwen3.5-2b-q4_k_m.gguf",
85
+ "params_b": 2,
86
+ "min_ram_gb": 6,
87
+ "min_vram_gb": 0,
88
+ "features": [
89
+ "chat",
90
+ "vision"
91
+ ],
92
+ "default_context": 4096,
93
+ "allowed_backends": [
94
+ "ollama",
95
+ "llama.cpp"
96
+ ]
97
+ },
98
+ {
99
+ "id": "qwen_balanced",
100
+ "label": "Balanced",
101
+ "ollama": "qwen3.5:4b",
102
+ "gguf": "models/gguf/qwen3.5-4b-q4_k_m.gguf",
103
+ "params_b": 4,
104
+ "min_ram_gb": 8,
105
+ "min_vram_gb": 0,
106
+ "features": [
107
+ "chat",
108
+ "vision",
109
+ "voice"
110
+ ],
111
+ "default_context": 8192,
112
+ "allowed_backends": [
113
+ "ollama",
114
+ "llama.cpp"
115
+ ]
116
+ },
117
+ {
118
+ "id": "qwen_smart",
119
+ "label": "Smart",
120
+ "ollama": "qwen3.5:9b",
121
+ "gguf": "models/gguf/qwen3.5-9b-q4_k_m.gguf",
122
+ "params_b": 9,
123
+ "min_ram_gb": 16,
124
+ "min_vram_gb": 0,
125
+ "features": [
126
+ "chat",
127
+ "vision",
128
+ "thinking"
129
+ ],
130
+ "default_context": 8192,
131
+ "allowed_backends": [
132
+ "ollama",
133
+ "llama.cpp"
134
+ ]
135
+ },
136
+ {
137
+ "id": "gemma_config_agent_12b",
138
+ "label": "Gemma 4 12B Config Agent",
139
+ "hf": "google/gemma-4-12B-it",
140
+ "ollama": "gemma4:12b",
141
+ "gguf": null,
142
+ "params_b": 11.95,
143
+ "min_ram_gb": 24,
144
+ "min_vram_gb": 0,
145
+ "features": [
146
+ "chat",
147
+ "vision",
148
+ "thinking",
149
+ "audio",
150
+ "tools",
151
+ "agent",
152
+ "config_agent",
153
+ "model_selection"
154
+ ],
155
+ "default_context": 8192,
156
+ "max_native_context": 262144,
157
+ "recommended_usb_context": 8192,
158
+ "allowed_backends": [
159
+ "ollama"
160
+ ],
161
+ "hackathon_eligible": true,
162
+ "agent_role": "LLM-in-the-loop assistant for hardware analysis, client model selection, and safe local configuration review.",
163
+ "notes": "Preferred local config-agent model when installed. It must be pulled by the builder or preloaded; the runtime never falls back to cloud."
164
+ },
165
+ {
166
+ "id": "qwen_power_27b",
167
+ "label": "Power 27B",
168
+ "ollama": "qwen3.5:27b",
169
+ "gguf": "models/gguf/qwen3.5-27b-q4_k_m.gguf",
170
+ "params_b": 27,
171
+ "min_ram_gb": 32,
172
+ "min_vram_gb": 16,
173
+ "features": [
174
+ "chat",
175
+ "vision",
176
+ "thinking",
177
+ "longer_answers"
178
+ ],
179
+ "default_context": 8192,
180
+ "allowed_backends": [
181
+ "ollama",
182
+ "llama.cpp"
183
+ ]
184
+ },
185
+ {
186
+ "id": "qwen36_power_27b",
187
+ "label": "Qwen3.6 Power 27B",
188
+ "hf": "Qwen/Qwen3.6-27B",
189
+ "ollama": "qwen3.6:27b",
190
+ "gguf": "models/gguf/qwen3.6-27b-q4_k_m.gguf",
191
+ "params_b": 27,
192
+ "min_ram_gb": 32,
193
+ "min_vram_gb": 24,
194
+ "features": [
195
+ "chat",
196
+ "vision",
197
+ "thinking",
198
+ "coding",
199
+ "agentic_coding",
200
+ "power_user"
201
+ ],
202
+ "default_context": 8192,
203
+ "max_native_context": 262144,
204
+ "recommended_usb_context": 8192,
205
+ "allowed_backends": [
206
+ "ollama",
207
+ "llama.cpp"
208
+ ],
209
+ "hackathon_eligible": true,
210
+ "notes": "Use as Power profile for RTX 3090-class or better machines. Keep USB default context low; the native 262K context is not a default USB setting."
211
+ },
212
+ {
213
+ "id": "qwen_power_30b",
214
+ "label": "Power 30B",
215
+ "ollama": "qwen3:30b",
216
+ "gguf": "models/gguf/qwen3-30b-q4_k_m.gguf",
217
+ "params_b": 30,
218
+ "min_ram_gb": 48,
219
+ "min_vram_gb": 24,
220
+ "features": [
221
+ "chat",
222
+ "thinking",
223
+ "power_user"
224
+ ],
225
+ "default_context": 8192,
226
+ "allowed_backends": [
227
+ "ollama",
228
+ "llama.cpp"
229
+ ]
230
+ },
231
+ {
232
+ "id": "qwen_vision",
233
+ "label": "Vision",
234
+ "ollama": "qwen3-vl:8b",
235
+ "gguf": null,
236
+ "params_b": 8,
237
+ "min_ram_gb": 16,
238
+ "min_vram_gb": 6,
239
+ "features": [
240
+ "vision",
241
+ "image",
242
+ "document"
243
+ ],
244
+ "default_context": 4096,
245
+ "allowed_backends": [
246
+ "ollama"
247
+ ]
248
+ },
249
+ {
250
+ "id": "qwen_vision_pro_30b",
251
+ "label": "Vision Pro 30B",
252
+ "ollama": "qwen3-vl:30b",
253
+ "gguf": null,
254
+ "params_b": 30,
255
+ "min_ram_gb": 48,
256
+ "min_vram_gb": 24,
257
+ "features": [
258
+ "vision",
259
+ "document",
260
+ "power_user"
261
+ ],
262
+ "default_context": 4096,
263
+ "allowed_backends": [
264
+ "ollama"
265
+ ]
266
+ }
267
+ ],
268
+ "selection_rules": {
269
+ "ram_below_8": "qwen_fast",
270
+ "ram_8_to_15": "qwen_balanced",
271
+ "ram_16_plus": "qwen_smart",
272
+ "config_agent": "gemma_config_agent_12b if installed and RAM is sufficient; otherwise use another installed local chat model through Auto",
273
+ "vram_16_plus": "qwen_power_27b optional",
274
+ "vram_24_plus": "qwen_power_30b optional if package size and latency are acceptable",
275
+ "vision": "only enable if hardware supports the selected vision profile"
276
+ },
277
+ "ui_features": {
278
+ "workspace": true,
279
+ "model_cookbook": true,
280
+ "documents": true,
281
+ "benchmark": true,
282
+ "settings": true,
283
+ "support": true,
284
+ "content_packs": true,
285
+ "field_manual": true,
286
+ "phone_access_optional": true,
287
+ "llm_config_agent": true
288
+ }
289
+ }
290
+
config/update-public-key.xml ADDED
@@ -0,0 +1 @@
 
 
1
+ <RSAKeyValue><Modulus>vaeUBc0J1nCohjd9i9tyujmOQu3qLBP1B4K6o/cNSeF6BhetS2AaFxm/7UpjHlILo/Vzj1Z0ldyU6mGegb0rB26T4EcIoTEXam0bTYj8n4J8vCjIP6wd3w/a/2e8x4y7mpeygGmSvUhqxGJuR9py0U7XfIGOLHBeL/luO8wFjNIJqniNmKQcA7af40ej9yM5xo0Q8juFS8+ekvZCs0cnPA4YtrOUiY8mounP1e8yM7JdsdwDIpcoHUmen6usHuXMc1QLMvUqjoE+6VJkoT8r+EZhndst80w1MkLX3AG36hyN1SGKeDXEeftKj/qWkLoMFKlHliGPkqyLhzka+DQl7Q==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
config/voice-assets.json ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 2,
3
+ "shared": {
4
+ "comment": "Model files are platform-independent (GGML/ONNX); only the binary archives below are per-platform.",
5
+ "whisper": {
6
+ "model_url": "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin",
7
+ "model_sha256": "60ed5bc3dd14eea856493d334349b405782ddcaf0028d4b5df4088345fba2efe"
8
+ },
9
+ "piper": {
10
+ "voice_url": "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx",
11
+ "voice_sha256": "10bb85e071d616fcf4071f369f1799d0491492ab3c5d552ec19fb548fac13195",
12
+ "voice_config_url": "https://huggingface.co/rhasspy/piper-voices/resolve/main/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx.json",
13
+ "voice_config_sha256": "b471dc60d2d8335e819c393d196d6fbf792817f40051257b269878505bc9afb3"
14
+ }
15
+ },
16
+ "windows_x64": {
17
+ "whisper": {
18
+ "version": "v1.8.6",
19
+ "archive_url": "https://github.com/ggml-org/whisper.cpp/releases/download/v1.8.6/whisper-bin-x64.zip",
20
+ "archive_sha256": "b07ea0b1b4115a38e1a7b07debf581f0b77d999925f8acb8f39d322b0ba0a822"
21
+ },
22
+ "piper": {
23
+ "version": "2023.11.14-2",
24
+ "archive_url": "https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_windows_amd64.zip",
25
+ "archive_sha256": "f3c58906402b24f3a96d92145f58acba6d86c9b5db896d207f78dc80811efcea"
26
+ }
27
+ },
28
+ "linux_x86_64": {
29
+ "piper": {
30
+ "version": "2023.11.14-2",
31
+ "archive_url": "https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_x86_64.tar.gz",
32
+ "archive_sha256": "a50cb45f355b7af1f6d758c1b360717877ba0a398cc8cbe6d2a7a3a26e225992"
33
+ }
34
+ },
35
+ "macos_aarch64": {
36
+ "piper": {
37
+ "version": "2023.11.14-2",
38
+ "archive_url": "https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_macos_aarch64.tar.gz",
39
+ "archive_sha256": "6b1eb03b3735946cb35216e063e7eebcc33a6bbf5dd96ec0217959bf1cdcb0cc"
40
+ }
41
+ },
42
+ "macos_x86_64": {
43
+ "piper": {
44
+ "version": "2023.11.14-2",
45
+ "archive_url": "https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_macos_x64.tar.gz",
46
+ "archive_sha256": "ced85c0a3df13945b1e623b878a48fdc2854d5c485b4b67f62857cf551deaf8b"
47
+ }
48
+ }
49
+ }
content-packs/prompts/business-operator.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "business_operator",
3
+ "label": "Business Operator",
4
+ "prompts": [
5
+ "Turn these notes into a decision memo.",
6
+ "Draft a concise operating procedure from this process.",
7
+ "Identify risks, owners, and due dates in this plan."
8
+ ]
9
+ }
content-packs/prompts/creator-studio.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "creator_studio",
3
+ "label": "Creator Studio",
4
+ "prompts": [
5
+ "Create three outlines for this idea.",
6
+ "Rewrite this draft for clarity without changing its meaning.",
7
+ "Build a publication checklist for this content."
8
+ ]
9
+ }
content-packs/prompts/general-assistant.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "general_assistant",
3
+ "label": "General Assistant",
4
+ "prompts": [
5
+ "Summarize the following text and list the next actions.",
6
+ "Explain this topic in simple terms, then give a more technical explanation.",
7
+ "Create a checklist from these notes."
8
+ ]
9
+ }
content-packs/prompts/outage.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "outage",
3
+ "label": "Outage",
4
+ "prompts": [
5
+ "Create a communications plan for a temporary power outage.",
6
+ "Prioritize these available supplies for the next 24 hours.",
7
+ "Turn this situation report into a concise action list."
8
+ ]
9
+ }
content-packs/prompts/privacy.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "privacy",
3
+ "label": "Privacy",
4
+ "prompts": [
5
+ "Identify sensitive information in this text before I share it.",
6
+ "Rewrite this note while removing personal identifiers.",
7
+ "Create a local-only workflow for this task."
8
+ ]
9
+ }
content-packs/prompts/rapid-learning.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "rapid_learning",
3
+ "label": "Rapid Learning",
4
+ "prompts": [
5
+ "Build a one-hour learning plan for this topic.",
6
+ "List the prerequisite concepts I need first.",
7
+ "Create exercises that increase in difficulty."
8
+ ]
9
+ }
content-packs/prompts/research.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "research",
3
+ "label": "Research",
4
+ "prompts": [
5
+ "Extract claims, evidence, and unanswered questions from this text.",
6
+ "Compare these sources and identify disagreements.",
7
+ "Create a research log from these notes."
8
+ ]
9
+ }
content-packs/prompts/study.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "study",
3
+ "label": "Study",
4
+ "prompts": [
5
+ "Create flashcards from this material.",
6
+ "Quiz me on this topic one question at a time.",
7
+ "Explain where my reasoning is incomplete."
8
+ ]
9
+ }
content-packs/prompts/survival-mode.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Survival quick reference",
3
+ "warning": "Educational reference only. Does not replace emergency services or professional medical advice.",
4
+ "categories": ["water", "fire", "first aid", "shelter", "signal", "food"],
5
+ "system_prompt": "You are an offline emergency reference assistant. Give concise, cautious, practical steps. Avoid dangerous overconfidence. Tell the user when professional help is required."
6
+ }