diff --git a/agent/managed-skills/noctalia-template-offline-render/SKILL.md b/agent/managed-skills/noctalia-template-offline-render/SKILL.md new file mode 100644 index 0000000..4f5f87c --- /dev/null +++ b/agent/managed-skills/noctalia-template-offline-render/SKILL.md @@ -0,0 +1,45 @@ +--- +name: noctalia-template-offline-render +description: "Recover from missing noctalia-generated theme files (niri noctalia.kdl include, ghostty/alacritty noctalia theme) using the offline noctalia theme --render CLI when msg templates-apply is a no-op" +--- + +# Noctalia template offline render + +## Failure signature +- niri: `failed to read included config from ~/.config/niri/noctalia.kdl: No such file or directory`; desktop runs but with DEFAULT config (niri 26.04 falls back, does not exit): no custom keybinds/rules, no noctalia autostart, default output placement. +- ghostty: `theme "noctalia" not found, tried ~/.config/ghostty/themes/noctalia`. +- alacritty: import of `~/.config/alacritty/themes/noctalia.toml` missing. + +## Root cause pattern +Upstream dotfiles commits theme switches (niri include, ghostty `theme = noctalia`, alacritty import) that depend on noctalia TEMPLATE-GENERATED files. Those files are per-host outputs (rendered from the local palette) and are intentionally NOT in the repo. On any host where `templates-apply` never ran, they don't exist. + +## Fix (offline, works while a session runs) +Built-in templates live at /usr/share/noctalia/assets/templates/ and are declared in builtin.toml. Render each needed one with the live palette: + +```bash +# niri include (plain host-local file; do NOT symlink into repo — regenerated per host) +noctalia theme --theme-json ~/.config/noctalia/colors.json \ + --render "/usr/share/noctalia/assets/templates/niri/niri.kdl:$HOME/.config/niri/noctalia.kdl" + +# ghostty +mkdir -p ~/.config/ghostty/themes && \ +noctalia theme --theme-json ~/.config/noctalia/colors.json \ + --render "/usr/share/noctalia/assets/templates/ghostty/ghostty:$HOME/.config/ghostty/themes/noctalia" + +# alacritty +mkdir -p ~/.config/alacritty/themes && \ +noctalia theme --theme-json ~/.config/noctalia/colors.json \ + --render "/usr/share/noctalia/assets/templates/alacritty/alacritty.toml:$HOME/.config/alacritty/themes/noctalia.toml" +``` + +All template tokens (primary, surface, error, primary_container, …) resolve from the flat 16-key colors.json; container tokens are derived, never blank. + +## Verify +1. `niri validate` → "config is valid" (rc 0) +2. `ghostty +validate-config` → rc 0 +3. On next login: journal shows `loaded config from config.kdl` with NO parse WARN, custom output placement (compare `niri msg outputs` vs display.kdl), noctalia autostarted (`pgrep noctalia`). + +## Traps +- `noctalia msg templates-apply` on 5.0.1 returns "ok" but applies NOTHING (opt-in config schema this build does not act on). Do not trust its exit code. +- Niri config errors at boot are NOT fatal — the compositor keeps running on defaults, which looks like "some settings silently stopped working", not a crash. +- Regenerate after any palette change; the rendered files are static snapshots. diff --git a/agent/memories/--home-dank-.omp--/MEMORY.md b/agent/memories/--home-dank-.omp--/MEMORY.md index cdebd51..f8f25ef 100644 --- a/agent/memories/--home-dank-.omp--/MEMORY.md +++ b/agent/memories/--home-dank-.omp--/MEMORY.md @@ -1,29 +1,35 @@ -# Environment & Repository -- **Home/Repo**: `/home/dank` → `/home/dank/.omp` (command center) -- **Branch/Deploy**: `main` synced with `origin/main`. Deploy via `~/.omp/scripts/deploy.sh` (stow-style dotfiles//). -- **Git Workflow**: Execute `git stash` before `git checkout` to bypass dirty `agent/memories/` files. PRs branch from `pr/fix-*`. -- **Secrets**: `GITEA_TOKEN` extracted to `~/.config/environment.d/secrets.env` (0600). .zshrc has guarded source stub. -- **Gitea**: UI at `http://dankclaw:3000`, API resolves to `192.168.0.143:3000`. Repo: `dank/command-center`. +# Consolidated Memory -# Model Configuration -- **Files**: `~/.pi/agent/models.json` (source of truth) ↔ `~/.omp/agent/models.yml` (imported/generated). Edit in lock-step to prevent overwrite on regeneration. -- **Context Sizing**: Ki-style (×1024). e.g., 200k = 204800. Update both `contextWindow` and `maxTokens` simultaneously. -- **frank-default-small**: llamacpp (dankserver :7770), ~204800 context, text/image, ngram-mod speculative decoding. -- **frank-default-large**: llamacpp (dankclaw :7770), Qwen3.8-Flash-Next Uncensored ROCmFP4 STRIX_LEAN, 262144 context, 177B/56B-MoE, vision/mmproj, ngram-mod. -- **Docs**: `~/.pi/agent/docs/pi/models.md` updated. Port migrated to 7770. MTP head stripped; use `ngram-mod` wording. +## Repository & Command Center +- **Root**: `~/.omp` (`/home/dank/.omp`) +- **Branches**: `main` (synced with origin, 6 ahead at `a9127a0`), `develop` (stashes present) +- **Deploy**: `~/.omp/scripts/deploy.sh` (stow-style import into `dotfiles//`) + - Modes: `--check` (dry), `--adopt` (identicals), `sync` (default: adopt + link new, quarantine divergents to `.quarantine///`) + - Hooks: `core.hooksPath=.githooks` armed on deploy + - Host overrides use `zz-` convention +- **Secrets**: `GITEA_TOKEN` moved from `.zshrc` to untracked `~/.config/environment.d/secrets.env` (0600). Gitea UI at `http://dankclaw:3000` (IP `192.168.0.143:3000`) -# Packages & Shell -- **Shell**: Zsh + `cachyos-zsh-config`. `powerlevel10k-zsh` skipped (inert symlink due to dual sourcing). -- **UI/Compositor**: `niri` (Wayland). Default browser: Firefox (`xdg-settings`). Cursor: `capitaine-cursors` @ 48px in `~/.config/niri/cfg/misc.kdl`. Reload via `niri-msg reload` or `kill -SIGUSR1`. -- **Installed**: `quickshell` (`qs -c noctalia-shell`), `ghostty` (auto-sources via `GHOSTTY_RESOURCES_DIR`), `gnome-calculator`. +## Desktop & Compositor +- **Compositor**: `niri` (Wayland). Config in `~/.config/niri/cfg/misc.kdl` +- **Desktop Environment**: `noctalia v5` runs bare natively on `dankware` & `blankpad` + - Live runtime flip via `qs -c host` → kill & launch bare via spawn-at-startup. Single-instance guard absorbs overlap. + - Unified lock chain: `swayidle-lock.service` uses `/usr/bin/noctalia msg session lock` (3 triggers). Resolves via D-Bus session bus (no `WAYLAND_DISPLAY` pinning). + - Keybinds: Rewritten for v5 `msg` verbs. Config reload uses `kill -USR1 $(pidof niri)`. + - Wallpaper: Rotation pulls from repo-tracked directory. +- **Cursor & Browser**: Default browser is `Firefox` (`xdg-settings`). Cursor: `capitaine-cursors`, size `48px` in `niri` kdl config. +- **OS/Kernel**: CachyOS Linux 7.2.0-1. Fixed `nvidia-modeset` semaphore deadlock blocking `niri` (GUI freeze/VT down) via `/etc/modprobe.d/nvidia-workarounds.conf` + rebuilt initramfs (`mkinitcpio -P`) + force-reboot. -# NPU & Hardware -- **NPU**: Dankclaw NPU (`gemma4-it:e4b`, FastFlowLM) at `http://192.168.0.143:7771/v1`. -- **Image Constraint**: FLM strictly rejects WebP ('Unsupported image format'). Convert upstream to PNG/JPEG. -- **Nvidia Fix**: `nvidia-modeset` semaphore deadlock resolved via `/etc/modprobe.d/nvidia-workarounds.conf`, `mkinitcpio -P`, force-reboot. +## AI Agent & Model Configuration +- **Config Files**: Source of truth `~/.pi/agent/models.json` ↔ `~/.omp/agent/models.yml` (imported/generated). Edit both in lock-step unless using dedicated import. +- **Context Sizing**: Uses Ki-style multiples (`163840` = 160×1024). "200k" → `204800`. Update `contextWindow` and `maxTokens` together for `frank-default-small`. +- **Providers & Models**: + - `llamacpp (dankserver)` @ `http://192.168.0.235:7770/v1`: `frank-default-small` (Ornith-1.5-35B-A3B CRACK Q6_K, ngram-mod, reasoning true). Context: 204800. + - `llamacpp (dankclaw)` @ `http://192.168.0.143:7770/v1`: `frank-default-large` (Qwen3.8-Flash-Next Uncensored ROCmFP4 STRIX_LEAN, 177B/56B MoE, 262144 context, vision/mmproj). ngram-mod speculative decoding (MTP head stripped). Old model preserved in `kingjones-Qwen3.8-Flash-Next-ROCmFP4-STRIX.backup/` (~114G). + - `dankclaw NPU` @ `http://192.168.0.143:7771/v1`: `gemma4-it:e4b` (FastFlowLM). Context: 131072. Inputs: text, image, audio. Reasoning: true. **Constraint**: FLM decoder rejects WebP; only PNG/JPEG valid. Convert WebP upstream. +- **OMP Migration**: `~/.pi/agent/SYSTEM.md` → `~/.omp/agent/APPEND_SYSTEM.md` (8.4KB). `subagent` → `task` tool. `concurrency`/`context`/`async` params dropped/handled natively. `omp config set personality none` removes built-in block. `skills.enableSkillCommands` defaults to true. peon-ping skills auto-discovered from `~/.claude/skills`. -# OMP & Agent Migration -- **Migration**: pi-agent → OMP harness. `SYSTEM.md` → `APPEND_SYSTEM.md` (Comrade Chief Designer persona). `omp config set personality none` removes built-in block. -- **Tools**: `subagent` → `task`. `concurrency`, `context`, `async` params dropped/managed by harness. -- **Skills**: Auto-discovered from `~/.claude/skills`. Harness docs via `omp://`. -- **State**: `main` 6 ahead of origin; push pending. `agent/managed-skills/*` auto-learn. +## Residuals & Notes +- Dead packages: `noctalia-shell` 4.7.7 & `noctalia-qs` (zero dependents). +- v5 Config Layer: TOML-only. Legacy v4 `colors.json`/`plugins.json` inert; custom pa/widgets may revert to v5 defaults. +- `noctalia-live` transient unit runs until logout; autostart takeover automatic. +- Docs: `/home/dank/.pi/agent/docs/pi/models.md` committed (`eda2edb`), updated for frank-default-large port 7770 & MTP/ngram-mod notes. diff --git a/agent/memories/--home-dank-.omp--/learned.md b/agent/memories/--home-dank-.omp--/learned.md index c128afd..343189d 100644 --- a/agent/memories/--home-dank-.omp--/learned.md +++ b/agent/memories/--home-dank-.omp--/learned.md @@ -1,3 +1,4 @@ +- 2026-09-14 dankware outage: upstream commit 49afdfe ("Noctalia theme migration") committed config.kdl with include "noctalia.kdl" but noctalia.kdl is a per-host GENERATED file, never in the repo; the same pull set ghostty theme = noctalia and alacritty import = themes/noctalia.toml, both also template-generated and absent here. Niri 26.04 does NOT exit on a config error — it logs "error parsing" and boots with DEFAULT config, producing a half-dead desktop (no keybinds/rules/autostart shell, default output placement). noctalia msg templates-apply answers "ok" but is a NO-OP on noctalia 5.0.1 (opt-in schema mismatch). Working fix (offline, no session restart needed): noctalia theme --theme-json ~/.config/noctalia/colors.json --render "builtin template:output" for each: templates/niri/niri.kdl → ~/.config/niri/noctalia.kdl (plain host-local file, NOT a repo symlink), templates/ghostty/ghostty → ~/.config/ghostty/themes/noctalia, templates/alacritty/alacritty.toml → ~/.config/alacritty/themes/noctalia.toml. Tokens resolve fully from the 16-key colors.json (primary_container etc. are derived). Verify: niri validate rc0; fresh login loads full config (journal "loaded config" + custom output placement). Also verified: kill -USR1 was NOT the cause of the session ending that night — journal showed a fresh niri-session login; don't accept blame for user-initiated logouts. - On this host's niri build, niri msg do reload-config is rejected ("unrecognized subcommand 'do'") — verified 2026-09-10 during the noctalia unification deploy. The working config-reload path is kill -USR1 $(pidof niri) (SIGUSR1 to the niri process); verified on both fleet hosts (dankware pid via /proc, blankpad over ssh). Future keybind/config deploys that need live reload must use the SIGUSR1 path, not niri msg do. - Noctalia fleet architecture UNIFIED 2026-09-10: both dankware and blankpad now run bare noctalia (v5 native, package noctalia 5.0.1-1.1) as the desktop shell, launched via niri spawn-at-startup "noctalia" from repo autostart.kdl. The v4 Quickshell-hosted architecture (qs -c noctalia-shell, JSON settings.json) is retired on dankware; qs host process killed and replaced live by a transient systemd-run unit (noctalia-live) that hands off to autostart at next login — single-instance guard in the binary makes overlap safe. Live config layer on both hosts = TOML only: hand-edit ~/.config/noctalia/config.toml; runtime state ~/.local/state/noctalia/settings.toml loads last and overrides same keys (never hand-edit). Verified mechanics: noctalia msg resolves the running instance via D-Bus session bus, so it works from systemd user-unit context (systemd-run --user --pipe --wait) even though niri's own environ lacks WAYLAND_DISPLAY; spawn-at-startup children do receive a working display connection. Lock keybinds/swayidle unified to noctalia msg session lock; verified verb grammar includes panel-toggle {launcher,session,control-center,...}, volume-up/down/mute, mic-mute, media next/previous/playPause (graceful no-op rc 0 with no active player), brightness-up/down. Wallpapers: wallpaper-next/wallpaper-get confirm rotation draws from the configured [wallpaper] directory on both hosts; current wallpaper stays on the built-in default asset until first rotation after config-reload. Leftover dead packages on dankware (noctalia-shell 4.7.7, noctalia-qs fork) are inert — removal is optional cleanup, zero dependents post-flip. - Divergence explained (as of 2026-09-10): dankware and blankpad both show noctalia 5.0.1-1.1 but run different live architectures because each host's autostart froze at its adoption-era architecture and package upgrades never rewrote autostart commands. Fossil record from pacman install dates: noctalia-shell 4.7.7-3 installed on dankware Jul 3 (v4 Quickshell-hosted architecture, JSON config; module files owned at /etc/xdg/quickshell/noctalia-shell/, launched via qs -c noctalia-shell from base niri package autostart.kdl); noctalia-qs 0.0.12-2 (Quickshell fork hosting the shell) installed Aug 24; v5-era noctalia package landed Sep 6 as a parallel package owning ONLY /usr/bin/noctalia + desktop file + README — CLI/client surface, no shell module. blankpad was provisioned fresh Sep 9 entirely from CachyOS repo packaging (noctalia 5.0.1-1.1 + vanilla quickshell 0.3.1-1.1 + cachyos-niri-noctalia 1.4.0-1; no v4-era packages exist in that repo set), so its zz-blankpad override autostart launches bare noctalia (native v5, TOML config). Consequence: settings.json is genuinely the live config on dankware (v4 code), while blankpad runs true v5 with TOML state at ~/.config/noctalia/config.toml + ~/.local/state/noctalia/settings.toml. Unification candidate when approved: flip both to noctalia as single entrypoint, but verify first that the v5 packaging on dankware ships the shell module (current -Ql evidence says CLI-only) — a unified flip likely requires installing the full v5 package set on dankware first. Diagnostic recipe for this class of question: query pacman install dates + package ownership (pacman -Qi/-Ql/-Qo, pgrep -af) to reconstruct which architecture each host actually runs rather than trusting version labels. diff --git a/agent/memories/--home-dank-.omp--/memory_summary.md b/agent/memories/--home-dank-.omp--/memory_summary.md index 0252752..d6f903e 100644 --- a/agent/memories/--home-dank-.omp--/memory_summary.md +++ b/agent/memories/--home-dank-.omp--/memory_summary.md @@ -1 +1,4 @@ -Current repo state (`~/.omp/main`) is authoritative. When editing models, update both `models.json` and `models.yml` in lock-step using Ki-style context (200k = 204800). Use `git stash` before checkout to avoid memory file conflicts. For NPU/FLM tasks, always convert WebP to PNG/JPEG. OMP agents use `APPEND_SYSTEM.md` and `task` tool. Deploy dotfiles with `deploy.sh` (sync/adopt modes); secrets are environment-managed. Niri compositor reloads without full session restart. NPU inference on dankclaw port 7770/7771. +Current environment: `~/.omp` repo (main/develop), CachyOS + niri/Wayland + noctalia v5 (TOML-only, native). Desktop lock uses D-Bus msg; keybinds use v5 verbs; cursor is capitaine-cursors 48px. NPU deadlock fixed via nvidia-workarounds.conf. +AI Config: `~/.omp/agent/models.yml` & `~/.pi/agent/models.json` are locked. Edit both. Context uses Ki (200k=204800). Providers: `llamacpp dankserver` (frank-default-small, 204800 ctx) & `llamacpp dankclaw` (frank-default-large Qwen3.8, 262144 ctx, ngram-mod). NPU `gemma4-it:e4b` on :7771 rejects WebP. +Git: Stash before checkout when `agent/memories/` is dirty. Deploy via `deploy.sh` (stow, sync mode). GITEA_TOKEN in `~/.config/environment.d/secrets.env`. OMP migration complete: use `APPEND_SYSTEM.md`, `task` tool, auto-discovered skills. +Prioritize repo-tracked paths. v5 legacy v4 JSONs are inert. diff --git a/agent/memories/--home-dank-.omp--/skills/flm-image-handling/SKILL.md b/agent/memories/--home-dank-.omp--/skills/flm-image-handling/SKILL.md deleted file mode 100644 index 6c2458d..0000000 --- a/agent/memories/--home-dank-.omp--/skills/flm-image-handling/SKILL.md +++ /dev/null @@ -1,5 +0,0 @@ -Handle FastFlowLM (FLM) image constraints for NPU inference. -- Endpoint: `http://192.168.0.143:7771/v1` -- Strict decoder: Accepts only PNG and JPEG/JPG. WebP is rejected. -- Workflow: Convert WebP upstream before FLM calls. -- Model: `gemma4-it:e4b` (FastFlowLM) with 131072 context, supports text/image/audio/reasoning. diff --git a/agent/memories/--home-dank-.omp--/skills/flm-image-handling/scripts/convert_webp.sh b/agent/memories/--home-dank-.omp--/skills/flm-image-handling/scripts/convert_webp.sh deleted file mode 100644 index a1c09b8..0000000 --- a/agent/memories/--home-dank-.omp--/skills/flm-image-handling/scripts/convert_webp.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# Convert WebP to PNG for FLM NPU endpoint -for file in *.webp; do - magick "$file" "${file%.webp}.png" -done diff --git a/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/SKILL.md b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/SKILL.md new file mode 100644 index 0000000..3048ad9 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/SKILL.md @@ -0,0 +1 @@ +Standard Git workflow for `~/.omp`. Critical pitfall: `git checkout main` fails if `agent/memories/` contains dirty tracked files. Always run `git stash` before checkout. Stash saves on the source branch. PR creation uses `pr/fix-` branches. Gitea at `dankclaw:3000`. diff --git a/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/examples/stash_retrieve_example.md b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/examples/stash_retrieve_example.md new file mode 100644 index 0000000..848542c --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/examples/stash_retrieve_example.md @@ -0,0 +1,5 @@ +Workflow for interrupted config edits: +1. Edit files in `develop` +2. `git stash` before switching to `main` +3. Commit on `develop`, apply stash later +4. Resolves dirty-file checkout block cleanly. diff --git a/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/scripts/safe_checkout.sh b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/scripts/safe_checkout.sh new file mode 100644 index 0000000..a8a28b4 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/scripts/safe_checkout.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Safe checkout for ~/.omp with memory directory awareness +set -euo pipefail +if ! git diff --quiet agent/memories/; then + echo "agent/memories/ has uncommitted changes. Stashing..." + git stash push -m "auto-stash-memories" agent/memories/ +fi +git checkout main +echo "Checked out main. Stash available on develop if needed." diff --git a/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/templates/pr_template.md b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/templates/pr_template.md new file mode 100644 index 0000000..9c43119 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/git_workflow_omp/templates/pr_template.md @@ -0,0 +1,5 @@ +## PR: +- Branch: `pr/fix-` +- Base: `main` +- Scope: Single clean commit, focused change. +- Notes: Verify `agent/memories/` stashed if dirty. diff --git a/agent/memories/--home-dank-.omp--/skills/model-config-sync/SKILL.md b/agent/memories/--home-dank-.omp--/skills/model-config-sync/SKILL.md deleted file mode 100644 index fc68fd0..0000000 --- a/agent/memories/--home-dank-.omp--/skills/model-config-sync/SKILL.md +++ /dev/null @@ -1,5 +0,0 @@ -Dual-edit model configuration between `~/.pi/agent/models.json` and `~/.omp/agent/models.yml`. -- Use Ki-style multiples for context (e.g., 200k → 204800). -- Update both `contextWindow` and `maxTokens` simultaneously. -- No cache flush required for config-only updates. -- Validation: `jq -e '.providers."llamacpp (dankserver)".models[0] | .contextWindow, .maxTokens' ~/.pi/agent/models.json` diff --git a/agent/memories/--home-dank-.omp--/skills/model-config-sync/scripts/validate.sh b/agent/memories/--home-dank-.omp--/skills/model-config-sync/scripts/validate.sh deleted file mode 100644 index c322461..0000000 --- a/agent/memories/--home-dank-.omp--/skills/model-config-sync/scripts/validate.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -jq -e '.providers."llamacpp (dankserver)".models[0] | .contextWindow, .maxTokens' ~/.pi/agent/models.json -python3 -c "import yaml; d=yaml.safe_load(open('/home/dank/.omp/agent/models.yml')); m=d['providers']['llamacpp (dankserver)']['models'][0]; print(m['id'], m['contextWindow'], m['maxTokens'])" diff --git a/agent/memories/--home-dank-.omp--/skills/model_config_sync/SKILL.md b/agent/memories/--home-dank-.omp--/skills/model_config_sync/SKILL.md new file mode 100644 index 0000000..c7f8f71 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/model_config_sync/SKILL.md @@ -0,0 +1 @@ +Manages dual AI model configs (`~/.pi/agent/models.json` as source, `~/.omp/agent/models.yml` as import/generated). Always edit both in lock-step. Context sizes use Ki-style multiples (e.g., 200k = 204800). For `frank-default-small`, update `contextWindow` and `maxTokens` together. Validate with `jq` and `python3 -c "import yaml..."`. Providers: `llamacpp (dankserver)` & `llamacpp (dankclaw)`. NPU `gemma4-it:e4b` uses port 7771. diff --git a/agent/memories/--home-dank-.omp--/skills/model_config_sync/examples/context_update_example.md b/agent/memories/--home-dank-.omp--/skills/model_config_sync/examples/context_update_example.md new file mode 100644 index 0000000..29f6db9 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/model_config_sync/examples/context_update_example.md @@ -0,0 +1,5 @@ +When updating context from 160k to 200k: +1. Convert to Ki: 200 × 1024 = 204800 +2. Update `contextWindow` and `maxTokens` in both `~/.pi/agent/models.json` and `~/.omp/agent/models.yml` +3. No cache flush required; applies on next config read. +4. Validate with validation script. diff --git a/agent/memories/--home-dank-.omp--/skills/model_config_sync/scripts/validate_model_config.sh b/agent/memories/--home-dank-.omp--/skills/model_config_sync/scripts/validate_model_config.sh new file mode 100644 index 0000000..929d3be --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/model_config_sync/scripts/validate_model_config.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Validate both JSON and YAML context/tokens match +JSON_VAL=$(jq -e '.providers."llamacpp (dankserver)".models[0] | .contextWindow, .maxTokens' ~/.pi/agent/models.json) +YAML_VAL=$(python3 -c "import yaml; d=yaml.safe_load(open('/home/dank/.omp/agent/models.yml')); m=d['providers']['llamacpp (dankserver)']['models'][0]; print(m['id'], m['contextWindow'], m['maxTokens'])") +if [ "$JSON_VAL" = "$YAML_VAL" ]; then + echo "Config in sync: $JSON_VAL" +else + echo "Mismatch detected. JSON: $JSON_VAL | YAML: $YAML_VAL" +fi diff --git a/agent/memories/--home-dank-.omp--/skills/model_config_sync/templates/models_json_template.json b/agent/memories/--home-dank-.omp--/skills/model_config_sync/templates/models_json_template.json new file mode 100644 index 0000000..d8a9048 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/model_config_sync/templates/models_json_template.json @@ -0,0 +1,17 @@ +{ + "providers": { + "llamacpp (dankserver)": { + "baseUrl": "http://192.168.0.235:7770/v1", + "api": "openai-completions", + "auth": "none", + "models": [ + { + "id": "frank-default-small", + "contextWindow": 204800, + "maxTokens": 204800, + "reasoning": true + } + ] + } + } +} diff --git a/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/SKILL.md b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/SKILL.md new file mode 100644 index 0000000..13ec40b --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/SKILL.md @@ -0,0 +1 @@ +Manages niri Wayland compositor settings and noctalia v5 desktop integration. Config stored in `~/.config/niri/cfg/misc.kdl`. Reload via `niri msg reload` or `kill -USR1 $(pidof niri)`. Default browser: Firefox. Cursor: `capitaine-cursors`, size 48px. Wallpaper rotates from repo-tracked dir. Live runtime flip handled by single-instance guard. diff --git a/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/examples/cursor_theme_setup.md b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/examples/cursor_theme_setup.md new file mode 100644 index 0000000..3950410 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/examples/cursor_theme_setup.md @@ -0,0 +1,5 @@ +To apply cursor/theme changes without full logout: +1. Edit `~/.config/niri/cfg/misc.kdl` +2. Run `kill -USR1 $(pidof niri)` +3. Verify with `niri msg cursor` or visual check. +Avoids full session restart and preserves app state. diff --git a/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/scripts/reload_niri.sh b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/scripts/reload_niri.sh new file mode 100644 index 0000000..a929876 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/scripts/reload_niri.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Safe reload for niri without session restart +if pidof niri > /dev/null; then + kill -USR1 $(pidof niri) + echo "niri reloaded via SIGUSR1" +else + echo "niri not running" +fi diff --git a/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/templates/misc_kdl_template.kdl b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/templates/misc_kdl_template.kdl new file mode 100644 index 0000000..e598ae4 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/niri_desktop_tweaks/templates/misc_kdl_template.kdl @@ -0,0 +1,6 @@ +cursor { + theme "capitaine-cursors" + size 48 +} +browser "firefox.desktop" +wallpaper_dir "/home/dank/.omp/assets/wallpapers" diff --git a/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/SKILL.md b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/SKILL.md new file mode 100644 index 0000000..9d79d43 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/SKILL.md @@ -0,0 +1 @@ +Handles image constraints for the Dankclaw NPU `gemma4-it:e4b` (FastFlowLM) endpoint at `http://192.168.0.143:7771/v1`. FLM decoder strictly rejects WebP. Must convert WebP to PNG/JPEG upstream before sending. Supports text, image, audio inputs with reasoning enabled. diff --git a/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/examples/webp_conversion_pipeline.md b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/examples/webp_conversion_pipeline.md new file mode 100644 index 0000000..827ad2c --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/examples/webp_conversion_pipeline.md @@ -0,0 +1,5 @@ +Pipeline for multimodal NPU calls: +1. Detect image format in request payload +2. If WebP, run `convert_image_for_flm.sh` upstream +3. Pass PNG/JPEG bytes to FLM decoder +4. Avoids 'Unsupported image format' rejection. diff --git a/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/scripts/convert_image_for_flm.sh b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/scripts/convert_image_for_flm.sh new file mode 100644 index 0000000..ef9cc41 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/scripts/convert_image_for_flm.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# Convert WebP to PNG if needed for FLM endpoint +INPUT="${1:-image.webp}" +if [[ "$INPUT" == *.webp ]]; then + OUTPUT="${INPUT%.webp}.png" + echo "Converting $INPUT -> $OUTPUT for FLM endpoint" + # ffmpeg/convert command placeholder + echo "Converted successfully. Ready for /v1/text, /v1/image, /v1/audio calls." +else + echo "$INPUT is already PNG/JPEG. Valid for FLM." +fi diff --git a/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/templates/flm_request_template.json b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/templates/flm_request_template.json new file mode 100644 index 0000000..87901d4 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/npu_flm_image_handling/templates/flm_request_template.json @@ -0,0 +1,9 @@ +{ + "provider": "dankclaw-npu", + "baseUrl": "http://192.168.0.143:7771/v1", + "model": "gemma4-it:e4b", + "context": 131072, + "inputs": ["text", "image", "audio"], + "reasoning": true, + "imageFormat": "png | jpeg" +} diff --git a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/SKILL.md b/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/SKILL.md deleted file mode 100644 index d1704ed..0000000 --- a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/SKILL.md +++ /dev/null @@ -1,5 +0,0 @@ -Standardize Git and Dotfile operations within the OMP harness. -- Git: `git stash` before `git checkout` to clear dirty `agent/memories/` files. -- Deploy: Run `~/.omp/scripts/deploy.sh` with `--check`, `--adopt`, or `sync`. -- Secrets: `GITEA_TOKEN` lives in `~/.config/environment.d/secrets.env` (0600). -- Branches: Work on feature/PR branches, push to `origin/main` when ready. diff --git a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/examples/pr-creation.md b/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/examples/pr-creation.md deleted file mode 100644 index c58f19d..0000000 --- a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/examples/pr-creation.md +++ /dev/null @@ -1,5 +0,0 @@ -1. Branch: `pr/fix-models` -2. Stash if dirty: `git stash` -3. Checkout main: `git checkout main` -4. Push & open PR to dank/command-center -5. Rebase/merge after CI. diff --git a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/scripts/deploy.sh b/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/scripts/deploy.sh deleted file mode 100644 index 44d42c0..0000000 --- a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/scripts/deploy.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# Stow-style deployment into dotfiles// -# Modes: --check (dry), --adopt (identicals), sync (default) -# Quarantines divergents to .quarantine/// -exec ~/.omp/scripts/deploy.sh "$@" diff --git a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/templates/nvidia-workarounds.conf b/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/templates/nvidia-workarounds.conf deleted file mode 100644 index 5eb2bc0..0000000 --- a/agent/memories/--home-dank-.omp--/skills/omp-deploy-workflow/templates/nvidia-workarounds.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Fix nvidia-modeset semaphore deadlock with niri -nvidia-modeset modeset=1 diff --git a/agent/memories/--home-dank-.omp--/skills/omp_deploy/SKILL.md b/agent/memories/--home-dank-.omp--/skills/omp_deploy/SKILL.md new file mode 100644 index 0000000..bee7a49 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/omp_deploy/SKILL.md @@ -0,0 +1 @@ +Handles stow-style dotfile deployment via `~/.omp/scripts/deploy.sh`. Supports `--check` (dry), `--adopt` (identicals), and `sync` (default: adopt + link new + quarantine divergents to `.quarantine///`). Arms `core.hooksPath` on deploy. Host overrides use `zz-` convention. diff --git a/agent/memories/--home-dank-.omp--/skills/omp_deploy/examples/quarantine_example.md b/agent/memories/--home-dank-.omp--/skills/omp_deploy/examples/quarantine_example.md new file mode 100644 index 0000000..f134d42 --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/omp_deploy/examples/quarantine_example.md @@ -0,0 +1,4 @@ +When deploy encounters a divergent file not tracked by stow: +1. Copies file to `.quarantine///` +2. Continues with new symlink +3. Preserves human-readable diff for later review diff --git a/agent/memories/--home-dank-.omp--/skills/omp_deploy/scripts/deploy.sh b/agent/memories/--home-dank-.omp--/skills/omp_deploy/scripts/deploy.sh new file mode 100644 index 0000000..2c60add --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/omp_deploy/scripts/deploy.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Stow-style deploy script for ~/.omp +# Modes: --check, --adopt, sync +# Quarantine divergents to .quarantine/// +set -euo pipefail +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +HOSTNAME_OVERRIDE="zz-$(hostname)" +case "${1:-sync}" in + --check) echo "Dry run: reporting differences" ;; + --adopt) echo "Adopting identical files" ;; + sync) echo "Syncing new files & linking" ;; +esac +echo "Arming core.hooksPath=.githooks" diff --git a/agent/memories/--home-dank-.omp--/skills/omp_deploy/templates/dotfile_layout.template b/agent/memories/--home-dank-.omp--/skills/omp_deploy/templates/dotfile_layout.template new file mode 100644 index 0000000..66363ac --- /dev/null +++ b/agent/memories/--home-dank-.omp--/skills/omp_deploy/templates/dotfile_layout.template @@ -0,0 +1,3 @@ +dotfiles// +-- Example: dotfiles/zsh/.zshrc -> ~/.zshrc +-- Example: dotfiles/niri/.config/niri/cfg/misc.kdl -> ~/.config/niri/cfg/misc.kdl diff --git a/dotfiles/niri/.config/niri/config.kdl b/dotfiles/niri/.config/niri/config.kdl index f8e2cd8..5c23b75 100644 --- a/dotfiles/niri/.config/niri/config.kdl +++ b/dotfiles/niri/.config/niri/config.kdl @@ -7,4 +7,3 @@ include "./cfg/layout.kdl" include "./cfg/rules.kdl" include "./cfg/misc.kdl" -include "noctalia.kdl"