@elpapi42/pi-fleet 0.1.0-beta.10 → 0.1.0-beta.14
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/CHANGELOG.md +34 -1
- package/README.md +99 -167
- package/dist/cli-meta.json +313 -315
- package/dist/cli.mjs +2504 -1812
- package/dist/cli.mjs.map +4 -4
- package/dist/client/agent-target.d.ts +33 -0
- package/dist/client/contracts.d.ts +81 -0
- package/dist/client/fleet-client.d.ts +118 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/sdk-connector.d.ts +7 -0
- package/dist/client/sdk-facade.d.ts +84 -0
- package/dist/client/sdk-transport.d.ts +24 -0
- package/dist/client/shared-client.d.ts +18 -0
- package/dist/client/socket-fleet-client.d.ts +21 -0
- package/dist/client-meta.json +5736 -0
- package/dist/client.mjs +4434 -0
- package/dist/client.mjs.map +7 -0
- package/dist/installer-meta.json +7 -7
- package/dist/installer.mjs +47 -13
- package/dist/installer.mjs.map +2 -2
- package/dist/journal-sqlite-worker-meta.json +149 -0
- package/dist/journal-sqlite-worker.mjs +1110 -0
- package/dist/journal-sqlite-worker.mjs.map +7 -0
- package/dist/pi/external-installation.d.ts +23 -0
- package/dist/platform/client/start-runtime.d.ts +25 -0
- package/dist/platform/install/runtime-release.d.ts +8 -0
- package/dist/platform/install/tree-integrity.d.ts +7 -0
- package/dist/platform/shared/paths.d.ts +8 -0
- package/dist/platform/shared/runtime-ownership.d.ts +14 -0
- package/dist/protocol/jsonl.d.ts +3 -0
- package/dist/protocol/pi-identity.d.ts +16 -0
- package/dist/protocol/semantic-segmentation.d.ts +22 -0
- package/dist/protocol/version.d.ts +2 -0
- package/dist/runtime/semantic-events.d.ts +43 -0
- package/dist/runtime-manifest.json +156 -31
- package/dist/runtime-meta.json +378 -53
- package/dist/runtime.mjs +3173 -581
- package/dist/runtime.mjs.map +4 -4
- package/dist/shared/result.d.ts +9 -0
- package/package.json +14 -1
- package/dist/sqlite-worker-meta.json +0 -84
- package/dist/sqlite-worker.mjs +0 -359
- package/dist/sqlite-worker.mjs.map +0 -7
package/dist/runtime.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/entry/runtime.ts", "../node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs", "../node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs", "../node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs", "../node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs", "../node_modules/@sinclair/typebox/build/esm/system/policy.mjs", "../node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs", "../node_modules/@sinclair/typebox/build/esm/type/create/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/error/error.mjs", "../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs", "../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs", "../node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs", "../node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs", "../node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs", "../node_modules/@sinclair/typebox/build/esm/type/any/any.mjs", "../node_modules/@sinclair/typebox/build/esm/type/array/array.mjs", "../node_modules/@sinclair/typebox/build/esm/type/argument/argument.mjs", "../node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs", "../node_modules/@sinclair/typebox/build/esm/type/computed/computed.mjs", "../node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs", "../node_modules/@sinclair/typebox/build/esm/type/never/never.mjs", "../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs", "../node_modules/@sinclair/typebox/build/esm/type/function/function.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs", "../node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs", "../node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs", "../node_modules/@sinclair/typebox/build/esm/type/number/number.mjs", "../node_modules/@sinclair/typebox/build/esm/type/string/string.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs", "../node_modules/@sinclair/typebox/build/esm/type/object/object.mjs", "../node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs", "../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs", "../node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs", "../node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs", "../node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs", "../node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs", "../node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs", "../node_modules/@sinclair/typebox/build/esm/type/date/date.mjs", "../node_modules/@sinclair/typebox/build/esm/type/null/null.mjs", "../node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs", "../node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs", "../node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs", "../node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs", "../node_modules/@sinclair/typebox/build/esm/type/const/const.mjs", "../node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs", "../node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs", "../node_modules/@sinclair/typebox/build/esm/type/record/record.mjs", "../node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs", "../node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs", "../node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/required/required.mjs", "../node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs", "../node_modules/@sinclair/typebox/build/esm/type/module/module.mjs", "../node_modules/@sinclair/typebox/build/esm/type/not/not.mjs", "../node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs", "../node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs", "../node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs", "../node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs", "../node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs", "../node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs", "../node_modules/@sinclair/typebox/build/esm/type/void/void.mjs", "../node_modules/@sinclair/typebox/build/esm/type/type/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/type/index.mjs", "../src/protocol/pi-identity.ts", "../src/pi/external-installation.ts", "../src/pi/process.ts", "../src/platform/runtime/process-tree.ts", "../src/pi/adapter.ts", "../src/pi/external-target.ts", "../src/platform/shared/paths.ts", "../src/runtime/control-server.ts", "../node_modules/@sinclair/typebox/build/esm/errors/function.mjs", "../node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs", "../node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs", "../node_modules/@sinclair/typebox/build/esm/value/check/check.mjs", "../node_modules/@sinclair/typebox/build/esm/errors/errors.mjs", "../node_modules/@sinclair/typebox/build/esm/value/assert/assert.mjs", "../node_modules/@sinclair/typebox/build/esm/value/clone/clone.mjs", "../node_modules/@sinclair/typebox/build/esm/value/create/create.mjs", "../node_modules/@sinclair/typebox/build/esm/value/cast/cast.mjs", "../node_modules/@sinclair/typebox/build/esm/value/clean/clean.mjs", "../node_modules/@sinclair/typebox/build/esm/value/convert/convert.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs", "../node_modules/@sinclair/typebox/build/esm/value/decode/decode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/default/default.mjs", "../node_modules/@sinclair/typebox/build/esm/value/pointer/pointer.mjs", "../node_modules/@sinclair/typebox/build/esm/value/equal/equal.mjs", "../node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs", "../node_modules/@sinclair/typebox/build/esm/value/encode/encode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/mutate/mutate.mjs", "../node_modules/@sinclair/typebox/build/esm/value/parse/parse.mjs", "../node_modules/@sinclair/typebox/build/esm/value/value/value.mjs", "../src/protocol/version.ts", "../src/protocol/envelope.ts", "../src/protocol/validation.ts", "../src/protocol/jsonl.ts", "../src/shared/runtime-limits.ts", "../src/shared/result.ts", "../src/runtime/rpc-watch-hub.ts", "../src/runtime/fleet-service.ts", "../src/pi/session-selector.ts", "../src/pi/launch-profile.ts", "../src/runtime/agent-coordinator.ts", "../src/store/worker-store.ts"],
|
|
4
|
-
"sourcesContent": ["import { pathToFileURL } from \"node:url\";\n\nimport { createExternalPiTarget } from \"../pi/external-target.js\";\nimport { resolveFleetPaths } from \"../platform/shared/paths.js\";\nimport { startControlServer } from \"../runtime/control-server.js\";\nimport { FleetService } from \"../runtime/fleet-service.js\";\nimport { runtimeLimitsFromEnv } from \"../shared/runtime-limits.js\";\nimport { WorkerFleetStore } from \"../store/worker-store.js\";\n\nexport async function runRuntime(): Promise<void> {\n const paths = resolveFleetPaths();\n const limits = runtimeLimitsFromEnv();\n let resolveService: (service: FleetService) => void;\n let rejectService: (error: unknown) => void;\n const serviceReady = new Promise<FleetService>((resolveReady, rejectReady) => {\n resolveService = resolveReady;\n rejectService = rejectReady;\n });\n const server = await startControlServer({\n socketPath: paths.socketPath,\n service: serviceReady,\n limits,\n });\n\n let store: WorkerFleetStore;\n let service: FleetService;\n try {\n store = new WorkerFleetStore(paths.databasePath);\n const piTarget = await createExternalPiTarget(process.env, limits.maxPiFrameBytes);\n service = new FleetService(store, {\n launcher: piTarget.launcher,\n piIdentity: piTarget.identity,\n limits,\n });\n await service.reconcile();\n resolveService!(service);\n } catch (error: unknown) {\n rejectService!(error);\n await server.close();\n throw error;\n }\n\n await new Promise<void>((resolveShutdown) => {\n let closing = false;\n const shutdown = () => {\n if (closing) return;\n closing = true;\n const serviceClosing = service.close();\n const serverClosing = server.close();\n void Promise.allSettled([serviceClosing, serverClosing])\n .then(() => store.close(true))\n .finally(resolveShutdown);\n };\n process.once(\"SIGTERM\", shutdown);\n process.once(\"SIGINT\", shutdown);\n });\n}\n\nif (process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href) {\n await runRuntime();\n}\n", "// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n", "import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options) {\n return options === undefined ? Clone(schema) : Clone({ ...options, ...schema });\n}\n", "// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && globalThis.Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && globalThis.Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof globalThis.Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && globalThis.Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map<K, T> */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set<T> */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return globalThis.Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n", "import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Instancing\n // ------------------------------------------------------------------\n /**\n * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript\n * references for embedded types, which may cause side effects if type properties are explicitly updated\n * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation,\n * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making\n * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the\n * fastest way to instantiate types. The default setting is `default`.\n */\n TypeSystemPolicy.InstanceMode = 'default';\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Checking\n // ------------------------------------------------------------------\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Checks this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Checks this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Checks this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Checks this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Checks this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ImmutableArray(value) {\n return globalThis.Object.freeze(value).map((value) => Immutable(value));\n}\nfunction ImmutableDate(value) {\n return value;\n}\nfunction ImmutableUint8Array(value) {\n return value;\n}\nfunction ImmutableRegExp(value) {\n return value;\n}\nfunction ImmutableObject(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Immutable(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Immutable(value[key]);\n }\n return globalThis.Object.freeze(result);\n}\n/** Specialized deep immutable value. Applies freeze recursively to the given value */\n// prettier-ignore\nexport function Immutable(value) {\n return (ValueGuard.IsArray(value) ? ImmutableArray(value) :\n ValueGuard.IsDate(value) ? ImmutableDate(value) :\n ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :\n ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :\n ValueGuard.IsObject(value) ? ImmutableObject(value) :\n value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Immutable } from './immutable.mjs';\nimport { Clone } from '../clone/value.mjs';\n/** Creates TypeBox schematics using the configured InstanceMode */\nexport function CreateType(schema, options) {\n const result = options !== undefined ? { ...options, ...schema } : schema;\n switch (TypeSystemPolicy.InstanceMode) {\n case 'freeze':\n return Immutable(result);\n case 'clone':\n return Clone(result);\n default:\n return result;\n }\n}\n", "/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n", "/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n return IsKindOf(value, 'Argument');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n return IsKindOf(value, 'Computed');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsImport(value) {\n return IsKindOf(value, 'Import');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Argument',\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Computed',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Argument') &&\n ValueGuard.IsNumber(value.index));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Computed') &&\n ValueGuard.IsString(value.target) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every((schema) => IsSchema(schema)));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TImport */\nexport function IsImport(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Import') &&\n ValueGuard.HasPropertyKey(value, '$defs') &&\n ValueGuard.IsObject(value.$defs) &&\n IsProperties(value.$defs) &&\n ValueGuard.HasPropertyKey(value, '$ref') &&\n ValueGuard.IsString(value.$ref) &&\n value.$ref in value.$defs // required\n );\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion<Literal<string | number>[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternNever = '(?!.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\nexport const PatternNeverExact = `^${PatternNever}$`;\n", "/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n", "/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n", "/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options) {\n return CreateType({ [Kind]: 'Any' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(items, options) {\n return CreateType({ [Kind]: 'Array', type: 'array', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Argument Type. */\nexport function Argument(index) {\n return CreateType({ [Kind]: 'Argument', index });\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options) {\n return CreateType({ [Kind]: 'AsyncIterator', type: 'AsyncIterator', items }, options);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/symbols.mjs';\n/** `[Internal]` Creates a deferred computed type. This type is used exclusively in modules to defer resolution of computable types that contain interior references */\nexport function Computed(target, parameters, options) {\n return CreateType({ [Kind]: 'Computed', target, parameters }, options);\n}\n", "function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\n/** Discards property keys from the given value. This function returns a shallow Clone. */\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options) {\n return CreateType({ [Kind]: 'Never', not: {} }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return CreateType({\n [Kind]: 'MappedResult',\n properties\n });\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return CreateType({ [Kind]: 'Constructor', type: 'Constructor', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return CreateType({ [Kind]: 'Function', type: 'Function', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return CreateType({ [Kind]: 'Union', anyOf: T }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(types) {\n return types.some(type => IsOptional(type));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(types, options) {\n const isOptional = IsUnionOptional(types);\n return (isOptional\n ? Optional(UnionCreate(RemoveOptionalFromRest(types), options))\n : UnionCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options) {\n // prettier-ignore\n return (T.length === 1 ? CreateType(T[0], options) :\n T.length === 0 ? Never(options) :\n ResolveUnion(T, options));\n}\n", "import { Never } from '../never/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(types, options) {\n // prettier-ignore\n return (types.length === 0 ? Never(options) :\n types.length === 1 ? CreateType(types[0], options) :\n UnionCreate(types, options));\n}\n", "import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n", "import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n", "import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options) {\n return CreateType({\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options) {\n return CreateType({ [Kind]: 'Boolean', type: 'boolean' }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options) {\n return CreateType({ [Kind]: 'BigInt', type: 'bigint' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options) {\n return CreateType({ [Kind]: 'Number', type: 'number' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options) {\n return CreateType({ [Kind]: 'String', type: 'string' }, options);\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n", "import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n", "import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return CreateType({ [Kind]: 'TemplateLiteral', type: 'string', pattern }, options);\n}\n", "import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(templateLiteral) {\n const keys = TemplateLiteralGenerate(templateLiteral);\n return keys.map(key => key.toString());\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const result = [];\n for (const type of types)\n result.push(...IndexPropertyKeys(type));\n return result;\n}\n// prettier-ignore\nfunction FromLiteral(literalValue) {\n return ([literalValue.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(type) {\n return [...new Set((IsTemplateLiteral(type) ? FromTemplateLiteral(type) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsLiteral(type) ? FromLiteral(type.const) :\n IsNumber(type) ? ['[number]'] :\n IsInteger(type) ? ['[number]'] :\n []))];\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(type, properties, options) {\n const result = {};\n for (const K2 of Object.getOwnPropertyNames(properties)) {\n result[K2] = Index(type, IndexPropertyKeys(properties[K2]), options);\n }\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(type, mappedResult, options) {\n return FromProperties(type, mappedResult.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(type, mappedResult, options) {\n const properties = FromMappedResult(type, mappedResult, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion, IsRef } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types, key) {\n return types.map(type => IndexFromPropertyKey(type, key));\n}\n// prettier-ignore\nfunction FromIntersectRest(types) {\n return types.filter(type => !IsNever(type));\n}\n// prettier-ignore\nfunction FromIntersect(types, key) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromUnionRest(types) {\n return (types.some(L => IsNever(L))\n ? []\n : types);\n}\n// prettier-ignore\nfunction FromUnion(types, key) {\n return (UnionEvaluated(FromUnionRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromTuple(types, key) {\n return (key in types ? types[key] :\n key === '[number]' ? UnionEvaluated(types) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(type, key) {\n return (key === '[number]'\n ? type\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(properties, propertyKey) {\n return (propertyKey in properties ? properties[propertyKey] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(type, propertyKey) {\n return (IsIntersect(type) ? FromIntersect(type.allOf, propertyKey) :\n IsUnion(type) ? FromUnion(type.anyOf, propertyKey) :\n IsTuple(type) ? FromTuple(type.items ?? [], propertyKey) :\n IsArray(type) ? FromArray(type.items, propertyKey) :\n IsObject(type) ? FromProperty(type.properties, propertyKey) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(type, propertyKeys) {\n return propertyKeys.map(propertyKey => IndexFromPropertyKey(type, propertyKey));\n}\n// prettier-ignore\nfunction FromSchema(type, propertyKeys) {\n return (UnionEvaluated(IndexFromPropertyKeys(type, propertyKeys)));\n}\n// prettier-ignore\nexport function IndexFromComputed(type, key) {\n return Computed('Index', [type, key]);\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(type, key, options) {\n // computed-type\n if (IsRef(type) || IsRef(key)) {\n const error = `Index types using Ref parameters require both Type and Key to be of TSchema`;\n if (!IsSchema(type) || !IsSchema(key))\n throw new TypeBoxError(error);\n return Computed('Index', [type, key]);\n }\n // mapped-types\n if (IsMappedResult(key))\n return IndexFromMappedResult(type, key, options);\n if (IsMappedKey(key))\n return IndexFromMappedKey(type, key, options);\n // prettier-ignore\n return CreateType(IsSchema(key)\n ? FromSchema(type, IndexPropertyKeys(key))\n : FromSchema(type, key), options);\n}\n", "import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(type, key, options) {\n return { [key]: Index(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, left) => {\n return { ...result, ...MappedIndexPropertyKey(type, left, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(type, mappedKey, options) {\n return MappedIndexPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(type, mappedKey, options) {\n const properties = MappedIndexProperties(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options) {\n return CreateType({ [Kind]: 'Iterator', type: 'Iterator', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n/** Creates a RequiredArray derived from the given TProperties value. */\nfunction RequiredArray(properties) {\n return globalThis.Object.keys(properties).filter((key) => !IsOptional(properties[key]));\n}\n/** `[Json]` Creates an Object type */\nfunction _Object_(properties, options) {\n const required = RequiredArray(properties);\n const schema = required.length > 0 ? { [Kind]: 'Object', type: 'object', required, properties } : { [Kind]: 'Object', type: 'object', properties };\n return CreateType(schema, options);\n}\n// ------------------------------------------------------------------\n// TypeScript 7: CommonJS TS2441\n//\n// TypeScript generates a CommonJS shim that patches local variables\n// via an unqualified reference to Object (e.g. the __esModule shim's\n// Object.defineProperty call). Other compiler tools have been\n// observed patching in the same way, but TypeScript 7 has correctly\n// begun flagging variables named Object in CommonJS, since they\n// conflict with the shim and can cause \"used before definition\"\n// errors. This is CommonJS-specific; no such shim exists for ESM.\n//\n// TypeBox works around this using a `var` declaration, which is\n// known to avoid use-before-definition errors. TypeBox 1.x employs\n// a similar strategy.\n// ------------------------------------------------------------------\n/** `[Json]` Creates an Object type */\n// @ts-ignore - error TS2441: Duplicate identifier 'Object'. Compiler reserves name 'Object' in top level scope of a module.\nexport var Object = _Object_;\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options) {\n return CreateType({ [Kind]: 'Promise', type: 'Promise', item }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return CreateType(Discard(schema, [ReadonlyKind]));\n}\nfunction AddReadonly(schema) {\n return CreateType({ ...schema, [ReadonlyKind]: 'Readonly' });\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(types, options) {\n // prettier-ignore\n return CreateType(types.length > 0 ?\n { [Kind]: 'Tuple', type: 'array', items: types, additionalItems: false, minItems: types.length, maxItems: types.length } :\n { [Kind]: 'Tuple', type: 'array', minItems: types.length, maxItems: types.length }, options);\n}\n", "import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n // required to retain user defined options for mapped type\n const options = { ...T };\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items), options) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items), options) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf), options) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf), options) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? []), options) :\n IsObject(T) ? _Object_(FromProperties(K, T.properties), options) :\n IsArray(T) ? Array(FromSchemaType(K, T.items), options) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item), options) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return _Object_(R, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return CreateType(Discard(schema, [OptionalKind]));\n}\nfunction AddOptional(schema) {\n return CreateType({ ...schema, [OptionalKind]: 'Optional' });\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options = {}) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: options.unevaluatedProperties }\n : {};\n return CreateType((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: T }\n : { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: T }), options);\n}\n", "import { OptionalKind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(types) {\n return types.every(left => IsOptional(left));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(type) {\n return (Discard(type, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction ResolveIntersect(types, options) {\n return (IsIntersectOptional(types)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(types), options))\n : IntersectCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(types, options = {}) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(types, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(types, options) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(types, options);\n}\n", "import { TypeBoxError } from '../error/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Ref type. The referenced type must contain a $id */\nexport function Ref(...args) {\n const [$ref, options] = typeof args[0] === 'string' ? [args[0], args[1]] : [args[0].$id, args[1]];\n if (typeof $ref !== 'string')\n throw new TypeBoxError('Ref: $ref must be a string');\n return CreateType({ [Kind]: 'Ref', $ref }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Awaited', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Awaited', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n return Intersect(FromRest(types));\n}\n// prettier-ignore\nfunction FromUnion(types) {\n return Union(FromRest(types));\n}\n// prettier-ignore\nfunction FromPromise(type) {\n return Awaited(type);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => Awaited(type));\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(type, options) {\n return CreateType(IsComputed(type) ? FromComputed(type.target, type.parameters) : IsIntersect(type) ? FromIntersect(type.allOf) : IsUnion(type) ? FromUnion(type.anyOf) : IsPromise(type) ? FromPromise(type.item) : IsRef(type) ? FromRef(type.$ref) : type, options);\n}\n", "import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types) {\n const result = [];\n for (const L of types)\n result.push(KeyOfPropertyKeys(L));\n return result;\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetUnionMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetIntersectMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromTuple(types) {\n return types.map((_, indexer) => indexer.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(type) {\n return (IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsTuple(type) ? FromTuple(type.items ?? []) :\n IsArray(type) ? FromArray(type.items) :\n IsObject(type) ? FromProperties(type.properties) :\n IsRecord(type) ? FromPatternProperties(type.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('KeyOf', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('KeyOf', [Ref($ref)]);\n}\n// prettier-ignore\nfunction KeyOfFromType(type, options) {\n const propertyKeys = KeyOfPropertyKeys(type);\n const propertyKeyTypes = KeyOfPropertyKeysToRest(propertyKeys);\n const result = UnionEvaluated(propertyKeyTypes);\n return CreateType(result, options);\n}\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(propertyKeys) {\n return propertyKeys.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(type, options) {\n return (IsComputed(type) ? FromComputed(type.target, type.parameters) : IsRef(type) ? FromRef(type.$ref) : IsMappedResult(type) ? KeyOfFromMappedResult(type, options) : KeyOfFromType(type, options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = KeyOf(properties[K2], Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, options) {\n return FromProperties(mappedResult.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(mappedResult, options) {\n const properties = FromMappedResult(mappedResult, options);\n return MappedResult(properties);\n}\n", "import { IndexFromPropertyKeys } from '../indexed/indexed.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nexport function KeyOfPropertyEntries(schema) {\n const keys = KeyOfPropertyKeys(schema);\n const schemas = IndexFromPropertyKeys(schema, keys);\n return keys.map((_, index) => [keys[index], schemas[index]]);\n}\n", "import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = _Object_(P, options);\n return R;\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options) {\n return CreateType({ [Kind]: 'Date', type: 'Date' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options) {\n return CreateType({ [Kind]: 'Null', type: 'null' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return CreateType({ [Kind]: 'Symbol', type: 'symbol' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options) {\n return CreateType({ [Kind]: 'Undefined', type: 'undefined' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options) {\n return CreateType({ [Kind]: 'Uint8Array', type: 'Uint8Array' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options) {\n return CreateType({ [Kind]: 'Unknown' }, options);\n}\n", "import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(_Object_(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n _Object_({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options) {\n return CreateType(FromValue(T, true), options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options) {\n return (KindGuard.IsConstructor(schema) ? Tuple(schema.parameters, options) : Never(options));\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n", "import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CreateType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CreateType(ExtendsResolve(L, R, T, F), options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n", "import { Kind } from '../symbols/index.mjs';\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nexport function ExtendsUndefinedCheck(schema) {\n return (schema[Kind] === 'Intersect' ? Intersect(schema) :\n schema[Kind] === 'Union' ? Union(schema) :\n schema[Kind] === 'Not' ? Not(schema) :\n schema[Kind] === 'Undefined' ? true :\n false);\n}\n", "import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options) {\n return (KindGuard.IsConstructor(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact, PatternNeverExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsAny, IsBoolean, IsNever, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return CreateType({ [Kind]: 'Record', type: 'object', patternProperties: { [pattern]: T } }, options);\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const result = {};\n for (const K2 of K)\n result[K2] = T;\n return _Object_(result, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(key, type, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(key)), type, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(key, type, options) {\n return RecordCreateFromKeys([key.toString()], type, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(key, type, options) {\n return RecordCreateFromPattern(key.source, type, options);\n}\n// prettier-ignore\nfunction FromStringKey(key, type, options) {\n const pattern = IsUndefined(key.pattern) ? PatternStringExact : key.pattern;\n return RecordCreateFromPattern(pattern, type, options);\n}\n// prettier-ignore\nfunction FromAnyKey(_, type, options) {\n return RecordCreateFromPattern(PatternStringExact, type, options);\n}\n// prettier-ignore\nfunction FromNeverKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNeverExact, type, options);\n}\n// prettier-ignore\nfunction FromBooleanKey(_key, type, options) {\n return _Object_({ true: type, false: type }, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(key, type, options = {}) {\n // prettier-ignore\n return (IsUnion(key) ? FromUnionKey(key.anyOf, type, options) :\n IsTemplateLiteral(key) ? FromTemplateLiteralKey(key, type, options) :\n IsLiteral(key) ? FromLiteralKey(key.const, type, options) :\n IsBoolean(key) ? FromBooleanKey(key, type, options) :\n IsInteger(key) ? FromIntegerKey(key, type, options) :\n IsNumber(key) ? FromNumberKey(key, type, options) :\n IsRegExp(key) ? FromRegExpKey(key, type, options) :\n IsString(key) ? FromStringKey(key, type, options) :\n IsAny(key) ? FromAnyKey(key, type, options) :\n IsNever(key) ? FromNeverKey(key, type, options) :\n Never(options));\n}\n// ------------------------------------------------------------------\n// Record Utilities\n// ------------------------------------------------------------------\n/** Gets the Records Pattern */\nexport function RecordPattern(record) {\n return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0];\n}\n/** Gets the Records Key Type */\n// prettier-ignore\nexport function RecordKey(type) {\n const pattern = RecordPattern(type);\n return (pattern === PatternStringExact ? String() :\n pattern === PatternNumberExact ? Number() :\n String({ pattern }));\n}\n/** Gets a Record Value Type */\n// prettier-ignore\nexport function RecordValue(type) {\n return type.patternProperties[RecordPattern(type)];\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Record, RecordKey, RecordValue } from '../record/index.mjs';\nimport * as ValueGuard from '../guard/value.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromConstructor(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromFunction(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromIntersect(args, type) {\n type.allOf = FromTypes(args, type.allOf);\n return type;\n}\n// prettier-ignore\nfunction FromUnion(args, type) {\n type.anyOf = FromTypes(args, type.anyOf);\n return type;\n}\n// prettier-ignore\nfunction FromTuple(args, type) {\n if (ValueGuard.IsUndefined(type.items))\n return type;\n type.items = FromTypes(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromArray(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromAsyncIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromPromise(args, type) {\n type.item = FromType(args, type.item);\n return type;\n}\n// prettier-ignore\nfunction FromObject(args, type) {\n const mappedProperties = FromProperties(args, type.properties);\n return { ...type, ..._Object_(mappedProperties) }; // retain options\n}\n// prettier-ignore\nfunction FromRecord(args, type) {\n const mappedKey = FromType(args, RecordKey(type));\n const mappedValue = FromType(args, RecordValue(type));\n const result = Record(mappedKey, mappedValue);\n return { ...type, ...result }; // retain options\n}\n// prettier-ignore\nfunction FromArgument(args, argument) {\n return argument.index in args ? args[argument.index] : Unknown();\n}\n// prettier-ignore\nfunction FromProperty(args, type) {\n const isReadonly = KindGuard.IsReadonly(type);\n const isOptional = KindGuard.IsOptional(type);\n const mapped = FromType(args, type);\n return (isReadonly && isOptional ? ReadonlyOptional(mapped) :\n isReadonly && !isOptional ? Readonly(mapped) :\n !isReadonly && isOptional ? Optional(mapped) :\n mapped);\n}\n// prettier-ignore\nfunction FromProperties(args, properties) {\n return globalThis.Object.getOwnPropertyNames(properties).reduce((result, key) => {\n return { ...result, [key]: FromProperty(args, properties[key]) };\n }, {});\n}\n// prettier-ignore\nexport function FromTypes(args, types) {\n return types.map(type => FromType(args, type));\n}\n// prettier-ignore\nfunction FromType(args, type) {\n return (KindGuard.IsConstructor(type) ? FromConstructor(args, type) :\n KindGuard.IsFunction(type) ? FromFunction(args, type) :\n KindGuard.IsIntersect(type) ? FromIntersect(args, type) :\n KindGuard.IsUnion(type) ? FromUnion(args, type) :\n KindGuard.IsTuple(type) ? FromTuple(args, type) :\n KindGuard.IsArray(type) ? FromArray(args, type) :\n KindGuard.IsAsyncIterator(type) ? FromAsyncIterator(args, type) :\n KindGuard.IsIterator(type) ? FromIterator(args, type) :\n KindGuard.IsPromise(type) ? FromPromise(args, type) :\n KindGuard.IsObject(type) ? FromObject(args, type) :\n KindGuard.IsRecord(type) ? FromRecord(args, type) :\n KindGuard.IsArgument(type) ? FromArgument(args, type) :\n type);\n}\n/** `[JavaScript]` Instantiates a type with the given parameters */\n// prettier-ignore\nexport function Instantiate(type, args) {\n return FromType(args, CloneType(type));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options) {\n return CreateType({ [Kind]: 'Integer', type: 'integer' }, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, Clone(options))\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n const result = K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n return result;\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, options) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n // Default Type\n CreateType(schema, options));\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Omit(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\n// ------------------------------------------------------------------\n// Mapped\n// ------------------------------------------------------------------\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(properties, key) {\n const { [key]: _, ...R } = properties;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n return propertyKeys.reduce((T, K2) => FromProperty(T, K2), properties);\n}\n// prettier-ignore\nfunction FromObject(type, propertyKeys, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, propertyKeys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction OmitResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Omit(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? OmitFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? OmitFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n CreateType({ ...OmitResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return { [key]: Omit(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(type, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Pick(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n const result = {};\n for (const K2 of propertyKeys)\n if (K2 in properties)\n result[K2] = properties[K2];\n return result;\n}\n// prettier-ignore\nfunction FromObject(Type, keys, properties) {\n const options = Discard(Type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, keys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction PickResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Pick(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? PickFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? PickFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n CreateType({ ...PickResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return {\n [key]: Pick(type, [key], Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, leftKey) => {\n return { ...result, ...FromPropertyKey(type, leftKey, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Partial', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Partial', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const partialProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n partialProperties[K] = Optional(properties[K]);\n return partialProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => PartialResolve(type));\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return PartialFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...PartialResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Required', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Required', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const requiredProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n requiredProperties[K] = Discard(properties[K], [OptionalKind]);\n return requiredProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => RequiredResolve(type));\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return RequiredFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...RequiredResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Array } from '../array/index.mjs';\nimport { Awaited } from '../awaited/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Index } from '../indexed/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { KeyOf } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Omit } from '../omit/index.mjs';\nimport { Pick } from '../pick/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Partial } from '../partial/index.mjs';\nimport { RecordValue, RecordPattern } from '../record/index.mjs';\nimport { Required } from '../required/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// Symbols\n// ------------------------------------------------------------------\nimport { TransformKind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction DereferenceParameters(moduleProperties, types) {\n return types.map((type) => {\n return KindGuard.IsRef(type)\n ? Dereference(moduleProperties, type.$ref)\n : FromType(moduleProperties, type);\n });\n}\n// prettier-ignore\nfunction Dereference(moduleProperties, ref) {\n return (ref in moduleProperties\n ? KindGuard.IsRef(moduleProperties[ref])\n ? Dereference(moduleProperties, moduleProperties[ref].$ref)\n : FromType(moduleProperties, moduleProperties[ref])\n : Never());\n}\n// prettier-ignore\nfunction FromAwaited(parameters) {\n return Awaited(parameters[0]);\n}\n// prettier-ignore\nfunction FromIndex(parameters) {\n return Index(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromKeyOf(parameters) {\n return KeyOf(parameters[0]);\n}\n// prettier-ignore\nfunction FromPartial(parameters) {\n return Partial(parameters[0]);\n}\n// prettier-ignore\nfunction FromOmit(parameters) {\n return Omit(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromPick(parameters) {\n return Pick(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromRequired(parameters) {\n return Required(parameters[0]);\n}\n// prettier-ignore\nfunction FromComputed(moduleProperties, target, parameters) {\n const dereferenced = DereferenceParameters(moduleProperties, parameters);\n return (target === 'Awaited' ? FromAwaited(dereferenced) :\n target === 'Index' ? FromIndex(dereferenced) :\n target === 'KeyOf' ? FromKeyOf(dereferenced) :\n target === 'Partial' ? FromPartial(dereferenced) :\n target === 'Omit' ? FromOmit(dereferenced) :\n target === 'Pick' ? FromPick(dereferenced) :\n target === 'Required' ? FromRequired(dereferenced) :\n Never());\n}\nfunction FromArray(moduleProperties, type) {\n return Array(FromType(moduleProperties, type));\n}\nfunction FromAsyncIterator(moduleProperties, type) {\n return AsyncIterator(FromType(moduleProperties, type));\n}\n// prettier-ignore\nfunction FromConstructor(moduleProperties, parameters, instanceType) {\n return Constructor(FromTypes(moduleProperties, parameters), FromType(moduleProperties, instanceType));\n}\n// prettier-ignore\nfunction FromFunction(moduleProperties, parameters, returnType) {\n return FunctionType(FromTypes(moduleProperties, parameters), FromType(moduleProperties, returnType));\n}\nfunction FromIntersect(moduleProperties, types) {\n return Intersect(FromTypes(moduleProperties, types));\n}\nfunction FromIterator(moduleProperties, type) {\n return Iterator(FromType(moduleProperties, type));\n}\nfunction FromObject(moduleProperties, properties) {\n return _Object_(globalThis.Object.keys(properties).reduce((result, key) => {\n return { ...result, [key]: FromType(moduleProperties, properties[key]) };\n }, {}));\n}\n// prettier-ignore\nfunction FromRecord(moduleProperties, type) {\n const [value, pattern] = [FromType(moduleProperties, RecordValue(type)), RecordPattern(type)];\n const result = CloneType(type);\n result.patternProperties[pattern] = value;\n return result;\n}\n// prettier-ignore\nfunction FromTransform(moduleProperties, transform) {\n return (KindGuard.IsRef(transform))\n ? { ...Dereference(moduleProperties, transform.$ref), [TransformKind]: transform[TransformKind] }\n : transform;\n}\nfunction FromTuple(moduleProperties, types) {\n return Tuple(FromTypes(moduleProperties, types));\n}\nfunction FromUnion(moduleProperties, types) {\n return Union(FromTypes(moduleProperties, types));\n}\nfunction FromTypes(moduleProperties, types) {\n return types.map((type) => FromType(moduleProperties, type));\n}\n// prettier-ignore\nexport function FromType(moduleProperties, type) {\n return (\n // Modifiers\n KindGuard.IsOptional(type) ? CreateType(FromType(moduleProperties, Discard(type, [OptionalKind])), type) :\n KindGuard.IsReadonly(type) ? CreateType(FromType(moduleProperties, Discard(type, [ReadonlyKind])), type) :\n // Transform\n KindGuard.IsTransform(type) ? CreateType(FromTransform(moduleProperties, type), type) :\n // Types\n KindGuard.IsArray(type) ? CreateType(FromArray(moduleProperties, type.items), type) :\n KindGuard.IsAsyncIterator(type) ? CreateType(FromAsyncIterator(moduleProperties, type.items), type) :\n KindGuard.IsComputed(type) ? CreateType(FromComputed(moduleProperties, type.target, type.parameters)) :\n KindGuard.IsConstructor(type) ? CreateType(FromConstructor(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsFunction(type) ? CreateType(FromFunction(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsIntersect(type) ? CreateType(FromIntersect(moduleProperties, type.allOf), type) :\n KindGuard.IsIterator(type) ? CreateType(FromIterator(moduleProperties, type.items), type) :\n KindGuard.IsObject(type) ? CreateType(FromObject(moduleProperties, type.properties), type) :\n KindGuard.IsRecord(type) ? CreateType(FromRecord(moduleProperties, type)) :\n KindGuard.IsTuple(type) ? CreateType(FromTuple(moduleProperties, type.items || []), type) :\n KindGuard.IsUnion(type) ? CreateType(FromUnion(moduleProperties, type.anyOf), type) :\n type);\n}\n// prettier-ignore\nexport function ComputeType(moduleProperties, key) {\n return (key in moduleProperties\n ? FromType(moduleProperties, moduleProperties[key])\n : Never());\n}\n// prettier-ignore\nexport function ComputeModuleProperties(moduleProperties) {\n return globalThis.Object.getOwnPropertyNames(moduleProperties).reduce((result, key) => {\n return { ...result, [key]: ComputeType(moduleProperties, key) };\n }, {});\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// Module Infrastructure Types\n// ------------------------------------------------------------------\nimport { ComputeModuleProperties } from './compute.mjs';\n// ------------------------------------------------------------------\n// Module\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TModule {\n constructor($defs) {\n const computed = ComputeModuleProperties($defs);\n const identified = this.WithIdentifiers(computed);\n this.$defs = identified;\n }\n /** `[Json]` Imports a Type by Key. */\n Import(key, options) {\n const $defs = { ...this.$defs, [key]: CreateType(this.$defs[key], options) };\n return CreateType({ [Kind]: 'Import', $defs, $ref: key });\n }\n // prettier-ignore\n WithIdentifiers($defs) {\n return globalThis.Object.getOwnPropertyNames($defs).reduce((result, key) => {\n return { ...result, [key]: { ...$defs[key], $id: key } };\n }, {});\n }\n}\n/** `[Json]` Creates a Type Definition Module. */\nexport function Module(properties) {\n return new TModule(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(type, options) {\n return CreateType({ [Kind]: 'Not', not: type }, options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options) {\n return (KindGuard.IsFunction(schema) ? Tuple(schema.parameters, options) : Never());\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = CloneType(callback({ [Kind]: 'This', $ref: `${options.$id}` }));\n thisType.$id = options.$id;\n // prettier-ignore\n return CreateType({ [Hint]: 'Recursive', ...thisType }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return CreateType({ [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags }, options);\n}\n", "// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? T.allOf :\n IsUnion(T) ? T.anyOf :\n IsTuple(T) ? T.items ?? [] :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return RestResolve(T);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options) {\n return (KindGuard.IsFunction(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { TransformKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n return (IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return CreateType({ [Kind]: options[Kind] ?? 'Unsafe' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options) {\n return CreateType({ [Kind]: 'Void', type: 'void' }, options);\n}\n", "// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nexport { Any } from '../any/index.mjs';\nexport { Argument } from '../argument/index.mjs';\nexport { Array } from '../array/index.mjs';\nexport { AsyncIterator } from '../async-iterator/index.mjs';\nexport { Awaited } from '../awaited/index.mjs';\nexport { BigInt } from '../bigint/index.mjs';\nexport { Boolean } from '../boolean/index.mjs';\nexport { Composite } from '../composite/index.mjs';\nexport { Const } from '../const/index.mjs';\nexport { Constructor } from '../constructor/index.mjs';\nexport { ConstructorParameters } from '../constructor-parameters/index.mjs';\nexport { Date } from '../date/index.mjs';\nexport { Enum } from '../enum/index.mjs';\nexport { Exclude } from '../exclude/index.mjs';\nexport { Extends } from '../extends/index.mjs';\nexport { Extract } from '../extract/index.mjs';\nexport { Function } from '../function/index.mjs';\nexport { Index } from '../indexed/index.mjs';\nexport { InstanceType } from '../instance-type/index.mjs';\nexport { Instantiate } from '../instantiate/index.mjs';\nexport { Integer } from '../integer/index.mjs';\nexport { Intersect } from '../intersect/index.mjs';\nexport { Capitalize, Uncapitalize, Lowercase, Uppercase } from '../intrinsic/index.mjs';\nexport { Iterator } from '../iterator/index.mjs';\nexport { KeyOf } from '../keyof/index.mjs';\nexport { Literal } from '../literal/index.mjs';\nexport { Mapped } from '../mapped/index.mjs';\nexport { Module } from '../module/index.mjs';\nexport { Never } from '../never/index.mjs';\nexport { Not } from '../not/index.mjs';\nexport { Null } from '../null/index.mjs';\nexport { Number } from '../number/index.mjs';\nexport { Object } from '../object/index.mjs';\nexport { Omit } from '../omit/index.mjs';\nexport { Optional } from '../optional/index.mjs';\nexport { Parameters } from '../parameters/index.mjs';\nexport { Partial } from '../partial/index.mjs';\nexport { Pick } from '../pick/index.mjs';\nexport { Promise } from '../promise/index.mjs';\nexport { Readonly } from '../readonly/index.mjs';\nexport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nexport { Record } from '../record/index.mjs';\nexport { Recursive } from '../recursive/index.mjs';\nexport { Ref } from '../ref/index.mjs';\nexport { RegExp } from '../regexp/index.mjs';\nexport { Required } from '../required/index.mjs';\nexport { Rest } from '../rest/index.mjs';\nexport { ReturnType } from '../return-type/index.mjs';\nexport { String } from '../string/index.mjs';\nexport { Symbol } from '../symbol/index.mjs';\nexport { TemplateLiteral } from '../template-literal/index.mjs';\nexport { Transform } from '../transform/index.mjs';\nexport { Tuple } from '../tuple/index.mjs';\nexport { Uint8Array } from '../uint8array/index.mjs';\nexport { Undefined } from '../undefined/index.mjs';\nexport { Union } from '../union/index.mjs';\nexport { Unknown } from '../unknown/index.mjs';\nexport { Unsafe } from '../unsafe/index.mjs';\nexport { Void } from '../void/index.mjs';\n", "// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n", "import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const MANAGED_PI_ARTIFACT_ID = \"@earendil-works/pi-coding-agent@0.80.10\";\n\nexport const PiRuntimeIdentitySchema = Type.Union([\n Type.Object(\n {\n mode: Type.Literal(\"managed\"),\n artifactId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n mode: Type.Literal(\"external\"),\n selectedPath: Type.String({ minLength: 1 }),\n nodePath: Type.String({ minLength: 1 }),\n realPath: Type.String({ minLength: 1 }),\n version: Type.String({ minLength: 1 }),\n fingerprint: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport type PiRuntimeIdentity = Static<typeof PiRuntimeIdentitySchema>;\n\nexport const MANAGED_PI_RUNTIME_IDENTITY: PiRuntimeIdentity = Object.freeze({\n mode: \"managed\",\n artifactId: MANAGED_PI_ARTIFACT_ID,\n});\n\nexport function samePiRuntimeIdentity(left: PiRuntimeIdentity, right: PiRuntimeIdentity): boolean {\n if (left.mode !== right.mode) return false;\n if (left.mode === \"managed\" && right.mode === \"managed\") {\n return left.artifactId === right.artifactId;\n }\n if (left.mode === \"external\" && right.mode === \"external\") {\n return (\n left.selectedPath === right.selectedPath &&\n left.nodePath === right.nodePath &&\n left.realPath === right.realPath &&\n left.version === right.version &&\n left.fingerprint === right.fingerprint\n );\n }\n return false;\n}\n", "import { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants } from \"node:fs\";\nimport { createReadStream } from \"node:fs\";\nimport { access, realpath, stat } from \"node:fs/promises\";\nimport { delimiter, dirname, isAbsolute, join } from \"node:path\";\n\nconst VERSION_TIMEOUT_MS = 3_000;\nconst MAX_VERSION_OUTPUT_BYTES = 4 * 1024;\n\nexport type ExternalPiResolutionErrorCode =\n | \"invalid_arguments\"\n | \"pi_not_found\"\n | \"pi_not_executable\"\n | \"pi_version_unavailable\"\n | \"pi_installation_changed\";\n\nexport class ExternalPiResolutionError extends Error {\n constructor(\n readonly code: ExternalPiResolutionErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"ExternalPiResolutionError\";\n }\n}\n\nexport interface PiInstallation {\n readonly selectedPath: string;\n readonly realPath: string;\n readonly version: string;\n readonly nodePath: string;\n readonly fingerprint: string;\n}\n\nexport interface ExternalPiResolverOptions {\n readonly env?: NodeJS.ProcessEnv;\n readonly nodePath?: string;\n readonly versionCommand?: (executable: string) => Promise<string>;\n readonly versionTimeoutMs?: number;\n readonly maxVersionOutputBytes?: number;\n}\n\nexport async function resolveExternalPiInstallation(\n options: ExternalPiResolverOptions = {},\n): Promise<PiInstallation> {\n const env = options.env ?? process.env;\n const selectedPath = await resolveSelectedPath(env);\n const nodePath = options.nodePath ?? (await resolveNodePath(env));\n await inspectNode(nodePath);\n\n const executionEnv = externalPiExecutionEnvironment(env, selectedPath, nodePath);\n for (let attempt = 0; attempt < 2; attempt += 1) {\n const observation = await observeInstallation(selectedPath, executionEnv, options);\n if (observation !== null) {\n return {\n selectedPath,\n nodePath,\n ...observation,\n };\n }\n }\n\n throw new ExternalPiResolutionError(\n \"pi_installation_changed\",\n \"Pi changed while its installation was being observed.\",\n );\n}\n\nexport function externalPiExecutionEnvironment(\n env: NodeJS.ProcessEnv,\n selectedPath: string,\n nodePath: string,\n): NodeJS.ProcessEnv {\n return {\n ...env,\n PATH: [dirname(nodePath), dirname(selectedPath), env.PATH]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .join(delimiter),\n };\n}\n\nasync function observeInstallation(\n selectedPath: string,\n env: NodeJS.ProcessEnv,\n options: ExternalPiResolverOptions,\n): Promise<Omit<PiInstallation, \"selectedPath\" | \"nodePath\"> | null> {\n const beforeRealPath = await inspectExecutable(selectedPath, \"Pi\");\n const beforeHash = await hashFile(beforeRealPath);\n const versionOutput = await (\n options.versionCommand ??\n ((executable: string) =>\n readVersion(executable, env, options.versionTimeoutMs, options.maxVersionOutputBytes))\n )(selectedPath);\n const version = parseVersion(versionOutput);\n const afterRealPath = await inspectExecutable(selectedPath, \"Pi\");\n const afterHash = await hashFile(afterRealPath);\n\n if (beforeRealPath !== afterRealPath || beforeHash !== afterHash) return null;\n\n return {\n realPath: afterRealPath,\n version,\n fingerprint: createHash(\"sha256\")\n .update(JSON.stringify([selectedPath, afterRealPath, version, afterHash]))\n .digest(\"hex\"),\n };\n}\n\nasync function resolveSelectedPath(env: NodeJS.ProcessEnv): Promise<string> {\n const explicit = env.PIFLEET_PI_EXECUTABLE;\n if (explicit !== undefined) {\n if (!isAbsolute(explicit)) {\n throw new ExternalPiResolutionError(\n \"invalid_arguments\",\n \"PIFLEET_PI_EXECUTABLE must be an absolute path.\",\n );\n }\n return explicit;\n }\n return resolvePathExecutable(env, \"pi\", \"Pi\", \"pi_not_found\");\n}\n\nasync function resolveNodePath(env: NodeJS.ProcessEnv): Promise<string> {\n return resolvePathExecutable(env, \"node\", \"Node\", \"pi_not_executable\");\n}\n\nasync function resolvePathExecutable(\n env: NodeJS.ProcessEnv,\n name: string,\n label: \"Pi\" | \"Node\",\n missingCode: \"pi_not_found\" | \"pi_not_executable\",\n): Promise<string> {\n const path = env.PATH;\n if (path === undefined || path.length === 0) {\n throw new ExternalPiResolutionError(missingCode, `${label} was not found on PATH.`);\n }\n for (const directory of path.split(delimiter)) {\n if (!isAbsolute(directory)) {\n throw new ExternalPiResolutionError(\n \"invalid_arguments\",\n `PATH entries used to select ${label} must be absolute paths.`,\n );\n }\n const candidate = join(directory, name);\n try {\n await inspectExecutable(candidate, label);\n return candidate;\n } catch (error: unknown) {\n if (\n !(error instanceof ExternalPiResolutionError) ||\n (error.code !== \"pi_not_executable\" && error.code !== \"pi_not_found\")\n ) {\n throw error;\n }\n }\n }\n throw new ExternalPiResolutionError(missingCode, `${label} was not found on PATH.`);\n}\n\nasync function inspectExecutable(path: string, label: \"Pi\" | \"Node\"): Promise<string> {\n try {\n const target = await realpath(path);\n const metadata = await stat(target);\n if (!metadata.isFile()) {\n throw new ExternalPiResolutionError(\"pi_not_executable\", `${label} is not a file: ${path}`);\n }\n await access(path, constants.X_OK);\n return target;\n } catch (error: unknown) {\n if (error instanceof ExternalPiResolutionError) throw error;\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new ExternalPiResolutionError(\"pi_not_found\", `${label} was not found: ${path}`);\n }\n throw new ExternalPiResolutionError(\"pi_not_executable\", `${label} is not executable: ${path}`);\n }\n}\n\nasync function inspectNode(nodePath: string): Promise<void> {\n if (!isAbsolute(nodePath)) {\n throw new ExternalPiResolutionError(\"invalid_arguments\", \"Node must be an absolute path.\");\n }\n try {\n await inspectExecutable(nodePath, \"Node\");\n } catch {\n throw new ExternalPiResolutionError(\"pi_not_executable\", `Node is not executable: ${nodePath}`);\n }\n}\n\nasync function hashFile(path: string): Promise<string> {\n const hash = createHash(\"sha256\");\n await new Promise<void>((resolveHash, rejectHash) => {\n const stream = createReadStream(path);\n stream.on(\"data\", (chunk: string | Buffer) => hash.update(chunk));\n stream.once(\"error\", rejectHash);\n stream.once(\"end\", resolveHash);\n });\n return hash.digest(\"hex\");\n}\n\nasync function readVersion(\n executable: string,\n env: NodeJS.ProcessEnv,\n timeoutMs = VERSION_TIMEOUT_MS,\n maxOutputBytes = MAX_VERSION_OUTPUT_BYTES,\n): Promise<string> {\n const child = spawn(executable, [\"--version\"], {\n detached: process.platform !== \"win32\",\n env,\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n const chunks: Buffer[] = [];\n let outputBytes = 0;\n let terminalError: ExternalPiResolutionError | null = null;\n let terminated = false;\n\n const terminate = () => {\n if (terminated) return;\n terminated = true;\n if (process.platform !== \"win32\" && child.pid !== undefined) {\n try {\n process.kill(-child.pid, \"SIGKILL\");\n return;\n } catch {\n // The group may have already exited; kill the direct child as a fallback.\n }\n }\n child.kill(\"SIGKILL\");\n };\n\n child.stdout.on(\"data\", (chunk: Buffer) => {\n if (terminalError !== null) return;\n outputBytes += chunk.byteLength;\n if (outputBytes > maxOutputBytes) {\n terminalError = new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version output exceeded its limit.\",\n );\n terminate();\n return;\n }\n chunks.push(chunk);\n });\n child.stderr.resume();\n\n return new Promise((resolveVersion, rejectVersion) => {\n const timer = setTimeout(() => {\n terminalError = new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command timed out.\",\n );\n terminate();\n }, timeoutMs);\n child.once(\"error\", () => {\n terminalError ??= new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command failed.\",\n );\n });\n child.once(\"close\", (code) => {\n clearTimeout(timer);\n if (terminalError !== null) {\n rejectVersion(terminalError);\n return;\n }\n if (code !== 0) {\n rejectVersion(\n new ExternalPiResolutionError(\"pi_version_unavailable\", \"Pi version command failed.\"),\n );\n return;\n }\n try {\n resolveVersion(new TextDecoder(\"utf-8\", { fatal: true }).decode(Buffer.concat(chunks)));\n } catch {\n rejectVersion(\n new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command returned invalid UTF-8.\",\n ),\n );\n }\n });\n });\n}\n\nfunction parseVersion(output: string): string {\n const match = /^(?:pi\\s+)?(\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?)\\s*$/i.exec(output);\n if (match?.[1] === undefined) {\n throw new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command returned an invalid version.\",\n );\n }\n return match[1];\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport { spawn, type ChildProcessWithoutNullStreams } from \"node:child_process\";\n\nimport { signalProcessTree, waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\n\nconst DEFAULT_MAX_STDOUT_FRAME_BYTES = 8 * 1024 * 1024;\n\nexport class PiRpcRejectedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PiRpcRejectedError\";\n }\n}\n\nexport interface PiCompactionResult {\n readonly tokensBefore: number;\n readonly estimatedTokensAfter?: number;\n}\n\nexport class PiCompactionError extends Error {\n constructor(readonly code: \"nothing_to_compact\" | \"compaction_failed\") {\n super(code);\n this.name = \"PiCompactionError\";\n }\n}\n\nexport class PiCleanupUncertainError extends Error {\n constructor(\n readonly pid: number,\n readonly startupError: unknown,\n readonly cleanupError: unknown,\n ) {\n super(`Pi process group ${String(pid)} could not be cleaned up after startup failed`);\n this.name = \"PiCleanupUncertainError\";\n }\n}\n\nexport interface PiState {\n readonly isStreaming: boolean;\n readonly isCompacting: boolean;\n readonly pendingMessageCount: number;\n readonly sessionFile?: string;\n readonly sessionId: string;\n}\n\nexport interface PiFrame {\n readonly id?: string;\n readonly type?: string;\n readonly command?: string;\n readonly success?: boolean;\n readonly error?: string;\n readonly data?: Record<string, unknown>;\n readonly [key: string]: unknown;\n}\n\nexport interface PiProcessStartOptions {\n readonly executable: string;\n readonly argvPrefix?: readonly string[];\n readonly piArgv: readonly string[];\n readonly cwd: string;\n readonly env?: NodeJS.ProcessEnv;\n readonly maxStdoutFrameBytes?: number;\n readonly onSpawn?: (pid: number) => Promise<void>;\n readonly onStdoutBytes?: (bytes: Buffer) => void;\n}\n\ninterface ResponseWaiter {\n readonly resolve: (frame: PiFrame) => void;\n readonly reject: (error: Error) => void;\n readonly timer: NodeJS.Timeout;\n}\n\nexport class PiProcess {\n readonly #child: ChildProcessWithoutNullStreams;\n readonly #responses = new Map<string, ResponseWaiter>();\n readonly #listeners = new Set<(frame: PiFrame) => void>();\n readonly #exitListeners = new Set<(error: Error | null) => void>();\n #stdoutBuffer = Buffer.alloc(0);\n #stderr = \"\";\n #stopping = false;\n #handledExit = false;\n readonly #exitHandled: Promise<void>;\n #resolveExitHandled: () => void = () => undefined;\n readonly #maxStdoutFrameBytes: number;\n\n private constructor(options: PiProcessStartOptions) {\n this.#exitHandled = new Promise((resolve) => {\n this.#resolveExitHandled = resolve;\n });\n this.#maxStdoutFrameBytes = options.maxStdoutFrameBytes ?? DEFAULT_MAX_STDOUT_FRAME_BYTES;\n this.#child = spawn(\n options.executable,\n [...(options.argvPrefix ?? []), \"--mode\", \"rpc\", ...options.piArgv],\n {\n cwd: options.cwd,\n env: { ...process.env, ...options.env },\n detached: process.platform !== \"win32\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n },\n );\n this.#child.stderr.setEncoding(\"utf8\");\n this.#child.stdout.on(\"data\", (chunk: Buffer) => {\n options.onStdoutBytes?.(chunk);\n this.#consumeStdout(chunk);\n });\n this.#child.stderr.on(\"data\", (chunk: string) => {\n this.#stderr = `${this.#stderr}${chunk}`.slice(-65_536);\n });\n this.#child.once(\"exit\", (code, signal) => this.#handleExit(code, signal));\n this.#child.once(\"error\", (error) => this.#handleExit(null, null, error));\n }\n\n static async start(options: PiProcessStartOptions): Promise<PiProcess> {\n const process = new PiProcess(options);\n try {\n await options.onSpawn?.(process.pid);\n await process.getState();\n return process;\n } catch (error: unknown) {\n try {\n await process.stop();\n } catch (cleanupError: unknown) {\n throw new PiCleanupUncertainError(process.pid, error, cleanupError);\n }\n throw error;\n }\n }\n\n get pid(): number {\n if (this.#child.pid === undefined) throw new Error(\"Pi process has no PID\");\n return this.#child.pid;\n }\n\n get stderr(): string {\n return this.#stderr;\n }\n\n onFrame(listener: (frame: PiFrame) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n onExit(listener: (error: Error | null) => void): () => void {\n this.#exitListeners.add(listener);\n return () => this.#exitListeners.delete(listener);\n }\n\n async getState(): Promise<PiState> {\n const frame = await this.request({ type: \"get_state\" });\n return frame.data as unknown as PiState;\n }\n\n async prompt(message: string): Promise<void> {\n await this.request({ type: \"prompt\", message, streamingBehavior: \"steer\" });\n }\n\n async compact(): Promise<PiCompactionResult> {\n let frame: PiFrame;\n try {\n frame = await this.request({ type: \"compact\" });\n } catch (error: unknown) {\n if (!(error instanceof PiRpcRejectedError)) throw error;\n const code =\n error.message === \"Already compacted\" || error.message.startsWith(\"Nothing to compact\")\n ? \"nothing_to_compact\"\n : \"compaction_failed\";\n throw new PiCompactionError(code);\n }\n const tokensBefore = frame.data?.tokensBefore;\n const estimatedTokensAfter = frame.data?.estimatedTokensAfter;\n if (\n typeof tokensBefore !== \"number\" ||\n !Number.isFinite(tokensBefore) ||\n tokensBefore < 0 ||\n (estimatedTokensAfter !== undefined &&\n (typeof estimatedTokensAfter !== \"number\" ||\n !Number.isFinite(estimatedTokensAfter) ||\n estimatedTokensAfter < 0))\n ) {\n throw new Error(\"Pi returned an invalid compaction result\");\n }\n return {\n tokensBefore,\n ...(estimatedTokensAfter === undefined ? {} : { estimatedTokensAfter }),\n };\n }\n\n async getLastAssistantText(): Promise<string | null> {\n const frame = await this.request({ type: \"get_last_assistant_text\" });\n return typeof frame.data?.text === \"string\" ? frame.data.text : null;\n }\n\n async request(command: Record<string, unknown>, timeoutMs = 15_000): Promise<PiFrame> {\n if (this.#child.exitCode !== null) throw new Error(\"Pi process is not running\");\n const id = randomUUID();\n const response = new Promise<PiFrame>((resolveResponse, rejectResponse) => {\n const timer = setTimeout(() => {\n this.#responses.delete(id);\n rejectResponse(new Error(\"Pi RPC request timed out\"));\n }, timeoutMs);\n this.#responses.set(id, { resolve: resolveResponse, reject: rejectResponse, timer });\n });\n try {\n await this.#write({ ...command, id });\n } catch (error: unknown) {\n const waiter = this.#responses.get(id);\n if (waiter !== undefined) {\n clearTimeout(waiter.timer);\n this.#responses.delete(id);\n waiter.reject(error instanceof Error ? error : new Error(\"Pi RPC write failed\"));\n }\n }\n const frame = await response;\n if (frame.success !== true) {\n throw new PiRpcRejectedError(frame.error ?? `Pi rejected ${String(command.type)}`);\n }\n return frame;\n }\n\n async stop(): Promise<void> {\n if (this.#stopping) {\n if (!(await this.#waitForExit(1_000))) {\n throw new Error(`Pi process group ${String(this.pid)} is still running`);\n }\n return;\n }\n this.#stopping = true;\n if (this.#child.exitCode === null) this.#child.stdin.end();\n if (await this.#waitForExit(500)) return;\n signalProcessTree(this.pid, \"SIGTERM\");\n if (await this.#waitForExit(1_000)) return;\n signalProcessTree(this.pid, \"SIGKILL\");\n if (!(await this.#waitForExit(1_000))) {\n throw new Error(`Pi process group ${String(this.pid)} did not exit after SIGKILL`);\n }\n }\n\n async #waitForExit(timeoutMs: number): Promise<boolean> {\n if (!(await waitForProcessGroupExit(this.pid, timeoutMs))) return false;\n await this.#exitHandled;\n return true;\n }\n\n async #write(frame: PiFrame): Promise<void> {\n if (this.#child.stdin.write(`${JSON.stringify(frame)}\\n`)) return;\n await once(this.#child.stdin, \"drain\");\n }\n\n #consumeStdout(chunk: Buffer): void {\n this.#stdoutBuffer = Buffer.concat([this.#stdoutBuffer, chunk]);\n while (true) {\n const newline = this.#stdoutBuffer.indexOf(0x0a);\n if (newline < 0) {\n if (this.#stdoutBuffer.length > this.#maxStdoutFrameBytes) {\n signalProcessTree(this.pid, \"SIGTERM\");\n }\n return;\n }\n if (newline > this.#maxStdoutFrameBytes) {\n signalProcessTree(this.pid, \"SIGTERM\");\n return;\n }\n let lineBytes = this.#stdoutBuffer.subarray(0, newline);\n this.#stdoutBuffer = this.#stdoutBuffer.subarray(newline + 1);\n if (lineBytes.at(-1) === 0x0d) lineBytes = lineBytes.subarray(0, -1);\n if (lineBytes.length === 0) continue;\n let frame: PiFrame;\n try {\n const line = new TextDecoder(\"utf-8\", { fatal: true }).decode(lineBytes);\n frame = JSON.parse(line) as PiFrame;\n } catch {\n signalProcessTree(this.pid, \"SIGTERM\");\n return;\n }\n if (\n frame.type === \"extension_ui_request\" &&\n typeof frame.id === \"string\" &&\n [\"select\", \"confirm\", \"input\", \"editor\"].includes(String(frame.method))\n ) {\n void this.#write({ type: \"extension_ui_response\", id: frame.id, cancelled: true }).catch(\n () => undefined,\n );\n }\n if (frame.type === \"response\" && frame.id !== undefined) {\n const waiter = this.#responses.get(frame.id);\n if (waiter !== undefined) {\n clearTimeout(waiter.timer);\n this.#responses.delete(frame.id);\n waiter.resolve(frame);\n }\n }\n for (const listener of this.#listeners) listener(frame);\n }\n }\n\n #handleExit(code: number | null, signal: NodeJS.Signals | null, cause?: Error): void {\n if (this.#handledExit) return;\n this.#handledExit = true;\n const error =\n this.#stopping && (code === 0 || signal === \"SIGTERM\")\n ? null\n : (cause ??\n new Error(`Pi exited unexpectedly (code=${String(code)}, signal=${String(signal)})`));\n try {\n for (const waiter of this.#responses.values()) {\n clearTimeout(waiter.timer);\n waiter.reject(error ?? new Error(\"Pi stopped before responding\"));\n }\n this.#responses.clear();\n for (const listener of this.#exitListeners) listener(error);\n } finally {\n this.#resolveExitHandled();\n }\n }\n}\n", "import { readFileSync, readdirSync } from \"node:fs\";\n\nexport function signalProcessTree(pid: number, signal: NodeJS.Signals): void {\n try {\n if (process.platform === \"win32\") process.kill(pid, signal);\n else process.kill(-pid, signal);\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"ESRCH\") throw error;\n }\n}\n\nexport function isProcessAlive(pid: number): boolean {\n if (process.platform === \"linux\") {\n const record = readLinuxProcess(pid);\n if (record === null) return false;\n if (record !== undefined) return isRunningState(record.state);\n }\n return canSignal(pid);\n}\n\nexport function isProcessGroupAlive(processGroupId: number): boolean {\n if (process.platform === \"win32\") return isProcessAlive(processGroupId);\n if (process.platform === \"linux\") {\n try {\n for (const entry of readdirSync(\"/proc\")) {\n if (!/^\\d+$/.test(entry)) continue;\n const record = readLinuxProcess(Number(entry));\n if (\n record !== null &&\n record !== undefined &&\n record.processGroupId === processGroupId &&\n isRunningState(record.state)\n ) {\n return true;\n }\n }\n return false;\n } catch {\n // Fall back to the portable signal probe if procfs is unavailable.\n }\n }\n return canSignal(-processGroupId);\n}\n\nexport async function waitForProcessExit(pid: number, timeoutMs = 1_000): Promise<boolean> {\n return waitUntilGone(() => isProcessAlive(pid), timeoutMs);\n}\n\nexport async function waitForProcessGroupExit(\n processGroupId: number,\n timeoutMs = 1_000,\n): Promise<boolean> {\n return waitUntilGone(() => isProcessGroupAlive(processGroupId), timeoutMs);\n}\n\nfunction readLinuxProcess(\n pid: number,\n): { readonly state: string; readonly processGroupId: number } | null | undefined {\n try {\n const stat = readFileSync(`/proc/${String(pid)}/stat`, \"utf8\");\n const commandEnd = stat.lastIndexOf(\")\");\n if (commandEnd < 0) return undefined;\n const fields = stat\n .slice(commandEnd + 2)\n .trim()\n .split(/\\s+/);\n const state = fields[0];\n const processGroupId = Number(fields[2]);\n if (state === undefined || !Number.isSafeInteger(processGroupId)) return undefined;\n return { state, processGroupId };\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n return undefined;\n }\n}\n\nfunction isRunningState(state: string): boolean {\n return state !== \"Z\" && state !== \"X\";\n}\n\nfunction canSignal(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error: unknown) {\n return (error as NodeJS.ErrnoException).code === \"EPERM\";\n }\n}\n\nasync function waitUntilGone(isAlive: () => boolean, timeoutMs: number): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n if (!isAlive()) return true;\n await new Promise((resolveDelay) => setTimeout(resolveDelay, 25));\n }\n return !isAlive();\n}\n", "import type { AgentLaunchProfile } from \"./launch-profile.js\";\nimport { PiProcess } from \"./process.js\";\n\nexport type PiStdoutSink = (bytes: Buffer) => void;\n\nexport type PiExecutionUnavailableCode =\n | \"pi_not_found\"\n | \"pi_not_executable\"\n | \"pi_version_unavailable\"\n | \"pi_version_unsupported\"\n | \"pi_installation_changed\";\n\nexport class PiExecutionUnavailableError extends Error {\n constructor(readonly code: PiExecutionUnavailableCode) {\n super(code);\n this.name = \"PiExecutionUnavailableError\";\n }\n}\n\nexport interface PiLauncher {\n readonly artifactId: string;\n preflight?(): Promise<void>;\n start(\n profile: AgentLaunchProfile,\n restore: boolean,\n onSpawn?: (pid: number) => Promise<void>,\n onStdoutBytes?: PiStdoutSink,\n ): Promise<PiProcess>;\n}\n\nexport interface RealPiLauncherOptions {\n readonly executable: string;\n readonly artifactId: string;\n readonly argvPrefix?: readonly string[];\n readonly env?: NodeJS.ProcessEnv;\n readonly onStart?: (pid: number) => void;\n readonly maxStdoutFrameBytes?: number;\n readonly preflight?: () => Promise<void>;\n}\n\nexport class RealPiLauncher implements PiLauncher {\n readonly artifactId: string;\n\n constructor(private readonly options: RealPiLauncherOptions) {\n this.artifactId = options.artifactId;\n }\n\n preflight(): Promise<void> {\n return this.options.preflight?.() ?? Promise.resolve();\n }\n\n async start(\n profile: AgentLaunchProfile,\n restore: boolean,\n onSpawn?: (pid: number) => Promise<void>,\n onStdoutBytes?: PiStdoutSink,\n ): Promise<PiProcess> {\n const piArgv = restore ? profile.restorePiArgv : profile.userPiArgv;\n if (piArgv === null) throw new Error(\"Agent has no observed Pi session to restore\");\n const process = await PiProcess.start({\n executable: this.options.executable,\n ...(this.options.argvPrefix === undefined ? {} : { argvPrefix: this.options.argvPrefix }),\n piArgv,\n cwd: profile.cwd,\n ...(this.options.env === undefined ? {} : { env: this.options.env }),\n ...(this.options.maxStdoutFrameBytes === undefined\n ? {}\n : { maxStdoutFrameBytes: this.options.maxStdoutFrameBytes }),\n ...(onSpawn === undefined ? {} : { onSpawn }),\n ...(onStdoutBytes === undefined ? {} : { onStdoutBytes }),\n });\n this.options.onStart?.(process.pid);\n return process;\n }\n}\n", "import { type PiRuntimeIdentity, samePiRuntimeIdentity } from \"../protocol/pi-identity.js\";\nimport {\n ExternalPiResolutionError,\n externalPiExecutionEnvironment,\n resolveExternalPiInstallation,\n type PiInstallation,\n} from \"./external-installation.js\";\nimport { PiExecutionUnavailableError, RealPiLauncher, type PiLauncher } from \"./adapter.js\";\n\nexport interface ExternalPiTarget {\n readonly launcher: PiLauncher;\n readonly identity: PiRuntimeIdentity;\n}\n\nexport async function createExternalPiTarget(\n env: NodeJS.ProcessEnv,\n maxStdoutFrameBytes?: number,\n): Promise<ExternalPiTarget> {\n const selectedPath = env.PIFLEET_PI_EXECUTABLE;\n const nodePath = env.PIFLEET_PI_NODE;\n if (selectedPath === undefined || nodePath === undefined) {\n return unavailableTarget(\n selectedPath ?? \"<unconfigured>\",\n nodePath ?? \"<unconfigured>\",\n \"pi_not_found\",\n );\n }\n\n let initial: PiInstallation;\n try {\n initial = await resolveExternalPiInstallation({\n env: { ...env, PIFLEET_PI_EXECUTABLE: selectedPath },\n nodePath,\n });\n } catch (error: unknown) {\n return unavailableTarget(selectedPath, nodePath, resolutionCode(error));\n }\n const identity = installationIdentity(initial);\n const launcher = new RealPiLauncher({\n executable: initial.selectedPath,\n artifactId: \"external-pi\",\n env: externalPiExecutionEnvironment(env, initial.selectedPath, initial.nodePath),\n ...(maxStdoutFrameBytes === undefined ? {} : { maxStdoutFrameBytes }),\n preflight: async () => {\n let current: PiInstallation;\n try {\n current = await resolveExternalPiInstallation({\n env: { ...env, PIFLEET_PI_EXECUTABLE: selectedPath },\n nodePath,\n });\n } catch (error: unknown) {\n throw new PiExecutionUnavailableError(resolutionCode(error));\n }\n if (!samePiRuntimeIdentity(identity, installationIdentity(current))) {\n throw new PiExecutionUnavailableError(\"pi_installation_changed\");\n }\n },\n });\n return { launcher, identity };\n}\n\nexport function installationIdentity(installation: PiInstallation): PiRuntimeIdentity {\n return {\n mode: \"external\",\n selectedPath: installation.selectedPath,\n nodePath: installation.nodePath,\n realPath: installation.realPath,\n version: installation.version,\n fingerprint: installation.fingerprint,\n };\n}\n\nfunction unavailableTarget(\n selectedPath: string,\n nodePath: string,\n code: PiExecutionUnavailableError[\"code\"],\n): ExternalPiTarget {\n const launcher: PiLauncher = {\n artifactId: \"external-pi\",\n async preflight() {\n throw new PiExecutionUnavailableError(code);\n },\n async start() {\n throw new PiExecutionUnavailableError(code);\n },\n };\n return {\n launcher,\n identity: {\n mode: \"external\",\n selectedPath,\n nodePath,\n realPath: selectedPath,\n version: \"unavailable\",\n fingerprint: \"unavailable\",\n },\n };\n}\n\nfunction resolutionCode(error: unknown): PiExecutionUnavailableError[\"code\"] {\n if (error instanceof ExternalPiResolutionError) {\n if (error.code === \"invalid_arguments\") return \"pi_not_executable\";\n return error.code;\n }\n return \"pi_version_unavailable\";\n}\n", "import { homedir, tmpdir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\n\nexport interface FleetPaths {\n readonly runtimeRoot: string;\n readonly stateRoot: string;\n readonly socketPath: string;\n readonly databasePath: string;\n}\n\nexport function resolveApplicationRoot(env: NodeJS.ProcessEnv = process.env): string {\n return (\n env.PIFLEET_APPLICATION_ROOT ??\n (process.platform === \"darwin\"\n ? join(homedir(), \"Library\", \"Application Support\", \"pi-fleet\", \"runtime\")\n : join(env.XDG_DATA_HOME ?? join(homedir(), \".local\", \"share\"), \"pi-fleet\"))\n );\n}\n\nexport function resolveFleetPaths(env: NodeJS.ProcessEnv = process.env): FleetPaths {\n const explicitRoot = env.PIFLEET_STATE_ROOT;\n if (explicitRoot !== undefined) {\n const root = resolve(explicitRoot);\n return {\n runtimeRoot: root,\n stateRoot: root,\n socketPath: join(root, \"control.sock\"),\n databasePath: join(root, \"fleet.sqlite\"),\n };\n }\n\n const runtimeRoot = join(\n env.XDG_RUNTIME_DIR ?? tmpdir(),\n `pifleet-${process.getuid?.() ?? \"user\"}`,\n );\n const stateRoot =\n process.platform === \"darwin\"\n ? join(homedir(), \"Library\", \"Application Support\", \"pi-fleet\")\n : join(env.XDG_STATE_HOME ?? join(homedir(), \".local\", \"state\"), \"pi-fleet\");\n return {\n runtimeRoot,\n stateRoot,\n socketPath: join(runtimeRoot, \"control.sock\"),\n databasePath: join(stateRoot, \"fleet.sqlite\"),\n };\n}\n", "import { once } from \"node:events\";\nimport { chmod, lstat, mkdir, unlink } from \"node:fs/promises\";\nimport { createConnection, createServer, type Server, type Socket } from \"node:net\";\nimport { dirname } from \"node:path\";\n\nimport type {\n CompactInput,\n CreateInput,\n DestroyInput,\n FleetClientError,\n ReceiveInput,\n SendInput,\n StatusInput,\n} from \"../client/fleet-client.js\";\nimport { parseProtocolRequest } from \"../protocol/validation.js\";\nimport { readJsonLines, writeJsonLine } from \"../protocol/jsonl.js\";\nimport type { PiRuntimeIdentity } from \"../protocol/pi-identity.js\";\nimport { MAX_PROTOCOL_FRAME_BYTES, PROTOCOL_VERSION } from \"../protocol/version.js\";\nimport { DEFAULT_RUNTIME_LIMITS, type RuntimeLimits } from \"../shared/runtime-limits.js\";\nimport { err, type Result } from \"../shared/result.js\";\nimport type { FleetService } from \"./fleet-service.js\";\nimport { RpcWatchError } from \"./rpc-watch-hub.js\";\n\nexport interface ControlServer {\n readonly socketPath: string;\n close(): Promise<void>;\n}\n\nexport async function startControlServer(options: {\n readonly socketPath: string;\n readonly service: FleetService | Promise<FleetService>;\n readonly limits?: Pick<RuntimeLimits, \"maxProtocolFrameBytes\">;\n}): Promise<ControlServer> {\n await mkdir(dirname(options.socketPath), { recursive: true, mode: 0o700 });\n await prepareSocketPath(options.socketPath);\n\n const service = Promise.resolve(options.service);\n const maxFrameBytes =\n options.limits?.maxProtocolFrameBytes ?? DEFAULT_RUNTIME_LIMITS.maxProtocolFrameBytes;\n const server = createServer((socket) => handleConnection(socket, service, maxFrameBytes));\n server.listen(options.socketPath);\n await new Promise<void>((resolveListen, rejectListen) => {\n server.once(\"listening\", resolveListen);\n server.once(\"error\", rejectListen);\n });\n await chmod(options.socketPath, 0o600);\n\n return {\n socketPath: options.socketPath,\n async close() {\n await closeServer(server);\n await unlink(options.socketPath).catch((error: NodeJS.ErrnoException) => {\n if (error.code !== \"ENOENT\") throw error;\n });\n },\n };\n}\n\nfunction handleConnection(\n socket: Socket,\n service: Promise<FleetService>,\n maxFrameBytes: number,\n): void {\n let handled = false;\n const abort = new AbortController();\n socket.once(\"close\", () => abort.abort());\n const stopReading = readJsonLines(\n socket,\n (value) => {\n if (handled) return;\n handled = true;\n stopReading();\n void service\n .then((readyService) => dispatch(value, readyService, socket, abort.signal, maxFrameBytes))\n .catch((error: unknown) => {\n if (socket.destroyed) return;\n const invalidRequest = error instanceof InvalidRequestError;\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: requestIdFrom(value),\n ok: false,\n error: invalidRequest\n ? { code: \"invalid_request\", message: error.message }\n : { code: \"internal_error\", message: \"pi-fleet encountered an internal error.\" },\n });\n socket.end();\n });\n },\n (error) => {\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: \"unknown\",\n ok: false,\n error: { code: \"invalid_request\", message: error.message },\n });\n socket.end();\n },\n maxFrameBytes,\n );\n}\n\nasync function dispatch(\n value: unknown,\n service: FleetService,\n socket: Socket,\n connectionSignal: AbortSignal,\n maxFrameBytes: number,\n): Promise<void> {\n let request: ReturnType<typeof parseProtocolRequest>;\n try {\n request = parseProtocolRequest(value);\n } catch (error: unknown) {\n throw new InvalidRequestError(\n error instanceof Error ? error.message : \"Invalid protocol request\",\n );\n }\n const operationId = request.operation?.operationId;\n let result: Result<unknown, FleetClientError>;\n\n switch (request.method) {\n case \"agent.create\":\n result = await service.create(\n asCreateInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n case \"agent.send\":\n result = await service.send(\n asSendInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n case \"agent.receive\":\n result = await receiveWithTimeout(\n service,\n asNamedInput(request.params),\n numberParam(request.params, \"timeoutMs\"),\n connectionSignal,\n );\n break;\n case \"agent.status\":\n result = await service.status(asNamedInput(request.params));\n break;\n case \"agent.list\":\n result = await service.list();\n break;\n case \"agent.watch\": {\n const watch = await service.openWatch(asNamedInput(request.params), connectionSignal);\n if (!watch.ok) {\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: request.requestId,\n stream: \"error\",\n error: watch.error,\n });\n socket.end();\n return;\n }\n writeJsonLine(socket, { v: PROTOCOL_VERSION, requestId: request.requestId, stream: \"ready\" });\n try {\n const outgoingFrameLimit = Math.min(maxFrameBytes, MAX_PROTOCOL_FRAME_BYTES);\n const maxRawChunkBytes = Math.max(1, Math.floor((outgoingFrameLimit - 1024) * 0.75));\n for await (const chunk of watch.value) {\n for (let offset = 0; offset < chunk.length; offset += maxRawChunkBytes) {\n const part = chunk.subarray(offset, offset + maxRawChunkBytes);\n const writable = writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: request.requestId,\n stream: \"chunk\",\n data: part.toString(\"base64\"),\n });\n if (!writable) await once(socket, \"drain\");\n }\n }\n if (!socket.destroyed) {\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: request.requestId,\n stream: \"end\",\n });\n socket.end();\n }\n } catch (error: unknown) {\n if (!socket.destroyed) {\n const watchError =\n error instanceof RpcWatchError\n ? { code: error.code, message: error.message }\n : { code: \"internal_error\", message: \"Raw Pi RPC watch failed.\" };\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: request.requestId,\n stream: \"error\",\n error: watchError,\n });\n socket.end();\n }\n }\n return;\n }\n case \"agent.destroy\":\n result = await service.destroy(asNamedInput(request.params), requireOperation(operationId));\n break;\n case \"agent.compact\":\n result = await service.compact(\n asNamedInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n }\n\n writeJsonLine(\n socket,\n result.ok\n ? { v: PROTOCOL_VERSION, requestId: request.requestId, ok: true, result: result.value }\n : { v: PROTOCOL_VERSION, requestId: request.requestId, ok: false, error: result.error },\n );\n socket.end();\n}\n\nfunction asCreateInput(params: Record<string, unknown>): CreateInput {\n const name = stringParam(params, \"name\");\n const cwd = stringParam(params, \"cwd\");\n const instructions = params.instructions;\n const piArgv = params.piArgv;\n if (instructions !== undefined && typeof instructions !== \"string\") {\n throw new InvalidRequestError(\"instructions must be a string\");\n }\n if (!Array.isArray(piArgv) || !piArgv.every((token) => typeof token === \"string\")) {\n throw new InvalidRequestError(\"piArgv must be an array of strings\");\n }\n return { name, cwd, piArgv, ...(instructions === undefined ? {} : { instructions }) };\n}\n\nfunction asSendInput(params: Record<string, unknown>): SendInput {\n return { name: stringParam(params, \"name\"), message: stringParam(params, \"message\") };\n}\n\nfunction asNamedInput(\n params: Record<string, unknown>,\n): ReceiveInput & StatusInput & DestroyInput & CompactInput {\n return { name: stringParam(params, \"name\") };\n}\n\nasync function receiveWithTimeout(\n service: FleetService,\n input: ReceiveInput,\n timeoutMs: number | undefined,\n connectionSignal: AbortSignal,\n): Promise<Result<unknown, FleetClientError>> {\n const abort = new AbortController();\n let timedOut = false;\n const onConnectionAbort = () => abort.abort();\n connectionSignal.addEventListener(\"abort\", onConnectionAbort, { once: true });\n const timer =\n timeoutMs === undefined\n ? undefined\n : setTimeout(() => {\n timedOut = true;\n abort.abort();\n }, timeoutMs);\n try {\n return await service.receive(input, abort.signal);\n } catch (error: unknown) {\n if (timedOut) {\n return err({ code: \"timeout\", message: \"Agent did not become idle before timeout.\" });\n }\n throw error;\n } finally {\n if (timer !== undefined) clearTimeout(timer);\n connectionSignal.removeEventListener(\"abort\", onConnectionAbort);\n }\n}\n\nfunction numberParam(params: Record<string, unknown>, key: string): number | undefined {\n const value = params[key];\n if (value === undefined) return undefined;\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n throw new InvalidRequestError(`${key} must be a non-negative number`);\n }\n return value;\n}\n\nfunction stringParam(params: Record<string, unknown>, key: string): string {\n const value = params[key];\n if (typeof value !== \"string\") throw new InvalidRequestError(`${key} must be a string`);\n return value;\n}\n\nfunction requireOperation(operationId: string | undefined): string {\n if (operationId === undefined)\n throw new InvalidRequestError(\"Mutation requires operation identity\");\n return operationId;\n}\n\nfunction requirePiIdentity(identity: PiRuntimeIdentity | undefined): PiRuntimeIdentity {\n if (identity === undefined)\n throw new InvalidRequestError(\"Mutation requires Pi runtime identity\");\n return identity;\n}\n\nclass InvalidRequestError extends Error {\n override readonly name = \"InvalidRequestError\";\n}\n\nfunction requestIdFrom(value: unknown): string {\n if (typeof value !== \"object\" || value === null || !(\"requestId\" in value)) return \"unknown\";\n return typeof value.requestId === \"string\" ? value.requestId : \"unknown\";\n}\n\nasync function prepareSocketPath(socketPath: string): Promise<void> {\n const stats = await lstat(socketPath).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return null;\n throw error;\n });\n if (stats === null) return;\n if (!stats.isSocket()) throw new Error(`Refusing to replace non-socket path ${socketPath}`);\n if (await canConnect(socketPath))\n throw new Error(`A pi-fleet runtime already owns ${socketPath}`);\n await unlink(socketPath);\n}\n\nasync function canConnect(socketPath: string): Promise<boolean> {\n return new Promise((resolveConnect) => {\n const socket = createConnection(socketPath);\n const timer = setTimeout(() => {\n socket.destroy();\n resolveConnect(false);\n }, 200);\n socket.once(\"connect\", () => {\n clearTimeout(timer);\n socket.destroy();\n resolveConnect(true);\n });\n socket.once(\"error\", () => {\n clearTimeout(timer);\n resolveConnect(false);\n });\n });\n}\n\nasync function closeServer(server: Server): Promise<void> {\n if (!server.listening) return;\n await new Promise<void>((resolveClose, rejectClose) => {\n server.close((error) => (error === undefined ? resolveClose() : rejectClose(error)));\n });\n}\n", "import { Kind } from '../type/symbols/index.mjs';\nimport { ValueErrorType } from './errors.mjs';\n/** Creates an error message using en-US as the default locale */\nexport function DefaultErrorFunction(error) {\n switch (error.errorType) {\n case ValueErrorType.ArrayContains:\n return 'Expected array to contain at least one matching value';\n case ValueErrorType.ArrayMaxContains:\n return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n case ValueErrorType.ArrayMinContains:\n return `Expected array to contain at least ${error.schema.minContains} matching values`;\n case ValueErrorType.ArrayMaxItems:\n return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n case ValueErrorType.ArrayMinItems:\n return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n case ValueErrorType.ArrayUniqueItems:\n return 'Expected array elements to be unique';\n case ValueErrorType.Array:\n return 'Expected array';\n case ValueErrorType.AsyncIterator:\n return 'Expected AsyncIterator';\n case ValueErrorType.BigIntExclusiveMaximum:\n return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.BigIntExclusiveMinimum:\n return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.BigIntMaximum:\n return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.BigIntMinimum:\n return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.BigIntMultipleOf:\n return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.BigInt:\n return 'Expected bigint';\n case ValueErrorType.Boolean:\n return 'Expected boolean';\n case ValueErrorType.DateExclusiveMinimumTimestamp:\n return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n case ValueErrorType.DateExclusiveMaximumTimestamp:\n return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n case ValueErrorType.DateMinimumTimestamp:\n return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n case ValueErrorType.DateMaximumTimestamp:\n return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n case ValueErrorType.DateMultipleOfTimestamp:\n return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n case ValueErrorType.Date:\n return 'Expected Date';\n case ValueErrorType.Function:\n return 'Expected function';\n case ValueErrorType.IntegerExclusiveMaximum:\n return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.IntegerExclusiveMinimum:\n return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.IntegerMaximum:\n return `Expected integer to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.IntegerMinimum:\n return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.IntegerMultipleOf:\n return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Integer:\n return 'Expected integer';\n case ValueErrorType.IntersectUnevaluatedProperties:\n return 'Unexpected property';\n case ValueErrorType.Intersect:\n return 'Expected all values to match';\n case ValueErrorType.Iterator:\n return 'Expected Iterator';\n case ValueErrorType.Literal:\n return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n case ValueErrorType.Never:\n return 'Never';\n case ValueErrorType.Not:\n return 'Value should not match';\n case ValueErrorType.Null:\n return 'Expected null';\n case ValueErrorType.NumberExclusiveMaximum:\n return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.NumberExclusiveMinimum:\n return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.NumberMaximum:\n return `Expected number to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.NumberMinimum:\n return `Expected number to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.NumberMultipleOf:\n return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Number:\n return 'Expected number';\n case ValueErrorType.Object:\n return 'Expected object';\n case ValueErrorType.ObjectAdditionalProperties:\n return 'Unexpected property';\n case ValueErrorType.ObjectMaxProperties:\n return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n case ValueErrorType.ObjectMinProperties:\n return `Expected object to have at least ${error.schema.minProperties} properties`;\n case ValueErrorType.ObjectRequiredProperty:\n return 'Expected required property';\n case ValueErrorType.Promise:\n return 'Expected Promise';\n case ValueErrorType.RegExp:\n return 'Expected string to match regular expression';\n case ValueErrorType.StringFormatUnknown:\n return `Unknown format '${error.schema.format}'`;\n case ValueErrorType.StringFormat:\n return `Expected string to match '${error.schema.format}' format`;\n case ValueErrorType.StringMaxLength:\n return `Expected string length less or equal to ${error.schema.maxLength}`;\n case ValueErrorType.StringMinLength:\n return `Expected string length greater or equal to ${error.schema.minLength}`;\n case ValueErrorType.StringPattern:\n return `Expected string to match '${error.schema.pattern}'`;\n case ValueErrorType.String:\n return 'Expected string';\n case ValueErrorType.Symbol:\n return 'Expected symbol';\n case ValueErrorType.TupleLength:\n return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n case ValueErrorType.Tuple:\n return 'Expected tuple';\n case ValueErrorType.Uint8ArrayMaxByteLength:\n return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n case ValueErrorType.Uint8ArrayMinByteLength:\n return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n case ValueErrorType.Uint8Array:\n return 'Expected Uint8Array';\n case ValueErrorType.Undefined:\n return 'Expected undefined';\n case ValueErrorType.Union:\n return 'Expected union value';\n case ValueErrorType.Void:\n return 'Expected void';\n case ValueErrorType.Kind:\n return `Expected kind '${error.schema[Kind]}'`;\n default:\n return 'Unknown error type';\n }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nexport function SetErrorFunction(callback) {\n errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nexport function GetErrorFunction() {\n return errorFunction;\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { IsString } from '../guard/guard.mjs';\nexport class TypeDereferenceError extends TypeBoxError {\n constructor(schema) {\n super(`Unable to dereference schema with $id '${schema.$ref}'`);\n this.schema = schema;\n }\n}\nfunction Resolve(schema, references) {\n const target = references.find((target) => target.$id === schema.$ref);\n if (target === undefined)\n throw new TypeDereferenceError(schema);\n return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nexport function Pushref(schema, references) {\n if (!IsString(schema.$id) || references.some((target) => target.$id === schema.$id))\n return references;\n references.push(schema);\n return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n // prettier-ignore\n return (schema[Kind] === 'This' || schema[Kind] === 'Ref')\n ? Resolve(schema, references)\n : schema;\n}\n", "import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('18446744073709551616' /* 2 ^ 64 */)];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n", "import { TypeSystemPolicy } from '../../system/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Hash } from '../hash/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { KeyOfPattern } from '../../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Never } from '../../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCheckUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super(`Unknown type`);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n return true;\n}\nfunction FromArgument(schema, references, value) {\n return true;\n}\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return false;\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n return false;\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n return false;\n }\n for (const element of value) {\n if (!Visit(schema.items, references, element))\n return false;\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n return false;\n }\n // contains\n if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {\n return true; // exit\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n return false;\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n return false;\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n return false;\n }\n return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n return IsAsyncIterator(value);\n}\nfunction FromBigInt(schema, references, value) {\n if (!IsBigInt(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n return false;\n }\n return true;\n}\nfunction FromBoolean(schema, references, value) {\n return IsBoolean(value);\n}\nfunction FromConstructor(schema, references, value) {\n return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n if (!IsDate(value))\n return false;\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n return false;\n }\n return true;\n}\nfunction FromFunction(schema, references, value) {\n return IsFunction(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n if (!IsInteger(value)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromIntersect(schema, references, value) {\n const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n if (schema.unevaluatedProperties === false) {\n const keyPattern = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n return check1 && check2;\n }\n else if (IsSchema(schema.unevaluatedProperties)) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n return check1 && check2;\n }\n else {\n return check1;\n }\n}\nfunction FromIterator(schema, references, value) {\n return IsIterator(value);\n}\nfunction FromLiteral(schema, references, value) {\n return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n return false;\n}\nfunction FromNot(schema, references, value) {\n return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n return IsNull(value);\n}\nfunction FromNumber(schema, references, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromObject(schema, references, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return false;\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n if (!Visit(property, references, value[knownKey])) {\n return false;\n }\n if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n return false;\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n return false;\n }\n }\n }\n if (schema.additionalProperties === false) {\n const valueKeys = Object.getOwnPropertyNames(value);\n // optimization: value is valid if schemaKey length matches the valueKey length\n if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n return true;\n }\n else {\n return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n const valueKeys = Object.getOwnPropertyNames(value);\n return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n }\n else {\n return true;\n }\n}\nfunction FromPromise(schema, references, value) {\n return IsPromise(value);\n}\nfunction FromRecord(schema, references, value) {\n if (!TypeSystemPolicy.IsRecordLike(value)) {\n return false;\n }\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n // prettier-ignore\n const check1 = Object.entries(value).every(([key, value]) => {\n return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n });\n // prettier-ignore\n const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n }) : true;\n const check3 = schema.additionalProperties === false\n ? Object.getOwnPropertyNames(value).every((key) => {\n return regex.test(key);\n })\n : true;\n return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n const regex = new RegExp(schema.source, schema.flags);\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n if (!IsString(value)) {\n return false;\n }\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n if (IsDefined(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value))\n return false;\n }\n if (IsDefined(schema.format)) {\n if (!FormatRegistry.Has(schema.format))\n return false;\n const func = FormatRegistry.Get(schema.format);\n return func(value);\n }\n return true;\n}\nfunction FromSymbol(schema, references, value) {\n return IsSymbol(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n return IsString(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value)) {\n return false;\n }\n if (schema.items === undefined && !(value.length === 0)) {\n return false;\n }\n if (!(value.length === schema.maxItems)) {\n return false;\n }\n if (!schema.items) {\n return true;\n }\n for (let i = 0; i < schema.items.length; i++) {\n if (!Visit(schema.items[i], references, value[i]))\n return false;\n }\n return true;\n}\nfunction FromUndefined(schema, references, value) {\n return IsUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n if (!IsUint8Array(value)) {\n return false;\n }\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n return false;\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n return false;\n }\n return true;\n}\nfunction FromUnknown(schema, references, value) {\n return true;\n}\nfunction FromVoid(schema, references, value) {\n return TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n if (!TypeRegistry.Has(schema[Kind]))\n return false;\n const func = TypeRegistry.Get(schema[Kind]);\n return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsDefined(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_, value);\n case 'Argument':\n return FromArgument(schema_, references_, value);\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Function':\n return FromFunction(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Iterator':\n return FromIterator(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Not':\n return FromNot(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Promise':\n return FromPromise(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'RegExp':\n return FromRegExp(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return FromUnknown(schema_, references_, value);\n case 'Void':\n return FromVoid(schema_, references_, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCheckUnknownTypeError(schema_);\n return FromKind(schema_, references_, value);\n }\n}\n/** Returns true if the value matches the given type. */\nexport function Check(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Check } from '../value/check/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value, errors = []) {\n return {\n type: errorType,\n schema,\n path,\n value,\n message: GetErrorFunction()({ errorType, path, schema, value, errors }),\n errors,\n };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArgument(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromImport(schema, references, path, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n yield* Visit(target, [...references, ...definitions], path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n let hasError = false;\n for (const inner of schema.allOf) {\n for (const error of Visit(inner, references, path, value)) {\n hasError = true;\n yield error;\n }\n }\n if (hasError) {\n return yield Create(ValueErrorType.Intersect, schema, path, value);\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n if (Check(schema, references, value))\n return;\n const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path, value)));\n yield Create(ValueErrorType.Union, schema, path, value, errors);\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Argument':\n return yield* FromArgument(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Import':\n return yield* FromImport(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AssertError_instances, _AssertError_iterator, _AssertError_Iterator;\nimport { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nimport { TypeBoxError } from '../../type/error/error.mjs';\nimport { Check } from '../check/check.mjs';\n// ------------------------------------------------------------------\n// AssertError\n// ------------------------------------------------------------------\nexport class AssertError extends TypeBoxError {\n constructor(iterator) {\n const error = iterator.First();\n super(error === undefined ? 'Invalid Value' : error.message);\n _AssertError_instances.add(this);\n _AssertError_iterator.set(this, void 0);\n __classPrivateFieldSet(this, _AssertError_iterator, iterator, \"f\");\n this.error = error;\n }\n /** Returns an iterator for each error in this value. */\n Errors() {\n return new ValueErrorIterator(__classPrivateFieldGet(this, _AssertError_instances, \"m\", _AssertError_Iterator).call(this));\n }\n}\n_AssertError_iterator = new WeakMap(), _AssertError_instances = new WeakSet(), _AssertError_Iterator = function* _AssertError_Iterator() {\n if (this.error)\n yield this.error;\n yield* __classPrivateFieldGet(this, _AssertError_iterator, \"f\");\n};\n// ------------------------------------------------------------------\n// AssertValue\n// ------------------------------------------------------------------\nfunction AssertValue(schema, references, value) {\n if (Check(schema, references, value))\n return;\n throw new AssertError(Errors(schema, references, value));\n}\n/** Asserts a value matches the given type or throws an `AssertError` if invalid */\nexport function Assert(...args) {\n return args.length === 3 ? AssertValue(args[0], args[1], args[2]) : AssertValue(args[0], [], args[1]);\n}\n", "// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsMap, IsSet, IsObject, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Clonable\n// ------------------------------------------------------------------\nfunction FromObject(value) {\n const Acc = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n Acc[key] = Clone(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n Acc[key] = Clone(value[key]);\n }\n return Acc;\n}\nfunction FromArray(value) {\n return value.map((element) => Clone(element));\n}\nfunction FromTypedArray(value) {\n return value.slice();\n}\nfunction FromMap(value) {\n return new Map(Clone([...value.entries()]));\n}\nfunction FromSet(value) {\n return new Set(Clone([...value.entries()]));\n}\nfunction FromDate(value) {\n return new Date(value.toISOString());\n}\nfunction FromValue(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Clone\n// ------------------------------------------------------------------\n/** Returns a clone of the given value */\nexport function Clone(value) {\n if (IsArray(value))\n return FromArray(value);\n if (IsDate(value))\n return FromDate(value);\n if (IsTypedArray(value))\n return FromTypedArray(value);\n if (IsMap(value))\n return FromMap(value);\n if (IsSet(value))\n return FromSet(value);\n if (IsObject(value))\n return FromObject(value);\n if (IsValueType(value))\n return FromValue(value);\n throw new Error('ValueClone: Unable to clone value');\n}\n", "import { HasPropertyKey } from '../guard/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { TemplateLiteralGenerate, IsTemplateLiteralFinite } from '../../type/template-literal/index.mjs';\nimport { TypeRegistry } from '../../type/registry/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { IsFunction } from '../guard/guard.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCreateError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction FromDefault(value) {\n return IsFunction(value) ? value() : Clone(value);\n}\n// ------------------------------------------------------------------\n// Create\n// ------------------------------------------------------------------\nfunction FromAny(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromArgument(schema, references) {\n return {};\n}\nfunction FromArray(schema, references) {\n if (schema.uniqueItems === true && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the uniqueItems constraint requires a default value');\n }\n else if ('contains' in schema && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the contains constraint requires a default value');\n }\n else if ('default' in schema) {\n return FromDefault(schema.default);\n }\n else if (schema.minItems !== undefined) {\n return Array.from({ length: schema.minItems }).map((item) => {\n return Visit(schema.items, references);\n });\n }\n else {\n return [];\n }\n}\nfunction FromAsyncIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (async function* () { })();\n }\n}\nfunction FromBigInt(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return BigInt(0);\n }\n}\nfunction FromBoolean(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return false;\n }\n}\nfunction FromConstructor(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const value = Visit(schema.returns, references);\n if (typeof value === 'object' && !Array.isArray(value)) {\n return class {\n constructor() {\n for (const [key, val] of Object.entries(value)) {\n const self = this;\n self[key] = val;\n }\n }\n };\n }\n else {\n return class {\n };\n }\n }\n}\nfunction FromDate(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimumTimestamp !== undefined) {\n return new Date(schema.minimumTimestamp);\n }\n else {\n return new Date();\n }\n}\nfunction FromFunction(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return () => Visit(schema.returns, references);\n }\n}\nfunction FromImport(schema, references) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions]);\n}\nfunction FromInteger(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromIntersect(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n // --------------------------------------------------------------\n // Note: The best we can do here is attempt to instance each\n // sub type and apply through object assign. For non-object\n // sub types, we just escape the assignment and just return\n // the value. In the latter case, this is typically going to\n // be a consequence of an illogical intersection.\n // --------------------------------------------------------------\n const value = schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references);\n return typeof next === 'object' ? { ...acc, ...next } : next;\n }, {});\n if (!Check(schema, references, value))\n throw new ValueCreateError(schema, 'Intersect produced invalid value. Consider using a default value.');\n return value;\n }\n}\nfunction FromIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (function* () { })();\n }\n}\nfunction FromLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return schema.const;\n }\n}\nfunction FromNever(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Never types cannot be created. Consider using a default value.');\n }\n}\nfunction FromNot(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Not types must have a default value');\n }\n}\nfunction FromNull(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return null;\n }\n}\nfunction FromNumber(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromObject(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const required = new Set(schema.required);\n const Acc = {};\n for (const [key, subschema] of Object.entries(schema.properties)) {\n if (!required.has(key))\n continue;\n Acc[key] = Visit(subschema, references);\n }\n return Acc;\n }\n}\nfunction FromPromise(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Promise.resolve(Visit(schema.item, references));\n }\n}\nfunction FromRecord(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromRef(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromRegExp(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'RegExp types cannot be created. Consider using a default value.');\n }\n}\nfunction FromString(schema, references) {\n if (schema.pattern !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with patterns must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else if (schema.format !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with formats must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minLength !== undefined) {\n // prettier-ignore\n return Array.from({ length: schema.minLength }).map(() => ' ').join('');\n }\n else {\n return '';\n }\n }\n}\nfunction FromSymbol(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if ('value' in schema) {\n return Symbol.for(schema.value);\n }\n else {\n return Symbol();\n }\n}\nfunction FromTemplateLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (!IsTemplateLiteralFinite(schema))\n throw new ValueCreateError(schema, 'Can only create template literals that produce a finite variants. Consider using a default value.');\n const generated = TemplateLiteralGenerate(schema);\n return generated[0];\n}\nfunction FromThis(schema, references) {\n if (recursiveDepth++ > recursiveMaxDepth)\n throw new ValueCreateError(schema, 'Cannot create recursive type as it appears possibly infinite. Consider using a default.');\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromTuple(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (schema.items === undefined) {\n return [];\n }\n else {\n return Array.from({ length: schema.minItems }).map((_, index) => Visit(schema.items[index], references));\n }\n}\nfunction FromUndefined(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return undefined;\n }\n}\nfunction FromUnion(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.anyOf.length === 0) {\n throw new Error('ValueCreate.Union: Cannot create Union with zero variants');\n }\n else {\n return Visit(schema.anyOf[0], references);\n }\n}\nfunction FromUint8Array(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minByteLength !== undefined) {\n return new Uint8Array(schema.minByteLength);\n }\n else {\n return new Uint8Array(0);\n }\n}\nfunction FromUnknown(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromVoid(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return void 0;\n }\n}\nfunction FromKind(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new Error('User defined types must specify a default value');\n }\n}\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_);\n case 'Argument':\n return FromArgument(schema_, references_);\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'BigInt':\n return FromBigInt(schema_, references_);\n case 'Boolean':\n return FromBoolean(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Date':\n return FromDate(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Integer':\n return FromInteger(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Literal':\n return FromLiteral(schema_, references_);\n case 'Never':\n return FromNever(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Null':\n return FromNull(schema_, references_);\n case 'Number':\n return FromNumber(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'RegExp':\n return FromRegExp(schema_, references_);\n case 'String':\n return FromString(schema_, references_);\n case 'Symbol':\n return FromSymbol(schema_, references_);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Undefined':\n return FromUndefined(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_);\n case 'Unknown':\n return FromUnknown(schema_, references_);\n case 'Void':\n return FromVoid(schema_, references_);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCreateError(schema_, 'Unknown type');\n return FromKind(schema_, references_);\n }\n}\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nconst recursiveMaxDepth = 512;\nlet recursiveDepth = 0;\n/** Creates a value from the given schema */\nexport function Create(...args) {\n recursiveDepth = 0;\n return args.length === 2 ? Visit(args[0], args[1]) : Visit(args[0], []);\n}\n", "import { IsObject, IsArray, IsString, IsNumber, IsNull } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { Create } from '../create/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCastError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// The following logic assigns a score to a schema based on how well\n// it matches a given value. For object types, the score is calculated\n// by evaluating each property of the value against the schema's\n// properties. To avoid bias towards objects with many properties,\n// each property contributes equally to the total score. Properties\n// that exactly match literal values receive the highest possible\n// score, as literals are often used as discriminators in union types.\n// ------------------------------------------------------------------\nfunction ScoreUnion(schema, references, value) {\n if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {\n const object = schema;\n const keys = Object.getOwnPropertyNames(value);\n const entries = Object.entries(object.properties);\n return entries.reduce((acc, [key, schema]) => {\n const literal = schema[Kind] === 'Literal' && schema.const === value[key] ? 100 : 0;\n const checks = Check(schema, references, value[key]) ? 10 : 0;\n const exists = keys.includes(key) ? 1 : 0;\n return acc + (literal + checks + exists);\n }, 0);\n }\n else if (schema[Kind] === 'Union') {\n const schemas = schema.anyOf.map((schema) => Deref(schema, references));\n const scores = schemas.map((schema) => ScoreUnion(schema, references, value));\n return Math.max(...scores);\n }\n else {\n return Check(schema, references, value) ? 1 : 0;\n }\n}\nfunction SelectUnion(union, references, value) {\n const schemas = union.anyOf.map((schema) => Deref(schema, references));\n let [select, best] = [schemas[0], 0];\n for (const schema of schemas) {\n const score = ScoreUnion(schema, references, value);\n if (score > best) {\n select = schema;\n best = score;\n }\n }\n return select;\n}\nfunction CastUnion(union, references, value) {\n if ('default' in union) {\n return typeof value === 'function' ? union.default : Clone(union.default);\n }\n else {\n const schema = SelectUnion(union, references, value);\n return Cast(schema, references, value);\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction DefaultClone(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : Create(schema, references);\n}\nfunction Default(schema, references, value) {\n return Check(schema, references, value) ? value : Create(schema, references);\n}\n// ------------------------------------------------------------------\n// Cast\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n const created = IsArray(value) ? Clone(value) : Create(schema, references);\n const minimum = IsNumber(schema.minItems) && created.length < schema.minItems ? [...created, ...Array.from({ length: schema.minItems - created.length }, () => null)] : created;\n const maximum = IsNumber(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum;\n const casted = maximum.map((value) => Visit(schema.items, references, value));\n if (schema.uniqueItems !== true)\n return casted;\n const unique = [...new Set(casted)];\n if (!Check(schema, references, unique))\n throw new ValueCastError(schema, 'Array cast produced invalid data due to uniqueItems constraint');\n return unique;\n}\nfunction FromConstructor(schema, references, value) {\n if (Check(schema, references, value))\n return Create(schema, references);\n const required = new Set(schema.returns.required || []);\n const result = function () { };\n for (const [key, property] of Object.entries(schema.returns.properties)) {\n if (!required.has(key) && value.prototype[key] === undefined)\n continue;\n result.prototype[key] = Visit(property, references, value.prototype[key]);\n }\n return result;\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\nfunction IntersectAssign(correct, value) {\n // trust correct on mismatch | value on non-object\n if ((IsObject(correct) && !IsObject(value)) || (!IsObject(correct) && IsObject(value)))\n return correct;\n if (!IsObject(correct) || !IsObject(value))\n return value;\n return globalThis.Object.getOwnPropertyNames(correct).reduce((result, key) => {\n const property = key in value ? IntersectAssign(correct[key], value[key]) : correct[key];\n return { ...result, [key]: property };\n }, {});\n}\nfunction FromIntersect(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n const correct = Create(schema, references);\n const assigned = IntersectAssign(correct, value);\n return Check(schema, references, assigned) ? assigned : correct;\n}\nfunction FromNever(schema, references, value) {\n throw new ValueCastError(schema, 'Never types cannot be cast');\n}\nfunction FromObject(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n if (value === null || typeof value !== 'object')\n return Create(schema, references);\n const required = new Set(schema.required || []);\n const result = {};\n for (const [key, property] of Object.entries(schema.properties)) {\n if (!required.has(key) && value[key] === undefined)\n continue;\n result[key] = Visit(property, references, value[key]);\n }\n // additional schema properties\n if (typeof schema.additionalProperties === 'object') {\n const propertyNames = Object.getOwnPropertyNames(schema.properties);\n for (const propertyName of Object.getOwnPropertyNames(value)) {\n if (propertyNames.includes(propertyName))\n continue;\n result[propertyName] = Visit(schema.additionalProperties, references, value[propertyName]);\n }\n }\n return result;\n}\nfunction FromRecord(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date)\n return Create(schema, references);\n const subschemaPropertyName = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const subschema = schema.patternProperties[subschemaPropertyName];\n const result = {};\n for (const [propKey, propValue] of Object.entries(value)) {\n result[propKey] = Visit(subschema, references, propValue);\n }\n return result;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (!IsArray(value))\n return Create(schema, references);\n if (schema.items === undefined)\n return [];\n return schema.items.map((schema, index) => Visit(schema, references, value[index]));\n}\nfunction FromUnion(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : CastUnion(schema, references, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema[Kind]) {\n // --------------------------------------------------------------\n // Structural\n // --------------------------------------------------------------\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n // --------------------------------------------------------------\n // DefaultClone\n // --------------------------------------------------------------\n case 'Date':\n case 'Symbol':\n case 'Uint8Array':\n return DefaultClone(schema, references, value);\n // --------------------------------------------------------------\n // Default\n // --------------------------------------------------------------\n default:\n return Default(schema_, references_, value);\n }\n}\n/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */\nexport function Cast(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { KeyOfPropertyKeys } from '../../type/keyof/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { HasPropertyKey, IsString, IsObject, IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// IsCheckable\n// ------------------------------------------------------------------\nfunction IsCheckable(schema) {\n return IsKind(schema) && schema[Kind] !== 'Unsafe';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return value;\n return value.map((value) => Visit(schema.items, references, value));\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const unevaluatedProperties = schema.unevaluatedProperties;\n const intersections = schema.allOf.map((schema) => Visit(schema, references, Clone(value)));\n const composite = intersections.reduce((acc, value) => (IsObject(value) ? { ...acc, ...value } : value), {});\n if (!IsObject(value) || !IsObject(composite) || !IsKind(unevaluatedProperties))\n return composite;\n const knownkeys = KeyOfPropertyKeys(schema);\n for (const key of Object.getOwnPropertyNames(value)) {\n if (knownkeys.includes(key))\n continue;\n if (Check(unevaluatedProperties, references, value[key])) {\n composite[key] = Visit(unevaluatedProperties, references, value[key]);\n }\n }\n return composite;\n}\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value; // Check IsArray for AllowArrayObject configuration\n const additionalProperties = schema.additionalProperties;\n for (const key of Object.getOwnPropertyNames(value)) {\n if (HasPropertyKey(schema.properties, key)) {\n value[key] = Visit(schema.properties[key], references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n if (!IsObject(value))\n return value;\n const additionalProperties = schema.additionalProperties;\n const propertyKeys = Object.getOwnPropertyNames(value);\n const [propertyKey, propertySchema] = Object.entries(schema.patternProperties)[0];\n const propertyKeyTest = new RegExp(propertyKey);\n for (const key of propertyKeys) {\n if (propertyKeyTest.test(key)) {\n value[key] = Visit(propertySchema, references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value))\n return value;\n if (IsUndefined(schema.items))\n return [];\n const length = Math.min(value.length, schema.items.length);\n for (let i = 0; i < length; i++) {\n value[i] = Visit(schema.items[i], references, value[i]);\n }\n // prettier-ignore\n return value.length > length\n ? value.slice(0, length)\n : value;\n}\nfunction FromUnion(schema, references, value) {\n for (const inner of schema.anyOf) {\n if (IsCheckable(inner) && Check(inner, references, value)) {\n return Visit(inner, references, value);\n }\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return value;\n }\n}\n/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Clean(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { Clone } from '../clone/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsObject, IsDate, IsUndefined, IsString, IsNumber, IsBoolean, IsBigInt, IsSymbol, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Conversions\n// ------------------------------------------------------------------\nfunction IsStringNumeric(value) {\n return IsString(value) && !isNaN(value) && !isNaN(parseFloat(value));\n}\nfunction IsValueToString(value) {\n return IsBigInt(value) || IsBoolean(value) || IsNumber(value);\n}\nfunction IsValueTrue(value) {\n return value === true || (IsNumber(value) && value === 1) || (IsBigInt(value) && value === BigInt('1')) || (IsString(value) && (value.toLowerCase() === 'true' || value === '1'));\n}\nfunction IsValueFalse(value) {\n return value === false || (IsNumber(value) && (value === 0 || Object.is(value, -0))) || (IsBigInt(value) && value === BigInt('0')) || (IsString(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));\n}\nfunction IsTimeStringWithTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateTimeStringWithTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsDateTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateString(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/i.test(value);\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction TryConvertLiteralString(value, target) {\n const conversion = TryConvertString(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralNumber(value, target) {\n const conversion = TryConvertNumber(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralBoolean(value, target) {\n const conversion = TryConvertBoolean(value);\n return conversion === target ? conversion : value;\n}\n// prettier-ignore\nfunction TryConvertLiteral(schema, value) {\n return (IsString(schema.const) ? TryConvertLiteralString(value, schema.const) :\n IsNumber(schema.const) ? TryConvertLiteralNumber(value, schema.const) :\n IsBoolean(schema.const) ? TryConvertLiteralBoolean(value, schema.const) :\n value);\n}\nfunction TryConvertBoolean(value) {\n return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value;\n}\nfunction TryConvertBigInt(value) {\n const truncateInteger = (value) => value.split('.')[0];\n return IsStringNumeric(value) ? BigInt(truncateInteger(value)) : IsNumber(value) ? BigInt(Math.trunc(value)) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;\n}\nfunction TryConvertString(value) {\n return IsSymbol(value) && value.description !== undefined ? value.description.toString() : IsValueToString(value) ? value.toString() : value;\n}\nfunction TryConvertNumber(value) {\n return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertInteger(value) {\n return IsStringNumeric(value) ? parseInt(value) : IsNumber(value) ? Math.trunc(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertNull(value) {\n return IsString(value) && value.toLowerCase() === 'null' ? null : value;\n}\nfunction TryConvertUndefined(value) {\n return IsString(value) && value === 'undefined' ? undefined : value;\n}\n// ------------------------------------------------------------------\n// note: this function may return an invalid dates for the regex\n// tests above. Invalid dates will however be checked during the\n// casting function and will return a epoch date if invalid.\n// Consider better string parsing for the iso dates in future\n// revisions.\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction TryConvertDate(value) {\n return (IsDate(value) ? value :\n IsNumber(value) ? new Date(value) :\n IsValueTrue(value) ? new Date(1) :\n IsValueFalse(value) ? new Date(0) :\n IsStringNumeric(value) ? new Date(parseInt(value)) :\n IsTimeStringWithoutTimeZone(value) ? new Date(`1970-01-01T${value}.000Z`) :\n IsTimeStringWithTimeZone(value) ? new Date(`1970-01-01T${value}`) :\n IsDateTimeStringWithoutTimeZone(value) ? new Date(`${value}.000Z`) :\n IsDateTimeStringWithTimeZone(value) ? new Date(value) :\n IsDateString(value) ? new Date(`${value}T00:00:00.000Z`) :\n value);\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction Default(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n const elements = IsArray(value) ? value : [value];\n return elements.map((element) => Visit(schema.items, references, element));\n}\nfunction FromBigInt(schema, references, value) {\n return TryConvertBigInt(value);\n}\nfunction FromBoolean(schema, references, value) {\n return TryConvertBoolean(value);\n}\nfunction FromDate(schema, references, value) {\n return TryConvertDate(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n return TryConvertInteger(value);\n}\nfunction FromIntersect(schema, references, value) {\n return schema.allOf.reduce((value, schema) => Visit(schema, references, value), value);\n}\nfunction FromLiteral(schema, references, value) {\n return TryConvertLiteral(schema, value);\n}\nfunction FromNull(schema, references, value) {\n return TryConvertNull(value);\n}\nfunction FromNumber(schema, references, value) {\n return TryConvertNumber(value);\n}\n// prettier-ignore\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value;\n for (const propertyKey of Object.getOwnPropertyNames(schema.properties)) {\n if (!HasPropertyKey(value, propertyKey))\n continue;\n value[propertyKey] = Visit(schema.properties[propertyKey], references, value[propertyKey]);\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n const isConvertable = IsObject(value) && !IsArray(value);\n if (!isConvertable)\n return value;\n const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[propertyKey];\n for (const [propKey, propValue] of Object.entries(value)) {\n value[propKey] = Visit(property, references, propValue);\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromString(schema, references, value) {\n return TryConvertString(value);\n}\nfunction FromSymbol(schema, references, value) {\n return IsString(value) || IsNumber(value) ? Symbol(value) : value;\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, value) {\n const isConvertable = IsArray(value) && !IsUndefined(schema.items);\n if (!isConvertable)\n return value;\n return value.map((value, index) => {\n return (index < schema.items.length)\n ? Visit(schema.items[index], references, value)\n : value;\n });\n}\nfunction FromUndefined(schema, references, value) {\n return TryConvertUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n // Check if original value already matches one of the union variants\n for (const subschema of schema.anyOf) {\n if (Check(subschema, references, value)) {\n return value;\n }\n }\n // Attempt conversion for each variant\n for (const subschema of schema.anyOf) {\n const converted = Visit(subschema, references, Clone(value));\n if (!Check(subschema, references, converted))\n continue;\n return converted;\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return Default(value);\n }\n}\n/** `[Mutable]` Converts any type mismatched values to their target type if a reasonable conversion is possible. */\n// prettier-ignore\nexport function Convert(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// thrown externally\n// prettier-ignore\nexport class TransformDecodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`Unable to decode value as it does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformDecodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(error instanceof Error ? error.message : 'Unknown error');\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n }\n catch (error) {\n throw new TransformDecodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n return (IsArray(value))\n ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n if (!IsObject(value) || IsValueType(value))\n return Default(schema, path, value);\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...value };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Visit(target, [...references, ...additional], path, value);\n return Default(schema, path, result);\n}\nfunction FromNot(schema, references, path, value) {\n return Default(schema, path, Visit(schema.not, references, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...value };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // decode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...value };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n return (IsArray(value) && IsArray(schema.items))\n ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n // note: ensure interior is decoded first\n const decoded = Visit(subschema, references, path, value);\n return Default(schema, path, decoded);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'Symbol':\n return Default(schema_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function TransformDecode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TransformEncodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`The encoded value does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformEncodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(`${error instanceof Error ? error.message : 'Unknown error'}`);\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n }\n catch (error) {\n throw new TransformEncodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n return IsArray(defaulted)\n ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))\n : defaulted;\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Default(schema, path, value);\n return Visit(target, [...references, ...additional], path, result);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value) || IsValueType(value))\n return defaulted;\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...defaulted };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromNot(schema, references, path, value) {\n return Default(schema.not, path, Default(schema, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(defaulted))\n return defaulted;\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...defaulted };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // encode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value))\n return defaulted;\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...defaulted };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n const value1 = Default(schema, path, value);\n return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n // test value against union variants\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n const value1 = Visit(subschema, references, path, value);\n return Default(schema, path, value1);\n }\n // test transformed value against union variants\n for (const subschema of schema.anyOf) {\n const value1 = Visit(subschema, references, path, value);\n if (!Check(schema, references, value1))\n continue;\n return Default(schema, path, value1);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function TransformEncode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/index.mjs';\n// prettier-ignore\nfunction FromArray(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromImport(schema, references) {\n const additional = globalThis.Object.getOwnPropertyNames(schema.$defs).reduce((result, key) => [...result, schema.$defs[key]], []);\n const target = schema.$defs[schema.$ref];\n return IsTransform(schema) || Visit(target, [...additional, ...references]);\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromNot(schema, references) {\n return IsTransform(schema) || Visit(schema.not, references);\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n return (IsTransform(schema) ||\n Object.values(schema.properties).some((schema) => Visit(schema, references)) ||\n (IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n return IsTransform(schema) || Visit(schema.item, references);\n}\n// prettier-ignore\nfunction FromRecord(schema, references) {\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[pattern];\n return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromThis(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n if (schema.$id && visited.has(schema.$id))\n return false;\n if (schema.$id)\n visited.add(schema.$id);\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n default:\n return IsTransform(schema);\n }\n}\nconst visited = new Set();\n/** Returns true if this schema contains a transform codec */\nexport function HasTransform(schema, references) {\n visited.clear();\n return Visit(schema, references);\n}\n", "import { HasTransform, TransformDecode, TransformDecodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Decodes a value or throws if error */\nexport function Decode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n if (!Check(schema, references, value))\n throw new TransformDecodeCheckError(schema, value, Errors(schema, references, value).First());\n return HasTransform(schema, references) ? TransformDecode(schema, references, value) : value;\n}\n", "import { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsFunction, IsObject, IsUndefined, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueOrDefault\n// ------------------------------------------------------------------\nfunction ValueOrDefault(schema, value) {\n const defaultValue = HasPropertyKey(schema, 'default') ? schema.default : undefined;\n const clone = IsFunction(defaultValue) ? defaultValue() : Clone(defaultValue);\n return IsUndefined(value) ? clone : IsObject(value) && IsObject(clone) ? Object.assign(clone, value) : value;\n}\n// ------------------------------------------------------------------\n// HasDefaultProperty\n// ------------------------------------------------------------------\nfunction HasDefaultProperty(schema) {\n return IsKind(schema) && 'default' in schema;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n // if the value is an array, we attempt to initialize it's elements\n if (IsArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = Visit(schema.items, references, value[i]);\n }\n return value;\n }\n // ... otherwise use default initialization\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted))\n return defaulted;\n for (let i = 0; i < defaulted.length; i++) {\n defaulted[i] = Visit(schema.items, references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromDate(schema, references, value) {\n // special case intercept for dates\n return IsDate(value) ? value : ValueOrDefault(schema, value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n return schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references, defaulted);\n return IsObject(next) ? { ...acc, ...next } : next;\n }, {});\n}\nfunction FromObject(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n // return defaulted\n if (!IsObject(defaulted))\n return defaulted;\n const knownPropertyKeys = Object.getOwnPropertyNames(schema.properties);\n // properties\n for (const key of knownPropertyKeys) {\n // note: we need to traverse into the object and test if the return value\n // yielded a non undefined result. Here we interpret an undefined result as\n // a non assignable property and continue.\n const propertyValue = Visit(schema.properties[key], references, defaulted[key]);\n if (IsUndefined(propertyValue))\n continue;\n defaulted[key] = Visit(schema.properties[key], references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(schema.additionalProperties))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKeys.includes(key))\n continue;\n defaulted[key] = Visit(schema.additionalProperties, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRecord(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsObject(defaulted))\n return defaulted;\n const additionalPropertiesSchema = schema.additionalProperties;\n const [propertyKeyPattern, propertySchema] = Object.entries(schema.patternProperties)[0];\n const knownPropertyKey = new RegExp(propertyKeyPattern);\n // properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (!(knownPropertyKey.test(key) && HasDefaultProperty(propertySchema)))\n continue;\n defaulted[key] = Visit(propertySchema, references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(additionalPropertiesSchema))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKey.test(key))\n continue;\n defaulted[key] = Visit(additionalPropertiesSchema, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, ValueOrDefault(schema, value));\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted) || IsUndefined(schema.items))\n return defaulted;\n const [items, max] = [schema.items, Math.max(schema.items.length, defaulted.length)];\n for (let i = 0; i < max; i++) {\n if (i < items.length)\n defaulted[i] = Visit(items[i], references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromUnion(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n for (const inner of schema.anyOf) {\n const result = Visit(inner, references, Clone(defaulted));\n if (Check(inner, references, result)) {\n return result;\n }\n }\n return defaulted;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return ValueOrDefault(schema_, value);\n }\n}\n/** `[Mutable]` Generates missing properties on a value using default schema annotations if available. This function does not check the value and returns an unknown type. You should Check the result before use. Default is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Default(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValuePointerRootSetError extends TypeBoxError {\n constructor(value, path, update) {\n super('Cannot set root value');\n this.value = value;\n this.path = path;\n this.update = update;\n }\n}\nexport class ValuePointerRootDeleteError extends TypeBoxError {\n constructor(value, path) {\n super('Cannot delete root value');\n this.value = value;\n this.path = path;\n }\n}\n// ------------------------------------------------------------------\n// ValuePointer\n// ------------------------------------------------------------------\n/** Provides functionality to update values through RFC6901 string pointers */\n// prettier-ignore\nfunction Escape(component) {\n return component.indexOf('~') === -1 ? component : component.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n/** Formats the given pointer into navigable key components */\n// prettier-ignore\nexport function* Format(pointer) {\n if (pointer === '')\n return;\n let [start, end] = [0, 0];\n for (let i = 0; i < pointer.length; i++) {\n const char = pointer.charAt(i);\n if (char === '/') {\n if (i === 0) {\n start = i + 1;\n }\n else {\n end = i;\n yield Escape(pointer.slice(start, end));\n start = i + 1;\n }\n }\n else {\n end = i;\n }\n }\n yield Escape(pointer.slice(start));\n}\n/** Sets the value at the given pointer. If the value at the pointer does not exist it is created */\n// prettier-ignore\nexport function Set(value, pointer, update) {\n if (pointer === '')\n throw new ValuePointerRootSetError(value, pointer, update);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n next[component] = {};\n owner = next;\n next = next[component];\n key = component;\n }\n owner[key] = update;\n}\n/** Deletes a value at the given pointer */\n// prettier-ignore\nexport function Delete(value, pointer) {\n if (pointer === '')\n throw new ValuePointerRootDeleteError(value, pointer);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined || next[component] === null)\n return;\n owner = next;\n next = next[component];\n key = component;\n }\n if (Array.isArray(owner)) {\n const index = parseInt(key);\n owner.splice(index, 1);\n }\n else {\n delete owner[key];\n }\n}\n/** Returns true if a value exists at the given pointer */\n// prettier-ignore\nexport function Has(value, pointer) {\n if (pointer === '')\n return true;\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n return false;\n owner = next;\n next = next[component];\n key = component;\n }\n return Object.getOwnPropertyNames(owner).includes(key);\n}\n/** Gets the value at the given pointer */\n// prettier-ignore\nexport function Get(value, pointer) {\n if (pointer === '')\n return value;\n let current = value;\n for (const component of Format(pointer)) {\n if (current[component] === undefined)\n return undefined;\n current = current[component];\n }\n return current;\n}\n", "import { IsObject, IsDate, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Equality Checks\n// ------------------------------------------------------------------\nfunction ObjectType(left, right) {\n if (!IsObject(right))\n return false;\n const leftKeys = [...Object.keys(left), ...Object.getOwnPropertySymbols(left)];\n const rightKeys = [...Object.keys(right), ...Object.getOwnPropertySymbols(right)];\n if (leftKeys.length !== rightKeys.length)\n return false;\n return leftKeys.every((key) => Equal(left[key], right[key]));\n}\nfunction DateType(left, right) {\n return IsDate(right) && left.getTime() === right.getTime();\n}\nfunction ArrayType(left, right) {\n if (!IsArray(right) || left.length !== right.length)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction TypedArrayType(left, right) {\n if (!IsTypedArray(right) || left.length !== right.length || Object.getPrototypeOf(left).constructor.name !== Object.getPrototypeOf(right).constructor.name)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction ValueType(left, right) {\n return left === right;\n}\n// ------------------------------------------------------------------\n// Equal\n// ------------------------------------------------------------------\n/** Returns true if the left value deep-equals the right */\nexport function Equal(left, right) {\n if (IsDate(left))\n return DateType(left, right);\n if (IsTypedArray(left))\n return TypedArrayType(left, right);\n if (IsArray(left))\n return ArrayType(left, right);\n if (IsObject(left))\n return ObjectType(left, right);\n if (IsValueType(left))\n return ValueType(left, right);\n throw new Error('ValueEquals: Unable to compare value');\n}\n", "import { HasPropertyKey, IsStandardObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Equal } from '../equal/equal.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Literal } from '../../type/literal/index.mjs';\nimport { Object as _Object_ } from '../../type/object/index.mjs';\nimport { String } from '../../type/string/index.mjs';\nimport { Unknown } from '../../type/unknown/index.mjs';\nimport { Union } from '../../type/union/index.mjs';\nexport const Insert = _Object_({\n type: Literal('insert'),\n path: String(),\n value: Unknown(),\n});\nexport const Update = _Object_({\n type: Literal('update'),\n path: String(),\n value: Unknown(),\n});\nexport const Delete = _Object_({\n type: Literal('delete'),\n path: String(),\n});\nexport const Edit = Union([Insert, Update, Delete]);\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueDiffError extends TypeBoxError {\n constructor(value, message) {\n super(message);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// Command Factory\n// ------------------------------------------------------------------\nfunction CreateUpdate(path, value) {\n return { type: 'update', path, value };\n}\nfunction CreateInsert(path, value) {\n return { type: 'insert', path, value };\n}\nfunction CreateDelete(path) {\n return { type: 'delete', path };\n}\n// ------------------------------------------------------------------\n// AssertDiffable\n// ------------------------------------------------------------------\nfunction AssertDiffable(value) {\n if (globalThis.Object.getOwnPropertySymbols(value).length > 0)\n throw new ValueDiffError(value, 'Cannot diff objects with symbols');\n}\n// ------------------------------------------------------------------\n// Diffing Generators\n// ------------------------------------------------------------------\nfunction* ObjectType(path, current, next) {\n AssertDiffable(current);\n AssertDiffable(next);\n if (!IsStandardObject(next))\n return yield CreateUpdate(path, next);\n const currentKeys = globalThis.Object.getOwnPropertyNames(current);\n const nextKeys = globalThis.Object.getOwnPropertyNames(next);\n // ----------------------------------------------------------------\n // inserts\n // ----------------------------------------------------------------\n for (const key of nextKeys) {\n if (HasPropertyKey(current, key))\n continue;\n yield CreateInsert(`${path}/${key}`, next[key]);\n }\n // ----------------------------------------------------------------\n // updates\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (!HasPropertyKey(next, key))\n continue;\n if (Equal(current, next))\n continue;\n yield* Visit(`${path}/${key}`, current[key], next[key]);\n }\n // ----------------------------------------------------------------\n // deletes\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (HasPropertyKey(next, key))\n continue;\n yield CreateDelete(`${path}/${key}`);\n }\n}\nfunction* ArrayType(path, current, next) {\n if (!IsArray(next))\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n for (let i = 0; i < next.length; i++) {\n if (i < current.length)\n continue;\n yield CreateInsert(`${path}/${i}`, next[i]);\n }\n for (let i = current.length - 1; i >= 0; i--) {\n if (i < next.length)\n continue;\n yield CreateDelete(`${path}/${i}`);\n }\n}\nfunction* TypedArrayType(path, current, next) {\n if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name)\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n}\nfunction* ValueType(path, current, next) {\n if (current === next)\n return;\n yield CreateUpdate(path, next);\n}\nfunction* Visit(path, current, next) {\n if (IsStandardObject(current))\n return yield* ObjectType(path, current, next);\n if (IsArray(current))\n return yield* ArrayType(path, current, next);\n if (IsTypedArray(current))\n return yield* TypedArrayType(path, current, next);\n if (IsValueType(current))\n return yield* ValueType(path, current, next);\n throw new ValueDiffError(current, 'Unable to diff value');\n}\n// ------------------------------------------------------------------\n// Diff\n// ------------------------------------------------------------------\nexport function Diff(current, next) {\n return [...Visit('', current, next)];\n}\n// ------------------------------------------------------------------\n// Patch\n// ------------------------------------------------------------------\nfunction IsRootUpdate(edits) {\n return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update';\n}\nfunction IsIdentity(edits) {\n return edits.length === 0;\n}\nexport function Patch(current, edits) {\n if (IsRootUpdate(edits)) {\n return Clone(edits[0].value);\n }\n if (IsIdentity(edits)) {\n return Clone(current);\n }\n const clone = Clone(current);\n for (const edit of edits) {\n switch (edit.type) {\n case 'insert': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'update': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'delete': {\n ValuePointer.Delete(clone, edit.path);\n break;\n }\n }\n }\n return clone;\n}\n", "import { HasTransform, TransformEncode, TransformEncodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Encodes a value or throws if error */\nexport function Encode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n const encoded = HasTransform(schema, references) ? TransformEncode(schema, references, value) : value;\n if (!Check(schema, references, encoded))\n throw new TransformEncodeCheckError(schema, encoded, Errors(schema, references, encoded).First());\n return encoded;\n}\n", "import { IsObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// IsStandardObject\n// ------------------------------------------------------------------\nfunction IsStandardObject(value) {\n return IsObject(value) && !IsArray(value);\n}\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueMutateError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\nfunction ObjectType(root, path, current, next) {\n if (!IsStandardObject(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n const currentKeys = Object.getOwnPropertyNames(current);\n const nextKeys = Object.getOwnPropertyNames(next);\n for (const currentKey of currentKeys) {\n if (!nextKeys.includes(currentKey)) {\n delete current[currentKey];\n }\n }\n for (const nextKey of nextKeys) {\n if (!currentKeys.includes(nextKey)) {\n current[nextKey] = null;\n }\n }\n for (const nextKey of nextKeys) {\n Visit(root, `${path}/${nextKey}`, current[nextKey], next[nextKey]);\n }\n }\n}\nfunction ArrayType(root, path, current, next) {\n if (!IsArray(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n for (let index = 0; index < next.length; index++) {\n Visit(root, `${path}/${index}`, current[index], next[index]);\n }\n current.splice(next.length);\n }\n}\nfunction TypedArrayType(root, path, current, next) {\n if (IsTypedArray(current) && current.length === next.length) {\n for (let i = 0; i < current.length; i++) {\n current[i] = next[i];\n }\n }\n else {\n ValuePointer.Set(root, path, Clone(next));\n }\n}\nfunction ValueType(root, path, current, next) {\n if (current === next)\n return;\n ValuePointer.Set(root, path, next);\n}\nfunction Visit(root, path, current, next) {\n if (IsArray(next))\n return ArrayType(root, path, current, next);\n if (IsTypedArray(next))\n return TypedArrayType(root, path, current, next);\n if (IsStandardObject(next))\n return ObjectType(root, path, current, next);\n if (IsValueType(next))\n return ValueType(root, path, current, next);\n}\n// ------------------------------------------------------------------\n// IsNonMutableValue\n// ------------------------------------------------------------------\nfunction IsNonMutableValue(value) {\n return IsTypedArray(value) || IsValueType(value);\n}\nfunction IsMismatchedValue(current, next) {\n // prettier-ignore\n return ((IsStandardObject(current) && IsArray(next)) ||\n (IsArray(current) && IsStandardObject(next)));\n}\n// ------------------------------------------------------------------\n// Mutate\n// ------------------------------------------------------------------\n/** `[Mutable]` Performs a deep mutable value assignment while retaining internal references */\nexport function Mutate(current, next) {\n if (IsNonMutableValue(current) || IsNonMutableValue(next))\n throw new ValueMutateError('Only object and array types can be mutated at the root level');\n if (IsMismatchedValue(current, next))\n throw new ValueMutateError('Cannot assign due type mismatch of assignable values');\n Visit(current, '', current, next);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { TransformDecode, TransformEncode, HasTransform } from '../transform/index.mjs';\nimport { Assert } from '../assert/index.mjs';\nimport { Cast } from '../cast/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport class ParseError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\n// prettier-ignore\nexport var ParseRegistry;\n(function (ParseRegistry) {\n const registry = new Map([\n ['Assert', (type, references, value) => { Assert(type, references, value); return value; }],\n ['Cast', (type, references, value) => Cast(type, references, value)],\n ['Clean', (type, references, value) => Clean(type, references, value)],\n ['Clone', (_type, _references, value) => Clone(value)],\n ['Convert', (type, references, value) => Convert(type, references, value)],\n ['Decode', (type, references, value) => (HasTransform(type, references) ? TransformDecode(type, references, value) : value)],\n ['Default', (type, references, value) => Default(type, references, value)],\n ['Encode', (type, references, value) => (HasTransform(type, references) ? TransformEncode(type, references, value) : value)],\n ]);\n // Deletes an entry from the registry\n function Delete(key) {\n registry.delete(key);\n }\n ParseRegistry.Delete = Delete;\n // Sets an entry in the registry\n function Set(key, callback) {\n registry.set(key, callback);\n }\n ParseRegistry.Set = Set;\n // Gets an entry in the registry\n function Get(key) {\n return registry.get(key);\n }\n ParseRegistry.Get = Get;\n})(ParseRegistry || (ParseRegistry = {}));\n// ------------------------------------------------------------------\n// Default Parse Pipeline\n// ------------------------------------------------------------------\n// prettier-ignore\nexport const ParseDefault = [\n 'Clone',\n 'Clean',\n 'Default',\n 'Convert',\n 'Assert',\n 'Decode'\n];\n// ------------------------------------------------------------------\n// ParseValue\n// ------------------------------------------------------------------\nfunction ParseValue(operations, type, references, value) {\n return operations.reduce((value, operationKey) => {\n const operation = ParseRegistry.Get(operationKey);\n if (IsUndefined(operation))\n throw new ParseError(`Unable to find Parse operation '${operationKey}'`);\n return operation(type, references, value);\n }, value);\n}\n/** Parses a value */\nexport function Parse(...args) {\n // prettier-ignore\n const [operations, schema, references, value] = (args.length === 4 ? [args[0], args[1], args[2], args[3]] :\n args.length === 3 ? IsArray(args[0]) ? [args[0], args[1], [], args[2]] : [ParseDefault, args[0], args[1], args[2]] :\n args.length === 2 ? [ParseDefault, args[0], [], args[1]] :\n (() => { throw new ParseError('Invalid Arguments'); })());\n return ParseValue(operations, schema, references, value);\n}\n", "export { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nexport { Assert } from '../assert/index.mjs';\nexport { Cast } from '../cast/index.mjs';\nexport { Check } from '../check/index.mjs';\nexport { Clean } from '../clean/index.mjs';\nexport { Clone } from '../clone/index.mjs';\nexport { Convert } from '../convert/index.mjs';\nexport { Create } from '../create/index.mjs';\nexport { Decode } from '../decode/index.mjs';\nexport { Default } from '../default/index.mjs';\nexport { Diff, Patch, Edit } from '../delta/index.mjs';\nexport { Encode } from '../encode/index.mjs';\nexport { Equal } from '../equal/index.mjs';\nexport { Hash } from '../hash/index.mjs';\nexport { Mutate } from '../mutate/index.mjs';\nexport { Parse } from '../parse/index.mjs';\n", "export const PROTOCOL_VERSION = 2 as const;\nexport const MAX_PROTOCOL_FRAME_BYTES = 1024 * 1024;\n", "import { Type, type Static } from \"@sinclair/typebox\";\n\nimport { PiRuntimeIdentitySchema } from \"./pi-identity.js\";\nimport { PROTOCOL_VERSION } from \"./version.js\";\n\nexport const OperationSchema = Type.Object(\n { operationId: Type.String({ minLength: 1 }), createdAt: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n);\n\nexport const RequestSchema = Type.Object(\n {\n v: Type.Literal(PROTOCOL_VERSION),\n requestId: Type.String({ minLength: 1 }),\n method: Type.Union([\n Type.Literal(\"agent.create\"),\n Type.Literal(\"agent.send\"),\n Type.Literal(\"agent.receive\"),\n Type.Literal(\"agent.status\"),\n Type.Literal(\"agent.list\"),\n Type.Literal(\"agent.watch\"),\n Type.Literal(\"agent.destroy\"),\n Type.Literal(\"agent.compact\"),\n ]),\n params: Type.Record(Type.String(), Type.Unknown()),\n operation: Type.Optional(OperationSchema),\n runtime: Type.Optional(\n Type.Object({ pi: PiRuntimeIdentitySchema }, { additionalProperties: false }),\n ),\n },\n { additionalProperties: false },\n);\n\nexport type ProtocolRequest = Static<typeof RequestSchema>;\n\nexport interface ProtocolSuccess {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly ok: true;\n readonly result: unknown;\n}\n\nexport interface ProtocolFailure {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly ok: false;\n readonly error: {\n readonly code: string;\n readonly message: string;\n readonly details?: Record<string, unknown>;\n };\n}\n\nexport type ProtocolResponse = ProtocolSuccess | ProtocolFailure;\n\nexport type ProtocolStreamFrame =\n | { readonly v: typeof PROTOCOL_VERSION; readonly requestId: string; readonly stream: \"ready\" }\n | {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly stream: \"chunk\";\n readonly data: string;\n }\n | { readonly v: typeof PROTOCOL_VERSION; readonly requestId: string; readonly stream: \"end\" }\n | {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly stream: \"error\";\n readonly error: { readonly code: string; readonly message: string };\n };\n", "import { Value } from \"@sinclair/typebox/value\";\n\nimport { RequestSchema, type ProtocolRequest } from \"./envelope.js\";\n\nexport function parseProtocolRequest(value: unknown): ProtocolRequest {\n if (!Value.Check(RequestSchema, value)) {\n const first = Value.Errors(RequestSchema, value).First();\n throw new Error(\n first === undefined ? \"Invalid protocol request\" : `Invalid protocol request: ${first.path}`,\n );\n }\n return value;\n}\n", "import type { Socket } from \"node:net\";\n\nimport { MAX_PROTOCOL_FRAME_BYTES } from \"./version.js\";\n\nexport function readJsonLines(\n socket: Socket,\n onValue: (value: unknown) => void,\n onError: (error: Error) => void,\n maxFrameBytes = MAX_PROTOCOL_FRAME_BYTES,\n): () => void {\n let buffer = Buffer.alloc(0);\n const onData = (chunk: Buffer) => {\n buffer = Buffer.concat([buffer, chunk]);\n while (true) {\n const newline = buffer.indexOf(0x0a);\n if (newline < 0) {\n if (buffer.length > maxFrameBytes) {\n onError(new Error(\"Protocol frame exceeds maximum size\"));\n }\n return;\n }\n if (newline > maxFrameBytes) {\n onError(new Error(\"Protocol frame exceeds maximum size\"));\n return;\n }\n const line = buffer.subarray(0, newline).toString(\"utf8\").replace(/\\r$/, \"\");\n buffer = buffer.subarray(newline + 1);\n if (line.length === 0) continue;\n try {\n onValue(JSON.parse(line));\n } catch {\n onError(new Error(\"Malformed JSON protocol frame\"));\n return;\n }\n }\n };\n socket.on(\"data\", onData);\n return () => socket.off(\"data\", onData);\n}\n\nexport function writeJsonLine(socket: Socket, value: unknown): boolean {\n return socket.write(`${JSON.stringify(value)}\\n`);\n}\n", "const KIBIBYTE = 1024;\nconst MEBIBYTE = 1024 * KIBIBYTE;\n\nexport interface RuntimeLimits {\n readonly maxResidentProcesses: number;\n readonly maxMessageBytes: number;\n readonly maxProtocolFrameBytes: number;\n readonly maxPiFrameBytes: number;\n readonly maxWatchers: number;\n readonly maxWatchQueuedBytes: number;\n}\n\nexport const DEFAULT_RUNTIME_LIMITS: RuntimeLimits = Object.freeze({\n maxResidentProcesses: 32,\n maxMessageBytes: 512 * KIBIBYTE,\n maxProtocolFrameBytes: MEBIBYTE,\n maxPiFrameBytes: 8 * MEBIBYTE,\n maxWatchers: 128,\n maxWatchQueuedBytes: MEBIBYTE,\n});\n\nconst ENV_KEYS: Readonly<Record<keyof RuntimeLimits, string>> = {\n maxResidentProcesses: \"PIFLEET_MAX_RESIDENT_PROCESSES\",\n maxMessageBytes: \"PIFLEET_MAX_MESSAGE_BYTES\",\n maxProtocolFrameBytes: \"PIFLEET_MAX_PROTOCOL_FRAME_BYTES\",\n maxPiFrameBytes: \"PIFLEET_MAX_PI_FRAME_BYTES\",\n maxWatchers: \"PIFLEET_MAX_WATCHERS\",\n maxWatchQueuedBytes: \"PIFLEET_MAX_WATCH_QUEUED_BYTES\",\n};\n\nexport function runtimeLimitsFromEnv(env: NodeJS.ProcessEnv = process.env): RuntimeLimits {\n return {\n maxResidentProcesses: positiveInteger(env, \"maxResidentProcesses\"),\n maxMessageBytes: positiveInteger(env, \"maxMessageBytes\"),\n maxProtocolFrameBytes: positiveInteger(env, \"maxProtocolFrameBytes\"),\n maxPiFrameBytes: positiveInteger(env, \"maxPiFrameBytes\"),\n maxWatchers: positiveInteger(env, \"maxWatchers\"),\n maxWatchQueuedBytes: positiveInteger(env, \"maxWatchQueuedBytes\"),\n };\n}\n\nfunction positiveInteger(env: NodeJS.ProcessEnv, key: keyof RuntimeLimits): number {\n const variable = ENV_KEYS[key];\n const raw = env[variable];\n if (raw === undefined || raw.length === 0) return DEFAULT_RUNTIME_LIMITS[key];\n const value = Number(raw);\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${variable} must be a positive integer`);\n }\n return value;\n}\n", "export type Result<Value, Error> =\n | { readonly ok: true; readonly value: Value }\n | { readonly ok: false; readonly error: Error };\n\nexport function ok<Value>(value: Value): Result<Value, never> {\n return { ok: true, value };\n}\n\nexport function err<Error>(error: Error): Result<never, Error> {\n return { ok: false, error };\n}\n", "export type RpcWatchErrorCode =\n | \"watcher_lagged\"\n | \"watcher_capacity_exceeded\"\n | \"pi_start_failed\"\n | \"runtime_interrupted\"\n | \"runtime_unavailable\";\n\nexport class RpcWatchError extends Error {\n constructor(\n readonly code: RpcWatchErrorCode,\n message: string = code,\n ) {\n super(message);\n this.name = \"RpcWatchError\";\n }\n}\n\ninterface WatchSubscription {\n readonly agentName: string;\n readonly signal: AbortSignal;\n readonly queue: Buffer[];\n readonly maxQueuedBytes: number;\n queuedBytes: number;\n incarnationId: string | null;\n ended: boolean;\n terminalError: RpcWatchError | null;\n wake: (() => void) | null;\n onAbort: () => void;\n}\n\nexport class RpcWatchHub {\n readonly #subscriptions = new Map<string, Set<WatchSubscription>>();\n readonly #activeIncarnations = new Map<string, string>();\n\n constructor(\n private readonly limits: { readonly maxWatchers: number; readonly maxQueuedBytes: number },\n ) {}\n\n subscribe(agentName: string, signal: AbortSignal): AsyncIterable<Buffer> {\n if (this.#count() >= this.limits.maxWatchers) {\n throw new RpcWatchError(\"watcher_capacity_exceeded\");\n }\n\n const subscription: WatchSubscription = {\n agentName,\n signal,\n queue: [],\n maxQueuedBytes: this.limits.maxQueuedBytes,\n queuedBytes: 0,\n incarnationId: this.#activeIncarnations.get(agentName) ?? null,\n ended: false,\n terminalError: null,\n wake: null,\n onAbort: () => this.#abort(subscription),\n };\n signal.addEventListener(\"abort\", subscription.onAbort, { once: true });\n if (signal.aborted) subscription.onAbort();\n else {\n const subscriptions = this.#subscriptions.get(agentName) ?? new Set<WatchSubscription>();\n subscriptions.add(subscription);\n this.#subscriptions.set(agentName, subscriptions);\n }\n\n return { [Symbol.asyncIterator]: () => this.#iterator(subscription) };\n }\n\n beginIncarnation(agentName: string, incarnationId: string): (bytes: Buffer) => void {\n this.#activeIncarnations.set(agentName, incarnationId);\n for (const subscription of this.#subscriptions.get(agentName) ?? []) {\n if (subscription.incarnationId === null && !subscription.ended) {\n subscription.incarnationId = incarnationId;\n }\n }\n return (bytes) => this.#publish(agentName, incarnationId, bytes);\n }\n\n endIncarnation(\n agentName: string,\n incarnationId: string,\n error: RpcWatchError | null = null,\n ): void {\n if (this.#activeIncarnations.get(agentName) === incarnationId) {\n this.#activeIncarnations.delete(agentName);\n }\n for (const subscription of [...(this.#subscriptions.get(agentName) ?? [])]) {\n if (subscription.incarnationId === incarnationId) this.#endAfterDrain(subscription, error);\n }\n }\n\n closeAgent(agentName: string, error: RpcWatchError | null = null): void {\n this.#activeIncarnations.delete(agentName);\n for (const subscription of [...(this.#subscriptions.get(agentName) ?? [])]) {\n this.#endAfterDrain(subscription, error);\n }\n }\n\n closeAll(error: RpcWatchError | null = null): void {\n for (const agentName of [...this.#subscriptions.keys()]) this.closeAgent(agentName, error);\n }\n\n #publish(agentName: string, incarnationId: string, bytes: Buffer): void {\n for (const subscription of [...(this.#subscriptions.get(agentName) ?? [])]) {\n if (subscription.incarnationId !== incarnationId || subscription.ended) continue;\n if (subscription.queuedBytes + bytes.byteLength > subscription.maxQueuedBytes) {\n this.#finish(subscription, new RpcWatchError(\"watcher_lagged\"));\n continue;\n }\n subscription.queue.push(Buffer.from(bytes));\n subscription.queuedBytes += bytes.byteLength;\n subscription.wake?.();\n subscription.wake = null;\n }\n }\n\n async *#iterator(subscription: WatchSubscription): AsyncGenerator<Buffer> {\n try {\n while (true) {\n while (subscription.queue.length > 0) {\n const bytes = subscription.queue.shift()!;\n subscription.queuedBytes -= bytes.byteLength;\n yield bytes;\n }\n if (subscription.terminalError !== null) throw subscription.terminalError;\n if (subscription.ended) return;\n await new Promise<void>((resolve) => {\n subscription.wake = resolve;\n });\n }\n } finally {\n this.#abort(subscription);\n }\n }\n\n #endAfterDrain(subscription: WatchSubscription, error: RpcWatchError | null = null): void {\n if (subscription.ended) return;\n subscription.ended = true;\n subscription.terminalError = error;\n subscription.wake?.();\n subscription.wake = null;\n }\n\n #finish(subscription: WatchSubscription, error: RpcWatchError | null = null): void {\n if (subscription.ended) return;\n subscription.ended = true;\n subscription.terminalError = error;\n subscription.wake?.();\n subscription.wake = null;\n }\n\n #abort(subscription: WatchSubscription): void {\n subscription.queue.length = 0;\n subscription.queuedBytes = 0;\n subscription.ended = true;\n subscription.terminalError = null;\n this.#remove(subscription);\n subscription.wake?.();\n subscription.wake = null;\n }\n\n #remove(subscription: WatchSubscription): void {\n subscription.signal.removeEventListener(\"abort\", subscription.onAbort);\n const subscriptions = this.#subscriptions.get(subscription.agentName);\n if (subscriptions === undefined) return;\n subscriptions.delete(subscription);\n if (subscriptions.size === 0) this.#subscriptions.delete(subscription.agentName);\n }\n\n #count(): number {\n let count = 0;\n for (const subscriptions of this.#subscriptions.values()) count += subscriptions.size;\n return count;\n }\n}\n", "import { randomUUID } from \"node:crypto\";\n\nimport type {\n CompactInput,\n CompactResult,\n CreateInput,\n CreateResult,\n DestroyInput,\n DestroyResult,\n FleetClientError,\n ListResult,\n ReceiveInput,\n ReceiveResult,\n SendInput,\n SendResult,\n StatusInput,\n StatusResult,\n} from \"../client/fleet-client.js\";\nimport { PiExecutionUnavailableError, type PiLauncher } from \"../pi/adapter.js\";\nimport { createLaunchProfile, observeSession } from \"../pi/launch-profile.js\";\nimport { PiCleanupUncertainError, PiCompactionError, type PiProcess } from \"../pi/process.js\";\nimport { waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport {\n MANAGED_PI_RUNTIME_IDENTITY,\n samePiRuntimeIdentity,\n type PiRuntimeIdentity,\n} from \"../protocol/pi-identity.js\";\nimport { err, ok, type Result } from \"../shared/result.js\";\nimport { DEFAULT_RUNTIME_LIMITS, type RuntimeLimits } from \"../shared/runtime-limits.js\";\nimport type { FleetStore, StoredAgent } from \"../store/fleet-store.js\";\nimport { AgentCoordinator } from \"./agent-coordinator.js\";\nimport { RpcWatchError, RpcWatchHub } from \"./rpc-watch-hub.js\";\n\ninterface RecordedOperation {\n readonly method: \"create\" | \"send\" | \"destroy\" | \"compact\";\n readonly fingerprint: string;\n readonly result: Result<unknown, FleetClientError>;\n}\n\nexport interface FleetServiceOptions {\n readonly launcher?: PiLauncher;\n readonly now?: () => string;\n readonly limits?: Partial<RuntimeLimits>;\n readonly piIdentity?: PiRuntimeIdentity;\n}\n\nexport class FleetService {\n readonly #operations = new Map<string, RecordedOperation>();\n readonly #inflightOperations = new Map<\n string,\n {\n readonly method: RecordedOperation[\"method\"];\n readonly fingerprint: string;\n readonly promise: Promise<Result<unknown, FleetClientError>>;\n }\n >();\n readonly #coordinators = new Map<string, AgentCoordinator>();\n readonly #processSlots = new Set<string>();\n readonly #agentLanes = new Map<string, Promise<void>>();\n readonly #sendLanes = new Map<string, Promise<void>>();\n readonly #compactingAgents = new Set<string>();\n readonly #destroyingAgents = new Set<string>();\n readonly #launcher: PiLauncher | undefined;\n readonly #now: () => string;\n readonly #limits: RuntimeLimits;\n readonly #watchHub: RpcWatchHub;\n readonly #piIdentity: PiRuntimeIdentity;\n #closing = false;\n\n constructor(\n private readonly store: FleetStore,\n options: FleetServiceOptions | (() => string) = {},\n ) {\n this.#launcher = typeof options === \"function\" ? undefined : options.launcher;\n this.#now =\n typeof options === \"function\" ? options : (options.now ?? (() => new Date().toISOString()));\n this.#piIdentity =\n typeof options === \"function\"\n ? MANAGED_PI_RUNTIME_IDENTITY\n : (options.piIdentity ?? MANAGED_PI_RUNTIME_IDENTITY);\n this.#limits = {\n ...DEFAULT_RUNTIME_LIMITS,\n ...(typeof options === \"function\" ? {} : options.limits),\n };\n this.#watchHub = new RpcWatchHub({\n maxWatchers: this.#limits.maxWatchers,\n maxQueuedBytes: this.#limits.maxWatchQueuedBytes,\n });\n }\n\n create(\n input: CreateInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CreateResult, FleetClientError>> {\n return this.#runOperation(operationId, \"create\", input, () =>\n this.#enqueueAgent(input.name, () => this.#createImpl(input, operationId, callerPiIdentity)),\n );\n }\n\n async #createImpl(\n input: CreateInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CreateResult, FleetClientError>> {\n const replay = await this.#operation<CreateResult>(operationId, \"create\", input);\n if (replay !== null) return replay;\n let profile: ReturnType<typeof createLaunchProfile>;\n try {\n profile = createLaunchProfile({\n cwd: input.cwd,\n piArgv: input.piArgv,\n });\n } catch (error: unknown) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: error instanceof Error ? error.message : \"Invalid Pi startup arguments.\",\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n if (\n input.instructions !== undefined &&\n Buffer.byteLength(input.instructions, \"utf8\") > this.#limits.maxMessageBytes\n ) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: `Initial instructions exceed the ${String(this.#limits.maxMessageBytes)} byte limit.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n if ((await this.store.getAgent(input.name)) !== null) {\n const result = err<FleetClientError>({\n code: \"name_taken\",\n message: `Agent ${input.name} already exists.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n const result = err<FleetClientError>(identityFailure);\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n const result = err<FleetClientError>(preflightFailure);\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n let agent: StoredAgent = {\n summary: {\n id: randomUUID(),\n name: input.name,\n state: this.#launcher === undefined ? \"idle\" : \"restoring\",\n process: { state: this.#launcher === undefined ? \"resident\" : \"starting\" },\n session: { path: null, id: null },\n },\n launch: profile,\n latestAssistantText: null,\n responseObservedAt: null,\n };\n if (!(await this.store.createAgent(agent))) {\n const result = err<FleetClientError>({\n code: \"name_taken\",\n message: `Agent ${input.name} already exists.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n await this.#recordOperationTarget(operationId, agent);\n\n if (this.#launcher !== undefined && this.#reserveProcessSlot(input.name) !== \"acquired\") {\n await this.store.deleteAgent(input.name);\n const result = err<FleetClientError>({\n code: \"capacity_exceeded\",\n message: `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n\n let incarnationId: string | null = null;\n try {\n if (this.#launcher !== undefined) {\n incarnationId = randomUUID();\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: null,\n state: \"starting\",\n });\n const publishStdout = this.#watchHub.beginIncarnation(input.name, incarnationId);\n const process = await this.#launcher.start(\n profile,\n false,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId: incarnationId!,\n agentName: input.name,\n pid,\n state: \"starting\",\n });\n },\n publishStdout,\n );\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const observedProfile = observeSession(profile, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n });\n agent = {\n ...agent,\n launch: observedProfile,\n summary: {\n ...agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n },\n };\n await this.store.putAgent(agent);\n const coordinator = this.#attachCoordinator(agent, process, incarnationId);\n if (input.instructions !== undefined) {\n const acceptedAt = this.#now();\n const sendId = `${operationId}:initial`;\n const ordinal = await this.store.nextSendOrdinal(input.name);\n await this.store.putSend({\n sendId,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n state: \"pending\",\n acceptedAt,\n });\n await this.store.putSend({\n sendId,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n state: \"dispatching\",\n acceptedAt,\n });\n try {\n await this.#enqueueSend(input.name, () => coordinator.send(input.instructions!));\n await this.store.putSend({\n sendId,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n state: \"acknowledged\",\n acceptedAt,\n });\n } catch (error: unknown) {\n await this.store.putSend({\n sendId,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n state: \"uncertain\",\n acceptedAt,\n });\n agent = {\n ...coordinator.storedAgent,\n summary: {\n ...coordinator.storedAgent.summary,\n state: \"failed\",\n error: { code: \"delivery_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n throw error;\n }\n }\n agent = coordinator.storedAgent;\n }\n\n const result = ok<CreateResult>({\n schemaVersion: 1,\n type: \"agent.created\",\n agent: agent.summary,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n } catch (error: unknown) {\n const coordinator = this.#coordinators.get(input.name);\n if (incarnationId !== null && coordinator === undefined) {\n this.#watchHub.endIncarnation(\n input.name,\n incarnationId,\n new RpcWatchError(\"pi_start_failed\", \"Pi failed to start\"),\n );\n }\n const deliveryAmbiguous =\n (await this.store.getSend(`${operationId}:initial`))?.state === \"uncertain\";\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n if (coordinator !== undefined) {\n try {\n await coordinator.stop(\"runtime_shutdown\");\n } catch {\n cleanupUncertain = true;\n }\n }\n this.#coordinators.delete(input.name);\n if (cleanupUncertain) {\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n } else if (deliveryAmbiguous) {\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: \"absent\" },\n error: { code: \"delivery_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n this.#releaseProcessSlot(input.name);\n } else {\n if (incarnationId !== null) {\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: error instanceof PiCleanupUncertainError ? error.pid : null,\n state: \"gone\",\n });\n }\n this.#releaseProcessSlot(input.name);\n await this.store.deleteAgent(input.name);\n }\n const code = cleanupUncertain\n ? \"incarnation_cleanup_uncertain\"\n : deliveryAmbiguous\n ? \"delivery_uncertain\"\n : \"pi_start_failed\";\n const result = err<FleetClientError>({\n code,\n message:\n code === \"delivery_uncertain\"\n ? \"Pi may have accepted the initial instructions; pi-fleet will not replay them automatically.\"\n : code === \"incarnation_cleanup_uncertain\"\n ? \"pi-fleet could not prove the Pi process group was removed.\"\n : \"Pi failed to start.\",\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n }\n\n send(\n input: SendInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<SendResult, FleetClientError>> {\n return this.#runOperation(operationId, \"send\", input, () =>\n this.#enqueueAgent(input.name, () => this.#sendImpl(input, operationId, callerPiIdentity)),\n );\n }\n\n async #sendImpl(\n input: SendInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<SendResult, FleetClientError>> {\n const replay = await this.#operation<SendResult>(operationId, \"send\", input);\n if (replay !== null) return replay;\n if (this.#destroyingAgents.has(input.name)) {\n const result = err<FleetClientError>({\n code: \"agent_destroying\",\n message: `Agent ${input.name} is being destroyed.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n if (Buffer.byteLength(input.message, \"utf8\") > this.#limits.maxMessageBytes) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: `Message exceeds the ${String(this.#limits.maxMessageBytes)} byte limit.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const agent = await this.store.getAgent(input.name);\n if (agent === null) return this.#rememberNotFound(operationId, \"send\", input);\n if (agent.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: \"incarnation_cleanup_uncertain\",\n message: `pi-fleet cannot prove the previous process for ${input.name} is gone.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n const result = err<FleetClientError>(identityFailure);\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n const result = err<FleetClientError>(preflightFailure);\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n\n const acceptedAt = this.#now();\n const result = await this.#enqueueSend(input.name, async () => {\n const ordinal = await this.store.nextSendOrdinal(input.name);\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"pending\",\n acceptedAt,\n });\n return this.#dispatchSend(input, operationId, acceptedAt, agent, ordinal);\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n\n compact(\n input: CompactInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CompactResult, FleetClientError>> {\n return this.#runOperation(operationId, \"compact\", input, () =>\n this.#enqueueAgent(input.name, () => this.#compactImpl(input, operationId, callerPiIdentity)),\n );\n }\n\n async #compactImpl(\n input: CompactInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CompactResult, FleetClientError>> {\n const replay = await this.#operation<CompactResult>(operationId, \"compact\", input);\n if (replay !== null) return replay;\n const requestedAt = this.#now();\n let agent = await this.store.getAgent(input.name);\n if (agent === null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"agent_not_found\",\n message: `Agent ${input.name} was not found.`,\n });\n }\n await this.#recordOperationTarget(operationId, agent);\n if (agent.summary.process.state === \"cleanup_uncertain\") {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"incarnation_cleanup_uncertain\",\n message: `pi-fleet cannot prove the previous process for ${input.name} is gone.`,\n });\n }\n if (agent.summary.state !== \"idle\") {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"agent_busy\",\n message: `Agent ${input.name} must be idle before compaction.`,\n });\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, identityFailure);\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, preflightFailure);\n }\n\n await this.store.putCompact({\n compactId: operationId,\n agentName: input.name,\n state: \"pending\",\n requestedAt,\n });\n\n let coordinator: AgentCoordinator | undefined;\n try {\n coordinator = await this.#ensureResidentForCompact(agent);\n agent = coordinator?.storedAgent ?? agent;\n const nativeCompaction = coordinator !== undefined;\n if (nativeCompaction) this.#compactingAgents.add(input.name);\n let compaction: CompactResult[\"compaction\"];\n try {\n await this.store.putCompact({\n compactId: operationId,\n agentName: input.name,\n state: \"dispatching\",\n requestedAt,\n });\n if (coordinator === undefined && this.#launcher === undefined) {\n compaction = { tokensBefore: 0, estimatedTokensAfter: 0 };\n } else {\n if (coordinator === undefined) throw new Error(\"Pi is unavailable for compaction\");\n compaction = await coordinator.compact();\n }\n } finally {\n if (nativeCompaction) this.#compactingAgents.delete(input.name);\n }\n await this.store.putCompact({\n compactId: operationId,\n agentName: input.name,\n state: \"completed\",\n requestedAt,\n result: compaction,\n });\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n compaction,\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n } catch (error: unknown) {\n const compact = await this.store.getCompact(operationId);\n if (compact?.state === \"completed\" && compact.result !== undefined) {\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n compaction: compact.result,\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n const message = error instanceof Error ? error.message : \"Pi compaction failed\";\n const busy = message === \"Agent is busy\";\n const preDispatch = compact?.state === \"pending\";\n const capacity = message === \"Process capacity exceeded\";\n const compactionError = error instanceof PiCompactionError ? error.code : null;\n const uncertain = !busy && !preDispatch && compactionError === null;\n if (uncertain && coordinator !== undefined && !this.#destroyingAgents.has(input.name)) {\n await coordinator.stop(\"runtime_shutdown\").catch(() => undefined);\n }\n const cleanupUncertain =\n (await this.store.getAgent(input.name))?.summary.process.state === \"cleanup_uncertain\";\n const failure: FleetClientError = {\n code: busy\n ? \"agent_busy\"\n : capacity\n ? \"capacity_exceeded\"\n : cleanupUncertain\n ? \"incarnation_cleanup_uncertain\"\n : preDispatch\n ? \"pi_start_failed\"\n : (compactionError ?? \"compaction_uncertain\"),\n message: busy\n ? `Agent ${input.name} must be idle before compaction.`\n : capacity\n ? `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`\n : cleanupUncertain\n ? `pi-fleet could not prove the failed Pi restoration for ${input.name} was removed.`\n : preDispatch\n ? `Pi failed to restore for ${input.name}; compaction was not dispatched.`\n : compactionError === \"nothing_to_compact\"\n ? `Agent ${input.name} has nothing to compact.`\n : compactionError === \"compaction_failed\"\n ? \"Pi compaction failed.\"\n : \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n };\n const result = err(failure);\n const terminalFailure = busy || preDispatch || compactionError !== null;\n await this.store.putCompact({\n compactId: operationId,\n agentName: input.name,\n state: terminalFailure ? \"failed\" : \"uncertain\",\n requestedAt,\n ...(terminalFailure ? { error: failure } : {}),\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n }\n\n async #ensureResidentForCompact(agent: StoredAgent): Promise<AgentCoordinator | undefined> {\n let coordinator = this.#coordinators.get(agent.summary.name);\n if (coordinator !== undefined || this.#launcher === undefined) return coordinator;\n const reservation = this.#reserveProcessSlot(agent.summary.name);\n if (reservation === \"full\") {\n throw new Error(\"Process capacity exceeded\");\n }\n if (reservation === \"existing\") {\n coordinator = await this.#waitForCoordinator(agent.summary.name);\n if (coordinator === undefined)\n throw new Error(\"Pi restoration did not produce a live process\");\n return coordinator;\n }\n\n const restoring = await this.#markRestoring(agent);\n const incarnationId = randomUUID();\n let process: PiProcess | null = null;\n try {\n await this.store.putIncarnation({\n incarnationId,\n agentName: agent.summary.name,\n pid: null,\n state: \"starting\",\n });\n const publishStdout = this.#watchHub.beginIncarnation(agent.summary.name, incarnationId);\n process = await this.#launcher.start(\n restoring.launch,\n true,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId,\n agentName: agent.summary.name,\n pid,\n state: \"starting\",\n });\n },\n publishStdout,\n );\n await this.store.putIncarnation({\n incarnationId,\n agentName: agent.summary.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const restored: StoredAgent = {\n ...restoring,\n launch: observeSession(restoring.launch, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n }),\n summary: {\n ...restoring.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n error: undefined,\n },\n };\n await this.store.putAgent(restored);\n return this.#attachCoordinator(restored, process, incarnationId);\n } catch (error: unknown) {\n this.#watchHub.endIncarnation(\n agent.summary.name,\n incarnationId,\n new RpcWatchError(\"pi_start_failed\", \"Pi failed to start\"),\n );\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n let pid = error instanceof PiCleanupUncertainError ? error.pid : null;\n if (process !== null) {\n pid = process.pid;\n try {\n await process.stop();\n } catch {\n cleanupUncertain = true;\n }\n }\n await this.store.putAgent({\n ...restoring,\n summary: {\n ...restoring.summary,\n state: \"failed\",\n process: { state: cleanupUncertain ? \"cleanup_uncertain\" : \"absent\" },\n error: { code: cleanupUncertain ? \"incarnation_cleanup_uncertain\" : \"pi_start_failed\" },\n },\n });\n await this.store.putIncarnation({\n incarnationId,\n agentName: agent.summary.name,\n pid,\n state: cleanupUncertain ? \"cleanup_uncertain\" : \"gone\",\n });\n if (!cleanupUncertain) this.#releaseProcessSlot(agent.summary.name);\n throw error;\n }\n }\n\n async reconcile(): Promise<void> {\n const nonterminalCompacts = await this.store.listNonterminalCompacts();\n const nonterminalSends = await this.store.listNonterminalSends();\n const activeWorkAgents = new Set([\n ...nonterminalSends.map((send) => send.agentName),\n ...nonterminalCompacts\n .filter((compact) => compact.state === \"dispatching\")\n .map((compact) => compact.agentName),\n ]);\n for (const incarnation of await this.store.listActiveIncarnations()) {\n if (incarnation.state !== \"cleanup_uncertain\") continue;\n this.#processSlots.add(incarnation.agentName);\n if (incarnation.pid === null || !(await waitForProcessGroupExit(incarnation.pid))) continue;\n await this.store.putIncarnation({ ...incarnation, state: \"gone\" });\n this.#releaseProcessSlot(incarnation.agentName);\n const agent = await this.store.getAgent(incarnation.agentName);\n if (agent?.summary.process.state !== \"cleanup_uncertain\") continue;\n const interrupted =\n activeWorkAgents.has(incarnation.agentName) ||\n agent.summary.error?.code === \"runtime_interrupted\";\n await this.store.putAgent({\n ...agent,\n summary: {\n ...agent.summary,\n state: interrupted ? \"failed\" : \"idle\",\n process: { state: \"absent\" },\n error: interrupted ? { code: \"runtime_interrupted\" } : undefined,\n },\n });\n }\n\n const piExecutionFailure = await this.#piExecutionFailure();\n\n for (const compact of nonterminalCompacts) {\n const input = { name: compact.agentName };\n if (compact.state === \"dispatching\") {\n const result = err<FleetClientError>({\n code: \"compaction_uncertain\",\n message: \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n });\n await this.store.putCompact({ ...compact, state: \"uncertain\" });\n await this.#remember(compact.compactId, \"compact\", input, result);\n } else if (piExecutionFailure === null) {\n await this.compact(input, compact.compactId);\n }\n }\n\n for (const send of nonterminalSends) {\n const input = { name: send.agentName, message: send.message };\n if (send.state === \"dispatching\") {\n const result = err<FleetClientError>({\n code: \"delivery_uncertain\",\n message: `Delivery of ${send.sendId} was interrupted and will not be replayed.`,\n });\n await this.store.putSend({ ...send, state: \"uncertain\" });\n await this.#remember(send.sendId, \"send\", input, result);\n continue;\n }\n if (piExecutionFailure !== null) continue;\n const agent = await this.store.getAgent(send.agentName);\n if (agent === null || agent.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: agent === null ? \"agent_not_found\" : \"incarnation_cleanup_uncertain\",\n message:\n agent === null\n ? `Agent ${send.agentName} was not found.`\n : `pi-fleet cannot prove the previous process for ${send.agentName} is gone.`,\n });\n await this.store.putSend({ ...send, state: \"failed\" });\n await this.#remember(send.sendId, \"send\", input, result);\n continue;\n }\n const result = await this.#enqueueSend(send.agentName, async () => {\n const ordinal = send.ordinal ?? (await this.store.nextSendOrdinal(send.agentName));\n return this.#dispatchSend(input, send.sendId, send.acceptedAt, agent, ordinal);\n });\n await this.#remember(send.sendId, \"send\", input, result);\n }\n\n for (const operation of await this.store.listPendingOperations()) {\n if (operation.method === \"send\") continue;\n const payload = JSON.parse(operation.fingerprint) as CreateInput | DestroyInput;\n if (operation.method === \"create\") {\n if (piExecutionFailure === null)\n await this.create(payload as CreateInput, operation.operationId);\n } else if (operation.method === \"destroy\") {\n await this.destroy(payload as DestroyInput, operation.operationId);\n } else if (operation.method === \"compact\") {\n if (piExecutionFailure === null)\n await this.compact(payload as CompactInput, operation.operationId);\n }\n }\n }\n\n async receive(\n input: ReceiveInput,\n signal?: AbortSignal,\n ): Promise<Result<ReceiveResult, FleetClientError>> {\n const coordinator = this.#coordinators.get(input.name);\n let agent: StoredAgent | null;\n try {\n agent =\n coordinator === undefined\n ? await this.store.getAgent(input.name)\n : await coordinator.waitForIdle(signal);\n } catch (error: unknown) {\n if (signal?.aborted === true) throw error;\n if (error instanceof Error && error.message === \"Agent destroyed\") {\n return err({ code: \"agent_destroyed\", message: `Agent ${input.name} was destroyed.` });\n }\n if (error instanceof Error && error.message === \"Pi work was interrupted\") {\n return err({\n code: \"runtime_interrupted\",\n message: `Agent ${input.name} was interrupted before becoming idle.`,\n });\n }\n throw error;\n }\n if (agent === null) return this.#notFound(input.name);\n if (agent.summary.state === \"failed\") {\n const code = agent.summary.error?.code ?? \"agent_failed\";\n return err({\n code,\n message: `Agent ${input.name} is failed (${code}) and has no current successful response.`,\n });\n }\n if (agent.latestAssistantText === null || agent.responseObservedAt === null) {\n return err({\n code: \"no_response\",\n message: `Agent ${input.name} has no assistant response.`,\n });\n }\n return ok({\n schemaVersion: 1,\n type: \"response\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n response: { text: agent.latestAssistantText, observedAt: agent.responseObservedAt },\n });\n }\n\n async status(input: StatusInput): Promise<Result<StatusResult, FleetClientError>> {\n const agent = await this.store.getAgent(input.name);\n return agent === null\n ? this.#notFound(input.name)\n : ok({ schemaVersion: 1, type: \"agent.status\", agent: agent.summary });\n }\n\n async list(): Promise<Result<ListResult, FleetClientError>> {\n const agents = await this.store.listAgents();\n return ok({\n schemaVersion: 1,\n type: \"agent.list\",\n agents: agents.map((agent) => agent.summary),\n });\n }\n\n openWatch(\n input: { readonly name: string },\n connectionSignal: AbortSignal,\n ): Promise<Result<AsyncIterable<Buffer>, FleetClientError>> {\n if (this.#closing) return Promise.resolve(this.#runtimeUnavailable());\n if (this.#destroyingAgents.has(input.name))\n return Promise.resolve(this.#agentDestroying(input.name));\n return this.#enqueueAgent(input.name, async () => {\n if (this.#closing) return this.#runtimeUnavailable();\n if (this.#destroyingAgents.has(input.name)) return this.#agentDestroying(input.name);\n const agent = await this.store.getAgent(input.name);\n if (agent === null) return this.#notFound(input.name);\n try {\n return ok(this.#watchHub.subscribe(input.name, connectionSignal));\n } catch (error: unknown) {\n if (error instanceof RpcWatchError && error.code === \"watcher_capacity_exceeded\") {\n return err({\n code: \"capacity_exceeded\",\n message: `pi-fleet has reached its ${String(this.#limits.maxWatchers)} watcher limit.`,\n });\n }\n throw error;\n }\n });\n }\n\n destroy(\n input: DestroyInput,\n operationId: string,\n ): Promise<Result<DestroyResult, FleetClientError>> {\n return this.#runOperation(operationId, \"destroy\", input, async () => {\n this.#destroyingAgents.add(input.name);\n try {\n if (this.#compactingAgents.has(input.name)) {\n const replay = await this.#operation<DestroyResult>(operationId, \"destroy\", input);\n if (replay !== null) return replay;\n const agent = await this.store.getAgent(input.name);\n if (agent !== null) await this.#recordOperationTarget(operationId, agent);\n }\n if (this.#compactingAgents.has(input.name)) {\n await this.#coordinators\n .get(input.name)\n ?.stop(\"destroy\")\n .catch(() => undefined);\n }\n return await this.#enqueueAgent(input.name, () => this.#destroyImpl(input, operationId));\n } finally {\n this.#destroyingAgents.delete(input.name);\n }\n });\n }\n\n async #destroyImpl(\n input: DestroyInput,\n operationId: string,\n ): Promise<Result<DestroyResult, FleetClientError>> {\n const replay = await this.#operation<DestroyResult>(operationId, \"destroy\", input);\n if (replay !== null) return replay;\n const stored = await this.store.getAgent(input.name);\n if (stored?.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: \"destroy_incomplete\",\n message: `pi-fleet cannot destroy ${input.name} until its previous process is proven gone.`,\n });\n await this.#remember(operationId, \"destroy\", input, result);\n return result;\n }\n if (stored !== null) await this.#recordOperationTarget(operationId, stored);\n const coordinator = this.#coordinators.get(input.name);\n if (coordinator !== undefined) await coordinator.stop(\"destroy\");\n this.#coordinators.delete(input.name);\n this.#watchHub.closeAgent(input.name);\n const agent = await this.store.deleteAgent(input.name);\n if (agent === null) return this.#rememberNotFound(operationId, \"destroy\", input);\n const result = ok<DestroyResult>({\n schemaVersion: 1,\n type: \"agent.destroyed\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n });\n await this.#remember(operationId, \"destroy\", input, result);\n return result;\n }\n\n async releaseAgentProcess(name: string): Promise<void> {\n const coordinator = this.#coordinators.get(name);\n if (coordinator === undefined) return;\n await coordinator.stop(\"idle_release\");\n this.#coordinators.delete(name);\n }\n\n async close(): Promise<void> {\n this.#closing = true;\n const stops = await Promise.allSettled(\n [...this.#coordinators.values()].map((coordinator) => coordinator.stop(\"runtime_shutdown\")),\n );\n this.#coordinators.clear();\n this.#watchHub.closeAll(\n new RpcWatchError(\"runtime_unavailable\", \"pi-fleet runtime is shutting down\"),\n );\n const failure = stops.find(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (failure !== undefined) throw failure.reason;\n }\n\n async #dispatchSend(\n input: SendInput,\n operationId: string,\n acceptedAt: string,\n initialAgent: StoredAgent,\n ordinal: number,\n ): Promise<Result<SendResult, FleetClientError>> {\n let agent = initialAgent;\n let incarnationId: string | null = null;\n let startingProcess: PiProcess | null = null;\n let restoring = false;\n try {\n let coordinator = this.#coordinators.get(input.name);\n if (this.#launcher !== undefined && coordinator === undefined) {\n const reservation = this.#reserveProcessSlot(input.name);\n if (reservation === \"existing\") {\n coordinator = await this.#waitForCoordinator(input.name);\n if (coordinator === undefined) {\n throw new Error(`Restoration of ${input.name} did not produce a live Pi process.`);\n }\n agent = coordinator.storedAgent;\n } else if (reservation === \"full\") {\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"failed\",\n acceptedAt,\n });\n return err({\n code: \"capacity_exceeded\",\n message: `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`,\n });\n } else {\n restoring = true;\n agent = await this.#markRestoring(agent);\n incarnationId = randomUUID();\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: null,\n state: \"starting\",\n });\n const publishStdout = this.#watchHub.beginIncarnation(input.name, incarnationId);\n startingProcess = await this.#launcher.start(\n agent.launch,\n true,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId: incarnationId!,\n agentName: input.name,\n pid,\n state: \"starting\",\n });\n },\n publishStdout,\n );\n const process = startingProcess;\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const profile = observeSession(agent.launch, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n });\n agent = {\n ...agent,\n launch: profile,\n summary: {\n ...agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n error: undefined,\n },\n };\n await this.store.putAgent(agent);\n coordinator = this.#attachCoordinator(agent, process, incarnationId);\n restoring = false;\n }\n }\n\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"dispatching\",\n acceptedAt,\n });\n if (coordinator === undefined) {\n await this.store.putAgent({\n ...agent,\n latestAssistantText: `Fake response to: ${input.message}`,\n responseObservedAt: acceptedAt,\n });\n } else {\n await coordinator.send(input.message);\n }\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"acknowledged\",\n acceptedAt,\n });\n return ok({\n schemaVersion: 1,\n type: \"message.accepted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n acceptedAt,\n });\n } catch (error: unknown) {\n if (restoring && incarnationId !== null) {\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n let cleanupPid = error instanceof PiCleanupUncertainError ? error.pid : null;\n if (startingProcess !== null) {\n cleanupPid = startingProcess.pid;\n try {\n await startingProcess.stop();\n } catch {\n cleanupUncertain = true;\n }\n }\n const code = cleanupUncertain ? \"incarnation_cleanup_uncertain\" : \"pi_start_failed\";\n this.#watchHub.endIncarnation(\n input.name,\n incarnationId,\n new RpcWatchError(\"pi_start_failed\", \"Pi failed to restore\"),\n );\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: cleanupUncertain ? \"cleanup_uncertain\" : \"absent\" },\n error: { code },\n },\n };\n await this.store.putAgent(agent);\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: cleanupPid,\n state: cleanupUncertain ? \"cleanup_uncertain\" : \"gone\",\n });\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"failed\",\n acceptedAt,\n });\n if (!cleanupUncertain) this.#releaseProcessSlot(input.name);\n return err({\n code,\n message: cleanupUncertain\n ? `pi-fleet could not prove the failed Pi restoration for ${input.name} was removed.`\n : `Pi failed to restore for ${input.name}; the message was not dispatched.`,\n });\n }\n\n if (!this.#coordinators.has(input.name)) this.#releaseProcessSlot(input.name);\n if (incarnationId !== null && !this.#coordinators.has(input.name)) {\n await this.store.putIncarnation({\n incarnationId,\n agentName: input.name,\n pid: null,\n state: \"cleanup_uncertain\",\n });\n }\n await this.store.putSend({\n sendId: operationId,\n agentName: input.name,\n ordinal,\n message: input.message,\n state: \"uncertain\",\n acceptedAt,\n });\n return err({\n code: \"delivery_uncertain\",\n message: \"Pi may have accepted the message; pi-fleet will not replay it automatically.\",\n });\n }\n }\n\n async #markRestoring(agent: StoredAgent): Promise<StoredAgent> {\n const restoring: StoredAgent = {\n ...agent,\n summary: { ...agent.summary, state: \"restoring\", process: { state: \"starting\" } },\n };\n await this.store.putAgent(restoring);\n return restoring;\n }\n\n #attachCoordinator(\n agent: StoredAgent,\n process: PiProcess,\n incarnationId: string,\n ): AgentCoordinator {\n const coordinator = new AgentCoordinator(\n this.store,\n agent,\n process,\n incarnationId,\n this.#now,\n () => {\n const interrupted = coordinator.storedAgent.summary.state === \"failed\";\n this.#watchHub.endIncarnation(\n agent.summary.name,\n incarnationId,\n interrupted\n ? new RpcWatchError(\"runtime_interrupted\", \"Pi process was interrupted\")\n : null,\n );\n if (this.#coordinators.get(agent.summary.name) === coordinator) {\n this.#coordinators.delete(agent.summary.name);\n this.#releaseProcessSlot(agent.summary.name);\n }\n },\n );\n this.#coordinators.set(agent.summary.name, coordinator);\n return coordinator;\n }\n\n #enqueueAgent<T>(name: string, operation: () => Promise<T>): Promise<T> {\n return enqueueNamed(this.#agentLanes, name, operation);\n }\n\n #enqueueSend<T>(name: string, operation: () => Promise<T>): Promise<T> {\n const previous = this.#sendLanes.get(name) ?? Promise.resolve();\n const result = previous.then(operation, operation);\n const settled = result.then(\n () => undefined,\n () => undefined,\n );\n this.#sendLanes.set(name, settled);\n void settled.finally(() => {\n if (this.#sendLanes.get(name) === settled) this.#sendLanes.delete(name);\n });\n return result;\n }\n\n async #waitForCoordinator(\n name: string,\n timeoutMs = 15_000,\n ): Promise<AgentCoordinator | undefined> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const coordinator = this.#coordinators.get(name);\n if (coordinator !== undefined) return coordinator;\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n return this.#coordinators.get(name);\n }\n\n #reserveProcessSlot(name: string): \"acquired\" | \"existing\" | \"full\" {\n if (this.#processSlots.has(name)) return \"existing\";\n if (this.#processSlots.size >= this.#limits.maxResidentProcesses) return \"full\";\n this.#processSlots.add(name);\n return \"acquired\";\n }\n\n #releaseProcessSlot(name: string): void {\n this.#processSlots.delete(name);\n }\n\n #agentDestroying<T>(name: string): Result<T, FleetClientError> {\n return err({ code: \"agent_destroying\", message: `Agent ${name} is being destroyed.` });\n }\n\n #notFound<T>(name: string): Result<T, FleetClientError> {\n return err({ code: \"agent_not_found\", message: `Agent ${name} was not found.` });\n }\n\n #runtimeUnavailable<T>(): Result<T, FleetClientError> {\n return err({ code: \"runtime_unavailable\", message: \"pi-fleet runtime is shutting down.\" });\n }\n\n async #rememberCompactFailure(\n operationId: string,\n input: CompactInput,\n requestedAt: string,\n failure: FleetClientError,\n ): Promise<Result<CompactResult, FleetClientError>> {\n await this.store.putCompact({\n compactId: operationId,\n agentName: input.name,\n state: \"failed\",\n requestedAt,\n error: failure,\n });\n const result: Result<CompactResult, FleetClientError> = err(failure);\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n\n #piIdentityFailure(callerIdentity: PiRuntimeIdentity | undefined): FleetClientError | null {\n if (callerIdentity === undefined || samePiRuntimeIdentity(callerIdentity, this.#piIdentity)) {\n return null;\n }\n return {\n code: \"pi_runtime_mismatch\",\n message:\n \"The running pi-fleet runtime uses a different Pi installation; repair or restart it.\",\n };\n }\n\n async #piExecutionFailure(): Promise<FleetClientError | null> {\n if (this.#launcher?.preflight === undefined) return null;\n try {\n await this.#launcher.preflight();\n return null;\n } catch (error: unknown) {\n if (!(error instanceof PiExecutionUnavailableError)) throw error;\n const messages: Record<PiExecutionUnavailableError[\"code\"], string> = {\n pi_not_found: \"The selected Pi executable was not found.\",\n pi_not_executable: \"The selected Pi executable cannot be executed.\",\n pi_version_unavailable: \"The selected Pi version could not be determined.\",\n pi_version_unsupported: \"The selected Pi version is not supported.\",\n pi_installation_changed: \"The selected Pi installation changed during validation.\",\n };\n return { code: error.code, message: messages[error.code] };\n }\n }\n\n async #rememberNotFound<T>(\n operationId: string,\n method: \"send\" | \"destroy\" | \"compact\",\n payload: object,\n ): Promise<Result<T, FleetClientError>> {\n const result = this.#notFound<T>(String(\"name\" in payload ? payload.name : \"unknown\"));\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n\n #runOperation<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n operation: () => Promise<Result<T, FleetClientError>>,\n ): Promise<Result<T, FleetClientError>> {\n const fingerprint = JSON.stringify(payload);\n const inflight = this.#inflightOperations.get(operationId);\n if (inflight !== undefined) {\n if (inflight.method !== method || inflight.fingerprint !== fingerprint) {\n return Promise.resolve(\n err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n }),\n );\n }\n return inflight.promise as Promise<Result<T, FleetClientError>>;\n }\n const promise = operation();\n this.#inflightOperations.set(operationId, {\n method,\n fingerprint,\n promise: promise as Promise<Result<unknown, FleetClientError>>,\n });\n void promise.then(\n () => this.#inflightOperations.delete(operationId),\n () => this.#inflightOperations.delete(operationId),\n );\n return promise;\n }\n\n async #operation<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n ): Promise<Result<T, FleetClientError> | null> {\n const cached = this.#operations.get(operationId);\n const stored = cached === undefined ? await this.store.getOperation(operationId) : null;\n const recorded =\n cached ??\n (stored?.state === \"completed\" && stored.result !== null\n ? {\n method: stored.method,\n fingerprint: stored.fingerprint,\n result: stored.result as Result<unknown, FleetClientError>,\n }\n : undefined);\n if (recorded === undefined) {\n const fingerprint = JSON.stringify(payload);\n if (stored !== null) {\n if (stored.method !== method || stored.fingerprint !== fingerprint) {\n return err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n });\n }\n const name = \"name\" in payload ? String(payload.name) : \"\";\n const agent = name.length === 0 ? null : await this.store.getAgent(name);\n if (method === \"create\") {\n if (agent === null) {\n await this.store.deleteOperation(operationId);\n } else if (agent.summary.state === \"idle\" || agent.summary.state === \"working\") {\n const result = ok<CreateResult>({\n schemaVersion: 1,\n type: \"agent.created\",\n agent: agent.summary,\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n } else if (agent.summary.state === \"failed\") {\n const result = err<FleetClientError>({\n code: agent.summary.error?.code ?? \"pi_start_failed\",\n message: `Creation of ${name} did not complete safely.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n } else {\n return err({\n code: \"operation_in_progress\",\n message: `Operation ${operationId} is still pending.`,\n });\n }\n } else if (method === \"destroy\") {\n if (agent === null && stored.targetAgent !== undefined) {\n const result = ok<DestroyResult>({\n schemaVersion: 1,\n type: \"agent.destroyed\",\n agent: stored.targetAgent,\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n // Resume the singular destroy operation against the surviving agent.\n return null;\n } else if (method === \"send\") {\n const send = await this.store.getSend(operationId);\n if (send === null) {\n // The operation exists but no send record was committed, so Pi could not have been\n // dispatched. Retrying from the beginning is safe.\n await this.store.deleteOperation(operationId);\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n state: \"pending\",\n result: null,\n });\n return null;\n }\n return err({\n code: \"operation_in_progress\",\n message: `Operation ${operationId} is still pending.`,\n });\n } else {\n const compact = await this.store.getCompact(operationId);\n if (compact?.state === \"completed\" && compact.result !== undefined) {\n const target = stored.targetAgent;\n if (target === undefined) {\n return err({ code: \"state_corrupt\", message: \"Compaction target is missing.\" });\n }\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: target,\n compaction: compact.result,\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n if (compact?.state === \"failed\" && compact.error !== undefined) {\n const result = err<FleetClientError>(compact.error);\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (compact?.state === \"dispatching\" || compact?.state === \"uncertain\") {\n const result = err<FleetClientError>({\n code: \"compaction_uncertain\",\n message: \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (\n stored.targetAgent !== undefined &&\n (agent === null || agent.summary.id !== stored.targetAgent.id)\n ) {\n const result = err<FleetClientError>({\n code: \"agent_not_found\",\n message: `The agent targeted by operation ${operationId} no longer exists.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (compact === null || compact.state === \"pending\") return null;\n return err({ code: \"state_corrupt\", message: \"Compaction state is incomplete.\" });\n }\n }\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n state: \"pending\",\n result: null,\n });\n return null;\n }\n if (recorded.method !== method || recorded.fingerprint !== JSON.stringify(payload)) {\n return err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n });\n }\n return recorded.result as Result<T, FleetClientError>;\n }\n\n async #recordOperationTarget(operationId: string, agent: StoredAgent): Promise<void> {\n const operation = await this.store.getOperation(operationId);\n if (operation === null || operation.state !== \"pending\") return;\n await this.store.putOperation({\n ...operation,\n targetAgent: { id: agent.summary.id, name: agent.summary.name },\n });\n }\n\n async #remember<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n result: Result<T, FleetClientError>,\n ): Promise<void> {\n const fingerprint = JSON.stringify(payload);\n this.#operations.set(operationId, { method, fingerprint, result });\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n state: \"completed\",\n result,\n });\n }\n}\n\nfunction enqueueNamed<T>(\n lanes: Map<string, Promise<void>>,\n name: string,\n operation: () => Promise<T>,\n): Promise<T> {\n const previous = lanes.get(name) ?? Promise.resolve();\n const result = previous.then(operation, operation);\n const settled = result.then(\n () => undefined,\n () => undefined,\n );\n lanes.set(name, settled);\n void settled.finally(() => {\n if (lanes.get(name) === settled) lanes.delete(name);\n });\n return result;\n}\n", "export type NativeSessionSelector =\n | { readonly kind: \"none\" }\n | { readonly kind: \"session\"; readonly value: string }\n | { readonly kind: \"session-id\"; readonly value: string }\n | { readonly kind: \"fork\"; readonly value: string }\n | { readonly kind: \"continue\" }\n | { readonly kind: \"resume\" };\n\nexport interface ObservedSession {\n readonly path: string | null;\n readonly id: string;\n}\n\ninterface SelectorMatch {\n readonly selector: NativeSessionSelector;\n readonly start: number;\n readonly length: number;\n}\n\nconst VALUE_SELECTORS = new Map<string, \"session\" | \"session-id\" | \"fork\">([\n [\"--session\", \"session\"],\n [\"--session-id\", \"session-id\"],\n [\"--fork\", \"fork\"],\n]);\n\nconst BOOLEAN_SELECTORS = new Map<string, \"continue\" | \"resume\">([\n [\"--continue\", \"continue\"],\n [\"-c\", \"continue\"],\n [\"--resume\", \"resume\"],\n [\"-r\", \"resume\"],\n]);\n\nfunction findSelectorMatches(argv: readonly string[]): SelectorMatch[] {\n const matches: SelectorMatch[] = [];\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined) continue;\n\n const valueKind = VALUE_SELECTORS.get(token);\n if (valueKind !== undefined) {\n const value = argv[index + 1];\n if (value === undefined) {\n throw new Error(`${token} requires a value`);\n }\n matches.push({ selector: { kind: valueKind, value }, start: index, length: 2 });\n index += 1;\n continue;\n }\n\n const booleanKind = BOOLEAN_SELECTORS.get(token);\n if (booleanKind !== undefined) {\n matches.push({ selector: { kind: booleanKind }, start: index, length: 1 });\n }\n }\n\n return matches;\n}\n\nexport function analyzeSessionSelector(argv: readonly string[]): NativeSessionSelector {\n const matches = findSelectorMatches(argv);\n if (matches.length === 0) return { kind: \"none\" };\n if (matches.length > 1) {\n throw new Error(\"Conflicting Pi session selectors are not supported\");\n }\n return matches[0]!.selector;\n}\n\nexport function deriveRestorePiArgv(\n userPiArgv: readonly string[],\n observedSession: ObservedSession,\n): readonly string[] {\n const matches = findSelectorMatches(userPiArgv);\n if (matches.length > 1) {\n throw new Error(\"Conflicting Pi session selectors are not supported\");\n }\n\n const selector = matches[0]?.selector ?? { kind: \"none\" as const };\n if (selector.kind === \"session\" || selector.kind === \"session-id\") {\n return [...userPiArgv];\n }\n\n if (observedSession.path === null) {\n throw new Error(\"Pi did not report the concrete session path required for restoration\");\n }\n\n const selectorMatch = matches[0];\n const retainedArgv = userPiArgv.filter((_token, index) => {\n if (selectorMatch === undefined) return true;\n return index < selectorMatch.start || index >= selectorMatch.start + selectorMatch.length;\n });\n\n return [...retainedArgv, \"--session\", observedSession.path];\n}\n", "import {\n analyzeSessionSelector,\n deriveRestorePiArgv,\n type NativeSessionSelector,\n type ObservedSession,\n} from \"./session-selector.js\";\n\nexport interface AgentLaunchProfile {\n readonly cwd: string;\n readonly userPiArgv: readonly string[];\n readonly selector: NativeSessionSelector;\n readonly observedSession: ObservedSession | null;\n readonly restorePiArgv: readonly string[] | null;\n}\n\nexport interface CreateLaunchProfileInput {\n readonly cwd: string;\n readonly piArgv: readonly string[];\n}\n\nexport function createLaunchProfile(input: CreateLaunchProfileInput): AgentLaunchProfile {\n validatePersistentRpcArgv(input.piArgv);\n return {\n cwd: input.cwd,\n userPiArgv: [...input.piArgv],\n selector: analyzeSessionSelector(input.piArgv),\n observedSession: null,\n restorePiArgv: null,\n };\n}\n\nconst PI_VALUE_OPTIONS = new Set([\n \"--provider\",\n \"--model\",\n \"--api-key\",\n \"--system-prompt\",\n \"--append-system-prompt\",\n \"--name\",\n \"-n\",\n \"--session\",\n \"--session-id\",\n \"--fork\",\n \"--session-dir\",\n \"--models\",\n \"--tools\",\n \"-t\",\n \"--exclude-tools\",\n \"-xt\",\n \"--thinking\",\n \"--export\",\n \"--extension\",\n \"-e\",\n \"--skill\",\n \"--prompt-template\",\n \"--theme\",\n]);\n\nconst PI_BOOLEAN_OPTIONS = new Set([\n \"--continue\",\n \"-c\",\n \"--help\",\n \"-h\",\n \"--version\",\n \"-v\",\n \"--no-tools\",\n \"-nt\",\n \"--no-builtin-tools\",\n \"-nbt\",\n \"--no-extensions\",\n \"-ne\",\n \"--no-skills\",\n \"-ns\",\n \"--no-prompt-templates\",\n \"-np\",\n \"--no-themes\",\n \"--no-context-files\",\n \"-nc\",\n \"--verbose\",\n \"--approve\",\n \"-a\",\n \"--no-approve\",\n \"-na\",\n \"--offline\",\n]);\n\nexport function validatePersistentRpcArgv(piArgv: readonly string[]): void {\n for (let index = 0; index < piArgv.length; index += 1) {\n const token = piArgv[index]!;\n if ([\"--mode\", \"--print\", \"-p\", \"--no-session\", \"--resume\", \"-r\"].includes(token)) {\n throw new Error(`${token} is incompatible with persistent headless pi-fleet control`);\n }\n if (token === \"--\") {\n throw new Error(\n \"Pi positional prompt delivery after -- is incompatible with pi-fleet send ordering\",\n );\n }\n if (token.startsWith(\"@\")) {\n throw new Error(\n \"Pi @file prompt delivery is incompatible with pi-fleet-managed send ordering\",\n );\n }\n if (PI_VALUE_OPTIONS.has(token)) {\n if (piArgv[index + 1] === undefined) throw new Error(`${token} requires a value`);\n index += 1;\n continue;\n }\n if (PI_BOOLEAN_OPTIONS.has(token) || token.includes(\"=\")) continue;\n if (token === \"--list-models\") {\n const next = piArgv[index + 1];\n if (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) index += 1;\n continue;\n }\n if (token.startsWith(\"--\")) {\n const next = piArgv[index + 1];\n if (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) index += 1;\n continue;\n }\n if (token.startsWith(\"-\")) continue;\n throw new Error(\n `Pi positional prompt ${JSON.stringify(token)} is incompatible with pi-fleet send ordering`,\n );\n }\n}\n\nexport function observeSession(\n profile: AgentLaunchProfile,\n session: ObservedSession,\n): AgentLaunchProfile {\n return {\n ...profile,\n observedSession: session,\n restorePiArgv: deriveRestorePiArgv(profile.userPiArgv, session),\n };\n}\n", "import { PiCompactionError, type PiCompactionResult, type PiProcess } from \"../pi/process.js\";\nimport { waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport type { FleetStore, StoredAgent } from \"../store/fleet-store.js\";\n\nexport type CoordinatorStopReason = \"destroy\" | \"runtime_shutdown\" | \"idle_release\";\n\ninterface IdleWaiter {\n readonly resolve: () => void;\n readonly reject: (error: Error) => void;\n readonly signal?: AbortSignal;\n readonly onAbort?: () => void;\n}\n\nexport class AgentCoordinator {\n readonly #idleWaiters = new Set<IdleWaiter>();\n #lane: Promise<void> = Promise.resolve();\n #stopReason: CoordinatorStopReason | null = null;\n #handlingFailure = false;\n #mayBeWorking = false;\n #unsubscribeFrame: () => void;\n #unsubscribeExit: () => void;\n\n constructor(\n private readonly store: FleetStore,\n private agent: StoredAgent,\n readonly process: PiProcess,\n readonly incarnationId: string,\n private readonly now: () => string,\n private readonly onProcessExit: (error: Error | null) => void,\n ) {\n this.#unsubscribeFrame = process.onFrame((frame) => {\n if (frame.type === \"agent_start\") this.#queueEvent(() => this.#markWorking());\n if (frame.type === \"agent_settled\") this.#queueEvent(() => this.#markIdle());\n });\n this.#unsubscribeExit = process.onExit((error) => {\n this.#queueEvent(() => this.#handleProcessExit(error));\n });\n }\n\n get storedAgent(): StoredAgent {\n return this.agent;\n }\n\n send(message: string): Promise<void> {\n return this.#enqueue(async () => {\n this.#mayBeWorking = true;\n try {\n await this.process.prompt(message);\n } catch (error: unknown) {\n this.#mayBeWorking = false;\n throw error;\n }\n });\n }\n\n compact(): Promise<PiCompactionResult> {\n return this.#enqueue(async () => {\n const state = await this.process.getState();\n if (\n this.#mayBeWorking ||\n this.agent.summary.state !== \"idle\" ||\n state.isStreaming ||\n state.isCompacting ||\n state.pendingMessageCount !== 0\n ) {\n throw new Error(\"Agent is busy\");\n }\n this.#mayBeWorking = true;\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"working\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n await this.store.putAgent(this.agent);\n try {\n const result = await this.process.compact();\n await this.#markIdle();\n return result;\n } catch (error: unknown) {\n this.#mayBeWorking = false;\n if (error instanceof PiCompactionError) await this.#markIdle();\n throw error;\n }\n });\n }\n\n async waitForIdle(signal?: AbortSignal): Promise<StoredAgent> {\n let wait: Promise<void> | null = null;\n await this.#enqueue(async () => {\n if (!this.#mayBeWorking && this.agent.summary.state === \"idle\") return;\n if (signal?.aborted === true) throw new Error(\"Receive cancelled\");\n\n let resolveIdle!: () => void;\n let rejectIdle!: (error: Error) => void;\n const pending = new Promise<void>((resolve, reject) => {\n resolveIdle = resolve;\n rejectIdle = reject;\n });\n void pending.catch(() => undefined);\n wait = pending;\n const waiter: IdleWaiter = {\n resolve: resolveIdle,\n reject: rejectIdle,\n ...(signal === undefined ? {} : { signal }),\n };\n this.#idleWaiters.add(waiter);\n if (signal !== undefined) {\n const onAbort = () => {\n this.#idleWaiters.delete(waiter);\n rejectIdle(new Error(\"Receive cancelled\"));\n };\n (waiter as { onAbort?: () => void }).onAbort = onAbort;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted) onAbort();\n }\n if (!this.#idleWaiters.has(waiter)) return;\n\n const state = await this.process.getState();\n if (!state.isStreaming && !state.isCompacting && state.pendingMessageCount === 0) {\n await this.#markIdle();\n }\n });\n if (wait !== null) await wait;\n await this.#lane;\n return this.agent;\n }\n\n async stop(reason: CoordinatorStopReason): Promise<void> {\n this.#stopReason = reason;\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"stopping\",\n });\n try {\n await this.process.stop();\n await this.#lane;\n } catch (error: unknown) {\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"cleanup_uncertain\",\n });\n throw error;\n }\n }\n\n async #handleProcessExit(error: Error | null): Promise<void> {\n this.#unsubscribeFrame();\n this.#unsubscribeExit();\n if (this.#stopReason === null) {\n await this.process.stop().catch(() => undefined);\n }\n const groupGone = await waitForProcessGroupExit(this.process.pid);\n if (!groupGone) {\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"cleanup_uncertain\",\n });\n this.#rejectIdleWaiters(new Error(\"Pi process cleanup is uncertain\"));\n this.onProcessExit(error ?? new Error(\"Pi process group is still alive\"));\n return;\n }\n\n const wasActive =\n this.agent.summary.state === \"working\" || this.agent.summary.state === \"restoring\";\n const destroyed = this.#stopReason === \"destroy\";\n const interrupted =\n (error !== null && this.#stopReason === null) ||\n (wasActive && this.#stopReason !== \"destroy\");\n const state = destroyed ? \"destroying\" : interrupted ? \"failed\" : \"idle\";\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state,\n process: { state: \"absent\" },\n ...(interrupted ? { error: { code: \"runtime_interrupted\" } } : { error: undefined }),\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"gone\",\n });\n if (interrupted || destroyed) {\n this.#rejectIdleWaiters(new Error(destroyed ? \"Agent destroyed\" : \"Pi work was interrupted\"));\n } else {\n this.#resolveIdleWaiters();\n }\n this.onProcessExit(error);\n }\n\n async #markWorking(): Promise<void> {\n this.#mayBeWorking = true;\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"working\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n await this.store.putAgent(this.agent);\n }\n\n async #markIdle(): Promise<void> {\n const latestAssistantText = await this.process.getLastAssistantText();\n this.#mayBeWorking = false;\n this.agent = {\n ...this.agent,\n latestAssistantText,\n responseObservedAt: latestAssistantText === null ? this.agent.responseObservedAt : this.now(),\n summary: {\n ...this.agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n await this.store.putAgent(this.agent);\n this.#resolveIdleWaiters();\n }\n\n #resolveIdleWaiters(): void {\n for (const waiter of this.#idleWaiters) {\n if (waiter.signal !== undefined && waiter.onAbort !== undefined) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.resolve();\n }\n this.#idleWaiters.clear();\n }\n\n #rejectIdleWaiters(error: Error): void {\n for (const waiter of this.#idleWaiters) {\n if (waiter.signal !== undefined && waiter.onAbort !== undefined) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.reject(error);\n }\n this.#idleWaiters.clear();\n }\n\n #queueEvent(operation: () => Promise<void>): void {\n void this.#enqueue(operation).catch((error: unknown) => this.#handleEventFailure(error));\n }\n\n async #handleEventFailure(error: unknown): Promise<void> {\n if (this.#handlingFailure) return;\n this.#handlingFailure = true;\n const failure = error instanceof Error ? error : new Error(\"Agent coordinator failed\");\n this.#rejectIdleWaiters(failure);\n await this.process.stop().catch(() => undefined);\n this.onProcessExit(failure);\n }\n\n #enqueue<T>(operation: () => Promise<T>): Promise<T> {\n const result = this.#lane.then(operation, operation);\n this.#lane = result.then(\n () => undefined,\n () => undefined,\n );\n return result;\n }\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { Worker } from \"node:worker_threads\";\n\nimport type {\n FleetStore,\n StoredAgent,\n StoredCompact,\n StoredIncarnation,\n StoredOperation,\n StoredSend,\n} from \"./fleet-store.js\";\n\ninterface WorkerResponse {\n readonly id: string;\n readonly ok: boolean;\n readonly value?: unknown;\n readonly error?: string;\n}\n\nexport class WorkerFleetStore implements FleetStore {\n readonly #worker: Worker;\n readonly #pending = new Map<\n string,\n { readonly resolve: (value: unknown) => void; readonly reject: (error: Error) => void }\n >();\n #closed = false;\n #failure: Error | null = null;\n\n constructor(path: string, workerUrl = new URL(\"./sqlite-worker.mjs\", import.meta.url)) {\n this.#worker = new Worker(workerUrl, { workerData: { path } });\n this.#worker.on(\"message\", (value: unknown) => {\n if (!isWorkerResponse(value)) {\n this.#fail(new Error(\"SQLite worker returned a malformed response\"));\n void this.#worker.terminate();\n return;\n }\n const pending = this.#pending.get(value.id);\n if (pending === undefined) return;\n this.#pending.delete(value.id);\n if (value.ok) pending.resolve(value.value);\n else pending.reject(new Error(value.error ?? \"SQLite worker failed\"));\n });\n this.#worker.on(\"error\", (error) => this.#fail(error));\n this.#worker.on(\"exit\", (code) => {\n if (!this.#closed) this.#fail(new Error(`SQLite worker exited unexpectedly with ${code}`));\n });\n }\n\n createAgent(agent: StoredAgent): Promise<boolean> {\n return this.#call(\"createAgent\", [agent]);\n }\n\n getAgent(name: string): Promise<StoredAgent | null> {\n return this.#call(\"getAgent\", [name]);\n }\n\n listAgents(): Promise<readonly StoredAgent[]> {\n return this.#call(\"listAgents\", []);\n }\n\n async putAgent(agent: StoredAgent): Promise<void> {\n await this.#call(\"putAgent\", [agent]);\n }\n\n getOperation(operationId: string): Promise<StoredOperation | null> {\n return this.#call(\"getOperation\", [operationId]);\n }\n\n async putOperation(operation: StoredOperation): Promise<void> {\n await this.#call(\"putOperation\", [operation]);\n }\n\n listPendingOperations(): Promise<readonly StoredOperation[]> {\n return this.#call(\"listPendingOperations\", []);\n }\n\n async deleteOperation(operationId: string): Promise<void> {\n await this.#call(\"deleteOperation\", [operationId]);\n }\n\n getSend(sendId: string): Promise<StoredSend | null> {\n return this.#call(\"getSend\", [sendId]);\n }\n\n nextSendOrdinal(agentName: string): Promise<number> {\n return this.#call(\"nextSendOrdinal\", [agentName]);\n }\n\n async putSend(send: StoredSend): Promise<void> {\n await this.#call(\"putSend\", [send]);\n }\n\n listNonterminalSends(): Promise<readonly StoredSend[]> {\n return this.#call(\"listNonterminalSends\", []);\n }\n\n getCompact(compactId: string): Promise<StoredCompact | null> {\n return this.#call(\"getCompact\", [compactId]);\n }\n\n async putCompact(compact: StoredCompact): Promise<void> {\n await this.#call(\"putCompact\", [compact]);\n }\n\n listNonterminalCompacts(): Promise<readonly StoredCompact[]> {\n return this.#call(\"listNonterminalCompacts\", []);\n }\n\n async putIncarnation(incarnation: StoredIncarnation): Promise<void> {\n await this.#call(\"putIncarnation\", [incarnation]);\n }\n\n listActiveIncarnations(): Promise<readonly StoredIncarnation[]> {\n return this.#call(\"listActiveIncarnations\", []);\n }\n\n deleteAgent(name: string): Promise<StoredAgent | null> {\n return this.#call(\"deleteAgent\", [name]);\n }\n\n async close(cleanShutdown = true): Promise<void> {\n if (this.#closed) return;\n if (this.#failure === null) await this.#call(\"close\", [cleanShutdown]);\n this.#closed = true;\n await this.#worker.terminate();\n }\n\n #call<T>(method: string, args: readonly unknown[]): Promise<T> {\n if (this.#closed) return Promise.reject(new Error(\"pi-fleet store is closed\"));\n if (this.#failure !== null) return Promise.reject(this.#failure);\n const id = randomUUID();\n const result = new Promise<T>((resolveCall, rejectCall) => {\n this.#pending.set(id, {\n resolve: (value) => resolveCall(value as T),\n reject: rejectCall,\n });\n });\n try {\n this.#worker.postMessage({ id, method, args });\n } catch (error: unknown) {\n const failure = error instanceof Error ? error : new Error(\"SQLite worker request failed\");\n this.#fail(failure);\n }\n return result;\n }\n\n #fail(error: Error): void {\n this.#failure ??= error;\n for (const pending of this.#pending.values()) pending.reject(this.#failure);\n this.#pending.clear();\n }\n}\n\nfunction isWorkerResponse(value: unknown): value is WorkerResponse {\n if (typeof value !== \"object\" || value === null) return false;\n const response = value as Partial<WorkerResponse>;\n return (\n typeof response.id === \"string\" &&\n typeof response.ok === \"boolean\" &&\n (response.error === undefined || typeof response.error === \"string\")\n );\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["value", "IsAsyncIterator", "IsObject", "IsIterator", "IsDate", "IsUint8Array", "HasPropertyKey", "IsObject", "IsArray", "IsUndefined", "IsNull", "IsBoolean", "IsNumber", "IsBigInt", "IsString", "IsFunction", "IsSymbol", "TypeSystemPolicy", "IsObject", "IsArray", "IsNumber", "IsUndefined", "value", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsRegExp", "IsString", "IsSymbol", "IsUndefined", "IsUint8Array", "IsArray", "IsBoolean", "IsBigInt", "IsAsyncIterator", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsAny", "IsArgument", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "IsInteger", "IsIntersect", "IsIterator", "IsKind", "IsKindOf", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsNumber", "IsObject", "IsOptional", "IsPromise", "IsReadonly", "IsRecord", "IsRef", "IsRegExp", "IsSchema", "IsString", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTransform", "IsTuple", "IsUint8Array", "IsUndefined", "IsUnion", "IsUnknown", "IsUnsafe", "IsVoid", "IsSchema", "IsReadonly", "IsOptional", "IsAny", "IsKindOf", "IsArgument", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "IsInteger", "IsIntersect", "IsTransform", "IsIterator", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsRecord", "IsRef", "IsRegExp", "IsString", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTuple", "IsUndefined", "IsUnion", "IsUint8Array", "IsUnknown", "IsUnsafe", "IsVoid", "IsKind", "Set", "type_exports", "Clear", "Delete", "Entries", "Get", "Has", "Set", "map", "Array", "range", "pattern", "BigInt", "Number", "String", "Number", "BigInt", "String", "Visit", "schema", "IsNumber", "IsInteger", "IsBigInt", "IsString", "IsBoolean", "FromUnion", "IsNumber", "IsInteger", "FromUnion", "IsArray", "IsObject", "Object", "Promise", "FromProperties", "FromMappedResult", "FromMappedResult", "FromRest", "FromProperties", "IsFunction", "IsAsyncIterator", "IsIterator", "IsObject", "Object", "IsArray", "Array", "IsPromise", "Promise", "map", "FromProperties", "FromMappedResult", "IsObject", "RemoveOptionalFromType", "RemoveOptionalFromRest", "FromIntersect", "FromRest", "FromUnion", "IsPromise", "FromRest", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromProperties", "IsArray", "IsObject", "FromComputed", "FromRef", "Number", "FromProperties", "FromMappedResult", "Object", "Date", "Symbol", "Uint8Array", "FromArray", "FromProperties", "Uint8Array", "Date", "Object", "Symbol", "BigInt", "ExtendsResult", "FromArray", "Visit", "FromIntersect", "FromLiteral", "Number", "FromPromise", "String", "FromTemplateLiteral", "FromTuple", "FromUnion", "FromProperties", "FromMappedResult", "FromMappedKey", "Intersect", "schema", "Union", "FromProperties", "FromMappedResult", "FromProperties", "FromMappedResult", "Object", "IsBoolean", "IsInteger", "IsNumber", "IsRegExp", "IsString", "RecordKey", "String", "Number", "RecordValue", "FromConstructor", "FromFunction", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromAsyncIterator", "FromIterator", "FromPromise", "FromObject", "FromProperties", "Object", "FromRecord", "RecordKey", "RecordValue", "FromProperty", "IsFunction", "IsArray", "IsAsyncIterator", "IsIterator", "IsPromise", "IsObject", "FromTemplateLiteral", "FromRest", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperty", "FromProperties", "FromObject", "Object", "result", "IsObject", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperties", "FromObject", "Type", "Object", "UnionFromPropertyKeys", "result", "IsObject", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromType", "FromComputed", "FromArray", "Array", "FromAsyncIterator", "FromConstructor", "FromTypes", "FromFunction", "FromIntersect", "FromIterator", "FromObject", "Object", "FromRecord", "RecordValue", "FromTuple", "FromUnion", "IsArray", "IsAsyncIterator", "IsFunction", "IsIterator", "IsObject", "Not", "IsFunction", "RegExp", "IsFunction", "Encode", "Decode", "type_exports", "Array", "BigInt", "Date", "Not", "Number", "Object", "Promise", "RegExp", "String", "Symbol", "Uint8Array", "type_exports", "spawn", "stat", "resolve", "spawn", "process", "process", "join", "join", "once", "dirname", "target", "IsString", "ByteMarker", "ArrayType", "Visit", "DateType", "ObjectType", "Uint8ArrayType", "IsArray", "IsBoolean", "IsBigInt", "IsDate", "IsNull", "IsNumber", "IsObject", "IsString", "IsSymbol", "IsUint8Array", "IsUndefined", "FromAny", "FromArgument", "FromArray", "IsArray", "Visit", "IsNumber", "value", "FromAsyncIterator", "IsAsyncIterator", "FromBigInt", "IsBigInt", "FromBoolean", "IsBoolean", "FromConstructor", "FromDate", "IsDate", "FromFunction", "IsFunction", "FromInteger", "FromIntersect", "schema", "FromIterator", "IsIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "IsNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "IsString", "FromSymbol", "IsSymbol", "FromTemplateLiteral", "FromTuple", "FromUndefined", "IsUndefined", "FromUnion", "FromUint8Array", "IsUint8Array", "FromUnknown", "FromVoid", "type_exports", "ValueErrorType", "IsDefined", "FromAny", "FromArgument", "FromArray", "IsArray", "Visit", "value", "IsNumber", "FromAsyncIterator", "IsAsyncIterator", "FromBigInt", "IsBigInt", "FromBoolean", "IsBoolean", "FromConstructor", "FromDate", "IsDate", "FromFunction", "IsFunction", "FromImport", "FromInteger", "FromIntersect", "FromIterator", "IsIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "IsNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "IsString", "FromString", "FromSymbol", "IsSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "IsUndefined", "FromUnion", "FromUint8Array", "IsUint8Array", "FromUnknown", "FromVoid", "FromKind", "type_exports", "_AssertError_Iterator", "FromObject", "Clone", "FromArray", "FromDate", "FromValue", "IsArray", "IsDate", "IsObject", "IsFunction", "Clone", "FromAny", "HasPropertyKey", "FromArgument", "FromArray", "Visit", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromImport", "FromInteger", "FromIntersect", "schema", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "FromKind", "type_exports", "Create", "IsNull", "schema", "Clone", "Create", "FromArray", "IsArray", "IsNumber", "value", "Visit", "FromConstructor", "FromImport", "IsObject", "FromIntersect", "FromNever", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "IsString", "FromArray", "IsArray", "value", "Visit", "FromImport", "FromIntersect", "schema", "Clone", "IsObject", "FromObject", "HasPropertyKey", "FromRecord", "FromRef", "FromThis", "FromTuple", "IsUndefined", "FromUnion", "IsString", "IsString", "IsBigInt", "IsBoolean", "IsNumber", "value", "IsSymbol", "IsDate", "Default", "FromArray", "IsArray", "Visit", "FromBigInt", "FromBoolean", "FromDate", "FromImport", "FromInteger", "FromIntersect", "schema", "FromLiteral", "FromNull", "FromNumber", "FromObject", "IsObject", "HasPropertyKey", "FromRecord", "FromRef", "FromString", "FromSymbol", "FromThis", "FromTuple", "IsUndefined", "FromUndefined", "FromUnion", "Clone", "Default", "FromArray", "IsArray", "value", "Visit", "FromIntersect", "IsObject", "FromImport", "FromNot", "FromObject", "HasPropertyKey", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "Default", "FromArray", "IsArray", "value", "Visit", "FromImport", "FromIntersect", "IsObject", "FromNot", "FromObject", "HasPropertyKey", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "FromArray", "Visit", "FromAsyncIterator", "FromConstructor", "schema", "FromFunction", "FromIntersect", "FromImport", "FromIterator", "FromNot", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromThis", "FromTuple", "IsUndefined", "FromUnion", "HasPropertyKey", "IsFunction", "Clone", "IsUndefined", "IsObject", "FromArray", "IsArray", "Visit", "FromDate", "IsDate", "FromImport", "FromIntersect", "schema", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Default", "Delete", "Get", "Has", "Set", "Escape", "Set", "Delete", "Has", "Get", "ObjectType", "IsObject", "DateType", "IsDate", "ArrayType", "IsArray", "Object", "String", "Delete", "ObjectType", "HasPropertyKey", "Visit", "ArrayType", "IsArray", "TypedArrayType", "ValueType", "Clone", "IsStandardObject", "IsObject", "IsArray", "ObjectType", "Clone", "Visit", "ArrayType", "TypedArrayType", "ValueType", "ParseRegistry", "Clone", "Default", "Delete", "Set", "Get", "value", "IsUndefined", "IsArray", "value_exports", "Clone", "Create", "Default", "value_exports", "resolve", "dirname", "once", "randomUUID", "process", "resolve", "randomUUID", "process", "result", "resolve", "randomUUID"]
|
|
3
|
+
"sources": ["../src/entry/runtime.ts", "../src/runtime/receive-pager.ts", "../node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs", "../node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs", "../node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs", "../node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs", "../node_modules/@sinclair/typebox/build/esm/system/policy.mjs", "../node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs", "../node_modules/@sinclair/typebox/build/esm/type/create/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/error/error.mjs", "../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs", "../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs", "../node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs", "../node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs", "../node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs", "../node_modules/@sinclair/typebox/build/esm/type/any/any.mjs", "../node_modules/@sinclair/typebox/build/esm/type/array/array.mjs", "../node_modules/@sinclair/typebox/build/esm/type/argument/argument.mjs", "../node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs", "../node_modules/@sinclair/typebox/build/esm/type/computed/computed.mjs", "../node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs", "../node_modules/@sinclair/typebox/build/esm/type/never/never.mjs", "../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs", "../node_modules/@sinclair/typebox/build/esm/type/function/function.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs", "../node_modules/@sinclair/typebox/build/esm/type/union/union.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs", "../node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs", "../node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs", "../node_modules/@sinclair/typebox/build/esm/type/number/number.mjs", "../node_modules/@sinclair/typebox/build/esm/type/string/string.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs", "../node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs", "../node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs", "../node_modules/@sinclair/typebox/build/esm/type/object/object.mjs", "../node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs", "../node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs", "../node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs", "../node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs", "../node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs", "../node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs", "../node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs", "../node_modules/@sinclair/typebox/build/esm/type/date/date.mjs", "../node_modules/@sinclair/typebox/build/esm/type/null/null.mjs", "../node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs", "../node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs", "../node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs", "../node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs", "../node_modules/@sinclair/typebox/build/esm/type/const/const.mjs", "../node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs", "../node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs", "../node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs", "../node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs", "../node_modules/@sinclair/typebox/build/esm/type/record/record.mjs", "../node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs", "../node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs", "../node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs", "../node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs", "../node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs", "../node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs", "../node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/required/required.mjs", "../node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs", "../node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs", "../node_modules/@sinclair/typebox/build/esm/type/module/module.mjs", "../node_modules/@sinclair/typebox/build/esm/type/not/not.mjs", "../node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs", "../node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs", "../node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs", "../node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs", "../node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs", "../node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs", "../node_modules/@sinclair/typebox/build/esm/type/void/void.mjs", "../node_modules/@sinclair/typebox/build/esm/type/type/type.mjs", "../node_modules/@sinclair/typebox/build/esm/type/type/index.mjs", "../src/protocol/pi-identity.ts", "../src/pi/external-installation.ts", "../src/pi/process.ts", "../src/platform/runtime/process-tree.ts", "../src/pi/rpc-record-framer.ts", "../src/pi/adapter.ts", "../src/pi/external-target.ts", "../src/platform/shared/paths.ts", "../src/platform/shared/state-security.ts", "../src/runtime/control-server.ts", "../node_modules/@sinclair/typebox/build/esm/errors/function.mjs", "../node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs", "../node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs", "../node_modules/@sinclair/typebox/build/esm/value/check/check.mjs", "../node_modules/@sinclair/typebox/build/esm/errors/errors.mjs", "../node_modules/@sinclair/typebox/build/esm/value/assert/assert.mjs", "../node_modules/@sinclair/typebox/build/esm/value/clone/clone.mjs", "../node_modules/@sinclair/typebox/build/esm/value/create/create.mjs", "../node_modules/@sinclair/typebox/build/esm/value/cast/cast.mjs", "../node_modules/@sinclair/typebox/build/esm/value/clean/clean.mjs", "../node_modules/@sinclair/typebox/build/esm/value/convert/convert.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs", "../node_modules/@sinclair/typebox/build/esm/value/decode/decode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/default/default.mjs", "../node_modules/@sinclair/typebox/build/esm/value/pointer/pointer.mjs", "../node_modules/@sinclair/typebox/build/esm/value/equal/equal.mjs", "../node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs", "../node_modules/@sinclair/typebox/build/esm/value/encode/encode.mjs", "../node_modules/@sinclair/typebox/build/esm/value/mutate/mutate.mjs", "../node_modules/@sinclair/typebox/build/esm/value/parse/parse.mjs", "../node_modules/@sinclair/typebox/build/esm/value/value/value.mjs", "../src/protocol/version.ts", "../src/protocol/envelope.ts", "../src/protocol/validation.ts", "../src/protocol/jsonl.ts", "../src/protocol/semantic-segmentation.ts", "../src/shared/runtime-limits.ts", "../src/platform/shared/runtime-ownership.ts", "../src/runtime/fleet-service.ts", "../src/client/contracts.ts", "../src/pi/session-selector.ts", "../src/pi/launch-profile.ts", "../src/shared/result.ts", "../src/runtime/agent-coordinator.ts", "../src/runtime/journal-ingestion.ts", "../src/runtime/lifecycle-projector.ts", "../src/runtime/runtime-diagnostics.ts", "../src/runtime/journal-runtime.ts", "../src/runtime/journal-wakeup.ts", "../src/runtime/storage-health.ts", "../src/store/journal-fleet-store-adapter.ts", "../src/store/sqlite-journal-store.ts", "../src/store/worker-journal-store.ts", "../src/store/journal-worker-protocol.ts"],
|
|
4
|
+
"sourcesContent": ["import { existsSync, readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { DatabaseSync } from \"node:sqlite\";\nimport { pathToFileURL } from \"node:url\";\n\nimport { OpaqueReceiveCursorCodec } from \"../runtime/receive-pager.js\";\nimport { createExternalPiTarget } from \"../pi/external-target.js\";\nimport { signalProcessTree, waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport { resolveFleetPaths } from \"../platform/shared/paths.js\";\nimport { prepareFleetPathSecurity } from \"../platform/shared/state-security.js\";\nimport { startControlServer } from \"../runtime/control-server.js\";\nimport { FleetService } from \"../runtime/fleet-service.js\";\nimport { JournalRuntimeComposition } from \"../runtime/journal-runtime.js\";\nimport { JournalWakeup } from \"../runtime/journal-wakeup.js\";\nimport { preflightRuntimeStartup } from \"../platform/shared/runtime-ownership.js\";\nimport { CleanDrainCoordinator } from \"../runtime/storage-health.js\";\nimport { runtimeLimitsFromEnv } from \"../shared/runtime-limits.js\";\nimport { JournalFleetStoreAdapter } from \"../store/journal-fleet-store-adapter.js\";\nimport type { JournalStore } from \"../store/journal-store.js\";\nimport {\n classifyJournalMigrationRows,\n type JournalMigrationRow,\n} from \"../store/sqlite-journal-store.js\";\nimport { WorkerJournalStore } from \"../store/worker-journal-store.js\";\n\nexport async function runRuntime(): Promise<void> {\n const paths = resolveFleetPaths();\n const limits = runtimeLimitsFromEnv();\n await preflightRuntimeStartup({ socketPath: paths.socketPath, destructive: false });\n await prepareFleetPathSecurity(paths);\n const schemaState = inspectJournalSchema(paths.databasePath);\n if (schemaState === \"legacy\") {\n await preflightRuntimeStartup({\n socketPath: paths.socketPath,\n destructive: true,\n assertOwnedProcessTreesAbsent: () => assertLegacyProcessTreesAbsent(paths.databasePath),\n });\n }\n\n let resolveService: (service: FleetService) => void;\n let rejectService: (error: unknown) => void;\n const serviceReady = new Promise<FleetService>((resolveReady, rejectReady) => {\n resolveService = resolveReady;\n rejectService = rejectReady;\n });\n const wakeup = new JournalWakeup();\n let journal: JournalRuntimeComposition | undefined;\n const server = await startControlServer({\n socketPath: paths.socketPath,\n service: serviceReady,\n journal: async () => {\n if (journal === undefined) throw new Error(\"Journal runtime is not ready\");\n return journal;\n },\n limits,\n });\n\n let journalStore: WorkerJournalStore | undefined;\n let service: FleetService | undefined;\n try {\n journalStore = new WorkerJournalStore(paths.databasePath, {\n maxPending: limits.maxJournalPendingRecords,\n checkpointCommitInterval: limits.journalCheckpointCommitInterval,\n reclaimPagesPerPass: limits.journalReclaimPagesPerPass,\n onHealthFailure: (error) => {\n const failure = Object.assign(error, { code: \"storage_unavailable\" });\n wakeup.close(failure);\n service?.failStorage(failure);\n },\n });\n await reconcileObservationContinuity(journalStore, new Date().toISOString());\n journal = new JournalRuntimeComposition({\n store: journalStore,\n limits,\n cursors: new OpaqueReceiveCursorCodec(),\n wakeup,\n notifyEvents: (agentId, position) => wakeup.notify(agentId, position),\n failAgent: (agentId, error) => service?.failAgent(agentId, error),\n });\n const store = new JournalFleetStoreAdapter(journalStore);\n const piTarget = await createExternalPiTarget(\n process.env,\n limits.maxPiFrameBytes,\n limits.maxJournalPartialRecordBytes,\n );\n service = new FleetService(store, {\n launcher: piTarget.launcher,\n piIdentity: piTarget.identity,\n limits,\n journal,\n journalStore,\n onAgentDestroyed: (agentId) => {\n const error = new Error(\"Agent destroyed\") as Error & { code: string };\n error.code = \"agent_destroyed\";\n wakeup.failAgent(agentId, error);\n },\n });\n await service.reconcile();\n resolveService!(service);\n } catch (error: unknown) {\n rejectService!(error);\n wakeup.close();\n await Promise.allSettled([service?.close() ?? Promise.resolve(), server.close()]);\n await journalStore?.close().catch(() => undefined);\n throw error;\n }\n\n const unavailable = Object.assign(new Error(\"Runtime unavailable\"), {\n code: \"runtime_unavailable\",\n });\n const drain = new CleanDrainCoordinator({\n stopAdmission: () => service!.beginShutdown(),\n drainStdoutAndJournal: () => service!.drainStdoutAndJournal(),\n closeReceivers: async () => wakeup.close(unavailable),\n stopProcessTrees: () => service!.stopProcessTrees(),\n closeServer: () => server.close(),\n closeStore: () => journalStore!.close(),\n });\n await new Promise<void>((resolveShutdown) => {\n let closing = false;\n const shutdown = () => {\n if (closing) return;\n closing = true;\n void drain.close().finally(resolveShutdown);\n };\n process.once(\"SIGTERM\", shutdown);\n process.once(\"SIGINT\", shutdown);\n });\n}\n\nexport async function reconcileObservationContinuity(\n store: JournalStore,\n now: string,\n): Promise<void> {\n for (const incarnation of await store.listActiveIncarnations()) {\n // Every persisted active incarnation may have outlived an unclean central-runtime death,\n // even if its process group is absent by the time recovery begins.\n let gone = incarnation.pid !== null && (await waitForProcessGroupExit(incarnation.pid, 0));\n const epochs = await store.getEpochs(incarnation.agentId);\n const open = epochs.findLast((epoch) => epoch.state === \"open\");\n if (open !== undefined) {\n const highWater = await store.getHighWater(incarnation.agentId);\n await store.putEpoch({\n ...open,\n state: \"closed\",\n lastSafeEventPosition: highWater?.eventPosition ?? open.lastSafeEventPosition,\n closedAt: now,\n reason: \"observation_uncertain\",\n });\n }\n\n if (!gone && incarnation.pid !== null) {\n signalProcessTree(incarnation.pid, \"SIGTERM\");\n gone = await waitForProcessGroupExit(incarnation.pid, 1_000);\n }\n if (!gone && incarnation.pid !== null) {\n signalProcessTree(incarnation.pid, \"SIGKILL\");\n gone = await waitForProcessGroupExit(incarnation.pid, 1_000);\n }\n await store.putIncarnation({\n ...incarnation,\n state: gone ? \"gone\" : \"cleanup_uncertain\",\n });\n const agent = await store.getAgentById(incarnation.agentId);\n if (agent === null) continue;\n const wasActive = agent.summary.state === \"working\" || agent.summary.state === \"restoring\";\n await store.putAgent({\n ...agent,\n summary: {\n ...agent.summary,\n state: gone && !wasActive ? \"idle\" : \"failed\",\n process: { state: gone ? \"absent\" : \"cleanup_uncertain\" },\n ...(!gone\n ? { error: { code: \"incarnation_cleanup_uncertain\" } }\n : wasActive\n ? { error: { code: \"runtime_interrupted\" } }\n : { error: undefined }),\n },\n });\n }\n}\n\nexport type JournalSchemaState = \"fresh\" | \"legacy\" | \"current\";\n\nexport function inspectJournalSchema(path: string): JournalSchemaState {\n if (!existsSync(path) || statSync(path).size === 0) return \"fresh\";\n let database: DatabaseSync;\n try {\n database = new DatabaseSync(path, { readOnly: true });\n } catch (error: unknown) {\n throw new Error(\"pi-fleet database ownership is uncertain\", { cause: error });\n }\n try {\n const table = database\n .prepare(\"SELECT type FROM sqlite_master WHERE name = 'schema_migrations'\")\n .get() as { readonly type?: string } | undefined;\n if (table?.type !== \"table\") throw new Error(\"pi-fleet database migration ledger is missing\");\n const rows = database\n .prepare(\"SELECT version, checksum FROM schema_migrations ORDER BY version\")\n .all() as unknown as JournalMigrationRow[];\n const state = classifyJournalMigrationRows(rows);\n if (state === \"fresh\") throw new Error(\"pi-fleet database migration ledger is empty\");\n return state;\n } finally {\n database.close();\n }\n}\n\nasync function assertLegacyProcessTreesAbsent(path: string): Promise<void> {\n if (!existsSync(path)) return;\n const database = new DatabaseSync(path, { readOnly: true });\n let pids: number[] = [];\n try {\n const rows = database\n .prepare(\n `SELECT json_extract(data_json, '$.pid') AS pid\n FROM incarnations\n WHERE state IN ('starting', 'live', 'stopping', 'cleanup_uncertain')`,\n )\n .all() as { pid?: number | null }[];\n if (\n rows.some(\n (row) => typeof row.pid !== \"number\" || !Number.isSafeInteger(row.pid) || row.pid <= 0,\n )\n ) {\n throw new Error(\"Legacy Pi process ownership is uncertain\");\n }\n pids = rows.map((row) => row.pid as number);\n } finally {\n database.close();\n }\n for (const pid of pids) {\n if (!(await waitForProcessGroupExit(pid, 0))) {\n throw new Error(`Legacy Pi process group ${String(pid)} is still present`);\n }\n }\n assertNoOtherProcessHasDatabaseOpen(path);\n}\n\nexport function assertNoOtherProcessHasDatabaseOpen(path: string, procRoot = \"/proc\"): void {\n if (process.platform !== \"linux\" || !existsSync(path)) {\n throw new Error(\"Legacy runtime ownership proof is supported only on Linux\");\n }\n const databaseIdentity = statSync(path);\n const currentUid = process.getuid?.();\n for (const entry of readdirSync(procRoot)) {\n if (!/^\\d+$/.test(entry) || Number(entry) === process.pid) continue;\n const processPath = `${procRoot}/${entry}`;\n let owner: number;\n try {\n owner = statSync(processPath).uid;\n } catch {\n continue;\n }\n if (currentUid !== undefined && owner !== currentUid) continue;\n // A reaped-but-unwaited process has already released every descriptor, and its\n // `/proc/<pid>/fd` is deliberately unreadable, so it cannot own the database.\n if (isZombieProcess(processPath)) continue;\n let descriptors: string[];\n try {\n descriptors = readdirSync(`${processPath}/fd`);\n } catch (error: unknown) {\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") continue;\n throw new Error(`Cannot prove legacy runtime ${entry} released pi-fleet state`, {\n cause: error,\n });\n }\n for (const descriptor of descriptors) {\n try {\n const opened = statSync(`${processPath}/fd/${descriptor}`);\n if (opened.dev === databaseIdentity.dev && opened.ino === databaseIdentity.ino) {\n throw new Error(`Legacy runtime process ${entry} still owns the pi-fleet database`);\n }\n } catch (error: unknown) {\n if (\n error instanceof Error &&\n \"code\" in error &&\n (error.code === \"ENOENT\" || error.code === \"EBADF\")\n ) {\n continue;\n }\n throw error;\n }\n }\n }\n}\n\n/** Reads the scheduler state character from `/proc/<pid>/stat`, tolerating exits. */\nfunction isZombieProcess(processPath: string): boolean {\n let stat: string;\n try {\n stat = readFileSync(`${processPath}/stat`, \"utf8\");\n } catch {\n // An unreadable or vanished stat line proves nothing on its own; the caller\n // still requires descriptor evidence for live same-user processes.\n return false;\n }\n const afterComm = stat.slice(stat.lastIndexOf(\")\") + 1).trim();\n return afterComm.startsWith(\"Z\");\n}\n\nif (process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href) {\n await runRuntime();\n}\n", "import type { ReceiveCursorCodec, ReceiveStart } from \"../client/agent-target.js\";\nimport type { ReceiveStream } from \"../client/contracts.js\";\nimport type { JournalReceiveSnapshot, JournalStore } from \"../store/journal-store.js\";\nimport type { AgentId, ReceiveCursor, SemanticEvent } from \"./semantic-events.js\";\n\nexport type { ReceiveStream } from \"../client/contracts.js\";\n\ninterface CursorPayload {\n readonly v: 1;\n readonly a: string;\n readonly e: number;\n readonly p: number;\n readonly k?: \"continuation\";\n}\n\nexport class ReceiveBoundaryError extends Error {\n constructor(readonly code: \"cursor_invalid\" | \"cursor_expired\" | \"cursor_wrong_agent\") {\n super(\"Receive cursor cannot be used.\");\n this.name = \"ReceiveBoundaryError\";\n }\n}\n\nexport class OpaqueReceiveCursorCodec implements ReceiveCursorCodec {\n readonly version = 1 as const;\n\n encode(boundary: {\n readonly agentId: AgentId;\n readonly epoch: number;\n readonly position: number;\n readonly kind?: \"position\" | \"continuation\";\n }): ReceiveCursor {\n assertPosition(boundary.position);\n assertPosition(boundary.epoch);\n const payload: CursorPayload = {\n v: this.version,\n a: boundary.agentId,\n e: boundary.epoch,\n p: boundary.position,\n ...(boundary.kind === \"continuation\" ? { k: \"continuation\" as const } : {}),\n };\n return Buffer.from(JSON.stringify(payload)).toString(\"base64url\") as ReceiveCursor;\n }\n\n decode(cursor: ReceiveCursor): {\n readonly agentId: AgentId;\n readonly epoch: number;\n readonly position: number;\n readonly kind: \"position\" | \"continuation\";\n } {\n let value: unknown;\n try {\n value = JSON.parse(Buffer.from(cursor, \"base64url\").toString(\"utf8\"));\n } catch {\n throw new ReceiveBoundaryError(\"cursor_invalid\");\n }\n if (!isCursorPayload(value)) throw new ReceiveBoundaryError(\"cursor_invalid\");\n return {\n agentId: value.a as AgentId,\n epoch: value.e,\n position: value.p,\n kind: value.k === \"continuation\" ? \"continuation\" : \"position\",\n };\n }\n}\n\nexport interface ReceiveWakeup {\n /** Must resolve immediately when persisted event position is already greater than afterPosition. */\n waitForEvents(agentId: AgentId, afterPosition: number, signal: AbortSignal): Promise<void>;\n}\n\nexport interface ReceivePagerLimits {\n readonly maxRows: number;\n readonly maxBytes: number;\n readonly maxEventBytes: number;\n}\n\nexport interface ReceivePagerActivity {\n readonly onReadStart?: () => void;\n readonly onReadEnd?: () => void;\n}\n\nexport class ReceiveObservationUncertainError extends Error {\n readonly code = \"observation_uncertain\" as const;\n\n constructor(\n readonly lastSafeCursor: ReceiveCursor,\n readonly continuationCursor: ReceiveCursor | null,\n ) {\n super(\"Receive observation continuity is uncertain\");\n this.name = \"ReceiveObservationUncertainError\";\n }\n}\n\nexport class ReceivePager {\n constructor(\n private readonly store: JournalStore,\n private readonly cursors: ReceiveCursorCodec,\n private readonly wakeup: ReceiveWakeup,\n private readonly limits: ReceivePagerLimits,\n private readonly activity: ReceivePagerActivity = {},\n ) {\n assertPositiveInteger(limits.maxRows, \"Receive replay row limit\");\n assertPositiveInteger(limits.maxBytes, \"Receive replay byte limit\");\n assertPositiveInteger(limits.maxEventBytes, \"Receive semantic event limit\");\n }\n\n async open(agentId: AgentId, start: ReceiveStart, signal: AbortSignal): Promise<ReceiveStream> {\n throwIfAborted(signal);\n const snapshot = await this.store.openReceive(agentId);\n if (snapshot === null) throw codedError(\"agent_not_found\", \"Agent generation was not found\");\n const boundary = this.#boundary(snapshot, start);\n const initialCursor = this.cursors.encode(boundary);\n return {\n cursor: initialCursor,\n [Symbol.asyncIterator]: () =>\n this.#events(agentId, boundary.epoch, boundary.position, signal),\n };\n }\n\n #boundary(\n snapshot: JournalReceiveSnapshot,\n start: ReceiveStart,\n ): { readonly agentId: AgentId; readonly epoch: number; readonly position: number } {\n const latest = snapshot.epochs.at(-1);\n if (latest === undefined) throw codedError(\"state_corrupt\", \"Agent has no continuity epoch\");\n if (start.kind === \"live\") {\n return {\n agentId: snapshot.agent.agentId,\n epoch: latest.epoch,\n position: snapshot.highWater.eventPosition,\n };\n }\n if (start.kind === \"start\") {\n return {\n agentId: snapshot.agent.agentId,\n epoch: snapshot.epochs[0]?.epoch ?? latest.epoch,\n position: 0,\n };\n }\n\n const decoded = this.cursors.decode(start.cursor);\n if (decoded.agentId !== snapshot.agent.agentId) {\n throw new ReceiveBoundaryError(\"cursor_wrong_agent\");\n }\n const epochIndex = snapshot.epochs.findIndex((epoch) => epoch.epoch === decoded.epoch);\n if (epochIndex < 0) throw new ReceiveBoundaryError(\"cursor_expired\");\n if (decoded.position > snapshot.highWater.eventPosition) {\n throw new ReceiveBoundaryError(\"cursor_invalid\");\n }\n const selectedEpoch = snapshot.epochs[epochIndex]!;\n if (\n selectedEpoch.state === \"closed\" &&\n decoded.kind === \"position\" &&\n decoded.position > selectedEpoch.lastSafeEventPosition\n ) {\n throw new ReceiveBoundaryError(\"cursor_invalid\");\n }\n if (decoded.kind === \"continuation\") {\n const previous = snapshot.epochs[epochIndex - 1];\n if (\n previous === undefined ||\n previous.state !== \"closed\" ||\n previous.reason !== \"observation_uncertain\" ||\n previous.lastSafeEventPosition !== decoded.position\n ) {\n throw new ReceiveBoundaryError(\"cursor_invalid\");\n }\n }\n return decoded;\n }\n\n async *#events(\n agentId: AgentId,\n initialEpoch: number,\n initialPosition: number,\n signal: AbortSignal,\n ): AsyncGenerator<SemanticEvent> {\n let epoch = initialEpoch;\n let position = initialPosition;\n while (true) {\n throwIfAborted(signal);\n this.activity.onReadStart?.();\n const page = await this.store\n .readEvents({\n agentId,\n epoch: epoch as SemanticEvent[\"epoch\"],\n afterPosition: position,\n limit: this.limits.maxRows,\n maxBytes: this.limits.maxBytes,\n maxEventBytes: this.limits.maxEventBytes,\n })\n .finally(() => this.activity.onReadEnd?.());\n if (page.length > 0) {\n for (const stored of page) {\n const cursor = this.cursors.encode({\n agentId,\n epoch: stored.event.epoch,\n position: stored.position,\n });\n position = stored.position;\n yield { ...stored.event, cursor };\n }\n continue;\n }\n\n const snapshot = await this.store.openReceive(agentId);\n if (snapshot === null) throw codedError(\"agent_destroyed\", \"Agent was destroyed\");\n const epochIndex = snapshot.epochs.findIndex((candidate) => candidate.epoch === epoch);\n if (epochIndex < 0) throw new ReceiveBoundaryError(\"cursor_expired\");\n const current = snapshot.epochs[epochIndex]!;\n const next = snapshot.epochs[epochIndex + 1];\n if (current.state === \"closed\" && position >= current.lastSafeEventPosition) {\n if (current.reason === \"observation_uncertain\") {\n const lastSafeCursor = this.cursors.encode({\n agentId,\n epoch: current.epoch,\n position: current.lastSafeEventPosition,\n });\n const continuationCursor =\n next === undefined\n ? null\n : this.cursors.encode({\n agentId,\n epoch: next.epoch,\n position: current.lastSafeEventPosition,\n kind: \"continuation\",\n });\n throw new ReceiveObservationUncertainError(lastSafeCursor, continuationCursor);\n }\n if (next !== undefined) {\n epoch = next.epoch;\n continue;\n }\n }\n await this.wakeup.waitForEvents(agentId, position, signal);\n }\n }\n}\n\nfunction codedError(code: string, message: string): Error & { readonly code: string } {\n return Object.assign(new Error(message), { code });\n}\n\nfunction isCursorPayload(value: unknown): value is CursorPayload {\n if (typeof value !== \"object\" || value === null) return false;\n const payload = value as Partial<CursorPayload>;\n return (\n payload.v === 1 &&\n (payload.k === undefined || payload.k === \"continuation\") &&\n typeof payload.a === \"string\" &&\n payload.a.length > 0 &&\n Number.isSafeInteger(payload.e) &&\n (payload.e ?? -1) >= 0 &&\n Number.isSafeInteger(payload.p) &&\n (payload.p ?? -1) >= 0\n );\n}\n\nfunction assertPosition(value: number, label = \"Receive cursor position\"): void {\n if (!Number.isSafeInteger(value) || value < 0) throw new Error(`${label} must be non-negative`);\n}\n\nfunction assertPositiveInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value <= 0) throw new Error(`${label} must be positive`);\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (signal.aborted) throw signal.reason ?? new Error(\"Receive cancelled\");\n}\n", "// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nexport function Clone(value) {\n return Visit(value);\n}\n", "import { Clone } from './value.mjs';\n/** Clones a Rest */\nexport function CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nexport function CloneType(schema, options) {\n return options === undefined ? Clone(schema) : Clone({ ...options, ...schema });\n}\n", "// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nexport function IsAsyncIterator(value) {\n return IsObject(value) && globalThis.Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nexport function IsIterator(value) {\n return IsObject(value) && globalThis.Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nexport function IsStandardObject(value) {\n return IsObject(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nexport function IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nexport function IsPromise(value) {\n return value instanceof globalThis.Promise;\n}\n/** Returns true if this value is a Date */\nexport function IsDate(value) {\n return value instanceof Date && globalThis.Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map<K, T> */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set<T> */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nexport function IsTypedArray(value) {\n return globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true of this value is an object type */\nexport function IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nexport function IsArray(value) {\n return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nexport function IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nexport function IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nexport function IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nexport function IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nexport function IsInteger(value) {\n return globalThis.Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nexport function IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nexport function IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n", "import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs';\nexport var TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Instancing\n // ------------------------------------------------------------------\n /**\n * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript\n * references for embedded types, which may cause side effects if type properties are explicitly updated\n * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation,\n * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making\n * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the\n * fastest way to instantiate types. The default setting is `default`.\n */\n TypeSystemPolicy.InstanceMode = 'default';\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Checking\n // ------------------------------------------------------------------\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Checks this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Checks this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = IsObject(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Checks this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Checks this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? IsNumber(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Checks this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = IsUndefined(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (TypeSystemPolicy = {}));\n", "import * as ValueGuard from '../guard/value.mjs';\nfunction ImmutableArray(value) {\n return globalThis.Object.freeze(value).map((value) => Immutable(value));\n}\nfunction ImmutableDate(value) {\n return value;\n}\nfunction ImmutableUint8Array(value) {\n return value;\n}\nfunction ImmutableRegExp(value) {\n return value;\n}\nfunction ImmutableObject(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Immutable(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Immutable(value[key]);\n }\n return globalThis.Object.freeze(result);\n}\n/** Specialized deep immutable value. Applies freeze recursively to the given value */\n// prettier-ignore\nexport function Immutable(value) {\n return (ValueGuard.IsArray(value) ? ImmutableArray(value) :\n ValueGuard.IsDate(value) ? ImmutableDate(value) :\n ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :\n ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :\n ValueGuard.IsObject(value) ? ImmutableObject(value) :\n value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Immutable } from './immutable.mjs';\nimport { Clone } from '../clone/value.mjs';\n/** Creates TypeBox schematics using the configured InstanceMode */\nexport function CreateType(schema, options) {\n const result = options !== undefined ? { ...options, ...schema } : schema;\n switch (TypeSystemPolicy.InstanceMode) {\n case 'freeze':\n return Immutable(result);\n case 'clone':\n return Clone(result);\n default:\n return result;\n }\n}\n", "/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\n", "/** Symbol key applied to transform types */\nexport const TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexport const ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexport const OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexport const Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexport const Kind = Symbol.for('TypeBox.Kind');\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nexport function IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n return IsKindOf(value, 'Argument');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nexport function IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n return IsKindOf(value, 'Computed');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nexport function IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsImport(value) {\n return IsKindOf(value, 'Import');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nexport function IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nexport function IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nexport function IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nexport function IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nexport function IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nexport function IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nexport function IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "import * as ValueGuard from './value.mjs';\nimport { Kind, Hint, TransformKind, ReadonlyKind, OptionalKind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nexport class TypeGuardUnknownTypeError extends TypeBoxError {\n}\nconst KnownTypes = [\n 'Argument',\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Computed',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nexport function IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nexport function IsOptional(value) {\n return ValueGuard.IsObject(value) && value[OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nexport function IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArgument */\nexport function IsArgument(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Argument') &&\n ValueGuard.IsNumber(value.index));\n}\n/** Returns true if the given value is TArray */\nexport function IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nexport function IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nexport function IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nexport function IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TComputed */\nexport function IsComputed(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Computed') &&\n ValueGuard.IsString(value.target) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every((schema) => IsSchema(schema)));\n}\n/** Returns true if the given value is TConstructor */\nexport function IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nexport function IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nexport function IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TImport */\nexport function IsImport(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Import') &&\n ValueGuard.HasPropertyKey(value, '$defs') &&\n ValueGuard.IsObject(value.$defs) &&\n IsProperties(value.$defs) &&\n ValueGuard.HasPropertyKey(value, '$ref') &&\n ValueGuard.IsString(value.$ref) &&\n value.$ref in value.$defs // required\n );\n}\n/** Returns true if the given value is TInteger */\nexport function IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nexport function IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nexport function IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nexport function IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nexport function IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && Kind in value && value[Kind] === kind;\n}\n/** Returns true if the given value is TLiteral<string> */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral<number> */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean> */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nexport function IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nexport function IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nexport function IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nexport function IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nexport function IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nexport function IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nexport function IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nexport function IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nexport function IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nexport function IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nexport function IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nexport function IsRecursive(value) {\n return ValueGuard.IsObject(value) && Hint in value && value[Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nexport function IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nexport function IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nexport function IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nexport function IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nexport function IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nexport function IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nexport function IsTransform(value) {\n return ValueGuard.IsObject(value) && TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nexport function IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nexport function IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion<Literal<string | number>[]> */\nexport function IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nexport function IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nexport function IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nexport function IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nexport function IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nexport function IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nexport function IsKind(value) {\n return ValueGuard.IsObject(value) && Kind in value && ValueGuard.IsString(value[Kind]) && !KnownTypes.includes(value[Kind]);\n}\n/** Returns true if the given value is TSchema */\nexport function IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArgument(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsComputed(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "export const PatternBoolean = '(true|false)';\nexport const PatternNumber = '(0|[1-9][0-9]*)';\nexport const PatternString = '(.*)';\nexport const PatternNever = '(?!.*)';\nexport const PatternBooleanExact = `^${PatternBoolean}$`;\nexport const PatternNumberExact = `^${PatternNumber}$`;\nexport const PatternStringExact = `^${PatternString}$`;\nexport const PatternNeverExact = `^${PatternNever}$`;\n", "/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nexport function Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nexport function Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nexport function Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nexport function Get(format) {\n return map.get(format);\n}\n", "/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nexport function Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nexport function Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nexport function Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nexport function Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nexport function Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nexport function Get(kind) {\n return map.get(kind);\n}\n", "/** Returns true if element right is in the set of left */\n// prettier-ignore\nexport function SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nexport function SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nexport function SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nexport function SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nexport function SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nexport function SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nexport function SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nexport function SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Any type */\nexport function Any(options) {\n return CreateType({ [Kind]: 'Any' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Array type */\nexport function Array(items, options) {\n return CreateType({ [Kind]: 'Array', type: 'array', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Argument Type. */\nexport function Argument(index) {\n return CreateType({ [Kind]: 'Argument', index });\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a AsyncIterator type */\nexport function AsyncIterator(items, options) {\n return CreateType({ [Kind]: 'AsyncIterator', type: 'AsyncIterator', items }, options);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/symbols.mjs';\n/** `[Internal]` Creates a deferred computed type. This type is used exclusively in modules to defer resolution of computable types that contain interior references */\nexport function Computed(target, parameters, options) {\n return CreateType({ [Kind]: 'Computed', target, parameters }, options);\n}\n", "function DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\n/** Discards property keys from the given value. This function returns a shallow Clone. */\nexport function Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Never type */\nexport function Never(options) {\n return CreateType({ [Kind]: 'Never', not: {} }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// prettier-ignore\nexport function MappedResult(properties) {\n return CreateType({\n [Kind]: 'MappedResult',\n properties\n });\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Constructor type */\nexport function Constructor(parameters, returns, options) {\n return CreateType({ [Kind]: 'Constructor', type: 'Constructor', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Function type */\nexport function Function(parameters, returns, options) {\n return CreateType({ [Kind]: 'Function', type: 'Function', parameters, returns }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\nexport function UnionCreate(T, options) {\n return CreateType({ [Kind]: 'Union', anyOf: T }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { UnionCreate } from './union-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsUnionOptional(types) {\n return types.some(type => IsOptional(type));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return (Discard(T, [OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(types, options) {\n const isOptional = IsUnionOptional(types);\n return (isOptional\n ? Optional(UnionCreate(RemoveOptionalFromRest(types), options))\n : UnionCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nexport function UnionEvaluated(T, options) {\n // prettier-ignore\n return (T.length === 1 ? CreateType(T[0], options) :\n T.length === 0 ? Never(options) :\n ResolveUnion(T, options));\n}\n", "import { Never } from '../never/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { UnionCreate } from './union-create.mjs';\n/** `[Json]` Creates a Union type */\nexport function Union(types, options) {\n // prettier-ignore\n return (types.length === 0 ? Never(options) :\n types.length === 1 ? CreateType(types[0], options) :\n UnionCreate(types, options));\n}\n", "import { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nexport class TemplateLiteralParserError extends TypeBoxError {\n}\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nexport function TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nexport function TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n", "import { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nexport class TemplateLiteralFiniteError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nexport function IsTemplateLiteralFinite(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n", "import { IsTemplateLiteralExpressionFinite } from './finite.mjs';\nimport { TemplateLiteralParseExact } from './parse.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nexport class TemplateLiteralGenerateError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nexport function* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nexport function TemplateLiteralGenerate(schema) {\n const expression = TemplateLiteralParseExact(schema.pattern);\n // prettier-ignore\n return (IsTemplateLiteralExpressionFinite(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Literal type */\nexport function Literal(value, options) {\n return CreateType({\n [Kind]: 'Literal',\n const: value,\n type: typeof value,\n }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[Json]` Creates a Boolean type */\nexport function Boolean(options) {\n return CreateType({ [Kind]: 'Boolean', type: 'boolean' }, options);\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n/** `[JavaScript]` Creates a BigInt type */\nexport function BigInt(options) {\n return CreateType({ [Kind]: 'BigInt', type: 'bigint' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Number type */\nexport function Number(options) {\n return CreateType({ [Kind]: 'Number', type: 'number' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a String type */\nexport function String(options) {\n return CreateType({ [Kind]: 'String', type: 'string' }, options);\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Boolean } from '../boolean/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield Boolean() :\n trim === 'number' ? yield Number() :\n trim === 'bigint' ? yield BigInt() :\n trim === 'string' ? yield String() :\n yield (() => {\n const literals = trim.split('|').map((literal) => Literal(literal.trim()));\n return (literals.length === 0 ? Never() :\n literals.length === 1 ? literals[0] :\n UnionEvaluated(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = Literal('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield Literal(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = Literal(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield Literal(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nexport function TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n", "import { PatternNumber, PatternString, PatternBoolean } from '../patterns/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsNumber, IsInteger, IsBigInt, IsString, IsLiteral, IsBoolean } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nexport class TemplateLiteralPatternError extends TypeBoxError {\n}\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return (IsTemplateLiteral(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n IsUnion(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n IsNumber(schema) ? `${acc}${PatternNumber}` :\n IsInteger(schema) ? `${acc}${PatternNumber}` :\n IsBigInt(schema) ? `${acc}${PatternNumber}` :\n IsString(schema) ? `${acc}${PatternString}` :\n IsLiteral(schema) ? `${acc}${Escape(schema.const.toString())}` :\n IsBoolean(schema) ? `${acc}${PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[Kind]}'`); })());\n}\nexport function TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n", "import { UnionEvaluated } from '../union/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { TemplateLiteralGenerate } from './generate.mjs';\n/** Returns a Union from the given TemplateLiteral */\nexport function TemplateLiteralToUnion(schema) {\n const R = TemplateLiteralGenerate(schema);\n const L = R.map((S) => Literal(S));\n return UnionEvaluated(L);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteralSyntax } from './syntax.mjs';\nimport { TemplateLiteralPattern } from './pattern.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nexport function TemplateLiteral(unresolved, options) {\n const pattern = IsString(unresolved)\n ? TemplateLiteralPattern(TemplateLiteralSyntax(unresolved))\n : TemplateLiteralPattern(unresolved);\n return CreateType({ [Kind]: 'TemplateLiteral', type: 'string', pattern }, options);\n}\n", "import { TemplateLiteralGenerate } from '../template-literal/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTemplateLiteral, IsUnion, IsLiteral, IsNumber, IsInteger } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromTemplateLiteral(templateLiteral) {\n const keys = TemplateLiteralGenerate(templateLiteral);\n return keys.map(key => key.toString());\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const result = [];\n for (const type of types)\n result.push(...IndexPropertyKeys(type));\n return result;\n}\n// prettier-ignore\nfunction FromLiteral(literalValue) {\n return ([literalValue.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nexport function IndexPropertyKeys(type) {\n return [...new Set((IsTemplateLiteral(type) ? FromTemplateLiteral(type) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsLiteral(type) ? FromLiteral(type.const) :\n IsNumber(type) ? ['[number]'] :\n IsInteger(type) ? ['[number]'] :\n []))];\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { Index } from './index.mjs';\n// prettier-ignore\nfunction FromProperties(type, properties, options) {\n const result = {};\n for (const K2 of Object.getOwnPropertyNames(properties)) {\n result[K2] = Index(type, IndexPropertyKeys(properties[K2]), options);\n }\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(type, mappedResult, options) {\n return FromProperties(type, mappedResult.properties, options);\n}\n// prettier-ignore\nexport function IndexFromMappedResult(type, mappedResult, options) {\n const properties = FromMappedResult(type, mappedResult, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectEvaluated } from '../intersect/index.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { IndexPropertyKeys } from './indexed-property-keys.mjs';\nimport { IndexFromMappedKey } from './indexed-from-mapped-key.mjs';\nimport { IndexFromMappedResult } from './indexed-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsIntersect, IsObject, IsMappedKey, IsMappedResult, IsNever, IsSchema, IsTuple, IsUnion, IsRef } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types, key) {\n return types.map(type => IndexFromPropertyKey(type, key));\n}\n// prettier-ignore\nfunction FromIntersectRest(types) {\n return types.filter(type => !IsNever(type));\n}\n// prettier-ignore\nfunction FromIntersect(types, key) {\n return (IntersectEvaluated(FromIntersectRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromUnionRest(types) {\n return (types.some(L => IsNever(L))\n ? []\n : types);\n}\n// prettier-ignore\nfunction FromUnion(types, key) {\n return (UnionEvaluated(FromUnionRest(FromRest(types, key))));\n}\n// prettier-ignore\nfunction FromTuple(types, key) {\n return (key in types ? types[key] :\n key === '[number]' ? UnionEvaluated(types) :\n Never());\n}\n// prettier-ignore\nfunction FromArray(type, key) {\n return (key === '[number]'\n ? type\n : Never());\n}\n// prettier-ignore\nfunction FromProperty(properties, propertyKey) {\n return (propertyKey in properties ? properties[propertyKey] : Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKey(type, propertyKey) {\n return (IsIntersect(type) ? FromIntersect(type.allOf, propertyKey) :\n IsUnion(type) ? FromUnion(type.anyOf, propertyKey) :\n IsTuple(type) ? FromTuple(type.items ?? [], propertyKey) :\n IsArray(type) ? FromArray(type.items, propertyKey) :\n IsObject(type) ? FromProperty(type.properties, propertyKey) :\n Never());\n}\n// prettier-ignore\nexport function IndexFromPropertyKeys(type, propertyKeys) {\n return propertyKeys.map(propertyKey => IndexFromPropertyKey(type, propertyKey));\n}\n// prettier-ignore\nfunction FromSchema(type, propertyKeys) {\n return (UnionEvaluated(IndexFromPropertyKeys(type, propertyKeys)));\n}\n// prettier-ignore\nexport function IndexFromComputed(type, key) {\n return Computed('Index', [type, key]);\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nexport function Index(type, key, options) {\n // computed-type\n if (IsRef(type) || IsRef(key)) {\n const error = `Index types using Ref parameters require both Type and Key to be of TSchema`;\n if (!IsSchema(type) || !IsSchema(key))\n throw new TypeBoxError(error);\n return Computed('Index', [type, key]);\n }\n // mapped-types\n if (IsMappedResult(key))\n return IndexFromMappedResult(type, key, options);\n if (IsMappedKey(key))\n return IndexFromMappedKey(type, key, options);\n // prettier-ignore\n return CreateType(IsSchema(key)\n ? FromSchema(type, IndexPropertyKeys(key))\n : FromSchema(type, key), options);\n}\n", "import { Index } from './indexed.mjs';\nimport { MappedResult } from '../mapped/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIndexPropertyKey(type, key, options) {\n return { [key]: Index(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, left) => {\n return { ...result, ...MappedIndexPropertyKey(type, left, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(type, mappedKey, options) {\n return MappedIndexPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function IndexFromMappedKey(type, mappedKey, options) {\n const properties = MappedIndexProperties(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates an Iterator type */\nexport function Iterator(items, options) {\n return CreateType({ [Kind]: 'Iterator', type: 'Iterator', items }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional } from '../guard/kind.mjs';\n/** Creates a RequiredArray derived from the given TProperties value. */\nfunction RequiredArray(properties) {\n return globalThis.Object.keys(properties).filter((key) => !IsOptional(properties[key]));\n}\n/** `[Json]` Creates an Object type */\nfunction _Object_(properties, options) {\n const required = RequiredArray(properties);\n const schema = required.length > 0 ? { [Kind]: 'Object', type: 'object', required, properties } : { [Kind]: 'Object', type: 'object', properties };\n return CreateType(schema, options);\n}\n// ------------------------------------------------------------------\n// TypeScript 7: CommonJS TS2441\n//\n// TypeScript generates a CommonJS shim that patches local variables\n// via an unqualified reference to Object (e.g. the __esModule shim's\n// Object.defineProperty call). Other compiler tools have been\n// observed patching in the same way, but TypeScript 7 has correctly\n// begun flagging variables named Object in CommonJS, since they\n// conflict with the shim and can cause \"used before definition\"\n// errors. This is CommonJS-specific; no such shim exists for ESM.\n//\n// TypeBox works around this using a `var` declaration, which is\n// known to avoid use-before-definition errors. TypeBox 1.x employs\n// a similar strategy.\n// ------------------------------------------------------------------\n/** `[Json]` Creates an Object type */\n// @ts-ignore - error TS2441: Duplicate identifier 'Object'. Compiler reserves name 'Object' in top level scope of a module.\nexport var Object = _Object_;\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Promise type */\nexport function Promise(item, options) {\n return CreateType({ [Kind]: 'Promise', type: 'Promise', item }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { ReadonlyFromMappedResult } from './readonly-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveReadonly(schema) {\n return CreateType(Discard(schema, [ReadonlyKind]));\n}\nfunction AddReadonly(schema) {\n return CreateType({ ...schema, [ReadonlyKind]: 'Readonly' });\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nexport function Readonly(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? ReadonlyFromMappedResult(schema, F) : ReadonlyWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Readonly } from './readonly.mjs';\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Readonly(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Tuple type */\nexport function Tuple(types, options) {\n // prettier-ignore\n return CreateType(types.length > 0 ?\n { [Kind]: 'Tuple', type: 'array', items: types, additionalItems: false, minItems: types.length, maxItems: types.length } :\n { [Kind]: 'Tuple', type: 'array', minItems: types.length, maxItems: types.length }, options);\n}\n", "import { Kind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\n// evaluation types\nimport { Array } from '../array/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Promise } from '../promise/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// operator\nimport { SetIncludes } from '../sets/index.mjs';\n// mapping types\nimport { MappedResult } from './mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsAsyncIterator, IsConstructor, IsFunction, IsIntersect, IsIterator, IsReadonly, IsMappedResult, IsMappedKey, IsObject, IsOptional, IsPromise, IsSchema, IsTuple, IsUnion } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : MappedResult(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: Literal(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = Literal(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return (SetIncludes(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n // required to retain user defined options for mapped type\n const options = { ...T };\n return (\n // unevaluated modifier types\n IsOptional(T) ? Optional(FromSchemaType(K, Discard(T, [OptionalKind]))) :\n IsReadonly(T) ? Readonly(FromSchemaType(K, Discard(T, [ReadonlyKind]))) :\n // unevaluated mapped types\n IsMappedResult(T) ? FromMappedResult(K, T.properties) :\n IsMappedKey(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n IsConstructor(T) ? Constructor(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsFunction(T) ? FunctionType(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n IsAsyncIterator(T) ? AsyncIterator(FromSchemaType(K, T.items), options) :\n IsIterator(T) ? Iterator(FromSchemaType(K, T.items), options) :\n IsIntersect(T) ? Intersect(FromRest(K, T.allOf), options) :\n IsUnion(T) ? Union(FromRest(K, T.anyOf), options) :\n IsTuple(T) ? Tuple(FromRest(K, T.items ?? []), options) :\n IsObject(T) ? _Object_(FromProperties(K, T.properties), options) :\n IsArray(T) ? Array(FromSchemaType(K, T.items), options) :\n IsPromise(T) ? Promise(FromSchemaType(K, T.item), options) :\n T);\n}\n// prettier-ignore\nexport function MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nexport function Mapped(key, map, options) {\n const K = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const RT = map({ [Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return _Object_(R, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { OptionalKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { OptionalFromMappedResult } from './optional-from-mapped-result.mjs';\nimport { IsMappedResult } from '../guard/kind.mjs';\nfunction RemoveOptional(schema) {\n return CreateType(Discard(schema, [OptionalKind]));\n}\nfunction AddOptional(schema) {\n return CreateType({ ...schema, [OptionalKind]: 'Optional' });\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nexport function Optional(schema, enable) {\n const F = enable ?? true;\n return IsMappedResult(schema) ? OptionalFromMappedResult(schema, F) : OptionalWithFlag(schema, F);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Optional } from './optional.mjs';\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Optional(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nexport function OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsObject, IsSchema } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nexport function IntersectCreate(T, options = {}) {\n const allObjects = T.every((schema) => IsObject(schema));\n const clonedUnevaluatedProperties = IsSchema(options.unevaluatedProperties)\n ? { unevaluatedProperties: options.unevaluatedProperties }\n : {};\n return CreateType((options.unevaluatedProperties === false || IsSchema(options.unevaluatedProperties) || allObjects\n ? { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', type: 'object', allOf: T }\n : { ...clonedUnevaluatedProperties, [Kind]: 'Intersect', allOf: T }), options);\n}\n", "import { OptionalKind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsOptional, IsTransform } from '../guard/kind.mjs';\n// prettier-ignore\nfunction IsIntersectOptional(types) {\n return types.every(left => IsOptional(left));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(type) {\n return (Discard(type, [OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(types) {\n return types.map(left => IsOptional(left) ? RemoveOptionalFromType(left) : left);\n}\n// prettier-ignore\nfunction ResolveIntersect(types, options) {\n return (IsIntersectOptional(types)\n ? Optional(IntersectCreate(RemoveOptionalFromRest(types), options))\n : IntersectCreate(RemoveOptionalFromRest(types), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nexport function IntersectEvaluated(types, options = {}) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(types, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport { IntersectCreate } from './intersect-create.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n/** `[Json]` Creates an evaluated Intersect type */\nexport function Intersect(types, options) {\n if (types.length === 1)\n return CreateType(types[0], options);\n if (types.length === 0)\n return Never(options);\n if (types.some((schema) => IsTransform(schema)))\n throw new Error('Cannot intersect transform types');\n return IntersectCreate(types, options);\n}\n", "import { TypeBoxError } from '../error/index.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Ref type. The referenced type must contain a $id */\nexport function Ref(...args) {\n const [$ref, options] = typeof args[0] === 'string' ? [args[0], args[1]] : [args[0].$id, args[1]];\n if (typeof $ref !== 'string')\n throw new TypeBoxError('Ref: $ref must be a string');\n return CreateType({ [Kind]: 'Ref', $ref }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsPromise, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Awaited', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Awaited', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n return Intersect(FromRest(types));\n}\n// prettier-ignore\nfunction FromUnion(types) {\n return Union(FromRest(types));\n}\n// prettier-ignore\nfunction FromPromise(type) {\n return Awaited(type);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => Awaited(type));\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nexport function Awaited(type, options) {\n return CreateType(IsComputed(type) ? FromComputed(type.target, type.parameters) : IsIntersect(type) ? FromIntersect(type.allOf) : IsUnion(type) ? FromUnion(type.anyOf) : IsPromise(type) ? FromPromise(type.item) : IsRef(type) ? FromRef(type.$ref) : type, options);\n}\n", "import { SetUnionMany, SetIntersectMany } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsRecord } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromRest(types) {\n const result = [];\n for (const L of types)\n result.push(KeyOfPropertyKeys(L));\n return result;\n}\n// prettier-ignore\nfunction FromIntersect(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetUnionMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromUnion(types) {\n const propertyKeysArray = FromRest(types);\n const propertyKeys = SetIntersectMany(propertyKeysArray);\n return propertyKeys;\n}\n// prettier-ignore\nfunction FromTuple(types) {\n return types.map((_, indexer) => indexer.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nexport function KeyOfPropertyKeys(type) {\n return (IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsTuple(type) ? FromTuple(type.items ?? []) :\n IsArray(type) ? FromArray(type.items) :\n IsObject(type) ? FromProperties(type.properties) :\n IsRecord(type) ? FromPatternProperties(type.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nexport function KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\nimport { UnionEvaluated } from '../union/index.mjs';\nimport { KeyOfFromMappedResult } from './keyof-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsRef, IsComputed } from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('KeyOf', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('KeyOf', [Ref($ref)]);\n}\n// prettier-ignore\nfunction KeyOfFromType(type, options) {\n const propertyKeys = KeyOfPropertyKeys(type);\n const propertyKeyTypes = KeyOfPropertyKeysToRest(propertyKeys);\n const result = UnionEvaluated(propertyKeyTypes);\n return CreateType(result, options);\n}\n// prettier-ignore\nexport function KeyOfPropertyKeysToRest(propertyKeys) {\n return propertyKeys.map(L => L === '[number]' ? Number() : Literal(L));\n}\n/** `[Json]` Creates a KeyOf type */\nexport function KeyOf(type, options) {\n return (IsComputed(type) ? FromComputed(type.target, type.parameters) : IsRef(type) ? FromRef(type.$ref) : IsMappedResult(type) ? KeyOfFromMappedResult(type, options) : KeyOfFromType(type, options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { KeyOf } from './keyof.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = KeyOf(properties[K2], Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, options) {\n return FromProperties(mappedResult.properties, options);\n}\n// prettier-ignore\nexport function KeyOfFromMappedResult(mappedResult, options) {\n const properties = FromMappedResult(mappedResult, options);\n return MappedResult(properties);\n}\n", "import { IndexFromPropertyKeys } from '../indexed/indexed.mjs';\nimport { KeyOfPropertyKeys } from './keyof-property-keys.mjs';\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nexport function KeyOfPropertyEntries(schema) {\n const keys = KeyOfPropertyKeys(schema);\n const schemas = IndexFromPropertyKeys(schema, keys);\n return keys.map((_, index) => [keys[index], schemas[index]]);\n}\n", "import { IntersectEvaluated } from '../intersect/index.mjs';\nimport { IndexFromPropertyKeys } from '../indexed/index.mjs';\nimport { KeyOfPropertyKeys } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { SetDistinct } from '../sets/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsNever } from '../guard/kind.mjs';\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...KeyOfPropertyKeys(L));\n return SetDistinct(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !IsNever(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexFromPropertyKeys(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = IntersectEvaluated(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nexport function Composite(T, options) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = _Object_(P, options);\n return R;\n}\n", "import { Kind } from '../symbols/index.mjs';\nimport { CreateType } from '../create/type.mjs';\n/** `[JavaScript]` Creates a Date type */\nexport function Date(options) {\n return CreateType({ [Kind]: 'Date', type: 'Date' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Null type */\nexport function Null(options) {\n return CreateType({ [Kind]: 'Null', type: 'null' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Symbol type */\nexport function Symbol(options) {\n return CreateType({ [Kind]: 'Symbol', type: 'symbol' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Undefined type */\nexport function Undefined(options) {\n return CreateType({ [Kind]: 'Undefined', type: 'undefined' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Uint8Array type */\nexport function Uint8Array(options) {\n return CreateType({ [Kind]: 'Uint8Array', type: 'Uint8Array' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Unknown type */\nexport function Unknown(options) {\n return CreateType({ [Kind]: 'Unknown' }, options);\n}\n", "import { Any } from '../any/index.mjs';\nimport { BigInt } from '../bigint/index.mjs';\nimport { Date } from '../date/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Null } from '../null/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Symbol } from '../symbol/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Undefined } from '../undefined/index.mjs';\nimport { Uint8Array } from '../uint8array/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { CreateType } from '../create/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = Readonly(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : Readonly(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :\n IsIterator(value) ? ConditionalReadonly(Any(), root) :\n IsArray(value) ? Readonly(Tuple(FromArray(value))) :\n IsUint8Array(value) ? Uint8Array() :\n IsDate(value) ? Date() :\n IsObject(value) ? ConditionalReadonly(_Object_(FromProperties(value)), root) :\n IsFunction(value) ? ConditionalReadonly(FunctionType([], Unknown()), root) :\n IsUndefined(value) ? Undefined() :\n IsNull(value) ? Null() :\n IsSymbol(value) ? Symbol() :\n IsBigInt(value) ? BigInt() :\n IsNumber(value) ? Literal(value) :\n IsBoolean(value) ? Literal(value) :\n IsString(value) ? Literal(value) :\n _Object_({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nexport function Const(T, options) {\n return CreateType(FromValue(T, true), options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nexport function ConstructorParameters(schema, options) {\n return (KindGuard.IsConstructor(schema) ? Tuple(schema.parameters, options) : Never(options));\n}\n", "import { Literal } from '../literal/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n/** `[Json]` Creates a Enum type */\nexport function Enum(item, options) {\n if (IsUndefined(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => Literal(value));\n return Union(anyOf, { ...options, [Hint]: 'Enum' });\n}\n", "import { Any } from '../any/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nimport { PatternNumberExact, PatternStringExact } from '../patterns/index.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { TypeBoxError } from '../error/index.mjs';\nimport { TypeGuard, ValueGuard } from '../guard/index.mjs';\nexport class ExtendsResolverError extends TypeBoxError {\n}\nexport var ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (TypeGuard.IsNever(right) ||\n TypeGuard.IsIntersect(right) ||\n TypeGuard.IsUnion(right) ||\n TypeGuard.IsUnknown(right) ||\n TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (TypeGuard.IsUnion(right) && right.anyOf.some((schema) => TypeGuard.IsAny(schema) || TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : Unknown();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n TypeGuard.IsNumber(left) || TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsInteger(right) || TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = Number();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = FunctionType([Any()], Any());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n TypeGuard.IsOptional(left) && !TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union : (TypeGuard.IsNever(left) ||\n (TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (TypeGuard.IsRecord(left) && TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (TypeGuard.IsRecord(left) && TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (PatternNumberExact in schema.patternProperties ? Number() :\n PatternStringExact in schema.patternProperties ? String() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (PatternNumberExact in schema.patternProperties ? schema.patternProperties[PatternNumberExact] :\n PatternStringExact in schema.patternProperties ? schema.patternProperties[PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((TypeGuard.IsLiteralString(left) && TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n TypeGuard.IsUint8Array(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsString(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsArray(left) && TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = TypeGuard.IsRegExp(left) ? String() : left;\n const R = TypeGuard.IsRegExp(right) ? String() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (TypeGuard.IsLiteral(left) && ValueGuard.IsString(left.const) ? ExtendsResult.True :\n TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (TypeGuard.IsTemplateLiteral(left) ? Visit(TemplateLiteralToUnion(left), right) :\n TypeGuard.IsTemplateLiteral(right) ? Visit(left, TemplateLiteralToUnion(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (TypeGuard.IsNever(left) ? ExtendsResult.True :\n TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) || (!ValueGuard.IsUndefined(left.items) && ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (ValueGuard.IsUndefined(left.items) && !ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsString(right) ? FromStringRight(left, right) :\n TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (TypeGuard.IsTemplateLiteral(left) || TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (TypeGuard.IsRegExp(left) || TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (TypeGuard.IsNot(left) || TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n TypeGuard.IsAny(left) ? FromAny(left, right) :\n TypeGuard.IsArray(left) ? FromArray(left, right) :\n TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n TypeGuard.IsDate(left) ? FromDate(left, right) :\n TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n TypeGuard.IsNever(left) ? FromNever(left, right) :\n TypeGuard.IsNull(left) ? FromNull(left, right) :\n TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n TypeGuard.IsObject(left) ? FromObject(left, right) :\n TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n TypeGuard.IsString(left) ? FromString(left, right) :\n TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[Kind]}'`));\n}\nexport function ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extends(P[K2], Right, True, False, Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from './extends-check.mjs';\nimport { ExtendsFromMappedKey } from './extends-from-mapped-key.mjs';\nimport { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult } from '../guard/kind.mjs';\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = ExtendsCheck(left, right);\n return (R === ExtendsResult.Union ? Union([trueType, falseType]) :\n R === ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nexport function Extends(L, R, T, F, options) {\n // prettier-ignore\n return (IsMappedResult(L) ? ExtendsFromMappedResult(L, R, T, F, options) :\n IsMappedKey(L) ? CreateType(ExtendsFromMappedKey(L, R, T, F, options)) :\n CreateType(ExtendsResolve(L, R, T, F), options));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Extends } from './extends.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: Extends(Literal(K), U, L, R, Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nexport function ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return MappedResult(P);\n}\n", "import { Kind } from '../symbols/index.mjs';\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nexport function ExtendsUndefinedCheck(schema) {\n return (schema[Kind] === 'Intersect' ? Intersect(schema) :\n schema[Kind] === 'Union' ? Union(schema) :\n schema[Kind] === 'Not' ? Not(schema) :\n schema[Kind] === 'Undefined' ? true :\n false);\n}\n", "import { Exclude } from './exclude.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExcludeFromTemplateLiteral(L, R) {\n return Exclude(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';\nimport { ExcludeFromTemplateLiteral } from './exclude-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => ExtendsCheck(inner, R) === ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : Union(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nexport function Exclude(L, R, options = {}) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExcludeFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExcludeFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExcludeRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? Never() : L, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Exclude } from './exclude.mjs';\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Exclude(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { Extract } from './extract.mjs';\nimport { TemplateLiteralToUnion } from '../template-literal/index.mjs';\nexport function ExtractFromTemplateLiteral(L, R) {\n return Extract(TemplateLiteralToUnion(L), R);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';\nimport { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';\nimport { ExtractFromTemplateLiteral } from './extract-from-template-literal.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => ExtendsCheck(inner, R) !== ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : Union(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nexport function Extract(L, R, options) {\n // overloads\n if (IsTemplateLiteral(L))\n return CreateType(ExtractFromTemplateLiteral(L, R), options);\n if (IsMappedResult(L))\n return CreateType(ExtractFromMappedResult(L, R), options);\n // prettier-ignore\n return CreateType(IsUnion(L) ? ExtractRest(L.anyOf, R) :\n ExtendsCheck(L, R) !== ExtendsResult.False ? L : Never(), options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Extract } from './extract.mjs';\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Extract(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nexport function ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nexport function InstanceType(schema, options) {\n return (KindGuard.IsConstructor(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\n/** `[Json]` Creates a Readonly and Optional property */\nexport function ReadonlyOptional(schema) {\n return Readonly(Optional(schema));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Number } from '../number/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { String } from '../string/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IsTemplateLiteralFinite } from '../template-literal/index.mjs';\nimport { PatternStringExact, PatternNumberExact, PatternNeverExact } from '../patterns/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsInteger, IsLiteral, IsAny, IsBoolean, IsNever, IsNumber, IsString, IsRegExp, IsTemplateLiteral, IsUnion } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return CreateType({ [Kind]: 'Record', type: 'object', patternProperties: { [pattern]: T } }, options);\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const result = {};\n for (const K2 of K)\n result[K2] = T;\n return _Object_(result, { ...options, [Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return (IsTemplateLiteralFinite(K)\n ? RecordCreateFromKeys(IndexPropertyKeys(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(key, type, options) {\n return RecordCreateFromKeys(IndexPropertyKeys(Union(key)), type, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(key, type, options) {\n return RecordCreateFromKeys([key.toString()], type, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(key, type, options) {\n return RecordCreateFromPattern(key.source, type, options);\n}\n// prettier-ignore\nfunction FromStringKey(key, type, options) {\n const pattern = IsUndefined(key.pattern) ? PatternStringExact : key.pattern;\n return RecordCreateFromPattern(pattern, type, options);\n}\n// prettier-ignore\nfunction FromAnyKey(_, type, options) {\n return RecordCreateFromPattern(PatternStringExact, type, options);\n}\n// prettier-ignore\nfunction FromNeverKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNeverExact, type, options);\n}\n// prettier-ignore\nfunction FromBooleanKey(_key, type, options) {\n return _Object_({ true: type, false: type }, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_key, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, type, options) {\n return RecordCreateFromPattern(PatternNumberExact, type, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nexport function Record(key, type, options = {}) {\n // prettier-ignore\n return (IsUnion(key) ? FromUnionKey(key.anyOf, type, options) :\n IsTemplateLiteral(key) ? FromTemplateLiteralKey(key, type, options) :\n IsLiteral(key) ? FromLiteralKey(key.const, type, options) :\n IsBoolean(key) ? FromBooleanKey(key, type, options) :\n IsInteger(key) ? FromIntegerKey(key, type, options) :\n IsNumber(key) ? FromNumberKey(key, type, options) :\n IsRegExp(key) ? FromRegExpKey(key, type, options) :\n IsString(key) ? FromStringKey(key, type, options) :\n IsAny(key) ? FromAnyKey(key, type, options) :\n IsNever(key) ? FromNeverKey(key, type, options) :\n Never(options));\n}\n// ------------------------------------------------------------------\n// Record Utilities\n// ------------------------------------------------------------------\n/** Gets the Records Pattern */\nexport function RecordPattern(record) {\n return globalThis.Object.getOwnPropertyNames(record.patternProperties)[0];\n}\n/** Gets the Records Key Type */\n// prettier-ignore\nexport function RecordKey(type) {\n const pattern = RecordPattern(type);\n return (pattern === PatternStringExact ? String() :\n pattern === PatternNumberExact ? Number() :\n String({ pattern }));\n}\n/** Gets a Record Value Type */\n// prettier-ignore\nexport function RecordValue(type) {\n return type.patternProperties[RecordPattern(type)];\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { Unknown } from '../unknown/index.mjs';\nimport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nimport { Readonly } from '../readonly/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Record, RecordKey, RecordValue } from '../record/index.mjs';\nimport * as ValueGuard from '../guard/value.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromConstructor(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromFunction(args, type) {\n type.parameters = FromTypes(args, type.parameters);\n type.returns = FromType(args, type.returns);\n return type;\n}\n// prettier-ignore\nfunction FromIntersect(args, type) {\n type.allOf = FromTypes(args, type.allOf);\n return type;\n}\n// prettier-ignore\nfunction FromUnion(args, type) {\n type.anyOf = FromTypes(args, type.anyOf);\n return type;\n}\n// prettier-ignore\nfunction FromTuple(args, type) {\n if (ValueGuard.IsUndefined(type.items))\n return type;\n type.items = FromTypes(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromArray(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromAsyncIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromIterator(args, type) {\n type.items = FromType(args, type.items);\n return type;\n}\n// prettier-ignore\nfunction FromPromise(args, type) {\n type.item = FromType(args, type.item);\n return type;\n}\n// prettier-ignore\nfunction FromObject(args, type) {\n const mappedProperties = FromProperties(args, type.properties);\n return { ...type, ..._Object_(mappedProperties) }; // retain options\n}\n// prettier-ignore\nfunction FromRecord(args, type) {\n const mappedKey = FromType(args, RecordKey(type));\n const mappedValue = FromType(args, RecordValue(type));\n const result = Record(mappedKey, mappedValue);\n return { ...type, ...result }; // retain options\n}\n// prettier-ignore\nfunction FromArgument(args, argument) {\n return argument.index in args ? args[argument.index] : Unknown();\n}\n// prettier-ignore\nfunction FromProperty(args, type) {\n const isReadonly = KindGuard.IsReadonly(type);\n const isOptional = KindGuard.IsOptional(type);\n const mapped = FromType(args, type);\n return (isReadonly && isOptional ? ReadonlyOptional(mapped) :\n isReadonly && !isOptional ? Readonly(mapped) :\n !isReadonly && isOptional ? Optional(mapped) :\n mapped);\n}\n// prettier-ignore\nfunction FromProperties(args, properties) {\n return globalThis.Object.getOwnPropertyNames(properties).reduce((result, key) => {\n return { ...result, [key]: FromProperty(args, properties[key]) };\n }, {});\n}\n// prettier-ignore\nexport function FromTypes(args, types) {\n return types.map(type => FromType(args, type));\n}\n// prettier-ignore\nfunction FromType(args, type) {\n return (KindGuard.IsConstructor(type) ? FromConstructor(args, type) :\n KindGuard.IsFunction(type) ? FromFunction(args, type) :\n KindGuard.IsIntersect(type) ? FromIntersect(args, type) :\n KindGuard.IsUnion(type) ? FromUnion(args, type) :\n KindGuard.IsTuple(type) ? FromTuple(args, type) :\n KindGuard.IsArray(type) ? FromArray(args, type) :\n KindGuard.IsAsyncIterator(type) ? FromAsyncIterator(args, type) :\n KindGuard.IsIterator(type) ? FromIterator(args, type) :\n KindGuard.IsPromise(type) ? FromPromise(args, type) :\n KindGuard.IsObject(type) ? FromObject(args, type) :\n KindGuard.IsRecord(type) ? FromRecord(args, type) :\n KindGuard.IsArgument(type) ? FromArgument(args, type) :\n type);\n}\n/** `[JavaScript]` Instantiates a type with the given parameters */\n// prettier-ignore\nexport function Instantiate(type, args) {\n return FromType(args, CloneType(type));\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates an Integer type */\nexport function Integer(options) {\n return CreateType({ [Kind]: 'Integer', type: 'integer' }, options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Intrinsic } from './intrinsic.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: Intrinsic(Literal(K), M, Clone(options))\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n const result = K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n return result;\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nexport function IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { TemplateLiteral, TemplateLiteralParseExact, IsTemplateLiteralExpressionFinite, TemplateLiteralExpressionGenerate } from '../template-literal/index.mjs';\nimport { IntrinsicFromMappedKey } from './intrinsic-from-mapped-key.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsTemplateLiteral, IsUnion, IsLiteral } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = TemplateLiteralParseExact(schema.pattern);\n const finite = IsTemplateLiteralExpressionFinite(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...TemplateLiteralExpressionGenerate(expression)];\n const literals = strings.map((value) => Literal(value));\n const mapped = FromRest(literals, mode);\n const union = Union(mapped);\n return TemplateLiteral([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nexport function Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n IsMappedKey(schema) ? IntrinsicFromMappedKey(schema, mode, options) :\n // Standard-Inference\n IsTemplateLiteral(schema) ? FromTemplateLiteral(schema, mode, options) :\n IsUnion(schema) ? Union(FromRest(schema.anyOf, mode), options) :\n IsLiteral(schema) ? Literal(FromLiteralValue(schema.const, mode), options) :\n // Default Type\n CreateType(schema, options));\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nexport function Capitalize(T, options = {}) {\n return Intrinsic(T, 'Capitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nexport function Lowercase(T, options = {}) {\n return Intrinsic(T, 'Lowercase', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nexport function Uncapitalize(T, options = {}) {\n return Intrinsic(T, 'Uncapitalize', options);\n}\n", "import { Intrinsic } from './intrinsic.mjs';\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nexport function Uppercase(T, options = {}) {\n return Intrinsic(T, 'Uppercase', options);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Omit(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\n// ------------------------------------------------------------------\n// Mapped\n// ------------------------------------------------------------------\nimport { OmitFromMappedKey } from './omit-from-mapped-key.mjs';\nimport { OmitFromMappedResult } from './omit-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, IsMappedResult, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// prettier-ignore\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => OmitResolve(type, propertyKeys));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(properties, key) {\n const { [key]: _, ...R } = properties;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n return propertyKeys.reduce((T, K2) => FromProperty(T, K2), properties);\n}\n// prettier-ignore\nfunction FromObject(type, propertyKeys, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, propertyKeys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction OmitResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Omit(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? OmitFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? OmitFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Omit', [type, typeKey], options) :\n CreateType({ ...OmitResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Omit } from './omit.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return { [key]: Omit(type, [key], Clone(options)) };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(type, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function OmitFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys, options) {\n const result = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(properties))\n result[K2] = Pick(properties[K2], propertyKeys, Clone(options));\n return result;\n}\n// prettier-ignore\nfunction FromMappedResult(mappedResult, propertyKeys, options) {\n return FromProperties(mappedResult.properties, propertyKeys, options);\n}\n// prettier-ignore\nexport function PickFromMappedResult(mappedResult, propertyKeys, options) {\n const properties = FromMappedResult(mappedResult, propertyKeys, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Discard } from '../discard/discard.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Literal } from '../literal/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { IndexPropertyKeys } from '../indexed/index.mjs';\nimport { TransformKind } from '../symbols/symbols.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema, IsLiteralValue, IsRef } from '../guard/kind.mjs';\nimport { IsArray as IsArrayValue } from '../guard/value.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { PickFromMappedKey } from './pick-from-mapped-key.mjs';\nimport { PickFromMappedResult } from './pick-from-mapped-result.mjs';\nfunction FromIntersect(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromUnion(types, propertyKeys) {\n return types.map((type) => PickResolve(type, propertyKeys));\n}\n// prettier-ignore\nfunction FromProperties(properties, propertyKeys) {\n const result = {};\n for (const K2 of propertyKeys)\n if (K2 in properties)\n result[K2] = properties[K2];\n return result;\n}\n// prettier-ignore\nfunction FromObject(Type, keys, properties) {\n const options = Discard(Type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties, keys);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction UnionFromPropertyKeys(propertyKeys) {\n const result = propertyKeys.reduce((result, key) => IsLiteralValue(key) ? [...result, Literal(key)] : result, []);\n return Union(result);\n}\n// prettier-ignore\nfunction PickResolve(type, propertyKeys) {\n return (IsIntersect(type) ? Intersect(FromIntersect(type.allOf, propertyKeys)) :\n IsUnion(type) ? Union(FromUnion(type.anyOf, propertyKeys)) :\n IsObject(type) ? FromObject(type, propertyKeys, type.properties) :\n _Object_({}));\n}\n/** `[Json]` Constructs a type whose keys are picked from the given type */\n// prettier-ignore\nexport function Pick(type, key, options) {\n const typeKey = IsArrayValue(key) ? UnionFromPropertyKeys(key) : key;\n const propertyKeys = IsSchema(key) ? IndexPropertyKeys(key) : key;\n const isTypeRef = IsRef(type);\n const isKeyRef = IsRef(key);\n return (IsMappedResult(type) ? PickFromMappedResult(type, propertyKeys, options) :\n IsMappedKey(key) ? PickFromMappedKey(type, key, options) :\n (isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (!isTypeRef && isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n (isTypeRef && !isKeyRef) ? Computed('Pick', [type, typeKey], options) :\n CreateType({ ...PickResolve(type, propertyKeys), ...options }));\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Pick } from './pick.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromPropertyKey(type, key, options) {\n return {\n [key]: Pick(type, [key], Clone(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(type, propertyKeys, options) {\n return propertyKeys.reduce((result, leftKey) => {\n return { ...result, ...FromPropertyKey(type, leftKey, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(type, mappedKey, options) {\n return FromPropertyKeys(type, mappedKey.keys, options);\n}\n// prettier-ignore\nexport function PickFromMappedKey(type, mappedKey, options) {\n const properties = FromMappedKey(type, mappedKey, options);\n return MappedResult(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Optional } from '../optional/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { TransformKind } from '../symbols/index.mjs';\nimport { PartialFromMappedResult } from './partial-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Partial', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Partial', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const partialProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n partialProperties[K] = Optional(properties[K]);\n return partialProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => PartialResolve(type));\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nexport function Partial(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return PartialFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...PartialResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Partial } from './partial.mjs';\nimport { Clone } from '../clone/value.mjs';\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = Partial(K[K2], Clone(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Computed } from '../computed/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Union } from '../union/index.mjs';\nimport { Ref } from '../ref/index.mjs';\nimport { OptionalKind, TransformKind } from '../symbols/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { RequiredFromMappedResult } from './required-from-mapped-result.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction FromComputed(target, parameters) {\n return Computed('Required', [Computed(target, parameters)]);\n}\n// prettier-ignore\nfunction FromRef($ref) {\n return Computed('Required', [Ref($ref)]);\n}\n// prettier-ignore\nfunction FromProperties(properties) {\n const requiredProperties = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties))\n requiredProperties[K] = Discard(properties[K], [OptionalKind]);\n return requiredProperties;\n}\n// prettier-ignore\nfunction FromObject(type, properties) {\n const options = Discard(type, [TransformKind, '$id', 'required', 'properties']);\n const mappedProperties = FromProperties(properties);\n return _Object_(mappedProperties, options);\n}\n// prettier-ignore\nfunction FromRest(types) {\n return types.map(type => RequiredResolve(type));\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(type) {\n return (\n // Mappable\n KindGuard.IsComputed(type) ? FromComputed(type.target, type.parameters) :\n KindGuard.IsRef(type) ? FromRef(type.$ref) :\n KindGuard.IsIntersect(type) ? Intersect(FromRest(type.allOf)) :\n KindGuard.IsUnion(type) ? Union(FromRest(type.anyOf)) :\n KindGuard.IsObject(type) ? FromObject(type, type.properties) :\n // Intrinsic\n KindGuard.IsBigInt(type) ? type :\n KindGuard.IsBoolean(type) ? type :\n KindGuard.IsInteger(type) ? type :\n KindGuard.IsLiteral(type) ? type :\n KindGuard.IsNull(type) ? type :\n KindGuard.IsNumber(type) ? type :\n KindGuard.IsString(type) ? type :\n KindGuard.IsSymbol(type) ? type :\n KindGuard.IsUndefined(type) ? type :\n // Passthrough\n _Object_({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nexport function Required(type, options) {\n if (KindGuard.IsMappedResult(type)) {\n return RequiredFromMappedResult(type, options);\n }\n else {\n // special: mapping types require overridable options\n return CreateType({ ...RequiredResolve(type), ...options });\n }\n}\n", "import { MappedResult } from '../mapped/index.mjs';\nimport { Required } from './required.mjs';\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = Required(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nexport function RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return MappedResult(P);\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { CloneType } from '../clone/index.mjs';\nimport { Discard } from '../discard/index.mjs';\nimport { Array } from '../array/index.mjs';\nimport { Awaited } from '../awaited/index.mjs';\nimport { AsyncIterator } from '../async-iterator/index.mjs';\nimport { Constructor } from '../constructor/index.mjs';\nimport { Index } from '../indexed/index.mjs';\nimport { Function as FunctionType } from '../function/index.mjs';\nimport { Intersect } from '../intersect/index.mjs';\nimport { Iterator } from '../iterator/index.mjs';\nimport { KeyOf } from '../keyof/index.mjs';\nimport { Object as _Object_ } from '../object/index.mjs';\nimport { Omit } from '../omit/index.mjs';\nimport { Pick } from '../pick/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport { Partial } from '../partial/index.mjs';\nimport { RecordValue, RecordPattern } from '../record/index.mjs';\nimport { Required } from '../required/index.mjs';\nimport { Tuple } from '../tuple/index.mjs';\nimport { Union } from '../union/index.mjs';\n// ------------------------------------------------------------------\n// Symbols\n// ------------------------------------------------------------------\nimport { TransformKind, OptionalKind, ReadonlyKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport * as KindGuard from '../guard/kind.mjs';\n// prettier-ignore\nfunction DereferenceParameters(moduleProperties, types) {\n return types.map((type) => {\n return KindGuard.IsRef(type)\n ? Dereference(moduleProperties, type.$ref)\n : FromType(moduleProperties, type);\n });\n}\n// prettier-ignore\nfunction Dereference(moduleProperties, ref) {\n return (ref in moduleProperties\n ? KindGuard.IsRef(moduleProperties[ref])\n ? Dereference(moduleProperties, moduleProperties[ref].$ref)\n : FromType(moduleProperties, moduleProperties[ref])\n : Never());\n}\n// prettier-ignore\nfunction FromAwaited(parameters) {\n return Awaited(parameters[0]);\n}\n// prettier-ignore\nfunction FromIndex(parameters) {\n return Index(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromKeyOf(parameters) {\n return KeyOf(parameters[0]);\n}\n// prettier-ignore\nfunction FromPartial(parameters) {\n return Partial(parameters[0]);\n}\n// prettier-ignore\nfunction FromOmit(parameters) {\n return Omit(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromPick(parameters) {\n return Pick(parameters[0], parameters[1]);\n}\n// prettier-ignore\nfunction FromRequired(parameters) {\n return Required(parameters[0]);\n}\n// prettier-ignore\nfunction FromComputed(moduleProperties, target, parameters) {\n const dereferenced = DereferenceParameters(moduleProperties, parameters);\n return (target === 'Awaited' ? FromAwaited(dereferenced) :\n target === 'Index' ? FromIndex(dereferenced) :\n target === 'KeyOf' ? FromKeyOf(dereferenced) :\n target === 'Partial' ? FromPartial(dereferenced) :\n target === 'Omit' ? FromOmit(dereferenced) :\n target === 'Pick' ? FromPick(dereferenced) :\n target === 'Required' ? FromRequired(dereferenced) :\n Never());\n}\nfunction FromArray(moduleProperties, type) {\n return Array(FromType(moduleProperties, type));\n}\nfunction FromAsyncIterator(moduleProperties, type) {\n return AsyncIterator(FromType(moduleProperties, type));\n}\n// prettier-ignore\nfunction FromConstructor(moduleProperties, parameters, instanceType) {\n return Constructor(FromTypes(moduleProperties, parameters), FromType(moduleProperties, instanceType));\n}\n// prettier-ignore\nfunction FromFunction(moduleProperties, parameters, returnType) {\n return FunctionType(FromTypes(moduleProperties, parameters), FromType(moduleProperties, returnType));\n}\nfunction FromIntersect(moduleProperties, types) {\n return Intersect(FromTypes(moduleProperties, types));\n}\nfunction FromIterator(moduleProperties, type) {\n return Iterator(FromType(moduleProperties, type));\n}\nfunction FromObject(moduleProperties, properties) {\n return _Object_(globalThis.Object.keys(properties).reduce((result, key) => {\n return { ...result, [key]: FromType(moduleProperties, properties[key]) };\n }, {}));\n}\n// prettier-ignore\nfunction FromRecord(moduleProperties, type) {\n const [value, pattern] = [FromType(moduleProperties, RecordValue(type)), RecordPattern(type)];\n const result = CloneType(type);\n result.patternProperties[pattern] = value;\n return result;\n}\n// prettier-ignore\nfunction FromTransform(moduleProperties, transform) {\n return (KindGuard.IsRef(transform))\n ? { ...Dereference(moduleProperties, transform.$ref), [TransformKind]: transform[TransformKind] }\n : transform;\n}\nfunction FromTuple(moduleProperties, types) {\n return Tuple(FromTypes(moduleProperties, types));\n}\nfunction FromUnion(moduleProperties, types) {\n return Union(FromTypes(moduleProperties, types));\n}\nfunction FromTypes(moduleProperties, types) {\n return types.map((type) => FromType(moduleProperties, type));\n}\n// prettier-ignore\nexport function FromType(moduleProperties, type) {\n return (\n // Modifiers\n KindGuard.IsOptional(type) ? CreateType(FromType(moduleProperties, Discard(type, [OptionalKind])), type) :\n KindGuard.IsReadonly(type) ? CreateType(FromType(moduleProperties, Discard(type, [ReadonlyKind])), type) :\n // Transform\n KindGuard.IsTransform(type) ? CreateType(FromTransform(moduleProperties, type), type) :\n // Types\n KindGuard.IsArray(type) ? CreateType(FromArray(moduleProperties, type.items), type) :\n KindGuard.IsAsyncIterator(type) ? CreateType(FromAsyncIterator(moduleProperties, type.items), type) :\n KindGuard.IsComputed(type) ? CreateType(FromComputed(moduleProperties, type.target, type.parameters)) :\n KindGuard.IsConstructor(type) ? CreateType(FromConstructor(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsFunction(type) ? CreateType(FromFunction(moduleProperties, type.parameters, type.returns), type) :\n KindGuard.IsIntersect(type) ? CreateType(FromIntersect(moduleProperties, type.allOf), type) :\n KindGuard.IsIterator(type) ? CreateType(FromIterator(moduleProperties, type.items), type) :\n KindGuard.IsObject(type) ? CreateType(FromObject(moduleProperties, type.properties), type) :\n KindGuard.IsRecord(type) ? CreateType(FromRecord(moduleProperties, type)) :\n KindGuard.IsTuple(type) ? CreateType(FromTuple(moduleProperties, type.items || []), type) :\n KindGuard.IsUnion(type) ? CreateType(FromUnion(moduleProperties, type.anyOf), type) :\n type);\n}\n// prettier-ignore\nexport function ComputeType(moduleProperties, key) {\n return (key in moduleProperties\n ? FromType(moduleProperties, moduleProperties[key])\n : Never());\n}\n// prettier-ignore\nexport function ComputeModuleProperties(moduleProperties) {\n return globalThis.Object.getOwnPropertyNames(moduleProperties).reduce((result, key) => {\n return { ...result, [key]: ComputeType(moduleProperties, key) };\n }, {});\n}\n", "import { CreateType } from '../create/index.mjs';\nimport { Kind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// Module Infrastructure Types\n// ------------------------------------------------------------------\nimport { ComputeModuleProperties } from './compute.mjs';\n// ------------------------------------------------------------------\n// Module\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TModule {\n constructor($defs) {\n const computed = ComputeModuleProperties($defs);\n const identified = this.WithIdentifiers(computed);\n this.$defs = identified;\n }\n /** `[Json]` Imports a Type by Key. */\n Import(key, options) {\n const $defs = { ...this.$defs, [key]: CreateType(this.$defs[key], options) };\n return CreateType({ [Kind]: 'Import', $defs, $ref: key });\n }\n // prettier-ignore\n WithIdentifiers($defs) {\n return globalThis.Object.getOwnPropertyNames($defs).reduce((result, key) => {\n return { ...result, [key]: { ...$defs[key], $id: key } };\n }, {});\n }\n}\n/** `[Json]` Creates a Type Definition Module. */\nexport function Module(properties) {\n return new TModule(properties);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Not type */\nexport function Not(type, options) {\n return CreateType({ [Kind]: 'Not', not: type }, options);\n}\n", "import { Tuple } from '../tuple/index.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nexport function Parameters(schema, options) {\n return (KindGuard.IsFunction(schema) ? Tuple(schema.parameters, options) : Never());\n}\n", "import { CloneType } from '../clone/type.mjs';\nimport { CreateType } from '../create/type.mjs';\nimport { IsUndefined } from '../guard/value.mjs';\nimport { Kind, Hint } from '../symbols/index.mjs';\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nexport function Recursive(callback, options = {}) {\n if (IsUndefined(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = CloneType(callback({ [Kind]: 'This', $ref: `${options.$id}` }));\n thisType.$id = options.$id;\n // prettier-ignore\n return CreateType({ [Hint]: 'Recursive', ...thisType }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { IsString } from '../guard/value.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a RegExp type */\nexport function RegExp(unresolved, options) {\n const expr = IsString(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return CreateType({ [Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags }, options);\n}\n", "// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsIntersect, IsUnion, IsTuple } from '../guard/kind.mjs';\n// prettier-ignore\nfunction RestResolve(T) {\n return (IsIntersect(T) ? T.allOf :\n IsUnion(T) ? T.anyOf :\n IsTuple(T) ? T.items ?? [] :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nexport function Rest(T) {\n return RestResolve(T);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Never } from '../never/index.mjs';\nimport * as KindGuard from '../guard/kind.mjs';\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nexport function ReturnType(schema, options) {\n return (KindGuard.IsFunction(schema) ? CreateType(schema.returns, options) : Never(options));\n}\n", "import { TransformKind } from '../symbols/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsTransform } from '../guard/kind.mjs';\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nexport class TransformDecodeBuilder {\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\n// prettier-ignore\nexport class TransformEncodeBuilder {\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [TransformKind]: Codec };\n }\n Encode(encode) {\n return (IsTransform(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));\n }\n}\n/** `[Json]` Creates a Transform type */\nexport function Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nexport function Unsafe(options = {}) {\n return CreateType({ [Kind]: options[Kind] ?? 'Unsafe' }, options);\n}\n", "import { CreateType } from '../create/type.mjs';\nimport { Kind } from '../symbols/index.mjs';\n/** `[JavaScript]` Creates a Void type */\nexport function Void(options) {\n return CreateType({ [Kind]: 'Void', type: 'void' }, options);\n}\n", "// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nexport { Any } from '../any/index.mjs';\nexport { Argument } from '../argument/index.mjs';\nexport { Array } from '../array/index.mjs';\nexport { AsyncIterator } from '../async-iterator/index.mjs';\nexport { Awaited } from '../awaited/index.mjs';\nexport { BigInt } from '../bigint/index.mjs';\nexport { Boolean } from '../boolean/index.mjs';\nexport { Composite } from '../composite/index.mjs';\nexport { Const } from '../const/index.mjs';\nexport { Constructor } from '../constructor/index.mjs';\nexport { ConstructorParameters } from '../constructor-parameters/index.mjs';\nexport { Date } from '../date/index.mjs';\nexport { Enum } from '../enum/index.mjs';\nexport { Exclude } from '../exclude/index.mjs';\nexport { Extends } from '../extends/index.mjs';\nexport { Extract } from '../extract/index.mjs';\nexport { Function } from '../function/index.mjs';\nexport { Index } from '../indexed/index.mjs';\nexport { InstanceType } from '../instance-type/index.mjs';\nexport { Instantiate } from '../instantiate/index.mjs';\nexport { Integer } from '../integer/index.mjs';\nexport { Intersect } from '../intersect/index.mjs';\nexport { Capitalize, Uncapitalize, Lowercase, Uppercase } from '../intrinsic/index.mjs';\nexport { Iterator } from '../iterator/index.mjs';\nexport { KeyOf } from '../keyof/index.mjs';\nexport { Literal } from '../literal/index.mjs';\nexport { Mapped } from '../mapped/index.mjs';\nexport { Module } from '../module/index.mjs';\nexport { Never } from '../never/index.mjs';\nexport { Not } from '../not/index.mjs';\nexport { Null } from '../null/index.mjs';\nexport { Number } from '../number/index.mjs';\nexport { Object } from '../object/index.mjs';\nexport { Omit } from '../omit/index.mjs';\nexport { Optional } from '../optional/index.mjs';\nexport { Parameters } from '../parameters/index.mjs';\nexport { Partial } from '../partial/index.mjs';\nexport { Pick } from '../pick/index.mjs';\nexport { Promise } from '../promise/index.mjs';\nexport { Readonly } from '../readonly/index.mjs';\nexport { ReadonlyOptional } from '../readonly-optional/index.mjs';\nexport { Record } from '../record/index.mjs';\nexport { Recursive } from '../recursive/index.mjs';\nexport { Ref } from '../ref/index.mjs';\nexport { RegExp } from '../regexp/index.mjs';\nexport { Required } from '../required/index.mjs';\nexport { Rest } from '../rest/index.mjs';\nexport { ReturnType } from '../return-type/index.mjs';\nexport { String } from '../string/index.mjs';\nexport { Symbol } from '../symbol/index.mjs';\nexport { TemplateLiteral } from '../template-literal/index.mjs';\nexport { Transform } from '../transform/index.mjs';\nexport { Tuple } from '../tuple/index.mjs';\nexport { Uint8Array } from '../uint8array/index.mjs';\nexport { Undefined } from '../undefined/index.mjs';\nexport { Union } from '../union/index.mjs';\nexport { Unknown } from '../unknown/index.mjs';\nexport { Unsafe } from '../unsafe/index.mjs';\nexport { Void } from '../void/index.mjs';\n", "// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nexport { JsonTypeBuilder } from './json.mjs';\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nimport * as TypeBuilder from './type.mjs';\nimport { JavaScriptTypeBuilder } from './javascript.mjs';\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexport { JavaScriptTypeBuilder };\nexport { Type };\n", "import { Type, type Static } from \"@sinclair/typebox\";\n\nexport const MANAGED_PI_ARTIFACT_ID = \"@earendil-works/pi-coding-agent@0.80.10\";\n\nexport const PiRuntimeIdentitySchema = Type.Union([\n Type.Object(\n {\n mode: Type.Literal(\"managed\"),\n artifactId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n mode: Type.Literal(\"external\"),\n selectedPath: Type.String({ minLength: 1 }),\n nodePath: Type.String({ minLength: 1 }),\n realPath: Type.String({ minLength: 1 }),\n version: Type.String({ minLength: 1 }),\n fingerprint: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport type PiRuntimeIdentity = Static<typeof PiRuntimeIdentitySchema>;\n\nexport const MANAGED_PI_RUNTIME_IDENTITY: PiRuntimeIdentity = Object.freeze({\n mode: \"managed\",\n artifactId: MANAGED_PI_ARTIFACT_ID,\n});\n\nexport function samePiRuntimeIdentity(left: PiRuntimeIdentity, right: PiRuntimeIdentity): boolean {\n if (left.mode !== right.mode) return false;\n if (left.mode === \"managed\" && right.mode === \"managed\") {\n return left.artifactId === right.artifactId;\n }\n if (left.mode === \"external\" && right.mode === \"external\") {\n return (\n left.selectedPath === right.selectedPath &&\n left.nodePath === right.nodePath &&\n left.realPath === right.realPath &&\n left.version === right.version &&\n left.fingerprint === right.fingerprint\n );\n }\n return false;\n}\n", "import { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants } from \"node:fs\";\nimport { createReadStream } from \"node:fs\";\nimport { access, realpath, stat } from \"node:fs/promises\";\nimport { delimiter, dirname, isAbsolute, join } from \"node:path\";\n\nimport type { PiRuntimeIdentity } from \"../protocol/pi-identity.js\";\n\nconst VERSION_TIMEOUT_MS = 3_000;\nconst MAX_VERSION_OUTPUT_BYTES = 4 * 1024;\n\nexport type ExternalPiResolutionErrorCode =\n | \"invalid_arguments\"\n | \"pi_not_found\"\n | \"pi_not_executable\"\n | \"pi_version_unavailable\"\n | \"pi_installation_changed\";\n\nexport class ExternalPiResolutionError extends Error {\n constructor(\n readonly code: ExternalPiResolutionErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"ExternalPiResolutionError\";\n }\n}\n\nexport interface PiInstallation {\n readonly selectedPath: string;\n readonly realPath: string;\n readonly version: string;\n readonly nodePath: string;\n readonly fingerprint: string;\n}\n\nexport function installationIdentity(installation: PiInstallation): PiRuntimeIdentity {\n return {\n mode: \"external\",\n selectedPath: installation.selectedPath,\n nodePath: installation.nodePath,\n realPath: installation.realPath,\n version: installation.version,\n fingerprint: installation.fingerprint,\n };\n}\n\nexport interface ExternalPiResolverOptions {\n readonly env?: NodeJS.ProcessEnv;\n readonly nodePath?: string;\n readonly versionCommand?: (executable: string) => Promise<string>;\n readonly versionTimeoutMs?: number;\n readonly maxVersionOutputBytes?: number;\n}\n\nexport async function resolveExternalPiInstallation(\n options: ExternalPiResolverOptions = {},\n): Promise<PiInstallation> {\n const env = options.env ?? process.env;\n const selectedPath = await resolveSelectedPath(env);\n const nodePath = options.nodePath ?? (await resolveNodePath(env));\n await inspectNode(nodePath);\n\n const executionEnv = externalPiExecutionEnvironment(env, selectedPath, nodePath);\n for (let attempt = 0; attempt < 2; attempt += 1) {\n const observation = await observeInstallation(selectedPath, executionEnv, options);\n if (observation !== null) {\n return {\n selectedPath,\n nodePath,\n ...observation,\n };\n }\n }\n\n throw new ExternalPiResolutionError(\n \"pi_installation_changed\",\n \"Pi changed while its installation was being observed.\",\n );\n}\n\nexport function externalPiExecutionEnvironment(\n env: NodeJS.ProcessEnv,\n selectedPath: string,\n nodePath: string,\n): NodeJS.ProcessEnv {\n return {\n ...env,\n PATH: [dirname(nodePath), dirname(selectedPath), env.PATH]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .join(delimiter),\n };\n}\n\nasync function observeInstallation(\n selectedPath: string,\n env: NodeJS.ProcessEnv,\n options: ExternalPiResolverOptions,\n): Promise<Omit<PiInstallation, \"selectedPath\" | \"nodePath\"> | null> {\n const beforeRealPath = await inspectExecutable(selectedPath, \"Pi\");\n const beforeHash = await hashFile(beforeRealPath);\n const versionOutput = await (\n options.versionCommand ??\n ((executable: string) =>\n readVersion(executable, env, options.versionTimeoutMs, options.maxVersionOutputBytes))\n )(selectedPath);\n const version = parseVersion(versionOutput);\n const afterRealPath = await inspectExecutable(selectedPath, \"Pi\");\n const afterHash = await hashFile(afterRealPath);\n\n if (beforeRealPath !== afterRealPath || beforeHash !== afterHash) return null;\n\n return {\n realPath: afterRealPath,\n version,\n fingerprint: createHash(\"sha256\")\n .update(JSON.stringify([selectedPath, afterRealPath, version, afterHash]))\n .digest(\"hex\"),\n };\n}\n\nasync function resolveSelectedPath(env: NodeJS.ProcessEnv): Promise<string> {\n const explicit = env.PIFLEET_PI_EXECUTABLE;\n if (explicit !== undefined) {\n if (!isAbsolute(explicit)) {\n throw new ExternalPiResolutionError(\n \"invalid_arguments\",\n \"PIFLEET_PI_EXECUTABLE must be an absolute path.\",\n );\n }\n return explicit;\n }\n return resolvePathExecutable(env, \"pi\", \"Pi\", \"pi_not_found\");\n}\n\nasync function resolveNodePath(env: NodeJS.ProcessEnv): Promise<string> {\n return resolvePathExecutable(env, \"node\", \"Node\", \"pi_not_executable\");\n}\n\nasync function resolvePathExecutable(\n env: NodeJS.ProcessEnv,\n name: string,\n label: \"Pi\" | \"Node\",\n missingCode: \"pi_not_found\" | \"pi_not_executable\",\n): Promise<string> {\n const path = env.PATH;\n if (path === undefined || path.length === 0) {\n throw new ExternalPiResolutionError(missingCode, `${label} was not found on PATH.`);\n }\n for (const directory of path.split(delimiter)) {\n if (!isAbsolute(directory)) {\n throw new ExternalPiResolutionError(\n \"invalid_arguments\",\n `PATH entries used to select ${label} must be absolute paths.`,\n );\n }\n const candidate = join(directory, name);\n try {\n await inspectExecutable(candidate, label);\n return candidate;\n } catch (error: unknown) {\n if (\n !(error instanceof ExternalPiResolutionError) ||\n (error.code !== \"pi_not_executable\" && error.code !== \"pi_not_found\")\n ) {\n throw error;\n }\n }\n }\n throw new ExternalPiResolutionError(missingCode, `${label} was not found on PATH.`);\n}\n\nasync function inspectExecutable(path: string, label: \"Pi\" | \"Node\"): Promise<string> {\n try {\n const target = await realpath(path);\n const metadata = await stat(target);\n if (!metadata.isFile()) {\n throw new ExternalPiResolutionError(\"pi_not_executable\", `${label} is not a file: ${path}`);\n }\n await access(path, constants.X_OK);\n return target;\n } catch (error: unknown) {\n if (error instanceof ExternalPiResolutionError) throw error;\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new ExternalPiResolutionError(\"pi_not_found\", `${label} was not found: ${path}`);\n }\n throw new ExternalPiResolutionError(\"pi_not_executable\", `${label} is not executable: ${path}`);\n }\n}\n\nasync function inspectNode(nodePath: string): Promise<void> {\n if (!isAbsolute(nodePath)) {\n throw new ExternalPiResolutionError(\"invalid_arguments\", \"Node must be an absolute path.\");\n }\n try {\n await inspectExecutable(nodePath, \"Node\");\n } catch {\n throw new ExternalPiResolutionError(\"pi_not_executable\", `Node is not executable: ${nodePath}`);\n }\n}\n\nasync function hashFile(path: string): Promise<string> {\n const hash = createHash(\"sha256\");\n await new Promise<void>((resolveHash, rejectHash) => {\n const stream = createReadStream(path);\n stream.on(\"data\", (chunk: string | Buffer) => hash.update(chunk));\n stream.once(\"error\", rejectHash);\n stream.once(\"end\", resolveHash);\n });\n return hash.digest(\"hex\");\n}\n\nasync function readVersion(\n executable: string,\n env: NodeJS.ProcessEnv,\n timeoutMs = VERSION_TIMEOUT_MS,\n maxOutputBytes = MAX_VERSION_OUTPUT_BYTES,\n): Promise<string> {\n const child = spawn(executable, [\"--version\"], {\n detached: process.platform !== \"win32\",\n env,\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n const chunks: Buffer[] = [];\n let outputBytes = 0;\n let terminalError: ExternalPiResolutionError | null = null;\n let terminated = false;\n\n const terminate = () => {\n if (terminated) return;\n terminated = true;\n if (process.platform !== \"win32\" && child.pid !== undefined) {\n try {\n process.kill(-child.pid, \"SIGKILL\");\n return;\n } catch {\n // The group may have already exited; kill the direct child as a fallback.\n }\n }\n child.kill(\"SIGKILL\");\n };\n\n child.stdout.on(\"data\", (chunk: Buffer) => {\n if (terminalError !== null) return;\n outputBytes += chunk.byteLength;\n if (outputBytes > maxOutputBytes) {\n terminalError = new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version output exceeded its limit.\",\n );\n terminate();\n return;\n }\n chunks.push(chunk);\n });\n child.stderr.resume();\n\n return new Promise((resolveVersion, rejectVersion) => {\n const timer = setTimeout(() => {\n terminalError = new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command timed out.\",\n );\n terminate();\n }, timeoutMs);\n child.once(\"error\", () => {\n terminalError ??= new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command failed.\",\n );\n });\n child.once(\"close\", (code) => {\n clearTimeout(timer);\n if (terminalError !== null) {\n rejectVersion(terminalError);\n return;\n }\n if (code !== 0) {\n rejectVersion(\n new ExternalPiResolutionError(\"pi_version_unavailable\", \"Pi version command failed.\"),\n );\n return;\n }\n try {\n resolveVersion(new TextDecoder(\"utf-8\", { fatal: true }).decode(Buffer.concat(chunks)));\n } catch {\n rejectVersion(\n new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command returned invalid UTF-8.\",\n ),\n );\n }\n });\n });\n}\n\nfunction parseVersion(output: string): string {\n const match = /^(?:pi\\s+)?(\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?)\\s*$/i.exec(output);\n if (match?.[1] === undefined) {\n throw new ExternalPiResolutionError(\n \"pi_version_unavailable\",\n \"Pi version command returned an invalid version.\",\n );\n }\n return match[1];\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport { spawn, type ChildProcessWithoutNullStreams } from \"node:child_process\";\n\nimport { signalProcessTree, waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport { RpcRecordFramer } from \"./rpc-record-framer.js\";\n\nconst DEFAULT_MAX_STDOUT_FRAME_BYTES = 8 * 1024 * 1024;\nconst DEFAULT_MAX_PARTIAL_RECORD_BYTES = 64 * 1024 * 1024;\n\nexport class PiRpcRejectedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PiRpcRejectedError\";\n }\n}\n\nexport interface PiCompactionResult {\n readonly tokensBefore: number;\n readonly estimatedTokensAfter?: number;\n}\n\nexport class PiCompactionError extends Error {\n constructor(readonly code: \"nothing_to_compact\" | \"compaction_failed\") {\n super(code);\n this.name = \"PiCompactionError\";\n }\n}\n\nexport class PiResponseCommitDelayError extends Error {\n readonly code = \"storage_unavailable\" as const;\n\n constructor() {\n super(\"Pi responded, but pi-fleet could not durably commit the response in time\");\n this.name = \"PiResponseCommitDelayError\";\n }\n}\n\nexport class PiCleanupUncertainError extends Error {\n constructor(\n readonly pid: number,\n readonly startupError: unknown,\n readonly cleanupError: unknown,\n ) {\n super(`Pi process group ${String(pid)} could not be cleaned up after startup failed`);\n this.name = \"PiCleanupUncertainError\";\n }\n}\n\nexport interface PiState {\n readonly isStreaming: boolean;\n readonly isCompacting: boolean;\n readonly pendingMessageCount: number;\n readonly sessionFile?: string;\n readonly sessionId: string;\n}\n\nexport interface PiFrame {\n readonly id?: string;\n readonly type?: string;\n readonly command?: string;\n readonly success?: boolean;\n readonly error?: string;\n readonly data?: Record<string, unknown>;\n readonly [key: string]: unknown;\n}\n\nexport type PiDeliveryMode = \"steer\" | \"followUp\";\n\n/**\n * A future durable stdout pipeline uses this state to avoid mistaking an\n * observed matching response for a Pi timeout while its journal commit waits.\n * The active parser still resolves responses immediately in Phase 1.\n */\nexport type PiResponseAdmissionState =\n | \"awaiting_response\"\n | \"admitted_pending_commit\"\n | \"committed\"\n | \"failed\";\n\nexport class PiResponseAdmission {\n #state: PiResponseAdmissionState = \"awaiting_response\";\n\n get state(): PiResponseAdmissionState {\n return this.#state;\n }\n\n admit(): void {\n if (this.#state !== \"awaiting_response\") {\n throw new Error(`Cannot admit response while ${this.#state}`);\n }\n this.#state = \"admitted_pending_commit\";\n }\n\n commit(): void {\n if (this.#state !== \"admitted_pending_commit\") {\n throw new Error(`Cannot commit response while ${this.#state}`);\n }\n this.#state = \"committed\";\n }\n\n fail(): void {\n if (this.#state === \"committed\") {\n throw new Error(\"Cannot fail a committed response\");\n }\n this.#state = \"failed\";\n }\n}\n\nexport interface PiProcessStartOptions {\n readonly executable: string;\n readonly argvPrefix?: readonly string[];\n readonly piArgv: readonly string[];\n readonly cwd: string;\n readonly env?: NodeJS.ProcessEnv;\n readonly maxStdoutFrameBytes?: number;\n readonly maxPartialRecordBytes?: number;\n readonly onSpawn?: (pid: number) => Promise<void>;\n /** Called after a complete LF-terminated record is admitted and before it becomes observable. */\n readonly onStdoutRecord?: (record: Buffer) => void | Promise<void>;\n /** Test/adapter compatibility only; production runtime uses onStdoutRecord. */\n readonly onStdoutBytes?: (record: Buffer) => void;\n}\n\ninterface ResponseWaiter {\n readonly resolve: (frame: PiFrame) => void;\n readonly reject: (error: Error) => void;\n readonly timer: NodeJS.Timeout;\n readonly admission: PiResponseAdmission;\n}\n\nexport class PiProcess {\n readonly #child: ChildProcessWithoutNullStreams;\n readonly #responses = new Map<string, ResponseWaiter>();\n readonly #listeners = new Set<(frame: PiFrame) => void>();\n readonly #exitListeners = new Set<(error: Error | null) => void>();\n readonly #stdoutFramer: RpcRecordFramer;\n #stderr = \"\";\n #stopping = false;\n #handledExit = false;\n readonly #exitHandled: Promise<void>;\n #resolveExitHandled: () => void = () => undefined;\n readonly #maxStdoutFrameBytes: number;\n readonly #onStdoutRecord: (record: Buffer) => Promise<void>;\n #stdoutLane: Promise<void> = Promise.resolve();\n #stdoutFailure: Error | null = null;\n\n private constructor(options: PiProcessStartOptions) {\n this.#exitHandled = new Promise((resolve) => {\n this.#resolveExitHandled = resolve;\n });\n this.#maxStdoutFrameBytes = options.maxStdoutFrameBytes ?? DEFAULT_MAX_STDOUT_FRAME_BYTES;\n this.#stdoutFramer = new RpcRecordFramer(\n options.maxPartialRecordBytes ?? DEFAULT_MAX_PARTIAL_RECORD_BYTES,\n );\n this.#onStdoutRecord = async (record) => {\n if (options.onStdoutRecord !== undefined) await options.onStdoutRecord(record);\n else options.onStdoutBytes?.(record);\n };\n this.#child = spawn(\n options.executable,\n [...(options.argvPrefix ?? []), \"--mode\", \"rpc\", ...options.piArgv],\n {\n cwd: options.cwd,\n env: { ...process.env, ...options.env },\n detached: process.platform !== \"win32\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n },\n );\n this.#child.stderr.setEncoding(\"utf8\");\n this.#child.stdout.on(\"data\", (chunk: Buffer) => {\n this.#child.stdout.pause();\n this.#stdoutLane = this.#stdoutLane\n .then(() => this.#consumeStdout(chunk))\n .catch((error: unknown) => this.#failStdout(error))\n .finally(() => {\n if (this.#child.exitCode === null && this.#stdoutFailure === null) {\n this.#child.stdout.resume();\n }\n });\n });\n this.#child.stderr.on(\"data\", (chunk: string) => {\n this.#stderr = `${this.#stderr}${chunk}`.slice(-65_536);\n });\n this.#child.once(\"exit\", (code, signal) => void this.#handleExit(code, signal));\n this.#child.once(\"error\", (error) => void this.#handleExit(null, null, error));\n }\n\n static async start(options: PiProcessStartOptions): Promise<PiProcess> {\n const process = new PiProcess(options);\n try {\n await options.onSpawn?.(process.pid);\n await process.getState();\n return process;\n } catch (error: unknown) {\n try {\n await process.stop();\n } catch (cleanupError: unknown) {\n throw new PiCleanupUncertainError(process.pid, error, cleanupError);\n }\n throw error;\n }\n }\n\n get pid(): number {\n if (this.#child.pid === undefined) throw new Error(\"Pi process has no PID\");\n return this.#child.pid;\n }\n\n get stderr(): string {\n return this.#stderr;\n }\n\n onFrame(listener: (frame: PiFrame) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n onExit(listener: (error: Error | null) => void): () => void {\n this.#exitListeners.add(listener);\n return () => this.#exitListeners.delete(listener);\n }\n\n async getState(): Promise<PiState> {\n const frame = await this.request({ type: \"get_state\" });\n return frame.data as unknown as PiState;\n }\n\n async prompt(message: string): Promise<void> {\n await this.request({ type: \"prompt\", message, streamingBehavior: \"steer\" });\n }\n\n async followUp(message: string): Promise<void> {\n await this.request({ type: \"follow_up\", message });\n }\n\n async compact(): Promise<PiCompactionResult> {\n let frame: PiFrame;\n try {\n frame = await this.request({ type: \"compact\" });\n } catch (error: unknown) {\n if (!(error instanceof PiRpcRejectedError)) throw error;\n const code =\n error.message === \"Already compacted\" || error.message.startsWith(\"Nothing to compact\")\n ? \"nothing_to_compact\"\n : \"compaction_failed\";\n throw new PiCompactionError(code);\n }\n const tokensBefore = frame.data?.tokensBefore;\n const estimatedTokensAfter = frame.data?.estimatedTokensAfter;\n if (\n typeof tokensBefore !== \"number\" ||\n !Number.isFinite(tokensBefore) ||\n tokensBefore < 0 ||\n (estimatedTokensAfter !== undefined &&\n (typeof estimatedTokensAfter !== \"number\" ||\n !Number.isFinite(estimatedTokensAfter) ||\n estimatedTokensAfter < 0))\n ) {\n throw new Error(\"Pi returned an invalid compaction result\");\n }\n return {\n tokensBefore,\n ...(estimatedTokensAfter === undefined ? {} : { estimatedTokensAfter }),\n };\n }\n\n async getLastAssistantText(): Promise<string | null> {\n const frame = await this.request({ type: \"get_last_assistant_text\" });\n return typeof frame.data?.text === \"string\" ? frame.data.text : null;\n }\n\n async request(command: Record<string, unknown>, timeoutMs = 15_000): Promise<PiFrame> {\n if (this.#child.exitCode !== null) throw new Error(\"Pi process is not running\");\n const id = randomUUID();\n const admission = new PiResponseAdmission();\n const response = new Promise<PiFrame>((resolveResponse, rejectResponse) => {\n const timer = setTimeout(() => {\n if (admission.state === \"admitted_pending_commit\") {\n this.#failStdout(new PiResponseCommitDelayError());\n return;\n }\n this.#responses.delete(id);\n admission.fail();\n rejectResponse(new Error(\"Pi RPC request timed out\"));\n }, timeoutMs);\n this.#responses.set(id, {\n resolve: resolveResponse,\n reject: rejectResponse,\n timer,\n admission,\n });\n });\n try {\n await this.#write({ ...command, id });\n } catch (error: unknown) {\n const waiter = this.#responses.get(id);\n if (waiter !== undefined) {\n clearTimeout(waiter.timer);\n this.#responses.delete(id);\n waiter.admission.fail();\n waiter.reject(error instanceof Error ? error : new Error(\"Pi RPC write failed\"));\n }\n }\n const frame = await response;\n if (frame.success !== true) {\n throw new PiRpcRejectedError(frame.error ?? `Pi rejected ${String(command.type)}`);\n }\n return frame;\n }\n\n async stop(): Promise<void> {\n if (this.#stopping) {\n if (!(await this.#waitForExit(1_000))) {\n throw new Error(`Pi process group ${String(this.pid)} is still running`);\n }\n return;\n }\n this.#stopping = true;\n if (this.#child.exitCode === null) this.#child.stdin.end();\n if (await this.#waitForExit(500)) return;\n signalProcessTree(this.pid, \"SIGTERM\");\n if (await this.#waitForExit(1_000)) return;\n signalProcessTree(this.pid, \"SIGKILL\");\n if (!(await this.#waitForExit(1_000))) {\n throw new Error(`Pi process group ${String(this.pid)} did not exit after SIGKILL`);\n }\n }\n\n async #waitForExit(timeoutMs: number): Promise<boolean> {\n if (!(await waitForProcessGroupExit(this.pid, timeoutMs))) return false;\n await this.#exitHandled;\n return true;\n }\n\n async #write(frame: PiFrame): Promise<void> {\n if (this.#child.stdin.write(`${JSON.stringify(frame)}\\n`)) return;\n await once(this.#child.stdin, \"drain\");\n }\n\n async #consumeStdout(chunk: Buffer): Promise<void> {\n for (const record of this.#stdoutFramer.push(chunk)) {\n const commit = this.#onStdoutRecord(record);\n if (record.length - 1 > this.#maxStdoutFrameBytes) {\n await commit;\n throw new Error(\"Pi RPC record exceeds the configured parser limit\");\n }\n let lineBytes = record.subarray(0, record.length - 1);\n if (lineBytes.at(-1) === 0x0d) lineBytes = lineBytes.subarray(0, -1);\n let frame: PiFrame | null = null;\n if (lineBytes.length > 0) {\n try {\n const line = new TextDecoder(\"utf-8\", { fatal: true }).decode(lineBytes);\n frame = JSON.parse(line) as PiFrame;\n } catch {\n await commit;\n throw new Error(\"Pi emitted a malformed RPC record\");\n }\n }\n const waiter =\n frame?.type === \"response\" && typeof frame.id === \"string\"\n ? this.#responses.get(frame.id)\n : undefined;\n if (waiter !== undefined) waiter.admission.admit();\n await commit;\n if (waiter !== undefined) {\n if (waiter.admission.state !== \"admitted_pending_commit\") continue;\n waiter.admission.commit();\n clearTimeout(waiter.timer);\n this.#responses.delete(frame!.id!);\n waiter.resolve(frame!);\n }\n if (frame === null) continue;\n if (\n frame.type === \"extension_ui_request\" &&\n typeof frame.id === \"string\" &&\n [\"select\", \"confirm\", \"input\", \"editor\"].includes(String(frame.method))\n ) {\n void this.#write({ type: \"extension_ui_response\", id: frame.id, cancelled: true }).catch(\n () => undefined,\n );\n }\n for (const listener of this.#listeners) listener(frame);\n }\n }\n\n async drainStdout(): Promise<void> {\n await this.#stdoutLane;\n }\n\n #failStdout(error: unknown): void {\n if (this.#stdoutFailure !== null) return;\n this.#stdoutFailure =\n error instanceof Error ? error : new Error(\"Pi stdout persistence failed\");\n for (const waiter of this.#responses.values()) {\n clearTimeout(waiter.timer);\n if (waiter.admission.state !== \"committed\") waiter.admission.fail();\n waiter.reject(this.#stdoutFailure);\n }\n this.#responses.clear();\n signalProcessTree(this.pid, \"SIGTERM\");\n }\n\n async #handleExit(\n code: number | null,\n signal: NodeJS.Signals | null,\n cause?: Error,\n ): Promise<void> {\n if (this.#handledExit) return;\n this.#handledExit = true;\n await this.#stdoutLane.catch(() => undefined);\n const trailingPartial = this.#stdoutFramer.finish();\n const error =\n this.#stdoutFailure ??\n (trailingPartial !== null\n ? new Error(\"Pi exited with an unterminated RPC record\")\n : this.#stopping && (code === 0 || signal === \"SIGTERM\")\n ? null\n : (cause ??\n new Error(`Pi exited unexpectedly (code=${String(code)}, signal=${String(signal)})`)));\n try {\n for (const waiter of this.#responses.values()) {\n clearTimeout(waiter.timer);\n if (waiter.admission.state !== \"committed\") waiter.admission.fail();\n waiter.reject(error ?? new Error(\"Pi stopped before responding\"));\n }\n this.#responses.clear();\n for (const listener of this.#exitListeners) listener(error);\n } finally {\n this.#resolveExitHandled();\n }\n }\n}\n", "import { readFileSync, readdirSync } from \"node:fs\";\n\nexport function signalProcessTree(pid: number, signal: NodeJS.Signals): void {\n try {\n if (process.platform === \"win32\") process.kill(pid, signal);\n else process.kill(-pid, signal);\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"ESRCH\") throw error;\n }\n}\n\nexport function isProcessAlive(pid: number): boolean {\n if (process.platform === \"linux\") {\n const record = readLinuxProcess(pid);\n if (record === null) return false;\n if (record !== undefined) return isRunningState(record.state);\n }\n return canSignal(pid);\n}\n\nexport function isProcessGroupAlive(processGroupId: number): boolean {\n if (process.platform === \"win32\") return isProcessAlive(processGroupId);\n if (process.platform === \"linux\") {\n try {\n for (const entry of readdirSync(\"/proc\")) {\n if (!/^\\d+$/.test(entry)) continue;\n const record = readLinuxProcess(Number(entry));\n if (\n record !== null &&\n record !== undefined &&\n record.processGroupId === processGroupId &&\n isRunningState(record.state)\n ) {\n return true;\n }\n }\n return false;\n } catch {\n // Fall back to the portable signal probe if procfs is unavailable.\n }\n }\n return canSignal(-processGroupId);\n}\n\nexport async function waitForProcessExit(pid: number, timeoutMs = 1_000): Promise<boolean> {\n return waitUntilGone(() => isProcessAlive(pid), timeoutMs);\n}\n\nexport async function waitForProcessGroupExit(\n processGroupId: number,\n timeoutMs = 1_000,\n): Promise<boolean> {\n return waitUntilGone(() => isProcessGroupAlive(processGroupId), timeoutMs);\n}\n\nfunction readLinuxProcess(\n pid: number,\n): { readonly state: string; readonly processGroupId: number } | null | undefined {\n try {\n const stat = readFileSync(`/proc/${String(pid)}/stat`, \"utf8\");\n const commandEnd = stat.lastIndexOf(\")\");\n if (commandEnd < 0) return undefined;\n const fields = stat\n .slice(commandEnd + 2)\n .trim()\n .split(/\\s+/);\n const state = fields[0];\n const processGroupId = Number(fields[2]);\n if (state === undefined || !Number.isSafeInteger(processGroupId)) return undefined;\n return { state, processGroupId };\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n return undefined;\n }\n}\n\nfunction isRunningState(state: string): boolean {\n return state !== \"Z\" && state !== \"X\";\n}\n\nfunction canSignal(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error: unknown) {\n return (error as NodeJS.ErrnoException).code === \"EPERM\";\n }\n}\n\nasync function waitUntilGone(isAlive: () => boolean, timeoutMs: number): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n if (!isAlive()) return true;\n await new Promise((resolveDelay) => setTimeout(resolveDelay, 25));\n }\n return !isAlive();\n}\n", "export class RpcPartialRecordLimitError extends Error {\n constructor(\n readonly pendingBytes: number,\n readonly limitBytes: number,\n ) {\n super(`Pi RPC unterminated record exceeded ${String(limitBytes)} bytes`);\n this.name = \"RpcPartialRecordLimitError\";\n }\n}\n\n/** Frames exact LF-terminated records without decoding or normalizing their bytes. */\nexport class RpcRecordFramer {\n readonly #segments: Buffer[] = [];\n #pendingBytes = 0;\n #failed = false;\n\n constructor(readonly maxPartialRecordBytes: number) {\n if (!Number.isSafeInteger(maxPartialRecordBytes) || maxPartialRecordBytes <= 0) {\n throw new Error(\"maxPartialRecordBytes must be a positive safe integer\");\n }\n }\n\n get pendingBytes(): number {\n return this.#pendingBytes;\n }\n\n push(chunk: Buffer): readonly Buffer[] {\n if (this.#failed) throw new Error(\"Pi RPC record framer has failed\");\n if (chunk.length === 0) return [];\n\n const records: Buffer[] = [];\n let offset = 0;\n while (offset < chunk.length) {\n const newline = chunk.indexOf(0x0a, offset);\n if (newline === -1) {\n this.#appendPartial(chunk.subarray(offset));\n break;\n }\n\n const finalSegment = chunk.subarray(offset, newline + 1);\n if (this.#pendingBytes === 0) {\n records.push(Buffer.from(finalSegment));\n } else {\n this.#segments.push(finalSegment);\n this.#pendingBytes += finalSegment.length;\n records.push(Buffer.concat(this.#segments, this.#pendingBytes));\n this.#segments.length = 0;\n this.#pendingBytes = 0;\n }\n offset = newline + 1;\n }\n return records;\n }\n\n /** Returns, but never promotes, an interrupted trailing fragment. */\n finish(): Buffer | null {\n if (this.#pendingBytes === 0) return null;\n const trailing = Buffer.concat(this.#segments, this.#pendingBytes);\n this.#segments.length = 0;\n this.#pendingBytes = 0;\n return trailing;\n }\n\n #appendPartial(segment: Buffer): void {\n if (segment.length === 0) return;\n const nextBytes = this.#pendingBytes + segment.length;\n if (nextBytes > this.maxPartialRecordBytes) {\n this.#failed = true;\n throw new RpcPartialRecordLimitError(nextBytes, this.maxPartialRecordBytes);\n }\n this.#segments.push(Buffer.from(segment));\n this.#pendingBytes = nextBytes;\n }\n}\n", "import type { AgentLaunchProfile } from \"./launch-profile.js\";\nimport { PiProcess } from \"./process.js\";\n\nexport type { PiDeliveryMode } from \"./process.js\";\n\nexport type PiStdoutSink = (record: Buffer) => void | Promise<void>;\n\nexport type PiExecutionUnavailableCode =\n | \"pi_not_found\"\n | \"pi_not_executable\"\n | \"pi_version_unavailable\"\n | \"pi_version_unsupported\"\n | \"pi_installation_changed\";\n\nexport class PiExecutionUnavailableError extends Error {\n constructor(readonly code: PiExecutionUnavailableCode) {\n super(code);\n this.name = \"PiExecutionUnavailableError\";\n }\n}\n\nexport interface PiLauncher {\n readonly artifactId: string;\n preflight?(): Promise<void>;\n start(\n profile: AgentLaunchProfile,\n restore: boolean,\n onSpawn?: (pid: number) => Promise<void>,\n onStdoutRecord?: PiStdoutSink,\n ): Promise<PiProcess>;\n}\n\nexport interface RealPiLauncherOptions {\n readonly executable: string;\n readonly artifactId: string;\n readonly argvPrefix?: readonly string[];\n readonly env?: NodeJS.ProcessEnv;\n readonly onStart?: (pid: number) => void;\n readonly maxStdoutFrameBytes?: number;\n readonly maxPartialRecordBytes?: number;\n readonly preflight?: () => Promise<void>;\n}\n\nexport class RealPiLauncher implements PiLauncher {\n readonly artifactId: string;\n\n constructor(private readonly options: RealPiLauncherOptions) {\n this.artifactId = options.artifactId;\n }\n\n preflight(): Promise<void> {\n return this.options.preflight?.() ?? Promise.resolve();\n }\n\n async start(\n profile: AgentLaunchProfile,\n restore: boolean,\n onSpawn?: (pid: number) => Promise<void>,\n onStdoutRecord?: PiStdoutSink,\n ): Promise<PiProcess> {\n const piArgv = restore ? profile.restorePiArgv : profile.userPiArgv;\n if (piArgv === null) throw new Error(\"Agent has no observed Pi session to restore\");\n const process = await PiProcess.start({\n executable: this.options.executable,\n ...(this.options.argvPrefix === undefined ? {} : { argvPrefix: this.options.argvPrefix }),\n piArgv,\n cwd: profile.cwd,\n ...(this.options.env === undefined ? {} : { env: this.options.env }),\n ...(this.options.maxStdoutFrameBytes === undefined\n ? {}\n : { maxStdoutFrameBytes: this.options.maxStdoutFrameBytes }),\n ...(this.options.maxPartialRecordBytes === undefined\n ? {}\n : { maxPartialRecordBytes: this.options.maxPartialRecordBytes }),\n ...(onSpawn === undefined ? {} : { onSpawn }),\n ...(onStdoutRecord === undefined ? {} : { onStdoutRecord }),\n });\n this.options.onStart?.(process.pid);\n return process;\n }\n}\n", "import { type PiRuntimeIdentity, samePiRuntimeIdentity } from \"../protocol/pi-identity.js\";\nimport {\n ExternalPiResolutionError,\n externalPiExecutionEnvironment,\n installationIdentity,\n resolveExternalPiInstallation,\n type PiInstallation,\n} from \"./external-installation.js\";\nimport { PiExecutionUnavailableError, RealPiLauncher, type PiLauncher } from \"./adapter.js\";\n\nexport interface ExternalPiTarget {\n readonly launcher: PiLauncher;\n readonly identity: PiRuntimeIdentity;\n}\n\nexport async function createExternalPiTarget(\n env: NodeJS.ProcessEnv,\n maxStdoutFrameBytes?: number,\n maxPartialRecordBytes?: number,\n): Promise<ExternalPiTarget> {\n const selectedPath = env.PIFLEET_PI_EXECUTABLE;\n const nodePath = env.PIFLEET_PI_NODE;\n if (selectedPath === undefined || nodePath === undefined) {\n return unavailableTarget(\n selectedPath ?? \"<unconfigured>\",\n nodePath ?? \"<unconfigured>\",\n \"pi_not_found\",\n );\n }\n\n let initial: PiInstallation;\n try {\n initial = await resolveExternalPiInstallation({\n env: { ...env, PIFLEET_PI_EXECUTABLE: selectedPath },\n nodePath,\n });\n } catch (error: unknown) {\n return unavailableTarget(selectedPath, nodePath, resolutionCode(error));\n }\n const identity = installationIdentity(initial);\n const launcher = new RealPiLauncher({\n executable: initial.selectedPath,\n artifactId: \"external-pi\",\n env: externalPiExecutionEnvironment(env, initial.selectedPath, initial.nodePath),\n ...(maxStdoutFrameBytes === undefined ? {} : { maxStdoutFrameBytes }),\n ...(maxPartialRecordBytes === undefined ? {} : { maxPartialRecordBytes }),\n preflight: async () => {\n let current: PiInstallation;\n try {\n current = await resolveExternalPiInstallation({\n env: { ...env, PIFLEET_PI_EXECUTABLE: selectedPath },\n nodePath,\n });\n } catch (error: unknown) {\n throw new PiExecutionUnavailableError(resolutionCode(error));\n }\n if (!samePiRuntimeIdentity(identity, installationIdentity(current))) {\n throw new PiExecutionUnavailableError(\"pi_installation_changed\");\n }\n },\n });\n return { launcher, identity };\n}\n\nexport { installationIdentity } from \"./external-installation.js\";\n\nfunction unavailableTarget(\n selectedPath: string,\n nodePath: string,\n code: PiExecutionUnavailableError[\"code\"],\n): ExternalPiTarget {\n const launcher: PiLauncher = {\n artifactId: \"external-pi\",\n async preflight() {\n throw new PiExecutionUnavailableError(code);\n },\n async start() {\n throw new PiExecutionUnavailableError(code);\n },\n };\n return {\n launcher,\n identity: {\n mode: \"external\",\n selectedPath,\n nodePath,\n realPath: selectedPath,\n version: \"unavailable\",\n fingerprint: \"unavailable\",\n },\n };\n}\n\nfunction resolutionCode(error: unknown): PiExecutionUnavailableError[\"code\"] {\n if (error instanceof ExternalPiResolutionError) {\n if (error.code === \"invalid_arguments\") return \"pi_not_executable\";\n return error.code;\n }\n return \"pi_version_unavailable\";\n}\n", "import { homedir, tmpdir } from \"node:os\";\nimport { join, resolve } from \"node:path\";\n\nexport interface FleetPaths {\n readonly runtimeRoot: string;\n readonly stateRoot: string;\n readonly socketPath: string;\n readonly databasePath: string;\n}\n\nexport function resolveApplicationRoot(env: NodeJS.ProcessEnv = process.env): string {\n return (\n env.PIFLEET_APPLICATION_ROOT ??\n (process.platform === \"darwin\"\n ? join(homedir(), \"Library\", \"Application Support\", \"pi-fleet\", \"runtime\")\n : join(env.XDG_DATA_HOME ?? join(homedir(), \".local\", \"share\"), \"pi-fleet\"))\n );\n}\n\nexport function resolveFleetPaths(env: NodeJS.ProcessEnv = process.env): FleetPaths {\n const explicitRoot = env.PIFLEET_STATE_ROOT;\n if (explicitRoot !== undefined) {\n const root = resolve(explicitRoot);\n return {\n runtimeRoot: root,\n stateRoot: root,\n socketPath: join(root, \"control.sock\"),\n databasePath: join(root, \"fleet.sqlite\"),\n };\n }\n\n const runtimeRoot = join(\n env.XDG_RUNTIME_DIR ?? tmpdir(),\n `pifleet-${process.getuid?.() ?? \"user\"}`,\n );\n const stateRoot =\n process.platform === \"darwin\"\n ? join(homedir(), \"Library\", \"Application Support\", \"pi-fleet\")\n : join(env.XDG_STATE_HOME ?? join(homedir(), \".local\", \"state\"), \"pi-fleet\");\n return {\n runtimeRoot,\n stateRoot,\n socketPath: join(runtimeRoot, \"control.sock\"),\n databasePath: join(stateRoot, \"fleet.sqlite\"),\n };\n}\n", "import { chmodSync, constants, lstatSync } from \"node:fs\";\nimport { chmod, lstat, mkdir, open } from \"node:fs/promises\";\nimport { dirname, join, parse, resolve, sep } from \"node:path\";\n\nimport type { FleetPaths } from \"./paths.js\";\n\nconst PRIVATE_DIRECTORY_MODE = 0o700;\nconst PRIVATE_FILE_MODE = 0o600;\nconst GROUP_OR_OTHER_WRITE = 0o022;\nconst STICKY_BIT = 0o1000;\nconst SAFE_ROOT_STICKY_DIRECTORIES = new Set([\"/tmp\", \"/var/tmp\"]);\n\n/** Prepare and verify paths that may retain sensitive pi-fleet state. */\nexport async function prepareFleetPathSecurity(paths: FleetPaths): Promise<void> {\n await preparePrivateDirectory(paths.runtimeRoot);\n if (paths.stateRoot !== paths.runtimeRoot) await preparePrivateDirectory(paths.stateRoot);\n await preparePrivateDatabase(paths.databasePath);\n}\n\nexport async function preparePrivateDirectory(path: string): Promise<void> {\n const absolutePath = resolve(path);\n await prepareDirectoryComponents(absolutePath);\n const stats = await lstat(absolutePath);\n assertCurrentUser(absolutePath, stats.uid);\n await chmod(absolutePath, PRIVATE_DIRECTORY_MODE);\n}\n\nexport async function preparePrivateDatabase(path: string): Promise<void> {\n const absolutePath = resolve(path);\n await preparePrivateDirectory(dirname(absolutePath));\n await assertPrivateRegularFileIfPresent(absolutePath);\n await assertPrivateRegularFileIfPresent(`${absolutePath}-wal`);\n await assertPrivateRegularFileIfPresent(`${absolutePath}-shm`);\n\n const handle = await open(\n absolutePath,\n constants.O_CREAT | constants.O_APPEND | constants.O_WRONLY | constants.O_NOFOLLOW,\n 0o600,\n );\n await handle.chmod(PRIVATE_FILE_MODE);\n await handle.close();\n}\n\nexport async function hardenSqliteSidecars(path: string): Promise<void> {\n await assertPrivateRegularFileIfPresent(path, true);\n await assertPrivateRegularFileIfPresent(`${path}-wal`, true);\n await assertPrivateRegularFileIfPresent(`${path}-shm`, true);\n}\n\nexport function hardenPrivateDirectorySync(path: string): void {\n assertTrustedDirectoryComponentsSync(resolve(path));\n const stats = lstatSync(path);\n if (stats.isSymbolicLink() || !stats.isDirectory()) {\n throw new Error(`Refusing unsafe pi-fleet directory ${path}`);\n }\n assertCurrentUser(path, stats.uid);\n chmodSync(path, PRIVATE_DIRECTORY_MODE);\n}\n\nexport function hardenSqliteSidecarsSync(path: string): void {\n for (const candidate of [path, `${path}-wal`, `${path}-shm`]) {\n let stats;\n try {\n stats = lstatSync(candidate);\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") continue;\n throw error;\n }\n if (stats.isSymbolicLink() || !stats.isFile()) {\n throw new Error(`Refusing unsafe pi-fleet state file ${candidate}`);\n }\n assertCurrentUser(candidate, stats.uid);\n chmodSync(candidate, PRIVATE_FILE_MODE);\n }\n}\n\nfunction assertTrustedDirectoryComponentsSync(absolutePath: string): void {\n const root = parse(absolutePath).root;\n let current = root;\n const rootStats = lstatSync(root);\n assertTrustedDirectoryAncestor(root, rootStats.uid, rootStats.mode);\n for (const component of absolutePath.slice(root.length).split(sep).filter(Boolean)) {\n current = join(current, component);\n const stats = lstatSync(current);\n if (stats.isSymbolicLink() || !stats.isDirectory()) {\n throw new Error(`Refusing unsafe pi-fleet directory ${current}`);\n }\n assertTrustedDirectoryAncestor(current, stats.uid, stats.mode);\n }\n}\n\nasync function prepareDirectoryComponents(absolutePath: string): Promise<void> {\n const root = parse(absolutePath).root;\n const rootStats = await lstat(root);\n assertTrustedDirectoryAncestor(root, rootStats.uid, rootStats.mode);\n const components = absolutePath.slice(root.length).split(sep).filter(Boolean);\n let current = root;\n for (const component of components) {\n current = join(current, component);\n let stats = await lstat(current).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return null;\n throw error;\n });\n if (stats === null) {\n await mkdir(current, { mode: PRIVATE_DIRECTORY_MODE }).catch(\n (error: NodeJS.ErrnoException) => {\n if (error.code !== \"EEXIST\") throw error;\n },\n );\n stats = await lstat(current);\n }\n if (stats.isSymbolicLink()) {\n throw new Error(`Refusing unsafe pi-fleet directory symlink ${current}`);\n }\n if (!stats.isDirectory()) {\n throw new Error(`Refusing unsafe pi-fleet directory ${current}`);\n }\n assertTrustedDirectoryAncestor(current, stats.uid, stats.mode);\n }\n}\n\nexport function assertTrustedDirectoryAncestor(\n path: string,\n ownerUid: number,\n mode: number,\n currentUid = process.getuid?.(),\n): void {\n if (currentUid === undefined || ownerUid === currentUid) return;\n if (ownerUid === 0) {\n const writable = (mode & GROUP_OR_OTHER_WRITE) !== 0;\n if (!writable) return;\n if ((mode & STICKY_BIT) !== 0 && SAFE_ROOT_STICKY_DIRECTORIES.has(path)) return;\n }\n throw new Error(`Refusing untrusted pi-fleet directory ancestor: ${path}`);\n}\n\nasync function assertPrivateRegularFileIfPresent(path: string, harden = false): Promise<void> {\n const stats = await lstat(path).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return null;\n throw error;\n });\n if (stats === null) return;\n if (stats.isSymbolicLink() || !stats.isFile()) {\n throw new Error(`Refusing unsafe pi-fleet state file ${path}`);\n }\n assertCurrentUser(path, stats.uid);\n if (harden || (stats.mode & 0o077) !== 0) await chmod(path, PRIVATE_FILE_MODE);\n}\n\nfunction assertCurrentUser(path: string, ownerUid: number): void {\n const uid = process.getuid?.();\n if (uid !== undefined && ownerUid !== uid) {\n throw new Error(`Refusing pi-fleet path not owned by the current user: ${path}`);\n }\n}\n", "import { chmod, mkdir, unlink } from \"node:fs/promises\";\nimport { createServer, type Server, type Socket } from \"node:net\";\nimport { dirname } from \"node:path\";\n\nimport type {\n CompactInput,\n CreateInput,\n DestroyInput,\n FleetClientError,\n ReceiveInput,\n SendInput,\n StatusInput,\n} from \"../client/fleet-client.js\";\nimport type { ReceiveStart } from \"../client/agent-target.js\";\nimport { parseProtocolRequest } from \"../protocol/validation.js\";\nimport { writeJsonLine, readJsonLines } from \"../protocol/jsonl.js\";\nimport type { PiRuntimeIdentity } from \"../protocol/pi-identity.js\";\nimport { segmentSemanticEvent } from \"../protocol/semantic-segmentation.js\";\nimport { PROTOCOL_VERSION } from \"../protocol/version.js\";\nimport { DEFAULT_RUNTIME_LIMITS, type RuntimeLimits } from \"../shared/runtime-limits.js\";\nimport type { Result } from \"../shared/result.js\";\nimport type { FleetService } from \"./fleet-service.js\";\nimport type { JournalRuntimeComposition } from \"./journal-runtime.js\";\nimport { ReceiveObservationUncertainError } from \"./receive-pager.js\";\nimport type { ReceiveCursor, SemanticEvent } from \"./semantic-events.js\";\nimport {\n inspectControlSocketOwnership,\n RuntimeOwnershipBlockedError,\n} from \"../platform/shared/runtime-ownership.js\";\n\nexport interface ControlServer {\n readonly socketPath: string;\n close(): Promise<void>;\n}\n\ninterface ControlLimits {\n readonly maxProtocolFrameBytes: number;\n readonly maxSemanticFrameBytes: number;\n readonly maxSemanticSegments: number;\n readonly maxSemanticEventBytes: number;\n readonly maxSocketWriteMs: number;\n}\n\nexport async function startControlServer(options: {\n readonly socketPath: string;\n readonly service: FleetService | Promise<FleetService>;\n readonly journal?: () => Promise<JournalRuntimeComposition>;\n readonly limits?: Partial<\n Pick<\n RuntimeLimits,\n | \"maxProtocolFrameBytes\"\n | \"maxSemanticFrameBytes\"\n | \"maxSemanticSegments\"\n | \"maxPiFrameBytes\"\n | \"maxSocketWriteMs\"\n >\n >;\n}): Promise<ControlServer> {\n await mkdir(dirname(options.socketPath), { recursive: true, mode: 0o700 });\n await prepareSocketPath(options.socketPath);\n const service = Promise.resolve(options.service);\n const limits = {\n maxProtocolFrameBytes:\n options.limits?.maxProtocolFrameBytes ?? DEFAULT_RUNTIME_LIMITS.maxProtocolFrameBytes,\n maxSemanticFrameBytes:\n options.limits?.maxSemanticFrameBytes ?? DEFAULT_RUNTIME_LIMITS.maxSemanticFrameBytes,\n maxSemanticSegments:\n options.limits?.maxSemanticSegments ?? DEFAULT_RUNTIME_LIMITS.maxSemanticSegments,\n maxSemanticEventBytes:\n options.limits?.maxPiFrameBytes ?? DEFAULT_RUNTIME_LIMITS.maxPiFrameBytes,\n maxSocketWriteMs: options.limits?.maxSocketWriteMs ?? DEFAULT_RUNTIME_LIMITS.maxSocketWriteMs,\n };\n const server = createServer((socket) =>\n handleConnection(\n socket,\n service,\n options.journal ?? (() => Promise.reject(new Error(\"Semantic receive is unavailable\"))),\n limits,\n ),\n );\n server.listen(options.socketPath);\n await new Promise<void>((resolveListen, rejectListen) => {\n server.once(\"listening\", resolveListen);\n server.once(\"error\", rejectListen);\n });\n await chmod(options.socketPath, 0o600);\n return {\n socketPath: options.socketPath,\n async close() {\n await closeServer(server);\n await unlink(options.socketPath).catch((error: NodeJS.ErrnoException) => {\n if (error.code !== \"ENOENT\") throw error;\n });\n },\n };\n}\n\nfunction handleConnection(\n socket: Socket,\n service: Promise<FleetService>,\n journal: () => Promise<JournalRuntimeComposition>,\n limits: ControlLimits,\n): void {\n let handled = false;\n const abort = new AbortController();\n socket.once(\"close\", () => abort.abort());\n const stopReading = readJsonLines(\n socket,\n (value) => {\n if (handled) return;\n handled = true;\n stopReading();\n void service\n .then((readyService) =>\n dispatch(value, readyService, journal, socket, abort.signal, limits),\n )\n .catch((error: unknown) => writeConnectionError(socket, value, error));\n },\n (error) => writeConnectionError(socket, undefined, new InvalidRequestError(error.message)),\n limits.maxProtocolFrameBytes,\n );\n}\n\nasync function dispatch(\n value: unknown,\n service: FleetService,\n journal: () => Promise<JournalRuntimeComposition>,\n socket: Socket,\n connectionSignal: AbortSignal,\n limits: ControlLimits,\n): Promise<void> {\n let request: ReturnType<typeof parseProtocolRequest>;\n try {\n request = parseProtocolRequest(value);\n } catch (error: unknown) {\n throw new InvalidRequestError(\n error instanceof Error ? error.message : \"Invalid protocol request\",\n );\n }\n const operationId = request.operation?.operationId;\n let result: Result<unknown, FleetClientError>;\n switch (request.method) {\n case \"agent.create\":\n result = await service.create(\n asCreateInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n case \"agent.send\":\n result = await service.send(\n asSendInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n case \"agent.receive\":\n await streamReceive(\n request.requestId,\n asReceiveInput(request.params),\n service,\n await journal(),\n socket,\n connectionSignal,\n limits,\n );\n return;\n case \"agent.status\":\n result = await service.status(asNamedInput(request.params));\n break;\n case \"agent.list\":\n result = await service.list();\n break;\n case \"agent.destroy\":\n result = await service.destroy(asBoundInput(request.params), requireOperation(operationId));\n break;\n case \"agent.compact\":\n result = await service.compact(\n asBoundInput(request.params),\n requireOperation(operationId),\n requirePiIdentity(request.runtime?.pi),\n );\n break;\n }\n await writeFrame(\n socket,\n result.ok\n ? { v: PROTOCOL_VERSION, requestId: request.requestId, ok: true, result: result.value }\n : { v: PROTOCOL_VERSION, requestId: request.requestId, ok: false, error: result.error },\n limits.maxSocketWriteMs,\n );\n socket.end();\n}\n\nasync function streamReceive(\n requestId: string,\n input: ReceiveInput,\n service: FleetService,\n journal: JournalRuntimeComposition,\n socket: Socket,\n connectionSignal: AbortSignal,\n limits: ControlLimits,\n): Promise<void> {\n const abort = new AbortController();\n const onConnectionAbort = () => abort.abort(connectionSignal.reason);\n connectionSignal.addEventListener(\"abort\", onConnectionAbort, { once: true });\n let lastCursor: ReceiveCursor | null = null;\n try {\n const prepared = await service.prepareReceive(\n input,\n input.start ?? { kind: \"live\" },\n input.untilIdle === true,\n abort.signal,\n );\n if (!prepared.ok) {\n await writeStreamError(socket, requestId, prepared.error, limits.maxSocketWriteMs);\n return;\n }\n const { stream, idle } = prepared.value;\n await writeFrame(\n socket,\n {\n v: PROTOCOL_VERSION,\n requestId,\n stream: \"ready\",\n cursor: stream.cursor,\n limits: {\n maxEventBytes: limits.maxSemanticEventBytes,\n maxSegments: limits.maxSemanticSegments,\n },\n },\n limits.maxSocketWriteMs,\n limits.maxProtocolFrameBytes,\n );\n\n const iterator = stream[Symbol.asyncIterator]();\n let precedingCursor = stream.cursor;\n lastCursor = stream.cursor;\n let lastPosition = journal.decodeCursorPosition(stream.cursor);\n let idleHighWater: number | null = null;\n let pending = iterator.next();\n while (!abort.signal.aborted) {\n if (idle !== null && idleHighWater === null) {\n const raced = await Promise.race([\n pending.then((next) => ({ kind: \"event\" as const, next })),\n idle.then((settled) => ({ kind: \"idle\" as const, settled })),\n ]);\n if (raced.kind === \"idle\") {\n if (!raced.settled.ok) {\n await writeStreamError(socket, requestId, raced.settled.error, limits.maxSocketWriteMs);\n return;\n }\n idleHighWater = raced.settled.value.idleEventPosition;\n if (lastPosition >= idleHighWater) break;\n continue;\n }\n if (raced.next.done) break;\n const event = raced.next.value;\n await writeSemanticEvent(socket, requestId, event, precedingCursor, limits);\n precedingCursor = event.cursor;\n lastCursor = event.cursor;\n lastPosition = journal.decodeCursorPosition(event.cursor);\n pending = iterator.next();\n continue;\n }\n\n if (idleHighWater !== null && lastPosition >= idleHighWater) break;\n const next = await pending;\n if (next.done) break;\n const event = next.value;\n await writeSemanticEvent(socket, requestId, event, precedingCursor, limits);\n precedingCursor = event.cursor;\n lastCursor = event.cursor;\n lastPosition = journal.decodeCursorPosition(event.cursor);\n pending = iterator.next();\n }\n abort.abort();\n await pending.catch(() => ({ done: true as const, value: undefined }));\n await iterator.return?.();\n if (!socket.destroyed) {\n await writeFrame(\n socket,\n { v: PROTOCOL_VERSION, requestId, stream: \"end\" },\n limits.maxSocketWriteMs,\n );\n socket.end();\n }\n } catch (error: unknown) {\n if (socket.destroyed || connectionSignal.aborted) return;\n const failure =\n error instanceof ReceiveObservationUncertainError\n ? {\n code: error.code,\n message: error.message,\n details: {\n lastSafeCursor: error.lastSafeCursor,\n continuationCursor: error.continuationCursor,\n },\n }\n : error instanceof Error && \"code\" in error && typeof error.code === \"string\"\n ? {\n code: error.code,\n message: \"Receive stream failed.\",\n ...(lastCursor === null ? {} : { details: { lastSafeCursor: lastCursor } }),\n }\n : error instanceof Error && error.message.startsWith(\"Semantic\")\n ? {\n code: \"semantic_event_too_large\",\n message: \"A semantic event exceeds stream limits.\",\n }\n : { code: \"internal_error\", message: \"Receive stream failed.\" };\n await writeStreamError(socket, requestId, failure, limits.maxSocketWriteMs);\n } finally {\n connectionSignal.removeEventListener(\"abort\", onConnectionAbort);\n }\n}\n\nasync function writeSemanticEvent(\n socket: Socket,\n requestId: string,\n event: SemanticEvent,\n precedingCursor: ReceiveCursor,\n limits: ControlLimits,\n): Promise<void> {\n let segmentLimit = Math.max(\n 1,\n Math.min(limits.maxSemanticFrameBytes, limits.maxProtocolFrameBytes),\n );\n let frames: unknown[] | null = null;\n while (frames === null) {\n const candidates = segmentSemanticEvent(\n event,\n precedingCursor,\n segmentLimit,\n limits.maxSemanticSegments,\n ).map((segment) => ({\n v: PROTOCOL_VERSION,\n requestId,\n stream: \"semantic.segment\",\n segment,\n }));\n if (\n candidates.every(\n (frame) => Buffer.byteLength(JSON.stringify(frame)) + 1 <= limits.maxProtocolFrameBytes,\n )\n ) {\n frames = candidates;\n break;\n }\n if (segmentLimit === 1) {\n throw new Error(\"Semantic event envelope exceeds the configured protocol limit\");\n }\n segmentLimit = Math.max(1, Math.floor(segmentLimit * 0.75));\n }\n for (const frame of frames) {\n await writeFrame(socket, frame, limits.maxSocketWriteMs, limits.maxProtocolFrameBytes);\n }\n}\n\nfunction asCreateInput(params: Record<string, unknown>): CreateInput {\n const name = stringParam(params, \"name\");\n const cwd = stringParam(params, \"cwd\");\n const instructions = params.instructions;\n const piArgv = params.piArgv;\n if (instructions !== undefined && typeof instructions !== \"string\") {\n throw new InvalidRequestError(\"instructions must be a string\");\n }\n if (!Array.isArray(piArgv) || !piArgv.every((token) => typeof token === \"string\")) {\n throw new InvalidRequestError(\"piArgv must be an array of strings\");\n }\n return { name, cwd, piArgv, ...(instructions === undefined ? {} : { instructions }) };\n}\n\nfunction asSendInput(params: Record<string, unknown>): SendInput {\n const delivery = params.delivery;\n if (delivery !== undefined && delivery !== \"steer\" && delivery !== \"followUp\") {\n throw new InvalidRequestError(\"delivery must be steer or followUp\");\n }\n return {\n ...asBoundInput(params),\n message: stringParam(params, \"message\"),\n ...(delivery === undefined ? {} : { delivery }),\n };\n}\n\nfunction asReceiveInput(params: Record<string, unknown>): ReceiveInput {\n const named = asBoundInput(params);\n if (params.untilIdle !== undefined && typeof params.untilIdle !== \"boolean\") {\n throw new InvalidRequestError(\"untilIdle must be a boolean\");\n }\n const start = receiveStart(params);\n if (params.untilIdle === true && start.kind !== \"live\") {\n throw new InvalidRequestError(\"untilIdle uses a live boundary and cannot include history\");\n }\n return {\n ...named,\n start,\n ...(params.untilIdle === true ? { untilIdle: true } : {}),\n };\n}\n\nfunction receiveStart(params: Record<string, unknown>): ReceiveStart {\n if (params.fromStart !== undefined && typeof params.fromStart !== \"boolean\") {\n throw new InvalidRequestError(\"fromStart must be a boolean\");\n }\n if (params.after !== undefined && typeof params.after !== \"string\") {\n throw new InvalidRequestError(\"after must be a string cursor\");\n }\n if (params.fromStart === true && params.after !== undefined) {\n throw new InvalidRequestError(\"after and fromStart cannot be combined\");\n }\n if (params.fromStart === true) return { kind: \"start\" };\n if (typeof params.after === \"string\") {\n return { kind: \"after\", cursor: params.after as ReceiveCursor };\n }\n return { kind: \"live\" };\n}\n\nfunction asNamedInput(params: Record<string, unknown>): StatusInput & DestroyInput & CompactInput {\n const expectedAgentId = params.expectedAgentId;\n if (expectedAgentId !== undefined && typeof expectedAgentId !== \"string\") {\n throw new InvalidRequestError(\"expectedAgentId must be a string\");\n }\n return {\n name: stringParam(params, \"name\"),\n ...(expectedAgentId === undefined ? {} : { expectedAgentId }),\n };\n}\n\nfunction asBoundInput(\n params: Record<string, unknown>,\n): StatusInput & DestroyInput & CompactInput & { readonly expectedAgentId: string } {\n const input = asNamedInput(params);\n if (input.expectedAgentId === undefined) {\n throw new InvalidRequestError(\"expectedAgentId is required for agent-scoped operations\");\n }\n return { ...input, expectedAgentId: input.expectedAgentId };\n}\n\nfunction stringParam(params: Record<string, unknown>, key: string): string {\n const value = params[key];\n if (typeof value !== \"string\") throw new InvalidRequestError(`${key} must be a string`);\n return value;\n}\n\nfunction requireOperation(operationId: string | undefined): string {\n if (operationId === undefined)\n throw new InvalidRequestError(\"Mutation requires operation identity\");\n return operationId;\n}\n\nfunction requirePiIdentity(identity: PiRuntimeIdentity | undefined): PiRuntimeIdentity {\n if (identity === undefined)\n throw new InvalidRequestError(\"Mutation requires Pi runtime identity\");\n return identity;\n}\n\nasync function writeStreamError(\n socket: Socket,\n requestId: string,\n error: {\n readonly code: string;\n readonly message: string;\n readonly details?: Record<string, unknown>;\n },\n timeoutMs: number,\n): Promise<void> {\n if (socket.destroyed) return;\n await writeFrame(socket, { v: PROTOCOL_VERSION, requestId, stream: \"error\", error }, timeoutMs);\n socket.end();\n}\n\nasync function writeFrame(\n socket: Socket,\n value: unknown,\n timeoutMs: number,\n maxBytes?: number,\n): Promise<void> {\n if (socket.destroyed) throw new Error(\"Control socket is closed\");\n if (maxBytes !== undefined && Buffer.byteLength(JSON.stringify(value)) + 1 > maxBytes) {\n throw new Error(\"Control protocol frame exceeds the configured limit\");\n }\n if (writeJsonLine(socket, value)) return;\n await new Promise<void>((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timer);\n socket.off(\"drain\", onDrain);\n socket.off(\"error\", onError);\n socket.off(\"close\", onClose);\n };\n const onDrain = () => {\n cleanup();\n resolve();\n };\n const onError = (error: Error) => {\n cleanup();\n reject(error);\n };\n const onClose = () => {\n cleanup();\n reject(new Error(\"Control socket closed during write\"));\n };\n const timer = setTimeout(() => {\n cleanup();\n reject(new Error(\"Control socket write timed out\"));\n }, timeoutMs);\n socket.once(\"drain\", onDrain);\n socket.once(\"error\", onError);\n socket.once(\"close\", onClose);\n });\n}\n\nfunction writeConnectionError(socket: Socket, value: unknown, error: unknown): void {\n if (socket.destroyed) return;\n const invalid = error instanceof InvalidRequestError;\n writeJsonLine(socket, {\n v: PROTOCOL_VERSION,\n requestId: requestIdFrom(value),\n ok: false,\n error: invalid\n ? { code: \"invalid_request\", message: error.message }\n : { code: \"internal_error\", message: \"pi-fleet encountered an internal error.\" },\n });\n socket.end();\n}\n\nclass InvalidRequestError extends Error {\n override readonly name = \"InvalidRequestError\";\n}\n\nfunction requestIdFrom(value: unknown): string {\n if (typeof value !== \"object\" || value === null || !(\"requestId\" in value)) return \"unknown\";\n return typeof value.requestId === \"string\" ? value.requestId : \"unknown\";\n}\n\nasync function prepareSocketPath(socketPath: string): Promise<void> {\n const ownership = await inspectControlSocketOwnership(socketPath);\n if (ownership === \"absent\") return;\n if (ownership !== \"stale\") {\n throw new RuntimeOwnershipBlockedError(\n ownership === \"responsive\"\n ? `A responsive pi-fleet runtime already owns ${socketPath}`\n : `pi-fleet control socket ownership is uncertain for ${socketPath}`,\n );\n }\n await unlink(socketPath).catch((error: NodeJS.ErrnoException) => {\n if (error.code !== \"ENOENT\") throw error;\n });\n}\n\nasync function closeServer(server: Server): Promise<void> {\n if (!server.listening) return;\n await new Promise<void>((resolveClose, rejectClose) => {\n server.close((error) => (error === undefined ? resolveClose() : rejectClose(error)));\n });\n}\n", "import { Kind } from '../type/symbols/index.mjs';\nimport { ValueErrorType } from './errors.mjs';\n/** Creates an error message using en-US as the default locale */\nexport function DefaultErrorFunction(error) {\n switch (error.errorType) {\n case ValueErrorType.ArrayContains:\n return 'Expected array to contain at least one matching value';\n case ValueErrorType.ArrayMaxContains:\n return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n case ValueErrorType.ArrayMinContains:\n return `Expected array to contain at least ${error.schema.minContains} matching values`;\n case ValueErrorType.ArrayMaxItems:\n return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n case ValueErrorType.ArrayMinItems:\n return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n case ValueErrorType.ArrayUniqueItems:\n return 'Expected array elements to be unique';\n case ValueErrorType.Array:\n return 'Expected array';\n case ValueErrorType.AsyncIterator:\n return 'Expected AsyncIterator';\n case ValueErrorType.BigIntExclusiveMaximum:\n return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.BigIntExclusiveMinimum:\n return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.BigIntMaximum:\n return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.BigIntMinimum:\n return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.BigIntMultipleOf:\n return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.BigInt:\n return 'Expected bigint';\n case ValueErrorType.Boolean:\n return 'Expected boolean';\n case ValueErrorType.DateExclusiveMinimumTimestamp:\n return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n case ValueErrorType.DateExclusiveMaximumTimestamp:\n return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n case ValueErrorType.DateMinimumTimestamp:\n return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n case ValueErrorType.DateMaximumTimestamp:\n return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n case ValueErrorType.DateMultipleOfTimestamp:\n return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n case ValueErrorType.Date:\n return 'Expected Date';\n case ValueErrorType.Function:\n return 'Expected function';\n case ValueErrorType.IntegerExclusiveMaximum:\n return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.IntegerExclusiveMinimum:\n return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.IntegerMaximum:\n return `Expected integer to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.IntegerMinimum:\n return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.IntegerMultipleOf:\n return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Integer:\n return 'Expected integer';\n case ValueErrorType.IntersectUnevaluatedProperties:\n return 'Unexpected property';\n case ValueErrorType.Intersect:\n return 'Expected all values to match';\n case ValueErrorType.Iterator:\n return 'Expected Iterator';\n case ValueErrorType.Literal:\n return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n case ValueErrorType.Never:\n return 'Never';\n case ValueErrorType.Not:\n return 'Value should not match';\n case ValueErrorType.Null:\n return 'Expected null';\n case ValueErrorType.NumberExclusiveMaximum:\n return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n case ValueErrorType.NumberExclusiveMinimum:\n return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n case ValueErrorType.NumberMaximum:\n return `Expected number to be less or equal to ${error.schema.maximum}`;\n case ValueErrorType.NumberMinimum:\n return `Expected number to be greater or equal to ${error.schema.minimum}`;\n case ValueErrorType.NumberMultipleOf:\n return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n case ValueErrorType.Number:\n return 'Expected number';\n case ValueErrorType.Object:\n return 'Expected object';\n case ValueErrorType.ObjectAdditionalProperties:\n return 'Unexpected property';\n case ValueErrorType.ObjectMaxProperties:\n return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n case ValueErrorType.ObjectMinProperties:\n return `Expected object to have at least ${error.schema.minProperties} properties`;\n case ValueErrorType.ObjectRequiredProperty:\n return 'Expected required property';\n case ValueErrorType.Promise:\n return 'Expected Promise';\n case ValueErrorType.RegExp:\n return 'Expected string to match regular expression';\n case ValueErrorType.StringFormatUnknown:\n return `Unknown format '${error.schema.format}'`;\n case ValueErrorType.StringFormat:\n return `Expected string to match '${error.schema.format}' format`;\n case ValueErrorType.StringMaxLength:\n return `Expected string length less or equal to ${error.schema.maxLength}`;\n case ValueErrorType.StringMinLength:\n return `Expected string length greater or equal to ${error.schema.minLength}`;\n case ValueErrorType.StringPattern:\n return `Expected string to match '${error.schema.pattern}'`;\n case ValueErrorType.String:\n return 'Expected string';\n case ValueErrorType.Symbol:\n return 'Expected symbol';\n case ValueErrorType.TupleLength:\n return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n case ValueErrorType.Tuple:\n return 'Expected tuple';\n case ValueErrorType.Uint8ArrayMaxByteLength:\n return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n case ValueErrorType.Uint8ArrayMinByteLength:\n return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n case ValueErrorType.Uint8Array:\n return 'Expected Uint8Array';\n case ValueErrorType.Undefined:\n return 'Expected undefined';\n case ValueErrorType.Union:\n return 'Expected union value';\n case ValueErrorType.Void:\n return 'Expected void';\n case ValueErrorType.Kind:\n return `Expected kind '${error.schema[Kind]}'`;\n default:\n return 'Unknown error type';\n }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nexport function SetErrorFunction(callback) {\n errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nexport function GetErrorFunction() {\n return errorFunction;\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { IsString } from '../guard/guard.mjs';\nexport class TypeDereferenceError extends TypeBoxError {\n constructor(schema) {\n super(`Unable to dereference schema with $id '${schema.$ref}'`);\n this.schema = schema;\n }\n}\nfunction Resolve(schema, references) {\n const target = references.find((target) => target.$id === schema.$ref);\n if (target === undefined)\n throw new TypeDereferenceError(schema);\n return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nexport function Pushref(schema, references) {\n if (!IsString(schema.$id) || references.some((target) => target.$id === schema.$id))\n return references;\n references.push(schema);\n return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nexport function Deref(schema, references) {\n // prettier-ignore\n return (schema[Kind] === 'This' || schema[Kind] === 'Ref')\n ? Resolve(schema, references)\n : schema;\n}\n", "import { IsArray, IsBoolean, IsBigInt, IsDate, IsNull, IsNumber, IsObject, IsString, IsSymbol, IsUint8Array, IsUndefined } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueHashError extends TypeBoxError {\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('18446744073709551616' /* 2 ^ 64 */)];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if (IsArray(value))\n return ArrayType(value);\n if (IsBoolean(value))\n return BooleanType(value);\n if (IsBigInt(value))\n return BigIntType(value);\n if (IsDate(value))\n return DateType(value);\n if (IsNull(value))\n return NullType(value);\n if (IsNumber(value))\n return NumberType(value);\n if (IsObject(value))\n return ObjectType(value);\n if (IsString(value))\n return StringType(value);\n if (IsSymbol(value))\n return SymbolType(value);\n if (IsUint8Array(value))\n return Uint8ArrayType(value);\n if (IsUndefined(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n", "import { TypeSystemPolicy } from '../../system/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Hash } from '../hash/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { KeyOfPattern } from '../../type/keyof/index.mjs';\nimport { ExtendsUndefinedCheck } from '../../type/extends/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../../type/registry/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Never } from '../../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCheckUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super(`Unknown type`);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n return schema[Kind] === 'Any' || schema[Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n return true;\n}\nfunction FromArgument(schema, references, value) {\n return true;\n}\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return false;\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n return false;\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n return false;\n }\n for (const element of value) {\n if (!Visit(schema.items, references, element))\n return false;\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n return false;\n }\n // contains\n if (!(IsDefined(schema.contains) || IsNumber(schema.minContains) || IsNumber(schema.maxContains))) {\n return true; // exit\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n return false;\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n return false;\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n return false;\n }\n return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n return IsAsyncIterator(value);\n}\nfunction FromBigInt(schema, references, value) {\n if (!IsBigInt(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n return false;\n }\n return true;\n}\nfunction FromBoolean(schema, references, value) {\n return IsBoolean(value);\n}\nfunction FromConstructor(schema, references, value) {\n return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n if (!IsDate(value))\n return false;\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n return false;\n }\n return true;\n}\nfunction FromFunction(schema, references, value) {\n return IsFunction(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n if (!IsInteger(value)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromIntersect(schema, references, value) {\n const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n if (schema.unevaluatedProperties === false) {\n const keyPattern = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n return check1 && check2;\n }\n else if (IsSchema(schema.unevaluatedProperties)) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n return check1 && check2;\n }\n else {\n return check1;\n }\n}\nfunction FromIterator(schema, references, value) {\n return IsIterator(value);\n}\nfunction FromLiteral(schema, references, value) {\n return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n return false;\n}\nfunction FromNot(schema, references, value) {\n return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n return IsNull(value);\n}\nfunction FromNumber(schema, references, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromObject(schema, references, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return false;\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n if (!Visit(property, references, value[knownKey])) {\n return false;\n }\n if ((ExtendsUndefinedCheck(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n return false;\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n return false;\n }\n }\n }\n if (schema.additionalProperties === false) {\n const valueKeys = Object.getOwnPropertyNames(value);\n // optimization: value is valid if schemaKey length matches the valueKey length\n if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n return true;\n }\n else {\n return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n const valueKeys = Object.getOwnPropertyNames(value);\n return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n }\n else {\n return true;\n }\n}\nfunction FromPromise(schema, references, value) {\n return IsPromise(value);\n}\nfunction FromRecord(schema, references, value) {\n if (!TypeSystemPolicy.IsRecordLike(value)) {\n return false;\n }\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n // prettier-ignore\n const check1 = Object.entries(value).every(([key, value]) => {\n return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n });\n // prettier-ignore\n const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n }) : true;\n const check3 = schema.additionalProperties === false\n ? Object.getOwnPropertyNames(value).every((key) => {\n return regex.test(key);\n })\n : true;\n return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n const regex = new RegExp(schema.source, schema.flags);\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n if (!IsString(value)) {\n return false;\n }\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n if (IsDefined(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value))\n return false;\n }\n if (IsDefined(schema.format)) {\n if (!FormatRegistry.Has(schema.format))\n return false;\n const func = FormatRegistry.Get(schema.format);\n return func(value);\n }\n return true;\n}\nfunction FromSymbol(schema, references, value) {\n return IsSymbol(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n return IsString(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value)) {\n return false;\n }\n if (schema.items === undefined && !(value.length === 0)) {\n return false;\n }\n if (!(value.length === schema.maxItems)) {\n return false;\n }\n if (!schema.items) {\n return true;\n }\n for (let i = 0; i < schema.items.length; i++) {\n if (!Visit(schema.items[i], references, value[i]))\n return false;\n }\n return true;\n}\nfunction FromUndefined(schema, references, value) {\n return IsUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n if (!IsUint8Array(value)) {\n return false;\n }\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n return false;\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n return false;\n }\n return true;\n}\nfunction FromUnknown(schema, references, value) {\n return true;\n}\nfunction FromVoid(schema, references, value) {\n return TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n if (!TypeRegistry.Has(schema[Kind]))\n return false;\n const func = TypeRegistry.Get(schema[Kind]);\n return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsDefined(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_, value);\n case 'Argument':\n return FromArgument(schema_, references_, value);\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Function':\n return FromFunction(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Iterator':\n return FromIterator(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Not':\n return FromNot(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Promise':\n return FromPromise(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'RegExp':\n return FromRegExp(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return FromUnknown(schema_, references_, value);\n case 'Void':\n return FromVoid(schema_, references_, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCheckUnknownTypeError(schema_);\n return FromKind(schema_, references_, value);\n }\n}\n/** Returns true if the value matches the given type. */\nexport function Check(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../system/index.mjs';\nimport { KeyOfPattern } from '../type/keyof/index.mjs';\nimport { TypeRegistry, FormatRegistry } from '../type/registry/index.mjs';\nimport { ExtendsUndefinedCheck } from '../type/extends/extends-undefined.mjs';\nimport { GetErrorFunction } from './function.mjs';\nimport { TypeBoxError } from '../type/error/index.mjs';\nimport { Deref } from '../value/deref/index.mjs';\nimport { Hash } from '../value/hash/index.mjs';\nimport { Check } from '../value/check/index.mjs';\nimport { Kind } from '../type/symbols/index.mjs';\nimport { Never } from '../type/never/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsArray, IsUint8Array, IsDate, IsPromise, IsFunction, IsAsyncIterator, IsIterator, IsBoolean, IsNumber, IsBigInt, IsString, IsSymbol, IsInteger, IsNull, IsUndefined } from '../value/guard/index.mjs';\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nexport var ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nexport class ValueErrorsUnknownTypeError extends TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nexport class ValueErrorIterator {\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value, errors = []) {\n return {\n type: errorType,\n schema,\n path,\n value,\n message: GetErrorFunction()({ errorType, path, schema, value, errors }),\n errors,\n };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArgument(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!IsArray(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = Hash(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : Never();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if (IsNumber(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if (IsNumber(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!IsAsyncIterator(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!IsBigInt(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!IsBoolean(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!IsDate(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!IsFunction(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromImport(schema, references, path, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n yield* Visit(target, [...references, ...definitions], path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!IsInteger(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n let hasError = false;\n for (const inner of schema.allOf) {\n for (const error of Visit(inner, references, path, value)) {\n hasError = true;\n yield error;\n }\n }\n if (hasError) {\n return yield Create(ValueErrorType.Intersect, schema, path, value);\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp(KeyOfPattern(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!IsIterator(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!IsNull(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if (ExtendsUndefinedCheck(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!IsPromise(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if (IsString(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if (IsString(schema.format)) {\n if (!FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!IsSymbol(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!IsString(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit(Deref(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!IsArray(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!IsUndefined(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n if (Check(schema, references, value))\n return;\n const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path, value)));\n yield Create(ValueErrorType.Union, schema, path, value, errors);\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!IsUint8Array(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = TypeRegistry.Get(schema[Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Argument':\n return yield* FromArgument(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Import':\n return yield* FromImport(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nexport function Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AssertError_instances, _AssertError_iterator, _AssertError_Iterator;\nimport { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nimport { TypeBoxError } from '../../type/error/error.mjs';\nimport { Check } from '../check/check.mjs';\n// ------------------------------------------------------------------\n// AssertError\n// ------------------------------------------------------------------\nexport class AssertError extends TypeBoxError {\n constructor(iterator) {\n const error = iterator.First();\n super(error === undefined ? 'Invalid Value' : error.message);\n _AssertError_instances.add(this);\n _AssertError_iterator.set(this, void 0);\n __classPrivateFieldSet(this, _AssertError_iterator, iterator, \"f\");\n this.error = error;\n }\n /** Returns an iterator for each error in this value. */\n Errors() {\n return new ValueErrorIterator(__classPrivateFieldGet(this, _AssertError_instances, \"m\", _AssertError_Iterator).call(this));\n }\n}\n_AssertError_iterator = new WeakMap(), _AssertError_instances = new WeakSet(), _AssertError_Iterator = function* _AssertError_Iterator() {\n if (this.error)\n yield this.error;\n yield* __classPrivateFieldGet(this, _AssertError_iterator, \"f\");\n};\n// ------------------------------------------------------------------\n// AssertValue\n// ------------------------------------------------------------------\nfunction AssertValue(schema, references, value) {\n if (Check(schema, references, value))\n return;\n throw new AssertError(Errors(schema, references, value));\n}\n/** Asserts a value matches the given type or throws an `AssertError` if invalid */\nexport function Assert(...args) {\n return args.length === 3 ? AssertValue(args[0], args[1], args[2]) : AssertValue(args[0], [], args[1]);\n}\n", "// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsMap, IsSet, IsObject, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Clonable\n// ------------------------------------------------------------------\nfunction FromObject(value) {\n const Acc = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n Acc[key] = Clone(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n Acc[key] = Clone(value[key]);\n }\n return Acc;\n}\nfunction FromArray(value) {\n return value.map((element) => Clone(element));\n}\nfunction FromTypedArray(value) {\n return value.slice();\n}\nfunction FromMap(value) {\n return new Map(Clone([...value.entries()]));\n}\nfunction FromSet(value) {\n return new Set(Clone([...value.entries()]));\n}\nfunction FromDate(value) {\n return new Date(value.toISOString());\n}\nfunction FromValue(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Clone\n// ------------------------------------------------------------------\n/** Returns a clone of the given value */\nexport function Clone(value) {\n if (IsArray(value))\n return FromArray(value);\n if (IsDate(value))\n return FromDate(value);\n if (IsTypedArray(value))\n return FromTypedArray(value);\n if (IsMap(value))\n return FromMap(value);\n if (IsSet(value))\n return FromSet(value);\n if (IsObject(value))\n return FromObject(value);\n if (IsValueType(value))\n return FromValue(value);\n throw new Error('ValueClone: Unable to clone value');\n}\n", "import { HasPropertyKey } from '../guard/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { TemplateLiteralGenerate, IsTemplateLiteralFinite } from '../../type/template-literal/index.mjs';\nimport { TypeRegistry } from '../../type/registry/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { IsFunction } from '../guard/guard.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCreateError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction FromDefault(value) {\n return IsFunction(value) ? value() : Clone(value);\n}\n// ------------------------------------------------------------------\n// Create\n// ------------------------------------------------------------------\nfunction FromAny(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromArgument(schema, references) {\n return {};\n}\nfunction FromArray(schema, references) {\n if (schema.uniqueItems === true && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the uniqueItems constraint requires a default value');\n }\n else if ('contains' in schema && !HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'Array with the contains constraint requires a default value');\n }\n else if ('default' in schema) {\n return FromDefault(schema.default);\n }\n else if (schema.minItems !== undefined) {\n return Array.from({ length: schema.minItems }).map((item) => {\n return Visit(schema.items, references);\n });\n }\n else {\n return [];\n }\n}\nfunction FromAsyncIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (async function* () { })();\n }\n}\nfunction FromBigInt(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return BigInt(0);\n }\n}\nfunction FromBoolean(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return false;\n }\n}\nfunction FromConstructor(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const value = Visit(schema.returns, references);\n if (typeof value === 'object' && !Array.isArray(value)) {\n return class {\n constructor() {\n for (const [key, val] of Object.entries(value)) {\n const self = this;\n self[key] = val;\n }\n }\n };\n }\n else {\n return class {\n };\n }\n }\n}\nfunction FromDate(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimumTimestamp !== undefined) {\n return new Date(schema.minimumTimestamp);\n }\n else {\n return new Date();\n }\n}\nfunction FromFunction(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return () => Visit(schema.returns, references);\n }\n}\nfunction FromImport(schema, references) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions]);\n}\nfunction FromInteger(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromIntersect(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n // --------------------------------------------------------------\n // Note: The best we can do here is attempt to instance each\n // sub type and apply through object assign. For non-object\n // sub types, we just escape the assignment and just return\n // the value. In the latter case, this is typically going to\n // be a consequence of an illogical intersection.\n // --------------------------------------------------------------\n const value = schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references);\n return typeof next === 'object' ? { ...acc, ...next } : next;\n }, {});\n if (!Check(schema, references, value))\n throw new ValueCreateError(schema, 'Intersect produced invalid value. Consider using a default value.');\n return value;\n }\n}\nfunction FromIterator(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return (function* () { })();\n }\n}\nfunction FromLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return schema.const;\n }\n}\nfunction FromNever(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Never types cannot be created. Consider using a default value.');\n }\n}\nfunction FromNot(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'Not types must have a default value');\n }\n}\nfunction FromNull(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return null;\n }\n}\nfunction FromNumber(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minimum !== undefined) {\n return schema.minimum;\n }\n else {\n return 0;\n }\n}\nfunction FromObject(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n const required = new Set(schema.required);\n const Acc = {};\n for (const [key, subschema] of Object.entries(schema.properties)) {\n if (!required.has(key))\n continue;\n Acc[key] = Visit(subschema, references);\n }\n return Acc;\n }\n}\nfunction FromPromise(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Promise.resolve(Visit(schema.item, references));\n }\n}\nfunction FromRecord(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromRef(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromRegExp(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new ValueCreateError(schema, 'RegExp types cannot be created. Consider using a default value.');\n }\n}\nfunction FromString(schema, references) {\n if (schema.pattern !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with patterns must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else if (schema.format !== undefined) {\n if (!HasPropertyKey(schema, 'default')) {\n throw new ValueCreateError(schema, 'String types with formats must specify a default value');\n }\n else {\n return FromDefault(schema.default);\n }\n }\n else {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minLength !== undefined) {\n // prettier-ignore\n return Array.from({ length: schema.minLength }).map(() => ' ').join('');\n }\n else {\n return '';\n }\n }\n}\nfunction FromSymbol(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if ('value' in schema) {\n return Symbol.for(schema.value);\n }\n else {\n return Symbol();\n }\n}\nfunction FromTemplateLiteral(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (!IsTemplateLiteralFinite(schema))\n throw new ValueCreateError(schema, 'Can only create template literals that produce a finite variants. Consider using a default value.');\n const generated = TemplateLiteralGenerate(schema);\n return generated[0];\n}\nfunction FromThis(schema, references) {\n if (recursiveDepth++ > recursiveMaxDepth)\n throw new ValueCreateError(schema, 'Cannot create recursive type as it appears possibly infinite. Consider using a default.');\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return Visit(Deref(schema, references), references);\n }\n}\nfunction FromTuple(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n if (schema.items === undefined) {\n return [];\n }\n else {\n return Array.from({ length: schema.minItems }).map((_, index) => Visit(schema.items[index], references));\n }\n}\nfunction FromUndefined(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return undefined;\n }\n}\nfunction FromUnion(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.anyOf.length === 0) {\n throw new Error('ValueCreate.Union: Cannot create Union with zero variants');\n }\n else {\n return Visit(schema.anyOf[0], references);\n }\n}\nfunction FromUint8Array(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else if (schema.minByteLength !== undefined) {\n return new Uint8Array(schema.minByteLength);\n }\n else {\n return new Uint8Array(0);\n }\n}\nfunction FromUnknown(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return {};\n }\n}\nfunction FromVoid(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n return void 0;\n }\n}\nfunction FromKind(schema, references) {\n if (HasPropertyKey(schema, 'default')) {\n return FromDefault(schema.default);\n }\n else {\n throw new Error('User defined types must specify a default value');\n }\n}\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Any':\n return FromAny(schema_, references_);\n case 'Argument':\n return FromArgument(schema_, references_);\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'BigInt':\n return FromBigInt(schema_, references_);\n case 'Boolean':\n return FromBoolean(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Date':\n return FromDate(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Integer':\n return FromInteger(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Literal':\n return FromLiteral(schema_, references_);\n case 'Never':\n return FromNever(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Null':\n return FromNull(schema_, references_);\n case 'Number':\n return FromNumber(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'RegExp':\n return FromRegExp(schema_, references_);\n case 'String':\n return FromString(schema_, references_);\n case 'Symbol':\n return FromSymbol(schema_, references_);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Undefined':\n return FromUndefined(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_);\n case 'Unknown':\n return FromUnknown(schema_, references_);\n case 'Void':\n return FromVoid(schema_, references_);\n default:\n if (!TypeRegistry.Has(schema_[Kind]))\n throw new ValueCreateError(schema_, 'Unknown type');\n return FromKind(schema_, references_);\n }\n}\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nconst recursiveMaxDepth = 512;\nlet recursiveDepth = 0;\n/** Creates a value from the given schema */\nexport function Create(...args) {\n recursiveDepth = 0;\n return args.length === 2 ? Visit(args[0], args[1]) : Visit(args[0], []);\n}\n", "import { IsObject, IsArray, IsString, IsNumber, IsNull } from '../guard/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\nimport { Create } from '../create/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueCastError extends TypeBoxError {\n constructor(schema, message) {\n super(message);\n this.schema = schema;\n }\n}\n// ------------------------------------------------------------------\n// The following logic assigns a score to a schema based on how well\n// it matches a given value. For object types, the score is calculated\n// by evaluating each property of the value against the schema's\n// properties. To avoid bias towards objects with many properties,\n// each property contributes equally to the total score. Properties\n// that exactly match literal values receive the highest possible\n// score, as literals are often used as discriminators in union types.\n// ------------------------------------------------------------------\nfunction ScoreUnion(schema, references, value) {\n if (schema[Kind] === 'Object' && typeof value === 'object' && !IsNull(value)) {\n const object = schema;\n const keys = Object.getOwnPropertyNames(value);\n const entries = Object.entries(object.properties);\n return entries.reduce((acc, [key, schema]) => {\n const literal = schema[Kind] === 'Literal' && schema.const === value[key] ? 100 : 0;\n const checks = Check(schema, references, value[key]) ? 10 : 0;\n const exists = keys.includes(key) ? 1 : 0;\n return acc + (literal + checks + exists);\n }, 0);\n }\n else if (schema[Kind] === 'Union') {\n const schemas = schema.anyOf.map((schema) => Deref(schema, references));\n const scores = schemas.map((schema) => ScoreUnion(schema, references, value));\n return Math.max(...scores);\n }\n else {\n return Check(schema, references, value) ? 1 : 0;\n }\n}\nfunction SelectUnion(union, references, value) {\n const schemas = union.anyOf.map((schema) => Deref(schema, references));\n let [select, best] = [schemas[0], 0];\n for (const schema of schemas) {\n const score = ScoreUnion(schema, references, value);\n if (score > best) {\n select = schema;\n best = score;\n }\n }\n return select;\n}\nfunction CastUnion(union, references, value) {\n if ('default' in union) {\n return typeof value === 'function' ? union.default : Clone(union.default);\n }\n else {\n const schema = SelectUnion(union, references, value);\n return Cast(schema, references, value);\n }\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction DefaultClone(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : Create(schema, references);\n}\nfunction Default(schema, references, value) {\n return Check(schema, references, value) ? value : Create(schema, references);\n}\n// ------------------------------------------------------------------\n// Cast\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n const created = IsArray(value) ? Clone(value) : Create(schema, references);\n const minimum = IsNumber(schema.minItems) && created.length < schema.minItems ? [...created, ...Array.from({ length: schema.minItems - created.length }, () => null)] : created;\n const maximum = IsNumber(schema.maxItems) && minimum.length > schema.maxItems ? minimum.slice(0, schema.maxItems) : minimum;\n const casted = maximum.map((value) => Visit(schema.items, references, value));\n if (schema.uniqueItems !== true)\n return casted;\n const unique = [...new Set(casted)];\n if (!Check(schema, references, unique))\n throw new ValueCastError(schema, 'Array cast produced invalid data due to uniqueItems constraint');\n return unique;\n}\nfunction FromConstructor(schema, references, value) {\n if (Check(schema, references, value))\n return Create(schema, references);\n const required = new Set(schema.returns.required || []);\n const result = function () { };\n for (const [key, property] of Object.entries(schema.returns.properties)) {\n if (!required.has(key) && value.prototype[key] === undefined)\n continue;\n result.prototype[key] = Visit(property, references, value.prototype[key]);\n }\n return result;\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\nfunction IntersectAssign(correct, value) {\n // trust correct on mismatch | value on non-object\n if ((IsObject(correct) && !IsObject(value)) || (!IsObject(correct) && IsObject(value)))\n return correct;\n if (!IsObject(correct) || !IsObject(value))\n return value;\n return globalThis.Object.getOwnPropertyNames(correct).reduce((result, key) => {\n const property = key in value ? IntersectAssign(correct[key], value[key]) : correct[key];\n return { ...result, [key]: property };\n }, {});\n}\nfunction FromIntersect(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n const correct = Create(schema, references);\n const assigned = IntersectAssign(correct, value);\n return Check(schema, references, assigned) ? assigned : correct;\n}\nfunction FromNever(schema, references, value) {\n throw new ValueCastError(schema, 'Never types cannot be cast');\n}\nfunction FromObject(schema, references, value) {\n if (Check(schema, references, value))\n return value;\n if (value === null || typeof value !== 'object')\n return Create(schema, references);\n const required = new Set(schema.required || []);\n const result = {};\n for (const [key, property] of Object.entries(schema.properties)) {\n if (!required.has(key) && value[key] === undefined)\n continue;\n result[key] = Visit(property, references, value[key]);\n }\n // additional schema properties\n if (typeof schema.additionalProperties === 'object') {\n const propertyNames = Object.getOwnPropertyNames(schema.properties);\n for (const propertyName of Object.getOwnPropertyNames(value)) {\n if (propertyNames.includes(propertyName))\n continue;\n result[propertyName] = Visit(schema.additionalProperties, references, value[propertyName]);\n }\n }\n return result;\n}\nfunction FromRecord(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (value === null || typeof value !== 'object' || Array.isArray(value) || value instanceof Date)\n return Create(schema, references);\n const subschemaPropertyName = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const subschema = schema.patternProperties[subschemaPropertyName];\n const result = {};\n for (const [propKey, propValue] of Object.entries(value)) {\n result[propKey] = Visit(subschema, references, propValue);\n }\n return result;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (Check(schema, references, value))\n return Clone(value);\n if (!IsArray(value))\n return Create(schema, references);\n if (schema.items === undefined)\n return [];\n return schema.items.map((schema, index) => Visit(schema, references, value[index]));\n}\nfunction FromUnion(schema, references, value) {\n return Check(schema, references, value) ? Clone(value) : CastUnion(schema, references, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema[Kind]) {\n // --------------------------------------------------------------\n // Structural\n // --------------------------------------------------------------\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n // --------------------------------------------------------------\n // DefaultClone\n // --------------------------------------------------------------\n case 'Date':\n case 'Symbol':\n case 'Uint8Array':\n return DefaultClone(schema, references, value);\n // --------------------------------------------------------------\n // Default\n // --------------------------------------------------------------\n default:\n return Default(schema_, references_, value);\n }\n}\n/** Casts a value into a given type. The return value will retain as much information of the original value as possible. */\nexport function Cast(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { KeyOfPropertyKeys } from '../../type/keyof/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { HasPropertyKey, IsString, IsObject, IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// IsCheckable\n// ------------------------------------------------------------------\nfunction IsCheckable(schema) {\n return IsKind(schema) && schema[Kind] !== 'Unsafe';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n if (!IsArray(value))\n return value;\n return value.map((value) => Visit(schema.items, references, value));\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const unevaluatedProperties = schema.unevaluatedProperties;\n const intersections = schema.allOf.map((schema) => Visit(schema, references, Clone(value)));\n const composite = intersections.reduce((acc, value) => (IsObject(value) ? { ...acc, ...value } : value), {});\n if (!IsObject(value) || !IsObject(composite) || !IsKind(unevaluatedProperties))\n return composite;\n const knownkeys = KeyOfPropertyKeys(schema);\n for (const key of Object.getOwnPropertyNames(value)) {\n if (knownkeys.includes(key))\n continue;\n if (Check(unevaluatedProperties, references, value[key])) {\n composite[key] = Visit(unevaluatedProperties, references, value[key]);\n }\n }\n return composite;\n}\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value; // Check IsArray for AllowArrayObject configuration\n const additionalProperties = schema.additionalProperties;\n for (const key of Object.getOwnPropertyNames(value)) {\n if (HasPropertyKey(schema.properties, key)) {\n value[key] = Visit(schema.properties[key], references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n if (!IsObject(value))\n return value;\n const additionalProperties = schema.additionalProperties;\n const propertyKeys = Object.getOwnPropertyNames(value);\n const [propertyKey, propertySchema] = Object.entries(schema.patternProperties)[0];\n const propertyKeyTest = new RegExp(propertyKey);\n for (const key of propertyKeys) {\n if (propertyKeyTest.test(key)) {\n value[key] = Visit(propertySchema, references, value[key]);\n continue;\n }\n if (IsKind(additionalProperties) && Check(additionalProperties, references, value[key])) {\n value[key] = Visit(additionalProperties, references, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!IsArray(value))\n return value;\n if (IsUndefined(schema.items))\n return [];\n const length = Math.min(value.length, schema.items.length);\n for (let i = 0; i < length; i++) {\n value[i] = Visit(schema.items[i], references, value[i]);\n }\n // prettier-ignore\n return value.length > length\n ? value.slice(0, length)\n : value;\n}\nfunction FromUnion(schema, references, value) {\n for (const inner of schema.anyOf) {\n if (IsCheckable(inner) && Check(inner, references, value)) {\n return Visit(inner, references, value);\n }\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = IsString(schema.$id) ? Pushref(schema, references) : references;\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return value;\n }\n}\n/** `[Mutable]` Removes excess properties from a value and returns the result. This function does not check the value and returns an unknown type. You should Check the result before use. Clean is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Clean(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { Clone } from '../clone/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsObject, IsDate, IsUndefined, IsString, IsNumber, IsBoolean, IsBigInt, IsSymbol, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Conversions\n// ------------------------------------------------------------------\nfunction IsStringNumeric(value) {\n return IsString(value) && !isNaN(value) && !isNaN(parseFloat(value));\n}\nfunction IsValueToString(value) {\n return IsBigInt(value) || IsBoolean(value) || IsNumber(value);\n}\nfunction IsValueTrue(value) {\n return value === true || (IsNumber(value) && value === 1) || (IsBigInt(value) && value === BigInt('1')) || (IsString(value) && (value.toLowerCase() === 'true' || value === '1'));\n}\nfunction IsValueFalse(value) {\n return value === false || (IsNumber(value) && (value === 0 || Object.is(value, -0))) || (IsBigInt(value) && value === BigInt('0')) || (IsString(value) && (value.toLowerCase() === 'false' || value === '0' || value === '-0'));\n}\nfunction IsTimeStringWithTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateTimeStringWithTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i.test(value);\n}\nfunction IsDateTimeStringWithoutTimeZone(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)?$/i.test(value);\n}\nfunction IsDateString(value) {\n return IsString(value) && /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/i.test(value);\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction TryConvertLiteralString(value, target) {\n const conversion = TryConvertString(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralNumber(value, target) {\n const conversion = TryConvertNumber(value);\n return conversion === target ? conversion : value;\n}\nfunction TryConvertLiteralBoolean(value, target) {\n const conversion = TryConvertBoolean(value);\n return conversion === target ? conversion : value;\n}\n// prettier-ignore\nfunction TryConvertLiteral(schema, value) {\n return (IsString(schema.const) ? TryConvertLiteralString(value, schema.const) :\n IsNumber(schema.const) ? TryConvertLiteralNumber(value, schema.const) :\n IsBoolean(schema.const) ? TryConvertLiteralBoolean(value, schema.const) :\n value);\n}\nfunction TryConvertBoolean(value) {\n return IsValueTrue(value) ? true : IsValueFalse(value) ? false : value;\n}\nfunction TryConvertBigInt(value) {\n const truncateInteger = (value) => value.split('.')[0];\n return IsStringNumeric(value) ? BigInt(truncateInteger(value)) : IsNumber(value) ? BigInt(Math.trunc(value)) : IsValueFalse(value) ? BigInt(0) : IsValueTrue(value) ? BigInt(1) : value;\n}\nfunction TryConvertString(value) {\n return IsSymbol(value) && value.description !== undefined ? value.description.toString() : IsValueToString(value) ? value.toString() : value;\n}\nfunction TryConvertNumber(value) {\n return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertInteger(value) {\n return IsStringNumeric(value) ? parseInt(value) : IsNumber(value) ? Math.trunc(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;\n}\nfunction TryConvertNull(value) {\n return IsString(value) && value.toLowerCase() === 'null' ? null : value;\n}\nfunction TryConvertUndefined(value) {\n return IsString(value) && value === 'undefined' ? undefined : value;\n}\n// ------------------------------------------------------------------\n// note: this function may return an invalid dates for the regex\n// tests above. Invalid dates will however be checked during the\n// casting function and will return a epoch date if invalid.\n// Consider better string parsing for the iso dates in future\n// revisions.\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction TryConvertDate(value) {\n return (IsDate(value) ? value :\n IsNumber(value) ? new Date(value) :\n IsValueTrue(value) ? new Date(1) :\n IsValueFalse(value) ? new Date(0) :\n IsStringNumeric(value) ? new Date(parseInt(value)) :\n IsTimeStringWithoutTimeZone(value) ? new Date(`1970-01-01T${value}.000Z`) :\n IsTimeStringWithTimeZone(value) ? new Date(`1970-01-01T${value}`) :\n IsDateTimeStringWithoutTimeZone(value) ? new Date(`${value}.000Z`) :\n IsDateTimeStringWithTimeZone(value) ? new Date(value) :\n IsDateString(value) ? new Date(`${value}T00:00:00.000Z`) :\n value);\n}\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nfunction Default(value) {\n return value;\n}\n// ------------------------------------------------------------------\n// Convert\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n const elements = IsArray(value) ? value : [value];\n return elements.map((element) => Visit(schema.items, references, element));\n}\nfunction FromBigInt(schema, references, value) {\n return TryConvertBigInt(value);\n}\nfunction FromBoolean(schema, references, value) {\n return TryConvertBoolean(value);\n}\nfunction FromDate(schema, references, value) {\n return TryConvertDate(value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromInteger(schema, references, value) {\n return TryConvertInteger(value);\n}\nfunction FromIntersect(schema, references, value) {\n return schema.allOf.reduce((value, schema) => Visit(schema, references, value), value);\n}\nfunction FromLiteral(schema, references, value) {\n return TryConvertLiteral(schema, value);\n}\nfunction FromNull(schema, references, value) {\n return TryConvertNull(value);\n}\nfunction FromNumber(schema, references, value) {\n return TryConvertNumber(value);\n}\n// prettier-ignore\nfunction FromObject(schema, references, value) {\n if (!IsObject(value) || IsArray(value))\n return value;\n for (const propertyKey of Object.getOwnPropertyNames(schema.properties)) {\n if (!HasPropertyKey(value, propertyKey))\n continue;\n value[propertyKey] = Visit(schema.properties[propertyKey], references, value[propertyKey]);\n }\n return value;\n}\nfunction FromRecord(schema, references, value) {\n const isConvertable = IsObject(value) && !IsArray(value);\n if (!isConvertable)\n return value;\n const propertyKey = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[propertyKey];\n for (const [propKey, propValue] of Object.entries(value)) {\n value[propKey] = Visit(property, references, propValue);\n }\n return value;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromString(schema, references, value) {\n return TryConvertString(value);\n}\nfunction FromSymbol(schema, references, value) {\n return IsString(value) || IsNumber(value) ? Symbol(value) : value;\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, value) {\n const isConvertable = IsArray(value) && !IsUndefined(schema.items);\n if (!isConvertable)\n return value;\n return value.map((value, index) => {\n return (index < schema.items.length)\n ? Visit(schema.items[index], references, value)\n : value;\n });\n}\nfunction FromUndefined(schema, references, value) {\n return TryConvertUndefined(value);\n}\nfunction FromUnion(schema, references, value) {\n // Check if original value already matches one of the union variants\n for (const subschema of schema.anyOf) {\n if (Check(subschema, references, value)) {\n return value;\n }\n }\n // Attempt conversion for each variant\n for (const subschema of schema.anyOf) {\n const converted = Visit(subschema, references, Clone(value));\n if (!Check(subschema, references, converted))\n continue;\n return converted;\n }\n return value;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return Default(value);\n }\n}\n/** `[Mutable]` Converts any type mismatched values to their target type if a reasonable conversion is possible. */\n// prettier-ignore\nexport function Convert(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// thrown externally\n// prettier-ignore\nexport class TransformDecodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`Unable to decode value as it does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformDecodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(error instanceof Error ? error.message : 'Unknown error');\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Decode(value) : value;\n }\n catch (error) {\n throw new TransformDecodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n return (IsArray(value))\n ? Default(schema, path, value.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value)))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n if (!IsObject(value) || IsValueType(value))\n return Default(schema, path, value);\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...value };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(unevaluatedProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Visit(target, [...references, ...additional], path, value);\n return Default(schema, path, result);\n}\nfunction FromNot(schema, references, path, value) {\n return Default(schema, path, Visit(schema.not, references, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...value };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // decode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n if (!IsObject(value))\n return Default(schema, path, value);\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...value };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return Default(schema, path, knownProperties);\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const unknownProperties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n unknownProperties[key] = Default(additionalProperties, `${path}/${key}`, unknownProperties[key]);\n }\n return Default(schema, path, unknownProperties);\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n return Default(schema, path, Visit(target, references, path, value));\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n return (IsArray(value) && IsArray(schema.items))\n ? Default(schema, path, schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value[index])))\n : Default(schema, path, value);\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n // note: ensure interior is decoded first\n const decoded = Visit(subschema, references, path, value);\n return Default(schema, path, decoded);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'Symbol':\n return Default(schema_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Decodes the value and returns the result. This function requires that\n * the caller `Check` the value before use. Passing unchecked values may result in\n * undefined behavior. Refer to the `Value.Decode()` for implementation details.\n */\nexport function TransformDecode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { TypeSystemPolicy } from '../../system/policy.mjs';\nimport { Kind, TransformKind } from '../../type/symbols/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { KeyOfPropertyKeys, KeyOfPropertyEntries } from '../../type/keyof/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { HasPropertyKey, IsObject, IsArray, IsValueType, IsUndefined as IsUndefinedValue } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema, IsUndefined } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\n// prettier-ignore\nexport class TransformEncodeCheckError extends TypeBoxError {\n constructor(schema, value, error) {\n super(`The encoded value does not match the expected schema`);\n this.schema = schema;\n this.value = value;\n this.error = error;\n }\n}\n// prettier-ignore\nexport class TransformEncodeError extends TypeBoxError {\n constructor(schema, path, value, error) {\n super(`${error instanceof Error ? error.message : 'Unknown error'}`);\n this.schema = schema;\n this.path = path;\n this.value = value;\n this.error = error;\n }\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Default(schema, path, value) {\n try {\n return IsTransform(schema) ? schema[TransformKind].Encode(value) : value;\n }\n catch (error) {\n throw new TransformEncodeError(schema, path, value, error);\n }\n}\n// prettier-ignore\nfunction FromArray(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n return IsArray(defaulted)\n ? defaulted.map((value, index) => Visit(schema.items, references, `${path}/${index}`, value))\n : defaulted;\n}\n// prettier-ignore\nfunction FromImport(schema, references, path, value) {\n const additional = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n const result = Default(schema, path, value);\n return Visit(target, [...references, ...additional], path, result);\n}\n// prettier-ignore\nfunction FromIntersect(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value) || IsValueType(value))\n return defaulted;\n const knownEntries = KeyOfPropertyEntries(schema);\n const knownKeys = knownEntries.map(entry => entry[0]);\n const knownProperties = { ...defaulted };\n for (const [knownKey, knownSchema] of knownEntries)\n if (knownKey in knownProperties) {\n knownProperties[knownKey] = Visit(knownSchema, references, `${path}/${knownKey}`, knownProperties[knownKey]);\n }\n if (!IsTransform(schema.unevaluatedProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const unevaluatedProperties = schema.unevaluatedProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(unevaluatedProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromNot(schema, references, path, value) {\n return Default(schema.not, path, Default(schema, path, value));\n}\n// prettier-ignore\nfunction FromObject(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(defaulted))\n return defaulted;\n const knownKeys = KeyOfPropertyKeys(schema);\n const knownProperties = { ...defaulted };\n for (const key of knownKeys) {\n if (!HasPropertyKey(knownProperties, key))\n continue;\n // if the property value is undefined, but the target is not, nor does it satisfy exact optional \n // property policy, then we need to continue. This is a special case for optional property handling \n // where a transforms wrapped in a optional modifiers should not run.\n if (IsUndefinedValue(knownProperties[key]) && (!IsUndefined(schema.properties[key]) ||\n TypeSystemPolicy.IsExactOptionalProperty(knownProperties, key)))\n continue;\n // encode property\n knownProperties[key] = Visit(schema.properties[key], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.includes(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRecord(schema, references, path, value) {\n const defaulted = Default(schema, path, value);\n if (!IsObject(value))\n return defaulted;\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const knownKeys = new RegExp(pattern);\n const knownProperties = { ...defaulted };\n for (const key of Object.getOwnPropertyNames(value))\n if (knownKeys.test(key)) {\n knownProperties[key] = Visit(schema.patternProperties[pattern], references, `${path}/${key}`, knownProperties[key]);\n }\n if (!IsSchema(schema.additionalProperties)) {\n return knownProperties;\n }\n const unknownKeys = Object.getOwnPropertyNames(knownProperties);\n const additionalProperties = schema.additionalProperties;\n const properties = { ...knownProperties };\n for (const key of unknownKeys)\n if (!knownKeys.test(key)) {\n properties[key] = Default(additionalProperties, `${path}/${key}`, properties[key]);\n }\n return properties;\n}\n// prettier-ignore\nfunction FromRef(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromThis(schema, references, path, value) {\n const target = Deref(schema, references);\n const resolved = Visit(target, references, path, value);\n return Default(schema, path, resolved);\n}\n// prettier-ignore\nfunction FromTuple(schema, references, path, value) {\n const value1 = Default(schema, path, value);\n return IsArray(schema.items) ? schema.items.map((schema, index) => Visit(schema, references, `${path}/${index}`, value1[index])) : [];\n}\n// prettier-ignore\nfunction FromUnion(schema, references, path, value) {\n // test value against union variants\n for (const subschema of schema.anyOf) {\n if (!Check(subschema, references, value))\n continue;\n const value1 = Visit(subschema, references, path, value);\n return Default(schema, path, value1);\n }\n // test transformed value against union variants\n for (const subschema of schema.anyOf) {\n const value1 = Visit(subschema, references, path, value);\n if (!Check(schema, references, value1))\n continue;\n return Default(schema, path, value1);\n }\n return Default(schema, path, value);\n}\n// prettier-ignore\nfunction Visit(schema, references, path, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, path, value);\n case 'Import':\n return FromImport(schema_, references_, path, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, path, value);\n case 'Not':\n return FromNot(schema_, references_, path, value);\n case 'Object':\n return FromObject(schema_, references_, path, value);\n case 'Record':\n return FromRecord(schema_, references_, path, value);\n case 'Ref':\n return FromRef(schema_, references_, path, value);\n case 'This':\n return FromThis(schema_, references_, path, value);\n case 'Tuple':\n return FromTuple(schema_, references_, path, value);\n case 'Union':\n return FromUnion(schema_, references_, path, value);\n default:\n return Default(schema_, path, value);\n }\n}\n/**\n * `[Internal]` Encodes the value and returns the result. This function expects the\n * caller to pass a statically checked value. This function does not check the encoded\n * result, meaning the result should be passed to `Check` before use. Refer to the\n * `Value.Encode()` function for implementation details.\n */\nexport function TransformEncode(schema, references, value) {\n return Visit(schema, references, '', value);\n}\n", "import { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// KindGuard\n// ------------------------------------------------------------------\nimport { IsTransform, IsSchema } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsUndefined } from '../guard/index.mjs';\n// prettier-ignore\nfunction FromArray(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n return IsTransform(schema) || Visit(schema.returns, references) || schema.parameters.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n return IsTransform(schema) || IsTransform(schema.unevaluatedProperties) || schema.allOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction FromImport(schema, references) {\n const additional = globalThis.Object.getOwnPropertyNames(schema.$defs).reduce((result, key) => [...result, schema.$defs[key]], []);\n const target = schema.$defs[schema.$ref];\n return IsTransform(schema) || Visit(target, [...additional, ...references]);\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n return IsTransform(schema) || Visit(schema.items, references);\n}\n// prettier-ignore\nfunction FromNot(schema, references) {\n return IsTransform(schema) || Visit(schema.not, references);\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n return (IsTransform(schema) ||\n Object.values(schema.properties).some((schema) => Visit(schema, references)) ||\n (IsSchema(schema.additionalProperties) && Visit(schema.additionalProperties, references)));\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n return IsTransform(schema) || Visit(schema.item, references);\n}\n// prettier-ignore\nfunction FromRecord(schema, references) {\n const pattern = Object.getOwnPropertyNames(schema.patternProperties)[0];\n const property = schema.patternProperties[pattern];\n return IsTransform(schema) || Visit(property, references) || (IsSchema(schema.additionalProperties) && IsTransform(schema.additionalProperties));\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromThis(schema, references) {\n if (IsTransform(schema))\n return true;\n return Visit(Deref(schema, references), references);\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n return IsTransform(schema) || (!IsUndefined(schema.items) && schema.items.some((schema) => Visit(schema, references)));\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n return IsTransform(schema) || schema.anyOf.some((schema) => Visit(schema, references));\n}\n// prettier-ignore\nfunction Visit(schema, references) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n if (schema.$id && visited.has(schema.$id))\n return false;\n if (schema.$id)\n visited.add(schema.$id);\n switch (schema[Kind]) {\n case 'Array':\n return FromArray(schema_, references_);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_);\n case 'Constructor':\n return FromConstructor(schema_, references_);\n case 'Function':\n return FromFunction(schema_, references_);\n case 'Import':\n return FromImport(schema_, references_);\n case 'Intersect':\n return FromIntersect(schema_, references_);\n case 'Iterator':\n return FromIterator(schema_, references_);\n case 'Not':\n return FromNot(schema_, references_);\n case 'Object':\n return FromObject(schema_, references_);\n case 'Promise':\n return FromPromise(schema_, references_);\n case 'Record':\n return FromRecord(schema_, references_);\n case 'Ref':\n return FromRef(schema_, references_);\n case 'This':\n return FromThis(schema_, references_);\n case 'Tuple':\n return FromTuple(schema_, references_);\n case 'Union':\n return FromUnion(schema_, references_);\n default:\n return IsTransform(schema);\n }\n}\nconst visited = new Set();\n/** Returns true if this schema contains a transform codec */\nexport function HasTransform(schema, references) {\n visited.clear();\n return Visit(schema, references);\n}\n", "import { HasTransform, TransformDecode, TransformDecodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Decodes a value or throws if error */\nexport function Decode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n if (!Check(schema, references, value))\n throw new TransformDecodeCheckError(schema, value, Errors(schema, references, value).First());\n return HasTransform(schema, references) ? TransformDecode(schema, references, value) : value;\n}\n", "import { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Deref, Pushref } from '../deref/index.mjs';\nimport { Kind } from '../../type/symbols/index.mjs';\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nimport { IsArray, IsDate, IsFunction, IsObject, IsUndefined, HasPropertyKey } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nimport { IsKind } from '../../type/guard/kind.mjs';\n// ------------------------------------------------------------------\n// ValueOrDefault\n// ------------------------------------------------------------------\nfunction ValueOrDefault(schema, value) {\n const defaultValue = HasPropertyKey(schema, 'default') ? schema.default : undefined;\n const clone = IsFunction(defaultValue) ? defaultValue() : Clone(defaultValue);\n return IsUndefined(value) ? clone : IsObject(value) && IsObject(clone) ? Object.assign(clone, value) : value;\n}\n// ------------------------------------------------------------------\n// HasDefaultProperty\n// ------------------------------------------------------------------\nfunction HasDefaultProperty(schema) {\n return IsKind(schema) && 'default' in schema;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromArray(schema, references, value) {\n // if the value is an array, we attempt to initialize it's elements\n if (IsArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = Visit(schema.items, references, value[i]);\n }\n return value;\n }\n // ... otherwise use default initialization\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted))\n return defaulted;\n for (let i = 0; i < defaulted.length; i++) {\n defaulted[i] = Visit(schema.items, references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromDate(schema, references, value) {\n // special case intercept for dates\n return IsDate(value) ? value : ValueOrDefault(schema, value);\n}\nfunction FromImport(schema, references, value) {\n const definitions = globalThis.Object.values(schema.$defs);\n const target = schema.$defs[schema.$ref];\n return Visit(target, [...references, ...definitions], value);\n}\nfunction FromIntersect(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n return schema.allOf.reduce((acc, schema) => {\n const next = Visit(schema, references, defaulted);\n return IsObject(next) ? { ...acc, ...next } : next;\n }, {});\n}\nfunction FromObject(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n // return defaulted\n if (!IsObject(defaulted))\n return defaulted;\n const knownPropertyKeys = Object.getOwnPropertyNames(schema.properties);\n // properties\n for (const key of knownPropertyKeys) {\n // note: we need to traverse into the object and test if the return value\n // yielded a non undefined result. Here we interpret an undefined result as\n // a non assignable property and continue.\n const propertyValue = Visit(schema.properties[key], references, defaulted[key]);\n if (IsUndefined(propertyValue))\n continue;\n defaulted[key] = Visit(schema.properties[key], references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(schema.additionalProperties))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKeys.includes(key))\n continue;\n defaulted[key] = Visit(schema.additionalProperties, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRecord(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsObject(defaulted))\n return defaulted;\n const additionalPropertiesSchema = schema.additionalProperties;\n const [propertyKeyPattern, propertySchema] = Object.entries(schema.patternProperties)[0];\n const knownPropertyKey = new RegExp(propertyKeyPattern);\n // properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (!(knownPropertyKey.test(key) && HasDefaultProperty(propertySchema)))\n continue;\n defaulted[key] = Visit(propertySchema, references, defaulted[key]);\n }\n // return if not additional properties\n if (!HasDefaultProperty(additionalPropertiesSchema))\n return defaulted;\n // additional properties\n for (const key of Object.getOwnPropertyNames(defaulted)) {\n if (knownPropertyKey.test(key))\n continue;\n defaulted[key] = Visit(additionalPropertiesSchema, references, defaulted[key]);\n }\n return defaulted;\n}\nfunction FromRef(schema, references, value) {\n return Visit(Deref(schema, references), references, ValueOrDefault(schema, value));\n}\nfunction FromThis(schema, references, value) {\n return Visit(Deref(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n if (!IsArray(defaulted) || IsUndefined(schema.items))\n return defaulted;\n const [items, max] = [schema.items, Math.max(schema.items.length, defaulted.length)];\n for (let i = 0; i < max; i++) {\n if (i < items.length)\n defaulted[i] = Visit(items[i], references, defaulted[i]);\n }\n return defaulted;\n}\nfunction FromUnion(schema, references, value) {\n const defaulted = ValueOrDefault(schema, value);\n for (const inner of schema.anyOf) {\n const result = Visit(inner, references, Clone(defaulted));\n if (Check(inner, references, result)) {\n return result;\n }\n }\n return defaulted;\n}\nfunction Visit(schema, references, value) {\n const references_ = Pushref(schema, references);\n const schema_ = schema;\n switch (schema_[Kind]) {\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Import':\n return FromImport(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n default:\n return ValueOrDefault(schema_, value);\n }\n}\n/** `[Mutable]` Generates missing properties on a value using default schema annotations if available. This function does not check the value and returns an unknown type. You should Check the result before use. Default is a mutable operation. To avoid mutation, Clone the value first. */\nexport function Default(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValuePointerRootSetError extends TypeBoxError {\n constructor(value, path, update) {\n super('Cannot set root value');\n this.value = value;\n this.path = path;\n this.update = update;\n }\n}\nexport class ValuePointerRootDeleteError extends TypeBoxError {\n constructor(value, path) {\n super('Cannot delete root value');\n this.value = value;\n this.path = path;\n }\n}\n// ------------------------------------------------------------------\n// ValuePointer\n// ------------------------------------------------------------------\n/** Provides functionality to update values through RFC6901 string pointers */\n// prettier-ignore\nfunction Escape(component) {\n return component.indexOf('~') === -1 ? component : component.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n/** Formats the given pointer into navigable key components */\n// prettier-ignore\nexport function* Format(pointer) {\n if (pointer === '')\n return;\n let [start, end] = [0, 0];\n for (let i = 0; i < pointer.length; i++) {\n const char = pointer.charAt(i);\n if (char === '/') {\n if (i === 0) {\n start = i + 1;\n }\n else {\n end = i;\n yield Escape(pointer.slice(start, end));\n start = i + 1;\n }\n }\n else {\n end = i;\n }\n }\n yield Escape(pointer.slice(start));\n}\n/** Sets the value at the given pointer. If the value at the pointer does not exist it is created */\n// prettier-ignore\nexport function Set(value, pointer, update) {\n if (pointer === '')\n throw new ValuePointerRootSetError(value, pointer, update);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n next[component] = {};\n owner = next;\n next = next[component];\n key = component;\n }\n owner[key] = update;\n}\n/** Deletes a value at the given pointer */\n// prettier-ignore\nexport function Delete(value, pointer) {\n if (pointer === '')\n throw new ValuePointerRootDeleteError(value, pointer);\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined || next[component] === null)\n return;\n owner = next;\n next = next[component];\n key = component;\n }\n if (Array.isArray(owner)) {\n const index = parseInt(key);\n owner.splice(index, 1);\n }\n else {\n delete owner[key];\n }\n}\n/** Returns true if a value exists at the given pointer */\n// prettier-ignore\nexport function Has(value, pointer) {\n if (pointer === '')\n return true;\n let [owner, next, key] = [null, value, ''];\n for (const component of Format(pointer)) {\n if (next[component] === undefined)\n return false;\n owner = next;\n next = next[component];\n key = component;\n }\n return Object.getOwnPropertyNames(owner).includes(key);\n}\n/** Gets the value at the given pointer */\n// prettier-ignore\nexport function Get(value, pointer) {\n if (pointer === '')\n return value;\n let current = value;\n for (const component of Format(pointer)) {\n if (current[component] === undefined)\n return undefined;\n current = current[component];\n }\n return current;\n}\n", "import { IsObject, IsDate, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Equality Checks\n// ------------------------------------------------------------------\nfunction ObjectType(left, right) {\n if (!IsObject(right))\n return false;\n const leftKeys = [...Object.keys(left), ...Object.getOwnPropertySymbols(left)];\n const rightKeys = [...Object.keys(right), ...Object.getOwnPropertySymbols(right)];\n if (leftKeys.length !== rightKeys.length)\n return false;\n return leftKeys.every((key) => Equal(left[key], right[key]));\n}\nfunction DateType(left, right) {\n return IsDate(right) && left.getTime() === right.getTime();\n}\nfunction ArrayType(left, right) {\n if (!IsArray(right) || left.length !== right.length)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction TypedArrayType(left, right) {\n if (!IsTypedArray(right) || left.length !== right.length || Object.getPrototypeOf(left).constructor.name !== Object.getPrototypeOf(right).constructor.name)\n return false;\n return left.every((value, index) => Equal(value, right[index]));\n}\nfunction ValueType(left, right) {\n return left === right;\n}\n// ------------------------------------------------------------------\n// Equal\n// ------------------------------------------------------------------\n/** Returns true if the left value deep-equals the right */\nexport function Equal(left, right) {\n if (IsDate(left))\n return DateType(left, right);\n if (IsTypedArray(left))\n return TypedArrayType(left, right);\n if (IsArray(left))\n return ArrayType(left, right);\n if (IsObject(left))\n return ObjectType(left, right);\n if (IsValueType(left))\n return ValueType(left, right);\n throw new Error('ValueEquals: Unable to compare value');\n}\n", "import { HasPropertyKey, IsStandardObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Equal } from '../equal/equal.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\nimport { Literal } from '../../type/literal/index.mjs';\nimport { Object as _Object_ } from '../../type/object/index.mjs';\nimport { String } from '../../type/string/index.mjs';\nimport { Unknown } from '../../type/unknown/index.mjs';\nimport { Union } from '../../type/union/index.mjs';\nexport const Insert = _Object_({\n type: Literal('insert'),\n path: String(),\n value: Unknown(),\n});\nexport const Update = _Object_({\n type: Literal('update'),\n path: String(),\n value: Unknown(),\n});\nexport const Delete = _Object_({\n type: Literal('delete'),\n path: String(),\n});\nexport const Edit = Union([Insert, Update, Delete]);\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueDiffError extends TypeBoxError {\n constructor(value, message) {\n super(message);\n this.value = value;\n }\n}\n// ------------------------------------------------------------------\n// Command Factory\n// ------------------------------------------------------------------\nfunction CreateUpdate(path, value) {\n return { type: 'update', path, value };\n}\nfunction CreateInsert(path, value) {\n return { type: 'insert', path, value };\n}\nfunction CreateDelete(path) {\n return { type: 'delete', path };\n}\n// ------------------------------------------------------------------\n// AssertDiffable\n// ------------------------------------------------------------------\nfunction AssertDiffable(value) {\n if (globalThis.Object.getOwnPropertySymbols(value).length > 0)\n throw new ValueDiffError(value, 'Cannot diff objects with symbols');\n}\n// ------------------------------------------------------------------\n// Diffing Generators\n// ------------------------------------------------------------------\nfunction* ObjectType(path, current, next) {\n AssertDiffable(current);\n AssertDiffable(next);\n if (!IsStandardObject(next))\n return yield CreateUpdate(path, next);\n const currentKeys = globalThis.Object.getOwnPropertyNames(current);\n const nextKeys = globalThis.Object.getOwnPropertyNames(next);\n // ----------------------------------------------------------------\n // inserts\n // ----------------------------------------------------------------\n for (const key of nextKeys) {\n if (HasPropertyKey(current, key))\n continue;\n yield CreateInsert(`${path}/${key}`, next[key]);\n }\n // ----------------------------------------------------------------\n // updates\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (!HasPropertyKey(next, key))\n continue;\n if (Equal(current, next))\n continue;\n yield* Visit(`${path}/${key}`, current[key], next[key]);\n }\n // ----------------------------------------------------------------\n // deletes\n // ----------------------------------------------------------------\n for (const key of currentKeys) {\n if (HasPropertyKey(next, key))\n continue;\n yield CreateDelete(`${path}/${key}`);\n }\n}\nfunction* ArrayType(path, current, next) {\n if (!IsArray(next))\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n for (let i = 0; i < next.length; i++) {\n if (i < current.length)\n continue;\n yield CreateInsert(`${path}/${i}`, next[i]);\n }\n for (let i = current.length - 1; i >= 0; i--) {\n if (i < next.length)\n continue;\n yield CreateDelete(`${path}/${i}`);\n }\n}\nfunction* TypedArrayType(path, current, next) {\n if (!IsTypedArray(next) || current.length !== next.length || globalThis.Object.getPrototypeOf(current).constructor.name !== globalThis.Object.getPrototypeOf(next).constructor.name)\n return yield CreateUpdate(path, next);\n for (let i = 0; i < Math.min(current.length, next.length); i++) {\n yield* Visit(`${path}/${i}`, current[i], next[i]);\n }\n}\nfunction* ValueType(path, current, next) {\n if (current === next)\n return;\n yield CreateUpdate(path, next);\n}\nfunction* Visit(path, current, next) {\n if (IsStandardObject(current))\n return yield* ObjectType(path, current, next);\n if (IsArray(current))\n return yield* ArrayType(path, current, next);\n if (IsTypedArray(current))\n return yield* TypedArrayType(path, current, next);\n if (IsValueType(current))\n return yield* ValueType(path, current, next);\n throw new ValueDiffError(current, 'Unable to diff value');\n}\n// ------------------------------------------------------------------\n// Diff\n// ------------------------------------------------------------------\nexport function Diff(current, next) {\n return [...Visit('', current, next)];\n}\n// ------------------------------------------------------------------\n// Patch\n// ------------------------------------------------------------------\nfunction IsRootUpdate(edits) {\n return edits.length > 0 && edits[0].path === '' && edits[0].type === 'update';\n}\nfunction IsIdentity(edits) {\n return edits.length === 0;\n}\nexport function Patch(current, edits) {\n if (IsRootUpdate(edits)) {\n return Clone(edits[0].value);\n }\n if (IsIdentity(edits)) {\n return Clone(current);\n }\n const clone = Clone(current);\n for (const edit of edits) {\n switch (edit.type) {\n case 'insert': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'update': {\n ValuePointer.Set(clone, edit.path, edit.value);\n break;\n }\n case 'delete': {\n ValuePointer.Delete(clone, edit.path);\n break;\n }\n }\n }\n return clone;\n}\n", "import { HasTransform, TransformEncode, TransformEncodeCheckError } from '../transform/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../../errors/index.mjs';\n/** Encodes a value or throws if error */\nexport function Encode(...args) {\n const [schema, references, value] = args.length === 3 ? [args[0], args[1], args[2]] : [args[0], [], args[1]];\n const encoded = HasTransform(schema, references) ? TransformEncode(schema, references, value) : value;\n if (!Check(schema, references, encoded))\n throw new TransformEncodeCheckError(schema, encoded, Errors(schema, references, encoded).First());\n return encoded;\n}\n", "import { IsObject, IsArray, IsTypedArray, IsValueType } from '../guard/index.mjs';\nimport { ValuePointer } from '../pointer/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { TypeBoxError } from '../../type/error/index.mjs';\n// ------------------------------------------------------------------\n// IsStandardObject\n// ------------------------------------------------------------------\nfunction IsStandardObject(value) {\n return IsObject(value) && !IsArray(value);\n}\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nexport class ValueMutateError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\nfunction ObjectType(root, path, current, next) {\n if (!IsStandardObject(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n const currentKeys = Object.getOwnPropertyNames(current);\n const nextKeys = Object.getOwnPropertyNames(next);\n for (const currentKey of currentKeys) {\n if (!nextKeys.includes(currentKey)) {\n delete current[currentKey];\n }\n }\n for (const nextKey of nextKeys) {\n if (!currentKeys.includes(nextKey)) {\n current[nextKey] = null;\n }\n }\n for (const nextKey of nextKeys) {\n Visit(root, `${path}/${nextKey}`, current[nextKey], next[nextKey]);\n }\n }\n}\nfunction ArrayType(root, path, current, next) {\n if (!IsArray(current)) {\n ValuePointer.Set(root, path, Clone(next));\n }\n else {\n for (let index = 0; index < next.length; index++) {\n Visit(root, `${path}/${index}`, current[index], next[index]);\n }\n current.splice(next.length);\n }\n}\nfunction TypedArrayType(root, path, current, next) {\n if (IsTypedArray(current) && current.length === next.length) {\n for (let i = 0; i < current.length; i++) {\n current[i] = next[i];\n }\n }\n else {\n ValuePointer.Set(root, path, Clone(next));\n }\n}\nfunction ValueType(root, path, current, next) {\n if (current === next)\n return;\n ValuePointer.Set(root, path, next);\n}\nfunction Visit(root, path, current, next) {\n if (IsArray(next))\n return ArrayType(root, path, current, next);\n if (IsTypedArray(next))\n return TypedArrayType(root, path, current, next);\n if (IsStandardObject(next))\n return ObjectType(root, path, current, next);\n if (IsValueType(next))\n return ValueType(root, path, current, next);\n}\n// ------------------------------------------------------------------\n// IsNonMutableValue\n// ------------------------------------------------------------------\nfunction IsNonMutableValue(value) {\n return IsTypedArray(value) || IsValueType(value);\n}\nfunction IsMismatchedValue(current, next) {\n // prettier-ignore\n return ((IsStandardObject(current) && IsArray(next)) ||\n (IsArray(current) && IsStandardObject(next)));\n}\n// ------------------------------------------------------------------\n// Mutate\n// ------------------------------------------------------------------\n/** `[Mutable]` Performs a deep mutable value assignment while retaining internal references */\nexport function Mutate(current, next) {\n if (IsNonMutableValue(current) || IsNonMutableValue(next))\n throw new ValueMutateError('Only object and array types can be mutated at the root level');\n if (IsMismatchedValue(current, next))\n throw new ValueMutateError('Cannot assign due type mismatch of assignable values');\n Visit(current, '', current, next);\n}\n", "import { TypeBoxError } from '../../type/error/index.mjs';\nimport { TransformDecode, TransformEncode, HasTransform } from '../transform/index.mjs';\nimport { Assert } from '../assert/index.mjs';\nimport { Cast } from '../cast/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nimport { IsArray, IsUndefined } from '../guard/index.mjs';\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport class ParseError extends TypeBoxError {\n constructor(message) {\n super(message);\n }\n}\n// prettier-ignore\nexport var ParseRegistry;\n(function (ParseRegistry) {\n const registry = new Map([\n ['Assert', (type, references, value) => { Assert(type, references, value); return value; }],\n ['Cast', (type, references, value) => Cast(type, references, value)],\n ['Clean', (type, references, value) => Clean(type, references, value)],\n ['Clone', (_type, _references, value) => Clone(value)],\n ['Convert', (type, references, value) => Convert(type, references, value)],\n ['Decode', (type, references, value) => (HasTransform(type, references) ? TransformDecode(type, references, value) : value)],\n ['Default', (type, references, value) => Default(type, references, value)],\n ['Encode', (type, references, value) => (HasTransform(type, references) ? TransformEncode(type, references, value) : value)],\n ]);\n // Deletes an entry from the registry\n function Delete(key) {\n registry.delete(key);\n }\n ParseRegistry.Delete = Delete;\n // Sets an entry in the registry\n function Set(key, callback) {\n registry.set(key, callback);\n }\n ParseRegistry.Set = Set;\n // Gets an entry in the registry\n function Get(key) {\n return registry.get(key);\n }\n ParseRegistry.Get = Get;\n})(ParseRegistry || (ParseRegistry = {}));\n// ------------------------------------------------------------------\n// Default Parse Pipeline\n// ------------------------------------------------------------------\n// prettier-ignore\nexport const ParseDefault = [\n 'Clone',\n 'Clean',\n 'Default',\n 'Convert',\n 'Assert',\n 'Decode'\n];\n// ------------------------------------------------------------------\n// ParseValue\n// ------------------------------------------------------------------\nfunction ParseValue(operations, type, references, value) {\n return operations.reduce((value, operationKey) => {\n const operation = ParseRegistry.Get(operationKey);\n if (IsUndefined(operation))\n throw new ParseError(`Unable to find Parse operation '${operationKey}'`);\n return operation(type, references, value);\n }, value);\n}\n/** Parses a value */\nexport function Parse(...args) {\n // prettier-ignore\n const [operations, schema, references, value] = (args.length === 4 ? [args[0], args[1], args[2], args[3]] :\n args.length === 3 ? IsArray(args[0]) ? [args[0], args[1], [], args[2]] : [ParseDefault, args[0], args[1], args[2]] :\n args.length === 2 ? [ParseDefault, args[0], [], args[1]] :\n (() => { throw new ParseError('Invalid Arguments'); })());\n return ParseValue(operations, schema, references, value);\n}\n", "export { Errors, ValueErrorIterator } from '../../errors/index.mjs';\nexport { Assert } from '../assert/index.mjs';\nexport { Cast } from '../cast/index.mjs';\nexport { Check } from '../check/index.mjs';\nexport { Clean } from '../clean/index.mjs';\nexport { Clone } from '../clone/index.mjs';\nexport { Convert } from '../convert/index.mjs';\nexport { Create } from '../create/index.mjs';\nexport { Decode } from '../decode/index.mjs';\nexport { Default } from '../default/index.mjs';\nexport { Diff, Patch, Edit } from '../delta/index.mjs';\nexport { Encode } from '../encode/index.mjs';\nexport { Equal } from '../equal/index.mjs';\nexport { Hash } from '../hash/index.mjs';\nexport { Mutate } from '../mutate/index.mjs';\nexport { Parse } from '../parse/index.mjs';\n", "export const PROTOCOL_VERSION = 3 as const;\nexport const MAX_PROTOCOL_FRAME_BYTES = 1024 * 1024;\n", "import { Type, type Static } from \"@sinclair/typebox\";\n\nimport { PiRuntimeIdentitySchema } from \"./pi-identity.js\";\nimport type { SemanticSegmentFrame } from \"./semantic-segmentation.js\";\nimport { PROTOCOL_VERSION } from \"./version.js\";\n\nexport const OperationSchema = Type.Object(\n { operationId: Type.String({ minLength: 1 }), createdAt: Type.String({ minLength: 1 }) },\n { additionalProperties: false },\n);\n\nexport const RequestSchema = Type.Object(\n {\n v: Type.Literal(PROTOCOL_VERSION),\n requestId: Type.String({ minLength: 1 }),\n method: Type.Union([\n Type.Literal(\"agent.create\"),\n Type.Literal(\"agent.send\"),\n Type.Literal(\"agent.receive\"),\n Type.Literal(\"agent.status\"),\n Type.Literal(\"agent.list\"),\n Type.Literal(\"agent.destroy\"),\n Type.Literal(\"agent.compact\"),\n ]),\n params: Type.Record(Type.String(), Type.Unknown()),\n operation: Type.Optional(OperationSchema),\n runtime: Type.Optional(\n Type.Object({ pi: PiRuntimeIdentitySchema }, { additionalProperties: false }),\n ),\n },\n { additionalProperties: false },\n);\n\nexport type ProtocolRequest = Static<typeof RequestSchema>;\n\nexport interface ProtocolSuccess {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly ok: true;\n readonly result: unknown;\n}\n\nexport interface ProtocolFailure {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly ok: false;\n readonly error: {\n readonly code: string;\n readonly message: string;\n readonly details?: Record<string, unknown>;\n };\n}\n\nexport type ProtocolResponse = ProtocolSuccess | ProtocolFailure;\n\nexport type ProtocolStreamFrame =\n | {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly stream: \"ready\";\n readonly cursor: string;\n }\n | {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly stream: \"semantic.segment\";\n readonly segment: SemanticSegmentFrame;\n }\n | { readonly v: typeof PROTOCOL_VERSION; readonly requestId: string; readonly stream: \"end\" }\n | {\n readonly v: typeof PROTOCOL_VERSION;\n readonly requestId: string;\n readonly stream: \"error\";\n readonly error: {\n readonly code: string;\n readonly message: string;\n readonly details?: Record<string, unknown>;\n };\n };\n", "import { Value } from \"@sinclair/typebox/value\";\n\nimport { RequestSchema, type ProtocolRequest } from \"./envelope.js\";\n\nexport function parseProtocolRequest(value: unknown): ProtocolRequest {\n if (!Value.Check(RequestSchema, value)) {\n const first = Value.Errors(RequestSchema, value).First();\n throw new Error(\n first === undefined ? \"Invalid protocol request\" : `Invalid protocol request: ${first.path}`,\n );\n }\n return value;\n}\n", "import type { Socket } from \"node:net\";\n\nimport { MAX_PROTOCOL_FRAME_BYTES } from \"./version.js\";\n\nexport function readJsonLines(\n socket: Socket,\n onValue: (value: unknown) => void,\n onError: (error: Error) => void,\n maxFrameBytes = MAX_PROTOCOL_FRAME_BYTES,\n): () => void {\n let buffer = Buffer.alloc(0);\n const onData = (chunk: Buffer) => {\n buffer = Buffer.concat([buffer, chunk]);\n while (true) {\n const newline = buffer.indexOf(0x0a);\n if (newline < 0) {\n if (buffer.length > maxFrameBytes) {\n onError(new Error(\"Protocol frame exceeds maximum size\"));\n }\n return;\n }\n if (newline > maxFrameBytes) {\n onError(new Error(\"Protocol frame exceeds maximum size\"));\n return;\n }\n const line = buffer.subarray(0, newline).toString(\"utf8\").replace(/\\r$/, \"\");\n buffer = buffer.subarray(newline + 1);\n if (line.length === 0) continue;\n try {\n onValue(JSON.parse(line));\n } catch {\n onError(new Error(\"Malformed JSON protocol frame\"));\n return;\n }\n }\n };\n socket.on(\"data\", onData);\n return () => socket.off(\"data\", onData);\n}\n\nexport function writeJsonLine(socket: Socket, value: unknown): boolean {\n return socket.write(`${JSON.stringify(value)}\\n`);\n}\n", "import type { AgentEventId, ReceiveCursor, SemanticEvent } from \"../runtime/semantic-events.js\";\n\nexport interface SemanticSegmentFrame {\n readonly type: \"semantic.segment\";\n readonly eventId: AgentEventId;\n readonly precedingCursor: ReceiveCursor;\n readonly eventCursor: ReceiveCursor;\n readonly index: number;\n readonly count: number;\n readonly data: string;\n}\n\nexport interface ReassembledSemanticEvent {\n readonly event: SemanticEvent;\n readonly precedingCursor: ReceiveCursor;\n}\n\nexport function segmentSemanticEvent(\n event: SemanticEvent,\n precedingCursor: ReceiveCursor,\n maxFrameBytes: number,\n maxSegments = 4_096,\n): readonly SemanticSegmentFrame[] {\n assertPositiveInteger(maxFrameBytes, \"Semantic frame limit\");\n assertPositiveInteger(maxSegments, \"Semantic segment limit\");\n const payload = Buffer.from(JSON.stringify(event));\n let low = 1;\n let high = payload.length;\n let accepted: readonly SemanticSegmentFrame[] | null = null;\n\n while (low <= high) {\n const chunkBytes = Math.floor((low + high) / 2);\n const candidate = makeFrames(event, precedingCursor, payload, chunkBytes);\n if (candidate.every((frame) => serializedFrameBytes(frame) <= maxFrameBytes)) {\n accepted = candidate;\n low = chunkBytes + 1;\n } else {\n high = chunkBytes - 1;\n }\n }\n\n if (accepted === null) throw new Error(\"Semantic frame limit is too small for metadata\");\n if (accepted.length > maxSegments) {\n throw new Error(\"Semantic event requires too many segments\");\n }\n return accepted;\n}\n\nexport class SemanticEventReassembler {\n readonly #maxEventBytes: number;\n readonly #maxSegments: number;\n #current:\n | {\n readonly eventId: AgentEventId;\n readonly precedingCursor: ReceiveCursor;\n readonly eventCursor: ReceiveCursor;\n readonly count: number;\n readonly chunks: Buffer[];\n bytes: number;\n }\n | undefined;\n\n constructor(maxEventBytes: number, maxSegments = 4_096) {\n assertPositiveInteger(maxEventBytes, \"Semantic event reassembly limit\");\n assertPositiveInteger(maxSegments, \"Semantic segment limit\");\n this.#maxEventBytes = maxEventBytes;\n this.#maxSegments = maxSegments;\n }\n\n push(frame: SemanticSegmentFrame): ReassembledSemanticEvent | null {\n assertFrame(frame);\n if (frame.count > this.#maxSegments) {\n throw new Error(\"Semantic event segment count exceeds reassembly limit\");\n }\n if (frame.data.length === 0) throw new Error(\"Semantic event segment must not be empty\");\n if (frame.index === 0) {\n if (this.#current !== undefined) throw new Error(\"Semantic event reassembly was interrupted\");\n this.#current = {\n eventId: frame.eventId,\n precedingCursor: frame.precedingCursor,\n eventCursor: frame.eventCursor,\n count: frame.count,\n chunks: [],\n bytes: 0,\n };\n }\n const current = this.#current;\n if (current === undefined) throw new Error(\"Semantic event segment has no start\");\n if (\n frame.eventId !== current.eventId ||\n frame.precedingCursor !== current.precedingCursor ||\n frame.eventCursor !== current.eventCursor ||\n frame.count !== current.count ||\n frame.index !== current.chunks.length\n ) {\n this.reset();\n throw new Error(\"Semantic event segment sequence is invalid\");\n }\n\n const chunk = decodeBase64(frame.data);\n if (current.bytes + chunk.length > this.#maxEventBytes) {\n this.reset();\n throw new Error(\"Semantic event exceeds reassembly limit\");\n }\n current.chunks.push(chunk);\n current.bytes += chunk.length;\n if (current.chunks.length < current.count) return null;\n\n const precedingCursor = current.precedingCursor;\n const eventCursor = current.eventCursor;\n const eventId = current.eventId;\n const bytes = Buffer.concat(current.chunks, current.bytes);\n this.reset();\n let event: SemanticEvent;\n try {\n event = JSON.parse(bytes.toString(\"utf8\")) as SemanticEvent;\n } catch {\n throw new Error(\"Semantic event payload is invalid JSON\");\n }\n if (event.id !== eventId || event.cursor !== eventCursor) {\n throw new Error(\"Semantic event payload identity does not match its segments\");\n }\n return { event, precedingCursor };\n }\n\n reset(): void {\n this.#current = undefined;\n }\n}\n\nexport function serializedFrameBytes(frame: SemanticSegmentFrame): number {\n return Buffer.byteLength(JSON.stringify(frame));\n}\n\nfunction makeFrames(\n event: SemanticEvent,\n precedingCursor: ReceiveCursor,\n payload: Buffer,\n chunkBytes: number,\n): readonly SemanticSegmentFrame[] {\n const count = Math.ceil(payload.length / chunkBytes);\n const frames: SemanticSegmentFrame[] = [];\n for (let index = 0; index < count; index += 1) {\n frames.push({\n type: \"semantic.segment\",\n eventId: event.id,\n precedingCursor,\n eventCursor: event.cursor,\n index,\n count,\n data: payload.subarray(index * chunkBytes, (index + 1) * chunkBytes).toString(\"base64\"),\n });\n }\n return frames;\n}\n\nfunction assertFrame(frame: SemanticSegmentFrame): void {\n if (\n frame.type !== \"semantic.segment\" ||\n !Number.isSafeInteger(frame.index) ||\n !Number.isSafeInteger(frame.count) ||\n frame.index < 0 ||\n frame.count <= 0 ||\n frame.index >= frame.count\n ) {\n throw new Error(\"Semantic event segment metadata is invalid\");\n }\n}\n\nfunction decodeBase64(value: string): Buffer {\n const decoded = Buffer.from(value, \"base64\");\n if (decoded.toString(\"base64\") !== value)\n throw new Error(\"Semantic event segment is invalid base64\");\n return decoded;\n}\n\nfunction assertPositiveInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value <= 0) throw new Error(`${label} must be positive`);\n}\n", "const KIBIBYTE = 1024;\nconst MEBIBYTE = 1024 * KIBIBYTE;\n\nexport interface RuntimeLimits {\n readonly maxResidentProcesses: number;\n readonly maxMessageBytes: number;\n readonly maxProtocolFrameBytes: number;\n readonly maxPiFrameBytes: number;\n readonly maxJournalPendingRecords: number;\n readonly maxJournalPendingBytes: number;\n readonly maxJournalPendingBytesPerAgent: number;\n readonly maxJournalPartialRecordBytes: number;\n readonly maxJournalBatchRecords: number;\n readonly maxJournalBatchBytes: number;\n readonly maxJournalBatchAgeMs: number;\n readonly journalCheckpointCommitInterval: number;\n readonly journalReclaimPagesPerPass: number;\n readonly maxOpenProjectorActivities: number;\n readonly maxReceiveStreams: number;\n readonly maxReceiveReplayRows: number;\n readonly maxReceiveReplayBytes: number;\n readonly maxSemanticFrameBytes: number;\n readonly maxSemanticSegments: number;\n readonly maxSocketWriteMs: number;\n}\n\nexport const DEFAULT_RUNTIME_LIMITS: RuntimeLimits = Object.freeze({\n maxResidentProcesses: 32,\n maxMessageBytes: 512 * KIBIBYTE,\n maxProtocolFrameBytes: MEBIBYTE,\n maxPiFrameBytes: 8 * MEBIBYTE,\n maxJournalPendingRecords: 4_096,\n maxJournalPendingBytes: 32 * MEBIBYTE,\n maxJournalPendingBytesPerAgent: 4 * MEBIBYTE,\n maxJournalPartialRecordBytes: 8 * MEBIBYTE,\n maxJournalBatchRecords: 128,\n maxJournalBatchBytes: 512 * KIBIBYTE,\n maxJournalBatchAgeMs: 25,\n journalCheckpointCommitInterval: 128,\n journalReclaimPagesPerPass: 32,\n maxOpenProjectorActivities: 1_024,\n maxReceiveStreams: 128,\n maxReceiveReplayRows: 256,\n maxReceiveReplayBytes: 4 * MEBIBYTE,\n maxSemanticFrameBytes: MEBIBYTE,\n maxSemanticSegments: 4_096,\n maxSocketWriteMs: 30_000,\n});\n\nconst ENV_KEYS: Readonly<Record<keyof RuntimeLimits, string>> = {\n maxResidentProcesses: \"PIFLEET_MAX_RESIDENT_PROCESSES\",\n maxMessageBytes: \"PIFLEET_MAX_MESSAGE_BYTES\",\n maxProtocolFrameBytes: \"PIFLEET_MAX_PROTOCOL_FRAME_BYTES\",\n maxPiFrameBytes: \"PIFLEET_MAX_PI_FRAME_BYTES\",\n maxJournalPendingRecords: \"PIFLEET_MAX_JOURNAL_PENDING_RECORDS\",\n maxJournalPendingBytes: \"PIFLEET_MAX_JOURNAL_PENDING_BYTES\",\n maxJournalPendingBytesPerAgent: \"PIFLEET_MAX_JOURNAL_PENDING_BYTES_PER_AGENT\",\n maxJournalPartialRecordBytes: \"PIFLEET_MAX_JOURNAL_PARTIAL_RECORD_BYTES\",\n maxJournalBatchRecords: \"PIFLEET_MAX_JOURNAL_BATCH_RECORDS\",\n maxJournalBatchBytes: \"PIFLEET_MAX_JOURNAL_BATCH_BYTES\",\n maxJournalBatchAgeMs: \"PIFLEET_MAX_JOURNAL_BATCH_AGE_MS\",\n journalCheckpointCommitInterval: \"PIFLEET_JOURNAL_CHECKPOINT_COMMIT_INTERVAL\",\n journalReclaimPagesPerPass: \"PIFLEET_JOURNAL_RECLAIM_PAGES_PER_PASS\",\n maxOpenProjectorActivities: \"PIFLEET_MAX_OPEN_PROJECTOR_ACTIVITIES\",\n maxReceiveStreams: \"PIFLEET_MAX_RECEIVE_STREAMS\",\n maxReceiveReplayRows: \"PIFLEET_MAX_RECEIVE_REPLAY_ROWS\",\n maxReceiveReplayBytes: \"PIFLEET_MAX_RECEIVE_REPLAY_BYTES\",\n maxSemanticFrameBytes: \"PIFLEET_MAX_SEMANTIC_FRAME_BYTES\",\n maxSemanticSegments: \"PIFLEET_MAX_SEMANTIC_SEGMENTS\",\n maxSocketWriteMs: \"PIFLEET_MAX_SOCKET_WRITE_MS\",\n};\n\nexport function runtimeLimitsFromEnv(env: NodeJS.ProcessEnv = process.env): RuntimeLimits {\n return {\n maxResidentProcesses: positiveInteger(env, \"maxResidentProcesses\"),\n maxMessageBytes: positiveInteger(env, \"maxMessageBytes\"),\n maxProtocolFrameBytes: positiveInteger(env, \"maxProtocolFrameBytes\"),\n maxPiFrameBytes: positiveInteger(env, \"maxPiFrameBytes\"),\n maxJournalPendingRecords: positiveInteger(env, \"maxJournalPendingRecords\"),\n maxJournalPendingBytes: positiveInteger(env, \"maxJournalPendingBytes\"),\n maxJournalPendingBytesPerAgent: positiveInteger(env, \"maxJournalPendingBytesPerAgent\"),\n maxJournalPartialRecordBytes: positiveInteger(env, \"maxJournalPartialRecordBytes\"),\n maxJournalBatchRecords: positiveInteger(env, \"maxJournalBatchRecords\"),\n maxJournalBatchBytes: positiveInteger(env, \"maxJournalBatchBytes\"),\n maxJournalBatchAgeMs: positiveInteger(env, \"maxJournalBatchAgeMs\"),\n journalCheckpointCommitInterval: positiveInteger(env, \"journalCheckpointCommitInterval\"),\n journalReclaimPagesPerPass: positiveInteger(env, \"journalReclaimPagesPerPass\"),\n maxOpenProjectorActivities: positiveInteger(env, \"maxOpenProjectorActivities\"),\n maxReceiveStreams: positiveInteger(env, \"maxReceiveStreams\"),\n maxReceiveReplayRows: positiveInteger(env, \"maxReceiveReplayRows\"),\n maxReceiveReplayBytes: positiveInteger(env, \"maxReceiveReplayBytes\"),\n maxSemanticFrameBytes: positiveInteger(env, \"maxSemanticFrameBytes\"),\n maxSemanticSegments: positiveInteger(env, \"maxSemanticSegments\"),\n maxSocketWriteMs: positiveInteger(env, \"maxSocketWriteMs\"),\n };\n}\n\nfunction positiveInteger(env: NodeJS.ProcessEnv, key: keyof RuntimeLimits): number {\n const variable = ENV_KEYS[key];\n const raw = env[variable];\n if (raw === undefined || raw.length === 0) return DEFAULT_RUNTIME_LIMITS[key];\n const value = Number(raw);\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${variable} must be a positive integer`);\n }\n return value;\n}\n", "import { lstat } from \"node:fs/promises\";\nimport { createConnection } from \"node:net\";\n\nexport type ControlSocketOwnership = \"absent\" | \"stale\" | \"responsive\" | \"uncertain\";\nexport type ControlSocketProbe = (\n socketPath: string,\n) => Promise<Exclude<ControlSocketOwnership, \"absent\">>;\n\nexport class RuntimeOwnershipBlockedError extends Error {\n readonly code = \"runtime_upgrade_deferred\";\n\n constructor(message: string) {\n super(message);\n this.name = \"RuntimeOwnershipBlockedError\";\n }\n}\n\nexport async function inspectControlSocketOwnership(\n socketPath: string,\n probe: ControlSocketProbe = probeControlSocket,\n): Promise<ControlSocketOwnership> {\n const stats = await lstat(socketPath).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return null;\n throw error;\n });\n if (stats === null) return \"absent\";\n if (!stats.isSocket()) {\n throw new RuntimeOwnershipBlockedError(\n `Refusing to replace non-socket pi-fleet control path ${socketPath}`,\n );\n }\n return probe(socketPath);\n}\n\nexport async function preflightRuntimeStartup(options: {\n readonly socketPath: string;\n readonly destructive: boolean;\n readonly assertOwnedProcessTreesAbsent?: () => Promise<void>;\n readonly inspectOwnership?: typeof inspectControlSocketOwnership;\n}): Promise<ControlSocketOwnership> {\n const ownership = await (options.inspectOwnership ?? inspectControlSocketOwnership)(\n options.socketPath,\n );\n if (ownership === \"responsive\" || ownership === \"uncertain\") {\n throw new RuntimeOwnershipBlockedError(\n ownership === \"responsive\"\n ? `A responsive pi-fleet runtime already owns ${options.socketPath}`\n : `pi-fleet control socket ownership is uncertain for ${options.socketPath}`,\n );\n }\n if (options.destructive) {\n if (options.assertOwnedProcessTreesAbsent === undefined) {\n throw new RuntimeOwnershipBlockedError(\n \"Destructive pi-fleet startup requires proof that prior runtime and Pi process trees are absent.\",\n );\n }\n await options.assertOwnedProcessTreesAbsent();\n }\n return ownership;\n}\n\nexport function probeControlSocket(\n socketPath: string,\n): Promise<Exclude<ControlSocketOwnership, \"absent\">> {\n return new Promise((resolveProbe) => {\n const socket = createConnection(socketPath);\n let settled = false;\n const settle = (result: Exclude<ControlSocketOwnership, \"absent\">) => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n socket.destroy();\n resolveProbe(result);\n };\n const timer = setTimeout(() => settle(\"uncertain\"), 200);\n socket.once(\"connect\", () => settle(\"responsive\"));\n socket.once(\"error\", (error: NodeJS.ErrnoException) => {\n settle(error.code === \"ECONNREFUSED\" || error.code === \"ENOENT\" ? \"stale\" : \"uncertain\");\n });\n });\n}\n", "import { createHash, randomUUID } from \"node:crypto\";\n\nimport type { ReceiveStart } from \"../client/agent-target.js\";\nimport { isPiFleetErrorCode } from \"../client/contracts.js\";\nimport type {\n CompactInput,\n CompactResult,\n CreateInput,\n CreateResult,\n DestroyInput,\n DestroyResult,\n FleetClientError,\n ListResult,\n SendInput,\n SendResult,\n StatusInput,\n StatusResult,\n} from \"../client/fleet-client.js\";\nimport { PiExecutionUnavailableError, type PiLauncher } from \"../pi/adapter.js\";\nimport { createLaunchProfile, observeSession } from \"../pi/launch-profile.js\";\nimport { PiCleanupUncertainError, PiCompactionError, type PiProcess } from \"../pi/process.js\";\nimport { waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport {\n MANAGED_PI_RUNTIME_IDENTITY,\n samePiRuntimeIdentity,\n type PiRuntimeIdentity,\n} from \"../protocol/pi-identity.js\";\nimport { err, ok, type Result } from \"../shared/result.js\";\nimport { DEFAULT_RUNTIME_LIMITS, type RuntimeLimits } from \"../shared/runtime-limits.js\";\nimport type { FleetStore, StoredAgent } from \"../store/fleet-store.js\";\nimport type { JournalStore } from \"../store/journal-store.js\";\nimport { AgentCoordinator } from \"./agent-coordinator.js\";\nimport type { JournalIncarnationSink, JournalRuntimeComposition } from \"./journal-runtime.js\";\nimport type { ReceiveStream } from \"./receive-pager.js\";\nimport type { AgentId, ContinuityEpoch, IncarnationId } from \"./semantic-events.js\";\n\nexport interface PreparedReceive {\n readonly agentId: AgentId;\n readonly stream: ReceiveStream;\n readonly idle: Promise<Result<{ readonly idleEventPosition: number }, FleetClientError>> | null;\n}\n\ninterface RecordedOperation {\n readonly method: \"create\" | \"send\" | \"destroy\" | \"compact\";\n readonly fingerprint: string;\n readonly result: Result<unknown, FleetClientError>;\n}\n\nexport interface FleetServiceOptions {\n readonly launcher?: PiLauncher;\n readonly now?: () => string;\n readonly limits?: Partial<RuntimeLimits>;\n readonly piIdentity?: PiRuntimeIdentity;\n readonly journal?: JournalRuntimeComposition;\n readonly journalStore?: JournalStore;\n readonly onAgentDestroyed?: (agentId: AgentId) => void;\n}\n\nexport class FleetService {\n readonly #operations = new Map<string, RecordedOperation>();\n readonly #inflightOperations = new Map<\n string,\n {\n readonly method: RecordedOperation[\"method\"];\n readonly fingerprint: string;\n readonly promise: Promise<Result<unknown, FleetClientError>>;\n }\n >();\n readonly #coordinators = new Map<string, AgentCoordinator>();\n readonly #processSlots = new Set<string>();\n readonly #agentLanes = new Map<string, Promise<void>>();\n readonly #sendLanes = new Map<string, Promise<void>>();\n readonly #compactingAgents = new Set<string>();\n readonly #destroyingAgents = new Set<string>();\n readonly #launcher: PiLauncher | undefined;\n readonly #now: () => string;\n readonly #limits: RuntimeLimits;\n readonly #journal: JournalRuntimeComposition | undefined;\n readonly #journalStore: JournalStore | undefined;\n readonly #journalSinks = new Map<string, JournalIncarnationSink>();\n readonly #onAgentDestroyed: (agentId: AgentId) => void;\n readonly #piIdentity: PiRuntimeIdentity;\n #storageFailure: Error | null = null;\n #closing = false;\n\n constructor(\n private readonly store: FleetStore,\n options: FleetServiceOptions | (() => string) = {},\n ) {\n this.#launcher = typeof options === \"function\" ? undefined : options.launcher;\n this.#now =\n typeof options === \"function\" ? options : (options.now ?? (() => new Date().toISOString()));\n this.#piIdentity =\n typeof options === \"function\"\n ? MANAGED_PI_RUNTIME_IDENTITY\n : (options.piIdentity ?? MANAGED_PI_RUNTIME_IDENTITY);\n this.#limits = {\n ...DEFAULT_RUNTIME_LIMITS,\n ...(typeof options === \"function\" ? {} : options.limits),\n };\n this.#journal = typeof options === \"function\" ? undefined : options.journal;\n this.#journalStore = typeof options === \"function\" ? undefined : options.journalStore;\n this.#onAgentDestroyed =\n typeof options === \"function\"\n ? () => undefined\n : (options.onAgentDestroyed ?? (() => undefined));\n }\n\n failStorage(error: Error): void {\n this.#storageFailure ??= error;\n for (const coordinator of this.#coordinators.values()) {\n // Storage is already terminal: stop Pi directly instead of attempting another store write.\n void coordinator.process.stop().catch(() => undefined);\n }\n }\n\n failAgent(agentId: AgentId, error: Error): void {\n const coordinator = [...this.#coordinators.values()].find(\n (candidate) => candidate.storedAgent.summary.id === agentId,\n );\n if (coordinator === undefined) return;\n const agent = coordinator.storedAgent;\n void this.store\n .putAgent({\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n error: {\n code: error.message.includes(\"capacity\") ? \"storage_unavailable\" : \"state_corrupt\",\n },\n },\n })\n .catch(() => undefined);\n void coordinator.process.stop().catch(() => undefined);\n }\n\n create(\n input: CreateInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CreateResult, FleetClientError>> {\n return this.#runOperation(operationId, \"create\", input, () =>\n this.#enqueueAgent(input.name, () => this.#createImpl(input, operationId, callerPiIdentity)),\n );\n }\n\n async #createImpl(\n input: CreateInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CreateResult, FleetClientError>> {\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n const replay = await this.#operation<CreateResult>(operationId, \"create\", input);\n if (replay !== null) return replay;\n if (this.#closing) return this.#runtimeUnavailable();\n let profile: ReturnType<typeof createLaunchProfile>;\n try {\n profile = createLaunchProfile({\n cwd: input.cwd,\n piArgv: input.piArgv,\n });\n } catch (error: unknown) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: error instanceof Error ? error.message : \"Invalid Pi startup arguments.\",\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n if (\n input.instructions !== undefined &&\n Buffer.byteLength(input.instructions, \"utf8\") > this.#limits.maxMessageBytes\n ) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: `Initial instructions exceed the ${String(this.#limits.maxMessageBytes)} byte limit.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n if ((await this.store.getAgent(input.name)) !== null) {\n const result = err<FleetClientError>({\n code: \"name_taken\",\n message: `Agent ${input.name} already exists.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n const result = err<FleetClientError>(identityFailure);\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n const result = err<FleetClientError>(preflightFailure);\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n let agent: StoredAgent = {\n summary: {\n id: randomUUID(),\n name: input.name,\n state: this.#launcher === undefined ? \"idle\" : \"restoring\",\n process: { state: this.#launcher === undefined ? \"resident\" : \"starting\" },\n session: { path: null, id: null },\n },\n launch: profile,\n };\n const pendingCreate = await this.store.getOperation(operationId);\n if (pendingCreate === null) throw new Error(\"Create operation receipt is missing\");\n if (\n !(await this.store.createAgent(agent, {\n ...pendingCreate,\n targetName: input.name,\n targetAgent: { id: agent.summary.id, name: input.name },\n }))\n ) {\n const result = err<FleetClientError>({\n code: \"name_taken\",\n message: `Agent ${input.name} already exists.`,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n }\n if (this.#journalStore !== undefined) {\n await this.#journalStore.putEpoch({\n agentId: agent.summary.id as AgentId,\n epoch: 0 as ContinuityEpoch,\n state: \"open\",\n lastSafeEventPosition: 0,\n openedAt: this.#now(),\n });\n }\n await this.#recordOperationTarget(operationId, agent);\n\n if (this.#launcher !== undefined && this.#reserveProcessSlot(input.name) !== \"acquired\") {\n const result = err<FleetClientError>({\n code: \"capacity_exceeded\",\n message: `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`,\n });\n await this.#rollbackProvisionalCreate(agent, operationId, result);\n return result;\n }\n\n let incarnationId: string | null = null;\n try {\n if (this.#launcher !== undefined) {\n incarnationId = randomUUID();\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: null,\n state: \"starting\",\n });\n const journalSink = await this.#openJournalSink(agent, incarnationId);\n const process = await this.#launcher.start(\n profile,\n false,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId: incarnationId!,\n agentId: agent.summary.id,\n agentName: input.name,\n pid,\n state: \"starting\",\n });\n },\n journalSink?.pushRecord,\n );\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const observedProfile = observeSession(profile, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n });\n await this.#journal?.markIdle(agent.summary.id as AgentId);\n agent = {\n ...agent,\n launch: observedProfile,\n summary: {\n ...agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n },\n };\n await this.store.putAgent(agent);\n const coordinator = this.#attachCoordinator(agent, process, incarnationId);\n if (input.instructions !== undefined) {\n const acceptedAt = this.#now();\n const sendId = `${operationId}:initial`;\n const ordinal = await this.store.nextSendOrdinal(input.name);\n await this.store.putSend({\n sendId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n delivery: \"steer\",\n state: \"pending\",\n acceptedAt,\n });\n await this.store.putSend({\n sendId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n delivery: \"steer\",\n state: \"dispatching\",\n acceptedAt,\n });\n try {\n await this.#enqueueSend(input.name, async () => {\n await coordinator.send(input.instructions!);\n await coordinator.reconcileState();\n });\n await this.store.putSend({\n sendId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n delivery: \"steer\",\n state: \"acknowledged\",\n acceptedAt,\n });\n } catch (error: unknown) {\n await this.store.putSend({\n sendId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.instructions,\n delivery: \"steer\",\n state: \"uncertain\",\n acceptedAt,\n });\n agent = {\n ...coordinator.storedAgent,\n summary: {\n ...coordinator.storedAgent.summary,\n state: \"failed\",\n error: { code: \"delivery_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n throw error;\n }\n }\n agent = coordinator.storedAgent;\n }\n\n const result = ok<CreateResult>({\n schemaVersion: 1,\n type: \"agent.created\",\n agent: agent.summary,\n });\n await this.#remember(operationId, \"create\", input, result);\n return result;\n } catch (error: unknown) {\n const coordinator = this.#coordinators.get(input.name);\n if (incarnationId !== null && coordinator === undefined) {\n this.#finishJournalSink(incarnationId);\n }\n const deliveryAmbiguous =\n (await this.store.getSend(`${operationId}:initial`))?.state === \"uncertain\";\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n if (coordinator !== undefined) {\n try {\n await coordinator.stop(\"runtime_shutdown\");\n } catch {\n cleanupUncertain = true;\n }\n }\n this.#coordinators.delete(input.name);\n if (cleanupUncertain) {\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n } else if (deliveryAmbiguous) {\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: \"absent\" },\n error: { code: \"delivery_uncertain\" },\n },\n };\n await this.store.putAgent(agent);\n this.#releaseProcessSlot(input.name);\n } else {\n if (incarnationId !== null) {\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: error instanceof PiCleanupUncertainError ? error.pid : null,\n state: \"gone\",\n });\n }\n this.#releaseProcessSlot(input.name);\n }\n const code = cleanupUncertain\n ? \"incarnation_cleanup_uncertain\"\n : deliveryAmbiguous\n ? \"delivery_uncertain\"\n : \"pi_start_failed\";\n const result = err<FleetClientError>({\n code,\n message:\n code === \"delivery_uncertain\"\n ? \"Pi may have accepted the initial instructions; pi-fleet will not replay them automatically.\"\n : code === \"incarnation_cleanup_uncertain\"\n ? \"pi-fleet could not prove the Pi process group was removed.\"\n : \"Pi failed to start.\",\n });\n if (cleanupUncertain || deliveryAmbiguous) {\n await this.#remember(operationId, \"create\", input, result);\n } else {\n await this.#rollbackProvisionalCreate(agent, operationId, result);\n }\n return result;\n }\n }\n\n send(\n input: SendInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<SendResult, FleetClientError>> {\n const normalizedInput: SendInput = {\n ...input,\n delivery: input.delivery ?? \"steer\",\n };\n return this.#runOperation(operationId, \"send\", normalizedInput, () =>\n this.#enqueueAgent(normalizedInput.name, () =>\n this.#sendImpl(normalizedInput, operationId, callerPiIdentity),\n ),\n );\n }\n\n async #sendImpl(\n input: SendInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<SendResult, FleetClientError>> {\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n const replay = await this.#operation<SendResult>(operationId, \"send\", input);\n if (replay !== null) return replay;\n if (this.#closing) return this.#runtimeUnavailable();\n if (this.#destroyingAgents.has(input.name)) {\n const result = err<FleetClientError>({\n code: \"agent_destroying\",\n message: `Agent ${input.name} is being destroyed.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n if (Buffer.byteLength(input.message, \"utf8\") > this.#limits.maxMessageBytes) {\n const result = err<FleetClientError>({\n code: \"invalid_arguments\",\n message: `Message exceeds the ${String(this.#limits.maxMessageBytes)} byte limit.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const agent = await this.store.getAgent(input.name);\n if (agent === null) return this.#rememberNotFound(operationId, \"send\", input);\n const staleTarget = this.#staleTarget<SendResult>(input.expectedAgentId, agent);\n if (staleTarget !== null) {\n await this.#remember(operationId, \"send\", input, staleTarget);\n return staleTarget;\n }\n await this.#recordOperationTarget(operationId, agent);\n if (agent.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: \"incarnation_cleanup_uncertain\",\n message: `pi-fleet cannot prove the previous process for ${input.name} is gone.`,\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n const result = err<FleetClientError>(identityFailure);\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n const result = err<FleetClientError>(preflightFailure);\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n\n const acceptedAt = this.#now();\n const result = await this.#enqueueSend(input.name, async () => {\n const ordinal = await this.store.nextSendOrdinal(input.name);\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"pending\",\n acceptedAt,\n });\n return this.#dispatchSend(input, operationId, acceptedAt, agent, ordinal);\n });\n await this.#remember(operationId, \"send\", input, result);\n return result;\n }\n\n compact(\n input: CompactInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CompactResult, FleetClientError>> {\n return this.#runOperation(operationId, \"compact\", input, () =>\n this.#enqueueAgent(input.name, () => this.#compactImpl(input, operationId, callerPiIdentity)),\n );\n }\n\n async #compactImpl(\n input: CompactInput,\n operationId: string,\n callerPiIdentity?: PiRuntimeIdentity,\n ): Promise<Result<CompactResult, FleetClientError>> {\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n const replay = await this.#operation<CompactResult>(operationId, \"compact\", input);\n if (replay !== null) return replay;\n if (this.#closing) return this.#runtimeUnavailable();\n const requestedAt = this.#now();\n let agent = await this.store.getAgent(input.name);\n if (agent === null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"agent_not_found\",\n message: `Agent ${input.name} was not found.`,\n });\n }\n const staleTarget = this.#staleTarget<CompactResult>(input.expectedAgentId, agent);\n if (staleTarget !== null) {\n await this.#remember(operationId, \"compact\", input, staleTarget);\n return staleTarget;\n }\n await this.#recordOperationTarget(operationId, agent);\n if (agent.summary.process.state === \"cleanup_uncertain\") {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"incarnation_cleanup_uncertain\",\n message: `pi-fleet cannot prove the previous process for ${input.name} is gone.`,\n });\n }\n if (agent.summary.state !== \"idle\") {\n return this.#rememberCompactFailure(operationId, input, requestedAt, {\n code: \"agent_busy\",\n message: `Agent ${input.name} must be idle before compaction.`,\n });\n }\n const identityFailure = this.#piIdentityFailure(callerPiIdentity);\n if (identityFailure !== null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, identityFailure);\n }\n const preflightFailure = await this.#piExecutionFailure();\n if (preflightFailure !== null) {\n return this.#rememberCompactFailure(operationId, input, requestedAt, preflightFailure);\n }\n\n await this.store.putCompact({\n compactId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n state: \"pending\",\n requestedAt,\n });\n\n let coordinator: AgentCoordinator | undefined;\n try {\n coordinator = await this.#ensureResidentForCompact(agent);\n agent = coordinator?.storedAgent ?? agent;\n const nativeCompaction = coordinator !== undefined;\n if (nativeCompaction) this.#compactingAgents.add(input.name);\n let compaction: CompactResult[\"compaction\"];\n try {\n await this.store.putCompact({\n compactId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n state: \"dispatching\",\n requestedAt,\n });\n if (coordinator === undefined && this.#launcher === undefined) {\n compaction = { tokensBefore: 0, estimatedTokensAfter: 0 };\n } else {\n if (coordinator === undefined) throw new Error(\"Pi is unavailable for compaction\");\n compaction = await coordinator.compact();\n }\n } finally {\n if (nativeCompaction) this.#compactingAgents.delete(input.name);\n }\n await this.store.putCompact({\n compactId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n state: \"completed\",\n requestedAt,\n result: compaction,\n });\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n compaction,\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n } catch (error: unknown) {\n const compact = await this.store.getCompact(operationId);\n if (compact?.state === \"completed\" && compact.result !== undefined) {\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n compaction: compact.result,\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n const message = error instanceof Error ? error.message : \"Pi compaction failed\";\n const busy = message === \"Agent is busy\";\n const preDispatch = compact?.state === \"pending\";\n const capacity = message === \"Process capacity exceeded\";\n const compactionError = error instanceof PiCompactionError ? error.code : null;\n const uncertain = !busy && !preDispatch && compactionError === null;\n if (uncertain && coordinator !== undefined && !this.#destroyingAgents.has(input.name)) {\n await coordinator.stop(\"runtime_shutdown\").catch(() => undefined);\n }\n const cleanupUncertain =\n (await this.store.getAgent(input.name))?.summary.process.state === \"cleanup_uncertain\";\n const failure: FleetClientError = {\n code: busy\n ? \"agent_busy\"\n : capacity\n ? \"capacity_exceeded\"\n : cleanupUncertain\n ? \"incarnation_cleanup_uncertain\"\n : preDispatch\n ? \"pi_start_failed\"\n : (compactionError ?? \"compaction_uncertain\"),\n message: busy\n ? `Agent ${input.name} must be idle before compaction.`\n : capacity\n ? `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`\n : cleanupUncertain\n ? `pi-fleet could not prove the failed Pi restoration for ${input.name} was removed.`\n : preDispatch\n ? `Pi failed to restore for ${input.name}; compaction was not dispatched.`\n : compactionError === \"nothing_to_compact\"\n ? `Agent ${input.name} has nothing to compact.`\n : compactionError === \"compaction_failed\"\n ? \"Pi compaction failed.\"\n : \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n };\n const result = err(failure);\n const terminalFailure = busy || preDispatch || compactionError !== null;\n await this.store.putCompact({\n compactId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n state: terminalFailure ? \"failed\" : \"uncertain\",\n requestedAt,\n ...(terminalFailure ? { error: failure } : {}),\n });\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n }\n\n async #ensureResidentForCompact(agent: StoredAgent): Promise<AgentCoordinator | undefined> {\n let coordinator = this.#coordinators.get(agent.summary.name);\n if (coordinator !== undefined || this.#launcher === undefined) return coordinator;\n const reservation = this.#reserveProcessSlot(agent.summary.name);\n if (reservation === \"full\") {\n throw new Error(\"Process capacity exceeded\");\n }\n if (reservation === \"existing\") {\n coordinator = await this.#waitForCoordinator(agent.summary.name);\n if (coordinator === undefined)\n throw new Error(\"Pi restoration did not produce a live process\");\n return coordinator;\n }\n\n const restoring = await this.#markRestoring(agent);\n const incarnationId = randomUUID();\n let process: PiProcess | null = null;\n try {\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: agent.summary.name,\n pid: null,\n state: \"starting\",\n });\n const journalSink = await this.#openJournalSink(restoring, incarnationId);\n process = await this.#launcher.start(\n restoring.launch,\n true,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: agent.summary.name,\n pid,\n state: \"starting\",\n });\n },\n journalSink?.pushRecord,\n );\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: agent.summary.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const restored: StoredAgent = {\n ...restoring,\n launch: observeSession(restoring.launch, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n }),\n summary: {\n ...restoring.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n error: undefined,\n },\n };\n await this.store.putAgent(restored);\n return this.#attachCoordinator(restored, process, incarnationId);\n } catch (error: unknown) {\n this.#finishJournalSink(incarnationId);\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n let pid = error instanceof PiCleanupUncertainError ? error.pid : null;\n if (process !== null) {\n pid = process.pid;\n try {\n await process.stop();\n } catch {\n cleanupUncertain = true;\n }\n }\n await this.store.putAgent({\n ...restoring,\n summary: {\n ...restoring.summary,\n state: \"failed\",\n process: { state: cleanupUncertain ? \"cleanup_uncertain\" : \"absent\" },\n error: { code: cleanupUncertain ? \"incarnation_cleanup_uncertain\" : \"pi_start_failed\" },\n },\n });\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: agent.summary.name,\n pid,\n state: cleanupUncertain ? \"cleanup_uncertain\" : \"gone\",\n });\n if (!cleanupUncertain) this.#releaseProcessSlot(agent.summary.name);\n throw error;\n }\n }\n\n async reconcile(): Promise<void> {\n const nonterminalCompacts = await this.store.listNonterminalCompacts();\n const nonterminalSends = await this.store.listNonterminalSends();\n const activeIncarnations = await this.store.listActiveIncarnations();\n const activeWorkAgents = new Set([\n ...nonterminalSends.map((send) => send.agentName),\n ...nonterminalCompacts\n .filter((compact) => compact.state === \"dispatching\")\n .map((compact) => compact.agentName),\n ]);\n for (const incarnation of activeIncarnations) {\n if (incarnation.state !== \"cleanup_uncertain\") continue;\n this.#processSlots.add(incarnation.agentName);\n if (incarnation.pid === null || !(await waitForProcessGroupExit(incarnation.pid))) continue;\n await this.store.putIncarnation({ ...incarnation, state: \"gone\" });\n this.#releaseProcessSlot(incarnation.agentName);\n const agent = await this.store.getAgent(incarnation.agentName);\n if (agent?.summary.process.state !== \"cleanup_uncertain\") continue;\n const interrupted =\n activeWorkAgents.has(incarnation.agentName) ||\n agent.summary.error?.code === \"runtime_interrupted\";\n await this.store.putAgent({\n ...agent,\n summary: {\n ...agent.summary,\n state: interrupted ? \"failed\" : \"idle\",\n process: { state: \"absent\" },\n error: interrupted ? { code: \"runtime_interrupted\" } : undefined,\n },\n });\n }\n\n const piExecutionFailure = await this.#piExecutionFailure();\n\n for (const compact of nonterminalCompacts) {\n const input = { name: compact.agentName };\n if (compact.state === \"dispatching\") {\n const result = err<FleetClientError>({\n code: \"compaction_uncertain\",\n message: \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n });\n await this.store.putCompact({ ...compact, state: \"uncertain\" });\n await this.#remember(compact.compactId, \"compact\", input, result);\n } else if (piExecutionFailure === null) {\n await this.compact(input, compact.compactId);\n }\n }\n\n for (const send of nonterminalSends) {\n if (send.agentId === undefined) {\n throw new Error(`Durable send ${send.sendId} is missing its agent generation`);\n }\n const input: SendInput = {\n name: send.agentName,\n expectedAgentId: send.agentId,\n message: send.message,\n delivery: send.delivery ?? \"steer\",\n };\n if (send.state === \"dispatching\") {\n const result = err<FleetClientError>({\n code: \"delivery_uncertain\",\n message: `Delivery of ${send.sendId} was interrupted and will not be replayed.`,\n });\n await this.store.putSend({ ...send, state: \"uncertain\" });\n await this.#remember(send.sendId, \"send\", input, result);\n continue;\n }\n if (piExecutionFailure !== null) continue;\n const agent = await this.store.getAgent(send.agentName);\n if (agent === null || agent.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: agent === null ? \"agent_not_found\" : \"incarnation_cleanup_uncertain\",\n message:\n agent === null\n ? `Agent ${send.agentName} was not found.`\n : `pi-fleet cannot prove the previous process for ${send.agentName} is gone.`,\n });\n await this.store.putSend({ ...send, state: \"failed\" });\n await this.#remember(send.sendId, \"send\", input, result);\n continue;\n }\n const result = await this.#enqueueSend(send.agentName, async () => {\n const ordinal = send.ordinal ?? (await this.store.nextSendOrdinal(send.agentName));\n return this.#dispatchSend(input, send.sendId, send.acceptedAt, agent, ordinal);\n });\n await this.#remember(send.sendId, \"send\", input, result);\n }\n\n for (const operation of await this.store.listPendingOperations()) {\n if (operation.method === \"send\") continue;\n const target = operation.targetAgent;\n if (operation.method === \"create\") {\n const agent = await this.store.getAgent(operation.targetName);\n const hasActiveIncarnation = activeIncarnations.some(\n (incarnation) => incarnation.agentId === target?.id,\n );\n const startFailed = err<FleetClientError>({\n code: \"pi_start_failed\",\n message: `Creation of ${operation.targetName} stopped before Pi was safely dispatched.`,\n });\n if (\n target !== undefined &&\n agent?.summary.id === target.id &&\n agent.summary.state === \"restoring\" &&\n !hasActiveIncarnation\n ) {\n await this.#rollbackProvisionalCreate(agent, operation.operationId, startFailed);\n } else if (target !== undefined && agent?.summary.id === target.id) {\n const result =\n agent.summary.state === \"idle\"\n ? ok<CreateResult>({\n schemaVersion: 1,\n type: \"agent.created\",\n agent: agent.summary,\n })\n : err<FleetClientError>({\n code: publicAgentFailureCode(agent.summary.error?.code, \"runtime_interrupted\"),\n message: `Creation of ${operation.targetName} did not settle successfully.`,\n });\n await this.store.putOperation({ ...operation, state: \"completed\", result });\n } else if (target === undefined && agent === null && isCreateRequest(operation.request)) {\n // No agent row was ever committed, so creation is proven undispatched and\n // the exact retained request can resume once Pi is available again.\n if (piExecutionFailure === null)\n await this.create(operation.request, operation.operationId);\n } else {\n await this.store.putOperation({ ...operation, state: \"completed\", result: startFailed });\n }\n } else if (operation.method === \"destroy\") {\n if (target === undefined) {\n await this.store.putOperation({\n ...operation,\n state: \"completed\",\n result: this.#notFound(operation.targetName),\n });\n } else {\n // The bound agent name is authoritative for the durable request identity.\n await this.destroy(\n { name: target.name, expectedAgentId: target.id },\n operation.operationId,\n );\n }\n } else if (operation.method === \"compact\") {\n if (target === undefined) {\n await this.store.putOperation({\n ...operation,\n state: \"completed\",\n result: this.#notFound(operation.targetName),\n });\n } else if (piExecutionFailure === null) {\n await this.compact(\n { name: target.name, expectedAgentId: target.id },\n operation.operationId,\n );\n }\n }\n }\n }\n\n async status(input: StatusInput): Promise<Result<StatusResult, FleetClientError>> {\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n const agent = await this.store.getAgent(input.name);\n if (agent === null) return this.#notFound(input.name);\n return (\n this.#staleTarget<StatusResult>(input.expectedAgentId, agent) ??\n ok({ schemaVersion: 1, type: \"agent.status\", agent: agent.summary })\n );\n }\n\n async list(): Promise<Result<ListResult, FleetClientError>> {\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n const agents = await this.store.listAgents();\n return ok({\n schemaVersion: 1,\n type: \"agent.list\",\n agents: agents.map((agent) => agent.summary),\n });\n }\n\n async waitForIdle(\n input: StatusInput,\n signal: AbortSignal,\n ): Promise<Result<StatusResult, FleetClientError>> {\n const current = await this.status(input);\n if (!current.ok || current.value.agent.state === \"idle\") return current;\n if (current.value.agent.state === \"failed\") {\n return err({\n code: publicAgentFailureCode(current.value.agent.error?.code),\n message: `Agent ${input.name} failed before reaching idle.`,\n });\n }\n const coordinator = this.#coordinators.get(input.name);\n if (coordinator === undefined) {\n return err({ code: \"state_corrupt\", message: `Agent ${input.name} has no active process.` });\n }\n try {\n const boundary = await coordinator.waitForIdle(signal);\n return (\n this.#staleTarget<StatusResult>(input.expectedAgentId, boundary.agent) ??\n ok({ schemaVersion: 1, type: \"agent.status\", agent: boundary.agent.summary })\n );\n } catch (error: unknown) {\n if (signal.aborted) throw error;\n return err({\n code: \"runtime_interrupted\",\n message: `Agent ${input.name} was interrupted before becoming idle.`,\n });\n }\n }\n\n prepareReceive(\n input: StatusInput,\n start: ReceiveStart,\n untilIdle: boolean,\n signal: AbortSignal,\n ): Promise<Result<PreparedReceive, FleetClientError>> {\n return this.#enqueueAgent(input.name, async () => {\n if (this.#closing) return this.#runtimeUnavailable();\n if (this.#storageFailure !== null) {\n return err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" });\n }\n if (this.#journal === undefined) {\n return err({ code: \"protocol_incompatible\", message: \"Semantic receive is unavailable.\" });\n }\n const agent = await this.store.getAgent(input.name);\n if (agent === null) return this.#notFound(input.name);\n const stale = this.#staleTarget<PreparedReceive>(input.expectedAgentId, agent);\n if (stale !== null) return stale;\n if (agent.summary.state === \"failed\") {\n return err({\n code: publicAgentFailureCode(agent.summary.error?.code),\n message: `Agent ${input.name} is failed.`,\n });\n }\n const agentId = agent.summary.id as AgentId;\n const stream = await this.#journal.openReceive(agentId, start, signal);\n if (!untilIdle) return ok({ agentId, stream, idle: null });\n\n const coordinator = this.#coordinators.get(input.name);\n if (coordinator !== undefined) {\n const { completion } = await coordinator.registerIdleWaiter(signal);\n const idle = completion.then(\n (boundary) => ok({ idleEventPosition: boundary.idleEventPosition }),\n () =>\n err<FleetClientError>({\n code: \"runtime_interrupted\",\n message: `Agent ${input.name} was interrupted before becoming idle.`,\n }),\n );\n return ok({ agentId, stream, idle });\n }\n if (agent.summary.state !== \"idle\") {\n return err({\n code: \"state_corrupt\",\n message: `Agent ${input.name} has no active process.`,\n });\n }\n const idleEventPosition =\n (await this.#journal.idleEventHighWater(agentId)) ??\n (await this.#journal.markIdle(agentId));\n return ok({\n agentId,\n stream,\n idle: Promise.resolve(ok({ idleEventPosition })),\n });\n });\n }\n\n destroy(\n input: DestroyInput,\n operationId: string,\n ): Promise<Result<DestroyResult, FleetClientError>> {\n if (this.#closing) return Promise.resolve(this.#runtimeUnavailable());\n if (this.#storageFailure !== null) {\n void this.#coordinators\n .get(input.name)\n ?.process.stop()\n .catch(() => undefined);\n return Promise.resolve(\n err({ code: \"storage_unavailable\", message: \"pi-fleet storage is unavailable.\" }),\n );\n }\n return this.#runOperation(operationId, \"destroy\", input, async () => {\n this.#destroyingAgents.add(input.name);\n try {\n if (this.#compactingAgents.has(input.name)) {\n const replay = await this.#operation<DestroyResult>(operationId, \"destroy\", input);\n if (replay !== null) return replay;\n const agent = await this.store.getAgent(input.name);\n if (agent !== null) await this.#recordOperationTarget(operationId, agent);\n }\n if (this.#compactingAgents.has(input.name)) {\n await this.#coordinators\n .get(input.name)\n ?.stop(\"destroy\")\n .catch(() => undefined);\n }\n return await this.#enqueueAgent(input.name, () => this.#destroyImpl(input, operationId));\n } finally {\n this.#destroyingAgents.delete(input.name);\n }\n });\n }\n\n async #destroyImpl(\n input: DestroyInput,\n operationId: string,\n ): Promise<Result<DestroyResult, FleetClientError>> {\n const replay = await this.#operation<DestroyResult>(operationId, \"destroy\", input);\n if (replay !== null) return replay;\n const stored = await this.store.getAgent(input.name);\n if (stored !== null) {\n const staleTarget = this.#staleTarget<DestroyResult>(input.expectedAgentId, stored);\n if (staleTarget !== null) {\n await this.#remember(operationId, \"destroy\", input, staleTarget);\n return staleTarget;\n }\n }\n if (stored?.summary.process.state === \"cleanup_uncertain\") {\n const result = err<FleetClientError>({\n code: \"destroy_incomplete\",\n message: `pi-fleet cannot destroy ${input.name} until its previous process is proven gone.`,\n });\n await this.#remember(operationId, \"destroy\", input, result);\n return result;\n }\n if (stored !== null) await this.#recordOperationTarget(operationId, stored);\n const coordinator = this.#coordinators.get(input.name);\n if (coordinator !== undefined) {\n try {\n await coordinator.stop(\"destroy\");\n } catch {\n const result = err<FleetClientError>({\n code: \"destroy_incomplete\",\n message: `pi-fleet could not prove the Pi process for ${input.name} was removed.`,\n });\n await this.#remember(operationId, \"destroy\", input, result);\n return result;\n }\n }\n this.#coordinators.delete(input.name);\n const pending = await this.store.getOperation(operationId);\n const agent = await this.store.deleteAgent(input.name, {\n operationId,\n fingerprint: pending?.fingerprint ?? JSON.stringify(input),\n destroyedAt: this.#now(),\n });\n if (agent === null) return this.#rememberNotFound(operationId, \"destroy\", input);\n this.#onAgentDestroyed(agent.summary.id as AgentId);\n const result = ok<DestroyResult>({\n schemaVersion: 1,\n type: \"agent.destroyed\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n });\n await this.#remember(operationId, \"destroy\", input, result);\n return result;\n }\n\n async releaseAgentProcess(name: string): Promise<void> {\n const coordinator = this.#coordinators.get(name);\n if (coordinator === undefined) return;\n await coordinator.stop(\"idle_release\");\n this.#coordinators.delete(name);\n }\n\n beginShutdown(): void {\n this.#closing = true;\n }\n\n async drainStdoutAndJournal(): Promise<void> {\n await Promise.all(\n [...this.#coordinators.values()].map((coordinator) => {\n const process = coordinator.process as PiProcess & { drainStdout?: () => Promise<void> };\n return process.drainStdout?.() ?? Promise.resolve();\n }),\n );\n await this.#journal?.ingestion.drain();\n }\n\n async stopProcessTrees(): Promise<void> {\n const stops = await Promise.allSettled(\n [...this.#coordinators.values()].map((coordinator) => coordinator.stop(\"runtime_shutdown\")),\n );\n this.#coordinators.clear();\n for (const incarnationId of [...this.#journalSinks.keys()]) {\n this.#finishJournalSink(incarnationId);\n }\n await this.#journal?.closeIngestion();\n const failure = stops.find(\n (result): result is PromiseRejectedResult => result.status === \"rejected\",\n );\n if (failure !== undefined) throw failure.reason;\n }\n\n async close(): Promise<void> {\n this.beginShutdown();\n await this.drainStdoutAndJournal();\n await this.stopProcessTrees();\n }\n\n async #dispatchSend(\n input: SendInput,\n operationId: string,\n acceptedAt: string,\n initialAgent: StoredAgent,\n ordinal: number,\n ): Promise<Result<SendResult, FleetClientError>> {\n let agent = initialAgent;\n let incarnationId: string | null = null;\n let startingProcess: PiProcess | null = null;\n let restoring = false;\n try {\n let coordinator = this.#coordinators.get(input.name);\n if (this.#launcher !== undefined && coordinator === undefined) {\n const reservation = this.#reserveProcessSlot(input.name);\n if (reservation === \"existing\") {\n coordinator = await this.#waitForCoordinator(input.name);\n if (coordinator === undefined) {\n throw new Error(`Restoration of ${input.name} did not produce a live Pi process.`);\n }\n agent = coordinator.storedAgent;\n } else if (reservation === \"full\") {\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"failed\",\n acceptedAt,\n });\n return err({\n code: \"capacity_exceeded\",\n message: `pi-fleet has reached its ${String(this.#limits.maxResidentProcesses)} process limit.`,\n });\n } else {\n restoring = true;\n agent = await this.#markRestoring(agent);\n incarnationId = randomUUID();\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: null,\n state: \"starting\",\n });\n const journalSink = await this.#openJournalSink(agent, incarnationId);\n startingProcess = await this.#launcher.start(\n agent.launch,\n true,\n async (pid) => {\n await this.store.putIncarnation({\n incarnationId: incarnationId!,\n agentId: agent.summary.id,\n agentName: input.name,\n pid,\n state: \"starting\",\n });\n },\n journalSink?.pushRecord,\n );\n const process = startingProcess;\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: process.pid,\n state: \"live\",\n });\n const state = await process.getState();\n const profile = observeSession(agent.launch, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n });\n agent = {\n ...agent,\n launch: profile,\n summary: {\n ...agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n error: undefined,\n },\n };\n await this.store.putAgent(agent);\n coordinator = this.#attachCoordinator(agent, process, incarnationId);\n restoring = false;\n }\n }\n\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"dispatching\",\n acceptedAt,\n });\n if (coordinator !== undefined) {\n await coordinator.send(input.message, input.delivery ?? \"steer\");\n await coordinator.reconcileState();\n }\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"acknowledged\",\n acceptedAt,\n });\n return ok({\n schemaVersion: 1,\n type: \"message.accepted\",\n agent: { id: agent.summary.id, name: agent.summary.name },\n acceptedAt,\n });\n } catch (error: unknown) {\n if (restoring && incarnationId !== null) {\n let cleanupUncertain = error instanceof PiCleanupUncertainError;\n let cleanupPid = error instanceof PiCleanupUncertainError ? error.pid : null;\n if (startingProcess !== null) {\n cleanupPid = startingProcess.pid;\n try {\n await startingProcess.stop();\n } catch {\n cleanupUncertain = true;\n }\n }\n const code = cleanupUncertain ? \"incarnation_cleanup_uncertain\" : \"pi_start_failed\";\n this.#finishJournalSink(incarnationId);\n agent = {\n ...agent,\n summary: {\n ...agent.summary,\n state: \"failed\",\n process: { state: cleanupUncertain ? \"cleanup_uncertain\" : \"absent\" },\n error: { code },\n },\n };\n await this.store.putAgent(agent);\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: cleanupPid,\n state: cleanupUncertain ? \"cleanup_uncertain\" : \"gone\",\n });\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"failed\",\n acceptedAt,\n });\n if (!cleanupUncertain) this.#releaseProcessSlot(input.name);\n return err({\n code,\n message: cleanupUncertain\n ? `pi-fleet could not prove the failed Pi restoration for ${input.name} was removed.`\n : `Pi failed to restore for ${input.name}; the message was not dispatched.`,\n });\n }\n\n if (!this.#coordinators.has(input.name)) this.#releaseProcessSlot(input.name);\n if (incarnationId !== null && !this.#coordinators.has(input.name)) {\n await this.store.putIncarnation({\n incarnationId,\n agentId: agent.summary.id,\n agentName: input.name,\n pid: null,\n state: \"cleanup_uncertain\",\n });\n }\n await this.store.putSend({\n sendId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n ordinal,\n message: input.message,\n delivery: input.delivery ?? \"steer\",\n state: \"uncertain\",\n acceptedAt,\n });\n return err({\n code: \"delivery_uncertain\",\n message: \"Pi may have accepted the message; pi-fleet will not replay it automatically.\",\n });\n }\n }\n\n async #markRestoring(agent: StoredAgent): Promise<StoredAgent> {\n const restoring: StoredAgent = {\n ...agent,\n summary: { ...agent.summary, state: \"restoring\", process: { state: \"starting\" } },\n };\n await this.store.putAgent(restoring);\n return restoring;\n }\n\n #attachCoordinator(\n agent: StoredAgent,\n process: PiProcess,\n incarnationId: string,\n ): AgentCoordinator {\n const coordinator = new AgentCoordinator(\n this.store,\n agent,\n process,\n incarnationId,\n this.#now,\n () => {\n this.#finishJournalSink(incarnationId);\n if (this.#coordinators.get(agent.summary.name) === coordinator) {\n this.#coordinators.delete(agent.summary.name);\n this.#releaseProcessSlot(agent.summary.name);\n }\n },\n async (idleAgent) => (await this.#journal?.markIdle(idleAgent.summary.id as AgentId)) ?? 0,\n );\n this.#coordinators.set(agent.summary.name, coordinator);\n return coordinator;\n }\n\n async #openJournalSink(\n agent: StoredAgent,\n incarnationId: string,\n ): Promise<JournalIncarnationSink | undefined> {\n if (this.#journal === undefined || this.#journalStore === undefined) return undefined;\n const agentId = agent.summary.id as AgentId;\n const epochs = await this.#journalStore.getEpochs(agentId);\n const last = epochs.at(-1);\n const epoch = (\n last?.state === \"open\" ? last.epoch : (last?.epoch ?? -1) + 1\n ) as ContinuityEpoch;\n if (last?.state !== \"open\") {\n await this.#journalStore.putEpoch({\n agentId,\n epoch,\n state: \"open\",\n lastSafeEventPosition: (await this.#journalStore.getHighWater(agentId))?.eventPosition ?? 0,\n openedAt: this.#now(),\n });\n }\n const sink = await this.#journal.openIncarnation({\n agentId,\n incarnationId: incarnationId as IncarnationId,\n epoch,\n });\n this.#journalSinks.set(incarnationId, sink);\n return sink;\n }\n\n #finishJournalSink(incarnationId: string): void {\n const sink = this.#journalSinks.get(incarnationId);\n if (sink === undefined) return;\n this.#journalSinks.delete(incarnationId);\n sink.finish();\n }\n\n #enqueueAgent<T>(name: string, operation: () => Promise<T>): Promise<T> {\n return enqueueNamed(this.#agentLanes, name, operation);\n }\n\n #enqueueSend<T>(name: string, operation: () => Promise<T>): Promise<T> {\n const previous = this.#sendLanes.get(name) ?? Promise.resolve();\n const result = previous.then(operation, operation);\n const settled = result.then(\n () => undefined,\n () => undefined,\n );\n this.#sendLanes.set(name, settled);\n void settled.finally(() => {\n if (this.#sendLanes.get(name) === settled) this.#sendLanes.delete(name);\n });\n return result;\n }\n\n async #waitForCoordinator(\n name: string,\n timeoutMs = 15_000,\n ): Promise<AgentCoordinator | undefined> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const coordinator = this.#coordinators.get(name);\n if (coordinator !== undefined) return coordinator;\n await new Promise((resolve) => setTimeout(resolve, 10));\n }\n return this.#coordinators.get(name);\n }\n\n #reserveProcessSlot(name: string): \"acquired\" | \"existing\" | \"full\" {\n if (this.#processSlots.has(name)) return \"existing\";\n if (this.#processSlots.size >= this.#limits.maxResidentProcesses) return \"full\";\n this.#processSlots.add(name);\n return \"acquired\";\n }\n\n #releaseProcessSlot(name: string): void {\n this.#processSlots.delete(name);\n }\n\n #staleTarget<T>(\n expectedAgentId: string | undefined,\n agent: StoredAgent,\n ): Result<T, FleetClientError> | null {\n if (expectedAgentId === undefined || expectedAgentId === agent.summary.id) return null;\n return err({\n code: \"stale_agent\",\n message: `Agent ${agent.summary.name} was recreated; this operation targets an older generation.`,\n });\n }\n\n #runtimeUnavailable<T>(): Result<T, FleetClientError> {\n return err({ code: \"runtime_unavailable\", message: \"pi-fleet runtime is shutting down.\" });\n }\n\n #notFound<T>(name: string): Result<T, FleetClientError> {\n return err({ code: \"agent_not_found\", message: `Agent ${name} was not found.` });\n }\n\n async #rememberCompactFailure(\n operationId: string,\n input: CompactInput,\n requestedAt: string,\n failure: FleetClientError,\n ): Promise<Result<CompactResult, FleetClientError>> {\n const agent = await this.store.getAgent(input.name);\n if (agent !== null) {\n await this.store.putCompact({\n compactId: operationId,\n agentId: agent.summary.id,\n agentName: input.name,\n state: \"failed\",\n requestedAt,\n error: failure,\n });\n }\n const result: Result<CompactResult, FleetClientError> = err(failure);\n await this.#remember(operationId, \"compact\", input, result);\n return result;\n }\n\n #piIdentityFailure(callerIdentity: PiRuntimeIdentity | undefined): FleetClientError | null {\n if (callerIdentity === undefined || samePiRuntimeIdentity(callerIdentity, this.#piIdentity)) {\n return null;\n }\n return {\n code: \"pi_runtime_mismatch\",\n message:\n \"The running pi-fleet runtime uses a different Pi installation; repair or restart it.\",\n };\n }\n\n async #piExecutionFailure(): Promise<FleetClientError | null> {\n if (this.#launcher?.preflight === undefined) return null;\n try {\n await this.#launcher.preflight();\n return null;\n } catch (error: unknown) {\n if (!(error instanceof PiExecutionUnavailableError)) throw error;\n const messages: Record<PiExecutionUnavailableError[\"code\"], string> = {\n pi_not_found: \"The selected Pi executable was not found.\",\n pi_not_executable: \"The selected Pi executable cannot be executed.\",\n pi_version_unavailable: \"The selected Pi version could not be determined.\",\n pi_version_unsupported: \"The selected Pi version is not supported.\",\n pi_installation_changed: \"The selected Pi installation changed during validation.\",\n };\n return { code: error.code, message: messages[error.code] };\n }\n }\n\n async #rememberNotFound<T>(\n operationId: string,\n method: \"send\" | \"destroy\" | \"compact\",\n payload: object,\n ): Promise<Result<T, FleetClientError>> {\n const result = this.#notFound<T>(String(\"name\" in payload ? payload.name : \"unknown\"));\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n\n #runOperation<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n operation: () => Promise<Result<T, FleetClientError>>,\n ): Promise<Result<T, FleetClientError>> {\n const fingerprint = fingerprintPayload(payload);\n const inflight = this.#inflightOperations.get(operationId);\n if (inflight !== undefined) {\n if (inflight.method !== method || inflight.fingerprint !== fingerprint) {\n return Promise.resolve(\n err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n }),\n );\n }\n return inflight.promise as Promise<Result<T, FleetClientError>>;\n }\n const promise = operation();\n this.#inflightOperations.set(operationId, {\n method,\n fingerprint,\n promise: promise as Promise<Result<unknown, FleetClientError>>,\n });\n void promise.then(\n () => this.#inflightOperations.delete(operationId),\n () => this.#inflightOperations.delete(operationId),\n );\n return promise;\n }\n\n async #operation<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n ): Promise<Result<T, FleetClientError> | null> {\n const cached = this.#operations.get(operationId);\n const stored = cached === undefined ? await this.store.getOperation(operationId) : null;\n const recorded =\n cached ??\n (stored?.state === \"completed\" && stored.result !== null\n ? {\n method: stored.method,\n fingerprint: stored.fingerprint,\n result: stored.result as Result<unknown, FleetClientError>,\n }\n : undefined);\n if (recorded === undefined) {\n const fingerprint = fingerprintPayload(payload);\n if (stored !== null) {\n if (stored.method !== method || stored.fingerprint !== fingerprint) {\n return err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n });\n }\n const name = \"name\" in payload ? String(payload.name) : \"\";\n const agent = name.length === 0 ? null : await this.store.getAgent(name);\n if (method === \"create\") {\n if (stored.targetAgent === undefined) {\n if (agent === null) return null;\n const result = err<FleetClientError>({\n code: \"name_taken\",\n message: `Agent ${name} already exists.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (agent === null || agent.summary.id !== stored.targetAgent.id) {\n const result = err<FleetClientError>({\n code: \"stale_agent\",\n message: `Creation operation ${operationId} targets an unavailable agent generation.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n } else if (agent.summary.state === \"idle\" || agent.summary.state === \"working\") {\n const result = ok<CreateResult>({\n schemaVersion: 1,\n type: \"agent.created\",\n agent: agent.summary,\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n } else if (agent.summary.state === \"failed\") {\n const result = err<FleetClientError>({\n code: publicAgentFailureCode(agent.summary.error?.code, \"pi_start_failed\"),\n message: `Creation of ${name} did not complete safely.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n } else {\n return err({\n code: \"operation_in_progress\",\n message: `Operation ${operationId} is still pending.`,\n });\n }\n } else if (method === \"destroy\") {\n if (stored.targetAgent === undefined) {\n const result = this.#notFound<DestroyResult>(name);\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n if (agent === null) {\n const result = ok<DestroyResult>({\n schemaVersion: 1,\n type: \"agent.destroyed\",\n agent: {\n id: stored.targetAgent.id,\n name: stored.targetAgent.name || String(\"name\" in payload ? payload.name : \"\"),\n },\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n // Resume the singular destroy operation against the surviving agent.\n return null;\n } else if (method === \"send\") {\n const send = await this.store.getSend(operationId);\n if (stored.targetAgent === undefined) {\n const result = this.#notFound<SendResult>(name);\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n if (send === null) {\n // The operation exists but no send record was committed, so Pi could not have been\n // dispatched. Retrying from the beginning is safe.\n await this.store.deleteOperation(operationId);\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n targetName: String(\"name\" in payload ? payload.name : \"\"),\n state: \"pending\",\n result: null,\n request: payload,\n });\n return null;\n }\n return err({\n code: \"operation_in_progress\",\n message: `Operation ${operationId} is still pending.`,\n });\n } else {\n const compact = await this.store.getCompact(operationId);\n if (stored.targetAgent === undefined) {\n const result = this.#notFound<CompactResult>(name);\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n if (compact?.state === \"completed\" && compact.result !== undefined) {\n const target = stored.targetAgent;\n if (target === undefined) {\n return err({ code: \"state_corrupt\", message: \"Compaction target is missing.\" });\n }\n const result = ok<CompactResult>({\n schemaVersion: 1,\n type: \"agent.compacted\",\n agent: target,\n compaction: compact.result,\n });\n await this.#remember(operationId, method, payload, result);\n return result as Result<T, FleetClientError>;\n }\n if (compact?.state === \"failed\" && compact.error !== undefined) {\n const result = err<FleetClientError>(compact.error);\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (compact?.state === \"dispatching\" || compact?.state === \"uncertain\") {\n const result = err<FleetClientError>({\n code: \"compaction_uncertain\",\n message: \"Pi may have started compaction; pi-fleet will not replay it automatically.\",\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (\n stored.targetAgent !== undefined &&\n (agent === null || agent.summary.id !== stored.targetAgent.id)\n ) {\n const result = err<FleetClientError>({\n code: \"agent_not_found\",\n message: `The agent targeted by operation ${operationId} no longer exists.`,\n });\n await this.#remember(operationId, method, payload, result);\n return result;\n }\n if (compact === null || compact.state === \"pending\") return null;\n return err({ code: \"state_corrupt\", message: \"Compaction state is incomplete.\" });\n }\n }\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n targetName: String(\"name\" in payload ? payload.name : \"\"),\n state: \"pending\",\n result: null,\n request: payload,\n });\n return null;\n }\n if (recorded.method !== method || recorded.fingerprint !== fingerprintPayload(payload)) {\n return err({\n code: \"operation_conflict\",\n message: `Operation ${operationId} was already used with a different request.`,\n });\n }\n return recorded.result as Result<T, FleetClientError>;\n }\n\n async #rollbackProvisionalCreate(\n agent: StoredAgent,\n operationId: string,\n result: Result<CreateResult, FleetClientError>,\n ): Promise<void> {\n const operation = await this.store.getOperation(operationId);\n if (\n operation === null ||\n operation.method !== \"create\" ||\n operation.state !== \"pending\" ||\n operation.targetAgent?.id !== agent.summary.id\n ) {\n throw new Error(\"Provisional create operation receipt is missing or inconsistent\");\n }\n await this.store.rollbackProvisionalCreate(agent.summary.name, {\n operationId: operation.operationId,\n method: operation.method,\n fingerprint: operation.fingerprint,\n state: \"completed\",\n result,\n targetName: agent.summary.name,\n });\n }\n\n async #recordOperationTarget(operationId: string, agent: StoredAgent): Promise<void> {\n const operation = await this.store.getOperation(operationId);\n if (operation === null || operation.state !== \"pending\") return;\n await this.store.putOperation({\n ...operation,\n targetName: agent.summary.name,\n targetAgent: { id: agent.summary.id, name: agent.summary.name },\n });\n }\n\n async #remember<T>(\n operationId: string,\n method: RecordedOperation[\"method\"],\n payload: object,\n result: Result<T, FleetClientError>,\n ): Promise<void> {\n const fingerprint = fingerprintPayload(payload);\n this.#operations.set(operationId, { method, fingerprint, result });\n const existing = await this.store.getOperation(operationId);\n await this.store.putOperation({\n operationId,\n method,\n fingerprint,\n targetName: existing?.targetName ?? String(\"name\" in payload ? payload.name : \"\"),\n state: \"completed\",\n result,\n ...(existing?.targetAgent === undefined ? {} : { targetAgent: existing.targetAgent }),\n });\n }\n}\n\nfunction isCreateRequest(request: unknown): request is CreateInput {\n return (\n typeof request === \"object\" &&\n request !== null &&\n \"name\" in request &&\n typeof (request as { name: unknown }).name === \"string\"\n );\n}\n\nfunction publicAgentFailureCode(\n code: string | undefined,\n fallback: FleetClientError[\"code\"] = \"runtime_interrupted\",\n): FleetClientError[\"code\"] {\n return isPiFleetErrorCode(code) ? code : fallback;\n}\n\n/**\n * Content-free durable identity for a mutation request.\n *\n * The digest excludes transport-only `expectedAgentId` so an omitted caller\n * generation and an explicitly reconstructed one share one durable identity,\n * and it retains no prompt, message, cwd, or Pi argument content.\n */\nexport function fingerprintPayload(payload: object): string {\n const durable = { ...(payload as Record<string, unknown>) };\n delete durable.expectedAgentId;\n const canonical = JSON.stringify(canonicalizeFingerprintValue(durable));\n return `sha256:${createHash(\"sha256\").update(canonical).digest(\"hex\")}`;\n}\n\nfunction canonicalizeFingerprintValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map((item) => canonicalizeFingerprintValue(item));\n if (value === null || typeof value !== \"object\") return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, item]) => item !== undefined)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, item]) => [key, canonicalizeFingerprintValue(item)]),\n );\n}\n\nfunction enqueueNamed<T>(\n lanes: Map<string, Promise<void>>,\n name: string,\n operation: () => Promise<T>,\n): Promise<T> {\n const previous = lanes.get(name) ?? Promise.resolve();\n const result = previous.then(operation, operation);\n const settled = result.then(\n () => undefined,\n () => undefined,\n );\n lanes.set(name, settled);\n void settled.finally(() => {\n if (lanes.get(name) === settled) lanes.delete(name);\n });\n return result;\n}\n", "export type AgentId = string & { readonly __brand: \"AgentId\" };\nexport type AgentEventId = string & { readonly __brand: \"AgentEventId\" };\nexport type ActivityId = string & { readonly __brand: \"ActivityId\" };\nexport type ReceiveCursor = string & { readonly __brand: \"ReceiveCursor\" };\nexport type ContinuityEpoch = number & { readonly __brand: \"ContinuityEpoch\" };\n\nexport type AgentState = \"restoring\" | \"working\" | \"idle\" | \"failed\" | \"destroying\";\nexport type ProcessState = \"resident\" | \"starting\" | \"absent\" | \"cleanup_uncertain\";\n\nexport interface AgentSummary {\n readonly id: string;\n readonly name: string;\n readonly state: AgentState;\n readonly process: { readonly state: ProcessState };\n readonly session: { readonly path: string | null; readonly id: string | null };\n readonly error?: { readonly code: string } | undefined;\n}\n\nexport const PI_FLEET_ERROR_CODES = [\n \"agent_busy\",\n \"agent_destroyed\",\n \"agent_destroying\",\n \"agent_not_found\",\n \"capacity_exceeded\",\n \"cancelled\",\n \"compaction_failed\",\n \"compaction_uncertain\",\n \"cursor_expired\",\n \"cursor_invalid\",\n \"cursor_wrong_agent\",\n \"delivery_uncertain\",\n \"destroy_incomplete\",\n \"incarnation_cleanup_uncertain\",\n \"internal_error\",\n \"invalid_arguments\",\n \"invalid_request\",\n \"name_taken\",\n \"nothing_to_compact\",\n \"observation_uncertain\",\n \"operation_conflict\",\n \"operation_in_progress\",\n \"pi_installation_changed\",\n \"pi_not_executable\",\n \"pi_not_found\",\n \"pi_runtime_mismatch\",\n \"pi_service_mismatch\",\n \"pi_start_failed\",\n \"pi_version_unavailable\",\n \"pi_version_unsupported\",\n \"protocol_error\",\n \"protocol_incompatible\",\n \"receive_resource_exhausted\",\n \"runtime_interrupted\",\n \"runtime_unavailable\",\n \"runtime_upgrade_deferred\",\n \"semantic_event_too_large\",\n \"stale_agent\",\n \"state_corrupt\",\n \"storage_unavailable\",\n \"timeout\",\n] as const;\n\nexport type PiFleetErrorCode = (typeof PI_FLEET_ERROR_CODES)[number];\n\nconst piFleetErrorCodeSet = new Set<string>(PI_FLEET_ERROR_CODES);\n\nexport function isPiFleetErrorCode(value: unknown): value is PiFleetErrorCode {\n return typeof value === \"string\" && piFleetErrorCodeSet.has(value);\n}\n\nexport interface SemanticEventBase {\n readonly id: AgentEventId;\n readonly activityId: ActivityId;\n readonly agentId: AgentId;\n readonly cursor: ReceiveCursor;\n readonly epoch: ContinuityEpoch;\n readonly sourceRawPosition: number;\n readonly observedAt: string;\n}\n\nexport interface AssistantThinkingStartedEvent extends SemanticEventBase {\n readonly type: \"assistant.thinking.started\";\n}\n\nexport interface AssistantThinkingFinishedEvent extends SemanticEventBase {\n readonly type: \"assistant.thinking.finished\";\n readonly text: string;\n}\n\nexport interface AssistantMessageStartedEvent extends SemanticEventBase {\n readonly type: \"assistant.message.started\";\n}\n\nexport interface AssistantMessageFinishedEvent extends SemanticEventBase {\n readonly type: \"assistant.message.finished\";\n readonly text: string;\n}\n\nexport interface ToolExecutionStartedEvent extends SemanticEventBase {\n readonly type: \"tool.execution.started\";\n readonly tool: {\n readonly callId: string;\n readonly name: string;\n readonly input: unknown;\n };\n}\n\nexport interface ToolExecutionFinishedEvent extends SemanticEventBase {\n readonly type: \"tool.execution.finished\";\n readonly tool: {\n readonly callId: string;\n readonly name: string;\n readonly input: unknown;\n readonly output: unknown;\n readonly isError: boolean;\n };\n}\n\nexport type SemanticEvent =\n | AssistantThinkingStartedEvent\n | AssistantThinkingFinishedEvent\n | AssistantMessageStartedEvent\n | AssistantMessageFinishedEvent\n | ToolExecutionStartedEvent\n | ToolExecutionFinishedEvent;\n\nexport interface ReceiveStream extends AsyncIterable<SemanticEvent> {\n /** Cursor for the registered replay/live boundary, available before the first event. */\n readonly cursor: ReceiveCursor;\n}\n", "export type NativeSessionSelector =\n | { readonly kind: \"none\" }\n | { readonly kind: \"session\"; readonly value: string }\n | { readonly kind: \"session-id\"; readonly value: string }\n | { readonly kind: \"fork\"; readonly value: string }\n | { readonly kind: \"continue\" }\n | { readonly kind: \"resume\" };\n\nexport interface ObservedSession {\n readonly path: string | null;\n readonly id: string;\n}\n\ninterface SelectorMatch {\n readonly selector: NativeSessionSelector;\n readonly start: number;\n readonly length: number;\n}\n\nconst VALUE_SELECTORS = new Map<string, \"session\" | \"session-id\" | \"fork\">([\n [\"--session\", \"session\"],\n [\"--session-id\", \"session-id\"],\n [\"--fork\", \"fork\"],\n]);\n\nconst BOOLEAN_SELECTORS = new Map<string, \"continue\" | \"resume\">([\n [\"--continue\", \"continue\"],\n [\"-c\", \"continue\"],\n [\"--resume\", \"resume\"],\n [\"-r\", \"resume\"],\n]);\n\nfunction findSelectorMatches(argv: readonly string[]): SelectorMatch[] {\n const matches: SelectorMatch[] = [];\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined) continue;\n\n const valueKind = VALUE_SELECTORS.get(token);\n if (valueKind !== undefined) {\n const value = argv[index + 1];\n if (value === undefined) {\n throw new Error(`${token} requires a value`);\n }\n matches.push({ selector: { kind: valueKind, value }, start: index, length: 2 });\n index += 1;\n continue;\n }\n\n const booleanKind = BOOLEAN_SELECTORS.get(token);\n if (booleanKind !== undefined) {\n matches.push({ selector: { kind: booleanKind }, start: index, length: 1 });\n }\n }\n\n return matches;\n}\n\nexport function analyzeSessionSelector(argv: readonly string[]): NativeSessionSelector {\n const matches = findSelectorMatches(argv);\n if (matches.length === 0) return { kind: \"none\" };\n if (matches.length > 1) {\n throw new Error(\"Conflicting Pi session selectors are not supported\");\n }\n return matches[0]!.selector;\n}\n\nexport function deriveRestorePiArgv(\n userPiArgv: readonly string[],\n observedSession: ObservedSession,\n): readonly string[] {\n const matches = findSelectorMatches(userPiArgv);\n if (matches.length > 1) {\n throw new Error(\"Conflicting Pi session selectors are not supported\");\n }\n\n const selector = matches[0]?.selector ?? { kind: \"none\" as const };\n if (selector.kind === \"session\" || selector.kind === \"session-id\") {\n return [...userPiArgv];\n }\n\n if (observedSession.path === null) {\n throw new Error(\"Pi did not report the concrete session path required for restoration\");\n }\n\n const selectorMatch = matches[0];\n const retainedArgv = userPiArgv.filter((_token, index) => {\n if (selectorMatch === undefined) return true;\n return index < selectorMatch.start || index >= selectorMatch.start + selectorMatch.length;\n });\n\n return [...retainedArgv, \"--session\", observedSession.path];\n}\n", "import {\n analyzeSessionSelector,\n deriveRestorePiArgv,\n type NativeSessionSelector,\n type ObservedSession,\n} from \"./session-selector.js\";\n\nexport interface AgentLaunchProfile {\n readonly cwd: string;\n readonly userPiArgv: readonly string[];\n readonly selector: NativeSessionSelector;\n readonly observedSession: ObservedSession | null;\n readonly restorePiArgv: readonly string[] | null;\n}\n\nexport interface CreateLaunchProfileInput {\n readonly cwd: string;\n readonly piArgv: readonly string[];\n}\n\nexport function createLaunchProfile(input: CreateLaunchProfileInput): AgentLaunchProfile {\n validatePersistentRpcArgv(input.piArgv);\n return {\n cwd: input.cwd,\n userPiArgv: [...input.piArgv],\n selector: analyzeSessionSelector(input.piArgv),\n observedSession: null,\n restorePiArgv: null,\n };\n}\n\nconst PI_VALUE_OPTIONS = new Set([\n \"--provider\",\n \"--model\",\n \"--api-key\",\n \"--system-prompt\",\n \"--append-system-prompt\",\n \"--name\",\n \"-n\",\n \"--session\",\n \"--session-id\",\n \"--fork\",\n \"--session-dir\",\n \"--models\",\n \"--tools\",\n \"-t\",\n \"--exclude-tools\",\n \"-xt\",\n \"--thinking\",\n \"--export\",\n \"--extension\",\n \"-e\",\n \"--skill\",\n \"--prompt-template\",\n \"--theme\",\n]);\n\nconst PI_BOOLEAN_OPTIONS = new Set([\n \"--continue\",\n \"-c\",\n \"--help\",\n \"-h\",\n \"--version\",\n \"-v\",\n \"--no-tools\",\n \"-nt\",\n \"--no-builtin-tools\",\n \"-nbt\",\n \"--no-extensions\",\n \"-ne\",\n \"--no-skills\",\n \"-ns\",\n \"--no-prompt-templates\",\n \"-np\",\n \"--no-themes\",\n \"--no-context-files\",\n \"-nc\",\n \"--verbose\",\n \"--approve\",\n \"-a\",\n \"--no-approve\",\n \"-na\",\n \"--offline\",\n]);\n\nexport function validatePersistentRpcArgv(piArgv: readonly string[]): void {\n for (let index = 0; index < piArgv.length; index += 1) {\n const token = piArgv[index]!;\n if ([\"--mode\", \"--print\", \"-p\", \"--no-session\", \"--resume\", \"-r\"].includes(token)) {\n throw new Error(`${token} is incompatible with persistent headless pi-fleet control`);\n }\n if (token === \"--\") {\n throw new Error(\n \"Pi positional prompt delivery after -- is incompatible with pi-fleet send ordering\",\n );\n }\n if (token.startsWith(\"@\")) {\n throw new Error(\n \"Pi @file prompt delivery is incompatible with pi-fleet-managed send ordering\",\n );\n }\n if (PI_VALUE_OPTIONS.has(token)) {\n if (piArgv[index + 1] === undefined) throw new Error(`${token} requires a value`);\n index += 1;\n continue;\n }\n if (PI_BOOLEAN_OPTIONS.has(token) || token.includes(\"=\")) continue;\n if (token === \"--list-models\") {\n const next = piArgv[index + 1];\n if (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) index += 1;\n continue;\n }\n if (token.startsWith(\"--\")) {\n const next = piArgv[index + 1];\n if (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) index += 1;\n continue;\n }\n if (token.startsWith(\"-\")) continue;\n throw new Error(\n `Pi positional prompt ${JSON.stringify(token)} is incompatible with pi-fleet send ordering`,\n );\n }\n}\n\nexport function observeSession(\n profile: AgentLaunchProfile,\n session: ObservedSession,\n): AgentLaunchProfile {\n return {\n ...profile,\n observedSession: session,\n restorePiArgv: deriveRestorePiArgv(profile.userPiArgv, session),\n };\n}\n", "export type Result<Value, Error> =\n | { readonly ok: true; readonly value: Value }\n | { readonly ok: false; readonly error: Error };\n\nexport function ok<Value>(value: Value): Result<Value, never> {\n return { ok: true, value };\n}\n\nexport function err<Error>(error: Error): Result<never, Error> {\n return { ok: false, error };\n}\n", "import { observeSession } from \"../pi/launch-profile.js\";\nimport {\n PiCompactionError,\n type PiCompactionResult,\n type PiDeliveryMode,\n type PiProcess,\n type PiState,\n} from \"../pi/process.js\";\nimport { waitForProcessGroupExit } from \"../platform/runtime/process-tree.js\";\nimport type { FleetStore, StoredAgent } from \"../store/fleet-store.js\";\n\nexport type CoordinatorStopReason = \"destroy\" | \"runtime_shutdown\" | \"idle_release\";\n\nexport interface IdleBoundary {\n readonly agent: StoredAgent;\n readonly idleEventPosition: number;\n}\n\ninterface IdleWaiter {\n readonly resolve: (boundary: IdleBoundary) => void;\n readonly reject: (error: Error) => void;\n readonly signal?: AbortSignal;\n readonly onAbort?: () => void;\n}\n\nexport class AgentCoordinator {\n readonly #idleWaiters = new Set<IdleWaiter>();\n #lane: Promise<void> = Promise.resolve();\n #stopReason: CoordinatorStopReason | null = null;\n #handlingFailure = false;\n #mayBeWorking = false;\n #idleEventPosition: number | null = null;\n #unsubscribeFrame: () => void;\n #unsubscribeExit: () => void;\n\n constructor(\n private readonly store: FleetStore,\n private agent: StoredAgent,\n readonly process: PiProcess,\n readonly incarnationId: string,\n private readonly now: () => string,\n private readonly onProcessExit: (error: Error | null) => void,\n private readonly onIdle?: (agent: StoredAgent) => Promise<number>,\n ) {\n this.#unsubscribeFrame = process.onFrame((frame) => {\n if (frame.type === \"agent_start\") this.#queueEvent(() => this.#markWorking());\n if (frame.type === \"agent_settled\") this.#queueEvent(() => this.#markIdle());\n });\n this.#unsubscribeExit = process.onExit((error) => {\n this.#queueEvent(() => this.#handleProcessExit(error));\n });\n }\n\n get storedAgent(): StoredAgent {\n return this.agent;\n }\n\n get idleEventPosition(): number | null {\n return this.#idleEventPosition;\n }\n\n /**\n * Delivers caller input to Pi.\n *\n * Follow-up delivery means \"wait until the current run finishes\", which Pi only\n * honours while a turn is active: a follow-up queued against an authoritatively\n * idle session would wait for a turn that may never start. Idle follow-up input\n * is therefore delivered as an ordinary prompt, matching what typing into an idle\n * Pi session does, while active follow-up keeps its queued semantics.\n */\n send(message: string, delivery: PiDeliveryMode = \"steer\"): Promise<void> {\n return this.#enqueue(async () => {\n const queueFollowUp = delivery === \"followUp\" && (await this.#isActive());\n this.#mayBeWorking = true;\n try {\n if (queueFollowUp) await this.process.followUp(message);\n else await this.process.prompt(message);\n } catch (error: unknown) {\n this.#mayBeWorking = false;\n throw error;\n }\n });\n }\n\n async #isActive(): Promise<boolean> {\n if (this.#mayBeWorking) return true;\n const state = await this.process.getState();\n return state.isStreaming || state.isCompacting || state.pendingMessageCount !== 0;\n }\n\n reconcileState(): Promise<PiState> {\n return this.#enqueue(async () => {\n const state = await this.process.getState();\n this.#applyObservedState(state);\n await this.store.putAgent(this.agent);\n return state;\n });\n }\n\n compact(): Promise<PiCompactionResult> {\n return this.#enqueue(async () => {\n const state = await this.process.getState();\n if (\n this.#mayBeWorking ||\n this.agent.summary.state !== \"idle\" ||\n state.isStreaming ||\n state.isCompacting ||\n state.pendingMessageCount !== 0\n ) {\n throw new Error(\"Agent is busy\");\n }\n this.#mayBeWorking = true;\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"working\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n await this.store.putAgent(this.agent);\n try {\n const result = await this.process.compact();\n await this.#markIdle();\n return result;\n } catch (error: unknown) {\n this.#mayBeWorking = false;\n if (error instanceof PiCompactionError) await this.#markIdle();\n throw error;\n }\n });\n }\n\n async registerIdleWaiter(\n signal?: AbortSignal,\n ): Promise<{ readonly completion: Promise<IdleBoundary> }> {\n let wait: Promise<IdleBoundary> | null = null;\n await this.#enqueue(async () => {\n if (signal?.aborted === true) throw new Error(\"Receive cancelled\");\n if (\n !this.#mayBeWorking &&\n this.agent.summary.state === \"idle\" &&\n this.#idleEventPosition !== null\n ) {\n wait = Promise.resolve({\n agent: this.agent,\n idleEventPosition: this.#idleEventPosition,\n });\n return;\n }\n\n let resolveIdle!: (boundary: IdleBoundary) => void;\n let rejectIdle!: (error: Error) => void;\n const pending = new Promise<IdleBoundary>((resolve, reject) => {\n resolveIdle = resolve;\n rejectIdle = reject;\n });\n void pending.catch(() => undefined);\n wait = pending;\n const waiter: IdleWaiter = {\n resolve: resolveIdle,\n reject: rejectIdle,\n ...(signal === undefined ? {} : { signal }),\n };\n this.#idleWaiters.add(waiter);\n if (signal !== undefined) {\n const onAbort = () => {\n this.#idleWaiters.delete(waiter);\n rejectIdle(new Error(\"Receive cancelled\"));\n };\n (waiter as { onAbort?: () => void }).onAbort = onAbort;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n if (signal.aborted) onAbort();\n }\n if (!this.#idleWaiters.has(waiter)) return;\n\n const state = await this.process.getState();\n if (!state.isStreaming && !state.isCompacting && state.pendingMessageCount === 0) {\n await this.#markIdle();\n }\n });\n if (wait === null) throw new Error(\"Idle waiter registration failed\");\n return { completion: wait };\n }\n\n async waitForIdle(signal?: AbortSignal): Promise<IdleBoundary> {\n const registered = await this.registerIdleWaiter(signal);\n return registered.completion;\n }\n\n async stop(reason: CoordinatorStopReason): Promise<void> {\n this.#stopReason = reason;\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentId: this.agent.summary.id,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"stopping\",\n });\n try {\n await this.process.stop();\n await this.#lane;\n } catch (error: unknown) {\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentId: this.agent.summary.id,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"cleanup_uncertain\",\n });\n throw error;\n }\n }\n\n async #handleProcessExit(error: Error | null): Promise<void> {\n this.#unsubscribeFrame();\n this.#unsubscribeExit();\n if (this.#stopReason === null) {\n await this.process.stop().catch(() => undefined);\n }\n const groupGone = await waitForProcessGroupExit(this.process.pid);\n if (!groupGone) {\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"failed\",\n process: { state: \"cleanup_uncertain\" },\n error: { code: \"incarnation_cleanup_uncertain\" },\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentId: this.agent.summary.id,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"cleanup_uncertain\",\n });\n this.#rejectIdleWaiters(new Error(\"Pi process cleanup is uncertain\"));\n this.onProcessExit(error ?? new Error(\"Pi process group is still alive\"));\n return;\n }\n\n const wasActive =\n this.agent.summary.state === \"working\" || this.agent.summary.state === \"restoring\";\n const destroyed = this.#stopReason === \"destroy\";\n const interrupted =\n this.agent.summary.state === \"failed\" ||\n (error !== null && this.#stopReason === null) ||\n (wasActive && this.#stopReason !== \"destroy\");\n const state = destroyed ? \"destroying\" : interrupted ? \"failed\" : \"idle\";\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state,\n process: { state: \"absent\" },\n ...(interrupted ? { error: { code: \"runtime_interrupted\" } } : { error: undefined }),\n },\n };\n await this.store.putAgent(this.agent);\n await this.store.putIncarnation({\n incarnationId: this.incarnationId,\n agentId: this.agent.summary.id,\n agentName: this.agent.summary.name,\n pid: this.process.pid,\n state: \"gone\",\n });\n if (interrupted || destroyed) {\n this.#rejectIdleWaiters(new Error(destroyed ? \"Agent destroyed\" : \"Pi work was interrupted\"));\n } else {\n this.#resolveIdleWaiters();\n }\n this.onProcessExit(error);\n }\n\n async #markWorking(): Promise<void> {\n this.#mayBeWorking = true;\n this.#idleEventPosition = null;\n this.agent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"working\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n await this.store.putAgent(this.agent);\n }\n\n async #markIdle(): Promise<void> {\n const state = await this.process.getState();\n if (state.isStreaming || state.isCompacting || state.pendingMessageCount !== 0) return;\n this.#applyObservedState(state);\n const idleAgent: StoredAgent = {\n ...this.agent,\n summary: {\n ...this.agent.summary,\n state: \"idle\",\n process: { state: \"resident\" },\n error: undefined,\n },\n };\n try {\n const idleEventPosition = (await this.onIdle?.(idleAgent)) ?? null;\n await this.store.putAgent(idleAgent);\n this.agent = idleAgent;\n this.#idleEventPosition = idleEventPosition;\n this.#mayBeWorking = false;\n this.#resolveIdleWaiters();\n } catch (error: unknown) {\n const failure = error instanceof Error ? error : new Error(\"Idle durability failed\");\n this.agent = {\n ...idleAgent,\n summary: {\n ...idleAgent.summary,\n state: \"failed\",\n error: { code: \"storage_unavailable\" },\n },\n };\n await this.store.putAgent(this.agent).catch(() => undefined);\n this.#rejectIdleWaiters(failure);\n throw failure;\n }\n }\n\n #applyObservedState(state: PiState): void {\n this.agent = {\n ...this.agent,\n launch: observeSession(this.agent.launch, {\n path: state.sessionFile ?? null,\n id: state.sessionId,\n }),\n summary: {\n ...this.agent.summary,\n session: { path: state.sessionFile ?? null, id: state.sessionId },\n },\n };\n }\n\n #resolveIdleWaiters(): void {\n for (const waiter of this.#idleWaiters) {\n if (waiter.signal !== undefined && waiter.onAbort !== undefined) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.resolve({\n agent: this.agent,\n idleEventPosition: this.#idleEventPosition ?? 0,\n });\n }\n this.#idleWaiters.clear();\n }\n\n #rejectIdleWaiters(error: Error): void {\n for (const waiter of this.#idleWaiters) {\n if (waiter.signal !== undefined && waiter.onAbort !== undefined) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.reject(error);\n }\n this.#idleWaiters.clear();\n }\n\n #queueEvent(operation: () => Promise<void>): void {\n void this.#enqueue(operation).catch((error: unknown) => this.#handleEventFailure(error));\n }\n\n async #handleEventFailure(error: unknown): Promise<void> {\n if (this.#handlingFailure) return;\n this.#handlingFailure = true;\n const failure = error instanceof Error ? error : new Error(\"Agent coordinator failed\");\n this.#rejectIdleWaiters(failure);\n await this.process.stop().catch(() => undefined);\n this.onProcessExit(failure);\n }\n\n #enqueue<T>(operation: () => Promise<T>): Promise<T> {\n const result = this.#lane.then(operation, operation);\n this.#lane = result.then(\n () => undefined,\n () => undefined,\n );\n return result;\n }\n}\n", "import type { AgentId } from \"./semantic-events.js\";\n\nexport interface JournalIngressRecord<T> {\n readonly agentId: AgentId;\n readonly bytes: Buffer;\n readonly value: T;\n readonly batchKey?: string;\n}\n\nexport interface JournalIngestionLimits {\n readonly maxPendingRecords: number;\n readonly maxPendingBytes: number;\n readonly maxPendingBytesPerAgent: number;\n readonly maxBatchRecords: number;\n readonly maxBatchBytes: number;\n readonly maxBatchAgeMs: number;\n}\n\nexport interface JournalIngestionOptions<T> {\n readonly limits: JournalIngestionLimits;\n readonly commit: (records: readonly JournalIngressRecord<T>[]) => Promise<void>;\n readonly pauseAgent?: (agentId: AgentId) => void;\n readonly resumeAgent?: (agentId: AgentId) => void;\n readonly failAgent?: (agentId: AgentId, error: Error) => void;\n readonly now?: () => number;\n}\n\ninterface PendingRecord<T> {\n readonly record: JournalIngressRecord<T>;\n readonly enqueuedAt: number;\n readonly resolve: () => void;\n readonly reject: (error: Error) => void;\n}\n\n/** Dormant bounded admission and fair batching for durability writes. */\nexport class JournalIngestionScheduler<T> {\n readonly #limits: JournalIngestionLimits;\n readonly #commit: JournalIngestionOptions<T>[\"commit\"];\n readonly #pauseAgent: NonNullable<JournalIngestionOptions<T>[\"pauseAgent\"]>;\n readonly #resumeAgent: NonNullable<JournalIngestionOptions<T>[\"resumeAgent\"]>;\n readonly #failAgentCallback: NonNullable<JournalIngestionOptions<T>[\"failAgent\"]>;\n readonly #now: () => number;\n readonly #queues = new Map<AgentId, PendingRecord<T>[]>();\n readonly #pendingBytesByAgent = new Map<AgentId, number>();\n readonly #pausedAgents = new Set<AgentId>();\n readonly #failedAgents = new Map<AgentId, Error>();\n #pendingRecords = 0;\n #pendingBytes = 0;\n #roundRobinOffset = 0;\n #timer: NodeJS.Timeout | null = null;\n #flushPromise: Promise<void> | null = null;\n #activeOldestEnqueuedAt: number | null = null;\n #closePromise: Promise<void> | null = null;\n #closed = false;\n\n constructor(options: JournalIngestionOptions<T>) {\n validateLimits(options.limits);\n this.#limits = options.limits;\n this.#commit = options.commit;\n this.#pauseAgent = options.pauseAgent ?? (() => undefined);\n this.#resumeAgent = options.resumeAgent ?? (() => undefined);\n this.#failAgentCallback = options.failAgent ?? (() => undefined);\n this.#now = options.now ?? Date.now;\n }\n\n get pendingRecords(): number {\n return this.#pendingRecords;\n }\n\n get pendingBytes(): number {\n return this.#pendingBytes;\n }\n\n get oldestPendingAgeMs(): number {\n let oldest = this.#activeOldestEnqueuedAt ?? Number.POSITIVE_INFINITY;\n for (const queue of this.#queues.values()) {\n for (const pending of queue) oldest = Math.min(oldest, pending.enqueuedAt);\n }\n return oldest === Number.POSITIVE_INFINITY ? 0 : Math.max(0, this.#now() - oldest);\n }\n\n get pausedAgentCount(): number {\n return this.#pausedAgents.size;\n }\n\n get failedAgentCount(): number {\n return this.#failedAgents.size;\n }\n\n enqueue(record: JournalIngressRecord<T>): Promise<void> {\n if (this.#closed) return Promise.reject(new Error(\"Journal ingestion is closed\"));\n const priorFailure = this.#failedAgents.get(record.agentId);\n if (priorFailure !== undefined) return Promise.reject(priorFailure);\n\n const ownedRecord = { ...record, bytes: Buffer.from(record.bytes) };\n const agentBytes = this.#pendingBytesByAgent.get(record.agentId) ?? 0;\n if (\n ownedRecord.bytes.length > this.#limits.maxPendingBytesPerAgent ||\n agentBytes + ownedRecord.bytes.length > this.#limits.maxPendingBytesPerAgent ||\n this.#pendingRecords + 1 > this.#limits.maxPendingRecords ||\n this.#pendingBytes + ownedRecord.bytes.length > this.#limits.maxPendingBytes\n ) {\n const error = new Error(\"Journal ingestion capacity exceeded\");\n this.#failAgent(record.agentId, error);\n return Promise.reject(error);\n }\n\n const completion = new Promise<void>((resolve, reject) => {\n const queue = this.#queues.get(record.agentId) ?? [];\n queue.push({ record: ownedRecord, enqueuedAt: this.#now(), resolve, reject });\n this.#queues.set(record.agentId, queue);\n });\n this.#pendingRecords += 1;\n this.#pendingBytes += ownedRecord.bytes.length;\n const nextAgentBytes = agentBytes + ownedRecord.bytes.length;\n this.#pendingBytesByAgent.set(record.agentId, nextAgentBytes);\n this.#refreshPauses();\n this.#scheduleFlush();\n return completion;\n }\n\n async drain(): Promise<void> {\n this.#clearTimer();\n while (this.#pendingRecords > 0) {\n await this.#flush();\n }\n }\n\n close(): Promise<void> {\n if (this.#closePromise !== null) return this.#closePromise;\n this.#closed = true;\n this.#closePromise = this.drain();\n return this.#closePromise;\n }\n\n #scheduleFlush(): void {\n if (this.#flushPromise !== null) return;\n if (\n this.#pendingRecords >= this.#limits.maxBatchRecords ||\n this.#pendingBytes >= this.#limits.maxBatchBytes\n ) {\n queueMicrotask(() => void this.#flush());\n return;\n }\n if (this.#timer === null) {\n this.#timer = setTimeout(() => {\n this.#timer = null;\n void this.#flush();\n }, this.#limits.maxBatchAgeMs);\n }\n }\n\n #flush(): Promise<void> {\n if (this.#flushPromise !== null) return this.#flushPromise;\n this.#clearTimer();\n const batch = this.#takeBatch();\n if (batch.length === 0) return Promise.resolve();\n this.#activeOldestEnqueuedAt = Math.min(...batch.map((pending) => pending.enqueuedAt));\n\n const flushing = Promise.resolve()\n .then(() => this.#commit(batch.map((pending) => pending.record)))\n .then(() => {\n for (const pending of batch) this.#settle(pending, null);\n })\n .catch((cause: unknown) => {\n const error = cause instanceof Error ? cause : new Error(String(cause));\n const agents = new Set(batch.map((pending) => pending.record.agentId));\n for (const pending of batch) this.#settle(pending, error, false);\n for (const agentId of agents) this.#failAgent(agentId, error);\n })\n .finally(() => {\n this.#flushPromise = null;\n this.#activeOldestEnqueuedAt = null;\n if (this.#pendingRecords > 0) queueMicrotask(() => void this.#flush());\n });\n this.#flushPromise = flushing;\n return flushing;\n }\n\n #takeBatch(): PendingRecord<T>[] {\n const agentIds = [...this.#queues.keys()].filter(\n (agentId) => (this.#queues.get(agentId)?.length ?? 0) > 0,\n );\n if (agentIds.length === 0) return [];\n\n const index = this.#roundRobinOffset % agentIds.length;\n const agentId = agentIds[index] as AgentId;\n this.#roundRobinOffset = (index + 1) % agentIds.length;\n const queue = this.#queues.get(agentId) as PendingRecord<T>[];\n const batchKey = queue[0]?.record.batchKey ?? agentId;\n const batch: PendingRecord<T>[] = [];\n let batchBytes = 0;\n while (batch.length < this.#limits.maxBatchRecords && queue.length > 0) {\n const next = queue[0] as PendingRecord<T>;\n if ((next.record.batchKey ?? agentId) !== batchKey) break;\n if (batch.length > 0 && batchBytes + next.record.bytes.length > this.#limits.maxBatchBytes) {\n break;\n }\n queue.shift();\n batch.push(next);\n batchBytes += next.record.bytes.length;\n }\n return batch;\n }\n\n #settle(pending: PendingRecord<T>, error: Error | null, refreshPauses = true): void {\n const { agentId, bytes } = pending.record;\n this.#pendingRecords -= 1;\n this.#pendingBytes -= bytes.length;\n const agentBytes = (this.#pendingBytesByAgent.get(agentId) ?? bytes.length) - bytes.length;\n if (agentBytes <= 0) this.#pendingBytesByAgent.delete(agentId);\n else this.#pendingBytesByAgent.set(agentId, agentBytes);\n\n if (refreshPauses) this.#refreshPauses();\n if (error === null) pending.resolve();\n else pending.reject(error);\n }\n\n #failAgent(agentId: AgentId, error: Error): void {\n if (this.#failedAgents.has(agentId)) return;\n this.#failedAgents.set(agentId, error);\n const queued = this.#queues.get(agentId) ?? [];\n this.#queues.delete(agentId);\n for (const pending of queued) this.#settle(pending, error);\n this.#refreshPauses();\n this.#failAgentCallback(agentId, error);\n }\n\n #refreshPauses(): void {\n const globalHigh =\n this.#pendingBytes >= Math.max(1, Math.floor(this.#limits.maxPendingBytes * 0.75)) ||\n this.#pendingRecords >= Math.max(1, Math.floor(this.#limits.maxPendingRecords * 0.75));\n const globalLow =\n this.#pendingBytes <= Math.floor(this.#limits.maxPendingBytes * 0.5) &&\n this.#pendingRecords <= Math.floor(this.#limits.maxPendingRecords * 0.5);\n const candidates = new Set([...this.#pendingBytesByAgent.keys(), ...this.#pausedAgents]);\n for (const agentId of candidates) {\n if (this.#failedAgents.has(agentId)) {\n this.#pausedAgents.delete(agentId);\n continue;\n }\n const agentBytes = this.#pendingBytesByAgent.get(agentId) ?? 0;\n const agentHigh =\n agentBytes >= Math.max(1, Math.floor(this.#limits.maxPendingBytesPerAgent * 0.75));\n const agentLow = agentBytes <= Math.floor(this.#limits.maxPendingBytesPerAgent * 0.5);\n if ((globalHigh || agentHigh) && !this.#pausedAgents.has(agentId)) {\n this.#pausedAgents.add(agentId);\n this.#pauseAgent(agentId);\n } else if (globalLow && agentLow && this.#pausedAgents.delete(agentId)) {\n this.#resumeAgent(agentId);\n }\n }\n }\n\n #clearTimer(): void {\n if (this.#timer === null) return;\n clearTimeout(this.#timer);\n this.#timer = null;\n }\n}\n\nfunction validateLimits(limits: JournalIngestionLimits): void {\n for (const [name, value] of Object.entries(limits)) {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${name} must be a positive safe integer`);\n }\n }\n}\n", "import type {\n ActivityId,\n AgentEventId,\n AgentId,\n ContinuityEpoch,\n ProjectorActivity,\n ProjectorState,\n ReceiveCursor,\n SemanticEvent,\n} from \"./semantic-events.js\";\n\nexport interface LifecycleProjectionInput {\n readonly agentId: AgentId;\n readonly epoch: ContinuityEpoch;\n readonly rawPosition: number;\n readonly observedAt: string;\n readonly frame: unknown;\n}\n\nexport interface LifecycleProjection {\n readonly events: readonly SemanticEvent[];\n readonly state: ProjectorState;\n}\n\nexport function initialProjectorState(): ProjectorState {\n return { version: 1, messageSequence: 0, finishedThinkingIndexes: [], openActivities: [] };\n}\n\n/** Pure Pi 0.82.1 RPC-to-semantic projection. Unknown records produce no event. */\nexport function projectLifecycleRecord(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n maxOpenActivities: number,\n): LifecycleProjection {\n if (!Number.isSafeInteger(maxOpenActivities) || maxOpenActivities <= 0) {\n throw new Error(\"maxOpenActivities must be a positive safe integer\");\n }\n const frame = asObject(input.frame);\n if (frame === null) return { events: [], state };\n\n if (frame.type === \"message_update\") {\n return projectMessageUpdate(state, input, frame, maxOpenActivities);\n }\n if (frame.type === \"message_end\") return projectMessageEnd(state, input, frame);\n if (frame.type === \"tool_execution_start\") {\n return projectToolStart(state, input, frame, maxOpenActivities);\n }\n if (frame.type === \"tool_execution_end\") return projectToolEnd(state, input, frame);\n return { events: [], state };\n}\n\nfunction projectMessageUpdate(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n frame: Record<string, unknown>,\n maxOpen: number,\n): LifecycleProjection {\n const update = asObject(frame.assistantMessageEvent ?? frame.event);\n if (update === null) return { events: [], state };\n const contentIndex = integer(update.contentIndex);\n if (contentIndex === null) return { events: [], state };\n\n if (update.type === \"thinking_delta\") {\n return projectThinkingDelta(state, input, contentIndex, text(update.delta), maxOpen);\n }\n if (update.type === \"thinking_end\") {\n return projectThinkingEnd(state, input, contentIndex, text(update.content), maxOpen);\n }\n if (update.type === \"text_delta\") {\n return projectTextStart(state, input, text(update.delta), maxOpen);\n }\n if (update.type === \"text_end\") {\n return projectTextStart(state, input, text(update.content), maxOpen);\n }\n return { events: [], state };\n}\n\nfunction projectThinkingDelta(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n contentIndex: number,\n delta: string | null,\n maxOpen: number,\n): LifecycleProjection {\n if (delta === null) return { events: [], state };\n if (state.finishedThinkingIndexes.includes(contentIndex)) return { events: [], state };\n const existing = findThinking(state, contentIndex);\n if (existing !== undefined) {\n return {\n events: [],\n state: replaceActivity(state, existing, { ...existing, text: existing.text + delta }),\n };\n }\n if (!meaningful(delta)) return { events: [], state };\n\n const activityId = activityIdFor(input, `thinking:${state.messageSequence}:${contentIndex}`);\n const activity: ProjectorActivity = {\n kind: \"thinking\",\n activityId,\n messageSequence: state.messageSequence,\n contentIndex,\n text: delta,\n };\n const next = addActivity(state, activity, maxOpen);\n return { events: [event(input, activityId, 0, \"assistant.thinking.started\")], state: next };\n}\n\nfunction projectThinkingEnd(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n contentIndex: number,\n completeText: string | null,\n maxOpen: number,\n): LifecycleProjection {\n if (state.finishedThinkingIndexes.includes(contentIndex)) return { events: [], state };\n const existing = findThinking(state, contentIndex);\n if (!meaningful(completeText)) {\n if (existing !== undefined) {\n throw new Error(\"Lifecycle projector finalized thinking contradicts its started activity\");\n }\n return { events: [], state: markThinkingFinished(state, contentIndex, maxOpen) };\n }\n\n const activityId =\n existing?.activityId ??\n activityIdFor(input, `thinking:${state.messageSequence}:${contentIndex}`);\n const started =\n existing === undefined ? [event(input, activityId, 0, \"assistant.thinking.started\")] : [];\n const finished = event(input, activityId, started.length, \"assistant.thinking.finished\", {\n text: completeText,\n });\n return {\n events: [...started, finished],\n state: finishThinking(state, activityId, contentIndex, maxOpen),\n };\n}\n\nfunction projectTextStart(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n content: string | null,\n maxOpen: number,\n): LifecycleProjection {\n if (!meaningful(content) || findMessage(state) !== undefined) return { events: [], state };\n const activityId = activityIdFor(input, `message:${state.messageSequence}`);\n const activity: ProjectorActivity = {\n kind: \"message\",\n activityId,\n messageSequence: state.messageSequence,\n };\n return {\n events: [event(input, activityId, 0, \"assistant.message.started\")],\n state: addActivity(state, activity, maxOpen),\n };\n}\n\nfunction projectMessageEnd(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n frame: Record<string, unknown>,\n): LifecycleProjection {\n const completeText = assistantText(frame.message ?? asObject(frame.data)?.message);\n const existing = findMessage(state);\n const unfinishedThinking = state.openActivities.find(\n (activity) =>\n activity.kind === \"thinking\" && activity.messageSequence === state.messageSequence,\n );\n if (unfinishedThinking !== undefined) {\n throw new Error(\"Lifecycle projector completed message omits a finished thinking activity\");\n }\n if (existing !== undefined && !meaningful(completeText)) {\n throw new Error(\"Lifecycle projector finalized message contradicts its started activity\");\n }\n const events: SemanticEvent[] = [];\n let subposition = 0;\n let activityId = existing?.activityId;\n if (meaningful(completeText)) {\n if (activityId === undefined) {\n activityId = activityIdFor(input, `message:${state.messageSequence}`);\n events.push(event(input, activityId, subposition++, \"assistant.message.started\"));\n }\n events.push(\n event(input, activityId, subposition, \"assistant.message.finished\", { text: completeText }),\n );\n }\n\n return {\n events,\n state: {\n version: 1,\n messageSequence: state.messageSequence + 1,\n finishedThinkingIndexes: [],\n openActivities: state.openActivities.filter(\n (activity) =>\n activity.kind === \"tool\" || activity.messageSequence !== state.messageSequence,\n ),\n },\n };\n}\n\nfunction projectToolStart(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n frame: Record<string, unknown>,\n maxOpen: number,\n): LifecycleProjection {\n const callId = text(frame.toolCallId);\n const name = text(frame.toolName);\n if (callId === null || name === null || findTool(state, callId) !== undefined) {\n return { events: [], state };\n }\n const activityId = activityIdFor(input, `tool:${callId}`);\n const activity: ProjectorActivity = {\n kind: \"tool\",\n activityId,\n callId,\n name,\n input: frame.args,\n };\n return {\n events: [\n event(input, activityId, 0, \"tool.execution.started\", {\n tool: { callId, name, input: frame.args },\n }),\n ],\n state: addActivity(state, activity, maxOpen),\n };\n}\n\nfunction projectToolEnd(\n state: ProjectorState,\n input: LifecycleProjectionInput,\n frame: Record<string, unknown>,\n): LifecycleProjection {\n const callId = text(frame.toolCallId);\n if (callId === null) return { events: [], state };\n const existing = findTool(state, callId);\n if (existing === undefined) return { events: [], state };\n return {\n events: [\n event(input, existing.activityId, 0, \"tool.execution.finished\", {\n tool: {\n callId,\n name: existing.name,\n input: existing.input,\n output: frame.result,\n isError: frame.isError === true,\n },\n }),\n ],\n state: removeActivity(state, existing.activityId),\n };\n}\n\nfunction event(\n input: LifecycleProjectionInput,\n activityId: ActivityId,\n subposition: number,\n type: SemanticEvent[\"type\"],\n payload: Record<string, unknown> = {},\n): SemanticEvent {\n const id = `${input.agentId}:${input.epoch}:${input.rawPosition}:${subposition}` as AgentEventId;\n return {\n id,\n activityId,\n agentId: input.agentId,\n cursor: id as unknown as ReceiveCursor,\n epoch: input.epoch,\n sourceRawPosition: input.rawPosition,\n observedAt: input.observedAt,\n type,\n ...payload,\n } as SemanticEvent;\n}\n\nfunction activityIdFor(input: LifecycleProjectionInput, suffix: string): ActivityId {\n return `${input.agentId}:${input.epoch}:${suffix}:${input.rawPosition}` as ActivityId;\n}\n\nfunction findThinking(state: ProjectorState, contentIndex: number) {\n return state.openActivities.find(\n (activity): activity is Extract<ProjectorActivity, { kind: \"thinking\" }> =>\n activity.kind === \"thinking\" &&\n activity.messageSequence === state.messageSequence &&\n activity.contentIndex === contentIndex,\n );\n}\n\nfunction findMessage(state: ProjectorState) {\n return state.openActivities.find(\n (activity): activity is Extract<ProjectorActivity, { kind: \"message\" }> =>\n activity.kind === \"message\" && activity.messageSequence === state.messageSequence,\n );\n}\n\nfunction findTool(state: ProjectorState, callId: string) {\n return state.openActivities.find(\n (activity): activity is Extract<ProjectorActivity, { kind: \"tool\" }> =>\n activity.kind === \"tool\" && activity.callId === callId,\n );\n}\n\nfunction addActivity(\n state: ProjectorState,\n activity: ProjectorActivity,\n maxOpen: number,\n): ProjectorState {\n if (state.openActivities.length >= maxOpen) {\n throw new Error(\"Lifecycle projector open activity capacity exceeded\");\n }\n return { ...state, openActivities: [...state.openActivities, activity] };\n}\n\nfunction replaceActivity(\n state: ProjectorState,\n current: ProjectorActivity,\n replacement: ProjectorActivity,\n): ProjectorState {\n return {\n ...state,\n openActivities: state.openActivities.map((activity) =>\n activity.activityId === current.activityId ? replacement : activity,\n ),\n };\n}\n\nfunction removeActivity(state: ProjectorState, activityId: ActivityId): ProjectorState {\n return {\n ...state,\n openActivities: state.openActivities.filter((activity) => activity.activityId !== activityId),\n };\n}\n\nfunction finishThinking(\n state: ProjectorState,\n activityId: ActivityId,\n contentIndex: number,\n maxTracked: number,\n): ProjectorState {\n return markThinkingFinished(removeActivity(state, activityId), contentIndex, maxTracked);\n}\n\nfunction markThinkingFinished(\n state: ProjectorState,\n contentIndex: number,\n maxTracked: number,\n): ProjectorState {\n if (state.finishedThinkingIndexes.length >= maxTracked) {\n throw new Error(\"Lifecycle projector completed thinking capacity exceeded\");\n }\n return {\n ...state,\n finishedThinkingIndexes: [...state.finishedThinkingIndexes, contentIndex],\n };\n}\n\nfunction meaningful(value: string | null): value is string {\n return value !== null && /\\S/u.test(value);\n}\n\nfunction assistantText(value: unknown): string | null {\n const message = asObject(value);\n if (message === null || message.role !== \"assistant\" || !Array.isArray(message.content))\n return null;\n return message.content\n .map((part) => asObject(part))\n .filter((part): part is Record<string, unknown> => part?.type === \"text\")\n .map((part) => text(part.text) ?? \"\")\n .join(\"\");\n}\n\nfunction asObject(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction text(value: unknown): string | null {\n return typeof value === \"string\" ? value : null;\n}\n\nfunction integer(value: unknown): number | null {\n return Number.isSafeInteger(value) && (value as number) >= 0 ? (value as number) : null;\n}\n", "import { stat } from \"node:fs/promises\";\n\nimport type {\n JournalAgentStorageDiagnostics,\n JournalMaintenanceResult,\n JournalStore,\n} from \"../store/journal-store.js\";\n\ninterface IngestionDiagnosticsSource {\n readonly pendingRecords: number;\n readonly pendingBytes: number;\n readonly oldestPendingAgeMs: number;\n readonly pausedAgentCount: number;\n readonly failedAgentCount: number;\n}\n\nexport interface RuntimeJournalDiagnostics {\n readonly files: {\n readonly databaseBytes: number;\n readonly walBytes: number;\n readonly shmBytes: number;\n };\n readonly retained: {\n readonly agentCount: number;\n readonly rawRecordCount: number;\n readonly rawBytes: number;\n readonly semanticEventCount: number;\n };\n readonly retainedByAgent: readonly JournalAgentStorageDiagnostics[];\n readonly ingestion: {\n readonly pendingRecords: number;\n readonly pendingBytes: number;\n readonly oldestPendingAgeMs: number;\n readonly pausedAgentCount: number;\n readonly failedAgentCount: number;\n };\n readonly append: {\n readonly state: \"healthy\" | \"failed\";\n readonly lastCommitAt: string | null;\n readonly lastDurationMs: number | null;\n };\n readonly openProjectorActivities: number;\n readonly activeReceiveStreams: number;\n readonly activeReplayReads: number;\n readonly checkpoint: JournalMaintenanceResult;\n readonly continuityGapCount: number;\n readonly continuityUncertain: boolean;\n}\n\nexport async function collectRuntimeJournalDiagnostics(options: {\n readonly store: JournalStore;\n readonly databasePath: string;\n readonly ingestion: IngestionDiagnosticsSource;\n readonly activeReceiveStreams: number;\n readonly activeReplayReads: number;\n}): Promise<RuntimeJournalDiagnostics> {\n const storage = await options.store.getDiagnostics();\n const [databaseBytes, walBytes, shmBytes] = await Promise.all([\n fileBytes(options.databasePath),\n fileBytes(`${options.databasePath}-wal`),\n fileBytes(`${options.databasePath}-shm`),\n ]);\n return {\n files: { databaseBytes, walBytes, shmBytes },\n retained: {\n agentCount: storage.agentCount,\n rawRecordCount: storage.rawRecordCount,\n rawBytes: storage.rawBytes,\n semanticEventCount: storage.semanticEventCount,\n },\n retainedByAgent: storage.retainedByAgent,\n ingestion: {\n pendingRecords: options.ingestion.pendingRecords,\n pendingBytes: options.ingestion.pendingBytes,\n oldestPendingAgeMs: options.ingestion.oldestPendingAgeMs,\n pausedAgentCount: options.ingestion.pausedAgentCount,\n failedAgentCount: options.ingestion.failedAgentCount,\n },\n append: {\n state: storage.storageState,\n lastCommitAt: storage.lastCommitAt,\n lastDurationMs: storage.lastAppendDurationMs,\n },\n openProjectorActivities: storage.openProjectorActivities,\n activeReceiveStreams: options.activeReceiveStreams,\n activeReplayReads: options.activeReplayReads,\n checkpoint: storage.maintenance,\n continuityGapCount: storage.continuityGapCount,\n continuityUncertain: storage.continuityGapCount > 0,\n };\n}\n\nasync function fileBytes(path: string): Promise<number> {\n const value = await stat(path).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return null;\n throw error;\n });\n return value?.size ?? 0;\n}\n", "import type { ReceiveCursorCodec, ReceiveStart } from \"../client/agent-target.js\";\nimport { RpcRecordFramer } from \"../pi/rpc-record-framer.js\";\nimport type { RuntimeLimits } from \"../shared/runtime-limits.js\";\nimport type {\n JournalAppend,\n JournalHighWater,\n JournalStore,\n StoredSemanticEvent,\n} from \"../store/journal-store.js\";\nimport { JournalIngestionScheduler, type JournalIngestionLimits } from \"./journal-ingestion.js\";\nimport { initialProjectorState, projectLifecycleRecord } from \"./lifecycle-projector.js\";\nimport {\n collectRuntimeJournalDiagnostics,\n type RuntimeJournalDiagnostics,\n} from \"./runtime-diagnostics.js\";\nimport {\n ReceivePager,\n type ReceivePagerLimits,\n type ReceiveStream,\n type ReceiveWakeup,\n} from \"./receive-pager.js\";\nimport type {\n AgentId,\n ContinuityEpoch,\n IncarnationId,\n RawRpcRecord,\n ReceiveCursor,\n} from \"./semantic-events.js\";\n\ninterface JournalCandidate {\n readonly agentId: AgentId;\n readonly incarnationId: IncarnationId;\n readonly epoch: ContinuityEpoch;\n readonly observedAt: string;\n readonly bytes: Buffer;\n}\n\nexport interface JournalRuntimeCompositionOptions {\n readonly store: JournalStore;\n readonly limits: RuntimeLimits;\n readonly cursors: ReceiveCursorCodec;\n readonly wakeup: ReceiveWakeup;\n readonly now?: () => string;\n readonly pauseAgent?: (agentId: AgentId) => void;\n readonly resumeAgent?: (agentId: AgentId) => void;\n readonly failAgent?: (agentId: AgentId, error: Error) => void;\n readonly notifyEvents?: (agentId: AgentId, eventPosition: number) => void;\n}\n\nexport interface JournalIncarnationSink {\n /** Chunk-oriented compatibility seam for dormant/local composition tests. */\n push(chunk: Buffer): Promise<void>;\n /** Selected production seam: accepts one exact complete LF-terminated record. */\n pushRecord(record: Buffer): Promise<void>;\n finish(): Buffer | null;\n}\n\n/** Dormant composition root for exact stdout persistence and semantic replay. */\nexport class JournalRuntimeComposition {\n readonly receive: ReceivePager;\n readonly ingestion: JournalIngestionScheduler<JournalCandidate>;\n readonly #framers = new Map<IncarnationId, RpcRecordFramer>();\n readonly #activeIncarnationsByAgent = new Map<\n AgentId,\n { readonly incarnationId: IncarnationId; readonly epoch: ContinuityEpoch }\n >();\n readonly #store: JournalStore;\n readonly #limits: RuntimeLimits;\n readonly #now: () => string;\n readonly #notifyEvents: NonNullable<JournalRuntimeCompositionOptions[\"notifyEvents\"]>;\n readonly #cursors: ReceiveCursorCodec;\n #activeReceiveStreams = 0;\n #activeReplayReads = 0;\n\n constructor(options: JournalRuntimeCompositionOptions) {\n this.#store = options.store;\n this.#limits = options.limits;\n this.#now = options.now ?? (() => new Date().toISOString());\n // A wakeup that cannot be notified would leave live receive streams blocked\n // forever, so default to notifying the injected wakeup itself.\n this.#notifyEvents = options.notifyEvents ?? defaultNotifyEvents(options.wakeup);\n this.#cursors = options.cursors;\n this.ingestion = new JournalIngestionScheduler({\n limits: journalIngestionLimitsFromRuntime(options.limits),\n commit: (records) => this.#commit(records.map((record) => record.value)),\n ...(options.pauseAgent === undefined ? {} : { pauseAgent: options.pauseAgent }),\n ...(options.resumeAgent === undefined ? {} : { resumeAgent: options.resumeAgent }),\n ...(options.failAgent === undefined ? {} : { failAgent: options.failAgent }),\n });\n this.receive = new ReceivePager(\n options.store,\n options.cursors,\n options.wakeup,\n receivePagerLimitsFromRuntime(options.limits),\n {\n onReadStart: () => {\n this.#activeReplayReads += 1;\n },\n onReadEnd: () => {\n this.#activeReplayReads -= 1;\n },\n },\n );\n }\n\n async openIncarnation(options: {\n readonly agentId: AgentId;\n readonly incarnationId: IncarnationId;\n readonly epoch: ContinuityEpoch;\n }): Promise<JournalIncarnationSink> {\n if (this.#framers.has(options.incarnationId)) {\n throw new Error(\"Journal incarnation sink already exists\");\n }\n await this.#store.beginIncarnation(\n options.agentId,\n options.incarnationId,\n options.epoch,\n initialProjectorState(),\n );\n const framer = new RpcRecordFramer(this.#limits.maxJournalPartialRecordBytes);\n this.#framers.set(options.incarnationId, framer);\n this.#activeIncarnationsByAgent.set(options.agentId, {\n incarnationId: options.incarnationId,\n epoch: options.epoch,\n });\n let finished = false;\n const pushRecord = async (record: Buffer): Promise<void> => {\n if (finished) throw new Error(\"Journal incarnation sink is finished\");\n if (record.length === 0 || record.at(-1) !== 0x0a) {\n throw new Error(\"Journal incarnation sink requires a complete LF-terminated record\");\n }\n const bytes = Buffer.from(record);\n await this.ingestion.enqueue({\n agentId: options.agentId,\n batchKey: `${options.agentId}:${options.epoch}:${options.incarnationId}`,\n bytes,\n value: {\n ...options,\n observedAt: this.#now(),\n bytes,\n },\n });\n };\n return {\n push: async (chunk) => {\n await Promise.all(framer.push(chunk).map((record) => pushRecord(record)));\n },\n pushRecord,\n finish: () => {\n if (finished) throw new Error(\"Journal incarnation sink is finished\");\n finished = true;\n this.#framers.delete(options.incarnationId);\n const active = this.#activeIncarnationsByAgent.get(options.agentId);\n if (active?.incarnationId === options.incarnationId) {\n this.#activeIncarnationsByAgent.delete(options.agentId);\n }\n return framer.finish();\n },\n };\n }\n\n async openReceive(\n agentId: AgentId,\n start: ReceiveStart,\n signal: AbortSignal,\n ): Promise<ReceiveStream> {\n if (this.#activeReceiveStreams >= this.#limits.maxReceiveStreams) {\n const error = new Error(\"Receive stream capacity exceeded\") as Error & { code: string };\n error.code = \"receive_resource_exhausted\";\n throw error;\n }\n const stream = await this.receive.open(agentId, start, signal);\n this.#activeReceiveStreams += 1;\n let released = false;\n let iteratorCreated = false;\n const release = () => {\n if (released) return;\n released = true;\n signal.removeEventListener(\"abort\", release);\n this.#activeReceiveStreams -= 1;\n };\n signal.addEventListener(\"abort\", release, { once: true });\n if (signal.aborted) release();\n return {\n cursor: stream.cursor,\n [Symbol.asyncIterator]: () => {\n if (iteratorCreated) throw new Error(\"Receive stream can only be iterated once\");\n iteratorCreated = true;\n const iterator = stream[Symbol.asyncIterator]();\n return {\n next: async () => {\n try {\n const result = await iterator.next();\n if (result.done) release();\n return result;\n } catch (error: unknown) {\n release();\n throw error;\n }\n },\n return: async () => {\n release();\n return iterator.return?.() ?? { done: true, value: undefined };\n },\n throw: async (error?: unknown) => {\n release();\n if (iterator.throw !== undefined) return iterator.throw(error);\n throw error;\n },\n };\n },\n };\n }\n\n decodeCursorPosition(cursor: ReceiveCursor): number {\n return this.#cursors.decode(cursor).position;\n }\n\n async eventHighWater(agentId: AgentId): Promise<number> {\n return (await this.#store.getHighWater(agentId))?.eventPosition ?? 0;\n }\n\n async idleEventHighWater(agentId: AgentId): Promise<number | null> {\n return (await this.#store.getHighWater(agentId))?.idleEventPosition ?? null;\n }\n\n async markIdle(agentId: AgentId): Promise<number> {\n const epochs = await this.#store.getEpochs(agentId);\n const epoch = epochs.findLast((candidate) => candidate.state === \"open\");\n if (epoch === undefined) throw new Error(\"Agent has no open continuity epoch\");\n const idleEventPosition = await this.#store.markIdle(agentId, epoch.epoch);\n this.#notifyEvents(agentId, idleEventPosition);\n return idleEventPosition;\n }\n\n get activeReceiveStreams(): number {\n return this.#activeReceiveStreams;\n }\n\n get activeReplayReads(): number {\n return this.#activeReplayReads;\n }\n\n diagnostics(databasePath: string): Promise<RuntimeJournalDiagnostics> {\n return collectRuntimeJournalDiagnostics({\n store: this.#store,\n databasePath,\n ingestion: this.ingestion,\n activeReceiveStreams: this.#activeReceiveStreams,\n activeReplayReads: this.#activeReplayReads,\n });\n }\n\n closeIngestion(): Promise<void> {\n return this.ingestion.close();\n }\n\n async #commit(candidates: readonly JournalCandidate[]): Promise<void> {\n const first = candidates[0];\n if (first === undefined) return;\n if (\n candidates.some(\n (candidate) =>\n candidate.agentId !== first.agentId ||\n candidate.epoch !== first.epoch ||\n candidate.incarnationId !== first.incarnationId,\n )\n ) {\n throw new Error(\"Journal ingestion batch crosses an agent, incarnation, or continuity epoch\");\n }\n\n const current =\n (await this.#store.getHighWater(first.agentId)) ??\n ({ rawPosition: 0, eventPosition: 0, idleEventPosition: null } satisfies JournalHighWater);\n let nextState =\n (await this.#store.getProjectorState(first.agentId, first.incarnationId, first.epoch)) ??\n initialProjectorState();\n let rawPosition = current.rawPosition;\n let eventPosition = current.eventPosition;\n const records: RawRpcRecord[] = [];\n const events: StoredSemanticEvent[] = [];\n let projectionError: Error | null = null;\n\n for (const candidate of candidates) {\n rawPosition += 1;\n records.push({\n agentId: candidate.agentId,\n incarnationId: candidate.incarnationId,\n position: rawPosition,\n observedAt: candidate.observedAt,\n bytes: candidate.bytes,\n });\n if (projectionError !== null) continue;\n try {\n const result = projectLifecycleRecord(\n nextState,\n {\n agentId: candidate.agentId,\n epoch: candidate.epoch,\n rawPosition,\n observedAt: candidate.observedAt,\n frame: decodeRecord(candidate.bytes),\n },\n this.#limits.maxOpenProjectorActivities,\n );\n if (\n result.events.some(\n (event) => Buffer.byteLength(JSON.stringify(event)) > this.#limits.maxPiFrameBytes,\n )\n ) {\n throw new Error(\"Semantic event exceeds the configured storage limit\");\n }\n nextState = result.state;\n for (const event of result.events) {\n eventPosition += 1;\n events.push({ agentId: candidate.agentId, position: eventPosition, event });\n }\n } catch (error: unknown) {\n projectionError = error instanceof Error ? error : new Error(String(error));\n }\n }\n\n const append: JournalAppend = {\n agentId: first.agentId,\n incarnationId: first.incarnationId,\n epoch: first.epoch,\n records,\n events,\n projectorState: nextState,\n highWater: {\n rawPosition,\n eventPosition,\n idleEventPosition: current.idleEventPosition,\n },\n };\n await this.#store.append(append);\n if (events.length > 0) this.#notifyEvents(first.agentId, eventPosition);\n if (projectionError !== null) throw projectionError;\n }\n}\n\nexport function journalIngestionLimitsFromRuntime(limits: RuntimeLimits): JournalIngestionLimits {\n return {\n maxPendingRecords: limits.maxJournalPendingRecords,\n maxPendingBytes: limits.maxJournalPendingBytes,\n maxPendingBytesPerAgent: limits.maxJournalPendingBytesPerAgent,\n maxBatchRecords: limits.maxJournalBatchRecords,\n maxBatchBytes: limits.maxJournalBatchBytes,\n maxBatchAgeMs: limits.maxJournalBatchAgeMs,\n };\n}\n\nexport function receivePagerLimitsFromRuntime(limits: RuntimeLimits): ReceivePagerLimits {\n return {\n maxRows: limits.maxReceiveReplayRows,\n maxBytes: limits.maxReceiveReplayBytes,\n maxEventBytes: limits.maxPiFrameBytes,\n };\n}\n\nfunction decodeRecord(bytes: Buffer): unknown {\n let end = bytes.length;\n if (end === 0 || bytes[end - 1] !== 0x0a) throw new Error(\"RPC record is not LF terminated\");\n end -= 1;\n if (end > 0 && bytes[end - 1] === 0x0d) end -= 1;\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes.subarray(0, end));\n return JSON.parse(text) as unknown;\n}\n\nfunction defaultNotifyEvents(\n wakeup: ReceiveWakeup,\n): NonNullable<JournalRuntimeCompositionOptions[\"notifyEvents\"]> {\n const candidate = wakeup as { notify?: (agentId: AgentId, position: number) => void };\n if (typeof candidate.notify !== \"function\") {\n throw new Error(\"Journal composition requires a notifiable receive wakeup\");\n }\n const notify = candidate.notify.bind(wakeup);\n return (agentId, position) => notify(agentId, position);\n}\n", "import type { AgentId } from \"./semantic-events.js\";\nimport type { ReceiveWakeup } from \"./receive-pager.js\";\n\ninterface Waiter {\n readonly afterPosition: number;\n readonly resolve: () => void;\n readonly reject: (error: Error) => void;\n readonly signal: AbortSignal;\n readonly onAbort: () => void;\n}\n\n/** In-memory wakeups are hints only; receive always re-reads SQLite. */\nexport class JournalWakeup implements ReceiveWakeup {\n readonly #positions = new Map<AgentId, number>();\n readonly #waiters = new Map<AgentId, Set<Waiter>>();\n readonly #failures = new Map<AgentId, Error>();\n #closedError: Error | null = null;\n\n notify(agentId: AgentId, position: number): void {\n if (this.#closedError !== null) return;\n this.#positions.set(agentId, Math.max(this.#positions.get(agentId) ?? 0, position));\n const waiters = this.#waiters.get(agentId);\n if (waiters === undefined) return;\n for (const waiter of [...waiters]) {\n if (position <= waiter.afterPosition) continue;\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n waiters.delete(waiter);\n waiter.resolve();\n }\n if (waiters.size === 0) this.#waiters.delete(agentId);\n }\n\n waitForEvents(agentId: AgentId, afterPosition: number, signal: AbortSignal): Promise<void> {\n if (this.#closedError !== null) return Promise.reject(this.#closedError);\n const failure = this.#failures.get(agentId);\n if (failure !== undefined) return Promise.reject(failure);\n if ((this.#positions.get(agentId) ?? 0) > afterPosition) return Promise.resolve();\n if (signal.aborted) return Promise.reject(new Error(\"Receive cancelled\"));\n return new Promise((resolve, reject) => {\n const waiters = this.#waiters.get(agentId) ?? new Set<Waiter>();\n const waiter: Waiter = {\n afterPosition,\n resolve,\n reject,\n signal,\n onAbort: () => {\n waiters.delete(waiter);\n if (waiters.size === 0) this.#waiters.delete(agentId);\n reject(new Error(\"Receive cancelled\"));\n },\n };\n waiters.add(waiter);\n this.#waiters.set(agentId, waiters);\n signal.addEventListener(\"abort\", waiter.onAbort, { once: true });\n const racedFailure = this.#failures.get(agentId);\n if (racedFailure !== undefined) {\n signal.removeEventListener(\"abort\", waiter.onAbort);\n waiters.delete(waiter);\n if (waiters.size === 0) this.#waiters.delete(agentId);\n reject(racedFailure);\n } else if ((this.#positions.get(agentId) ?? 0) > afterPosition) {\n signal.removeEventListener(\"abort\", waiter.onAbort);\n waiters.delete(waiter);\n if (waiters.size === 0) this.#waiters.delete(agentId);\n resolve();\n }\n });\n }\n\n failAgent(agentId: AgentId, error: Error): void {\n this.#failures.set(agentId, error);\n const waiters = this.#waiters.get(agentId);\n if (waiters === undefined) return;\n for (const waiter of waiters) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n waiter.reject(error);\n }\n this.#waiters.delete(agentId);\n }\n\n close(error = new Error(\"Runtime unavailable\")): void {\n if (this.#closedError !== null) return;\n this.#closedError = error;\n for (const waiters of this.#waiters.values()) {\n for (const waiter of waiters) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n waiter.reject(error);\n }\n }\n this.#waiters.clear();\n }\n}\n", "import type { ReceiveCursor } from \"./semantic-events.js\";\n\nexport type StorageHealthState =\n | { readonly state: \"healthy\" }\n | {\n readonly state: \"failed\";\n readonly error: Error;\n readonly lastDurableCursor: ReceiveCursor | null;\n };\n\nexport class StorageCommitDelayError extends Error {\n readonly code = \"storage_unavailable\";\n\n constructor(message = \"A Pi response is waiting for durable journal storage.\") {\n super(message);\n this.name = \"StorageCommitDelayError\";\n }\n}\n\nexport class StorageHealthController {\n #health: StorageHealthState = { state: \"healthy\" };\n readonly #listeners = new Set<(health: StorageHealthState) => void>();\n\n get health(): StorageHealthState {\n return this.#health;\n }\n\n onChange(listener: (health: StorageHealthState) => void): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n fail(error: Error, lastDurableCursor: ReceiveCursor | null): void {\n if (this.#health.state === \"failed\") return;\n this.#health = { state: \"failed\", error, lastDurableCursor };\n for (const listener of this.#listeners) listener(this.#health);\n }\n\n assertHealthy(): void {\n if (this.#health.state === \"failed\") throw this.#health.error;\n }\n}\n\nexport interface CleanDrainSteps {\n readonly stopAdmission: () => Promise<void> | void;\n readonly drainStdoutAndJournal: () => Promise<void>;\n readonly closeReceivers: () => Promise<void>;\n readonly stopProcessTrees: () => Promise<void>;\n readonly closeServer: () => Promise<void>;\n readonly closeStore: () => Promise<void>;\n}\n\n/** Idempotent shutdown ordering shared by the future coordinated runtime cutover. */\nexport class CleanDrainCoordinator {\n #closing: Promise<void> | null = null;\n\n constructor(private readonly steps: CleanDrainSteps) {}\n\n close(): Promise<void> {\n this.#closing ??= this.#run();\n return this.#closing;\n }\n\n async #run(): Promise<void> {\n const steps = [\n () => this.steps.stopAdmission(),\n () => this.steps.drainStdoutAndJournal(),\n () => this.steps.closeReceivers(),\n () => this.steps.stopProcessTrees(),\n () => this.steps.closeServer(),\n () => this.steps.closeStore(),\n ];\n let firstError: unknown;\n for (const step of steps) {\n try {\n await step();\n } catch (error: unknown) {\n firstError ??= error;\n }\n }\n if (firstError !== undefined) throw firstError;\n }\n}\n", "import type { FleetClientError } from \"../client/fleet-client.js\";\nimport type { AgentId, IncarnationId } from \"../runtime/semantic-events.js\";\nimport type {\n FleetStore,\n StoredAgent,\n StoredCompact,\n StoredIncarnation,\n StoredOperation,\n StoredSend,\n} from \"./fleet-store.js\";\nimport type {\n JournalAgent,\n JournalCompact,\n JournalOperation,\n JournalSend,\n JournalStore,\n} from \"./journal-store.js\";\n\n/**\n * Transitional service adapter selected only by the coordinated schema cutover.\n * It keeps the mature lifecycle service while making the journal store's UUID\n * ownership authoritative at every persistence boundary.\n */\nexport class JournalFleetStoreAdapter implements FleetStore {\n constructor(readonly journal: JournalStore) {}\n\n async createAgent(agent: StoredAgent, operation?: StoredOperation): Promise<boolean> {\n if (operation === undefined) return this.journal.createAgent(toJournalAgent(agent));\n return this.journal.createAgentWithOperation(\n toJournalAgent(agent),\n toJournalOperation(operation, agent.summary.id as AgentId),\n );\n }\n\n async getAgent(name: string): Promise<StoredAgent | null> {\n return fromJournalAgent(await this.journal.getAgentByName(name));\n }\n\n async listAgents(): Promise<readonly StoredAgent[]> {\n return (await this.journal.listAgents()).map((agent) => fromJournalAgent(agent)!);\n }\n\n putAgent(agent: StoredAgent): Promise<void> {\n return this.journal.putAgent(toJournalAgent(agent));\n }\n\n async rollbackProvisionalCreate(\n name: string,\n completedOperation: StoredOperation,\n ): Promise<StoredAgent | null> {\n const existing = await this.journal.getAgentByName(name);\n if (existing === null) return null;\n return fromJournalAgent(\n await this.journal.rollbackProvisionalCreate(\n existing.agentId,\n toJournalOperation(completedOperation, undefined),\n ),\n );\n }\n\n async deleteAgent(\n name: string,\n receipt?: {\n readonly operationId: string;\n readonly fingerprint: string;\n readonly destroyedAt: string;\n },\n ): Promise<StoredAgent | null> {\n const existing = await this.journal.getAgentByName(name);\n if (existing === null) return null;\n const destroyed = await this.journal.destroyAgent(existing.agentId, {\n operationId: receipt?.operationId ?? `rollback:${existing.agentId}`,\n agentId: existing.agentId,\n agentName: existing.name,\n fingerprint: receipt?.fingerprint ?? \"rollback\",\n destroyedAt: receipt?.destroyedAt ?? new Date().toISOString(),\n status: \"destroyed\",\n });\n return fromJournalAgent(destroyed);\n }\n\n async getOperation(operationId: string): Promise<StoredOperation | null> {\n const operation = await this.journal.getOperation(operationId);\n if (operation !== null) return fromJournalOperation(operation);\n const receipt = await this.journal.getDestroyReceipt(operationId);\n if (receipt === null) return null;\n return {\n operationId,\n method: \"destroy\",\n fingerprint: receipt.fingerprint,\n state: \"completed\",\n result: {\n ok: true,\n value: {\n schemaVersion: 1,\n type: \"agent.destroyed\",\n agent: { id: receipt.agentId, name: receipt.agentName },\n },\n },\n targetName: receipt.agentName,\n targetAgent: { id: receipt.agentId, name: receipt.agentName },\n };\n }\n\n async putOperation(operation: StoredOperation): Promise<void> {\n if (\n operation.method === \"destroy\" &&\n operation.state === \"completed\" &&\n (await this.journal.getDestroyReceipt(operation.operationId)) !== null\n ) {\n return;\n }\n await this.journal.putOperation(\n toJournalOperation(operation, operation.targetAgent?.id as AgentId | undefined),\n );\n }\n\n async listPendingOperations(): Promise<readonly StoredOperation[]> {\n return (await this.journal.listPendingOperations()).map((operation) =>\n fromJournalOperation(operation),\n );\n }\n\n async deleteOperation(operationId: string): Promise<void> {\n await this.journal.deleteOperation(operationId);\n }\n\n async getSend(sendId: string): Promise<StoredSend | null> {\n return fromJournalSend(\n await this.journal.getSend(sendId),\n await this.#agentNameForSend(sendId),\n );\n }\n\n async nextSendOrdinal(agentName: string): Promise<number> {\n const agent = await this.#requireAgentByName(agentName);\n return this.journal.nextSendOrdinal(agent.agentId);\n }\n\n async putSend(send: StoredSend): Promise<void> {\n const agent = await this.#requireAgentByName(send.agentName);\n if (send.agentId === undefined || agent.agentId !== send.agentId) {\n throw new Error(\"Send is missing its immutable agent generation\");\n }\n await this.journal.putSend({\n sendId: send.sendId,\n agentId: send.agentId as AgentId,\n ordinal: send.ordinal ?? (await this.journal.nextSendOrdinal(agent.agentId)),\n message: send.message,\n delivery: send.delivery ?? \"steer\",\n state: send.state,\n acceptedAt: send.acceptedAt,\n });\n }\n\n async listNonterminalSends(): Promise<readonly StoredSend[]> {\n const sends = await this.journal.listNonterminalSends();\n return Promise.all(\n sends.map(async (send) => {\n const agent = await this.journal.getAgentById(send.agentId);\n if (agent === null) throw new Error(\"Send targets a deleted agent generation\");\n return fromJournalSend(send, agent.name)!;\n }),\n );\n }\n\n async getCompact(compactId: string): Promise<StoredCompact | null> {\n const compact = await this.journal.getCompact(compactId);\n if (compact === null) return null;\n const agent = await this.journal.getAgentById(compact.agentId);\n if (agent === null) return null;\n return fromJournalCompact(compact, agent.name);\n }\n\n async putCompact(compact: StoredCompact): Promise<void> {\n const agent = await this.#requireAgentByName(compact.agentName);\n if (compact.agentId === undefined || agent.agentId !== compact.agentId) {\n throw new Error(\"Compaction is missing its immutable agent generation\");\n }\n await this.journal.putCompact({\n compactId: compact.compactId,\n agentId: compact.agentId as AgentId,\n state: compact.state,\n requestedAt: compact.requestedAt,\n ...(compact.result === undefined ? {} : { result: compact.result }),\n ...(compact.error === undefined ? {} : { error: compact.error }),\n });\n }\n\n async listNonterminalCompacts(): Promise<readonly StoredCompact[]> {\n const compacts = await this.journal.listNonterminalCompacts();\n return Promise.all(\n compacts.map(async (compact) => {\n const agent = await this.journal.getAgentById(compact.agentId);\n if (agent === null) throw new Error(\"Compaction targets a deleted agent generation\");\n return fromJournalCompact(compact, agent.name);\n }),\n );\n }\n\n async putIncarnation(incarnation: StoredIncarnation): Promise<void> {\n const agent = await this.#requireAgentByName(incarnation.agentName);\n if (incarnation.agentId === undefined || agent.agentId !== incarnation.agentId) {\n throw new Error(\"Incarnation is missing its immutable agent generation\");\n }\n await this.journal.putIncarnation({\n incarnationId: incarnation.incarnationId as IncarnationId,\n agentId: incarnation.agentId as AgentId,\n pid: incarnation.pid,\n state: incarnation.state,\n });\n }\n\n async listActiveIncarnations(): Promise<readonly StoredIncarnation[]> {\n const incarnations = await this.journal.listActiveIncarnations();\n return Promise.all(\n incarnations.map(async (incarnation) => {\n const agent = await this.journal.getAgentById(incarnation.agentId);\n if (agent === null) throw new Error(\"Incarnation targets a deleted agent generation\");\n return {\n incarnationId: incarnation.incarnationId,\n agentId: incarnation.agentId,\n agentName: agent.name,\n pid: incarnation.pid,\n state: incarnation.state,\n };\n }),\n );\n }\n\n close(): Promise<void> {\n return this.journal.close();\n }\n\n async #requireAgentByName(name: string): Promise<JournalAgent> {\n const agent = await this.journal.getAgentByName(name);\n if (agent === null) throw new Error(`Agent ${name} no longer exists`);\n return agent;\n }\n\n async #agentNameForSend(sendId: string): Promise<string | null> {\n const send = await this.journal.getSend(sendId);\n if (send === null) return null;\n return (await this.journal.getAgentById(send.agentId))?.name ?? null;\n }\n}\n\nfunction toJournalAgent(agent: StoredAgent): JournalAgent {\n return {\n agentId: agent.summary.id as AgentId,\n name: agent.summary.name,\n summary: agent.summary,\n launch: agent.launch,\n };\n}\n\nfunction fromJournalAgent(agent: JournalAgent | null): StoredAgent | null {\n if (agent === null) return null;\n return {\n summary: agent.summary,\n launch: agent.launch,\n };\n}\n\nfunction fromJournalOperation(operation: JournalOperation): StoredOperation {\n return {\n operationId: operation.operationId,\n method: operation.method,\n fingerprint: operation.fingerprint,\n state: operation.state,\n result: operation.result,\n targetName: operation.targetName,\n ...(operation.agentId === null\n ? {}\n : { targetAgent: { id: operation.agentId, name: operation.targetName } }),\n ...(operation.state === \"pending\" && operation.request !== undefined\n ? { request: operation.request }\n : {}),\n };\n}\n\nfunction toJournalOperation(\n operation: StoredOperation,\n targetId: AgentId | undefined,\n): JournalOperation {\n return {\n operationId: operation.operationId,\n agentId: targetId ?? null,\n targetName: operation.targetName ?? operation.targetAgent?.name ?? \"\",\n method: operation.method,\n fingerprint: operation.fingerprint,\n state: operation.state,\n result: operation.result,\n ...(operation.state === \"pending\" && operation.request !== undefined\n ? { request: operation.request }\n : {}),\n };\n}\n\nfunction fromJournalSend(send: JournalSend | null, name: string | null): StoredSend | null {\n if (send === null || name === null) return null;\n return {\n sendId: send.sendId,\n agentId: send.agentId,\n agentName: name,\n ordinal: send.ordinal,\n message: send.message,\n delivery: send.delivery,\n state: send.state,\n acceptedAt: send.acceptedAt,\n };\n}\n\nfunction fromJournalCompact(compact: JournalCompact, name: string): StoredCompact {\n return {\n compactId: compact.compactId,\n agentId: compact.agentId,\n agentName: name,\n state: compact.state,\n requestedAt: compact.requestedAt,\n ...(compact.result === undefined ? {} : { result: compact.result }),\n ...(compact.error === undefined ? {} : { error: compact.error as FleetClientError }),\n };\n}\n", "import { mkdirSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { DatabaseSync } from \"node:sqlite\";\n\nimport {\n hardenPrivateDirectorySync,\n hardenSqliteSidecarsSync,\n} from \"../platform/shared/state-security.js\";\nimport type {\n AgentId,\n ContinuityEpoch,\n IncarnationId,\n ProjectorState,\n RawRpcRecord,\n} from \"../runtime/semantic-events.js\";\nimport {\n assertJournalAgentIdentity,\n assertJournalAppend,\n boundedSemanticEvents,\n sameJournalDestroyReceipt,\n} from \"./journal-store.js\";\nimport type {\n JournalAgent,\n JournalAppend,\n JournalCompact,\n JournalDestroyReceipt,\n JournalEpoch,\n JournalEventRange,\n JournalHighWater,\n JournalIncarnation,\n JournalMaintenanceResult,\n JournalOperation,\n JournalReceiveSnapshot,\n JournalSend,\n JournalStorageDiagnostics,\n JournalStore,\n StoredSemanticEvent,\n} from \"./journal-store.js\";\n\nexport const JOURNAL_SCHEMA_VERSION = 3;\nexport const JOURNAL_SCHEMA_CHECKSUM = \"003_uuid_journal_v3\";\nexport const LEGACY_JOURNAL_SCHEMA_CHECKSUMS = new Map([\n [1, \"001_initial_v1\"],\n [2, \"002_compact_v1\"],\n]);\n\nexport interface JournalMigrationRow {\n readonly version: number;\n readonly checksum: string;\n}\n\nexport type JournalMigrationState = \"fresh\" | \"legacy\" | \"current\";\n\nexport function classifyJournalMigrationRows(\n rows: readonly JournalMigrationRow[],\n): JournalMigrationState {\n if (rows.length === 0) return \"fresh\";\n for (const row of rows) {\n if (!Number.isSafeInteger(row.version) || typeof row.checksum !== \"string\") {\n throw new Error(\"pi-fleet database migration ledger is malformed\");\n }\n }\n if (rows.length === 1 && rows[0]?.version === JOURNAL_SCHEMA_VERSION) {\n if (rows[0].checksum !== JOURNAL_SCHEMA_CHECKSUM) {\n throw new Error(\n `pi-fleet database migration ${String(JOURNAL_SCHEMA_VERSION)} checksum mismatch`,\n );\n }\n return \"current\";\n }\n const legacyOne = rows.length === 1 && rows[0]?.version === 1;\n const legacyTwo = rows.length === 2 && rows[0]?.version === 1 && rows[1]?.version === 2;\n if (legacyOne || legacyTwo) {\n for (const row of rows) {\n if (LEGACY_JOURNAL_SCHEMA_CHECKSUMS.get(row.version) !== row.checksum) {\n throw new Error(`pi-fleet database migration ${String(row.version)} checksum mismatch`);\n }\n }\n return \"legacy\";\n }\n const newer = rows.find((row) => row.version > JOURNAL_SCHEMA_VERSION);\n if (newer !== undefined) {\n throw new Error(`pi-fleet database schema ${String(newer.version)} is newer than this runtime`);\n }\n throw new Error(\"pi-fleet database migration ledger sequence is invalid\");\n}\n\ninterface JsonRow {\n readonly data_json: string;\n}\n\nfunction* parseSemanticEventRows(rows: Iterable<JsonRow>): Iterable<StoredSemanticEvent> {\n for (const row of rows) yield JSON.parse(row.data_json) as StoredSemanticEvent;\n}\n\nexport interface SqliteJournalStoreOptions {\n readonly checkpointCommitInterval?: number;\n readonly reclaimPagesPerPass?: number;\n readonly now?: () => string;\n}\n\nconst idleMaintenance = (): JournalMaintenanceResult => ({\n state: \"idle\",\n lastCheckpointAt: null,\n busy: false,\n logFrames: 0,\n checkpointedFrames: 0,\n autoVacuumMode: \"none\",\n freelistPagesBefore: 0,\n freelistPagesAfter: 0,\n requestedReclaimPages: 0,\n});\n\nexport class SqliteJournalStore implements JournalStore {\n readonly #database: DatabaseSync;\n readonly #checkpointCommitInterval: number;\n readonly #reclaimPagesPerPass: number;\n readonly #now: () => string;\n #commitsSinceCheckpoint = 0;\n #lastAppendDurationMs: number | null = null;\n #storageFailureLatched = false;\n #maintenance = idleMaintenance();\n #closed = false;\n\n constructor(path: string, options: SqliteJournalStoreOptions = {}) {\n const directory = dirname(path);\n mkdirSync(directory, { recursive: true, mode: 0o700 });\n hardenPrivateDirectorySync(directory);\n hardenSqliteSidecarsSync(path);\n this.#checkpointCommitInterval = positiveInteger(\n options.checkpointCommitInterval ?? 128,\n \"Journal checkpoint commit interval\",\n );\n this.#reclaimPagesPerPass = positiveInteger(\n options.reclaimPagesPerPass ?? 32,\n \"Journal reclaim pages per pass\",\n );\n this.#now = options.now ?? (() => new Date().toISOString());\n this.#database = new DatabaseSync(path);\n this.#database.exec(\n \"PRAGMA auto_vacuum=INCREMENTAL; PRAGMA foreign_keys=ON; PRAGMA journal_mode=WAL; PRAGMA synchronous=FULL;\",\n );\n hardenSqliteSidecarsSync(path);\n try {\n const integrity = this.#database.prepare(\"PRAGMA quick_check\").get() as\n | { quick_check?: string }\n | undefined;\n if (integrity?.quick_check !== \"ok\") throw new Error(\"pi-fleet database quick_check failed\");\n this.#migrate();\n this.#database\n .prepare(\n \"UPDATE journal_runtime_health SET clean_shutdown = 0, started_at = ? WHERE singleton_key = 1\",\n )\n .run(new Date().toISOString());\n } catch (error: unknown) {\n this.#database.close();\n this.#closed = true;\n throw error;\n }\n }\n\n async createAgent(agent: JournalAgent): Promise<boolean> {\n this.#assertOpen();\n assertJournalAgentIdentity(agent);\n const result = this.#database\n .prepare(\"INSERT OR IGNORE INTO journal_agents(agent_id, name, data_json) VALUES(?, ?, ?)\")\n .run(agent.agentId, agent.name, JSON.stringify(agent));\n return result.changes === 1;\n }\n\n async createAgentWithOperation(\n agent: JournalAgent,\n operation: JournalOperation,\n ): Promise<boolean> {\n this.#assertOpen();\n assertJournalAgentIdentity(agent);\n if (operation.agentId !== agent.agentId || operation.targetName !== agent.name) {\n throw new Error(\"Create operation does not target the provisional agent\");\n }\n this.#database.exec(\"BEGIN IMMEDIATE\");\n try {\n const existing = await this.getOperation(operation.operationId);\n if (\n existing !== null &&\n (existing.method !== operation.method ||\n existing.fingerprint !== operation.fingerprint ||\n (existing.agentId !== null && existing.agentId !== agent.agentId))\n ) {\n throw new Error(\"Operation was already used with a different request\");\n }\n const created =\n this.#database\n .prepare(\n \"INSERT OR IGNORE INTO journal_agents(agent_id, name, data_json) VALUES(?, ?, ?)\",\n )\n .run(agent.agentId, agent.name, JSON.stringify(agent)).changes === 1;\n if (created) this.#putOperationSync(operation);\n this.#database.exec(\"COMMIT\");\n return created;\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n throw error;\n }\n }\n\n async rollbackProvisionalCreate(\n agentId: AgentId,\n completedOperation: JournalOperation,\n ): Promise<JournalAgent | null> {\n this.#assertOpen();\n this.#database.exec(\"BEGIN IMMEDIATE\");\n try {\n const existing = await this.getAgentById(agentId);\n const pending = await this.getOperation(completedOperation.operationId);\n if (existing === null) {\n this.#database.exec(\"ROLLBACK\");\n return null;\n }\n if (\n pending === null ||\n pending.method !== \"create\" ||\n pending.state !== \"pending\" ||\n pending.agentId !== agentId ||\n pending.targetName !== existing.name ||\n completedOperation.method !== \"create\" ||\n completedOperation.state !== \"completed\" ||\n completedOperation.agentId !== null ||\n completedOperation.targetName !== existing.name ||\n completedOperation.fingerprint !== pending.fingerprint\n ) {\n throw new Error(\"Provisional create rollback does not match the pending operation\");\n }\n this.#database\n .prepare(\"DELETE FROM journal_operations WHERE agent_id = ? AND operation_id <> ?\")\n .run(agentId, completedOperation.operationId);\n this.#putOperationSync(completedOperation);\n this.#database.prepare(\"DELETE FROM journal_agents WHERE agent_id = ?\").run(agentId);\n this.#database.exec(\"COMMIT\");\n return existing;\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n throw error;\n }\n }\n\n async getAgentByName(name: string): Promise<JournalAgent | null> {\n return this.#readJson<JournalAgent>(\n \"SELECT data_json FROM journal_agents WHERE name = ?\",\n name,\n );\n }\n\n async getAgentById(agentId: AgentId): Promise<JournalAgent | null> {\n return this.#readJson<JournalAgent>(\n \"SELECT data_json FROM journal_agents WHERE agent_id = ?\",\n agentId,\n );\n }\n\n async listAgents(): Promise<readonly JournalAgent[]> {\n return this.#readJsonRows<JournalAgent>(\"SELECT data_json FROM journal_agents ORDER BY name\");\n }\n\n async putAgent(agent: JournalAgent): Promise<void> {\n this.#assertOpen();\n assertJournalAgentIdentity(agent);\n this.#database\n .prepare(\n `INSERT INTO journal_agents(agent_id, name, data_json) VALUES(?, ?, ?)\n ON CONFLICT(agent_id) DO UPDATE SET name=excluded.name, data_json=excluded.data_json`,\n )\n .run(agent.agentId, agent.name, JSON.stringify(agent));\n }\n\n async putOperation(operation: JournalOperation): Promise<void> {\n this.#putOperationSync(operation);\n }\n\n async getOperation(operationId: string): Promise<JournalOperation | null> {\n return this.#readJson<JournalOperation>(\n \"SELECT data_json FROM journal_operations WHERE operation_id = ?\",\n operationId,\n );\n }\n\n async listPendingOperations(): Promise<readonly JournalOperation[]> {\n return this.#readJsonRows<JournalOperation>(\n \"SELECT data_json FROM journal_operations WHERE json_extract(data_json, '$.state') = 'pending' ORDER BY rowid\",\n );\n }\n\n async deleteOperation(operationId: string): Promise<void> {\n this.#assertOpen();\n this.#database\n .prepare(\"DELETE FROM journal_operations WHERE operation_id = ?\")\n .run(operationId);\n }\n\n async putSend(send: JournalSend): Promise<void> {\n this.#putOwned(\"journal_sends\", \"send_id\", send.sendId, send.agentId, send);\n }\n\n async getSend(sendId: string): Promise<JournalSend | null> {\n return this.#readJson<JournalSend>(\n \"SELECT data_json FROM journal_sends WHERE send_id = ?\",\n sendId,\n );\n }\n\n async nextSendOrdinal(agentId: AgentId): Promise<number> {\n const row = this.#database\n .prepare(\n `SELECT COALESCE(MAX(CAST(json_extract(data_json, '$.ordinal') AS INTEGER)), 0) + 1 AS ordinal\n FROM journal_sends WHERE agent_id = ?`,\n )\n .get(agentId) as { readonly ordinal: number };\n return row.ordinal;\n }\n\n async listNonterminalSends(): Promise<readonly JournalSend[]> {\n return this.#readJsonRows<JournalSend>(\n `SELECT data_json FROM journal_sends\n WHERE json_extract(data_json, '$.state') IN ('pending', 'dispatching')\n ORDER BY CAST(json_extract(data_json, '$.ordinal') AS INTEGER), rowid`,\n );\n }\n\n async putCompact(compact: JournalCompact): Promise<void> {\n this.#putOwned(\"journal_compacts\", \"compact_id\", compact.compactId, compact.agentId, compact);\n }\n\n async getCompact(compactId: string): Promise<JournalCompact | null> {\n return this.#readJson<JournalCompact>(\n \"SELECT data_json FROM journal_compacts WHERE compact_id = ?\",\n compactId,\n );\n }\n\n async listNonterminalCompacts(): Promise<readonly JournalCompact[]> {\n return this.#readJsonRows<JournalCompact>(\n `SELECT data_json FROM journal_compacts\n WHERE json_extract(data_json, '$.state') IN ('pending', 'dispatching') ORDER BY rowid`,\n );\n }\n\n async putIncarnation(incarnation: JournalIncarnation): Promise<void> {\n this.#putOwned(\n \"journal_incarnations\",\n \"incarnation_id\",\n incarnation.incarnationId,\n incarnation.agentId,\n incarnation,\n );\n }\n\n async listActiveIncarnations(): Promise<readonly JournalIncarnation[]> {\n return this.#readJsonRows<JournalIncarnation>(\n `SELECT data_json FROM journal_incarnations\n WHERE json_extract(data_json, '$.state') IN\n ('starting', 'live', 'stopping', 'cleanup_uncertain') ORDER BY rowid`,\n );\n }\n\n async putEpoch(epoch: JournalEpoch): Promise<void> {\n this.#assertOpen();\n this.#database\n .prepare(\n `INSERT INTO journal_epochs(agent_id, epoch, state, data_json) VALUES(?, ?, ?, ?)\n ON CONFLICT(agent_id, epoch) DO UPDATE SET\n state=excluded.state, data_json=excluded.data_json`,\n )\n .run(epoch.agentId, epoch.epoch, epoch.state, JSON.stringify(epoch));\n }\n\n async getEpochs(agentId: AgentId): Promise<readonly JournalEpoch[]> {\n return this.#readJsonRows<JournalEpoch>(\n \"SELECT data_json FROM journal_epochs WHERE agent_id = ? ORDER BY epoch\",\n agentId,\n );\n }\n\n async beginIncarnation(\n agentId: AgentId,\n incarnationId: IncarnationId,\n epoch: ContinuityEpoch,\n projectorState: ProjectorState,\n ): Promise<void> {\n this.#assertOpen();\n const incarnation = this.#database\n .prepare(\"SELECT 1 FROM journal_incarnations WHERE agent_id = ? AND incarnation_id = ?\")\n .get(agentId, incarnationId);\n const epochRow = this.#database\n .prepare(\"SELECT state FROM journal_epochs WHERE agent_id = ? AND epoch = ?\")\n .get(agentId, epoch) as { readonly state: string } | undefined;\n if (incarnation === undefined) {\n throw new Error(\"Projector binding references an unknown incarnation\");\n }\n if (epochRow?.state !== \"open\") {\n throw new Error(\"Projector binding requires an open continuity epoch\");\n }\n this.#database\n .prepare(\n `INSERT INTO journal_projector_state(\n agent_id, incarnation_id, epoch, data_json\n ) VALUES(?, ?, ?, ?)\n ON CONFLICT(agent_id) DO UPDATE SET\n incarnation_id=excluded.incarnation_id,\n epoch=excluded.epoch,\n data_json=excluded.data_json`,\n )\n .run(agentId, incarnationId, epoch, JSON.stringify(projectorState));\n }\n\n async append(batch: JournalAppend): Promise<void> {\n this.#assertOpen();\n const startedAt = performance.now();\n let transactionOpen = false;\n try {\n this.#database.exec(\"BEGIN IMMEDIATE\");\n transactionOpen = true;\n const current = this.#getHighWaterSync(batch.agentId) ?? {\n rawPosition: 0,\n eventPosition: 0,\n idleEventPosition: null,\n };\n const epochRow = this.#database\n .prepare(\"SELECT data_json FROM journal_epochs WHERE agent_id = ? AND epoch = ?\")\n .get(batch.agentId, batch.epoch) as JsonRow | undefined;\n assertJournalAppend(\n batch,\n current,\n epochRow === undefined ? null : (JSON.parse(epochRow.data_json) as JournalEpoch),\n );\n const projectorBinding = this.#database\n .prepare(\n `SELECT incarnation_id, epoch FROM journal_projector_state\n WHERE agent_id = ?`,\n )\n .get(batch.agentId) as\n | { readonly incarnation_id: string; readonly epoch: number }\n | undefined;\n if (\n projectorBinding?.incarnation_id !== batch.incarnationId ||\n projectorBinding.epoch !== batch.epoch\n ) {\n throw new Error(\"Journal append does not match the active projector incarnation\");\n }\n const putRecord = this.#database.prepare(\n `INSERT INTO journal_raw_records(\n agent_id, raw_position, incarnation_id, epoch, observed_at, record_bytes\n ) VALUES(?, ?, ?, ?, ?, ?)`,\n );\n for (const record of batch.records) {\n putRecord.run(\n record.agentId,\n record.position,\n record.incarnationId,\n batch.epoch,\n record.observedAt,\n record.bytes,\n );\n }\n const putEvent = this.#database.prepare(\n `INSERT INTO journal_semantic_events(\n agent_id, event_position, event_id, event_epoch, raw_position, event_type, data_json\n ) VALUES(?, ?, ?, ?, ?, ?, ?)`,\n );\n for (const stored of batch.events) {\n putEvent.run(\n stored.agentId,\n stored.position,\n stored.event.id,\n stored.event.epoch,\n stored.event.sourceRawPosition,\n stored.event.type,\n JSON.stringify(stored),\n );\n }\n this.#database\n .prepare(\n `UPDATE journal_projector_state SET data_json = ?\n WHERE agent_id = ? AND incarnation_id = ? AND epoch = ?`,\n )\n .run(JSON.stringify(batch.projectorState), batch.agentId, batch.incarnationId, batch.epoch);\n this.#database\n .prepare(\n `INSERT INTO journal_high_water(\n agent_id, raw_position, event_position, idle_event_position\n ) VALUES(?, ?, ?, ?)\n ON CONFLICT(agent_id) DO UPDATE SET\n raw_position=excluded.raw_position,\n event_position=excluded.event_position,\n idle_event_position=excluded.idle_event_position`,\n )\n .run(\n batch.agentId,\n batch.highWater.rawPosition,\n batch.highWater.eventPosition,\n batch.highWater.idleEventPosition,\n );\n this.#database\n .prepare(\n `UPDATE journal_runtime_health SET last_commit_at = ?\n WHERE singleton_key = 1`,\n )\n .run(new Date().toISOString());\n this.#database.exec(\"COMMIT\");\n transactionOpen = false;\n } catch (error: unknown) {\n if (transactionOpen) {\n try {\n this.#database.exec(\"ROLLBACK\");\n } catch {\n // The original durability failure remains authoritative when rollback also fails.\n }\n }\n this.#latchStorageFailure();\n throw error;\n } finally {\n this.#lastAppendDurationMs = Math.max(0, performance.now() - startedAt);\n }\n this.#commitsSinceCheckpoint += 1;\n if (this.#commitsSinceCheckpoint >= this.#checkpointCommitInterval) {\n await this.maintain(0);\n }\n }\n\n async openReceive(agentId: AgentId): Promise<JournalReceiveSnapshot | null> {\n this.#assertOpen();\n this.#database.exec(\"BEGIN\");\n try {\n const agent = this.#readJson<JournalAgent>(\n \"SELECT data_json FROM journal_agents WHERE agent_id = ?\",\n agentId,\n );\n if (agent === null) {\n this.#database.exec(\"COMMIT\");\n return null;\n }\n const snapshot = {\n agent,\n epochs: this.#readJsonRows<JournalEpoch>(\n \"SELECT data_json FROM journal_epochs WHERE agent_id = ? ORDER BY epoch\",\n agentId,\n ),\n highWater: this.#getHighWaterSync(agentId) ?? {\n rawPosition: 0,\n eventPosition: 0,\n idleEventPosition: null,\n },\n } satisfies JournalReceiveSnapshot;\n this.#database.exec(\"COMMIT\");\n return snapshot;\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n throw error;\n }\n }\n\n async readEvents(range: JournalEventRange): Promise<readonly StoredSemanticEvent[]> {\n const rows = this.#database\n .prepare(\n `SELECT data_json FROM journal_semantic_events\n WHERE agent_id = ? AND event_epoch = ? AND event_position > ?\n ORDER BY event_position LIMIT ?`,\n )\n .iterate(range.agentId, range.epoch, range.afterPosition, range.limit) as Iterable<JsonRow>;\n return boundedSemanticEvents(parseSemanticEventRows(rows), range);\n }\n\n async getProjectorState(\n agentId: AgentId,\n incarnationId: IncarnationId,\n epoch: ContinuityEpoch,\n ): Promise<ProjectorState | null> {\n this.#assertOpen();\n const row = this.#database\n .prepare(\n `SELECT incarnation_id, epoch, data_json FROM journal_projector_state\n WHERE agent_id = ?`,\n )\n .get(agentId) as\n | { readonly incarnation_id: string; readonly epoch: number; readonly data_json: string }\n | undefined;\n if (row === undefined) return null;\n if (row.incarnation_id !== incarnationId || row.epoch !== epoch) {\n throw new Error(\"Projector state belongs to another incarnation or continuity epoch\");\n }\n return JSON.parse(row.data_json) as ProjectorState;\n }\n\n async getHighWater(agentId: AgentId): Promise<JournalHighWater | null> {\n return this.#getHighWaterSync(agentId);\n }\n\n async markIdle(agentId: AgentId, epoch: ContinuityEpoch): Promise<number> {\n this.#assertOpen();\n this.#database.exec(\"BEGIN IMMEDIATE\");\n try {\n const epochRow = this.#database\n .prepare(\"SELECT state FROM journal_epochs WHERE agent_id = ? AND epoch = ?\")\n .get(agentId, epoch) as { readonly state: string } | undefined;\n if (epochRow?.state !== \"open\") throw new Error(\"Idle marker requires an open epoch\");\n const current = this.#getHighWaterSync(agentId) ?? {\n rawPosition: 0,\n eventPosition: 0,\n idleEventPosition: null,\n };\n this.#database\n .prepare(\n `INSERT INTO journal_high_water(\n agent_id, raw_position, event_position, idle_event_position\n ) VALUES(?, ?, ?, ?)\n ON CONFLICT(agent_id) DO UPDATE SET\n idle_event_position=excluded.idle_event_position`,\n )\n .run(agentId, current.rawPosition, current.eventPosition, current.eventPosition);\n this.#database\n .prepare(\"UPDATE journal_runtime_health SET last_commit_at = ? WHERE singleton_key = 1\")\n .run(new Date().toISOString());\n this.#database.exec(\"COMMIT\");\n return current.eventPosition;\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n this.#latchStorageFailure();\n throw error;\n }\n }\n\n async getRawRecords(\n agentId: AgentId,\n afterPosition: number,\n limit: number,\n ): Promise<readonly RawRpcRecord[]> {\n this.#assertPositiveLimit(limit);\n const rows = this.#database\n .prepare(\n `SELECT raw_position, incarnation_id, observed_at, record_bytes\n FROM journal_raw_records WHERE agent_id = ? AND raw_position > ?\n ORDER BY raw_position LIMIT ?`,\n )\n .all(agentId, afterPosition, limit) as unknown as Array<{\n readonly raw_position: number;\n readonly incarnation_id: string;\n readonly observed_at: string;\n readonly record_bytes: Uint8Array;\n }>;\n return rows.map((row) => ({\n agentId,\n incarnationId: row.incarnation_id as RawRpcRecord[\"incarnationId\"],\n position: row.raw_position,\n observedAt: row.observed_at,\n bytes: Buffer.from(row.record_bytes),\n }));\n }\n\n async destroyAgent(\n agentId: AgentId,\n receipt: JournalDestroyReceipt,\n ): Promise<JournalAgent | null> {\n this.#assertOpen();\n if (receipt.agentId !== agentId) throw new Error(\"Destroy receipt targets another agent\");\n let destroyed: JournalAgent | null = null;\n this.#database.exec(\"BEGIN IMMEDIATE\");\n try {\n const priorReceipt = await this.getDestroyReceipt(receipt.operationId);\n if (priorReceipt !== null) {\n if (!sameJournalDestroyReceipt(priorReceipt, receipt)) {\n throw new Error(\"Destroy operation was already used\");\n }\n this.#database.exec(\"ROLLBACK\");\n return null;\n }\n const existing = await this.getAgentById(agentId);\n if (existing === null) {\n this.#database.exec(\"ROLLBACK\");\n return null;\n }\n this.#database.prepare(\"DELETE FROM journal_operations WHERE agent_id = ?\").run(agentId);\n this.#database.prepare(\"DELETE FROM journal_agents WHERE agent_id = ?\").run(agentId);\n this.#database\n .prepare(\n `INSERT INTO journal_destroy_receipts(\n operation_id, agent_id, agent_name, fingerprint, destroyed_at, status\n ) VALUES(?, ?, ?, ?, ?, ?)\n ON CONFLICT(operation_id) DO NOTHING`,\n )\n .run(\n receipt.operationId,\n receipt.agentId,\n receipt.agentName,\n receipt.fingerprint,\n receipt.destroyedAt,\n receipt.status,\n );\n this.#database.exec(\"COMMIT\");\n destroyed = existing;\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n throw error;\n }\n await this.maintain(this.#reclaimPagesPerPass);\n return destroyed;\n }\n\n async getDestroyReceipt(operationId: string): Promise<JournalDestroyReceipt | null> {\n const row = this.#database\n .prepare(\n `SELECT operation_id, agent_id, agent_name, fingerprint, destroyed_at, status\n FROM journal_destroy_receipts WHERE operation_id = ?`,\n )\n .get(operationId) as\n | {\n readonly operation_id: string;\n readonly agent_id: string;\n readonly agent_name: string;\n readonly fingerprint: string;\n readonly destroyed_at: string;\n readonly status: \"destroyed\";\n }\n | undefined;\n return row === undefined\n ? null\n : {\n operationId: row.operation_id,\n agentId: row.agent_id as AgentId,\n agentName: row.agent_name,\n fingerprint: row.fingerprint,\n destroyedAt: row.destroyed_at,\n status: row.status,\n };\n }\n\n async maintain(reclaimPages = this.#reclaimPagesPerPass): Promise<JournalMaintenanceResult> {\n this.#assertOpen();\n if (!Number.isSafeInteger(reclaimPages) || reclaimPages < 0) {\n throw new Error(\"Journal reclaim page limit must be a non-negative integer\");\n }\n this.#maintenance = {\n ...this.#maintenance,\n state: \"running\",\n requestedReclaimPages: reclaimPages,\n };\n try {\n const checkpoint = this.#database.prepare(\"PRAGMA wal_checkpoint(PASSIVE)\").get() as {\n readonly busy: number;\n readonly log: number;\n readonly checkpointed: number;\n };\n const autoVacuumValue = pragmaInteger(this.#database, \"auto_vacuum\");\n const freelistPagesBefore = pragmaInteger(this.#database, \"freelist_count\");\n if (reclaimPages > 0 && autoVacuumValue === 2 && freelistPagesBefore > 0) {\n this.#database.exec(`PRAGMA incremental_vacuum(${String(reclaimPages)})`);\n }\n const result: JournalMaintenanceResult = {\n state: \"idle\",\n lastCheckpointAt: this.#now(),\n busy: checkpoint.busy !== 0,\n logFrames: checkpoint.log,\n checkpointedFrames: checkpoint.checkpointed,\n autoVacuumMode: autoVacuumMode(autoVacuumValue),\n freelistPagesBefore,\n freelistPagesAfter: pragmaInteger(this.#database, \"freelist_count\"),\n requestedReclaimPages: reclaimPages,\n };\n this.#maintenance = result;\n this.#commitsSinceCheckpoint = 0;\n return { ...result };\n } catch (error: unknown) {\n this.#maintenance = { ...this.#maintenance, state: \"failed\" };\n this.#latchStorageFailure();\n throw error;\n }\n }\n\n async getDiagnostics(): Promise<JournalStorageDiagnostics> {\n const retainedByAgent = this.#database\n .prepare(\n `SELECT a.agent_id,\n (SELECT COUNT(*) FROM journal_raw_records r\n WHERE r.agent_id = a.agent_id) AS raw_record_count,\n (SELECT COALESCE(SUM(length(r.record_bytes)), 0) FROM journal_raw_records r\n WHERE r.agent_id = a.agent_id) AS raw_bytes,\n (SELECT COUNT(*) FROM journal_semantic_events e\n WHERE e.agent_id = a.agent_id) AS semantic_event_count\n FROM journal_agents a ORDER BY a.agent_id`,\n )\n .all() as unknown as Array<{\n readonly agent_id: string;\n readonly raw_record_count: number;\n readonly raw_bytes: number;\n readonly semantic_event_count: number;\n }>;\n const row = this.#database\n .prepare(\n `SELECT\n (SELECT COUNT(*) FROM journal_raw_records) AS raw_record_count,\n (SELECT COALESCE(SUM(length(record_bytes)), 0) FROM journal_raw_records) AS raw_bytes,\n (SELECT COUNT(*) FROM journal_semantic_events) AS semantic_event_count,\n (SELECT COUNT(*) FROM journal_agents) AS agent_count,\n (SELECT COALESCE(SUM(json_array_length(data_json, '$.openActivities')), 0)\n FROM journal_projector_state) AS open_projector_activities,\n (SELECT COUNT(*) FROM journal_epochs\n WHERE state = 'closed'\n AND json_extract(data_json, '$.reason') = 'observation_uncertain')\n AS continuity_gap_count,\n (SELECT storage_state FROM journal_runtime_health WHERE singleton_key = 1) AS storage_state,\n (SELECT last_commit_at FROM journal_runtime_health WHERE singleton_key = 1) AS last_commit_at`,\n )\n .get() as {\n readonly raw_record_count: number;\n readonly raw_bytes: number;\n readonly semantic_event_count: number;\n readonly agent_count: number;\n readonly open_projector_activities: number;\n readonly continuity_gap_count: number;\n readonly storage_state: \"healthy\" | \"failed\";\n readonly last_commit_at: string | null;\n };\n return {\n rawRecordCount: row.raw_record_count,\n rawBytes: row.raw_bytes,\n semanticEventCount: row.semantic_event_count,\n agentCount: row.agent_count,\n retainedByAgent: retainedByAgent.map((agent) => ({\n agentId: agent.agent_id as AgentId,\n rawRecordCount: agent.raw_record_count,\n rawBytes: agent.raw_bytes,\n semanticEventCount: agent.semantic_event_count,\n })),\n openProjectorActivities: row.open_projector_activities,\n continuityGapCount: row.continuity_gap_count,\n storageState: this.#storageFailureLatched ? \"failed\" : row.storage_state,\n lastCommitAt: row.last_commit_at,\n lastAppendDurationMs: this.#lastAppendDurationMs,\n maintenance: { ...this.#maintenance },\n };\n }\n\n #latchStorageFailure(): void {\n this.#storageFailureLatched = true;\n try {\n this.#database\n .prepare(\n \"UPDATE journal_runtime_health SET storage_state = 'failed' WHERE singleton_key = 1\",\n )\n .run();\n } catch {\n // The in-memory latch remains authoritative until an explicit recovery design exists.\n }\n }\n\n async close(): Promise<void> {\n if (this.#closed) return;\n this.#database\n .prepare(\"UPDATE journal_runtime_health SET clean_shutdown = 1 WHERE singleton_key = 1\")\n .run();\n this.#database.close();\n this.#closed = true;\n }\n\n #migrate(): void {\n this.#database.exec(\"BEGIN IMMEDIATE\");\n try {\n this.#database.exec(\n `CREATE TABLE IF NOT EXISTS schema_migrations(\n version INTEGER PRIMARY KEY,\n checksum TEXT NOT NULL,\n applied_at TEXT NOT NULL\n )`,\n );\n const applied = this.#database\n .prepare(\"SELECT version, checksum FROM schema_migrations ORDER BY version\")\n .all() as unknown as JournalMigrationRow[];\n const migrationState = classifyJournalMigrationRows(applied);\n if (migrationState === \"current\") {\n this.#database.exec(\"COMMIT\");\n return;\n }\n this.#replaceLegacySchema();\n this.#database.prepare(\"DELETE FROM schema_migrations\").run();\n this.#database\n .prepare(\"INSERT INTO schema_migrations(version, checksum, applied_at) VALUES(?, ?, ?)\")\n .run(JOURNAL_SCHEMA_VERSION, JOURNAL_SCHEMA_CHECKSUM, new Date().toISOString());\n this.#database.exec(\"COMMIT\");\n } catch (error: unknown) {\n this.#database.exec(\"ROLLBACK\");\n throw error;\n }\n }\n\n #replaceLegacySchema(): void {\n this.#database.exec(`\n DROP TABLE IF EXISTS compact_records;\n DROP TABLE IF EXISTS send_records;\n DROP TABLE IF EXISTS incarnations;\n DROP TABLE IF EXISTS operations;\n DROP TABLE IF EXISTS agents;\n DROP TABLE IF EXISTS runtime_metadata;\n\n CREATE TABLE journal_agents(\n agent_id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n data_json TEXT NOT NULL CHECK(json_valid(data_json))\n );\n CREATE TABLE journal_operations(\n operation_id TEXT PRIMARY KEY,\n agent_id TEXT REFERENCES journal_agents(agent_id),\n data_json TEXT NOT NULL CHECK(json_valid(data_json))\n );\n CREATE TABLE journal_sends(\n send_id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n data_json TEXT NOT NULL CHECK(json_valid(data_json))\n );\n CREATE TABLE journal_compacts(\n compact_id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n data_json TEXT NOT NULL CHECK(json_valid(data_json))\n );\n CREATE TABLE journal_incarnations(\n incarnation_id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n data_json TEXT NOT NULL CHECK(json_valid(data_json)),\n UNIQUE(agent_id, incarnation_id)\n );\n CREATE TABLE journal_epochs(\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n epoch INTEGER NOT NULL,\n state TEXT NOT NULL CHECK(state IN ('open', 'closed')),\n data_json TEXT NOT NULL CHECK(json_valid(data_json)),\n PRIMARY KEY(agent_id, epoch)\n );\n CREATE TABLE journal_raw_records(\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n raw_position INTEGER NOT NULL,\n incarnation_id TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n observed_at TEXT NOT NULL,\n record_bytes BLOB NOT NULL,\n PRIMARY KEY(agent_id, raw_position),\n UNIQUE(agent_id, raw_position, epoch),\n FOREIGN KEY(agent_id, epoch) REFERENCES journal_epochs(agent_id, epoch),\n FOREIGN KEY(agent_id, incarnation_id)\n REFERENCES journal_incarnations(agent_id, incarnation_id)\n );\n CREATE TABLE journal_semantic_events(\n agent_id TEXT NOT NULL REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n event_position INTEGER NOT NULL,\n event_id TEXT NOT NULL UNIQUE,\n event_epoch INTEGER NOT NULL,\n raw_position INTEGER NOT NULL,\n event_type TEXT NOT NULL,\n data_json TEXT NOT NULL CHECK(json_valid(data_json)),\n PRIMARY KEY(agent_id, event_position),\n FOREIGN KEY(agent_id, event_epoch) REFERENCES journal_epochs(agent_id, epoch),\n FOREIGN KEY(agent_id, raw_position, event_epoch)\n REFERENCES journal_raw_records(agent_id, raw_position, epoch)\n );\n CREATE TABLE journal_projector_state(\n agent_id TEXT PRIMARY KEY REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n incarnation_id TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n data_json TEXT NOT NULL CHECK(json_valid(data_json)),\n FOREIGN KEY(agent_id, incarnation_id)\n REFERENCES journal_incarnations(agent_id, incarnation_id),\n FOREIGN KEY(agent_id, epoch) REFERENCES journal_epochs(agent_id, epoch)\n );\n CREATE TABLE journal_high_water(\n agent_id TEXT PRIMARY KEY REFERENCES journal_agents(agent_id) ON DELETE CASCADE,\n raw_position INTEGER NOT NULL,\n event_position INTEGER NOT NULL,\n idle_event_position INTEGER\n );\n CREATE TABLE journal_runtime_health(\n singleton_key INTEGER PRIMARY KEY CHECK(singleton_key = 1),\n storage_state TEXT NOT NULL CHECK(storage_state IN ('healthy', 'failed')),\n last_commit_at TEXT,\n clean_shutdown INTEGER NOT NULL CHECK(clean_shutdown IN (0, 1)),\n started_at TEXT\n );\n INSERT INTO journal_runtime_health(\n singleton_key, storage_state, last_commit_at, clean_shutdown, started_at\n ) VALUES(1, 'healthy', NULL, 1, NULL);\n CREATE TABLE journal_destroy_receipts(\n operation_id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL,\n agent_name TEXT NOT NULL,\n fingerprint TEXT NOT NULL,\n destroyed_at TEXT NOT NULL,\n status TEXT NOT NULL CHECK(status = 'destroyed')\n );\n CREATE INDEX journal_events_range\n ON journal_semantic_events(agent_id, event_position);\n CREATE INDEX journal_raw_range\n ON journal_raw_records(agent_id, raw_position);\n `);\n }\n\n #putOperationSync(operation: JournalOperation): void {\n this.#assertOpen();\n if (\n operation.agentId !== null &&\n this.#readJson<JournalAgent>(\n \"SELECT data_json FROM journal_agents WHERE agent_id = ?\",\n operation.agentId,\n ) === null\n ) {\n throw new Error(\"Operation targets an unknown agent generation\");\n }\n const existing = this.#database\n .prepare(\"SELECT agent_id, data_json FROM journal_operations WHERE operation_id = ?\")\n .get(operation.operationId) as\n | { readonly agent_id: string | null; readonly data_json: string }\n | undefined;\n if (existing !== undefined) {\n const prior = JSON.parse(existing.data_json) as JournalOperation;\n if (\n existing.agent_id !== null &&\n operation.agentId !== null &&\n existing.agent_id !== operation.agentId\n ) {\n throw new Error(\"Agent-owned record cannot change generations\");\n }\n if (prior.method !== operation.method || prior.fingerprint !== operation.fingerprint) {\n throw new Error(\"Operation was already used with a different request\");\n }\n }\n this.#database\n .prepare(\n `INSERT INTO journal_operations(operation_id, agent_id, data_json) VALUES(?, ?, ?)\n ON CONFLICT(operation_id) DO UPDATE SET\n agent_id=excluded.agent_id, data_json=excluded.data_json`,\n )\n .run(operation.operationId, operation.agentId, JSON.stringify(operation));\n }\n\n #putOwned(\n table: \"journal_sends\" | \"journal_compacts\" | \"journal_incarnations\",\n idColumn: \"operation_id\" | \"send_id\" | \"compact_id\" | \"incarnation_id\",\n id: string,\n agentId: AgentId,\n value: unknown,\n ): void {\n this.#assertOpen();\n const existing = this.#database\n .prepare(`SELECT agent_id FROM ${table} WHERE ${idColumn} = ?`)\n .get(id) as { readonly agent_id: string } | undefined;\n if (existing !== undefined && existing.agent_id !== agentId) {\n throw new Error(\"Agent-owned record cannot change generations\");\n }\n this.#database\n .prepare(\n `INSERT INTO ${table}(${idColumn}, agent_id, data_json) VALUES(?, ?, ?)\n ON CONFLICT(${idColumn}) DO UPDATE SET data_json=excluded.data_json`,\n )\n .run(id, agentId, JSON.stringify(value));\n }\n\n #readJson<T>(sql: string, value: string): T | null {\n this.#assertOpen();\n const row = this.#database.prepare(sql).get(value) as JsonRow | undefined;\n return row === undefined ? null : (JSON.parse(row.data_json) as T);\n }\n\n #readJsonRows<T>(sql: string, ...values: readonly string[]): readonly T[] {\n this.#assertOpen();\n const rows = this.#database.prepare(sql).all(...values) as unknown as JsonRow[];\n return rows.map((row) => JSON.parse(row.data_json) as T);\n }\n\n #getHighWaterSync(agentId: AgentId): JournalHighWater | null {\n this.#assertOpen();\n const row = this.#database\n .prepare(\n `SELECT raw_position, event_position, idle_event_position\n FROM journal_high_water WHERE agent_id = ?`,\n )\n .get(agentId) as\n | {\n readonly raw_position: number;\n readonly event_position: number;\n readonly idle_event_position: number | null;\n }\n | undefined;\n return row === undefined\n ? null\n : {\n rawPosition: row.raw_position,\n eventPosition: row.event_position,\n idleEventPosition: row.idle_event_position,\n };\n }\n\n #assertPositiveLimit(limit: number): void {\n if (!Number.isSafeInteger(limit) || limit <= 0)\n throw new Error(\"Journal range limit must be positive\");\n }\n\n #assertOpen(): void {\n if (this.#closed) throw new Error(\"pi-fleet journal store is closed\");\n }\n}\n\nfunction positiveInteger(value: number, label: string): number {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${label} must be a positive integer`);\n }\n return value;\n}\n\nfunction pragmaInteger(database: DatabaseSync, name: \"auto_vacuum\" | \"freelist_count\"): number {\n const row = database.prepare(`PRAGMA ${name}`).get() as Record<string, unknown> | undefined;\n const value = row?.[name];\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n throw new Error(`SQLite PRAGMA ${name} returned an invalid value`);\n }\n return value;\n}\n\nfunction autoVacuumMode(value: number): JournalMaintenanceResult[\"autoVacuumMode\"] {\n if (value === 0) return \"none\";\n if (value === 1) return \"full\";\n if (value === 2) return \"incremental\";\n throw new Error(\"SQLite returned an unsupported auto_vacuum mode\");\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { Worker } from \"node:worker_threads\";\n\nimport type {\n AgentId,\n ContinuityEpoch,\n IncarnationId,\n ProjectorState,\n RawRpcRecord,\n} from \"../runtime/semantic-events.js\";\nimport { DEFAULT_RUNTIME_LIMITS } from \"../shared/runtime-limits.js\";\nimport type {\n JournalAgent,\n JournalAppend,\n JournalCompact,\n JournalDestroyReceipt,\n JournalEpoch,\n JournalEventRange,\n JournalHighWater,\n JournalIncarnation,\n JournalMaintenanceResult,\n JournalOperation,\n JournalReceiveSnapshot,\n JournalSend,\n JournalStorageDiagnostics,\n JournalStore,\n StoredSemanticEvent,\n} from \"./journal-store.js\";\nimport { isJournalWorkerResponse, type JournalWorkerRequest } from \"./journal-worker-protocol.js\";\n\ninterface WorkerLike {\n on(event: \"message\", listener: (value: unknown) => void): this;\n on(event: \"error\", listener: (error: Error) => void): this;\n on(event: \"exit\", listener: (code: number) => void): this;\n postMessage(value: JournalWorkerRequest, transferList?: readonly ArrayBuffer[]): void;\n terminate(): Promise<number>;\n}\n\nexport interface WorkerJournalStoreOptions {\n readonly worker?: WorkerLike;\n readonly workerUrl?: URL;\n readonly maxPending?: number;\n readonly checkpointCommitInterval?: number;\n readonly reclaimPagesPerPass?: number;\n readonly onHealthFailure?: (error: Error) => void;\n}\n\ninterface QueuedCall {\n readonly request: JournalWorkerRequest;\n readonly transferList: readonly ArrayBuffer[];\n readonly priority: \"write\" | \"read\";\n readonly readerId?: string;\n readonly resolve: (value: unknown) => void;\n readonly reject: (error: Error) => void;\n}\n\nconst WRITE_METHODS = new Set([\n \"createAgent\",\n \"createAgentWithOperation\",\n \"rollbackProvisionalCreate\",\n \"putAgent\",\n \"putOperation\",\n \"deleteOperation\",\n \"putSend\",\n \"putCompact\",\n \"putIncarnation\",\n \"putEpoch\",\n \"beginIncarnation\",\n \"append\",\n \"markIdle\",\n \"destroyAgent\",\n \"maintain\",\n \"close\",\n]);\n\n/** Dormant worker-backed journal store. It is not selected by runtime startup before Phase 4. */\nexport class WorkerJournalStore implements JournalStore {\n readonly #worker: WorkerLike;\n readonly #maxPending: number;\n readonly #onHealthFailure: ((error: Error) => void) | undefined;\n readonly #writes: QueuedCall[] = [];\n readonly #reads: QueuedCall[] = [];\n readonly #readerIds = new Set<string>();\n #active: QueuedCall | null = null;\n #closing = false;\n #closed = false;\n #closePromise: Promise<void> | null = null;\n #terminationPromise: Promise<number> | null = null;\n #failure: Error | null = null;\n\n constructor(path: string, options: WorkerJournalStoreOptions = {}) {\n this.#maxPending = options.maxPending ?? DEFAULT_RUNTIME_LIMITS.maxJournalPendingRecords;\n if (!Number.isSafeInteger(this.#maxPending) || this.#maxPending <= 0) {\n throw new Error(\"Journal worker maxPending must be a positive integer\");\n }\n this.#onHealthFailure = options.onHealthFailure;\n this.#worker =\n options.worker ??\n new Worker(options.workerUrl ?? new URL(\"./journal-sqlite-worker.mjs\", import.meta.url), {\n workerData: {\n path,\n checkpointCommitInterval:\n options.checkpointCommitInterval ??\n DEFAULT_RUNTIME_LIMITS.journalCheckpointCommitInterval,\n reclaimPagesPerPass:\n options.reclaimPagesPerPass ?? DEFAULT_RUNTIME_LIMITS.journalReclaimPagesPerPass,\n },\n });\n this.#worker.on(\"message\", (value) => this.#handleResponse(value));\n this.#worker.on(\"error\", (error) => this.#fail(error));\n this.#worker.on(\"exit\", (code) => {\n if (!this.#closed) this.#fail(new Error(`Journal worker exited unexpectedly with ${code}`));\n });\n }\n\n createAgent(agent: JournalAgent): Promise<boolean> {\n return this.#call(\"createAgent\", [agent]);\n }\n\n createAgentWithOperation(agent: JournalAgent, operation: JournalOperation): Promise<boolean> {\n return this.#call(\"createAgentWithOperation\", [agent, operation]);\n }\n\n rollbackProvisionalCreate(\n agentId: AgentId,\n completedOperation: JournalOperation,\n ): Promise<JournalAgent | null> {\n return this.#call(\"rollbackProvisionalCreate\", [agentId, completedOperation]);\n }\n\n getAgentByName(name: string): Promise<JournalAgent | null> {\n return this.#call(\"getAgentByName\", [name]);\n }\n\n getAgentById(agentId: AgentId): Promise<JournalAgent | null> {\n return this.#call(\"getAgentById\", [agentId]);\n }\n\n listAgents(): Promise<readonly JournalAgent[]> {\n return this.#call(\"listAgents\", []);\n }\n\n async putAgent(agent: JournalAgent): Promise<void> {\n await this.#call(\"putAgent\", [agent]);\n }\n\n async putOperation(operation: JournalOperation): Promise<void> {\n await this.#call(\"putOperation\", [operation]);\n }\n\n getOperation(operationId: string): Promise<JournalOperation | null> {\n return this.#call(\"getOperation\", [operationId]);\n }\n\n listPendingOperations(): Promise<readonly JournalOperation[]> {\n return this.#call(\"listPendingOperations\", []);\n }\n\n async deleteOperation(operationId: string): Promise<void> {\n await this.#call(\"deleteOperation\", [operationId]);\n }\n\n async putSend(send: JournalSend): Promise<void> {\n await this.#call(\"putSend\", [send]);\n }\n\n getSend(sendId: string): Promise<JournalSend | null> {\n return this.#call(\"getSend\", [sendId]);\n }\n\n nextSendOrdinal(agentId: AgentId): Promise<number> {\n return this.#call(\"nextSendOrdinal\", [agentId]);\n }\n\n listNonterminalSends(): Promise<readonly JournalSend[]> {\n return this.#call(\"listNonterminalSends\", []);\n }\n\n async putCompact(compact: JournalCompact): Promise<void> {\n await this.#call(\"putCompact\", [compact]);\n }\n\n getCompact(compactId: string): Promise<JournalCompact | null> {\n return this.#call(\"getCompact\", [compactId]);\n }\n\n listNonterminalCompacts(): Promise<readonly JournalCompact[]> {\n return this.#call(\"listNonterminalCompacts\", []);\n }\n\n async putIncarnation(incarnation: JournalIncarnation): Promise<void> {\n await this.#call(\"putIncarnation\", [incarnation]);\n }\n\n listActiveIncarnations(): Promise<readonly JournalIncarnation[]> {\n return this.#call(\"listActiveIncarnations\", []);\n }\n\n async putEpoch(epoch: JournalEpoch): Promise<void> {\n await this.#call(\"putEpoch\", [epoch]);\n }\n\n getEpochs(agentId: AgentId): Promise<readonly JournalEpoch[]> {\n return this.#call(\"getEpochs\", [agentId]);\n }\n\n async beginIncarnation(\n agentId: AgentId,\n incarnationId: IncarnationId,\n epoch: ContinuityEpoch,\n projectorState: ProjectorState,\n ): Promise<void> {\n await this.#call(\"beginIncarnation\", [agentId, incarnationId, epoch, projectorState]);\n }\n\n async append(batch: JournalAppend): Promise<void> {\n const { args, transferList } = prepareAppend(batch);\n await this.#call(\"append\", args, { transferList });\n }\n\n openReceive(agentId: AgentId): Promise<JournalReceiveSnapshot | null> {\n return this.#call(\"openReceive\", [agentId]);\n }\n\n readEvents(range: JournalEventRange): Promise<readonly StoredSemanticEvent[]> {\n return this.readEventsForReader(\"default\", range);\n }\n\n readEventsForReader(\n readerId: string,\n range: JournalEventRange,\n ): Promise<readonly StoredSemanticEvent[]> {\n if (this.#readerIds.has(readerId)) {\n return Promise.reject(new Error(`Reader ${readerId} already has an outstanding range read`));\n }\n this.#readerIds.add(readerId);\n return this.#call<readonly StoredSemanticEvent[]>(\"readEvents\", [range], { readerId }).catch(\n (error: unknown) => {\n this.#readerIds.delete(readerId);\n throw error;\n },\n );\n }\n\n getProjectorState(\n agentId: AgentId,\n incarnationId: IncarnationId,\n epoch: ContinuityEpoch,\n ): Promise<ProjectorState | null> {\n return this.#call(\"getProjectorState\", [agentId, incarnationId, epoch]);\n }\n\n getHighWater(agentId: AgentId): Promise<JournalHighWater | null> {\n return this.#call(\"getHighWater\", [agentId]);\n }\n\n markIdle(agentId: AgentId, epoch: ContinuityEpoch): Promise<number> {\n return this.#call(\"markIdle\", [agentId, epoch]);\n }\n\n getRawRecords(\n agentId: AgentId,\n afterPosition: number,\n limit: number,\n ): Promise<readonly RawRpcRecord[]> {\n return this.#call(\"getRawRecords\", [agentId, afterPosition, limit]);\n }\n\n destroyAgent(agentId: AgentId, receipt: JournalDestroyReceipt): Promise<JournalAgent | null> {\n return this.#call(\"destroyAgent\", [agentId, receipt]);\n }\n\n getDestroyReceipt(operationId: string): Promise<JournalDestroyReceipt | null> {\n return this.#call(\"getDestroyReceipt\", [operationId]);\n }\n\n maintain(reclaimPages?: number): Promise<JournalMaintenanceResult> {\n return this.#call(\"maintain\", reclaimPages === undefined ? [] : [reclaimPages]);\n }\n\n getDiagnostics(): Promise<JournalStorageDiagnostics> {\n return this.#call(\"getDiagnostics\", []);\n }\n\n close(): Promise<void> {\n if (this.#closePromise !== null) return this.#closePromise;\n if (this.#closed) return Promise.resolve();\n\n this.#closing = true;\n this.#rejectQueued(new Error(\"pi-fleet journal store is closing\"));\n this.#closePromise = (async () => {\n let closeError: unknown = null;\n try {\n if (this.#failure === null) await this.#enqueueClose();\n } catch (error: unknown) {\n closeError = error;\n }\n\n this.#closed = true;\n try {\n await this.#terminateWorker();\n } catch (error: unknown) {\n if (closeError === null) closeError = error;\n }\n if (closeError !== null) throw closeError;\n })();\n return this.#closePromise;\n }\n\n #call<T>(\n method: string,\n args: readonly unknown[],\n options: { readonly transferList?: readonly ArrayBuffer[]; readonly readerId?: string } = {},\n ): Promise<T> {\n if (this.#closing || this.#closed) {\n if (options.readerId !== undefined) this.#readerIds.delete(options.readerId);\n return Promise.reject(\n new Error(`pi-fleet journal store is ${this.#closed ? \"closed\" : \"closing\"}`),\n );\n }\n if (this.#failure !== null) return Promise.reject(this.#failure);\n if (this.#pendingCount() >= this.#maxPending) {\n if (options.readerId !== undefined) this.#readerIds.delete(options.readerId);\n return Promise.reject(new Error(\"Journal worker pending capacity exceeded\"));\n }\n return new Promise<T>((resolve, reject) => {\n const call: QueuedCall = {\n request: { id: randomUUID(), method, args },\n transferList: options.transferList ?? [],\n priority: WRITE_METHODS.has(method) ? \"write\" : \"read\",\n ...(options.readerId === undefined ? {} : { readerId: options.readerId }),\n resolve: (value) => resolve(value as T),\n reject,\n };\n (call.priority === \"write\" ? this.#writes : this.#reads).push(call);\n this.#pump();\n });\n }\n\n #enqueueClose(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.#writes.unshift({\n request: { id: randomUUID(), method: \"close\", args: [] },\n transferList: [],\n priority: \"write\",\n resolve: () => resolve(),\n reject,\n });\n this.#pump();\n });\n }\n\n #pump(): void {\n if (this.#active !== null || this.#failure !== null || this.#closed) return;\n const next = this.#writes.shift() ?? this.#reads.shift();\n if (next === undefined) return;\n this.#active = next;\n try {\n this.#worker.postMessage(next.request, next.transferList);\n } catch (error: unknown) {\n this.#fail(error instanceof Error ? error : new Error(\"Journal worker request failed\"));\n }\n }\n\n #handleResponse(value: unknown): void {\n if (!isJournalWorkerResponse(value)) {\n this.#fail(new Error(\"Journal worker returned a malformed response\"));\n return;\n }\n const active = this.#active;\n if (active === null || active.request.id !== value.id) {\n this.#fail(new Error(\"Journal worker returned an unexpected response\"));\n return;\n }\n if (!value.ok && active.priority === \"write\") {\n this.#fail(new Error(value.error ?? \"Journal worker durability write failed\"));\n return;\n }\n this.#active = null;\n if (active.readerId !== undefined) this.#readerIds.delete(active.readerId);\n if (value.ok) active.resolve(value.value);\n else active.reject(new Error(value.error ?? \"Journal worker failed\"));\n this.#pump();\n }\n\n #fail(error: Error): void {\n if (this.#failure !== null) return;\n this.#failure = error;\n this.#onHealthFailure?.(error);\n void this.#terminateWorker();\n const calls = [this.#active, ...this.#writes, ...this.#reads].filter(\n (call): call is QueuedCall => call !== null,\n );\n this.#active = null;\n this.#writes.length = 0;\n this.#reads.length = 0;\n this.#readerIds.clear();\n for (const call of calls) call.reject(error);\n }\n\n #terminateWorker(): Promise<number> {\n this.#terminationPromise ??= this.#worker.terminate();\n return this.#terminationPromise;\n }\n\n #rejectQueued(error: Error): void {\n const queued = [...this.#writes, ...this.#reads];\n this.#writes.length = 0;\n this.#reads.length = 0;\n for (const call of queued) {\n if (call.readerId !== undefined) this.#readerIds.delete(call.readerId);\n call.reject(error);\n }\n }\n\n #pendingCount(): number {\n return (this.#active === null ? 0 : 1) + this.#writes.length + this.#reads.length;\n }\n}\n\nfunction prepareAppend(batch: JournalAppend): {\n readonly args: readonly unknown[];\n readonly transferList: readonly ArrayBuffer[];\n} {\n const transferList: ArrayBuffer[] = [];\n const records = batch.records.map((record) => {\n const bytes = Uint8Array.from(record.bytes);\n transferList.push(bytes.buffer);\n return { ...record, bytes };\n });\n return { args: [{ ...batch, records }], transferList };\n}\n", "export interface JournalWorkerRequest {\n readonly id: string;\n readonly method: string;\n readonly args: readonly unknown[];\n}\n\nexport interface JournalWorkerResponse {\n readonly id: string;\n readonly ok: boolean;\n readonly value?: unknown;\n readonly error?: string;\n}\n\nexport function isJournalWorkerResponse(value: unknown): value is JournalWorkerResponse {\n if (typeof value !== \"object\" || value === null) return false;\n const response = value as Partial<JournalWorkerResponse>;\n return (\n typeof response.id === \"string\" &&\n typeof response.ok === \"boolean\" &&\n (response.error === undefined || typeof response.error === \"string\")\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["readFileSync", "readdirSync", "DatabaseSync", "value", "IsAsyncIterator", "IsObject", "IsIterator", "IsDate", "IsUint8Array", "HasPropertyKey", "IsObject", "IsArray", "IsUndefined", "IsNull", "IsBoolean", "IsNumber", "IsBigInt", "IsString", "IsFunction", "IsSymbol", "TypeSystemPolicy", "IsObject", "IsArray", "IsNumber", "IsUndefined", "value", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsRegExp", "IsString", "IsSymbol", "IsUndefined", "IsUint8Array", "IsArray", "IsBoolean", "IsBigInt", "IsAsyncIterator", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsAny", "IsArgument", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "IsInteger", "IsIntersect", "IsIterator", "IsKind", "IsKindOf", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsNumber", "IsObject", "IsOptional", "IsPromise", "IsReadonly", "IsRecord", "IsRef", "IsRegExp", "IsSchema", "IsString", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTransform", "IsTuple", "IsUint8Array", "IsUndefined", "IsUnion", "IsUnknown", "IsUnsafe", "IsVoid", "IsSchema", "IsReadonly", "IsOptional", "IsAny", "IsKindOf", "IsArgument", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "IsInteger", "IsIntersect", "IsTransform", "IsIterator", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsNumber", "IsObject", "IsPromise", "IsRecord", "IsRef", "IsRegExp", "IsString", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTuple", "IsUndefined", "IsUnion", "IsUint8Array", "IsUnknown", "IsUnsafe", "IsVoid", "IsKind", "Set", "type_exports", "Clear", "Delete", "Entries", "Get", "Has", "Set", "map", "Array", "range", "pattern", "Boolean", "BigInt", "Number", "String", "Boolean", "Number", "BigInt", "String", "Visit", "schema", "IsNumber", "IsInteger", "IsBigInt", "IsString", "IsBoolean", "FromUnion", "IsNumber", "IsInteger", "FromUnion", "IsArray", "IsObject", "Object", "Promise", "FromProperties", "FromMappedResult", "FromMappedResult", "FromRest", "FromProperties", "IsFunction", "IsAsyncIterator", "IsIterator", "IsObject", "Object", "IsArray", "Array", "IsPromise", "Promise", "map", "FromProperties", "FromMappedResult", "IsObject", "RemoveOptionalFromType", "RemoveOptionalFromRest", "FromIntersect", "FromRest", "FromUnion", "IsPromise", "FromRest", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromProperties", "IsArray", "IsObject", "FromComputed", "FromRef", "Number", "FromProperties", "FromMappedResult", "Object", "Date", "Symbol", "Uint8Array", "FromArray", "FromProperties", "Uint8Array", "Date", "Object", "Symbol", "BigInt", "ExtendsResult", "FromArray", "Visit", "FromIntersect", "FromLiteral", "Number", "FromPromise", "String", "FromTemplateLiteral", "FromTuple", "FromUnion", "FromProperties", "FromMappedResult", "FromMappedKey", "Intersect", "schema", "Union", "FromProperties", "FromMappedResult", "FromProperties", "FromMappedResult", "Object", "IsBoolean", "IsInteger", "IsNumber", "IsRegExp", "IsString", "RecordKey", "String", "Number", "RecordValue", "FromConstructor", "FromFunction", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromAsyncIterator", "FromIterator", "FromPromise", "FromObject", "FromProperties", "Object", "FromRecord", "RecordKey", "RecordValue", "FromProperty", "IsFunction", "IsArray", "IsAsyncIterator", "IsIterator", "IsPromise", "IsObject", "FromTemplateLiteral", "FromRest", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperty", "FromProperties", "FromObject", "Object", "result", "IsObject", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperties", "FromObject", "Type", "Object", "UnionFromPropertyKeys", "result", "IsObject", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromComputed", "FromRef", "FromProperties", "FromObject", "Object", "FromRest", "IsObject", "IsBigInt", "IsBoolean", "IsInteger", "IsNull", "IsNumber", "IsString", "IsSymbol", "IsUndefined", "FromProperties", "FromMappedResult", "FromType", "FromComputed", "FromArray", "Array", "FromAsyncIterator", "FromConstructor", "FromTypes", "FromFunction", "FromIntersect", "FromIterator", "FromObject", "Object", "FromRecord", "RecordValue", "FromTuple", "FromUnion", "IsArray", "IsAsyncIterator", "IsFunction", "IsIterator", "IsObject", "Not", "IsFunction", "RegExp", "IsFunction", "Encode", "Decode", "type_exports", "Array", "BigInt", "Boolean", "Date", "Not", "Number", "Object", "Promise", "RegExp", "String", "Symbol", "Uint8Array", "type_exports", "spawn", "stat", "resolve", "spawn", "process", "process", "join", "join", "constants", "dirname", "join", "resolve", "join", "chmod", "mkdir", "dirname", "target", "IsString", "ByteMarker", "ArrayType", "Visit", "DateType", "ObjectType", "Uint8ArrayType", "IsArray", "IsBoolean", "IsBigInt", "IsDate", "IsNull", "IsNumber", "IsObject", "IsString", "IsSymbol", "IsUint8Array", "IsUndefined", "FromAny", "FromArgument", "FromArray", "IsArray", "Visit", "IsNumber", "value", "FromAsyncIterator", "IsAsyncIterator", "FromBigInt", "IsBigInt", "FromBoolean", "IsBoolean", "FromConstructor", "FromDate", "IsDate", "FromFunction", "IsFunction", "FromInteger", "FromIntersect", "schema", "FromIterator", "IsIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "IsNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "IsString", "FromSymbol", "IsSymbol", "FromTemplateLiteral", "FromTuple", "FromUndefined", "IsUndefined", "FromUnion", "FromUint8Array", "IsUint8Array", "FromUnknown", "FromVoid", "type_exports", "ValueErrorType", "IsDefined", "FromAny", "FromArgument", "FromArray", "IsArray", "Visit", "value", "IsNumber", "FromAsyncIterator", "IsAsyncIterator", "FromBigInt", "IsBigInt", "FromBoolean", "IsBoolean", "FromConstructor", "FromDate", "IsDate", "FromFunction", "IsFunction", "FromImport", "FromInteger", "FromIntersect", "FromIterator", "IsIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "IsNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "IsString", "FromString", "FromSymbol", "IsSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "IsUndefined", "FromUnion", "FromUint8Array", "IsUint8Array", "FromUnknown", "FromVoid", "FromKind", "type_exports", "_AssertError_Iterator", "FromObject", "Clone", "FromArray", "FromDate", "FromValue", "IsArray", "IsDate", "IsObject", "IsFunction", "Clone", "FromAny", "HasPropertyKey", "FromArgument", "FromArray", "Visit", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromImport", "FromInteger", "FromIntersect", "schema", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "FromKind", "type_exports", "Create", "IsNull", "schema", "Clone", "Create", "FromArray", "IsArray", "IsNumber", "value", "Visit", "FromConstructor", "FromImport", "IsObject", "FromIntersect", "FromNever", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "IsString", "FromArray", "IsArray", "value", "Visit", "FromImport", "FromIntersect", "schema", "Clone", "IsObject", "FromObject", "HasPropertyKey", "FromRecord", "FromRef", "FromThis", "FromTuple", "IsUndefined", "FromUnion", "IsString", "IsString", "IsBigInt", "IsBoolean", "IsNumber", "value", "IsSymbol", "IsDate", "Default", "FromArray", "IsArray", "Visit", "FromBigInt", "FromBoolean", "FromDate", "FromImport", "FromInteger", "FromIntersect", "schema", "FromLiteral", "FromNull", "FromNumber", "FromObject", "IsObject", "HasPropertyKey", "FromRecord", "FromRef", "FromString", "FromSymbol", "FromThis", "FromTuple", "IsUndefined", "FromUndefined", "FromUnion", "Clone", "Default", "FromArray", "IsArray", "value", "Visit", "FromIntersect", "IsObject", "FromImport", "FromNot", "FromObject", "HasPropertyKey", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "Default", "FromArray", "IsArray", "value", "Visit", "FromImport", "FromIntersect", "IsObject", "FromNot", "FromObject", "HasPropertyKey", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "FromArray", "Visit", "FromAsyncIterator", "FromConstructor", "schema", "FromFunction", "FromIntersect", "FromImport", "FromIterator", "FromNot", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromThis", "FromTuple", "IsUndefined", "FromUnion", "HasPropertyKey", "IsFunction", "Clone", "IsUndefined", "IsObject", "FromArray", "IsArray", "Visit", "FromDate", "IsDate", "FromImport", "FromIntersect", "schema", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Default", "Delete", "Get", "Has", "Set", "Escape", "Set", "Delete", "Has", "Get", "ObjectType", "IsObject", "DateType", "IsDate", "ArrayType", "IsArray", "Object", "String", "Delete", "ObjectType", "HasPropertyKey", "Visit", "ArrayType", "IsArray", "TypedArrayType", "ValueType", "Clone", "IsStandardObject", "IsObject", "IsArray", "ObjectType", "Clone", "Visit", "ArrayType", "TypedArrayType", "ValueType", "ParseRegistry", "Clone", "Default", "Delete", "Set", "Get", "value", "IsUndefined", "IsArray", "value_exports", "Clone", "Create", "Default", "value_exports", "event", "assertPositiveInteger", "event", "assertPositiveInteger", "lstat", "mkdir", "dirname", "chmod", "next", "event", "resolve", "createHash", "randomUUID", "process", "resolve", "randomUUID", "process", "result", "resolve", "createHash", "resolve", "agentId", "stat", "event", "text", "resolve", "randomUUID", "resolve", "randomUUID", "open", "DatabaseSync", "readdirSync", "stat", "readFileSync"]
|
|
7
7
|
}
|