@vielzeug/codex 1.0.2
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 +142 -0
- package/data/.cache.json +33 -0
- package/data/llms-full.txt +43590 -0
- package/data/llms.txt +117 -0
- package/data/vielzeug-data.json +14554 -0
- package/dist/__tests__/server.test.js +346 -0
- package/dist/__tests__/server.test.js.map +1 -0
- package/dist/__tests__/unit.test.js +502 -0
- package/dist/__tests__/unit.test.js.map +1 -0
- package/dist/_log.js +5 -0
- package/dist/_log.js.map +1 -0
- package/dist/cli.js +94 -0
- package/dist/cli.js.map +1 -0
- package/dist/data.js +91 -0
- package/dist/data.js.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/errors.js.map +1 -0
- package/dist/frontmatter.js +72 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/generator.js +176 -0
- package/dist/generator.js.map +1 -0
- package/dist/http.js +108 -0
- package/dist/http.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/llms.js +162 -0
- package/dist/llms.js.map +1 -0
- package/dist/port.js +12 -0
- package/dist/port.js.map +1 -0
- package/dist/resources.js +4 -0
- package/dist/resources.js.map +1 -0
- package/dist/search.js +125 -0
- package/dist/search.js.map +1 -0
- package/dist/server.js +13 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/index.js +62 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/packages.js +196 -0
- package/dist/tools/packages.js.map +1 -0
- package/dist/tools/refine.js +329 -0
- package/dist/tools/refine.js.map +1 -0
- package/dist/tools/schema.js +37 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/shared.js +27 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools.js +1040 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# @vielzeug/codex
|
|
2
|
+
|
|
3
|
+
> MCP server for the Vielzeug ecosystem. Run over stdio or HTTP to expose package metadata, docs, source entrypoints, runnable REPL examples, and Refine component metadata.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@vielzeug/codex) [](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
<details>
|
|
8
|
+
<summary>Quick Reference</summary>
|
|
9
|
+
|
|
10
|
+
**Package:** `@vielzeug/codex` · **Category:** AI Tooling
|
|
11
|
+
|
|
12
|
+
**Key exports:** `createServer`, `createServerFromDisk`, `loadData`, `packageMeta`, `validateBundledData`, `startHttpServer`
|
|
13
|
+
|
|
14
|
+
**When to use:** You want AI clients to query Vielzeug docs and package metadata through a compact MCP tool set.
|
|
15
|
+
|
|
16
|
+
**Related:** [@vielzeug/refine](https://vielzeug.dev/refine/) · [@vielzeug/spell](https://vielzeug.dev/spell/)
|
|
17
|
+
|
|
18
|
+
</details>
|
|
19
|
+
|
|
20
|
+
`@vielzeug/codex` ships with bundled snapshot data, so it runs without a local Vielzeug checkout.
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
pnpm add @vielzeug/codex
|
|
26
|
+
npm install @vielzeug/codex
|
|
27
|
+
yarn add @vielzeug/codex
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
Run over stdio (default):
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
npx -y @vielzeug/codex
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Run over HTTP:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
npx -y @vielzeug/codex --port 3100
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
CLI helpers:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npx -y @vielzeug/codex --help
|
|
48
|
+
npx -y @vielzeug/codex --version
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Tools
|
|
52
|
+
|
|
53
|
+
Two tiers: generic tools work for every bundled package; `refine-*` tools expose
|
|
54
|
+
[@vielzeug/refine](https://vielzeug.dev/refine/)'s structured component metadata (Custom
|
|
55
|
+
Elements Manifest data generated from refine's real build output, never hand-duplicated).
|
|
56
|
+
There's no ore/spell/sandbox-specific tooling — `get-docs`, `get-source`, and
|
|
57
|
+
`get-type-signature` already cover those packages accurately; see
|
|
58
|
+
[docs/ore/api.md](https://vielzeug.dev/ore/api), [docs/spell/api.md](https://vielzeug.dev/spell/api),
|
|
59
|
+
and [docs/sandbox/api.md](https://vielzeug.dev/sandbox/api).
|
|
60
|
+
|
|
61
|
+
These tables are generated from the tool registry (`pnpm gen:tool-docs`) — never hand-edit them.
|
|
62
|
+
|
|
63
|
+
<!-- TOOLS:GENERIC:START -->
|
|
64
|
+
| Tool | Input | Description |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| `list-packages` | — | List all vielzeug packages with metadata (version, description, category, keywords, exports, availableDocPages, exampleIds, hasSource). |
|
|
67
|
+
| `get-package` | `packageSlug` | Get metadata for a single vielzeug package by slug. |
|
|
68
|
+
| `get-docs` | `packageSlug`, `page?` | Read a documentation page for a vielzeug package. |
|
|
69
|
+
| `get-source` | `packageSlug` | Read the full src/index.ts source of a vielzeug package. |
|
|
70
|
+
| `list-examples` | `packageSlug` | List runnable REPL code examples for a vielzeug package. |
|
|
71
|
+
| `get-example` | `exampleId`, `packageSlug` | Read the full runnable source code of a single REPL example for a vielzeug package. |
|
|
72
|
+
| `search-packages` | `query` | Search vielzeug packages by keyword across name, description, category, keywords, exports, related, docs, REPL examples, and source. |
|
|
73
|
+
| `get-type-signature` | `slug`, `symbol` | Look up the exported TypeScript declaration for a named symbol from a @vielzeug package's bundled src/index.ts (extracted and indexed at build time, not parsed per-request). |
|
|
74
|
+
<!-- TOOLS:GENERIC:END -->
|
|
75
|
+
|
|
76
|
+
<!-- TOOLS:REFINE:START -->
|
|
77
|
+
| Tool | Input | Description |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| `refine-list-components` | — | List all @vielzeug/refine web component tags from bundled Custom Elements Manifest (CEM) metadata. |
|
|
80
|
+
| `refine-get-component` | `tagName` | Get the full Custom Elements Manifest (CEM) declaration for a single @vielzeug/refine component by its HTML tag name (e.g. "ore-button"). |
|
|
81
|
+
| `refine-generate-template` | `scenario?`, `tagName` | Generate a ready-to-use HTML template for a @vielzeug/refine component. |
|
|
82
|
+
| `refine-get-tokens` | `filter?` | List all CSS custom properties (design tokens) exposed by @vielzeug/refine components. |
|
|
83
|
+
| `refine-validate-usage` | `html`, `tagName` | Validate AI-generated HTML against a @vielzeug/refine component spec. |
|
|
84
|
+
<!-- TOOLS:REFINE:END -->
|
|
85
|
+
|
|
86
|
+
### Error results
|
|
87
|
+
|
|
88
|
+
A failed tool call returns `isError: true` with a single text content block containing
|
|
89
|
+
`{"code": "...", "message": "..."}` — `code` is one of `INVALID_ARG` (bad or missing argument),
|
|
90
|
+
`NOT_FOUND` (unknown slug/tag/symbol/example), or `UNAVAILABLE` (data not bundled, e.g. refine
|
|
91
|
+
CEM metadata when refine wasn't built). Branch on `code` instead of matching `message` text.
|
|
92
|
+
|
|
93
|
+
## HTTP mode
|
|
94
|
+
|
|
95
|
+
- MCP endpoint: `http://localhost:<port>/`
|
|
96
|
+
- Health check: `http://localhost:<port>/health`
|
|
97
|
+
- No authentication and permissive CORS (`Access-Control-Allow-Origin: *`) — any origin reachable from the machine running the server can call every tool. All bundled tools are read-only and side-effect-free (no filesystem writes, no shell/network access beyond serving pre-bundled data), so this is a deliberate trade-off for local developer tooling (editor extensions, browser-based MCP inspectors) rather than a public-facing deployment mode. Do not expose `--port` beyond `localhost` or a trusted network.
|
|
98
|
+
|
|
99
|
+
## Debugging
|
|
100
|
+
|
|
101
|
+
Environment variables for local development (not needed for normal use):
|
|
102
|
+
|
|
103
|
+
| Variable | Effect |
|
|
104
|
+
| --- | --- |
|
|
105
|
+
| `CODEX_DEBUG=1` | Logs every tool call (name, args, timing, and errors) to stderr. |
|
|
106
|
+
| `CODEX_PORT=<port>` | Port used by `pnpm dev` (default `3001`). |
|
|
107
|
+
| `CODEX_FORCE_REGEN=1` | Skips the incremental cache in `prepare:data` — full regeneration. |
|
|
108
|
+
|
|
109
|
+
Local dev loop: `pnpm dev` generates bundled data once, then runs the CLI directly against
|
|
110
|
+
`src/` (via `node --watch`, no build step) alongside a `docs/` watcher that regenerates data on
|
|
111
|
+
change.
|
|
112
|
+
|
|
113
|
+
## Programmatic API
|
|
114
|
+
|
|
115
|
+
`createServerFromDisk()` is the simplest entry point — one call, no arguments:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { createServerFromDisk } from '@vielzeug/codex';
|
|
119
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
120
|
+
|
|
121
|
+
await createServerFromDisk().connect(new StdioServerTransport());
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
For explicit control over data loading:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import { createServer, loadData } from '@vielzeug/codex';
|
|
128
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
129
|
+
|
|
130
|
+
await createServer(loadData()).connect(new StdioServerTransport());
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Documentation
|
|
134
|
+
|
|
135
|
+
- [Overview](https://vielzeug.dev/codex/)
|
|
136
|
+
- [Usage Guide](https://vielzeug.dev/codex/usage)
|
|
137
|
+
- [API Reference](https://vielzeug.dev/codex/api)
|
|
138
|
+
- [Examples](https://vielzeug.dev/codex/examples)
|
|
139
|
+
|
|
140
|
+
## License
|
|
141
|
+
|
|
142
|
+
MIT © [Helmuth Saatkamp](https://github.com/helmuthdu) — part of the [Vielzeug](https://github.com/helmuthdu/vielzeug) monorepo.
|
package/data/.cache.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"arsenal": "8d744515bdf784877f30519c9ae6553aaee4527fd41de781e3c300266b8c3ad8",
|
|
3
|
+
"clockwork": "d5722fda4cf1d710c7423ac08999b5d9180220c27dc1a580a14966c8d7b61720",
|
|
4
|
+
"codex": "e672b7dd118bc5717ddec287e06e98dcda9716ff5903d2059db689db7602f005",
|
|
5
|
+
"coins": "e3d8a9a8d154479acd959257ea16fc27f9460ae478ffa7c655f7c10b49811605",
|
|
6
|
+
"conduit": "bdffd7e5f5bdfc396188a4187ef50fb1c2a8178237defcae33be1102b99aee4f",
|
|
7
|
+
"courier": "f42b96c8986b5e000dbc19fae4418b6a4f6c5e66c05dbf07bfbdc51cb0fdf0b7",
|
|
8
|
+
"dnd": "d6eaab0839b16b63920d10ac9d3a67ad27d591e0179ecf1291ac3f58748e156b",
|
|
9
|
+
"familiar": "7d54a60b5e34208482e0e95ada2fd1f8152226a069681bc728c79dc46ebe6362",
|
|
10
|
+
"flux": "2227e3a16de24dec5207b3ee4a636de2ea6914151269e56e2eba144060560367",
|
|
11
|
+
"forge": "090181512d99f943ef128725aab1c91e9393d8ce6b11f67fe6a410dd66f99237",
|
|
12
|
+
"herald": "a9a5eec4d6114fb518cda744a736021176f678fdbdec4d405046b7bd87f53714",
|
|
13
|
+
"keymap": "1c0eaaf07ca7f595b3830ea1c680ef6b5168daf546fd2a16be8cdf3ec8e963b3",
|
|
14
|
+
"ledger": "bba4fe645ad1d53c7d120c00e8c8ac26a82db2ceecb2c7783962aa26b815eee4",
|
|
15
|
+
"lingua": "c4872b073d8c4138bee1105e66e6c523a4d96577e4f15924d238906ae9051513",
|
|
16
|
+
"orbit": "70717ad52896bb74c38f3bf6ce44f043902dba950560d4a33c7ebe8b42275444",
|
|
17
|
+
"ore": "a30e04a0dcab65d79e1242164a39a47528b38e7322986f4f36dd567085006d1c",
|
|
18
|
+
"prism": "49c08d330b5a7be5a3a414a04df98ee8a8404bdd01ef219f7a0b14f23c919dd0",
|
|
19
|
+
"pulse": "8e4ab0a8e0240f020113b1e16489b7bd41836ec2d3649ca5ef85ab7998684d9d",
|
|
20
|
+
"refine": "cac1a1b23996571e6a7ae0d596d3b9bd7e791e51287b31c416d3393bb473d2f0",
|
|
21
|
+
"ripple": "830be4d0bf3de92cece1027db2ed7f7909c0cb6d0aeeb6f61d99c0d71e40fea1",
|
|
22
|
+
"rune": "3d94e2b88cf53e5b3a36cd24ceec069ae4bfc841c46d16f065ae8d0383ad142b",
|
|
23
|
+
"sandbox": "9ac8209df9ed55a9618fbae89a1aa8e5a7d36356e21392519a764c1be1a997c4",
|
|
24
|
+
"scout": "58e41ad009901fc01884258bf0eba03fbf62c73cc75990a6a99c8a4f6072952e",
|
|
25
|
+
"scroll": "4ce4da017e28d76e415a2cb4bacfcf6d4b4481b75956590b7f5a913914415052",
|
|
26
|
+
"sourcerer": "3b968bfd165a2f27251fd5b0870b1edcdc8f06734ef766366c3db06c60aa12f0",
|
|
27
|
+
"spell": "7a7582f895fd201f0d672e46a93f27ede384b70aa6bf0eac31899dc62cfd7303",
|
|
28
|
+
"tempo": "dbdce8f6bac7450b57ac2a0d28e448cb0b2e5824766ba095234269eda98c081b",
|
|
29
|
+
"vault": "7868c26064dfd04fa0101fff3a42ea28543bb6d3faf086718e965335e6f672db",
|
|
30
|
+
"ward": "3e423ba720c0ef8550db5a52b96dcfb52866e176d3762f609069753cabeb48a6",
|
|
31
|
+
"wayfinder": "dd0fb194b09c777034c2967489e5f3548979828f99ddc78d39e616f892f8b22d",
|
|
32
|
+
"__generator__": "939356241d6d5cc293ed640916bbed11456d819cd8d17c4967381355dadf1272"
|
|
33
|
+
}
|