@sebastienrousseau/dotfiles 0.2.519 → 0.2.521

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 (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,333 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Dotfiles CLI - Meta Commands
5
- # upgrade, prewarm, docs, learn, keys, sandbox, mcp, mode, agent
6
-
7
- set -euo pipefail
8
-
9
- _META_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
- # shellcheck source=../../../lib/dot/utils.sh
11
- source "$_META_DIR/../../../lib/dot/utils.sh"
12
- # shellcheck source=../../../lib/dot/log.sh
13
- source "$_META_DIR/../../../lib/dot/log.sh"
14
- # shellcheck source=agent.sh
15
- source "$_META_DIR/agent.sh"
16
-
17
- meta_banner_section() {
18
- case "${1:-}" in
19
- mcp | mode | agent)
20
- printf '%s\n' "AI and Agents"
21
- ;;
22
- docs | keys | learn | search | help | version)
23
- printf '%s\n' "Reference"
24
- ;;
25
- *)
26
- printf '%s\n' "Meta"
27
- ;;
28
- esac
29
- }
30
-
31
- dot_ui_command_banner "$(meta_banner_section "${1:-}")" "${1:-}" "$@"
32
-
33
- # Last meaningful line of a captured log, used as a step's `ok` detail.
34
- # Collapses carriage-return progress (git/nvim spam \r), strips ANSI,
35
- # takes the last non-empty line, and clips it so the rendered step stays
36
- # on one line.
37
- _upgrade_last_line() {
38
- tr '\r' '\n' <"$1" 2>/dev/null |
39
- sed -E 's/\x1b\[[0-9;?]*[a-zA-Z]//g' |
40
- awk 'NF{last=$0} END{print last}' |
41
- cut -c1-56
42
- }
43
-
44
- cmd_upgrade() {
45
- local src_dir
46
- src_dir="$(require_source_dir)"
47
-
48
- # Per-step logs. Each phase's stdout+stderr is captured here rather
49
- # than streamed to the terminal: the git/nvim/chezmoi output is noisy
50
- # (carriage-return progress bars, remote counters) and, in rich mode,
51
- # writing it to the terminal corrupts the dot-ui renderer that owns
52
- # the screen. Failing steps get their tail dumped after the run.
53
- local log_dir
54
- log_dir="$(mktemp -d "${TMPDIR:-/tmp}/dot-upgrade.XXXXXX")"
55
- local fail_labels=() fail_logs=()
56
-
57
- # _upgrade_step <id> <label> <running-detail> -- cmd [args...]
58
- # Renders one tracked step: spinner while it runs, then ok (with the
59
- # log's last line) or fail. Never aborts the run — a failed phase is
60
- # recorded and surfaced at the end, matching the previous `|| true`
61
- # behaviour but without the raw flood.
62
- _upgrade_step() {
63
- local id="$1" label="$2" running="$3"
64
- shift 3
65
- [[ "${1:-}" == "--" ]] && shift
66
- local log="$log_dir/$id.log" rc=0
67
- ui_step "$id" "$label" run "$running"
68
- "$@" >"$log" 2>&1 || rc=$?
69
- if [[ "$rc" -eq 0 ]]; then
70
- ui_step "$id" "" ok "$(_upgrade_last_line "$log")"
71
- else
72
- ui_step "$id" "" fail "exited $rc"
73
- fail_labels+=("$label")
74
- fail_logs+=("$log")
75
- fi
76
- return 0
77
- }
78
-
79
- ui_steps_begin "Upgrade" ""
80
-
81
- if [ -f "$src_dir/nix/flake.nix" ] && has_command nix; then
82
- _upgrade_step nix-flake "Nix flake" "updating…" -- \
83
- sh -c 'cd "$1" && nix flake update' _ "$src_dir"
84
- _upgrade_step nix-gc "Nix GC" "collecting…" -- nix-collect-garbage -d
85
- fi
86
-
87
- _upgrade_step dotfiles "Dotfiles" "chezmoi update…" -- chezmoi update
88
-
89
- if has_command nvim; then
90
- _upgrade_step nvim "Neovim plugins" "Lazy sync…" -- \
91
- nvim --headless "+Lazy! sync" +qa
92
- fi
93
-
94
- if [ "${DOTFILES_FONTS:-}" = "1" ] &&
95
- [ -f "$src_dir/scripts/fonts/install-nerd-fonts.sh" ]; then
96
- _upgrade_step fonts "Nerd Fonts" "installing…" -- \
97
- sh "$src_dir/scripts/fonts/install-nerd-fonts.sh"
98
- fi
99
-
100
- local n=${#fail_labels[@]}
101
- if [[ "$n" -eq 0 ]]; then
102
- ui_steps_end "toolchains, plugins, and dotfiles up to date"
103
- rm -rf "$log_dir"
104
- else
105
- ui_steps_end "$n step(s) failed"
106
- # Surfaced after ui_steps_end so the rich renderer has torn down —
107
- # printing mid-render would garble the display.
108
- local i=0
109
- while ((i < n)); do
110
- ui_err "${fail_labels[$i]}" "log tail:"
111
- tail -n 15 "${fail_logs[$i]}" | sed 's/^/ /'
112
- ((i++)) || true
113
- done
114
- ui_info "Logs" "$log_dir"
115
- fi
116
- }
117
-
118
- cmd_prewarm() {
119
- local src_dir
120
- # Clear caches first
121
- ui_info "Cache" "Clearing shell initialization caches"
122
- local cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}"
123
- # `find ... -delete` instead of `rm -rf $glob` so an unmatched literal
124
- # pattern can't accidentally remove a real same-named directory, and
125
- # so we don't pass `-r` on what should always be files.
126
- [[ -d "$cache_dir/zsh" ]] && find "$cache_dir/zsh" -maxdepth 1 -type f \( -name '*-init.zsh' -o -name '*.zwc' \) -delete 2>/dev/null
127
- [[ -d "$cache_dir/bash" ]] && find "$cache_dir/bash" -maxdepth 1 -type f -name '*-init.bash' -delete 2>/dev/null
128
- [[ -d "$cache_dir/fish" ]] && find "$cache_dir/fish" -maxdepth 1 -type f -name '*-init.fish' -delete 2>/dev/null
129
- [[ -d "$cache_dir/nushell" ]] && find "$cache_dir/nushell" -maxdepth 1 -type f -name '*.nu' -delete 2>/dev/null
130
- ui_info "Cache" "Cleared. Regenerating..."
131
- src_dir="$(resolve_source_dir)"
132
- if [ -n "$src_dir" ] && [ -f "$src_dir/scripts/ops/prewarm.sh" ]; then
133
- bash "$src_dir/scripts/ops/prewarm.sh"
134
- fi
135
- }
136
-
137
- cmd_docs() {
138
- local src_dir
139
- src_dir="$(resolve_source_dir)"
140
-
141
- if [ -n "$src_dir" ] && [ -f "$src_dir/README.md" ]; then
142
- if has_command glow; then
143
- glow "$src_dir/README.md"
144
- else
145
- exec cat "$src_dir/README.md"
146
- fi
147
- else
148
- die "README not found."
149
- fi
150
- }
151
-
152
- cmd_learn() {
153
- local dot_bin
154
- # Post-Phase-4b: dot_local/ lives under defaults/. Legacy layout
155
- # (older deployments before .chezmoiroot activation) kept it at
156
- # repo root — probe both.
157
- dot_bin="$(dirname "${BASH_SOURCE[0]}")/../../../defaults/dot_local/bin"
158
- [[ -f "$dot_bin/executable_tour" ]] ||
159
- dot_bin="$(dirname "${BASH_SOURCE[0]}")/../../../dot_local/bin"
160
- if [ -f "$dot_bin/executable_tour" ]; then
161
- exec bash "$dot_bin/executable_tour" "$@"
162
- fi
163
- # Fallback to ops script
164
- run_script "scripts/ops/tour.sh" "Tour script" "$@"
165
- }
166
-
167
- cmd_keys() {
168
- local src_dir
169
- src_dir="$(resolve_source_dir)"
170
-
171
- if [[ "${1:-}" == "sign-check" ]]; then
172
- ui_header "Git Signing Status"
173
- local signing_key="" format="" key_file=""
174
- signing_key="$(git config --global user.signingkey 2>/dev/null || true)"
175
- format="$(git config --global gpg.format 2>/dev/null || true)"
176
- if [[ -z "$signing_key" ]]; then
177
- ui_warn "No signing key configured (git config --global user.signingkey)"
178
- else
179
- ui_info "Key" "$signing_key"
180
- ui_info "Format" "${format:-gpg}"
181
- if [[ "$format" == "ssh" ]]; then
182
- key_file="${signing_key/#\~/$HOME}"
183
- if [[ -f "$key_file" ]]; then
184
- ui_info "Status" "SSH key file exists: $key_file"
185
- else
186
- ui_warn "SSH key file not found: $key_file"
187
- fi
188
- else
189
- if has_command gpg && gpg --list-keys "$signing_key" >/dev/null 2>&1; then
190
- ui_info "Status" "GPG key found in keyring"
191
- else
192
- ui_warn "GPG key not found in keyring: $signing_key"
193
- fi
194
- fi
195
- fi
196
- return 0
197
- fi
198
-
199
- if [ -n "$src_dir" ] && [ -f "$src_dir/docs/KEYS.md" ]; then
200
- if [ -n "${1:-}" ]; then
201
- rg -i --fixed-strings --context 1 "${1:-}" "$src_dir/docs/KEYS.md" || true
202
- else
203
- exec cat "$src_dir/docs/KEYS.md"
204
- fi
205
- else
206
- run_script "scripts/diagnostics/keys.sh" "Keys script" "$@"
207
- fi
208
- }
209
-
210
- cmd_sandbox() {
211
- local src_dir
212
- src_dir="$(require_source_dir)"
213
-
214
- if has_command docker; then
215
- ui_info "Launching sandbox via Docker"
216
- docker build -f "$src_dir/tests/Dockerfile.sandbox" -t dotfiles-sandbox "$src_dir"
217
- exec docker run --rm -it dotfiles-sandbox
218
- elif has_command podman; then
219
- ui_info "Launching sandbox via Podman"
220
- podman build -f "$src_dir/tests/Dockerfile.sandbox" -t dotfiles-sandbox "$src_dir"
221
- exec podman run --rm -it dotfiles-sandbox
222
- else
223
- die "Docker or Podman is required for sandbox."
224
- fi
225
- }
226
-
227
- cmd_mcp() {
228
- local subcommand="${1:-doctor}"
229
- if [[ "${1:-}" == --* ]] || [[ "${1:-}" == -* ]] || [[ -z "${1:-}" ]]; then
230
- subcommand="doctor"
231
- else
232
- shift || true
233
- fi
234
- case "$subcommand" in
235
- doctor)
236
- if [[ "${1:-}" == "doctor" ]]; then
237
- shift || true
238
- fi
239
- run_script "scripts/diagnostics/mcp-doctor.sh" "MCP doctor script" "$@"
240
- ;;
241
- registry)
242
- local repo_root registry_file json_mode=0
243
- repo_root="$(resolve_chezmoi_source_dir)"
244
- [[ -z "$repo_root" ]] && repo_root="$(require_source_dir)"
245
- registry_file="${MCP_REGISTRY_CONFIG:-$repo_root/dot_config/dotfiles/mcp-registry.json}"
246
- if [[ "${1:-}" == "registry" ]]; then
247
- shift || true
248
- fi
249
- if [[ "${1:-}" == "--json" || "${1:-}" == "-j" ]]; then
250
- json_mode=1
251
- fi
252
- if [[ ! -f "$registry_file" ]]; then
253
- die "MCP registry not found: $registry_file"
254
- fi
255
- if [[ "$json_mode" -eq 1 ]]; then
256
- exec cat "$registry_file"
257
- fi
258
- if command -v jq >/dev/null 2>&1; then
259
- ui_header "MCP Registry"
260
- jq -r '
261
- .servers
262
- | to_entries[]
263
- | "\(.key)\t\(.value.transport)\t\(.value.launcher)\t\(.value.package // .value.url // "local")"
264
- ' "$registry_file" | while IFS=$'\t' read -r name transport launcher target; do
265
- ui_ok "$name" "$transport via $launcher -> $target"
266
- done
267
- else
268
- exec cat "$registry_file"
269
- fi
270
- ;;
271
- *)
272
- echo "Usage: dot mcp [doctor|registry]" >&2
273
- exit 1
274
- ;;
275
- esac
276
- }
277
-
278
- # Dispatch — cmd_mode is defined in agent.sh (sourced above)
279
- case "${1:-}" in
280
- upgrade)
281
- shift
282
- cmd_upgrade "$@"
283
- ;;
284
- cache-refresh | prewarm)
285
- shift
286
- cmd_prewarm "$@"
287
- ;;
288
- docs)
289
- shift
290
- cmd_docs "$@"
291
- ;;
292
- learn)
293
- shift
294
- cmd_learn "$@"
295
- ;;
296
- keys)
297
- shift
298
- cmd_keys "$@"
299
- ;;
300
- sandbox)
301
- shift
302
- cmd_sandbox "$@"
303
- ;;
304
- mcp)
305
- shift
306
- cmd_mcp "$@"
307
- ;;
308
- mode | agent)
309
- shift
310
- cmd_mode "$@"
311
- ;;
312
- --help | -h | help)
313
- cat <<'EOF'
314
- Usage: meta.sh <command> [args...]
315
-
316
- Commands:
317
- cache-refresh, prewarm, docs, learn, keys, sandbox, mcp, mode, agent
318
- EOF
319
- ;;
320
- "")
321
- cat <<'EOF'
322
- Usage: meta.sh <command> [args...]
323
-
324
- Commands:
325
- cache-refresh, prewarm, docs, learn, keys, sandbox, mcp, mode, agent
326
- EOF
327
- exit 1
328
- ;;
329
- *)
330
- echo "Unknown meta command: ${1:-}" >&2
331
- exit 1
332
- ;;
333
- esac
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # AI Steering Patterns Management.
5
- # Usage: dot patterns [list|view|edit] [name]
6
-
7
- set -euo pipefail
8
-
9
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
- # shellcheck source=../../../lib/dot/utils.sh
11
- source "$SCRIPT_DIR/../../../lib/dot/utils.sh"
12
-
13
- PATTERN_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ai/patterns"
14
- mkdir -p "$PATTERN_DIR"
15
-
16
- command="${1:-list}"
17
- name="${2:-}"
18
-
19
- case "$command" in
20
- list)
21
- ui_header "AI Steering Patterns"
22
- ls -1 "$PATTERN_DIR" | sed 's/\.md$//' | while read -r p; do
23
- ui_bullet "$p"
24
- done
25
- ;;
26
- view)
27
- if [[ -z "$name" ]]; then
28
- ui_err "Missing pattern name" "Usage: dot patterns view <name>"
29
- exit 1
30
- fi
31
- pattern_file="$PATTERN_DIR/${name}.md"
32
- if [[ -f "$pattern_file" ]]; then
33
- ui_header "Pattern: $name"
34
- if has_command glow; then
35
- glow "$pattern_file"
36
- else
37
- cat "$pattern_file"
38
- fi
39
- else
40
- ui_err "Pattern not found" "$name"
41
- fi
42
- ;;
43
- edit)
44
- if [[ -z "$name" ]]; then
45
- ui_err "Missing pattern name" "Usage: dot patterns edit <name>"
46
- exit 1
47
- fi
48
- pattern_file="$PATTERN_DIR/${name}.md"
49
- ${EDITOR:-nvim} "$pattern_file"
50
- ;;
51
- *)
52
- echo "Usage: dot patterns [list|view|edit] [name]"
53
- exit 1
54
- ;;
55
- esac