Skip to content

Repository files navigation

omp-all-in-one

OMP plugin. Prompt Uplift expands every user prompt into a nested XML specification before the coding agent runs — the same density as a production build prompt (role, context, constraints, named feature sections, acceptance, out of scope).

Default on. Each rewrite is echoed in the transcript (root, source, full XML) so you can audit what the agent received. Prefix raw: to send a prompt unchanged. /uplift off disables.

Install

omp plugin link /root/src/repos/plugin

Confirm with omp plugin list — you should see ● omp-all-in-one@0.1.0.

Extension modules load at session start. /reload-plugins does not pick up omp.extensions. Quit omp and start a new session. TUI widgets (kanban, LSP section, uplift chrome) load the same way.

One-off without a permanent install:

omp -e /root/src/repos/plugin

Local marketplace:

omp plugin marketplace add /root/src/repos/plugin
omp plugin install all-in-one@aio

What it does

  1. You type a short request.
  2. The plugin calls the session model to rewrite it as XML (BUILD_PROMPT, FIX_PROMPT, RESEARCH_PROMPT, CHANGE_PROMPT, or UPLIFTED_PROMPT).
  3. Nested sections are named after the work, not a flat generic list.
  4. The rewritten XML is shown in the session (Prompt Uplift · ROOT · llm|fallback) before the agent runs.
  5. The agent receives the XML plus a short system addendum: treat it as the spec, do not reprint it.
  6. If the model fails, a conservative fallback XML still wraps the original request. That wrap is echoed too.

Skipped automatically: slash commands, trivial acknowledgements (ok, lgtm, …), already-uplifted XML, extension-sourced / steer messages, Ultrathink/swarm child sessions.

Commands

CommandEffect
/upliftToggle
/uplift on / offEnable / disable
/uplift statusCurrent mode
/uplift skipSkip the next prompt
/uplift lastShow the last uplifted XML
/aioSame as /uplift (plugin root command)
/aio uplift …Delegate to /uplift
/issuesIssue tracking status / last Tissue → ktui sync
/kanbanOverlay of the Spectrum Web Co board (not the Textual ktui TUI)
/aio issuesSame as /issues
/aio kanbanSame as /kanban
/thinkGraph of Thought on / off / status / last
/lspLive LSP status / diagnostics
/pr create [title…]Open a GitHub PR (title defaults to the current branch)
/pr listList pull requests in the current repo
/review [base]Run Greptile CLI review; notify confidence and comment count
/merge <n>Greptile-gated squash merge (blocked until 5/5 and zero comments)
/aio pr …Same as /pr
/aio review …Same as /review
/aio merge …Same as /merge
/aio think …Same as /think
/supabasestatus / projects / tables / users
/podstatus / up / connect / doctor / on / off

Prefixes: uplift: force · raw: skip.

Flags: --aio-uplift-off starts the session with uplift disabled. --aio-issues-off starts with issue tracking disabled. --aio-think-off starts with Graph of Thought disabled. --aio-lsp-off starts with Live LSP disabled. --aio-pod-off starts with pod boot disabled.

TUI chrome

Interactive OMP keeps persistent chrome around the editor (not a flash of working-message or default cards):

  • Kanban above the editor — themed columns with counts, up to three task titles, Last issue, and /kanban. Offline: accent title plus a warning board offline.
  • Uplift chrome (aio-chrome) above the editor — Uplift on/off and last root/source; Think on and node count; Tools idle or ▶ {tool}; Pod connected / not connected / disabled; Anda active when the nexus probe succeeds.
  • LSP section below the editor — always visible. Shows LSP clean or an error/warning digest.

Transcript cards are custom labeled Box + Text for aio-uplift, aio-think, aio-issue, and aio-lsp. Uplift shows Prompt Uplift · root · source plus the first lines of XML when expanded, not a raw dump.

/kanban is still an overlay of the Spectrum Web Co board. That overlay is not the Textual ktui TUI — run ktui in another terminal for that.

Chrome loads with omp.extensions at session start. Quit omp and open a new session after linking the plugin; /reload-plugins does not pick it up.

Graph of Thought

After XML uplift, Graph of Thought (3–8 nodes) then sequential Chain of Thought per node.

The agent receives the uplifted XML plus a GRAPH_OF_THOUGHT block with THINKING / CONCLUSION per node.

When think produced a graph, the plugin writes one parent Tissue issue plus one sub-issue per graph node under issues/, then syncs each to Spectrum Web Co. Idempotent via <!-- aio-id: … --> markers — re-running the same prompt updates in place. Think off (or think failed) still writes one issue from the prompt.

Commands: /thinkon | off | status | last (also /aio think …). Flag: --aio-think-off. Config: think: { enabled, minNodes, maxNodes } in all-in-one.json.

raw: and /uplift skip still skip the whole pre-pass, including think.

Live LSP

Lazy stdio language servers feed diagnostics into the session. Fail-open: missing binaries stay disabled (no auto-install). The LSP section below the editor always shows LSP clean or a digest. Never blocks the agent.

LanguageServer (PATH)
C#csharp-ls
Rustrust-analyzer
Javajdtls
Pythonpyright-langserver
TypeScripttypescript-language-server
Elixirelixir-ls
OCamlocamllsp
PHPintelephense

After write / edit, diagnostics sync. A changed error set is injected at turn_end (aio-lsp) and as ## Live LSP on before_agent_start.

Tools: lsp_status / lsp_diagnostics (optional path to sync first). Command: /lspstatus | diagnostics. Flag: --aio-lsp-off. Config: lsp.enabled in all-in-one.json.

GitHub org MCP + Greptile gate

Stdio MCP server ./bin/aio-mcp (.mcp.json key aio, relative command, no cwd) talks to GitHub org swcstudiospace and the Greptile CLI. Merge is forbidden until Greptile review is clean (confidence ≥ 5 and zero comments). There is no force-merge tool.

Slash commands call the same libraries as the MCP server (they do not spawn a second MCP). PRs are created only via MCP tools or /pr / /aio pr — session start does not silently open a PR, even when github.autoPr is true. The plugin does not auto-commit.

greptile login is required for CLI review. If the CLI is signed out, session start notifies once: /review and merge stay blocked until greptile login.

Tools (text results, no tokens):

ToolInput
github_list_repos{ org? }
github_create_repo{ name, private? }
github_create_pull_request{ title, body?, base?, owner?, repo? }
github_list_pull_requests{ owner?, repo?, state? }
github_get_pull_request{ number, owner?, repo? }
github_merge_pull_request{ number, owner?, repo? } — runs Greptile review; refuses unless the gate passes
greptile_whoami{}
greptile_review{ base? } (cwd = process cwd)
aio_status{} — org + Greptile signedIn; never tokens

Optional hosted Greptile HTTP MCP at https://api.greptile.com/mcp with GREPTILE_API_KEY. Do not commit a Bearer key. This plugin does not ship that server in .mcp.json.

Supabase

The same stdio MCP server ./bin/aio-mcp (.mcp.json key aio) also talks to Supabase: Management API (projects), Data API (tables/rows/rpc), and Auth Admin (list/get/create/delete users). Credentials are env only — never a config-file secret. Do not add a hosted Supabase MCP URL to .mcp.json.

Slash commands call the same libraries as the MCP tools (they do not spawn a second MCP). Commands: /supabasestatus | projects | tables | users.

Config: supabase.enabled (default true). If enabled is false, tools return { error: "disabled" }. If env vars are unset, tools return { error: "missing_credentials" } — they never throw.

Keys never appear in tool results. JWT-shaped strings are masked (first12…last4).

Env:

VariableUsed for
SUPABASE_ACCESS_TOKENManagement API (https://api.supabase.com/v1)
SUPABASE_URLData + Auth (no trailing slash)
SUPABASE_SERVICE_KEY or SUPABASE_SERVICE_ROLE_KEYData + Auth service role

Tools (text results, no tokens):

ToolInput
supabase_status{}{ configured: { management, data } }; no secrets
supabase_projects_list{}
supabase_project_get{ projectId }
supabase_tables_list{ limit? }
supabase_rows_read{ table, limit?, order?, filters? }
supabase_rpc_call{ function, args? }
supabase_auth_users_list{ page?, perPage? }
supabase_auth_user_get{ id }
supabase_auth_user_create{ email, password?, emailConfirm? }
supabase_auth_user_delete{ id }

aio_status also includes supabase: { management, data } booleans.

Pod boot (codespace)

When pod.enabled is true (default false), omp open (session_start) boots an isolated DevPod codespace, then attaches:

  1. Create pod.extraDirs on load (relative paths resolve against session cwd).
  2. DevPod up (devpod up <cwd> --id <workspaceId> --open-ide=false). Exit 0 is not SSH-ready.
  3. Wait until ready (DevPod startWait equivalent): poll devpod status <id> --output json until state/Status is Running (Busy/empty: sleep pollMs, default 2s), then devpod ssh <id> --command true until exit 0. connected is true only after SSH works. Timeout readyTimeoutMs (default 300000 / 5 min); on timeout connected stays false and the reason includes "not ready".
  4. Anda Engine probe (ANDA_NEXUS_URL / pod.nexusUrl, default http://127.0.0.1:8091).
  5. dTEE probe — ldclabs (not iclabs) IC-TEE gateway reachability. anda_web3_client feature tee wraps ic_tee_gateway_sdkTeeClient. HTTP probe of DTEE_GATEWAY_URL || IC_TEE_GATEWAY_URL || pod.dteeUrl (default http://127.0.0.1:8443). Not an invented enclave. Missing daemon → dtee: false.

File tools (read, write, edit, grep path, rooted glob) are jailed to the workspace plus those extra dirs. When the pod is connected, bash is rewritten to `${bin} ssh ${id} --command ${JSON.stringify(command)}` (wrapBashCommand quotes --command). Missing binary is fail-open: notify, still jail to cwd + extraDirs, no fake ssh.

Child Ultrathink / swarm sessions (PI_AIO_CHILD / PI_ULTRATHINK_CHILD) do not boot a nested pod.

Bin: AIMEE_POD_BIN || pod.bin || devpod. Nexus: ANDA_NEXUS_URL || pod.nexusUrl || http://127.0.0.1:8091. dTEE gateway: DTEE_GATEWAY_URL || IC_TEE_GATEWAY_URL || pod.dteeUrl || http://127.0.0.1:8443. Flag: --aio-pod-off. Commands: /podstatus | up | connect | doctor | on | off. /pod on enables without booting. /pod up and /pod connect enable then devpod up. /pod doctor and /pod status live-probe DevPod (version / list / status) plus Anda and dTEE — they never call up or ssh. Failed boot still probes Anda so engineActive can be true while connected is false.

Config

~/.omp/agent/all-in-one.json (or $PI_CODING_AGENT_DIR/all-in-one.json). All keys optional.

{
"uplift": {
"enabled": true,
"skipTrivial": true,
"maxChars": 20000,
"echo": true
},
"issues": {
"enabled": true,
"boardName": "Spectrum Web Co",
"ktuiBin": "ktui",
"echo": true
},
"think": {
"enabled": true,
"minNodes": 3,
"maxNodes": 8
},
"github": {
"org": "swcstudiospace",
"autoPr": true
},
"greptile": {
"requiredForMerge": true,
"bin": "greptile",
"minConfidence": 5
},
"supabase": {
"enabled": true
},
"lsp": {
"enabled": true
},
"pod": {
"enabled": false,
"bin": "devpod",
"workspaceId": "",
"extraDirs": [],
"nexusUrl": "http://127.0.0.1:8091",
"dteeUrl": "http://127.0.0.1:8443",
"readyTimeoutMs": 300000,
"pollMs": 2000
}
}

Prompts longer than maxChars skip the LLM and use fallback wrap. Set echo to false to hide the per-turn XML transcript (the agent still receives the rewrite; /uplift last still shows it). raw: and skip still skip the whole pre-pass, including Graph of Thought.

supabase.enabled defaults to true. Unset env vars make tools return missing_credentials. lsp.enabled defaults to true. Missing language-server binaries stay disabled; nothing is auto-installed. pod.enabled defaults to false — only configured sessions pay devpod up on open. /pod up turns it on for the session. Missing DevPod is fail-open (notify, jail to cwd + extraDirs, no fake ssh). Codespace is not connected until status --output json is Running and ssh --command true succeeds (readyTimeoutMs default 5 min). /pod doctor reports Anda independently of the codespace. dTEE is an ldclabs IC-TEE gateway probe (dtee: boolean); missing daemon → dtee: false.

Verify

cd /root/src/repos/plugin
bun install
bun test
bun run check
  1. Start a new omp session. /uplift should autocomplete. Themed kanban and uplift chrome should sit above the editor; the LSP section below should show LSP clean or a digest.
  2. Type a one-line feature request. The transcript should show a custom Prompt Uplift · … card plus the XML; the agent should receive that XML, not the one-liner.
  3. raw: do this exactly should reach the agent un-uplifted.

Issue tracking

On session start in a git/project folder, the plugin ensures an issues/ Tissue repo in that folder (session cwd) — not the plugin package unless you opened it. Marker is issues/tissue.json.

Each uplifted prompt with a Graph of Thought writes one parent markdown issue plus one child per graph node under issues/. Think off → one issue from the prompt. Skipped, raw:, and trivial prompts do not.

Idempotent: <!-- aio-id: {workUnitId} --> on the parent and <!-- aio-id: {workUnitId}/{node.id} --> on each child. A re-run of the same prompt rewrites those files in place; it does not add extra .md files.

## Issue tracking is attached on every agent start while a tree (or last issue) exists, so building stays on the board — not a one-shot addendum. Persist with git add issues/. Do not gh issue create.

Issues sync to the existing ktui board Spectrum Web Co via the ktui CLI. Agent tools come from MCP ktui mcp --start-server (tool mcp__ktui_ktui). This plugin's .mcp.json starts that server; no --scope.

OMP shows a themed kanban widget above the editor plus a /kanban overlay. That overlay is not the real Textual TUI — run ktui in another terminal for that. See TUI chrome.

GitHub association is the origin remote URL stored on the issue (plus a category named owner/repo).

Tools: issues_status (last parent id/title + child count; never secrets) / issues_list. Commands: /issues, /kanban (also /aio issues / /aio kanban). Config: issues key in all-in-one.json. Flag: --aio-issues-off.

Hermes skills

The plugin ships a flattened copy of the Hermes Agent skill library under skills/<name>/SKILL.md so OMP discovers them (first-level skill dirs only). Nested Hermes categories (software-development/clippyos-development) become skills/clippyos-development.

This is a one-way import. ~/.hermes is not modified. Auth, tokens, session dumps, databases, and .env are not copied. Re-run:

bun run import:hermes

Idempotent: unchanged skills are left alone; locally edited imports are not overwritten (see skills/.hermes-import-report.md).

Not imported: auth.json, mcp-tokens/, .env, state.db, session dumps, memories (USER.md has private channel ids), SOUL.md identity.

About

OMP all-in-one plugin: Prompt Uplift expands sparse prompts into nested XML specs

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages