@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.
Files changed (538) hide show
  1. package/CHANGELOG.md +375 -0
  2. package/LICENSE +1283 -0
  3. package/README.md +284 -0
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +4 -3
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +78 -0
  9. package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
  10. package/docs/adr/ADR-002-shell-performance.md +121 -0
  11. package/docs/adr/ADR-003-security-first.md +140 -0
  12. package/docs/adr/ADR-004-cli-architecture.md +157 -0
  13. package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
  14. package/docs/adr/ADR-006-shell-selection.md +115 -0
  15. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  16. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  17. package/docs/adr/README.md +32 -0
  18. package/docs/architecture/ARCHITECTURE.md +113 -0
  19. package/docs/architecture/INTEROP.md +36 -0
  20. package/docs/architecture/REPO_LAYOUT.md +237 -0
  21. package/docs/architecture/WALKTHROUGH.md +82 -0
  22. package/docs/architecture/fleet-deployment.md +73 -0
  23. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  24. package/docs/archive/LEGACY_ROADMAP.md +142 -0
  25. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  26. package/docs/{PLAN.md → archive/PLAN.md} +4 -4
  27. package/docs/archive/REPO_AUDIT.md +23 -0
  28. package/docs/guides/INSTALL.md +140 -0
  29. package/docs/guides/NEOVIM_IDE_GUIDE.md +52 -0
  30. package/docs/guides/THEMING.md +222 -0
  31. package/docs/guides/TROUBLESHOOTING.md +148 -0
  32. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +723 -0
  33. package/docs/index.md +39 -0
  34. package/docs/interop/A2A.md +32 -0
  35. package/docs/manual/00-introduction.md +85 -0
  36. package/docs/manual/01-concepts/01-architecture.md +134 -0
  37. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  38. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  39. package/docs/manual/01-concepts/04-fleet.md +142 -0
  40. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  41. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  42. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  43. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  44. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  45. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  46. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  47. package/docs/manual/03-reference/02-config-files.md +259 -0
  48. package/docs/manual/03-reference/03-environment.md +120 -0
  49. package/docs/manual/03-reference/04-templates.md +184 -0
  50. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  51. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  52. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  53. package/docs/manual/04-cookbook/03-faq.md +167 -0
  54. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  55. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  56. package/docs/manual/05-appendices/C-glossary.md +36 -0
  57. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  58. package/docs/manual/05-appendices/E-license.md +34 -0
  59. package/docs/manual/_toc.yml +58 -0
  60. package/docs/manual/command-index.md +58 -0
  61. package/docs/manual/concept-index.md +164 -0
  62. package/docs/operations/ATTESTATION.md +39 -0
  63. package/docs/operations/MAINTENANCE.md +59 -0
  64. package/docs/operations/MIGRATION.md +101 -0
  65. package/docs/operations/OPERATIONS.md +164 -0
  66. package/docs/operations/RELIABILITY.md +116 -0
  67. package/docs/{ROADMAP.md → operations/ROADMAP.md} +22 -22
  68. package/docs/operations/TESTING.md +195 -0
  69. package/docs/operations/TRACEABILITY.md +31 -0
  70. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  71. package/docs/operations/VERSION_SYNC.md +344 -0
  72. package/docs/reference/ALIASES.md +124 -0
  73. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  74. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  75. package/docs/reference/FEATURES.md +62 -0
  76. package/docs/reference/FONTS.md +108 -0
  77. package/docs/reference/PROFILES.md +65 -0
  78. package/docs/reference/SCREENSHOTS.md +117 -0
  79. package/docs/reference/SCRIPTS.md +67 -0
  80. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  81. package/docs/reference/THEMES.md +113 -0
  82. package/docs/reference/TOOLS.md +105 -0
  83. package/docs/reference/UTILS.md +151 -0
  84. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  85. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  86. package/docs/security/COMPLIANCE.md +453 -0
  87. package/docs/security/ENCRYPTION.md +52 -0
  88. package/docs/security/FMEA.md +155 -0
  89. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  90. package/docs/security/KEYS.md +45 -0
  91. package/docs/security/KEY_ROTATION.md +219 -0
  92. package/docs/security/MCP_POLICY.md +69 -0
  93. package/docs/security/POLICY_RELEASES.md +33 -0
  94. package/docs/security/README.md +24 -0
  95. package/docs/security/SECRETS.md +146 -0
  96. package/docs/security/SECURITY.md +41 -0
  97. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  98. package/docs/security/SOUP_REGISTER.md +32 -0
  99. package/docs/security/THREAT_MODEL.md +120 -0
  100. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  101. package/docs/themes/README.md +6 -0
  102. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  103. package/docs/themes/hero-shot.svg +78 -0
  104. package/dot_config/.module-manifest.json +69 -0
  105. package/dot_config/ai/identity.md +20 -0
  106. package/dot_config/ai/patterns/architect.md +14 -0
  107. package/dot_config/ai/patterns/hardener.md +13 -0
  108. package/dot_config/ai/patterns/refactor.md +13 -0
  109. package/dot_config/aider/aider.conf.yml +32 -0
  110. package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
  111. package/dot_config/ansible/ansible.cfg +11 -0
  112. package/dot_config/atuin/config.toml +40 -0
  113. package/dot_config/bat/config +23 -0
  114. package/dot_config/brave-flags.conf.tmpl +7 -0
  115. package/dot_config/btop/btop.conf +16 -0
  116. package/dot_config/btop/themes/tokyonight.theme +34 -0
  117. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  118. package/dot_config/claude/mcp_servers.json +20 -0
  119. package/dot_config/containers/containers.conf +14 -0
  120. package/dot_config/curl/dot_curlrc +18 -0
  121. package/dot_config/dlv/config.yml +39 -0
  122. package/dot_config/docker/config.json +15 -0
  123. package/dot_config/dotfiles/agent-card.json +29 -0
  124. package/dot_config/dotfiles/agent-profiles.json +92 -0
  125. package/dot_config/dotfiles/boot/README.md +11 -0
  126. package/dot_config/dotfiles/grub/README.md +11 -0
  127. package/dot_config/dotfiles/lock/README.md +11 -0
  128. package/dot_config/dotfiles/mcp-lock.json +33 -0
  129. package/dot_config/dotfiles/mcp-policy.json +52 -0
  130. package/dot_config/dotfiles/mcp-registry.json +47 -0
  131. package/dot_config/dotfiles/model-registry.json +20 -0
  132. package/dot_config/dotfiles/policy-bundles.json +38 -0
  133. package/dot_config/dotfiles/prompt-registry.json +16 -0
  134. package/dot_config/dotfiles/versions.env +18 -0
  135. package/dot_config/duf/duf.conf +6 -0
  136. package/dot_config/duti/defaults.duti +5 -0
  137. package/dot_config/emoji/emoji.txt +34 -0
  138. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  139. package/dot_config/environment.d/90-wayland.conf +19 -0
  140. package/dot_config/fastfetch/config.jsonc +28 -0
  141. package/dot_config/firefox/user.js.tmpl +58 -0
  142. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  143. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  144. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  145. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  146. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  147. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  148. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  149. package/dot_config/fish/config.fish.tmpl +44 -0
  150. package/dot_config/fish/fish_plugins +1 -0
  151. package/dot_config/fish/functions/_.fish +3 -0
  152. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  153. package/dot_config/fish/functions/als.fish +46 -0
  154. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  155. package/dot_config/fish/functions/c.fish +3 -0
  156. package/dot_config/fish/functions/cat.fish +9 -0
  157. package/dot_config/fish/functions/d.fish +7 -0
  158. package/dot_config/fish/functions/dot.fish +34 -0
  159. package/dot_config/fish/functions/h.fish +3 -0
  160. package/dot_config/fish/functions/l.fish +7 -0
  161. package/dot_config/fish/functions/la.fish +7 -0
  162. package/dot_config/fish/functions/ll.fish +7 -0
  163. package/dot_config/fish/functions/log_error.fish +13 -0
  164. package/dot_config/fish/functions/log_info.fish +13 -0
  165. package/dot_config/fish/functions/lr.fish +7 -0
  166. package/dot_config/fish/functions/lra.fish +7 -0
  167. package/dot_config/fish/functions/ls.fish +7 -0
  168. package/dot_config/fish/functions/lt.fish +7 -0
  169. package/dot_config/fish/functions/lta.fish +7 -0
  170. package/dot_config/fish/functions/notify-run.fish +11 -0
  171. package/dot_config/fish/functions/q.fish +3 -0
  172. package/dot_config/fish/functions/silent-run.fish +7 -0
  173. package/dot_config/fish/functions/yy.fish +8 -0
  174. package/dot_config/flatpak/flatpak.list +4 -0
  175. package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
  176. package/dot_config/foot/foot.ini.tmpl +33 -0
  177. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  178. package/dot_config/fzf/fzf.zsh +48 -0
  179. package/dot_config/gem/gemrc +9 -0
  180. package/dot_config/gh/config.yml +12 -0
  181. package/dot_config/ghostty/config.tmpl +165 -0
  182. package/dot_config/git/allowed_signers.tmpl +18 -0
  183. package/dot_config/git/attributes +12 -0
  184. package/dot_config/git/commit-template +10 -0
  185. package/dot_config/git/ignore +27 -0
  186. package/dot_config/gnupg/gpg-agent.conf +11 -0
  187. package/dot_config/go/golangci.yml +118 -0
  188. package/dot_config/go/gopls.json +30 -0
  189. package/dot_config/goose/config.yaml +29 -0
  190. package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
  191. package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
  192. package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
  193. package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
  194. package/dot_config/htop/htoprc +20 -0
  195. package/dot_config/inputrc +2 -0
  196. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  197. package/dot_config/just/justfile +122 -0
  198. package/dot_config/k9s/config.yaml +65 -0
  199. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  200. package/dot_config/kanshi/config.tmpl +22 -0
  201. package/dot_config/karabiner/karabiner.json +14 -0
  202. package/dot_config/kitty/kitty.conf.tmpl +53 -0
  203. package/dot_config/lazydocker/config.yml +186 -0
  204. package/dot_config/lazygit/config.yml +35 -0
  205. package/dot_config/mako/config +47 -0
  206. package/dot_config/mas/masapps.txt +5 -0
  207. package/dot_config/micro/settings.json +3 -0
  208. package/dot_config/mimeapps.list +77 -0
  209. package/dot_config/minikube/config.json +13 -0
  210. package/dot_config/mise/config.toml +99 -0
  211. package/dot_config/mongosh/mongoshrc.js +68 -0
  212. package/dot_config/mpv/input.conf +47 -0
  213. package/dot_config/mpv/mpv.conf +47 -0
  214. package/dot_config/mycli/myclirc +67 -0
  215. package/dot_config/nano/nanorc +28 -0
  216. package/dot_config/ncdu/config +12 -0
  217. package/dot_config/niri/config.kdl.tmpl +327 -0
  218. package/dot_config/nushell/aliases.nu +18 -0
  219. package/dot_config/nushell/completions.nu.tmpl +52 -0
  220. package/dot_config/nushell/config.nu.tmpl +86 -0
  221. package/dot_config/nushell/env.nu.tmpl +94 -0
  222. package/dot_config/nushell/functions.nu.tmpl +17 -0
  223. package/dot_config/nvim/init.lua +18 -0
  224. package/dot_config/nvim/lazy-lock.json +58 -0
  225. package/dot_config/nvim/lua/config/autocmds.lua +107 -0
  226. package/dot_config/nvim/lua/config/keymaps.lua +92 -0
  227. package/dot_config/nvim/lua/config/lazy.lua +44 -0
  228. package/dot_config/nvim/lua/config/options.lua +49 -0
  229. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  230. package/dot_config/nvim/lua/plugins/coding.lua +216 -0
  231. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  232. package/dot_config/nvim/lua/plugins/dap.lua +412 -0
  233. package/dot_config/nvim/lua/plugins/editor.lua +55 -0
  234. package/dot_config/nvim/lua/plugins/git.lua +10 -0
  235. package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
  236. package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
  237. package/dot_config/nvim/lua/plugins/rust.lua +34 -0
  238. package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
  239. package/dot_config/nvim/lua/plugins/ui.lua +509 -0
  240. package/dot_config/paru/paru.conf +10 -0
  241. package/dot_config/pip/pip.conf.tmpl +32 -0
  242. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  243. package/dot_config/pueue/pueue.yml +34 -0
  244. package/dot_config/pypoetry/config.toml +6 -0
  245. package/dot_config/pyrightconfig.json +5 -0
  246. package/dot_config/raycast/README.md +13 -0
  247. package/dot_config/redis/redisclirc +41 -0
  248. package/dot_config/ripgrep/ripgreprc +21 -0
  249. package/dot_config/shell/00-core-paths.sh.tmpl +133 -0
  250. package/dot_config/shell/05-core-safety.sh +47 -0
  251. package/dot_config/shell/10-secrets.sh +40 -0
  252. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  253. package/dot_config/shell/40-ls-colors.sh +48 -0
  254. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  255. package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
  256. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  257. package/dot_config/shell/90-ux-aliases.sh.tmpl +120 -0
  258. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +54 -0
  259. package/dot_config/shell/Brewfile +207 -0
  260. package/dot_config/shell/Brewfile.cask +92 -0
  261. package/dot_config/shell/Brewfile.cli +127 -0
  262. package/dot_config/shell/README.md +267 -0
  263. package/dot_config/shell/als_data.txt.tmpl +65 -0
  264. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  265. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  266. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  267. package/dot_config/sops/dot_sops.yaml +23 -0
  268. package/dot_config/starship.toml.tmpl +202 -0
  269. package/dot_config/swaylock/config +43 -0
  270. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  271. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  272. package/dot_config/systemd/user/pueued.service +12 -0
  273. package/dot_config/systemd/user/ssh-agent.service +12 -0
  274. package/dot_config/task/Taskfile.yml +86 -0
  275. package/dot_config/tflint/tflint.hcl +9 -0
  276. package/dot_config/tmux/tmux.conf.tmpl +223 -0
  277. package/dot_config/topgrade.toml.tmpl +54 -0
  278. package/dot_config/user-dirs.dirs +9 -0
  279. package/dot_config/vscode/extensions.txt +11 -0
  280. package/dot_config/vscode/settings.json.tmpl +82 -0
  281. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  282. package/dot_config/waybar/style.css.tmpl +211 -0
  283. package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
  284. package/dot_config/wget/wgetrc +12 -0
  285. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  286. package/dot_config/yarn/yarnrc.yml +36 -0
  287. package/dot_config/yazi/keymap.toml +67 -0
  288. package/dot_config/yazi/theme.toml +102 -0
  289. package/dot_config/yazi/yazi.toml +40 -0
  290. package/dot_config/zathura/zathurarc +52 -0
  291. package/dot_config/zellij/config.kdl.tmpl +79 -0
  292. package/dot_config/zsh/dot_zprofile +7 -0
  293. package/dot_config/zsh/dot_zshenv +5 -0
  294. package/dot_config/zsh/dot_zshrc.tmpl +498 -0
  295. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  296. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
  297. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  298. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  299. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +194 -0
  300. package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
  301. package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
  302. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  303. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  304. package/dot_local/bin/executable_ai-update +195 -0
  305. package/dot_local/bin/executable_ai_core +152 -0
  306. package/dot_local/bin/executable_antigravity +11 -0
  307. package/dot_local/bin/executable_b64 +84 -0
  308. package/dot_local/bin/executable_bm +77 -0
  309. package/dot_local/bin/executable_cb +39 -0
  310. package/dot_local/bin/executable_dot +589 -0
  311. package/dot_local/bin/executable_dot-ai +36 -0
  312. package/dot_local/bin/executable_dot-bootstrap +77 -0
  313. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  314. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  315. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  316. package/dot_local/bin/executable_dot-theme-sync +952 -0
  317. package/dot_local/bin/executable_dot_completion +57 -0
  318. package/dot_local/bin/executable_dtags +28 -0
  319. package/dot_local/bin/executable_epoch +67 -0
  320. package/dot_local/bin/executable_extract +41 -0
  321. package/dot_local/bin/executable_gbd +52 -0
  322. package/dot_local/bin/executable_gd +42 -0
  323. package/dot_local/bin/executable_git-ai-commit +175 -0
  324. package/dot_local/bin/executable_git-ai-diff +169 -0
  325. package/dot_local/bin/executable_gl +101 -0
  326. package/dot_local/bin/executable_hash +161 -0
  327. package/dot_local/bin/executable_hashsum +160 -0
  328. package/dot_local/bin/executable_hex +115 -0
  329. package/dot_local/bin/executable_jsonv +78 -0
  330. package/dot_local/bin/executable_jwt +94 -0
  331. package/dot_local/bin/executable_kill-port +75 -0
  332. package/dot_local/bin/executable_lorem +118 -0
  333. package/dot_local/bin/executable_mkscript +35 -0
  334. package/dot_local/bin/executable_monitor +56 -0
  335. package/dot_local/bin/executable_myip +51 -0
  336. package/dot_local/bin/executable_notify +22 -0
  337. package/dot_local/bin/executable_open +36 -0
  338. package/dot_local/bin/executable_pw +27 -0
  339. package/dot_local/bin/executable_rec-start +46 -0
  340. package/dot_local/bin/executable_rec-stop +35 -0
  341. package/dot_local/bin/executable_regex +132 -0
  342. package/dot_local/bin/executable_start-niri +8 -0
  343. package/dot_local/bin/executable_tmux-sessionizer +314 -0
  344. package/dot_local/bin/executable_tour +175 -0
  345. package/dot_local/bin/executable_up +21 -0
  346. package/dot_local/bin/executable_update +142 -0
  347. package/dot_local/bin/executable_uuid +87 -0
  348. package/dot_local/bin/executable_win +32 -0
  349. package/dot_local/bin/executable_yamlv +57 -0
  350. package/dot_local/share/bash-completion/completions/dot +72 -0
  351. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  352. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  353. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  354. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  355. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  356. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  357. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  358. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  359. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  360. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  361. package/dot_local/share/man/man1/dot.1 +149 -0
  362. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  363. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  364. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  365. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  366. package/dot_local/share/zsh/completions/.keep +0 -0
  367. package/dot_local/share/zsh/completions/_dot +283 -0
  368. package/install.sh +342 -0
  369. package/package.json +1 -1
  370. package/scripts/ci/check-copyright-headers.sh +96 -0
  371. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  372. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  373. package/scripts/ci/validate-ci-config.sh +224 -0
  374. package/scripts/demo/record.sh +42 -0
  375. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  376. package/scripts/diagnostics/alias-governance.sh +137 -0
  377. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  378. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  379. package/scripts/diagnostics/benchmark.sh +381 -0
  380. package/scripts/diagnostics/conflicts.sh +72 -0
  381. package/scripts/diagnostics/doctor-unified.sh +38 -0
  382. package/scripts/diagnostics/doctor.sh +541 -0
  383. package/scripts/diagnostics/drift-dashboard.sh +37 -0
  384. package/scripts/diagnostics/health.sh +597 -0
  385. package/scripts/diagnostics/history-analysis.sh +85 -0
  386. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  387. package/scripts/diagnostics/perf.sh +225 -0
  388. package/scripts/diagnostics/scorecard.sh +118 -0
  389. package/scripts/diagnostics/secret-governance.sh +58 -0
  390. package/scripts/diagnostics/security-score.sh +438 -0
  391. package/scripts/diagnostics/smoke-test.sh +87 -0
  392. package/scripts/diagnostics/snapshot.sh +89 -0
  393. package/scripts/diagnostics/verify.sh +107 -0
  394. package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
  395. package/scripts/diagnostics/version-locks.sh +79 -0
  396. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  397. package/scripts/docs/build-manual.sh +883 -0
  398. package/scripts/docs/check-manual.sh +213 -0
  399. package/scripts/dot/commands/agent.sh +465 -0
  400. package/scripts/dot/commands/ai.sh +416 -0
  401. package/scripts/dot/commands/aliases.sh +250 -0
  402. package/scripts/dot/commands/appearance.sh +80 -0
  403. package/scripts/dot/commands/core.sh +185 -0
  404. package/scripts/dot/commands/diagnostics.sh +229 -0
  405. package/scripts/dot/commands/fleet.sh +399 -0
  406. package/scripts/dot/commands/lint.sh +177 -0
  407. package/scripts/dot/commands/manual.sh +168 -0
  408. package/scripts/dot/commands/meta.sh +248 -0
  409. package/scripts/dot/commands/patterns.sh +54 -0
  410. package/scripts/dot/commands/restore.sh +231 -0
  411. package/scripts/dot/commands/secrets.sh +223 -0
  412. package/scripts/dot/commands/security.sh +76 -0
  413. package/scripts/dot/commands/tools.sh +469 -0
  414. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  415. package/scripts/dot/lib/bento.sh +49 -0
  416. package/scripts/dot/lib/log.sh +194 -0
  417. package/scripts/dot/lib/platform.sh +98 -0
  418. package/scripts/dot/lib/ui.sh +507 -0
  419. package/scripts/dot/lib/utils.sh +372 -0
  420. package/scripts/fonts/install-nerd-fonts.sh +68 -0
  421. package/scripts/fonts/patch-fonts.sh +35 -0
  422. package/scripts/git-hooks/install.sh +11 -0
  423. package/scripts/git-hooks/pre-commit +12 -0
  424. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  425. package/scripts/git-hooks/pre-push +29 -0
  426. package/scripts/git-hooks/prepare-commit-msg +29 -0
  427. package/scripts/lib/secrets_provider.sh +158 -0
  428. package/scripts/maintenance/check-updates.sh +131 -0
  429. package/scripts/ops/ai-setup.sh +55 -0
  430. package/scripts/ops/bundle.sh +77 -0
  431. package/scripts/ops/chaos.sh +49 -0
  432. package/scripts/ops/chezmoi-apply.sh +270 -0
  433. package/scripts/ops/chezmoi-diff.sh +15 -0
  434. package/scripts/ops/chezmoi-remove.sh +45 -0
  435. package/scripts/ops/chezmoi-update.sh +48 -0
  436. package/scripts/ops/heal-chezmoi.sh +51 -0
  437. package/scripts/ops/heal-system.sh +128 -0
  438. package/scripts/ops/heal-tools.sh +340 -0
  439. package/scripts/ops/heal.sh +222 -0
  440. package/scripts/ops/post-apply-repair.sh +106 -0
  441. package/scripts/ops/prewarm.sh +127 -0
  442. package/scripts/ops/release.sh +252 -0
  443. package/scripts/ops/rollback.sh +589 -0
  444. package/scripts/ops/setup.sh +137 -0
  445. package/scripts/ops/teleport.sh +33 -0
  446. package/scripts/qa/coverage-baseline.sh +60 -0
  447. package/scripts/qa/docs-coverage.sh +111 -0
  448. package/scripts/qa/reliability-audit.sh +138 -0
  449. package/scripts/qa/traceability-coverage.sh +116 -0
  450. package/scripts/qa/validate-examples.sh +26 -0
  451. package/scripts/qa/wsl-contract.sh +11 -0
  452. package/scripts/release/package-policy-bundles.sh +125 -0
  453. package/scripts/secrets/age-init.sh +70 -0
  454. package/scripts/secrets/create-secrets-file.sh +45 -0
  455. package/scripts/secrets/encrypt-ssh-key.sh +43 -0
  456. package/scripts/security/backup.sh +57 -0
  457. package/scripts/security/dns-doh.sh +51 -0
  458. package/scripts/security/encryption-check.sh +54 -0
  459. package/scripts/security/enforce-policies.sh +334 -0
  460. package/scripts/security/firewall.sh +90 -0
  461. package/scripts/security/lock-configs.sh +57 -0
  462. package/scripts/security/lock-screen.sh +55 -0
  463. package/scripts/security/manage-secrets.sh +428 -0
  464. package/scripts/security/ssh-cert.sh +203 -0
  465. package/scripts/security/telemetry-kill.sh +50 -0
  466. package/scripts/security/usb-safety.sh +51 -0
  467. package/scripts/theme/apply-gnome-theme.sh +328 -0
  468. package/scripts/theme/extract-theme.py +677 -0
  469. package/scripts/theme/install-boot-logo.sh +62 -0
  470. package/scripts/theme/install-catppuccin-themes.sh +370 -0
  471. package/scripts/theme/install-cursors.sh +25 -0
  472. package/scripts/theme/install-file-icons.sh +26 -0
  473. package/scripts/theme/install-grub-theme.sh +61 -0
  474. package/scripts/theme/install-lock-icon.sh +30 -0
  475. package/scripts/theme/merge-wallpaper.sh +141 -0
  476. package/scripts/theme/rebuild-themes.sh +309 -0
  477. package/scripts/theme/switch.sh +421 -0
  478. package/scripts/theme/wallpaper-rotate.sh +136 -0
  479. package/scripts/theme/wallpaper-sync.sh +397 -0
  480. package/scripts/tools/cmatrix.sh +21 -0
  481. package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
  482. package/scripts/tools/emoji-picker.sh +48 -0
  483. package/scripts/tools/figlet-banner.sh +18 -0
  484. package/scripts/tools/log-rotate.sh +30 -0
  485. package/scripts/tools/lolcat-wrap.sh +19 -0
  486. package/scripts/tools/pipes.sh +48 -0
  487. package/scripts/tuning/linux.sh +185 -0
  488. package/scripts/tuning/macos.sh +55 -0
  489. package/scripts/uninstall.sh +85 -0
  490. package/scripts/version-sync.sh +487 -0
  491. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  492. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  493. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  494. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  495. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  496. package/templates/projects/go/README.md +4 -0
  497. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  498. package/templates/projects/go/go.sum +0 -0
  499. package/templates/projects/molecule/README.md +7 -0
  500. package/templates/projects/molecule/converge.yml +7 -0
  501. package/templates/projects/molecule/molecule.yml +16 -0
  502. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  503. package/templates/projects/node/README.md +4 -0
  504. package/templates/projects/node/package-lock.json +12 -0
  505. package/templates/projects/node/src/index.js +1 -0
  506. package/templates/projects/packer/README.md +15 -0
  507. package/templates/projects/packer/main.pkr.hcl +15 -0
  508. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  509. package/templates/projects/python/README.md +4 -0
  510. package/templates/projects/python/pyproject.toml +15 -0
  511. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  512. package/templates/projects/python/tests/test_basic.py +1 -0
  513. package/docs/ARCHITECTURE.md +0 -62
  514. package/docs/COMPLIANCE.md +0 -47
  515. package/docs/OPERATIONS.md +0 -103
  516. package/docs/PR_DESCRIPTION.md +0 -150
  517. package/docs/ROADMAP_legacy.md +0 -556
  518. package/docs/SECURITY_CHECKLIST.md +0 -25
  519. package/docs/TASK.md +0 -99
  520. package/docs/WALKTHROUGH.md +0 -46
  521. package/scripts/backup.sh +0 -142
  522. package/scripts/banner.sh +0 -20
  523. package/scripts/benchmark.sh +0 -20
  524. package/scripts/build.sh +0 -41
  525. package/scripts/clean.sh +0 -31
  526. package/scripts/compile.sh +0 -54
  527. package/scripts/copy.sh +0 -108
  528. package/scripts/doctor.sh +0 -79
  529. package/scripts/dotfiles.sh +0 -63
  530. package/scripts/download.sh +0 -35
  531. package/scripts/help.sh +0 -57
  532. package/scripts/lock-configs.sh +0 -57
  533. package/scripts/package.sh +0 -46
  534. package/scripts/ssh.sh +0 -55
  535. package/scripts/teleport.sh +0 -23
  536. package/scripts/test-aliases.sh +0 -25
  537. package/scripts/test_smoke.sh +0 -88
  538. package/scripts/unpack.sh +0 -28
@@ -0,0 +1,416 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ ## Dotfiles AI Commands.
4
+ ##
5
+ ## Provides AI CLI status, setup, RAG query, and bridge commands.
6
+ ## Wraps AI CLI tools with contextual patterns and system metadata.
7
+ ## Usage: dot ai|ai-setup|ai-query|cl|copilot|gemini|kiro|sgpt|ollama|opencode|aider|autohand|vibe|qwen|zai
8
+
9
+ set -euo pipefail
10
+
11
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
+ # shellcheck source=../lib/utils.sh
13
+ source "$SCRIPT_DIR/../lib/utils.sh"
14
+
15
+ dot_ui_command_banner "AI and Agents" "${1:-}"
16
+
17
+ PATTERN_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ai/patterns"
18
+ AI_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/dotfiles/ai"
19
+ AI_STATUS_TTL="${DOTFILES_AI_STATUS_TTL:-300}"
20
+ AI_STATUS_CACHE_FILE="${AI_CACHE_DIR}/status.tsv"
21
+
22
+ # Fallback to source tree if patterns don't exist in config (common in CI)
23
+ if [[ ! -d "$PATTERN_DIR" ]]; then
24
+ _AI_SRC="$(cd "$SCRIPT_DIR/../../.." && pwd)"
25
+ if [[ -d "$_AI_SRC/dot_config/ai/patterns" ]]; then
26
+ PATTERN_DIR="$_AI_SRC/dot_config/ai/patterns"
27
+ fi
28
+ fi
29
+
30
+ _show_ai_bridge_usage() {
31
+ echo "Usage: dot cl|copilot|gemini|kiro|autohand|vibe|qwen|zai --pattern [name] \"prompt\""
32
+ echo ""
33
+ echo "Available Patterns:"
34
+ ls -1 "$PATTERN_DIR" 2>/dev/null | sed 's/\.md$//' | sed 's/^/ - /' || echo " (none)"
35
+ }
36
+
37
+ _ai_cache_fresh() {
38
+ local file="$1"
39
+ [[ -f "$file" ]] || return 1
40
+ local now mtime
41
+ now=$(date +%s)
42
+ mtime=$(stat -c %Y "$file" 2>/dev/null || stat -f %m "$file" 2>/dev/null || echo 0)
43
+ ((now - mtime < AI_STATUS_TTL))
44
+ }
45
+
46
+ _ai_extract_version() {
47
+ local bin="$1"
48
+ local output version
49
+ output=$("$bin" --version 2>/dev/null | head -1) || true
50
+ version=$(printf '%s' "$output" | sed 's/^[^0-9]*//' | sed 's/[[:space:]]*$//' | sed 's/\.$//')
51
+ [[ -n "$version" ]] && printf '%s\n' "$version" || printf 'installed\n'
52
+ }
53
+
54
+ _ai_refresh_status_cache() {
55
+ local -n ai_entries=$1
56
+ local tmp_file
57
+ tmp_file="$(mktemp)"
58
+ mkdir -p "$AI_CACHE_DIR"
59
+
60
+ local entry category role name bin desc present version
61
+ for entry in "${ai_entries[@]}"; do
62
+ IFS='|' read -r category role name bin desc <<<"$entry"
63
+ if has_command "$bin"; then
64
+ present=1
65
+ version=$(_ai_extract_version "$bin")
66
+ else
67
+ present=0
68
+ version=""
69
+ fi
70
+ printf '%s\t%s\t%s\n' "$bin" "$present" "$version" >>"$tmp_file"
71
+ done
72
+
73
+ mv "$tmp_file" "$AI_STATUS_CACHE_FILE"
74
+ }
75
+
76
+ _ai_get_cached_status() {
77
+ cat "$AI_STATUS_CACHE_FILE"
78
+ }
79
+
80
+ # binary -> mise package mapping
81
+ _ai_mise_pkg() {
82
+ case "$1" in
83
+ claude) echo "npm:@anthropic-ai/claude-code" ;;
84
+ copilot) echo "npm:@github/copilot" ;;
85
+ aider) echo "pipx:aider-chat" ;;
86
+ opencode) echo "npm:opencode-ai" ;;
87
+ sgpt) echo "pipx:shell-gpt" ;;
88
+ gemini) echo "npm:@google/gemini-cli" ;;
89
+ ollama) echo "aqua:ollama/ollama" ;;
90
+ kiro-cli) echo "kiro-cli" ;;
91
+ autohand) echo "npm:autohand-cli" ;;
92
+ vibe) echo "pipx:mistral-vibe" ;;
93
+ qwen) echo "npm:@qwen-code/qwen-code" ;;
94
+ zai) echo "npm:@guizmo-ai/zai-cli" ;;
95
+ *) echo "" ;;
96
+ esac
97
+ }
98
+
99
+ cmd_ai_status() {
100
+ ui_header "AI CLI Status"
101
+
102
+ # category|role|name|binary|description
103
+ local -a ai_clis=(
104
+ "Agents (autonomous)|agent|Claude Code|claude|Anthropic CLI agent"
105
+ "Agents (autonomous)|agent|Copilot CLI|copilot|GitHub Copilot CLI"
106
+ "Coding (interactive)|coding|Aider|aider|AI pair programmer"
107
+ "Coding (interactive)|coding|OpenCode|opencode|Terminal coding assistant"
108
+ "Coding (interactive)|coding|Autohand Code|autohand|Autohand coding agent"
109
+ "Coding (interactive)|coding|Mistral Vibe|vibe|Mistral AI coding agent"
110
+ "Coding (interactive)|coding|Qwen Code|qwen|Qwen AI coding assistant"
111
+ "Coding (interactive)|coding|ZAI|zai|Zhipu AI coding agent"
112
+ "General (prompt-based)|general|Shell-GPT|sgpt|ChatGPT terminal interface"
113
+ "General (prompt-based)|general|Gemini CLI|gemini|Google AI CLI"
114
+ "Runtime (local)|local|Ollama|ollama|Local LLM runner"
115
+ "Cloud (platform)|cloud|Kiro CLI|kiro-cli|AWS AI assistant"
116
+ )
117
+
118
+ if ! _ai_cache_fresh "$AI_STATUS_CACHE_FILE"; then
119
+ _ai_refresh_status_cache ai_clis
120
+ fi
121
+
122
+ declare -A ai_present=()
123
+ declare -A ai_version=()
124
+ local cached_bin cached_present cached_version
125
+ while IFS=$'\t' read -r cached_bin cached_present cached_version; do
126
+ ai_present["$cached_bin"]="$cached_present"
127
+ ai_version["$cached_bin"]="$cached_version"
128
+ done < <(_ai_get_cached_status)
129
+
130
+ local -a installed=()
131
+ local -a missing=()
132
+ local current_category=""
133
+ local category role name bin desc ver
134
+ for entry in "${ai_clis[@]}"; do
135
+ IFS='|' read -r category role name bin desc <<<"$entry"
136
+ if [[ "$category" != "$current_category" ]]; then
137
+ echo ""
138
+ ui_section "$category"
139
+ current_category="$category"
140
+ fi
141
+ if [[ "${ai_present[$bin]:-0}" == "1" ]]; then
142
+ ver="${ai_version[$bin]:-installed}"
143
+ [[ "$bin" == "claude" ]] && ver="${ver%% *}"
144
+ ui_ok "$name" "$ver — $desc"
145
+ installed+=("$name|$bin|$role")
146
+ else
147
+ ui_info "$name" "— $desc (not installed)"
148
+ missing+=("$name|$bin")
149
+ fi
150
+ done
151
+
152
+ # Offer to install missing providers via mise
153
+ if [[ ${#missing[@]} -gt 0 ]] && has_command mise; then
154
+ echo ""
155
+ local _ai_install_action=""
156
+ if has_command gum; then
157
+ _ai_install_action=$(printf '%s\n' "Install all" "Choose which to install" "Skip" |
158
+ gum choose --header "Missing AI providers — install via mise?") || _ai_install_action=""
159
+ else
160
+ ui_info "Tip" "Install missing providers: mise install"
161
+ ui_info "Tip" "Or individually: mise use -g <package>@latest"
162
+ fi
163
+
164
+ local -a _ai_to_install=()
165
+ case "$_ai_install_action" in
166
+ "Install all")
167
+ _ai_to_install=("${missing[@]}")
168
+ ;;
169
+ "Choose which to install")
170
+ local -a _ai_pick_choices=()
171
+ for entry in "${missing[@]}"; do
172
+ IFS='|' read -r name bin <<<"$entry"
173
+ _ai_pick_choices+=("$name")
174
+ done
175
+ local _ai_picked
176
+ _ai_picked=$(printf '%s\n' "${_ai_pick_choices[@]}" |
177
+ gum choose --no-limit --header "Select providers to install (Space to toggle, Enter to confirm)") || _ai_picked=""
178
+ if [[ -n "$_ai_picked" ]]; then
179
+ while IFS= read -r selected; do
180
+ [[ -z "$selected" ]] && continue
181
+ for entry in "${missing[@]}"; do
182
+ IFS='|' read -r name bin <<<"$entry"
183
+ if [[ "$name" == "$selected" ]]; then
184
+ _ai_to_install+=("$entry")
185
+ fi
186
+ done
187
+ done <<<"$_ai_picked"
188
+ fi
189
+ ;;
190
+ esac
191
+
192
+ if [[ ${#_ai_to_install[@]} -gt 0 ]]; then
193
+ echo ""
194
+ for entry in "${_ai_to_install[@]}"; do
195
+ IFS='|' read -r name bin <<<"$entry"
196
+ local pkg
197
+ pkg=$(_ai_mise_pkg "$bin")
198
+ if [[ -n "$pkg" ]]; then
199
+ if has_command gum; then
200
+ if gum spin --spinner dot --title "Installing $name ($pkg)" -- \
201
+ mise use -g "$pkg@latest" 2>&1; then
202
+ ui_ok "$name" "installed"
203
+ else
204
+ ui_warn "$name" "install failed (continuing)"
205
+ fi
206
+ else
207
+ ui_info "Installing" "$name via mise ($pkg)"
208
+ mise use -g "$pkg@latest" 2>&1 || ui_warn "$name" "install failed (continuing)"
209
+ fi
210
+ fi
211
+ done
212
+ # Invalidate cache after installs
213
+ rm -f "$AI_STATUS_CACHE_FILE"
214
+ echo ""
215
+ ui_ok "Done" "Run 'dot ai' again to see updated status"
216
+ fi
217
+ fi
218
+
219
+ echo ""
220
+ if [ ${#installed[@]} -eq 0 ]; then
221
+ ui_warn "No AI CLIs installed"
222
+ elif has_command gum; then
223
+ ui_info "Launch" "Select an AI CLI to start"
224
+ local -a choices=()
225
+ for entry in "${installed[@]}"; do
226
+ IFS='|' read -r name bin role <<<"$entry"
227
+ choices+=("$(printf '%-16s — %s' "$name" "$role")")
228
+ done
229
+ local pick
230
+ pick=$(printf '%s\n' "${choices[@]}" | gum choose --header "Select an AI CLI") || true
231
+ if [ -n "$pick" ]; then
232
+ pick="${pick%% — *}"
233
+ pick="${pick%"${pick##*[![:space:]]}"}"
234
+ for entry in "${installed[@]}"; do
235
+ IFS='|' read -r name bin role <<<"$entry"
236
+ if [ "$name" = "$pick" ]; then
237
+ echo ""
238
+ ui_info "Starting" "$name ($bin)"
239
+ exec "$bin"
240
+ fi
241
+ done
242
+ fi
243
+ else
244
+ ui_info "Tip" "Install gum for interactive launcher: mise use -g gum"
245
+ fi
246
+ }
247
+
248
+ cmd_ai_setup() {
249
+ run_script "scripts/ops/ai-setup.sh" "AI setup script" "$@"
250
+ }
251
+
252
+ cmd_ai_query() {
253
+ run_script "dot_local/bin/executable_dot-ai" "AI RAG script" "$@"
254
+ }
255
+
256
+ run_ai_with_context() {
257
+ local tool="$1"
258
+ shift
259
+ local pattern_name=""
260
+ local prompt=""
261
+
262
+ while [[ $# -gt 0 ]]; do
263
+ case "$1" in
264
+ --help | -h)
265
+ _show_ai_bridge_usage
266
+ exit 0
267
+ ;;
268
+ --pattern | -p)
269
+ pattern_name="$2"
270
+ shift 2
271
+ ;;
272
+ *)
273
+ prompt="$1"
274
+ shift
275
+ ;;
276
+ esac
277
+ done
278
+
279
+ if [[ -z "$prompt" ]]; then
280
+ _show_ai_bridge_usage
281
+ exit 1
282
+ fi
283
+
284
+ local system_context=""
285
+ if [[ -n "$pattern_name" ]]; then
286
+ local pattern_file="$PATTERN_DIR/${pattern_name}.md"
287
+ if [[ -f "$pattern_file" ]]; then
288
+ system_context=$(cat "$pattern_file")
289
+ else
290
+ ui_err "Pattern not found" "$pattern_name"
291
+ exit 1
292
+ fi
293
+ fi
294
+
295
+ # Inject dynamic system metadata
296
+ local metadata
297
+ metadata="## System Metadata
298
+ - OS: $(uname -s) $(uname -r)
299
+ - Arch: $(uname -m)
300
+ - Date: $(date -u)"
301
+
302
+ local full_prompt="${system_context}
303
+
304
+ ${metadata}
305
+
306
+ ## User Request
307
+ ${prompt}"
308
+
309
+ # Resolve the binary name for the tool
310
+ local tool_bin="$tool"
311
+ case "$tool" in
312
+ cl) tool_bin="claude" ;;
313
+ kiro) tool_bin="kiro-cli" ;;
314
+ esac
315
+
316
+ # Check if the tool is installed; offer mise install if not
317
+ if ! has_command "$tool_bin"; then
318
+ local mise_pkg
319
+ mise_pkg=$(_ai_mise_pkg "$tool_bin")
320
+ if [[ -n "$mise_pkg" ]] && has_command mise; then
321
+ ui_warn "$tool" "not installed"
322
+ local do_install=""
323
+ if has_command gum; then
324
+ do_install=$(gum confirm "Install $tool via mise ($mise_pkg)?" && echo "yes" || echo "no")
325
+ else
326
+ printf "Install %s via mise (%s)? [y/N] " "$tool" "$mise_pkg"
327
+ read -r do_install
328
+ case "$do_install" in y | Y | yes) do_install="yes" ;; *) do_install="no" ;; esac
329
+ fi
330
+ if [[ "$do_install" == "yes" ]]; then
331
+ ui_info "Installing" "$tool via mise ($mise_pkg)"
332
+ mise use -g "$mise_pkg@latest" 2>&1 || {
333
+ ui_err "$tool" "installation failed"
334
+ exit 1
335
+ }
336
+ rm -f "$AI_STATUS_CACHE_FILE"
337
+ else
338
+ ui_err "$tool" "not installed — install with: mise use -g $mise_pkg@latest"
339
+ exit 1
340
+ fi
341
+ else
342
+ ui_err "$tool" "not installed and mise not available"
343
+ exit 1
344
+ fi
345
+ fi
346
+
347
+ ui_info "Executing $tool with pattern: ${pattern_name:-none}"
348
+
349
+ case "$tool" in
350
+ cl | claude)
351
+ printf "%s" "$full_prompt" | claude
352
+ ;;
353
+ copilot)
354
+ copilot -sp "$full_prompt"
355
+ ;;
356
+ gemini)
357
+ printf "%s" "$full_prompt" | gemini chat
358
+ ;;
359
+ kiro | kiro-cli)
360
+ printf "%s" "$full_prompt" | kiro-cli chat
361
+ ;;
362
+ sgpt)
363
+ printf "%s" "$full_prompt" | sgpt --chat shell-gpt
364
+ ;;
365
+ ollama)
366
+ printf "%s" "$full_prompt" | ollama run llama3.2
367
+ ;;
368
+ opencode)
369
+ printf "%s" "$full_prompt" | opencode query
370
+ ;;
371
+ aider)
372
+ printf "%s" "$full_prompt" | aider --msg "-"
373
+ ;;
374
+ autohand)
375
+ printf "%s" "$full_prompt" | autohand chat
376
+ ;;
377
+ vibe)
378
+ printf "%s" "$full_prompt" | vibe chat
379
+ ;;
380
+ qwen)
381
+ printf "%s" "$full_prompt" | qwen chat
382
+ ;;
383
+ zai)
384
+ printf "%s" "$full_prompt" | zai chat
385
+ ;;
386
+ *)
387
+ ui_err "Unsupported tool" "$tool"
388
+ exit 1
389
+ ;;
390
+ esac
391
+ }
392
+
393
+ # Dispatch
394
+ case "${1:-}" in
395
+ ai)
396
+ shift
397
+ cmd_ai_status "$@"
398
+ ;;
399
+ ai-setup)
400
+ shift
401
+ cmd_ai_setup "$@"
402
+ ;;
403
+ ai-query)
404
+ shift
405
+ cmd_ai_query "$@"
406
+ ;;
407
+ cl | claude | copilot | gemini | kiro | sgpt | ollama | opencode | aider | autohand | vibe | qwen | zai)
408
+ tool="$1"
409
+ shift
410
+ run_ai_with_context "$tool" "$@"
411
+ ;;
412
+ *)
413
+ echo "Unknown ai command: ${1:-}" >&2
414
+ exit 1
415
+ ;;
416
+ esac
@@ -0,0 +1,250 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2015-2026 Dotfiles. All rights reserved.
3
+ # Dotfiles CLI - Aliases Commands (extracted from tools.sh)
4
+ # aliases list|search|why|stats|cheatsheet|tiers, alias-check
5
+
6
+ set -euo pipefail
7
+
8
+ # Guard: only define functions, do not execute on source
9
+ # These functions are sourced by tools.sh for dispatch.
10
+
11
+ alias_manifest_path() {
12
+ local src_dir
13
+ src_dir="$(require_source_dir)"
14
+ printf "%s\n" "$src_dir/scripts/diagnostics/aliases-manifest.sh"
15
+ }
16
+
17
+ emit_alias_manifest() {
18
+ local manifest
19
+ manifest="$(alias_manifest_path)"
20
+ if [[ ! -x "$manifest" ]]; then
21
+ die "Alias manifest script not found: $manifest"
22
+ fi
23
+ bash "$manifest"
24
+ }
25
+
26
+ cmd_aliases() {
27
+ local subcommand="${1:-list}"
28
+ shift || true
29
+
30
+ alias_tier_enabled() {
31
+ local csv="${1:-all}"
32
+ local token="${2:-}"
33
+ if [[ "$csv" == "all" ]]; then
34
+ return 0
35
+ fi
36
+ [[ ",${csv}," == *",${token},"* ]]
37
+ }
38
+
39
+ case "$subcommand" in
40
+ list)
41
+ ui_header "Aliases"
42
+ echo ""
43
+ printf " %-18s %-42s %s\n" "Name" "Value" "Source"
44
+ echo " $(printf '%.18s' '------------------') $(printf '%.42s' '------------------------------------------') -------------------------"
45
+ emit_alias_manifest | sort -t $'\t' -k1,1 | while IFS=$'\t' read -r name value file line; do
46
+ printf " %-18s %-42s %s:%s\n" "$name" "${value:0:42}" "${file##*/}" "$line"
47
+ done
48
+ ;;
49
+ search)
50
+ local query="${1:-}"
51
+ if [[ -z "$query" ]]; then
52
+ die "Usage: dot aliases search <term>"
53
+ fi
54
+ ui_header "Alias Search"
55
+ ui_info "Query" "$query"
56
+ echo ""
57
+ local results
58
+ results="$(emit_alias_manifest | rg -i "$query" || true)"
59
+ if [[ -z "$results" ]]; then
60
+ ui_warn "No matches" "$query"
61
+ return 1
62
+ fi
63
+ printf "%s\n" "$results" | while IFS=$'\t' read -r name value file line; do
64
+ printf " %-18s %-42s %s:%s\n" "$name" "${value:0:42}" "$file" "$line"
65
+ done
66
+ ;;
67
+ why)
68
+ local alias_name="${1:-}"
69
+ if [[ -z "$alias_name" ]]; then
70
+ die "Usage: dot aliases why <alias>"
71
+ fi
72
+ ui_header "Alias Details"
73
+ ui_info "Alias" "$alias_name"
74
+ echo ""
75
+ local rows
76
+ rows="$(emit_alias_manifest | awk -F'\t' -v a="$alias_name" '$1==a')"
77
+ local src_dir deprecations_file deprecation
78
+ src_dir="$(require_source_dir)"
79
+ deprecations_file="$src_dir/scripts/dot/data/alias-deprecations.tsv"
80
+ if [[ -n "$rows" ]]; then
81
+ printf "%s\n" "$rows" | while IFS=$'\t' read -r name value file line; do
82
+ ui_ok "$name" "${value}"
83
+ printf " source: %s:%s\n" "$file" "$line"
84
+ done
85
+ fi
86
+ if [[ -f "$deprecations_file" ]]; then
87
+ deprecation="$(awk -F'\t' -v a="$alias_name" 'BEGIN{IGNORECASE=0} $1 !~ /^#/ && $1==a {print $0; exit}' "$deprecations_file")"
88
+ if [[ -n "$deprecation" ]]; then
89
+ local _a replacement remove_in note
90
+ IFS=$'\t' read -r _a replacement remove_in note <<<"$deprecation"
91
+ echo ""
92
+ ui_warn "Deprecated" "yes"
93
+ ui_info "Replacement" "$replacement"
94
+ ui_info "Remove In" "$remove_in"
95
+ ui_info "Note" "$note"
96
+ fi
97
+ fi
98
+ if [[ -z "$rows" && -z "$deprecation" ]]; then
99
+ ui_warn "Alias" "not found: $alias_name"
100
+ return 1
101
+ fi
102
+ ;;
103
+ stats)
104
+ local histfile="${HISTFILE:-$HOME/.zsh_history}"
105
+ if [[ ! -f "$histfile" ]]; then
106
+ die "History file not found: $histfile"
107
+ fi
108
+ ui_header "Alias Usage (History)"
109
+ ui_info "History file" "$histfile"
110
+ echo ""
111
+ local tmp_aliases
112
+ tmp_aliases="$(umask 077 && mktemp)"
113
+ trap 'rm -f "$tmp_aliases"' RETURN
114
+ emit_alias_manifest | awk -F'\t' '{print $1}' | sort -u >"$tmp_aliases"
115
+ awk -v aliases_file="$tmp_aliases" '
116
+ BEGIN {
117
+ while ((getline < aliases_file) > 0) alias[$1]=1
118
+ }
119
+ {
120
+ line=$0
121
+ sub(/^:[[:space:]]*[0-9]+:[0-9]+;/, "", line) # zsh EXTENDED_HISTORY prefix
122
+ split(line, parts, /[[:space:]]+/)
123
+ cmd=parts[1]
124
+ if (cmd in alias) count[cmd]++
125
+ }
126
+ END {
127
+ for (k in count) printf "%7d %s\n", count[k], k
128
+ }
129
+ ' "$histfile" | sort -nr | head -20
130
+ rm -f "$tmp_aliases"
131
+ ;;
132
+ cheatsheet)
133
+ ui_header "Alias Cheatsheet"
134
+ local src_dir out
135
+ src_dir="$(require_source_dir)"
136
+ out="$src_dir/docs/ALIASES_CHEATSHEET.md"
137
+ bash "$src_dir/scripts/diagnostics/aliases-cheatsheet.sh" >"$out"
138
+ ui_ok "Generated" "$out"
139
+ ;;
140
+ tiers)
141
+ local profile ecosystems security_mode dangerous buckets
142
+ profile="${DOTFILES_ALIAS_PROFILE:-standard}"
143
+ ecosystems="${DOTFILES_ALIAS_ECOSYSTEMS:-all}"
144
+ buckets="${DOTFILES_ALIAS_BUCKETS:-system,svn}"
145
+ security_mode="${DOTFILES_SECURITY_MODE:-standard}"
146
+ dangerous="${DOTFILES_ENABLE_DANGEROUS_ALIASES:-0}"
147
+
148
+ ui_header "Alias Tiers"
149
+ ui_info "Profile" "$profile"
150
+ ui_info "Ecosystems" "$ecosystems"
151
+ ui_info "Buckets" "$buckets"
152
+ ui_info "Security Mode" "$security_mode"
153
+ ui_info "Dangerous Aliases" "$dangerous"
154
+ echo ""
155
+
156
+ ui_header "Core (Always Loaded)"
157
+ ui_ok "navigation" "cd, clear, default, diagnostics, ps"
158
+ ui_ok "dev core" "git, editor, configuration, modern"
159
+ ui_ok "cross-platform tooling" "docker, archives, disk-usage, rsync"
160
+ echo ""
161
+
162
+ ui_header "Ecosystems (Lazy)"
163
+ if alias_tier_enabled "$ecosystems" "python"; then
164
+ ui_ok "python" "enabled"
165
+ else
166
+ ui_warn "python" "disabled"
167
+ fi
168
+ if alias_tier_enabled "$ecosystems" "node"; then
169
+ ui_ok "node" "enabled"
170
+ else
171
+ ui_warn "node" "disabled"
172
+ fi
173
+ if alias_tier_enabled "$ecosystems" "rust"; then
174
+ ui_ok "rust" "enabled"
175
+ else
176
+ ui_warn "rust" "disabled"
177
+ fi
178
+ if alias_tier_enabled "$ecosystems" "network"; then
179
+ ui_ok "network" "enabled"
180
+ else
181
+ ui_warn "network" "disabled"
182
+ fi
183
+ if alias_tier_enabled "$ecosystems" "legacy"; then
184
+ ui_ok "legacy" "enabled"
185
+ else
186
+ ui_warn "legacy" "disabled"
187
+ fi
188
+ if alias_tier_enabled "$buckets" "system"; then
189
+ ui_ok "system bucket" "enabled"
190
+ else
191
+ ui_warn "system bucket" "disabled"
192
+ fi
193
+ if alias_tier_enabled "$buckets" "svn"; then
194
+ ui_ok "svn bucket" "enabled"
195
+ else
196
+ ui_warn "svn bucket" "disabled"
197
+ fi
198
+ ;;
199
+ *)
200
+ die "Unknown aliases subcommand: $subcommand"
201
+ ;;
202
+ esac
203
+ }
204
+
205
+ cmd_alias_check() {
206
+ ui_header "Alias Check"
207
+ echo ""
208
+
209
+ local alias_file="${HOME}/.config/shell/90-ux-aliases.sh"
210
+ local zshrc_file="${HOME}/.config/zsh/.zshrc"
211
+ local auto_ls_file="${HOME}/.config/shell/custom/auto_ls.zsh"
212
+ local missing=0
213
+
214
+ if [[ -f "$alias_file" ]]; then
215
+ ui_ok "Aliases file" "$alias_file"
216
+ else
217
+ ui_err "Aliases file missing" "$alias_file"
218
+ missing=1
219
+ fi
220
+
221
+ local required_aliases=(c q e l ll la lr lra lt lta h a d _ i)
222
+ local a
223
+ for a in "${required_aliases[@]}"; do
224
+ if grep -Eq "^[[:space:]]*alias[[:space:]]+${a}=" "$alias_file" 2>/dev/null; then
225
+ ui_ok "alias ${a}" "present"
226
+ else
227
+ ui_warn "alias ${a}" "missing"
228
+ missing=1
229
+ fi
230
+ done
231
+
232
+ if [[ -f "$auto_ls_file" ]]; then
233
+ ui_ok "auto-ls hook" "$auto_ls_file"
234
+ else
235
+ ui_warn "auto-ls hook" "missing"
236
+ fi
237
+
238
+ if [[ -f "$zshrc_file" ]] && rg -q "auto_ls.zsh" "$zshrc_file"; then
239
+ ui_ok "auto-ls sourced" "$zshrc_file"
240
+ else
241
+ ui_warn "auto-ls sourced" "not referenced in zshrc"
242
+ fi
243
+
244
+ echo ""
245
+ if [[ "$missing" -eq 1 ]]; then
246
+ ui_warn "Result" "Some aliases are missing; re-run 'chezmoi apply' and open a new shell."
247
+ return 1
248
+ fi
249
+ ui_ok "Result" "All core aliases present"
250
+ }