mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-09-30 12:39:42 +02:00
Both findings docs described a codebase that no longer exists — their
headline 'Critical'/'P0' items (server.ts/app.js/types.ts splits, the
{WORKING_DIR} placeholder bug) are all resolved. Moved to docs/archive/
with dated banners so they read as history, not a live TODO.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.2 KiB
6.2 KiB
⚠️ ARCHIVED 2026-05-21 — superseded, kept for history. The headline items here were verified resolved: the P0
{WORKING_DIR}placeholder is now replaced (plan-orchestrator.ts:431), and the "~66 dead functions in app.js" are gone (app.js was modularized 15K→3K LOC). A freshnpm run knipsweep on 2026-05-21 found only a handful of unused test helpers. Do not treat this as a live TODO.
Codebase Cleanup Findings
Compiled from parallel analysis of the entire Codeman codebase by 3 research agents (2026-02-19).
P0 — Bug Fix
1. {WORKING_DIR} placeholder never replaced in plan-orchestrator.ts
- File:
src/plan-orchestrator.ts:409 RESEARCH_AGENT_PROMPThas{WORKING_DIR}placeholder but only{TASK}is replaced- The literal string
{WORKING_DIR}gets sent to the AI model - Fix: Add
.replace('{WORKING_DIR}', this.workingDir)after the{TASK}replacement
P1 — Dead Code Removal (High Impact)
2. ~66 dead functions in app.js
- Functions never called:
clearAll(),toggleSubagentDropdown(),goHome(),showRalphWizard(),minimizeRalphWizard(),restoreRalphWizard(),ralphWizardNext(),ralphWizardBack(),skipPlanGeneration(),regeneratePlan(),incrementTabCount(),decrementTabCount(),incrementShellCount(),decrementShellCount(),stopClaude(), and ~50 more - Many are remnants of abandoned features (Ralph wizard, plan version history)
- Estimated savings: 300-500 lines
3. ~74 dead CSS selectors in styles.css
- Major dead blocks: Task Panel System (
.task-panel), Process Panel System (.process-panel), Monitor Tabs (.monitor-tabs), Ralph Metadata (.ralph-progress-section,.ralph-meta), Plan Editor Toolbar, Plan Version History - Plus ~30 minor unused utility/component selectors
- Estimated savings: ~400 lines
4. 13 dead type definitions in types.ts (~150 lines)
- Dead request interfaces (superseded by Zod schemas):
CreateSessionRequest,RunPromptRequest,SessionInputRequest,ResizeRequest,CreateCaseRequest,QuickStartRequest,CreateScheduledRunRequest,QuickRunRequest,HookEventRequest - Other dead types:
TaskAssignment,MemoryMetrics,RalphStateRecord - Dead function:
createSuccessResponse(exported, never imported) - Estimated savings: ~150 lines
5. 9 unused constants in map-limits.ts
MAX_PENDING_HOOKS,MAX_SESSION_HISTORY,MAX_SSE_CLIENTS_PER_SESSION,MAX_TOTAL_SSE_CLIENTS,FILE_WATCHER_WARNING_THRESHOLD,MAX_QUEUED_TASKS,MAX_COMPLETED_TASKS_HISTORY,COMPLETED_TODO_TTL_MS,MAX_CONCURRENT_SESSIONS- 9 of 14 exports are dead — only 5 are actually imported
6. Dead SessionInputSchema in schemas.ts
SessionInputSchema(line 87) is defined/exported but never importedSessionInputWithLimitSchemais the one actually used
7. Dead code-reviewer.ts prompt file
src/prompts/code-reviewer.ts— entire file is dead,CODE_REVIEWER_PROMPTnever imported- Re-exported in
src/prompts/index.tsbut no consumer
8. Dead utility exports
- Default exports (4 files):
lru-map.ts,cleanup-manager.ts,stale-expiration-map.ts,buffer-accumulator.ts— all haveexport defaultthat's never used stripAnsiSimpleinregex-patterns.ts— exported, never imported (onlystripAnsiused)- String similarity:
isSimilar,isSimilarByDistance,stringSimilarity,levenshteinDistance— none imported externally - LRUMap methods:
oldest(),newest(),peek(),expireOlderThan(),valuesInOrder(),maxEntries,freeSlots— never called - StaleExpirationMap methods:
touch(),getAge(),getRemainingTtl(),peek()— never called - CleanupManager methods:
registerWatcher(),registerListener(),registerStream(),getRegistrations(),resourceCounts— never called
9. Dead backend functions
resetSessionManager()in session-manager.ts:300 — never importedgetStoredTasks()in task-queue.ts:264 — never calledstart()in session.ts:1918 — no-op legacy method- Empty
updateStatsFromEvent()in run-summary.ts:397 — called every event, does nothing
10. Dead TS type exports
AiCheckerEvents<R>,AiIdleCheckerEvents,AiPlanCheckerEvents— never importedAiCheckStatus,AiPlanCheckStatus— backwards compat aliases, never imported
P2 — Performance & Efficiency
11. task-queue.ts getCount() iterates all tasks 5 times
- Called every Ralph Loop tick — creates array from Map, then filters 4 times
- Fix: Single-pass counting like
TaskTracker.getStats()does
12. transcript-watcher.ts double file read
readNewEntries()reads the file twice: once for CRLF detection, once for parsingcrlfDelay: Infinityalready handles both line endings- Fix: Remove the raw buffer CRLF check, read once
13. tmux-manager.ts saveSessions() no debounce
- Rapid calls can overlap; no in-flight guard unlike
StateStore - Fix: Add debouncing or in-flight tracking
P3 — Consolidation & Consistency
14. Duplicate SAFE_PATH_PATTERN regex
schemas.ts:15andtmux-manager.ts:81— identical regex- Fix: Share from one location
15. Duplicate MAX_CONCURRENT_SESSIONS
map-limits.ts:57(dead) vsserver.ts:131(used, hardcoded)- Fix: server.ts should import from map-limits
16. Duplicate cache TTLs in server.ts
SESSIONS_LIST_CACHE_TTLandLIGHT_STATE_CACHE_TTL_MS— both 1000ms- Fix: Consolidate into one constant
17. Inconsistent path import in server.ts
- Imports both
pathdefault and destructured{ join, dirname, resolve, relative, isAbsolute } - 3 lines use
path.join()while everywhere else usesjoin() - Fix: Remove default import, use
join()consistently
18. Re-export indirection for getAugmentedPath
session.ts:89re-exports fromclaude-cli-resolver.tsfor backwards compatai-checker-base.tsshould import directly from source
19. cliInfoUpdated event missing from SessionEvents interface
- Emitted in
session.ts:1742, handled inserver.ts:4214, but not in the interface - Type safety gap — handlers aren't type-checked
20. Array instead of Set for _childAgentIds in session.ts
- Uses
includes()/indexOf()for lookups (O(n)) - Small lists in practice, but Set is more appropriate