Skip to content

Commit 2ab08a7

Browse files
committed
feat(adapters): extract MCP to adapters, and support multi-format renderer input
- Introduce @esheet/adapters package for external schema conversions - Add MCP elicitation import utilities - Add SurveyJS → eSheet conversion support - Extract MCP logic from @esheet/core into @esheet/adapters - Move mcp.ts and mcp.spec.ts into adapters package - Remove MCP logic from core - Update imports across builder and renderer - Expand renderer to support multi-format input - Auto-detect MCP elicitation/create envelopes - Support SurveyJS schemas (pages/elements) - Accept native eSheet definitions (object, JSON, YAML) - Add strict mode and onReady callback - Update useRendererInit and EsheetRenderer - Refactor core after extraction - Clean up index exports - Extend types.ts with updated FormDefinition/FieldDefinition system - Update builder and demo integrations - BuilderHeader uses importFromMcp from adapters - RendererView updated for new renderer API - Move sample schemas from public/ to src/schemas/ - Remove public JSON fixtures - Update project configuration - Add @esheet/adapters dependency where required - Update eslint module boundaries with scope:adapters - Refresh package-lock.json and minor config files
1 parent 5a65cda commit 2ab08a7

63 files changed

Lines changed: 2302 additions & 7263 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pr-title-check.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
exit 1
2323
fi
2424
25-
REGEX='^(feat|enhance|fix|perf|refactor|docs|test|chore|ci|build|repo)\((repo|docs|demo|core|fields|builder|renderer|renderer-standalone|renderer-blaze)\): .+$'
25+
REGEX='^(feat|enhance|fix|perf|refactor|docs|test|chore|ci|build|repo)\((repo|docs|demo|core|fields|builder|renderer|renderer-standalone|renderer-blaze|adapters)\): .+$'
2626
2727
if [[ "$PR_TITLE" =~ $REGEX ]]; then
2828
echo "PR title is valid: $PR_TITLE"
@@ -47,7 +47,7 @@ jobs:
4747
feat, enhance, fix, perf, refactor, docs, test, chore, ci, build, repo
4848
4949
Allowed scopes:
50-
repo, docs, demo, core, fields, builder, renderer, renderer-standalone, renderer-blaze
50+
repo, docs, demo, core, fields, builder, renderer, renderer-standalone, renderer-blaze, adapters
5151
5252
Examples:
5353
repo(repo): update CI workflow

.tmp_ci_logs/act.log

1.27 KB
Binary file not shown.

.tmp_ci_logs/act_utf8.log

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
gh : time="2026-04-30T09:55:26-04:00" level=info msg="Using docker host
2+
'npipe:////./pipe/docker_engine', and daemon socket
3+
'npipe:////./pipe/docker_engine'"
4+
At line:1 char:1
5+
+ gh act push -W .github/workflows/ci.yml --pull=false > .tmp_ci_logs/a ...
6+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7+
+ CategoryInfo : NotSpecified: (time="2026-04-3...docker_engine'"
8+
:String) [], RemoteException
9+
+ FullyQualifiedErrorId : NativeCommandError
10+
11+
Error: Could not find any stages to run. View the valid jobs with `act
12+
--list`. Use `act --help` to find how to filter by Job ID/Workflow/Event Name

.tmp_ci_logs/build.log

17.1 KB
Binary file not shown.

.tmp_ci_logs/format_check.log

18 Bytes
Binary file not shown.

.tmp_ci_logs/format_write.log

778 Bytes
Binary file not shown.

.tmp_ci_logs/lint.log

27.8 KB
Binary file not shown.

.tmp_ci_logs/test.log

10.1 KB
Binary file not shown.

.vscode/settings.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
{
22
"workbench.colorCustomizations": {
3-
"activityBar.activeBackground": "#1f6fd0",
4-
"activityBar.background": "#1f6fd0",
5-
"activityBar.foreground": "#e7e7e7",
6-
"activityBar.inactiveForeground": "#e7e7e799",
7-
"activityBarBadge.background": "#ee90bb",
8-
"activityBarBadge.foreground": "#15202b",
3+
"activityBar.activeBackground": "#3399ff",
4+
"activityBar.background": "#3399ff",
5+
"activityBar.foreground": "#15202b",
6+
"activityBar.inactiveForeground": "#15202b99",
7+
"activityBarBadge.background": "#bf0060",
8+
"activityBarBadge.foreground": "#e7e7e7",
99
"commandCenter.border": "#e7e7e799",
10-
"sash.hoverBorder": "#1f6fd0",
11-
"statusBar.background": "#1857a4",
10+
"sash.hoverBorder": "#3399ff",
11+
"statusBar.background": "#007fff",
1212
"statusBar.foreground": "#e7e7e7",
13-
"statusBarItem.hoverBackground": "#1f6fd0",
14-
"statusBarItem.remoteBackground": "#1857a4",
13+
"statusBarItem.hoverBackground": "#3399ff",
14+
"statusBarItem.remoteBackground": "#007fff",
1515
"statusBarItem.remoteForeground": "#e7e7e7",
16-
"titleBar.activeBackground": "#1857a4",
16+
"titleBar.activeBackground": "#007fff",
1717
"titleBar.activeForeground": "#e7e7e7",
18-
"titleBar.inactiveBackground": "#1857a499",
18+
"titleBar.inactiveBackground": "#007fff99",
1919
"titleBar.inactiveForeground": "#e7e7e799"
2020
},
21-
"peacock.color": "#1857a4"
21+
"peacock.color": "#007fff"
2222
}

README.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ eSheet is a TypeScript-first Nx monorepo providing composable packages for embed
1111

1212
## Packages
1313

14-
| Package | Description |
15-
| ------------------------------------------------------------- | ------------------------------------------------------------------------ |
16-
| [`@esheet/core`](packages/core) | Zod schemas, Zustand stores, conditional logic engine — no React |
17-
| [`@esheet/fields`](packages/fields) | 19 built-in field components (text, choice, scale, matrix, rich, layout) |
18-
| [`@esheet/builder`](packages/builder) | Drag-and-drop visual form builder (`<EsheetBuilder />`) |
19-
| [`@esheet/renderer`](packages/renderer) | Read-only React form renderer (`<EsheetRenderer />`) |
20-
| [`@esheet/renderer-standalone`](packages/renderer-standalone) | Standalone mount API and global registration |
21-
| [`@esheet/renderer-blaze`](packages/renderer-blaze) | Meteor Blaze template integration |
14+
| Package | Description |
15+
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
16+
| [`@esheet/core`](packages/core) | Zod schemas, Zustand stores, conditional logic engine — no React |
17+
| [`@esheet/fields`](packages/fields) | 19 built-in field components (text, choice, scale, matrix, rich, layout) |
18+
| [`@esheet/builder`](packages/builder) | Drag-and-drop visual form builder (`<EsheetBuilder />`) |
19+
| [`@esheet/renderer`](packages/renderer) | Read-only React form renderer (`<EsheetRenderer />`) with auto-detection of SurveyJS/MCP |
20+
| [`@esheet/adapters`](packages/adapters) | SurveyJS ↔ eSheet converters, MCP import/export, AI system prompt |
21+
| [`@esheet/renderer-standalone`](packages/renderer-standalone) | Standalone mount API and global registration |
22+
| [`@esheet/renderer-blaze`](packages/renderer-blaze) | Meteor Blaze template integration |
2223

2324
All packages are versioned together and published to npm under the `@esheet` scope.
2425

@@ -55,7 +56,7 @@ function App() {
5556
const rendererRef = useRef<EsheetRendererHandle>(null);
5657
return (
5758
<>
58-
<EsheetRenderer formData={definition} ref={rendererRef} />
59+
<EsheetRenderer formDataInput={definition} ref={rendererRef} />
5960
<button onClick={() => console.log(rendererRef.current?.getResponse())}>
6061
Submit
6162
</button>
@@ -74,7 +75,8 @@ mSheet/
7475
│ ├── core/ # @esheet/core — types, stores, logic (no React)
7576
│ ├── fields/ # @esheet/fields — 19 field components
7677
│ ├── builder/ # @esheet/builder — visual builder UI
77-
│ ├── renderer/ # @esheet/renderer — form renderer
78+
│ ├── renderer/ # @esheet/renderer — form renderer (auto-detects SurveyJS/MCP)
79+
│ ├── adapters/ # @esheet/adapters — SurveyJS/MCP converters, AI prompt
7880
│ ├── renderer-standalone/ # @esheet/renderer-standalone — standalone integration
7981
│ └── renderer-blaze/ # @esheet/renderer-blaze — blaze integration
8082
└── apps/
@@ -87,8 +89,8 @@ mSheet/
8789
```
8890
@esheet/core
8991
90-
@esheet/fields
91-
↑ ↑
92+
@esheet/fields @esheet/adapters
93+
↑ ↑
9294
@esheet/builder @esheet/renderer
9395
↑ ↑
9496
@esheet/renderer-standalone @esheet/renderer-blaze

0 commit comments

Comments
 (0)