Skip to content

pmem CLI coverage gaps: missing profile, batch, import/export, and more #1087

Description

@lightzt99

Summary

pmem CLI covers 7 of 13 MCP tools, ~65% of HTTP API routes, and ~50% of SDK Memory public methods. The main gaps are user profiles (none), batch operations, import/export, memory quality metrics, agent config, and session timeline queries.

Coverage matrix

memory commands (7/7 [x])

Operation CLI MCP HTTP API SDK
add pmem memory add add_memory POST /memories Memory.add()
search pmem memory search search_memories POST /memories/search Memory.search()
get pmem memory get get_memory_by_id GET /memories/{id} Memory.get()
update pmem memory update update_memory PUT /memories/{id} Memory.update()
delete pmem memory delete delete_memory DELETE /memories/{id} Memory.delete()
list pmem memory list list_memories GET /memories Memory.get_all()
delete-all pmem memory delete-all delete_all_memories DELETE /memories Memory.delete_all()

profile commands (0/6 [ ])

Operation CLI MCP HTTP API
add with profile -- add_memory_with_profile POST /users/{id}/profile
search with profile -- search_memories_with_profile --
get profile -- get_user_profile GET /users/{id}/profile
list profiles -- list_user_profiles GET /users/profiles
delete profile -- delete_user_profile DELETE /users/{id}/profile
delete memory with profile -- delete_memory_with_profile --

batch operations (0/3 [ ])

Operation CLI HTTP API
batch add -- POST /memories/batch
batch update -- PUT /memories/batch
batch delete -- DELETE /memories/batch

import/export (0/2 [ ])

Operation CLI HTTP API SDK
import -- (restore is different) POST /memories/import Memory.import_memories()
export -- (backup is different) GET /memories/export Memory.export_memories()

memory quality & optimize (0/2 [ ])

Operation CLI HTTP API SDK
quality metrics -- GET /memories/quality --
optimize (dedup) -- -- Memory.optimize()

session timeline (0/3 [ ])

Operation CLI HTTP API
timeline -- GET /memories/timeline
sessions -- GET /memories/sessions
session stats -- GET /memories/session-stats

agent commands (0/4 [ ])

Operation CLI HTTP API
get agent config -- GET /agents/{id}/config
set agent config -- POST /agents/{id}/config
agent memory search -- POST /agents/{id}/memories/search
agent stats -- GET /agents/{id}/stats

advanced SDK features (0/3 [ ])

Operation CLI SDK
migrate all sub-stores -- Memory.migrate_all_sub_stores()
source store CRUD -- get_source, link_memory_to_source, etc.
skill CRUD -- get_skill, update_skill_status, merge_skills

status summary

Category Covered Missing
memory CRUD 7 0
profile 0 6
batch 0 3
import/export 0 2
quality/optimize 0 2
session timeline 0 3
agent 0 4
advanced SDK 0 3*
stats 1 0
config 4 0
manage 4 0
shell 1 0

*advanced SDK features (source store, skills, migrate-all) are niche and likely not worth CLI exposure.

Root cause

CLIContext in src/powermem/cli/main.py only exposes a memory property (via create_memory()), with no user_memory, no HTTP client for batch/session/agent APIs. All consumer-surface functionality beyond Memory CRUD is invisible to CLI.

Prioritized implementation plan

P0: Profile support (user-visible gap)

Add user_memory lazy property to CLIContext, then:

pmem memory add --with-profile [--profile-type content|topics] [--native-language <lang>]
pmem memory search --add-profile
pmem profile get <user_id>
pmem profile list [--main-topic X] [--sub-topic Y]
pmem profile delete <user_id>
pmem profile extract <user_id>

P1: Batch + import/export

pmem memory add --batch <file.json>    # POST /memories/batch
pmem memory import <file>              # POST /memories/import
pmem memory export [--format json|csv] # GET /memories/export

P2: Quality + session timeline

pmem memory quality [--user-id X]
pmem memory timeline [--run-id X]
pmem sessions list [--user-id X]

P3 (defer): Agent commands

pmem agent config get <agent_id>
pmem agent config set <agent_id> ...
pmem agent search <query> --agent-id X

Parameter simplification (profile extraction)

UserMemory.add() takes 6 profile-specific parameters. For CLI single-turn use:

Parameter CLI value Proposal
--profile-type essential -- content vs topics expose
--native-language useful for multi-language expose
--custom-topics only with topics mode, high barrier defer
--strict-mode only with custom_topics defer
--include-roles CLI input is single text, no roles omit
--exclude-roles same reason omit

Related files

  • src/powermem/cli/main.py -- CLIContext class (root cause)
  • src/powermem/cli/commands/memory.py -- add/search/list commands
  • src/powermem/cli/commands/interactive.py -- shell _cmd_add, _cmd_search
  • src/powermem/user_memory/user_memory.py -- UserMemory methods
  • src/powermem/mcp/server.py -- 13 MCP tools (reference surface)
  • src/server/api/v1/memories.py -- HTTP memory routes
  • src/server/api/v1/users.py -- HTTP user/profile routes
  • src/server/api/v1/agents.py -- HTTP agent routes
  • src/powermem/core/memory.py -- SDK Memory class

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions