@sebastienrousseau/dotfiles 0.2.502 → 0.2.503
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 +83 -9
- package/LICENSE +21 -1283
- package/README.md +5 -3
- package/docs/CONFIG_STRATEGY.md +124 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/GOVERNANCE.md +98 -0
- package/docs/MAINTAINERS.md +41 -0
- package/docs/OPENCODE.md +127 -0
- package/docs/README.md +2 -0
- package/docs/STRUCTURE.md +102 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
- package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
- package/docs/architecture/REPO_LAYOUT.md +8 -8
- package/docs/archive/MILESTONE_v0.2.493.md +1 -1
- package/docs/index.md +2 -2
- package/docs/interop/POWERSHELL.md +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/01-concepts/02-trust-model.md +1 -1
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -59
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +5 -5
- package/docs/operations/HARD_AUDIT_2026.md +11 -11
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/RELEASE_PIPELINE.md +130 -0
- package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
- package/docs/operations/ROADMAP_2026.md +6 -6
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +6 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +8 -7
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +17 -9
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +58 -3
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/install.sh +27 -5
- package/package.json +1 -1
- package/scripts/README.md +123 -0
- package/scripts/ci/check-copyright-headers.sh +4 -93
- package/scripts/ci/check-shell-preamble.sh +4 -103
- package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
- package/scripts/diagnostics/a2a-conformance.sh +4 -4
- package/scripts/diagnostics/alias-governance.sh +1 -1
- package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
- package/scripts/diagnostics/benchmark.sh +4 -4
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +2 -2
- package/scripts/diagnostics/doctor.sh +10 -10
- package/scripts/diagnostics/drift-dashboard.sh +2 -2
- package/scripts/diagnostics/health.sh +4 -4
- package/scripts/diagnostics/history-analysis.sh +2 -2
- package/scripts/diagnostics/mcp-doctor.sh +10 -7
- package/scripts/diagnostics/perf.sh +4 -4
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +2 -2
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +2 -2
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +144 -25
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +2 -2
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +12 -11
- package/scripts/dot/commands/init.sh +4 -4
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +12 -6
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +4 -4
- package/scripts/dot/commands/restore.sh +4 -4
- package/scripts/dot/commands/secrets.sh +4 -3
- package/scripts/dot/commands/security.sh +2 -2
- package/scripts/dot/commands/tools.sh +13 -3
- package/scripts/dot/powershell/Dot.psm1 +199 -0
- package/scripts/fonts/install-nerd-fonts.sh +2 -2
- package/scripts/git-hooks/pre-commit-audit.sh +2 -2
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +2 -2
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +4 -4
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +4 -4
- package/scripts/ops/setup.sh +2 -2
- package/scripts/qa/check-version-consistency.sh +123 -0
- package/scripts/qa/coverage-baseline.sh +1 -1
- package/scripts/qa/docs-coverage.sh +2 -2
- package/scripts/qa/powershell-contract.ps1 +1 -1
- package/scripts/qa/scorecard-snapshot.sh +127 -0
- package/scripts/security/backup.sh +2 -2
- package/scripts/security/dns-doh.sh +4 -4
- package/scripts/security/encryption-check.sh +4 -4
- package/scripts/security/enforce-policies.sh +2 -2
- package/scripts/security/firewall.sh +4 -4
- package/scripts/security/lock-screen.sh +4 -4
- package/scripts/security/manage-secrets.sh +2 -2
- package/scripts/security/ssh-cert.sh +2 -2
- package/scripts/security/telemetry-kill.sh +4 -4
- package/scripts/security/usb-safety.sh +4 -4
- package/scripts/theme/extract-heic-frames.sh +114 -0
- package/scripts/theme/rebuild-themes.sh +8 -1
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +55 -7
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/direnv.fish +0 -4
- package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
- package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
- package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
- package/dot_config/fish/conf.d/mise-activate.fish +0 -5
- package/dot_config/fish/config.fish.tmpl +0 -44
- package/dot_config/fish/fish_plugins +0 -1
- package/dot_config/fish/functions/_.fish +0 -3
- package/dot_config/fish/functions/_cached_eval.fish +0 -131
- package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
- package/dot_config/fish/functions/als.fish +0 -46
- package/dot_config/fish/functions/bg-upgrade.fish +0 -7
- package/dot_config/fish/functions/c.fish +0 -3
- package/dot_config/fish/functions/cat.fish +0 -9
- package/dot_config/fish/functions/d.fish +0 -7
- package/dot_config/fish/functions/dot.fish +0 -34
- package/dot_config/fish/functions/h.fish +0 -3
- package/dot_config/fish/functions/l.fish +0 -7
- package/dot_config/fish/functions/la.fish +0 -7
- package/dot_config/fish/functions/ll.fish +0 -7
- package/dot_config/fish/functions/log_error.fish +0 -13
- package/dot_config/fish/functions/log_info.fish +0 -13
- package/dot_config/fish/functions/lr.fish +0 -7
- package/dot_config/fish/functions/lra.fish +0 -7
- package/dot_config/fish/functions/ls.fish +0 -7
- package/dot_config/fish/functions/lt.fish +0 -7
- package/dot_config/fish/functions/lta.fish +0 -7
- package/dot_config/fish/functions/notify-run.fish +0 -11
- package/dot_config/fish/functions/q.fish +0 -3
- package/dot_config/fish/functions/silent-run.fish +0 -7
- package/dot_config/fish/functions/yy.fish +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
- package/dot_config/foot/foot.ini.tmpl +0 -33
- package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
- package/dot_config/fzf/fzf.zsh +0 -48
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -165
- package/dot_config/git/allowed_signers.tmpl +0 -18
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/commit-template +0 -10
- package/dot_config/git/hooks/executable_commit-msg +0 -146
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf +0 -11
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py +0 -19
- package/dot_config/just/justfile +0 -122
- package/dot_config/k9s/config.yaml +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/kanshi/config.tmpl +0 -22
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -53
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -35
- package/dot_config/mako/config +0 -47
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/micro/settings.json +0 -3
- package/dot_config/mimeapps.list +0 -77
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -99
- package/dot_config/mongosh/mongoshrc.js +0 -68
- package/dot_config/mpv/input.conf +0 -47
- package/dot_config/mpv/mpv.conf +0 -47
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/niri/config.kdl.tmpl +0 -327
- package/dot_config/nushell/aliases.nu +0 -18
- package/dot_config/nushell/cached_eval.nu +0 -80
- package/dot_config/nushell/completions.nu.tmpl +0 -52
- package/dot_config/nushell/config.nu.tmpl +0 -86
- package/dot_config/nushell/env.nu.tmpl +0 -102
- package/dot_config/nushell/functions.nu.tmpl +0 -17
- package/dot_config/nvim/init.lua +0 -18
- package/dot_config/nvim/lazy-lock.json +0 -58
- package/dot_config/nvim/lua/config/autocmds.lua +0 -107
- package/dot_config/nvim/lua/config/keymaps.lua +0 -92
- package/dot_config/nvim/lua/config/lazy.lua +0 -44
- package/dot_config/nvim/lua/config/options.lua +0 -49
- package/dot_config/nvim/lua/plugins/ai.lua +0 -75
- package/dot_config/nvim/lua/plugins/coding.lua +0 -216
- package/dot_config/nvim/lua/plugins/completion.lua +0 -60
- package/dot_config/nvim/lua/plugins/dap.lua +0 -412
- package/dot_config/nvim/lua/plugins/editor.lua +0 -55
- package/dot_config/nvim/lua/plugins/git.lua +0 -10
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
- package/dot_config/nvim/lua/plugins/rust.lua +0 -34
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
- package/dot_config/nvim/lua/plugins/ui.lua +0 -509
- package/dot_config/paru/paru.conf +0 -10
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
- package/dot_config/pueue/pueue.yml +0 -34
- package/dot_config/pypoetry/config.toml +0 -6
- package/dot_config/pyrightconfig.json +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/ripgrep/ripgreprc +0 -21
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
- package/dot_config/shell/05-core-safety.sh +0 -48
- package/dot_config/shell/10-secrets.sh +0 -41
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
- package/dot_config/shell/40-ls-colors.sh +0 -49
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -127
- package/dot_config/shell/README.md +0 -284
- package/dot_config/shell/als_data.txt.tmpl +0 -65
- package/dot_config/shell/custom/auto_ls.zsh +0 -20
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -202
- package/dot_config/swaylock/config +0 -43
- package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
- package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
- package/dot_config/systemd/user/pueued.service +0 -12
- package/dot_config/systemd/user/ssh-agent.service +0 -12
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -223
- package/dot_config/topgrade.toml.tmpl +0 -54
- package/dot_config/user-dirs.dirs +0 -10
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -82
- package/dot_config/waybar/config.jsonc.tmpl +0 -90
- package/dot_config/waybar/style.css.tmpl +0 -211
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
- package/dot_config/yarn/yarnrc.yml +0 -36
- package/dot_config/yazi/keymap.toml +0 -67
- package/dot_config/yazi/theme.toml +0 -102
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zathura/zathurarc +0 -52
- package/dot_config/zellij/config.kdl.tmpl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -7
- package/dot_config/zsh/dot_zshenv +0 -5
- package/dot_config/zsh/dot_zshrc.tmpl +0 -688
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
- package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
- package/dot_local/bin/executable_ai-update +0 -195
- package/dot_local/bin/executable_ai_core +0 -152
- package/dot_local/bin/executable_antigravity +0 -11
- package/dot_local/bin/executable_b64 +0 -84
- package/dot_local/bin/executable_bm +0 -79
- package/dot_local/bin/executable_cb +0 -39
- package/dot_local/bin/executable_dot +0 -636
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -76
- package/dot_local/bin/executable_dot-launch-or-focus +0 -52
- package/dot_local/bin/executable_dot-load-benchmark +0 -31
- package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
- package/dot_local/bin/executable_dot-theme-sync +0 -952
- package/dot_local/bin/executable_dot_completion +0 -57
- package/dot_local/bin/executable_dtags +0 -28
- package/dot_local/bin/executable_epoch +0 -67
- package/dot_local/bin/executable_extract +0 -41
- package/dot_local/bin/executable_gbd +0 -52
- package/dot_local/bin/executable_gd +0 -42
- package/dot_local/bin/executable_git-ai-commit +0 -175
- package/dot_local/bin/executable_git-ai-diff +0 -169
- package/dot_local/bin/executable_gl +0 -101
- package/dot_local/bin/executable_hash +0 -161
- package/dot_local/bin/executable_hashsum +0 -160
- package/dot_local/bin/executable_hex +0 -115
- package/dot_local/bin/executable_jsonv +0 -78
- package/dot_local/bin/executable_jwt +0 -94
- package/dot_local/bin/executable_kill-port +0 -75
- package/dot_local/bin/executable_lorem +0 -118
- package/dot_local/bin/executable_mkscript +0 -35
- package/dot_local/bin/executable_monitor +0 -56
- package/dot_local/bin/executable_myip +0 -51
- package/dot_local/bin/executable_notify +0 -24
- package/dot_local/bin/executable_open +0 -38
- package/dot_local/bin/executable_pw +0 -27
- package/dot_local/bin/executable_rec-start +0 -46
- package/dot_local/bin/executable_rec-stop +0 -35
- package/dot_local/bin/executable_regex +0 -132
- package/dot_local/bin/executable_start-niri +0 -8
- package/dot_local/bin/executable_tmux-sessionizer +0 -314
- package/dot_local/bin/executable_tour +0 -177
- package/dot_local/bin/executable_up +0 -23
- package/dot_local/bin/executable_update +0 -142
- package/dot_local/bin/executable_uuid +0 -87
- package/dot_local/bin/executable_win +0 -32
- package/dot_local/bin/executable_yamlv +0 -57
- package/dot_local/share/bash-completion/completions/dot +0 -72
- 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 +0 -149
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +0 -287
- package/scripts/ci/check-dangerous-chmod.sh +0 -19
- package/scripts/ci/check-deps-dev.sh +0 -236
- package/scripts/ci/check-insecure-tls.sh +0 -61
- package/scripts/ci/check-regression-traceability.sh +0 -67
- package/scripts/ci/dot-cli-startup-bench.sh +0 -126
- package/scripts/ci/install-chezmoi-verified.sh +0 -67
- package/scripts/ci/lint-reusable-pins.sh +0 -78
- package/scripts/ci/run-coverage.sh +0 -451
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/ci/windows-smoke-test.ps1 +0 -136
- package/scripts/docs/build-manual.sh +0 -883
- package/scripts/docs/check-manual.sh +0 -213
- package/scripts/dot/lib/bento.sh +0 -50
- package/scripts/dot/lib/log.sh +0 -200
- package/scripts/dot/lib/platform.sh +0 -112
- package/scripts/dot/lib/ui.sh +0 -650
- package/scripts/dot/lib/utils.sh +0 -377
- package/scripts/maintenance/check-updates.sh +0 -131
- package/scripts/release/package-policy-bundles.sh +0 -125
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# check-manual.sh — Quality gates for docs/manual/
|
|
4
|
-
#
|
|
5
|
-
# Runs:
|
|
6
|
-
# - Markdown lint (markdownlint-cli2 if available)
|
|
7
|
-
# - Internal link check (custom — validates all [text](path.md) refs)
|
|
8
|
-
# - Spell check (codespell if available)
|
|
9
|
-
# - Coverage: every `dot <command>` referenced must be documented
|
|
10
|
-
#
|
|
11
|
-
# Usage:
|
|
12
|
-
# bash scripts/docs/check-manual.sh
|
|
13
|
-
# bash scripts/docs/check-manual.sh --strict # fail on warnings
|
|
14
|
-
|
|
15
|
-
set -euo pipefail
|
|
16
|
-
|
|
17
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
18
|
-
MANUAL_DIR="$REPO_ROOT/docs/manual"
|
|
19
|
-
STRICT=false
|
|
20
|
-
FAILS=0
|
|
21
|
-
|
|
22
|
-
for arg in "$@"; do
|
|
23
|
-
case "$arg" in
|
|
24
|
-
--strict) STRICT=true ;;
|
|
25
|
-
esac
|
|
26
|
-
done
|
|
27
|
-
|
|
28
|
-
log() { printf '[check] %s\n' "$*"; }
|
|
29
|
-
warn() {
|
|
30
|
-
printf '[check] WARN: %s\n' "$*" >&2
|
|
31
|
-
if $STRICT; then
|
|
32
|
-
FAILS=$((FAILS + 1))
|
|
33
|
-
fi
|
|
34
|
-
}
|
|
35
|
-
fail() {
|
|
36
|
-
printf '[check] FAIL: %s\n' "$*" >&2
|
|
37
|
-
FAILS=$((FAILS + 1))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
# -----------------------------------------------------------------------------
|
|
41
|
-
# Internal link check
|
|
42
|
-
# -----------------------------------------------------------------------------
|
|
43
|
-
|
|
44
|
-
check_links() {
|
|
45
|
-
log "checking internal links"
|
|
46
|
-
local broken=0
|
|
47
|
-
local mdfile path abs_path link
|
|
48
|
-
while IFS= read -r mdfile; do
|
|
49
|
-
while IFS= read -r link; do
|
|
50
|
-
[[ -z "$link" ]] && continue
|
|
51
|
-
path="${link#*(}"
|
|
52
|
-
path="${path%)*}"
|
|
53
|
-
path="${path%%#*}"
|
|
54
|
-
[[ -z "$path" ]] && continue
|
|
55
|
-
if [[ "$path" =~ ^/ ]]; then
|
|
56
|
-
abs_path="$REPO_ROOT$path"
|
|
57
|
-
else
|
|
58
|
-
abs_path="$(dirname "$mdfile")/$path"
|
|
59
|
-
fi
|
|
60
|
-
if [[ ! -f "$abs_path" ]]; then
|
|
61
|
-
# Try resolving
|
|
62
|
-
local resolved
|
|
63
|
-
resolved="$(cd "$(dirname "$mdfile")" 2>/dev/null && cd "$(dirname "$path")" 2>/dev/null && pwd)/$(basename "$path")"
|
|
64
|
-
[[ -f "$resolved" ]] && continue
|
|
65
|
-
fail "broken link in $(basename "$mdfile"): $link"
|
|
66
|
-
broken=$((broken + 1))
|
|
67
|
-
fi
|
|
68
|
-
done < <(grep -oE '\[[^]]+\]\([^)]+\.md[^)]*\)' "$mdfile" 2>/dev/null)
|
|
69
|
-
done < <(find "$MANUAL_DIR" -name '*.md' -type f)
|
|
70
|
-
[[ $broken -eq 0 ]] && log " ✓ all internal links resolve"
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
# -----------------------------------------------------------------------------
|
|
74
|
-
# Markdown lint
|
|
75
|
-
# -----------------------------------------------------------------------------
|
|
76
|
-
|
|
77
|
-
check_markdown_lint() {
|
|
78
|
-
if ! command -v markdownlint-cli2 &>/dev/null && ! command -v markdownlint &>/dev/null; then
|
|
79
|
-
warn "skipping markdown lint (markdownlint not installed)"
|
|
80
|
-
return
|
|
81
|
-
fi
|
|
82
|
-
log "running markdownlint"
|
|
83
|
-
local linter
|
|
84
|
-
linter="$(command -v markdownlint-cli2 || command -v markdownlint)"
|
|
85
|
-
if ! "$linter" "$MANUAL_DIR/**/*.md" 2>&1 | head -20; then
|
|
86
|
-
warn "markdown lint reported issues"
|
|
87
|
-
else
|
|
88
|
-
log " ✓ markdown clean"
|
|
89
|
-
fi
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# -----------------------------------------------------------------------------
|
|
93
|
-
# Spell check
|
|
94
|
-
# -----------------------------------------------------------------------------
|
|
95
|
-
|
|
96
|
-
check_spelling() {
|
|
97
|
-
if ! command -v codespell &>/dev/null; then
|
|
98
|
-
warn "skipping spell check (codespell not installed)"
|
|
99
|
-
return
|
|
100
|
-
fi
|
|
101
|
-
log "running codespell"
|
|
102
|
-
if codespell --skip='*.toml,*.json' "$MANUAL_DIR/" 2>&1 | head -10; then
|
|
103
|
-
log " ✓ no typos detected"
|
|
104
|
-
else
|
|
105
|
-
warn "codespell found possible typos"
|
|
106
|
-
fi
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
# -----------------------------------------------------------------------------
|
|
110
|
-
# Command coverage — every `dot <cmd>` in the repo must be in CLI reference
|
|
111
|
-
# -----------------------------------------------------------------------------
|
|
112
|
-
|
|
113
|
-
check_command_coverage() {
|
|
114
|
-
log "checking command coverage"
|
|
115
|
-
local cli_ref="$MANUAL_DIR/03-reference/01-dot-cli.md"
|
|
116
|
-
if [[ ! -f "$cli_ref" ]]; then
|
|
117
|
-
warn "CLI reference missing"
|
|
118
|
-
return
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# Extract commands referenced in manual (single quotes intentional for grep pattern)
|
|
122
|
-
local referenced
|
|
123
|
-
# shellcheck disable=SC2016
|
|
124
|
-
referenced="$(grep -rhoE '`dot [a-z][a-z-]+`' "$MANUAL_DIR"/*.md "$MANUAL_DIR"/**/*.md 2>/dev/null |
|
|
125
|
-
sort -u |
|
|
126
|
-
sed -E 's/`dot ([a-z-]+)`/\1/')"
|
|
127
|
-
|
|
128
|
-
# Extract commands documented in CLI reference (single quotes intentional for grep pattern)
|
|
129
|
-
local documented
|
|
130
|
-
# shellcheck disable=SC2016
|
|
131
|
-
documented="$(grep -oE '^### `dot [a-z][a-z-]+`' "$cli_ref" 2>/dev/null |
|
|
132
|
-
sed -E 's/### `dot ([a-z-]+)`/\1/' |
|
|
133
|
-
sort -u)"
|
|
134
|
-
|
|
135
|
-
# Diff
|
|
136
|
-
local missing
|
|
137
|
-
missing="$(comm -23 <(echo "$referenced") <(echo "$documented") 2>/dev/null)"
|
|
138
|
-
|
|
139
|
-
if [[ -n "$missing" ]]; then
|
|
140
|
-
warn "commands referenced but not documented in CLI reference:"
|
|
141
|
-
echo "$missing" | while read -r cmd; do
|
|
142
|
-
[[ -z "$cmd" ]] && continue
|
|
143
|
-
echo " - dot $cmd"
|
|
144
|
-
done
|
|
145
|
-
else
|
|
146
|
-
log " ✓ all referenced commands documented"
|
|
147
|
-
fi
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
# -----------------------------------------------------------------------------
|
|
151
|
-
# File structure check
|
|
152
|
-
# -----------------------------------------------------------------------------
|
|
153
|
-
|
|
154
|
-
check_structure() {
|
|
155
|
-
log "checking directory structure"
|
|
156
|
-
local required=(
|
|
157
|
-
"00-introduction.md"
|
|
158
|
-
"01-concepts/01-architecture.md"
|
|
159
|
-
"01-concepts/02-trust-model.md"
|
|
160
|
-
"01-concepts/03-theme-engine.md"
|
|
161
|
-
"01-concepts/04-fleet.md"
|
|
162
|
-
"01-concepts/05-self-healing.md"
|
|
163
|
-
"02-tutorials/01-first-install.md"
|
|
164
|
-
"02-tutorials/02-add-wallpaper.md"
|
|
165
|
-
"02-tutorials/03-create-profile.md"
|
|
166
|
-
"02-tutorials/04-encrypt-secret.md"
|
|
167
|
-
"02-tutorials/05-deploy-fleet.md"
|
|
168
|
-
"03-reference/01-dot-cli.md"
|
|
169
|
-
"03-reference/02-config-files.md"
|
|
170
|
-
"03-reference/03-environment.md"
|
|
171
|
-
"03-reference/04-templates.md"
|
|
172
|
-
"03-reference/05-feature-flags.md"
|
|
173
|
-
"04-cookbook/01-recipes.md"
|
|
174
|
-
"04-cookbook/02-troubleshooting.md"
|
|
175
|
-
"04-cookbook/03-faq.md"
|
|
176
|
-
"05-appendices/A-platform-matrix.md"
|
|
177
|
-
"05-appendices/B-security-checklist.md"
|
|
178
|
-
"05-appendices/C-glossary.md"
|
|
179
|
-
"05-appendices/D-bibliography.md"
|
|
180
|
-
"05-appendices/E-license.md"
|
|
181
|
-
)
|
|
182
|
-
local missing=0
|
|
183
|
-
for f in "${required[@]}"; do
|
|
184
|
-
if [[ ! -f "$MANUAL_DIR/$f" ]]; then
|
|
185
|
-
fail "missing required file: $f"
|
|
186
|
-
missing=$((missing + 1))
|
|
187
|
-
fi
|
|
188
|
-
done
|
|
189
|
-
[[ $missing -eq 0 ]] && log " ✓ all required files present"
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
# -----------------------------------------------------------------------------
|
|
193
|
-
# Main
|
|
194
|
-
# -----------------------------------------------------------------------------
|
|
195
|
-
|
|
196
|
-
main() {
|
|
197
|
-
log "validating $MANUAL_DIR"
|
|
198
|
-
check_structure
|
|
199
|
-
check_links
|
|
200
|
-
check_command_coverage
|
|
201
|
-
check_markdown_lint
|
|
202
|
-
check_spelling
|
|
203
|
-
|
|
204
|
-
echo ""
|
|
205
|
-
if [[ $FAILS -gt 0 ]]; then
|
|
206
|
-
printf '[check] FAILED: %d issue(s)\n' "$FAILS" >&2
|
|
207
|
-
exit 1
|
|
208
|
-
else
|
|
209
|
-
log "all checks passed"
|
|
210
|
-
fi
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
main
|
package/scripts/dot/lib/bento.sh
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Sourced by scripts/dot/commands/*.sh and dot_local/bin/executable_dot; inherits set -euo pipefail.
|
|
4
|
-
# Dotfiles 2026: Atomic Intelligence Surface
|
|
5
|
-
# High-fidelity, perfectly aligned, and professional.
|
|
6
|
-
|
|
7
|
-
_dotfiles_bento_render() {
|
|
8
|
-
# Catppuccin Mocha palette — consistent with the project's terminal theme
|
|
9
|
-
# so the bento card matches the user's configured color scheme.
|
|
10
|
-
local c_cyan='\x1b[38;2;0;255;255m' # Accent: header + bullet markers
|
|
11
|
-
local c_gray='\x1b[38;2;147;153;178m' # Overlay1: metric labels (subdued)
|
|
12
|
-
local c_blue='\x1b[38;2;116;199;236m' # Sapphire: metric values (readable)
|
|
13
|
-
local c_slate='\x1b[38;2;49;50;68m' # Surface0: dividers (near-invisible)
|
|
14
|
-
local c_green='\x1b[38;2;166;227;161m' # Green: status confirmations
|
|
15
|
-
local c_reset='\x1b[0m'
|
|
16
|
-
local c_bold='\x1b[1m'
|
|
17
|
-
|
|
18
|
-
# Detect OS to show platform-specific icon in the bento card
|
|
19
|
-
local os_name="Linux"
|
|
20
|
-
local os_icon=""
|
|
21
|
-
case "$(uname)" in
|
|
22
|
-
Darwin)
|
|
23
|
-
os_name="macOS"
|
|
24
|
-
os_icon=""
|
|
25
|
-
;;
|
|
26
|
-
*)
|
|
27
|
-
[[ -f /proc/sys/kernel/osrelease ]] && grep -qiE '(microsoft|wsl)' /proc/sys/kernel/osrelease && os_name="WSL"
|
|
28
|
-
os_icon=""
|
|
29
|
-
;;
|
|
30
|
-
esac
|
|
31
|
-
|
|
32
|
-
# Render a fixed-width card (42 cols) so output aligns in any terminal width
|
|
33
|
-
printf "\n"
|
|
34
|
-
printf " ${c_cyan}${c_bold}💎 D O T F I L E S${c_reset} ${c_slate}[v0.2.502]${c_reset}\n"
|
|
35
|
-
printf " ${c_slate}──────────────────────────────────────────${c_reset}\n"
|
|
36
|
-
|
|
37
|
-
# Key system properties at a glance — answers "is my env healthy?" in 1 second
|
|
38
|
-
printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}rousseau @ %s (%s)${c_reset}\n" "Platform" "$os_name" "$os_icon"
|
|
39
|
-
printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Hardened (GPG/SOPS/Enclave)${c_reset}\n" "Security"
|
|
40
|
-
printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Idempotent • Deterministic${c_reset}\n" "Strategy"
|
|
41
|
-
printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}Active (Vault Synced)${c_reset}\n" "Cloud"
|
|
42
|
-
printf " ${c_cyan}•${c_reset} ${c_gray}%-12s${c_reset} ${c_blue}60fps UI • <45ms Initial${c_reset}\n" "Latency"
|
|
43
|
-
|
|
44
|
-
# Footer confirms shell startup strategy — reassures user the env is optimized
|
|
45
|
-
printf " ${c_slate}──────────────────────────────────────────${c_reset}\n"
|
|
46
|
-
printf " ${c_green}✓ Hydrated${c_reset} ${c_slate}•${c_reset} ${c_green}Zero-Jank Async${c_reset} ${c_slate}•${c_reset} ${c_cyan}Atomic${c_reset}\n"
|
|
47
|
-
printf "\n"
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
_dotfiles_bento_render
|
package/scripts/dot/lib/log.sh
DELETED
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Sourced by scripts/dot/commands/*.sh and scripts/diagnostics/*; inherits set -euo pipefail.
|
|
4
|
-
# Structured JSON logging and metrics library.
|
|
5
|
-
# Source this file to emit machine-readable logs and performance metrics.
|
|
6
|
-
#
|
|
7
|
-
# Usage:
|
|
8
|
-
# source "$(dirname "${BASH_SOURCE[0]}")/log.sh"
|
|
9
|
-
# dot_log info "apply_start" "source=chezmoi"
|
|
10
|
-
# dot_metric "shell_startup" 142 ms
|
|
11
|
-
|
|
12
|
-
# Re-source guard: re-sourcing would mint a new DOT_TRACE_ID and break
|
|
13
|
-
# correlation across modules that already captured the original.
|
|
14
|
-
[[ "${_DOT_LIB_LOG_LOADED:-0}" == "1" ]] && return 0
|
|
15
|
-
_DOT_LIB_LOG_LOADED=1
|
|
16
|
-
|
|
17
|
-
# Correlation ID for tracing across commands in a single invocation
|
|
18
|
-
DOT_TRACE_ID="${DOT_TRACE_ID:-$(date +%s%N 2>/dev/null | tail -c 12 || date +%s)}"
|
|
19
|
-
export DOT_TRACE_ID
|
|
20
|
-
|
|
21
|
-
_DOT_LOG_STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles"
|
|
22
|
-
|
|
23
|
-
dot_agent_checkpoint_dir() {
|
|
24
|
-
printf '%s\n' "$_DOT_LOG_STATE_DIR/checkpoints"
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
dot_jsonl_append() {
|
|
28
|
-
local file="$1" payload="$2"
|
|
29
|
-
mkdir -p "$_DOT_LOG_STATE_DIR" 2>/dev/null || return 0
|
|
30
|
-
printf '%s\n' "$payload" >>"$_DOT_LOG_STATE_DIR/$file" 2>/dev/null || true
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
# Always-on file logging (appends to dot.log, rotates at 1MB)
|
|
34
|
-
dot_log_file() {
|
|
35
|
-
local level="$1" event="$2"
|
|
36
|
-
shift 2
|
|
37
|
-
local log_file="$_DOT_LOG_STATE_DIR/dot.log"
|
|
38
|
-
mkdir -p "$_DOT_LOG_STATE_DIR" 2>/dev/null || return 0
|
|
39
|
-
# Rotate at 1MB
|
|
40
|
-
if [[ -f "$log_file" ]]; then
|
|
41
|
-
local size
|
|
42
|
-
size=$(stat -c '%s' "$log_file" 2>/dev/null || stat -f '%z' "$log_file" 2>/dev/null || echo 0)
|
|
43
|
-
if [[ "$size" -gt 1048576 ]]; then
|
|
44
|
-
mv "$log_file" "${log_file}.1" 2>/dev/null || true
|
|
45
|
-
fi
|
|
46
|
-
fi
|
|
47
|
-
printf '[%s] [%s] [%s] %s' \
|
|
48
|
-
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$level" "$DOT_TRACE_ID" "$event" >>"$log_file" 2>/dev/null || return 0
|
|
49
|
-
while [[ $# -gt 0 ]]; do
|
|
50
|
-
printf ' %s' "$1" >>"$log_file" 2>/dev/null || return 0
|
|
51
|
-
shift
|
|
52
|
-
done
|
|
53
|
-
printf '\n' >>"$log_file" 2>/dev/null || true
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
# Structured log entry (JSON when DOTFILES_JSON_LOG=1, silent otherwise)
|
|
57
|
-
# Always writes to file log
|
|
58
|
-
dot_log() {
|
|
59
|
-
local level="$1" event="$2"
|
|
60
|
-
shift 2
|
|
61
|
-
local ts
|
|
62
|
-
ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
63
|
-
# Always-on file logging
|
|
64
|
-
dot_log_file "$level" "$event" "$@"
|
|
65
|
-
# JSON stdout logging when enabled
|
|
66
|
-
if [[ "${DOTFILES_JSON_LOG:-0}" = "1" ]]; then
|
|
67
|
-
printf '{"time":"%s","level":"%s","event":"%s","command":"%s","trace_id":"%s"' \
|
|
68
|
-
"$ts" "$level" "$event" "${DOT_COMMAND:-unknown}" "$DOT_TRACE_ID"
|
|
69
|
-
while [[ $# -gt 0 ]]; do
|
|
70
|
-
printf ',"%s":"%s"' "${1%%=*}" "${1#*=}"
|
|
71
|
-
shift
|
|
72
|
-
done
|
|
73
|
-
printf '}\n'
|
|
74
|
-
fi
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
# Metrics emission (append to JSONL metrics file)
|
|
78
|
-
dot_metric() {
|
|
79
|
-
local name="$1" value="$2" unit="${3:-ms}"
|
|
80
|
-
local ts
|
|
81
|
-
ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
82
|
-
local metrics_file="$_DOT_LOG_STATE_DIR/metrics.jsonl"
|
|
83
|
-
mkdir -p "$_DOT_LOG_STATE_DIR" 2>/dev/null || return 0
|
|
84
|
-
printf '{"time":"%s","metric":"%s","value":%s,"unit":"%s","trace_id":"%s"}\n' \
|
|
85
|
-
"$ts" "$name" "$value" "$unit" "$DOT_TRACE_ID" >>"$metrics_file" 2>/dev/null || true
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
# Print recent metrics (for `dot metrics` command)
|
|
89
|
-
dot_metrics_summary() {
|
|
90
|
-
local metrics_file="$_DOT_LOG_STATE_DIR/metrics.jsonl"
|
|
91
|
-
local count="${1:-20}"
|
|
92
|
-
if [[ ! -f "$metrics_file" ]]; then
|
|
93
|
-
echo "No metrics collected yet."
|
|
94
|
-
echo "Metrics are recorded at: $metrics_file"
|
|
95
|
-
return 0
|
|
96
|
-
fi
|
|
97
|
-
tail -n "$count" "$metrics_file"
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
dot_agent_session_log() {
|
|
101
|
-
local event="$1" profile="$2" status="${3:-ok}"
|
|
102
|
-
shift 3 || true
|
|
103
|
-
local ts payload
|
|
104
|
-
ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
105
|
-
payload=$(printf '{"time":"%s","event":"%s","profile":"%s","status":"%s","trace_id":"%s","command":"%s"' \
|
|
106
|
-
"$ts" "$event" "$profile" "$status" "$DOT_TRACE_ID" "${DOT_COMMAND:-unknown}")
|
|
107
|
-
while [[ $# -gt 0 ]]; do
|
|
108
|
-
payload+=$(printf ',"%s":"%s"' "${1%%=*}" "${1#*=}")
|
|
109
|
-
shift
|
|
110
|
-
done
|
|
111
|
-
payload+='}'
|
|
112
|
-
dot_jsonl_append "agent-sessions.jsonl" "$payload"
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
dot_agent_session_tail() {
|
|
116
|
-
local count="${1:-20}"
|
|
117
|
-
local sessions_file="$_DOT_LOG_STATE_DIR/agent-sessions.jsonl"
|
|
118
|
-
if [[ ! -f "$sessions_file" ]]; then
|
|
119
|
-
echo "No agent sessions recorded yet."
|
|
120
|
-
echo "Agent sessions are recorded at: $sessions_file"
|
|
121
|
-
return 0
|
|
122
|
-
fi
|
|
123
|
-
tail -n "$count" "$sessions_file"
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
dot_agent_checkpoint_create() {
|
|
127
|
-
local profile="$1" status="${2:-ready}"
|
|
128
|
-
shift 2 || true
|
|
129
|
-
|
|
130
|
-
local checkpoint_dir checkpoint_id checkpoint_file created_at
|
|
131
|
-
local argv_json='[]'
|
|
132
|
-
checkpoint_dir="$(dot_agent_checkpoint_dir)"
|
|
133
|
-
checkpoint_id="${DOT_AGENT_CHECKPOINT_ID:-$(date -u +%Y%m%dT%H%M%SZ)-${DOT_TRACE_ID}}"
|
|
134
|
-
checkpoint_file="$checkpoint_dir/${checkpoint_id}.json"
|
|
135
|
-
created_at="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
136
|
-
|
|
137
|
-
mkdir -p "$checkpoint_dir" 2>/dev/null || return 0
|
|
138
|
-
|
|
139
|
-
if [[ "$#" -gt 0 ]] && command -v jq >/dev/null 2>&1; then
|
|
140
|
-
argv_json="$(printf '%s\n' "$@" | jq -R . | jq -s .)"
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
if command -v jq >/dev/null 2>&1; then
|
|
144
|
-
jq -n \
|
|
145
|
-
--arg id "$checkpoint_id" \
|
|
146
|
-
--arg time "$created_at" \
|
|
147
|
-
--arg profile "$profile" \
|
|
148
|
-
--arg status "$status" \
|
|
149
|
-
--arg trace_id "$DOT_TRACE_ID" \
|
|
150
|
-
--arg command "${DOT_COMMAND:-unknown}" \
|
|
151
|
-
--arg cwd "$(pwd)" \
|
|
152
|
-
--arg approval "${DOT_AGENT_APPROVAL:-}" \
|
|
153
|
-
--arg filesystem "${DOT_AGENT_FILESYSTEM:-}" \
|
|
154
|
-
--arg network "${DOT_AGENT_NETWORK:-}" \
|
|
155
|
-
--arg mcp_profile "${DOT_AGENT_MCP_PROFILE:-}" \
|
|
156
|
-
--arg max_steps "${DOT_AGENT_MAX_STEPS:-}" \
|
|
157
|
-
--argjson argv "$argv_json" \
|
|
158
|
-
'{
|
|
159
|
-
id: $id,
|
|
160
|
-
created_at: $time,
|
|
161
|
-
profile: $profile,
|
|
162
|
-
status: $status,
|
|
163
|
-
trace_id: $trace_id,
|
|
164
|
-
command: $command,
|
|
165
|
-
cwd: $cwd,
|
|
166
|
-
argv: $argv,
|
|
167
|
-
env: {
|
|
168
|
-
approval: $approval,
|
|
169
|
-
filesystem: $filesystem,
|
|
170
|
-
network: $network,
|
|
171
|
-
mcp_profile: $mcp_profile,
|
|
172
|
-
max_steps: $max_steps
|
|
173
|
-
}
|
|
174
|
-
}' >"$checkpoint_file"
|
|
175
|
-
else
|
|
176
|
-
printf '{"id":"%s","created_at":"%s","profile":"%s","status":"%s","trace_id":"%s","command":"%s"}\n' \
|
|
177
|
-
"$checkpoint_id" "$created_at" "$profile" "$status" "$DOT_TRACE_ID" "${DOT_COMMAND:-unknown}" >"$checkpoint_file"
|
|
178
|
-
fi
|
|
179
|
-
|
|
180
|
-
printf '%s\n' "$checkpoint_file"
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
# Convenience wrappers for human-readable log output.
|
|
184
|
-
# Source this file and call log_info/log_warn/log_error/log_success instead of
|
|
185
|
-
# ui_info/ui_warn/ui_err/ui_ok when the caller prefers semantic log names.
|
|
186
|
-
log_info() { ui_info "$*"; }
|
|
187
|
-
log_warn() { ui_warn "$*"; }
|
|
188
|
-
log_error() { ui_err "$*"; }
|
|
189
|
-
log_success() { ui_ok "$*"; }
|
|
190
|
-
|
|
191
|
-
dot_agent_checkpoint_tail() {
|
|
192
|
-
local count="${1:-20}"
|
|
193
|
-
local checkpoint_dir file
|
|
194
|
-
checkpoint_dir="$(dot_agent_checkpoint_dir)"
|
|
195
|
-
[[ -d "$checkpoint_dir" ]] || return 0
|
|
196
|
-
find "$checkpoint_dir" -maxdepth 1 -type f -name '*.json' | sort | tail -n "$count" | while IFS= read -r file; do
|
|
197
|
-
[[ -n "$file" ]] || continue
|
|
198
|
-
cat "$file"
|
|
199
|
-
done
|
|
200
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Sourced by scripts/dot/commands/*.sh; inherits set -euo pipefail.
|
|
4
|
-
# Dotfiles CLI Platform Abstraction
|
|
5
|
-
# Unified helpers for macOS, Linux, and WSL parity.
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
if ! declare -F dot_is_wsl >/dev/null; then
|
|
10
|
-
dot_is_wsl() {
|
|
11
|
-
[[ -f /proc/sys/kernel/osrelease ]] && grep -qiE '(microsoft|wsl)' /proc/sys/kernel/osrelease
|
|
12
|
-
}
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
dot_platform_id() {
|
|
16
|
-
case "$(uname -s)" in
|
|
17
|
-
Darwin) printf "%s\n" "macos" ;;
|
|
18
|
-
Linux)
|
|
19
|
-
if dot_is_wsl; then
|
|
20
|
-
printf "%s\n" "wsl"
|
|
21
|
-
else
|
|
22
|
-
printf "%s\n" "linux"
|
|
23
|
-
fi
|
|
24
|
-
;;
|
|
25
|
-
*) printf "%s\n" "unknown" ;;
|
|
26
|
-
esac
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
dot_host_os() {
|
|
30
|
-
if dot_is_wsl; then
|
|
31
|
-
printf "%s\n" "windows"
|
|
32
|
-
return
|
|
33
|
-
fi
|
|
34
|
-
case "$(uname -s)" in
|
|
35
|
-
Darwin) printf "%s\n" "macos" ;;
|
|
36
|
-
Linux) printf "%s\n" "linux" ;;
|
|
37
|
-
*) printf "%s\n" "unknown" ;;
|
|
38
|
-
esac
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
# Convert host-native path into Linux path when inside WSL.
|
|
42
|
-
#
|
|
43
|
-
# Contract:
|
|
44
|
-
# - In WSL: requires `wslpath`. Returns 2 (with a stderr error) if
|
|
45
|
-
# missing — callers must not silently treat a Windows-style path
|
|
46
|
-
# as Linux-safe.
|
|
47
|
-
# - Outside WSL: paths are already Linux/macOS paths; echoes the
|
|
48
|
-
# input unchanged and returns 0.
|
|
49
|
-
# - Empty input returns 1 (usage error).
|
|
50
|
-
dot_path_to_unix() {
|
|
51
|
-
local p="${1:-}"
|
|
52
|
-
[[ -n "$p" ]] || return 1
|
|
53
|
-
if dot_is_wsl; then
|
|
54
|
-
if ! command -v wslpath >/dev/null 2>&1; then
|
|
55
|
-
printf "dot_path_to_unix: wslpath required in WSL but not found\n" >&2
|
|
56
|
-
return 2
|
|
57
|
-
fi
|
|
58
|
-
wslpath -u "$p"
|
|
59
|
-
return
|
|
60
|
-
fi
|
|
61
|
-
printf "%s\n" "$p"
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
# Convert Linux path into host-native path when inside WSL.
|
|
65
|
-
# Same contract as dot_path_to_unix (see above).
|
|
66
|
-
dot_path_to_native() {
|
|
67
|
-
local p="${1:-}"
|
|
68
|
-
[[ -n "$p" ]] || return 1
|
|
69
|
-
if dot_is_wsl; then
|
|
70
|
-
if ! command -v wslpath >/dev/null 2>&1; then
|
|
71
|
-
printf "dot_path_to_native: wslpath required in WSL but not found\n" >&2
|
|
72
|
-
return 2
|
|
73
|
-
fi
|
|
74
|
-
wslpath -w "$p"
|
|
75
|
-
return
|
|
76
|
-
fi
|
|
77
|
-
printf "%s\n" "$p"
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
dot_open_path() {
|
|
81
|
-
local target="${1:-}"
|
|
82
|
-
[[ -n "$target" ]] || return 1
|
|
83
|
-
|
|
84
|
-
case "$(dot_platform_id)" in
|
|
85
|
-
macos)
|
|
86
|
-
command open "$target"
|
|
87
|
-
;;
|
|
88
|
-
wsl)
|
|
89
|
-
if command -v wslview >/dev/null 2>&1; then
|
|
90
|
-
wslview "$target"
|
|
91
|
-
else
|
|
92
|
-
explorer.exe "$(dot_path_to_native "$target")"
|
|
93
|
-
fi
|
|
94
|
-
;;
|
|
95
|
-
linux)
|
|
96
|
-
xdg-open "$target"
|
|
97
|
-
;;
|
|
98
|
-
*)
|
|
99
|
-
return 1
|
|
100
|
-
;;
|
|
101
|
-
esac
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
dot_require_platform() {
|
|
105
|
-
local current
|
|
106
|
-
current="$(dot_platform_id)"
|
|
107
|
-
for allowed in "$@"; do
|
|
108
|
-
[[ "$current" == "$allowed" ]] && return 0
|
|
109
|
-
done
|
|
110
|
-
echo " ! This command requires $* (detected: $current)" >&2
|
|
111
|
-
exit 2
|
|
112
|
-
}
|