@prismer/openclaw-workspace

March 3, 2026 · View on GitHub

OpenClaw Skill Plugin for Prismer.AI Academic Workspace

Version: 0.5.0 Package: @prismer/openclaw-workspace Type: OpenClaw Skill Plugin SSoT: docker/plugin/prismer-workspace/version.ts

Overview

Provides 26 workspace tools that the OpenClaw agent can invoke to control academic research operations. Tools are registered via the registerTool() API and organized into 6 categories: content update, execution, data, UI control, workspace context, and academic.

Tool Categories

Content Update Tools (7)

ToolTarget ComponentDirective(s)Description
update_latexlatex-editorSWITCH + UPDATE_LATEXUpdate LaTeX editor content
update_notesai-editorSWITCH + UPDATE_NOTESUpdate Notes editor (HTML)
update_notebookjupyter-notebookSWITCH + UPDATE_NOTEBOOKUpdate Jupyter cells
update_gallerybento-gallerySWITCH + UPDATE_GALLERYUpdate image gallery
update_codecode-playgroundSWITCH + UPDATE_CODEUpdate code playground
save_artifactAPI-onlySave artifact to collection
load_pdfpdf-readerSWITCH + PDF_LOADLoad PDF document

Execution Tools (4)

ToolTarget ComponentDirective(s)Description
latex_compilelatex-editorSWITCH + COMPILE_COMPLETECompile LaTeX to PDF
jupyter_executejupyter-notebookSWITCH + CELL_RESULTExecute Python code
code_executecode-playgroundSWITCH + CODE_RESULTExecute code in playground
latex_project_compilelatex-editorSWITCH + COMPILE_COMPLETECompile multi-file LaTeX project

Data Tools (4)

ToolTarget ComponentDirective(s)Description
data_listag-gridList data files in workspace
data_loadag-gridSWITCH + UPDATE_DATA_GRIDLoad CSV/JSON into grid
data_queryag-gridUPDATE_DATA_GRIDFilter/query loaded data
data_saveAPI-onlySave data to workspace

UI Control Tools (3)

ToolTarget ComponentDirective(s)Description
switch_componentanySWITCH_COMPONENTSwitch active workspace tab
send_ui_directiveanypass-throughSend raw UI directive
navigate_pdfpdf-readerPDF_NAVIGATENavigate PDF to page

Workspace Context Tools (5)

ToolTarget ComponentDirective(s)Description
get_workspace_stateAPI-onlyGet workspace state (files, editors, tasks)
sync_files_to_workspaceAPI-onlySync container files to frontend
context_searchAPI-onlySearch workspace context
context_loadAPI-onlyLoad workspace context
get_paper_contextAPI-onlyGet paper context for LLM

Academic Tools (3)

ToolTarget ComponentDirective(s)Description
arxiv_to_promptAPI-onlyConvert arXiv paper to LLM text
jupyter_notebookjupyter-notebookAPI-onlyCRUD for notebook files
latex_projectlatex-editorLaTeX project file management

Component Targets for switch_component

pdf-reader | latex-editor | jupyter-notebook | code-playground | ai-editor | ag-grid | bento-gallery | three-viewer

Directive Pipeline

Tools auto-trigger UI directives as side-effects:

Tool invocation → sendUIDirective()
  → POST ${apiBaseUrl}/api/agents/${agentId}/directive
  → in-memory queue on Next.js backend
  → SSE /api/agents/:id/directive/stream
  → useDirectiveStream hook → mapPluginDirective()
  → executeDirective() → componentStore + CustomEvent
  → Editor component renders

10 of the 14 base tools auto-trigger SWITCH_COMPONENT + content directive — the agent doesn't need to call switch_component explicitly.

API Routing

Tools call container-internal services via the Container Gateway (container-gateway.mjs):

Tool → HTTP → container-gateway.mjs (:3000)
                  ├── /api/v1/latex/*    → :8080 (TeXLive)
                  ├── /api/v1/jupyter/*  → :8888 (Jupyter)
                  ├── /api/v1/prover/*   → :8081 (Coq + Z3)
                  └── /api/v1/arxiv/*    → :8082 (arxiv-to-prompt)

External calls (directive delivery, workspace context):

Tool → HTTP → ${apiBaseUrl}/api/agents/${agentId}/directive
Tool → HTTP → ${apiBaseUrl}/api/workspace/${workspaceId}/context
Tool → HTTP → ${apiBaseUrl}/api/workspace/${workspaceId}/files/sync-to-container

Builtin Skill: find-skills

Location: skills/find-skills/

A builtin skill registry for discovering and managing workspace skills:

ToolDescription
skill_searchSearch skills by query/category
skill_infoGet detailed skill manifest
skill_installInstall skill to workspace
skill_listList installed skills
skill_uninstallRemove skill
skill_updateUpdate skills to latest

Skill Categories

latex | jupyter | pdf | citation | data | writing | general

Skill Registry Paths

  • Local workspace: /workspace/skills/<skill-id>/manifest.json
  • Builtin: /home/user/.openclaw/workspace/skills/
  • Cloud (future): Set PRISMER_SKILL_REGISTRY_URL env var

Source Files

FilePurpose
index.tsPlugin registration
version.tsVersion SSoT (0.5.0)
src/tools.ts26 tool implementations via registerTool() API
src/types.tsTool parameter and result types
src/skill.tsSkill definition and lifecycle
openclaw.plugin.jsonPlugin manifest + configSchema
skills/find-skills/index.tsSkill registry (search, install, CRUD)
skills/find-skills/manifest.jsonSkill metadata and tool definitions

Configuration

openclaw.plugin.json configSchema (additionalProperties: false):

{
  "apiBaseUrl": "http://host.docker.internal:3000",
  "agentId": "<agent-instance-id>",
  "workspaceId": "<workspace-session-id>"
}

These are set by the backend at container startup via buildOpenClawConfig() in src/app/api/agents/[id]/start/route.ts.

Build

cd docker/plugin/prismer-workspace
npm run build    # → dist/

Dependencies

  • openclaw (peer) — OpenClaw runtime

Test Coverage

See docs/WINDOWVIEW_CONVERGENCE.md §7 for the 4-layer test system:

LayerCoverageDescription
Unit0/26 toolsPlugin has no unit tests (P0 gap)
L17/14 base toolsContainer API integration (21 tests)
L27/8 componentsFrontend directive rendering (32 tests)
L34 MVP scenariosReal agent E2E (6 tests)

Changelog

0.5.0 (2026-02-26)

  • Major rewrite with registerTool() API
  • Added 12 tools: data_list, data_load, data_query, data_save, latex_project, latex_project_compile, get_paper_context, navigate_pdf, context_search, context_load, get_workspace_state, sync_files_to_workspace
  • Added workspaceId to openclaw.plugin.json configSchema (fixes container crash)
  • Total: 26 tools

0.4.0 (2026-02-26)

  • Added code_execute, update_code (code playground integration)
  • Total: 14 tools

0.3.0 (2026-02-25)

  • Added save_artifact, update_gallery
  • Workspace-aware LaTeX compilation
  • Total: 12 tools

0.2.0 (2026-02-24)

  • Added update_notes, update_latex, update_notebook
  • Fixed registerTool API compatibility
  • Total: 10 tools

0.1.0 (2026-02-16)

  • Initial release with 7 workspace tools
  • find-skills builtin skill with 6 registry tools
  • Container Gateway API routing integration