Skip to content

feat(memory-islands-action): add Memory Islands Manager Action plugin (v0.2.0) - #16

Open
skorphil wants to merge 2 commits into
feat/memory-islands-v020-rewritefrom
feat/memory-islands-action
Open

feat(memory-islands-action): add Memory Islands Manager Action plugin (v0.2.0)#16
skorphil wants to merge 2 commits into
feat/memory-islands-v020-rewritefrom
feat/memory-islands-action

Conversation

@skorphil

Copy link
Copy Markdown
Member

Summary

Adds the Memory Islands Manager Action plugin (v0.2.0) — the companion Rich UI for the Memory Islands Filter. A message-toolbar button opens an inline panel that lists the active folder's learned facts, allows adding new facts, and deleting individual facts.

Key design points

  • Shared database, read-only: reads the same $DATA_DIR/memory-islands/folder_memories.db (schema v2) via mirrored helpers (_resolve_data_dir, _init_databases, _load_folder_data) with timeout=5 and graceful sqlite3 error handling. The Action never writes the DB.
  • Command-channel interactivity: add/delete round-trips are posted through the chat via parent.postMessage({type:'input:prompt:submit', data:{prompt:'<cmd>'}}, '*'); the Memory Islands Filter inlet intercepts @memory add: <fact> / @memory delete: <fact> and performs the write. No security-lowering settings required.
  • Stored-XSS protection: all fact content is HTML-escaped on render; delete uses an HTML-escaped data-fact attribute recovered via btn.dataset.fact.
  • OWUI compatibility: HTMLResponse is lazy-imported inside _render_panel_response (fastapi is not available in the dev environment); action() entry point is declared on the Action class for scripts/validate_plugin.py, delegating to ActionMixin.action.
  • Update notifier wired with memory-islands-action/ release-tag prefix and ENABLE_UPDATE_NOTIFICATIONS / CHECK_PREVIEW_RELEASES admin valves.

Testing

  • python3 build.py (plugin gate): ruff check + format + 41 unit tests + 3 integration tests — all pass.
  • Integration tests verify the exact command payloads are accepted by the Filter's _parse_panel_command protocol (FR-011).
  • scripts/validate_plugin.py reports OK memory-islands-action.

Notes / deviations

  • Branch is based on feat/memory-islands-v020-rewrite (not trunk) because the integration test must run against the Filter's _parse_panel_command, which only exists on that branch; trunk lacks the memory-islands plugin entirely.
  • The integration test file is named test_panel_command_protocol_integration.py (not test_integration.py) to avoid the pre-existing pytest basename collision between export-chat and memory-islands test modules.

Files

13 new files under plugins/memory-islands-action/ (src/, tests/, pyproject.toml, build.py, install.py, README.md, CHANGELOG.md).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant