pi-mono/tsconfig.json
Mario Zechner fab2c5353e feat(schema): add pi-schema, JSON Schema builders and validation without eval
@earendil-works/pi-schema compiles JSON Schema (drafts 2020-12 and 7) once into
plain closures: no eval or new Function, so it runs under a strict CSP. It
passes 2,222 of the 2,223 core tests of the official JSON-Schema-Test-Suite,
checks Chord-style argument schemas within 1.2x of TypeBox's JIT, and keeps
3,200 compiled schemas in 7.9 MB (TypeBox: 54.7 MB).

- compile(schema, options) returns a Validator: check() is the boolean check
  (a type guard for builder schemas), errors() reports each failure with a
  JSON Pointer path, missing and unknown fields at the field.
- Builders (str, int, obj, opt, union, ...) return plain JSON Schema typed with
  the values it accepts (Static<typeof schema>).
- Formats are an optional entry point (./formats), adapted from TypeBox (MIT).
- Tests run the vendored suite (drafts 2020-12 and 7, with optional and format
  tests); npm run bench compares conformance, speed, setup cost, memory and
  bundle size with TypeBox, @cfworker/json-schema and omptype.
2026-10-31 21:39:34 +00:00

67 lines
4.6 KiB
JSON

{
"extends": "./tsconfig.base.json",
"compilerOptions": {
"noEmit": true,
"module": "NodeNext",
"moduleResolution": "NodeNext",
"paths": {
"@earendil-works/chord": ["./packages/chord/src/index.ts"],
"@earendil-works/chord/context": ["./packages/chord/src/context/index.ts"],
"@earendil-works/chord/delta": ["./packages/chord/src/delta/index.ts"],
"@earendil-works/chord/next": ["./packages/chord/src/next/index.ts"],
"@earendil-works/chord/next/plugins": ["./packages/chord/src/next-node/plugins/index.ts"],
"@earendil-works/chord/next/plugins/runtime": ["./packages/chord/src/next-node/plugins/runtime.ts"],
"@test/contracts/*": ["./packages/chord/test/next-node/fixtures/plugins/contracts/*.ts"],
"@example/contracts/*": ["./packages/chord/test/next/examples/35-plugins/plugins/contracts/*.ts"],
"@example/weather/*": ["./packages/chord/test/next/examples/36-plugin-failures/plugins/weather/*.ts"],
"@example/prices/*": ["./packages/chord/test/next/examples/36-plugin-failures/plugins/prices/*.ts"],
"@example/shapes/*": ["./packages/chord/test/next/examples/37-plugin-imports/plugins/shapes/*.ts"],
"@example/shared/*": ["./packages/chord/test/next/examples/38-watch-and-rollout/plugins/contracts/*.ts"],
"@earendil-works/chord/next/http": ["./packages/chord/src/next-node/http/index.ts"],
"@earendil-works/chord/next/workers": ["./packages/chord/src/next-node/workers/index.ts"],
"@earendil-works/chord/node": ["./packages/chord/src/node.ts"],
"@earendil-works/chord/output": ["./packages/chord/src/output.ts"],
"@earendil-works/chord/telemetry-sqlite": ["./packages/chord/src/telemetry-sqlite/index.ts"],
"@earendil-works/chord/sqlite": ["./packages/chord/src/sqlite/index.ts"],
"@earendil-works/chord/sqlite/node": ["./packages/chord/src/sqlite/node.ts"],
"@earendil-works/chord/sqlite/cloudflare": ["./packages/chord/src/sqlite/cloudflare.ts"],
"@earendil-works/pi-telemetry": ["./packages/telemetry/src/index.ts"],
"@earendil-works/pi-telemetry/testing": ["./packages/telemetry/src/testing/index.ts"],
"@earendil-works/pi-telemetry/render": ["./packages/telemetry/src/render.ts"],
"@earendil-works/pi-codemode": ["./packages/codemode/src/index.ts"],
"@earendil-works/pi-codemode/cloudflare": ["./packages/codemode/src/cloudflare.ts"],
"@earendil-works/pi-codemode/declarations": ["./packages/codemode/src/declarations.ts"],
"@earendil-works/pi-codemode/portable": ["./packages/codemode/src/portable.ts"],
"@earendil-works/pi-codemode/source": ["./packages/codemode/src/source.ts"],
"@earendil-works/pi-codemode/worker": ["./packages/codemode/src/runtime/worker.ts"],
"@earendil-works/pi-schema": ["./packages/schema/src/index.ts"],
"@earendil-works/pi-schema/formats": ["./packages/schema/src/formats/index.ts"],
"@earendil-works/pi-mcp": ["./packages/mcp/src/index.ts"],
"@earendil-works/pi-mcp/oauth": ["./packages/mcp/src/oauth/index.ts"],
"@earendil-works/pi-mcp/testing": ["./packages/mcp/src/testing/index.ts"],
"@earendil-works/pi-ai": ["./packages/ai/src/index.ts"],
"@earendil-works/pi-ai/oauth": ["./packages/ai/src/oauth.ts"],
"@earendil-works/pi-ai/*": ["./packages/ai/src/*.ts", "./packages/ai/src/providers/*.ts"],
"@earendil-works/pi-ai/dist/*": ["./packages/ai/src/*"],
"@earendil-works/pi-durable": ["./packages/durable/src/index.ts"],
"@earendil-works/pi-durable/testing": ["./packages/durable/src/testing/index.ts"],
"@earendil-works/pi-durable/*": [
"./packages/durable/src/*.ts",
"./packages/durable/src/*/index.ts",
"./packages/durable/src/*"
],
"@earendil-works/pi-env": ["./packages/env/src/index.ts"],
"@earendil-works/pi-agent-core": ["./packages/agent/src/index.ts"],
"@earendil-works/pi-coding-agent": ["./packages/coding-agent/src/index.ts"],
"@earendil-works/pi-coding-agent/hooks": ["./packages/coding-agent/src/core/hooks/index.ts"],
"@earendil-works/pi-coding-agent/*": ["./packages/coding-agent/src/*"],
"typebox": ["./node_modules/typebox"],
"@earendil-works/pi-tui": ["./packages/tui/src/index.ts"],
"@earendil-works/pi-tui/*": ["./packages/tui/src/*"],
"@earendil-works/pi-agent-old": ["./packages/agent-old/src/index.ts"],
"@earendil-works/pi-agent-old/*": ["./packages/agent-old/src/*"]
}
},
"include": ["scripts/model-catalog-protocol.ts", "scripts/model-catalog-protocol.test.ts", "packages/*/src/**/*", "packages/*/test/**/*", "packages/ai/catalog/**/*", "packages/durable/test-workers/**/*", "packages/coding-agent/examples/**/*", "packages/agent/examples/**/*"],
"exclude": ["**/dist/**", "packages/coding-agent/examples/extensions/gondolin/**"]
}