refactor: implement in-process worker architecture for hooks (#722)

* fix: stop generating empty CLAUDE.md files

- Return empty string instead of "No recent activity" when no observations exist
- Skip writing CLAUDE.md files when formatted content is empty
- Remove redundant "auto-generated by claude-mem" HTML comment
- Clean up 98 existing empty CLAUDE.md files across the codebase
- Update tests to expect empty string for empty input

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* build assets

* refactor: implement in-process worker architecture for hooks

Replaces spawn-based worker startup with in-process architecture:
- Hook processes now become the worker when port 37777 is free
- Eliminates Windows spawn issues (NO SPAWN rule)
- SessionStart chains: smart-install && stop && context

Key changes:
- worker-service.ts: hook case starts WorkerService in-process
- hook-command.ts: skipExit option prevents process.exit() when hosting worker
- hooks.json: single chained command replaces separate start/hook commands
- worker-utils.ts: ensureWorkerRunning() returns boolean, doesn't block
- handlers: graceful fallback when worker unavailable

All 761 tests pass. Manual verification confirms hook stays alive as worker.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* context

* a

* MAESTRO: Mark PR #722 test verification task complete

All 797 tests passed (3 skipped, 0 failed) after merge conflict resolution.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* MAESTRO: Mark PR #722 build verification task complete

* MAESTRO: Mark PR #722 code review task complete

Code review verified:
- worker-service.ts hook case starts WorkerService in-process
- hook-command.ts has skipExit option
- hooks.json uses single chained command
- worker-utils.ts ensureWorkerRunning() returns boolean

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* MAESTRO: Mark PR #722 conflict resolution push task complete

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-02-04 19:49:15 -05:00
committed by GitHub
parent 14ca7cf7d6
commit 4df9f61347
107 changed files with 804 additions and 4493 deletions
-117
View File
@@ -1,117 +0,0 @@
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Dec 25, 2025
**ContextSettingsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #32789 | 9:49 PM | 🟣 | Gemini AI Provider Integration Merged to Main | ~409 |
| #32640 | 8:46 PM | 🟣 | Renamed "Billing Enabled" setting to "Rate Limiting" with inverted logic | ~546 |
| #32630 | 8:45 PM | ✅ | Updated UI toggle for rate limiting in `ContextSettingsModal` | ~345 |
| #32622 | 8:44 PM | ✅ | Updated UI toggle for rate limiting in `ContextSettingsModal` | ~375 |
| #32615 | 8:43 PM | 🔵 | Confirmed UI text for "Billing Enabled" toggle | ~244 |
| #32613 | " | 🔵 | Comprehensive identification of `CLAUDE_MEM_GEMINI_BILLING_ENABLED` usage | ~407 |
| #32608 | 8:42 PM | 🔵 | Identified UI component for "Billing Enabled" toggle | ~348 |
| #32604 | " | 🔵 | Identified "billing" setting and its direct link to rate limiting | ~405 |
| #32603 | " | 🔵 | Identified widespread use of "Gemini" across application components | ~312 |
| #32559 | 8:18 PM | 🔵 | Listed files changed in the current branch | ~169 |
| #32550 | 7:31 PM | 🟣 | Added Gemini Billing Enabled toggle in UI | ~189 |
### Dec 26, 2025
**ContextSettingsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #32977 | 11:13 PM | 🔵 | User questions Save button placement in settings modal | ~172 |
| #32976 | 11:12 PM | 🔵 | UI button placement questioned in settings modal | ~166 |
| #32978 | 11:04 PM | 🔵 | ContextSettingsModal component structure examined | ~199 |
| #32979 | " | 🔵 | Save button implemented in modal footer section | ~195 |
| #32980 | " | 🔄 | Save button moved inside modal body structure | ~182 |
| #32925 | 10:26 PM | 🔵 | OpenRouter Provider Integration Proposed in PR 448 | ~543 |
| #32923 | 10:18 PM | 🔵 | OpenRouter Integration Architecture in claude-mem | ~610 |
| #32922 | 10:17 PM | 🔵 | OpenRouter Integration in Settings UI | ~362 |
| #32913 | 10:05 PM | 🔵 | PR #448 Code Review: OpenRouter Provider Integration | ~523 |
| #32909 | 10:01 PM | 🔵 | ContextSettingsModal provides rich UI for settings with live preview and provider configuration | ~611 |
### Dec 28, 2025
**ContextSettingsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #33279 | 3:07 PM | ✅ | Changed Default OpenRouter Model to Free Tier Option | ~285 |
### Dec 30, 2025
**ContextSettingsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #34384 | 1:39 PM | 🔵 | UI Provides "haiku" as Model Selection Option | ~296 |
### Jan 1, 2026
**LogsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35668 | 11:40 PM | ✅ | Main branch updated with major feature additions | ~377 |
| #35598 | 10:51 PM | 🔄 | Logs UI Refactored from Modal to Bottom Drawer | ~505 |
| #35597 | 10:29 PM | 🟣 | Logs Viewer Modal Component Created | ~299 |
**Header.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35603 | 10:52 PM | 🟣 | Removed Logs Button from Header UI | ~274 |
| #35602 | " | ✅ | Removed onLogsToggle from Header Destructuring | ~215 |
| #35601 | " | 🔄 | Removed onLogsToggle Prop from Header Interface | ~191 |
### Jan 2, 2026
**LogsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35999 | 5:32 PM | 🟣 | Alignment Quick Filter Added to Console Logs UI | ~308 |
| #35982 | 5:09 PM | ✅ | Built and deployed claude-mem version 8.5.4 with LogsModal UI component | ~295 |
| #35981 | 5:08 PM | 🟣 | Implemented alignment quick filter UI in LogsModal | ~281 |
| #35980 | " | 🟣 | Alignment-only filter added to LogsModal | ~323 |
| #35979 | " | 🟣 | Added alignment filter state to LogsModal component | ~219 |
| #35978 | " | 🔵 | LogsModal viewer component with filtering and parsing capabilities | ~447 |
| #35904 | 2:49 PM | 🟣 | Implemented Structured Log Parsing in LogsModal | ~400 |
| #35901 | " | 🔵 | PR #525 File Changes Summary | ~376 |
| #35879 | 2:41 PM | 🟣 | Enhanced LogsModal with Parsing, Filtering, Colors, Icons, and Auto-Scroll | ~726 |
| #35877 | 2:40 PM | 🔵 | LogsDrawer Component Current Implementation | ~426 |
| #35820 | 2:28 PM | 🔵 | Current LogsDrawer implementation analyzed | ~289 |
**Header.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35875 | 2:39 PM | 🔵 | Logging UI Architecture Mapped | ~599 |
| #35839 | 2:30 PM | 🔵 | Header component with project filter dropdown | ~245 |
**SummaryCard.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35834 | 2:30 PM | 🔵 | SummaryCard demonstrates icon usage pattern | ~281 |
**Feed.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35832 | 2:29 PM | 🔵 | Feed component with intersection observer for infinite scroll | ~300 |
**ObservationCard.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #35828 | 2:29 PM | 🔵 | ObservationCard styling and interaction patterns | ~275 |
### Jan 4, 2026
**ContextSettingsModal.tsx**
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #36781 | 12:45 AM | 🔵 | Complete GeminiAgent Model Configuration Gap Analysis | ~552 |
| #36773 | 12:43 AM | 🔵 | Gemini Model Options in Settings UI | ~490 |
| #36757 | 12:33 AM | 🔵 | Issue #511 Root Cause Identified - Gemini-3-Flash Configuration Mismatch | ~416 |
| #36756 | " | 🔵 | UI Component Also Lists gemini-3-flash | ~339 |
| #36754 | " | 🔵 | Gemini-3-Flash Model Already Supported | ~301 |
</claude-mem-context>