Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ The MiniMax Code Agent communicates through the host MCP client. Business reques

| MiniApp | What it does | Author |
| --- | --- | --- |
| [Dynamic Workflow Console](plugins/stevenjj33/workflow-console/) | Run and supervise MiniMax Code dynamic workflows from one page: live status, a stage-and-dependency flow graph, per-node output, approval and control, templates, and report export | [stevenjj33](https://github.com/stevenjj33) |
| [MiniMax Photo](plugins/webguhui/minimax-photo/) | Layered image editing with an in-app AI assistant, local recovery and programmatic editing tools | [WebGuHui](https://github.com/WebGuHui) |
| [OpenVideo](plugins/webguhui/openchatcut/) | Local video editing with captions, a host Agent assistant, reviewable timeline edits, and MP4/MP3 export | [WebGuHui](https://github.com/WebGuHui) |
| [AI Office](plugins/cristinamadureira353-svg/ai-office/) | Manage five model-powered employees in a pixel office: client tasks, chats, breaks, meetings and quota-aware offline states; uses your own API keys | [最爱双皮奶](https://github.com/cristinamadureira353-svg) |
Expand Down
1 change: 1 addition & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ MiniMax Code Agent 通过宿主 MCP 客户端与 MiniApp 协作。业务请求

| MiniApp | 功能 | 作者 |
| --- | --- | --- |
| [动态工作流控制台](plugins/stevenjj33/workflow-console/README.zh-CN.md) | 在一个页面里运行并盯住 MiniMax Code 动态工作流:实时状态、按阶段与依赖画出的流程图、节点输出、审核与控制、模板与报告导出 | [stevenjj33](https://github.com/stevenjj33) |
| [MiniMax Photo](plugins/webguhui/minimax-photo/) | 图层图片编辑、应用内 AI 助手、本地恢复与程序化编辑工具 | [WebGuHui](https://github.com/WebGuHui) |
| [OpenVideo](plugins/webguhui/openchatcut/) | 本地视频剪辑、字幕、宿主 Agent 助手、可预览的时间线修改与 MP4/MP3 导出 | [WebGuHui](https://github.com/WebGuHui) |
| [AI 事务所](plugins/cristinamadureira353-svg/ai-office/README.zh-CN.md) | 五位真实模型员工的像素事务所:接单、聊天、休息和开会,额度耗尽时角色暂停;使用玩家自己的 API Key | [最爱双皮奶](https://github.com/cristinamadureira353-svg) |
Expand Down
20 changes: 20 additions & 0 deletions plugins/stevenjj33/workflow-console/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# The working tree of this plugin must be byte-identical to what is committed.
#
# Without this file, core.autocrlf=true rewrites LF blobs to CRLF on checkout, and git then
# reports the result as clean because it normalises line endings when it compares. The rewrite is
# invisible to `git status` while it is happening.
#
# That matters more here than in most plugins: `miniapp/node/vendor/dynamic-workflows/` is an
# unmodified copy of the upstream 0.8.2 runtime, and its own LICENSE and THIRD_PARTY_NOTICES.txt
# say the files are redistributed as-is. `text=auto` leaves git free to keep deciding for itself
# which files are binary; `eol=lf` is the part that pins the result. Every blob here is already
# LF, so adding this changes no committed content — it only stops the working tree from
# disagreeing with it.
#
# This file lives in the plugin directory, not the repository root. At the root it would rewrite
# line endings for every other plugin in the repository, and this is a single-plugin change.
* text=auto eol=lf

# The files in this plugin that are not text.
*.png binary
*.wasm binary
17 changes: 17 additions & 0 deletions plugins/stevenjj33/workflow-console/.minimax-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"schemaVersion": 1,
"name": "workflow-console",
"displayName": "动态工作流控制台",
"version": "1.0.0",
"description": "自带的动态工作流监控与控制台:内置 Workflow Studio 引擎,无需安装插件即可运行。提供按项目切换的运行列表、实时日志、拓扑与节点结果、审核后开始执行、暂停取消恢复、模板保存与复用、报告导出。",
"author": "书先生",
"icon": "icon.png",
"category": "Productivity",
"exampleQueries": [
"打开动态工作流控制台,看一下当前项目的运行进度。",
"控制台里那个待审核的工作流,核对拓扑后开始执行。"
],
"apps": [],
"mcpServers": [],
"skills": []
}
40 changes: 40 additions & 0 deletions plugins/stevenjj33/workflow-console/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
MIT License

Copyright (c) 2026 stevenjj33

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

--------------------------------------------------------------------------------
Third-party components
--------------------------------------------------------------------------------

`miniapp/node/vendor/dynamic-workflows/` contains an unmodified copy of the
`mcode-dynamic-workflows` plugin runtime (version 0.8.2) by hetaoBackend,
obtained from:

https://github.com/MiniMax-AI/MiniMax-Code-Plugins/tree/main/plugins/hetaoBackend/mcode-dynamic-workflows

That component is licensed under the Apache License, Version 2.0. Its full
license text is in `miniapp/node/vendor/dynamic-workflows/LICENSE`, and its
attribution is in `miniapp/node/vendor/dynamic-workflows/THIRD_PARTY_NOTICES.txt`.
The differences between the vendored copy and the upstream package are recorded
in `miniapp/node/vendor/dynamic-workflows/VENDOR.md`.

The vendored copy also bundles QuickJS (`dist/quickjs.wasm`); its attribution
is in the same THIRD_PARTY_NOTICES.txt file.
153 changes: 153 additions & 0 deletions plugins/stevenjj33/workflow-console/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# Dynamic Workflow Console (`workflow-console`)

A Mini App that runs, supervises, and inspects MiniMax Code dynamic workflows from one page.

It embeds the `mcode-dynamic-workflows` runtime, so it works on a machine where that plugin was
never installed. Open the app and the console starts its own Workflow Studio engine, binds it to a
project directory, and shows every run of that project: status, live event log, a stage-and-dependency
flow graph, per-node output, and the final report. Runs can be approved, started, paused, cancelled,
resumed, exported to Markdown or HTML, saved as a template, and restored from a template.

The user interface is in Chinese.

## Based on which project

This package is built **on top of the `mcode-dynamic-workflows` plugin** by `hetaoBackend`, from
<https://github.com/MiniMax-AI/MiniMax-Code-Plugins/tree/main/plugins/hetaoBackend/mcode-dynamic-workflows>
(version 0.8.2, Apache-2.0).

That plugin is an MCP server that orchestrates multi-agent workflows. It normally has to be installed
as a MiniMax Code plugin and reached through MCP. This package takes its runtime and runs it as a
**self-contained Mini App**:

- The upstream `dist/` runtime is vendored unmodified into
`miniapp/node/vendor/dynamic-workflows/`, and the console starts it as a child process.
- The upstream `web/` canvas (`graph-model.mjs`) is imported directly, so the flow graph in this
console is the same graph model Workflow Studio draws, not a second implementation.
- The console adds what the plugin does not provide: a per-project run list, a live event stream,
run approval and control, template management, report export, and a running-directory picker.

`miniapp/node/vendor/dynamic-workflows/VENDOR.md` records the vendored files and every behavioural
difference between the upstream plugin and this console.

## Install

Copy this directory, including the hidden `.minimax-plugin/`, into the MiniMax Code plugins
directory as `workflow-console/` (`~/.minimax/plugins/workflow-console/` by default; the root
README's Install section explains where that directory is). Restart MiniMax Code and ask the Agent
to "打开动态工作流控制台" (open the Dynamic Workflow Console).

The app has no configuration step and no build step. On first launch it needs a project directory:
the console resolves one from the running Workflow Studio services, then from the project registry
left by earlier plugin runs, and otherwise falls back to your home directory and asks you to type an
absolute path in the always-visible **Working directory** bar at the top of the page. Saving that bar
restarts the embedded engine against the new directory; run history is kept in the engine's own
database and is not affected by the change.

Running real workflows still requires a working `mcode` CLI: the engine orchestrates agents through
it. The demo executor works without it.

## Tested environment

- MiniMax Code 3.1.4 on Windows 11, Node.js 22 and 26. Installed from this directory, opened
through the Agent, page rendered, engine started, run approved and executed with the demo
executor.
- MiniMax Code on macOS (arm64), Node.js 22.22.3. Installed from this directory on a machine where
the upstream plugin had never been installed; service discovery, working-directory resolution,
and the same demo-executor run were verified there.
- Browser: Chromium-based desktop browser, 1280x720 and 589x899 viewports, light and dark themes.

Not verified: real model execution, and the pause/resume/cancel path on the real executor. Every
execution in testing used the `demo` executor, which does not call a model. `mcodeAvailable: true`
only means the `mcode` binary exists on the machine; its login state and quota are not checked by
this app.

## Data & access

### Files

Read:

- `miniapp/client/` and `miniapp/node/vendor/` — this package's own assets.
- `~/.mcode-dynamic-workflows/projects/<sha256>/address.json` and `endpoint.json` — **a Host-side
directory with no supported API**. It is located as `<home>/.mcode-dynamic-workflows/projects/`
and read only to learn which project other Workflow Studio services are bound to, and to pick a
default working directory. This relies on an unspecified layout that MiniMax Code may change at
any time. If the directory does not exist, the app works normally and the working directory falls
back to your home directory.

Written — always under `context.dataDir`, never elsewhere:

- `selection.json` — the service id the console points at.
- `workspace.json` — the working directory the embedded engine is bound to.
- `hidden-runs.json` — the list of runs hidden locally. Hiding is not deletion; the run record
stays in the engine's database and can be restored.
- `engine/` — `address.json`, `endpoint.json`, `service.log`, and `workflows.sqlite`, written by the
embedded engine.

### Network

Loopback only. The embedded engine binds `http://127.0.0.1:<port>` and the console proxies the
page to it. Discovered Workflow Studio services are contacted on `http://127.0.0.1` as well. No
outbound internet host is contacted.

### Processes

One child process, spawned with an argv array and no shell:

```
node <pluginRoot>/miniapp/node/vendor/dynamic-workflows/dist/main.mjs --workspace <directory> --data-dir <directory>
```

`<directory>` is the working directory shown in the page's top bar: either typed by the user or
resolved from a discovered service. User input is passed as a separate argv element, never
concatenated into a command line. The process tree is terminated when the app is disposed.

### Agent turns

None. The package declares no `agentAccess` and starts no Agent turn itself. The embedded engine
may invoke the local `mcode` CLI when a run uses the real executor, which is the behaviour of the
upstream plugin and is documented by it.

### State

Everything durable lives in `context.dataDir` (see **Files** above). The page keeps no domain data
in browser storage.

## Files

```text
.minimax-plugin/plugin.json Plugin manifest
package.json Mini App declaration
miniapp/miniapp.json Payload roots, Node entry, page route
miniapp/client/index.html The page served at /dashboard
miniapp/client/app.js Front end (plain HTML/CSS/JS, no framework, no build)
miniapp/client/style.css Styling, light and dark themes
miniapp/node/server.mjs Node entry: start(context) -> { dispose }
miniapp/node/miniapp-api.ts Type declarations for the runtime context
miniapp/node/vendor/dynamic-workflows/ Vendored upstream runtime (0.8.2, Apache-2.0)
tests/workspace-resolution.test.mjs Working-directory resolution
tests/service-discovery.test.mjs Service discovery on a machine without the upstream plugin
tests/manual-mac-scenario.mjs Boots an isolated instance that mimics a fresh macOS host
icon.png Plugin icon
```

## Tests

The tests use Node's built-in test runner and start an isolated console instance in a sandbox home
directory, so they never touch a real project:

```bash
node --test "tests/*.test.mjs"
```

`tests/service-discovery.test.mjs` covers the case where `~/.mcode-dynamic-workflows/projects` does
not exist, which is what a machine that never installed the upstream plugin looks like.
`tests/workspace-resolution.test.mjs` covers working-directory resolution, including the Host's
temporary deployment directory, which must never be used as a project.
`tests/manual-mac-scenario.mjs` starts a console whose working directory is a temporary deployment
directory and prints the URL to open for manual inspection.

## License

[MIT](./LICENSE). The vendored upstream runtime keeps its own Apache-2.0 license.
Loading
Loading