@vielzeug/codex 2.3.2 → 3.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 (46) hide show
  1. package/README.md +12 -58
  2. package/dist/_log.d.ts +2 -0
  3. package/dist/advanced.d.ts +12 -0
  4. package/dist/advanced.js +13 -0
  5. package/dist/advanced.js.map +1 -0
  6. package/dist/catalog.d.ts +41 -0
  7. package/dist/catalog.js +0 -14
  8. package/dist/catalog.js.map +1 -1
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.js +17 -4
  11. package/dist/cli.js.map +1 -1
  12. package/dist/errors.d.ts +4 -0
  13. package/dist/http.d.ts +21 -0
  14. package/dist/http.js +69 -19
  15. package/dist/http.js.map +1 -1
  16. package/dist/index.d.ts +14 -0
  17. package/dist/index.js +9 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/port.d.ts +2 -0
  20. package/dist/refine-catalog.d.ts +14 -0
  21. package/dist/refine-catalog.js +24 -0
  22. package/dist/refine-catalog.js.map +1 -0
  23. package/dist/refine.d.ts +12 -0
  24. package/dist/refine.js +12 -0
  25. package/dist/refine.js.map +1 -0
  26. package/dist/server.d.ts +11 -0
  27. package/dist/server.js +7 -2
  28. package/dist/server.js.map +1 -1
  29. package/dist/snapshot.d.ts +21 -0
  30. package/dist/snapshot.js +62 -3
  31. package/dist/snapshot.js.map +1 -1
  32. package/dist/tools/index.d.ts +6 -0
  33. package/dist/tools/index.js +4 -9
  34. package/dist/tools/index.js.map +1 -1
  35. package/dist/tools/packages.d.ts +2 -0
  36. package/dist/tools/packages.js +6 -1
  37. package/dist/tools/packages.js.map +1 -1
  38. package/dist/tools/refine.d.ts +5 -0
  39. package/dist/tools/refine.js +19 -4
  40. package/dist/tools/refine.js.map +1 -1
  41. package/dist/tools/schema.d.ts +22 -0
  42. package/dist/tools/schema.js +14 -13
  43. package/dist/tools/schema.js.map +1 -1
  44. package/dist/tools/shared.d.ts +8 -0
  45. package/dist/types.d.ts +114 -0
  46. package/package.json +35 -12
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @vielzeug/codex
2
2
 
3
- MCP server for Vielzeug package metadata, documentation, public source, REPL examples, and Refine component data.
3
+ > MCP server exposing all Vielzeug docs to AI clients
4
4
 
5
5
  ## Install and run
6
6
 
@@ -11,71 +11,25 @@ npx -y @vielzeug/codex --port=3100
11
11
 
12
12
  Stdio is default. HTTP uses Streamable HTTP on `127.0.0.1`; health endpoint: `http://127.0.0.1:3100/health`.
13
13
 
14
- `mcp-setup.json` ships a machine-readable generic stdio/HTTP setup manifest:
15
-
16
- ```json
17
- {
18
- "command": "npx",
19
- "args": ["-y", "@vielzeug/codex"]
20
- }
21
- ```
22
-
23
- ## Local development
24
-
25
- Node 22+ and root workspace setup required:
26
-
27
- ```sh
28
- pnpm setup
29
- cd packages/codex
30
- pnpm test:unit
31
- pnpm test:integration
32
- pnpm dev
33
- ```
34
-
35
- `pnpm dev` regenerates an atomic chunked snapshot whenever docs or package inputs change. Use `--debug` to log tool timings and expected failures.
36
-
37
- ## Programmatic API
14
+ ## Quick Start
38
15
 
39
16
  ```ts
40
- import { SnapshotCatalog, createMcpServer, loadSnapshot } from '@vielzeug/codex';
41
- import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
17
+ import { SnapshotCatalog, StdioServerTransport, createMcpServer, loadSnapshot } from '@vielzeug/codex';
42
18
 
43
19
  const snapshot = loadSnapshot();
44
20
  const catalog = new SnapshotCatalog(snapshot);
45
21
  await createMcpServer(catalog, { version: snapshot.manifest.version }).connect(new StdioServerTransport());
46
22
  ```
47
23
 
48
- ## Tools
49
-
50
- <!-- TOOLS:GENERIC:START -->
51
- | Tool | Input | Description |
52
- | --- | --- | --- |
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. |
61
- <!-- TOOLS:GENERIC:END -->
62
-
63
- <!-- TOOLS:REFINE:START -->
64
- | Tool | Input | Description |
65
- | --- | --- | --- |
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. |
71
- <!-- TOOLS:REFINE:END -->
72
-
73
- ## Snapshot layout
24
+ ## Documentation
74
25
 
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.
26
+ - [Overview](https://vielzeug.dev/codex/)
27
+ - [Usage Guide](https://vielzeug.dev/codex/usage)
28
+ - [API Reference](https://vielzeug.dev/codex/api)
29
+ - [Examples](https://vielzeug.dev/codex/examples)
30
+ - [MCP Tools](https://vielzeug.dev/codex/tools)
31
+ - [Migration Guide](https://vielzeug.dev/codex/migration)
76
32
 
77
- ## Documentation
33
+ ## License
78
34
 
79
- - https://vielzeug.dev/codex/
80
- - https://vielzeug.dev/codex/usage
81
- - https://vielzeug.dev/codex/api
35
+ MIT © [Helmuth Saatkamp](https://github.com/helmuthdu) — part of the [Vielzeug](https://github.com/helmuthdu/vielzeug) monorepo.
package/dist/_log.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ /** Single stderr I/O path for all runtime output in src/. Mockable in tests. */
2
+ export declare function log(message: string): void;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `@vielzeug/codex/advanced` — snapshot parser internals.
3
+ *
4
+ * The main entry (`@vielzeug/codex`) keeps the supported catalog, loader, and server
5
+ * contracts. These pure validation parsers and raw snapshot types
6
+ * are the smaller, less stable contract used by generators and integration tests —
7
+ * import them explicitly from this subpath when you need to parse individual snapshot
8
+ * chunks rather than loading a whole validated snapshot.
9
+ */
10
+ export { CodexError } from './errors.js';
11
+ export { type LoadedSnapshot, loadSnapshotDirectory, parseCatalog, parseContent, parseManifest, parsePointer, parseRefine, parseSearch, validateSnapshot, } from './snapshot.js';
12
+ export { type CatalogFile, DOC_PAGES, type SearchRecord, SNAPSHOT_SCHEMA_VERSION, type SnapshotPointer, } from './types.js';
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `@vielzeug/codex/advanced` — snapshot parser internals.
3
+ *
4
+ * The main entry (`@vielzeug/codex`) keeps the supported catalog, loader, and server
5
+ * contracts. These pure validation parsers and raw snapshot types
6
+ * are the smaller, less stable contract used by generators and integration tests —
7
+ * import them explicitly from this subpath when you need to parse individual snapshot
8
+ * chunks rather than loading a whole validated snapshot.
9
+ */
10
+ export { CodexError } from './errors.js';
11
+ export { loadSnapshotDirectory, parseCatalog, parseContent, parseManifest, parsePointer, parseRefine, parseSearch, validateSnapshot, } from './snapshot.js';
12
+ export { DOC_PAGES, SNAPSHOT_SCHEMA_VERSION, } from './types.js';
13
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../src/advanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAEL,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,SAAS,EAET,uBAAuB,GAExB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { CodexError } from './errors.js';
2
+ import { type LoadedSnapshot } from './snapshot.js';
3
+ import type { DocPage, Example, PackageContent, PackageMeta } from './types.js';
4
+ export type CatalogErrorCode = 'INVALID_ARG' | 'NOT_FOUND' | 'UNAVAILABLE';
5
+ export declare class CatalogError extends CodexError {
6
+ readonly code: CatalogErrorCode;
7
+ constructor(code: CatalogErrorCode, message: string);
8
+ }
9
+ export interface SearchHit {
10
+ matchedExamples?: string[];
11
+ matchedIn: Array<'docs' | 'examples' | 'exports' | 'keywords' | 'metadata' | 'related' | 'source'>;
12
+ matchedPages?: DocPage[];
13
+ name: string;
14
+ slug: string;
15
+ }
16
+ export interface Catalog {
17
+ getContent(slug: string): PackageContent;
18
+ getDocs(slug: string, page: DocPage): string;
19
+ getExample(slug: string, exampleId: string): Example;
20
+ getPackage(slug: string): PackageMeta;
21
+ getSource(slug: string): string;
22
+ getTypeSignature(slug: string, symbol: string): string;
23
+ listExamples(slug: string): Array<Pick<Example, 'id' | 'name'>>;
24
+ listPackages(): PackageMeta[];
25
+ search(query: string): SearchHit[];
26
+ }
27
+ export declare class SnapshotCatalog implements Catalog {
28
+ private readonly bySlug;
29
+ private readonly contentCache;
30
+ private readonly snapshot;
31
+ constructor(snapshot: LoadedSnapshot);
32
+ getPackage(slug: string): PackageMeta;
33
+ getContent(slug: string): PackageContent;
34
+ listPackages(): PackageMeta[];
35
+ getDocs(slug: string, page: DocPage): string;
36
+ getSource(slug: string): string;
37
+ listExamples(slug: string): Array<Pick<Example, 'id' | 'name'>>;
38
+ getExample(slug: string, exampleId: string): Example;
39
+ getTypeSignature(slug: string, symbol: string): string;
40
+ search(query: string): SearchHit[];
41
+ }
package/dist/catalog.js CHANGED
@@ -64,13 +64,11 @@ function searchRecord(record, query) {
64
64
  }
65
65
  export class SnapshotCatalog {
66
66
  bySlug;
67
- componentsByTag;
68
67
  contentCache = new Map();
69
68
  snapshot;
70
69
  constructor(snapshot) {
71
70
  this.snapshot = snapshot;
72
71
  this.bySlug = new Map(snapshot.catalog.packages.map((pkg) => [pkg.slug, pkg]));
73
- this.componentsByTag = new Map(snapshot.refineComponents.flatMap((component) => component.tagName ? [[component.tagName, component]] : []));
74
72
  }
75
73
  getPackage(slug) {
76
74
  const pkg = this.bySlug.get(slug);
@@ -133,17 +131,5 @@ export class SnapshotCatalog {
133
131
  .sort((left, right) => left.tier - right.tier || left.hit.slug.localeCompare(right.hit.slug))
134
132
  .map((result) => result.hit);
135
133
  }
136
- listComponents() {
137
- if (this.snapshot.refineComponents.length === 0)
138
- throw new CatalogError('UNAVAILABLE', 'Refine component metadata is unavailable in this snapshot.');
139
- return this.snapshot.refineComponents;
140
- }
141
- getComponent(tagName) {
142
- this.listComponents();
143
- const component = this.componentsByTag.get(tagName);
144
- if (!component)
145
- throw new CatalogError('NOT_FOUND', `Component "${tagName}" not found.`);
146
- return component;
147
- }
148
134
  }
149
135
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAuB,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlE,MAAM,OAAO,YAAa,SAAQ,UAAU;IACjC,IAAI,CAAmB;IAEhC,YAAY,IAAsB,EAAE,OAAe;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAsBD,SAAS,OAAO,CAAC,QAAgB,EAAE,KAAwB;IACzD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAOD,SAAS,YAAY,CAAC,MAAoB,EAAE,KAAa;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC;IAEnG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC1D,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IACE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC1E,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAA6B,EAAE,CAAC;QACtF,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,IAAI,GACR,cAAc,KAAK,eAAe,IAAI,cAAc,KAAK,eAAe;QACtE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC;YACxF,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBACtG,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC;IAEZ,OAAO;QACL,GAAG,EAAE;YACH,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;YACzD,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;YAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YAChD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;QACD,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,eAAe;IACT,MAAM,CAA2B;IACjC,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,QAAQ,CAAiB;IAE1C,YAAY,QAAwB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,YAAY,IAAI,iCAAiC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;QAEJ,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QACrE,IAAI,OAAuB,CAAC;QAE5B,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,UAAU;gBAAE,MAAM,KAAK,CAAC;YAE7C,MAAM,IAAI,UAAU,CAClB,uCAAuC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACxG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAa;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,OAAO,IAAI,eAAe,IAAI,iBAAiB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAC/G,CAAC;QAEJ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;QAE/C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,YAAY,IAAI,0BAA0B,CAAC,CAAC;QAE/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,SAAiB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAErF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,eAAe,SAAS,UAAU,IAAI,IAAI,CAAC,CAAC;QAE9F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,MAAc;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,uBAAuB,MAAM,UAAU,IAAI,IAAI,CAAC,CAAC;QAErG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;aACxB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,MAAM,EAA6B,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;aAC9D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC5F,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function main(argv?: readonly string[]): Promise<number>;
package/dist/cli.js CHANGED
@@ -5,11 +5,12 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
5
5
  import { parseArgs } from 'node:util';
6
6
  import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
7
7
  import { log } from './_log.js';
8
- import { SnapshotCatalog } from './catalog.js';
9
8
  import { startHttpHost } from './http.js';
10
9
  import { resolvePort } from './port.js';
10
+ import { SnapshotRefineCatalog } from './refine-catalog.js';
11
11
  import { createMcpServer } from './server.js';
12
12
  import { loadSnapshot } from './snapshot.js';
13
+ import { registerRefineTools } from './tools/refine.js';
13
14
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
15
  function usage() {
15
16
  log([
@@ -41,16 +42,28 @@ export async function main(argv = process.argv.slice(2)) {
41
42
  strict: true,
42
43
  }));
43
44
  const snapshot = loadSnapshot(values.snapshot);
44
- const catalog = new SnapshotCatalog(snapshot);
45
+ const catalog = new SnapshotRefineCatalog(snapshot);
45
46
  const port = resolvePort(values.port);
47
+ const configure = (server) => registerRefineTools(server, catalog, values.debug);
46
48
  if (port === null) {
47
- await createMcpServer(catalog, { debug: values.debug, version: snapshot.manifest.version }).connect(new StdioServerTransport());
49
+ const server = createMcpServer(catalog, { debug: values.debug, version: snapshot.manifest.version });
50
+ configure(server);
51
+ await server.connect(new StdioServerTransport());
48
52
  return 0;
49
53
  }
50
- const host = await startHttpHost({ catalog, debug: values.debug, port, version: snapshot.manifest.version });
54
+ const host = await startHttpHost({
55
+ catalog,
56
+ configureServer: configure,
57
+ debug: values.debug,
58
+ port,
59
+ version: snapshot.manifest.version,
60
+ });
51
61
  const shutdown = () => {
52
62
  void host.dispose().then(() => {
53
63
  process.exitCode = 0;
64
+ }, (error) => {
65
+ log(`error: failed to shut down HTTP host: ${error instanceof Error ? error.message : String(error)}`);
66
+ process.exitCode = 1;
54
67
  });
55
68
  };
56
69
  process.once('SIGINT', shutdown);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Base class for all codex errors. Use `instanceof CodexError` to catch any codex-originated error. */
2
+ export declare class CodexError extends Error {
3
+ constructor(message: string, opts?: ErrorOptions);
4
+ }
package/dist/http.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { type Server } from '@modelcontextprotocol/server';
2
+ import type { Catalog } from './catalog.js';
3
+ export interface HttpHost {
4
+ readonly disposalSignal: AbortSignal;
5
+ dispose(): Promise<void>;
6
+ readonly disposed: boolean;
7
+ readonly host: string;
8
+ readonly port: number;
9
+ [Symbol.asyncDispose](): Promise<void>;
10
+ }
11
+ export interface HttpHostOptions {
12
+ catalog: Catalog;
13
+ /** Optional hook invoked after generic tools are registered (e.g. to register Refine tools). */
14
+ configureServer?: (server: Server) => void;
15
+ debug?: boolean;
16
+ host?: '127.0.0.1' | '::1';
17
+ port: number;
18
+ version: string;
19
+ }
20
+ /** Streamable HTTP host owns every transport and only listens on loopback addresses. */
21
+ export declare function startHttpHost(options: HttpHostOptions): Promise<HttpHost>;
package/dist/http.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { createServer } from 'node:http';
2
2
  import { Readable } from 'node:stream';
3
3
  import { pipeline } from 'node:stream/promises';
4
- import { createMcpHandler } from '@modelcontextprotocol/server';
4
+ import { createMcpHandler, hostHeaderValidationResponse, localhostAllowedHostnames, localhostAllowedOrigins, originValidationResponse, } from '@modelcontextprotocol/server';
5
5
  import { log } from './_log.js';
6
+ import { CodexError } from './errors.js';
6
7
  import { createMcpServer } from './server.js';
7
8
  function close(server) {
8
9
  return new Promise((resolve, reject) => {
@@ -27,7 +28,8 @@ function toWebRequest(request) {
27
28
  headers.set(key, value);
28
29
  }
29
30
  const hasBody = request.method !== 'GET' && request.method !== 'HEAD';
30
- return new Request(`http://${request.headers.host ?? 'localhost'}${request.url}`, {
31
+ const path = request.url?.startsWith('/') ? request.url : '/';
32
+ return new Request(`http://localhost${path}`, {
31
33
  ...(hasBody && { body: Readable.toWeb(request), duplex: 'half' }),
32
34
  headers,
33
35
  method: request.method,
@@ -47,24 +49,41 @@ async function sendWebResponse(webResponse, response) {
47
49
  /** Streamable HTTP host owns every transport and only listens on loopback addresses. */
48
50
  export async function startHttpHost(options) {
49
51
  const host = options.host ?? '127.0.0.1';
52
+ if (host !== '127.0.0.1' && host !== '::1') {
53
+ throw new CodexError('HTTP host must be a loopback address (127.0.0.1 or ::1).');
54
+ }
50
55
  // Stateless by default (SEP-2575): a fresh server instance per request, matching the
51
56
  // spec's "any request can land on any instance" design — codex's tools carry no
52
57
  // per-connection state, so a persistent instance buys nothing beyond a small, negligible
53
58
  // (13-tool catalog) reconstruction cost per request.
54
- const factory = () => createMcpServer(options.catalog, { debug: options.debug, version: options.version });
55
- // `createMcpHandler()`'s factory only runs lazily, on the first real request — call it once
56
- // eagerly here so a broken catalog/registration setup fails `startHttpHost()` itself, before
57
- // the port opens, matching the old eager `mcpServer.connect()` fail-fast guarantee.
58
- factory();
59
+ const factory = () => {
60
+ const server = createMcpServer(options.catalog, { debug: options.debug, version: options.version });
61
+ options.configureServer?.(server);
62
+ return server;
63
+ };
64
+ // `createMcpHandler()` creates and configures one fresh server per MCP request.
59
65
  const handler = createMcpHandler(factory);
66
+ const allowedHosts = localhostAllowedHostnames();
67
+ const allowedOrigins = localhostAllowedOrigins();
60
68
  const httpServer = createServer((request, response) => {
69
+ const webRequest = toWebRequest(request);
70
+ const rejected = hostHeaderValidationResponse(webRequest, allowedHosts) ?? originValidationResponse(webRequest, allowedOrigins);
71
+ if (rejected) {
72
+ request.resume();
73
+ void sendWebResponse(rejected, response).catch((error) => {
74
+ if (!response.writableEnded)
75
+ response.end();
76
+ log(`HTTP validation response error: ${error instanceof Error ? error.message : String(error)}`);
77
+ });
78
+ return;
79
+ }
61
80
  if (request.method === 'GET' && request.url === '/health') {
62
81
  response.writeHead(200, { 'content-type': 'application/json; charset=utf-8' });
63
82
  response.end(JSON.stringify({ status: 'ok', version: options.version }));
64
83
  return;
65
84
  }
66
85
  handler
67
- .fetch(toWebRequest(request))
86
+ .fetch(webRequest)
68
87
  .then((webResponse) => sendWebResponse(webResponse, response))
69
88
  .catch((error) => {
70
89
  if (!response.headersSent) {
@@ -76,19 +95,39 @@ export async function startHttpHost(options) {
76
95
  log(`HTTP MCP error: ${error instanceof Error ? error.message : String(error)}`);
77
96
  });
78
97
  });
98
+ const disposal = new AbortController();
79
99
  let listening = false;
80
100
  let disposed = false;
81
- const dispose = async () => {
101
+ let disposing;
102
+ const dispose = () => {
82
103
  if (disposed)
83
- return;
84
- disposed = true;
85
- try {
86
- if (listening)
87
- await close(httpServer);
88
- }
89
- finally {
90
- await handler.close();
91
- }
104
+ return Promise.resolve();
105
+ if (disposing)
106
+ return disposing;
107
+ disposing = (async () => {
108
+ const errors = [];
109
+ try {
110
+ if (listening)
111
+ await close(httpServer);
112
+ listening = false;
113
+ }
114
+ catch (error) {
115
+ errors.push(error);
116
+ }
117
+ try {
118
+ await handler.close();
119
+ }
120
+ catch (error) {
121
+ errors.push(error);
122
+ }
123
+ if (errors.length > 0)
124
+ throw new AggregateError(errors, 'Failed to dispose Codex HTTP host');
125
+ disposed = true;
126
+ disposal.abort();
127
+ })().finally(() => {
128
+ disposing = undefined;
129
+ });
130
+ return disposing;
92
131
  };
93
132
  try {
94
133
  await new Promise((resolve, reject) => {
@@ -107,6 +146,17 @@ export async function startHttpHost(options) {
107
146
  const address = httpServer.address();
108
147
  const port = address && typeof address === 'object' ? address.port : options.port;
109
148
  log(`codex MCP HTTP host listening on http://${host}:${port}/`);
110
- return { dispose, host, port, [Symbol.asyncDispose]: dispose };
149
+ return {
150
+ get disposalSignal() {
151
+ return disposal.signal;
152
+ },
153
+ dispose,
154
+ get disposed() {
155
+ return disposed;
156
+ },
157
+ host,
158
+ port,
159
+ [Symbol.asyncDispose]: dispose,
160
+ };
111
161
  }
112
162
  //# sourceMappingURL=http.js.map
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@vielzeug/codex` — supported public contract.
3
+ *
4
+ * Exposes the generic catalog, snapshot loader, errors, and server hosts. Snapshot
5
+ * parser internals live behind `@vielzeug/codex/advanced`; Refine catalog types and
6
+ * tools live behind `@vielzeug/codex/refine`.
7
+ */
8
+ export { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
9
+ export { type Catalog, CatalogError, type SearchHit, SnapshotCatalog } from './catalog.js';
10
+ export { CodexError } from './errors.js';
11
+ export { type HttpHost, type HttpHostOptions, startHttpHost } from './http.js';
12
+ export { createMcpServer } from './server.js';
13
+ export { type LoadedSnapshot, loadSnapshot } from './snapshot.js';
14
+ export type { DocPage, Example, PackageContent, PackageMeta, SnapshotManifest, } from './types.js';
package/dist/index.js CHANGED
@@ -1,7 +1,14 @@
1
+ /**
2
+ * `@vielzeug/codex` — supported public contract.
3
+ *
4
+ * Exposes the generic catalog, snapshot loader, errors, and server hosts. Snapshot
5
+ * parser internals live behind `@vielzeug/codex/advanced`; Refine catalog types and
6
+ * tools live behind `@vielzeug/codex/refine`.
7
+ */
8
+ export { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
1
9
  export { CatalogError, SnapshotCatalog } from './catalog.js';
2
10
  export { CodexError } from './errors.js';
3
11
  export { startHttpHost } from './http.js';
4
12
  export { createMcpServer } from './server.js';
5
- export { loadSnapshot, parseCatalog, parseContent, parseManifest, parsePointer, parseSearch, validateSnapshot, } from './snapshot.js';
6
- export { DOC_PAGES, SNAPSHOT_SCHEMA_VERSION, } from './types.js';
13
+ export { loadSnapshot } from './snapshot.js';
7
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAkB,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAuC,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAQL,SAAS,EAKT,uBAAuB,GAGxB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAgB,YAAY,EAAkB,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAuC,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAuB,YAAY,EAAE,MAAM,eAAe,CAAC"}
package/dist/port.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ /** Parses and validates a --port CLI argument. Returns the port number or null if omitted. */
2
+ export declare function resolvePort(raw: string | undefined): number | null;
@@ -0,0 +1,14 @@
1
+ import { type Catalog, SnapshotCatalog } from './catalog.js';
2
+ import type { LoadedSnapshot } from './snapshot.js';
3
+ import type { CemDeclaration } from './types.js';
4
+ export interface RefineCatalog extends Catalog {
5
+ getComponent(tagName: string): CemDeclaration;
6
+ listComponents(): CemDeclaration[];
7
+ }
8
+ export declare class SnapshotRefineCatalog extends SnapshotCatalog implements RefineCatalog {
9
+ private readonly components;
10
+ private readonly componentsByTag;
11
+ constructor(snapshot: LoadedSnapshot);
12
+ listComponents(): CemDeclaration[];
13
+ getComponent(tagName: string): CemDeclaration;
14
+ }
@@ -0,0 +1,24 @@
1
+ import { CatalogError, SnapshotCatalog } from './catalog.js';
2
+ export class SnapshotRefineCatalog extends SnapshotCatalog {
3
+ components;
4
+ componentsByTag;
5
+ constructor(snapshot) {
6
+ super(snapshot);
7
+ this.components = snapshot.refineComponents;
8
+ this.componentsByTag = new Map(this.components.flatMap((component) => (component.tagName ? [[component.tagName, component]] : [])));
9
+ }
10
+ listComponents() {
11
+ if (this.components.length === 0) {
12
+ throw new CatalogError('UNAVAILABLE', 'Refine component metadata is unavailable in this snapshot.');
13
+ }
14
+ return [...this.components];
15
+ }
16
+ getComponent(tagName) {
17
+ this.listComponents();
18
+ const component = this.componentsByTag.get(tagName);
19
+ if (!component)
20
+ throw new CatalogError('NOT_FOUND', `Component "${tagName}" not found.`);
21
+ return component;
22
+ }
23
+ }
24
+ //# sourceMappingURL=refine-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine-catalog.js","sourceRoot":"","sources":["../src/refine-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAS3E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACvC,UAAU,CAAmB;IAC7B,eAAe,CAA8B;IAE9D,YAAY,QAAwB;QAClC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7G,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,4DAA4D,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,cAAc,OAAO,cAAc,CAAC,CAAC;QACzF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `@vielzeug/codex/refine` — opt-in Refine component tools.
3
+ *
4
+ * The main entry (`@vielzeug/codex`) registers only generic, product-agnostic package
5
+ * tools. Refine-specific tools (`refine-*`) live here behind a subpath so the core
6
+ * documentation server stays reusable without Refine. Call `registerRefineTools()` on
7
+ * a server created by `createMcpServer()` to upgrade it to the full Refine-augmented
8
+ * tool surface.
9
+ */
10
+ export { type RefineCatalog, SnapshotRefineCatalog } from './refine-catalog.js';
11
+ export { refineTools, registerRefineTools } from './tools/refine.js';
12
+ export type { CemAttribute, CemCssPart, CemCssProperty, CemDeclaration, CemEvent, CemMember, CemSlot, } from './types.js';
package/dist/refine.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `@vielzeug/codex/refine` — opt-in Refine component tools.
3
+ *
4
+ * The main entry (`@vielzeug/codex`) registers only generic, product-agnostic package
5
+ * tools. Refine-specific tools (`refine-*`) live here behind a subpath so the core
6
+ * documentation server stays reusable without Refine. Call `registerRefineTools()` on
7
+ * a server created by `createMcpServer()` to upgrade it to the full Refine-augmented
8
+ * tool surface.
9
+ */
10
+ export { SnapshotRefineCatalog } from './refine-catalog.js';
11
+ export { refineTools, registerRefineTools } from './tools/refine.js';
12
+ //# sourceMappingURL=refine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refine.js","sourceRoot":"","sources":["../src/refine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAsB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Server } from '@modelcontextprotocol/server';
2
+ import type { Catalog } from './catalog.js';
3
+ /**
4
+ * Creates an MCP server with the generic package tools registered. Refine-specific
5
+ * tools are opt-in via `@vielzeug/codex/refine`'s `registerRefineTools()` — the main
6
+ * library entry stays product-agnostic.
7
+ */
8
+ export declare function createMcpServer(catalog: Catalog, options: {
9
+ debug?: boolean;
10
+ version: string;
11
+ }): Server;