@sebastienrousseau/dotfiles 0.2.501 → 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 +155 -4
- package/LICENSE +21 -1283
- package/README.md +40 -8
- 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/01-dot-cli.md +63 -45
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/03-reference/05-feature-flags.md +62 -3
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -55
- package/docs/manual/index.md +66 -0
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +40 -6
- package/docs/operations/HARD_AUDIT_2026.md +631 -0
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/REGISTRY.md +89 -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 +665 -0
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +9 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +81 -0
- package/docs/registry.json +6 -0
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +121 -0
- package/docs/security/COMMIT_SIGNING.md +138 -0
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/DISCLOSURE.md +130 -0
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/KEY_ROTATION.md +81 -1
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +130 -15
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/docs/security/security-pubkey.asc +15 -0
- package/install.sh +67 -38
- 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 +45 -15
- 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 +27 -22
- package/scripts/dot/commands/agents.sh +335 -0
- package/scripts/dot/commands/ai.sh +144 -25
- package/scripts/dot/commands/aliases.sh +10 -8
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +12 -6
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +290 -14
- package/scripts/dot/commands/init.sh +184 -0
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +19 -10
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +263 -0
- 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 +62 -4
- 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/lib/secrets_provider.sh +32 -6
- 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 +18 -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/check-disclosure-key-expiry.sh +110 -0
- 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-configs.sh +11 -2
- 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 +58 -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/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/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 -134
- 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 -635
- 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 -596
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -77
- 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 -283
- 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/install-chezmoi-verified.sh +0 -64
- package/scripts/ci/run-coverage.sh +0 -362
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- 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 -99
- package/scripts/dot/lib/ui.sh +0 -518
- 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.501]${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,99 +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
|
-
dot_path_to_unix() {
|
|
43
|
-
local p="${1:-}"
|
|
44
|
-
if [[ -z "$p" ]]; then
|
|
45
|
-
return 1
|
|
46
|
-
fi
|
|
47
|
-
if dot_is_wsl && command -v wslpath >/dev/null 2>&1; then
|
|
48
|
-
wslpath -u "$p"
|
|
49
|
-
return
|
|
50
|
-
fi
|
|
51
|
-
printf "%s\n" "$p"
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
# Convert Linux path into host-native path when inside WSL.
|
|
55
|
-
dot_path_to_native() {
|
|
56
|
-
local p="${1:-}"
|
|
57
|
-
if [[ -z "$p" ]]; then
|
|
58
|
-
return 1
|
|
59
|
-
fi
|
|
60
|
-
if dot_is_wsl && command -v wslpath >/dev/null 2>&1; then
|
|
61
|
-
wslpath -w "$p"
|
|
62
|
-
return
|
|
63
|
-
fi
|
|
64
|
-
printf "%s\n" "$p"
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
dot_open_path() {
|
|
68
|
-
local target="${1:-}"
|
|
69
|
-
[[ -n "$target" ]] || return 1
|
|
70
|
-
|
|
71
|
-
case "$(dot_platform_id)" in
|
|
72
|
-
macos)
|
|
73
|
-
command open "$target"
|
|
74
|
-
;;
|
|
75
|
-
wsl)
|
|
76
|
-
if command -v wslview >/dev/null 2>&1; then
|
|
77
|
-
wslview "$target"
|
|
78
|
-
else
|
|
79
|
-
explorer.exe "$(dot_path_to_native "$target")"
|
|
80
|
-
fi
|
|
81
|
-
;;
|
|
82
|
-
linux)
|
|
83
|
-
xdg-open "$target"
|
|
84
|
-
;;
|
|
85
|
-
*)
|
|
86
|
-
return 1
|
|
87
|
-
;;
|
|
88
|
-
esac
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
dot_require_platform() {
|
|
92
|
-
local current
|
|
93
|
-
current="$(dot_platform_id)"
|
|
94
|
-
for allowed in "$@"; do
|
|
95
|
-
[[ "$current" == "$allowed" ]] && return 0
|
|
96
|
-
done
|
|
97
|
-
echo " ! This command requires $* (detected: $current)" >&2
|
|
98
|
-
exit 2
|
|
99
|
-
}
|