From 4423c4ed73fe1edd6cd626d8358db88c17356195 Mon Sep 17 00:00:00 2001 From: Nova-machinepulse Date: Wed, 29 Apr 2026 22:47:04 +0800 Subject: [PATCH 1/3] chore(openclaw-plugin): bump release version to 0.1.0 --- openclaw-plugin/README.md | 2 +- openclaw-plugin/package-lock.json | 4 ++-- openclaw-plugin/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openclaw-plugin/README.md b/openclaw-plugin/README.md index 313220a..74734b5 100644 --- a/openclaw-plugin/README.md +++ b/openclaw-plugin/README.md @@ -27,7 +27,7 @@ Verify it loaded: ```bash openclaw plugins list | grep world2agent -# → │ World2Agent │ world2agent │ openclaw │ enabled │ ... │ 0.1.0-alpha.0 │ +# → │ World2Agent │ world2agent │ openclaw │ enabled │ ... │ 0.1.0 │ openclaw world2agent --help # → Commands: reload, sensor ``` diff --git a/openclaw-plugin/package-lock.json b/openclaw-plugin/package-lock.json index 73bfca5..65a2c14 100644 --- a/openclaw-plugin/package-lock.json +++ b/openclaw-plugin/package-lock.json @@ -1,12 +1,12 @@ { "name": "@world2agent/openclaw-plugin", - "version": "0.1.0-alpha.0", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@world2agent/openclaw-plugin", - "version": "0.1.0-alpha.0", + "version": "0.1.0", "license": "Apache-2.0", "dependencies": { "@world2agent/sdk": "0.1.0-alpha.1", diff --git a/openclaw-plugin/package.json b/openclaw-plugin/package.json index 644e181..120063c 100644 --- a/openclaw-plugin/package.json +++ b/openclaw-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@world2agent/openclaw-plugin", - "version": "0.1.0-alpha.0", + "version": "0.1.0", "description": "World2Agent native plugin for OpenClaw", "license": "Apache-2.0", "author": "MachinePulse Pte. Ltd.", From 83dc4e9c726c53b6ffdcaa9fd9b883640d92a86a Mon Sep 17 00:00:00 2001 From: Nova-machinepulse Date: Wed, 29 Apr 2026 23:24:49 +0800 Subject: [PATCH 2/3] fix(openclaw-plugin): remove context injection prerequisite --- README.md | 49 +------------------ openclaw-plugin/src/cli.ts | 3 -- openclaw-plugin/src/config.ts | 13 ----- openclaw-plugin/src/plugin.ts | 3 -- .../test/context-injection.test.ts | 11 ++--- 5 files changed, 6 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 8f97056..d1e8ffe 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Channel adapters that connect [World2Agent](https://github.com/machinepulse-ai/w | --- | --- | --- | | [`claude-code-channel`](./claude-code-channel) | [Claude Code](https://docs.claude.com/en/docs/claude-code) | MCP channel adapter + Claude Code plugin bundle. Signals arrive as in-session MCP notifications. | | [`hermes-sensor-bridge`](./hermes-sensor-bridge) | [Hermes Agent](https://hermes-agent.nousresearch.com/) | Out-of-process supervisor + webhook bridge. Each signal triggers a fresh `AIAgent.run_conversation()` with the generated handler skill auto-loaded. | -| [`openclaw-plugin`](./openclaw-plugin) | [OpenClaw](https://docs.openclaw.ai/) | Native OpenClaw plugin. Conversational install via chat (Q&A driven by the sensor's `SETUP.md`), in-process polling, dispatch via OpenClaw's embedded-agent runtime into a per-sensor session lane keyed `agent:main:w2a-` (main chat untouched). | +| [`openclaw-plugin (wip)`](./openclaw-plugin) | [OpenClaw](https://docs.openclaw.ai/) | Work in progress. | --- @@ -52,29 +52,6 @@ Each signal triggers a fresh agent run against the generated handler skill. See --- -## Quick start — OpenClaw - -Install the plugin (`--dangerously-force-unsafe-install` is required because the plugin uses `child_process` to npm-install sensor packages on demand — OpenClaw's security scan blocks it otherwise): - -```bash -openclaw plugins install @world2agent/openclaw-plugin --dangerously-force-unsafe-install -openclaw gateway restart -``` - -Then in a chat session with your `main` agent, just describe what you want to subscribe to: - -``` -> subscribe me to Hacker News — I care about AI and security stories -``` - -The bundled `world2agent-manage` skill takes over: reads the sensor's `SETUP.md`, asks you 1–3 questions to personalize the handler, writes both the config and the personalized SKILL.md, registers the sensor, and reloads the running plugin — without any manual CLI work. - -> If reload returns `ok: false` (for example a gateway-call timeout), the agent will ask **you** to run `openclaw gateway restart` in your own terminal. It intentionally doesn't run that command itself — restarting the gateway from inside the chat would kill the gateway process and truncate the agent's reply mid-sentence. After reload or restart, the sensor starts polling within seconds; subsequent polls follow the sensor's configured `interval_seconds`. - -Signals route to a per-sensor session lane (`agent:main:w2a-`) — your `main` chat is untouched. Open the `w2a-` lane in the OpenClaw dashboard () to see how the agent reacts to each signal. See [`openclaw-plugin/README.md`](./openclaw-plugin/README.md) for the full install reference, dispatcher internals, and CLI fallback. - ---- - ## Repository layout ``` @@ -96,16 +73,7 @@ Signals route to a per-sensor session lane (`agent:main:w2a-`) — your │ │ └── scripts/ # all host-side work (install, remove, list, …) │ ├── e2e/ │ └── package.json -└── openclaw-plugin/ # @world2agent/openclaw-plugin - ├── src/ - │ ├── dispatch.ts # runEmbeddedAgent + `# System Event` framing - │ ├── runtime.ts # in-process sensor lifecycle - │ ├── isolated.ts # opt-in subprocess mode (reuses Hermes runner) - │ └── cli.ts # `openclaw world2agent sensor add | list | remove` - ├── skills/world2agent-manage/ - │ └── SKILL.md # conversational install + management skill - ├── test/ - └── package.json +└── openclaw-plugin/ # @world2agent/openclaw-plugin (wip) ``` --- @@ -127,19 +95,6 @@ Users pull updates with: Bump `version` in `hermes-sensor-bridge/package.json`, then `pnpm publish --access public --tag alpha` (alpha) or `latest` (stable). Users pull the runtime with `npm install -g @world2agent/hermes-sensor-bridge@`. The skill is installed separately via `hermes skills install …`; re-run that command with `--force` to refresh to the latest skill content. -### OpenClaw plugin (`openclaw-plugin`) - -Bump `version` in `openclaw-plugin/package.json`, then `pnpm publish --access public --tag alpha` (alpha) or `latest` (stable). Users pull updates with: - -```bash -openclaw plugins install @world2agent/openclaw-plugin@ --dangerously-force-unsafe-install -openclaw gateway restart -``` - -The bundled `world2agent-manage` skill ships inside the package, so it updates atomically with the plugin — no separate install step. - ---- - ## License Apache-2.0 diff --git a/openclaw-plugin/src/cli.ts b/openclaw-plugin/src/cli.ts index 099a475..dbd8dd3 100644 --- a/openclaw-plugin/src/cli.ts +++ b/openclaw-plugin/src/cli.ts @@ -1,7 +1,6 @@ import { join } from "node:path"; import { packageToSkillId } from "@world2agent/sdk"; import { - assertContextInjectionCompatible, loadEffectiveOpenClawConfig, normalizeDeliver, upsertDedicatedAgentSkillAllowlist, @@ -117,7 +116,6 @@ async function runAddCommand( options: Record, ): Promise { const config = await loadEffectiveOpenClawConfig(services.api); - assertContextInjectionCompatible(config); const installed = await ensurePackageInstalled(pkg); const sensorId = optionString(options, "sensorId") ?? defaultSensorId(pkg); @@ -290,4 +288,3 @@ function optionString(options: Record, key: string): string | u function optionBoolean(options: Record, key: string): boolean { return options[key] === true; } - diff --git a/openclaw-plugin/src/config.ts b/openclaw-plugin/src/config.ts index 3ca4539..dd05bb7 100644 --- a/openclaw-plugin/src/config.ts +++ b/openclaw-plugin/src/config.ts @@ -6,8 +6,6 @@ import type { } from "./openclaw/plugin-sdk/types.js"; import type { DeliverConfig, RequiredWorld2AgentPluginConfig } from "./types.js"; -export const REQUIRED_CONTEXT_INJECTION = "continuation-skip"; - export async function loadEffectiveOpenClawConfig( api: OpenClawPluginApi, ): Promise { @@ -23,17 +21,6 @@ export async function loadEffectiveOpenClawConfig( return api.config ?? {}; } -export function assertContextInjectionCompatible(config: OpenClawConfig): void { - const got = config.agents?.defaults?.contextInjection; - if (got === REQUIRED_CONTEXT_INJECTION) return; - - throw new Error( - "OpenClaw config field `agents.defaults.contextInjection` must be set to " + - `"${REQUIRED_CONTEXT_INJECTION}" for @world2agent/openclaw-plugin. ` + - `Current value: ${JSON.stringify(got)}. Update that exact field and retry.`, - ); -} - export function normalizePluginConfig( value: unknown, ): RequiredWorld2AgentPluginConfig { diff --git a/openclaw-plugin/src/plugin.ts b/openclaw-plugin/src/plugin.ts index c038c9a..6577ac3 100644 --- a/openclaw-plugin/src/plugin.ts +++ b/openclaw-plugin/src/plugin.ts @@ -1,6 +1,5 @@ import { EmbeddedDispatcher, HttpDispatcher } from "./dispatch.js"; import { - assertContextInjectionCompatible, loadEffectiveOpenClawConfig, normalizePluginConfig, } from "./config.js"; @@ -48,7 +47,6 @@ export function createWorld2AgentPlugin() { } const openclawConfig = api.config ?? {}; - assertContextInjectionCompatible(openclawConfig); const openclawConfigRef = { current: openclawConfig }; // If a previous register() left a runtime running in this same @@ -96,7 +94,6 @@ export function createWorld2AgentPlugin() { api.registerGatewayMethod?.("world2agent.reload", async () => { const nextConfig = await loadEffectiveOpenClawConfig(api); - assertContextInjectionCompatible(nextConfig); openclawConfigRef.current = nextConfig; const manifest = await readManifest(paths); return { diff --git a/openclaw-plugin/test/context-injection.test.ts b/openclaw-plugin/test/context-injection.test.ts index 1df44f1..454a442 100644 --- a/openclaw-plugin/test/context-injection.test.ts +++ b/openclaw-plugin/test/context-injection.test.ts @@ -13,13 +13,13 @@ describe("contextInjection startup check", () => { process.env.OPENCLAW_HOME = ORIGINAL_OPENCLAW_HOME; }); - it("fails register() synchronously when agents.defaults.contextInjection is not continuation-skip", async () => { + it("does not fail register() when agents.defaults.contextInjection is always", async () => { const root = await mkdtemp(join(tmpdir(), "w2a-openclaw-register-")); process.env.W2A_HOME = join(root, "w2a"); process.env.OPENCLAW_HOME = join(root, "openclaw"); const plugin = createWorld2AgentPlugin(); - expect(() => + expect(() => { plugin.register({ config: { agents: { @@ -29,10 +29,8 @@ describe("contextInjection startup check", () => { }, }, pluginConfig: {}, - }), - ).toThrow( - "OpenClaw config field `agents.defaults.contextInjection` must be set to \"continuation-skip\"", - ); + }); + }).not.toThrow(); }); it("register() returns synchronously (not a promise) — OpenClaw drops async registers", async () => { @@ -49,4 +47,3 @@ describe("contextInjection startup check", () => { expect(result).toBeUndefined(); }); }); - From 2995dd4cbf6d6118e6fba3dff2bc2a15be1048c9 Mon Sep 17 00:00:00 2001 From: Nova-machinepulse Date: Wed, 29 Apr 2026 23:30:39 +0800 Subject: [PATCH 3/3] chore(openclaw-plugin): rename repo directory to wip --- README.md | 4 +--- {openclaw-plugin => openclaw-plugin-wip}/.gitignore | 0 {openclaw-plugin => openclaw-plugin-wip}/README.md | 0 {openclaw-plugin => openclaw-plugin-wip}/openclaw.plugin.json | 0 {openclaw-plugin => openclaw-plugin-wip}/package-lock.json | 0 {openclaw-plugin => openclaw-plugin-wip}/package.json | 2 +- {openclaw-plugin => openclaw-plugin-wip}/pnpm-lock.yaml | 0 .../skills/world2agent-manage/SKILL.md | 2 +- .../skills/world2agent-manage/scripts/add.sh | 0 .../skills/world2agent-manage/scripts/list.sh | 0 .../skills/world2agent-manage/scripts/reload.sh | 0 .../skills/world2agent-manage/scripts/remove.sh | 0 {openclaw-plugin => openclaw-plugin-wip}/src/cli.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/config.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/dispatch.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/index.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/install.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/isolated.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/manifest.ts | 0 .../src/openclaw/plugin-sdk/plugin-entry.ts | 0 .../src/openclaw/plugin-sdk/types.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/paths.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/plugin.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/prompt.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/runner/bin.ts | 0 .../src/runner/config-stream.ts | 0 .../src/runner/http-transport.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/runtime.ts | 0 .../src/supervisor/shared.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/src/types.ts | 0 .../test/context-injection.test.ts | 0 .../test/dispatch.test.ts | 0 .../test/manifest.test.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/test/runtime.test.ts | 0 .../test/supervisor-shared.test.ts | 0 {openclaw-plugin => openclaw-plugin-wip}/tsconfig.json | 0 {openclaw-plugin => openclaw-plugin-wip}/vitest.config.ts | 0 37 files changed, 3 insertions(+), 5 deletions(-) rename {openclaw-plugin => openclaw-plugin-wip}/.gitignore (100%) rename {openclaw-plugin => openclaw-plugin-wip}/README.md (100%) rename {openclaw-plugin => openclaw-plugin-wip}/openclaw.plugin.json (100%) rename {openclaw-plugin => openclaw-plugin-wip}/package-lock.json (100%) rename {openclaw-plugin => openclaw-plugin-wip}/package.json (97%) rename {openclaw-plugin => openclaw-plugin-wip}/pnpm-lock.yaml (100%) rename {openclaw-plugin => openclaw-plugin-wip}/skills/world2agent-manage/SKILL.md (99%) rename {openclaw-plugin => openclaw-plugin-wip}/skills/world2agent-manage/scripts/add.sh (100%) rename {openclaw-plugin => openclaw-plugin-wip}/skills/world2agent-manage/scripts/list.sh (100%) rename {openclaw-plugin => openclaw-plugin-wip}/skills/world2agent-manage/scripts/reload.sh (100%) rename {openclaw-plugin => openclaw-plugin-wip}/skills/world2agent-manage/scripts/remove.sh (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/cli.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/config.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/dispatch.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/index.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/install.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/isolated.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/manifest.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/openclaw/plugin-sdk/plugin-entry.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/openclaw/plugin-sdk/types.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/paths.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/plugin.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/prompt.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/runner/bin.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/runner/config-stream.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/runner/http-transport.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/runtime.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/supervisor/shared.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/src/types.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/test/context-injection.test.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/test/dispatch.test.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/test/manifest.test.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/test/runtime.test.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/test/supervisor-shared.test.ts (100%) rename {openclaw-plugin => openclaw-plugin-wip}/tsconfig.json (100%) rename {openclaw-plugin => openclaw-plugin-wip}/vitest.config.ts (100%) diff --git a/README.md b/README.md index d1e8ffe..316e288 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ Channel adapters that connect [World2Agent](https://github.com/machinepulse-ai/w | --- | --- | --- | | [`claude-code-channel`](./claude-code-channel) | [Claude Code](https://docs.claude.com/en/docs/claude-code) | MCP channel adapter + Claude Code plugin bundle. Signals arrive as in-session MCP notifications. | | [`hermes-sensor-bridge`](./hermes-sensor-bridge) | [Hermes Agent](https://hermes-agent.nousresearch.com/) | Out-of-process supervisor + webhook bridge. Each signal triggers a fresh `AIAgent.run_conversation()` with the generated handler skill auto-loaded. | -| [`openclaw-plugin (wip)`](./openclaw-plugin) | [OpenClaw](https://docs.openclaw.ai/) | Work in progress. | --- @@ -64,7 +63,7 @@ Each signal triggers a fresh agent run against the generated handler skill. See │ ├── skills/ # MCP-side handler skills │ ├── src/ │ └── package.json -├── hermes-sensor-bridge/ # @world2agent/hermes-sensor-bridge +└── hermes-sensor-bridge/ # @world2agent/hermes-sensor-bridge │ ├── src/ │ │ ├── runner/ # per-sensor subprocess │ │ └── supervisor/ # daemon (signal → HMAC → POST → Hermes) @@ -73,7 +72,6 @@ Each signal triggers a fresh agent run against the generated handler skill. See │ │ └── scripts/ # all host-side work (install, remove, list, …) │ ├── e2e/ │ └── package.json -└── openclaw-plugin/ # @world2agent/openclaw-plugin (wip) ``` --- diff --git a/openclaw-plugin/.gitignore b/openclaw-plugin-wip/.gitignore similarity index 100% rename from openclaw-plugin/.gitignore rename to openclaw-plugin-wip/.gitignore diff --git a/openclaw-plugin/README.md b/openclaw-plugin-wip/README.md similarity index 100% rename from openclaw-plugin/README.md rename to openclaw-plugin-wip/README.md diff --git a/openclaw-plugin/openclaw.plugin.json b/openclaw-plugin-wip/openclaw.plugin.json similarity index 100% rename from openclaw-plugin/openclaw.plugin.json rename to openclaw-plugin-wip/openclaw.plugin.json diff --git a/openclaw-plugin/package-lock.json b/openclaw-plugin-wip/package-lock.json similarity index 100% rename from openclaw-plugin/package-lock.json rename to openclaw-plugin-wip/package-lock.json diff --git a/openclaw-plugin/package.json b/openclaw-plugin-wip/package.json similarity index 97% rename from openclaw-plugin/package.json rename to openclaw-plugin-wip/package.json index 120063c..490e29f 100644 --- a/openclaw-plugin/package.json +++ b/openclaw-plugin-wip/package.json @@ -8,7 +8,7 @@ "repository": { "type": "git", "url": "git+https://github.com/machinepulse-ai/world2agent-plugins.git", - "directory": "openclaw-plugin" + "directory": "openclaw-plugin-wip" }, "bugs": { "url": "https://github.com/machinepulse-ai/world2agent-plugins/issues" diff --git a/openclaw-plugin/pnpm-lock.yaml b/openclaw-plugin-wip/pnpm-lock.yaml similarity index 100% rename from openclaw-plugin/pnpm-lock.yaml rename to openclaw-plugin-wip/pnpm-lock.yaml diff --git a/openclaw-plugin/skills/world2agent-manage/SKILL.md b/openclaw-plugin-wip/skills/world2agent-manage/SKILL.md similarity index 99% rename from openclaw-plugin/skills/world2agent-manage/SKILL.md rename to openclaw-plugin-wip/skills/world2agent-manage/SKILL.md index 71971e4..54cb296 100644 --- a/openclaw-plugin/skills/world2agent-manage/SKILL.md +++ b/openclaw-plugin-wip/skills/world2agent-manage/SKILL.md @@ -78,7 +78,7 @@ and copy mode): PLUGIN_DIR=$(openclaw plugins list --json | \ jq -r '.plugins[] | select(.id == "world2agent") | .rootDir') echo "$PLUGIN_DIR" -# → e.g. /Users//Documents/.../openclaw-plugin +# → e.g. /Users//Documents/.../openclaw-plugin-wip ``` Then check whether the sensor package is already installed there: diff --git a/openclaw-plugin/skills/world2agent-manage/scripts/add.sh b/openclaw-plugin-wip/skills/world2agent-manage/scripts/add.sh similarity index 100% rename from openclaw-plugin/skills/world2agent-manage/scripts/add.sh rename to openclaw-plugin-wip/skills/world2agent-manage/scripts/add.sh diff --git a/openclaw-plugin/skills/world2agent-manage/scripts/list.sh b/openclaw-plugin-wip/skills/world2agent-manage/scripts/list.sh similarity index 100% rename from openclaw-plugin/skills/world2agent-manage/scripts/list.sh rename to openclaw-plugin-wip/skills/world2agent-manage/scripts/list.sh diff --git a/openclaw-plugin/skills/world2agent-manage/scripts/reload.sh b/openclaw-plugin-wip/skills/world2agent-manage/scripts/reload.sh similarity index 100% rename from openclaw-plugin/skills/world2agent-manage/scripts/reload.sh rename to openclaw-plugin-wip/skills/world2agent-manage/scripts/reload.sh diff --git a/openclaw-plugin/skills/world2agent-manage/scripts/remove.sh b/openclaw-plugin-wip/skills/world2agent-manage/scripts/remove.sh similarity index 100% rename from openclaw-plugin/skills/world2agent-manage/scripts/remove.sh rename to openclaw-plugin-wip/skills/world2agent-manage/scripts/remove.sh diff --git a/openclaw-plugin/src/cli.ts b/openclaw-plugin-wip/src/cli.ts similarity index 100% rename from openclaw-plugin/src/cli.ts rename to openclaw-plugin-wip/src/cli.ts diff --git a/openclaw-plugin/src/config.ts b/openclaw-plugin-wip/src/config.ts similarity index 100% rename from openclaw-plugin/src/config.ts rename to openclaw-plugin-wip/src/config.ts diff --git a/openclaw-plugin/src/dispatch.ts b/openclaw-plugin-wip/src/dispatch.ts similarity index 100% rename from openclaw-plugin/src/dispatch.ts rename to openclaw-plugin-wip/src/dispatch.ts diff --git a/openclaw-plugin/src/index.ts b/openclaw-plugin-wip/src/index.ts similarity index 100% rename from openclaw-plugin/src/index.ts rename to openclaw-plugin-wip/src/index.ts diff --git a/openclaw-plugin/src/install.ts b/openclaw-plugin-wip/src/install.ts similarity index 100% rename from openclaw-plugin/src/install.ts rename to openclaw-plugin-wip/src/install.ts diff --git a/openclaw-plugin/src/isolated.ts b/openclaw-plugin-wip/src/isolated.ts similarity index 100% rename from openclaw-plugin/src/isolated.ts rename to openclaw-plugin-wip/src/isolated.ts diff --git a/openclaw-plugin/src/manifest.ts b/openclaw-plugin-wip/src/manifest.ts similarity index 100% rename from openclaw-plugin/src/manifest.ts rename to openclaw-plugin-wip/src/manifest.ts diff --git a/openclaw-plugin/src/openclaw/plugin-sdk/plugin-entry.ts b/openclaw-plugin-wip/src/openclaw/plugin-sdk/plugin-entry.ts similarity index 100% rename from openclaw-plugin/src/openclaw/plugin-sdk/plugin-entry.ts rename to openclaw-plugin-wip/src/openclaw/plugin-sdk/plugin-entry.ts diff --git a/openclaw-plugin/src/openclaw/plugin-sdk/types.ts b/openclaw-plugin-wip/src/openclaw/plugin-sdk/types.ts similarity index 100% rename from openclaw-plugin/src/openclaw/plugin-sdk/types.ts rename to openclaw-plugin-wip/src/openclaw/plugin-sdk/types.ts diff --git a/openclaw-plugin/src/paths.ts b/openclaw-plugin-wip/src/paths.ts similarity index 100% rename from openclaw-plugin/src/paths.ts rename to openclaw-plugin-wip/src/paths.ts diff --git a/openclaw-plugin/src/plugin.ts b/openclaw-plugin-wip/src/plugin.ts similarity index 100% rename from openclaw-plugin/src/plugin.ts rename to openclaw-plugin-wip/src/plugin.ts diff --git a/openclaw-plugin/src/prompt.ts b/openclaw-plugin-wip/src/prompt.ts similarity index 100% rename from openclaw-plugin/src/prompt.ts rename to openclaw-plugin-wip/src/prompt.ts diff --git a/openclaw-plugin/src/runner/bin.ts b/openclaw-plugin-wip/src/runner/bin.ts similarity index 100% rename from openclaw-plugin/src/runner/bin.ts rename to openclaw-plugin-wip/src/runner/bin.ts diff --git a/openclaw-plugin/src/runner/config-stream.ts b/openclaw-plugin-wip/src/runner/config-stream.ts similarity index 100% rename from openclaw-plugin/src/runner/config-stream.ts rename to openclaw-plugin-wip/src/runner/config-stream.ts diff --git a/openclaw-plugin/src/runner/http-transport.ts b/openclaw-plugin-wip/src/runner/http-transport.ts similarity index 100% rename from openclaw-plugin/src/runner/http-transport.ts rename to openclaw-plugin-wip/src/runner/http-transport.ts diff --git a/openclaw-plugin/src/runtime.ts b/openclaw-plugin-wip/src/runtime.ts similarity index 100% rename from openclaw-plugin/src/runtime.ts rename to openclaw-plugin-wip/src/runtime.ts diff --git a/openclaw-plugin/src/supervisor/shared.ts b/openclaw-plugin-wip/src/supervisor/shared.ts similarity index 100% rename from openclaw-plugin/src/supervisor/shared.ts rename to openclaw-plugin-wip/src/supervisor/shared.ts diff --git a/openclaw-plugin/src/types.ts b/openclaw-plugin-wip/src/types.ts similarity index 100% rename from openclaw-plugin/src/types.ts rename to openclaw-plugin-wip/src/types.ts diff --git a/openclaw-plugin/test/context-injection.test.ts b/openclaw-plugin-wip/test/context-injection.test.ts similarity index 100% rename from openclaw-plugin/test/context-injection.test.ts rename to openclaw-plugin-wip/test/context-injection.test.ts diff --git a/openclaw-plugin/test/dispatch.test.ts b/openclaw-plugin-wip/test/dispatch.test.ts similarity index 100% rename from openclaw-plugin/test/dispatch.test.ts rename to openclaw-plugin-wip/test/dispatch.test.ts diff --git a/openclaw-plugin/test/manifest.test.ts b/openclaw-plugin-wip/test/manifest.test.ts similarity index 100% rename from openclaw-plugin/test/manifest.test.ts rename to openclaw-plugin-wip/test/manifest.test.ts diff --git a/openclaw-plugin/test/runtime.test.ts b/openclaw-plugin-wip/test/runtime.test.ts similarity index 100% rename from openclaw-plugin/test/runtime.test.ts rename to openclaw-plugin-wip/test/runtime.test.ts diff --git a/openclaw-plugin/test/supervisor-shared.test.ts b/openclaw-plugin-wip/test/supervisor-shared.test.ts similarity index 100% rename from openclaw-plugin/test/supervisor-shared.test.ts rename to openclaw-plugin-wip/test/supervisor-shared.test.ts diff --git a/openclaw-plugin/tsconfig.json b/openclaw-plugin-wip/tsconfig.json similarity index 100% rename from openclaw-plugin/tsconfig.json rename to openclaw-plugin-wip/tsconfig.json diff --git a/openclaw-plugin/vitest.config.ts b/openclaw-plugin-wip/vitest.config.ts similarity index 100% rename from openclaw-plugin/vitest.config.ts rename to openclaw-plugin-wip/vitest.config.ts