@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.
Files changed (50) hide show
  1. package/README.md +142 -0
  2. package/data/.cache.json +33 -0
  3. package/data/llms-full.txt +43590 -0
  4. package/data/llms.txt +117 -0
  5. package/data/vielzeug-data.json +14554 -0
  6. package/dist/__tests__/server.test.js +346 -0
  7. package/dist/__tests__/server.test.js.map +1 -0
  8. package/dist/__tests__/unit.test.js +502 -0
  9. package/dist/__tests__/unit.test.js.map +1 -0
  10. package/dist/_log.js +5 -0
  11. package/dist/_log.js.map +1 -0
  12. package/dist/cli.js +94 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/data.js +91 -0
  15. package/dist/data.js.map +1 -0
  16. package/dist/errors.js +26 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/frontmatter.js +72 -0
  19. package/dist/frontmatter.js.map +1 -0
  20. package/dist/generator.js +176 -0
  21. package/dist/generator.js.map +1 -0
  22. package/dist/http.js +108 -0
  23. package/dist/http.js.map +1 -0
  24. package/dist/index.js +6 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/llms.js +162 -0
  27. package/dist/llms.js.map +1 -0
  28. package/dist/port.js +12 -0
  29. package/dist/port.js.map +1 -0
  30. package/dist/resources.js +4 -0
  31. package/dist/resources.js.map +1 -0
  32. package/dist/search.js +125 -0
  33. package/dist/search.js.map +1 -0
  34. package/dist/server.js +13 -0
  35. package/dist/server.js.map +1 -0
  36. package/dist/tools/index.js +62 -0
  37. package/dist/tools/index.js.map +1 -0
  38. package/dist/tools/packages.js +196 -0
  39. package/dist/tools/packages.js.map +1 -0
  40. package/dist/tools/refine.js +329 -0
  41. package/dist/tools/refine.js.map +1 -0
  42. package/dist/tools/schema.js +37 -0
  43. package/dist/tools/schema.js.map +1 -0
  44. package/dist/tools/shared.js +27 -0
  45. package/dist/tools/shared.js.map +1 -0
  46. package/dist/tools.js +1040 -0
  47. package/dist/tools.js.map +1 -0
  48. package/dist/types.js +4 -0
  49. package/dist/types.js.map +1 -0
  50. 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
+ [![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)
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>
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.
@@ -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
+ }