@vielzeug/codex 26.11.1 → 26.11.3
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/data/catalog.json +45 -44
- package/data/llms-full.txt +103 -111
- package/data/llms.txt +1 -1
- package/data/manifest.json +1 -1
- package/data/packages/codex.json +8 -9
- package/data/packages/necromancer.json +5 -5
- package/data/refine.json +113 -109
- package/data/search.json +10 -10
- package/dist/catalog.d.ts +14 -14
- package/dist/catalog.js +27 -14
- package/dist/catalog.js.map +1 -1
- package/dist/cli.js +3 -8
- package/dist/cli.js.map +1 -1
- package/dist/http.d.ts +3 -6
- package/dist/http.js +2 -12
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/refine-catalog.d.ts +3 -2
- package/dist/refine-catalog.js +7 -4
- package/dist/refine-catalog.js.map +1 -1
- package/dist/refine.d.ts +5 -10
- package/dist/refine.js +7 -10
- package/dist/refine.js.map +1 -1
- package/dist/server.d.ts +6 -7
- package/dist/server.js +6 -7
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +5 -5
- package/dist/tools/refine.d.ts +0 -2
- package/dist/tools/refine.js +0 -4
- package/dist/tools/refine.js.map +1 -1
- package/dist/types.d.ts +78 -78
- package/package.json +2 -2
- package/skills/vielzeug/SKILL.md +15 -13
package/data/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vielzeug: Full Documentation
|
|
2
2
|
|
|
3
|
-
> Complete documentation for 43 packages. Version: 26.11.
|
|
3
|
+
> Complete documentation for 43 packages. Version: 26.11.2
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -4262,15 +4262,15 @@ npx -y @vielzeug/codex
|
|
|
4262
4262
|
| `loadSnapshot` | Read validated snapshot metadata | Sync | Content chunks load lazily |
|
|
4263
4263
|
| `SnapshotCatalog` | Query package corpus | Sync | Construct from loaded snapshot |
|
|
4264
4264
|
| `createMcpServer` | MCP adapter factory (generic tools) | Sync | Requires catalog and version |
|
|
4265
|
+
| `createMcpServerWithRefine` | MCP adapter factory (all package and Refine tools) | Sync | Import from `@vielzeug/codex/refine` |
|
|
4265
4266
|
| `startHttpHost` | Loopback Streamable HTTP host | Async | HTTP remains local-only |
|
|
4266
|
-
| `registerRefineTools` | Opt-in Refine tool registration | Sync | Import from `@vielzeug/codex/refine` |
|
|
4267
4267
|
|
|
4268
4268
|
## Package Entry Points
|
|
4269
4269
|
|
|
4270
4270
|
| Import | Purpose |
|
|
4271
4271
|
| --- | --- |
|
|
4272
4272
|
| `@vielzeug/codex` | `Catalog`, `SnapshotCatalog`, `loadSnapshot`, MCP server, and HTTP host |
|
|
4273
|
-
| `@vielzeug/codex/refine` |
|
|
4273
|
+
| `@vielzeug/codex/refine` | Refine catalog and MCP server with component tools |
|
|
4274
4274
|
|
|
4275
4275
|
## Snapshot
|
|
4276
4276
|
|
|
@@ -4304,21 +4304,23 @@ Registers generic package tools over `Catalog`. Refine tools are opt-in through
|
|
|
4304
4304
|
|
|
4305
4305
|
## Refine tools (`@vielzeug/codex/refine`)
|
|
4306
4306
|
|
|
4307
|
-
### `
|
|
4307
|
+
### `createMcpServerWithRefine`
|
|
4308
4308
|
|
|
4309
4309
|
```ts
|
|
4310
|
-
|
|
4310
|
+
createMcpServerWithRefine(catalog: RefineCatalog, options: { version: string; debug?: boolean }): Server;
|
|
4311
4311
|
```
|
|
4312
4312
|
|
|
4313
|
-
|
|
4313
|
+
Creates a server with the general Vielzeug package catalog tools and the additional `refine-*` component tools.
|
|
4314
4314
|
|
|
4315
|
-
### `
|
|
4315
|
+
### `SnapshotRefineCatalog`
|
|
4316
4316
|
|
|
4317
4317
|
```ts
|
|
4318
|
-
|
|
4318
|
+
new SnapshotRefineCatalog(snapshot: LoadedSnapshot)
|
|
4319
4319
|
```
|
|
4320
4320
|
|
|
4321
|
-
|
|
4321
|
+
Extends `SnapshotCatalog` with `getComponent()` and `listComponents()`.
|
|
4322
|
+
|
|
4323
|
+
Component declarations and their nested data use readonly TypeScript types.
|
|
4322
4324
|
|
|
4323
4325
|
## HTTP
|
|
4324
4326
|
|
|
@@ -4328,22 +4330,22 @@ Upgrades a server created by `createMcpServer()` with the combined generic and `
|
|
|
4328
4330
|
startHttpHost(options: HttpHostOptions): Promise;
|
|
4329
4331
|
```
|
|
4330
4332
|
|
|
4331
|
-
Starts Streamable HTTP on `127.0.0.1` by default. Runtime validation accepts only `127.0.0.1` or `::1`; every request must also pass localhost Host and Origin checks. `
|
|
4333
|
+
Starts Streamable HTTP on `127.0.0.1` by default. Runtime validation accepts only `127.0.0.1` or `::1`; every request must also pass localhost Host and Origin checks. `createServer` must return a fresh, unconnected server with its request handlers registered.
|
|
4332
4334
|
|
|
4333
4335
|
## Types
|
|
4334
4336
|
|
|
4335
4337
|
```ts
|
|
4336
4338
|
interface SnapshotPointer {
|
|
4337
|
-
directory: string;
|
|
4339
|
+
readonly directory: string;
|
|
4338
4340
|
}
|
|
4339
4341
|
|
|
4340
4342
|
interface SnapshotManifest {
|
|
4341
|
-
catalog: 'catalog.json';
|
|
4342
|
-
contentDirectory: 'packages';
|
|
4343
|
-
refine: 'refine.json' | null;
|
|
4344
|
-
schemaVersion: typeof SNAPSHOT_SCHEMA_VERSION;
|
|
4345
|
-
search: 'search.json';
|
|
4346
|
-
version: string;
|
|
4343
|
+
readonly catalog: 'catalog.json';
|
|
4344
|
+
readonly contentDirectory: 'packages';
|
|
4345
|
+
readonly refine: 'refine.json' | null;
|
|
4346
|
+
readonly schemaVersion: typeof SNAPSHOT_SCHEMA_VERSION;
|
|
4347
|
+
readonly search: 'search.json';
|
|
4348
|
+
readonly version: string;
|
|
4347
4349
|
}
|
|
4348
4350
|
```
|
|
4349
4351
|
|
|
@@ -4351,88 +4353,82 @@ Dev snapshots use `SnapshotPointer` (via `current.json`); published snapshots ar
|
|
|
4351
4353
|
|
|
4352
4354
|
```ts
|
|
4353
4355
|
interface LoadedSnapshot {
|
|
4354
|
-
catalog: CatalogFile;
|
|
4355
|
-
contentDirectory: string;
|
|
4356
|
-
manifest: SnapshotManifest;
|
|
4357
|
-
refineComponents: CemDeclaration[];
|
|
4358
|
-
search: SearchRecord[];
|
|
4356
|
+
readonly catalog: CatalogFile;
|
|
4357
|
+
readonly contentDirectory: string;
|
|
4358
|
+
readonly manifest: SnapshotManifest;
|
|
4359
|
+
readonly refineComponents: readonly CemDeclaration[];
|
|
4360
|
+
readonly search: readonly SearchRecord[];
|
|
4359
4361
|
}
|
|
4360
4362
|
```
|
|
4361
4363
|
|
|
4362
4364
|
```ts
|
|
4363
4365
|
interface CatalogFile {
|
|
4364
|
-
packages: PackageMeta[];
|
|
4365
|
-
version: string;
|
|
4366
|
+
readonly packages: readonly PackageMeta[];
|
|
4367
|
+
readonly version: string;
|
|
4366
4368
|
}
|
|
4367
4369
|
|
|
4368
4370
|
interface SearchRecord {
|
|
4369
|
-
category: string;
|
|
4370
|
-
description: string;
|
|
4371
|
-
docs:
|
|
4372
|
-
examples:
|
|
4373
|
-
exports: string;
|
|
4374
|
-
keywords: string;
|
|
4375
|
-
name: string;
|
|
4376
|
-
related: string;
|
|
4377
|
-
slug: string;
|
|
4378
|
-
source: string | null;
|
|
4371
|
+
readonly category: string;
|
|
4372
|
+
readonly description: string;
|
|
4373
|
+
readonly docs: Readonly>>;
|
|
4374
|
+
readonly examples: readonly { readonly id: string; readonly text: string }[];
|
|
4375
|
+
readonly exports: string;
|
|
4376
|
+
readonly keywords: string;
|
|
4377
|
+
readonly name: string;
|
|
4378
|
+
readonly related: string;
|
|
4379
|
+
readonly slug: string;
|
|
4380
|
+
readonly source: string | null;
|
|
4379
4381
|
}
|
|
4380
4382
|
|
|
4381
4383
|
interface PackageMeta {
|
|
4382
|
-
availableDocPages: DocPage[];
|
|
4383
|
-
category: string;
|
|
4384
|
-
description: string;
|
|
4385
|
-
exampleIds: string[];
|
|
4386
|
-
exports: string[];
|
|
4387
|
-
hasSource: boolean;
|
|
4388
|
-
keywords: string[];
|
|
4389
|
-
name: string;
|
|
4390
|
-
related: string[];
|
|
4391
|
-
slug: string;
|
|
4392
|
-
version: string;
|
|
4393
|
-
}
|
|
4394
|
-
|
|
4395
|
-
interface PackageContent {
|
|
4396
|
-
apiSource: string | null;
|
|
4397
|
-
docs: Partial>;
|
|
4398
|
-
examples: Example[];
|
|
4399
|
-
typeSignatures: Record;
|
|
4384
|
+
readonly availableDocPages: readonly DocPage[];
|
|
4385
|
+
readonly category: string;
|
|
4386
|
+
readonly description: string;
|
|
4387
|
+
readonly exampleIds: readonly string[];
|
|
4388
|
+
readonly exports: readonly string[];
|
|
4389
|
+
readonly hasSource: boolean;
|
|
4390
|
+
readonly keywords: readonly string[];
|
|
4391
|
+
readonly name: string;
|
|
4392
|
+
readonly related: readonly string[];
|
|
4393
|
+
readonly slug: string;
|
|
4394
|
+
readonly version: string;
|
|
4400
4395
|
}
|
|
4401
4396
|
|
|
4402
4397
|
interface Example {
|
|
4403
|
-
code: string;
|
|
4404
|
-
id: string;
|
|
4405
|
-
name: string;
|
|
4398
|
+
readonly code: string;
|
|
4399
|
+
readonly id: string;
|
|
4400
|
+
readonly name: string;
|
|
4406
4401
|
}
|
|
4407
4402
|
```
|
|
4408
4403
|
|
|
4409
4404
|
```ts
|
|
4410
4405
|
interface Catalog {
|
|
4411
|
-
getContent(slug: string): PackageContent;
|
|
4412
4406
|
getDocs(slug: string, page: DocPage): string;
|
|
4413
4407
|
getExample(slug: string, exampleId: string): Example;
|
|
4414
4408
|
getPackage(slug: string): PackageMeta;
|
|
4415
4409
|
getSource(slug: string): string;
|
|
4416
4410
|
getTypeSignature(slug: string, symbol: string): string;
|
|
4417
|
-
listExamples(slug: string):
|
|
4418
|
-
listPackages(): PackageMeta[];
|
|
4419
|
-
search(query: string): SearchHit[];
|
|
4411
|
+
listExamples(slug: string): readonly Pick[];
|
|
4412
|
+
listPackages(): readonly PackageMeta[];
|
|
4413
|
+
search(query: string): readonly SearchHit[];
|
|
4420
4414
|
}
|
|
4421
4415
|
|
|
4422
4416
|
interface RefineCatalog extends Catalog {
|
|
4423
4417
|
getComponent(tagName: string): CemDeclaration;
|
|
4424
|
-
listComponents(): CemDeclaration[];
|
|
4418
|
+
listComponents(): readonly CemDeclaration[];
|
|
4425
4419
|
}
|
|
4426
4420
|
|
|
4427
4421
|
interface SearchHit {
|
|
4428
|
-
matchedExamples?: string[];
|
|
4429
|
-
matchedIn:
|
|
4430
|
-
matchedPages?: DocPage[];
|
|
4431
|
-
name: string;
|
|
4432
|
-
slug: string;
|
|
4422
|
+
readonly matchedExamples?: readonly string[];
|
|
4423
|
+
readonly matchedIn: readonly ('docs' | 'examples' | 'exports' | 'keywords' | 'metadata' | 'related' | 'source')[];
|
|
4424
|
+
readonly matchedPages?: readonly DocPage[];
|
|
4425
|
+
readonly name: string;
|
|
4426
|
+
readonly slug: string;
|
|
4433
4427
|
}
|
|
4434
4428
|
```
|
|
4435
4429
|
|
|
4430
|
+
Catalog exposes semantic reads. It does not expose its cached content chunks.
|
|
4431
|
+
|
|
4436
4432
|
```ts
|
|
4437
4433
|
interface HttpHost {
|
|
4438
4434
|
readonly disposalSignal: AbortSignal;
|
|
@@ -4444,9 +4440,7 @@ interface HttpHost {
|
|
|
4444
4440
|
}
|
|
4445
4441
|
|
|
4446
4442
|
interface HttpHostOptions {
|
|
4447
|
-
|
|
4448
|
-
configureServer?: (server: Server) => void;
|
|
4449
|
-
debug?: boolean;
|
|
4443
|
+
createServer: () => Server;
|
|
4450
4444
|
host?: '127.0.0.1' | '::1';
|
|
4451
4445
|
port: number;
|
|
4452
4446
|
version: string;
|
|
@@ -4464,54 +4458,54 @@ CEM types and `RefineCatalog` are exported from `/refine`.
|
|
|
4464
4458
|
|
|
4465
4459
|
```ts
|
|
4466
4460
|
interface CemDeclaration {
|
|
4467
|
-
attributes?: CemAttribute[];
|
|
4468
|
-
cssParts?: CemCssPart[];
|
|
4469
|
-
cssProperties?: CemCssProperty[];
|
|
4470
|
-
description?: string;
|
|
4471
|
-
events?: CemEvent[];
|
|
4472
|
-
members?: CemMember[];
|
|
4473
|
-
name?: string;
|
|
4474
|
-
slots?: CemSlot[];
|
|
4475
|
-
superclass?: { name: string; package?: string };
|
|
4476
|
-
tagName?: string;
|
|
4477
|
-
[key: string]: unknown;
|
|
4461
|
+
readonly attributes?: readonly CemAttribute[];
|
|
4462
|
+
readonly cssParts?: readonly CemCssPart[];
|
|
4463
|
+
readonly cssProperties?: readonly CemCssProperty[];
|
|
4464
|
+
readonly description?: string;
|
|
4465
|
+
readonly events?: readonly CemEvent[];
|
|
4466
|
+
readonly members?: readonly CemMember[];
|
|
4467
|
+
readonly name?: string;
|
|
4468
|
+
readonly slots?: readonly CemSlot[];
|
|
4469
|
+
readonly superclass?: { readonly name: string; readonly package?: string };
|
|
4470
|
+
readonly tagName?: string;
|
|
4471
|
+
readonly [key: string]: unknown;
|
|
4478
4472
|
}
|
|
4479
4473
|
|
|
4480
4474
|
interface CemAttribute {
|
|
4481
|
-
default?: string;
|
|
4482
|
-
description?: string;
|
|
4483
|
-
fieldName?: string;
|
|
4484
|
-
name: string;
|
|
4485
|
-
type?: { text: string };
|
|
4475
|
+
readonly default?: string;
|
|
4476
|
+
readonly description?: string;
|
|
4477
|
+
readonly fieldName?: string;
|
|
4478
|
+
readonly name: string;
|
|
4479
|
+
readonly type?: { readonly text: string };
|
|
4486
4480
|
}
|
|
4487
4481
|
|
|
4488
4482
|
interface CemCssPart {
|
|
4489
|
-
description?: string;
|
|
4490
|
-
name: string;
|
|
4483
|
+
readonly description?: string;
|
|
4484
|
+
readonly name: string;
|
|
4491
4485
|
}
|
|
4492
4486
|
|
|
4493
4487
|
interface CemCssProperty {
|
|
4494
|
-
default?: string;
|
|
4495
|
-
description?: string;
|
|
4496
|
-
name: string;
|
|
4488
|
+
readonly default?: string;
|
|
4489
|
+
readonly description?: string;
|
|
4490
|
+
readonly name: string;
|
|
4497
4491
|
}
|
|
4498
4492
|
|
|
4499
4493
|
interface CemEvent {
|
|
4500
|
-
description?: string;
|
|
4501
|
-
name: string;
|
|
4502
|
-
type?: { text: string };
|
|
4494
|
+
readonly description?: string;
|
|
4495
|
+
readonly name: string;
|
|
4496
|
+
readonly type?: { readonly text: string };
|
|
4503
4497
|
}
|
|
4504
4498
|
|
|
4505
4499
|
interface CemMember {
|
|
4506
|
-
description?: string;
|
|
4507
|
-
kind?: 'field' | 'method';
|
|
4508
|
-
name: string;
|
|
4509
|
-
type?: { text: string };
|
|
4500
|
+
readonly description?: string;
|
|
4501
|
+
readonly kind?: 'field' | 'method';
|
|
4502
|
+
readonly name: string;
|
|
4503
|
+
readonly type?: { readonly text: string };
|
|
4510
4504
|
}
|
|
4511
4505
|
|
|
4512
4506
|
interface CemSlot {
|
|
4513
|
-
description?: string;
|
|
4514
|
-
name: string;
|
|
4507
|
+
readonly description?: string;
|
|
4508
|
+
readonly name: string;
|
|
4515
4509
|
}
|
|
4516
4510
|
```
|
|
4517
4511
|
|
|
@@ -4540,7 +4534,7 @@ npx -y @vielzeug/codex --port=3100
|
|
|
4540
4534
|
curl http://127.0.0.1:3100/health
|
|
4541
4535
|
```
|
|
4542
4536
|
|
|
4543
|
-
Response includes snapshot version. Runtime bind validation and Host/Origin allowlists restrict access to localhost; no remote host mode exists. Programmatic `
|
|
4537
|
+
Response includes snapshot version. Runtime bind validation and Host/Origin allowlists restrict access to localhost; no remote host mode exists. Programmatic HTTP hosting takes a `createServer` factory that returns a fresh, unconnected server with its request handlers registered. Dispose the host asynchronously and observe `disposed` or `disposalSignal` when coordinating shutdown.
|
|
4544
4538
|
|
|
4545
4539
|
## Agent Skill
|
|
4546
4540
|
|
|
@@ -4590,16 +4584,15 @@ const catalog = new SnapshotCatalog(snapshot);
|
|
|
4590
4584
|
await createMcpServer(catalog, { version: snapshot.manifest.version }).connect(new StdioServerTransport());
|
|
4591
4585
|
```
|
|
4592
4586
|
|
|
4593
|
-
To include Refine component tools,
|
|
4587
|
+
To include Refine component tools, create a server with the `@vielzeug/codex/refine` subpath:
|
|
4594
4588
|
|
|
4595
4589
|
```ts
|
|
4596
|
-
import { StdioServerTransport,
|
|
4597
|
-
import {
|
|
4590
|
+
import { StdioServerTransport, loadSnapshot } from '@vielzeug/codex';
|
|
4591
|
+
import { createMcpServerWithRefine, SnapshotRefineCatalog } from '@vielzeug/codex/refine';
|
|
4598
4592
|
|
|
4599
4593
|
const snapshot = loadSnapshot();
|
|
4600
4594
|
const catalog = new SnapshotRefineCatalog(snapshot);
|
|
4601
|
-
const server =
|
|
4602
|
-
registerRefineTools(server, catalog);
|
|
4595
|
+
const server = createMcpServerWithRefine(catalog, { version: snapshot.manifest.version });
|
|
4603
4596
|
await server.connect(new StdioServerTransport());
|
|
4604
4597
|
```
|
|
4605
4598
|
|
|
@@ -4609,7 +4602,7 @@ await server.connect(new StdioServerTransport());
|
|
|
4609
4602
|
- Use `get-type-signature` before loading full source.
|
|
4610
4603
|
- Published package snapshots are static directories; local dev snapshots are immutable generations selected by `.dev/current.json`.
|
|
4611
4604
|
- Pass `validateContents: true` to `loadSnapshot()` for artifact verification; normal startup keeps package chunks lazy.
|
|
4612
|
-
-
|
|
4605
|
+
- Return a fresh configured server from `startHttpHost`'s `createServer` factory.
|
|
4613
4606
|
- Keep HTTP local. Use stdio for normal client integration.
|
|
4614
4607
|
- Run `pnpm test:unit` before `pnpm test:integration`.
|
|
4615
4608
|
|
|
@@ -15466,7 +15459,7 @@ animation.dispose();
|
|
|
15466
15459
|
- `animate()`: Native element animation with lifecycle ownership and direct native access
|
|
15467
15460
|
- `animateEach()`: Group ownership with stable keyframe factories and `stagger`
|
|
15468
15461
|
- `captureLayout()`: One-shot FLIP transition with additive `translate` (position) and `scale` (size)
|
|
15469
|
-
- `motion`: `'system'` reduced-motion support with
|
|
15462
|
+
- `motion`: `'system'` reduced-motion support with the same keyframes on instant timing
|
|
15470
15463
|
- Native timing: Omitted timing fields retain Web Animations API behavior
|
|
15471
15464
|
- `signal`: Abort a handle from its parent lifecycle
|
|
15472
15465
|
- `dispose()`: Idempotent cleanup with `[Symbol.dispose]()`
|
|
@@ -15480,7 +15473,7 @@ Necromancer owns explicit WAAPI keyframes. It does not generate CSS keyframes, o
|
|
|
15480
15473
|
- [Usage Guide](./usage.md)
|
|
15481
15474
|
- [API Reference](./api.md)
|
|
15482
15475
|
- [Examples](./examples.md)
|
|
15483
|
-
- [
|
|
15476
|
+
- [Migration Guide](./migration.md)
|
|
15484
15477
|
|
|
15485
15478
|
## See Also
|
|
15486
15479
|
|
|
@@ -15638,11 +15631,10 @@ type MotionMode = 'full' | 'reduced' | 'system';
|
|
|
15638
15631
|
```ts
|
|
15639
15632
|
type AnimationResult =
|
|
15640
15633
|
| { readonly status: 'finished' }
|
|
15641
|
-
| { readonly status: 'reduced' }
|
|
15642
15634
|
| { readonly reason?: unknown; readonly status: 'cancelled' };
|
|
15643
15635
|
```
|
|
15644
15636
|
|
|
15645
|
-
`
|
|
15637
|
+
A reduced animation finishes: reduction is decided at call time and `shouldReduceMotion()` answers it, so the result reports only what the caller could not know. `cancelled` carries the reason the animation was cancelled: the value passed to `dispose()`, the abort reason of the owning `signal`, or the native rejection reason when something outside Necromancer cancelled the animation. A bare `dispose()` carries no reason. The independent `disposed` property becomes `true` only when the lifecycle owner is explicitly disposed.
|
|
15646
15638
|
|
|
15647
15639
|
### `AnimateOptions`
|
|
15648
15640
|
|
|
@@ -15838,7 +15830,7 @@ const result = await handle.result;
|
|
|
15838
15830
|
handle.dispose();
|
|
15839
15831
|
```
|
|
15840
15832
|
|
|
15841
|
-
`result` distinguishes natural completion
|
|
15833
|
+
`result` distinguishes natural completion from cancellation. `disposed` reports only whether the owner was explicitly disposed.
|
|
15842
15834
|
|
|
15843
15835
|
Omitted timing fields retain native Web Animations API behavior. Pass an explicit `duration` when the animation should run over time.
|
|
15844
15836
|
|
|
@@ -15857,7 +15849,7 @@ const result = await handle.result;
|
|
|
15857
15849
|
|
|
15858
15850
|
`'system'` is the default and reduces movement when `prefers-reduced-motion: reduce` matches. `'full'` preserves the requested timing, while `'reduced'` always reduces it.
|
|
15859
15851
|
|
|
15860
|
-
Reduced motion keeps the supplied keyframes but normalizes delay, duration, and end delay to zero and iterations to one. The result is `{ status: '
|
|
15852
|
+
Reduced motion keeps the supplied keyframes but normalizes delay, duration, and end delay to zero and iterations to one. The animation finishes immediately, so its result is `{ status: 'finished' }`; call `shouldReduceMotion()` with the same mode when your own code needs to know whether movement was reduced. `handle.animation` still represents the requested visual transition.
|
|
15861
15853
|
|
|
15862
15854
|
## Parent Cancellation
|
|
15863
15855
|
|
package/data/llms.txt
CHANGED
package/data/manifest.json
CHANGED
package/data/packages/codex.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apiSource": "/**\n * `@vielzeug/codex`: supported public contract.\n *\n * Exposes the generic catalog, snapshot loader, errors, and server hosts.\n * Refine catalog types and tools live behind `@vielzeug/codex/refine`.\n */\nexport { StdioServerTransport } from '@modelcontextprotocol/server/stdio';\nexport { type Catalog, CatalogError, type SearchHit, SnapshotCatalog } from './catalog.js';\nexport { CodexError } from './errors.js';\nexport { type HttpHost, type HttpHostOptions, startHttpHost } from './http.js';\nexport { createMcpServer } from './server.js';\nexport { type LoadedSnapshot, loadSnapshot } from './snapshot.js';\nexport type {\n DocPage,\n Example,\n
|
|
2
|
+
"apiSource": "/**\n * `@vielzeug/codex`: supported public contract.\n *\n * Exposes the generic catalog, snapshot loader, errors, and server hosts.\n * Refine catalog types and tools live behind `@vielzeug/codex/refine`.\n */\nexport { StdioServerTransport } from '@modelcontextprotocol/server/stdio';\nexport { type Catalog, CatalogError, type SearchHit, SnapshotCatalog } from './catalog.js';\nexport { CodexError } from './errors.js';\nexport { type HttpHost, type HttpHostOptions, startHttpHost } from './http.js';\nexport { createMcpServer } from './server.js';\nexport { type LoadedSnapshot, loadSnapshot } from './snapshot.js';\nexport type {\n DocPage,\n Example,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';\n",
|
|
3
3
|
"docs": {
|
|
4
|
-
"index": "---\ntitle: Codex\ndescription: Local MCP access to Vielzeug documentation and package metadata.\npackage: codex\ncategory: AI\nkeywords: [mcp, docs, ai]\nrelated: [refine]\nexports: [loadSnapshot, SnapshotCatalog, createMcpServer, startHttpHost, StdioServerTransport, CatalogError, CodexError]\nenvironments: [node]\n---\n\n<PackageHero package=\"codex\" />\n\n## Why Codex?\n\nCodex exposes current Vielzeug catalog data through MCP without scanning source at request time.\n\n## Installation\n\n```sh\npnpm add @vielzeug/codex\n```\n\n## Quick Start\n\n```sh\nnpx -y @vielzeug/codex\n```\n\n## Features\n\n- `loadSnapshot` validates chunked snapshot metadata.\n- `SnapshotCatalog` loads package content only when requested.\n- `createMcpServer` registers generic package tools; `/refine` adds component tools explicitly.\n- Root and `/refine` entry points publish TypeScript declarations.\n- `startHttpHost` enforces loopback binding plus localhost Host and Origin validation.\n\n## Documentation\n\n- [Usage](./usage.md)\n- [API](./api.md)\n- [Examples](./examples.md)\n- [Migration Guide](./migration.md)\n\n## See Also\n\n- [Refine](../refine/) provides component metadata bundled by Codex.\n",
|
|
5
|
-
"api": "---\ntitle: Codex API\ndescription: Snapshot, catalog, MCP server, and local HTTP host APIs.\n---\n\n[[toc]]\n\n## API Overview\n\n| Symbol | Purpose | Execution mode | Common gotcha |\n| --- | --- | --- | --- |\n| `loadSnapshot` | Read validated snapshot metadata | Sync | Content chunks load lazily |\n| `SnapshotCatalog` | Query package corpus | Sync | Construct from loaded snapshot |\n| `createMcpServer` | MCP adapter factory (generic tools) | Sync | Requires catalog and version |\n| `
|
|
6
|
-
"usage": "---\ntitle: 'Codex: Usage Guide'\ndescription: Install, connect, develop, and debug the Vielzeug MCP server.\n---\n\n[[toc]]\n\n## Basic Usage\n\nRun local stdio server:\n\n```sh\nnpx -y @vielzeug/codex\n```\n\nUse shipped `mcp-setup.json` for machine-readable generic configuration. Client-specific configuration must use its documented MCP format.\n\n## HTTP Mode\n\nHTTP uses Streamable HTTP and binds loopback only:\n\n```sh\nnpx -y @vielzeug/codex --port=3100\ncurl http://127.0.0.1:3100/health\n```\n\nResponse includes snapshot version. Runtime bind validation and Host/Origin allowlists restrict access to localhost; no remote host mode exists. Programmatic `
|
|
4
|
+
"index": "---\ntitle: Codex\ndescription: Local MCP access to Vielzeug documentation and package metadata.\npackage: codex\ncategory: AI\nkeywords: [mcp, docs, ai]\nrelated: [refine]\nexports: [loadSnapshot, SnapshotCatalog, createMcpServer, createMcpServerWithRefine, startHttpHost, StdioServerTransport, CatalogError, CodexError]\nenvironments: [node]\n---\n\n<PackageHero package=\"codex\" />\n\n## Why Codex?\n\nCodex exposes current Vielzeug catalog data through MCP without scanning source at request time.\n\n## Installation\n\n```sh\npnpm add @vielzeug/codex\n```\n\n## Quick Start\n\n```sh\nnpx -y @vielzeug/codex\n```\n\n## Features\n\n- `loadSnapshot` validates chunked snapshot metadata.\n- `SnapshotCatalog` loads package content only when requested.\n- `createMcpServer` registers generic package tools; `/refine` adds component tools explicitly.\n- Root and `/refine` entry points publish TypeScript declarations.\n- `startHttpHost` enforces loopback binding plus localhost Host and Origin validation.\n\n## Documentation\n\n- [Usage](./usage.md)\n- [API](./api.md)\n- [Examples](./examples.md)\n- [Migration Guide](./migration.md)\n\n## See Also\n\n- [Refine](../refine/) provides component metadata bundled by Codex.\n",
|
|
5
|
+
"api": "---\ntitle: Codex API\ndescription: Snapshot, catalog, MCP server, and local HTTP host APIs.\n---\n\n[[toc]]\n\n## API Overview\n\n| Symbol | Purpose | Execution mode | Common gotcha |\n| --- | --- | --- | --- |\n| `loadSnapshot` | Read validated snapshot metadata | Sync | Content chunks load lazily |\n| `SnapshotCatalog` | Query package corpus | Sync | Construct from loaded snapshot |\n| `createMcpServer` | MCP adapter factory (generic tools) | Sync | Requires catalog and version |\n| `createMcpServerWithRefine` | MCP adapter factory (all package and Refine tools) | Sync | Import from `@vielzeug/codex/refine` |\n| `startHttpHost` | Loopback Streamable HTTP host | Async | HTTP remains local-only |\n\n## Package Entry Points\n\n| Import | Purpose |\n| --- | --- |\n| `@vielzeug/codex` | `Catalog`, `SnapshotCatalog`, `loadSnapshot`, MCP server, and HTTP host |\n| `@vielzeug/codex/refine` | Refine catalog and MCP server with component tools |\n\n## Snapshot\n\n### `loadSnapshot`\n\n```ts\nloadSnapshot(snapshotRoot?: string, options?: { validateContents?: boolean }): LoadedSnapshot;\n```\n\nLoads catalog/search metadata and Refine metadata. `snapshotRoot` defaults to bundled `data/`. Package content chunks stay lazy unless `validateContents: true`, which validates every package content chunk during loading.\n\n### `SnapshotCatalog`\n\n```ts\nnew SnapshotCatalog(snapshot: LoadedSnapshot)\n```\n\nProvides generic package lookup, docs/source/example/signature access, and deterministic search. Use `SnapshotRefineCatalog` from `/refine` when component methods are needed.\n\n---\n\n## MCP\n\n### `createMcpServer`\n\n```ts\ncreateMcpServer(catalog: Catalog, options: { version: string; debug?: boolean }): Server;\n```\n\nRegisters generic package tools over `Catalog`. Refine tools are opt-in through `/refine`. The root also re-exports `StdioServerTransport` for connecting the server without a second package import.\n\n## Refine tools (`@vielzeug/codex/refine`)\n\n### `createMcpServerWithRefine`\n\n```ts\ncreateMcpServerWithRefine(catalog: RefineCatalog, options: { version: string; debug?: boolean }): Server;\n```\n\nCreates a server with the general Vielzeug package catalog tools and the additional `refine-*` component tools.\n\n### `SnapshotRefineCatalog`\n\n```ts\nnew SnapshotRefineCatalog(snapshot: LoadedSnapshot)\n```\n\nExtends `SnapshotCatalog` with `getComponent()` and `listComponents()`.\n\nComponent declarations and their nested data use readonly TypeScript types.\n\n## HTTP\n\n### `startHttpHost`\n\n```ts\nstartHttpHost(options: HttpHostOptions): Promise<HttpHost>;\n```\n\nStarts Streamable HTTP on `127.0.0.1` by default. Runtime validation accepts only `127.0.0.1` or `::1`; every request must also pass localhost Host and Origin checks. `createServer` must return a fresh, unconnected server with its request handlers registered.\n\n## Types\n\n```ts\ninterface SnapshotPointer {\n readonly directory: string;\n}\n\ninterface SnapshotManifest {\n readonly catalog: 'catalog.json';\n readonly contentDirectory: 'packages';\n readonly refine: 'refine.json' | null;\n readonly schemaVersion: typeof SNAPSHOT_SCHEMA_VERSION;\n readonly search: 'search.json';\n readonly version: string;\n}\n```\n\nDev snapshots use `SnapshotPointer` (via `current.json`); published snapshots are static directories.\n\n```ts\ninterface LoadedSnapshot {\n readonly catalog: CatalogFile;\n readonly contentDirectory: string;\n readonly manifest: SnapshotManifest;\n readonly refineComponents: readonly CemDeclaration[];\n readonly search: readonly SearchRecord[];\n}\n```\n\n```ts\ninterface CatalogFile {\n readonly packages: readonly PackageMeta[];\n readonly version: string;\n}\n\ninterface SearchRecord {\n readonly category: string;\n readonly description: string;\n readonly docs: Readonly<Partial<Record<DocPage, string>>>;\n readonly examples: readonly { readonly id: string; readonly text: string }[];\n readonly exports: string;\n readonly keywords: string;\n readonly name: string;\n readonly related: string;\n readonly slug: string;\n readonly source: string | null;\n}\n\ninterface PackageMeta {\n readonly availableDocPages: readonly DocPage[];\n readonly category: string;\n readonly description: string;\n readonly exampleIds: readonly string[];\n readonly exports: readonly string[];\n readonly hasSource: boolean;\n readonly keywords: readonly string[];\n readonly name: string;\n readonly related: readonly string[];\n readonly slug: string;\n readonly version: string;\n}\n\ninterface Example {\n readonly code: string;\n readonly id: string;\n readonly name: string;\n}\n```\n\n```ts\ninterface Catalog {\n getDocs(slug: string, page: DocPage): string;\n getExample(slug: string, exampleId: string): Example;\n getPackage(slug: string): PackageMeta;\n getSource(slug: string): string;\n getTypeSignature(slug: string, symbol: string): string;\n listExamples(slug: string): readonly Pick<Example, 'id' | 'name'>[];\n listPackages(): readonly PackageMeta[];\n search(query: string): readonly SearchHit[];\n}\n\ninterface RefineCatalog extends Catalog {\n getComponent(tagName: string): CemDeclaration;\n listComponents(): readonly CemDeclaration[];\n}\n\ninterface SearchHit {\n readonly matchedExamples?: readonly string[];\n readonly matchedIn: readonly ('docs' | 'examples' | 'exports' | 'keywords' | 'metadata' | 'related' | 'source')[];\n readonly matchedPages?: readonly DocPage[];\n readonly name: string;\n readonly slug: string;\n}\n```\n\nCatalog exposes semantic reads. It does not expose its cached content chunks.\n\n```ts\ninterface HttpHost {\n readonly disposalSignal: AbortSignal;\n dispose(): Promise<void>;\n readonly disposed: boolean;\n readonly host: string;\n readonly port: number;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\ninterface HttpHostOptions {\n createServer: () => Server;\n host?: '127.0.0.1' | '::1';\n port: number;\n version: string;\n}\n```\n\n```ts\nconst DOC_PAGES = ['index', 'api', 'usage', 'examples'] as const;\ntype DocPage = (typeof DOC_PAGES)[number];\n\nconst SNAPSHOT_SCHEMA_VERSION = 1 as const;\n```\n\nCEM types and `RefineCatalog` are exported from `/refine`.\n\n```ts\ninterface CemDeclaration {\n readonly attributes?: readonly CemAttribute[];\n readonly cssParts?: readonly CemCssPart[];\n readonly cssProperties?: readonly CemCssProperty[];\n readonly description?: string;\n readonly events?: readonly CemEvent[];\n readonly members?: readonly CemMember[];\n readonly name?: string;\n readonly slots?: readonly CemSlot[];\n readonly superclass?: { readonly name: string; readonly package?: string };\n readonly tagName?: string;\n readonly [key: string]: unknown;\n}\n\ninterface CemAttribute {\n readonly default?: string;\n readonly description?: string;\n readonly fieldName?: string;\n readonly name: string;\n readonly type?: { readonly text: string };\n}\n\ninterface CemCssPart {\n readonly description?: string;\n readonly name: string;\n}\n\ninterface CemCssProperty {\n readonly default?: string;\n readonly description?: string;\n readonly name: string;\n}\n\ninterface CemEvent {\n readonly description?: string;\n readonly name: string;\n readonly type?: { readonly text: string };\n}\n\ninterface CemMember {\n readonly description?: string;\n readonly kind?: 'field' | 'method';\n readonly name: string;\n readonly type?: { readonly text: string };\n}\n\ninterface CemSlot {\n readonly description?: string;\n readonly name: string;\n}\n```\n\n## Errors\n\n`CodexError` signals malformed snapshots or host failures. `CatalogError` adds `INVALID_ARG`, `NOT_FOUND`, or `UNAVAILABLE` for expected tool failures.\n",
|
|
6
|
+
"usage": "---\ntitle: 'Codex: Usage Guide'\ndescription: Install, connect, develop, and debug the Vielzeug MCP server.\n---\n\n[[toc]]\n\n## Basic Usage\n\nRun local stdio server:\n\n```sh\nnpx -y @vielzeug/codex\n```\n\nUse shipped `mcp-setup.json` for machine-readable generic configuration. Client-specific configuration must use its documented MCP format.\n\n## HTTP Mode\n\nHTTP uses Streamable HTTP and binds loopback only:\n\n```sh\nnpx -y @vielzeug/codex --port=3100\ncurl http://127.0.0.1:3100/health\n```\n\nResponse includes snapshot version. Runtime bind validation and Host/Origin allowlists restrict access to localhost; no remote host mode exists. Programmatic HTTP hosting takes a `createServer` factory that returns a fresh, unconnected server with its request handlers registered. Dispose the host asynchronously and observe `disposed` or `disposalSignal` when coordinating shutdown.\n\n## Agent Skill\n\nCodex ships a `vielzeug` agent skill: a `SKILL.md` that tells an AI agent working in *your* project to discover packages through the MCP tools instead of guessing, to use the owning `@vielzeug/*` package instead of hand-rolling, and to build UI from Refine components, tokens, and theme whenever `@vielzeug/refine` is installed. Install it into the project:\n\n```sh\nnpx -y @vielzeug/codex skills install\nnpx -y @vielzeug/codex skills install --target=.claude/skills\nnpx -y @vielzeug/codex skills install --force # overwrite an existing copy\n```\n\nWithout `--target`, the first existing directory among `.agents/skills`, `.github/skills`, and `.claude/skills` is used; when none exists, `.agents/skills` is created. The command refuses to overwrite an installed skill unless `--force` is passed. Rerun after upgrading codex to pick up the current package list, which is generated from the published manifests. The skill pairs with the MCP server: its lookups (`get-docs`, `refine-get-component`, `refine-validate-usage`, …) assume codex is connected, and it documents `node_modules` fallbacks for when it is not.\n\n## Local Development\n\nRequires Node 22+ and root setup:\n\n```sh\npnpm setup\ncd packages/codex\npnpm test:unit\npnpm test:integration\npnpm dev\n```\n\n`test:unit` uses fixtures only. `test:integration` regenerates a current snapshot then checks real monorepo inputs.\n\n`pnpm dev` watches documentation and package inputs, atomically publishes snapshots, then restarts server when snapshot changes.\n\n## Debugging\n\n```sh\npnpm dev\nnode src/cli.ts --port=3100 --debug\ncurl http://127.0.0.1:3100/health\n```\n\n`--debug` logs tool durations and expected catalog errors to stderr. Build `@vielzeug/refine` before generating snapshot when component metadata changes.\n\n## Programmatic Usage\n\n```ts\nimport { SnapshotCatalog, StdioServerTransport, createMcpServer, loadSnapshot } from '@vielzeug/codex';\n\nconst snapshot = loadSnapshot();\nconst catalog = new SnapshotCatalog(snapshot);\nawait createMcpServer(catalog, { version: snapshot.manifest.version }).connect(new StdioServerTransport());\n```\n\nTo include Refine component tools, create a server with the `@vielzeug/codex/refine` subpath:\n\n```ts\nimport { StdioServerTransport, loadSnapshot } from '@vielzeug/codex';\nimport { createMcpServerWithRefine, SnapshotRefineCatalog } from '@vielzeug/codex/refine';\n\nconst snapshot = loadSnapshot();\nconst catalog = new SnapshotRefineCatalog(snapshot);\nconst server = createMcpServerWithRefine(catalog, { version: snapshot.manifest.version });\nawait server.connect(new StdioServerTransport());\n```\n\n## Best Practices\n\n- Use `search-packages` for capability discovery before loading broad source.\n- Use `get-type-signature` before loading full source.\n- Published package snapshots are static directories; local dev snapshots are immutable generations selected by `.dev/current.json`.\n- Pass `validateContents: true` to `loadSnapshot()` for artifact verification; normal startup keeps package chunks lazy.\n- Return a fresh configured server from `startHttpHost`'s `createServer` factory.\n- Keep HTTP local. Use stdio for normal client integration.\n- Run `pnpm test:unit` before `pnpm test:integration`.\n",
|
|
7
7
|
"examples": "---\ntitle: 'Codex: Examples'\ndescription: Practical MCP tool-call examples for package discovery, docs lookup, and Refine component queries.\n---\n\n## Examples\n\n- [Listing Packages](./examples/listing-packages.md)\n- [Searching Packages](./examples/searching-packages.md)\n- [Package Metadata](./examples/package-metadata.md)\n- [Reading Docs](./examples/reading-docs.md)\n- [Running REPL Examples](./examples/running-repl-examples.md)\n- [Looking Up Components](./examples/looking-up-components.md)\n- [Inspector](./examples/inspector.md)\n"
|
|
8
8
|
},
|
|
9
9
|
"examples": [],
|
|
@@ -20,10 +20,9 @@
|
|
|
20
20
|
"createMcpServer": "export { createMcpServer } from './server.js';",
|
|
21
21
|
"LoadedSnapshot": "export { type LoadedSnapshot, loadSnapshot } from './snapshot.js';",
|
|
22
22
|
"loadSnapshot": "export { type LoadedSnapshot, loadSnapshot } from './snapshot.js';",
|
|
23
|
-
"DocPage": "export type {\n DocPage,\n Example,\n
|
|
24
|
-
"Example": "export type {\n DocPage,\n Example,\n
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"SnapshotManifest": "export type {\n DocPage,\n Example,\n PackageContent,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';"
|
|
23
|
+
"DocPage": "export type {\n DocPage,\n Example,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';",
|
|
24
|
+
"Example": "export type {\n DocPage,\n Example,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';",
|
|
25
|
+
"PackageMeta": "export type {\n DocPage,\n Example,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';",
|
|
26
|
+
"SnapshotManifest": "export type {\n DocPage,\n Example,\n PackageMeta,\n SnapshotManifest,\n} from './types.js';"
|
|
28
27
|
}
|
|
29
28
|
}
|