Skip to content

refactor(cli): remove deprecated Docker/Zep storage options (LISA-70)#214

Merged
TonyCasey merged 3 commits intomainfrom
lisa-70
Feb 28, 2026
Merged

refactor(cli): remove deprecated Docker/Zep storage options (LISA-70)#214
TonyCasey merged 3 commits intomainfrom
lisa-70

Conversation

@TonyCasey
Copy link
Copy Markdown
Owner

@TonyCasey TonyCasey commented Feb 27, 2026

Summary

  • Removed storage mode prompts from lisa init (local Docker, Zep Cloud, skip)
  • Removed deprecated CLI options: --mode, --endpoint, --group, --zep-api-key, --zep-project-id
  • Removed lisa up and lisa down commands (Docker Compose)
  • Simplified lisa doctor to check git-mem and Lisa structure only
  • Cleaned up deprecated constants, types, and templates (~520 lines removed)

Context

With git-mem now the sole storage backend (LISA-34, LISA-59), the Docker/Neo4j/Zep options were deprecated. This PR cleans them up.

Test plan

  • npm run build succeeds
  • npm run lint passes (warnings are pre-existing)
  • Unit tests pass (6/6)
  • lisa --help shows clean CLI without up/down commands
  • lisa init --help shows simplified options
  • lisa doctor runs successfully

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Git-backed memory model, repo profile generation, git-powered indexing and memory augmentation; new LLM toggles and provider abstraction.
  • Removed Features

    • Docker Compose scaffolding and Docker CLI commands; Zep Cloud and other non-git memory backends; group-based scoping.
  • Improvements

    • Simplified CLI/init and doctor workflows; health checks now focus on git and storage readiness; package version bumped to 2.27.0.
  • Tests

    • Expanded and updated test coverage to reflect git-mem behavior.

Since git-mem is now the sole storage backend, removed:
- Storage mode prompts from `lisa init` (local/zep-cloud/skip)
- `--mode`, `--endpoint`, `--group`, `--zep-api-key`, `--zep-project-id` options
- `lisa up` and `lisa down` commands
- Docker, Neo4j, Zep connectivity checks from `lisa doctor`
- `docker.ts` module and `.lisa/docker/` templates
- `DeploymentMode`, `IGraphitiConfig` types and related constants
- Deprecated settings from `.env.template`

Updates tests to reflect simplified CLI interface.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Removes Docker/Zep deployment options and group-id scaffolding; migrates CLI init/doctor flows to a git-backed memory model (git notes / "git-mem"); deletes Docker compose templates and related env vars; updates exports and tests; bumps package to 2.27.0.

Changes

Cohort / File(s) Summary
Changelog & Version
CHANGELOG.md, package.json
Bumps package to 2.27.0 and documents the migration to git-based memory plus removal of Docker/Zep/group-id systems.
CLI Core & Exports
src/lib/cli.ts, src/lib/commands/index.ts
Removes docker-related exports (upCommand, downCommand, IDockerOptions) and deployment constants/types (DEFAULT_ENDPOINT, DeploymentMode, IGraphitiConfig); trims CLI options for init/doctor and updates doctor description.
Docker Command Module
src/lib/commands/docker.ts
Deletes the docker command module and its exported interface/functions.
Shared Command Constants
src/lib/commands/shared/constants.ts, src/lib/commands/shared/index.ts
Removes DEFAULT_ENDPOINT, ZEP_CLOUD_ENDPOINT, DeploymentMode, and IGraphitiConfig from shared constants/exports.
Init Command
src/lib/commands/init.ts
Drops interactive deployment/storage selection, Docker scaffolding, and endpoint/group/zep options from IInitOptions; init now assumes git-mem (git notes) and emits a simplified summary.
Doctor Command & Health Checks
src/lib/commands/doctor.ts
Reworks diagnostics toward git-mem: replaces mode/group/endpoint config with {storage, projectName}, simplifies IDoctorOptions, removes Docker/MCP/Neo4j/Zep checks, and adds checkGit/checkGitMem checks.
Project Templates & Docker Compose
src/project/.lisa/.env.template, src/project/.lisa/docker/docker-compose.graphiti.yml
Removes storage/database env vars from .env.template and deletes the Neo4j/Graphiti docker-compose file.
Tests & Helpers
tests/integration/cli/index.ts, tests/unit/src/cli.test.ts, tests/unit/src/lib/commands/doctor.test.ts
Updates tests to reflect removed endpoint/group/mode options and docker behavior; adapts initCommand signature, doctor expectations, and test mock services to the git-mem model.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: removing deprecated Docker and Zep storage options from the CLI as part of a refactoring effort.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch lisa-70

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai bot added the nate Nate Plan: Memory improvement features label Feb 27, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
src/lib/cli.ts (1)

31-39: ⚠️ Potential issue | 🟡 Minor

Stale comment references removed module.

The comment on line 34 still references upCommand, downCommand -> docker.ts, but these commands and the module have been removed in this PR.

🧹 Proposed fix to remove stale reference
 // Command implementations moved to src/lib/commands/
 // - initCommand, cleanupPreviousInstall -> init.ts
 // - doctorCommand -> doctor.ts
-// - upCommand, downCommand -> docker.ts
 // - hook commands -> hooks.ts
 // - memory, tasks, storage -> knowledge.ts
 // - jira, github, prompt, etc. -> skills.ts
 // - issue create, labels -> issue.ts
 // - pr commands -> pr.ts
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/lib/cli.ts` around lines 31 - 39, The inline comment block in
src/lib/cli.ts still lists "upCommand, downCommand -> docker.ts" which is stale;
remove that bullet (or replace it with the current module name if those commands
were moved elsewhere) so the comment accurately reflects the new locations
(e.g., init.ts, doctor.ts, hooks.ts, knowledge.ts, skills.ts, issue.ts, pr.ts),
and scan for any other lingering "docker" references in that comment to keep the
summary consistent with the actual command files.
tests/unit/src/cli.test.ts (1)

22-37: 🧹 Nitpick | 🔵 Trivial

Remove unused MockDockerClient mock class.

MockDockerClient is instantiated but never exercised in the test file. Its methods (version(), composeVersion(), compose()) and tracking variables are not called or asserted. The doctorCommand test explicitly notes that "Doctor no longer checks Docker," confirming the mock is no longer needed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/unit/src/cli.test.ts` around lines 22 - 37, Remove the unused
MockDockerClient class definition from the test file: delete the
MockDockerClient class (its methods version, composeVersion, compose and
composeCalls/versionCalls/composeVersionCalls fields) since it's instantiated
but never exercised or asserted; also ensure no remaining references to
MockDockerClient (e.g., in any doctorCommand-related setup) remain in the test
so tests compile cleanly.
src/lib/commands/doctor.ts (1)

84-97: 🧹 Nitpick | 🔵 Trivial

Consider consolidating with the shared getProjectName function.

This function duplicates logic from src/lib/commands/shared/constants.ts. The difference is this version accepts cwd as a parameter while the shared version uses process.cwd().

Consider refactoring the shared function to accept an optional cwd parameter and reusing it here:

// In shared/constants.ts
export function getProjectName(cwd: string = process.cwd()): string { ... }

Then import and use it in this file instead of maintaining duplicate implementations.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/lib/commands/doctor.ts` around lines 84 - 97, The local getProjectName
function duplicates logic already implemented in the shared getProjectName;
refactor the shared function (getProjectName in shared/constants.ts) to accept
an optional cwd parameter (defaulting to process.cwd()), replace the local
implementation in src/lib/commands/doctor.ts with an import of the shared
getProjectName, and call it with the existing cwd argument; remove the duplicate
function from doctor.ts to keep a single source of truth.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/lib/commands/doctor.ts`:
- Around line 258-281: checkGitMem currently only checks the loose ref path
(notesRef) and can miss refs stored in .git/packed-refs; update checkGitMem to
also detect packed notes by either (a) reading and parsing the .git/packed-refs
file for a line containing "refs/notes/mem" when notesRef is absent, or (b)
prefer running a git command (e.g., "git notes list" or "git rev-parse
refs/notes/mem") from within checkGitMem and treat a successful result as
"Memory notes found"; keep the same returned shape (name, status, message,
details, durationMs) and use the existing start timestamp to compute durationMs.

---

Outside diff comments:
In `@src/lib/cli.ts`:
- Around line 31-39: The inline comment block in src/lib/cli.ts still lists
"upCommand, downCommand -> docker.ts" which is stale; remove that bullet (or
replace it with the current module name if those commands were moved elsewhere)
so the comment accurately reflects the new locations (e.g., init.ts, doctor.ts,
hooks.ts, knowledge.ts, skills.ts, issue.ts, pr.ts), and scan for any other
lingering "docker" references in that comment to keep the summary consistent
with the actual command files.

In `@src/lib/commands/doctor.ts`:
- Around line 84-97: The local getProjectName function duplicates logic already
implemented in the shared getProjectName; refactor the shared function
(getProjectName in shared/constants.ts) to accept an optional cwd parameter
(defaulting to process.cwd()), replace the local implementation in
src/lib/commands/doctor.ts with an import of the shared getProjectName, and call
it with the existing cwd argument; remove the duplicate function from doctor.ts
to keep a single source of truth.

In `@tests/unit/src/cli.test.ts`:
- Around line 22-37: Remove the unused MockDockerClient class definition from
the test file: delete the MockDockerClient class (its methods version,
composeVersion, compose and composeCalls/versionCalls/composeVersionCalls
fields) since it's instantiated but never exercised or asserted; also ensure no
remaining references to MockDockerClient (e.g., in any doctorCommand-related
setup) remain in the test so tests compile cleanly.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2de9285 and e746978.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (13)
  • CHANGELOG.md
  • package.json
  • src/lib/cli.ts
  • src/lib/commands/docker.ts
  • src/lib/commands/doctor.ts
  • src/lib/commands/index.ts
  • src/lib/commands/init.ts
  • src/lib/commands/shared/constants.ts
  • src/lib/commands/shared/index.ts
  • src/project/.lisa/.env.template
  • src/project/.lisa/docker/docker-compose.graphiti.yml
  • tests/integration/cli/index.ts
  • tests/unit/src/cli.test.ts
💤 Files with no reviewable changes (4)
  • src/project/.lisa/.env.template
  • src/lib/commands/shared/index.ts
  • src/lib/commands/docker.ts
  • src/project/.lisa/docker/docker-compose.graphiti.yml

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e746978279

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +260 to +263
const notesRef = path.join(cwd, '.git', 'refs', 'notes', 'mem');

// Check if git notes for memory exist
const hasNotes = await fs.pathExists(notesRef);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Detect git-mem refs via git, not loose-ref path

checkGitMem treats .git/refs/notes/mem existence as the source of truth, but refs can be packed and still valid; git pack-refs -h documents --[no-]prune with “prune loose refs (default)”, so this file path can disappear while notes remain readable via git notes --ref=mem. That makes lisa doctor incorrectly report “no memories stored yet” for repositories that have packed note refs (and similarly for other non-loose ref layouts).

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 0beb893 - now checks both loose refs and packed-refs. See the reply to CodeRabbit's similar comment above.

TonyCasey and others added 2 commits February 27, 2026 09:03
Update doctor tests to match simplified implementation:
- Remove tests for deprecated Docker, mode, group, endpoint config
- Add tests for Git Repository check
- Add tests for Git-Mem Storage check
- Update IConfigInfo expectations (storage, projectName only)
- Update createMockResult to match new check types

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Address review feedback: git notes can be packed by `git gc` into
.git/packed-refs. Now checkGitMem checks both loose refs and packed-refs
to accurately detect existing memories.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/lib/commands/doctor.ts`:
- Around line 259-294: checkGitMem currently returns status 'ok' even when the
repository has no .git directory which contradicts the overall repo checks;
update the function checkGitMem to first verify the existence of the .git
directory (e.g., check path.join(cwd, '.git')) and if missing return a failing
ICheckResult (status: 'fail') with a clear message like "No .git repository
found — initialize a git repo" and appropriate durationMs; otherwise proceed
with the existing logic that inspects refs/notes/mem and packed-refs and return
'ok' only when the git metadata is present.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c3e47f and 0beb893.

📒 Files selected for processing (2)
  • src/lib/commands/doctor.ts
  • tests/unit/src/lib/commands/doctor.test.ts

@TonyCasey TonyCasey merged commit 58e9d8b into main Feb 28, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

nate Nate Plan: Memory improvement features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant