@tuongaz/seeflow 0.1.77 → 0.1.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-D5iHwVvy.js → architectureDiagram-3BPJPVTR-BfABufg7.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-MAYYm7FM.js → blockDiagram-GPEHLZMM-DEsJzjMp.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-7P7yfHg1.js → c4Diagram-AAUBKEIU-BI2bLAFy.js} +1 -1
- package/dist/web/assets/channel-C4GDf2FG.js +1 -0
- package/dist/web/assets/{chart-C68vupBE.js → chart-BbL2c3JQ.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-Bb4cSusI.js → chunk-2J33WTMH-Cgomd5cT.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-DXYpcpTh.js → chunk-4BX2VUAB-D7PhkaW3.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-BxuYKDnf.js → chunk-55IACEB6-CUFJz27b.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-DbWlxAr2.js → chunk-727SXJPM-DuhsbPQs.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-DT8S1q80.js → chunk-AQP2D5EJ-1wXXetBT.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-Dc0wDuZz.js → chunk-FMBD7UC4-D6ESudu6.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-CqLLK6H0.js → chunk-ND2GUHAM-Dq8nvkVX.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-CxF7nkDI.js → chunk-QZHKN3VN-2m-ARThf.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-DxP4Rh0o.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-DxP4Rh0o.js +1 -0
- package/dist/web/assets/{code-block-DR9fiK_U.js → code-block-DTN7FEQj.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-BflFbtY2.js → cose-bilkent-S5V4N54A-DjzT5K-0.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-BJ5UdyYS.js → dagre-BM42HDAG-BwzsmtSu.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-D0M8fCf7.js → diagram-2AECGRRQ-FYQyXaT_.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-D67gAMS4.js → diagram-5GNKFQAL-DAzyREi8.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-XX62HBG-.js → diagram-KO2AKTUF-DGKrMcjo.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-DCFq3Oac.js → diagram-LMA3HP47-Bff209n5.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-Be392NCN.js → diagram-OG6HWLK6-BuqayNQm.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-DP4eP0as.js → erDiagram-TEJ5UH35-BUjs8hUi.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-Ch1GVJ9R.js → flowDiagram-I6XJVG4X-B_D_x2FB.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DtvkTizu.js → ganttDiagram-6RSMTGT7-DxfI1q3k.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-YGcuBgb9.js → gitGraphDiagram-PVQCEYII-BIEMbeDK.js} +1 -1
- package/dist/web/assets/index-DRyzDJUb.js +8619 -0
- package/dist/web/assets/{index-DljfurDC.css → index-fl8DS9WO.css} +1 -1
- package/dist/web/assets/{index.es-jrsJPbYZ.js → index.es-CiKqWLXZ.js} +1 -1
- package/dist/web/assets/{infoDiagram-5YYISTIA-wce0BORz.js → infoDiagram-5YYISTIA-DdStjmcL.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-u2MvPgdW.js → ishikawaDiagram-YF4QCWOH-1YlL8XhA.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-BsOyrTiA.js → journeyDiagram-JHISSGLW-4UmpNnmE.js} +1 -1
- package/dist/web/assets/{jspdf.es.min-ptMERvnN.js → jspdf.es.min-CfPjY_mb.js} +3 -3
- package/dist/web/assets/{kanban-definition-UN3LZRKU-BaraYV9q.js → kanban-definition-UN3LZRKU-BpHur4yM.js} +1 -1
- package/dist/web/assets/{linear-BVqXcDUJ.js → linear-BlKd__8P.js} +1 -1
- package/dist/web/assets/{markdown-DqP0Cywq.js → markdown-B0s014Jt.js} +1 -1
- package/dist/web/assets/{mermaid.core-CakR_vo1.js → mermaid.core-C1P8oPqR.js} +4 -4
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-CO5AsZw3.js → mindmap-definition-RKZ34NQL-CbYEKJD0.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-CiDJY-kx.js → pieDiagram-4H26LBE5-DTM5C3b_.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-BS6oN3s_.js → quadrantDiagram-W4KKPZXB-BTLv_k9D.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-CNbUR_FF.js → requirementDiagram-4Y6WPE33-xrt0GAFn.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-0Esj5uzm.js → sankeyDiagram-5OEKKPKP-CTC7QJzV.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DR3U38Zi.js → sequenceDiagram-3UESZ5HK-DXxHxv0c.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-C50RQjWe.js → stateDiagram-AJRCARHV-Cq8S_qAw.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BI8aEZqM.js +1 -0
- package/dist/web/assets/{time-C_2J9tFX.js → time-BWlQ2zTb.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-BQXyo2r_.js → timeline-definition-PNZ67QCA-ooIJpgWs.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-DZJ8M3EA.js → vennDiagram-CIIHVFJN-ClAQa-gM.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-B96HtW3i.js → wardley-L42UT6IY-UjncjFg7.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-BHkQ79WC.js → wardleyDiagram-YWT4CUSO-BQkPAPTU.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-B_f8koGI.js → xychartDiagram-2RQKCTM6-CO6j1v0J.js} +1 -1
- package/dist/web/index.html +2 -2
- package/examples/component-showcase/seeflow.json +6 -0
- package/examples/ecommerce-platform/seeflow.json +6 -0
- package/examples/order-pipeline/seeflow.json +6 -0
- package/package.json +1 -1
- package/src/api.ts +739 -94
- package/src/cli-e2e.ts +24 -13
- package/src/cli-helpers.ts +26 -0
- package/src/cli-manifest.ts +330 -87
- package/src/cli-ops.ts +56 -2
- package/src/cli.ts +228 -81
- package/src/cors.ts +93 -0
- package/src/jq-filter.ts +253 -0
- package/src/mcp-shim.ts +114 -7
- package/src/mcp-ui.ts +126 -0
- package/src/mcp.ts +258 -97
- package/src/node-files.ts +18 -7
- package/src/operations.ts +68 -32
- package/src/project-scanner.ts +105 -0
- package/src/registry.ts +79 -18
- package/src/route-resolve.ts +41 -0
- package/src/schema.ts +54 -0
- package/src/server.ts +24 -3
- package/src/slugify.ts +16 -0
- package/dist/web/assets/channel-BjsQQK93.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-p3FY5uNC.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-p3FY5uNC.js +0 -1
- package/dist/web/assets/index-Bg3PU4Ev.js +0 -8614
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BbNrmkIR.js +0 -1
- /package/examples/component-showcase/{flow.json → flows/main/flow.json} +0 -0
- /package/examples/component-showcase/{nodes → flows/main/nodes}/chart/spec.json +0 -0
- /package/examples/component-showcase/{nodes → flows/main/nodes}/counter/spec.json +0 -0
- /package/examples/component-showcase/{nodes → flows/main/nodes}/fetcher/actions/refresh.ts +0 -0
- /package/examples/component-showcase/{nodes → flows/main/nodes}/fetcher/spec.json +0 -0
- /package/examples/component-showcase/{nodes → flows/main/nodes}/form/spec.json +0 -0
- /package/examples/component-showcase/{style.json → flows/main/style.json} +0 -0
- /package/examples/ecommerce-platform/{flow.json → flows/main/flow.json} +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-3zFtHg6ENc/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-5F424NWbEu/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-CbwYqb7NfB/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-XwygzfKPZ5/view.html +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-fkptXw7uvs/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-kwBY8YPmYM/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-mPqan8rFYN/detail.md +0 -0
- /package/examples/ecommerce-platform/{nodes → flows/main/nodes}/node-yKrg9DV5fJ/detail.md +0 -0
- /package/examples/ecommerce-platform/{scripts → flows/main/scripts}/play.ts +0 -0
- /package/examples/ecommerce-platform/{style.json → flows/main/style.json} +0 -0
- /package/examples/order-pipeline/{flow.json → flows/main/flow.json} +0 -0
- /package/examples/order-pipeline/{nodes → flows/main/nodes}/node-GXTKUcE3ye/detail.md +0 -0
- /package/examples/order-pipeline/{nodes → flows/main/nodes}/node-XKIyds0TDg/detail.md +0 -0
- /package/examples/order-pipeline/{nodes → flows/main/nodes}/node-YOYiHJpY0i/detail.md +0 -0
- /package/examples/order-pipeline/{nodes → flows/main/nodes}/node-zUIH7WFnhK/detail.md +0 -0
- /package/examples/order-pipeline/{scripts → flows/main/scripts}/play.ts +0 -0
- /package/examples/order-pipeline/{style.json → flows/main/style.json} +0 -0
package/README.md
CHANGED
|
@@ -127,6 +127,46 @@ claude mcp add seeflow -- npx -y --package=@tuongaz/seeflow@latest seeflow-mcp
|
|
|
127
127
|
|
|
128
128
|
The MCP server talks to `http://127.0.0.1:4321/mcp` by default. Override with `SEEFLOW_STUDIO_URL` if needed.
|
|
129
129
|
|
|
130
|
+
## MCP Apps
|
|
131
|
+
|
|
132
|
+
On hosts that support the [MCP Apps](https://github.com/modelcontextprotocol/mcp-apps) spec (Claude Desktop today), `seeflow-mcp` renders the live React Flow canvas inline in the chat — no second window, no `localhost:4321` tab. You author, navigate, and edit the flow from the same conversation that produced it.
|
|
133
|
+
|
|
134
|
+
**Install in Claude Desktop** — add an entry to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"mcpServers": {
|
|
139
|
+
"seeflow": {
|
|
140
|
+
"command": "npx",
|
|
141
|
+
"args": ["-y", "--package=@tuongaz/seeflow@latest", "seeflow-mcp"]
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
When launched this way, `seeflow-mcp` boots an embedded studio on a loopback ephemeral port (the same Hono backend used by `seeflow start`) and serves the iframe canvas as the `ui://seeflow/canvas` resource. One process, one install, no separate studio to run.
|
|
148
|
+
|
|
149
|
+
**The 5 canvas-bearing tools** open the canvas inline:
|
|
150
|
+
|
|
151
|
+
| Tool | Renders |
|
|
152
|
+
| ------------------------ | ------------------------------------------------------ |
|
|
153
|
+
| `seeflow_get_flow` | The flow's canvas (read view). |
|
|
154
|
+
| `seeflow_get_flow_graph` | Same canvas, with the topology focused. |
|
|
155
|
+
| `seeflow_get_node` | The canvas with the requested node selected + opened. |
|
|
156
|
+
| `seeflow_register_flow` | The newly-registered flow in edit mode + "Just created" highlight. |
|
|
157
|
+
| `seeflow_create_project` | The new project's canvas in edit mode. |
|
|
158
|
+
|
|
159
|
+
The remaining 18 tools stay JSON-only — their mutations propagate to any open canvas via the studio's SSE channel, no re-render needed.
|
|
160
|
+
|
|
161
|
+
**Model-notify split.** Edits inside the canvas reach the model through two channels:
|
|
162
|
+
|
|
163
|
+
- `sendMessage` — structural edits the model should react to (node added / deleted, connector added / deleted, node renamed, Play / Status pressed). Bursts within 200ms are coalesced.
|
|
164
|
+
- `updateModelContext` — silent navigation telemetry (selection, hover, drag-in-progress, viewport pan/zoom). Debounced 250ms, throttled to at most 1/sec.
|
|
165
|
+
|
|
166
|
+
**Non-Apps hosts are unaffected.** The `_meta` payload is additive: hosts that don't grok `openai/outputTemplate` ignore it and continue to receive the same JSON tool responses they've always received. The existing `claude mcp add seeflow …` flow above keeps working unchanged on Claude Code, Cursor, Windsurf, etc.
|
|
167
|
+
|
|
168
|
+
See [`docs/plans/2026-05-25-mcp-apps-for-seeflow-design.md`](./docs/plans/2026-05-25-mcp-apps-for-seeflow-design.md) for the full design — architecture, bidirectional channels, CORS / per-process-token model, and lifecycle.
|
|
169
|
+
|
|
130
170
|
## Develop
|
|
131
171
|
|
|
132
172
|
```bash
|