@vielzeug/codex 2.3.2 → 3.0.0
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 +12 -58
- package/dist/_log.d.ts +2 -0
- package/dist/advanced.d.ts +12 -0
- package/dist/advanced.js +13 -0
- package/dist/advanced.js.map +1 -0
- package/dist/catalog.d.ts +41 -0
- package/dist/catalog.js +0 -14
- package/dist/catalog.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +17 -4
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/http.d.ts +21 -0
- package/dist/http.js +69 -19
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/port.d.ts +2 -0
- package/dist/refine-catalog.d.ts +14 -0
- package/dist/refine-catalog.js +24 -0
- package/dist/refine-catalog.js.map +1 -0
- package/dist/refine.d.ts +12 -0
- package/dist/refine.js +12 -0
- package/dist/refine.js.map +1 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.js +7 -2
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +21 -0
- package/dist/snapshot.js +62 -3
- package/dist/snapshot.js.map +1 -1
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.js +4 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/packages.d.ts +2 -0
- package/dist/tools/packages.js +6 -1
- package/dist/tools/packages.js.map +1 -1
- package/dist/tools/refine.d.ts +5 -0
- package/dist/tools/refine.js +19 -4
- package/dist/tools/refine.js.map +1 -1
- package/dist/tools/schema.d.ts +22 -0
- package/dist/tools/schema.js +14 -13
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/shared.d.ts +8 -0
- package/dist/types.d.ts +114 -0
- package/package.json +35 -12
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @vielzeug/codex
|
|
2
2
|
|
|
3
|
-
MCP server
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
##
|
|
33
|
+
## License
|
|
78
34
|
|
|
79
|
-
|
|
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,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';
|
package/dist/advanced.js
ADDED
|
@@ -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
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
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
|
|
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
|
-
|
|
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({
|
|
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":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,SAAS,KAAK;IACZ,GAAG,CACD;QACE,mEAAmE;QACnE,EAAE;QACF,UAAU;QACV,2DAA2D;QAC3D,qDAAqD;QACrD,qEAAqE;QACrE,qCAAqC;QACrC,yCAAyC;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA0B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC;QAER,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;QAE3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAEzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAA6D,CAAC;IAElE,IAAI,CAAC;QACH,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC/F,MAAM,EAAE,IAAI;SACb,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAQ,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/F,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAErG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;YAEjD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;YAC/B,OAAO;YACP,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI;YACJ,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;SACnC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CACtB,GAAG,EAAE;gBACH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;gBACjB,GAAG,CAAC,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAElC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/errors.d.ts
ADDED
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
|
-
|
|
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 = () =>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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(
|
|
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
|
-
|
|
101
|
+
let disposing;
|
|
102
|
+
const dispose = () => {
|
|
82
103
|
if (disposed)
|
|
83
|
-
return;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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 {
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAwE,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
|
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,
|
|
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,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"}
|
package/dist/refine.d.ts
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 { 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"}
|
package/dist/server.d.ts
ADDED
|
@@ -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;
|