Utility-extraction prep: progress-symbol decoupling, api_utils cleanup, plan specs#7
Merged
Merged
Conversation
Removes the duplicate EMOJI_* constants from progress_protocol.py and introduces a ProgressSymbols dataclass that SimpleProgressTracker and SimpleProgressContext accept via the new `symbols=` parameter, letting callers override the icons for task state transitions. Moves kash's authoritative EMOJI_RETRY and EMOJI_WAITING into text_styles.py alongside the rest of the kash emoji set, and switches multitask_status.py to source emojis from text_styles. Visual output is unchanged. This isolates progress_protocol.py from kash branding in preparation for extracting the gather-limited bundle as a standalone library. https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
Menu-style spec for extracting kash's reusable utilities into new or existing packages. Covers: gather-limited as standalone package, a new file/system utilities package, a new terminal/Rich utilities package (absorbing parts of clideps to refocus clideps on package management), and targeted additions to flowmark/prettyfmt. Includes per-phase testing plans using pytest + tryscript golden tests. https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
Upgrades tbd from v0.1.28 to v0.2.3 and runs `tbd setup --auto`: refreshed hooks, skill files, AGENTS.md integration, and Codex hooks; cleaned up legacy hooks and stale config entries. https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
Plan spec for a new standalone terminal-UX package consolidating kash's rich_custom/unified_live/nerd_icons modules and clideps's terminal/ui modules. Dependency-minimal (rich + strif + typing-extensions), no clideps dependency (clideps becomes a consumer later). Includes simple-modern-uv scaffolding steps, module-by-module decoupling notes, tryscript golden testing, a companion agent skill, and consumer migration plans. Nine beads track the phases. https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
- Delete multitask_gather.py and cache_requests_limited.py: zero production callers; both pulled kash settings/shell/web_content imports into the otherwise self-contained bundle. - Move the 8 inline test functions from api_retries.py into tests/kash/utils/api_utils/test_api_retries.py (~265 LOC out of the production module). - Mark these prep items done in the utility-extraction plan spec. https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Safe prep work for extracting kash's reusable utilities into standalone packages, plus the plan specs that map out the extractions.
Code cleanups (behavior-neutral, all tests pass)
859424e): removes the 6 hardcodedEMOJI_*constants fromprogress_protocol.py; adds an injectableProgressSymbolsdataclass with neutral defaults. kash now sources its emojis fromtext_styles.py(its authoritative set, gainingEMOJI_RETRY/EMOJI_WAITING). Visual output unchanged.a6e6d5d): deletesmultitask_gather.pyandcache_requests_limited.py(zero production callers; both pulled kash settings/shell/web_content imports into the otherwise self-contained bundle) and moves the 8 inline tests out ofapi_retries.pyintotests/kash/utils/api_utils/test_api_retries.py. This leaves thegather_limited+api_retries+progress_protocol+http_utilsbundle clean for extraction as a standalonegather-limitedpackage.Plan specs
plan-2026-05-23-utility-extraction.md: menu of 10 independent extraction phases (gather-limited, file utilities, terminal/Rich, clideps trim, flowmark/prettyfmt additions, etc.) with per-phase testing plans (pytest + tryscript golden tests).plan-2026-05-23-rich-cli-tools.md: end-to-end implementable spec for a new standalone terminal-UX package consolidating kash'srich_custom/unified_live/nerd_iconsand clideps'sterminal/uimodules, scaffolded from simple-modern-uv, with a companion agent skill. Nine tbd beads track the phases.Tooling
19f1fb5).Test plan
tests/kash/utils/api_utils/,src/kash/utils/api_utils/,src/kash/utils/rich_custom/,tests/kash/utils/rich_custom/)devtools/lint.py)EMOJI_*importshttps://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
Generated by Claude Code