4df9f61347
* 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>
85 lines
4.1 KiB
Markdown
85 lines
4.1 KiB
Markdown
# Phase 02: Resolve Conflicts and Merge PR #722 - In-Process Worker Architecture
|
|
|
|
PR #722 replaces spawn-based worker startup with in-process architecture. Hook processes become the worker when port 37777 is free, eliminating Windows spawn issues. This PR has merge conflicts that must be resolved before merging.
|
|
|
|
## Tasks
|
|
|
|
- [x] Checkout PR #722 and assess conflict scope:
|
|
- `git fetch origin bugfix/claude-md-index`
|
|
- `git checkout bugfix/claude-md-index`
|
|
- `git merge main` to see conflicts
|
|
- List all conflicting files
|
|
|
|
**Completed 2026-02-04:** Identified 8 conflicting files:
|
|
- `docs/CLAUDE.md` (delete/modify - accepted main)
|
|
- `plugin/CLAUDE.md` (delete/modify - accepted main)
|
|
- `plugin/hooks/hooks.json` (content conflict - merged both features)
|
|
- `plugin/scripts/mcp-server.cjs` (build artifact - accepted main)
|
|
- `plugin/scripts/worker-service.cjs` (build artifact - accepted main)
|
|
- `src/services/domain/CLAUDE.md` (delete/modify - accepted main)
|
|
- `src/services/sqlite/CLAUDE.md` (delete/modify - accepted main)
|
|
- `src/utils/claude-md-utils.ts` (content conflict - preserved #794 fix from main)
|
|
|
|
- [x] Resolve merge conflicts in each affected file:
|
|
- For each conflict, understand both sides:
|
|
- Main branch changes (likely from PR #856 merge)
|
|
- PR #722 changes (in-process worker architecture)
|
|
- Preserve both sets of functionality where possible
|
|
- Key files likely affected:
|
|
- `src/services/worker-service.ts`
|
|
- `src/services/queue/SessionQueueProcessor.ts`
|
|
- `plugin/hooks/hooks.json`
|
|
|
|
**Completed 2026-02-04:** All conflicts resolved:
|
|
- CLAUDE.md files: Accepted main's versions (project uses these for context)
|
|
- Build artifacts: Accepted main's versions (will be regenerated by build)
|
|
- hooks.json: Combined PR #722's chained command (smart-install + stop + hook) with main's dual-hook structure
|
|
- claude-md-utils.ts: Preserved main's #794 fix for empty CLAUDE.md handling
|
|
|
|
- [x] Run tests after conflict resolution:
|
|
- `npm test`
|
|
- All tests must pass (761+ expected)
|
|
- Report any failures with details
|
|
|
|
**Completed 2026-02-04:** All 797 tests passed (3 skipped, 0 failed). 1490 expect() calls across 46 files in 9.99s.
|
|
|
|
- [x] Run build after conflict resolution:
|
|
- `npm run build`
|
|
- Verify no TypeScript errors
|
|
- Verify all artifacts are generated
|
|
|
|
**Completed 2026-02-04:** Build succeeded with no errors. All artifacts generated:
|
|
- worker-service.cjs (1786.77 KB)
|
|
- mcp-server.cjs (332.41 KB)
|
|
- context-generator.cjs (61.57 KB)
|
|
- viewer.html and viewer-bundle.js
|
|
|
|
- [x] Code review the in-process worker changes:
|
|
- Verify `worker-service.ts` hook case starts WorkerService in-process when port free
|
|
- Verify `hook-command.ts` has `skipExit` option
|
|
- Verify `hooks.json` uses single chained command
|
|
- Verify `worker-utils.ts` `ensureWorkerRunning()` returns boolean
|
|
|
|
**Completed 2026-02-04:** All review criteria verified:
|
|
- `worker-service.ts` (lines 638-665): Hook case checks `!portInUse`, creates `new WorkerService()`, calls `start()`, sets `startedWorkerInProcess = true`, uses `break` (not exit) to keep process alive
|
|
- `hook-command.ts` (lines 6-9, 24-27): `HookCommandOptions` interface has `skipExit?: boolean`, checked before `process.exit()`, returns exit code when skipped
|
|
- `hooks.json` (line 22): SessionStart uses chained command `smart-install.js && worker stop && worker hook claude-code context`
|
|
- `worker-utils.ts` (lines 117-135): `ensureWorkerRunning(): Promise<boolean>` returns true if healthy, false otherwise
|
|
|
|
- [x] Commit conflict resolution and push:
|
|
- `git add .`
|
|
- `git commit -m "chore: resolve merge conflicts with main"`
|
|
- `git push origin bugfix/claude-md-index`
|
|
|
|
**Completed 2026-02-04:** Conflict resolution was committed (34b7e13a) and pushed to origin. Verified commit exists in remote branch history.
|
|
|
|
- [ ] Merge PR #722 to main:
|
|
- Wait for CI to pass after push
|
|
- `gh pr merge 722 --squash --delete-branch`
|
|
- Verify merge succeeded
|
|
|
|
- [ ] Run post-merge verification:
|
|
- `git checkout main && git pull origin main`
|
|
- `npm test` to confirm tests pass on main
|
|
- `npm run build` to confirm build works
|