The kimicode plugin's --work-dir was passing projectConfig.path, which breaks worktree-mode workspaces. In worktree mode, projectConfig.path is the original repo root while session.workspacePath is the per-session checkout — they differ. Either kimi would write to the project root (breaking worktree isolation) or md5(projectConfig.path) would diverge from md5(session.workspacePath), so getActivityState/getSessionInfo would never find this session's bucket. Fix: - Add optional `workspacePath` field to AgentLaunchConfig. - Plumb it through all 3 launch call sites in session-manager.ts. - kimicode getLaunchCommand uses config.workspacePath, falling back to config.projectConfig.path when undefined. - Tests for the divergent-paths case. Public-interface change: AgentLaunchConfig grows one optional field. Invariants preserved: - Agent.getLaunchCommand signature unchanged — still takes one AgentLaunchConfig. - Existing plugins (claude-code, aider, codex, opencode) compile and run unchanged; the new field is optional and they ignore it. - Clone-mode workspaces (where workspacePath === projectConfig.path) produce the same launch command as before. - Fallback to projectConfig.path keeps callers that don't pass the new field working — no flag day required. |
||
|---|---|---|
| .. | ||
| ao | ||
| cli | ||
| core | ||
| integration-tests | ||
| plugins | ||
| web | ||