@sebastienrousseau/dotfiles 0.2.499 → 0.2.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +375 -0
- package/LICENSE +1283 -0
- package/README.md +284 -0
- package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
- package/docs/AI.md +102 -0
- package/docs/COPYRIGHT +4 -3
- package/docs/NAMING_CONVENTIONS.md +95 -0
- package/docs/README.md +78 -0
- package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
- package/docs/adr/ADR-002-shell-performance.md +121 -0
- package/docs/adr/ADR-003-security-first.md +140 -0
- package/docs/adr/ADR-004-cli-architecture.md +157 -0
- package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
- package/docs/adr/ADR-006-shell-selection.md +115 -0
- package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
- package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
- package/docs/adr/README.md +32 -0
- package/docs/architecture/ARCHITECTURE.md +113 -0
- package/docs/architecture/INTEROP.md +36 -0
- package/docs/architecture/REPO_LAYOUT.md +237 -0
- package/docs/architecture/WALKTHROUGH.md +82 -0
- package/docs/architecture/fleet-deployment.md +73 -0
- package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
- package/docs/archive/LEGACY_ROADMAP.md +142 -0
- package/docs/archive/MILESTONE_v0.2.493.md +43 -0
- package/docs/{PLAN.md → archive/PLAN.md} +4 -4
- package/docs/archive/REPO_AUDIT.md +23 -0
- package/docs/guides/INSTALL.md +140 -0
- package/docs/guides/NEOVIM_IDE_GUIDE.md +52 -0
- package/docs/guides/THEMING.md +222 -0
- package/docs/guides/TROUBLESHOOTING.md +148 -0
- package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +723 -0
- package/docs/index.md +39 -0
- package/docs/interop/A2A.md +32 -0
- package/docs/manual/00-introduction.md +85 -0
- package/docs/manual/01-concepts/01-architecture.md +134 -0
- package/docs/manual/01-concepts/02-trust-model.md +178 -0
- package/docs/manual/01-concepts/03-theme-engine.md +182 -0
- package/docs/manual/01-concepts/04-fleet.md +142 -0
- package/docs/manual/01-concepts/05-self-healing.md +197 -0
- package/docs/manual/02-tutorials/01-first-install.md +192 -0
- package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
- package/docs/manual/02-tutorials/03-create-profile.md +238 -0
- package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
- package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
- package/docs/manual/03-reference/01-dot-cli.md +413 -0
- package/docs/manual/03-reference/02-config-files.md +259 -0
- package/docs/manual/03-reference/03-environment.md +120 -0
- package/docs/manual/03-reference/04-templates.md +184 -0
- package/docs/manual/03-reference/05-feature-flags.md +118 -0
- package/docs/manual/04-cookbook/01-recipes.md +281 -0
- package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
- package/docs/manual/04-cookbook/03-faq.md +167 -0
- package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
- package/docs/manual/05-appendices/B-security-checklist.md +78 -0
- package/docs/manual/05-appendices/C-glossary.md +36 -0
- package/docs/manual/05-appendices/D-bibliography.md +54 -0
- package/docs/manual/05-appendices/E-license.md +34 -0
- package/docs/manual/_toc.yml +58 -0
- package/docs/manual/command-index.md +58 -0
- package/docs/manual/concept-index.md +164 -0
- package/docs/operations/ATTESTATION.md +39 -0
- package/docs/operations/MAINTENANCE.md +59 -0
- package/docs/operations/MIGRATION.md +101 -0
- package/docs/operations/OPERATIONS.md +164 -0
- package/docs/operations/RELIABILITY.md +116 -0
- package/docs/{ROADMAP.md → operations/ROADMAP.md} +22 -22
- package/docs/operations/TESTING.md +195 -0
- package/docs/operations/TRACEABILITY.md +31 -0
- package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
- package/docs/operations/VERSION_SYNC.md +344 -0
- package/docs/reference/ALIASES.md +124 -0
- package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
- package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
- package/docs/reference/FEATURES.md +62 -0
- package/docs/reference/FONTS.md +108 -0
- package/docs/reference/PROFILES.md +65 -0
- package/docs/reference/SCREENSHOTS.md +117 -0
- package/docs/reference/SCRIPTS.md +67 -0
- package/docs/reference/SUPPORT_MATRIX.md +74 -0
- package/docs/reference/THEMES.md +113 -0
- package/docs/reference/TOOLS.md +105 -0
- package/docs/reference/UTILS.md +151 -0
- package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
- package/docs/security/AUTOMATION_SECRETS.md +22 -0
- package/docs/security/COMPLIANCE.md +453 -0
- package/docs/security/ENCRYPTION.md +52 -0
- package/docs/security/FMEA.md +155 -0
- package/docs/security/INCIDENT_RESPONSE.md +575 -0
- package/docs/security/KEYS.md +45 -0
- package/docs/security/KEY_ROTATION.md +219 -0
- package/docs/security/MCP_POLICY.md +69 -0
- package/docs/security/POLICY_RELEASES.md +33 -0
- package/docs/security/README.md +24 -0
- package/docs/security/SECRETS.md +146 -0
- package/docs/security/SECURITY.md +41 -0
- package/docs/security/SECURITY_CHECKLIST.md +44 -0
- package/docs/security/SOUP_REGISTER.md +32 -0
- package/docs/security/THREAT_MODEL.md +120 -0
- package/docs/security/VERIFICATION_VALIDATION.md +224 -0
- package/docs/themes/README.md +6 -0
- package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
- package/docs/themes/hero-shot.svg +78 -0
- package/dot_config/.module-manifest.json +69 -0
- package/dot_config/ai/identity.md +20 -0
- package/dot_config/ai/patterns/architect.md +14 -0
- package/dot_config/ai/patterns/hardener.md +13 -0
- package/dot_config/ai/patterns/refactor.md +13 -0
- package/dot_config/aider/aider.conf.yml +32 -0
- package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
- package/dot_config/ansible/ansible.cfg +11 -0
- package/dot_config/atuin/config.toml +40 -0
- package/dot_config/bat/config +23 -0
- package/dot_config/brave-flags.conf.tmpl +7 -0
- package/dot_config/btop/btop.conf +16 -0
- package/dot_config/btop/themes/tokyonight.theme +34 -0
- package/dot_config/bun/bunfig.toml.tmpl +33 -0
- package/dot_config/claude/mcp_servers.json +20 -0
- package/dot_config/containers/containers.conf +14 -0
- package/dot_config/curl/dot_curlrc +18 -0
- package/dot_config/dlv/config.yml +39 -0
- package/dot_config/docker/config.json +15 -0
- package/dot_config/dotfiles/agent-card.json +29 -0
- package/dot_config/dotfiles/agent-profiles.json +92 -0
- package/dot_config/dotfiles/boot/README.md +11 -0
- package/dot_config/dotfiles/grub/README.md +11 -0
- package/dot_config/dotfiles/lock/README.md +11 -0
- package/dot_config/dotfiles/mcp-lock.json +33 -0
- package/dot_config/dotfiles/mcp-policy.json +52 -0
- package/dot_config/dotfiles/mcp-registry.json +47 -0
- package/dot_config/dotfiles/model-registry.json +20 -0
- package/dot_config/dotfiles/policy-bundles.json +38 -0
- package/dot_config/dotfiles/prompt-registry.json +16 -0
- package/dot_config/dotfiles/versions.env +18 -0
- package/dot_config/duf/duf.conf +6 -0
- package/dot_config/duti/defaults.duti +5 -0
- package/dot_config/emoji/emoji.txt +34 -0
- package/dot_config/environment.d/50-ssh-agent.conf +2 -0
- package/dot_config/environment.d/90-wayland.conf +19 -0
- package/dot_config/fastfetch/config.jsonc +28 -0
- package/dot_config/firefox/user.js.tmpl +58 -0
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
- package/dot_config/fish/completions/dot.fish.tmpl +115 -0
- package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
- package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
- package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
- package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
- package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
- package/dot_config/fish/config.fish.tmpl +44 -0
- package/dot_config/fish/fish_plugins +1 -0
- package/dot_config/fish/functions/_.fish +3 -0
- package/dot_config/fish/functions/_cached_eval.fish +58 -0
- package/dot_config/fish/functions/als.fish +46 -0
- package/dot_config/fish/functions/bg-upgrade.fish +7 -0
- package/dot_config/fish/functions/c.fish +3 -0
- package/dot_config/fish/functions/cat.fish +9 -0
- package/dot_config/fish/functions/d.fish +7 -0
- package/dot_config/fish/functions/dot.fish +34 -0
- package/dot_config/fish/functions/h.fish +3 -0
- package/dot_config/fish/functions/l.fish +7 -0
- package/dot_config/fish/functions/la.fish +7 -0
- package/dot_config/fish/functions/ll.fish +7 -0
- package/dot_config/fish/functions/log_error.fish +13 -0
- package/dot_config/fish/functions/log_info.fish +13 -0
- package/dot_config/fish/functions/lr.fish +7 -0
- package/dot_config/fish/functions/lra.fish +7 -0
- package/dot_config/fish/functions/ls.fish +7 -0
- package/dot_config/fish/functions/lt.fish +7 -0
- package/dot_config/fish/functions/lta.fish +7 -0
- package/dot_config/fish/functions/notify-run.fish +11 -0
- package/dot_config/fish/functions/q.fish +3 -0
- package/dot_config/fish/functions/silent-run.fish +7 -0
- package/dot_config/fish/functions/yy.fish +8 -0
- package/dot_config/flatpak/flatpak.list +4 -0
- package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
- package/dot_config/foot/foot.ini.tmpl +33 -0
- package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
- package/dot_config/fzf/fzf.zsh +48 -0
- package/dot_config/gem/gemrc +9 -0
- package/dot_config/gh/config.yml +12 -0
- package/dot_config/ghostty/config.tmpl +165 -0
- package/dot_config/git/allowed_signers.tmpl +18 -0
- package/dot_config/git/attributes +12 -0
- package/dot_config/git/commit-template +10 -0
- package/dot_config/git/ignore +27 -0
- package/dot_config/gnupg/gpg-agent.conf +11 -0
- package/dot_config/go/golangci.yml +118 -0
- package/dot_config/go/gopls.json +30 -0
- package/dot_config/goose/config.yaml +29 -0
- package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
- package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
- package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
- package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
- package/dot_config/htop/htoprc +20 -0
- package/dot_config/inputrc +2 -0
- package/dot_config/ipython/profile_default/ipython_config.py +19 -0
- package/dot_config/just/justfile +122 -0
- package/dot_config/k9s/config.yaml +65 -0
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
- package/dot_config/kanshi/config.tmpl +22 -0
- package/dot_config/karabiner/karabiner.json +14 -0
- package/dot_config/kitty/kitty.conf.tmpl +53 -0
- package/dot_config/lazydocker/config.yml +186 -0
- package/dot_config/lazygit/config.yml +35 -0
- package/dot_config/mako/config +47 -0
- package/dot_config/mas/masapps.txt +5 -0
- package/dot_config/micro/settings.json +3 -0
- package/dot_config/mimeapps.list +77 -0
- package/dot_config/minikube/config.json +13 -0
- package/dot_config/mise/config.toml +99 -0
- package/dot_config/mongosh/mongoshrc.js +68 -0
- package/dot_config/mpv/input.conf +47 -0
- package/dot_config/mpv/mpv.conf +47 -0
- package/dot_config/mycli/myclirc +67 -0
- package/dot_config/nano/nanorc +28 -0
- package/dot_config/ncdu/config +12 -0
- package/dot_config/niri/config.kdl.tmpl +327 -0
- package/dot_config/nushell/aliases.nu +18 -0
- package/dot_config/nushell/completions.nu.tmpl +52 -0
- package/dot_config/nushell/config.nu.tmpl +86 -0
- package/dot_config/nushell/env.nu.tmpl +94 -0
- package/dot_config/nushell/functions.nu.tmpl +17 -0
- package/dot_config/nvim/init.lua +18 -0
- package/dot_config/nvim/lazy-lock.json +58 -0
- package/dot_config/nvim/lua/config/autocmds.lua +107 -0
- package/dot_config/nvim/lua/config/keymaps.lua +92 -0
- package/dot_config/nvim/lua/config/lazy.lua +44 -0
- package/dot_config/nvim/lua/config/options.lua +49 -0
- package/dot_config/nvim/lua/plugins/ai.lua +75 -0
- package/dot_config/nvim/lua/plugins/coding.lua +216 -0
- package/dot_config/nvim/lua/plugins/completion.lua +60 -0
- package/dot_config/nvim/lua/plugins/dap.lua +412 -0
- package/dot_config/nvim/lua/plugins/editor.lua +55 -0
- package/dot_config/nvim/lua/plugins/git.lua +10 -0
- package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
- package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
- package/dot_config/nvim/lua/plugins/rust.lua +34 -0
- package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
- package/dot_config/nvim/lua/plugins/ui.lua +509 -0
- package/dot_config/paru/paru.conf +10 -0
- package/dot_config/pip/pip.conf.tmpl +32 -0
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
- package/dot_config/pueue/pueue.yml +34 -0
- package/dot_config/pypoetry/config.toml +6 -0
- package/dot_config/pyrightconfig.json +5 -0
- package/dot_config/raycast/README.md +13 -0
- package/dot_config/redis/redisclirc +41 -0
- package/dot_config/ripgrep/ripgreprc +21 -0
- package/dot_config/shell/00-core-paths.sh.tmpl +133 -0
- package/dot_config/shell/05-core-safety.sh +47 -0
- package/dot_config/shell/10-secrets.sh +40 -0
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
- package/dot_config/shell/40-ls-colors.sh +48 -0
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
- package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
- package/dot_config/shell/90-ux-aliases.sh.tmpl +120 -0
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +54 -0
- package/dot_config/shell/Brewfile +207 -0
- package/dot_config/shell/Brewfile.cask +92 -0
- package/dot_config/shell/Brewfile.cli +127 -0
- package/dot_config/shell/README.md +267 -0
- package/dot_config/shell/als_data.txt.tmpl +65 -0
- package/dot_config/shell/custom/auto_ls.zsh +20 -0
- package/dot_config/shell/custom/context_suggest.zsh +68 -0
- package/dot_config/shell/custom/error_analysis.zsh +45 -0
- package/dot_config/sops/dot_sops.yaml +23 -0
- package/dot_config/starship.toml.tmpl +202 -0
- package/dot_config/swaylock/config +43 -0
- package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
- package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
- package/dot_config/systemd/user/pueued.service +12 -0
- package/dot_config/systemd/user/ssh-agent.service +12 -0
- package/dot_config/task/Taskfile.yml +86 -0
- package/dot_config/tflint/tflint.hcl +9 -0
- package/dot_config/tmux/tmux.conf.tmpl +223 -0
- package/dot_config/topgrade.toml.tmpl +54 -0
- package/dot_config/user-dirs.dirs +9 -0
- package/dot_config/vscode/extensions.txt +11 -0
- package/dot_config/vscode/settings.json.tmpl +82 -0
- package/dot_config/waybar/config.jsonc.tmpl +90 -0
- package/dot_config/waybar/style.css.tmpl +211 -0
- package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
- package/dot_config/wget/wgetrc +12 -0
- package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
- package/dot_config/yarn/yarnrc.yml +36 -0
- package/dot_config/yazi/keymap.toml +67 -0
- package/dot_config/yazi/theme.toml +102 -0
- package/dot_config/yazi/yazi.toml +40 -0
- package/dot_config/zathura/zathurarc +52 -0
- package/dot_config/zellij/config.kdl.tmpl +79 -0
- package/dot_config/zsh/dot_zprofile +7 -0
- package/dot_config/zsh/dot_zshenv +5 -0
- package/dot_config/zsh/dot_zshrc.tmpl +498 -0
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
- package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +194 -0
- package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
- package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
- package/dot_local/bin/executable_ai-update +195 -0
- package/dot_local/bin/executable_ai_core +152 -0
- package/dot_local/bin/executable_antigravity +11 -0
- package/dot_local/bin/executable_b64 +84 -0
- package/dot_local/bin/executable_bm +77 -0
- package/dot_local/bin/executable_cb +39 -0
- package/dot_local/bin/executable_dot +589 -0
- package/dot_local/bin/executable_dot-ai +36 -0
- package/dot_local/bin/executable_dot-bootstrap +77 -0
- package/dot_local/bin/executable_dot-launch-or-focus +52 -0
- package/dot_local/bin/executable_dot-load-benchmark +31 -0
- package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
- package/dot_local/bin/executable_dot-theme-sync +952 -0
- package/dot_local/bin/executable_dot_completion +57 -0
- package/dot_local/bin/executable_dtags +28 -0
- package/dot_local/bin/executable_epoch +67 -0
- package/dot_local/bin/executable_extract +41 -0
- package/dot_local/bin/executable_gbd +52 -0
- package/dot_local/bin/executable_gd +42 -0
- package/dot_local/bin/executable_git-ai-commit +175 -0
- package/dot_local/bin/executable_git-ai-diff +169 -0
- package/dot_local/bin/executable_gl +101 -0
- package/dot_local/bin/executable_hash +161 -0
- package/dot_local/bin/executable_hashsum +160 -0
- package/dot_local/bin/executable_hex +115 -0
- package/dot_local/bin/executable_jsonv +78 -0
- package/dot_local/bin/executable_jwt +94 -0
- package/dot_local/bin/executable_kill-port +75 -0
- package/dot_local/bin/executable_lorem +118 -0
- package/dot_local/bin/executable_mkscript +35 -0
- package/dot_local/bin/executable_monitor +56 -0
- package/dot_local/bin/executable_myip +51 -0
- package/dot_local/bin/executable_notify +22 -0
- package/dot_local/bin/executable_open +36 -0
- package/dot_local/bin/executable_pw +27 -0
- package/dot_local/bin/executable_rec-start +46 -0
- package/dot_local/bin/executable_rec-stop +35 -0
- package/dot_local/bin/executable_regex +132 -0
- package/dot_local/bin/executable_start-niri +8 -0
- package/dot_local/bin/executable_tmux-sessionizer +314 -0
- package/dot_local/bin/executable_tour +175 -0
- package/dot_local/bin/executable_up +21 -0
- package/dot_local/bin/executable_update +142 -0
- package/dot_local/bin/executable_uuid +87 -0
- package/dot_local/bin/executable_win +32 -0
- package/dot_local/bin/executable_yamlv +57 -0
- package/dot_local/share/bash-completion/completions/dot +72 -0
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +149 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +283 -0
- package/install.sh +342 -0
- package/package.json +1 -1
- package/scripts/ci/check-copyright-headers.sh +96 -0
- package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
- package/scripts/ci/install-chezmoi-verified.sh +64 -0
- package/scripts/ci/validate-ci-config.sh +224 -0
- package/scripts/demo/record.sh +42 -0
- package/scripts/diagnostics/a2a-conformance.sh +162 -0
- package/scripts/diagnostics/alias-governance.sh +137 -0
- package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
- package/scripts/diagnostics/aliases-manifest.sh +31 -0
- package/scripts/diagnostics/benchmark.sh +381 -0
- package/scripts/diagnostics/conflicts.sh +72 -0
- package/scripts/diagnostics/doctor-unified.sh +38 -0
- package/scripts/diagnostics/doctor.sh +541 -0
- package/scripts/diagnostics/drift-dashboard.sh +37 -0
- package/scripts/diagnostics/health.sh +597 -0
- package/scripts/diagnostics/history-analysis.sh +85 -0
- package/scripts/diagnostics/mcp-doctor.sh +575 -0
- package/scripts/diagnostics/perf.sh +225 -0
- package/scripts/diagnostics/scorecard.sh +118 -0
- package/scripts/diagnostics/secret-governance.sh +58 -0
- package/scripts/diagnostics/security-score.sh +438 -0
- package/scripts/diagnostics/smoke-test.sh +87 -0
- package/scripts/diagnostics/snapshot.sh +89 -0
- package/scripts/diagnostics/verify.sh +107 -0
- package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
- package/scripts/diagnostics/version-locks.sh +79 -0
- package/scripts/diagnostics/workstation-attestation.sh +181 -0
- package/scripts/docs/build-manual.sh +883 -0
- package/scripts/docs/check-manual.sh +213 -0
- package/scripts/dot/commands/agent.sh +465 -0
- package/scripts/dot/commands/ai.sh +416 -0
- package/scripts/dot/commands/aliases.sh +250 -0
- package/scripts/dot/commands/appearance.sh +80 -0
- package/scripts/dot/commands/core.sh +185 -0
- package/scripts/dot/commands/diagnostics.sh +229 -0
- package/scripts/dot/commands/fleet.sh +399 -0
- package/scripts/dot/commands/lint.sh +177 -0
- package/scripts/dot/commands/manual.sh +168 -0
- package/scripts/dot/commands/meta.sh +248 -0
- package/scripts/dot/commands/patterns.sh +54 -0
- package/scripts/dot/commands/restore.sh +231 -0
- package/scripts/dot/commands/secrets.sh +223 -0
- package/scripts/dot/commands/security.sh +76 -0
- package/scripts/dot/commands/tools.sh +469 -0
- package/scripts/dot/data/alias-deprecations.tsv +2 -0
- package/scripts/dot/lib/bento.sh +49 -0
- package/scripts/dot/lib/log.sh +194 -0
- package/scripts/dot/lib/platform.sh +98 -0
- package/scripts/dot/lib/ui.sh +507 -0
- package/scripts/dot/lib/utils.sh +372 -0
- package/scripts/fonts/install-nerd-fonts.sh +68 -0
- package/scripts/fonts/patch-fonts.sh +35 -0
- package/scripts/git-hooks/install.sh +11 -0
- package/scripts/git-hooks/pre-commit +12 -0
- package/scripts/git-hooks/pre-commit-audit.sh +145 -0
- package/scripts/git-hooks/pre-push +29 -0
- package/scripts/git-hooks/prepare-commit-msg +29 -0
- package/scripts/lib/secrets_provider.sh +158 -0
- package/scripts/maintenance/check-updates.sh +131 -0
- package/scripts/ops/ai-setup.sh +55 -0
- package/scripts/ops/bundle.sh +77 -0
- package/scripts/ops/chaos.sh +49 -0
- package/scripts/ops/chezmoi-apply.sh +270 -0
- package/scripts/ops/chezmoi-diff.sh +15 -0
- package/scripts/ops/chezmoi-remove.sh +45 -0
- package/scripts/ops/chezmoi-update.sh +48 -0
- package/scripts/ops/heal-chezmoi.sh +51 -0
- package/scripts/ops/heal-system.sh +128 -0
- package/scripts/ops/heal-tools.sh +340 -0
- package/scripts/ops/heal.sh +222 -0
- package/scripts/ops/post-apply-repair.sh +106 -0
- package/scripts/ops/prewarm.sh +127 -0
- package/scripts/ops/release.sh +252 -0
- package/scripts/ops/rollback.sh +589 -0
- package/scripts/ops/setup.sh +137 -0
- package/scripts/ops/teleport.sh +33 -0
- package/scripts/qa/coverage-baseline.sh +60 -0
- package/scripts/qa/docs-coverage.sh +111 -0
- package/scripts/qa/reliability-audit.sh +138 -0
- package/scripts/qa/traceability-coverage.sh +116 -0
- package/scripts/qa/validate-examples.sh +26 -0
- package/scripts/qa/wsl-contract.sh +11 -0
- package/scripts/release/package-policy-bundles.sh +125 -0
- package/scripts/secrets/age-init.sh +70 -0
- package/scripts/secrets/create-secrets-file.sh +45 -0
- package/scripts/secrets/encrypt-ssh-key.sh +43 -0
- package/scripts/security/backup.sh +57 -0
- package/scripts/security/dns-doh.sh +51 -0
- package/scripts/security/encryption-check.sh +54 -0
- package/scripts/security/enforce-policies.sh +334 -0
- package/scripts/security/firewall.sh +90 -0
- package/scripts/security/lock-configs.sh +57 -0
- package/scripts/security/lock-screen.sh +55 -0
- package/scripts/security/manage-secrets.sh +428 -0
- package/scripts/security/ssh-cert.sh +203 -0
- package/scripts/security/telemetry-kill.sh +50 -0
- package/scripts/security/usb-safety.sh +51 -0
- package/scripts/theme/apply-gnome-theme.sh +328 -0
- package/scripts/theme/extract-theme.py +677 -0
- package/scripts/theme/install-boot-logo.sh +62 -0
- package/scripts/theme/install-catppuccin-themes.sh +370 -0
- package/scripts/theme/install-cursors.sh +25 -0
- package/scripts/theme/install-file-icons.sh +26 -0
- package/scripts/theme/install-grub-theme.sh +61 -0
- package/scripts/theme/install-lock-icon.sh +30 -0
- package/scripts/theme/merge-wallpaper.sh +141 -0
- package/scripts/theme/rebuild-themes.sh +309 -0
- package/scripts/theme/switch.sh +421 -0
- package/scripts/theme/wallpaper-rotate.sh +136 -0
- package/scripts/theme/wallpaper-sync.sh +397 -0
- package/scripts/tools/cmatrix.sh +21 -0
- package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
- package/scripts/tools/emoji-picker.sh +48 -0
- package/scripts/tools/figlet-banner.sh +18 -0
- package/scripts/tools/log-rotate.sh +30 -0
- package/scripts/tools/lolcat-wrap.sh +19 -0
- package/scripts/tools/pipes.sh +48 -0
- package/scripts/tuning/linux.sh +185 -0
- package/scripts/tuning/macos.sh +55 -0
- package/scripts/uninstall.sh +85 -0
- package/scripts/version-sync.sh +487 -0
- package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
- package/templates/chezmoi-data/mac-m1.toml.example +16 -0
- package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
- package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
- package/templates/projects/go/.github/workflows/ci.yml +31 -0
- package/templates/projects/go/README.md +4 -0
- package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
- package/templates/projects/go/go.sum +0 -0
- package/templates/projects/molecule/README.md +7 -0
- package/templates/projects/molecule/converge.yml +7 -0
- package/templates/projects/molecule/molecule.yml +16 -0
- package/templates/projects/node/.github/workflows/ci.yml +30 -0
- package/templates/projects/node/README.md +4 -0
- package/templates/projects/node/package-lock.json +12 -0
- package/templates/projects/node/src/index.js +1 -0
- package/templates/projects/packer/README.md +15 -0
- package/templates/projects/packer/main.pkr.hcl +15 -0
- package/templates/projects/python/.github/workflows/ci.yml +34 -0
- package/templates/projects/python/README.md +4 -0
- package/templates/projects/python/pyproject.toml +15 -0
- package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
- package/templates/projects/python/tests/test_basic.py +1 -0
- package/docs/ARCHITECTURE.md +0 -62
- package/docs/COMPLIANCE.md +0 -47
- package/docs/OPERATIONS.md +0 -103
- package/docs/PR_DESCRIPTION.md +0 -150
- package/docs/ROADMAP_legacy.md +0 -556
- package/docs/SECURITY_CHECKLIST.md +0 -25
- package/docs/TASK.md +0 -99
- package/docs/WALKTHROUGH.md +0 -46
- package/scripts/backup.sh +0 -142
- package/scripts/banner.sh +0 -20
- package/scripts/benchmark.sh +0 -20
- package/scripts/build.sh +0 -41
- package/scripts/clean.sh +0 -31
- package/scripts/compile.sh +0 -54
- package/scripts/copy.sh +0 -108
- package/scripts/doctor.sh +0 -79
- package/scripts/dotfiles.sh +0 -63
- package/scripts/download.sh +0 -35
- package/scripts/help.sh +0 -57
- package/scripts/lock-configs.sh +0 -57
- package/scripts/package.sh +0 -46
- package/scripts/ssh.sh +0 -55
- package/scripts/teleport.sh +0 -23
- package/scripts/test-aliases.sh +0 -25
- package/scripts/test_smoke.sh +0 -88
- package/scripts/unpack.sh +0 -28
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# shellcheck disable=SC2034
|
|
3
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
# Dotfiles CLI Entry Point - v0.2.500
|
|
7
|
+
|
|
8
|
+
# Ensure XDG Base Directory variables are set
|
|
9
|
+
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
10
|
+
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
|
|
11
|
+
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
|
12
|
+
export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
|
|
13
|
+
|
|
14
|
+
# Ensure PIPX paths are set
|
|
15
|
+
export PIPX_HOME="${XDG_DATA_HOME}/pipx"
|
|
16
|
+
export PIPX_BIN_DIR="${HOME}/.local/bin"
|
|
17
|
+
|
|
18
|
+
# Ensure Nix is in PATH if installed
|
|
19
|
+
if [ -e "${HOME}/.nix-profile/etc/profile.d/nix.sh" ]; then
|
|
20
|
+
# shellcheck disable=SC1091
|
|
21
|
+
. "${HOME}/.nix-profile/etc/profile.d/nix.sh"
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
VERSION="0.2.500"
|
|
25
|
+
|
|
26
|
+
COMMAND="${1:-}"
|
|
27
|
+
if [ -n "${1:-}" ]; then
|
|
28
|
+
shift
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Resolve source directory (needed early for ui.sh sourcing)
|
|
32
|
+
_resolve_source_dir() {
|
|
33
|
+
local dir=""
|
|
34
|
+
local script_path=""
|
|
35
|
+
local script_dir=""
|
|
36
|
+
local repo_candidate=""
|
|
37
|
+
|
|
38
|
+
if script_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd 2>/dev/null)"; then
|
|
39
|
+
script_dir="$script_path"
|
|
40
|
+
repo_candidate="$(cd "$script_dir/../.." && pwd 2>/dev/null || true)"
|
|
41
|
+
if [ -n "$repo_candidate" ] && [ -f "$repo_candidate/scripts/dot/lib/ui.sh" ]; then
|
|
42
|
+
dir="$repo_candidate"
|
|
43
|
+
fi
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
if [ -z "$dir" ] && [ -n "${CHEZMOI_SOURCE_DIR:-}" ] && [ -d "$CHEZMOI_SOURCE_DIR" ]; then
|
|
47
|
+
dir="$CHEZMOI_SOURCE_DIR"
|
|
48
|
+
elif [ -z "$dir" ] && [ -d "$HOME/.dotfiles" ]; then
|
|
49
|
+
dir="$HOME/.dotfiles"
|
|
50
|
+
elif [ -z "$dir" ] && [ -d "$HOME/.local/share/chezmoi" ]; then
|
|
51
|
+
dir="$HOME/.local/share/chezmoi"
|
|
52
|
+
elif [ -z "$dir" ] && [ -f "package.json" ] && grep -q '"name": "dotfiles"' package.json 2>/dev/null; then
|
|
53
|
+
dir="$(pwd)"
|
|
54
|
+
fi
|
|
55
|
+
echo "$dir"
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
# Source shared UI library for consistent colors, checkmarks, and formatting.
|
|
59
|
+
# Falls back to minimal inline definitions if the source directory is unavailable.
|
|
60
|
+
_DOT_SRC="$(_resolve_source_dir)"
|
|
61
|
+
if [ -n "$_DOT_SRC" ] && [ -f "$_DOT_SRC/scripts/dot/lib/ui.sh" ]; then
|
|
62
|
+
# shellcheck source=../../scripts/dot/lib/ui.sh
|
|
63
|
+
# shellcheck disable=SC1091
|
|
64
|
+
source "$_DOT_SRC/scripts/dot/lib/ui.sh"
|
|
65
|
+
ui_init
|
|
66
|
+
else
|
|
67
|
+
# Minimal fallback when source dir is not available (e.g. first install)
|
|
68
|
+
# shellcheck disable=SC2034
|
|
69
|
+
UI_COLOR=0
|
|
70
|
+
BOLD=""
|
|
71
|
+
NORMAL=""
|
|
72
|
+
RED=""
|
|
73
|
+
GREEN=""
|
|
74
|
+
YELLOW=""
|
|
75
|
+
BLUE=""
|
|
76
|
+
CYAN=""
|
|
77
|
+
GRAY=""
|
|
78
|
+
MAGENTA=""
|
|
79
|
+
ui_init() {
|
|
80
|
+
if [[ -t 1 ]] && [[ -z "${NO_COLOR:-}" ]]; then
|
|
81
|
+
UI_COLOR=1
|
|
82
|
+
BASH_BOLD=$'\033[1m'
|
|
83
|
+
NORMAL=$'\033[0m'
|
|
84
|
+
RED=$'\033[38;5;196m'
|
|
85
|
+
GREEN=$'\033[38;5;42m'
|
|
86
|
+
YELLOW=$'\033[38;5;214m'
|
|
87
|
+
BLUE=$'\033[38;5;63m'
|
|
88
|
+
CYAN=$'\033[38;5;81m'
|
|
89
|
+
GRAY=$'\033[38;5;244m'
|
|
90
|
+
MAGENTA=$'\033[38;5;211m'
|
|
91
|
+
fi
|
|
92
|
+
}
|
|
93
|
+
ui_header() {
|
|
94
|
+
ui_init
|
|
95
|
+
printf "\n %s%s%s\n\n" "${BOLD}${BLUE}" "$1" "$NORMAL"
|
|
96
|
+
}
|
|
97
|
+
ui_section() {
|
|
98
|
+
ui_init
|
|
99
|
+
printf " %s%s%s\n" "${BOLD}${CYAN}" "$1" "$NORMAL"
|
|
100
|
+
}
|
|
101
|
+
ui_cmd() {
|
|
102
|
+
ui_init
|
|
103
|
+
printf " %s•%s %s%-16s%s %s\n" "$GREEN" "$NORMAL" "$GREEN" "$1" "$NORMAL" "$2"
|
|
104
|
+
}
|
|
105
|
+
ui_ok() {
|
|
106
|
+
ui_init
|
|
107
|
+
printf " %s✓%s %-35s %s\n" "$GREEN" "$NORMAL" "$1" "${2:-}"
|
|
108
|
+
}
|
|
109
|
+
ui_info() {
|
|
110
|
+
ui_init
|
|
111
|
+
printf " %s•%s %-35s %s\n" "$GRAY" "$NORMAL" "$1" "${2:-}"
|
|
112
|
+
}
|
|
113
|
+
ui_meta() {
|
|
114
|
+
ui_init
|
|
115
|
+
printf " %s•%s %-14s %s\n" "$GRAY" "$NORMAL" "$1" "${2:-}"
|
|
116
|
+
}
|
|
117
|
+
ui_kv() {
|
|
118
|
+
ui_init
|
|
119
|
+
printf " %s%-14s%s %s\n" "$BOLD" "$1" "$NORMAL" "$2"
|
|
120
|
+
}
|
|
121
|
+
ui_warn() {
|
|
122
|
+
ui_init
|
|
123
|
+
printf " %s⚠%s %-35s %s\n" "$YELLOW" "$NORMAL" "$1" "${2:-}"
|
|
124
|
+
}
|
|
125
|
+
ui_err() {
|
|
126
|
+
ui_init
|
|
127
|
+
printf " %s✗%s %-35s %s\n" "$RED" "$NORMAL" "$1" "${2:-}" >&2
|
|
128
|
+
}
|
|
129
|
+
ui_clear_line() { printf '\r\033[K'; }
|
|
130
|
+
ui_toast() { case "$1" in success | ok) ui_ok "$2" ;; error | err) ui_err "$2" ;; warn) ui_warn "$2" ;; *) ui_info "$2" ;; esac }
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
# Alias ui_fail → ui_err for backward compatibility in this script
|
|
134
|
+
ui_fail() { ui_err "$@"; }
|
|
135
|
+
|
|
136
|
+
ui_dot_banner() {
|
|
137
|
+
local section="${1:-Dot}"
|
|
138
|
+
if declare -F ui_product_banner >/dev/null 2>&1; then
|
|
139
|
+
ui_product_banner "Dot • $section"
|
|
140
|
+
return 0
|
|
141
|
+
fi
|
|
142
|
+
if declare -F ui_logo_dot >/dev/null 2>&1; then
|
|
143
|
+
ui_logo_dot "Dot • $section"
|
|
144
|
+
fi
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
show_version() {
|
|
148
|
+
ui_dot_banner "Reference"
|
|
149
|
+
ui_header "Dotfiles Version"
|
|
150
|
+
echo ""
|
|
151
|
+
ui_ok "Version" ".dotfiles $VERSION"
|
|
152
|
+
if [[ -n "$_DOT_SRC" ]]; then
|
|
153
|
+
ui_ok "Source" "$_DOT_SRC"
|
|
154
|
+
fi
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
_dot_help_overview_specs() {
|
|
158
|
+
cat <<'EOF'
|
|
159
|
+
Start Here|sync|Apply dotfiles to this machine.|Use after clone or after changes.
|
|
160
|
+
Start Here|doctor|Check the environment and surface issues.|Use when something feels off.
|
|
161
|
+
Start Here|learn|Open the guided tour.|Best first stop for new users.
|
|
162
|
+
Start Here|help|Show the overview or help for one command.|Use `dot help <command>` for detail.
|
|
163
|
+
Daily Use|status|Show local drift.|See what changed since the last apply.
|
|
164
|
+
Daily Use|diff|Preview pending changes.|Safe way to inspect before applying.
|
|
165
|
+
Daily Use|edit|Open the source directory.|Use the configured editor.
|
|
166
|
+
Daily Use|upgrade|Update tools and dotfiles.|Runs the managed upgrade path.
|
|
167
|
+
Inspect and Repair|doctor|Run the main health check.|Supports deeper audit flags.
|
|
168
|
+
Inspect and Repair|attest|Export workstation evidence.|Use `--json|-j`, `--write|-w`, or `--fleet-store|-F`.
|
|
169
|
+
Inspect and Repair|rollback|Return to a previous state.|Use after a broken change.
|
|
170
|
+
Inspect and Repair|lint|Check shell script quality.|Supports `--check|-c` and `--fix|-f`.
|
|
171
|
+
AI and Agents|ai|Show installed AI tools.|Launches the AI status view.
|
|
172
|
+
AI and Agents|mcp|Inspect MCP policy and registry.|Supports `--strict|-s` and `--json|-j`.
|
|
173
|
+
AI and Agents|mode|Show or set the agent profile.|Profiles: ask, plan, apply, audit.
|
|
174
|
+
AI and Agents|agent|Show agent metadata, logs, checkpoints, and conformance.|Use for card, log, checkpoint, and conformance.
|
|
175
|
+
Fleet|fleet|Show fleet node status, drift, and namespace.|Enterprise fleet management.
|
|
176
|
+
Configuration|env|Show managed tool versions.|Backed by mise.
|
|
177
|
+
Configuration|profile|Show or switch the active profile.|Use for machine-specific behavior.
|
|
178
|
+
Configuration|secrets|Edit or manage encrypted secrets.|Subcommands cover set, get, list, load.
|
|
179
|
+
Configuration|theme|Switch the terminal theme.|Light or dark.
|
|
180
|
+
Reference|search|Find commands by keyword.|Example: `dot search security`.
|
|
181
|
+
Reference|help all|Show the full command reference.|Lists every public command.
|
|
182
|
+
Reference|version|Show version information.|Matches `dot --version`.
|
|
183
|
+
EOF
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
_dot_help_specs() {
|
|
187
|
+
cat <<'EOF'
|
|
188
|
+
Core|sync|Apply dotfiles (alias for apply; --pull to fetch, --check to preview)|Use after clone or after changes.
|
|
189
|
+
Core|add|Add a file to chezmoi source|Start managing a file in the source tree.
|
|
190
|
+
Core|diff|Show chezmoi diff with exclusions|Preview pending changes before apply.
|
|
191
|
+
Core|status|Show configuration drift (chezmoi status)|Inspect the current managed state.
|
|
192
|
+
Core|edit|Open chezmoi source in $EDITOR|Jump into the source tree quickly.
|
|
193
|
+
Core|cd|Print source directory path (use: cd $(dot cd))|Useful in shell scripts and jump helpers.
|
|
194
|
+
Core|commit|AI-powered conventional commit|Wraps the commit helper flow.
|
|
195
|
+
Diagnostics|doctor|Deep audit: tools, paths, portability, AI analysis (--ai|-A)|Main health and repair entrypoint.
|
|
196
|
+
Diagnostics|attest|Export workstation attestation evidence (--json|-j, --write|-w, --fleet-store|-F)|Produce machine-readable evidence.
|
|
197
|
+
Diagnostics|score|System health and security scorecard|Quick high-level readout.
|
|
198
|
+
Diagnostics|snapshot|Capture baseline system snapshot|Use before larger changes.
|
|
199
|
+
Diagnostics|chaos|Simulate config corruption to test self-healing|Advanced validation path.
|
|
200
|
+
Diagnostics|bundle|Create offline archive of dotfiles environment|Portable support artifact.
|
|
201
|
+
Diagnostics|rollback|Rollback dotfiles to a previous state|Use after a bad apply.
|
|
202
|
+
Diagnostics|history|Shell history analysis|Inspect command usage patterns.
|
|
203
|
+
Diagnostics|perf|Show performance mode and quick timing|Startup and shell timing surface.
|
|
204
|
+
Diagnostics|metrics|Show recent observability metrics (JSONL)|Recent runtime events and counters.
|
|
205
|
+
Diagnostics|load-bench|Measure time to heavy-layer readiness|Performance benchmarking helper.
|
|
206
|
+
AI|ai|AI CLI status & launcher|Overview of installed AI tools.
|
|
207
|
+
AI|ai-setup|Interactive setup for all AI CLI tools|Initial AI tool bootstrap.
|
|
208
|
+
AI|ai-query|Context-aware RAG query over your dotfiles|Ask questions over the repo state.
|
|
209
|
+
AI|mcp|Inspect MCP policy, supply chain, and registry|Governance and validation surface.
|
|
210
|
+
AI|mode|Set or inspect agent operating profiles (ask/plan/apply/audit)|Bounded-autonomy controls.
|
|
211
|
+
AI|agent|Profile-aware execution, agent card, a2a-card, session log, checkpoints, and conformance|Agent metadata and local audit trail.
|
|
212
|
+
AI|cl|Claude CLI with context patterns|Context-aware Anthropic bridge.
|
|
213
|
+
AI|copilot|GitHub Copilot CLI with context patterns|Context-aware Copilot bridge.
|
|
214
|
+
AI|gemini|Gemini CLI with context patterns|Context-aware Gemini bridge.
|
|
215
|
+
AI|kiro|Kiro CLI with context patterns|Context-aware Kiro bridge.
|
|
216
|
+
AI|sgpt|Shell-GPT with context patterns|Context-aware Shell-GPT bridge.
|
|
217
|
+
AI|ollama|Ollama with context patterns|Context-aware local-model bridge.
|
|
218
|
+
AI|opencode|OpenCode with context patterns|Context-aware OpenCode bridge.
|
|
219
|
+
AI|aider|Aider with context patterns|Context-aware Aider bridge.
|
|
220
|
+
Tools|env|Tool versions (mise)|Managed runtime versions.
|
|
221
|
+
Tools|profile|Show/switch configuration profile|Profile-specific behavior.
|
|
222
|
+
Tools|keys|Keybindings (sign-check: verify git signing)|Keyboard and signing references.
|
|
223
|
+
Tools|tools|Show or install nix packages|Package helper entrypoint.
|
|
224
|
+
Tools|new|Create a new project from a template|Project scaffold helper.
|
|
225
|
+
Tools|sandbox|Launch a safe sandbox preview (Docker/Podman)|Disposable environment for testing.
|
|
226
|
+
Tools|lint|Lint shell scripts (--fix|-f to auto-format, --check|-c for CI)|Shell quality gate.
|
|
227
|
+
Tools|learn|Start the interactive tour of your new tools|Guided onboarding.
|
|
228
|
+
Tools|docs|Show repo README|Open the main documentation.
|
|
229
|
+
Appearance|theme|Switch terminal theme (dark/light)|Terminal appearance control.
|
|
230
|
+
Appearance|wallpaper|Apply a wallpaper from your library [macOS,Linux]|Desktop customization helper.
|
|
231
|
+
Appearance|fonts|Install Nerd Fonts (JetBrainsMono by default)|Font bootstrap helper.
|
|
232
|
+
Appearance|tune|Apply OS tuning (opt-in) [macOS,Linux]|Host tuning entrypoint.
|
|
233
|
+
Secrets|secrets-init|Initialize age key for secrets|First-time secrets setup.
|
|
234
|
+
Secrets|secrets|Edit encrypted secrets (age)|Primary secrets entrypoint.
|
|
235
|
+
Secrets|secrets-create|Create an encrypted secrets file|Create a new secret payload.
|
|
236
|
+
Secrets|ssh-key|Encrypt an SSH key locally with age|Protect local SSH keys.
|
|
237
|
+
Secrets|ssh-cert|Manage short-lived SSH certificates|SSH certificate workflow.
|
|
238
|
+
Security (opt-in)|backup|Create a compressed backup of your home|Safety copy before risky changes.
|
|
239
|
+
Security (opt-in)|encrypt-check|Check disk encryption status|Host security inspection.
|
|
240
|
+
Security (opt-in)|firewall|Apply firewall hardening [macOS,Linux]|Opt-in host hardening.
|
|
241
|
+
Security (opt-in)|telemetry|Disable OS telemetry [macOS,Linux]|Privacy-focused host control.
|
|
242
|
+
Security (opt-in)|dns-doh|Enable DNS-over-HTTPS [macOS,Linux]|Secure DNS helper.
|
|
243
|
+
Security (opt-in)|lock-screen|Enforce lock screen idle settings [Linux]|Linux workstation hardening.
|
|
244
|
+
Security (opt-in)|usb-safety|Disable automount for removable media [Linux]|Linux removable-media hardening.
|
|
245
|
+
Fleet|fleet|Show fleet node status, drift, and namespace (--json for machine output)|Fleet management surface.
|
|
246
|
+
Fleet|fleet drift|Check for configuration drift across managed files|Drift detection and reporting.
|
|
247
|
+
Fleet|fleet namespace|Show or set the active namespace for multi-tenant isolation|Namespace management.
|
|
248
|
+
Fleet|fleet events|Show recent fleet events from local event log|Fleet observability.
|
|
249
|
+
Meta|upgrade|Update system toolchains, plugins, and dotfiles|Managed upgrade flow.
|
|
250
|
+
Meta|packages|List installed packages and package managers|Inventory and package surfaces.
|
|
251
|
+
Meta|cache-refresh|Regenerate shell caches for ultra-fast startup|Refresh generated shell state.
|
|
252
|
+
Meta|search|Find commands by keyword|Find the right command quickly.
|
|
253
|
+
Meta|version|Show version information.|Matches `dot --version`.
|
|
254
|
+
Meta|help|Show this help message|Overview or focused command help.
|
|
255
|
+
EOF
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
_dot_help_details() {
|
|
259
|
+
cat <<'EOF'
|
|
260
|
+
sync|Apply the current dotfiles to this machine.|dot sync\ndot sync --check
|
|
261
|
+
add|Start managing a file with chezmoi.|dot add ~/.gitconfig
|
|
262
|
+
diff|Show pending dotfile changes before applying.|dot diff
|
|
263
|
+
status|Show local drift in the managed home state.|dot status
|
|
264
|
+
edit|Open the dotfiles source tree in the configured editor.|dot edit
|
|
265
|
+
upgrade|Run the managed update path for tools and dotfiles.|dot upgrade
|
|
266
|
+
doctor|Inspect shell tools, paths, portability, and health.|dot doctor\ndot doctor --score\ndot doctor -H
|
|
267
|
+
attest|Export workstation attestation evidence.|dot attest\ndot attest --json\ndot attest -F /srv/dotfiles-fleet
|
|
268
|
+
health|Run the health dashboard with optional fixes.|dot health -v\ndot health -j\ndot health -f
|
|
269
|
+
perf|Measure shell performance and emit structured timing.|dot perf -j -r 1\ndot perf -p\ndot perf -t 200
|
|
270
|
+
security-score|Assess workstation security posture.|dot security-score -j\ndot security-score -q
|
|
271
|
+
snapshot|Capture the current workstation snapshot.|dot snapshot -b\ndot snapshot -b -f
|
|
272
|
+
verify|Run post-change verification checks.|dot verify\ndot verify -s
|
|
273
|
+
restore|Restore from a backup or git ref.|dot restore -l\ndot restore -L\ndot restore -g HEAD~1
|
|
274
|
+
rollback|Restore a previous configuration snapshot.|dot rollback
|
|
275
|
+
lint|Run shell quality checks for the repo.|dot lint\ndot lint -c\ndot lint -f
|
|
276
|
+
ai|Show installed AI tools and entrypoints.|dot ai
|
|
277
|
+
mcp|Inspect MCP configuration, policy, and registry.|dot mcp\ndot mcp -s -j\ndot mcp registry
|
|
278
|
+
mode|Inspect or switch the active agent mode.|dot mode list\ndot mode show ask\ndot mode set audit
|
|
279
|
+
agent|Inspect agent metadata or run profile-aware actions.|dot agent card\ndot agent a2a-card --validate\ndot agent checkpoint list\ndot agent conformance --strict --json
|
|
280
|
+
fleet|Show fleet node status, drift, and namespace.|dot fleet\ndot fleet status --json\ndot fleet drift\ndot fleet namespace set engineering
|
|
281
|
+
env|Show managed tool versions and runtime state.|dot env
|
|
282
|
+
profile|Show or switch the active configuration profile.|dot profile
|
|
283
|
+
secrets|Manage encrypted secrets and environment loading.|dot secrets edit\ndot secrets list\ndot secrets load ai
|
|
284
|
+
theme|Switch the terminal theme.|dot theme light\ndot theme dark
|
|
285
|
+
learn|Open the guided tour of the toolchain.|dot learn
|
|
286
|
+
search|Find commands by keyword across the public surface.|dot search ai
|
|
287
|
+
help|Show the overview or a focused command reference.|dot help\ndot help doctor\ndot help all
|
|
288
|
+
--version|Show the installed dotfiles version.|dot --version\ndot version
|
|
289
|
+
version|Show the installed dotfiles version.|dot --version\ndot version
|
|
290
|
+
EOF
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
_dot_help_summary() {
|
|
294
|
+
local command_name="${1:-}"
|
|
295
|
+
awk -F'|' -v command_name="$command_name" '$1 == command_name { print $2; exit }' < <(_dot_help_details)
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
_dot_help_examples() {
|
|
299
|
+
local command_name="${1:-}"
|
|
300
|
+
awk -F'|' -v command_name="$command_name" '$1 == command_name { print $3; exit }' < <(_dot_help_details)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
_dot_command_routes() {
|
|
304
|
+
cat <<'EOF'
|
|
305
|
+
sync|core
|
|
306
|
+
apply|core
|
|
307
|
+
update|core
|
|
308
|
+
add|core
|
|
309
|
+
diff|core
|
|
310
|
+
status|core
|
|
311
|
+
remove|core
|
|
312
|
+
cd|core
|
|
313
|
+
edit|core
|
|
314
|
+
commit|core
|
|
315
|
+
clean-cache|core
|
|
316
|
+
doctor|diagnostics
|
|
317
|
+
scorecard|diagnostics
|
|
318
|
+
score|diagnostics
|
|
319
|
+
snapshot|diagnostics
|
|
320
|
+
history|diagnostics
|
|
321
|
+
perf|diagnostics
|
|
322
|
+
load-bench|diagnostics
|
|
323
|
+
load-bench-pty|diagnostics
|
|
324
|
+
chaos|diagnostics
|
|
325
|
+
bundle|diagnostics
|
|
326
|
+
rollback|diagnostics
|
|
327
|
+
heal|diagnostics
|
|
328
|
+
health|diagnostics
|
|
329
|
+
health-check|diagnostics
|
|
330
|
+
smoke-test|diagnostics
|
|
331
|
+
verify|diagnostics
|
|
332
|
+
attest|diagnostics
|
|
333
|
+
attestation|diagnostics
|
|
334
|
+
security-score|diagnostics
|
|
335
|
+
drift|diagnostics
|
|
336
|
+
benchmark|diagnostics
|
|
337
|
+
intelligence|diagnostics
|
|
338
|
+
conflicts|diagnostics
|
|
339
|
+
locks|diagnostics
|
|
340
|
+
restore|diagnostics
|
|
341
|
+
metrics|diagnostics
|
|
342
|
+
ai|ai
|
|
343
|
+
ai-setup|ai
|
|
344
|
+
ai-query|ai
|
|
345
|
+
cl|ai
|
|
346
|
+
claude|ai
|
|
347
|
+
gemini|ai
|
|
348
|
+
kiro|ai
|
|
349
|
+
sgpt|ai
|
|
350
|
+
ollama|ai
|
|
351
|
+
opencode|ai
|
|
352
|
+
aider|ai
|
|
353
|
+
env|tools
|
|
354
|
+
profile|tools
|
|
355
|
+
tools|tools
|
|
356
|
+
new|tools
|
|
357
|
+
packages|tools
|
|
358
|
+
aliases|tools
|
|
359
|
+
alias-check|tools
|
|
360
|
+
setup|tools
|
|
361
|
+
log-rotate|tools
|
|
362
|
+
lint|tools
|
|
363
|
+
theme|appearance
|
|
364
|
+
wallpaper|appearance
|
|
365
|
+
fonts|appearance
|
|
366
|
+
tune|appearance
|
|
367
|
+
secrets-init|secrets
|
|
368
|
+
secrets|secrets
|
|
369
|
+
secrets-create|secrets
|
|
370
|
+
ssh-key|secrets
|
|
371
|
+
ssh-cert|secrets
|
|
372
|
+
backup|security
|
|
373
|
+
encrypt-check|security
|
|
374
|
+
firewall|security
|
|
375
|
+
telemetry|security
|
|
376
|
+
dns-doh|security
|
|
377
|
+
lock-screen|security
|
|
378
|
+
usb-safety|security
|
|
379
|
+
upgrade|meta
|
|
380
|
+
cache-refresh|meta
|
|
381
|
+
prewarm|meta
|
|
382
|
+
docs|meta
|
|
383
|
+
learn|meta
|
|
384
|
+
keys|meta
|
|
385
|
+
sandbox|meta
|
|
386
|
+
mcp|meta
|
|
387
|
+
mode|meta
|
|
388
|
+
agent|meta
|
|
389
|
+
fleet|fleet
|
|
390
|
+
patterns|patterns
|
|
391
|
+
manual|manual
|
|
392
|
+
search|search
|
|
393
|
+
help|help
|
|
394
|
+
--help|help
|
|
395
|
+
-h|help
|
|
396
|
+
--version|version
|
|
397
|
+
-v|version
|
|
398
|
+
version|version
|
|
399
|
+
EOF
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
_dot_command_route() {
|
|
403
|
+
local command_name="${1:-}"
|
|
404
|
+
if [[ -z "$command_name" ]]; then
|
|
405
|
+
return 1
|
|
406
|
+
fi
|
|
407
|
+
awk -F'|' -v command_name="$command_name" '$1 == command_name { print $2; exit }' < <(_dot_command_routes)
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
show_help_overview() {
|
|
411
|
+
ui_dot_banner "Reference"
|
|
412
|
+
ui_header "Dotfiles"
|
|
413
|
+
ui_meta "Usage" "dot [command]"
|
|
414
|
+
ui_meta "Version" "v$VERSION"
|
|
415
|
+
echo ""
|
|
416
|
+
|
|
417
|
+
ui_info "What it is" "A single command for setting up, checking, and maintaining this shell environment."
|
|
418
|
+
ui_info "Platforms" "macOS, Linux, and WSL"
|
|
419
|
+
ui_info "Start" "Run 'dot sync', then 'dot doctor', then 'dot learn'"
|
|
420
|
+
echo ""
|
|
421
|
+
|
|
422
|
+
local current_section="" section="" command_name="" description="" detail=""
|
|
423
|
+
while IFS='|' read -r section command_name description detail; do
|
|
424
|
+
if [[ "$section" != "$current_section" ]]; then
|
|
425
|
+
if [[ -n "$current_section" ]]; then
|
|
426
|
+
echo ""
|
|
427
|
+
fi
|
|
428
|
+
ui_section "$section"
|
|
429
|
+
current_section="$section"
|
|
430
|
+
fi
|
|
431
|
+
ui_cmd "$command_name" "$description"
|
|
432
|
+
done < <(_dot_help_overview_specs)
|
|
433
|
+
echo ""
|
|
434
|
+
ui_info "Next" "Run 'dot help all' for the full command list"
|
|
435
|
+
ui_info "Detail" "Run 'dot help <command>' for one command"
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
show_help_all() {
|
|
439
|
+
ui_dot_banner "Reference"
|
|
440
|
+
ui_header "Dotfiles Command Reference"
|
|
441
|
+
ui_meta "Usage" "dot [command]"
|
|
442
|
+
ui_meta "Version" "v$VERSION"
|
|
443
|
+
echo ""
|
|
444
|
+
|
|
445
|
+
local current_section="" section="" command_name="" description="" detail=""
|
|
446
|
+
while IFS='|' read -r section command_name description detail; do
|
|
447
|
+
if [[ "$command_name" == "help all" ]]; then
|
|
448
|
+
continue
|
|
449
|
+
fi
|
|
450
|
+
if [[ "$section" != "$current_section" ]]; then
|
|
451
|
+
if [[ -n "$current_section" ]]; then
|
|
452
|
+
echo ""
|
|
453
|
+
fi
|
|
454
|
+
ui_section "$section"
|
|
455
|
+
current_section="$section"
|
|
456
|
+
fi
|
|
457
|
+
ui_cmd "$command_name" "$description"
|
|
458
|
+
done < <(_dot_help_specs)
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
show_help_command() {
|
|
462
|
+
local command_name="${1:-}"
|
|
463
|
+
local normalized summary examples
|
|
464
|
+
|
|
465
|
+
normalized="$command_name"
|
|
466
|
+
if [[ "$command_name" == "version" || "$command_name" == "-v" ]]; then
|
|
467
|
+
normalized="--version"
|
|
468
|
+
fi
|
|
469
|
+
|
|
470
|
+
summary="$(_dot_help_summary "$normalized")"
|
|
471
|
+
examples="$(_dot_help_examples "$normalized")"
|
|
472
|
+
|
|
473
|
+
if [[ -z "$summary" ]]; then
|
|
474
|
+
ui_fail "Unknown help topic: $command_name"
|
|
475
|
+
ui_info "Hint" "Try 'dot help all' or 'dot search <keyword>'"
|
|
476
|
+
exit 1
|
|
477
|
+
fi
|
|
478
|
+
|
|
479
|
+
ui_dot_banner "Reference"
|
|
480
|
+
ui_header "dot $command_name"
|
|
481
|
+
echo ""
|
|
482
|
+
ui_info "Summary" "$summary"
|
|
483
|
+
if [[ -n "$examples" ]]; then
|
|
484
|
+
echo ""
|
|
485
|
+
ui_section "Examples"
|
|
486
|
+
while IFS= read -r example; do
|
|
487
|
+
[[ -n "$example" ]] || continue
|
|
488
|
+
ui_cmd "$example" ""
|
|
489
|
+
done < <(printf '%b\n' "$examples")
|
|
490
|
+
fi
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
show_help() {
|
|
494
|
+
local topic="${1:-}"
|
|
495
|
+
case "$topic" in
|
|
496
|
+
"")
|
|
497
|
+
show_help_overview
|
|
498
|
+
;;
|
|
499
|
+
all)
|
|
500
|
+
show_help_all
|
|
501
|
+
;;
|
|
502
|
+
*)
|
|
503
|
+
show_help_command "$topic"
|
|
504
|
+
;;
|
|
505
|
+
esac
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
resolve_source_dir() { _resolve_source_dir; }
|
|
509
|
+
|
|
510
|
+
# ─── Dispatcher ───────────────────────────────────────────────────────────────
|
|
511
|
+
# Routes COMMAND to the appropriate command module in scripts/dot/commands/.
|
|
512
|
+
# Each module receives the original COMMAND as its first argument so that its
|
|
513
|
+
# internal case statement can dispatch to the right sub-function.
|
|
514
|
+
_SOURCE_DIR="$(_resolve_source_dir)"
|
|
515
|
+
_CMD_DIR="${_SOURCE_DIR}/scripts/dot/commands"
|
|
516
|
+
|
|
517
|
+
_dispatch() {
|
|
518
|
+
local module="$1"
|
|
519
|
+
shift # remove module name; remaining $@ are the user's extra args
|
|
520
|
+
local cmd_file="${_CMD_DIR}/${module}.sh"
|
|
521
|
+
if [[ -f "$cmd_file" ]]; then
|
|
522
|
+
# shellcheck disable=SC1090
|
|
523
|
+
exec bash "$cmd_file" "$COMMAND" "$@"
|
|
524
|
+
else
|
|
525
|
+
ui_fail "Command module not found: $cmd_file"
|
|
526
|
+
exit 1
|
|
527
|
+
fi
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
if [[ -z "$COMMAND" ]]; then
|
|
531
|
+
show_help
|
|
532
|
+
exit 0
|
|
533
|
+
fi
|
|
534
|
+
|
|
535
|
+
route="$(_dot_command_route "$COMMAND" || true)"
|
|
536
|
+
|
|
537
|
+
case "$route" in
|
|
538
|
+
core | diagnostics | ai | tools | appearance | secrets | security | meta | fleet)
|
|
539
|
+
_dispatch "$route" "$@"
|
|
540
|
+
;;
|
|
541
|
+
|
|
542
|
+
manual)
|
|
543
|
+
if [[ -n "$_SOURCE_DIR" ]] && [[ -f "$_SOURCE_DIR/scripts/dot/commands/manual.sh" ]]; then
|
|
544
|
+
exec bash "$_SOURCE_DIR/scripts/dot/commands/manual.sh" "$@"
|
|
545
|
+
else
|
|
546
|
+
ui_fail "manual.sh not found"
|
|
547
|
+
exit 1
|
|
548
|
+
fi
|
|
549
|
+
;;
|
|
550
|
+
|
|
551
|
+
patterns)
|
|
552
|
+
if [[ -n "$_SOURCE_DIR" ]] && [[ -f "$_SOURCE_DIR/scripts/dot/commands/patterns.sh" ]]; then
|
|
553
|
+
exec bash "$_SOURCE_DIR/scripts/dot/commands/patterns.sh" "$@"
|
|
554
|
+
else
|
|
555
|
+
ui_fail "patterns.sh not found"
|
|
556
|
+
exit 1
|
|
557
|
+
fi
|
|
558
|
+
;;
|
|
559
|
+
|
|
560
|
+
search)
|
|
561
|
+
keyword="${1:-}"
|
|
562
|
+
if [[ -z "$keyword" ]]; then
|
|
563
|
+
echo "Usage: dot search <keyword>"
|
|
564
|
+
exit 1
|
|
565
|
+
fi
|
|
566
|
+
show_help_all | grep -i --color=auto "$keyword" || echo "No commands matching '$keyword'"
|
|
567
|
+
exit 0
|
|
568
|
+
;;
|
|
569
|
+
|
|
570
|
+
help)
|
|
571
|
+
show_help "$@"
|
|
572
|
+
;;
|
|
573
|
+
|
|
574
|
+
version)
|
|
575
|
+
show_version
|
|
576
|
+
;;
|
|
577
|
+
|
|
578
|
+
# User-provided custom commands
|
|
579
|
+
*)
|
|
580
|
+
_user_cmd="${XDG_CONFIG_HOME:-$HOME/.config}/dotfiles/commands/${COMMAND}.sh"
|
|
581
|
+
if [[ -f "$_user_cmd" ]]; then
|
|
582
|
+
source "$_user_cmd" "$@"
|
|
583
|
+
else
|
|
584
|
+
echo "Unknown command: ${COMMAND:-}" >&2
|
|
585
|
+
echo "Run 'dot help' for available commands." >&2
|
|
586
|
+
exit 1
|
|
587
|
+
fi
|
|
588
|
+
;;
|
|
589
|
+
esac
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# shellcheck disable=SC2034,SC1091
|
|
3
|
+
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
4
|
+
# Dotfiles AI RAG (Retrieval-Augmented Generation)
|
|
5
|
+
# Usage: dot ai-query "how do I list files?"
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
10
|
+
# shellcheck source=../scripts/dot/lib/ui.sh
|
|
11
|
+
source "$HOME/.dotfiles/scripts/dot/lib/ui.sh"
|
|
12
|
+
|
|
13
|
+
QUERY="${1:-}"
|
|
14
|
+
if [[ -z "$QUERY" ]]; then
|
|
15
|
+
echo "Usage: dot ai-query 'your question'"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
DOTFILES_DIR="${HOME}/.dotfiles"
|
|
20
|
+
|
|
21
|
+
ui_info "Searching dotfiles context for: $QUERY..."
|
|
22
|
+
# 1. Retrieval: Use ripgrep to find relevant snippets from docs and configs
|
|
23
|
+
CONTEXT=$(rg -i --no-filename --no-line-number -C 2 -m 10 "$(echo "$QUERY" | tr ' ' '|')" "$DOTFILES_DIR/docs" "$DOTFILES_DIR/dot_config/shell" "$DOTFILES_DIR/.chezmoitemplates" 2>/dev/null || true)
|
|
24
|
+
|
|
25
|
+
if [[ -z "$CONTEXT" ]]; then
|
|
26
|
+
CONTEXT="No specific context found in the local repository."
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# 2. Augmented Generation: Pipe to the Dotfiles AI Bridge
|
|
30
|
+
# We use the 'architect' pattern to ensure the AI knows how to interpret dotfiles
|
|
31
|
+
ui_info "Generating context-aware answer..."
|
|
32
|
+
dot cl --pattern architect "Answer the following question based on this local dotfiles context:
|
|
33
|
+
---
|
|
34
|
+
$CONTEXT
|
|
35
|
+
---
|
|
36
|
+
User Question: $QUERY"
|