From fba17a9a562fe4ee5ed47b0bbd8f93a1af4706b7 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 7 Oct 2026 12:45:23 -0400 Subject: [PATCH] chore(config): clean up and reorganize configuration files --- .chezmoiignore.tmpl | 1 + .../run_onchange_after_40-post.sh.tmpl | 5 - .../functions/fish_user_key_bindings.fish | 2 + dot_config/ghostty/config | 10 +- dot_config/hypr/bindings.lua | 2 +- dot_config/hypr/looknfeel.lua | 4 + dot_config/hypr/monitors.lua | 12 +-- dot_config/kitty/kitty.conf | 1 + dot_config/tmux/tmux.conf | 9 ++ dot_config/zsh/keybinds.zsh | 4 +- dot_omp/loops/answer-gap/private_loop.md | 28 ------ dot_omp/loops/bin/executable_run-loop.sh | 43 --------- dot_omp/loops/brand-radar/private_loop.md | 31 ------ .../loops/competitor-watch/private_loop.md | 26 ----- dot_omp/loops/goals/private_templates.md | 36 ------- dot_omp/loops/intel-refresh/private_loop.md | 31 ------ .../loops/regulatory-digest/private_loop.md | 31 ------ dot_omp/loops/repeat-offender/private_loop.md | 32 ------- dot_omp/loops/share-of-model/private_loop.md | 28 ------ .../private_agent/commands/leetcode-docs.md | 84 ---------------- .../private_agent/commands/leetcode-eli5.md | 74 -------------- dot_omp/private_agent/keybindings.yml | 2 - dot_omp/private_agent/private_config.yml | 10 -- dot_omp/private_agent/private_mcp.json | 30 ------ dot_omp/private_agent/themes/cyberdream.json | 96 ------------------- 25 files changed, 34 insertions(+), 598 deletions(-) delete mode 100644 dot_omp/loops/answer-gap/private_loop.md delete mode 100644 dot_omp/loops/bin/executable_run-loop.sh delete mode 100644 dot_omp/loops/brand-radar/private_loop.md delete mode 100644 dot_omp/loops/competitor-watch/private_loop.md delete mode 100644 dot_omp/loops/goals/private_templates.md delete mode 100644 dot_omp/loops/intel-refresh/private_loop.md delete mode 100644 dot_omp/loops/regulatory-digest/private_loop.md delete mode 100644 dot_omp/loops/repeat-offender/private_loop.md delete mode 100644 dot_omp/loops/share-of-model/private_loop.md delete mode 100644 dot_omp/private_agent/commands/leetcode-docs.md delete mode 100644 dot_omp/private_agent/commands/leetcode-eli5.md delete mode 100644 dot_omp/private_agent/keybindings.yml delete mode 100644 dot_omp/private_agent/private_config.yml delete mode 100644 dot_omp/private_agent/private_mcp.json delete mode 100644 dot_omp/private_agent/themes/cyberdream.json diff --git a/.chezmoiignore.tmpl b/.chezmoiignore.tmpl index 79ed109..b855aa1 100644 --- a/.chezmoiignore.tmpl +++ b/.chezmoiignore.tmpl @@ -20,6 +20,7 @@ television .config/lazygit/.omc/** .config/yazi/plugins/** .config/tmux/plugins/** +!.config/tmux/plugins/tpm .config/fish/fish_variables .config/nvim/lazy-lock.json .config/nvim/.git diff --git a/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl b/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl index 3990826..1842acb 100644 --- a/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl +++ b/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl @@ -2,11 +2,6 @@ # Post-apply housekeeping. Re-runs when this file's rendered content changes. set -eu -# tmux plugin manager — tmux.conf expects tpm at this path -if command -v tmux >/dev/null 2>&1 && [ ! -d "$HOME/.config/tmux/plugins/tpm" ]; then - git clone --depth=1 https://github.com/tmux-plugins/tpm "$HOME/.config/tmux/plugins/tpm" || true -fi - if command -v bat >/dev/null 2>&1; then bat cache --build >/dev/null || true; fi {{ if eq .chezmoi.os "linux" -}} diff --git a/dot_config/fish/functions/fish_user_key_bindings.fish b/dot_config/fish/functions/fish_user_key_bindings.fish index 9206e5d..1b90e48 100644 --- a/dot_config/fish/functions/fish_user_key_bindings.fish +++ b/dot_config/fish/functions/fish_user_key_bindings.fish @@ -16,6 +16,7 @@ function fish_user_key_bindings # prompt back in place (or below any output) afterwards. ctrl-a: # omp-session resumes or starts omp for the repo (same in zsh); when it # opens the omp-sessions cable and it is cancelled, it steps back up. + # ctrl-n: always a new omp session. bind -M $mode ctrl-e '_tv_inline git-files; commandline -f repaint' bind -M $mode ctrl-b purple repaint bind -M $mode ctrl-y clip-last @@ -23,6 +24,7 @@ function fish_user_key_bindings bind -M $mode ctrl-o _gho_bind bind -M $mode ctrl-p _pj_bind bind -M $mode ctrl-a 'omp-session; commandline -f repaint' + bind -M $mode ctrl-n 'omp; commandline -f repaint' bind -M $mode ctrl-w 'atuin ai inline; commandline -f repaint' # ctrl-z at the prompt: fg the only background job, or pick one from # the jobs tv cable when there are several (_jobs_bind). diff --git a/dot_config/ghostty/config b/dot_config/ghostty/config index 0a763c8..4dd305d 100644 --- a/dot_config/ghostty/config +++ b/dot_config/ghostty/config @@ -1,12 +1,12 @@ # Font Configuration -font-size = 12.5 +font-size = 13 font-family = Victor Mono NF background-blur = true # Window Configuration window-decoration = false -window-padding-x = 12 -window-padding-y = 12 +window-padding-x = 0 +window-padding-y = 0 background-opacity = 0.9 # Cursor Configuration @@ -37,6 +37,10 @@ gtk-titlebar = false quit-after-last-window-closed = false quit-after-last-window-closed-delay = 5m +# Every window and tab attaches to the tmux session "main", creating it +# when missing, so closing Ghostty detaches instead of killing the shells. +command = tmux new-session -A -s main + # Shell integration shell-integration = detect shell-integration-features = cursor,sudo,title,no-cursor diff --git a/dot_config/hypr/bindings.lua b/dot_config/hypr/bindings.lua index 0384960..0d96574 100644 --- a/dot_config/hypr/bindings.lua +++ b/dot_config/hypr/bindings.lua @@ -273,7 +273,7 @@ hl.unbind("SUPER + P") -- was: pseudo window hl.unbind("SUPER + SPACE") -- was: pseudo window -- Omarchy's SUPER + SPACE is ALT + SPACE, so the key is free in Omarchy. -o.bind("ALT + SPACE", "Toggle Launcher", "omarchy-menu toggle launcher") +-- o.bind("ALT + SPACE", "Toggle Launcher", "omarchy-menu toggle launcher") -- Mod+Shift+Return was the vicinae window switcher. ScrollOverview on -- ALT + TAB below takes that job, so SUPER + SHIFT + RETURN keeps its default diff --git a/dot_config/hypr/looknfeel.lua b/dot_config/hypr/looknfeel.lua index 698194c..853770d 100644 --- a/dot_config/hypr/looknfeel.lua +++ b/dot_config/hypr/looknfeel.lua @@ -31,6 +31,10 @@ hl.config({ decoration = { rounding = 0, + -- Backdrop behind every scratch (special) workspace: the desktop under it + -- is darkened by this fraction. + dim_special = 0.33, + blur = { enabled = true, -- Cheaper than the themes' size 6 / 3 passes; with only terminals diff --git a/dot_config/hypr/monitors.lua b/dot_config/hypr/monitors.lua index baf0ff2..24f1cfe 100644 --- a/dot_config/hypr/monitors.lua +++ b/dot_config/hypr/monitors.lua @@ -1,16 +1,16 @@ -- See https://wiki.hypr.land/Configuring/Basics/Monitors/ -- List current monitors and supported resolutions with: hyprctl monitors all -local omarchy_gdk_scale = 2 -local omarchy_monitor_scale = 2 +local omarchy_gdk_scale = 3 +local omarchy_monitor_scale = 3.2 hl.env("GDK_SCALE", tostring(omarchy_gdk_scale)) hl.monitor({ output = "", mode = "preferred", position = "auto", scale = omarchy_monitor_scale }) --- Apple Studio Display on the left, laptop panel (eDP-1) on the right. --- Logical widths at scale 2: 5120/2 = 2560, so eDP-1 starts at x=2560. -hl.monitor({ output = "DP-4", mode = "5120x2880@60", position = "0x0", scale = 2 }) -hl.monitor({ output = "eDP-1", mode = "2560x1600@180", position = "2560x0", scale = 2 }) +-- Laptop panel (eDP-1) on the left, Apple Studio Display on the right. +-- Logical widths at scale 2: 2560/2 = 1280, so DP-4 starts at x=1280. +hl.monitor({ output = "eDP-1", mode = "2560x1600@180", position = "0x0", scale = 2 }) +hl.monitor({ output = "DP-4", mode = "5120x2880@60", position = "1280x0", scale = 2 }) -- Configure a specific monitor. -- hl.monitor({ output = "DP-2", mode = "2560x1440@144", position = "0x0", scale = 1 }) diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf index 5976885..5d1f5ce 100644 --- a/dot_config/kitty/kitty.conf +++ b/dot_config/kitty/kitty.conf @@ -1,5 +1,6 @@ # ── base.conf · shared ── font_family VictorMono Nerd Font +font_size 13.0 bold_italic_font auto window_padding_width 8 hide_window_decorations yes diff --git a/dot_config/tmux/tmux.conf b/dot_config/tmux/tmux.conf index d73c42e..69c82c2 100644 --- a/dot_config/tmux/tmux.conf +++ b/dot_config/tmux/tmux.conf @@ -104,3 +104,12 @@ set -g message-style "bg=default,fg=blue" set -g message-command-style "bg=default,fg=blue" set -g mode-style "bg=blue,fg=black" setw -g clock-mode-colour blue + +# Plugins (tpm, cloned by .chezmoiexternal.toml). prefix + I installs, +# prefix + U updates, prefix + alt + u removes unlisted ones. +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'vaaleyard/tmux-dotbar' + +# Keep at the very bottom. +run '~/.config/tmux/plugins/tpm/tpm' diff --git a/dot_config/zsh/keybinds.zsh b/dot_config/zsh/keybinds.zsh index da679d1..416d59d 100644 --- a/dot_config/zsh/keybinds.zsh +++ b/dot_config/zsh/keybinds.zsh @@ -16,7 +16,7 @@ _zle-run() { $cmd — one round of a loop, cheap-model-first with Fable escalation. -# Green loops only: prompts are read-only + write-to-own-state-file by design. -set -euo pipefail - -LOOP="${1:?usage: run-loop.sh }" -DIR="$HOME/.omp/loops/$LOOP" -PROMPT="$DIR/loop.md" -STATE="$DIR/state.md" -LOG="$DIR/runs.log" -[[ -f "$PROMPT" ]] || { echo "no such loop: $LOOP" >&2; exit 1; } -[[ -f "$STATE" ]] || printf '# %s — state\n\n## queue\n\n## done\n\n## blocked\n' "$LOOP" > "$STATE" - -# Hard caps (loop #21 escalation policy + the article's stop rules): -# - smol model runs the routine round, 10 min wall clock -# - Fable (default model) only re-runs on an explicit ESCALATE marker, 20 min cap -# - one escalation max per round; never more than one round per invocation -SMOL_MAX=600 -FABLE_MAX=1200 - -ts() { date -Is; } -run() { # run — returns the model's stdout - omp -p --no-session --max-time "$2" ${1:+--model "$1"} \ - "$(cat "$PROMPT") - -Loop directory: $DIR -State file (read it first, append to it, never rewrite history): $STATE -Round timestamp: $(ts)" -} - -echo "[$(ts)] round start (smol)" >> "$LOG" -OUT="$(run "kimi-for-coding" "$SMOL_MAX" 2>>"$LOG" || true)" -printf '%s\n' "$OUT" >> "$LOG" - -if grep -q '^ESCALATE' <<<"$OUT"; then - echo "[$(ts)] escalating to default model" >> "$LOG" - OUT="$(run "" "$FABLE_MAX" 2>>"$LOG" || true)" - printf '%s\n' "$OUT" >> "$LOG" - # Escalation ledger (loop #21): every Fable call must be visible and countable - echo "[$(ts)] $LOOP escalated" >> "$HOME/.omp/loops/escalations.log" -fi - -echo "[$(ts)] round end" >> "$LOG" diff --git a/dot_omp/loops/brand-radar/private_loop.md b/dot_omp/loops/brand-radar/private_loop.md deleted file mode 100644 index 70ff8f4..0000000 --- a/dot_omp/loops/brand-radar/private_loop.md +++ /dev/null @@ -1,31 +0,0 @@ -# Loop 10 — brand-mention feature radar (green) -# Cadence: Wed 07:00 weekly · Tools: HN Algolia API (no key), Exa - -You are one round of a weekly mention-sweep for WalletBase and its problem -space. WalletBase itself is early — so sweep the PROBLEM space, not just the -brand. - -## Queries (same check every round) -- HN Algolia (https://hn.algolia.com/api/v1/search_by_date?query=...): - "agent wallet", "agent payments", "account abstraction", "ERC-4337", - "passkey wallet", "embedded wallet" -- Exa: complaints/wishes about Privy, Dynamic, Turnkey, Web3Auth pricing or - agent support ("privy pricing", "alternatives to privy", etc.) -- Exa: "walletbase" brand mentions (expect ~0; log the count anyway — trend matters) - -## Round procedure -1. READ the state file. Skip item IDs/URLs already logged. -2. Sweep last 7 days. Cluster new items into: feature asks · pricing pain · - security concerns · integration friction. -3. Log clusters with counts and 1–2 representative links each. -4. ONE change per round: take the loudest cluster and write ONE drafted - response under ## queue — either a feature-issue draft (formatted so it can - be pasted into `bd create` in the right wltbs repo) or a positioning note. - Draft only. Never create the issue yourself. - -## Escalation contract -`ESCALATE:` only for a security-relevant discussion of a dependency WalletBase -uses (ERC-4337 EntryPoint, passkey/WebAuthn, UCAN libs). - -## Stop -One sweep, one draft, stop. Max 30 API calls. Two failures → ## blocked, stop. diff --git a/dot_omp/loops/competitor-watch/private_loop.md b/dot_omp/loops/competitor-watch/private_loop.md deleted file mode 100644 index 8c9a06e..0000000 --- a/dot_omp/loops/competitor-watch/private_loop.md +++ /dev/null @@ -1,26 +0,0 @@ -# Loop 4 — competitor-content watch (green) -# Cadence: Fri 07:00 weekly · Tool: Exa web search - -You are one round of a weekly competitor-content loop for WalletBase. - -## Watched competitors (same check every round) -- Privy (privy.io/blog), Dynamic (dynamic.xyz/blog), Turnkey (turnkey.com/blog) -- Crossmint (blog.crossmint.com), Para (getpara.com/blog), Pimlico (pimlico.io/blog) - -## Round procedure -1. READ the state file. Skip URLs already logged. -2. Find posts published in the last 7 days from each competitor. -3. For each new post log: URL, title, the keyword/theme it chases, and which - audience (human-wallet devs vs agent devs). -4. ONE change per round: identify the single biggest content gap — a theme - competitors are pushing that WalletBase has no answer to — and write ONE - content brief for it under ## queue (title, angle, target query, outline, - why-us). One brief, not a list. - -## Escalation contract -`ESCALATE:` only if a competitor announces an agent-economy product (agent -wallets, delegation, agent payments) — that reprioritizes the whole queue. - -## Stop -Six competitors, one pass, one brief, stop. Max 20 page fetches. Two -consecutive tool failures → log under ## blocked, stop. diff --git a/dot_omp/loops/goals/private_templates.md b/dot_omp/loops/goals/private_templates.md deleted file mode 100644 index 0e1b416..0000000 --- a/dot_omp/loops/goals/private_templates.md +++ /dev/null @@ -1,36 +0,0 @@ -# /goal templates — kill-criteria (#22) and pre-mortem (#23) - -Not scheduled. Paste into an interactive omp session when facing a decision. -Both end with pasted proof per the goal contract: the judge only sees the -conversation, so "done" = the artifact is IN the chat. - ---- - -## kill-criteria (#22) - -/goal For the decision "[DECISION]", produce a kill-criteria table for every -live option. For each option: (1) state the option in one line, (2) write the -SINGLE measurable condition that would disqualify it — a number, a date, or a -named event, not vibes, (3) hunt for evidence for/against that condition using -web search and the repos under ~/Developer/github.com/wltbs, citing every -claim, (4) verdict: ALIVE / KILLED / NEEDS-DATA with what data and where to -get it. Done when the full table is pasted in this chat with a citation per -verdict, and every KILLED verdict quotes the evidence that tripped its -condition. If evidence can't be found for an option, paste what you searched -and mark it NEEDS-DATA — do not guess. Hard cap: 40 tool calls. - ---- - -## pre-mortem (#23) - -/goal It is 12 months from now and the decision "[DECISION]" failed badly. -Write the post-mortem as if it already happened: (1) the headline of the -failure, (2) the 3–5 causal chains that led there, each traced back to a -specific assumption we hold TODAY (quote the assumption from our notes/repos -where possible), (3) for each chain, the earliest observable warning sign and -where it would show up first (a metric, a log, a competitor move, a regulator -page), (4) the one cheapest mitigation per chain that we could start this -week. Done when the full pre-mortem is pasted in this chat and every causal -chain names its present-day assumption explicitly. No generic risks ("market -turns") — every chain must be specific to WalletBase's architecture, GTM, or -regulatory surface. Hard cap: 30 tool calls. diff --git a/dot_omp/loops/intel-refresh/private_loop.md b/dot_omp/loops/intel-refresh/private_loop.md deleted file mode 100644 index cb14256..0000000 --- a/dot_omp/loops/intel-refresh/private_loop.md +++ /dev/null @@ -1,31 +0,0 @@ -# Loop 19 — overnight intel refresh (green) -# Cadence: Mon 06:00 weekly · Tool: Exa web search - -You are one round of a weekly intel loop for WalletBase — embedded wallet -infrastructure for the agent economy (ERC-4337 smart accounts, passkeys, -UCAN delegation, in-house bundler/paymaster on Base). - -## Tracked beats (same check every round) -1. ERC-4337 / account-abstraction ecosystem (EntryPoint, bundlers: Rundler, Alchemy, Pimlico pricing/changes) -2. EIP-7702 adoption and wallet implementations -3. Embedded-wallet competitors: Privy (Stripe), Dynamic (Fireblocks), Turnkey, Crossmint, Para -4. Agent-payments protocols: x402, UCAN ecosystem, agent wallet SDKs -5. Base chain: fees, precompiles (RIP-7212), infra changes - -## Round procedure -1. READ the state file first. Skip anything already logged in ## done. -2. Search each beat for items from the last 7 days ONLY. -3. Write at most 5 bullets per beat to the state file under a `## week of ` - heading: link, one-line summary, one-line "so what for WalletBase". -4. ONE change per round: if a beat has produced nothing for 3 consecutive weeks, - propose swapping it (write the proposal under ## queue — do NOT swap it yourself). - -## Escalation contract -If you find a development that plausibly invalidates a core assumption -(bundler economics, a competitor shipping agent-native delegation, an -EntryPoint breaking change), output a line starting with `ESCALATE:` and the -reason. Otherwise never escalate. - -## Stop -One pass over the 5 beats, then stop. If a search tool fails twice, log it -under ## blocked and stop. Never fetch more than 25 pages total. diff --git a/dot_omp/loops/regulatory-digest/private_loop.md b/dot_omp/loops/regulatory-digest/private_loop.md deleted file mode 100644 index f20b4a4..0000000 --- a/dot_omp/loops/regulatory-digest/private_loop.md +++ /dev/null @@ -1,31 +0,0 @@ -# Loop 20 — regulatory / source digest (green) -# Cadence: Tue 07:00 weekly · Tool: Exa -# Maps to the WalletBase risk register: MSB/FinCEN, OFAC, MiCA/CASP, MEV policy. - -You are one round of a weekly regulatory watch for WalletBase (non-custodial -paymaster, bundler relay, USDC agent payments, US-based, EU geo-blocked). - -## Watched sources (same check every round) -1. FinCEN — guidance/rulings touching money transmission, self-hosted wallets, MSB scope -2. OFAC — SDN designations or guidance touching crypto relays/mixers/bundler-like infra -3. SEC/CFTC — enforcement touching wallet infra or AA providers -4. EU — MiCA/CASP implementation news relevant to non-custodial infra -5. Ethereum protocol governance — ERC-4337/EIP-7702 spec changes, EntryPoint audits - -## Round procedure -1. READ the state file. Skip items already logged. -2. Search last 7 days per source. ONLY log items that MATERIALLY change - obligations or assumptions — silence is the correct output on a quiet week. -3. Per material item: link, what changed, plain-language "so what" for the - paymaster/bundler architecture, which risk note it touches. -4. ONE change per round: if an item invalidates a standing assumption, write - ONE proposed edit to the relevant risk position under ## queue. - -## Escalation contract -`ESCALATE:` if anything suggests non-custodial paymasters/bundler relays fall -under MSB registration, or an OFAC action names infra architecturally similar -to ours. These are existential — worth Fable's read. - -## Stop -Five sources, one pass, stop. A quiet week produces a one-line "no material -changes " entry — that is a SUCCESS, not a failure. Max 20 fetches. diff --git a/dot_omp/loops/repeat-offender/private_loop.md b/dot_omp/loops/repeat-offender/private_loop.md deleted file mode 100644 index f2b5a64..0000000 --- a/dot_omp/loops/repeat-offender/private_loop.md +++ /dev/null @@ -1,32 +0,0 @@ -# Loop 24 — repeat-offender digest (green) -# Cadence: Sun 18:00 weekly · Tools: beads (bd) in ~/Developer/github.com/wltbs/*, omp logs - -You are one round of a weekly failure-pattern hunt across the WalletBase -workspace. The same failure in two workflows is one system problem wearing -two costumes. - -## Sources (same check every round) -1. `bd list --all --json` in each of: ~/Developer/github.com/wltbs/{mono,backend,contracts,core,website} - — look at issues created or closed in the last 7 days, especially bugs/chores. -2. ~/.omp/loops/*/runs.log and ~/.omp/loops/*/state.md ## blocked sections - — the loop harness's own failures. -3. ~/.omp/loops/escalations.log — is any loop escalating too often? - -## Round procedure -1. READ the state file. Note previously identified patterns. -2. Sweep the sources. Cluster failures by ROOT shape, not surface symptom - (e.g. "workspace dep not resolvable" appearing as three different bd issues - across repos = one pattern). -3. Log new/recurring patterns: name, occurrences (issue IDs / log lines), trend. -4. ONE change per round: for the most repeated pattern, draft ONE systemic fix - proposal under ## queue — formatted as a `bd create` command the human can - paste, targeting the repo where the root cause lives. - NEVER run bd create yourself — draft only; a human files it. - -## Escalation contract -`ESCALATE:` only if a pattern implicates data loss or a security boundary -(key handling, paymaster balance accounting, sync corruption). - -## Stop -One sweep, one proposal, stop. Read-only on beads (list/show only). Two -failures → ## blocked, stop. diff --git a/dot_omp/loops/share-of-model/private_loop.md b/dot_omp/loops/share-of-model/private_loop.md deleted file mode 100644 index 561c02a..0000000 --- a/dot_omp/loops/share-of-model/private_loop.md +++ /dev/null @@ -1,28 +0,0 @@ -# Loop 3 — share-of-model watch (green) -# Cadence: Mon 07:00 weekly · Tool: Exa (answer mode) - -You are one round of a weekly share-of-model tracker: when buyers ask AI -engines about our category, who is in the answer? - -## Fixed question set (NEVER reword — comparability is the point) -1. "best embedded wallet SDK for developers" -2. "best wallet infrastructure for AI agents" -3. "how to give an AI agent a crypto wallet" -4. "Privy alternatives" -5. "ERC-4337 bundler and paymaster providers" -6. "passkey wallet SDK" - -## Round procedure -1. READ the state file for last week's table. -2. Ask each question via Exa answer/search. Record: which vendors are named, - in what order, and whether WalletBase appears. -3. Append this week's table to the state file: - `| # | vendors in answer (ordered) | walletbase? |` -4. ONE change per round: note the single biggest rank shift vs last week under - ## queue with a one-line hypothesis why. - -## Escalation contract -Never escalate. This loop only measures. - -## Stop -Six questions, one table, stop. If Exa fails twice → ## blocked, stop. diff --git a/dot_omp/private_agent/commands/leetcode-docs.md b/dot_omp/private_agent/commands/leetcode-docs.md deleted file mode 100644 index 3e397d1..0000000 --- a/dot_omp/private_agent/commands/leetcode-docs.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -description: Convert a LeetCode solution file into a Fumadocs MDX docs page ---- - -Convert the LeetCode solution file at `$1` into a Fumadocs-formatted MDX page. - -Extra instructions (optional, may include output dir override): $@ - -## Input format - -The source file follows the standard on-disk format: -- A `/* ... */` header block: problem number, title, difficulty, LeetCode URL, problem description, examples, constraints -- A JSDoc `@param`/`@return` block -- One or more solution functions (possibly with line-by-line beginner comments and `// ====` banners) - -## Output location - -Default: write next to the content root at `content/docs/leetcode///-.mdx`, mirroring the source tree (e.g. `Easy/Array/1365.how-many-numbers.js` → `content/docs/leetcode/easy/array/1365-how-many-numbers.mdx`). Lowercase all path segments. If the extra instructions specify a different output path or content root, use that instead. Create directories as needed. - -## Page structure - -Produce exactly this shape: - -```mdx ---- -title: 1365. How Many Numbers Are Smaller Than the Current Number -description: ---- - - - [View on LeetCode](https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/) - - -## Problem - - - -## Examples - - - -```txt title="Example 1" -Input: nums = [8,1,2,2,3] -Output: [4,0,1,1,3] -``` - - - -## Constraints - - - -## Solution - - - -```js title="solution.js" lineNumbers - -``` - - - **Time:** O(n log n) — **Space:** O(n) - -``` - -## Rules - -1. **Frontmatter `title` carries the h1** — Fumadocs renders it as the page title, so never emit a `# heading` in the body. -2. **Escape MDX hazards.** The header text may contain `<`, `>`, `{`, `}` (e.g. `j != i and nums[j] < nums[i]`, `2 <= nums.length <= 500`). Anything with these characters must be wrapped in inline code or fenced blocks, or the MDX compile will fail. When in doubt, inline-code it. -3. **Code is verbatim.** Copy the solution function(s) exactly — do not rewrite, reformat, or strip existing comments. The docs page documents the code as it exists. -4. **Multiple approaches → tab group:** - ````mdx - ```js tab="Frequency Map" tab-group="approach" - ... - ``` - - ```js tab="Sort + Map" - ... - ``` - ```` -5. **Complexity callout is derived, not guessed blindly.** Read the code: nested loop → O(n²), sort → O(n log n), single pass + map → O(n). If genuinely ambiguous, state the dominant term and why in one clause. -6. **Callout header line** = ` · `. Difficulty comes from the header block; infer 1–2 topic tags from the directory path and the technique used. -7. **No invented content.** Problem statement, examples, and constraints come only from the header block. The intuition paragraph and complexity are the only sections you author. -8. **After writing**, print one line: the output path. Nothing else. diff --git a/dot_omp/private_agent/commands/leetcode-eli5.md b/dot_omp/private_agent/commands/leetcode-eli5.md deleted file mode 100644 index 7224f90..0000000 --- a/dot_omp/private_agent/commands/leetcode-eli5.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -description: Add super-simple line-by-line comments to a LeetCode solution file ---- - -Add beginner-level line-by-line comments to the LeetCode solution file at: $1 - -## Rules - -1. **Read the file first.** It follows the standard on-disk format: - - A `/* ... */` header block containing problem number, title, difficulty, URL, description, examples, and constraints - - A JSDoc `@param`/`@return` block - - The solution function(s) - -2. **Never touch the header block or JSDoc block.** Preserve them byte-for-byte. - -3. **Never change the code.** Do not rename variables, reformat logic, alter whitespace inside expressions, or "improve" anything. Comments only. The file must produce an identical AST after your edit. - -4. **Comment style — explain as if to a complete beginner who has never programmed:** - - One comment line (or short block) ABOVE each meaningful line/statement - - Use plain everyday language and physical metaphors: - - object/map → "box" ("Create an empty box to count how many times each number appears") - - increment → "add 1 to its count" - - `(freq[x] || 0) + 1` → "If we already saw this number, add 1 to its count. If we never saw it before, start counting from 1" - - sort comparator → spell out the rule in words ("put the letter that appears MORE times first; if tied, alphabetical order") - - return → say WHAT is being returned and WHY in plain words - - Explain the WHY, not just the WHAT ("so the next bigger numbers know there are more smaller ones") - - Inline comments (`// ...` at end of line) are fine for short trailing clarifications like `.join('')` → "glue the sorted letters back into a string" - - No jargon without immediate translation: if you must say "index", follow with "(its position)" - -5. **Add a section banner** above the solution function in this exact style: - ```js - // ============================================ - // . - // ============================================ - ``` - Pull the number and title from the header block. - -6. **Multiple solutions in one file:** comment every one of them, each with its own banner (append "– Approach 2" etc. to the banner title). - -7. **Extra instructions** (if provided after the file path): $@ - -8. **After editing**, print a one-line confirmation: file path + number of comment lines added. Nothing else. - -## Example transformation - -Input body: -```js -var smallerNumbersThanCurrent = function (nums) { - const freq = {}; - for (let x of nums) freq[x] = (freq[x] || 0) + 1; - return nums.map((x) => smaller[x]); -}; -``` - -Output body: -```js -// ============================================ -// 1365. How Many Numbers Are Smaller Than the Current Number -// ============================================ - -var smallerNumbersThanCurrent = function (nums) { - // Create an empty box to store how many times each number appears - const freq = {}; - - // Go through every number in the list one by one - // If we already saw this number, add 1 to its count - // If we never saw it before, start counting from 1 - for (let x of nums) freq[x] = (freq[x] || 0) + 1; - - // Go through the original list and replace each number - // with "how many numbers are smaller than it" - return nums.map((x) => smaller[x]); -}; -``` diff --git a/dot_omp/private_agent/keybindings.yml b/dot_omp/private_agent/keybindings.yml deleted file mode 100644 index a3f50ec..0000000 --- a/dot_omp/private_agent/keybindings.yml +++ /dev/null @@ -1,2 +0,0 @@ -app.editor.external: Ctrl+E -app.exit: Ctrl+Q diff --git a/dot_omp/private_agent/private_config.yml b/dot_omp/private_agent/private_config.yml deleted file mode 100644 index b2162cf..0000000 --- a/dot_omp/private_agent/private_config.yml +++ /dev/null @@ -1,10 +0,0 @@ -theme: - dark: titanium - light: light -symbolPreset: nerd -setupVersion: 2 -hideThinkingBlock: false -modelRoles: - plan: anthropic/claude-fable-5 -composer: - shape: rule \ No newline at end of file diff --git a/dot_omp/private_agent/private_mcp.json b/dot_omp/private_agent/private_mcp.json deleted file mode 100644 index 44b0fca..0000000 --- a/dot_omp/private_agent/private_mcp.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/src/config/mcp-schema.json", - "mcpServers": { - "exa": { - "type": "http", - "url": "https://mcp.exa.ai/mcp" - }, - "cloudflare-api": { - "type": "http", - "url": "https://mcp.cloudflare.com/mcp", - "auth": { - "type": "oauth", - "credentialId": "mcp_oauth:profile:default:https://mcp.cloudflare.com/mcp", - "tokenUrl": "https://mcp.cloudflare.com/token", - "clientId": "TOBx2IoGZW-gU-f_", - "resource": "https://mcp.cloudflare.com/mcp" - }, - "oauth": { - "clientId": "TOBx2IoGZW-gU-f_" - } - }, - "github": { - "type": "http", - "url": "https://api.githubcopilot.com/mcp/", - "headers": { - "Authorization": "!printf 'Bearer %s' \"$(gh auth token)\"" - } - } - } -} \ No newline at end of file diff --git a/dot_omp/private_agent/themes/cyberdream.json b/dot_omp/private_agent/themes/cyberdream.json deleted file mode 100644 index 06d9add..0000000 --- a/dot_omp/private_agent/themes/cyberdream.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json", - "name": "cyberdream", - "vars": { - "bg": "#16181a", - "bgAlt": "#1e2124", - "bgHighlight": "#3c4048", - "fg": "#ffffff", - "grey": "#7b8496", - "blue": "#5ea1ff", - "green": "#5eff6c", - "cyan": "#5ef1ff", - "red": "#ff6e5e", - "yellow": "#f1ff5e", - "magenta": "#ff5ef1", - "pink": "#ff5ea0", - "orange": "#ffbd5e", - "purple": "#bd5eff" - }, - "colors": { - "accent": "blue", - "border": "blue", - "borderAccent": "cyan", - "borderMuted": "grey", - "success": "green", - "error": "red", - "warning": "yellow", - "muted": "grey", - "dim": "grey", - "text": "", - "thinkingText": "grey", - - "selectedBg": "bgHighlight", - "userMessageBg": "bgAlt", - "userMessageText": "fg", - "customMessageBg": "bgAlt", - "customMessageText": "fg", - "customMessageLabel": "cyan", - "toolPendingBg": "bgAlt", - "toolSuccessBg": "bgAlt", - "toolErrorBg": "bgAlt", - "toolTitle": "cyan", - "toolOutput": "fg", - - "mdHeading": "orange", - "mdLink": "cyan", - "mdLinkUrl": "blue", - "mdCode": "cyan", - "mdCodeBlock": "fg", - "mdCodeBlockBorder": "grey", - "mdQuote": "grey", - "mdQuoteBorder": "grey", - "mdHr": "grey", - "mdListBullet": "cyan", - - "toolDiffAdded": "green", - "toolDiffRemoved": "red", - "toolDiffContext": "grey", - - "syntaxComment": "grey", - "syntaxKeyword": "magenta", - "syntaxFunction": "blue", - "syntaxVariable": "yellow", - "syntaxString": "green", - "syntaxNumber": "purple", - "syntaxType": "cyan", - "syntaxOperator": "pink", - "syntaxPunctuation": "grey", - - "thinkingOff": "grey", - "thinkingMinimal": "blue", - "thinkingLow": "cyan", - "thinkingMedium": "green", - "thinkingHigh": "yellow", - "thinkingXhigh": "orange", - "thinkingMax": "red", - - "bashMode": "yellow", - "pythonMode": "purple", - - "statusLineBg": "bgAlt", - "statusLineSep": "grey", - "statusLineModel": "purple", - "statusLinePath": "blue", - "statusLineGitClean": "green", - "statusLineGitDirty": "yellow", - "statusLineContext": "cyan", - "statusLineSpend": "pink", - "statusLineStaged": "green", - "statusLineDirty": "yellow", - "statusLineUntracked": "red", - "statusLineOutput": "fg", - "statusLineCost": "orange", - "statusLineSubagents": "magenta" - } -}