@vielzeug/codex 1.0.4 → 2.0.1

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.
Files changed (68) hide show
  1. package/README.md +46 -107
  2. package/data/catalog.json +1680 -0
  3. package/data/llms-full.txt +18886 -31875
  4. package/data/llms.txt +32 -114
  5. package/data/manifest.json +8 -0
  6. package/data/packages/arsenal.json +210 -0
  7. package/data/packages/assay.json +40 -0
  8. package/data/packages/clockwork.json +67 -0
  9. package/data/packages/codex.json +43 -0
  10. package/data/packages/coins.json +103 -0
  11. package/data/packages/conduit.json +60 -0
  12. package/data/packages/courier.json +58 -0
  13. package/data/packages/dnd.json +75 -0
  14. package/data/packages/familiar.json +30 -0
  15. package/data/packages/flux.json +93 -0
  16. package/data/packages/forge.json +84 -0
  17. package/data/packages/herald.json +122 -0
  18. package/data/packages/keymap.json +65 -0
  19. package/data/packages/ledger.json +54 -0
  20. package/data/packages/lingua.json +68 -0
  21. package/data/packages/orbit.json +112 -0
  22. package/data/packages/ore.json +73 -0
  23. package/data/packages/prism.json +70 -0
  24. package/data/packages/pulse.json +58 -0
  25. package/data/packages/refine.json +12 -0
  26. package/data/packages/ripple.json +79 -0
  27. package/data/packages/rune.json +81 -0
  28. package/data/packages/sandbox.json +39 -0
  29. package/data/packages/scout.json +60 -0
  30. package/data/packages/scroll.json +113 -0
  31. package/data/packages/sourcerer.json +74 -0
  32. package/data/packages/spell.json +134 -0
  33. package/data/packages/tempo.json +113 -0
  34. package/data/packages/vault.json +90 -0
  35. package/data/packages/ward.json +125 -0
  36. package/data/packages/wayfinder.json +113 -0
  37. package/data/refine.json +11752 -0
  38. package/data/search.json +1437 -0
  39. package/dist/catalog.js +149 -0
  40. package/dist/catalog.js.map +1 -0
  41. package/dist/cli.js +33 -59
  42. package/dist/cli.js.map +1 -1
  43. package/dist/errors.js +0 -14
  44. package/dist/errors.js.map +1 -1
  45. package/dist/http.js +54 -96
  46. package/dist/http.js.map +1 -1
  47. package/dist/index.js +6 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/server.js +4 -9
  50. package/dist/server.js.map +1 -1
  51. package/dist/snapshot.js +233 -0
  52. package/dist/snapshot.js.map +1 -0
  53. package/dist/tools/index.js +21 -42
  54. package/dist/tools/index.js.map +1 -1
  55. package/dist/tools/packages.js +67 -166
  56. package/dist/tools/packages.js.map +1 -1
  57. package/dist/tools/refine.js +99 -305
  58. package/dist/tools/refine.js.map +1 -1
  59. package/dist/tools/schema.js +8 -8
  60. package/dist/tools/schema.js.map +1 -1
  61. package/dist/tools/shared.js +1 -26
  62. package/dist/tools/shared.js.map +1 -1
  63. package/dist/types.js +1 -2
  64. package/dist/types.js.map +1 -1
  65. package/mcp-setup.json +10 -0
  66. package/package.json +7 -7
  67. package/data/.cache.json +0 -34
  68. package/data/vielzeug-data.json +0 -16118
package/README.md CHANGED
@@ -1,142 +1,81 @@
1
1
  # @vielzeug/codex
2
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.
3
+ MCP server for Vielzeug package metadata, documentation, public source, REPL examples, and Refine component data.
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/@vielzeug/codex)](https://www.npmjs.com/package/@vielzeug/codex) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ ## Install and run
6
6
 
7
- <details>
8
- <summary>Quick Reference</summary>
9
-
10
- **Package:** `@vielzeug/codex` &nbsp;·&nbsp; **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>
7
+ ```sh
8
+ npx -y @vielzeug/codex
9
+ npx -y @vielzeug/codex --port=3100
10
+ ```
19
11
 
20
- `@vielzeug/codex` ships with bundled snapshot data, so it runs without a local Vielzeug checkout.
12
+ Stdio is default. HTTP uses Streamable HTTP on `127.0.0.1`; health endpoint: `http://127.0.0.1:3100/health`.
21
13
 
22
- ## Installation
14
+ `mcp-setup.json` ships a machine-readable generic stdio/HTTP setup manifest:
23
15
 
24
- ```sh
25
- pnpm add @vielzeug/codex
26
- npm install @vielzeug/codex
27
- yarn add @vielzeug/codex
16
+ ```json
17
+ {
18
+ "command": "npx",
19
+ "args": ["-y", "@vielzeug/codex"]
20
+ }
28
21
  ```
29
22
 
30
- ## Quick Start
23
+ ## Local development
31
24
 
32
- Run over stdio (default):
25
+ Node 22+ and root workspace setup required:
33
26
 
34
27
  ```sh
35
- npx -y @vielzeug/codex
28
+ pnpm setup
29
+ cd packages/codex
30
+ pnpm test:unit
31
+ pnpm test:integration
32
+ pnpm dev
36
33
  ```
37
34
 
38
- Run over HTTP:
35
+ `pnpm dev` regenerates an atomic chunked snapshot whenever docs or package inputs change. Use `--debug` to log tool timings and expected failures.
39
36
 
40
- ```sh
41
- npx -y @vielzeug/codex --port 3100
42
- ```
37
+ ## Programmatic API
43
38
 
44
- CLI helpers:
39
+ ```ts
40
+ import { SnapshotCatalog, createMcpServer, loadSnapshot } from '@vielzeug/codex';
41
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
45
42
 
46
- ```sh
47
- npx -y @vielzeug/codex --help
48
- npx -y @vielzeug/codex --version
43
+ const snapshot = loadSnapshot();
44
+ const catalog = new SnapshotCatalog(snapshot);
45
+ await createMcpServer(catalog, { version: snapshot.manifest.version }).connect(new StdioServerTransport());
49
46
  ```
50
47
 
51
48
  ## Tools
52
49
 
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
50
  <!-- TOOLS:GENERIC:START -->
64
51
  | Tool | Input | Description |
65
52
  | --- | --- | --- |
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). |
53
+ | `list-packages` | — | List every Vielzeug package. |
54
+ | `get-package` | `packageSlug` | Read metadata for one package. |
55
+ | `get-docs` | `packageSlug`, `page?` | Read one documentation page as Markdown. |
56
+ | `get-source` | `packageSlug` | Read bundled public source for one package. |
57
+ | `list-examples` | `packageSlug` | List runnable REPL examples for one package. |
58
+ | `get-example` | `exampleId`, `packageSlug` | Read one runnable REPL example. |
59
+ | `search-packages` | `query` | Search package metadata, docs, examples, and source. |
60
+ | `get-type-signature` | `slug`, `symbol` | Read one exported TypeScript declaration. |
74
61
  <!-- TOOLS:GENERIC:END -->
75
62
 
76
63
  <!-- TOOLS:REFINE:START -->
77
64
  | Tool | Input | Description |
78
65
  | --- | --- | --- |
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. |
66
+ | `refine-list-components` | — | List bundled Refine web components. |
67
+ | `refine-get-component` | `tagName` | Read one Refine component declaration. |
68
+ | `refine-generate-template` | `scenario?`, `tagName` | Generate a minimal Refine component HTML template. |
69
+ | `refine-get-tokens` | `filter?` | List bundled Refine CSS custom properties. |
70
+ | `refine-validate-usage` | `html`, `tagName` | Validate unknown attributes in one Refine component HTML fragment. |
84
71
  <!-- TOOLS:REFINE:END -->
85
72
 
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
73
+ ## Snapshot layout
94
74
 
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
- ```
75
+ Published `data/` contains one static snapshot: `manifest.json`, lightweight `catalog.json` and `search.json`, optional `refine.json`, and lazy package chunks under `packages/`. Local `pnpm dev` snapshots live under ignored `.dev/` and use `current.json` to select an immutable generation. Pass `--snapshot=<directory>` to load either form.
132
76
 
133
77
  ## Documentation
134
78
 
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.
79
+ - https://vielzeug.dev/codex/
80
+ - https://vielzeug.dev/codex/usage
81
+ - https://vielzeug.dev/codex/api