@borgee/agents-host 0.2.97 → 0.2.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -5
- package/dist/agents-host.d.ts +16 -0
- package/dist/agents-host.js +608 -82
- package/dist/catalog-worker.js +21 -0
- package/dist/catalog-worker.js.map +7 -0
- package/dist/chat/chat-control-plane.d.ts +19 -4
- package/dist/chat/normalized-input.d.ts +9 -0
- package/dist/chat/normalized-input.js +24 -0
- package/dist/chat/sdk-chat-control-plane.d.ts +46 -6
- package/dist/chat/sdk-chat-control-plane.js +169 -6
- package/dist/cli-args.d.ts +1 -1
- package/dist/cli-args.js +13 -4
- package/dist/config.d.ts +3 -1
- package/dist/config.js +25 -0
- package/dist/context/injection.d.ts +16 -0
- package/dist/context/injection.js +37 -21
- package/dist/context/prompt.d.ts +12 -0
- package/dist/context/prompt.js +25 -0
- package/dist/context/skill-manual.js +1 -1
- package/dist/context/turn-preparation.d.ts +2 -1
- package/dist/context/turn-preparation.js +15 -0
- package/dist/execution-telemetry.d.ts +96 -0
- package/dist/execution-telemetry.js +583 -0
- package/dist/gateway/channel-file-workspace.d.ts +15 -0
- package/dist/gateway/channel-file-workspace.js +130 -0
- package/dist/gateway/localhost-gateway.js +167 -2
- package/dist/hosted-turn-content.js +3 -2
- package/dist/local-config.js +34 -1
- package/dist/managed-daemon.js +15 -0
- package/dist/native-environment.d.ts +2 -0
- package/dist/native-environment.js +9 -0
- package/dist/native-protocol-types/codec.d.ts +49 -0
- package/dist/native-protocol-types/commands.d.ts +71 -0
- package/dist/native-protocol-types/compatibility.d.ts +5 -0
- package/dist/native-protocol-types/cursor.d.ts +7 -0
- package/dist/native-protocol-types/envelope.d.ts +1105 -0
- package/dist/native-protocol-types/file-changes.d.ts +20 -0
- package/dist/native-protocol-types/history.d.ts +487 -0
- package/dist/native-protocol-types/index.d.ts +18 -0
- package/dist/native-protocol-types/interactions.d.ts +619 -0
- package/dist/native-protocol-types/messages.d.ts +2482 -0
- package/dist/native-protocol-types/public-validation.d.ts +10 -0
- package/dist/native-protocol-types/remote-host-uplink.d.ts +67 -0
- package/dist/native-protocol-types/resources.d.ts +126 -0
- package/dist/native-protocol-types/session-settings.d.ts +22 -0
- package/dist/native-protocol-types/snapshot.d.ts +575 -0
- package/dist/native-protocol-types/timeline.d.ts +1503 -0
- package/dist/native-protocol-types/tool-result.d.ts +26 -0
- package/dist/native-protocol-types/uplink.d.ts +56 -0
- package/dist/native-protocol-types/version.d.ts +5 -0
- package/dist/native-provider-types/commands.d.ts +51 -0
- package/dist/native-provider-types/control.d.ts +192 -0
- package/dist/native-provider-types/file-changes.d.ts +9 -0
- package/dist/native-provider-types/index.d.ts +8 -0
- package/dist/native-provider-types/interactions.d.ts +7 -0
- package/dist/native-provider-types/observation.d.ts +209 -0
- package/dist/native-provider-types/provider.d.ts +124 -0
- package/dist/native-provider-types/session-settings.d.ts +17 -0
- package/dist/native-provider-types/testing.d.ts +27 -0
- package/dist/native-provider-types/tool-result.d.ts +21 -0
- package/dist/native-providers.d.ts +21 -0
- package/dist/native-providers.js +18402 -0
- package/dist/native-providers.js.map +7 -0
- package/dist/plugin-sdk.js +10713 -229
- package/dist/plugin-sdk.js.map +4 -4
- package/dist/policy/copilot-permission.js +1 -8
- package/dist/policy/gateway-authorization.d.ts +1 -1
- package/dist/policy/gateway-authorization.js +22 -2
- package/dist/providers/claude/adapter.js +1 -0
- package/dist/providers/claude/cli-client.js +4 -0
- package/dist/providers/codex/adapter.js +1 -0
- package/dist/providers/codex/cli-client.js +5 -0
- package/dist/providers/copilot/adapter.js +4 -0
- package/dist/providers/copilot/cli-client.js +11 -1
- package/dist/providers/copilot/sdk-session.d.ts +12 -3
- package/dist/providers/copilot/sdk-session.js +230 -6
- package/dist/providers/create-provider.js +24 -0
- package/dist/providers/normalized/adapter.d.ts +107 -0
- package/dist/providers/normalized/adapter.js +1650 -0
- package/dist/providers/normalized/control-policy.d.ts +5 -0
- package/dist/providers/normalized/control-policy.js +12 -0
- package/dist/providers/normalized/interactions.d.ts +3 -0
- package/dist/providers/normalized/interactions.js +39 -0
- package/dist/providers/normalized/legacy-input-ownership.d.ts +34 -0
- package/dist/providers/normalized/legacy-input-ownership.js +123 -0
- package/dist/providers/normalized/session-management.d.ts +67 -0
- package/dist/providers/normalized/session-management.js +334 -0
- package/dist/providers/normalized/session-ownership.d.ts +3 -0
- package/dist/providers/normalized/session-ownership.js +90 -0
- package/dist/providers/prompt-usage.d.ts +8 -0
- package/dist/providers/prompt-usage.js +52 -0
- package/dist/providers/provider-adapter.d.ts +43 -1
- package/dist/providers/provider-adapter.js +8 -0
- package/dist/state-paths.d.ts +2 -0
- package/dist/state-paths.js +6 -0
- package/dist/types.d.ts +66 -0
- package/dist/typing-lease.d.ts +14 -0
- package/dist/typing-lease.js +31 -0
- package/dist/vendor/agent-provider-codex/LICENSE +211 -0
- package/dist/vendor/agent-provider-codex/NOTICE +13 -0
- package/package.json +22 -13
- package/skills/borgee-agent/SKILL.md +12 -4
- package/skills/borgee-agent/scripts/borgee-agent.mjs +110 -0
- package/skills/borgee-agent/scripts/borgee-agent.py +116 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/constants.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/buffer-util.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/limiter.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/validation.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/receiver.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/sender.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/event-target.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/extension.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/stream.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/subprotocol.js", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/lib/websocket-server.js", "../src/native-environment.ts", "../../agent-provider-claude/src/provider.ts", "../../agent-provider-claude/src/catalog.ts", "../../agent-provider-sdk/src/interactions.ts", "../../agent-provider-sdk/src/provider.ts", "../../agent-provider-sdk/src/tool-result.ts", "../../agent-provider-sdk/src/file-changes.ts", "../../agent-provider-sdk/src/session-settings.ts", "../../agent-provider-sdk/src/commands.ts", "../../agent-provider-claude/src/session.ts", "../../agent-provider-claude/src/channel.ts", "../../agent-provider-claude/src/interactions.ts", "../../agent-provider-claude/src/projector.ts", "../../agent-provider-claude/src/usage.ts", "../../agent-provider-claude/src/images.ts", "../../agent-provider-claude/src/commands.ts", "../../agent-provider-claude/src/child-session.ts", "../../agent-provider-claude/src/children.ts", "../../agent-provider-codex/src/app-server-transport.ts", "../../../node_modules/.pnpm/ws@8.21.1/node_modules/ws/wrapper.mjs", "../../agent-provider-codex/src/native.ts", "../../agent-provider-codex/src/projector.ts", "../../agent-provider-codex/src/tool-result.ts", "../../agent-provider-codex/src/images.ts", "../../agent-provider-codex/src/questions.ts", "../../agent-provider-codex/src/history.ts", "../../agent-provider-codex/src/provider.ts", "../../agent-provider-codex/src/commands.ts", "../../agent-provider-codex/src/session.ts", "../../agent-provider-codex/src/session-settings.ts", "../../agent-provider-codex/src/elicitation.ts", "../../agent-provider-codex/src/permissions.ts", "../../agent-provider-codex/src/tool-approval.ts", "../../agent-provider-codex/src/usage.ts", "../../agent-provider-codex/src/planning.ts", "../../agent-provider-codex/src/initialize.ts", "../../agent-provider-codex/src/native-client/history.ts", "../../agent-provider-codex/src/native-client/recovery.ts", "../../agent-provider-codex/src/native-client/thread-router.ts", "../../agent-provider-codex/src/native-client/client.ts", "../../agent-provider-codex/src/runtime.ts", "../../agent-provider-codex/src/catalog.ts", "../../agent-provider-copilot/src/provider.ts", "../../agent-provider-copilot/src/session.ts", "../../agent-provider-copilot/src/channel.ts", "../../agent-provider-copilot/src/usage.ts", "../../agent-provider-copilot/src/projector.ts", "../../agent-provider-copilot/src/child-session.ts", "../../agent-provider-copilot/src/interactions.ts", "../../agent-provider-copilot/src/runtime-liveness.ts", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/guard/guard.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/system/policy.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/registry/format.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/registry/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/create/immutable.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/clone/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/create/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/unsafe/unsafe.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/error/error.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/discard/discard.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/array/array.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/async-iterator/async-iterator.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/constructor/constructor.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/function/function.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/computed/computed.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/never/never.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/optional/optional.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/optional/optional-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect-evaluated.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intersect/intersect.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union-create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union-evaluated.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/union/union.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/parse.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/finite.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/generate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/literal/literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/boolean/boolean.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/bigint/bigint.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/number/number.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/string/string.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/syntax.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/patterns/patterns.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/pattern.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/union.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/template-literal/template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-property-keys.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/indexed/indexed-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/iterator/iterator.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/object/object.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/promise/promise.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly/readonly-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/tuple/tuple.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/sets/set.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/mapped/mapped.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/ref/ref.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-keys.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/keyof/keyof-property-entries.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-undefined.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/errors/function.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/deref/deref.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/hash/hash.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/any/any.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/unknown/unknown.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/guard/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-check.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extends/extends-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/check/check.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/errors/errors.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/assert/assert.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/clone/clone.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/create/create.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/cast/cast.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/clean/clean.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/convert/convert.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/decode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/encode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/transform/has.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/decode/decode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/default/default.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/pointer/pointer.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/equal/equal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/delta/delta.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/encode/encode.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/mutate/mutate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/parse/parse.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/value/value/value.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/clone/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/argument/argument.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/awaited/awaited.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/composite/composite.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/date/date.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/null/null.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/symbol/symbol.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/undefined/undefined.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/uint8array/uint8array.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/const/const.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/constructor-parameters/constructor-parameters.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/enum/enum.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/exclude/exclude-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-template-literal.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/extract/extract-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/instance-type/instance-type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/readonly-optional/readonly-optional.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/record/record.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/instantiate/instantiate.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/integer/integer.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/intrinsic.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/capitalize.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/lowercase.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uncapitalize.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/intrinsic/uppercase.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/omit/omit-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/pick/pick-from-mapped-key.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/partial/partial.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/partial/partial-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/required/required.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/required/required-from-mapped-result.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/module/compute.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/module/module.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/not/not.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/parameters/parameters.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/recursive/recursive.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/regexp/regexp.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/rest/rest.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/return-type/return-type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/transform/transform.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/void/void.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/type/type.mjs", "../../../node_modules/.pnpm/@sinclair+typebox@0.34.52/node_modules/@sinclair/typebox/build/esm/type/type/index.mjs", "../../agent-remote-protocol/src/cursor.ts", "../../agent-remote-protocol/src/version.ts", "../../agent-remote-protocol/src/resources.ts", "../../agent-remote-protocol/src/interactions.ts", "../../agent-remote-protocol/src/session-settings.ts", "../../agent-remote-protocol/src/tool-result.ts", "../../agent-remote-protocol/src/timeline.ts", "../../agent-remote-protocol/src/snapshot.ts", "../../agent-remote-protocol/src/envelope.ts", "../../agent-remote-protocol/src/history.ts", "../../agent-remote-protocol/src/commands.ts", "../../agent-remote-protocol/src/messages.ts", "../../agent-remote-protocol/src/codec.ts", "../../agent-remote-protocol/src/uplink.ts", "../../agent-remote-protocol/src/remote-host-uplink.ts", "../../agent-remote-protocol/src/file-changes.ts", "../../agent-remote-protocol/src/public-validation.ts", "../../agent-remote-protocol/src/compatibility.ts", "../src/native-providers.ts"],
|
|
4
|
+
"sourcesContent": ["'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxBufferedChunks = options.maxBufferedChunks | 0;\n this._maxFragments = options.maxFragments | 0;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n if (\n this._maxBufferedChunks > 0 &&\n this._buffers.length >= this._maxBufferedChunks\n ) {\n cb(\n this.createError(\n RangeError,\n 'Too many buffered chunks',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n )\n );\n return;\n }\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._maxFragments > 0 && ++this._numFragments > this._maxFragments) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\nconst {\n types: { isUint8Array }\n} = require('util');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else if (isUint8Array(data)) {\n buf.set(data, 2);\n } else {\n throw new TypeError('Second argument must be a string or a Uint8Array');\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxBufferedChunks: options.maxBufferedChunks,\n maxFragments: options.maxFragments,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxBufferedChunks: opts.maxBufferedChunks,\n maxFragments: opts.maxFragments,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxBufferedChunks: this.options.maxBufferedChunks,\n maxFragments: this.options.maxFragments,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "/** Explicit undefined values survive the native adapters' process.env merge. */\nexport function filterNativeEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const native = { ...env };\n for (const key of Object.keys(native)) {\n if (/^(?:BORGEE_|AGENT_HOST_|AGENT_REMOTE_|GATEWAY_|RELAY_)/i.test(key)) native[key] = undefined;\n }\n return native;\n}\n", "import { randomUUID } from 'node:crypto';\nimport { realpath, stat } from 'node:fs/promises';\nimport { isAbsolute } from 'node:path';\nimport type { AgentPersistenceHandle, AgentProviderAdapter, AgentSession, AgentSessionConfig, AgentSessionResumeOptions } from '@borgee/agent-provider-sdk';\nimport { createClaudeCatalog, type ClaudeCatalog } from './catalog.js';\nimport { ClaudeAgentSession, type ClaudeSessionConfig, type ClaudeSessionOptions } from './session.js';\nimport { record } from './projector.js';\n\nexport interface ClaudeSessionSummary {\n nativeSessionId: string;\n providerId: string;\n title: string;\n workspace?: string;\n createdAt: string;\n updatedAt: string;\n state: 'idle' | 'running' | 'waiting' | 'unavailable';\n}\nexport interface ClaudeAgentProviderOptions extends ClaudeSessionOptions { catalog?: ClaudeCatalog }\n\nexport class ClaudeAgentProvider implements AgentProviderAdapter {\n readonly descriptor = { providerId: 'claude', displayName: 'Claude Code' };\n private readonly catalog: ClaudeCatalog;\n private readonly sessions = new Map<string, ClaudeAgentSession>();\n private readonly loading = new Set<string>();\n constructor(private readonly options: ClaudeAgentProviderOptions = {}) {\n this.catalog = options.catalog ?? createClaudeCatalog(options.env ?? {}, options.requestTimeoutMs ?? 15_000);\n }\n\n async listSessions(): Promise<ClaudeSessionSummary[]> {\n return (await this.catalog.list()).map((entry) => ({ nativeSessionId: entry.sessionId, providerId: 'claude',\n title: entry.customTitle || entry.summary || entry.firstPrompt || 'Claude session', ...(entry.cwd ? { workspace: entry.cwd } : {}),\n createdAt: new Date(entry.createdAt ?? entry.lastModified).toISOString(), updatedAt: new Date(entry.lastModified).toISOString(), state: 'idle' }));\n }\n\n async createSession(config: AgentSessionConfig): Promise<AgentSession> {\n const sessionId = randomUUID();\n let session: ClaudeAgentSession | undefined;\n session = await ClaudeAgentSession.open({ ...config, sessionId, cwd: await workspace(config.cwd), additionalDirectories: readAdditionalDirectories(config.additionalDirectories) },\n { ...this.options, catalog: this.catalog, onDispose: () => {\n if (session && this.sessions.get(sessionId) === session) this.sessions.delete(sessionId);\n } });\n this.sessions.set(sessionId, session);\n return session;\n }\n\n async resumeSession(handle: AgentPersistenceHandle, options?: AgentSessionResumeOptions): Promise<AgentSession> {\n if (handle.providerId !== 'claude') throw new Error('Claude persistence provider does not match.');\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(handle.sessionId)) throw new Error('Invalid Claude session identity.');\n const sessionId = handle.sessionId;\n if (this.sessions.has(sessionId) || this.loading.has(sessionId)) throw new Error('Claude session is already loaded.');\n this.loading.add(sessionId);\n let session: ClaudeAgentSession | undefined;\n try {\n const info = await this.catalog.info(sessionId);\n if (!info) throw new Error('Claude native session is unavailable.');\n const stored = readConfig(handle.opaque);\n if (options?.additionalDirectories !== undefined) stored.additionalDirectories = readAdditionalDirectories(options.additionalDirectories);\n const messages = await this.catalog.messages(sessionId);\n session = await ClaudeAgentSession.open({ ...stored, sessionId, cwd: await workspace(info.cwd ?? stored.cwd) },\n { ...this.options, catalog: this.catalog, onDispose: () => {\n if (session && this.sessions.get(sessionId) === session) this.sessions.delete(sessionId);\n } }, messages, true);\n this.sessions.set(sessionId, session);\n return session;\n } finally { this.loading.delete(sessionId); }\n }\n\n async openChildSession(parentNativeSessionId: string, nativeSessionId: string): Promise<AgentSession> {\n const parent = this.sessions.get(parentNativeSessionId);\n if (!parent) throw new Error('Claude parent session is not loaded.');\n return parent.openChildSession(nativeSessionId);\n }\n}\n\nasync function workspace(cwd?: string): Promise<string> {\n const path = await realpath(cwd ?? process.cwd());\n if (!(await stat(path)).isDirectory()) throw new Error('Claude workspace must be a directory.');\n return path;\n}\nfunction readConfig(opaque: string): Partial<ClaudeSessionConfig> {\n let value: unknown;\n try { value = JSON.parse(opaque); } catch { throw new Error('Invalid Claude persistence configuration.'); }\n if (!record(value)) throw new Error('Invalid Claude persistence configuration.');\n const config: Partial<ClaudeSessionConfig> = {};\n for (const key of ['cwd', 'model', 'reasoningEffort', 'systemPrompt'] as const) if (typeof value[key] === 'string') config[key] = value[key];\n if (typeof value.planning === 'boolean') config.planning = value.planning;\n if (typeof value.permissionMode === 'string' && ['default', 'acceptEdits', 'dontAsk'].includes(value.permissionMode)) config.permissionMode = value.permissionMode as ClaudeSessionConfig['permissionMode'];\n if (value.additionalDirectories !== undefined) config.additionalDirectories = readAdditionalDirectories(value.additionalDirectories);\n return config;\n}\n\nfunction readAdditionalDirectories(value: unknown): string[] | undefined {\n if (value === undefined) return undefined;\n if (!Array.isArray(value) || value.some((path) => typeof path !== 'string' || !isAbsolute(path) || path.includes('\\0'))) {\n throw new Error('Claude additional directories must be absolute paths.');\n }\n return [...new Set(value)];\n}\n", "import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { fileURLToPath } from 'node:url';\nimport type { SDKSessionInfo, SessionMessage } from '@anthropic-ai/claude-agent-sdk';\n\nexport interface ClaudeCatalog {\n list(): Promise<SDKSessionInfo[]>;\n info(sessionId: string): Promise<SDKSessionInfo | undefined>;\n messages(sessionId: string): Promise<SessionMessage[]>;\n children?(sessionId: string): Promise<Array<{ id: string; messages: SessionMessage[] }>>;\n childMessages?(sessionId: string, childId: string): Promise<SessionMessage[]>;\n}\n\n/** SDK catalog APIs read process.env; a helper isolates each configured native home. */\nexport function createClaudeCatalog(env: NodeJS.ProcessEnv, timeout: number): ClaudeCatalog {\n async function read<T>(operation: string, sessionId?: string, childId?: string): Promise<T> {\n const { stdout } = await promisify(execFile)(process.execPath,\n [fileURLToPath(new URL('./catalog-worker.js', import.meta.url)), operation, ...(sessionId ? [sessionId] : []), ...(childId ? [childId] : [])],\n { env: { ...process.env, ...env }, timeout, maxBuffer: 32 * 1024 * 1024, encoding: 'utf8' })\n .catch(() => { throw new Error('Claude native catalog is unavailable.'); });\n return JSON.parse(stdout) as T;\n }\n return { list: () => read('list'), info: async (id) => await read<SDKSessionInfo | null>('info', id) ?? undefined,\n messages: (id) => read('messages', id), children: (id) => read('children', id), childMessages: (id, child) => read('child-messages', id, child) };\n}\n", "import type { AgentFormField, AgentFormValue, AgentInteractionRequest, AgentInteractionResponse } from './control.js';\n\nfunction requireValid(condition: unknown): asserts condition {\n if (!condition) throw new Error('Interaction response does not satisfy the pending request.');\n}\n\nfunction onlyKeys(value: object, keys: string[]): void {\n requireValid(Object.keys(value).every((key) => keys.includes(key)));\n}\n\n/** Validates a command against exactly the choices displayed by its pending request. */\nexport function validateInteractionResponse(request: AgentInteractionRequest, response: AgentInteractionResponse): void {\n requireValid(response && request.kind === response.kind);\n if (request.kind === 'question' && response.kind === 'question') {\n onlyKeys(response, ['kind', 'answers', 'dismissed']);\n requireValid(Array.isArray(response.answers));\n requireValid(response.dismissed === undefined || typeof response.dismissed === 'boolean');\n const seen = new Set<string>();\n for (const answer of response.answers) {\n onlyKeys(answer, ['questionId', 'selectedValues', 'customText']);\n const question = request.questions.find(({ questionId }) => questionId === answer.questionId);\n requireValid(question && !seen.has(answer.questionId));\n seen.add(answer.questionId);\n requireValid(Array.isArray(answer.selectedValues) && new Set(answer.selectedValues).size === answer.selectedValues.length);\n requireValid(question.selection !== 'single' || answer.selectedValues.length <= 1);\n requireValid(answer.selectedValues.every((value) => question.options.some((option) => option.value === value)));\n requireValid(answer.customText === undefined || (question.allowCustomText && typeof answer.customText === 'string'));\n if (!response.dismissed && question.required) requireValid(answer.selectedValues.length > 0 || answer.customText?.trim());\n }\n if (response.dismissed) requireValid(request.questions.every(({ allowDismiss }) => allowDismiss));\n else requireValid(request.questions.every((question) => !question.required || seen.has(question.questionId)));\n return;\n }\n if (request.kind === 'plan_approval' && response.kind === 'plan_approval') {\n onlyKeys(response, response.action === 'reject' ? ['kind', 'action', 'feedback'] : ['kind', 'action']);\n requireValid(request.allowedActions.includes(response.action));\n if (response.action === 'reject') requireValid(response.feedback === undefined || typeof response.feedback === 'string');\n return;\n }\n if (request.kind === 'tool_approval' && response.kind === 'tool_approval') {\n requireValid(request.allowedDecisions.includes(response.decision));\n if (response.decision === 'allow') {\n onlyKeys(response, response.scope === 'policy' ? ['kind', 'decision', 'scope', 'policyId'] : ['kind', 'decision', 'scope']);\n requireValid(request.allowScopes.includes(response.scope));\n if (response.scope === 'policy') requireValid(request.policies?.some(({ policyId }) => policyId === response.policyId));\n } else {\n onlyKeys(response, ['kind', 'decision', 'message']);\n requireValid(response.message === undefined || typeof response.message === 'string');\n }\n return;\n }\n if (request.kind === 'form' && response.kind === 'form') {\n if (response.action !== 'submit') {\n onlyKeys(response, ['kind', 'action']);\n requireValid(response.action === 'decline' || response.action === 'cancel');\n return;\n }\n onlyKeys(response, ['kind', 'action', 'values']);\n requireValid(response.values && typeof response.values === 'object' && !Array.isArray(response.values));\n requireValid(Object.keys(response.values).every((key) => request.fields.some(({ fieldId }) => fieldId === key)));\n for (const field of request.fields) {\n const present = Object.hasOwn(response.values, field.fieldId);\n requireValid(present || !field.required);\n if (present) validateFormValue(field, response.values[field.fieldId]!);\n }\n return;\n }\n if (request.kind === 'permission_approval' && response.kind === 'permission_approval') {\n if (response.decision === 'allow') {\n onlyKeys(response, ['kind', 'decision', 'scope']);\n requireValid(request.allowScopes.includes(response.scope));\n } else {\n onlyKeys(response, ['kind', 'decision']);\n requireValid(response.decision === 'deny');\n }\n return;\n }\n if (request.kind === 'external_action' && response.kind === 'external_action') {\n onlyKeys(response, ['kind', 'action']);\n requireValid(['completed', 'decline', 'cancel'].includes(response.action));\n return;\n }\n requireValid(false);\n}\n\nfunction validateFormValue(field: AgentFormField, value: AgentFormValue): void {\n switch (field.type) {\n case 'text':\n requireValid(typeof value === 'string');\n requireValid(field.minLength === undefined || [...value].length >= field.minLength);\n requireValid(field.maxLength === undefined || [...value].length <= field.maxLength);\n requireValid(field.format === undefined || validFormat(field.format, value));\n break;\n case 'number':\n requireValid(typeof value === 'number' && Number.isFinite(value));\n requireValid(!field.integer || Number.isInteger(value));\n requireValid(field.minimum === undefined || value >= field.minimum);\n requireValid(field.maximum === undefined || value <= field.maximum);\n break;\n case 'boolean':\n requireValid(typeof value === 'boolean');\n break;\n case 'select':\n requireValid(typeof value === 'string' && field.options.some((option) => option.value === value));\n break;\n case 'multiselect':\n requireValid(Array.isArray(value) && value.every((item) => typeof item === 'string'));\n requireValid(new Set(value).size === value.length);\n requireValid(value.every((item) => field.options.some((option) => option.value === item)));\n requireValid(field.minItems === undefined || value.length >= field.minItems);\n requireValid(field.maxItems === undefined || value.length <= field.maxItems);\n break;\n }\n}\n\nfunction validFormat(format: string, value: string): boolean {\n if (format === 'email') return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/u.test(value);\n if (format === 'uri') {\n return /^[a-z][a-z\\d+.-]*:(?:[a-z\\d\\-._~:/?#[\\]@!$&'()*+,;=]|%[a-f\\d]{2})*$/iu.test(value);\n }\n const date = /^(\\d{4})-(\\d{2})-(\\d{2})$/u.exec(value.slice(0, 10));\n if (!date) return false;\n const year = Number(date[1]);\n const month = Number(date[2]);\n const day = Number(date[3]);\n const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (month < 1 || month > 12 || day < 1 || day > days[month - 1]!) return false;\n if (format === 'date') return value.length === 10;\n return /^\\d{4}-\\d{2}-\\d{2}[tT](?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:[zZ]|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$/u.test(value);\n}\n\n/** Produces a detached public request without publishing sensitive field defaults. */\nexport function redactInteractionRequest(request: AgentInteractionRequest): AgentInteractionRequest {\n const result = JSON.parse(JSON.stringify(request)) as AgentInteractionRequest;\n if (result.kind === 'form') {\n for (const field of result.fields) if (field.sensitive) delete field.defaultValue;\n }\n return result;\n}\n\n/** Produces a detached historical receipt; sensitive values belong only in the provider command. */\nexport function redactInteractionResponse(request: AgentInteractionRequest, response: AgentInteractionResponse): AgentInteractionResponse {\n const result = JSON.parse(JSON.stringify(response)) as AgentInteractionResponse;\n if (result.kind === 'question') {\n result.answers = result.answers.map((answer) => {\n const question = request.kind === 'question' ? request.questions.find(({ questionId }) => questionId === answer.questionId) : undefined;\n return !question || question.sensitive || answer.redacted\n ? { questionId: answer.questionId, selectedValues: [], redacted: true }\n : answer;\n });\n }\n if (result.kind === 'form' && result.action === 'submit') {\n const redacted = new Set(result.redactedFields ?? []);\n for (const fieldId of Object.keys(result.values)) {\n const field = request.kind === 'form' ? request.fields.find((entry) => entry.fieldId === fieldId) : undefined;\n if (!field || field.sensitive || redacted.has(fieldId)) {\n delete result.values[fieldId];\n redacted.add(fieldId);\n }\n }\n if (redacted.size) result.redactedFields = [...redacted];\n }\n return result;\n}\n", "import type { AgentInteractionResponse } from './control.js';\nimport type { AgentRuntimeInfo, ProviderStreamItem } from './observation.js';\n\nexport interface AgentCapabilities {\n history: boolean;\n sendMessage: boolean;\n queueMessage?: boolean;\n steer: boolean;\n cancel: boolean;\n /** The session can return content for supported resource locators; this does not imply arbitrary URI access or inline rendering. */\n readResource: boolean;\n sessionSettings?: boolean;\n commands?: boolean;\n planning?: boolean;\n interactions: {\n question: boolean;\n planApproval: boolean;\n toolApproval: boolean;\n form?: boolean;\n permissionApproval?: boolean;\n externalAction?: boolean;\n };\n}\n\nexport interface AgentProviderDescriptor {\n providerId: string;\n displayName: string;\n /** Emits a complete session_restored state after the history boundary, before admitting live observation or input. */\n sessionObservation?: 'complete-state';\n /** Explicit input operations with receipt and expected-turn semantics. */\n sessionInputOperations?: readonly ('start_turn' | 'steer' | 'next_turn')[];\n}\n\nexport interface AgentPersistenceHandle {\n providerId: string;\n sessionId: string;\n opaque: string;\n}\n\n/** An adapter-confirmed ownership conflict, with a message safe for remote clients. */\nexport class AgentSessionInUseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentSessionInUseError';\n }\n}\n\nexport interface AgentSessionConfig {\n sessionId: string;\n cwd?: string;\n /** Extra native working-directory roots, still subject to native tool permissions. Unsupported providers reject this option. */\n additionalDirectories?: string[];\n model?: string;\n reasoningEffort?: string;\n systemPrompt?: string;\n planning?: boolean;\n}\n\nexport interface AgentSessionResumeOptions {\n /** Replaces saved directory roots; an empty array clears them and undefined preserves them. Unsupported providers reject a supplied value. */\n additionalDirectories?: string[];\n}\n\nexport interface AgentProviderAdapter {\n readonly descriptor: AgentProviderDescriptor;\n\n createSession(config: AgentSessionConfig): Promise<AgentSession>;\n resumeSession(handle: AgentPersistenceHandle, options?: AgentSessionResumeOptions): Promise<AgentSession>;\n /** Opens an observed direct child of a loaded parent; never discovers or resumes arbitrary sessions. */\n openChildSession?(parentNativeSessionId: string, childNativeSessionId: string): Promise<AgentSession>;\n /** Releases provider resources after every owned session has been disposed. */\n dispose?(): Promise<void>;\n}\n\nexport interface AgentMessageOptions {\n /** Native context fragments, separate from user content and admitted only with a new idle turn. Never implicitly steers; unsupported providers reject a supplied value. */\n additionalContext?: Record<string, { kind: 'application' | 'untrusted'; value: string }>;\n /** Opaque caller input identity echoed by a supporting native transport. */\n clientMessageId?: string;\n /** Immediate input joins active work; next_turn uses the native follow-up queue. */\n delivery?: 'immediate' | 'next_turn';\n /** Refuses input unless the provider can admit a new native turn without steering active work. */\n requireIdle?: boolean;\n}\n\nexport type AgentMessageReceipt = {\n /** Native message identity shared with the normalized user_message item. */\n messageId?: string;\n /** Native accepted turn identity; distinct from the input message identity. */\n turnId?: string;\n} & ({ messageId: string } | { turnId: string });\n\nexport interface AgentSteerOptions {\n /** Opaque caller input identity echoed by a supporting native transport. */\n clientMessageId?: string;\n /** Captured normalized turn identity; a mismatch must not start another turn. */\n expectedTurnId?: string;\n}\n\n/** Native input was refused before admission; retry is a caller decision. */\nexport class AgentInputRejectedError extends Error {\n constructor(message: string, readonly reason?: 'context_unavailable') { super(message); this.name = 'AgentInputRejectedError'; }\n}\n\nexport interface AgentSession {\n readonly capabilities: AgentCapabilities;\n\n /** A session observation may span turn completion and saved/live descriptor transitions; iterator termination means this observer ended. */\n observe(): AsyncIterable<ProviderStreamItem>;\n sendMessage(text: string, options?: AgentMessageOptions): Promise<void | AgentMessageReceipt>;\n /** Native pending input message identities; unavailable or ambiguous snapshots reject. */\n listPendingInputs?(): Promise<string[]>;\n respondToInteraction(requestId: string, response: AgentInteractionResponse): Promise<void>;\n steer?(text: string, options?: AgentSteerOptions): Promise<void | AgentMessageReceipt>;\n cancel?(): Promise<void>;\n setPlanning?(active: boolean): Promise<void>;\n setSessionSetting?(id: string, value: string): Promise<void>;\n listCommands?(): Promise<import('./commands.js').AgentCommand[]>;\n executeCommand?(id: string, args: string): Promise<import('./commands.js').AgentCommandResult>;\n /** Reads within this session's supported resource scope; unavailable resources return an unavailable result. */\n readResource?(locator: string): Promise<AgentResourceReadResult>;\n runtimeInfo(): Promise<AgentRuntimeInfo>;\n /** Releases this observer's resources without implying cancellation of separately owned native execution. */\n dispose(): Promise<void>;\n}\n\nexport type AgentResourceReadResult =\n | { status: 'available'; bytes: Uint8Array; mediaType: string }\n | { status: 'unavailable'; reason: string };\n", "export type AgentToolResultJson = null | boolean | number | string | AgentToolResultJson[] | { [key: string]: AgentToolResultJson };\nexport type AgentToolResultContent =\n | { type: 'text'; text: string; stream?: 'stdout' | 'stderr' | 'combined' }\n | { type: 'json'; value: AgentToolResultJson };\n\nexport interface AgentToolResult {\n content: AgentToolResultContent[];\n exitCode?: number;\n durationMs?: number;\n truncated?: boolean;\n}\n\nexport const TOOL_RESULT_MAX_CHARS = 64 * 1024;\nexport const TOOL_RESULT_MAX_BLOCKS = 128;\n\n/** Result bodies are bounded snapshots; consumers replace them instead of appending. */\nexport function boundToolResult(result: AgentToolResult): AgentToolResult {\n const content: AgentToolResultContent[] = [];\n let remaining = TOOL_RESULT_MAX_CHARS;\n let truncated = result.truncated ?? false;\n for (const block of result.content) {\n if (content.length === TOOL_RESULT_MAX_BLOCKS || remaining === 0) { truncated = true; break; }\n const text = block.type === 'text' ? block.text : JSON.stringify(block.value);\n if (text.length > remaining) {\n let end = remaining;\n if (end > 0 && /[\\uD800-\\uDBFF]/.test(text[end - 1]!)) end -= 1;\n content.push(block.type === 'text' ? { ...block, text: text.slice(0, end) } : { type: 'text', text: text.slice(0, end) });\n truncated = true;\n break;\n }\n content.push(block.type === 'text' ? { ...block } : { type: 'json', value: JSON.parse(text) as AgentToolResultJson });\n remaining -= text.length;\n }\n return { ...result, content, ...(truncated ? { truncated: true } : {}) };\n}\n", "import { boundToolResult, type AgentToolResult } from './tool-result.js';\n\nexport interface AgentFileChange {\n path: string;\n kind: 'added' | 'modified' | 'deleted' | 'renamed' | 'unknown';\n previousPath?: string;\n diff: string;\n}\n\n/** A versioned presentation format within the existing JSON result channel. */\nexport function fileChangesResult(files: AgentFileChange[]): AgentToolResult {\n return boundToolResult({ content: [{ type: 'json', value: {\n format: 'file_changes', version: 1, files: files.map(file => ({ ...file })),\n } }] });\n}\n", "export interface AgentSessionSettingOption {\n value: string;\n label: string;\n description?: string;\n}\n\n/** A native selection; values are opaque outside the declaring Provider. */\nexport interface AgentSessionSetting {\n id: string;\n category: 'model' | 'permissions';\n label: string;\n value: string | null;\n options: AgentSessionSettingOption[];\n mutable: boolean;\n scope: 'session' | 'session_and_default';\n description?: string;\n}\n\nexport function validateSessionSetting(settings: readonly AgentSessionSetting[] | undefined, id: string, value: string): AgentSessionSetting {\n const matches = settings?.filter((setting) => setting.id === id) ?? [];\n if (matches.length !== 1) throw new Error(`Unknown session setting: ${id}`);\n const setting = matches[0]!;\n if (!setting.mutable) throw new Error(`${setting.label} is read-only.`);\n if (setting.options.filter((option) => option.value === value).length !== 1) throw new Error(`Unavailable ${setting.label} selection.`);\n return setting;\n}\n", "import type { AgentInteractionRequest, AgentInteractionResponse } from './control.js';\nimport type { AgentStreamEvent } from './observation.js';\nimport { redactInteractionRequest, redactInteractionResponse, validateInteractionResponse } from './interactions.js';\n\nexport interface AgentCommand {\n id: string;\n name: string;\n description: string;\n kind: 'command' | 'skill' | 'prompt';\n inputHint?: string;\n shortDescription?: string;\n /** Provider-owned resource locator for read-only command documentation. */\n documentation?: string;\n}\n\nexport interface AgentCommandResult {\n text?: string;\n /** This invocation admitted native turn work; completion remains on observe(). */\n execution?: 'turn';\n /** Turn identity returned by the native transport. */\n turnId?: string;\n /** Actual native input protocol identity, including caller-assigned message IDs. */\n messageId?: string;\n}\n\n/** The invocation was rejected before any native side effect or turn admission. */\nexport class AgentCommandRejectedError extends Error {\n constructor(message: string) { super(message); this.name = 'AgentCommandRejectedError'; }\n}\n\nexport function validateCommandDirectory(commands: AgentCommand[]): AgentCommand[] {\n const ids = new Set<string>();\n const names = new Set<string>();\n for (const command of commands) {\n if (!command.id || ids.has(command.id) || !/^[^\\s/]+$/u.test(command.name) || names.has(command.name)\n || typeof command.description !== 'string' || !['command', 'skill', 'prompt'].includes(command.kind)\n || (command.inputHint !== undefined && typeof command.inputHint !== 'string')\n || (command.shortDescription !== undefined && typeof command.shortDescription !== 'string')\n || (command.documentation !== undefined && (typeof command.documentation !== 'string' || !command.documentation.trim()))) throw new Error('Invalid native command directory.');\n ids.add(command.id);\n names.add(command.name);\n }\n return commands.map((command) => ({ ...command }));\n}\n\ntype CommandRequest = Omit<Extract<AgentInteractionRequest, { kind: 'question' }>, 'requestId'>\n | Omit<Extract<AgentInteractionRequest, { kind: 'form' }>, 'requestId'>;\ninterface PendingCommandInteraction {\n request: AgentInteractionRequest;\n handler(response: AgentInteractionResponse): Promise<void>;\n submitting: boolean;\n}\n\n/** Command menus share the same response validation and events as native interactions. */\nexport class CommandInteractions {\n private readonly requests = new Map<string, PendingCommandInteraction>();\n private readonly prefix = `${Date.now().toString(36)}:${Math.random().toString(36).slice(2)}`;\n private sequence = 0;\n constructor(private readonly provider: string, private readonly emit: (event: AgentStreamEvent) => void) {}\n\n get pending(): boolean { return this.requests.size > 0; }\n pendingInteractions(): AgentInteractionRequest[] { return [...this.requests.values()].map(value => redactInteractionRequest(value.request)); }\n\n open(request: CommandRequest, handler: PendingCommandInteraction['handler']): string {\n const requestId = `command:${this.prefix}:${++this.sequence}`;\n const full = { ...JSON.parse(JSON.stringify(request)) as CommandRequest, requestId };\n this.requests.set(requestId, { request: full, handler, submitting: false });\n this.emit({ type: 'interaction_requested', provider: this.provider, request: redactInteractionRequest(full) });\n return requestId;\n }\n\n async respond(requestId: string, response: AgentInteractionResponse): Promise<boolean> {\n const pending = this.requests.get(requestId);\n if (!pending) return false;\n if (pending.submitting) throw new Error('Command interaction response is already pending.');\n validateInteractionResponse(pending.request, response);\n pending.submitting = true;\n try {\n const canceled = response.kind === 'question' ? response.dismissed === true\n : response.kind === 'form' && response.action !== 'submit';\n if (!canceled) await pending.handler(response);\n if (this.requests.get(requestId) === pending) {\n this.requests.delete(requestId);\n this.emit({ type: 'interaction_resolved', provider: this.provider, requestId, response: redactInteractionResponse(pending.request, response) });\n }\n return true;\n } finally { pending.submitting = false; }\n }\n\n clear(): void { this.requests.clear(); }\n}\n", "import { AgentCommandRejectedError, AgentInputRejectedError } from '@borgee/agent-provider-sdk';\nimport { randomUUID } from 'node:crypto';\nimport { query, type Options, type ModelInfo, type PermissionMode, type Query, type SDKMessage, type SDKUserMessage, type SessionMessage } from '@anthropic-ai/claude-agent-sdk';\nimport type { AgentCapabilities, AgentInteractionResponse, AgentMessageOptions, AgentRuntimeInfo, AgentSession, AgentSessionConfig,\n AgentStreamEvent, ProviderStreamItem } from '@borgee/agent-provider-sdk';\nimport { validateSessionSetting, type AgentSessionSetting } from '@borgee/agent-provider-sdk';\nimport { Channel, deadline, DeadlineError } from './channel.js';\nimport { ClaudeInteractions } from './interactions.js';\nimport { ClaudeUsage } from './usage.js';\nimport { ClaudeImageRegistry } from './images.js';\nimport { ClaudeEventProjector } from './projector.js';\nimport { discoverClaudeCommands } from './commands.js';\nimport { ClaudeChildren } from './children.js';\nimport { createClaudeCatalog, type ClaudeCatalog } from './catalog.js';\n\nexport type ClaudeQuery = AsyncIterable<SDKMessage> & Pick<Query, 'initializationResult' | 'interrupt' | 'setPermissionMode' | 'close' | 'supportedCommands' | 'reloadSkills' | 'supportedModels' | 'setModel'>;\nexport interface ClaudeSessionOptions {\n executable?: string;\n restrictedNative?: boolean;\n env?: NodeJS.ProcessEnv;\n requestTimeoutMs?: number;\n onDiagnostic?: (line: string) => void;\n catalog?: ClaudeCatalog;\n onDispose?: () => void;\n query?: (input: { prompt: AsyncIterable<SDKUserMessage>; options: Options }) => ClaudeQuery;\n}\n\nexport interface ClaudeSessionConfig extends AgentSessionConfig { permissionMode?: PermissionMode }\n\nexport class ClaudeAgentSession implements AgentSession {\n readonly capabilities: AgentCapabilities = { history: true, sendMessage: true, steer: false, cancel: true, readResource: true,\n planning: true, commands: true, sessionSettings: true, interactions: { question: true, toolApproval: true, planApproval: true } };\n private readonly input = new Channel<SDKUserMessage>();\n private readonly output = new Channel<ProviderStreamItem>();\n private readonly projector: ClaudeEventProjector;\n private readonly images: ClaudeImageRegistry;\n private readonly history: ProviderStreamItem[];\n private readonly children: ClaudeChildren;\n private readonly interactions: ClaudeInteractions;\n private readonly sourceId = randomUUID();\n private readonly usage = new ClaudeUsage();\n private readonly resultIds = new Set<string>();\n private readonly timeout: number;\n private sequence = 0;\n private status: AgentRuntimeInfo['status'] = 'starting';\n private turnId: ReturnType<typeof randomUUID> | undefined;\n private cancelRequested = false;\n private planning = false;\n private permissionMode: PermissionMode = 'default';\n private resumePermissionMode: PermissionMode = 'default';\n private models: ModelInfo[] = [];\n private changingSetting = false;\n private commandResult?: { resolve(value: { text?: string }): void; reject(error: Error): void; failure?: string };\n private observing = false;\n private disposed = false;\n private failure: Error | undefined;\n private native!: ClaudeQuery;\n private pump!: Promise<void>;\n\n private constructor(private readonly config: ClaudeSessionConfig, private readonly options: ClaudeSessionOptions,\n messages: SessionMessage[]) {\n this.timeout = options.requestTimeoutMs ?? 15_000;\n if (!Number.isFinite(this.timeout) || this.timeout <= 0) throw new Error('Claude request timeout must be positive.');\n this.planning = config.planning ?? false;\n this.resumePermissionMode = !options.restrictedNative && ['default', 'acceptEdits', 'dontAsk'].includes(config.permissionMode ?? '') ? config.permissionMode! : 'default';\n this.permissionMode = this.planning ? 'plan' : this.resumePermissionMode;\n this.images = new ClaudeImageRegistry(config.sessionId);\n this.projector = new ClaudeEventProjector(config.sessionId, 'live', this.images);\n const history = new ClaudeEventProjector(config.sessionId, 'history', this.images);\n this.history = messages.flatMap((message) => history.project(message));\n this.children = new ClaudeChildren(config.sessionId, config.cwd,\n options.catalog ?? createClaudeCatalog(options.env ?? {}, this.timeout), () => this.runtimeUpdated());\n this.interactions = new ClaudeInteractions((event) => {\n this.emit(event);\n this.status = this.interactions.size ? 'waiting' : this.turnId ? 'running' : 'idle';\n this.runtimeUpdated();\n }, async () => {\n if (this.changingSetting) throw new Error('Claude already has a setting change in progress.');\n this.changingSetting = true;\n try {\n await this.updatePermissionMode(this.resumePermissionMode);\n this.runtimeUpdated();\n } finally { this.changingSetting = false; }\n });\n }\n\n static async open(config: ClaudeSessionConfig, options: ClaudeSessionOptions = {}, messages: SessionMessage[] = [], resume = false): Promise<ClaudeAgentSession> {\n if (config.reasoningEffort && !['low', 'medium', 'high', 'xhigh', 'max'].includes(config.reasoningEffort)) throw new Error('Unsupported Claude reasoning effort.');\n const session = new ClaudeAgentSession(config, options, messages);\n try {\n if (resume) await session.children.restore();\n session.native = (options.query ?? query)({ prompt: session.input, options: {\n ...(resume ? { resume: config.sessionId } : { sessionId: config.sessionId }), cwd: config.cwd,\n additionalDirectories: config.additionalDirectories,\n model: config.model, ...(config.reasoningEffort ? { effort: config.reasoningEffort as Options['effort'] } : {}),\n pathToClaudeCodeExecutable: options.executable, env: { ...process.env, ...options.env },\n includePartialMessages: true, forwardSubagentText: true, persistSession: true, settingSources: ['user', 'project', 'local'],\n systemPrompt: config.systemPrompt ?? { type: 'preset', preset: 'claude_code' },\n ...(options.restrictedNative ? { sandbox: { enabled: true, failIfUnavailable: true, allowUnsandboxedCommands: false }, settings: { disableSkillShellExecution: true } } : {}),\n permissionMode: session.permissionMode, canUseTool: session.interactions.request,\n stderr: options.onDiagnostic,\n } });\n session.pump = session.consume();\n const initialized = await deadline(session.native.initializationResult(), session.timeout, 'Claude initialization');\n session.models = initialized.models ?? [];\n if (session.failure) throw session.failure;\n session.status = 'idle';\n session.runtimeUpdated();\n return session;\n } catch (error) { await session.dispose(); throw error; }\n }\n\n async *observe(): AsyncIterable<ProviderStreamItem> {\n if (this.observing) throw new Error('Claude session already has an observer.');\n this.observing = true;\n yield* this.history;\n yield { type: 'history_boundary' };\n yield* this.output;\n }\n\n async sendMessage(text: string, options: AgentMessageOptions = {}): Promise<{ messageId: string }> {\n if (options?.additionalContext !== undefined) throw new AgentInputRejectedError('Claude does not support separate message context.');\n this.requireOpen();\n if (!text.trim()) throw new Error('Claude message cannot be empty.');\n if (options.requireIdle && options.delivery === 'next_turn') throw new AgentInputRejectedError('Idle-only delivery cannot be combined with next-turn delivery.');\n if (options.delivery === 'next_turn') throw new Error('Claude queued delivery is not supported.');\n if (this.turnId || this.changingSetting) throw new Error('Claude already has an active turn or setting change.');\n this.turnId = randomUUID();\n this.usage.startTurn();\n this.status = 'running';\n this.cancelRequested = false;\n const message: SDKUserMessage = { type: 'user', uuid: this.turnId, session_id: this.config.sessionId,\n parent_tool_use_id: null, message: { role: 'user', content: text } };\n this.emit({ type: 'turn_started', provider: 'claude', turnId: this.turnId });\n for (const observation of this.projector.project(message)) this.output.push({ ...observation, event: this.withTurn(observation.event) });\n this.runtimeUpdated();\n this.input.push(message);\n return { messageId: message.uuid! };\n }\n\n async respondToInteraction(requestId: string, response: AgentInteractionResponse): Promise<void> {\n this.requireOpen(); await this.interactions.respond(requestId, response);\n }\n\n async listCommands() {\n this.requireOpen();\n const commands = await deadline(discoverClaudeCommands(this.native), this.timeout, 'Claude command discovery');\n this.requireOpen();\n return commands;\n }\n\n async executeCommand(id: string, args: string) {\n this.requireOpen();\n if (this.turnId || this.changingSetting) throw new AgentCommandRejectedError('Claude commands require an idle session.');\n this.changingSetting = true;\n try {\n const command = (await this.listCommands()).find((entry) => entry.id === id);\n if (!command) throw new AgentCommandRejectedError('Claude command is unavailable in this session.');\n if (command.kind === 'command') return await this.executeLocalCommand(command.name, args);\n this.changingSetting = false;\n const receipt = await this.sendMessage(`/${command.name}${args ? ` ${args}` : ''}`);\n return { execution: 'turn' as const, messageId: receipt.messageId };\n } finally { this.changingSetting = false; }\n }\n\n private async executeLocalCommand(name: string, args: string): Promise<{ text?: string }> {\n const result = new Promise<{ text?: string }>((resolve, reject) => { this.commandResult = { resolve, reject }; });\n this.input.push({ type: 'user', uuid: randomUUID(), session_id: this.config.sessionId, parent_tool_use_id: null,\n message: { role: 'user', content: '/' + name + (args ? ' ' + args : '') } });\n try { return await deadline(result, this.timeout, 'Claude native command'); }\n catch (error) { if (error instanceof DeadlineError) this.fail(error); throw error; }\n finally { this.commandResult = undefined; }\n }\n\n async cancel(): Promise<void> {\n this.requireOpen();\n if (!this.turnId) return;\n this.cancelRequested = true;\n this.interactions.cancelAll();\n try { await deadline(this.native.interrupt(), this.timeout, 'Claude interrupt'); }\n catch (error) { this.fail(error); this.native.close(); throw error; }\n }\n\n async setSessionSetting(id: string, value: string): Promise<void> {\n this.requireOpen();\n if (this.options.restrictedNative && id === 'permissions') {\n if (value === this.permissionMode) return;\n throw new Error('Native permission settings are locked by Host policy.');\n }\n if (this.turnId || this.changingSetting) throw new Error('Claude settings can only change while idle.');\n this.changingSetting = true;\n try {\n if (id === 'model') this.models = await deadline(this.native.supportedModels(), this.timeout, 'Claude model discovery');\n this.requireOpen();\n validateSessionSetting(this.settings(), id, value);\n if (id === 'model') {\n await this.updateNative(this.native.setModel(value), 'Claude model update');\n this.requireOpen();\n this.config.model = value;\n } else await this.updatePermissionMode(value as PermissionMode);\n this.runtimeUpdated();\n } finally { this.changingSetting = false; }\n }\n\n async setPlanning(active: boolean): Promise<void> {\n this.requireOpen();\n if (this.turnId || this.changingSetting) throw new Error('Claude planning can only change while idle.');\n this.changingSetting = true;\n try {\n await this.updatePermissionMode(active ? 'plan' : this.resumePermissionMode);\n this.runtimeUpdated();\n } finally { this.changingSetting = false; }\n }\n\n private async updatePermissionMode(mode: PermissionMode): Promise<void> {\n if (this.options.restrictedNative && mode !== 'default' && mode !== 'plan') throw new Error('Native permission settings are locked by Host policy.');\n await this.updateNative(this.native.setPermissionMode(mode), 'Claude permission update');\n this.requireOpen();\n this.confirmPermissionMode(mode);\n }\n private async updateNative(operation: Promise<void>, label: string): Promise<void> {\n try { await deadline(operation, this.timeout, label); }\n catch (error) { if (error instanceof DeadlineError) this.fail(error); throw error; }\n }\n private confirmPermissionMode(mode: PermissionMode): void {\n if (this.options.restrictedNative && mode !== 'default' && mode !== 'plan') throw new Error('Native permission settings violate Host policy.');\n this.permissionMode = mode;\n this.planning = mode === 'plan';\n if (!this.planning) this.resumePermissionMode = mode;\n }\n private settings(): AgentSessionSetting[] {\n return [{ id: 'model', category: 'model', label: 'Model', value: this.config.model ?? null,\n options: this.models.map((model) => ({ value: model.value, label: model.displayName, description: model.description })),\n mutable: true, scope: 'session' },\n { id: 'permissions', category: 'permissions', label: 'Permissions', value: this.permissionMode,\n options: [{ value: 'default', label: 'Ask for permissions' }, { value: 'acceptEdits', label: 'Accept edits' },\n { value: 'dontAsk', label: 'Deny unapproved tools' }, { value: 'plan', label: 'Plan' }],\n mutable: !this.options.restrictedNative, scope: 'session' }];\n }\n\n async runtimeInfo(): Promise<AgentRuntimeInfo> { return this.info(); }\n async readResource(locator: string) { return this.images.readResource(locator); }\n async openChildSession(nativeSessionId: string): Promise<AgentSession> { return this.children.open(nativeSessionId); }\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n this.images.stop();\n this.interactions.close();\n this.commandResult?.reject(new Error('Claude session is closed.'));\n this.status = 'closed';\n this.input.close();\n this.native?.close();\n await this.children.close();\n if (!this.failure) this.runtimeUpdated();\n this.output.close();\n if (this.pump) await deadline(this.pump, Math.min(this.timeout, 5000), 'Claude shutdown').catch(() => undefined);\n this.options.onDispose?.();\n }\n\n private requireOpen(): void {\n if (this.disposed) throw new Error('Claude session is closed.');\n if (this.failure) throw this.failure;\n }\n private info(): AgentRuntimeInfo {\n return { providerId: 'claude', sessionId: this.config.sessionId, status: this.status, cwd: this.config.cwd,\n model: this.config.model ?? null, planning: { active: this.planning }, settings: this.settings(), childSessions: this.children.descriptors(),\n persistence: { providerId: 'claude', sessionId: this.config.sessionId, opaque: JSON.stringify({ ...this.config, planning: this.planning, permissionMode: this.resumePermissionMode }) } };\n }\n private runtimeUpdated(): void { this.emit({ type: 'runtime_updated', provider: 'claude', runtimeInfo: this.info() }); }\n private emit(event: AgentStreamEvent): void {\n this.output.push({ type: 'observation', sourceKey: `claude:${this.sourceId}:${++this.sequence}`, occurredAt: Date.now(), delivery: 'live',\n event: this.withTurn(event) });\n }\n private withTurn(event: AgentStreamEvent): AgentStreamEvent {\n return this.turnId && event.type !== 'runtime_updated' && event.type !== 'thread_started' ? { ...event, turnId: this.turnId } : event;\n }\n private fail(error: unknown): void {\n if (this.disposed || this.failure) return;\n this.failure = new Error(error instanceof Error ? error.message : String(error));\n this.commandResult?.reject(this.failure);\n this.images.stop();\n this.interactions.cancelAll();\n if (this.turnId) this.emit({ type: 'turn_failed', provider: 'claude', error: this.failure.message });\n this.turnId = undefined;\n this.status = 'failed';\n void this.children.close();\n this.runtimeUpdated();\n this.output.fail(this.failure);\n this.input.close();\n this.native.close();\n }\n\n private async consume(): Promise<void> {\n try {\n for await (const message of this.native) {\n if (this.disposed) break;\n // Hook diagnostics can precede resume initialization with a temporary CLI session ID.\n if (message.type === 'system' && (message.subtype === 'hook_started' || message.subtype === 'hook_progress' || message.subtype === 'hook_response')) continue;\n if (message.session_id && message.session_id !== this.config.sessionId) throw new Error('Claude returned a different native session identity.');\n this.children.consume(message, this.turnId);\n if ('parent_tool_use_id' in message && message.parent_tool_use_id) continue;\n if (this.commandResult) {\n if (message.type === 'system' && message.subtype === 'status' && 'compact_result' in message && message.compact_result === 'failed') {\n this.commandResult.failure = 'compact_error' in message && typeof message.compact_error === 'string' ? message.compact_error : 'Claude compaction failed.';\n }\n if (message.type === 'system' && message.subtype === 'local_command_output') {\n this.commandResult.resolve({ text: message.content });\n continue;\n }\n if (message.type === 'result') {\n if (this.commandResult.failure || message.is_error || message.subtype !== 'success') this.commandResult.reject(new Error(this.commandResult.failure ?? ('errors' in message ? message.errors.join('\\n') : 'Claude command failed.')));\n else this.commandResult.resolve({ text: message.result });\n continue;\n }\n if (message.type === 'assistant' || message.type === 'stream_event' || message.type === 'user') continue;\n }\n if (message.type === 'result') {\n if (this.resultIds.has(message.uuid)) continue;\n this.resultIds.add(message.uuid);\n if (message.user_message_uuid && message.user_message_uuid !== this.turnId) continue;\n }\n const context = this.usage.observe(message, this.config.model);\n if (context) this.emit({ type: 'usage_updated', provider: 'claude', usage: context });\n for (const observation of this.projector.project(message)) this.output.push({ ...observation,\n event: this.withTurn(observation.event) });\n if (message.type === 'system' && message.subtype === 'init') {\n this.config.model = message.model;\n this.confirmPermissionMode(message.permissionMode);\n this.runtimeUpdated();\n }\n if (message.type === 'system' && message.subtype === 'status' && message.permissionMode) {\n this.confirmPermissionMode(message.permissionMode);\n this.runtimeUpdated();\n }\n if (message.type !== 'result' || !this.turnId) continue;\n this.children.finishTurn();\n this.interactions.cancelAll();\n const usage = this.usage.result(message, this.config.model, { sessionId: this.config.sessionId, turnId: this.turnId });\n if (this.cancelRequested || message.is_error || message.subtype !== 'success') {\n if (Object.keys(usage).length) this.emit({ type: 'usage_updated', provider: 'claude', usage });\n }\n if (this.cancelRequested) this.emit({ type: 'turn_canceled', provider: 'claude', reason: 'Interrupted by the user.' });\n else if (message.is_error || message.subtype !== 'success') this.emit({ type: 'turn_failed', provider: 'claude',\n error: 'errors' in message ? message.errors.join('\\n') : 'Claude turn failed.' });\n else this.emit({ type: 'turn_completed', provider: 'claude', usage });\n this.turnId = undefined;\n this.cancelRequested = false;\n this.status = 'idle';\n this.runtimeUpdated();\n }\n if (!this.disposed) this.fail(new Error('Claude runtime exited. Resume the saved session to reconnect.'));\n } catch (error) { this.fail(error); }\n }\n}\n", "/** Single-consumer channel owned by a native session. */\nexport class Channel<T> implements AsyncIterable<T> {\n private readonly values: T[] = [];\n private wake: (() => void) | undefined;\n private ended = false;\n private failure: Error | undefined;\n push(value: T): void { if (this.ended) throw new Error('Session channel is closed.'); this.values.push(value); this.wake?.(); }\n close(): void { this.ended = true; this.wake?.(); }\n fail(error: Error): void { this.failure = error; this.close(); }\n async *[Symbol.asyncIterator](): AsyncGenerator<T> {\n for (;;) {\n if (this.values.length) yield this.values.shift()!;\n else if (this.ended) { if (this.failure) throw this.failure; return; }\n else await new Promise<void>((resolve) => { this.wake = resolve; });\n }\n }\n}\n\nexport class DeadlineError extends Error {}\n\nexport async function deadline<T>(operation: Promise<T>, timeoutMs: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try { return await Promise.race([operation, new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new DeadlineError(`${label} timed out.`)), timeoutMs);\n })]); } finally { clearTimeout(timer); }\n}\n", "import { randomUUID } from 'node:crypto';\nimport type { CanUseTool, PermissionResult } from '@anthropic-ai/claude-agent-sdk';\nimport { validateInteractionResponse, type AgentInteractionRequest, type AgentInteractionResponse, type AgentStreamEvent } from '@borgee/agent-provider-sdk';\nimport { record, toolDetail } from './projector.js';\n\ninterface Pending { responding?: boolean; request: AgentInteractionRequest; input: Record<string, unknown>; resolve(result: PermissionResult): void; cleanup(): void }\n\nexport class ClaudeInteractions {\n private readonly pending = new Map<string, Pending>();\n private closed = false;\n constructor(private readonly emit: (event: AgentStreamEvent) => void, private readonly approvePlan?: () => Promise<void>) {}\n get size(): number { return this.pending.size; }\n\n readonly request: CanUseTool = async (name, input, options) => {\n if (this.closed || options.signal.aborted) return { behavior: 'deny', message: 'Permission request is no longer active.' };\n const requestId = `claude:${options.toolUseID}:${randomUUID()}`;\n if (name === 'ExitPlanMode' && (typeof input.plan !== 'string' || !input.plan.trim() || !this.approvePlan)) {\n return { behavior: 'deny', message: 'A native plan body and permission transition are required for review.' };\n }\n const request: AgentInteractionRequest | undefined = name === 'ExitPlanMode'\n ? { kind: 'plan_approval', requestId, plan: input.plan as string, allowedActions: ['approve_and_resume', 'reject'] }\n : name === 'AskUserQuestion' ? questions(requestId, input) : undefined;\n if (name === 'AskUserQuestion' && !request) return { behavior: 'deny', message: 'Unsupported question format.' };\n const normalized: AgentInteractionRequest = request ?? { kind: 'tool_approval', requestId, toolCallId: options.toolUseID,\n toolName: name, summary: options.title || options.decisionReason || `Allow ${name}?`, detail: toolDetail(name, input),\n allowedDecisions: ['allow', 'deny', 'cancel'], allowScopes: ['once'] };\n return new Promise<PermissionResult>((resolve) => {\n const abort = () => this.cancel(requestId);\n this.pending.set(requestId, { request: normalized, input, resolve, cleanup: () => options.signal.removeEventListener('abort', abort) });\n options.signal.addEventListener('abort', abort, { once: true });\n this.emit({ type: 'interaction_requested', provider: 'claude', request: normalized });\n if (options.signal.aborted) abort();\n });\n };\n\n respond(requestId: string, response: AgentInteractionResponse): void | Promise<void> {\n const pending = this.pending.get(requestId);\n if (!pending) throw new Error('Claude permission request is no longer active.');\n if (pending.responding) throw new Error('Claude permission response is already in progress.');\n validateInteractionResponse(pending.request, response);\n if (response.kind === 'plan_approval') {\n if (response.action === 'reject') {\n this.finish(requestId, response, { behavior: 'deny', message: response.feedback || 'The user rejected the plan.' });\n return;\n }\n pending.responding = true;\n return this.resolvePlan(requestId, pending, response);\n }\n let result: PermissionResult;\n if (response.kind === 'tool_approval') {\n result = response.decision === 'allow' ? { behavior: 'allow', updatedInput: pending.input }\n : { behavior: 'deny', message: response.message || 'The user declined this tool.', ...(response.decision === 'cancel' ? { interrupt: true } : {}) };\n } else if (response.kind === 'question' && pending.request.kind === 'question') {\n const answers: Record<string, string> = {};\n for (const answer of response.answers) {\n const question = pending.request.questions.find(({ questionId }) => questionId === answer.questionId)!;\n answers[question.prompt] = [...answer.selectedValues, ...(answer.customText ? [answer.customText] : [])].join(', ');\n }\n result = response.dismissed ? { behavior: 'deny', message: 'The user dismissed the questions.' }\n : { behavior: 'allow', updatedInput: { ...pending.input, answers } };\n } else throw new Error('Unsupported Claude interaction response.');\n this.finish(requestId, response, result);\n }\n\n private async resolvePlan(id: string, pending: Pending, response: AgentInteractionResponse): Promise<void> {\n try {\n await this.approvePlan!();\n if (this.pending.get(id) !== pending) throw new Error('Claude permission request is no longer active.');\n this.finish(id, response, { behavior: 'allow', updatedInput: pending.input });\n } finally { pending.responding = false; }\n }\n\n cancelAll(): void { for (const id of [...this.pending.keys()]) this.cancel(id); }\n close(): void { this.closed = true; this.cancelAll(); }\n private cancel(id: string): void {\n const pending = this.pending.get(id);\n if (!pending) return;\n const response: AgentInteractionResponse = pending.request.kind === 'question'\n ? { kind: 'question', answers: [], dismissed: true } : pending.request.kind === 'plan_approval'\n ? { kind: 'plan_approval', action: 'reject', feedback: 'The plan review was canceled.' }\n : { kind: 'tool_approval', decision: 'cancel' };\n this.finish(id, response, { behavior: 'deny', message: 'The permission request was canceled.', interrupt: true });\n }\n private finish(id: string, response: AgentInteractionResponse, result: PermissionResult): void {\n const pending = this.pending.get(id)!;\n this.pending.delete(id);\n pending.cleanup();\n this.emit({ type: 'interaction_resolved', provider: 'claude', requestId: id, response });\n pending.resolve(result);\n }\n}\n\nfunction questions(requestId: string, input: Record<string, unknown>): Extract<AgentInteractionRequest, { kind: 'question' }> | undefined {\n if (!Array.isArray(input.questions) || !input.questions.length) return;\n const seen = new Set<string>();\n const result: Extract<AgentInteractionRequest, { kind: 'question' }> = { kind: 'question', requestId, questions: [] };\n for (const [index, question] of input.questions.entries()) {\n if (!record(question) || typeof question.question !== 'string' || !question.question || seen.has(question.question)\n || !Array.isArray(question.options) || question.options.some((option: unknown) => !record(option) || typeof option.label !== 'string')) return;\n seen.add(question.question);\n const options = question.options.map((option: any) => ({ value: option.label, label: option.label,\n ...(typeof option.description === 'string' ? { description: option.description } : {}) }));\n if (new Set(options.map((option: { value: string }) => option.value)).size !== options.length) return;\n result.questions.push({ questionId: `question-${index}`, header: typeof question.header === 'string' ? question.header : 'Question',\n prompt: question.question, required: true, selection: question.multiSelect ? 'multiple' : 'single', options,\n allowCustomText: true, allowDismiss: true });\n }\n return result;\n}\n", "import { boundToolResult, type AgentToolResultJson, type AgentStreamEvent, type AgentTimelineItem, type AgentToolDetail, type ProviderObservation } from '@borgee/agent-provider-sdk';\nimport type { ClaudeImageRegistry } from './images.js';\n\nexport function record(value: unknown): value is Record<string, any> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function toolDetail(name: string, input: Record<string, unknown>): AgentToolDetail {\n const text = (key: string) => typeof input[key] === 'string' ? input[key] as string : '';\n if (name === 'Bash') return { type: 'shell', command: text('command') };\n if (name === 'Read') return { type: 'read', filePath: text('file_path') };\n if (name === 'Edit' || name === 'MultiEdit') return { type: 'edit', filePath: text('file_path') };\n if (name === 'Write') return { type: 'write', filePath: text('file_path') };\n if (name === 'Grep' || name === 'Glob' || name === 'WebSearch') return { type: 'search', query: text('pattern') || text('query') };\n if (name === 'WebFetch') return { type: 'fetch', url: text('url') };\n return { type: 'other', description: text('description') || name };\n}\n\ninterface Block { index: number; type: string; text: string; finalized: boolean }\n\n/** Converts native transcript and streaming frames to append-only normalized observations. */\nexport class ClaudeEventProjector {\n private readonly seen = new Set<string>();\n private readonly blocks = new Map<string, Block[]>();\n private readonly tools = new Map<string, { name: string; detail: AgentToolDetail }>();\n private activeMessage = '';\n private sequence = 0;\n\n constructor(private readonly sessionId: string, private readonly delivery: 'history' | 'live' = 'live', private readonly images?: ClaudeImageRegistry) {}\n\n project(value: unknown): ProviderObservation[] {\n if (!record(value) || value.parent_tool_use_id || value.session_id && value.session_id !== this.sessionId) return [];\n if (value.type === 'stream_event') return this.stream(value.event);\n if (typeof value.uuid === 'string') {\n if (this.seen.has(value.uuid)) return [];\n this.seen.add(value.uuid);\n }\n const key = `message:${value.uuid ?? ++this.sequence}`;\n if (value.type === 'system' && value.subtype === 'compact_boundary') {\n return [this.item(key, { type: 'compaction', status: 'completed',\n ...(record(value.compact_metadata) ? { trigger: value.compact_metadata.trigger, preTokens: value.compact_metadata.pre_tokens } : {}) })];\n }\n if (!record(value.message)) return [];\n const content = typeof value.message.content === 'string' ? [{ type: 'text', text: value.message.content }]\n : Array.isArray(value.message.content) ? value.message.content : [];\n if (value.type === 'user') {\n const events: ProviderObservation[] = [];\n const text = content.filter((block: unknown) => record(block) && block.type === 'text').map((block: any) => block.text).join('\\n');\n if (text && !value.isSynthetic) events.push(this.item(key, { type: 'user_message', text, messageId: value.uuid }));\n const toolResults = content.filter((block: unknown) => record(block) && block.type === 'tool_result');\n const structured = toolResults.length === 1 ? toolResultJson(imageMetadata(value.tool_use_result, toolResults[0].content)) : undefined;\n for (const block of toolResults) {\n const tool = this.tools.get(block.tool_use_id) ?? { name: 'Tool', detail: { type: 'other', description: 'Native tool result' } as const };\n const output = typeof block.content === 'string' ? block.content : Array.isArray(block.content)\n ? block.content.filter((part: unknown) => record(part) && part.type === 'text').map((part: any) => part.text).join('\\n') : '';\n const result = boundToolResult({ content: [{ type: 'text', text: output },\n ...(structured === undefined ? [] : [{ type: 'json' as const, value: structured }])] });\n events.push(this.item(`${key}:tool:${block.tool_use_id}`, { type: 'tool_call', callId: block.tool_use_id, ...tool, result,\n ...(block.is_error ? { status: 'failed' as const, error: output.slice(0, 1024) || 'Tool failed' } : { status: 'completed' as const, error: null }) }));\n if (typeof block.tool_use_id === 'string' && Array.isArray(block.content)) {\n for (const [index, part] of block.content.entries()) {\n const image = this.images?.project(block.tool_use_id, index, part);\n if (image) events.push({ ...this.item(`${key}:tool:${block.tool_use_id}:image:${index}`, image.item), resourceReferences: image.resourceReferences });\n }\n }\n }\n return events;\n }\n if (value.type !== 'assistant') return [];\n const messageId = typeof value.message.id === 'string' ? value.message.id : String(value.uuid);\n const blocks = this.blocks.get(messageId) ?? [];\n this.blocks.set(messageId, blocks);\n const events: ProviderObservation[] = [];\n for (const block of content) {\n if (!record(block)) continue;\n const current = blocks.find((entry) => !entry.finalized && entry.type === block.type)\n ?? { index: blocks.length, type: block.type, text: '', finalized: false };\n if (!blocks.includes(current)) blocks.push(current);\n current.finalized = true;\n const blockKey = `${key}:${current.index}`;\n if (block.type === 'text' || block.type === 'thinking') {\n const text = block.type === 'text' ? block.text : block.thinking;\n if (typeof text !== 'string') continue;\n const suffix = text.startsWith(current.text) ? text.slice(current.text.length) : text;\n current.text = text;\n if (suffix) events.push(this.item(blockKey, block.type === 'thinking' ? { type: 'reasoning', text: suffix }\n : { type: 'assistant_message', messageId: `${messageId}:${current.index}`, text: suffix }));\n } else if (block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string') {\n const input = record(block.input) ? block.input : {};\n const tool = { name: block.name, detail: toolDetail(block.name, input) };\n this.tools.set(block.id, tool);\n events.push(this.item(blockKey, { type: 'tool_call', callId: block.id, ...tool, status: 'running', error: null }));\n if (block.name === 'TodoWrite' && Array.isArray(input.todos)) events.push(this.item(`${blockKey}:todo`, { type: 'todo',\n items: input.todos.filter((todo: unknown) => record(todo) && typeof todo.content === 'string').map((todo: any) => ({ text: todo.content,\n completed: todo.status === 'completed', ...( ['pending', 'in_progress', 'completed'].includes(todo.status) ? { status: todo.status } : {}) })) }));\n }\n }\n return events;\n }\n\n private stream(value: unknown): ProviderObservation[] {\n if (!record(value)) return [];\n if (value.type === 'message_start' && record(value.message)) {\n this.activeMessage = String(value.message.id);\n if (!this.blocks.has(this.activeMessage)) this.blocks.set(this.activeMessage, []);\n return [];\n }\n if (!this.activeMessage) return [];\n const blocks = this.blocks.get(this.activeMessage)!;\n if (value.type === 'content_block_start' && record(value.content_block)) {\n const block = value.content_block;\n const current = { index: value.index, type: block.type, text: '', finalized: false };\n blocks.push(current);\n return this.delta(current, block.type === 'thinking' ? block.thinking : block.text);\n }\n if (value.type === 'content_block_delta' && record(value.delta)) {\n const current = blocks.find(({ index }) => index === value.index);\n if (!current || !['text_delta', 'thinking_delta'].includes(value.delta.type)) return [];\n return this.delta(current, value.delta.type === 'thinking_delta' ? value.delta.thinking : value.delta.text);\n }\n return [];\n }\n\n private delta(block: Block, text: unknown): ProviderObservation[] {\n if (typeof text !== 'string' || !text) return [];\n block.text += text;\n return [this.item(`stream:${this.activeMessage}:${block.index}:${block.text.length}`, block.type === 'thinking'\n ? { type: 'reasoning', text } : { type: 'assistant_message', messageId: `${this.activeMessage}:${block.index}`, text })];\n }\n\n private item(key: string, item: AgentTimelineItem): ProviderObservation {\n return this.observation(key, { type: 'timeline', provider: 'claude', item });\n }\n\n private observation(sourceKey: string, event: AgentStreamEvent): ProviderObservation {\n return { type: 'observation', sourceKey: `claude:${this.sessionId}:${sourceKey}`, occurredAt: Date.now(), delivery: this.delivery, event };\n }\n}\n\nfunction imageMetadata(value: unknown, content: unknown): unknown {\n if (!record(value) || value.type !== 'image' || !record(value.file) || typeof value.file.base64 !== 'string' || !Array.isArray(content)) return value;\n const file = value.file;\n const correlated = content.some((part: unknown) => record(part) && part.type === 'image' && record(part.source)\n && part.source.type === 'base64' && part.source.data === file.base64 && part.source.media_type === file.type);\n if (!correlated) return value;\n // Native Read repeats its image bytes in structured output; only the resource reader carries them.\n const { base64: _bytes, ...metadata } = file;\n return { ...value, file: metadata };\n}\n\nfunction toolResultJson(value: unknown): AgentToolResultJson | undefined {\n if (value === undefined) return;\n try {\n return JSON.parse(JSON.stringify(value, (_key, entry: unknown) => {\n if (typeof entry === 'number' && !Number.isFinite(entry)\n || !['string', 'number', 'boolean', 'object'].includes(typeof entry)) throw new Error('Non-JSON tool result.');\n return entry;\n })) as AgentToolResultJson;\n } catch { return; }\n}\n", "import type { AgentUsage, AgentUsageAccounting } from '@borgee/agent-provider-sdk';\nimport { record } from './projector.js';\n\n/** Query cost is cumulative; result token counts cover this turn's main loop only. */\nexport class ClaudeUsage {\n private previousCost: number | undefined = 0;\n private context: { model: string; usage: AgentUsage } | undefined;\n private readonly seenContext = new Set<string>();\n private readonly modelTotals = new Map<string, ModelCounts | undefined>();\n private readonly settledTurns = new Set<string>();\n private completeBaseline = true;\n\n startTurn(): void { this.context = undefined; }\n\n observe(message: unknown, model: string | undefined): AgentUsage | undefined {\n if (!record(message) || message.type !== 'assistant' || message.parent_tool_use_id || !record(message.context_usage)) return;\n const value = message.context_usage;\n if (!model || value.model !== model || !tokens(value.total_tokens) || !tokens(value.raw_max_tokens) || value.raw_max_tokens === 0) return;\n if (typeof message.uuid === 'string') {\n if (this.seenContext.has(message.uuid)) return;\n this.seenContext.add(message.uuid);\n }\n const usage = { contextWindowUsedTokens: value.total_tokens, contextWindowMaxTokens: value.raw_max_tokens };\n this.context = { model, usage };\n return usage;\n }\n\n result(message: unknown, model: string | undefined, identity?: { sessionId: string; turnId: string }): AgentUsage {\n if (!record(message)) return {};\n const usage: AgentUsage = {};\n if (record(message.usage)) {\n if (tokens(message.usage.input_tokens)) usage.inputTokens = message.usage.input_tokens;\n if (tokens(message.usage.output_tokens)) usage.outputTokens = message.usage.output_tokens;\n if (tokens(message.usage.cache_read_input_tokens)) usage.cachedInputTokens = message.usage.cache_read_input_tokens;\n }\n const cost = message.total_cost_usd;\n if (typeof cost !== 'number' || !Number.isFinite(cost) || cost < 0) this.previousCost = undefined;\n else if (!(message.is_error && this.previousCost !== undefined && cost < this.previousCost)) {\n if (this.previousCost !== undefined) usage.totalCostUsd = cost >= this.previousCost ? cost - this.previousCost : cost;\n this.previousCost = cost;\n }\n const nativeModel = model && record(message.modelUsage) ? message.modelUsage[model] : undefined;\n if (record(nativeModel) && tokens(nativeModel.contextWindow) && nativeModel.contextWindow > 0) usage.contextWindowMaxTokens = nativeModel.contextWindow;\n if (this.context && this.context.model === model) Object.assign(usage, this.context.usage);\n if (identity) {\n const accounting = this.accounting(message, identity);\n if (accounting.length) usage.accounting = accounting;\n }\n return usage;\n }\n\n private accounting(message: Record<string, unknown>, identity: { sessionId: string; turnId: string }): AgentUsageAccounting[] {\n const turnKey = JSON.stringify([identity.sessionId, identity.turnId]);\n if (this.settledTurns.has(turnKey)) return [];\n this.settledTurns.add(turnKey);\n if (!record(message.modelUsage)) {\n for (const key of this.modelTotals.keys()) this.modelTotals.set(key, undefined);\n this.completeBaseline = false;\n return [];\n }\n const result: AgentUsageAccounting[] = [];\n for (const key of this.modelTotals.keys()) if (!(key in message.modelUsage)) this.modelTotals.set(key, undefined);\n for (const [model, raw] of Object.entries(message.modelUsage)) {\n const next = modelCounts(raw);\n const hadModel = this.modelTotals.has(model);\n const previous = hadModel ? this.modelTotals.get(model) : this.completeBaseline ? zeroCounts() : undefined;\n if (!next || (previous && buckets.some((key) => next[key] < previous[key]))) {\n this.modelTotals.set(model, undefined);\n continue;\n }\n this.modelTotals.set(model, next);\n if (!previous || !model.trim()) continue;\n // A missing or changing native route does not invalidate proven token counts.\n const provider = next.provider && (!hadModel || previous.provider === next.provider) ? next.provider : 'unknown';\n const delta = zeroCounts();\n for (const key of buckets) delta[key] = next[key] - previous[key];\n if (buckets.every((key) => delta[key] === 0)) continue;\n result.push({ measurementId: `claude:${JSON.stringify([identity.sessionId, identity.turnId, provider, model])}`, scope: 'turn',\n provider, model, inputTokens: delta.inputTokens, outputTokens: delta.outputTokens,\n cacheReadTokens: delta.cacheReadTokens, cacheWriteTokens: delta.cacheWriteTokens });\n }\n this.completeBaseline = true;\n return result;\n }\n}\n\nfunction tokens(value: unknown): value is number { return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0; }\ninterface ModelCounts { inputTokens: number; outputTokens: number; cacheReadTokens: number; cacheWriteTokens: number; provider?: string }\nconst buckets = ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheWriteTokens'] as const;\nconst zeroCounts = (): ModelCounts => ({ inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 });\nfunction modelCounts(value: unknown): ModelCounts | undefined {\n if (!record(value) || !tokens(value.inputTokens) || !tokens(value.outputTokens)\n || !tokens(value.cacheReadInputTokens) || !tokens(value.cacheCreationInputTokens)) return;\n return { inputTokens: value.inputTokens, outputTokens: value.outputTokens, cacheReadTokens: value.cacheReadInputTokens,\n cacheWriteTokens: value.cacheCreationInputTokens, ...(typeof value.provider === 'string' && value.provider.trim() ? { provider: value.provider.trim() } : {}) };\n}\n", "import { Buffer } from 'node:buffer';\nimport { createHash } from 'node:crypto';\nimport type { AgentResourceReadResult, AgentTimelineItem, ProviderResourceReference } from '@borgee/agent-provider-sdk';\n\ninterface ImageProjection {\n item: Extract<AgentTimelineItem, { type: 'assistant_message' }>;\n resourceReferences: ProviderResourceReference[];\n}\ninterface ImageLimits { maxImageBytes: number; maxSessionImageBytes: number; maxImages: number }\ninterface ImageEntry { projection: ImageProjection; bytes: Buffer; mediaType: string }\nconst defaults: ImageLimits = { maxImageBytes: 16 * 1024 * 1024, maxSessionImageBytes: 64 * 1024 * 1024, maxImages: 1024 };\nconst record = (value: unknown): value is Record<string, unknown> => value !== null && typeof value === 'object' && !Array.isArray(value);\n\n/** Owns only embedded raster bytes explicitly carried by this session's native tool results. */\nexport class ClaudeImageRegistry {\n private readonly entries = new Map<string, ImageEntry>();\n private readonly limits: ImageLimits;\n private retainedBytes = 0;\n private active = true;\n\n constructor(private readonly sessionId: string, limits: Partial<ImageLimits> = {}) {\n this.limits = { ...defaults, ...limits };\n }\n\n project(toolUseId: string, index: number, image: unknown): ImageProjection | null {\n if (!this.active || !toolUseId || !record(image) || image.type !== 'image') return null;\n const locator = `claude-image:${createHash('sha256').update(JSON.stringify([this.sessionId, toolUseId, index])).digest('hex')}`;\n const existing = this.entries.get(locator);\n if (existing) return cloneProjection(existing.projection);\n const unavailable = (reason: string): ImageProjection => ({\n item: { type: 'assistant_message', messageId: locator, text: `Tool image unavailable: ${reason}` }, resourceReferences: [],\n });\n const source = image.source;\n if (!record(source) || source.type !== 'base64' || typeof source.data !== 'string') return unavailable('Native result has no embedded image bytes.');\n if (this.entries.size >= this.limits.maxImages) return unavailable('Session image count exceeds the configured limit.');\n const encoded = source.data;\n if (encoded.length > Math.ceil(this.limits.maxImageBytes / 3) * 4) return unavailable('Native image exceeds the configured byte limit.');\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(encoded) || encoded.length % 4 !== 0) return unavailable('Native image contains invalid base64 data.');\n const bytes = Buffer.from(encoded, 'base64');\n if (!bytes.length || bytes.length > this.limits.maxImageBytes || bytes.toString('base64') !== encoded) return unavailable('Native image contains invalid or oversized base64 data.');\n const mediaType = rasterMediaType(bytes);\n if (!mediaType || mediaType !== source.media_type) return unavailable('Native image is not a matching supported raster image.');\n if (this.retainedBytes + bytes.length > this.limits.maxSessionImageBytes) return unavailable('Session image storage exceeds the configured byte limit.');\n const projection: ImageProjection = { item: { type: 'assistant_message', messageId: locator, text: `` },\n resourceReferences: [{ locator, readLocator: locator }] };\n this.retainedBytes += bytes.length;\n this.entries.set(locator, { projection, bytes, mediaType });\n return cloneProjection(projection);\n }\n\n async readResource(locator: string): Promise<AgentResourceReadResult> {\n if (!this.active) return { status: 'unavailable', reason: 'Claude image reader is stopped.' };\n const entry = this.entries.get(locator);\n return entry ? { status: 'available', bytes: Buffer.from(entry.bytes), mediaType: entry.mediaType }\n : { status: 'unavailable', reason: 'Resource is not a native image owned by this Claude session.' };\n }\n\n stop(): void { this.active = false; this.entries.clear(); this.retainedBytes = 0; }\n}\n\nfunction cloneProjection(projection: ImageProjection): ImageProjection {\n return { item: { ...projection.item }, resourceReferences: projection.resourceReferences.map((reference) => ({ ...reference })) };\n}\n\nfunction rasterMediaType(bytes: Buffer): string | undefined {\n if (bytes.length >= 24 && bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]))\n && bytes.toString('ascii', 12, 16) === 'IHDR' && bytes.readUInt32BE(16) > 0 && bytes.readUInt32BE(20) > 0) return 'image/png';\n if (bytes.length >= 4 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) return 'image/jpeg';\n if (bytes.length >= 13 && /^GIF8[79]a$/.test(bytes.toString('ascii', 0, 6)) && bytes.readUInt16LE(6) > 0 && bytes.readUInt16LE(8) > 0) return 'image/gif';\n if (bytes.length >= 16 && bytes.toString('ascii', 0, 4) === 'RIFF' && bytes.toString('ascii', 8, 12) === 'WEBP') return 'image/webp';\n return undefined;\n}\n", "import { validateCommandDirectory, type AgentCommand } from '@borgee/agent-provider-sdk';\nimport type { Query } from '@anthropic-ai/claude-agent-sdk';\nimport { record } from './projector.js';\n\n// Management operations have separate native settings or lifecycle contracts.\nconst sessionCommands = new Set(['clear', 'reset', 'new', 'compact', 'context', 'debug', 'extra-usage', 'heapdump', 'init', 'loop', 'proactive', 'schedule', 'usage', 'cost', 'stats',\n 'resume', 'fork', 'model', 'permissions', 'login', 'logout', 'exit', 'quit', 'agents', 'mcp', 'config', 'settings']);\n\nexport async function discoverClaudeCommands(native: Pick<Query, 'reloadSkills' | 'supportedCommands'>): Promise<AgentCommand[]> {\n const refreshed: unknown = await native.reloadSkills();\n if (!record(refreshed) || !Array.isArray(refreshed.skills) || refreshed.skills.length > 4096) throw new Error('Invalid Claude skill directory.');\n const commands = new Map<string, AgentCommand>();\n for (const entry of refreshed.skills) {\n const skill = commandEntry(entry);\n if (sessionCommands.has(skill.name) || skill.aliases.some(alias => sessionCommands.has(alias))) continue;\n if (!commands.has(skill.name)) commands.set(skill.name, { id: 'claude:' + encodeURIComponent(skill.name), name: skill.name,\n description: skill.description, kind: 'skill', ...(skill.argumentHint ? { inputHint: skill.argumentHint } : {}) });\n }\n const supported: unknown = await native.supportedCommands();\n if (!Array.isArray(supported) || supported.length > 4096) throw new Error('Invalid Claude command directory.');\n for (const entry of supported) {\n const command = commandEntry(entry);\n if (command.name === 'compact') commands.set(command.name, { id: 'claude:compact', name: command.name,\n description: command.description, kind: 'command', ...(command.argumentHint ? { inputHint: command.argumentHint } : {}) });\n }\n return validateCommandDirectory([...commands.values()].sort((a, b) => a.name.localeCompare(b.name)));\n}\n\nfunction commandEntry(entry: unknown) {\n if (!record(entry) || typeof entry.name !== 'string' || !/^[^\\s/]+$/u.test(entry.name)\n || typeof entry.description !== 'string' || entry.argumentHint !== undefined && typeof entry.argumentHint !== 'string'\n || entry.aliases !== undefined && (!Array.isArray(entry.aliases) || entry.aliases.some(alias => typeof alias !== 'string' || !/^[^\\s/]+$/u.test(alias)))) {\n throw new Error('Invalid Claude command directory.');\n }\n return { name: entry.name, description: entry.description, argumentHint: entry.argumentHint as string | undefined, aliases: (entry.aliases ?? []) as string[] };\n}\n", "import type { AgentChildSession, AgentSession, AgentRuntimeInfo, ProviderObservation, ProviderStreamItem } from '@borgee/agent-provider-sdk';\nimport { Channel } from './channel.js';\nimport { ClaudeEventProjector, record } from './projector.js';\n\ninterface NativeFrame { message: Record<string, unknown>; streamMessageId?: string; blockIndex?: number }\nconst blockKey = (messageId: string, index: number): string => JSON.stringify([messageId, index]);\n\n/** A view of a root-owned native task; releasing it never controls the native process. */\nexport class ClaudeChildSession implements AgentSession {\n readonly capabilities = { history: true, sendMessage: false, steer: false, cancel: false, readResource: false,\n interactions: { question: false, toolApproval: false, planApproval: false } };\n private history: ProviderObservation[] = [];\n private projector: ClaudeEventProjector;\n private historyProjector: ClaudeEventProjector;\n private nativeMessages: Record<string, unknown>[] = [];\n private pending: NativeFrame[] = [];\n private readonly savedBlocks = new Set<string>();\n private streamMessageId?: string;\n private lastDelivered?: NativeFrame;\n private output?: Channel<ProviderStreamItem>;\n private sequence = 0;\n private model?: string;\n\n constructor(readonly descriptor: AgentChildSession, private readonly cwd?: string) {\n this.projector = new ClaudeEventProjector(descriptor.nativeSessionId);\n this.historyProjector = new ClaudeEventProjector(descriptor.nativeSessionId);\n }\n get hasHistory(): boolean { return this.history.length > 0; }\n\n accept(message: Record<string, unknown>): void {\n if (message.type === 'stream_event' && record(message.event) && message.event.type === 'message_start' && record(message.event.message)) {\n this.streamMessageId = message.event.message.id;\n }\n const index = message.type === 'stream_event' && record(message.event) && typeof message.event.index === 'number' ? message.event.index : undefined;\n if (this.streamMessageId && index !== undefined && this.savedBlocks.has(blockKey(this.streamMessageId, index))) return;\n const frame = { message, ...(message.type === 'stream_event' ? { streamMessageId: this.streamMessageId, blockIndex: index } : {}) };\n this.pending.push(frame);\n if (message.type !== 'stream_event') this.nativeMessages.push(message);\n if (typeof (message.message as { model?: unknown } | undefined)?.model === 'string') this.model = (message.message as { model: string }).model;\n this.history.push(...this.project(this.historyProjector, message));\n for (const observation of this.project(this.projector, message)) {\n this.lastDelivered = frame;\n this.output?.push(observation);\n }\n }\n\n /** Correct missing earlier rows through the existing Timeline replacement rail. */\n reconcileHistory(messages: Record<string, unknown>[]): void {\n messages = mergeNativeMessages(this.nativeMessages, messages);\n this.nativeMessages = messages;\n const uuids = new Map<string, number>();\n const blocks = new Map<string, number>();\n const blockCounts = new Map<string, number>();\n messages.forEach((message, index) => {\n if (typeof message.uuid === 'string' && uuids.has(message.uuid)) return;\n if (typeof message.uuid === 'string') uuids.set(message.uuid, index);\n if (message.type === 'assistant' && record(message.message) && typeof message.message.id === 'string' && Array.isArray(message.message.content)) {\n const id = message.message.id;\n let count = blockCounts.get(id) ?? 0;\n for (const block of message.message.content) {\n if (!record(block)) continue;\n const key = blockKey(id, count++);\n blocks.set(key, index);\n this.savedBlocks.add(key);\n }\n blockCounts.set(id, count);\n }\n });\n const position = (frame: NativeFrame): number | undefined => frame.streamMessageId && frame.blockIndex !== undefined\n ? blocks.get(blockKey(frame.streamMessageId, frame.blockIndex))\n : typeof frame.message.uuid === 'string' ? uuids.get(frame.message.uuid) : undefined;\n const anchor = this.lastDelivered ? position(this.lastDelivered) ?? Infinity : -1;\n this.historyProjector = new ClaudeEventProjector(this.descriptor.nativeSessionId);\n this.history = messages.flatMap((message) => this.project(this.historyProjector, message));\n this.pending = this.pending.filter((frame) => position(frame) === undefined);\n for (const frame of this.pending) this.history.push(...this.project(this.historyProjector, frame.message));\n const appended: ProviderObservation[] = [];\n let replace = false;\n messages.forEach((message, index) => {\n for (const observation of this.project(this.projector, message)) {\n if (index < anchor) { replace = true; continue; }\n this.lastDelivered = { message };\n appended.push(observation);\n }\n if (record(message.message) && typeof message.message.model === 'string') this.model = message.message.model;\n });\n if (replace) {\n this.projector = new ClaudeEventProjector(this.descriptor.nativeSessionId);\n this.lastDelivered = undefined;\n for (const message of messages) {\n if (this.project(this.projector, message).length) this.lastDelivered = { message };\n }\n for (const frame of this.pending) {\n if (this.project(this.projector, frame.message).length) this.lastDelivered = frame;\n }\n this.output?.push({ type: 'timeline_replacement', observations: this.history.slice() });\n } else for (const observation of appended) this.output?.push(observation);\n }\n\n private project(projector: ClaudeEventProjector, message: Record<string, unknown>): ProviderObservation[] {\n return projector.project({ ...message, session_id: this.descriptor.nativeSessionId, parent_tool_use_id: null });\n }\n\n async *observe(): AsyncIterable<ProviderStreamItem> {\n if (this.output) throw new Error('Claude child already has an observer.');\n const output = new Channel<ProviderStreamItem>();\n this.output = output;\n const history = this.history.slice();\n try {\n for (const item of history) yield { ...item, delivery: 'history' };\n yield { type: 'history_boundary' };\n yield* output;\n } finally { if (this.output === output) this.output = undefined; output.close(); }\n }\n\n async sendMessage(): Promise<void> { throw new Error('Claude child views are read-only.'); }\n async respondToInteraction(): Promise<void> { throw new Error('Claude child views are read-only; respond in the parent session.'); }\n async runtimeInfo(): Promise<AgentRuntimeInfo> {\n return { providerId: 'claude', sessionId: this.descriptor.nativeSessionId, status: this.descriptor.status, cwd: this.cwd, model: this.model ?? null };\n }\n changed(): void {\n this.output?.push({ type: 'observation', sourceKey: `claude-child:${this.descriptor.nativeSessionId}:runtime:${++this.sequence}`,\n occurredAt: Date.now(), delivery: 'live', event: { type: 'runtime_updated', provider: 'claude', runtimeInfo: {\n providerId: 'claude', sessionId: this.descriptor.nativeSessionId, status: this.descriptor.status, cwd: this.cwd, model: this.model ?? null } } });\n }\n async dispose(): Promise<void> { this.output?.close(); this.output = undefined; }\n}\n\n/** Preserve forwarded inputs omitted by the SDK chain, anchored to their next persisted message. */\nfunction mergeNativeMessages(previous: Record<string, unknown>[], saved: Record<string, unknown>[]): Record<string, unknown>[] {\n const known = new Set(saved.map((message) => message.uuid).filter((id) => typeof id === 'string'));\n const before = new Map<unknown, Record<string, unknown>[]>();\n let anchor: unknown;\n for (let index = previous.length - 1; index >= 0; index--) {\n const message = previous[index]!;\n if (typeof message.uuid !== 'string') continue;\n if (known.has(message.uuid)) { anchor = message.uuid; continue; }\n const group = before.get(anchor) ?? [];\n group.push(message); before.set(anchor, group);\n }\n const result: Record<string, unknown>[] = [];\n const seen = new Set<unknown>();\n for (const message of [...saved, undefined]) {\n for (const entry of [...(before.get(message?.uuid) ?? [])].reverse()) {\n if (!seen.has(entry.uuid)) { seen.add(entry.uuid); result.push(entry); }\n }\n if (message && (typeof message.uuid !== 'string' || !seen.has(message.uuid))) { seen.add(message.uuid); result.push(message); }\n }\n return result;\n}\n", "import type { AgentChildSession } from '@borgee/agent-provider-sdk';\nimport { ClaudeChildSession } from './child-session.js';\nimport type { ClaudeCatalog } from './catalog.js';\nimport { record } from './projector.js';\n\ninterface Child { taskId: string; view: ClaudeChildSession; background: boolean; refresh?: Promise<void> }\ninterface PendingFrames { turnId?: string; frames: Record<string, any>[]; occurrences: Set<string> }\nconst text = (value: unknown): string | undefined => typeof value === 'string' && value.trim() ? value : undefined;\nconst terminal = (status: unknown): AgentChildSession['status'] | undefined => status === 'failed' ? 'failed'\n : ['completed', 'stopped', 'killed'].includes(String(status)) ? 'closed' : undefined;\nconst contentText = (message: Record<string, any>): string | undefined => {\n const content = record(message.message) ? message.message.content : undefined;\n return typeof content === 'string' ? text(content) : Array.isArray(content)\n ? text(content.filter((part) => record(part) && part.type === 'text').map((part) => part.text).join('\\n')) : undefined;\n};\nconst occurrence = (message: Record<string, any>): string | undefined => text(message.uuid);\n\n/** Native task identity and direct-parent ownership remain local to the adapter. */\nexport class ClaudeChildren {\n private readonly children = new Map<string, Child>();\n private readonly calls = new Map<string, Child>();\n private readonly rootCalls = new Map<string, string | undefined>();\n private readonly pending = new Map<string, PendingFrames>();\n private readonly delivered = new Set<string>();\n private resolving: Promise<void> | undefined;\n private pendingRevision = 0;\n private boundary = 0;\n private closed = false;\n constructor(private readonly parentId: string, private readonly cwd: string | undefined, private readonly catalog: ClaudeCatalog,\n private readonly changed: () => void) {}\n\n descriptors(): AgentChildSession[] { return [...this.children.values()].map(({ view }) => ({ ...view.descriptor })); }\n\n private declare(taskId: string, title: string, saved = false): Child {\n const nativeSessionId = `claude-child:${encodeURIComponent(this.parentId)}:${encodeURIComponent(taskId)}`;\n const descriptor: AgentChildSession = { nativeSessionId, title, createdAt: new Date().toISOString(),\n status: saved ? 'closed' : 'running', observation: saved ? 'saved_history' : 'live' };\n const child = { taskId, view: new ClaudeChildSession(descriptor, this.cwd), background: false };\n this.children.set(taskId, child);\n return child;\n }\n\n async restore(): Promise<void> {\n for (const saved of await this.catalog.children?.(this.parentId) ?? []) {\n if (!saved.messages.length || saved.messages.some((message) => message.parent_agent_id != null)) continue;\n const first = saved.messages.find((message) => message.type === 'user');\n const content = record(first?.message) ? first.message.content : undefined;\n const title = typeof content === 'string' ? content : Array.isArray(content)\n ? content.filter((part) => record(part) && part.type === 'text').map((part) => part.text).join('\\n') : undefined;\n const child = this.declare(saved.id, title?.slice(0, 160) || 'Saved Claude subagent', true);\n child.view.reconcileHistory(saved.messages);\n }\n }\n\n consume(message: Record<string, any>, turnId?: string): void {\n if (this.closed || message.session_id && message.session_id !== this.parentId) return;\n this.observeRootCalls(message, turnId);\n if (message.parent_tool_use_id) {\n const callId = text(message.parent_tool_use_id);\n if (!callId) return;\n const child = this.calls.get(callId);\n if (child) this.forward(child, message);\n else if (this.rootCalls.has(callId)) {\n this.retain(callId, message, this.rootCalls.get(callId));\n this.resolveForeground();\n }\n return;\n }\n if (message.type !== 'system' || !text(message.task_id)) return;\n if (message.subtype === 'task_started') {\n if (message.task_type !== 'local_agent' || message.spawn_depth != null && message.spawn_depth !== 1\n || message.ambient || message.skip_transcript) return;\n const child = this.children.get(message.task_id) ?? this.declare(message.task_id, text(message.description) ?? 'Claude subagent');\n const descriptor = child.view.descriptor;\n descriptor.status = 'running'; descriptor.observation = 'live';\n descriptor.title = text(message.description) ?? descriptor.title;\n descriptor.description = text(message.prompt) ?? descriptor.description;\n descriptor.role = text(message.subagent_type) ?? descriptor.role;\n descriptor.parentTurnId ??= turnId;\n child.background = message.is_backgrounded === true;\n if (text(message.tool_use_id)) {\n descriptor.parentCallId ??= message.tool_use_id;\n this.calls.set(message.tool_use_id, child);\n this.drain(message.tool_use_id, child);\n }\n child.view.changed(); this.changed();\n return;\n }\n const child = this.children.get(message.task_id);\n if (!child) return;\n const patch = message.subtype === 'task_updated' && record(message.patch) ? message.patch : message;\n if (typeof patch.is_backgrounded === 'boolean') child.background = patch.is_backgrounded;\n const status = terminal(patch.status);\n if (!status) return;\n child.view.descriptor.status = status;\n child.view.descriptor.observation = 'saved_history';\n child.view.changed(); this.changed();\n // Background tasks may produce no forwarded transcript frames. Hydrate once native persistence settles.\n void this.refresh(child).catch(() => undefined);\n }\n\n private observeRootCalls(message: Record<string, any>, turnId?: string): void {\n if (message.type !== 'assistant' || message.parent_tool_use_id) return;\n const content = record(message.message) && Array.isArray(message.message.content) ? message.message.content : [];\n for (const part of content) {\n if (!record(part) || part.type !== 'tool_use' || !text(part.id)) continue;\n this.rootCalls.set(part.id, turnId);\n }\n }\n\n private retain(callId: string, message: Record<string, any>, turnId?: string): void {\n const frames = this.pending.get(callId) ?? { turnId, frames: [], occurrences: new Set<string>() };\n const id = occurrence(message);\n if (id && frames.occurrences.has(id)) return;\n if (id) frames.occurrences.add(id);\n frames.frames.push(message);\n this.pending.set(callId, frames);\n this.pendingRevision += 1;\n }\n\n private resolveForeground(): void {\n if (this.closed || this.resolving || !this.pending.size || !this.catalog.children) return;\n const revision = this.pendingRevision;\n const boundary = this.boundary;\n this.resolving = (async () => {\n try {\n const saved = await this.catalog.children!(this.parentId);\n if (this.closed || boundary !== this.boundary || !Array.isArray(saved)) return;\n for (const [callId, pending] of this.pending) {\n if (this.calls.has(callId)) { this.drain(callId, this.calls.get(callId)!); continue; }\n const eligible = saved.filter((candidate) => {\n if (!text(candidate?.id) || !Array.isArray(candidate.messages) || !candidate.messages.length\n || candidate.messages.some((entry) => entry.parent_agent_id != null\n || text(entry.session_id) != null && entry.session_id !== this.parentId)) return false;\n return true;\n });\n const candidates = new Map<string, (typeof eligible)[number]>();\n for (const uuid of new Set(pending.frames.map(occurrence).filter((value): value is string => value != null))) {\n const matches = eligible.flatMap((candidate) => candidate.messages\n .filter((entry) => occurrence(entry) === uuid).map(() => candidate));\n if (matches.length === 1) candidates.set(matches[0]!.id, matches[0]!);\n }\n if (candidates.size !== 1) continue;\n const candidate = [...candidates.values()][0]!;\n const child = this.children.get(candidate.id) ?? this.declare(candidate.id,\n contentText(pending.frames.find((frame) => frame.type === 'user') ?? {})?.slice(0, 160) ?? 'Claude subagent');\n child.view.descriptor.parentCallId ??= callId;\n child.view.descriptor.parentTurnId ??= pending.turnId;\n this.calls.set(callId, child);\n this.drain(callId, child);\n child.view.changed(); this.changed();\n }\n } catch {\n // Native catalog failures are recoverable; later forwarded activity can retry the same evidence.\n }\n })().finally(() => {\n this.resolving = undefined;\n if (!this.closed && revision !== this.pendingRevision && this.pending.size) this.resolveForeground();\n });\n }\n\n private drain(callId: string, child: Child): void {\n const pending = this.pending.get(callId);\n if (!pending) return;\n this.pending.delete(callId);\n this.pendingRevision += 1;\n for (const frame of pending.frames) this.forward(child, frame);\n }\n\n private forward(child: Child, message: Record<string, any>): void {\n const id = occurrence(message);\n const key = id ? `${child.taskId}:${id}` : undefined;\n if (key && this.delivered.has(key)) return;\n if (key) this.delivered.add(key);\n child.view.accept(message);\n }\n\n async open(nativeSessionId: string): Promise<ClaudeChildSession> {\n const child = [...this.children.values()].find(({ view }) => view.descriptor.nativeSessionId === nativeSessionId);\n if (!child) throw new Error('Claude session is not a direct child of the loaded parent.');\n if (child.view.descriptor.observation === 'saved_history') {\n await this.refresh(child);\n if (!child.view.hasHistory) throw new Error('Claude child history is unavailable. Reopen the child to retry.');\n }\n return child.view;\n }\n\n private refresh(child: Child): Promise<void> {\n return child.refresh ??= (async () => {\n const messages = await this.catalog.childMessages?.(this.parentId, child.taskId) ?? [];\n if (messages.some((message) => message.parent_agent_id != null)) throw new Error('Claude child ownership changed.');\n if (messages.length) child.view.reconcileHistory(messages);\n })().finally(() => { child.refresh = undefined; });\n }\n\n finishTurn(): void {\n this.boundary += 1;\n this.rootCalls.clear();\n this.pending.clear();\n this.pendingRevision += 1;\n for (const child of this.children.values()) {\n if (child.background || child.view.descriptor.observation !== 'live') continue;\n // The root result ends foreground observation. It says nothing about background tasks.\n child.view.descriptor.status = 'closed';\n child.view.descriptor.observation = 'saved_history';\n child.view.changed();\n void this.refresh(child).catch(() => undefined);\n }\n }\n\n async close(): Promise<void> {\n this.closed = true;\n this.boundary += 1;\n this.rootCalls.clear();\n this.pending.clear();\n this.pendingRevision += 1;\n for (const { view } of this.children.values()) {\n if (view.descriptor.status !== 'failed') view.descriptor.status = 'closed';\n view.descriptor.observation = 'saved_history'; view.changed();\n }\n await Promise.all([...this.children.values()].map(({ view }) => view.dispose()));\n }\n}\n", "import type { ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { once } from 'node:events';\nimport readline from 'node:readline';\nimport { connect } from 'node:net';\nimport { WebSocket } from 'ws';\n\nimport { isRecord, type JsonObject } from './native.js';\n\ntype JsonRpcId = string | number;\ntype RequestHandler = (params: unknown, requestId: JsonRpcId) => unknown | Promise<unknown>;\ntype NotificationHandler = (method: string, params: unknown) => void;\ntype TerminationHandler = (error: Error) => void;\n\ninterface PendingRequest {\n resolve(value: unknown): void;\n reject(error: Error): void;\n timer: NodeJS.Timeout;\n}\n\nexport interface CodexAppServerTransportOptions {\n requestTimeoutMs?: number;\n gracefulShutdownMs?: number;\n onDiagnostic?: (line: string) => void;\n}\n\nexport class CodexServerRequestCanceled extends Error {}\n\nexport class CodexAppServerRpcError extends Error {\n constructor(\n message: string,\n readonly code: string | number | undefined,\n readonly data: unknown,\n ) {\n super(message);\n this.name = 'CodexAppServerRpcError';\n }\n}\n\nexport class CodexAppServerTransport {\n private readonly lines: readline.Interface | undefined;\n private readonly pending = new Map<number, PendingRequest>();\n private readonly requestHandlers = new Map<string, RequestHandler>();\n private readonly requestTimeoutMs: number;\n private readonly gracefulShutdownMs: number;\n private readonly onDiagnostic: (line: string) => void;\n private notificationHandler: NotificationHandler | undefined;\n private terminationHandler: TerminationHandler | undefined;\n private terminationError: Error | undefined;\n private nextId = 1;\n private closed = false;\n private disposePromise: Promise<void> | undefined;\n private stderr = '';\n\n constructor(\n readonly child: ChildProcessWithoutNullStreams | undefined,\n options: CodexAppServerTransportOptions = {},\n private readonly socket?: WebSocket,\n ) {\n this.requestTimeoutMs = options.requestTimeoutMs ?? 90_000;\n this.gracefulShutdownMs = options.gracefulShutdownMs ?? 2_000;\n this.onDiagnostic = options.onDiagnostic ?? (() => undefined);\n if (socket) {\n socket.on('message', (data, binary) => {\n if (binary) { this.handleTermination(new Error('Codex shared app-server sent a binary JSON-RPC frame')); socket.terminate(); return; }\n void this.handleLine(data.toString());\n });\n socket.once('error', error => this.handleTermination(error));\n socket.once('close', () => this.handleTermination(new Error('Codex shared app-server connection closed. Restore the daemon and restart the Host connection.')));\n return;\n }\n if (!child) throw new Error('Codex transport requires a process or a shared socket.');\n this.lines = readline.createInterface({ input: child.stdout });\n this.lines.on('line', (line) => void this.handleLine(line));\n child.stderr.on('data', (chunk) => {\n this.stderr = `${this.stderr}${String(chunk)}`.slice(-8192);\n });\n child.once('error', (error) => this.handleTermination(error));\n child.once('exit', (code, signal) => {\n const suffix = this.stderr.trim() ? `\\n${this.stderr.trim()}` : '';\n this.handleTermination(new Error(\n `Codex app-server exited with code ${code ?? 'null'} and signal ${signal ?? 'null'}${suffix}`,\n ));\n });\n }\n\n static async connectShared(socketPath: string, options: CodexAppServerTransportOptions = {}): Promise<CodexAppServerTransport> {\n const socket = new WebSocket('ws://localhost/', {\n createConnection: () => connect(socketPath),\n handshakeTimeout: options.requestTimeoutMs ?? 5000,\n maxPayload: 64 * 1024 * 1024, perMessageDeflate: false, followRedirects: false,\n });\n const transport = new CodexAppServerTransport(undefined, options, socket);\n try { await once(socket, 'open'); return transport; }\n catch (error) {\n socket.terminate();\n throw new Error('Could not connect to the shared Codex app-server. Start the native daemon or check its local socket path.', { cause: error });\n }\n }\n\n setNotificationHandler(handler: NotificationHandler): void {\n this.notificationHandler = handler;\n }\n\n setTerminationHandler(handler: TerminationHandler): void {\n if (this.terminationError) {\n const error = this.terminationError;\n this.terminationError = undefined;\n handler(error);\n return;\n }\n this.terminationHandler = handler;\n }\n\n setRequestHandler(method: string, handler: RequestHandler): void {\n this.requestHandlers.set(method, handler);\n }\n\n request(method: string, params?: unknown, timeoutMs = this.requestTimeoutMs): Promise<unknown> {\n if (this.closed) return Promise.reject(new Error('Codex app-server transport is closed'));\n const id = this.nextId++;\n const result = new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n this.pending.delete(id);\n reject(new Error(`Codex app-server request timed out for ${method}`));\n }, timeoutMs);\n this.pending.set(id, { resolve, reject, timer });\n });\n try {\n if (this.socket) this.write({ id, method, params });\n else this.child!.stdin.write(`${JSON.stringify({ id, method, params })}\\n`);\n } catch (error) {\n const pending = this.pending.get(id);\n if (pending) {\n clearTimeout(pending.timer);\n this.pending.delete(id);\n pending.reject(error instanceof Error ? error : new Error(String(error)));\n }\n }\n return result;\n }\n\n notify(method: string, params?: unknown): void {\n if (this.closed) return;\n if (this.socket) this.write({ method, params });\n else this.child!.stdin.write(`${JSON.stringify({ method, params })}\\n`);\n }\n\n dispose(): Promise<void> {\n if (this.disposePromise) return this.disposePromise;\n this.disposePromise = this.disposeOnce();\n return this.disposePromise;\n }\n\n private async disposeOnce(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n this.notificationHandler = undefined;\n this.terminationHandler = undefined;\n this.rejectPending(new Error('Codex app-server transport is closed'));\n this.lines?.close();\n if (this.socket) {\n if (this.socket.readyState === WebSocket.CLOSED) return;\n const exited = once(this.socket, 'close');\n this.socket.close();\n const timer = setTimeout(() => this.socket?.terminate(), this.gracefulShutdownMs);\n try { await exited; } finally { clearTimeout(timer); }\n return;\n }\n if (!this.child) return;\n this.child.stdin.end();\n if (this.child.exitCode !== null || this.child.signalCode !== null) return;\n\n const exited = once(this.child, 'exit').then(() => undefined);\n this.child.kill('SIGTERM');\n let timer: NodeJS.Timeout | undefined;\n const timeout = new Promise<void>((resolve) => {\n timer = setTimeout(resolve, this.gracefulShutdownMs);\n });\n await Promise.race([exited, timeout]);\n if (timer) clearTimeout(timer);\n if (this.child.exitCode === null && this.child.signalCode === null) {\n this.child.kill('SIGKILL');\n }\n }\n\n private handleTermination(error: Error): void {\n if (this.closed) return;\n this.closed = true;\n this.lines?.close();\n this.socket?.terminate();\n this.notificationHandler = undefined;\n this.rejectPending(error);\n const handler = this.terminationHandler;\n this.terminationHandler = undefined;\n if (handler) handler(error);\n else this.terminationError = error;\n }\n\n private rejectPending(error: Error): void {\n for (const pending of this.pending.values()) {\n clearTimeout(pending.timer);\n pending.reject(error);\n }\n this.pending.clear();\n }\n\n private async handleLine(line: string): Promise<void> {\n if (!line.trim()) return;\n let message: unknown;\n try {\n message = JSON.parse(line);\n } catch {\n this.onDiagnostic(line);\n return;\n }\n if (!isRecord(message)) return;\n if (isJsonRpcRequest(message)) {\n await this.handleServerRequest(message);\n return;\n }\n if (isJsonRpcResponse(message)) {\n this.handleResponse(message);\n return;\n }\n if (typeof message.method === 'string') {\n // Native RPC migration guidance belongs to the connection, not a Session timeline.\n if (message.method === 'deprecationNotice' && isRecord(message.params)\n && typeof message.params.summary === 'string'\n && (message.params.details === null || typeof message.params.details === 'string')) {\n this.onDiagnostic(line);\n return;\n }\n this.notificationHandler?.(message.method, message.params);\n }\n }\n\n private handleResponse(message: JsonObject): void {\n const id = message.id;\n if (typeof id !== 'number') return;\n const pending = this.pending.get(id);\n if (!pending) return;\n this.pending.delete(id);\n clearTimeout(pending.timer);\n if (isRecord(message.error)) {\n pending.reject(new CodexAppServerRpcError(\n typeof message.error.message === 'string' ? message.error.message : 'Unknown RPC error',\n typeof message.error.code === 'string' || typeof message.error.code === 'number'\n ? message.error.code : undefined,\n message.error.data,\n ));\n return;\n }\n pending.resolve(message.result);\n }\n\n private async handleServerRequest(message: JsonObject): Promise<void> {\n const id = message.id as JsonRpcId;\n const method = message.method as string;\n const handler = this.requestHandlers.get(method);\n if (!handler) {\n this.write({ id, error: { code: -32601, message: `Unsupported Codex server request: ${method}` } });\n return;\n }\n try {\n this.write({ id, result: await handler(message.params, id) });\n } catch (error) {\n if (error instanceof CodexServerRequestCanceled) return;\n this.write({ id, error: {\n code: -32603,\n message: error instanceof Error ? error.message : String(error),\n } });\n }\n }\n\n private write(message: JsonObject): void {\n if (this.closed) return;\n if (this.socket) {\n this.socket.send(JSON.stringify(message), error => { if (error) this.handleTermination(error); });\n } else if (this.child?.stdin.writable) this.child.stdin.write(`${JSON.stringify(message)}\\n`);\n }\n}\n\nfunction isJsonRpcRequest(message: JsonObject): boolean {\n return (typeof message.id === 'number' || typeof message.id === 'string')\n && typeof message.method === 'string';\n}\n\nfunction isJsonRpcResponse(message: JsonObject): boolean {\n return typeof message.id === 'number'\n && ('result' in message || 'error' in message);\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport extension from './lib/extension.js';\nimport PerMessageDeflate from './lib/permessage-deflate.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport subprotocol from './lib/subprotocol.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport {\n createWebSocketStream,\n extension,\n PerMessageDeflate,\n Receiver,\n Sender,\n subprotocol,\n WebSocket,\n WebSocketServer\n};\n\nexport default WebSocket;\n", "import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { statSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nexport type JsonObject = Record<string, unknown>;\n\nexport function isRecord(value: unknown): value is JsonObject {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function readString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nexport function readNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nexport function readThreadId(params: unknown): string | undefined {\n if (!isRecord(params)) return undefined;\n return readString(params.threadId);\n}\n\nexport function readTurnId(params: unknown): string | undefined {\n if (!isRecord(params)) return undefined;\n const direct = readString(params.turnId);\n if (direct) return direct;\n return isRecord(params.turn) ? readString(params.turn.id) : undefined;\n}\n\nexport function readItem(params: unknown): JsonObject | undefined {\n if (!isRecord(params) || !isRecord(params.item)) return undefined;\n return params.item;\n}\n\nexport function readItemId(params: unknown): string | undefined {\n if (!isRecord(params)) return undefined;\n return readString(params.itemId) ?? (isRecord(params.item) ? readString(params.item.id) : undefined);\n}\n\nexport function readErrorMessage(value: unknown): string | undefined {\n if (typeof value === 'string') return value;\n if (!isRecord(value)) return undefined;\n return readString(value.message) ?? readString(value.error);\n}\n\nexport function normalizeStatus(value: unknown, lifecycle: 'started' | 'completed'):\n 'running' | 'completed' | 'failed' | 'canceled' {\n if (lifecycle === 'started' || value === 'inProgress' || value === 'running') return 'running';\n if (value === 'failed') return 'failed';\n if (value === 'declined' || value === 'canceled' || value === 'cancelled' || value === 'interrupted') {\n return 'canceled';\n }\n return 'completed';\n}\n\nexport function stringifyJson(value: unknown): string {\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nexport interface SpawnCodexAppServerOptions {\n executable?: string;\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n}\n\nexport function spawnCodexAppServer(\n options: SpawnCodexAppServerOptions = {},\n): ChildProcessWithoutNullStreams {\n if (options.cwd !== undefined) {\n const cwd = resolve(options.cwd);\n try {\n if (!statSync(cwd).isDirectory()) throw new Error(`Codex working directory is not a directory: ${cwd}`);\n } catch (error) {\n if (isRecord(error) && error.code === 'ENOENT') {\n throw new Error(`Codex working directory does not exist: ${cwd}. Restore it or select an existing workspace before starting the session.`, { cause: error });\n }\n if (isRecord(error) && error.code === 'ENOTDIR') throw new Error(`Codex working directory is not a directory: ${cwd}`, { cause: error });\n throw error;\n }\n }\n return spawn(options.executable ?? 'codex', ['app-server'], {\n cwd: options.cwd,\n env: { ...process.env, ...options.env },\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n}\n", "import { randomUUID } from 'node:crypto';\n\nimport { codexToolResult } from './tool-result.js';\nimport { CodexImageRegistry } from './images.js';\nimport { mapCodexAsyncQuestions } from './questions.js';\nimport type {\n AgentStreamEvent,\n AgentTaskItem,\n AgentTimelineItem,\n AgentToolCallTimelineItem,\n ProviderObservation,\n} from '@borgee/agent-provider-sdk';\n\nimport {\n isRecord,\n normalizeStatus,\n readErrorMessage,\n readItem,\n readItemId,\n readNumber,\n readString,\n readThreadId,\n readTurnId,\n stringifyJson,\n type JsonObject,\n} from './native.js';\n\nconst PROVIDER_ID = 'codex';\nconst MAX_UNSUPPORTED_MESSAGE_LENGTH = 640;\nconst NON_TIMELINE_NOTIFICATION_METHODS = new Set([\n 'account/rateLimits/updated',\n 'rawResponseItem/completed',\n 'rawResponse/completed',\n 'thread/goal/cleared',\n 'thread/goal/updated',\n 'thread/queue/changed',\n 'skills/changed',\n 'item/mcpToolCall/progress',\n 'item/commandExecution/outputDelta',\n 'item/commandExecution/terminalInteraction',\n 'item/fileChange/patchUpdated',\n 'item/reasoning/summaryPartAdded',\n 'item/reasoning/textDelta',\n 'remoteControl/status/changed',\n 'serverRequest/resolved',\n 'thread/settings/updated',\n 'thread/name/updated',\n 'thread/status/changed',\n 'turn/diff/updated',\n 'warning',\n]);\n\nexport interface CodexEventProjectorOptions {\n now?: () => number;\n delivery?: 'history' | 'live';\n images?: CodexImageRegistry;\n cwd?: string;\n}\n\nexport class CodexEventProjector {\n private readonly assistantText = new Map<string, string>();\n private readonly reasoningText = new Map<string, string>();\n private readonly completedTextItems = new Set<string>();\n private readonly emittedUserItems = new Set<string>();\n private readonly now: () => number;\n private readonly delivery: 'history' | 'live';\n private readonly images: CodexImageRegistry;\n private readonly cwd: string | undefined;\n\n constructor(\n private readonly threadId: string,\n options: CodexEventProjectorOptions = {},\n ) {\n this.now = options.now ?? Date.now;\n this.delivery = options.delivery ?? 'live';\n this.images = options.images ?? new CodexImageRegistry(threadId);\n this.cwd = options.cwd;\n }\n\n snapshotText(): ReadonlyMap<string, string> {\n return new Map([...this.assistantText, ...this.reasoningText]);\n }\n\n seedHistoryItem(item: unknown): void {\n if (!isRecord(item)) return;\n const itemId = readString(item.id);\n if (!itemId) return;\n if (item.type === 'agentMessage' || item.type === 'plan') {\n this.assistantText.set(itemId, readString(item.text) ?? '');\n } else if (item.type === 'reasoning') {\n this.reasoningText.set(itemId, this.readReasoningText(item));\n }\n }\n\n projectNotification(method: string, params: unknown): ProviderObservation | null {\n if (method.startsWith('codex/event/')) return null;\n if (NON_TIMELINE_NOTIFICATION_METHODS.has(method)) return null;\n if (method === 'thread/started') {\n if (!isRecord(params) || !isRecord(params.thread) || !readString(params.thread.id)) {\n return this.invalidNotification(method, params);\n }\n const startedThreadId = readString(params.thread.id);\n if (startedThreadId !== this.threadId) return null;\n return this.observation(`thread:${this.threadId}:started`, {\n type: 'thread_started', provider: PROVIDER_ID, sessionId: this.threadId,\n });\n }\n const nativeThreadId = readThreadId(params);\n if (nativeThreadId && nativeThreadId !== this.threadId) return null;\n const turnId = readTurnId(params);\n\n if (method === 'mcpServer/startupStatus/updated' || method === 'hook/started' || method === 'hook/completed') {\n if (!isRecord(params)) return this.invalidNotification(method, params, turnId);\n const status = method === 'mcpServer/startupStatus/updated' ? params.status : isRecord(params.run) ? params.run.status : undefined;\n if (typeof status !== 'string') return this.invalidNotification(method, params, turnId);\n if (status !== 'failed') return null;\n const name = readString(params.name) ?? (isRecord(params.run) ? readString(params.run.eventName) : undefined) ?? method;\n const detail = readErrorMessage(params.error) ?? readString(params.failureReason) ?? (isRecord(params.run) ? readString(params.run.statusMessage) : undefined);\n return this.observation(`runtime:${method}:${name}:failed`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: { type: 'error', message: `${name} failed${detail ? `: ${detail}` : '.'}` },\n });\n }\n\n if (\n method === 'item/agentMessage/delta'\n || method === 'item/reasoning/summaryTextDelta'\n || method === 'item/plan/delta'\n ) {\n return this.projectTextDelta(method, params, turnId)\n ?? this.invalidNotification(method, params, turnId);\n }\n if (method === 'item/started' || method === 'item/completed') {\n if (!readItem(params) || !readItemId(params)) return this.invalidNotification(method, params, turnId);\n return this.projectItemLifecycle(method, params, turnId);\n }\n if (method === 'turn/started') {\n const id = turnId;\n const nativeStart = isRecord(params) && isRecord(params.turn) ? readNumber(params.turn.startedAt) : undefined;\n const startedAt = nativeStart !== undefined && nativeStart >= 0 && nativeStart <= 8_640_000_000_000\n ? nativeStart * 1_000 : undefined;\n return id ? this.observation(`turn:${id}:started`, {\n type: 'turn_started', provider: PROVIDER_ID, turnId: id,\n }, startedAt) : this.invalidNotification(method, params, turnId);\n }\n if (method === 'turn/completed') {\n return this.projectTurnCompleted(params, turnId)\n ?? this.invalidNotification(method, params, turnId);\n }\n if (method === 'turn/plan/updated') {\n return this.projectPlan(params, turnId)\n ?? this.invalidNotification(method, params, turnId);\n }\n if (method === 'thread/tokenUsage/updated') {\n return this.projectUsage(params, turnId)\n ?? this.invalidNotification(method, params, turnId);\n }\n if (method === 'thread/compacted') {\n return this.observation(`thread:${this.threadId}:compacted:${turnId ?? 'unknown'}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: { type: 'compaction', status: 'completed' },\n });\n }\n if (method === 'error' && isRecord(params)) {\n const message = readErrorMessage(params.error) ?? readString(params.message);\n if (!message) return this.invalidNotification(method, params, turnId);\n return this.observation(`error:${turnId ?? this.threadId}:${message}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: { type: 'error', message },\n });\n }\n return this.observation(\n `unsupported:notification:${method}:${nativeFingerprint(params)}`,\n {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: { type: 'error', message: unsupportedMessage(`Unsupported Codex notification ${method}`, params) },\n },\n );\n }\n\n projectHistoryItem(item: unknown, turnId?: string, occurredAt?: number): ProviderObservation | null {\n if (!isRecord(item)) return null;\n const id = readString(item.id);\n if (id && (item.type === 'imageView' || item.type === 'imageGeneration')) {\n return this.projectImage(item, id, turnId, occurredAt);\n }\n const timelineItem = this.mapItem(item, 'completed');\n if (!timelineItem || !id) return null;\n return this.observation(`item:${id}:completed`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: timelineItem,\n }, occurredAt);\n }\n\n private projectTextDelta(\n method: string,\n params: unknown,\n turnId: string | undefined,\n ): ProviderObservation | null {\n if (!isRecord(params)) return null;\n const itemId = readString(params.itemId);\n const delta = readString(params.delta);\n if (!itemId || delta === undefined) return null;\n const reasoning = method === 'item/reasoning/summaryTextDelta';\n const values = reasoning ? this.reasoningText : this.assistantText;\n // Native deltas have no occurrence ID or offset; equal payloads still append.\n // A fresh identity also avoids collisions when a history refresh rebuilds the projector.\n const sourceKey = `item:${itemId}:${reasoning ? 'reasoning' : 'assistant'}:delta:${randomUUID()}`;\n const prior = values.get(itemId) ?? '';\n values.set(itemId, prior + delta);\n const item: AgentTimelineItem = reasoning\n ? { type: 'reasoning', text: delta }\n : { type: 'assistant_message', messageId: itemId, text: delta };\n return this.observation(sourceKey, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item,\n });\n }\n\n private projectItemLifecycle(\n method: 'item/started' | 'item/completed',\n params: unknown,\n turnId: string | undefined,\n ): ProviderObservation | null {\n const item = readItem(params);\n const itemId = readItemId(params);\n if (!item || !itemId) return null;\n const lifecycle = method === 'item/started' ? 'started' : 'completed';\n const itemType = readString(item.type);\n if (itemType === 'imageView' || itemType === 'imageGeneration') {\n return lifecycle === 'completed' ? this.projectImage(item, itemId, turnId) : null;\n }\n if (itemType === 'agentMessage' || itemType === 'reasoning' || itemType === 'plan') {\n if (lifecycle === 'started') return null;\n return this.projectCompletedTextItem(item, itemId, turnId);\n }\n if (itemType === 'userMessage') {\n if (this.emittedUserItems.has(itemId)) return null;\n const mapped = this.mapItem(item, lifecycle);\n if (!mapped) return null;\n this.emittedUserItems.add(itemId);\n return this.observation(`item:${itemId}:user`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: mapped,\n });\n }\n const mapped = this.mapItem(item, lifecycle);\n if (!mapped) return null;\n return this.observation(`item:${itemId}:${lifecycle}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: mapped,\n });\n }\n\n private projectImage(item: JsonObject, itemId: string, turnId?: string, occurredAt?: number): ProviderObservation | null {\n const projected = this.images.project(item, this.cwd);\n if (!projected) return null;\n return {\n ...this.observation(`item:${itemId}:completed`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: projected.item,\n }, occurredAt),\n resourceReferences: projected.resourceReferences,\n };\n }\n\n private projectCompletedTextItem(\n item: JsonObject,\n itemId: string,\n turnId: string | undefined,\n ): ProviderObservation | null {\n const completionKey = JSON.stringify([turnId, itemId, item.type]);\n if (this.completedTextItems.has(completionKey)) return null;\n // Completion is terminal even when it emits no text or emits a correction.\n this.completedTextItems.add(completionKey);\n if (item.type === 'agentMessage' && item.questions != null) {\n this.assistantText.delete(itemId);\n return this.observation(`item:${itemId}:completed`, { type: 'timeline', provider: PROVIDER_ID, turnId, item: this.mapQuestionnaire(item, itemId) });\n }\n const reasoning = item.type === 'reasoning';\n const finalText = reasoning\n ? this.readReasoningText(item)\n : readString(item.text) ?? '';\n const streamedText = reasoning ? this.reasoningText : this.assistantText;\n const streamed = streamedText.get(itemId);\n if (streamed !== undefined) {\n streamedText.delete(itemId);\n if (finalText === streamed) {\n return null;\n }\n if (!finalText.startsWith(streamed)) {\n const fingerprint = nativeFingerprint(item);\n if (!reasoning && finalText) {\n return this.observation(`item:${itemId}:completed-correction:${fingerprint}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: {\n type: 'assistant_message',\n messageId: `${itemId}:correction:${fingerprint}`,\n text: finalText,\n },\n });\n }\n return this.observation(`item:${itemId}:completed-correction:${nativeFingerprint(item)}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: {\n type: 'error',\n message: unsupportedMessage(`Codex final text corrected streamed item ${itemId}`, {\n streamed,\n final: finalText,\n }),\n },\n });\n }\n const suffix = finalText.slice(streamed.length);\n if (!suffix) return null;\n const timelineItem: AgentTimelineItem = reasoning\n ? { type: 'reasoning', text: suffix }\n : { type: 'assistant_message', messageId: itemId, text: suffix };\n return this.observation(`item:${itemId}:completed-suffix`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: timelineItem,\n });\n }\n const timelineItem: AgentTimelineItem = reasoning\n ? { type: 'reasoning', text: finalText }\n : { type: 'assistant_message', messageId: itemId, text: finalText };\n if (!finalText) return null;\n return this.observation(`item:${itemId}:completed`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: timelineItem,\n });\n }\n\n private projectTurnCompleted(\n params: unknown,\n turnId: string | undefined,\n ): ProviderObservation | null {\n if (!isRecord(params) || !isRecord(params.turn)) return null;\n const id = readString(params.turn.id) ?? turnId;\n if (!id) return null;\n const status = readString(params.turn.status);\n if (status === 'failed') {\n return this.observation(`turn:${id}:failed`, {\n type: 'turn_failed', provider: PROVIDER_ID, turnId: id,\n error: readErrorMessage(params.turn.error) ?? 'Codex turn failed',\n });\n }\n if (status === 'interrupted') {\n return this.observation(`turn:${id}:canceled`, {\n type: 'turn_canceled', provider: PROVIDER_ID, turnId: id, reason: 'interrupted',\n });\n }\n return this.observation(`turn:${id}:completed`, {\n type: 'turn_completed', provider: PROVIDER_ID, turnId: id,\n });\n }\n\n private projectPlan(\n params: unknown,\n turnId: string | undefined,\n ): ProviderObservation | null {\n if (!isRecord(params) || !Array.isArray(params.plan)) return null;\n const items = params.plan.flatMap((value): AgentTaskItem[] => {\n if (!isRecord(value)) return [];\n const text = readString(value.step);\n if (!text) return [];\n const nativeStatus = readString(value.status);\n const status = nativeStatus === 'inProgress'\n ? 'in_progress'\n : nativeStatus === 'completed' ? 'completed' : 'pending';\n return [{ text, completed: status === 'completed', status }];\n });\n return this.observation(`turn:${turnId ?? 'unknown'}:plan:${stringifyJson(items)}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId, item: { type: 'todo', items },\n });\n }\n\n private projectUsage(\n params: unknown,\n turnId: string | undefined,\n ): ProviderObservation | null {\n if (!isRecord(params) || !isRecord(params.tokenUsage) || !isRecord(params.tokenUsage.total)) {\n return null;\n }\n const total = params.tokenUsage.total;\n const usage = {\n inputTokens: readNumber(total.inputTokens),\n cachedInputTokens: readNumber(total.cachedInputTokens),\n outputTokens: readNumber(total.outputTokens),\n contextWindowMaxTokens: readNumber(params.tokenUsage.modelContextWindow),\n contextWindowUsedTokens: readNumber(total.totalTokens),\n };\n return this.observation(`turn:${turnId ?? 'unknown'}:usage:${stringifyJson(usage)}`, {\n type: 'usage_updated', provider: PROVIDER_ID, turnId, usage,\n });\n }\n\n private mapItem(item: JsonObject, lifecycle: 'started' | 'completed'): AgentTimelineItem | null {\n const type = readString(item.type);\n const id = readString(item.id);\n if (!type || !id) return null;\n if (type === 'userMessage') {\n const text = this.readUserMessageText(item);\n return text ? {\n type: 'user_message', text, messageId: id,\n ...(readString(item.clientId) ? { clientMessageId: readString(item.clientId) } : {}),\n } : null;\n }\n if (type === 'agentMessage') {\n if (item.questions != null) return this.mapQuestionnaire(item, id!);\n const text = readString(item.text);\n return text ? { type: 'assistant_message', text, messageId: id } : null;\n }\n if (type === 'reasoning') {\n const text = this.readReasoningText(item);\n return text ? { type: 'reasoning', text } : null;\n }\n if (type === 'contextCompaction') {\n return { type: 'compaction', status: lifecycle === 'started' ? 'loading' : 'completed' };\n }\n if (type === 'commandExecution') return this.mapCommand(item, lifecycle);\n if (type === 'fileChange') return this.mapFileChange(item, lifecycle);\n if (type === 'mcpToolCall') return this.mapMcpTool(item, lifecycle);\n if (type === 'webSearch') return this.mapWebSearch(item, lifecycle);\n if (type === 'collabAgentToolCall' || type === 'subAgentActivity') return this.mapAgentActivity(item, lifecycle);\n if (type === 'plan') {\n const text = readString(item.text);\n return text ? { type: 'assistant_message', text, messageId: id } : null;\n }\n return {\n type: 'error',\n message: unsupportedMessage(`Unsupported Codex item type ${type}`, item),\n };\n }\n\n private mapQuestionnaire(item: JsonObject, messageId: string): AgentTimelineItem {\n try {\n if (item.delivery !== 'async' || typeof item.text !== 'string') throw new Error('Codex asynchronous questionnaire has invalid delivery or text.');\n return { type: 'questionnaire', messageId, text: item.text, questions: mapCodexAsyncQuestions(item.questions) };\n } catch (error) {\n return { type: 'error', message: error instanceof Error ? error.message : 'Codex asynchronous questionnaire is unsupported.' };\n }\n }\n\n private mapCommand(item: JsonObject, lifecycle: 'started' | 'completed'): AgentToolCallTimelineItem {\n const callId = readString(item.id) ?? 'command';\n const status = normalizeStatus(item.status, lifecycle);\n const command = readString(item.command);\n const cwd = readString(item.cwd);\n return this.toolItem(callId, 'command', status,\n command\n ? { type: 'shell', command, ...(cwd ? { cwd } : {}) }\n : { type: 'other', description: 'Run a command' },\n readErrorMessage(item.error) ?? (status === 'failed' ? readString(item.aggregatedOutput) : undefined), codexToolResult(item));\n }\n\n private mapFileChange(item: JsonObject, lifecycle: 'started' | 'completed'): AgentToolCallTimelineItem {\n const callId = readString(item.id) ?? 'file-change';\n const status = normalizeStatus(item.status, lifecycle);\n const change = Array.isArray(item.changes) ? item.changes.find(isRecord) : undefined;\n const filePath = change ? readString(change.path) : undefined;\n return this.toolItem(callId, 'file_change', status,\n filePath ? { type: 'edit', filePath } : { type: 'other', description: 'File changes' },\n readErrorMessage(item.error), lifecycle === 'completed' ? codexToolResult(item) : undefined);\n }\n\n private mapMcpTool(item: JsonObject, lifecycle: 'started' | 'completed'): AgentToolCallTimelineItem {\n const callId = readString(item.id) ?? 'mcp-tool';\n const server = readString(item.server) ?? 'mcp';\n const tool = readString(item.tool) ?? 'tool';\n const status = normalizeStatus(item.status, lifecycle);\n return this.toolItem(callId, `${server}.${tool}`, status, {\n type: 'other', description: `MCP tool ${server}.${tool}`,\n }, readErrorMessage(item.error), codexToolResult(item));\n }\n\n private mapAgentActivity(item: JsonObject, lifecycle: 'started' | 'completed'): AgentToolCallTimelineItem {\n const activity = item.type === 'subAgentActivity';\n const name = activity ? 'agent.activity' : `agent.${readString(item.tool) || 'collaboration'}`;\n const description = activity\n ? `Agent ${readString(item.agentPath) || readString(item.agentThreadId) || 'activity'}: ${readString(item.kind) || 'activity'}`\n : readString(item.prompt) || `Agent ${readString(item.tool) || 'collaboration'}`;\n return this.toolItem(readString(item.id)!, name, normalizeStatus(item.status, lifecycle),\n { type: 'other', description }, readErrorMessage(item.error),\n lifecycle === 'completed' ? codexToolResult(item) : undefined);\n }\n\n private mapWebSearch(item: JsonObject, lifecycle: 'started' | 'completed'): AgentToolCallTimelineItem {\n const callId = readString(item.id) ?? 'web-search';\n const query = readString(item.query);\n return this.toolItem(callId, 'web_search', normalizeStatus(item.status, lifecycle),\n query ? { type: 'search', query } : { type: 'other', description: 'Web search' }, undefined,\n lifecycle === 'completed' ? codexToolResult(item) : undefined);\n }\n\n private toolItem(\n callId: string,\n name: string,\n status: 'running' | 'completed' | 'failed' | 'canceled',\n detail: AgentToolCallTimelineItem['detail'],\n error?: string,\n result?: import('@borgee/agent-provider-sdk').AgentToolResult,\n ): AgentToolCallTimelineItem {\n if (status === 'failed') return { type: 'tool_call', callId, name, detail, status, error: error ?? 'Tool failed', ...(result ? { result } : {}) };\n return { type: 'tool_call', callId, name, detail, status, error: null, ...(result ? { result } : {}) };\n }\n\n private readUserMessageText(item: JsonObject): string {\n if (!Array.isArray(item.content)) return '';\n return item.content.flatMap((entry) => {\n if (!isRecord(entry) || entry.type !== 'text') return [];\n const text = readString(entry.text);\n return text ? [text] : [];\n }).join('');\n }\n\n private readReasoningText(item: JsonObject): string {\n const summary = Array.isArray(item.summary) ? item.summary.filter((value): value is string => typeof value === 'string') : [];\n if (summary.length > 0) return summary.join('\\n\\n');\n return Array.isArray(item.content)\n ? item.content.filter((value): value is string => typeof value === 'string').join('\\n\\n')\n : '';\n }\n\n private observation(\n sourceKey: string,\n event: AgentStreamEvent,\n occurredAt = this.now(),\n ): ProviderObservation {\n return {\n type: 'observation', sourceKey, occurredAt, delivery: this.delivery,\n event,\n };\n }\n\n private invalidNotification(\n method: string,\n params: unknown,\n turnId?: string,\n ): ProviderObservation {\n return this.observation(`invalid:notification:${method}:${nativeFingerprint(params)}`, {\n type: 'timeline', provider: PROVIDER_ID, turnId,\n item: { type: 'error', message: unsupportedMessage(`Invalid Codex notification ${method}`, params) },\n });\n }\n}\n\nfunction unsupportedMessage(prefix: string, details: unknown): string {\n const message = `${prefix}: ${stringifyJson(details)}`;\n if (message.length <= MAX_UNSUPPORTED_MESSAGE_LENGTH) return message;\n return `${message.slice(0, MAX_UNSUPPORTED_MESSAGE_LENGTH - 1)}\u2026`;\n}\n\nfunction nativeFingerprint(value: unknown): string {\n const text = stringifyJson(value);\n let hash = 2_166_136_261;\n for (let index = 0; index < text.length; index += 1) {\n hash ^= text.charCodeAt(index);\n hash = Math.imul(hash, 16_777_619);\n }\n return (hash >>> 0).toString(16).padStart(8, '0');\n}\n", "import { boundToolResult, fileChangesResult, type AgentFileChange, type AgentToolResult, type AgentToolResultContent, type AgentToolResultJson } from '@borgee/agent-provider-sdk';\nimport { isRecord, type JsonObject } from './native.js';\n\nexport function codexToolResult(item: JsonObject): AgentToolResult | undefined {\n if (item.type === 'commandExecution') {\n const content: AgentToolResultContent[] = typeof item.aggregatedOutput === 'string'\n ? [{ type: 'text', stream: 'combined', text: item.aggregatedOutput }] : [];\n const exitCode = typeof item.exitCode === 'number' && Number.isSafeInteger(item.exitCode) ? item.exitCode : undefined;\n const durationMs = typeof item.durationMs === 'number' && Number.isFinite(item.durationMs) && item.durationMs >= 0 ? item.durationMs : undefined;\n if (!content.length && exitCode === undefined && durationMs === undefined) return undefined;\n return boundToolResult({ content, ...(exitCode === undefined ? {} : { exitCode }), ...(durationMs === undefined ? {} : { durationMs }) });\n }\n if (item.type === 'fileChange' && Array.isArray(item.changes)) {\n const changes = item.changes.map(normalizeFileChange);\n if (changes.every((change): change is AgentFileChange => change !== undefined)) return fileChangesResult(changes);\n return boundToolResult({ content: [{ type: 'json', value: item.changes as AgentToolResultJson }] });\n }\n if (item.type === 'mcpToolCall') {\n const result = item.result;\n const content: AgentToolResultContent[] = [];\n if (isRecord(result)) {\n if (Array.isArray(result.content)) content.push(...result.content.map(contentBlock));\n if (result.structuredContent !== undefined) content.push({ type: 'json', value: result.structuredContent as AgentToolResultJson });\n if (!content.length) content.push({ type: 'json', value: result as AgentToolResultJson });\n } else if (result !== undefined && result !== null) content.push(contentBlock(result));\n if (item.error !== undefined && item.error !== null) content.push({ type: 'json', value: item.error as AgentToolResultJson });\n return content.length ? boundToolResult({ content }) : undefined;\n }\n if (item.type === 'collabAgentToolCall' || item.type === 'subAgentActivity') {\n const names = item.type === 'collabAgentToolCall' ? ['receiverThreadIds', 'agentsStates'] : ['kind', 'agentThreadId', 'agentPath'];\n const value = Object.fromEntries(names.filter((key) => item[key] !== undefined).map((key) => [key, item[key]])) as AgentToolResultJson;\n return boundToolResult({ content: [{ type: 'json', value }] });\n }\n if (item.type === 'webSearch') {\n const value: Record<string, AgentToolResultJson> = {};\n if (item.action !== undefined && item.action !== null) value.action = item.action as AgentToolResultJson;\n if (item.results !== undefined && item.results !== null) value.results = item.results as AgentToolResultJson;\n return Object.keys(value).length ? boundToolResult({ content: [{ type: 'json', value }] }) : undefined;\n }\n return undefined;\n}\n\nfunction normalizeFileChange(value: unknown): AgentFileChange | undefined {\n if (!isRecord(value) || typeof value.path !== 'string' || !value.path || typeof value.diff !== 'string') return undefined;\n if (Object.keys(value).some(key => !['path', 'kind', 'diff'].includes(key))) return undefined;\n const kind = value.kind;\n if (kind === undefined) return { path: value.path, kind: 'unknown', diff: value.diff };\n if (!isRecord(kind) || Object.keys(kind).some(key => !['type', 'move_path'].includes(key))) return undefined;\n if (kind.type === 'add' || kind.type === 'delete') {\n if ('move_path' in kind) return undefined;\n return { path: value.path, kind: kind.type === 'add' ? 'added' : 'deleted', diff: value.diff };\n }\n if (kind.type !== 'update') return undefined;\n if (kind.move_path === null || kind.move_path === undefined) return { path: value.path, kind: 'modified', diff: value.diff };\n if (typeof kind.move_path !== 'string' || !kind.move_path) return undefined;\n return { path: kind.move_path, previousPath: value.path, kind: 'renamed', diff: value.diff };\n}\n\nfunction contentBlock(value: unknown): AgentToolResultContent {\n if (isRecord(value) && value.type === 'text' && typeof value.text === 'string') return { type: 'text', text: value.text };\n return { type: 'json', value: value as AgentToolResultJson };\n}\n", "import { Buffer } from 'node:buffer';\nimport { createHash } from 'node:crypto';\nimport { constants } from 'node:fs';\nimport { open } from 'node:fs/promises';\nimport { isAbsolute, resolve } from 'node:path';\n\nimport type { AgentResourceReadResult, AgentTimelineItem, ProviderResourceReference } from '@borgee/agent-provider-sdk';\n\nimport { isRecord, readString } from './native.js';\n\nconst maxImageBytes = 16 * 1024 * 1024;\nconst maxSessionImageBytes = 64 * 1024 * 1024;\n\nexport interface CodexImageProjection {\n item: Extract<AgentTimelineItem, { type: 'assistant_message' }>;\n resourceReferences: ProviderResourceReference[];\n}\n\ntype ImageSource = { path: string } | { data: string } | { unavailable: string };\ninterface ImageEntry {\n projection: CodexImageProjection;\n source: ImageSource;\n materialized?: Promise<AgentResourceReadResult>;\n}\n\n/** Resolves only image sources explicitly named by this session's native image items. */\nexport class CodexImageRegistry {\n private readonly entries = new Map<string, ImageEntry>();\n private retainedBytes = 0;\n private registeredDataBytes = 0;\n private active = true;\n\n constructor(private readonly sessionId: string) {}\n\n project(item: unknown, cwd?: string): CodexImageProjection | null {\n if (!this.active || !isRecord(item) || (item.type !== 'imageView' && item.type !== 'imageGeneration')) return null;\n const id = readString(item.id);\n if (!id) return null;\n const locator = `codex-image:${createHash('sha256').update(this.sessionId).update('\\0').update(id).digest('hex')}`;\n const existing = this.entries.get(locator);\n if (existing) return cloneProjection(existing.projection);\n let source = imageSource(item, cwd);\n if ('data' in source) {\n const byteLength = Buffer.byteLength(source.data);\n if (byteLength > Math.ceil(maxImageBytes / 3) * 4 + 128 || this.registeredDataBytes + byteLength > maxSessionImageBytes) {\n source = { unavailable: 'Native image data exceeds the configured byte limit.' };\n } else {\n this.registeredDataBytes += byteLength;\n }\n }\n const label = item.type === 'imageView' ? 'Viewed image' : 'Generated image';\n const projection: CodexImageProjection = {\n item: {\n type: 'assistant_message', messageId: id,\n text: 'unavailable' in source ? `${label} unavailable: ${source.unavailable}` : ``,\n },\n resourceReferences: 'unavailable' in source ? [] : [{ locator, readLocator: locator }],\n };\n this.entries.set(locator, { source, projection });\n return cloneProjection(projection);\n }\n\n async readResource(locator: string): Promise<AgentResourceReadResult> {\n if (!this.active) return unavailable('Codex image reader is stopped.');\n const entry = this.entries.get(locator);\n if (!entry) return unavailable('Resource is not a native image owned by this Codex session.');\n entry.materialized ??= this.materialize(entry.source);\n const result = await entry.materialized;\n return result.status === 'available' ? { ...result, bytes: Buffer.from(result.bytes) } : { ...result };\n }\n\n stop(): void {\n this.active = false;\n this.entries.clear();\n this.retainedBytes = 0;\n this.registeredDataBytes = 0;\n }\n\n private async materialize(source: ImageSource): Promise<AgentResourceReadResult> {\n if ('unavailable' in source) return unavailable(source.unavailable);\n try {\n const bytes = 'path' in source ? await readImageFile(source.path) : decodeImageData(source.data);\n const mediaType = rasterMediaType(bytes);\n if (!mediaType) return unavailable('Native image is not a supported raster image.');\n if (!this.active) return unavailable('Codex image reader is stopped.');\n if (this.retainedBytes + bytes.length > maxSessionImageBytes) return unavailable('Session image storage exceeds the configured byte limit.');\n this.retainedBytes += bytes.length;\n return { status: 'available', bytes, mediaType };\n } catch (error) {\n return unavailable(error instanceof ImageReadError ? error.message : 'Native image file is unavailable.');\n }\n }\n}\n\nfunction cloneProjection(projection: CodexImageProjection): CodexImageProjection {\n return { item: { ...projection.item }, resourceReferences: projection.resourceReferences.map((reference) => ({ ...reference })) };\n}\n\nfunction unavailable(reason: string): AgentResourceReadResult {\n return { status: 'unavailable', reason };\n}\n\nclass ImageReadError extends Error {}\n\nfunction imageSource(item: Record<string, unknown>, cwd?: string): ImageSource {\n if (item.type === 'imageView') return pathSource(readString(item.path), cwd);\n if (item.status === 'failed' || item.failure != null) return { unavailable: 'Native image generation failed.' };\n const savedPath = readString(item.savedPath) ?? readString(item.saved_path);\n if (savedPath) return pathSource(savedPath, cwd);\n const result = item.result;\n if (isRecord(result)) {\n const path = readString(result.path) ?? readString(result.savedPath) ?? readString(result.saved_path);\n if (path) return pathSource(path, cwd);\n const data = readString(result.data);\n if (data) return { data };\n return { unavailable: 'Native image result has no local file or embedded image data.' };\n }\n if (typeof result !== 'string' || !result.trim()) return { unavailable: 'Native image result is empty.' };\n const value = result.trim();\n if (/^data:/i.test(value)) return { data: value };\n if (/^[A-Za-z0-9+/]+={0,2}$/.test(value)\n && (rasterMediaType(Buffer.from(value.slice(0, 64), 'base64')) || (!isAbsolute(value) && value.length > 64))) return { data: value };\n return pathSource(value, cwd);\n}\n\nfunction pathSource(path: string | undefined, cwd?: string): ImageSource {\n if (!path || path.includes('\\0') || /^[a-z][a-z\\d+.-]*:/i.test(path)) {\n return { unavailable: 'Native image has no supported local file path.' };\n }\n if (!isAbsolute(path) && (!cwd || !isAbsolute(cwd))) return { unavailable: 'Relative native image path has no absolute session working directory.' };\n return { path: isAbsolute(path) ? path : resolve(cwd!, path) };\n}\n\nasync function readImageFile(path: string): Promise<Buffer> {\n const file = await open(path, constants.O_RDONLY | constants.O_NONBLOCK);\n try {\n const stat = await file.stat();\n if (!stat.isFile()) throw new ImageReadError('Native image path is not a regular file.');\n if (stat.size < 1 || stat.size > maxImageBytes) throw new ImageReadError('Native image exceeds the configured byte limit or is empty.');\n const bytes = Buffer.alloc(stat.size + 1);\n let offset = 0;\n while (offset < bytes.length) {\n const read = await file.read(bytes, offset, bytes.length - offset, offset);\n if (read.bytesRead === 0) break;\n offset += read.bytesRead;\n }\n if (offset !== stat.size) throw new ImageReadError('Native image changed while being read.');\n return bytes.subarray(0, offset);\n } finally {\n await file.close();\n }\n}\n\nfunction decodeImageData(value: string): Buffer {\n if (value.length > Math.ceil(maxImageBytes / 3) * 4 + 128) throw new ImageReadError('Native image exceeds the configured byte limit.');\n let encoded = value;\n if (/^data:/i.test(value)) {\n const match = /^data:image\\/(?:png|jpeg|gif|webp);base64,([A-Za-z0-9+/]*={0,2})$/i.exec(value);\n if (!match) throw new ImageReadError('Native image data URL is not a supported raster image.');\n encoded = match[1]!;\n }\n if (!/^[A-Za-z0-9+/]+={0,2}$/.test(encoded) || encoded.length % 4 === 1) throw new ImageReadError('Native image contains invalid base64 data.');\n const bytes = Buffer.from(encoded, 'base64');\n if (bytes.length < 1 || bytes.length > maxImageBytes) throw new ImageReadError('Native image exceeds the configured byte limit or is empty.');\n if (bytes.toString('base64').replace(/=+$/, '') !== encoded.replace(/=+$/, '')) throw new ImageReadError('Native image contains invalid base64 data.');\n return bytes;\n}\n\nfunction rasterMediaType(bytes: Buffer): string | undefined {\n if (bytes.length >= 24 && bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]))\n && bytes.toString('ascii', 12, 16) === 'IHDR' && bytes.readUInt32BE(16) > 0 && bytes.readUInt32BE(20) > 0) return 'image/png';\n if (bytes.length >= 4 && bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) return 'image/jpeg';\n if (bytes.length >= 13 && /^GIF8[79]a$/.test(bytes.toString('ascii', 0, 6)) && bytes.readUInt16LE(6) > 0 && bytes.readUInt16LE(8) > 0) return 'image/gif';\n if (bytes.length >= 16 && bytes.toString('ascii', 0, 4) === 'RIFF' && bytes.toString('ascii', 8, 12) === 'WEBP') return 'image/webp';\n return undefined;\n}\n", "import type { AgentQuestion, AgentQuestionnaireQuestion, AgentInteractionRequest, AgentInteractionResponse } from '@borgee/agent-provider-sdk';\nimport { isRecord, readString } from './native.js';\n\nexport function mapCodexAsyncQuestions(value: unknown): AgentQuestionnaireQuestion[] {\n if (!Array.isArray(value) || value.length === 0) throw new Error('Codex asynchronous questionnaire has no questions.');\n return value.map((question, index) => {\n if (!isRecord(question) || typeof question.title !== 'string' || !question.title.trim()\n || Object.keys(question).some(key => key !== 'title' && key !== 'options')) throw new Error('Codex asynchronous questionnaire has an unsupported question.');\n const options = question.options ?? [];\n if (!Array.isArray(options) || options.some(option => typeof option !== 'string' || !option.trim())\n || new Set(options).size !== options.length) throw new Error('Codex asynchronous questionnaire has invalid options.');\n return { questionId: `question-${index + 1}`, header: `Question ${index + 1}`, prompt: question.title,\n required: true, selection: 'single', options: options.map(option => ({ value: option as string, label: option as string })), allowCustomText: true, allowDismiss: false };\n });\n}\n\nexport function mapCodexQuestion(value: unknown, index: number): AgentQuestion {\n if (!isRecord(value)) throw new Error(`Codex question ${index + 1} is invalid`);\n const questionId = readString(value.id);\n const header = readString(value.header);\n const prompt = readString(value.question);\n if (!questionId || !header || !prompt) {\n throw new Error(`Codex question ${index + 1} is missing id, header, or prompt`);\n }\n const options = Array.isArray(value.options) ? value.options.map((option, optionIndex) => {\n if (!isRecord(option) || !readString(option.label)) {\n throw new Error(`Codex question ${questionId} option ${optionIndex + 1} is invalid`);\n }\n const label = readString(option.label)!;\n const description = readString(option.description);\n return { value: label, label, ...(description ? { description } : {}) };\n }) : [];\n return {\n questionId,\n header,\n prompt,\n required: true,\n ...(value.isSecret === true ? { sensitive: true } : {}),\n selection: value.multiSelect === true ? 'multiple' : 'single',\n options,\n allowCustomText: value.isOther === true || options.length === 0,\n allowDismiss: true,\n };\n }\n\nexport function mapCodexQuestionResponse(\n request: Extract<AgentInteractionRequest, { kind: 'question' }>,\n response: Extract<AgentInteractionResponse, { kind: 'question' }>,\n ): unknown {\n if (response.dismissed) {\n if (response.answers.length > 0) throw new Error('A dismissed Codex question cannot contain answers');\n return { answers: {} };\n }\n const submitted = new Map(response.answers.map((answer) => [answer.questionId, answer]));\n const answers: Record<string, { answers: string[] }> = {};\n for (const question of request.questions) {\n const answer = submitted.get(question.questionId);\n if (!answer) {\n if (question.required) throw new Error(`Codex question ${question.questionId} requires an answer`);\n continue;\n }\n const allowed = new Set(question.options.map((option) => option.value));\n if (answer.selectedValues.some((value) => !allowed.has(value))) {\n throw new Error(`Codex question ${question.questionId} contains an unknown option`);\n }\n if (question.selection === 'single' && answer.selectedValues.length > 1) {\n throw new Error(`Codex question ${question.questionId} accepts one option`);\n }\n if (answer.customText && !question.allowCustomText) {\n throw new Error(`Codex question ${question.questionId} does not accept custom text`);\n }\n const values = [\n ...answer.selectedValues,\n ...(answer.customText?.trim() ? [answer.customText] : []),\n ];\n if (values.length === 0 && question.required) {\n throw new Error(`Codex question ${question.questionId} requires an answer`);\n }\n answers[question.questionId] = { answers: values };\n submitted.delete(question.questionId);\n }\n if (submitted.size > 0) {\n throw new Error(`Codex question response contains unknown question ${submitted.keys().next().value}`);\n }\n return { answers };\n }\n", "import type { ProviderObservation } from '@borgee/agent-provider-sdk';\n\nimport { isRecord, readNumber, readString, type JsonObject } from './native.js';\nimport { CodexEventProjector, type CodexEventProjectorOptions } from './projector.js';\n\nexport function projectCodexThreadHistory(\n response: unknown,\n threadId: string,\n options: Pick<CodexEventProjectorOptions, 'images' | 'cwd'> = {},\n): ProviderObservation[] {\n const thread = readThread(response, threadId);\n const projector = new CodexEventProjector(threadId, { ...options, cwd: options.cwd ?? readString(thread.cwd), delivery: 'history' });\n const observations: ProviderObservation[] = [];\n const turns = Array.isArray(thread.turns) ? thread.turns : [];\n for (const value of turns) {\n if (!isRecord(value)) continue;\n const turnId = readString(value.id);\n const startedAt = secondsToMilliseconds(readNumber(value.startedAt));\n const completedAt = secondsToMilliseconds(readNumber(value.completedAt)) ?? startedAt;\n const items = Array.isArray(value.items) ? value.items : [];\n for (const item of items) {\n const userItem = isRecord(item) && item.type === 'userMessage';\n const observation = projector.projectHistoryItem(\n item,\n turnId,\n userItem ? startedAt : completedAt,\n );\n if (observation) observations.push(observation);\n }\n }\n return observations;\n}\n\nexport function collectCodexThreadHistoryItems(\n response: unknown,\n threadId: string,\n): Map<string, JsonObject> {\n const thread = readThread(response, threadId);\n const itemsById = new Map<string, JsonObject>();\n const turns = Array.isArray(thread.turns) ? thread.turns : [];\n for (const turn of turns) {\n if (!isRecord(turn) || !Array.isArray(turn.items)) continue;\n for (const item of turn.items) {\n if (!isRecord(item)) continue;\n const itemId = readString(item.id);\n if (itemId) itemsById.set(itemId, item);\n }\n }\n return itemsById;\n}\n\n/** Full native turn evidence is required before an authoritative recovery handoff. */\nexport function projectCodexRestoredHistory(response: unknown, threadId: string, options: Pick<CodexEventProjectorOptions, 'images' | 'cwd'> = {}): ProviderObservation[] {\n const thread = readThread(response, threadId);\n if (!Array.isArray(thread.turns)) throw new Error('Codex restoration returned no complete turn history');\n const observations: ProviderObservation[] = [];\n const seen = new Set<string>();\n for (const turn of thread.turns) {\n if (!isRecord(turn) || !readString(turn.id) || seen.has(String(turn.id)) || !Array.isArray(turn.items)\n || turn.itemsView !== undefined && turn.itemsView !== 'full'\n || !['inProgress', 'completed', 'failed', 'interrupted'].includes(String(turn.status))) {\n throw new Error('Codex restoration returned incomplete or ambiguous turn history');\n }\n const turnId = String(turn.id);\n seen.add(turnId);\n const occurredAt = secondsToMilliseconds(readNumber(turn.startedAt)) ?? Date.now();\n observations.push({ type: 'observation', sourceKey: `turn:${turnId}:started`, occurredAt, delivery: 'history',\n event: { type: 'turn_started', provider: 'codex', turnId } });\n observations.push(...projectCodexThreadHistory({ thread: { ...thread, turns: [turn] } }, threadId, options));\n if (turn.status !== 'inProgress') {\n const projector = new CodexEventProjector(threadId, { delivery: 'history', now: () => secondsToMilliseconds(readNumber(turn.completedAt)) ?? occurredAt });\n const terminal = projector.projectNotification('turn/completed', { threadId, turn });\n if (terminal) observations.push(terminal);\n }\n }\n return observations;\n}\n\nfunction readThread(response: unknown, threadId: string): JsonObject {\n if (!isRecord(response) || !isRecord(response.thread)) {\n throw new Error('Codex thread/read returned no thread');\n }\n const returnedThreadId = readString(response.thread.id);\n if (returnedThreadId !== threadId) {\n throw new Error(`Codex thread/read returned ${returnedThreadId ?? 'no id'} instead of ${threadId}`);\n }\n return response.thread;\n}\n\nfunction secondsToMilliseconds(value: number | undefined): number | undefined {\n return value === undefined ? undefined : value * 1000;\n}\n", "import type { ChildProcessWithoutNullStreams } from 'node:child_process';\nimport { homedir } from 'node:os';\nimport { isAbsolute, join } from 'node:path';\n\nimport type {\n AgentPersistenceHandle,\n AgentProviderAdapter,\n AgentProviderDescriptor,\n AgentSession,\n AgentSessionConfig,\n AgentSessionResumeOptions,\n} from '@borgee/agent-provider-sdk';\n\nimport { CodexAppServerTransport } from './app-server-transport.js';\nimport { isRecord, spawnCodexAppServer } from './native.js';\nimport { CodexAppServerSession } from './session.js';\nimport { initializeCodexTransport } from './initialize.js';\nimport { readCodexSessionPage, readCodexSessionSummary, type CodexSessionListOptions, type CodexSessionPage } from './catalog.js';\nimport type { CodexSharedRecoveryPlan, CodexSharedRecoverySettings } from './native-client/recovery.js';\n\nexport interface CodexAppServerProviderOptions {\n executable?: string;\n /** Shared mode attaches to a native local WebSocket; disposing it never stops the daemon. */\n connectionMode?: 'private' | 'shared';\n socketPath?: string;\n /** Shared sockets recover by default; false preserves terminal observer semantics for embedding callers. */\n sharedRecovery?: CodexSharedRecoverySettings | false;\n restrictedNative?: boolean;\n env?: NodeJS.ProcessEnv;\n requestTimeoutMs?: number;\n collaborationMode?: 'plan';\n onDiagnostic?: (line: string) => void;\n spawn?: (context: { cwd?: string }) => ChildProcessWithoutNullStreams | Promise<ChildProcessWithoutNullStreams>;\n}\n\nexport class CodexAppServerProvider implements AgentProviderAdapter {\n readonly descriptor: AgentProviderDescriptor = {\n providerId: 'codex',\n displayName: 'Codex',\n sessionObservation: 'complete-state',\n sessionInputOperations: ['start_turn', 'steer'],\n };\n\n private readonly sessions = new Set<CodexAppServerSession>();\n\n constructor(private readonly options: CodexAppServerProviderOptions = {}) {\n if (options.connectionMode !== undefined && !['private', 'shared'].includes(options.connectionMode)) throw new Error('Codex connection mode must be private or shared.');\n if (options.socketPath !== undefined && (options.connectionMode !== 'shared' || !isAbsolute(options.socketPath))) {\n throw new Error('Codex socket path requires shared mode and an absolute local path.');\n }\n if (options.connectionMode === 'shared' && options.restrictedNative) {\n throw new Error('Shared Codex uses the native daemon permissions. Explicit local trusted control is required; per-client sandbox restrictions cannot be enforced.');\n }\n if (options.connectionMode === 'shared' && options.spawn) throw new Error('Shared Codex cannot also spawn a private runtime.');\n }\n\n async listSessions(options: CodexSessionListOptions = {}): Promise<CodexSessionPage> {\n const limit = options.limit ?? 100;\n if (!Number.isInteger(limit) || limit < 1 || limit > 100) throw new Error('Codex catalog limit must be between 1 and 100.');\n const transport = await this.createTransport();\n try {\n await initializeCodexTransport(transport);\n return readCodexSessionPage(await transport.request('thread/list', {\n limit, ...(options.cursor ? { cursor: options.cursor } : {}),\n sortKey: 'updated_at', modelProviders: [], sourceKinds: options.includeAllSources\n ? ['cli', 'vscode', 'exec', 'appServer', 'subAgent', 'subAgentReview', 'subAgentCompact', 'subAgentThreadSpawn', 'subAgentOther', 'unknown']\n : ['cli', 'vscode', 'appServer'], archived: false,\n }), options.includeAllSources);\n } finally { await transport.dispose(); }\n }\n\n async inspectSession(nativeSessionId: string) {\n const transport = await this.createTransport();\n try {\n await initializeCodexTransport(transport);\n const result = await transport.request('thread/read', { threadId: nativeSessionId, includeTurns: false });\n const thread = readCodexSessionSummary(isRecord(result) ? result.thread : undefined);\n if (thread.nativeSessionId !== nativeSessionId) throw new Error('Codex thread/read returned a different identity.');\n return thread;\n } finally { await transport.dispose(); }\n }\n\n async createSession(config: AgentSessionConfig): Promise<AgentSession> {\n if (config.additionalDirectories !== undefined) throw new Error('Codex additional directories are not supported.');\n const transport = await this.createTransport(config.cwd);\n try {\n const session = await CodexAppServerSession.create(transport, config, this.options.collaborationMode, this.options.env?.CODEX_HOME, this.options.restrictedNative, this.recoveryPlan(config.cwd));\n this.sessions.add(session);\n session.onRuntimeClosed(() => this.sessions.delete(session));\n return session;\n } catch (error) {\n await transport.dispose();\n throw error;\n }\n }\n\n async resumeSession(handle: AgentPersistenceHandle, options?: AgentSessionResumeOptions): Promise<AgentSession> {\n if (options?.additionalDirectories !== undefined) throw new Error('Codex additional directories are not supported.');\n const cwd = readPersistenceCwd(handle.opaque);\n const transport = await this.createTransport(cwd);\n try {\n const session = await CodexAppServerSession.resume(transport, handle, this.options.collaborationMode, this.options.env?.CODEX_HOME, this.options.restrictedNative, this.recoveryPlan(cwd));\n this.sessions.add(session);\n session.onRuntimeClosed(() => this.sessions.delete(session));\n return session;\n } catch (error) {\n await transport.dispose();\n throw error;\n }\n }\n\n async openChildSession(parentNativeSessionId: string, childNativeSessionId: string): Promise<AgentSession> {\n const owners = [...this.sessions].filter((session) => session.hasNativeChild(parentNativeSessionId, childNativeSessionId));\n if (owners.length > 1) throw new Error('Codex native child ownership is ambiguous across loaded runtimes');\n if (owners[0]) return owners[0].openChildSession(parentNativeSessionId, childNativeSessionId);\n if ([...this.sessions].some((session) => session.hasNativeThread(parentNativeSessionId))) throw new Error('Codex session is not a direct child of the loaded parent');\n throw new Error('Codex parent session is not loaded');\n }\n\n private async createTransport(cwd?: string): Promise<CodexAppServerTransport> {\n if (this.options.connectionMode === 'shared') {\n const home = this.options.env?.CODEX_HOME ?? process.env.CODEX_HOME ?? join(homedir(), '.codex');\n return CodexAppServerTransport.connectShared(this.options.socketPath ?? join(home, 'app-server-control', 'app-server-control.sock'), {\n requestTimeoutMs: this.options.requestTimeoutMs, onDiagnostic: this.options.onDiagnostic,\n });\n }\n const child = this.options.spawn\n ? await this.options.spawn({ cwd })\n : spawnCodexAppServer({\n executable: this.options.executable,\n cwd,\n env: this.options.env,\n });\n return new CodexAppServerTransport(child, {\n requestTimeoutMs: this.options.requestTimeoutMs,\n onDiagnostic: this.options.onDiagnostic,\n });\n }\n\n private recoveryPlan(cwd?: string): CodexSharedRecoveryPlan | undefined {\n return this.options.connectionMode === 'shared' && this.options.sharedRecovery !== false\n ? { connect: () => this.createTransport(cwd), settings: this.options.sharedRecovery }\n : undefined;\n }\n}\n\nfunction readPersistenceCwd(opaque: string): string | undefined {\n try {\n const parsed: unknown = JSON.parse(opaque);\n return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)\n && typeof (parsed as { cwd?: unknown }).cwd === 'string'\n ? (parsed as { cwd: string }).cwd\n : undefined;\n } catch {\n return undefined;\n }\n}\n", "import { constants } from 'node:fs';\nimport { open, opendir } from 'node:fs/promises';\nimport path from 'node:path';\nimport type { AgentCommand, AgentResourceReadResult } from '@borgee/agent-provider-sdk';\nimport type { CodexAppServerTransport } from './app-server-transport.js';\nimport { isRecord, readString } from './native.js';\n\nexport type CodexCommand = { descriptor: AgentCommand } & (\n | { type: 'builtin' }\n | { type: 'skill'; name: string; path: string }\n | { type: 'prompt'; body: string }\n);\nconst validName = (value: string): boolean => /^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/.test(value);\nconst maxPromptBytes = 256 * 1024;\nconst maxDirectoryEntries = 1024;\n\nexport async function discoverCodexCommands(transport: Pick<CodexAppServerTransport, 'request'>, cwd: string | undefined, codexHome: string): Promise<CodexCommand[]> {\n const commands: CodexCommand[] = [\n { descriptor: { id: 'model', name: 'model', description: 'Choose model and reasoning effort', kind: 'command' }, type: 'builtin' },\n { descriptor: { id: 'permissions', name: 'permissions', description: 'Choose native approval policy or sandbox', kind: 'command' }, type: 'builtin' },\n { descriptor: { id: 'compact', name: 'compact', description: 'Compact the current Codex thread', kind: 'command' }, type: 'builtin' },\n ];\n const result = await transport.request('skills/list', { cwds: cwd ? [cwd] : [], forceReload: true });\n if (!isRecord(result) || !Array.isArray(result.data)) throw new Error('Codex returned an invalid skills directory.');\n if (result.data.length > maxDirectoryEntries) throw new Error('Codex skills directory exceeds the supported limit.');\n const seen = new Set<string>();\n const paths = new Set<string>();\n const names = new Set(commands.map(({ descriptor }) => descriptor.name));\n let skillCount = 0;\n for (const entry of result.data) {\n if (!isRecord(entry) || !Array.isArray(entry.skills)) continue;\n if (cwd && readString(entry.cwd) !== cwd) continue;\n skillCount += entry.skills.length;\n if (skillCount > maxDirectoryEntries) throw new Error('Codex skills directory exceeds the supported limit.');\n for (const skill of entry.skills) {\n if (!isRecord(skill) || skill.enabled !== true) continue;\n const name = readString(skill.name);\n const file = readString(skill.path);\n if (!name || !validName(name) || !file || !path.isAbsolute(file) || file.includes('\\0') || seen.has(name) || paths.has(file)) continue;\n seen.add(name);\n paths.add(file);\n let commandName = name.startsWith('prompts:') ? `skills:${name}` : name;\n while (names.has(commandName)) commandName = `skills:${commandName}`;\n names.add(commandName);\n const shortDescription = (isRecord(skill.interface) ? readString(skill.interface.shortDescription) : undefined) ?? readString(skill.shortDescription);\n commands.push({ type: 'skill', name, path: file, descriptor: {\n id: `skill:${encodeURIComponent(file)}`, name: commandName,\n description: readString(skill.description) ?? 'Codex skill', kind: 'skill', inputHint: 'Instructions for this skill',\n ...(shortDescription ? { shortDescription } : {}), documentation: `skill:${encodeURIComponent(file)}`,\n } });\n }\n }\n commands.push(...await discoverPrompts(codexHome));\n return commands;\n}\n\nexport async function readCodexCommandDocumentation(transport: Pick<CodexAppServerTransport, 'request'>, cwd: string | undefined, codexHome: string, locator: string): Promise<AgentResourceReadResult> {\n const command = (await discoverCodexCommands(transport, cwd, codexHome)).find(({ descriptor }) => descriptor.documentation === locator);\n if (command?.type !== 'skill') return { status: 'unavailable', reason: 'Skill is no longer available in this session.' };\n try {\n const file = await open(command.path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);\n try {\n const stat = await file.stat();\n if (!stat.isFile() || stat.size > maxPromptBytes) return { status: 'unavailable', reason: 'Skill documentation exceeds the supported file limit.' };\n const buffer = Buffer.alloc(maxPromptBytes + 1);\n const { bytesRead } = await file.read(buffer, 0, buffer.length, 0);\n if (bytesRead > maxPromptBytes) return { status: 'unavailable', reason: 'Skill documentation exceeds the supported file limit.' };\n return { status: 'available', bytes: buffer.subarray(0, bytesRead), mediaType: 'text/plain' };\n } finally { await file.close(); }\n } catch { return { status: 'unavailable', reason: 'Skill documentation cannot be read from the Host.' }; }\n}\n\nasync function discoverPrompts(codexHome: string): Promise<CodexCommand[]> {\n let directory;\n try { directory = await opendir(path.join(codexHome, 'prompts')); }\n catch (error) { if ((error as NodeJS.ErrnoException).code === 'ENOENT') return []; throw error; }\n const commands: CodexCommand[] = [];\n let count = 0;\n for await (const entry of directory) {\n if (++count > maxDirectoryEntries) throw new Error('Codex prompts directory exceeds the supported limit.');\n if (!entry.isFile() || !entry.name.endsWith('.md')) continue;\n const name = entry.name.slice(0, -3);\n if (!validName(name)) continue;\n const file = await open(path.join(codexHome, 'prompts', entry.name), constants.O_RDONLY | constants.O_NOFOLLOW);\n try {\n const stat = await file.stat();\n if (!stat.isFile() || stat.size > maxPromptBytes) continue;\n const buffer = Buffer.alloc(maxPromptBytes + 1);\n const { bytesRead } = await file.read(buffer, 0, buffer.length, 0);\n if (bytesRead > maxPromptBytes) continue;\n const { body, metadata } = parsePrompt(buffer.subarray(0, bytesRead).toString('utf8'));\n commands.push({ type: 'prompt', body, descriptor: {\n id: `prompt:${name}`, name: `prompts:${name}`, kind: 'prompt', description: metadata.description ?? 'Custom Codex prompt',\n inputHint: `${metadata['argument-hint'] ?? 'Raw arguments'}; only $ARGUMENTS placeholders are supported`,\n } });\n } finally { await file.close(); }\n }\n return commands.sort((a, b) => a.descriptor.name.localeCompare(b.descriptor.name));\n}\n\nfunction parsePrompt(content: string): { body: string; metadata: Record<string, string> } {\n const match = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n/.exec(content);\n if (!match) return { body: content, metadata: {} };\n const metadata: Record<string, string> = {};\n for (const line of match[1]!.split(/\\r?\\n/)) {\n const field = /^(description|argument-hint):\\s*(.*?)\\s*$/.exec(line);\n if (field) metadata[field[1]!] = field[2]!.replace(/^(['\"])(.*)\\1$/, '$2');\n }\n return { body: content.slice(match[0].length), metadata };\n}\n\nexport function expandCodexPrompt(body: string, args: string): string {\n if (/\\$(?!ARGUMENTS\\b)(?:[A-Za-z_0-9{]|\\$)/.test(body)) {\n throw new Error('Unsupported Codex prompt placeholder. Only $ARGUMENTS is supported; named, positional, escaped and braced placeholders require the native client.');\n }\n if (!body.includes('$ARGUMENTS') && args.trim()) throw new Error('This Codex prompt has no $ARGUMENTS placeholder.');\n return body.replace(/\\$ARGUMENTS\\b/g, () => args);\n}\n", "import { AgentCommandRejectedError, AgentInputRejectedError } from '@borgee/agent-provider-sdk';\nimport { discoverCodexCommands, expandCodexPrompt, readCodexCommandDocumentation, type CodexCommand } from './commands.js';\nimport { randomUUID } from 'node:crypto';\nimport { homedir } from 'node:os';\nimport path from 'node:path';\nimport { CodexSessionSettings } from './session-settings.js';\nimport { isDeepStrictEqual } from 'node:util';\n\nimport type {\n AgentCapabilities,\n AgentCommand,\n AgentCommandResult,\n AgentMessageOptions,\n AgentMessageReceipt,\n AgentSteerOptions,\n AgentSessionSetting,\n AgentInteractionRequest,\n AgentInteractionResponse,\n AgentPersistenceHandle,\n AgentResourceReadResult,\n AgentRuntimeInfo,\n AgentSession,\n AgentSessionConfig,\n ProviderObservation,\n ProviderSessionRestored,\n ProviderStreamItem,\n} from '@borgee/agent-provider-sdk';\n\nimport { AgentSessionInUseError, CommandInteractions, validateInteractionResponse, redactInteractionResponse } from '@borgee/agent-provider-sdk';\nimport { mapCodexQuestion, mapCodexQuestionResponse } from './questions.js';\nimport { mapCodexElicitation, mapCodexElicitationResponse } from './elicitation.js';\nimport { mapCodexPermissions } from './permissions.js';\nimport { mapCodexToolApproval } from './tool-approval.js';\nimport { CodexAppServerRpcError, CodexAppServerTransport, CodexServerRequestCanceled } from './app-server-transport.js';\nimport { collectCodexThreadHistoryItems, projectCodexThreadHistory, projectCodexRestoredHistory } from './history.js';\nimport { CodexImageRegistry } from './images.js';\nimport { isRecord, readItem, readItemId, readString } from './native.js';\nimport { CodexEventProjector } from './projector.js';\nimport { CodexUsage } from './usage.js';\nimport { readCodexPlanningModes, type CodexPlanningModes } from './planning.js';\nimport { assertAdditionalContextSupport, initializeCodexTransport } from './initialize.js';\nimport { CodexSessionRuntime, historyOverlapsNotifications, type CodexRawNotification } from './runtime.js';\nimport type { CodexSharedRecoveryPlan } from './native-client/recovery.js';\n\nconst PROVIDER_ID = 'codex';\n\nexport const CODEX_CAPABILITIES: AgentCapabilities = {\n history: true,\n sendMessage: true,\n steer: true,\n cancel: true,\n readResource: true,\n planning: false,\n sessionSettings: true,\n commands: true,\n interactions: {\n question: true,\n planApproval: false,\n toolApproval: true,\n form: true,\n permissionApproval: true,\n externalAction: true,\n },\n};\n\ninterface StoredSessionConfig {\n cwd?: string;\n model?: string;\n modelProvider?: string;\n reasoningEffort?: string;\n systemPrompt?: string;\n collaborationMode?: 'plan';\n}\n\ninterface NativePendingInteraction {\n kind: AgentInteractionRequest['kind'];\n request: AgentInteractionRequest;\n turnId?: string;\n resolve(value: unknown): void;\n reject(error: Error): void;\n respond(response: AgentInteractionResponse): unknown;\n}\n\ninterface RawNotification {\n method: string;\n params: unknown;\n}\n\nexport class CodexAppServerSession implements AgentSession {\n readonly capabilities: AgentCapabilities = { ...CODEX_CAPABILITIES, interactions: { ...CODEX_CAPABILITIES.interactions } };\n\n private readonly settings = new CodexSessionSettings();\n private changingSetting = false;\n private executingCommand = false;\n private commandEventSequence = 0;\n private readonly commandEventPrefix = randomUUID();\n private readonly commandInteractions = new CommandInteractions(PROVIDER_ID, (event) => this.emit({\n type: 'observation', sourceKey: `command:${this.commandEventPrefix}:${++this.commandEventSequence}`, occurredAt: Date.now(), delivery: 'live', event,\n }));\n private settingConfirmation: { id: string; value: string; resolve(): void; reject(error: Error): void } | undefined;\n private threadId: string | undefined;\n private projector: CodexEventProjector | undefined;\n private readonly usage = new CodexUsage();\n private images: CodexImageRegistry | undefined;\n private initialItems: ProviderStreamItem[] = [];\n private readonly bufferedNotifications: RawNotification[] = [];\n private readonly preReadyEvents: ProviderObservation[] = [];\n private liveQueue = new AsyncQueue<ProviderStreamItem>();\n private readonly pendingInteractions = new Map<string, NativePendingInteraction>();\n private ready = false;\n private observing = false;\n private disposed = false;\n private released = false;\n private transportFailure: Error | undefined;\n private runtimeStatus: AgentRuntimeInfo['status'] = 'starting';\n private runtimeRevision = 0;\n private statusRevision = 0;\n private nativeTurnRevision = 0;\n private readonly observedTurnIds = new Set<string>();\n private planningModes: CodexPlanningModes | undefined;\n private collaborationModeSelected = false;\n private latestPlan: { id: string; text: string } | undefined;\n private startingTurn = false;\n private sendingMessage = false;\n private activeTurnId: string | undefined;\n private readonly requestOccurrences = new Map<string, string>();\n private requestSequence = 0;\n\n private constructor(\n private transport: CodexAppServerTransport,\n private readonly config: StoredSessionConfig,\n private readonly codexHome = process.env.CODEX_HOME || path.join(homedir(), '.codex'),\n runtime?: CodexSessionRuntime,\n private readonly restrictedNative = false,\n recoveryPlan?: CodexSharedRecoveryPlan,\n ) {\n this.runtime = runtime ?? new CodexSessionRuntime(transport, this,\n (thread, history, buffered) => this.createNativeChild(thread, history, buffered), recoveryPlan);\n this.ownsRuntime = runtime === undefined;\n }\n\n private readonly runtime: CodexSessionRuntime;\n private readonly ownsRuntime: boolean;\n private readonly runtimeClosedListeners = new Set<() => void>();\n private acceptsDirectInput = true;\n private inputCapabilitiesRevision = 0;\n private historyRefreshNeeded = false;\n private uncertainHistorySnapshot = false;\n private preparingObservation: Promise<void> | undefined;\n\n onRuntimeClosed(listener: () => void): void {\n if (this.disposed || this.transportFailure) listener();\n else this.runtimeClosedListeners.add(listener);\n }\n\n private notifyRuntimeClosed(): void {\n for (const listener of this.runtimeClosedListeners) listener();\n this.runtimeClosedListeners.clear();\n }\n\n receiveNotification(method: string, params: unknown): void { this.handleNotification(method, params); }\n receiveTermination(error: Error): void { this.handleTransportTermination(error); }\n notifyChildrenChanged(): void { this.emitRuntimeUpdate(); }\n childRuntimeInfo(): AgentRuntimeInfo { return this.currentRuntimeInfo(); }\n\n beginRecovery(reason: string, recovery: 'retrying' | 'stopped' = 'retrying'): void {\n if (this.disposed) return;\n this.inputCapabilitiesRevision += 1;\n this.usage.invalidate();\n this.latestPlan = undefined;\n this.commandInteractions.clear();\n this.settingConfirmation?.reject(new Error('Codex setting confirmation belongs to an old connection'));\n this.settingConfirmation = undefined;\n for (const pending of this.pendingInteractions.values()) pending.reject(new CodexServerRequestCanceled('Codex request belongs to an old connection'));\n this.pendingInteractions.clear();\n this.requestOccurrences.clear();\n this.bufferedNotifications.length = 0;\n this.preReadyEvents.length = 0;\n this.ready = false;\n this.liveQueue.push({ type: 'session_invalidated', recovery, reason });\n }\n\n replaceTransport(transport: CodexAppServerTransport, _generation: number): void {\n this.transport = transport;\n }\n\n validateSnapshot(snapshot: unknown): void {\n if (!this.threadId) throw new Error('Codex restoration has no native thread');\n projectCodexRestoredHistory(snapshot, this.threadId, { cwd: this.config.cwd });\n if (!isRecord(snapshot) || !isRecord(snapshot.thread)) throw new Error('Codex restoration returned no thread');\n const active = (snapshot.thread.turns as Record<string, unknown>[]).filter(turn => turn.status === 'inProgress');\n if (active.length > 1) throw new Error('Codex restoration returned multiple active turns');\n }\n\n restoreSnapshot(snapshot: unknown, buffered: CodexRawNotification[]): void {\n if (this.disposed || !this.threadId) return;\n if (!isRecord(snapshot) || !isRecord(snapshot.thread)) throw new Error('Codex restoration returned no thread');\n const active = (snapshot.thread.turns as Record<string, unknown>[]).filter(turn => turn.status === 'inProgress');\n this.ready = false;\n this.preReadyEvents.length = 0;\n this.images?.stop();\n this.setThreadFromResponse(snapshot, 'thread/read');\n if (Object.prototype.hasOwnProperty.call(snapshot, 'reasoningEffort')) this.applyThreadSettings({ effort: snapshot.reasoningEffort });\n const history = projectCodexRestoredHistory(snapshot, this.threadId, { images: this.images, cwd: this.config.cwd });\n this.runtimeStatus = readThreadRuntimeStatus(snapshot.thread.status) ?? this.runtimeStatus;\n this.activeTurnId = active[0] ? readString(active[0].id) : undefined;\n if (snapshot.thread.canAcceptDirectInput !== undefined) this.acceptsDirectInput = snapshot.thread.canAcceptDirectInput === true;\n if (this.runtimeStatus === 'closed') this.acceptsDirectInput = false;\n this.restoreInteractions();\n this.refreshInputCapabilities();\n for (const notification of buffered) {\n if (notification.method === 'serverRequest/resolved') this.handleServerRequestResolved(notification.method, notification.params);\n if (notification.method === 'thread/settings/updated') this.handleRuntimeNotification(notification.method, notification.params);\n }\n this.preReadyEvents.length = 0;\n for (const item of collectCodexThreadHistoryItems(snapshot, this.threadId).values()) this.projector!.seedHistoryItem(item);\n const startedAt = active[0]?.startedAt;\n const restored: ProviderSessionRestored = {\n type: 'session_restored', runtimeInfo: this.currentRuntimeInfo(), capabilities: structuredClone(this.capabilities),\n activeTurn: this.activeTurnId ? { turnId: this.activeTurnId,\n ...(typeof startedAt === 'number' && Number.isFinite(startedAt) ? { startedAt: new Date(startedAt * 1000).toISOString() } : {}) } : null,\n pendingInteractions: [...this.pendingInteractions.values()].map(pending => structuredClone(pending.request)), observations: history,\n };\n this.liveQueue.push(restored);\n this.ready = true;\n for (const notification of buffered) {\n if (notification.method !== 'serverRequest/resolved' && notification.method !== 'thread/settings/updated') this.handleNotification(notification.method, notification.params);\n }\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n }\n\n receiveRequest(method: string, params: unknown, id: string | number, generation = 0): Promise<unknown> {\n if (this.runtime.supportsRecovery) {\n const occurrence = `${id}:${generation}:${++this.requestSequence}`;\n this.requestOccurrences.set(String(id), occurrence);\n id = occurrence;\n }\n if (method === 'item/tool/requestUserInput' || method === 'tool/requestUserInput') return this.handleQuestionRequest(params, id);\n if (method === 'item/commandExecution/requestApproval') return this.handleToolRequest('command', params, id);\n if (method === 'item/fileChange/requestApproval') return this.handleToolRequest('file', params, id);\n if (method === 'mcpServer/elicitation/request') return this.handleElicitationRequest(params, id);\n return this.handlePermissionRequest(params, id);\n }\n\n hasNativeChild(parentId: string, childId: string): boolean { return !this.disposed && this.runtime.hasChild(parentId, childId); }\n\n hasNativeThread(id: string): boolean { return !this.disposed && this.runtime.hasThread(id); }\n\n async openChildSession(parentNativeSessionId: string, childNativeSessionId: string): Promise<AgentSession> {\n this.assertOpen();\n return await this.runtime.openChild(parentNativeSessionId, childNativeSessionId) as CodexAppServerSession;\n }\n\n private createNativeChild(thread: Record<string, unknown>, history: unknown, buffered: CodexRawNotification[]): CodexAppServerSession {\n const child = new CodexAppServerSession(this.transport, {}, this.codexHome, this.runtime, this.restrictedNative);\n child.settings.inheritCatalog(this.settings);\n child.planningModes = this.planningModes;\n child.capabilities.planning = this.planningModes !== undefined;\n child.capabilities.interactions.planApproval = this.planningModes !== undefined;\n child.setThreadFromResponse({ thread }, 'thread/read');\n child.acceptsDirectInput = thread.canAcceptDirectInput === true && readThreadRuntimeStatus(thread.status) !== 'closed';\n child.refreshInputCapabilities();\n child.runtimeStatus = readThreadRuntimeStatus(thread.status) ?? 'starting';\n if (child.runtimeStatus === 'closed') child.disableInteractions();\n if (Array.isArray(thread.turns)) {\n const active = [...thread.turns].reverse().find((turn) => isRecord(turn) && turn.status === 'inProgress');\n if (isRecord(active)) child.activeTurnId = readString(active.id);\n }\n child.bufferedNotifications.push(...buffered);\n child.finishBootstrap(\n projectCodexThreadHistory(history, child.threadId!, { images: child.images, cwd: child.config.cwd }),\n collectCodexThreadHistoryItems(history, child.threadId!),\n );\n return child;\n }\n\n markHistoryRefreshNeeded(uncertain = false): void {\n this.historyRefreshNeeded = true;\n this.uncertainHistorySnapshot ||= uncertain;\n }\n\n async prepareObservation(): Promise<void> {\n if (this.disposed) throw new Error('Codex session is closed');\n if (this.transportFailure) throw this.transportFailure;\n this.released = false;\n if (this.preparingObservation) return this.preparingObservation;\n if (this.observing || !this.historyRefreshNeeded) return;\n this.preparingObservation = this.refreshUnobservedHistory().finally(() => { this.preparingObservation = undefined; });\n return this.preparingObservation;\n }\n\n private async refreshUnobservedHistory(): Promise<void> {\n const priorText = this.uncertainHistorySnapshot ? undefined : this.projector?.snapshotText();\n this.ready = false;\n try {\n let history: unknown;\n for (let attempt = 0; ; attempt++) {\n const start = this.bufferedNotifications.length;\n history = await this.runtime.request('thread/read', { threadId: this.threadId, includeTurns: true });\n if (!this.uncertainHistorySnapshot || !historyOverlapsNotifications(history, this.threadId!, this.bufferedNotifications.slice(start))) break;\n if (attempt === 2) throw new Error('Codex child history is changing during snapshot reads. Reopen the child to retry.');\n }\n if (!isRecord(history) || !isRecord(history.thread) || history.thread.id !== this.threadId) throw new Error('Codex child history is unavailable');\n this.images?.stop();\n this.setThreadFromResponse(history, 'thread/read');\n this.liveQueue.clear();\n this.preReadyEvents.length = 0;\n for (const pending of this.pendingInteractions.values()) this.emitInteractionRequested(pending.request);\n this.finishBootstrap(\n projectCodexThreadHistory(history, this.threadId!, { images: this.images, cwd: this.config.cwd }),\n collectCodexThreadHistoryItems(history, this.threadId!),\n priorText,\n );\n this.historyRefreshNeeded = false;\n this.uncertainHistorySnapshot = false;\n } catch (error) {\n this.ready = true;\n throw error;\n }\n }\n\n private refreshInputCapabilities(): void {\n for (const key of ['sendMessage', 'steer', 'cancel', 'sessionSettings', 'commands'] as const) this.capabilities[key] = this.acceptsDirectInput;\n this.capabilities.planning = this.acceptsDirectInput && this.planningModes !== undefined && (this.ownsRuntime || !!this.config.model);\n this.capabilities.interactions.planApproval = this.acceptsDirectInput && this.planningModes !== undefined && (this.ownsRuntime || !!this.config.model);\n }\n\n private restoreInteractions(): void {\n Object.assign(this.capabilities.interactions, CODEX_CAPABILITIES.interactions);\n this.capabilities.interactions.planApproval = this.acceptsDirectInput && this.planningModes !== undefined && (this.ownsRuntime || !!this.config.model);\n }\n\n private async refreshNativeInputCapabilities(): Promise<void> {\n const revision = ++this.inputCapabilitiesRevision;\n try {\n const response = await this.runtime.request('thread/read', { threadId: this.threadId, includeTurns: false });\n if (revision !== this.inputCapabilitiesRevision || this.disposed || this.transportFailure || this.runtimeStatus === 'closed') return;\n if (!isRecord(response) || !isRecord(response.thread) || response.thread.id !== this.threadId\n || readThreadRuntimeStatus(response.thread.status) === 'closed') return;\n this.acceptsDirectInput = response.thread.canAcceptDirectInput === true;\n this.restoreInteractions();\n this.refreshInputCapabilities();\n if (this.ready) this.emitRuntimeUpdate();\n } catch {\n // Input remains disabled until the native thread confirms its eligibility.\n }\n }\n\n private disableInteractions(): void {\n for (const key of Object.keys(this.capabilities.interactions) as Array<keyof AgentCapabilities['interactions']>) this.capabilities.interactions[key] = false;\n }\n\n private assertDirectInput(): void {\n this.assertOpen();\n this.runtime.assertConnected();\n if (!this.acceptsDirectInput) throw new Error('Codex native child does not accept direct input.');\n if (this.runtimeStatus === 'closed') throw new Error('Codex session is closed');\n }\n\n static async create(\n transport: CodexAppServerTransport,\n config: AgentSessionConfig,\n collaborationMode?: 'plan',\n codexHome?: string,\n restrictedNative = false,\n recoveryPlan?: CodexSharedRecoveryPlan,\n ): Promise<CodexAppServerSession> {\n const stored = toStoredConfig(config, collaborationMode);\n const session = new CodexAppServerSession(transport, stored, codexHome, undefined, restrictedNative, recoveryPlan);\n session.usage.newThread();\n await session.initialize();\n const response = await transport.request('thread/start', {\n historyMode: 'paginated',\n config: { 'features.default_mode_request_user_input': true },\n ...(restrictedNative ? { sandbox: 'read-only', approvalPolicy: 'on-request' } : {}),\n ...(stored.model ? { model: stored.model } : {}),\n ...(stored.cwd ? { cwd: stored.cwd } : {}),\n ...(stored.systemPrompt ? { developerInstructions: stored.systemPrompt } : {}),\n });\n session.setThreadFromResponse(response, 'thread/start');\n session.finishBootstrap([], new Map());\n session.runtime.enableRecovery();\n return session;\n }\n\n static async resume(\n transport: CodexAppServerTransport,\n handle: AgentPersistenceHandle,\n collaborationMode?: 'plan',\n codexHome?: string,\n restrictedNative = false,\n recoveryPlan?: CodexSharedRecoveryPlan,\n ): Promise<CodexAppServerSession> {\n if (handle.providerId !== PROVIDER_ID) {\n throw new Error(`Cannot resume ${handle.providerId} with the Codex provider`);\n }\n const stored = { ...parseStoredConfig(handle.opaque), ...(collaborationMode ? { collaborationMode } : {}) };\n const session = new CodexAppServerSession(transport, stored, codexHome, undefined, restrictedNative, recoveryPlan);\n session.threadId = handle.sessionId;\n session.runtime.registerRoot(handle.sessionId);\n await session.initialize();\n const resumed = await transport.request('thread/resume', {\n threadId: handle.sessionId,\n config: { 'features.default_mode_request_user_input': true },\n ...(restrictedNative ? { sandbox: 'read-only', approvalPolicy: 'on-request' } : {}),\n ...(stored.cwd ? { cwd: stored.cwd } : {}),\n ...(stored.model ? { model: stored.model } : {}),\n ...(stored.systemPrompt ? { developerInstructions: stored.systemPrompt } : {}),\n }).catch((error: unknown) => {\n if (error instanceof CodexAppServerRpcError && error.code === -32600\n && error.message === `thread ${handle.sessionId} already has an active writer`) {\n throw new AgentSessionInUseError('This session is in use by another Codex client. Close the original Codex client, then try opening this session again.');\n }\n throw error;\n });\n session.setThreadFromResponse(resumed, 'thread/resume');\n const history = await transport.request('thread/read', {\n threadId: handle.sessionId,\n includeTurns: true,\n });\n session.runtime.inspectHistory(handle.sessionId, history);\n session.finishBootstrap(\n projectCodexThreadHistory(history, handle.sessionId, { images: session.images, cwd: session.config.cwd }),\n collectCodexThreadHistoryItems(history, handle.sessionId),\n );\n session.runtime.enableRecovery();\n return session;\n }\n\n observe(): AsyncIterable<ProviderStreamItem> {\n this.assertOpen();\n if (this.observing) throw new Error('Codex session observation already has a consumer');\n this.observing = true;\n const initial = this.initialItems;\n const queue = this.liveQueue;\n return {\n async *[Symbol.asyncIterator]() {\n for (const item of initial) yield item;\n for await (const item of queue) yield item;\n },\n };\n }\n\n async sendMessage(text: string, options?: AgentMessageOptions): Promise<AgentMessageReceipt> {\n this.assertMessageReady();\n if (options?.additionalContext !== undefined) {\n assertAdditionalContextSupport(this.transport);\n for (const [key, entry] of Object.entries(options.additionalContext)) {\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(key) || !entry || !['application', 'untrusted'].includes(entry.kind) || typeof entry.value !== 'string') throw new AgentInputRejectedError('Codex additional context is invalid.', 'context_unavailable');\n // Native context fragments are truncated above 1000 approximate tokens (4000 UTF-8 bytes).\n if (Buffer.byteLength(entry.value, 'utf8') > 4000) throw new AgentInputRejectedError('Codex additional context exceeds 4000 UTF-8 bytes; no input was submitted.', 'context_unavailable');\n }\n if (this.activeTurnId || this.runtimeStatus !== 'idle') throw new AgentInputRejectedError('Codex additional context requires an idle Session.');\n }\n if (options?.requireIdle && options.delivery === 'next_turn') throw new AgentInputRejectedError('Idle-only delivery cannot be combined with next-turn delivery.');\n if (options?.delivery === 'next_turn') throw new Error('Codex does not support next-turn message delivery.');\n if (this.sendingMessage) throw new Error('A Codex message is already being submitted.');\n if (!text.trim()) throw new Error('Codex message must not be empty.');\n if (options?.requireIdle && (this.activeTurnId || this.runtimeStatus !== 'idle')) throw new AgentInputRejectedError('Codex requires an idle Session for this message.');\n this.sendingMessage = true;\n try {\n if (!this.activeTurnId) return await this.startMessageTurn(text, options?.clientMessageId, options?.additionalContext);\n let expectedTurnId = this.activeTurnId;\n for (let attempt = 0; ; attempt += 1) {\n const revision = this.statusRevision;\n try {\n return await this.steerTurn(text, expectedTurnId, options?.clientMessageId);\n } catch (error) {\n if (!(error instanceof CodexAppServerRpcError) || error.code !== -32602) throw error;\n this.assertMessageReady();\n if (error.message === 'no active turn to steer') {\n // A native rejection confirms non-delivery, but a newer turn notification wins.\n if (this.activeTurnId && (this.activeTurnId !== expectedTurnId || this.statusRevision !== revision)) throw error;\n if (this.runtimeStatus === 'failed' || this.runtimeStatus === 'closed'\n || (this.statusRevision !== revision && this.runtimeStatus !== 'idle')) throw error;\n this.activeTurnId = undefined;\n this.runtimeStatus = 'idle';\n this.statusRevision += 1;\n this.assertMessageReady();\n return await this.startMessageTurn(text, options?.clientMessageId, options?.additionalContext);\n }\n const mismatch = /^expected active turn id `([^`]+)` but found `([^`]+)`$/.exec(error.message);\n if (attempt > 0 || !mismatch || mismatch[1] !== expectedTurnId || mismatch[2] === expectedTurnId || this.statusRevision !== revision) throw error;\n expectedTurnId = mismatch[2]!;\n this.activeTurnId = expectedTurnId;\n this.runtimeStatus = 'running';\n this.statusRevision += 1;\n }\n }\n } finally { this.sendingMessage = false; }\n }\n\n private assertMessageReady(): void {\n this.assertDirectInput();\n if (this.commandInteractions.pending || (!this.activeTurnId && this.pendingInteractions.size > 0)) throw new Error('Codex has pending interactions');\n if (this.executingCommand) throw new Error('A Codex command is active');\n if (this.changingSetting || this.startingTurn) throw new Error('A Codex turn or setting change is already active');\n }\n\n async steer(text: string, options?: AgentSteerOptions): Promise<AgentMessageReceipt> {\n this.assertDirectInput();\n if (!this.activeTurnId) throw new AgentInputRejectedError('Codex has no active turn.');\n if (options?.expectedTurnId && options.expectedTurnId !== this.activeTurnId) throw new AgentInputRejectedError('Codex active turn changed.');\n if (!text.trim()) throw new AgentInputRejectedError('Codex message must not be empty.');\n try { return await this.steerTurn(text, this.activeTurnId, options?.clientMessageId); }\n catch (error) {\n if (error instanceof CodexAppServerRpcError && error.code === -32602) throw new AgentInputRejectedError(error.message);\n throw error;\n }\n }\n\n private async steerTurn(text: string, expectedTurnId: string, clientMessageId?: string): Promise<AgentMessageReceipt> {\n const result = await this.runtime.request('turn/steer', {\n threadId: this.threadId, expectedTurnId,\n ...(clientMessageId === undefined ? {} : { clientUserMessageId: clientMessageId }),\n input: [{ type: 'text', text, text_elements: [] }],\n });\n if (!isRecord(result) || !readString(result.turnId)) throw new Error('Codex steering receipt has no native turn identity.');\n return { turnId: readString(result.turnId)! };\n }\n\n private async startMessageTurn(text: string, clientMessageId?: string, additionalContext?: AgentMessageOptions['additionalContext']): Promise<AgentMessageReceipt> {\n const turnId = await this.startTurn(text, undefined, clientMessageId, additionalContext);\n if (!turnId) throw new Error('Codex input receipt has no native turn identity.');\n return { turnId };\n }\n\n async cancel(): Promise<void> {\n this.assertDirectInput();\n if (!this.activeTurnId) throw new Error('Codex has no active turn.');\n await this.runtime.request('turn/interrupt', { threadId: this.threadId, turnId: this.activeTurnId });\n }\n\n private async startTurn(text: string, skill?: { name: string; path: string }, clientMessageId?: string, additionalContext?: AgentMessageOptions['additionalContext']): Promise<string | undefined> {\n this.assertDirectInput();\n if (!this.threadId) throw new Error('Codex session has no thread');\n if (!text.trim() && !skill) throw new Error('Codex message must not be empty');\n if (this.changingSetting || this.startingTurn || this.runtimeStatus === 'running') throw new Error('A Codex turn is already active');\n const collaborationMode = this.buildCollaborationMode();\n const statusRevision = this.statusRevision;\n this.startingTurn = true;\n this.usage.prepareTurn({ provider: this.config.modelProvider, model: this.config.model });\n try {\n const result = await this.runtime.request('turn/start', {\n threadId: this.threadId,\n ...(clientMessageId === undefined ? {} : { clientUserMessageId: clientMessageId }),\n ...(additionalContext === undefined ? {} : { additionalContext }),\n input: [...(skill ? [{ type: 'skill', ...skill }] : []), ...(text ? [{ type: 'text', text, text_elements: [] }] : [])],\n ...(this.config.model ? { model: this.config.model } : {}),\n ...(this.config.reasoningEffort ? { effort: this.config.reasoningEffort } : {}),\n ...(collaborationMode ? { collaborationMode } : {}),\n });\n if (statusRevision === this.statusRevision && isRecord(result) && isRecord(result.turn) && readString(result.turn.id)) {\n this.runtimeStatus = 'running';\n this.activeTurnId = readString(result.turn.id);\n }\n return isRecord(result) && isRecord(result.turn) ? readString(result.turn.id) : undefined;\n } finally {\n this.usage.abandonPreparedTurn();\n this.startingTurn = false;\n }\n }\n\n async setSessionSetting(id: string, value: string): Promise<void> {\n if (this.executingCommand || this.commandInteractions.pending || this.sendingMessage) throw new Error('Codex has pending command interactions or message submission');\n await this.applySessionSetting(id, value);\n }\n\n private async applySessionSetting(id: string, value: string): Promise<void> {\n this.assertDirectInput();\n const setting = this.settings.describe(this.config.model, this.config.reasoningEffort).find(setting => setting.id === id);\n if (this.restrictedNative && setting?.category === 'permissions') {\n if (setting.value === value) return;\n throw new Error('Native permission settings are locked by Host policy.');\n }\n if (this.changingSetting || this.startingTurn || this.runtimeStatus !== 'idle' || this.activeTurnId) throw new Error('Codex settings can only change while idle.');\n if (this.pendingInteractions.size > 0) throw new Error('Codex settings cannot change with pending interactions.');\n const patch = this.settings.patch(id, value, this.config.model, this.config.reasoningEffort);\n const collaborationMode = this.buildCollaborationMode();\n if (collaborationMode) {\n patch.collaborationMode = { ...collaborationMode, settings: { ...collaborationMode.settings,\n ...(typeof patch.model === 'string' ? { model: patch.model } : {}),\n ...(typeof patch.effort === 'string' ? { reasoning_effort: patch.effort } : {}),\n } };\n }\n if (this.settings.describe(this.config.model, this.config.reasoningEffort).find((setting) => setting.id === id)?.value === value) return;\n this.changingSetting = true;\n let deadline: ReturnType<typeof setTimeout> | undefined;\n const confirmed = new Promise<void>((resolve, reject) => {\n this.settingConfirmation = { id, value, resolve, reject };\n deadline = setTimeout(() => reject(new Error('Codex did not confirm the requested setting. Check the current session state before retrying.')), 10_000);\n });\n try {\n await Promise.all([this.runtime.request('thread/settings/update', { threadId: this.threadId, ...patch }), confirmed]);\n } finally {\n clearTimeout(deadline);\n this.settingConfirmation = undefined;\n this.changingSetting = false;\n }\n }\n\n async setPlanning(active: boolean): Promise<void> {\n this.assertDirectInput();\n if (!this.capabilities.planning) throw new Error('Codex planning control is unsupported.');\n if (this.executingCommand || this.commandInteractions.pending || this.sendingMessage) throw new Error('Codex has pending command interactions or message submission');\n if (this.changingSetting || this.startingTurn || this.runtimeStatus !== 'idle') throw new Error('Codex planning can only change while idle.');\n if (this.pendingInteractions.size > 0) throw new Error('Codex planning cannot change with pending interactions.');\n this.collaborationModeSelected = true;\n if (active) this.config.collaborationMode = 'plan';\n else delete this.config.collaborationMode;\n this.emitRuntimeUpdate();\n }\n\n private buildCollaborationMode(): { mode: string; settings: { model: string; reasoning_effort: string | null; developer_instructions: string | null } } | undefined {\n if (!this.planningModes || (!this.ownsRuntime && !this.collaborationModeSelected && !this.config.collaborationMode)) return undefined;\n const selected = this.config.collaborationMode === 'plan' ? this.planningModes.plan : this.planningModes.normal;\n const model = this.config.model ?? selected.model;\n if (!model) throw new Error('Codex collaboration mode requires a model');\n return {\n mode: selected.mode,\n settings: {\n model,\n reasoning_effort: this.config.reasoningEffort ?? selected.reasoningEffort ?? null,\n developer_instructions: this.config.systemPrompt ?? selected.developerInstructions ?? null,\n },\n };\n }\n\n async respondToInteraction(requestId: string, response: AgentInteractionResponse): Promise<void> {\n this.assertOpen();\n this.runtime.assertConnected();\n if (await this.commandInteractions.respond(requestId, response)) return;\n const pending = this.pendingInteractions.get(requestId);\n if (!pending) throw new Error(`No pending Codex interaction ${requestId}`);\n if (pending.kind !== response.kind) {\n throw new Error(`Codex interaction ${requestId} requires a ${pending.kind} response`);\n }\n if (response.kind === 'plan_approval' && response.action !== 'reject' && 'feedback' in response) throw new Error('Codex approval cannot contain revision feedback.');\n validateInteractionResponse(pending.request, response);\n if (pending.request.kind === 'plan_approval' && response.kind === 'plan_approval') {\n await this.respondToPlan(pending.request, response);\n return;\n }\n const nativeResponse = pending.respond(response);\n this.pendingInteractions.delete(requestId);\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n pending.resolve(nativeResponse);\n this.emitInteractionResolved(requestId, redactInteractionResponse(pending.request, response));\n }\n\n async listCommands(): Promise<AgentCommand[]> {\n this.assertOpen();\n const commands = await this.discoverCommands();\n return commands.filter(command => !this.restrictedNative || command.descriptor.id !== 'permissions').map(({ descriptor }) => descriptor);\n }\n\n async executeCommand(id: string, args: string): Promise<AgentCommandResult> {\n this.assertCommandIdle();\n if (this.restrictedNative && id === 'permissions') throw new AgentCommandRejectedError('Native permission commands are locked by Host policy.');\n if (this.executingCommand) throw new AgentCommandRejectedError('A Codex command is already active.');\n if (this.commandInteractions.pending) throw new AgentCommandRejectedError('Codex has pending command interactions.');\n this.executingCommand = true;\n try {\n const command = (await this.discoverCommands()).find(({ descriptor }) => descriptor.id === id);\n this.assertCommandIdle();\n if (!command) throw new AgentCommandRejectedError('Codex command is unavailable. Refresh the command directory.');\n if (command.type === 'skill') return { execution: 'turn', turnId: await this.startTurn(args, { name: command.name, path: command.path }) };\n else if (command.type === 'prompt') return { execution: 'turn', turnId: await this.startTurn(expandCodexPrompt(command.body, args)) };\n else {\n if (args.trim()) throw new AgentCommandRejectedError('This Codex command does not accept arguments.');\n if (id === 'compact') await this.runtime.request('thread/compact/start', { threadId: this.threadId });\n else {\n await this.refreshSettings();\n this.assertCommandIdle();\n if (id === 'model') this.openSettingQuestion('model', true);\n else this.openPermissionsQuestion();\n }\n }\n return {};\n } finally { this.executingCommand = false; }\n }\n\n private assertCommandIdle(): void {\n this.assertDirectInput();\n if (this.changingSetting || this.startingTurn || this.sendingMessage || this.activeTurnId || this.runtimeStatus !== 'idle') throw new Error('Codex commands require an idle session.');\n if (this.pendingInteractions.size > 0) throw new Error('Codex has pending native interactions.');\n }\n\n private openSettingQuestion(id: string, followWithEffort = false): void {\n const setting = this.settings.describe(this.config.model, this.config.reasoningEffort).find((item) => item.id === id);\n if (!setting?.mutable || !setting.options.length) throw new Error('Codex setting is unavailable.');\n this.openCommandQuestion(setting, async (value) => {\n this.assertCommandIdle();\n await this.refreshSettings();\n await this.applySessionSetting(id, value);\n if (followWithEffort) {\n const effort = this.settings.describe(this.config.model, this.config.reasoningEffort).find((item) => item.id === 'effort');\n if (effort?.mutable && effort.options.length) this.openSettingQuestion('effort');\n }\n });\n }\n\n private openPermissionsQuestion(): void {\n const available = this.settings.describe(this.config.model, this.config.reasoningEffort).filter((setting) => setting.category === 'permissions' && setting.mutable && setting.options.length);\n if (!available.length) throw new Error('Codex permission settings are unavailable.');\n this.openCommandQuestion({\n id: 'permissions', category: 'permissions', label: 'Permissions', value: null, mutable: true, scope: 'session',\n options: available.map(({ id, label, description }) => ({ value: id, label, description })),\n }, async (value) => {\n this.assertCommandIdle();\n await this.refreshSettings();\n this.openSettingQuestion(value);\n });\n }\n\n private openCommandQuestion(setting: AgentSessionSetting, handler: (value: string) => Promise<void>): void {\n this.commandInteractions.open({ kind: 'question', questions: [{\n questionId: setting.id, header: setting.label, prompt: `Choose ${setting.label.toLowerCase()}`,\n description: [setting.value ? `Current: ${setting.options.find(({ value }) => value === setting.value)?.label ?? setting.value}.` : '', setting.description ?? ''].filter(Boolean).join(' '),\n required: true, selection: 'single', options: setting.options, allowCustomText: false, allowDismiss: true,\n }] }, async (response) => {\n if (response.kind !== 'question') throw new Error('Codex command requires a question response.');\n const value = response.answers.find(({ questionId }) => questionId === setting.id)?.selectedValues[0];\n if (!value) throw new Error('Codex command requires a selection.');\n await handler(value);\n });\n }\n\n async runtimeInfo(): Promise<AgentRuntimeInfo> {\n if (this.threadId && this.runtime.hasThread(this.threadId)) {\n try {\n const history = await this.runtime.request('thread/read', { threadId: this.threadId, includeTurns: true });\n this.runtime.inspectHistory(this.threadId, history);\n } catch {\n // A temporarily unavailable native read must not erase known relations.\n }\n }\n return this.currentRuntimeInfo();\n }\n\n private currentRuntimeInfo(): AgentRuntimeInfo {\n return {\n providerId: PROVIDER_ID,\n sessionId: this.threadId ?? null,\n status: (this.commandInteractions.pending || (!this.ownsRuntime && this.pendingInteractions.size > 0)) && this.runtimeStatus !== 'closed' && this.runtimeStatus !== 'failed' ? 'waiting' : this.runtimeStatus,\n childSessions: this.threadId ? this.runtime.childSessions(this.threadId) : [],\n ...(this.config.cwd ? { cwd: this.config.cwd } : {}),\n model: this.config.model ?? null,\n settings: this.settings.describe(this.config.model, this.config.reasoningEffort).map((setting) => this.acceptsDirectInput && !(this.restrictedNative && setting.category === 'permissions') ? setting : { ...setting, mutable: false }),\n mode: this.config.collaborationMode ?? null,\n ...(this.planningModes ? { planning: { active: this.config.collaborationMode === 'plan' } } : {}),\n persistence: this.threadId ? {\n providerId: PROVIDER_ID,\n sessionId: this.threadId,\n opaque: JSON.stringify(this.config),\n } : undefined,\n };\n }\n\n async readResource(locator: string): Promise<AgentResourceReadResult> {\n this.assertOpen();\n if (locator.startsWith('skill:')) return this.runtime.runConnected(() => readCodexCommandDocumentation(this.runtime, this.config.cwd, this.codexHome, locator));\n return this.images?.readResource(locator) ?? { status: 'unavailable', reason: 'Codex image reader is unavailable.' };\n }\n\n async dispose(): Promise<void> {\n if (this.disposed || this.released) return;\n if (!this.ownsRuntime) {\n this.released = true;\n this.observing = false;\n this.historyRefreshNeeded = true;\n this.liveQueue.close();\n this.liveQueue = new AsyncQueue<ProviderStreamItem>();\n return;\n }\n this.disposed = true;\n this.notifyRuntimeClosed();\n this.images?.stop();\n this.runtimeStatus = 'closed';\n this.resolvePendingInteractions();\n this.liveQueue.close();\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n if (this.ownsRuntime) {\n await this.runtime.dispose();\n }\n }\n\n private discoverCommands(): Promise<CodexCommand[]> {\n return this.runtime.runConnected(() => discoverCodexCommands(this.runtime, this.config.cwd, this.codexHome));\n }\n\n private async refreshSettings(): Promise<void> {\n const discovered = new CodexSessionSettings();\n await this.runtime.runConnected(() => discovered.discover(this.runtime));\n this.settings.inheritCatalog(discovered);\n }\n\n private async initialize(): Promise<void> {\n await initializeCodexTransport(this.transport);\n await this.refreshSettings();\n let modes: unknown;\n try {\n modes = await this.runtime.request('collaborationMode/list', {});\n } catch (error) {\n if (!(error instanceof CodexAppServerRpcError) || error.code !== -32601) throw error;\n modes = undefined;\n }\n this.planningModes = readCodexPlanningModes(modes);\n this.capabilities.planning = this.planningModes !== undefined;\n this.capabilities.interactions.planApproval = this.planningModes !== undefined;\n if (this.config.collaborationMode === 'plan' && !this.planningModes) {\n throw new Error('Codex planning control is unsupported by this app-server.');\n }\n }\n\n private setThreadFromResponse(response: unknown, method: string): void {\n if (!isRecord(response) || !isRecord(response.thread)) {\n throw new Error(`Codex ${method} returned no thread`);\n }\n const threadId = readString(response.thread.id);\n if (!threadId) throw new Error(`Codex ${method} returned no thread id`);\n this.threadId = threadId;\n if (this.ownsRuntime) this.runtime.registerRoot(threadId);\n this.applyThreadSettings({ ...response, sandboxPolicy: response.sandbox });\n if (!this.config.model) this.config.model = readString(response.model);\n if (!this.config.cwd) this.config.cwd = readString(response.cwd) ?? readString(response.thread.cwd);\n if (!this.config.reasoningEffort) this.config.reasoningEffort = readString(response.reasoningEffort);\n this.images = new CodexImageRegistry(threadId);\n this.projector = new CodexEventProjector(threadId, { images: this.images, cwd: this.config.cwd });\n }\n\n private projectNotification(method: string, params: unknown): ProviderObservation | null {\n const observation = this.projector?.projectNotification(method, params) ?? null;\n if (method === 'thread/tokenUsage/updated' && isRecord(params) && params.threadId === this.threadId) this.usage.sample(params);\n if (!observation || !this.threadId) return observation;\n const event = observation.event;\n const route = { provider: this.config.modelProvider, model: this.config.model };\n if (event.type === 'turn_started' && event.turnId) this.usage.startTurn(event.turnId, route);\n if ((event.type === 'turn_completed' || event.type === 'turn_failed' || event.type === 'turn_canceled') && event.turnId) {\n const accounting = this.usage.finishTurn(this.threadId, event.turnId, route);\n if (accounting.length) this.emit({ ...observation, sourceKey: `${observation.sourceKey}:usage`,\n event: { type: 'usage_updated', provider: PROVIDER_ID, turnId: event.turnId, usage: { accounting } } });\n }\n return observation;\n }\n\n private finishBootstrap(\n history: ProviderObservation[],\n historyItems: ReadonlyMap<string, Record<string, unknown>>,\n priorText?: ReadonlyMap<string, string>,\n ): void {\n if (!this.threadId || !this.projector) throw new Error('Codex bootstrap has no thread');\n const historyKeys = new Set(history.map((item) => item.sourceKey));\n this.initialItems = [\n ...history,\n { type: 'history_boundary' },\n ];\n for (const item of historyItems.values()) this.projector.seedHistoryItem(item);\n const historyText = this.projector.snapshotText();\n const coveredCharacters = new Map<string, number>();\n for (let raw of this.bufferedNotifications) {\n const itemId = readItemId(raw.params);\n const historyItem = itemId ? historyItems.get(itemId) : undefined;\n if (historyItem && isHistoryCoveredItemNotification(raw.method)) {\n if (raw.method !== 'item/completed') {\n if (!priorText || !itemId || !isRecord(raw.params) || typeof raw.params.delta !== 'string') continue;\n if (!coveredCharacters.has(itemId)) {\n const prior = priorText.get(itemId) ?? '';\n const current = historyText.get(itemId) ?? '';\n coveredCharacters.set(itemId, current.startsWith(prior) ? current.length - prior.length : 0);\n }\n const covered = coveredCharacters.get(itemId)!;\n const delta = raw.params.delta;\n coveredCharacters.set(itemId, Math.max(0, covered - delta.length));\n if (covered >= delta.length) continue;\n raw = { ...raw, params: { ...raw.params, delta: delta.slice(covered) } };\n }\n const completedItem = readItem(raw.params);\n if (completedItem && isDeepStrictEqual(completedItem, historyItem)) continue;\n }\n if (this.handleRuntimeNotification(raw.method, raw.params)) continue;\n const observation = this.projectNotification(raw.method, raw.params);\n if (observation) this.applyTurnObservation(observation);\n if (observation && !historyKeys.has(observation.sourceKey)) this.preReadyEvents.push(observation);\n }\n this.bufferedNotifications.length = 0;\n if (this.runtimeStatus === 'starting') this.runtimeStatus = 'idle';\n const completeHistory = new Map([...history, ...this.preReadyEvents].map(item => [item.sourceKey, item]));\n this.initialItems.push({ type: 'session_restored', runtimeInfo: this.currentRuntimeInfo(), capabilities: structuredClone(this.capabilities),\n activeTurn: this.activeTurnId ? { turnId: this.activeTurnId } : null,\n pendingInteractions: [...this.pendingInteractions.values()].map(pending => structuredClone(pending.request)), observations: [...completeHistory.values()] });\n this.initialItems.push(...this.preReadyEvents);\n this.preReadyEvents.length = 0;\n this.ready = true;\n }\n\n private handleNotification(method: string, params: unknown): void {\n if (this.handleRuntimeNotification(method, params)) return;\n if (this.handleServerRequestResolved(method, params)) return;\n if (!this.ready || !this.projector) {\n this.bufferedNotifications.push({ method, params });\n return;\n }\n if (isRecord(params) && readString(params.threadId) && params.threadId !== this.threadId) return;\n if (method === 'turn/started') this.latestPlan = undefined;\n if (this.config.collaborationMode === 'plan') {\n if (method === 'item/plan/delta') return;\n const item = readItem(params);\n if ((method === 'item/started' || method === 'item/completed') && item?.type === 'plan') {\n const text = readString(item.text);\n const id = readString(item.id);\n if (method === 'item/completed' && text && id) this.latestPlan = { id, text };\n return;\n }\n }\n const observation = this.projectNotification(method, params);\n if (!observation) return;\n this.applyTurnObservation(observation);\n this.emit(observation);\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n if ((observation.event.type === 'turn_canceled' || observation.event.type === 'turn_failed') && observation.event.turnId) {\n this.resolvePendingInteractions(observation.event.turnId);\n }\n if (observation.event.type === 'turn_completed' && this.acceptsDirectInput && this.config.collaborationMode === 'plan' && this.latestPlan) {\n const plan = this.latestPlan;\n this.latestPlan = undefined;\n const request: Extract<AgentInteractionRequest, { kind: 'plan_approval' }> = {\n kind: 'plan_approval', requestId: `plan:${this.threadId}:${plan.id}`,\n plan: plan.text, allowedActions: ['approve_and_resume', 'reject'],\n };\n this.pendingInteractions.set(request.requestId, { kind: 'plan_approval', request, turnId: observation.event.turnId, resolve: () => undefined, reject: () => undefined, respond: () => undefined });\n this.emitInteractionRequested(request);\n }\n }\n\n private applyTurnObservation(observation: ProviderObservation): void {\n if ((observation.event.type === 'turn_started'\n || observation.event.type === 'turn_completed'\n || observation.event.type === 'turn_failed'\n || observation.event.type === 'turn_canceled')\n && observation.event.turnId && !this.observedTurnIds.has(observation.event.turnId)) {\n this.observedTurnIds.add(observation.event.turnId);\n this.nativeTurnRevision += 1;\n }\n if (observation.event.type === 'turn_started') {\n this.activeTurnId = observation.event.turnId;\n this.statusRevision += 1;\n this.runtimeStatus = 'running';\n }\n if (\n observation.event.type === 'turn_completed'\n || observation.event.type === 'turn_failed'\n || observation.event.type === 'turn_canceled'\n ) {\n this.statusRevision += 1;\n this.runtimeStatus = observation.event.type === 'turn_failed' ? 'failed' : 'idle';\n this.activeTurnId = undefined;\n }\n }\n\n private async respondToPlan(\n request: Extract<AgentInteractionRequest, { kind: 'plan_approval' }>,\n response: Extract<AgentInteractionResponse, { kind: 'plan_approval' }>,\n ): Promise<void> {\n if (!request.allowedActions.includes(response.action)) throw new Error(`Unsupported Codex plan action ${response.action}`);\n if (response.action !== 'reject' && 'feedback' in response) throw new Error('Codex approval cannot contain revision feedback.');\n if (this.changingSetting || this.startingTurn || this.runtimeStatus === 'running') throw new Error('Codex plan review requires an idle turn.');\n const pending = this.pendingInteractions.get(request.requestId);\n const previousMode = this.config.collaborationMode;\n const nativeTurnRevision = this.nativeTurnRevision;\n if (response.action === 'approve_and_resume') delete this.config.collaborationMode;\n try {\n if (response.action === 'approve_and_resume') {\n await this.startTurn(`Implement the approved plan.\\n\\n${request.plan}\\n\\nComplete the work and verify the result.`);\n } else if (response.action === 'reject' && response.feedback?.trim()) {\n await this.startTurn(`Revise the proposed plan using this feedback. Stay in planning mode and present the revised plan.\\n\\nFeedback:\\n${response.feedback.trim()}\\n\\nPrevious plan:\\n${request.plan}`);\n }\n } catch (error) {\n if (this.pendingInteractions.get(request.requestId) !== pending) throw error;\n // A new native turn proves acceptance even when its RPC reply fails later.\n if (nativeTurnRevision === this.nativeTurnRevision) {\n if (previousMode) this.config.collaborationMode = previousMode;\n else delete this.config.collaborationMode;\n this.emitRuntimeUpdate();\n throw error;\n }\n }\n if (this.pendingInteractions.get(request.requestId) !== pending) throw new Error('Codex plan request belongs to an old connection');\n this.pendingInteractions.delete(request.requestId);\n this.emitInteractionResolved(request.requestId, response);\n this.emitRuntimeUpdate();\n }\n\n private handleRuntimeNotification(method: string, params: unknown): boolean {\n if (!this.ownsRuntime && method === 'thread/started' && isRecord(params) && isRecord(params.thread) && params.thread.id === this.threadId) {\n if (!this.ownsRuntime) {\n this.inputCapabilitiesRevision += 1;\n this.acceptsDirectInput = params.thread.canAcceptDirectInput === true;\n this.runtimeStatus = readThreadRuntimeStatus(params.thread.status) ?? this.runtimeStatus;\n if (this.runtimeStatus !== 'closed') this.restoreInteractions();\n this.refreshInputCapabilities();\n if (this.ready) this.emitRuntimeUpdate();\n }\n return true;\n }\n if (method !== 'thread/settings/updated' && method !== 'thread/status/changed') return false;\n if (!isRecord(params)) return true;\n const nativeThreadId = readString(params.threadId);\n if (this.threadId && nativeThreadId && nativeThreadId !== this.threadId) return true;\n\n if (method === 'thread/settings/updated') {\n if (!isRecord(params.threadSettings)) return true;\n this.applyThreadSettings(params.threadSettings);\n } else {\n const status = readThreadRuntimeStatus(params.status);\n if (!status) return true;\n const wasClosed = this.runtimeStatus === 'closed';\n this.statusRevision += 1;\n this.runtimeStatus = status;\n if (status === 'closed' && !this.ownsRuntime) {\n this.inputCapabilitiesRevision += 1;\n this.acceptsDirectInput = false;\n this.refreshInputCapabilities();\n this.disableInteractions();\n this.resolvePendingInteractions();\n } else if (wasClosed && !this.ownsRuntime) {\n // Native resume can publish status changes without a thread/started notification.\n void this.refreshNativeInputCapabilities();\n }\n }\n\n if (this.ready && this.threadId) this.emitRuntimeUpdate();\n return true;\n }\n\n private applyThreadSettings(settings: Record<string, unknown>): void {\n this.settings.apply(settings);\n const cwd = readString(settings.cwd);\n const model = readString(settings.model);\n if (cwd) this.config.cwd = cwd;\n if (model) this.config.model = model;\n const modelProvider = readString(settings.modelProvider);\n if (modelProvider) this.config.modelProvider = modelProvider;\n if (Object.prototype.hasOwnProperty.call(settings, 'effort')) {\n const effort = readString(settings.effort);\n if (effort) this.config.reasoningEffort = effort;\n else delete this.config.reasoningEffort;\n }\n if (isRecord(settings.collaborationMode)) {\n if (readString(settings.collaborationMode.mode) === 'plan') this.config.collaborationMode = 'plan';\n else delete this.config.collaborationMode;\n }\n if (!this.ownsRuntime) this.refreshInputCapabilities();\n const confirmation = this.settingConfirmation;\n if (confirmation && this.settings.describe(this.config.model, this.config.reasoningEffort).find(({ id }) => id === confirmation.id)?.value === confirmation.value) {\n confirmation.resolve();\n }\n }\n\n private emitRuntimeUpdate(): void {\n if (!this.threadId) return;\n this.runtime.sessionChanged(this.threadId);\n this.emit({\n type: 'observation',\n sourceKey: `runtime:${this.threadId}`,\n nativeRevision: ++this.runtimeRevision,\n occurredAt: Date.now(),\n delivery: 'live',\n event: {\n type: 'runtime_updated', provider: PROVIDER_ID, runtimeInfo: this.currentRuntimeInfo(),\n },\n });\n }\n\n private handleServerRequestResolved(method: string, params: unknown): boolean {\n if (method !== 'serverRequest/resolved') return false;\n if (!isRecord(params)) return true;\n const nativeThreadId = readString(params.threadId);\n if (!this.threadId || nativeThreadId !== this.threadId) return true;\n const nativeRequestId = params.requestId;\n if (typeof nativeRequestId !== 'string' && typeof nativeRequestId !== 'number') return true;\n const suffix = this.requestOccurrences.get(String(nativeRequestId)) ?? String(nativeRequestId);\n this.requestOccurrences.delete(String(nativeRequestId));\n const requestId = [`question:${suffix}`, `tool:${suffix}`, `elicitation:${suffix}`, `permissions:${suffix}`]\n .find((candidate) => this.pendingInteractions.has(candidate));\n if (!requestId) return true;\n this.cancelInteraction(requestId);\n return true;\n }\n\n private emitInteractionResolved(\n requestId: string,\n response: AgentInteractionResponse,\n ): void {\n this.emit({\n type: 'observation',\n sourceKey: `interaction:${requestId}:resolved`,\n occurredAt: Date.now(),\n delivery: 'live',\n event: {\n type: 'interaction_resolved', provider: PROVIDER_ID, requestId, response,\n },\n });\n }\n\n private emit(observation: ProviderObservation): void {\n if (this.disposed) return;\n if (!this.ready) {\n this.preReadyEvents.push(observation);\n return;\n }\n this.liveQueue.push(observation);\n if (!this.ownsRuntime && !this.observing) {\n if (this.liveQueue.trim(512) || observation.event.type === 'interaction_requested' || observation.event.type === 'interaction_resolved') this.historyRefreshNeeded = true;\n }\n }\n\n private handleTransportTermination(error: Error): void {\n if (this.disposed || this.transportFailure) return;\n this.transportFailure = error;\n this.notifyRuntimeClosed();\n this.images?.stop();\n this.runtimeStatus = 'failed';\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n this.resolvePendingInteractions();\n this.liveQueue.fail(error);\n }\n\n private resolvePendingInteractions(turnId?: string): void {\n if (turnId === undefined) this.commandInteractions.clear();\n for (const [requestId, pending] of this.pendingInteractions) {\n if (turnId === undefined || pending.turnId === turnId) this.cancelInteraction(requestId);\n }\n }\n\n private cancelInteraction(requestId: string): void {\n const pending = this.pendingInteractions.get(requestId);\n if (!pending) return;\n this.pendingInteractions.delete(requestId);\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n pending.reject(new CodexServerRequestCanceled('Codex native request is no longer pending'));\n const response: AgentInteractionResponse = pending.kind === 'question'\n ? { kind: 'question', answers: [], dismissed: true }\n : pending.kind === 'form' ? { kind: 'form', action: 'cancel' }\n : pending.kind === 'external_action' ? { kind: 'external_action', action: 'cancel' }\n : pending.kind === 'permission_approval' ? { kind: 'permission_approval', decision: 'deny' }\n : pending.kind === 'plan_approval' ? { kind: 'plan_approval', action: 'reject' }\n : { kind: 'tool_approval', decision: 'cancel' };\n this.emitInteractionResolved(requestId, response);\n if (pending.kind === 'permission_approval') this.emitUnavailable(requestId, 'Codex permission request closed by the native session; the remote client granted no permissions.');\n }\n\n private handleQuestionRequest(params: unknown, nativeRequestId: string | number): Promise<unknown> {\n this.assertRequestThread(params);\n if (!isRecord(params) || !Array.isArray(params.questions)) {\n return Promise.reject(new Error('Codex question request has no questions'));\n }\n const questions = params.questions.map((value, index) => mapCodexQuestion(value, index));\n if (questions.length === 0) {\n return Promise.reject(new Error('Codex question request has no valid questions'));\n }\n const requestId = `question:${String(nativeRequestId)}`;\n const request: Extract<AgentInteractionRequest, { kind: 'question' }> = {\n kind: 'question', requestId, questions,\n };\n return this.queueInteraction(request, (response) => {\n if (response.kind !== 'question') throw new Error('Invalid question response');\n return mapCodexQuestionResponse(request, response);\n }, readString(params.turnId));\n }\n\n private handleToolRequest(nativeKind: 'command' | 'file', params: unknown, id: string | number): Promise<unknown> {\n this.assertRequestThread(params);\n const mapped = mapCodexToolApproval(nativeKind, params, `tool:${id}`);\n const request = this.restrictedNative ? { ...mapped.request, allowScopes: mapped.request.allowScopes.filter(scope => scope === 'once'), policies: undefined } : mapped.request;\n return this.queueInteraction(request, mapped.respond, readString(params.turnId));\n }\n\n private handleElicitationRequest(params: unknown, id: string | number): Promise<unknown> {\n this.assertRequestThread(params);\n try {\n const request = mapCodexElicitation(params, `elicitation:${id}`);\n return this.queueInteraction(request, mapCodexElicitationResponse, readString(params.turnId));\n } catch (error) {\n this.emitUnavailable(`elicitation:${id}`, 'Codex elicitation unavailable: unsupported or invalid form schema or external action.');\n return Promise.resolve({ action: 'decline', content: null, _meta: null });\n }\n }\n\n private handlePermissionRequest(params: unknown, id: string | number): Promise<unknown> {\n this.assertRequestThread(params);\n try {\n const { permissions, grant } = mapCodexPermissions(params.permissions);\n const cwd = readString(params.cwd);\n const environment = readString(params.environmentId);\n const request: Extract<AgentInteractionRequest, { kind: 'permission_approval' }> = {\n kind: 'permission_approval', requestId: `permissions:${id}`,\n summary: `${readString(params.reason) || 'Grant additional permissions'}${cwd ? ` (working directory: ${cwd})` : ''}${environment ? ` [environment: ${environment}]` : ''}`,\n permissions, allowScopes: this.restrictedNative ? ['turn'] : ['turn', 'session'],\n };\n return this.queueInteraction(request, (response) => {\n if (response.kind !== 'permission_approval') throw new Error('Invalid permission response');\n return { permissions: response.decision === 'allow' ? grant : {}, scope: response.decision === 'allow' ? response.scope : 'turn' };\n }, readString(params.turnId));\n } catch {\n this.emitUnavailable(`permissions:${id}`, 'Codex permission approval unavailable: unsupported or invalid permission scope; no permissions granted.');\n return Promise.resolve({ permissions: {}, scope: 'turn' });\n }\n }\n\n private queueInteraction(request: AgentInteractionRequest, respond: NativePendingInteraction['respond'], turnId?: string): Promise<unknown> {\n if (this.pendingInteractions.has(request.requestId)) return Promise.reject(new Error('Duplicate native request'));\n return new Promise((resolve, reject) => {\n this.pendingInteractions.set(request.requestId, { kind: request.kind, request, turnId, resolve, reject, respond });\n this.emitInteractionRequested(request);\n });\n }\n\n private assertRequestThread(params: unknown): asserts params is Record<string, unknown> {\n if (this.disposed || this.runtimeStatus === 'closed') throw new Error('Codex session is closed');\n if (this.transportFailure) throw this.transportFailure;\n if (!isRecord(params) || !this.threadId || params.threadId !== this.threadId) throw new Error('Codex request belongs to an unknown thread');\n }\n\n private emitUnavailable(requestId: string, message: string): void {\n this.emit({ type: 'observation', sourceKey: `interaction:${requestId}:unavailable`, occurredAt: Date.now(), delivery: 'live',\n event: { type: 'timeline', provider: PROVIDER_ID, item: { type: 'error', message } } });\n }\n\n private emitInteractionRequested(request: AgentInteractionRequest): void {\n if (this.threadId) this.runtime.sessionChanged(this.threadId);\n this.emit({\n type: 'observation',\n sourceKey: `interaction:${request.requestId}:requested`,\n occurredAt: Date.now(),\n delivery: 'live',\n event: {\n type: 'interaction_requested', provider: PROVIDER_ID, request,\n },\n });\n }\n\n private assertOpen(): void {\n if (this.disposed || this.released) throw new Error('Codex session is closed');\n if (this.transportFailure) throw this.transportFailure;\n }\n}\n\nfunction isHistoryCoveredItemNotification(method: string): boolean {\n return method === 'item/started'\n || method === 'item/completed'\n || method === 'item/agentMessage/delta'\n || method === 'item/reasoning/summaryTextDelta';\n}\n\nfunction readThreadRuntimeStatus(value: unknown): AgentRuntimeInfo['status'] | undefined {\n if (!isRecord(value)) return undefined;\n const type = readString(value.type);\n if (type === 'idle') return 'idle';\n if (type === 'systemError') return 'failed';\n if (type === 'notLoaded') return 'closed';\n if (type !== 'active') return undefined;\n const flags = Array.isArray(value.activeFlags)\n ? value.activeFlags.filter((flag): flag is string => typeof flag === 'string')\n : [];\n return flags.includes('waitingOnApproval') || flags.includes('waitingOnUserInput')\n ? 'waiting'\n : 'running';\n}\n\nfunction toStoredConfig(config: AgentSessionConfig, collaborationMode?: 'plan'): StoredSessionConfig {\n return {\n ...(config.cwd ? { cwd: config.cwd } : {}),\n ...(config.model ? { model: config.model } : {}),\n ...(config.reasoningEffort ? { reasoningEffort: config.reasoningEffort } : {}),\n ...(config.systemPrompt ? { systemPrompt: config.systemPrompt } : {}),\n ...(config.planning === true || (config.planning === undefined && collaborationMode) ? { collaborationMode: 'plan' as const } : {}),\n };\n}\n\nfunction parseStoredConfig(opaque: string): StoredSessionConfig {\n let parsed: unknown;\n try {\n parsed = JSON.parse(opaque);\n } catch {\n throw new Error('Codex persistence handle contains invalid JSON');\n }\n if (!isRecord(parsed)) throw new Error('Codex persistence handle is invalid');\n return {\n ...(readString(parsed.cwd) ? { cwd: readString(parsed.cwd) } : {}),\n ...(readString(parsed.model) ? { model: readString(parsed.model) } : {}),\n ...(readString(parsed.modelProvider) ? { modelProvider: readString(parsed.modelProvider) } : {}),\n ...(readString(parsed.reasoningEffort) ? { reasoningEffort: readString(parsed.reasoningEffort) } : {}),\n ...(readString(parsed.systemPrompt) ? { systemPrompt: readString(parsed.systemPrompt) } : {}),\n ...(parsed.collaborationMode === 'plan' ? { collaborationMode: 'plan' as const } : {}),\n };\n}\n\nclass AsyncQueue<T> implements AsyncIterable<T> {\n private readonly values: T[] = [];\n private readonly readers: Array<{\n resolve: (result: IteratorResult<T>) => void;\n reject: (error: unknown) => void;\n }> = [];\n private closed = false;\n private failure: unknown;\n\n push(value: T): void {\n if (this.closed) return;\n const reader = this.readers.shift();\n if (reader) reader.resolve({ value, done: false });\n else this.values.push(value);\n }\n\n clear(): void { this.values.length = 0; }\n\n trim(limit: number): boolean {\n if (this.values.length <= limit) return false;\n this.values.splice(0, this.values.length - limit);\n return true;\n }\n\n close(): void {\n if (this.closed) return;\n this.closed = true;\n for (const reader of this.readers.splice(0)) reader.resolve({ value: undefined, done: true });\n }\n\n fail(error: unknown): void {\n if (this.closed) return;\n this.closed = true;\n this.failure = error;\n for (const reader of this.readers.splice(0)) reader.reject(error);\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n next: () => {\n const value = this.values.shift();\n if (value !== undefined) return Promise.resolve({ value, done: false });\n if (this.failure !== undefined) return Promise.reject(this.failure);\n if (this.closed) return Promise.resolve({ value: undefined, done: true });\n return new Promise((resolve, reject) => this.readers.push({ resolve, reject }));\n },\n };\n }\n}\n", "import { validateSessionSetting, type AgentSessionSetting, type AgentSessionSettingOption } from '@borgee/agent-provider-sdk';\nimport type { CodexAppServerTransport } from './app-server-transport.js';\nimport { isRecord, readString } from './native.js';\n\ninterface NativeModel {\n value: string;\n label: string;\n description?: string;\n efforts: string[];\n defaultEffort?: string;\n}\n\nconst approvalOptions: AgentSessionSettingOption[] = [\n { value: 'untrusted', label: 'Untrusted', description: 'Ask before commands outside the trusted set.' },\n { value: 'on-request', label: 'On request', description: 'The agent requests approval when needed.' },\n { value: 'never', label: 'Never ask', description: 'Approval requests are disabled; sandbox restrictions still apply.' },\n];\nconst sandboxOptions: AgentSessionSettingOption[] = [\n { value: 'readOnly', label: 'Read only', description: 'Read-only filesystem; preserve native network policy when available.' },\n { value: 'workspaceWrite', label: 'Workspace write', description: 'Allow workspace writes; preserve native roots and network policy when available.' },\n { value: 'dangerFullAccess', label: 'Full access', description: 'No filesystem or network sandbox restrictions.' },\n];\nconst sandboxModes: Record<string, string> = { readOnly: 'read-only', workspaceWrite: 'workspace-write', dangerFullAccess: 'danger-full-access' };\n\nexport class CodexSessionSettings {\n private models: NativeModel[] = [];\n private requirements: Record<string, unknown> | undefined;\n private approval: unknown;\n private sandbox: Record<string, unknown> | undefined;\n private readonly sandboxPolicies = new Map<string, Record<string, unknown>>();\n private discoveryFailure: string | undefined;\n\n inheritCatalog(source: CodexSessionSettings): void {\n this.models = structuredClone(source.models);\n this.requirements = structuredClone(source.requirements);\n this.discoveryFailure = source.discoveryFailure;\n }\n\n async discover(transport: Pick<CodexAppServerTransport, 'request'>): Promise<void> {\n this.models = [];\n this.discoveryFailure = undefined;\n this.requirements = undefined;\n try {\n let cursor: string | undefined;\n const seen = new Set<string>();\n do {\n const result = await transport.request('model/list', { ...(cursor ? { cursor } : {}) });\n if (!isRecord(result) || !Array.isArray(result.data)) break;\n for (const item of result.data) {\n if (!isRecord(item) || item.hidden === true) continue;\n const value = readString(item.model);\n if (!value || this.models.some((model) => model.value === value)) continue;\n this.models.push({ value, label: readString(item.displayName) ?? value, description: readString(item.description),\n efforts: Array.isArray(item.supportedReasoningEfforts) ? item.supportedReasoningEfforts.flatMap((entry) => isRecord(entry) && readString(entry.reasoningEffort) ? [String(entry.reasoningEffort)] : []) : [],\n defaultEffort: readString(item.defaultReasoningEffort),\n });\n }\n cursor = readString(result.nextCursor);\n if (cursor && seen.has(cursor)) throw new Error('Native model catalog repeated its cursor.');\n if (cursor) seen.add(cursor);\n } while (cursor);\n } catch (error) {\n this.discoveryFailure = error instanceof Error ? error.message : 'Native model catalog unavailable.';\n this.models = [];\n }\n try {\n const result = await transport.request('configRequirements/read', {});\n if (isRecord(result) && (result.requirements === null || isRecord(result.requirements))) {\n this.requirements = result.requirements ?? {};\n }\n } catch { /* Unknown requirements keep permission controls read-only. */ }\n }\n\n apply(settings: Record<string, unknown>): void {\n if ('approvalPolicy' in settings) this.approval = settings.approvalPolicy;\n if (isRecord(settings.sandboxPolicy) && readString(settings.sandboxPolicy.type)) {\n this.sandbox = structuredClone(settings.sandboxPolicy);\n this.sandboxPolicies.set(String(settings.sandboxPolicy.type), this.sandbox!);\n }\n }\n\n describe(model: string | undefined, effort: string | undefined): AgentSessionSetting[] {\n const selected = this.models.find((entry) => entry.value === model);\n const settings: AgentSessionSetting[] = [{\n id: 'model', category: 'model', label: 'Model', value: model ?? null,\n options: this.models.map(({ value, label, description }) => ({ value, label, ...(description ? { description } : {}) })),\n mutable: this.models.length > 0, scope: 'session',\n description: this.discoveryFailure ?? 'Applies to subsequent turns.',\n }];\n if (selected?.efforts.length) settings.push({\n id: 'effort', category: 'model', label: 'Reasoning effort', value: effort ?? selected.defaultEffort ?? null,\n options: selected.efforts.map((value) => ({ value, label: value })), mutable: true, scope: 'session',\n });\n const allowedApproval = this.requirements?.allowedApprovalPolicies;\n const allowedSandbox = this.requirements?.allowedSandboxModes;\n settings.push({\n id: 'approval', category: 'permissions', label: 'Approval policy',\n value: typeof this.approval === 'string' ? this.approval : this.approval ? JSON.stringify(this.approval) : null,\n options: approvalOptions.filter(({ value }) => !Array.isArray(allowedApproval) || allowedApproval.includes(value)),\n mutable: this.requirements !== undefined && this.approval !== undefined, scope: 'session',\n description: this.requirements === undefined ? 'Native policy requirements unavailable; read-only.' : 'Native approval policy; sandbox restrictions are independent.',\n }, {\n id: 'sandbox', category: 'permissions', label: 'Sandbox', value: readString(this.sandbox?.type) ?? null,\n options: sandboxOptions.filter(({ value }) => !Array.isArray(allowedSandbox) || allowedSandbox.includes(sandboxModes[value])),\n mutable: this.requirements !== undefined && this.sandbox !== undefined, scope: 'session',\n description: describeSandbox(this.sandbox),\n });\n return settings;\n }\n\n patch(id: string, value: string, model: string | undefined, effort: string | undefined): Record<string, unknown> {\n validateSessionSetting(this.describe(model, effort), id, value);\n if (id === 'model') {\n const selected = this.models.find((entry) => entry.value === value)!;\n const nextEffort = effort && selected.efforts.includes(effort) ? effort : selected.defaultEffort;\n return { model: value, ...(nextEffort ? { effort: nextEffort } : {}) };\n }\n if (id === 'effort') return { effort: value };\n if (id === 'approval') return { approvalPolicy: value };\n if (id === 'sandbox') return { sandboxPolicy: this.sandboxPolicies.get(value) ?? (\n value === 'workspaceWrite' ? { type: value, writableRoots: [], networkAccess: false, excludeTmpdirEnvVar: false, excludeSlashTmp: false }\n : value === 'readOnly' ? { type: value, networkAccess: false } : { type: value }\n ) };\n throw new Error('Unsupported Codex setting.');\n }\n}\n\nfunction describeSandbox(policy: Record<string, unknown> | undefined): string {\n if (!policy) return 'Native sandbox state unavailable.';\n if (policy.type === 'dangerFullAccess') return 'Filesystem and network access are unrestricted.';\n const network = policy.networkAccess === true || policy.networkAccess === 'enabled' ? 'Network access allowed.' : 'Network access blocked.';\n if (policy.type === 'readOnly') return `Read-only filesystem. ${network}`;\n if (policy.type === 'externalSandbox') return `Sandbox enforcement is managed externally. ${network}`;\n const roots = Array.isArray(policy.writableRoots) ? policy.writableRoots.filter((root): root is string => typeof root === 'string') : [];\n const writable = ['the workspace', ...roots, ...(policy.excludeSlashTmp === true ? [] : ['/tmp']), ...(policy.excludeTmpdirEnvVar === true ? [] : ['the runtime temporary directory'])];\n return `Writes allowed in ${writable.join(', ')}. ${network}`;\n}\n", "import { validateInteractionResponse } from '@borgee/agent-provider-sdk';\nimport type { AgentFormField, AgentInteractionRequest, AgentInteractionResponse } from '@borgee/agent-provider-sdk';\nimport { isRecord, readString } from './native.js';\n\nexport function mapCodexElicitation(params: Record<string, unknown>, requestId: string): AgentInteractionRequest {\n const message = readString(params.message);\n const title = readString(params.serverName);\n if (!message || !title) throw new Error('Elicitation needs a message and server name');\n if (params.mode === 'url') {\n const url = readString(params.url);\n if (!url || !/^https?:\\/\\//i.test(url)) throw new Error('External action requires an HTTP(S) URL');\n const parsed = new URL(url);\n if (!parsed.hostname || parsed.username || parsed.password) throw new Error('External action URL is invalid');\n return { kind: 'external_action', requestId, title, message, url };\n }\n if (params.mode !== 'form' && params.mode !== 'openai/form') throw new Error('Unsupported elicitation mode');\n const schema = params.requestedSchema;\n if (!isRecord(schema) || schema.type !== 'object' || !isRecord(schema.properties)) throw new Error('Form requires flat object properties');\n keys(schema, ['$schema', 'type', 'properties', 'required', 'additionalProperties', 'title', 'description']);\n if (schema.additionalProperties !== undefined && schema.additionalProperties !== false) throw new Error('Additional properties are unsupported');\n const entries = Object.entries(schema.properties);\n if (!entries.length || entries.length > 64) throw new Error('Form field count is unsupported');\n const required = schema.required === undefined ? [] : strings(schema.required);\n if (new Set(required).size !== required.length || required.some((key) => !Object.hasOwn(schema.properties as object, key))) throw new Error('Required fields are invalid');\n const fields = entries.map(([id, value]) => field(id, value, required.includes(id)));\n for (const field of fields) if (field.defaultValue !== undefined) validateInteractionResponse(\n { kind: 'form', requestId, title, message, fields: [field] },\n { kind: 'form', action: 'submit', values: { [field.fieldId]: field.defaultValue } },\n );\n return { kind: 'form', requestId, title, message, fields };\n}\n\nexport function mapCodexElicitationResponse(response: AgentInteractionResponse): unknown {\n if (response.kind === 'form') return { action: response.action === 'submit' ? 'accept' : response.action, content: response.action === 'submit' ? response.values : null, _meta: null };\n if (response.kind === 'external_action') return { action: response.action === 'completed' ? 'accept' : response.action, content: null, _meta: null };\n throw new Error('Invalid elicitation response');\n}\n\nfunction field(fieldId: string, value: unknown, required: boolean): AgentFormField {\n if (!fieldId || fieldId.length > 256 || ['__proto__', 'constructor', 'prototype'].includes(fieldId) || !isRecord(value)) throw new Error('Invalid form field');\n const sensitive = value.isSecret === true || value.sensitive === true || value.writeOnly === true;\n for (const key of ['isSecret', 'sensitive', 'writeOnly']) if (value[key] !== undefined && typeof value[key] !== 'boolean') throw new Error('Invalid sensitive marker');\n for (const key of ['title', 'description']) if (value[key] !== undefined && typeof value[key] !== 'string') throw new Error('Invalid field label');\n if (sensitive && value.default !== undefined) throw new Error('Sensitive defaults cannot be published');\n const base = { fieldId, label: readString(value.title) || fieldId, required, ...(readString(value.description) ? { description: readString(value.description)! } : {}), ...(sensitive ? { sensitive: true } : {}) };\n const common = ['type', 'title', 'description', 'isSecret', 'sensitive', 'writeOnly', 'default'];\n if (value.type === 'string' && ('enum' in value || 'oneOf' in value)) {\n keys(value, [...common, 'enum', 'enumNames', 'oneOf']);\n const options = enumOptions(value, 'oneOf');\n if (value.default !== undefined && (typeof value.default !== 'string' || !options.some((o) => o.value === value.default))) throw new Error('Invalid select default');\n return { ...base, type: 'select', options, ...(value.default !== undefined ? { defaultValue: value.default as string } : {}) };\n }\n if (value.type === 'string') {\n keys(value, [...common, 'minLength', 'maxLength', 'format']);\n bounds(value, 'minLength', 'maxLength', true);\n if (value.format !== undefined && !['email', 'uri', 'date', 'date-time'].includes(String(value.format))) throw new Error('Unsupported string format');\n if (value.default !== undefined && typeof value.default !== 'string') throw new Error('Invalid text default');\n return { ...base, type: 'text', ...copy(value, ['minLength', 'maxLength', 'format']), ...(value.default !== undefined ? { defaultValue: value.default as string } : {}) } as AgentFormField;\n }\n if (value.type === 'number' || value.type === 'integer') {\n keys(value, [...common, 'minimum', 'maximum']);\n bounds(value, 'minimum', 'maximum', false);\n if (value.default !== undefined && (typeof value.default !== 'number' || !Number.isFinite(value.default) || (value.type === 'integer' && !Number.isSafeInteger(value.default)))) throw new Error('Invalid number default');\n return { ...base, type: 'number', integer: value.type === 'integer', ...copy(value, ['minimum', 'maximum']), ...(value.default !== undefined ? { defaultValue: value.default as number } : {}) };\n }\n if (value.type === 'boolean') {\n keys(value, common);\n if (value.default !== undefined && typeof value.default !== 'boolean') throw new Error('Invalid boolean default');\n return { ...base, type: 'boolean', ...(value.default !== undefined ? { defaultValue: value.default as boolean } : {}) };\n }\n if (value.type === 'array') {\n keys(value, [...common, 'minItems', 'maxItems', 'items', 'uniqueItems']);\n if (value.uniqueItems !== undefined && value.uniqueItems !== true) throw new Error('Repeated array values are unsupported');\n bounds(value, 'minItems', 'maxItems', true);\n if (!isRecord(value.items)) throw new Error('Array items require finite choices');\n keys(value.items, ['type', 'enum', 'anyOf']);\n if (value.items.type !== undefined && value.items.type !== 'string') throw new Error('Array choices must be strings');\n const options = enumOptions(value.items, 'anyOf');\n const defaultValue = value.default === undefined ? undefined : strings(value.default);\n if (defaultValue && (new Set(defaultValue).size !== defaultValue.length || defaultValue.some((v) => !options.some((o) => o.value === v)))) throw new Error('Invalid multiselect default');\n return { ...base, type: 'multiselect', options, ...copy(value, ['minItems', 'maxItems']), ...(defaultValue ? { defaultValue } : {}) };\n }\n throw new Error('Unsupported form field type');\n}\n\nfunction enumOptions(value: Record<string, unknown>, variant: string): Array<{ value: string; label: string }> {\n if ('enum' in value && variant in value) throw new Error('Conflicting choice schemas');\n let options: Array<{ value: string; label: string }>;\n if ('enum' in value) {\n const values = strings(value.enum);\n const labels = value.enumNames === undefined ? values : strings(value.enumNames);\n if (labels.length !== values.length) throw new Error('Choice labels do not match values');\n options = values.map((entry, index) => ({ value: entry, label: labels[index]! }));\n } else {\n if (!Array.isArray(value[variant])) throw new Error('Choices require enum values');\n options = (value[variant] as unknown[]).map((option) => {\n if (!isRecord(option)) throw new Error('Invalid choice');\n keys(option, ['const', 'title']);\n if (typeof option.const !== 'string' || typeof option.title !== 'string') throw new Error('Invalid titled choice');\n return { value: option.const, label: option.title };\n });\n }\n if (!options.length || options.length > 256 || new Set(options.map((o) => o.value)).size !== options.length || options.some((o) => !o.value || !o.label)) throw new Error('Invalid or excessive choices');\n return options;\n}\nfunction strings(value: unknown): string[] {\n if (!Array.isArray(value) || value.some((v) => typeof v !== 'string')) throw new Error('Expected string array');\n return value as string[];\n}\nfunction keys(value: Record<string, unknown>, supported: string[]): void {\n if (Object.keys(value).some((key) => !supported.includes(key))) throw new Error('Unsupported schema constraint');\n}\nfunction bounds(value: Record<string, unknown>, min: string, max: string, integer: boolean): void {\n for (const key of [min, max]) if (value[key] !== undefined && (typeof value[key] !== 'number' || !Number.isFinite(value[key]) || (integer && (!Number.isSafeInteger(value[key]) || (value[key] as number) < 0)))) throw new Error('Invalid field bounds');\n if (typeof value[min] === 'number' && typeof value[max] === 'number' && value[min] > value[max]) throw new Error('Inverted field bounds');\n}\nfunction copy(value: Record<string, unknown>, names: string[]): Record<string, unknown> {\n return Object.fromEntries(names.filter((key) => value[key] !== undefined).map((key) => [key, value[key]]));\n}\n", "import type { AgentInteractionRequest } from '@borgee/agent-provider-sdk';\nimport { isRecord, readString } from './native.js';\n\ntype Permission = Extract<AgentInteractionRequest, { kind: 'permission_approval' }>['permissions'][number];\n\nexport function mapCodexPermissions(value: unknown): { permissions: Permission[]; grant: Record<string, unknown> } {\n if (!isRecord(value)) throw new Error('Missing permissions');\n exactKeys(value, ['network', 'fileSystem']);\n const permissions: Permission[] = [];\n const grant: Record<string, unknown> = {};\n if (value.network != null) {\n if (!isRecord(value.network)) throw new Error('Invalid network permissions');\n exactKeys(value.network, ['enabled']);\n if (value.network.enabled !== null && typeof value.network.enabled !== 'boolean') throw new Error('Invalid network grant');\n if (value.network.enabled !== null) permissions.push({ resource: 'network', access: value.network.enabled ? 'connect' : 'deny', target: '*' });\n grant.network = structuredClone(value.network);\n }\n if (value.fileSystem != null) {\n const fs = value.fileSystem;\n if (!isRecord(fs)) throw new Error('Invalid filesystem permissions');\n exactKeys(fs, ['read', 'write', 'entries', 'globScanMaxDepth']);\n if (fs.globScanMaxDepth !== undefined && (!Number.isSafeInteger(fs.globScanMaxDepth) || (fs.globScanMaxDepth as number) < 0)) throw new Error('Invalid glob scan depth');\n for (const access of ['read', 'write'] as const) {\n if (fs[access] == null) continue;\n if (!Array.isArray(fs[access])) throw new Error('Invalid filesystem paths');\n for (const target of fs[access] as unknown[]) {\n if (typeof target !== 'string' || !target) throw new Error('Invalid filesystem path');\n permissions.push({ resource: 'filesystem', access, target });\n }\n }\n if (fs.entries !== undefined) {\n if (!Array.isArray(fs.entries)) throw new Error('Invalid filesystem entries');\n for (const entry of fs.entries) {\n if (!isRecord(entry) || !['read', 'write', 'deny'].includes(String(entry.access))) throw new Error('Unsupported filesystem access');\n exactKeys(entry, ['path', 'access']);\n permissions.push({ resource: 'filesystem', access: entry.access as 'read' | 'write' | 'deny', target: pathLabel(entry.path, fs.globScanMaxDepth) });\n }\n }\n grant.fileSystem = structuredClone(fs);\n }\n if (!permissions.length || permissions.length > 256) throw new Error('Empty or excessive permissions');\n return { permissions, grant };\n}\n\nfunction pathLabel(value: unknown, depth: unknown): string {\n if (!isRecord(value)) throw new Error('Invalid filesystem target');\n if (value.type === 'path') {\n exactKeys(value, ['type', 'path']);\n if (!readString(value.path)) throw new Error('Invalid filesystem path');\n return value.path as string;\n }\n if (value.type === 'glob_pattern') {\n exactKeys(value, ['type', 'pattern']);\n if (!readString(value.pattern)) throw new Error('Invalid glob pattern');\n return `glob: ${value.pattern}${depth !== undefined ? ` (scan depth: ${depth})` : ''}`;\n }\n if (value.type === 'special' && isRecord(value.value)) {\n exactKeys(value, ['type', 'value']);\n const special = value.value;\n if (!['root', 'minimal', 'project_roots', 'tmpdir', 'slash_tmp', 'unknown'].includes(String(special.kind))) throw new Error('Unsupported special path');\n exactKeys(special, special.kind === 'project_roots' ? ['kind', 'subpath'] : special.kind === 'unknown' ? ['kind', 'path', 'subpath'] : ['kind']);\n if (special.subpath != null && !readString(special.subpath)) throw new Error('Invalid special subpath');\n if (special.kind === 'unknown' && !readString(special.path)) throw new Error('Invalid special path');\n return `special: ${special.kind}${special.kind === 'unknown' ? ` (${special.path})` : ''}${special.subpath != null ? ` / ${special.subpath}` : ''}`;\n }\n throw new Error('Unsupported filesystem target');\n}\nfunction exactKeys(value: Record<string, unknown>, allowed: string[]): void {\n if (Object.keys(value).some((key) => !allowed.includes(key))) throw new Error('Unsupported permission property');\n}\n", "import type { AgentInteractionRequest, AgentInteractionResponse } from '@borgee/agent-provider-sdk';\nimport { isRecord, readString } from './native.js';\nimport { mapCodexPermissions } from './permissions.js';\n\ntype ToolRequest = Extract<AgentInteractionRequest, { kind: 'tool_approval' }>;\nexport function mapCodexToolApproval(nativeKind: 'command' | 'file', params: Record<string, unknown>, requestId: string): { request: ToolRequest; respond(response: AgentInteractionResponse): unknown } {\n const itemId = readString(params.itemId);\n if (!itemId) throw new Error('Codex tool approval request has no item id');\n const command = readString(params.command);\n const cwd = readString(params.cwd);\n const reason = readString(params.reason);\n const decisions: unknown[] = params.availableDecisions == null ? ['accept', 'acceptForSession', 'decline', 'cancel'] : Array.isArray(params.availableDecisions) ? params.availableDecisions : [];\n if (params.availableDecisions == null && nativeKind === 'command') {\n if (params.proposedExecpolicyAmendment != null) decisions.push({ acceptWithExecpolicyAmendment: { execpolicy_amendment: params.proposedExecpolicyAmendment } });\n if (Array.isArray(params.proposedNetworkPolicyAmendments)) for (const amendment of params.proposedNetworkPolicyAmendments) decisions.push({ applyNetworkPolicyAmendment: { network_policy_amendment: amendment } });\n }\n const allowedDecisions: ToolRequest['allowedDecisions'] = [];\n const allowScopes: ToolRequest['allowScopes'] = [];\n const policies: NonNullable<ToolRequest['policies']> = [];\n const nativePolicies = new Map<string, unknown>();\n for (const decision of decisions) {\n if (decision === 'accept' || decision === 'acceptForSession') {\n allowedDecisions.push('allow');\n allowScopes.push(decision === 'accept' ? 'once' : 'session');\n } else if (decision === 'decline') allowedDecisions.push('deny');\n else if (decision === 'cancel') allowedDecisions.push('cancel');\n else {\n const description = policyDescription(decision);\n if (!description || nativeKind !== 'command') throw new Error('Unsupported native approval decision');\n const policyId = `policy:${policies.length}`;\n policies.push({ policyId, description });\n nativePolicies.set(policyId, structuredClone(decision));\n allowedDecisions.push('allow');\n allowScopes.push('policy');\n }\n }\n if (!allowedDecisions.length) throw new Error('No supported approval decisions');\n const context: NonNullable<ToolRequest['context']> = [];\n if (isRecord(params.networkApprovalContext)) {\n const { host, protocol } = params.networkApprovalContext;\n if (typeof host !== 'string' || typeof protocol !== 'string') throw new Error('Invalid network context');\n context.push({ label: 'Network', value: `${protocol}://${host}` });\n }\n if (params.additionalPermissions != null) for (const p of mapCodexPermissions(params.additionalPermissions).permissions) context.push({ label: `${p.resource} ${p.access}`, value: p.target });\n if (readString(params.grantRoot)) context.push({ label: 'Session write root', value: params.grantRoot as string });\n if (readString(params.environmentId)) context.push({ label: 'Environment', value: params.environmentId as string });\n const request: ToolRequest = {\n kind: 'tool_approval', requestId, toolCallId: itemId, toolName: nativeKind === 'command' ? 'command' : 'file_change',\n summary: reason || (nativeKind === 'command' ? `Run ${command || 'a command'}` : 'Apply file changes'),\n detail: nativeKind === 'command' && command ? { type: 'shell', command, ...(cwd ? { cwd } : {}) } : { type: 'other', description: nativeKind === 'command' ? reason || 'Run a command' : 'Apply Codex file changes' },\n allowedDecisions: [...new Set(allowedDecisions)], allowScopes: [...new Set(allowScopes)],\n ...(policies.length ? { policies } : {}), ...(context.length ? { context } : {}),\n };\n return { request, respond(response) {\n if (response.kind !== 'tool_approval') throw new Error('Invalid tool approval response');\n if (response.decision === 'deny') return { decision: 'decline' };\n if (response.decision !== 'allow') return { decision: 'cancel' };\n if (response.scope === 'policy') {\n if (!nativePolicies.has(response.policyId)) throw new Error('Unknown native policy');\n return { decision: nativePolicies.get(response.policyId) };\n }\n return { decision: response.scope === 'session' ? 'acceptForSession' : 'accept' };\n } };\n}\n\nfunction policyDescription(value: unknown): string | undefined {\n if (!isRecord(value) || Object.keys(value).length !== 1) return undefined;\n if (isRecord(value.acceptWithExecpolicyAmendment)) {\n const parts = value.acceptWithExecpolicyAmendment.execpolicy_amendment;\n if (Object.keys(value.acceptWithExecpolicyAmendment).length !== 1 || !Array.isArray(parts) || !parts.length || parts.some((part) => typeof part !== 'string')) return undefined;\n return `Allow command prefix ${JSON.stringify(parts)} for future commands`;\n }\n if (isRecord(value.applyNetworkPolicyAmendment)) {\n const amendment = value.applyNetworkPolicyAmendment.network_policy_amendment;\n if (Object.keys(value.applyNetworkPolicyAmendment).length !== 1 || !isRecord(amendment) || Object.keys(amendment).some((key) => !['host', 'action'].includes(key)) || !readString(amendment.host) || !['allow', 'deny'].includes(String(amendment.action))) return undefined;\n return `${amendment.action === 'allow' ? 'Allow' : 'Deny'} network host ${amendment.host} for future requests`;\n }\n return undefined;\n}\n", "import type { AgentUsageAccounting } from '@borgee/agent-provider-sdk';\nimport { isRecord } from './native.js';\n\ninterface Route { provider?: string; model?: string }\ninterface Counts { inputTokens: number; outputTokens: number; cacheReadTokens: number; cacheWriteTokens: number }\nconst zero = (): Counts => ({ inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 });\n\n/** Thread counters are snapshots, never additive events or context occupancy. */\nexport class CodexUsage {\n private latest: Counts | undefined;\n private prepared: { baseline?: Counts; route: Route } | undefined;\n private active: { id: string; baseline?: Counts; route: Route; invalid: boolean; sampled: boolean } | undefined;\n private readonly settled = new Set<string>();\n\n newThread(): void { this.latest = zero(); }\n\n invalidate(): void {\n this.latest = undefined;\n this.prepared = undefined;\n if (this.active) this.active.invalid = true;\n }\n\n prepareTurn(route: Route): void { this.prepared = { baseline: this.latest && { ...this.latest }, route: { ...route } }; }\n abandonPreparedTurn(): void { this.prepared = undefined; }\n\n startTurn(id: string, route: Route): void {\n if (this.active?.id === id || this.settled.has(id)) return;\n this.active = { id, baseline: this.prepared ? this.prepared.baseline : this.latest && { ...this.latest },\n route: this.prepared?.route ?? { ...route }, invalid: false, sampled: false };\n this.prepared = undefined;\n }\n\n sample(params: unknown): void {\n const total = isRecord(params) && isRecord(params.tokenUsage) && isRecord(params.tokenUsage.total) ? params.tokenUsage.total : undefined;\n const next = total && counts(total);\n if (!next) {\n this.latest = undefined;\n if (this.active) this.active.invalid = true;\n return;\n }\n if (this.latest && keys.some((key) => next[key] < this.latest![key])) {\n this.latest = undefined;\n if (this.active) this.active.invalid = true;\n return;\n }\n if (this.active) {\n this.active.sampled = true;\n }\n this.latest = next;\n }\n\n finishTurn(threadId: string, turnId: string, route: Route): AgentUsageAccounting[] {\n if (this.settled.has(turnId)) return [];\n this.settled.add(turnId);\n const active = this.active;\n if (active?.id === turnId) this.active = undefined;\n if (!active || active.id !== turnId || active.invalid || !active.sampled || !active.baseline || !this.latest\n || !route.provider || !route.model || active.route.provider !== route.provider || active.route.model !== route.model) return [];\n const delta = zero();\n for (const key of keys) {\n delta[key] = this.latest[key] - active.baseline[key];\n if (!count(delta[key])) return [];\n }\n if (keys.every((key) => delta[key] === 0)) return [];\n return [{ measurementId: `codex:${JSON.stringify([threadId, turnId, route.provider, route.model])}`, scope: 'turn', provider: route.provider, model: route.model, ...delta }];\n }\n}\n\nconst keys = ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheWriteTokens'] as const;\nfunction count(value: unknown): value is number { return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0; }\nfunction counts(value: Record<string, unknown>): Counts | undefined {\n const { inputTokens, cachedInputTokens, outputTokens } = value;\n // The native app-server TokenUsageBreakdown gives this counter a zero default.\n const cacheWriteTokens = value.cacheWriteInputTokens === undefined ? 0 : value.cacheWriteInputTokens;\n if (!count(inputTokens) || !count(cachedInputTokens) || !count(cacheWriteTokens) || !count(outputTokens)) return;\n const uncached = inputTokens - cachedInputTokens - cacheWriteTokens;\n if (!count(uncached)) return;\n return { inputTokens: uncached, outputTokens, cacheReadTokens: cachedInputTokens, cacheWriteTokens };\n}\n", "import { isRecord, readString } from './native.js';\n\nexport interface CodexCollaborationMode {\n mode: string;\n model?: string;\n reasoningEffort?: string;\n developerInstructions?: string;\n}\n\nexport interface CodexPlanningModes {\n plan: CodexCollaborationMode;\n normal: CodexCollaborationMode;\n}\n\nexport function readCodexPlanningModes(value: unknown): CodexPlanningModes | undefined {\n if (!isRecord(value) || !Array.isArray(value.data)) return undefined;\n const modes = value.data.flatMap((entry): CodexCollaborationMode[] => {\n if (!isRecord(entry)) return [];\n const mode = readString(entry.mode);\n if (!mode) return [];\n return [{\n mode, model: readString(entry.model),\n reasoningEffort: readString(entry.reasoning_effort),\n developerInstructions: readString(entry.developer_instructions),\n }];\n });\n const plan = modes.find(({ mode }) => mode === 'plan');\n const normal = modes.find(({ mode }) => mode === 'default' || mode === 'code');\n return plan && normal ? { plan, normal } : undefined;\n}\n", "import { AgentInputRejectedError } from '@borgee/agent-provider-sdk';\nimport type { CodexAppServerTransport } from './app-server-transport.js';\n\nconst contextSupport = new WeakMap<CodexAppServerTransport, boolean>();\n\nexport function assertAdditionalContextSupport(transport: CodexAppServerTransport): void {\n if (!contextSupport.get(transport)) throw new AgentInputRejectedError('Separate turn context requires a confirmed Codex server version 0.154.0 or newer; no input was submitted.', 'context_unavailable');\n}\n\nexport async function initializeCodexTransport(transport: CodexAppServerTransport): Promise<void> {\n const result = await transport.request('initialize', {\n clientInfo: { name: 'codex_app_server_daemon', title: 'Agent Remote Control', version: '0.1.0' },\n capabilities: { experimentalApi: true, requestAttestation: false, mcpServerOpenaiFormElicitation: true },\n });\n const userAgent = result && typeof result === 'object' && 'userAgent' in result ? result.userAgent : undefined;\n const version = typeof userAgent === 'string' ? /^codex_cli_rs\\/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\s|$)/.exec(userAgent) : undefined;\n contextSupport.set(transport, !!version && (Number(version[1]) > 0 || Number(version[2]) >= 154));\n transport.notify('initialized', {});\n}\n", "import { isDeepStrictEqual } from 'node:util';\nimport { isRecord, readString, type JsonObject } from '../native.js';\nimport type { CodexRawNotification } from './types.js';\n\nexport function collectCodexThreadHistoryItems(\n response: unknown,\n threadId: string,\n): Map<string, JsonObject> {\n const thread = readThread(response, threadId);\n const itemsById = new Map<string, JsonObject>();\n const turns = Array.isArray(thread.turns) ? thread.turns : [];\n for (const turn of turns) {\n if (!isRecord(turn) || !Array.isArray(turn.items)) continue;\n for (const item of turn.items) {\n if (!isRecord(item)) continue;\n const itemId = readString(item.id);\n if (itemId) itemsById.set(itemId, item);\n }\n }\n return itemsById;\n}\n\nexport function readThread(response: unknown, threadId: string): JsonObject {\n if (!isRecord(response) || !isRecord(response.thread)) {\n throw new Error('Codex thread/read returned no thread');\n }\n const returnedThreadId = readString(response.thread.id);\n if (returnedThreadId !== threadId) {\n throw new Error(`Codex thread/read returned ${returnedThreadId ?? 'no id'} instead of ${threadId}`);\n }\n return response.thread;\n}\n\n\nexport function historyOverlapsNotifications(history: unknown, threadId: string, notifications: readonly CodexRawNotification[]): boolean {\n const items = collectCodexThreadHistoryItems(history, threadId);\n return notifications.some(({ method, params }) => (\n method === 'item/agentMessage/delta' || method === 'item/reasoning/summaryTextDelta' || method === 'item/plan/delta'\n ) && isRecord(params) && typeof params.itemId === 'string' && items.has(params.itemId));\n}\n\n/** Discovery preserves control events and items absent from history while removing covered item data. */\nexport function reconcileCodexHistoryNotifications(history: unknown, threadId: string, notifications: readonly CodexRawNotification[]): CodexRawNotification[] {\n const items = collectCodexThreadHistoryItems(history, threadId);\n return notifications.filter(({ method, params }) => {\n if (!isRecord(params)) return true;\n const item = isRecord(params.item) ? params.item : undefined;\n const id = readString(params.itemId) ?? (item ? readString(item.id) : undefined);\n const historical = id ? items.get(id) : undefined;\n if (!historical) return true;\n if (method === 'item/started' || method === 'item/agentMessage/delta' || method === 'item/reasoning/summaryTextDelta' || method === 'item/plan/delta') return false;\n return method !== 'item/completed' || !isDeepStrictEqual(item, historical);\n });\n}\n", "import { CodexAppServerRpcError, type CodexAppServerTransport } from '../app-server-transport.js';\n\nexport interface CodexSharedRecoverySettings {\n initialDelayMs?: number;\n maximumDelayMs?: number;\n maximumAttempts?: number;\n connectionDeadlineMs?: number;\n restorationDeadlineMs?: number;\n jitter?: () => number;\n}\n\nexport interface CodexSharedRecoveryPlan {\n connect(): Promise<CodexAppServerTransport>;\n settings?: CodexSharedRecoverySettings;\n}\n\nexport interface NormalizedRecoverySettings {\n initialDelayMs: number;\n maximumDelayMs: number;\n maximumAttempts: number | undefined;\n connectionDeadlineMs: number;\n restorationDeadlineMs: number;\n jitter(): number;\n}\n\nexport function normalizeRecoverySettings(settings: CodexSharedRecoverySettings = {}): NormalizedRecoverySettings {\n return {\n initialDelayMs: positive(settings.initialDelayMs, 500),\n maximumDelayMs: positive(settings.maximumDelayMs, 30_000),\n maximumAttempts: positiveInteger(settings.maximumAttempts),\n connectionDeadlineMs: positive(settings.connectionDeadlineMs, 10_000),\n restorationDeadlineMs: positive(settings.restorationDeadlineMs, 30_000),\n jitter: settings.jitter ?? Math.random,\n };\n}\n\nexport function recoveryDelay(settings: NormalizedRecoverySettings, attempt: number): number {\n const ceiling = Math.min(settings.maximumDelayMs, settings.initialDelayMs * (2 ** Math.max(0, attempt - 1)));\n const factor = Math.max(0, Math.min(1, settings.jitter()));\n return Math.max(1, Math.round(ceiling * (0.5 + factor * 0.5)));\n}\n\nexport async function abortableDelay(milliseconds: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) throw signal.reason;\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(done, milliseconds);\n function done(): void {\n signal.removeEventListener('abort', canceled);\n resolve();\n }\n function canceled(): void {\n clearTimeout(timer);\n reject(signal.reason);\n }\n signal.addEventListener('abort', canceled, { once: true });\n });\n}\n\nexport async function withDeadline<T>(operation: Promise<T>, milliseconds: number, signal: AbortSignal, label: string): Promise<T> {\n if (signal.aborted) throw signal.reason;\n let timer: NodeJS.Timeout | undefined;\n let cancel: (() => void) | undefined;\n const deadline = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`${label} exceeded its deadline`)), milliseconds);\n cancel = () => reject(signal.reason);\n signal.addEventListener('abort', cancel, { once: true });\n });\n try {\n return await Promise.race([operation, deadline]);\n } finally {\n if (timer) clearTimeout(timer);\n if (cancel) signal.removeEventListener('abort', cancel);\n }\n}\n\nexport type PermanentRecoveryReason = 'permission_denied' | 'protocol_incompatible' | 'thread_unavailable';\n\nexport function permanentRecoveryReason(error: unknown): PermanentRecoveryReason | undefined {\n if (error instanceof CodexAppServerRpcError) {\n if (error.code === -32601) return 'protocol_incompatible';\n if ((error.code === -32600 || error.code === -32602) && /thread|session|rollout/i.test(error.message)\n && /missing|not found|no .*found|does not exist|unknown|unavailable/i.test(error.message)) {\n return 'thread_unavailable';\n }\n if (error.code === -32001 || error.code === 401 || error.code === 403) return 'permission_denied';\n }\n const message = error instanceof Error ? error.message : String(error);\n if (/permission denied|forbidden|unauthori[sz]ed/i.test(message)) return 'permission_denied';\n return undefined;\n}\n\nexport interface CodexRestorationScheduler {\n run<T>(operation: () => Promise<T>, signal: AbortSignal): Promise<T>;\n}\n\n/** Share an instance to cap simultaneous root restorations across clients. */\nexport class CodexRestorationSemaphore implements CodexRestorationScheduler {\n constructor(private readonly concurrency = 4) {\n if (!Number.isInteger(concurrency) || concurrency < 1) throw new Error('Restoration concurrency must be a positive integer');\n }\n private active = 0;\n private readonly waiters: Array<() => void> = [];\n\n async run<T>(operation: () => Promise<T>, signal: AbortSignal): Promise<T> {\n await this.acquire(signal);\n try {\n return await operation();\n } finally {\n this.active -= 1;\n this.waiters.shift()?.();\n }\n }\n\n private async acquire(signal: AbortSignal): Promise<void> {\n if (signal.aborted) throw signal.reason;\n while (this.active >= this.concurrency) {\n await new Promise<void>((resolve, reject) => {\n const ready = () => {\n signal.removeEventListener('abort', canceled);\n resolve();\n };\n const canceled = () => {\n const index = this.waiters.indexOf(ready);\n if (index >= 0) this.waiters.splice(index, 1);\n reject(signal.reason);\n };\n this.waiters.push(ready);\n signal.addEventListener('abort', canceled, { once: true });\n });\n }\n if (signal.aborted) throw signal.reason;\n this.active += 1;\n }\n}\n\n\n\nfunction positive(value: number | undefined, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : fallback;\n}\n\nfunction positiveInteger(value: number | undefined): number | undefined {\n return typeof value === 'number' && Number.isInteger(value) && value > 0 ? value : undefined;\n}\n", "import type { CodexAppServerTransport } from '../app-server-transport.js';\nimport { historyOverlapsNotifications, reconcileCodexHistoryNotifications } from './history.js';\nimport { isRecord, readString } from '../native.js';\nimport type { CodexDaemonCallbacks, CodexRawNotification, CodexThreadOrigin } from './types.js';\n\n/** Native discovery and buffering do not depend on how an application observes a thread. */\nexport class CodexThreadRouter {\n readonly threads = new Set<string>();\n rootId: string | undefined;\n private readonly children = new Map<string, string>();\n private readonly discoveries = new Map<string, Promise<boolean>>();\n private readonly buffered = new Map<string, Array<CodexRawNotification & { sequence: number }>>();\n private readonly origins = new Map<string, CodexThreadOrigin>();\n private readonly overflowed = new Set<string>();\n private readonly discoveryOrder = new Map<string, number>();\n private notificationSequence = 0;\n private generation = 0;\n private closed = false;\n\n constructor(private readonly transport: () => CodexAppServerTransport, private readonly callbacks: CodexDaemonCallbacks) {}\n\n registerRoot(id: string): void { this.rootId = id; this.threads.add(id); }\n hasThread(id: string): boolean { return !this.closed && this.threads.has(id); }\n hasChild(parentId: string, id: string): boolean { return this.hasThread(parentId) && this.children.get(id) === parentId; }\n\n async waitForChild(parentId: string, id: string): Promise<void> {\n if (this.closed) throw new Error('Codex runtime is closed');\n await this.discoveries.get(id);\n if (!this.hasChild(parentId, id)) throw new Error('Codex session is not a direct child of the loaded parent');\n if (!this.threads.has(id)) throw new Error('Codex child history is unavailable');\n }\n\n invalidate(): void {\n this.generation++;\n this.discoveries.clear();\n this.buffered.clear();\n this.overflowed.clear();\n }\n\n close(): void { this.closed = true; this.invalidate(); }\n\n routeNotification(method: string, params: unknown): void {\n if (this.closed) return;\n const thread = isRecord(params) && isRecord(params.thread) ? params.thread : undefined;\n const id = notificationThreadId(params);\n if (!id) { this.callbacks.onNotification?.(method, params); return; }\n if (isRecord(params) && (method === 'item/started' || method === 'item/completed')) this.inspectItem(id, readString(params.turnId), params.item);\n if (this.threads.has(id)) { this.callbacks.onNotification?.(method, params); return; }\n // The root start response establishes its id; early notifications belong to bootstrap.\n if (!this.threads.size && (!thread || !parentThreadId(thread))) {\n this.callbacks.onNotification?.(method, params);\n return;\n }\n const queue = this.buffered.get(id) ?? [];\n queue.push({ method, params, sequence: ++this.notificationSequence });\n if (queue.length > 512) { queue.shift(); this.overflowed.add(id); }\n this.buffered.set(id, queue);\n void this.discover(id).catch(() => undefined);\n }\n\n inspectHistory(parentId: string, history: unknown): void {\n if (!isRecord(history) || !isRecord(history.thread) || !Array.isArray(history.thread.turns)) return;\n for (const turn of history.thread.turns) {\n if (!isRecord(turn) || !Array.isArray(turn.items)) continue;\n for (const item of turn.items) this.inspectItem(parentId, readString(turn.id), item);\n }\n }\n\n inspectItem(parentId: string, turnId: string | undefined, item: unknown): void {\n if (!isRecord(item)) return;\n if (item.type === 'subAgentActivity') {\n const id = readString(item.agentThreadId);\n if (!id || id === parentId) return;\n if (item.kind === 'started') this.recordOrigin(id, { parentThreadId: parentId, turnId, callId: readString(item.id) });\n void this.discover(id).catch(() => undefined);\n return;\n }\n if (item.type !== 'collabAgentToolCall' || !Array.isArray(item.receiverThreadIds)) return;\n for (const id of item.receiverThreadIds) {\n if (typeof id !== 'string') continue;\n if (item.tool === 'spawnAgent') this.recordOrigin(id, { parentThreadId: parentId, turnId, callId: readString(item.id), description: readString(item.prompt) });\n if (item.tool === 'spawnAgent' || this.children.has(id)) void this.discover(id).catch(() => undefined);\n }\n }\n\n private recordOrigin(id: string, origin: CodexThreadOrigin): void {\n if (this.origins.has(id)) return;\n this.origins.set(id, origin);\n if (this.children.get(id) === origin.parentThreadId) this.callbacks.onChildOrigin?.(id, origin);\n }\n\n discover(id: string, ancestry: string[] = []): Promise<boolean> {\n if (this.closed || ancestry.includes(id) || ancestry.length > 32) return Promise.resolve(false);\n if (this.threads.has(id)) return Promise.resolve(true);\n const pending = this.discoveries.get(id);\n if (pending) return pending;\n if (!this.discoveryOrder.has(id)) this.discoveryOrder.set(id, this.discoveryOrder.size);\n const generation = this.generation;\n let operation: Promise<boolean>;\n operation = this.readChild(id, ancestry, generation).finally(() => {\n if (this.discoveries.get(id) === operation) {\n this.discoveries.delete(id);\n this.buffered.delete(id);\n }\n });\n this.discoveries.set(id, operation);\n return operation;\n }\n\n private async readChild(id: string, ancestry: string[], generation: number): Promise<boolean> {\n const transport = this.transport();\n let snapshotStart = this.notificationSequence;\n let history = await transport.request('thread/read', { threadId: id, includeTurns: true });\n if (generation !== this.generation || this.closed || !isRecord(history) || !isRecord(history.thread) || history.thread.id !== id) return false;\n const parentId = parentThreadId(history.thread);\n if (!parentId || parentId === id) return false;\n if (!this.threads.has(parentId) && !await this.discover(parentId, [...ancestry, id])) return false;\n if (generation !== this.generation || this.closed) return false;\n const previous = this.children.get(id);\n if (previous && previous !== parentId) return false;\n let thread = history.thread;\n const loaded = isRecord(thread.status) && thread.status.type !== 'notLoaded';\n this.children.set(id, parentId);\n const handoff = (historyState: 'available' | 'uncertain' | 'unavailable') => {\n const origin = this.origins.get(id);\n this.callbacks.onChild?.({ thread, parentThreadId: parentId, history,\n notifications: reconcileCodexHistoryNotifications(history, id, this.buffered.get(id) ?? []), historyState,\n requiresRefresh: this.overflowed.delete(id), discoveryOrder: this.discoveryOrder.get(id)!,\n origin: origin?.parentThreadId === parentId ? origin : undefined });\n };\n if (!loaded && thread.ephemeral === true && (!Array.isArray(thread.turns) || !thread.turns.length)) {\n handoff('unavailable');\n return false;\n }\n try {\n for (let attempt = 0; ; attempt++) {\n const duringRead = (this.buffered.get(id) ?? []).filter(item => item.sequence > snapshotStart);\n if (!historyOverlapsNotifications(history, id, duringRead)) break;\n if (attempt === 2) throw new Error('Codex child history is changing during snapshot reads. Reopen the child to retry.');\n snapshotStart = this.notificationSequence;\n history = await transport.request('thread/read', { threadId: id, includeTurns: true });\n if (generation !== this.generation || !isRecord(history) || !isRecord(history.thread) || history.thread.id !== id || parentThreadId(history.thread) !== parentId) throw new Error('Codex child history is unavailable. Reopen the child to retry.');\n thread = history.thread;\n }\n if (generation !== this.generation) return false;\n handoff('available');\n } catch (error) {\n if (generation !== this.generation || this.closed) {\n if (this.children.get(id) === parentId) this.children.delete(id);\n return false;\n }\n handoff('uncertain');\n this.threads.add(id);\n throw error;\n }\n if (generation !== this.generation) return false;\n this.threads.add(id);\n this.inspectHistory(id, history);\n return true;\n }\n}\n\nexport function notificationThreadId(params: unknown): string | undefined {\n if (!isRecord(params)) return undefined;\n const thread = isRecord(params.thread) ? params.thread : undefined;\n return readString(params.threadId) ?? (thread ? readString(thread.id) : undefined);\n}\n\nfunction parentThreadId(thread: Record<string, unknown>): string | undefined {\n if (readString(thread.parentThreadId)) return readString(thread.parentThreadId);\n if (!isRecord(thread.source) || !isRecord(thread.source.subAgent) || !isRecord(thread.source.subAgent.thread_spawn)) return undefined;\n return readString(thread.source.subAgent.thread_spawn.parent_thread_id);\n}\n", "import { CodexServerRequestCanceled, type CodexAppServerTransport } from '../app-server-transport.js';\nimport { historyOverlapsNotifications } from './history.js';\nimport { initializeCodexTransport } from '../initialize.js';\nimport { isRecord, readString } from '../native.js';\nimport { abortableDelay, normalizeRecoverySettings, permanentRecoveryReason, recoveryDelay, withDeadline,\n CodexRestorationSemaphore, type CodexRestorationScheduler, type CodexSharedRecoveryPlan } from './recovery.js';\nimport { CodexThreadRouter, notificationThreadId } from './thread-router.js';\nimport type { CodexConnectionInfo, CodexDaemonCallbacks, CodexRawNotification } from './types.js';\n\nexport interface CodexDaemonClientOptions {\n transport: CodexAppServerTransport;\n callbacks?: CodexDaemonCallbacks;\n recovery?: CodexSharedRecoveryPlan;\n restorationScheduler?: CodexRestorationScheduler;\n}\n\n/** Owns a connection to Codex, never the lifetime of an external daemon. */\nexport class CodexDaemonClient {\n private transport: CodexAppServerTransport;\n private readonly callbacks: CodexDaemonCallbacks;\n private readonly router: CodexThreadRouter;\n private readonly restorationScheduler: CodexRestorationScheduler;\n private generation = 0;\n private closed = false;\n private recoveryEnabled = false;\n private recoveryTask: Promise<void> | undefined;\n private recoveryAbort: AbortController | undefined;\n private connection: CodexConnectionInfo | undefined;\n private restorationBuffer: Array<CodexRawNotification & { sequence: number }> | undefined;\n private restorationSequence = 0;\n private restorationBufferBytes = 0;\n private restorationBufferError: Error | undefined;\n private readonly pendingDispatches = new Map<string, AbortController>();\n\n constructor(private readonly options: CodexDaemonClientOptions) {\n this.transport = options.transport;\n this.callbacks = options.callbacks ?? {};\n this.router = new CodexThreadRouter(() => this.transport, this.callbacks);\n this.restorationScheduler = options.restorationScheduler ?? new CodexRestorationSemaphore();\n this.connection = options.recovery ? { state: 'connected' } : undefined;\n this.bindTransport(options.transport);\n }\n\n async initialize(): Promise<void> { await initializeCodexTransport(this.transport); }\n enableRecovery(): void { this.recoveryEnabled = true; }\n registerRoot(id: string): void { this.router.registerRoot(id); }\n hasThread(id: string): boolean { return this.router.hasThread(id); }\n hasChild(parentId: string, id: string): boolean { return this.router.hasChild(parentId, id); }\n waitForChild(parentId: string, id: string): Promise<void> { return this.router.waitForChild(parentId, id); }\n inspectHistory(threadId: string, history: unknown): void { this.router.inspectHistory(threadId, history); }\n connectionInfo(): CodexConnectionInfo | undefined { return this.connection ? { ...this.connection } : undefined; }\n\n assertConnected(): void {\n if (this.closed) throw new Error('Codex runtime is closed');\n if (!this.connection || this.connection.state === 'connected') return;\n throw new Error(`Codex shared runtime is ${this.connection.state}; wait for native recovery before retrying.`);\n }\n\n async runConnected<T>(operation: () => Promise<T>): Promise<T> {\n this.assertConnected();\n const generation = this.generation;\n const result = await operation();\n if (generation !== this.generation || this.closed) throw new Error('Codex result belongs to an old connection');\n return result;\n }\n\n /** Sends once. A failed mutation can have an unknown native outcome and is never replayed. */\n request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown> {\n return this.runConnected(() => this.transport.request(method, params, timeoutMs));\n }\n\n private bindTransport(transport: CodexAppServerTransport): number {\n const generation = ++this.generation;\n this.transport = transport;\n transport.setNotificationHandler((method, params) => {\n if (generation === this.generation) this.routeNotification(method, params);\n });\n transport.setTerminationHandler(error => {\n if (generation === this.generation) this.handleTermination(error, generation);\n });\n for (const method of ['item/tool/requestUserInput', 'tool/requestUserInput', 'item/commandExecution/requestApproval',\n 'item/fileChange/requestApproval', 'mcpServer/elicitation/request', 'item/permissions/requestApproval']) {\n transport.setRequestHandler(method, async (params, id) => {\n if (generation !== this.generation) throw new CodexServerRequestCanceled('Codex request belongs to an old connection');\n const threadId = isRecord(params) ? readString(params.threadId) : undefined;\n if (!threadId) throw new Error('Codex request belongs to an unavailable thread');\n const key = `${generation}:${threadId}:${id}`;\n const dispatch = new AbortController();\n this.pendingDispatches.set(key, dispatch);\n try {\n const available = this.router.hasThread(threadId) || await this.router.discover(threadId).catch(error => {\n if (this.router.hasThread(threadId)) return true;\n throw error;\n });\n if (dispatch.signal.aborted) throw dispatch.signal.reason;\n if (!available || !this.callbacks.onRequest) throw new Error('Codex request belongs to an unavailable thread');\n const response = this.callbacks.onRequest(method, params, id, { threadId, generation, signal: dispatch.signal });\n const value = await cancelableResponse(Promise.resolve(response), dispatch.signal);\n if (generation !== this.generation || dispatch.signal.aborted) throw new CodexServerRequestCanceled('Codex request belongs to an old connection');\n return value;\n } finally { this.pendingDispatches.delete(key); }\n });\n }\n return generation;\n }\n\n private routeNotification(method: string, params: unknown): void {\n if (this.closed) return;\n const id = notificationThreadId(params);\n if (id && method === 'serverRequest/resolved' && isRecord(params)) {\n this.pendingDispatches.get(`${this.generation}:${id}:${params.requestId}`)?.abort(new CodexServerRequestCanceled('Codex request already resolved'));\n }\n if (this.restorationBuffer) {\n if (this.restorationBufferError) return;\n this.restorationBufferBytes += Buffer.byteLength(JSON.stringify({ method, params }));\n if (this.restorationBuffer.length >= 2048 || this.restorationBufferBytes > 8 * 1024 * 1024) {\n this.restorationBufferError = new Error('Codex shared restoration exceeded its notification buffer');\n return;\n }\n this.restorationBuffer.push({ method, params, sequence: ++this.restorationSequence });\n return;\n }\n this.router.routeNotification(method, params);\n }\n\n private handleTermination(error: Error, generation: number): void {\n if (this.closed) return;\n if (!this.options.recovery || !this.recoveryEnabled) { this.terminate(error); return; }\n if (!this.retireGeneration(generation, 'connection_lost') || this.recoveryTask) return;\n this.recoveryAbort = new AbortController();\n this.recoveryTask = this.recover(this.recoveryAbort.signal).finally(() => {\n this.recoveryTask = undefined;\n this.recoveryAbort = undefined;\n });\n }\n\n private async recover(signal: AbortSignal): Promise<void> {\n if (!this.options.recovery) return;\n const settings = normalizeRecoverySettings(this.options.recovery.settings);\n let attempt = 0;\n while (!signal.aborted && !this.closed && (settings.maximumAttempts === undefined || attempt < settings.maximumAttempts)) {\n attempt += 1;\n const delay = recoveryDelay(settings, attempt);\n this.setConnection({ state: 'reconnecting', reason: 'connection_lost', attempt, nextRetryAt: Date.now() + delay });\n let connecting: Promise<CodexAppServerTransport> | undefined;\n let nextTransport: CodexAppServerTransport | undefined;\n let generation: number | undefined;\n try {\n await abortableDelay(delay, signal);\n connecting = this.options.recovery.connect();\n nextTransport = await withDeadline(connecting, settings.connectionDeadlineMs, signal, 'Codex shared connection');\n if (signal.aborted || this.closed) {\n await nextTransport.dispose();\n return;\n }\n this.setConnection({ state: 'restoring', reason: 'connection_lost', attempt });\n this.restorationBuffer = [];\n this.restorationSequence = 0;\n this.restorationBufferBytes = 0;\n this.restorationBufferError = undefined;\n const activeGeneration = this.bindTransport(nextTransport);\n generation = activeGeneration;\n this.callbacks.onTransport?.(nextTransport, activeGeneration);\n await this.restorationScheduler.run(\n () => withDeadline(this.restore(activeGeneration), settings.restorationDeadlineMs, signal, 'Codex shared restoration'),\n signal,\n );\n if (activeGeneration !== this.generation || signal.aborted || this.closed) continue;\n return;\n } catch (error) {\n if (generation === undefined) this.restorationBuffer = undefined;\n else this.retireGeneration(generation, 'restoration_failed');\n if (!nextTransport && connecting) {\n void connecting.then(transport => transport.dispose()).catch(() => undefined);\n }\n if (signal.aborted || this.closed) return;\n if (nextTransport) await nextTransport.dispose().catch(() => undefined);\n const permanent = permanentRecoveryReason(error);\n if (permanent) {\n this.setConnection({ state: 'unavailable', reason: permanent, attempt });\n return;\n }\n }\n }\n if (!signal.aborted && !this.closed && settings.maximumAttempts !== undefined) {\n this.setConnection({ state: 'unavailable', reason: 'retry_exhausted', attempt: settings.maximumAttempts });\n }\n }\n\n private retireGeneration(generation: number, reason: string): boolean {\n if (generation !== this.generation) return false;\n this.generation += 1;\n this.restorationBuffer = undefined;\n this.router.invalidate();\n const prefix = `${generation}:`;\n for (const [key, dispatch] of this.pendingDispatches) {\n if (key.startsWith(prefix)) dispatch.abort(new CodexServerRequestCanceled('Codex request belongs to an old connection'));\n }\n this.callbacks.onInvalidated?.(reason, generation);\n return true;\n }\n\n private async restore(generation: number): Promise<void> {\n const transport = this.transport;\n await initializeCodexTransport(transport);\n this.assertRestorationCurrent(generation);\n const rootId = this.router.rootId;\n if (!rootId) throw new Error('Codex shared restoration has no native root');\n const attached = await transport.request('thread/resume', { threadId: rootId, historyMode: 'paginated' });\n this.assertRestorationCurrent(generation);\n if (!isRecord(attached) || !isRecord(attached.thread) || attached.thread.id !== rootId) {\n throw new Error('Codex shared restoration could not attach the native root');\n }\n const snapshots = new Map<string, { value: unknown; sequence: number }>();\n for (const threadId of this.router.threads) {\n for (let attempt = 0; ; attempt += 1) {\n const sequence = this.restorationSequence;\n const value = await transport.request('thread/read', { threadId, includeTurns: true });\n this.assertRestorationCurrent(generation);\n if (!isRecord(value) || !isRecord(value.thread) || value.thread.id !== threadId) {\n throw new Error('Codex shared restoration returned an incompatible thread snapshot');\n }\n const duringRead = this.restorationBuffer!.filter(item => item.sequence > sequence && notificationThreadId(item.params) === threadId);\n if (!historyOverlapsNotifications(value, threadId, duringRead)) {\n snapshots.set(threadId, { value: threadId === rootId ? { ...attached, ...value } : value, sequence });\n break;\n }\n if (attempt === 2) throw new Error('Codex shared history remained active across bounded snapshot reads');\n }\n }\n this.assertRestorationCurrent(generation);\n for (const [threadId, snapshot] of snapshots) this.callbacks.onValidateSnapshot?.(threadId, snapshot.value);\n const buffered = this.restorationBuffer!;\n this.restorationBuffer = undefined;\n this.setConnection({ state: 'connected' });\n for (const threadId of this.router.threads) {\n const snapshot = snapshots.get(threadId);\n if (!snapshot) continue;\n // Thread history cannot replace pending request state, even when a later read advances the timeline cutoff.\n this.callbacks.onSnapshot?.({ threadId, snapshot: snapshot.value, notifications: buffered.filter(item => notificationThreadId(item.params) === threadId\n && (item.method === 'serverRequest/resolved' || item.method === 'thread/settings/updated' || item.sequence > snapshot.sequence)) });\n }\n for (const item of buffered) {\n const threadId = notificationThreadId(item.params);\n if (!threadId || !snapshots.has(threadId)) this.routeNotification(item.method, item.params);\n else if (isRecord(item.params) && (item.method === 'item/started' || item.method === 'item/completed')) {\n this.router.inspectItem(threadId, readString(item.params.turnId), item.params.item);\n }\n }\n for (const [threadId, snapshot] of snapshots) this.router.inspectHistory(threadId, snapshot.value);\n }\n\n private assertRestorationCurrent(generation: number): void {\n if (generation !== this.generation || this.closed) throw new Error('Codex shared restoration used a stale connection');\n if (this.restorationBufferError) throw this.restorationBufferError;\n }\n\n private setConnection(connection: CodexConnectionInfo): void {\n this.connection = connection;\n this.callbacks.onConnection?.({ ...connection });\n }\n\n terminate(error: Error): void {\n if (this.closed) return;\n this.closed = true;\n this.generation++;\n this.recoveryAbort?.abort(new Error('Codex runtime is closed'));\n this.restorationBuffer = undefined;\n this.router.close();\n for (const dispatch of this.pendingDispatches.values()) dispatch.abort(new CodexServerRequestCanceled('Codex runtime is closed'));\n this.callbacks.onTermination?.(error);\n }\n\n async dispose(): Promise<void> {\n this.terminate(new Error('Codex runtime is closed'));\n await this.transport.dispose();\n await this.recoveryTask;\n }\n}\n\nasync function cancelableResponse(response: Promise<unknown>, signal: AbortSignal): Promise<unknown> {\n let canceled: (() => void) | undefined;\n const cancellation = new Promise<never>((_, reject) => {\n canceled = () => reject(signal.reason);\n if (signal.aborted) canceled();\n else signal.addEventListener('abort', canceled, { once: true });\n });\n try { return await Promise.race([response, cancellation]); }\n finally { if (canceled) signal.removeEventListener('abort', canceled); }\n}\n", "import type { AgentChildSession, AgentRuntimeInfo } from '@borgee/agent-provider-sdk';\nimport { CodexDaemonClient } from './native-client/client.js';\nimport { CodexRestorationSemaphore } from './native-client/recovery.js';\nimport type { CodexChildSnapshot, CodexThreadOrigin } from './native-client/types.js';\nimport type { CodexAppServerTransport } from './app-server-transport.js';\nimport { isRecord, readString } from './native.js';\nimport type { CodexSharedRecoveryPlan } from './native-client/recovery.js';\nexport { historyOverlapsNotifications } from './native-client/history.js';\n\nexport interface CodexThreadSession {\n receiveNotification(method: string, params: unknown): void;\n receiveRequest(method: string, params: unknown, id: string | number, generation?: number): Promise<unknown>;\n receiveTermination(error: Error): void;\n notifyChildrenChanged(): void;\n childRuntimeInfo(): AgentRuntimeInfo;\n prepareObservation(): Promise<void>;\n markHistoryRefreshNeeded(uncertain?: boolean): void;\n beginRecovery(reason: string, recovery?: 'retrying' | 'stopped'): void;\n replaceTransport(transport: CodexAppServerTransport, generation: number): void;\n validateSnapshot(snapshot: unknown): void;\n restoreSnapshot(snapshot: unknown, buffered: CodexRawNotification[]): void;\n}\nexport interface CodexRawNotification { method: string; params: unknown }\ninterface ChildEntry {\n parentId: string;\n descriptor: AgentChildSession;\n session?: CodexThreadSession;\n discoveryOrder: number;\n}\n\n// Provider roots share the process-wide native restoration limit.\nconst restorationScheduler = new CodexRestorationSemaphore(4);\n\n/** Projects native client callbacks into Provider sessions and child descriptors. */\nexport class CodexSessionRuntime {\n private readonly sessions = new Map<string, CodexThreadSession>();\n private readonly children = new Map<string, ChildEntry>();\n private readonly client: CodexDaemonClient;\n readonly supportsRecovery: boolean;\n\n constructor(\n transport: CodexAppServerTransport,\n private readonly root: CodexThreadSession,\n private readonly createChild: (thread: Record<string, unknown>, history: unknown, buffered: CodexRawNotification[]) => CodexThreadSession,\n recoveryPlan?: CodexSharedRecoveryPlan,\n ) {\n this.supportsRecovery = recoveryPlan !== undefined;\n this.client = new CodexDaemonClient({ transport, recovery: recoveryPlan, restorationScheduler,\n callbacks: {\n onNotification: (method, params) => {\n const thread = isRecord(params) && isRecord(params.thread) ? params.thread : undefined;\n const id = isRecord(params) ? readString(params.threadId) ?? (thread ? readString(thread.id) : undefined) : undefined;\n (id ? this.sessions.get(id) ?? this.root : this.root).receiveNotification(method, params);\n },\n onRequest: (method, params, id, context) => {\n const session = this.sessions.get(context.threadId);\n if (!session) throw new Error('Codex request belongs to an unavailable thread');\n return session.receiveRequest(method, params, id, context.generation);\n },\n onValidateSnapshot: (threadId, snapshot) => this.sessions.get(threadId)?.validateSnapshot(snapshot),\n onSnapshot: ({ threadId, snapshot, notifications }) => this.sessions.get(threadId)?.restoreSnapshot(snapshot, notifications),\n onChild: child => this.acceptChild(child),\n onChildOrigin: (id, origin) => {\n const entry = this.children.get(id);\n if (!entry || entry.parentId !== origin.parentThreadId) return;\n Object.assign(entry.descriptor, originFields(origin));\n this.sessions.get(entry.parentId)?.notifyChildrenChanged();\n },\n onInvalidated: reason => { for (const session of this.uniqueSessions()) session.beginRecovery(reason); },\n onTransport: (next, generation) => { for (const session of this.uniqueSessions()) session.replaceTransport(next, generation); },\n onConnection: connection => {\n if (connection.state === 'unavailable') for (const session of this.uniqueSessions()) session.beginRecovery(connection.reason ?? 'recovery_unavailable', 'stopped');\n },\n onTermination: error => { for (const session of this.uniqueSessions()) session.receiveTermination(error); },\n },\n });\n }\n\n assertConnected(): void { this.client.assertConnected(); }\n request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown> { return this.client.request(method, params, timeoutMs); }\n runConnected<T>(operation: () => Promise<T>): Promise<T> { return this.client.runConnected(operation); }\n enableRecovery(): void { this.client.enableRecovery(); }\n async dispose(): Promise<void> { await this.client.dispose(); }\n registerRoot(id: string): void { this.sessions.set(id, this.root); this.client.registerRoot(id); }\n hasThread(id: string): boolean { return this.client.hasThread(id); }\n hasChild(parentId: string, childId: string): boolean { return this.client.hasChild(parentId, childId); }\n inspectHistory(parentId: string, history: unknown): void { this.client.inspectHistory(parentId, history); }\n terminate(error: Error): void { this.client.terminate(error); }\n\n private uniqueSessions(): Set<CodexThreadSession> { return new Set([this.root, ...this.sessions.values()]); }\n\n childSessions(parentId: string): AgentChildSession[] {\n return [...this.children.values()].filter(child => child.parentId === parentId)\n .sort((a, b) => a.discoveryOrder - b.discoveryOrder).map(({ descriptor }) => ({ ...descriptor }));\n }\n\n async openChild(parentId: string, childId: string): Promise<CodexThreadSession> {\n await this.client.waitForChild(parentId, childId);\n const session = this.children.get(childId)?.session;\n if (!session) throw new Error('Codex child history is unavailable');\n await session.prepareObservation();\n return session;\n }\n\n sessionChanged(id: string): void {\n const child = this.children.get(id);\n if (!child?.session) return;\n const status = child.session.childRuntimeInfo().status;\n if (child.descriptor.status === status) return;\n child.descriptor.status = status;\n child.descriptor.observation = status === 'closed' ? 'saved_history' : 'live';\n this.sessions.get(child.parentId)?.notifyChildrenChanged();\n }\n\n private acceptChild(child: CodexChildSnapshot): void {\n const { thread, parentThreadId: parentId } = child;\n const id = readString(thread.id)!;\n const previous = this.children.get(id);\n const loaded = isRecord(thread.status) && thread.status.type !== 'notLoaded';\n const descriptor: AgentChildSession = {\n nativeSessionId: id, title: childTitle(thread, id),\n ...(readString(thread.agentRole) ? { role: readString(thread.agentRole) } : {}),\n createdAt: previous?.descriptor.createdAt ?? nativeCreatedAt(thread.createdAt),\n status: loaded ? 'starting' : 'closed', observation: loaded ? 'live' : 'saved_history',\n ...originFields(child.origin),\n };\n const entry: ChildEntry = { parentId, descriptor, discoveryOrder: child.discoveryOrder };\n this.children.set(id, entry);\n if (child.historyState !== 'unavailable') {\n entry.session = this.createChild(thread, child.history, child.notifications);\n if (child.historyState === 'uncertain' || child.requiresRefresh) entry.session.markHistoryRefreshNeeded(child.historyState === 'uncertain');\n this.sessions.set(id, entry.session);\n descriptor.status = entry.session.childRuntimeInfo().status;\n }\n this.sessions.get(parentId)?.notifyChildrenChanged();\n }\n}\n\nfunction originFields(origin: CodexThreadOrigin | undefined): Pick<AgentChildSession, 'parentTurnId' | 'parentCallId' | 'description'> {\n if (!origin) return {};\n return { ...(origin.turnId ? { parentTurnId: origin.turnId } : {}), ...(origin.callId ? { parentCallId: origin.callId } : {}),\n ...(origin.description ? { description: origin.description } : {}) };\n}\n\nfunction childTitle(thread: Record<string, unknown>, id: string): string {\n const spawn = isRecord(thread.source) && isRecord(thread.source.subAgent) && isRecord(thread.source.subAgent.thread_spawn)\n ? thread.source.subAgent.thread_spawn : undefined;\n return readString(thread.agentPath) ?? (spawn ? readString(spawn.agent_path) : undefined)\n ?? readString(thread.name) ?? readString(thread.agentNickname) ?? readString(thread.agentRole) ?? id;\n}\n\nfunction nativeCreatedAt(value: unknown): string {\n if (typeof value === 'number' && Number.isFinite(value)) {\n const date = new Date(value * 1000);\n if (!Number.isNaN(date.valueOf())) return date.toISOString();\n }\n return new Date().toISOString();\n}\n", "import { isRecord, readString } from './native.js';\n\nexport interface CodexSessionSummary {\n nativeSessionId: string;\n providerId: 'codex';\n title: string;\n workspace?: string;\n createdAt: string;\n updatedAt: string;\n state: 'idle' | 'running' | 'waiting' | 'unavailable';\n parentNativeSessionId?: string;\n lineageUnavailable?: true;\n}\n\nexport interface CodexSessionPage { sessions: CodexSessionSummary[]; nextCursor?: string }\nexport interface CodexSessionListOptions { cursor?: string; limit?: number; includeAllSources?: boolean }\n\nexport function readCodexSessionPage(value: unknown, includeAllSources = false): CodexSessionPage {\n if (!isRecord(value) || !Array.isArray(value.data)) throw new Error('Codex thread/list returned an invalid catalog.');\n const sessions: CodexSessionSummary[] = [];\n for (const row of value.data) {\n if (!isRecord(row) || typeof row.id !== 'string') throw new Error('Codex thread/list returned an invalid thread.');\n if (!includeAllSources && (row.parentThreadId || (isRecord(row.source) && 'subAgent' in row.source))) continue;\n sessions.push(readCodexSessionSummary(row));\n }\n if (value.nextCursor != null && typeof value.nextCursor !== 'string') throw new Error('Codex thread/list returned an invalid cursor.');\n return { sessions, ...(typeof value.nextCursor === 'string' && value.nextCursor ? { nextCursor: value.nextCursor } : {}) };\n}\n\nexport function readCodexSessionSummary(row: unknown): CodexSessionSummary {\n if (!isRecord(row) || typeof row.id !== 'string' || !row.id) throw new Error('Codex returned an invalid thread.');\n const status = isRecord(row.status) ? row.status : {};\n const flags = Array.isArray(status.activeFlags) ? status.activeFlags : [];\n const source = isRecord(row.source) ? row.source : {};\n const subAgent = isRecord(source.subAgent) ? source.subAgent : {};\n const spawn = isRecord(subAgent.thread_spawn) ? subAgent.thread_spawn : {};\n const parent = readString(row.parentThreadId) || readString(spawn.parent_thread_id);\n const conflicting = row.parentThreadId && spawn.parent_thread_id && row.parentThreadId !== spawn.parent_thread_id;\n const unavailable = conflicting || ('subAgent' in source && !parent);\n return {\n nativeSessionId: row.id, providerId: 'codex',\n title: readString(row.name)?.trim() || readString(row.preview)?.trim().slice(0, 160) || row.id,\n ...(readString(row.cwd) ? { workspace: readString(row.cwd) } : {}),\n ...(parent ? { parentNativeSessionId: parent } : {}),\n ...(unavailable ? { lineageUnavailable: true as const } : {}),\n createdAt: timestamp(row.createdAt), updatedAt: timestamp(row.updatedAt ?? row.createdAt),\n state: status.type === 'active' ? flags.some((flag) => flag === 'waitingOnApproval' || flag === 'waitingOnUserInput') ? 'waiting' : 'running'\n : status.type === 'systemError' ? 'unavailable' : 'idle',\n };\n}\n\nfunction timestamp(value: unknown): string {\n const date = new Date(typeof value === 'number' ? value * 1000 : NaN);\n if (!Number.isFinite(date.getTime())) throw new Error('Codex thread/list returned an invalid timestamp.');\n return date.toISOString();\n}\n", "import { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport { randomUUID } from 'node:crypto';\nimport { realpath, stat } from 'node:fs/promises';\nimport { CopilotClient, RuntimeConnection, type SessionConfig, type SessionEvent, type SessionMetadata } from '@github/copilot-sdk';\nimport type { AgentPersistenceHandle, AgentProviderAdapter, AgentSessionConfig, AgentSessionResumeOptions } from '@borgee/agent-provider-sdk';\nimport { CopilotAgentSession } from './session.js';\nimport { deadline } from './channel.js';\nimport { RuntimeLiveness } from './runtime-liveness.js';\nexport interface CopilotAgentProviderOptions { executable?: string; env?: Record<string, string | undefined>; requestTimeoutMs?: number; onDiagnostic?: (message: string) => void; onNativeEvent?: (event: SessionEvent) => void; nativeSessionConfig?: Pick<SessionConfig, 'provider' | 'skillDirectories'>; useLoggedInUser?: boolean; }\nexport interface CopilotSessionSummary { nativeSessionId: string; providerId: string; title: string; workspace?: string; createdAt: string; updatedAt: string; state: 'idle' | 'running' | 'waiting' | 'unknown' | 'unavailable'; }\nfunction sessionSummary(session: SessionMetadata): CopilotSessionSummary {\n // Persisted metadata does not establish current activity in another runtime.\n return { nativeSessionId: session.sessionId, providerId: 'copilot', title: session.summary || 'Copilot session', workspace: session.context?.workingDirectory, createdAt: session.startTime.toISOString(), updatedAt: session.modifiedTime.toISOString(), state: 'unknown' };\n}\nexport function resolveCopilotExecutable(): string {\n const packagePath = createRequire(import.meta.url).resolve('@github/copilot/package.json');\n const manifest = JSON.parse(readFileSync(packagePath, 'utf8')) as {bin: {copilot: string}};\n return resolve(dirname(packagePath), manifest.bin.copilot);\n}\nexport class CopilotAgentProvider implements AgentProviderAdapter {\n readonly descriptor = { providerId: 'copilot', displayName: 'GitHub Copilot', sessionInputOperations: ['next_turn'] as const };\n private readonly client: CopilotClient;\n private readonly sessions = new Map<string, CopilotAgentSession>();\n private readonly loading = new Set<string>();\n private started?: Promise<void>;\n private disposed = false;\n private failure?: Error;\n private readonly liveness: RuntimeLiveness;\n constructor(private readonly options: CopilotAgentProviderOptions = {}) {\n this.client = new CopilotClient({ connection: RuntimeConnection.forStdio({ path: options.executable ?? resolveCopilotExecutable() }), env: { ...process.env, ...options.env }, useLoggedInUser: options.useLoggedInUser });\n this.liveness = new RuntimeLiveness(() => this.client.ping(), error => this.invalidate(error), options.requestTimeoutMs ?? 15000);\n }\n private invalidate(error: Error): void {\n if (this.failure || this.disposed) return;\n this.failure = error;\n this.liveness.stop();\n for (const session of this.sessions.values()) session.invalidateNativeRuntime(error);\n }\n private async ready(): Promise<void> {\n if (this.disposed) throw new Error('Copilot provider is disposed.');\n if (this.failure) throw this.failure;\n if (!this.started) {\n const starting = this.client.start();\n void starting.then(async () => {\n if (this.disposed || this.failure) await this.client.forceStop();\n }).catch(error => this.options.onDiagnostic?.(`Copilot startup cleanup: ${String(error)}`));\n this.started = deadline(starting, this.options.requestTimeoutMs ?? 15000, 'Copilot startup');\n }\n try { await this.started; } catch (error) {\n this.invalidate(new Error('Copilot runtime connection could not start.', {cause: error}));\n await this.client.forceStop(); throw this.failure ?? error;\n }\n if (this.disposed) throw new Error('Copilot provider is disposed.');\n if (this.failure) throw this.failure;\n this.liveness.start();\n }\n async listSessions(): Promise<CopilotSessionSummary[]> {\n await this.ready();\n return (await deadline(this.client.listSessions(), this.options.requestTimeoutMs ?? 15000, 'Copilot session discovery')).map(sessionSummary);\n }\n async inspectSession(nativeSessionId: string): Promise<CopilotSessionSummary> {\n if (!nativeSessionId || /[\\x00/\\\\]/u.test(nativeSessionId)) throw new Error('Invalid Copilot session identity.');\n await this.ready();\n const session = await deadline(this.client.getSessionMetadata(nativeSessionId), this.options.requestTimeoutMs ?? 15000, 'Copilot session metadata');\n if (!session) throw new Error('Copilot session not found.');\n if (session.sessionId !== nativeSessionId) throw new Error('Copilot session metadata identity changed.');\n return sessionSummary(session);\n }\n async createSession(config: AgentSessionConfig): Promise<CopilotAgentSession> {\n if (config.additionalDirectories !== undefined) throw new Error('Copilot additional directories are not supported.');\n if (config.planning) throw new Error('Copilot planning controls are not supported.');\n const cwd = await realpath(config.cwd ?? process.cwd());\n if (!(await stat(cwd)).isDirectory()) throw new Error('Copilot workspace must be a directory.');\n return this.open({ ...config, cwd, sessionId: randomUUID() }, false);\n }\n async resumeSession(handle: AgentPersistenceHandle, options?: AgentSessionResumeOptions): Promise<CopilotAgentSession> {\n if (options?.additionalDirectories !== undefined) throw new Error('Copilot additional directories are not supported.');\n if (handle.providerId !== 'copilot' || !handle.sessionId || /[\\x00/\\\\]/u.test(handle.sessionId)) throw new Error('Invalid Copilot persistence handle.');\n let stored: unknown;\n try { stored = JSON.parse(handle.opaque); } catch { throw new Error('Invalid Copilot persistence configuration.'); }\n if (!stored || typeof stored !== 'object') throw new Error('Invalid Copilot persistence configuration.');\n const cwd = (stored as {cwd?: unknown}).cwd;\n return this.open({ sessionId: handle.sessionId, ...(typeof cwd === 'string' ? { cwd } : {}) }, true);\n }\n private async open(config: AgentSessionConfig, resume: boolean): Promise<CopilotAgentSession> {\n await this.ready();\n if (this.sessions.has(config.sessionId) || this.loading.has(config.sessionId)) throw new Error('Copilot session is already loaded.');\n this.loading.add(config.sessionId);\n try {\n let skillDirectories = this.options.nativeSessionConfig?.skillDirectories;\n const discoveryCwd = resume ? (await this.inspectSession(config.sessionId)).workspace : config.cwd;\n if (!skillDirectories && discoveryCwd) {\n try {\n const discovery = await deadline(this.client.rpc.skills.getDiscoveryPaths({projectPaths: [discoveryCwd]}), this.options.requestTimeoutMs ?? 15000, 'Copilot skill discovery paths');\n skillDirectories = discovery.paths.map(entry => entry.path);\n } catch (error) { this.options.onDiagnostic?.(`Copilot skill discovery unavailable: ${String(error)}`); }\n }\n const options = {...this.options, nativeSessionConfig: {...this.options.nativeSessionConfig, skillDirectories}};\n if (this.disposed) throw new Error('Copilot provider is disposed.');\n if (this.failure) throw this.failure;\n const session = await CopilotAgentSession.open(this.client, config, resume, options, () => this.sessions.delete(config.sessionId));\n if (this.failure) { session.invalidateNativeRuntime(this.failure); throw this.failure; }\n if (this.disposed) { await session.dispose(); throw new Error('Copilot provider is disposed.'); }\n this.sessions.set(config.sessionId, session); return session;\n } finally { this.loading.delete(config.sessionId); }\n }\n async openChildSession(parentNativeSessionId: string, nativeSessionId: string) {\n const parent = this.sessions.get(parentNativeSessionId);\n if (!parent) throw new Error('Copilot parent session is not loaded.');\n return parent.openChildSession(nativeSessionId);\n }\n async dispose(): Promise<void> {\n if (this.disposed) return; this.disposed = true;\n this.liveness.stop();\n await Promise.allSettled([...this.sessions.values()].map(s => s.dispose()));\n try {\n const errors = await deadline(this.client.stop(), this.options.requestTimeoutMs ?? 15000, 'Copilot shutdown');\n if (errors.length) { await this.client.forceStop(); this.options.onDiagnostic?.('Copilot graceful shutdown reported errors; forced shutdown completed.'); }\n } catch (error) { await this.client.forceStop(); throw error; }\n }\n}\n", "import { AgentCommandRejectedError, AgentInputRejectedError, AgentSessionInUseError, type AgentSteerOptions } from '@borgee/agent-provider-sdk';\nimport { randomUUID } from 'node:crypto';\nimport { open, realpath, stat } from 'node:fs/promises';\nimport { isAbsolute } from 'node:path';\nimport { constants } from 'node:fs';\nimport type { CopilotClient, CopilotSession, SessionConfig, SessionEvent } from '@github/copilot-sdk';\nimport { validateCommandDirectory, validateSessionSetting, type AgentCapabilities, type AgentChildSession, type AgentCommand, type AgentInteractionResponse, type AgentMessageOptions, type AgentRuntimeInfo, type AgentSession, type AgentSessionConfig, type AgentStreamEvent, type ProviderStreamItem } from '@borgee/agent-provider-sdk';\nimport type { CopilotAgentProviderOptions } from './provider.js';\nimport { Channel, deadline } from './channel.js';\nimport { Projector, provider, record, detail } from './projector.js';\nimport { CopilotChildSession } from './child-session.js';\nimport { NativeInteractions } from './interactions.js';\nexport class CopilotAgentSession implements AgentSession {\n readonly capabilities: AgentCapabilities = { history: true, sendMessage: true, queueMessage: true, steer: true, cancel: true, readResource: true, commands: false, sessionSettings: false, interactions: {question: true, toolApproval: true, planApproval: false} };\n readonly stream = new Channel<ProviderStreamItem>();\n private readonly projector = new Projector();\n private readonly seen = new Set<string>();\n private readonly interactions = new NativeInteractions(event => this.emit(event), () => this.rpc, (operation, label) => this.call(operation, label));\n private readonly children = new Map<string, CopilotChildSession>();\n private readonly resources = new Map<string, string>();\n private unsubscribe?: () => void;\n private buffered: SessionEvent[] | undefined = [];\n private readonly deferredEvents: AgentStreamEvent[] = [];\n private closed = false;\n private observed = false;\n private revision = 0;\n private foregroundRevision = 0;\n private native!: CopilotSession;\n private info: AgentRuntimeInfo;\n private constructor(private readonly config: AgentSessionConfig, private readonly options: CopilotAgentProviderOptions, private readonly onDispose: () => void) {\n this.info = {providerId: provider, sessionId: config.sessionId, status: 'idle', cwd: config.cwd, model: config.model, childSessions: [], persistence: {providerId: provider, sessionId: config.sessionId, opaque: JSON.stringify({cwd: config.cwd})}};\n }\n static async open(client: CopilotClient, config: AgentSessionConfig, resume: boolean, options: CopilotAgentProviderOptions, onDispose: () => void): Promise<CopilotAgentSession> {\n const self = new CopilotAgentSession(config, options, onDispose);\n const nativeConfig: SessionConfig = { ...options.nativeSessionConfig, sessionId: config.sessionId, workingDirectory: resume ? undefined : config.cwd, model: config.model, reasoningEffort: reasoningEffort(config.reasoningEffort), streaming: true, includeSubAgentStreamingEvents: true,\n systemMessage: config.systemPrompt ? {mode: 'append', content: config.systemPrompt} : undefined,\n onPermissionRequest: async () => ({kind: 'no-result'}),\n onUserInputRequest: request => { self.assertOpen(); return self.interactions.bindQuestion(request); }};\n try {\n const opening = resume ? client.resumeSession(config.sessionId, nativeConfig) : client.createSession(nativeConfig);\n void opening.then(async native => {\n if (self.closed) await self.call(native.disconnect(), 'Disconnect late Copilot session');\n }).catch(error => options.onDiagnostic?.(`Copilot late session cleanup: ${String(error)}`));\n self.native = await self.call(opening, 'Open Copilot session');\n self.unsubscribe = self.native.on(event => {\n try { self.options.onNativeEvent?.(structuredClone(event)); } catch { /* Diagnostic observers cannot alter native event processing. */ }\n if (!event.agentId && !record(event.data).parentToolCallId && ['assistant.turn_start', 'assistant.idle', 'abort', 'session.error'].includes(event.type)) self.foregroundRevision++;\n self.interactions.accept(event); if (self.buffered) self.buffered.push(event); else self.accept(event, 'live'); });\n const metadata = await self.call(self.rpc.metadata.snapshot(), 'Read Copilot session identity');\n if (metadata.sessionId !== config.sessionId) throw new Error('Copilot native session identity changed.');\n if (metadata.alreadyInUse) throw new AgentSessionInUseError('Copilot session is already in use by another runtime. Close the original client before opening it here.');\n if (typeof metadata.workingDirectory !== 'string' || !isAbsolute(metadata.workingDirectory)) throw new Error('Copilot native workspace is unavailable.');\n const cwd = await realpath(metadata.workingDirectory);\n if (!(await stat(cwd)).isDirectory()) throw new Error('Copilot native workspace must be a directory.');\n self.info.cwd = cwd;\n self.info.persistence = {providerId: provider, sessionId: config.sessionId, opaque: JSON.stringify({cwd})};\n const history = await self.call(self.native.getEvents(), 'Read Copilot history');\n for (const event of history) self.interactions.trackTool(event);\n const activityRevision = self.foregroundRevision;\n const {processing} = await self.call(self.rpc.metadata.isProcessing(), 'Copilot foreground activity');\n const historicalIds = new Set(history.map(event => event.id));\n const finals = new Set(history.filter(event => event.type === 'assistant.message').map(event => event.data.messageId));\n const bufferedForeground = self.buffered!.some(event => !event.agentId && !record(event.data).parentToolCallId && !historicalIds.has(event.id)\n && ['assistant.turn_start', 'assistant.turn_end', 'assistant.idle', 'assistant.message', 'assistant.message_delta', 'abort', 'session.error'].includes(event.type)\n && !(event.type === 'assistant.message_delta' && finals.has(event.data.messageId)));\n self.projector.prepareHistory(history.filter(event => !event.agentId && !record(event.data).parentToolCallId), !processing && !bufferedForeground);\n self.info.status = processing ? 'running' : 'idle';\n for (const event of history) self.accept(event, 'history');\n self.stream.push({type: 'history_boundary'});\n const buffered = self.buffered!; self.buffered = undefined;\n for (const event of self.deferredEvents.splice(0)) self.emit(event);\n for (const event of buffered) self.accept(event, 'live');\n if (!processing && self.foregroundRevision === activityRevision) self.accept({type: 'assistant.idle', id: `activity-idle:${randomUUID()}`, parentId: null, timestamp: new Date().toISOString(), ephemeral: true, data: {}} as SessionEvent, 'live');\n self.emit({type: 'thread_started', provider, sessionId: config.sessionId});\n await self.refreshControls(); await self.refreshChildren(); self.emitRuntime(); return self;\n } catch (error) { await self.dispose(); throw error; }\n }\n call<T>(operation: Promise<T>, label: string): Promise<T> { return deadline(operation, this.options.requestTimeoutMs ?? 15000, label); }\n get rpc(): CopilotSession['rpc'] { return this.native.rpc; }\n get isClosed() { return this.closed; }\n observe(): AsyncIterable<ProviderStreamItem> { if (this.observed) throw new Error('Copilot observation already attached.'); this.observed = true; return this.stream; }\n emit(event: AgentStreamEvent): void { if (this.buffered) { this.deferredEvents.push(event); return; } if (!this.closed) this.stream.push({type: 'observation', sourceKey: `copilot:local:${randomUUID()}`, occurredAt: Date.now(), delivery: 'live', event}); }\n private emitRuntime() { this.emit({type: 'runtime_updated', provider, runtimeInfo: structuredClone({...this.info, status: this.interactions.waiting && !this.closed ? 'waiting' : this.info.status})}); }\n private accept(event: SessionEvent, delivery: 'history' | 'live'): void {\n if (this.closed || this.seen.has(event.id)) return; this.seen.add(event.id);\n\n const d = record(event.data); const owner = event.agentId ?? (typeof d.parentToolCallId === 'string' ? d.parentToolCallId : undefined);\n if (owner) { for (const child of this.children.values()) child.accept(event, delivery); }\n else {\n for (const projected of this.projector.projectAll(event, delivery)) this.stream.push({type: 'observation', sourceKey: `copilot:${this.config.sessionId}:${projected.key}`, nativeRevision: ++this.revision, occurredAt: Date.parse(event.timestamp), delivery, event: projected.event});\n if (delivery === 'live') {\n if (event.type === 'assistant.turn_start') this.info.status = 'running';\n if (event.type === 'assistant.idle' || event.type === 'session.idle' || event.type === 'abort') this.info.status = 'idle';\n if (event.type === 'session.error') this.info.status = 'failed';\n }\n }\n if (delivery === 'live' && event.type === 'session.model_change') void this.refreshControls().then(() => this.emitRuntime()).catch(error => this.options.onDiagnostic?.(String(error)));\n if (delivery === 'live' && (event.type.startsWith('subagent.') || event.type === 'assistant.idle' || event.type === 'session.task_complete')) void this.refreshChildren().then(() => this.emitRuntime()).catch(error => this.options.onDiagnostic?.(String(error)));\n }\n async respondToInteraction(id: string, response: AgentInteractionResponse): Promise<void> {\n this.assertOpen(); await this.interactions.respond(id, response); this.emitRuntime();\n }\n private assertOpen() { if (this.closed) throw new Error('Copilot session is closed.'); }\n async sendMessage(text: string, options?: AgentMessageOptions): Promise<{messageId: string}> {\n if (options?.additionalContext !== undefined) throw new AgentInputRejectedError('Copilot does not support separate message context.');\n this.assertOpen();\n if (options?.requireIdle && options.delivery === 'next_turn') throw new AgentInputRejectedError('Idle-only delivery cannot be combined with next-turn delivery.');\n if (options?.requireIdle) throw new AgentInputRejectedError('Copilot does not expose atomic idle-only message admission.');\n return {messageId: await this.call(this.native.send({prompt: text, mode: options?.delivery === 'next_turn' ? 'enqueue' : 'immediate'}), 'Copilot input')};\n }\n async listPendingInputs(): Promise<string[]> {\n this.assertOpen();\n const snapshot = await this.call(this.rpc.queue.pendingItems(), 'Copilot pending inputs');\n if (!Array.isArray(snapshot.items)) throw new Error('Copilot pending input snapshot is unavailable.');\n const ids: string[] = [];\n for (const item of snapshot.items) {\n if (item.kind !== 'message') continue;\n const messageId = record(item).messageId;\n if (typeof messageId !== 'string' || !messageId || ids.includes(messageId) || ids.length >= 128) throw new Error('Copilot pending input identity is unavailable.');\n ids.push(messageId);\n }\n return ids;\n }\n async steer(text: string, options?: AgentSteerOptions): Promise<{messageId: string}> {\n this.assertOpen();\n if (options?.expectedTurnId !== undefined) throw new AgentInputRejectedError('Copilot does not support atomic expected-turn steering.');\n const turnId = this.projector.activeTurnId;\n if (!turnId) throw new AgentInputRejectedError('Copilot has no active turn.');\n return this.sendMessage(text, {delivery: 'immediate'});\n }\n async cancel(): Promise<void> { this.assertOpen(); await this.call(this.rpc.interruptMainTurn({flushQueued: true}), 'Copilot cancellation');\n this.interactions.cancelOwner(); this.emitRuntime();\n }\n private async refreshControls(): Promise<void> {\n try {\n const [current, listing] = await Promise.all([this.call(this.rpc.model.getCurrent(), 'Copilot model'), this.call(this.rpc.model.list(), 'Copilot models')]);\n this.info.model = current.modelId;\n this.info.settings = [{id: 'model', category: 'model', label: 'Model', value: current.modelId ?? null, options: listing.list.map(record).filter(model => typeof model.id === 'string').map(model => ({value: model.id as string, label: typeof model.name === 'string' ? model.name : model.id as string})), mutable: true, scope: 'session'}];\n this.capabilities.sessionSettings = this.info.settings.some(setting => setting.options.length > 0);\n this.info.settings[0]!.mutable = this.capabilities.sessionSettings;\n } catch (error) { this.capabilities.sessionSettings = false; this.options.onDiagnostic?.(`Copilot model controls unavailable: ${String(error)}`); }\n try { await this.listCommands(); this.capabilities.commands = true; } catch (error) { this.capabilities.commands = false; this.options.onDiagnostic?.(`Copilot skills unavailable: ${String(error)}`); }\n }\n async setSessionSetting(id: string, value: string): Promise<void> {\n this.assertOpen(); validateSessionSetting(this.info.settings, id, value);\n if ((await this.call(this.rpc.metadata.isProcessing(), 'Copilot foreground activity')).processing) throw new Error('Copilot model changes require an idle session.');\n const result = await this.call(this.rpc.model.switchTo({modelId: value}), 'Copilot model switch');\n if (result.deferred) throw new Error('Copilot deferred the model change; confirmation is pending native application.');\n await this.refreshControls(); this.emitRuntime();\n }\n async listCommands(): Promise<AgentCommand[]> {\n this.assertOpen(); await this.call(this.rpc.skills.ensureLoaded(), 'Load Copilot skills');\n const listing = await this.call(this.rpc.skills.list(), 'Copilot skills'); this.resources.clear();\n return validateCommandDirectory(listing.skills.filter(skill => skill.enabled && skill.userInvocable).map(skill => {\n const locator = `copilot:skill:${encodeURIComponent(skill.name)}`;\n if (skill.path) this.resources.set(locator, skill.path);\n return {id: skill.name, name: skill.commandName ?? skill.name, kind: 'skill', description: skill.description, inputHint: skill.argumentHint, ...(skill.path ? {documentation: locator} : {})};\n }));\n }\n async executeCommand(id: string, args: string) {\n const command = (await this.listCommands()).find(command => command.id === id);\n if (!command) throw new AgentCommandRejectedError('Unknown or disabled Copilot skill.');\n const result = await this.call(this.rpc.commands.invoke({name: command.name, input: args}), 'Invoke Copilot skill');\n if (result.runtimeSettingsChanged) { await this.refreshControls(); this.emitRuntime(); }\n if (result.kind === 'agent-prompt') {\n if (result.mode && result.mode !== 'interactive') throw new Error('Copilot skill requested an unsupported agent mode.');\n const messageId = await this.call(this.native.send({prompt: result.prompt, displayPrompt: result.displayPrompt, mode: 'immediate'}), 'Send Copilot skill prompt');\n return {text: result.notice, execution: 'turn' as const, messageId};\n }\n if (result.kind === 'text') return {text: result.text};\n if (result.kind === 'completed') return {text: result.message};\n throw new Error('Copilot skill requires unsupported subcommand selection.');\n }\n async readResource(locator: string) {\n this.assertOpen();\n try {\n await this.listCommands();\n const path = this.resources.get(locator);\n if (!path) return {status: 'unavailable' as const, reason: 'Unknown Copilot resource.'};\n const handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);\n try {\n const limit = 256 * 1024;\n const stat = await handle.stat();\n if (!stat.isFile() || stat.size > limit) throw new Error('Unsupported skill document.');\n const bytes = Buffer.alloc(limit + 1);\n let length = 0;\n while (length < bytes.length) {\n const read = await handle.read(bytes, length, bytes.length - length, null);\n if (!read.bytesRead) break;\n length += read.bytesRead;\n }\n if (length > limit) throw new Error('Skill document exceeds limit.');\n return {status: 'available' as const, bytes: bytes.subarray(0, length), mediaType: 'text/plain'};\n } finally { await handle.close(); }\n } catch { return {status: 'unavailable' as const, reason: 'Copilot skill document is unavailable.'}; }\n }\n\n async refreshChildren(): Promise<void> {\n try {\n const generations = new Map([...this.children].map(([id, child]) => [id, child.activityGeneration]));\n const listing = await this.call(this.rpc.tasks.list(), 'Copilot child sessions');\n this.info.childSessions = listing.tasks.filter(task => task.type === 'agent').map(task => ({ nativeSessionId: task.id, title: task.description || task.agentType, role: task.agentType, description: task.description, createdAt: task.startedAt, parentCallId: task.toolCallId, status: childStatus(task.status), observation: 'live' }));\n for (const info of this.info.childSessions) this.children.get(info.nativeSessionId)?.updateTask(info, generations.get(info.nativeSessionId), listing.tasks.find(task => task.id === info.nativeSessionId)?.status);\n } catch (error) { this.options.onDiagnostic?.(`Copilot child directory unavailable: ${String(error)}`); }\n }\n cancelChildInteractions(id: string): void { this.interactions.cancelOwner(id); this.emitRuntime(); }\n async openChildSession(id: string): Promise<AgentSession> {\n this.assertOpen(); await this.refreshChildren();\n this.assertOpen();\n const info = this.info.childSessions?.find(child => child.nativeSessionId === id);\n if (!info) throw new Error('Copilot child does not belong to this loaded parent.');\n if (this.children.has(id)) throw new Error('Copilot child session is already loaded.');\n const child = new CopilotChildSession(this, info, () => this.children.delete(id)); this.children.set(id, child);\n try { await child.initialize(); return child; } catch (error) { await child.dispose(); throw error; }\n }\n async runtimeInfo(): Promise<AgentRuntimeInfo> { return structuredClone({...this.info, status: this.interactions.waiting && !this.closed ? 'waiting' : this.info.status}); }\n invalidateNativeRuntime(error: Error): void {\n if (this.closed) return;\n this.closed = true;\n this.unsubscribe?.();\n this.buffered = undefined;\n this.deferredEvents.length = 0;\n this.interactions.dispose();\n this.info.status = 'failed';\n for (const child of this.children.values()) child.invalidateNativeRuntime(error);\n this.stream.push({type: 'session_invalidated', recovery: 'stopped', reason: 'native_runtime_unavailable'});\n this.stream.fail(error);\n this.onDispose();\n }\n async dispose(): Promise<void> {\n if (this.closed) return; this.interactions.dispose(); this.closed = true; this.unsubscribe?.(); await Promise.allSettled([...this.children.values()].map(child => child.dispose()));\n this.info.status = 'closed'; this.stream.close(); this.onDispose();\n if (this.native) await this.call(this.native.disconnect(), 'Disconnect Copilot session');\n }\n}\nfunction childStatus(status: string): AgentChildSession['status'] {\n if (status === 'running' || status === 'idle') return status;\n if (status === 'failed') return 'failed';\n if (status === 'pending') return 'starting';\n return 'closed';\n}\n\nfunction reasoningEffort(value?: string): SessionConfig['reasoningEffort'] {\n if (value === undefined || value === 'low' || value === 'medium' || value === 'high' || value === 'xhigh') return value;\n throw new Error('Unsupported Copilot reasoning effort.');\n}\n", "/** Single-consumer channel owned by a native session. */\nexport class Channel<T> implements AsyncIterable<T> {\n private readonly values: T[] = [];\n private wake: (() => void) | undefined;\n private ended = false;\n private failure: Error | undefined;\n push(value: T): void { if (this.ended) throw new Error('Session channel is closed.'); this.values.push(value); this.wake?.(); }\n close(): void { this.ended = true; this.wake?.(); }\n fail(error: Error): void { this.failure = error; this.close(); }\n async *[Symbol.asyncIterator](): AsyncGenerator<T> {\n for (;;) {\n if (this.values.length) yield this.values.shift()!;\n else if (this.ended) { if (this.failure) throw this.failure; return; }\n else await new Promise<void>((resolve) => { this.wake = resolve; });\n }\n }\n}\n\nexport class DeadlineError extends Error {}\n\nexport async function deadline<T>(operation: Promise<T>, timeoutMs: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try { return await Promise.race([operation, new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new DeadlineError(`${label} timed out.`)), timeoutMs);\n })]); } finally { clearTimeout(timer); }\n}\n", "import type {SessionEvent} from '@github/copilot-sdk';\nimport type {AgentUsage} from '@borgee/agent-provider-sdk';\n\nfunction count(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\n}\n\n/** Native call input includes both cache buckets; accounting keeps all four buckets disjoint. */\nexport function normalizeUsage(event: Extract<SessionEvent, {type: 'assistant.usage'}>, attributable: boolean): AgentUsage {\n const {inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, model} = event.data;\n const usage: AgentUsage = {\n ...(count(inputTokens) ? {inputTokens} : {}),\n ...(count(outputTokens) ? {outputTokens} : {}),\n ...(count(cacheReadTokens) ? {cachedInputTokens: cacheReadTokens} : {}),\n };\n if (!attributable || !count(inputTokens) || !count(outputTokens) || !count(cacheReadTokens) || !count(cacheWriteTokens) || !model?.trim()) return usage;\n const uncached = inputTokens - cacheReadTokens - cacheWriteTokens;\n if (!count(uncached)) return usage;\n usage.accounting = [{measurementId: `copilot:${event.id}`, scope: 'llm_call', provider: 'unknown', model,\n inputTokens: uncached, outputTokens, cacheReadTokens, cacheWriteTokens}];\n return usage;\n}\n", "import type { SessionEvent } from '@github/copilot-sdk';\nimport { boundToolResult, type AgentStreamEvent, type AgentToolDetail } from '@borgee/agent-provider-sdk';\nimport { normalizeUsage } from './usage.js';\nexport const provider = 'copilot';\nexport function record(value: unknown): Record<string, unknown> { return value && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : {}; }\nexport function detail(name: string, value: unknown): AgentToolDetail {\n const args = record(value);\n const command = args.command ?? args.fullCommandText;\n if (typeof command === 'string') return { type: 'shell', command };\n const path = args.path ?? args.file_path ?? args.fileName;\n if (typeof path === 'string') return { type: /edit|patch/i.test(name) ? 'edit' : /write|create/i.test(name) ? 'write' : 'read', filePath: path };\n return { type: 'other', description: name };\n}\n/** Assistant text observations are append-only; durable messages contribute only an unsent suffix. */\nexport class Projector {\n private readonly tools = new Map<string, { name: string; detail: AgentToolDetail }>();\n private readonly messages = new Map<string, string>();\n private turnId: string | undefined;\n private active = false;\n private inputTurnId?: string;\n private interactionId?: string;\n private readonly finalizedMessages = new Set<string>();\n private readonly historicalCompletions = new Set<string>();\n get activeTurnId(): string | undefined { return this.active ? this.turnId : undefined; }\n prepareHistory(events: SessionEvent[], trailingComplete = true): void {\n let lastEnd: string | undefined;\n let interactionId: unknown;\n for (const event of events) {\n const data = record(event.data);\n if (event.type === 'user.message' && data.delivery !== 'steering' && (!data.interactionId || data.interactionId !== interactionId)) {\n if (lastEnd) this.historicalCompletions.add(lastEnd);\n lastEnd = undefined;\n }\n if (data.interactionId) interactionId = data.interactionId;\n if (event.type === 'assistant.turn_end') lastEnd = event.id;\n if (event.type === 'abort' || event.type === 'session.error') lastEnd = undefined;\n }\n if (lastEnd && trailingComplete) this.historicalCompletions.add(lastEnd);\n }\n /** Native queue drain has one idle event; each delivered interaction still owns a public turn. */\n projectAll(event: SessionEvent, delivery: 'history' | 'live' = 'live'): {key: string; event: AgentStreamEvent}[] {\n const d = record(event.data);\n const interactionId = typeof d.interactionId === 'string' ? d.interactionId : undefined;\n const boundary = (event.type === 'user.message' || event.type === 'assistant.turn_start')\n && d.delivery !== 'steering'\n && ((interactionId && this.interactionId && interactionId !== this.interactionId)\n || (event.type === 'user.message' && d.delivery === 'queued' && !interactionId));\n const result: {key: string; event: AgentStreamEvent}[] = [];\n if (this.active && boundary) {\n result.push({key: `interaction-end:${event.id}`, event: {type: 'turn_completed', provider, turnId: this.turnId}});\n this.active = false;\n }\n if (interactionId) this.interactionId = interactionId;\n const projected = this.project(event, delivery);\n if (projected) result.push(projected);\n return result;\n }\n project(event: SessionEvent, delivery: 'history' | 'live' = 'live'): { key: string; event: AgentStreamEvent } | undefined {\n const d = record(event.data);\n // Native child loops reuse numeric turn IDs on follow-up; event IDs remain unique.\n if (event.type === 'user.message' && !this.active) {\n this.inputTurnId = `turn:${event.id}`;\n this.turnId = this.inputTurnId;\n }\n if (event.type === 'assistant.turn_start' && !this.active) {\n this.turnId = this.inputTurnId ?? `turn:${event.id}`;\n this.inputTurnId = undefined;\n }\n const turnId = this.turnId;\n const wrap = (value: AgentStreamEvent, key = event.id) => ({ key, event: value });\n const timeline = (item: Extract<AgentStreamEvent, {type: 'timeline'}>['item'], key?: string) => wrap({ type: 'timeline', provider, item, turnId }, key);\n switch (event.type) {\n case 'user.message': return timeline({ type: 'user_message', text: event.data.content, messageId: typeof d.messageId === 'string' && d.messageId ? d.messageId : event.id });\n case 'assistant.message_delta': {\n const { messageId, deltaContent } = event.data;\n if (this.finalizedMessages.has(messageId) || !deltaContent) return undefined;\n const text = (this.messages.get(messageId) ?? '') + deltaContent;\n this.messages.set(messageId, text); return timeline({ type: 'assistant_message', text: deltaContent, messageId });\n }\n case 'assistant.message': {\n const {messageId, content} = event.data;\n if (this.finalizedMessages.has(messageId)) return undefined;\n const streamed = this.messages.get(messageId) ?? '';\n this.finalizedMessages.add(messageId); this.messages.delete(messageId);\n if (!content || content === streamed) return undefined;\n if (!content.startsWith(streamed)) {\n // A corrected final cannot replace an append-only stream; preserve it as a separate message.\n return timeline({type: 'assistant_message', text: content, messageId: `${messageId}:correction`});\n }\n return timeline({type: 'assistant_message', text: content.slice(streamed.length), messageId});\n }\n case 'assistant.reasoning': return timeline({ type: 'reasoning', text: event.data.content });\n case 'assistant.turn_start':\n if (this.active) return undefined;\n this.active = true; return wrap({ type: 'turn_started', provider, turnId });\n case 'assistant.turn_end':\n if (delivery !== 'history' || !this.historicalCompletions.has(event.id)) return undefined;\n if (!this.active) return undefined;\n this.active = false; return wrap({ type: 'turn_completed', provider, turnId });\n case 'assistant.idle':\n if (!this.active) return undefined;\n this.active = false; return wrap({ type: 'turn_completed', provider, turnId });\n case 'abort': this.active = false; this.inputTurnId = undefined; return wrap({ type: 'turn_canceled', provider, reason: 'Native turn aborted', turnId });\n case 'session.error': this.active = false; this.inputTurnId = undefined; return wrap({ type: 'turn_failed', provider, error: event.data.message, turnId });\n case 'tool.execution_start': {\n const tool = { name: event.data.toolName, detail: detail(event.data.toolName, event.data.arguments) };\n this.tools.set(event.data.toolCallId, tool);\n return timeline({ type: 'tool_call', callId: event.data.toolCallId, ...tool, status: 'running', error: null }, `tool:${event.data.toolCallId}`);\n }\n case 'tool.execution_complete': {\n const tool = this.tools.get(event.data.toolCallId) ?? { name: 'Tool', detail: { type: 'other' as const, description: 'Native tool' } };\n const result = boundToolResult({ content: event.data.result ? [{ type: 'text', text: event.data.result.content }] : [] });\n return timeline({ type: 'tool_call', callId: event.data.toolCallId, ...tool, result, ...(event.data.success ? {status: 'completed' as const, error: null} : {status: 'failed' as const, error: event.data.error?.message ?? 'Native tool failed'}) }, `tool:${event.data.toolCallId}`);\n }\n case 'assistant.usage': return wrap({ type: 'usage_updated', provider, usage: normalizeUsage(event, delivery === 'live' && this.active), turnId });\n case 'session.compaction_start': return timeline({type: 'compaction', status: 'loading'});\n case 'session.compaction_complete': return event.data.success\n ? timeline({type: 'compaction', status: 'completed'})\n : timeline({type: 'error', message: `Copilot compaction failed: ${event.data.error ?? 'Unknown native error'}`});\n default: return undefined;\n }\n }\n}\n", "import type { SessionEvent } from '@github/copilot-sdk';\nimport { AgentInputRejectedError, type AgentCapabilities, type AgentChildSession, type AgentMessageOptions, type AgentRuntimeInfo, type AgentSession, type ProviderStreamItem } from '@borgee/agent-provider-sdk';\nimport { Channel } from './channel.js';\nimport { Projector, record } from './projector.js';\nimport type { CopilotAgentSession } from './session.js';\n/** A child is a view over its parent's native task and event journal, never a resumed root. */\nexport class CopilotChildSession implements AgentSession {\n readonly capabilities: AgentCapabilities = { history: true, sendMessage: true, steer: true, cancel: true, readResource: false, interactions: {question: false, planApproval: false, toolApproval: false} };\n private readonly stream = new Channel<ProviderStreamItem>();\n private readonly projector = new Projector();\n private readonly seen = new Set<string>();\n private buffered: SessionEvent[] | undefined = [];\n private closed = false;\n private failed = false;\n private observed = false;\n private revision = 0;\n activityGeneration = 0;\n private taskRevision = 0;\n private lastTaskTerminal?: string;\n private deferredTask?: {info: AgentChildSession; expectedGeneration: number; nativeStatus?: string};\n constructor(private readonly parent: CopilotAgentSession, private readonly info: AgentChildSession, private readonly onDispose: () => void) {}\n async initialize(): Promise<void> {\n let cursor: string | undefined;\n const history: SessionEvent[] = [];\n do {\n const page = await this.parent.call(this.parent.rpc.eventLog.read({cursor, max: 1000, agentIds: [this.info.nativeSessionId, ...(this.info.parentCallId ? [this.info.parentCallId] : [])], includeEphemeral: false}), 'Copilot child history');\n history.push(...page.events);\n if (!page.hasMore) break;\n if (page.cursor === cursor) throw new Error('Copilot child history cursor did not advance.');\n cursor = page.cursor;\n } while (!this.closed);\n if (this.closed || this.parent.isClosed) throw new Error('Copilot child view is closed.');\n this.projector.prepareHistory(history, this.info.status === 'idle' || this.info.status === 'closed');\n for (const event of history) this.project(event, 'history');\n this.stream.push({type: 'history_boundary'}); const buffered = this.buffered!; this.buffered = undefined;\n for (const event of buffered) this.project(event, 'live');\n if (this.deferredTask) {\n const snapshot = this.deferredTask; this.deferredTask = undefined;\n this.updateTask(snapshot.info, snapshot.expectedGeneration, snapshot.nativeStatus);\n }\n }\n accept(event: SessionEvent, delivery: 'history' | 'live'): void {\n if (this.closed) return;\n const d = record(event.data); const owner = event.agentId ?? d.parentToolCallId;\n if (owner !== this.info.nativeSessionId && owner !== this.info.parentCallId) return;\n if (event.type === 'assistant.turn_start') this.activityGeneration++;\n if (this.buffered) this.buffered.push(event); else this.project(event, delivery);\n }\n private project(event: SessionEvent, delivery: 'history' | 'live') {\n if (this.closed || this.seen.has(event.id)) return; this.seen.add(event.id);\n for (const projected of this.projector.projectAll(event, delivery)) this.stream.push({type: 'observation', sourceKey: `copilot:child:${this.info.nativeSessionId}:${projected.key}`, nativeRevision: ++this.revision, occurredAt: Date.parse(event.timestamp), delivery, event: projected.event});\n }\n updateTask(info: AgentChildSession, expectedGeneration?: number, nativeStatus?: string): void {\n if (this.closed || expectedGeneration !== this.activityGeneration) return;\n if (this.buffered) { this.deferredTask = {info, expectedGeneration, nativeStatus}; return; }\n const terminal = `${nativeStatus ?? info.status}:${this.activityGeneration}`;\n if (this.lastTaskTerminal === terminal) return;\n if (info.status !== 'running' && info.status !== 'starting' && info.status !== 'waiting') this.lastTaskTerminal = terminal;\n if (nativeStatus === 'cancelled') { this.finishCanceled(); return; }\n if (nativeStatus === 'failed') {\n this.project({type: 'session.error', id: `task-failed:${this.info.nativeSessionId}:${++this.taskRevision}`, parentId: null, timestamp: new Date().toISOString(), data: {message: 'Native child task failed', errorType: 'task'}} as SessionEvent, 'live');\n return;\n }\n if (info.status === 'idle' || info.status === 'closed') {\n this.project({type: 'assistant.idle', id: `task-idle:${this.info.nativeSessionId}:${++this.taskRevision}`, parentId: null, timestamp: new Date().toISOString(), ephemeral: true, data: {}} as SessionEvent, 'live');\n }\n }\n observe() { if (this.observed) throw new Error('Copilot child observation already attached.'); this.observed = true; return this.stream; }\n async sendMessage(text: string, options?: AgentMessageOptions): Promise<void> {\n if (options?.additionalContext !== undefined) throw new AgentInputRejectedError('Copilot does not support separate message context.');\n if (this.closed || this.parent.isClosed) throw new Error('Copilot child view is closed.');\n if (options?.requireIdle) throw new AgentInputRejectedError('Copilot child sessions do not expose atomic idle-only message admission.');\n this.activityGeneration++;\n const result = await this.parent.call(this.parent.rpc.tasks.sendMessage({id: this.info.nativeSessionId, message: text}), 'Copilot child input');\n if (!result.sent) throw new Error(result.error ?? 'Copilot child input was rejected.');\n }\n async steer(text: string) { await this.sendMessage(text); }\n async cancel() {\n if (this.closed || this.parent.isClosed) throw new Error('Copilot child view is closed.');\n const result = await this.parent.call(this.parent.rpc.tasks.cancel({id: this.info.nativeSessionId}), 'Copilot child cancellation');\n if (!result.cancelled) throw new Error('Copilot child cancellation was rejected.');\n this.finishCanceled();\n }\n private finishCanceled(): void {\n this.parent.cancelChildInteractions(this.info.nativeSessionId);\n this.project({type: 'abort', id: `task-canceled:${this.info.nativeSessionId}:${++this.taskRevision}`, parentId: null, timestamp: new Date().toISOString(), data: {}} as SessionEvent, 'live');\n }\n async respondToInteraction(): Promise<void> { throw new Error('Copilot child interactions are owned by the parent session.'); }\n async runtimeInfo(): Promise<AgentRuntimeInfo> {\n const parent = await this.parent.runtimeInfo(); const current = parent.childSessions?.find(child => child.nativeSessionId === this.info.nativeSessionId) ?? this.info;\n return {providerId: 'copilot', sessionId: this.info.nativeSessionId, status: this.failed ? 'failed' : this.closed ? 'closed' : current.status, cwd: parent.cwd};\n }\n invalidateNativeRuntime(error: Error): void {\n if (this.closed) return;\n this.closed = true; this.failed = true;\n this.buffered = undefined; this.deferredTask = undefined;\n this.stream.push({type: 'session_invalidated', recovery: 'stopped', reason: 'native_runtime_unavailable'});\n this.stream.fail(error); this.onDispose();\n }\n async dispose(): Promise<void> { if (this.closed) return; this.closed = true; this.stream.close(); this.onDispose(); }\n}\n", "import type { CopilotSession, SessionEvent } from '@github/copilot-sdk';\nimport { validateInteractionResponse, type AgentInteractionRequest, type AgentInteractionResponse, type AgentStreamEvent } from '@borgee/agent-provider-sdk';\nimport { detail, provider, record } from './projector.js';\ntype QuestionPayload = Parameters<NonNullable<import('@github/copilot-sdk').SessionConfig['onUserInputRequest']>>[0];\ntype QuestionReply = {answer: string; wasFreeform: boolean};\ninterface Pending { request: AgentInteractionRequest; owner?: string | null; toolCallId?: string; submitting: boolean; question?: QuestionPayload; callback?: {resolve: (reply: QuestionReply) => void; reject: (error: Error) => void}; }\nfunction permissionSummary(value: unknown): string {\n const request = record(value);\n const text = (value: unknown) => typeof value === 'string' ? value.trim() : '';\n const actions: Record<string, string> = {read: 'Read file', write: 'Write file', shell: 'Run shell command', url: 'Access URL', mcp: 'Run MCP tool'};\n const summary = text(request.intention) || text(request.toolTitle) || actions[String(request.kind)] || 'Run tool';\n const parts = [summary, text(request.warning)];\n if (request.requestSandboxBypass === true) parts.push(['Runs outside the sandbox.', text(request.requestSandboxBypassReason)].filter(Boolean).join(' '));\n return parts.filter(Boolean).join('\\n\\n');\n}\n/** Native request IDs correlate presentation, responses, completion and cancellation. */\nexport class NativeInteractions {\n private readonly toolOwners = new Map<string, string | undefined>();\n private readonly pending = new Map<string, Pending>();\n constructor(private readonly emit: (event: AgentStreamEvent) => void, private readonly rpc: () => CopilotSession['rpc'], private readonly call: <T>(operation: Promise<T>, label: string) => Promise<T>) {}\n get waiting(): boolean { return this.pending.size > 0; }\n trackTool(event: SessionEvent): void {\n if (event.type !== 'tool.execution_start') return;\n const owner = event.agentId ?? event.data.parentToolCallId;\n this.toolOwners.set(event.data.toolCallId, owner);\n for (const pending of this.pending.values()) if (pending.owner === null && pending.toolCallId === event.data.toolCallId) pending.owner = owner;\n }\n private owner(event: SessionEvent, toolCallId?: string): string | null | undefined {\n if (event.agentId) return event.agentId;\n return toolCallId ? this.toolOwners.has(toolCallId) ? this.toolOwners.get(toolCallId) : null : undefined;\n }\n accept(event: SessionEvent): void {\n this.trackTool(event);\n if (event.type === 'permission.requested' && !event.data.resolvedByHook) {\n const {requestId, permissionRequest} = event.data;\n const toolCallId = record(event.data.promptRequest).toolCallId ?? record(permissionRequest).toolCallId;\n this.open({kind: 'tool_approval', requestId, toolCallId: typeof toolCallId === 'string' ? toolCallId : requestId, toolName: permissionRequest.kind, summary: permissionSummary(permissionRequest), detail: detail(permissionRequest.kind, permissionRequest), allowedDecisions: ['allow', 'deny'], allowScopes: ['once']}, this.owner(event, typeof toolCallId === 'string' ? toolCallId : undefined), typeof toolCallId === 'string' ? toolCallId : undefined);\n } else if (event.type === 'user_input.requested') {\n const request = event.data;\n this.open({kind: 'question', requestId: request.requestId, questions: [{questionId: 'answer', header: 'Copilot', prompt: request.question, required: true, selection: 'single', options: (request.choices ?? []).map(value => ({value, label: value})), allowCustomText: request.allowFreeform !== false, allowDismiss: false}]}, this.owner(event, request.toolCallId), request.toolCallId);\n this.pending.get(request.requestId)!.question = {question: request.question, choices: request.choices, allowFreeform: request.allowFreeform};\n } else if (event.type === 'permission.completed') {\n const kind = event.data.result.kind;\n this.retire(event.data.requestId, kind.startsWith('approved') ? {kind: 'tool_approval', decision: 'allow', scope: 'once'}\n : {kind: 'tool_approval', decision: kind.startsWith('denied') ? 'deny' : 'cancel'});\n } else if (event.type === 'user_input.completed') {\n const request = this.pending.get(event.data.requestId)?.request;\n if (!request || request.kind !== 'question') return;\n const {answer, wasFreeform} = event.data;\n const pending = this.pending.get(event.data.requestId);\n if (answer === undefined) pending?.callback?.reject(new Error('Copilot question was canceled.'));\n else pending?.callback?.resolve({answer, wasFreeform: wasFreeform ?? false});\n this.retire(event.data.requestId, answer === undefined ? {kind: 'question', answers: [], dismissed: true} : {kind: 'question', answers: [{questionId: 'answer', selectedValues: wasFreeform ? [] : [answer], ...(wasFreeform ? {customText: answer} : {})}]});\n } else if (event.type === 'abort') this.cancelOwner(event.agentId);\n }\n bindQuestion(payload: QuestionPayload): Promise<QuestionReply> {\n const signature = (value: QuestionPayload) => JSON.stringify([value.question, value.choices ?? [], value.allowFreeform !== false]);\n const matches = [...this.pending.values()].filter(pending => !pending.callback && pending.question && signature(pending.question) === signature(payload));\n if (matches.length !== 1) {\n const message = 'Copilot question callback has no unique native request identity; concurrent identical questions are unsupported.';\n this.emit({type: 'timeline', provider, item: {type: 'error', message}});\n for (const pending of matches) this.retire(pending.request.requestId);\n return Promise.reject(new Error(message));\n }\n return new Promise((resolve, reject) => { matches[0]!.callback = {resolve, reject}; });\n }\n private open(request: AgentInteractionRequest, owner?: string | null, toolCallId?: string): void {\n if (this.pending.has(request.requestId)) return;\n this.pending.set(request.requestId, {request, owner, toolCallId, submitting: false});\n this.emit({type: 'interaction_requested', provider, request});\n }\n private retire(requestId: string, response?: AgentInteractionResponse): void {\n const pending = this.pending.get(requestId); if (!pending) return;\n this.pending.delete(requestId);\n if (!response) pending.callback?.reject(new Error('Copilot question was canceled.'));\n const terminal = response ?? (pending.request.kind === 'question' ? {kind: 'question' as const, answers: [], dismissed: true} : {kind: 'tool_approval' as const, decision: 'cancel' as const});\n this.emit({type: 'interaction_resolved', provider, requestId, response: terminal});\n }\n cancelOwner(owner?: string | null, toolCallId?: string): void { for (const [id, pending] of this.pending) if (pending.owner === owner) this.retire(id); }\n dispose(): void { for (const id of this.pending.keys()) this.retire(id); }\n async respond(requestId: string, response: AgentInteractionResponse): Promise<void> {\n const pending = this.pending.get(requestId); if (!pending) throw new Error('Unknown Copilot interaction.');\n if (pending.submitting) throw new Error('Copilot interaction response is already pending.');\n validateInteractionResponse(pending.request, response); pending.submitting = true;\n try {\n if (response.kind === 'question') {\n if (!pending.callback) throw new Error('Copilot native question callback is not available.');\n const answer = response.answers[0]!;\n pending.callback.resolve({answer: answer.customText ?? answer.selectedValues[0]!, wasFreeform: answer.customText !== undefined});\n this.retire(requestId, response); return;\n }\n const result = response.kind === 'tool_approval'\n ? await this.call(this.rpc().permissions.handlePendingPermissionRequest({requestId, result: response.decision === 'allow' ? {kind: 'approve-once', approvedInteractively: true} : {kind: 'reject'}}), 'Respond to Copilot permission')\n : undefined;\n if (!result?.success) { this.retire(requestId); throw new Error('Copilot interaction is no longer pending.'); }\n this.retire(requestId, response);\n } finally { pending.submitting = false; }\n }\n}\n", "import { deadline } from './channel.js';\n\n/** Serial probes stop permanently after failure or explicit disposal. */\nexport class RuntimeLiveness {\n private timer?: ReturnType<typeof setTimeout>;\n private stopped = false;\n constructor(private readonly probe: () => Promise<unknown>, private readonly invalidate: (error: Error) => void, private readonly timeoutMs: number) {}\n start(): void {\n if (this.stopped || this.timer) return;\n this.timer = setTimeout(() => { void this.check(); }, 1000);\n this.timer.unref();\n }\n stop(): void { this.stopped = true; clearTimeout(this.timer); }\n private async check(): Promise<void> {\n try { await deadline(this.probe(), this.timeoutMs, 'Native runtime probe'); }\n catch (cause) {\n if (!this.stopped) { this.stop(); this.invalidate(new Error('Copilot runtime connection is unavailable.', {cause})); }\n return;\n }\n this.timer = undefined;\n this.start();\n }\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", "/** 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", "// --------------------------------------------------------------------------\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 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 * 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 { 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", "/** 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 { 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", "/** The base Error type thrown for all TypeBox exceptions */\nexport class TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\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", "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 an Array type */\nexport function Array(items, options) {\n return CreateType({ [Kind]: 'Array', type: 'array', items }, options);\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/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/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", "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 * 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 { 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 { 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", "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", "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", "/** 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 { 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 { 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 { 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 { 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 { 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 { 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 Unknown type */\nexport function Unknown(options) {\n return CreateType({ [Kind]: 'Unknown' }, options);\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", "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 { 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", "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", "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 { 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 { 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 { 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 { 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/** `[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 Static, Type } from '@sinclair/typebox';\n\nexport const SafeNonNegativeInteger = Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER });\n\nexport const TimelineCursor = Type.Object({\n epoch: Type.String({ minLength: 1 }),\n seq: SafeNonNegativeInteger,\n}, { additionalProperties: false });\nexport type TimelineCursor = Static<typeof TimelineCursor>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nexport const BORGEE_AGENT_REMOTE_PROTOCOL_VERSION = '1.7.0';\nexport const PROTOCOL_VERSION = BORGEE_AGENT_REMOTE_PROTOCOL_VERSION;\n\nexport const ProtocolVersionSchema = Type.Literal(BORGEE_AGENT_REMOTE_PROTOCOL_VERSION);\nexport type ProtocolVersionSchema = Static<typeof ProtocolVersionSchema>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst NonNegativeInteger = Type.Integer({ minimum: 0 });\nconst CanonicalBase64 = Type.String({\n minLength: 4,\n pattern: '^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$',\n});\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const ResourceStatus = Type.Union([\n Type.Literal('pending'),\n Type.Literal('available'),\n Type.Literal('failed'),\n Type.Literal('unavailable'),\n]);\nexport type ResourceStatus = Static<typeof ResourceStatus>;\n\nexport const ResourceBinding = Strict({\n locator: NonEmptyString,\n resourceId: NonEmptyString,\n status: ResourceStatus,\n});\nexport type ResourceBinding = Static<typeof ResourceBinding>;\n\nexport const ResourceRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_request'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, resourceId: NonEmptyString }),\n});\nexport type ResourceRequest = Static<typeof ResourceRequest>;\n\nexport const ResourceState = Type.Union([\n Strict({ status: Type.Literal('pending'), retryAfterMs: Type.Integer({ minimum: 1 }) }),\n Strict({\n status: Type.Literal('available'),\n mediaType: NonEmptyString,\n byteLength: NonNegativeInteger,\n sha256: NonEmptyString,\n }),\n Strict({ status: Type.Literal('failed'), message: NonEmptyString, retryable: Type.Boolean() }),\n Strict({ status: Type.Literal('unavailable'), reason: NonEmptyString }),\n]);\nexport type ResourceState = Static<typeof ResourceState>;\n\nexport const ResourceResponseState = Type.Union([\n Strict({ status: Type.Literal('pending'), retryAfterMs: Type.Integer({ minimum: 1 }) }),\n Strict({\n status: Type.Literal('available'),\n mediaType: NonEmptyString,\n byteLength: NonNegativeInteger,\n sha256: NonEmptyString,\n contentBase64: CanonicalBase64,\n }),\n Strict({ status: Type.Literal('failed'), message: NonEmptyString, retryable: Type.Boolean() }),\n Strict({ status: Type.Literal('unavailable'), reason: NonEmptyString }),\n]);\nexport type ResourceResponseState = Static<typeof ResourceResponseState>;\n\nexport const ResourceResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_response'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n resourceId: NonEmptyString,\n state: ResourceResponseState,\n }),\n});\nexport type ResourceResponse = Static<typeof ResourceResponse>;\n\nexport const ResourceUpdate = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resource_update'),\n payload: Strict({\n agentId: NonEmptyString,\n resourceId: NonEmptyString,\n state: ResourceState,\n }),\n});\nexport type ResourceUpdate = Static<typeof ResourceUpdate>;\n\nexport const TimelineResourceBindingReplacement = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_resource_binding_replaced'),\n payload: Strict({\n agentId: NonEmptyString,\n epoch: NonEmptyString,\n seq: SafeNonNegativeInteger,\n previous: ResourceBinding,\n replacement: ResourceBinding,\n }),\n});\nexport type TimelineResourceBindingReplacement = Static<typeof TimelineResourceBindingReplacement>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentToolDetail = Type.Union([\n Strict({ type: Type.Literal('shell'), command: NonEmptyString, cwd: Type.Optional(NonEmptyString) }),\n Strict({ type: Type.Literal('read'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('edit'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('write'), filePath: NonEmptyString }),\n Strict({ type: Type.Literal('search'), query: NonEmptyString }),\n Strict({ type: Type.Literal('fetch'), url: NonEmptyString }),\n Strict({ type: Type.Literal('other'), description: NonEmptyString }),\n]);\nexport type AgentToolDetail = Static<typeof AgentToolDetail>;\n\nexport const AgentQuestionOption = Strict({\n value: NonEmptyString,\n label: NonEmptyString,\n description: Type.Optional(Type.String()),\n});\nexport type AgentQuestionOption = Static<typeof AgentQuestionOption>;\n\nexport const AgentQuestion = Strict({\n questionId: NonEmptyString,\n header: NonEmptyString,\n prompt: NonEmptyString,\n description: Type.Optional(Type.String()),\n required: Type.Boolean(),\n selection: Type.Union([Type.Literal('single'), Type.Literal('multiple')]),\n options: Type.Array(AgentQuestionOption),\n allowCustomText: Type.Boolean(),\n allowDismiss: Type.Boolean(),\n sensitive: Type.Optional(Type.Boolean()),\n});\nexport type AgentQuestion = Static<typeof AgentQuestion>;\n\nexport const AgentPlanAction = Type.Union([\n Type.Literal('approve'),\n Type.Literal('approve_and_resume'),\n Type.Literal('reject'),\n]);\nexport type AgentPlanAction = Static<typeof AgentPlanAction>;\n\nexport const AgentToolDecision = Type.Union([Type.Literal('allow'), Type.Literal('deny'), Type.Literal('cancel')]);\nexport type AgentToolDecision = Static<typeof AgentToolDecision>;\n\nexport const AgentToolApprovalScope = Type.Union([Type.Literal('once'), Type.Literal('session'), Type.Literal('policy')]);\nexport type AgentToolApprovalScope = Static<typeof AgentToolApprovalScope>;\n\nexport const AgentFormOption = Strict({ value: NonEmptyString, label: NonEmptyString });\nexport type AgentFormOption = Static<typeof AgentFormOption>;\nconst FormFieldBase = {\n fieldId: NonEmptyString, label: NonEmptyString, required: Type.Boolean(),\n description: Type.Optional(Type.String()), sensitive: Type.Optional(Type.Boolean()),\n};\nconst NonNegativeInteger = Type.Integer({ minimum: 0 });\nexport const AgentFormField = Type.Union([\n Strict({ ...FormFieldBase, type: Type.Literal('text'), minLength: Type.Optional(NonNegativeInteger), maxLength: Type.Optional(NonNegativeInteger), format: Type.Optional(Type.Union([Type.Literal('email'), Type.Literal('uri'), Type.Literal('date'), Type.Literal('date-time')])), defaultValue: Type.Optional(Type.String()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('number'), integer: Type.Optional(Type.Boolean()), minimum: Type.Optional(Type.Number()), maximum: Type.Optional(Type.Number()), defaultValue: Type.Optional(Type.Number()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('boolean'), defaultValue: Type.Optional(Type.Boolean()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('select'), options: Type.Array(AgentFormOption, { minItems: 1 }), defaultValue: Type.Optional(Type.String()) }),\n Strict({ ...FormFieldBase, type: Type.Literal('multiselect'), options: Type.Array(AgentFormOption, { minItems: 1 }), minItems: Type.Optional(NonNegativeInteger), maxItems: Type.Optional(NonNegativeInteger), defaultValue: Type.Optional(Type.Array(Type.String(), { uniqueItems: true })) }),\n]);\nexport type AgentFormField = Static<typeof AgentFormField>;\nexport const AgentFormValue = Type.Union([Type.String(), Type.Number(), Type.Boolean(), Type.Array(Type.String(), { uniqueItems: true })]);\nexport type AgentFormValue = Static<typeof AgentFormValue>;\nexport const AgentFormValues = Type.Record(Type.String(), AgentFormValue);\nexport type AgentFormValues = Static<typeof AgentFormValues>;\nexport const AgentPermissionScope = Type.Union([Type.Literal('turn'), Type.Literal('session')]);\nexport type AgentPermissionScope = Static<typeof AgentPermissionScope>;\nexport const AgentPermission = Strict({\n resource: Type.Union([Type.Literal('filesystem'), Type.Literal('network')]),\n access: Type.Union([Type.Literal('read'), Type.Literal('write'), Type.Literal('deny'), Type.Literal('connect')]),\n target: NonEmptyString,\n});\nexport type AgentPermission = Static<typeof AgentPermission>;\n\nexport const AgentInteractionRequest = Type.Union([\n Strict({\n kind: Type.Literal('question'),\n requestId: NonEmptyString,\n questions: Type.Array(AgentQuestion, { minItems: 1 }),\n }),\n Strict({\n kind: Type.Literal('plan_approval'),\n requestId: NonEmptyString,\n plan: Type.String(),\n allowedActions: Type.Array(AgentPlanAction, { minItems: 1, uniqueItems: true }),\n }),\n Strict({\n kind: Type.Literal('tool_approval'),\n requestId: NonEmptyString,\n toolCallId: NonEmptyString,\n toolName: NonEmptyString,\n summary: Type.String(),\n detail: AgentToolDetail,\n allowedDecisions: Type.Array(AgentToolDecision, { minItems: 1, uniqueItems: true }),\n allowScopes: Type.Array(AgentToolApprovalScope, { uniqueItems: true }),\n policies: Type.Optional(Type.Array(Strict({ policyId: NonEmptyString, description: Type.String() }))),\n context: Type.Optional(Type.Array(Strict({ label: NonEmptyString, value: Type.String() }))),\n }),\n Strict({ kind: Type.Literal('form'), requestId: NonEmptyString, title: NonEmptyString, message: Type.String(), fields: Type.Array(AgentFormField) }),\n Strict({ kind: Type.Literal('permission_approval'), requestId: NonEmptyString, summary: Type.String(), permissions: Type.Array(AgentPermission, { minItems: 1 }), allowScopes: Type.Array(AgentPermissionScope, { minItems: 1, uniqueItems: true }) }),\n Strict({ kind: Type.Literal('external_action'), requestId: NonEmptyString, title: NonEmptyString, message: Type.String(), url: Type.String({ pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^\\\\s/?#]+[^\\\\s]*$' }) }),\n]);\nexport type AgentInteractionRequest = Static<typeof AgentInteractionRequest>;\n\nexport const AgentQuestionAnswer = Strict({\n questionId: NonEmptyString,\n selectedValues: Type.Array(NonEmptyString, { uniqueItems: true }),\n customText: Type.Optional(Type.String()),\n redacted: Type.Optional(Type.Boolean()),\n});\nexport type AgentQuestionAnswer = Static<typeof AgentQuestionAnswer>;\n\nexport const AgentQuestionnaireQuestion = Strict({ ...AgentQuestion.properties, sensitive: Type.Optional(Type.Literal(false)) });\nexport type AgentQuestionnaireQuestion = Static<typeof AgentQuestionnaireQuestion>;\n\nexport const AgentQuestionnaireResponse = Strict({ messageId: NonEmptyString, answers: Type.Array(AgentQuestionAnswer, { minItems: 1 }) });\nexport type AgentQuestionnaireResponse = Static<typeof AgentQuestionnaireResponse>;\n\nexport const AgentInteractionResponse = Type.Union([\n Strict({\n kind: Type.Literal('question'),\n answers: Type.Array(AgentQuestionAnswer),\n dismissed: Type.Optional(Type.Boolean()),\n }),\n Strict({\n kind: Type.Literal('plan_approval'),\n action: Type.Union([Type.Literal('approve'), Type.Literal('approve_and_resume')]),\n }),\n Strict({ kind: Type.Literal('plan_approval'), action: Type.Literal('reject'), feedback: Type.Optional(Type.String()) }),\n Strict({\n kind: Type.Literal('tool_approval'),\n decision: Type.Literal('allow'),\n scope: Type.Union([Type.Literal('once'), Type.Literal('session')]),\n }),\n Strict({ kind: Type.Literal('tool_approval'), decision: Type.Literal('allow'), scope: Type.Literal('policy'), policyId: NonEmptyString }),\n Strict({\n kind: Type.Literal('tool_approval'),\n decision: Type.Union([Type.Literal('deny'), Type.Literal('cancel')]),\n message: Type.Optional(Type.String()),\n }),\n Strict({ kind: Type.Literal('form'), action: Type.Literal('submit'), values: AgentFormValues, redactedFields: Type.Optional(Type.Array(NonEmptyString, { uniqueItems: true })) }),\n Strict({ kind: Type.Literal('form'), action: Type.Union([Type.Literal('decline'), Type.Literal('cancel')]) }),\n Strict({ kind: Type.Literal('permission_approval'), decision: Type.Literal('allow'), scope: AgentPermissionScope }),\n Strict({ kind: Type.Literal('permission_approval'), decision: Type.Literal('deny') }),\n Strict({ kind: Type.Literal('external_action'), action: Type.Union([Type.Literal('completed'), Type.Literal('decline'), Type.Literal('cancel')]) }),\n]);\nexport type AgentInteractionResponse = Static<typeof AgentInteractionResponse>;\n\nexport const InteractionResponseMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_response'),\n payload: Strict({\n agentId: NonEmptyString,\n requestId: NonEmptyString,\n response: AgentInteractionResponse,\n }),\n});\nexport type InteractionResponseMessage = Static<typeof InteractionResponseMessage>;\n\nexport const InteractionRequestedMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_requested'),\n payload: Strict({ agentId: NonEmptyString, request: AgentInteractionRequest }),\n});\nexport type InteractionRequestedMessage = Static<typeof InteractionRequestedMessage>;\n\nexport const InteractionResolvedMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('interaction_resolved'),\n payload: Strict({\n agentId: NonEmptyString,\n requestId: NonEmptyString,\n response: AgentInteractionResponse,\n }),\n});\nexport type InteractionResolvedMessage = Static<typeof InteractionResolvedMessage>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(properties, { additionalProperties: false });\n\nexport const AgentSessionSettingOption = Strict({\n value: NonEmptyString,\n label: NonEmptyString,\n description: Type.Optional(Type.String()),\n});\nexport type AgentSessionSettingOption = Static<typeof AgentSessionSettingOption>;\n\nexport const AgentSessionSetting = Strict({\n id: NonEmptyString,\n category: Type.Union([Type.Literal('model'), Type.Literal('permissions')]),\n label: NonEmptyString,\n value: Type.Union([NonEmptyString, Type.Null()]),\n options: Type.Array(AgentSessionSettingOption),\n mutable: Type.Boolean(),\n scope: Type.Union([Type.Literal('session'), Type.Literal('session_and_default')]),\n description: Type.Optional(Type.String()),\n});\nexport type AgentSessionSetting = Static<typeof AgentSessionSetting>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nconst strict = { additionalProperties: false } as const;\nexport const AgentToolResultJson = Type.Recursive((value) => Type.Union([\n Type.Null(), Type.Boolean(), Type.Number(), Type.String(), Type.Array(value), Type.Record(Type.String(), value),\n]));\nexport type AgentToolResultJson = Static<typeof AgentToolResultJson>;\nexport const AgentToolResultContent = Type.Union([\n Type.Object({ type: Type.Literal('text'), text: Type.String(), stream: Type.Optional(Type.Union([\n Type.Literal('stdout'), Type.Literal('stderr'), Type.Literal('combined'),\n ])) }, strict),\n Type.Object({ type: Type.Literal('json'), value: AgentToolResultJson }, strict),\n]);\nexport type AgentToolResultContent = Static<typeof AgentToolResultContent>;\nexport const AgentToolResult = Type.Object({\n content: Type.Array(AgentToolResultContent),\n exitCode: Type.Optional(Type.Integer({ minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER })),\n durationMs: Type.Optional(Type.Number({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER })),\n truncated: Type.Optional(Type.Boolean()),\n}, strict);\nexport type AgentToolResult = Static<typeof AgentToolResult>;\n", "import { AgentToolResult } from './tool-result.js';\nimport { type Static, type TSchema, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { AgentInteractionRequest, AgentInteractionResponse, AgentQuestionnaireQuestion, AgentQuestionnaireResponse, AgentToolDetail } from './interactions.js';\nimport { ResourceBinding } from './resources.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentTaskItem = Strict({\n text: Type.String(),\n completed: Type.Boolean(),\n id: Type.Optional(NonEmptyString),\n status: Type.Optional(Type.Union([\n Type.Literal('pending'), Type.Literal('in_progress'), Type.Literal('completed'),\n ])),\n activeForm: Type.Optional(Type.String()),\n});\nexport type AgentTaskItem = Static<typeof AgentTaskItem>;\n\nconst ToolCallBase = {\n type: Type.Literal('tool_call'),\n callId: NonEmptyString,\n name: NonEmptyString,\n detail: AgentToolDetail,\n result: Type.Optional(AgentToolResult),\n};\n\nexport const AgentToolCallTimelineItem = Type.Union([\n Strict({ ...ToolCallBase, status: Type.Literal('running'), error: Type.Null() }),\n Strict({ ...ToolCallBase, status: Type.Literal('completed'), error: Type.Null() }),\n Strict({ ...ToolCallBase, status: Type.Literal('failed'), error: NonEmptyString }),\n Strict({ ...ToolCallBase, status: Type.Literal('canceled'), error: Type.Null() }),\n]);\nexport type AgentToolCallTimelineItem = Static<typeof AgentToolCallTimelineItem>;\n\nexport const UserMessageWithoutOrigin = Strict({\n type: Type.Literal('user_message'),\n text: Type.String(),\n messageId: Type.Optional(NonEmptyString),\n clientMessageId: Type.Optional(NonEmptyString),\n});\nexport const AgentUserMessageOrigin = Strict({ kind: Type.Union([\n Type.Literal('borgee'), Type.Literal('native'), Type.Literal('agent'), Type.Literal('unknown'),\n]) });\nexport const UserMessageWithOrigin = Strict({ ...UserMessageWithoutOrigin.properties, origin: Type.Optional(AgentUserMessageOrigin) });\nconst UserMessage = Strict({ ...UserMessageWithOrigin.properties, questionnaireResponse: Type.Optional(AgentQuestionnaireResponse) });\n\nexport const timelineItemsWithUser = <T extends TSchema>(user: T, includeQuestionnaire = true) => Type.Union([\n user,\n Strict({\n type: Type.Literal('assistant_message'),\n text: Type.String(),\n messageId: Type.Optional(NonEmptyString),\n }),\n ...(includeQuestionnaire ? [Strict({ type: Type.Literal('questionnaire'), messageId: NonEmptyString, text: Type.String(), questions: Type.Array(AgentQuestionnaireQuestion, { minItems: 1 }) })] : []),\n Strict({ type: Type.Literal('reasoning'), text: Type.String() }),\n AgentToolCallTimelineItem,\n Strict({ type: Type.Literal('todo'), items: Type.Array(AgentTaskItem) }),\n Strict({ type: Type.Literal('interaction'), request: AgentInteractionRequest, response: AgentInteractionResponse }),\n Strict({ type: Type.Literal('error'), message: Type.String() }),\n Strict({\n type: Type.Literal('compaction'),\n status: Type.Union([Type.Literal('loading'), Type.Literal('completed')]),\n trigger: Type.Optional(Type.Union([Type.Literal('auto'), Type.Literal('manual')])),\n preTokens: Type.Optional(SafeNonNegativeInteger),\n }),\n]);\nexport const AgentTimelineItem = timelineItemsWithUser(UserMessage);\nexport type AgentTimelineItem = Static<typeof AgentTimelineItem>;\n\n/** Settled disjoint token deltas; inputTokens excludes cache reads and writes. */\nexport const AgentUsageAccounting = Strict({\n measurementId: NonEmptyString,\n scope: Type.Union([Type.Literal('turn'), Type.Literal('llm_call')]),\n provider: NonEmptyString,\n model: NonEmptyString,\n inputTokens: SafeNonNegativeInteger,\n outputTokens: SafeNonNegativeInteger,\n cacheReadTokens: SafeNonNegativeInteger,\n cacheWriteTokens: SafeNonNegativeInteger,\n});\nexport type AgentUsageAccounting = Static<typeof AgentUsageAccounting>;\n\nexport const AgentUsage = Strict({\n accounting: Type.Optional(Type.Array(AgentUsageAccounting)),\n inputTokens: Type.Optional(SafeNonNegativeInteger),\n cachedInputTokens: Type.Optional(SafeNonNegativeInteger),\n outputTokens: Type.Optional(SafeNonNegativeInteger),\n totalCostUsd: Type.Optional(Type.Number({ minimum: 0 })),\n contextWindowMaxTokens: Type.Optional(SafeNonNegativeInteger),\n contextWindowUsedTokens: Type.Optional(SafeNonNegativeInteger),\n});\nexport type AgentUsage = Static<typeof AgentUsage>;\n\nexport const TimelineSeqRange = Strict({\n startSeq: SafeNonNegativeInteger,\n endSeq: SafeNonNegativeInteger,\n});\nexport type TimelineSeqRange = Static<typeof TimelineSeqRange>;\n\nexport const TimelineCollapse = Type.Union([\n Type.Literal('assistant_merge'),\n Type.Literal('reasoning_merge'),\n Type.Literal('tool_lifecycle'),\n]);\nexport type TimelineCollapse = Static<typeof TimelineCollapse>;\n\nexport const ProjectedTimelineEntry = Strict({\n providerId: NonEmptyString,\n item: AgentTimelineItem,\n turnId: Type.Optional(NonEmptyString),\n timestamp: NonEmptyString,\n seqStart: SafeNonNegativeInteger,\n seqEnd: SafeNonNegativeInteger,\n sourceSeqRanges: Type.Array(TimelineSeqRange),\n collapsed: Type.Array(TimelineCollapse),\n resources: Type.Array(ResourceBinding),\n});\nexport type ProjectedTimelineEntry = Static<typeof ProjectedTimelineEntry>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { AgentInteractionRequest } from './interactions.js';\nimport { AgentSessionSetting } from './session-settings.js';\nimport { AgentUsage } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const AgentStatus = Type.Union([\n Type.Literal('starting'), Type.Literal('idle'), Type.Literal('running'), Type.Literal('waiting'),\n Type.Literal('failed'), Type.Literal('closed'),\n]);\nexport type AgentStatus = Static<typeof AgentStatus>;\n\nexport const AgentCapabilities = Strict({\n history: Type.Boolean(),\n sendMessage: Type.Boolean(),\n queueMessage: Type.Optional(Type.Boolean()),\n steer: Type.Boolean(),\n cancel: Type.Boolean(),\n readResource: Type.Boolean(),\n planning: Type.Optional(Type.Boolean()),\n sessionSettings: Type.Optional(Type.Boolean()),\n commands: Type.Optional(Type.Boolean()),\n interactions: Strict({\n question: Type.Boolean(),\n planApproval: Type.Boolean(),\n toolApproval: Type.Boolean(),\n form: Type.Optional(Type.Boolean()),\n permissionApproval: Type.Optional(Type.Boolean()),\n externalAction: Type.Optional(Type.Boolean()),\n }),\n});\nexport type AgentCapabilities = Static<typeof AgentCapabilities>;\n\nexport const AgentPersistenceHandle = Strict({\n providerId: NonEmptyString,\n sessionId: NonEmptyString,\n opaque: NonEmptyString,\n});\nexport type AgentPersistenceHandle = Static<typeof AgentPersistenceHandle>;\n\nexport const AgentPlanningState = Strict({\n active: Type.Boolean(),\n requested: Type.Optional(Type.Boolean()),\n});\nexport type AgentPlanningState = Static<typeof AgentPlanningState>;\n\nexport const AgentChildSession = Strict({\n nativeSessionId: NonEmptyString,\n title: Type.String(),\n role: Type.Optional(Type.String()),\n description: Type.Optional(Type.String()),\n createdAt: NonEmptyString,\n parentTurnId: Type.Optional(NonEmptyString),\n parentCallId: Type.Optional(NonEmptyString),\n status: AgentStatus,\n observation: Type.Union([Type.Literal('live'), Type.Literal('saved_history')]),\n});\nexport type AgentChildSession = Static<typeof AgentChildSession>;\n\nexport const AgentRuntimeInfo = Strict({\n providerId: NonEmptyString,\n sessionId: Type.Union([NonEmptyString, Type.Null()]),\n status: AgentStatus,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n mode: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n planning: Type.Optional(AgentPlanningState),\n settings: Type.Optional(Type.Array(AgentSessionSetting)),\n childSessions: Type.Optional(Type.Array(AgentChildSession)),\n persistence: Type.Optional(AgentPersistenceHandle),\n});\nexport type AgentRuntimeInfo = Static<typeof AgentRuntimeInfo>;\n\nexport const AgentSnapshotPayload = Strict({\n id: NonEmptyString,\n providerId: NonEmptyString,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(Type.Union([NonEmptyString, Type.Null()])),\n createdAt: NonEmptyString,\n updatedAt: NonEmptyString,\n status: AgentStatus,\n activeTurn: Type.Union([\n Strict({ turnId: NonEmptyString, startedAt: Type.Optional(Type.Union([NonEmptyString, Type.Null()])) }),\n Type.Null(),\n ]),\n capabilities: AgentCapabilities,\n pendingInteractions: Type.Array(AgentInteractionRequest),\n runtimeInfo: AgentRuntimeInfo,\n persistence: Type.Optional(AgentPersistenceHandle),\n lastUsage: Type.Optional(AgentUsage),\n lastError: Type.Optional(Type.String()),\n});\nexport type AgentSnapshotPayload = Static<typeof AgentSnapshotPayload>;\n\nexport const AgentSnapshot = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_snapshot'),\n payload: AgentSnapshotPayload,\n});\nexport type AgentSnapshot = Static<typeof AgentSnapshot>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger } from './cursor.js';\nimport { ResourceBinding } from './resources.js';\nimport { AgentRuntimeInfo } from './snapshot.js';\nimport { AgentTimelineItem, AgentUsage } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nconst ProviderEvent = { providerId: NonEmptyString };\nconst TurnId = { turnId: Type.Optional(NonEmptyString) };\n\nexport const PublicAgentTimelineEvent = Strict({\n type: Type.Literal('timeline'),\n ...ProviderEvent,\n item: AgentTimelineItem,\n ...TurnId,\n resources: Type.Array(ResourceBinding),\n});\nexport type PublicAgentTimelineEvent = Static<typeof PublicAgentTimelineEvent>;\n\nexport const PublicAgentNonTimelineEvent = Type.Union([\n Strict({ type: Type.Literal('thread_started'), ...ProviderEvent, sessionId: NonEmptyString }),\n Strict({ type: Type.Literal('turn_started'), ...ProviderEvent, ...TurnId }),\n Strict({ type: Type.Literal('turn_completed'), ...ProviderEvent, ...TurnId, usage: Type.Optional(AgentUsage) }),\n Strict({\n type: Type.Literal('turn_failed'), ...ProviderEvent, ...TurnId, error: Type.String(),\n code: Type.Optional(NonEmptyString), diagnostic: Type.Optional(Type.String()),\n }),\n Strict({ type: Type.Literal('turn_canceled'), ...ProviderEvent, ...TurnId, reason: Type.String() }),\n Strict({ type: Type.Literal('usage_updated'), ...ProviderEvent, ...TurnId, usage: AgentUsage }),\n Strict({ type: Type.Literal('runtime_updated'), ...ProviderEvent, runtimeInfo: AgentRuntimeInfo }),\n]);\nexport type PublicAgentNonTimelineEvent = Static<typeof PublicAgentNonTimelineEvent>;\n\nexport const AgentStreamMessage = Type.Union([\n Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_stream'),\n payload: Strict({\n agentId: NonEmptyString,\n event: PublicAgentTimelineEvent,\n timestamp: NonEmptyString,\n seq: SafeNonNegativeInteger,\n epoch: NonEmptyString,\n }),\n }),\n Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_stream'),\n payload: Strict({\n agentId: NonEmptyString,\n event: PublicAgentNonTimelineEvent,\n timestamp: NonEmptyString,\n }),\n }),\n]);\nexport type AgentStreamMessage = Static<typeof AgentStreamMessage>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { SafeNonNegativeInteger, TimelineCursor } from './cursor.js';\nimport { ProjectedTimelineEntry } from './timeline.js';\nimport { ProtocolVersionSchema } from './version.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const TimelineDirection = Type.Union([\n Type.Literal('tail'), Type.Literal('before'), Type.Literal('after'),\n]);\nexport type TimelineDirection = Static<typeof TimelineDirection>;\n\nexport const TimelineRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_request'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n direction: TimelineDirection,\n cursor: Type.Optional(TimelineCursor),\n limit: Type.Optional(Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER })),\n }),\n});\nexport type TimelineRequest = Static<typeof TimelineRequest>;\n\nexport const HistoryPage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_page'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n direction: TimelineDirection,\n epoch: NonEmptyString,\n reset: Type.Boolean(),\n staleCursor: Type.Boolean(),\n gap: Type.Boolean(),\n window: Strict({ minSeq: SafeNonNegativeInteger, maxSeq: SafeNonNegativeInteger, nextSeq: SafeNonNegativeInteger }),\n startCursor: Type.Union([TimelineCursor, Type.Null()]),\n endCursor: Type.Union([TimelineCursor, Type.Null()]),\n hasOlder: Type.Boolean(),\n hasNewer: Type.Boolean(),\n entries: Type.Array(ProjectedTimelineEntry),\n error: Type.Union([Type.String(), Type.Null()]),\n }),\n});\nexport type HistoryPage = Static<typeof HistoryPage>;\n", "import { type Static, Type } from '@sinclair/typebox';\nimport { ProtocolVersionSchema } from './version.js';\nimport { ResourceBinding } from './resources.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(properties, { additionalProperties: false });\nexport const AgentCommand = Strict({\n id: NonEmptyString,\n name: Type.String({ minLength: 1, pattern: '^[^\\\\s/]+$' }),\n description: Type.String(),\n kind: Type.Union([Type.Literal('command'), Type.Literal('skill'), Type.Literal('prompt')]),\n inputHint: Type.Optional(Type.String()),\n shortDescription: Type.Optional(Type.String()),\n documentation: Type.Optional(ResourceBinding),\n});\nexport type AgentCommand = Static<typeof AgentCommand>;\nexport const AgentCommandResult = Strict({ text: Type.Optional(Type.String()) });\nexport type AgentCommandResult = Static<typeof AgentCommandResult>;\nconst Identity = { requestId: NonEmptyString, agentId: NonEmptyString };\nexport const ListCommandsRequest = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('list_commands'), payload: Strict(Identity) });\nexport const CommandListResponse = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('command_list'), payload: Strict({ ...Identity, commands: Type.Array(AgentCommand) }) });\nexport type CommandListResponse = Static<typeof CommandListResponse>;\nexport const ExecuteCommandRequest = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('execute_command'), payload: Strict({ ...Identity, commandId: NonEmptyString, args: Type.String() }) });\nexport const CommandResultResponse = Strict({ protocolVersion: ProtocolVersionSchema, type: Type.Literal('command_result'), payload: Strict({ ...Identity, result: AgentCommandResult }) });\nexport type CommandResultResponse = Static<typeof CommandResultResponse>;\n", "import { type Static, Type } from '@sinclair/typebox';\n\nimport { AgentStreamMessage } from './envelope.js';\nimport { HistoryPage, TimelineRequest } from './history.js';\nimport {\n InteractionRequestedMessage,\n InteractionResolvedMessage,\n InteractionResponseMessage,\n} from './interactions.js';\nimport {\n ResourceRequest,\n ResourceResponse,\n ResourceUpdate,\n TimelineResourceBindingReplacement,\n} from './resources.js';\nimport { AgentPersistenceHandle, AgentSnapshot } from './snapshot.js';\nimport { ProtocolVersionSchema } from './version.js';\nimport { ListCommandsRequest, ExecuteCommandRequest, CommandListResponse, CommandResultResponse } from './commands.js';\n\nconst NonEmptyString = Type.String({ minLength: 1 });\nconst Strict = <T extends Parameters<typeof Type.Object>[0]>(properties: T) => Type.Object(\n properties,\n { additionalProperties: false },\n);\n\nexport const NegotiateRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('negotiate'),\n});\nexport type NegotiateRequest = Static<typeof NegotiateRequest>;\n\nexport const NegotiateResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('negotiated'),\n});\nexport type NegotiateResponse = Static<typeof NegotiateResponse>;\n\nexport const AgentProviderDescriptor = Strict({\n providerId: NonEmptyString,\n displayName: NonEmptyString,\n});\nexport type AgentProviderDescriptor = Static<typeof AgentProviderDescriptor>;\n\nexport const ProviderListResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('provider_list'),\n payload: Strict({ providers: Type.Array(AgentProviderDescriptor) }),\n});\nexport type ProviderListResponse = Static<typeof ProviderListResponse>;\n\nexport const SendMessageRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('send_message'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, text: Type.String(), delivery: Type.Optional(Type.Union([Type.Literal('immediate'), Type.Literal('next_turn')])) }),\n});\nexport type SendMessageRequest = Static<typeof SendMessageRequest>;\nexport type AgentMessageOptions = Pick<SendMessageRequest['payload'], 'delivery'>;\n\nexport const SteerRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('steer'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, text: Type.String() }),\n});\nexport type SteerRequest = Static<typeof SteerRequest>;\n\nexport const CancelRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('cancel'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString }),\n});\nexport type CancelRequest = Static<typeof CancelRequest>;\n\nexport const SetPlanningRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('set_planning'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, active: Type.Boolean() }),\n});\nexport type SetPlanningRequest = Static<typeof SetPlanningRequest>;\n\nexport const SetSessionSettingRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('set_session_setting'),\n payload: Strict({ requestId: NonEmptyString, agentId: NonEmptyString, settingId: NonEmptyString, value: NonEmptyString }),\n});\nexport type SetSessionSettingRequest = Static<typeof SetSessionSettingRequest>;\n\nexport const AgentSessionConfig = Strict({\n sessionId: NonEmptyString,\n cwd: Type.Optional(NonEmptyString),\n model: Type.Optional(NonEmptyString),\n reasoningEffort: Type.Optional(NonEmptyString),\n systemPrompt: Type.Optional(Type.String()),\n planning: Type.Optional(Type.Boolean()),\n});\nexport type AgentSessionConfig = Static<typeof AgentSessionConfig>;\n\nexport const CreateAgentRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('create_agent'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n providerId: NonEmptyString,\n config: AgentSessionConfig,\n }),\n});\nexport type CreateAgentRequest = Static<typeof CreateAgentRequest>;\n\nexport const ResumeAgentRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('resume_agent'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n persistence: AgentPersistenceHandle,\n }),\n});\nexport type ResumeAgentRequest = Static<typeof ResumeAgentRequest>;\n\nexport const AgentSessionResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_session'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n providerId: NonEmptyString,\n sessionId: NonEmptyString,\n persistence: Type.Optional(AgentPersistenceHandle),\n }),\n});\nexport type AgentSessionResponse = Static<typeof AgentSessionResponse>;\n\nexport const CommandAcknowledgementMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('command_acknowledged'),\n payload: Strict({\n requestId: NonEmptyString,\n agentId: NonEmptyString,\n command: Type.Union([\n Type.Literal('send_message'), Type.Literal('steer'), Type.Literal('cancel'), Type.Literal('set_planning'), Type.Literal('set_session_setting'),\n ]),\n }),\n});\nexport type CommandAcknowledgementMessage = Static<typeof CommandAcknowledgementMessage>;\n\nexport const TimelineSubscriptionRequest = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_subscription'),\n payload: Strict({ requestId: NonEmptyString, agentIds: Type.Array(NonEmptyString, { uniqueItems: true }) }),\n});\nexport type TimelineSubscriptionRequest = Static<typeof TimelineSubscriptionRequest>;\n\nexport const TimelineSubscriptionResponse = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_subscribed'),\n payload: Strict({ requestId: NonEmptyString, agentIds: Type.Array(NonEmptyString, { uniqueItems: true }) }),\n});\nexport type TimelineSubscriptionResponse = Static<typeof TimelineSubscriptionResponse>;\n\nexport const TimelineReplacementMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('timeline_replacement'),\n payload: Strict({ agentId: NonEmptyString, epoch: NonEmptyString }),\n});\nexport type TimelineReplacementMessage = Static<typeof TimelineReplacementMessage>;\n\nexport const AgentUpdateMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('agent_update'),\n payload: AgentSnapshot.properties.payload,\n});\nexport type AgentUpdateMessage = Static<typeof AgentUpdateMessage>;\n\nexport const ProtocolErrorMessage = Strict({\n protocolVersion: ProtocolVersionSchema,\n type: Type.Literal('protocol_error'),\n payload: Strict({\n requestId: Type.Optional(NonEmptyString),\n code: NonEmptyString,\n message: Type.String(),\n recoverable: Type.Boolean(),\n }),\n});\nexport type ProtocolErrorMessage = Static<typeof ProtocolErrorMessage>;\n\nexport const IncompatibleProtocolVersionErrorMessage = Strict({\n protocolVersion: NonEmptyString,\n type: Type.Literal('protocol_error'),\n payload: Strict({\n requestId: Type.Optional(NonEmptyString),\n code: Type.Literal('incompatible_protocol_version'),\n message: Type.String(),\n recoverable: Type.Literal(false),\n }),\n});\nexport type IncompatibleProtocolVersionErrorMessage = Static<typeof IncompatibleProtocolVersionErrorMessage>;\n\nexport const ClientMessage = Type.Union([\n ListCommandsRequest,\n ExecuteCommandRequest,\n NegotiateRequest,\n CreateAgentRequest,\n ResumeAgentRequest,\n SendMessageRequest,\n SteerRequest,\n CancelRequest,\n SetPlanningRequest,\n SetSessionSettingRequest,\n TimelineSubscriptionRequest,\n TimelineRequest,\n InteractionResponseMessage,\n ResourceRequest,\n]);\nexport type ClientMessage = Static<typeof ClientMessage>;\n\nexport const ServerMessage = Type.Union([\n CommandListResponse,\n CommandResultResponse,\n NegotiateResponse,\n ProviderListResponse,\n AgentSessionResponse,\n CommandAcknowledgementMessage,\n AgentSnapshot,\n AgentUpdateMessage,\n TimelineSubscriptionResponse,\n HistoryPage,\n TimelineReplacementMessage,\n AgentStreamMessage,\n InteractionRequestedMessage,\n InteractionResolvedMessage,\n ResourceResponse,\n ResourceUpdate,\n TimelineResourceBindingReplacement,\n ProtocolErrorMessage,\n]);\nexport type ServerMessage = Static<typeof ServerMessage>;\n", "import type { TSchema } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nimport { AgentStreamMessage, type AgentStreamMessage as AgentStreamMessageValue } from './envelope.js';\nimport { HistoryPage, type HistoryPage as HistoryPageValue } from './history.js';\nimport {\n AgentSessionResponse,\n ClientMessage,\n CommandAcknowledgementMessage,\n CreateAgentRequest,\n IncompatibleProtocolVersionErrorMessage,\n ProviderListResponse,\n ResumeAgentRequest,\n ServerMessage,\n type AgentSessionResponse as AgentSessionResponseValue,\n type ClientMessage as ClientMessageValue,\n type CommandAcknowledgementMessage as CommandAcknowledgementMessageValue,\n type CreateAgentRequest as CreateAgentRequestValue,\n type IncompatibleProtocolVersionErrorMessage as IncompatibleProtocolVersionErrorMessageValue,\n type ProviderListResponse as ProviderListResponseValue,\n type ResumeAgentRequest as ResumeAgentRequestValue,\n type ServerMessage as ServerMessageValue,\n} from './messages.js';\nimport {\n ResourceResponse,\n ResourceUpdate,\n type ResourceResponse as ResourceResponseValue,\n type ResourceUpdate as ResourceUpdateValue,\n} from './resources.js';\nimport { AgentSnapshot, type AgentSnapshot as AgentSnapshotValue } from './snapshot.js';\nimport { BORGEE_AGENT_REMOTE_PROTOCOL_VERSION } from './version.js';\n\nexport interface WireIssue {\n code: 'invalid_json' | 'invalid_shape' | 'incompatible_protocol_version' | 'not_json_serializable';\n path: string;\n message: string;\n}\n\nexport type WireDecodeResult<T> =\n | { status: 'ok'; value: T }\n | { status: 'rejected'; issues: WireIssue[] };\n\nexport type WireEncodeResult =\n | { status: 'ok'; json: string }\n | { status: 'rejected'; issues: WireIssue[] };\n\nfunction shapeIssues(schema: TSchema, value: unknown): WireIssue[] {\n return [...Value.Errors(schema, value)].map((error) => ({\n code: 'invalid_shape',\n path: error.path,\n message: error.message,\n }));\n}\n\nfunction versionIssues(value: { protocolVersion: string }): WireIssue[] {\n if (value.protocolVersion === BORGEE_AGENT_REMOTE_PROTOCOL_VERSION) return [];\n return [{\n code: 'incompatible_protocol_version',\n path: '/protocolVersion',\n message: `Protocol version ${value.protocolVersion} is incompatible with ${BORGEE_AGENT_REMOTE_PROTOCOL_VERSION}.`,\n }];\n}\n\nfunction decode<T extends { protocolVersion: string }>(json: string, schema: TSchema): WireDecodeResult<T> {\n let value: unknown;\n try {\n value = JSON.parse(json);\n } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid JSON.' }] };\n }\n if (\n typeof value === 'object'\n && value !== null\n && 'protocolVersion' in value\n && typeof value.protocolVersion === 'string'\n ) {\n const issues = versionIssues(value as { protocolVersion: string });\n if (issues.length > 0) return { status: 'rejected', issues };\n }\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n const typed = value as T;\n const issues = versionIssues(typed);\n return issues.length > 0 ? { status: 'rejected', issues } : { status: 'ok', value: typed };\n}\n\nfunction decodeShape<T>(json: string, schema: TSchema): WireDecodeResult<T> {\n let value: unknown;\n try {\n value = JSON.parse(json);\n } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid JSON.' }] };\n }\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n return { status: 'ok', value: value as T };\n}\n\nfunction encode<T extends { protocolVersion: string }>(value: T, schema: TSchema): WireEncodeResult {\n const issues = versionIssues(value);\n if (issues.length > 0) return { status: 'rejected', issues };\n if (!Value.Check(schema, value)) return { status: 'rejected', issues: shapeIssues(schema, value) };\n try {\n return { status: 'ok', json: JSON.stringify(value) };\n } catch {\n return {\n status: 'rejected',\n issues: [{ code: 'not_json_serializable', path: '', message: 'Value cannot be serialized as JSON.' }],\n };\n }\n}\n\nexport function decodeAgentSnapshot(json: string): WireDecodeResult<AgentSnapshotValue> {\n return decode(json, AgentSnapshot);\n}\n\nexport function encodeAgentSnapshot(value: AgentSnapshotValue): WireEncodeResult {\n return encode(value, AgentSnapshot);\n}\n\nexport function decodeHistoryPage(json: string): WireDecodeResult<HistoryPageValue> {\n return decode(json, HistoryPage);\n}\n\nexport function encodeHistoryPage(value: HistoryPageValue): WireEncodeResult {\n return encode(value, HistoryPage);\n}\n\nexport function decodeAgentStreamMessage(json: string): WireDecodeResult<AgentStreamMessageValue> {\n return decode(json, AgentStreamMessage);\n}\n\nexport function encodeAgentStreamMessage(value: AgentStreamMessageValue): WireEncodeResult {\n return encode(value, AgentStreamMessage);\n}\n\nexport function decodeResourceResponse(json: string): WireDecodeResult<ResourceResponseValue> {\n return decode(json, ResourceResponse);\n}\n\nexport function encodeResourceResponse(value: ResourceResponseValue): WireEncodeResult {\n return encode(value, ResourceResponse);\n}\n\nexport function decodeResourceUpdate(json: string): WireDecodeResult<ResourceUpdateValue> {\n return decode(json, ResourceUpdate);\n}\n\nexport function encodeResourceUpdate(value: ResourceUpdateValue): WireEncodeResult {\n return encode(value, ResourceUpdate);\n}\n\nexport function decodeCreateAgentRequest(json: string): WireDecodeResult<CreateAgentRequestValue> {\n return decode(json, CreateAgentRequest);\n}\n\nexport function encodeCreateAgentRequest(value: CreateAgentRequestValue): WireEncodeResult {\n return encode(value, CreateAgentRequest);\n}\n\nexport function decodeResumeAgentRequest(json: string): WireDecodeResult<ResumeAgentRequestValue> {\n return decode(json, ResumeAgentRequest);\n}\n\nexport function encodeResumeAgentRequest(value: ResumeAgentRequestValue): WireEncodeResult {\n return encode(value, ResumeAgentRequest);\n}\n\nexport function decodeAgentSessionResponse(json: string): WireDecodeResult<AgentSessionResponseValue> {\n return decode(json, AgentSessionResponse);\n}\n\nexport function encodeAgentSessionResponse(value: AgentSessionResponseValue): WireEncodeResult {\n return encode(value, AgentSessionResponse);\n}\n\nexport function decodeProviderListResponse(json: string): WireDecodeResult<ProviderListResponseValue> {\n return decode(json, ProviderListResponse);\n}\n\nexport function encodeProviderListResponse(value: ProviderListResponseValue): WireEncodeResult {\n return encode(value, ProviderListResponse);\n}\n\nexport function decodeCommandAcknowledgementMessage(\n json: string,\n): WireDecodeResult<CommandAcknowledgementMessageValue> {\n return decode(json, CommandAcknowledgementMessage);\n}\n\nexport function encodeCommandAcknowledgementMessage(\n value: CommandAcknowledgementMessageValue,\n): WireEncodeResult {\n return encode(value, CommandAcknowledgementMessage);\n}\n\nexport function decodeClientMessage(json: string): WireDecodeResult<ClientMessageValue> {\n return decode(json, ClientMessage);\n}\n\nexport function encodeClientMessage(value: ClientMessageValue): WireEncodeResult {\n return encode(value, ClientMessage);\n}\n\nexport function decodeServerMessage(json: string): WireDecodeResult<ServerMessageValue> {\n return decode(json, ServerMessage);\n}\n\nexport function decodeIncompatibleProtocolVersionError(\n json: string,\n): WireDecodeResult<IncompatibleProtocolVersionErrorMessageValue> {\n return decodeShape(json, IncompatibleProtocolVersionErrorMessage);\n}\n\nexport function encodeServerMessage(value: ServerMessageValue): WireEncodeResult {\n return encode(value, ServerMessage);\n}\n", "import { Type, type Static } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\nimport type { WireDecodeResult, WireEncodeResult } from './codec.js';\n\nexport const UPLINK_VERSION = 1;\nexport const UPLINK_MAX_FRAME_BYTES = 32 * 1024 * 1024;\nexport const UPLINK_MAX_PUBLIC_REQUEST_BYTES = 1024 * 1024;\n\nconst identity = Type.String({ minLength: 1, maxLength: 512 });\nconst version = Type.Literal(UPLINK_VERSION);\nconst stream = { uplinkVersion: version, streamId: identity };\nconst rpc = { uplinkVersion: version, requestId: identity };\nconst object = { additionalProperties: false } as const;\nconst closeCode = Type.Union([\n ...[1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014].map((code) => Type.Literal(code)),\n Type.Integer({ minimum: 3000, maximum: 4999 }),\n]);\n\nexport const UplinkMessage = Type.Union([\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), agentId: identity }, object),\n Type.Object({ uplinkVersion: version, type: Type.Literal('registered'), agentId: identity }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_request'),\n method: Type.Union([Type.Literal('GET'), Type.Literal('POST')]),\n path: Type.String({ maxLength: 8192, pattern: '^/v1/(providers|sessions)([/?][^#]*)?$' }),\n body: Type.Optional(Type.String()),\n }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_response'),\n status: Type.Integer({ minimum: 200, maximum: 599 }), body: Type.String(),\n }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_cancel') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_open') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_opened') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_message'), message: Type.String() }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_close'),\n code: closeCode, reason: Type.String({ maxLength: 123 }),\n }, object),\n]);\nexport type UplinkMessage = Static<typeof UplinkMessage>;\nexport type UplinkBrokerMessage = Extract<UplinkMessage,\n { type: 'registered' | 'rpc_request' | 'rpc_cancel' | 'stream_open' | 'stream_message' | 'stream_close' }>;\n\nexport function decodeUplinkMessage(json: string): WireDecodeResult<UplinkMessage> {\n let value: unknown;\n try { value = JSON.parse(json); } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid uplink JSON.' }] };\n }\n if (!validMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid uplink envelope.' }] };\n }\n return { status: 'ok', value };\n}\n\nexport function encodeUplinkMessage(value: UplinkMessage): WireEncodeResult {\n if (!validMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid uplink envelope.' }] };\n }\n return { status: 'ok', json: JSON.stringify(value) };\n}\n\nfunction validMessage(value: unknown): value is UplinkMessage {\n if (!Value.Check(UplinkMessage, value)) return false;\n if (value.type !== 'stream_close') return true;\n let bytes = 0;\n for (const character of value.reason) {\n const code = character.codePointAt(0)!;\n bytes += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4;\n }\n return bytes <= 123;\n}\n", "import { Type, type Static } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nimport type { WireDecodeResult, WireEncodeResult } from './codec.js';\n\nexport const REMOTE_HOST_UPLINK_VERSION = 2;\n\nconst identity = Type.String({ minLength: 1, maxLength: 512 });\nconst version = Type.Literal(REMOTE_HOST_UPLINK_VERSION);\nconst object = { additionalProperties: false } as const;\nconst rpc = { uplinkVersion: version, requestId: identity };\nconst stream = { uplinkVersion: version, streamId: identity };\nconst provider = Type.Object({ providerId: identity, displayName: identity }, object);\nconst closeCode = Type.Union([\n ...[1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014].map((code) => Type.Literal(code)),\n Type.Integer({ minimum: 3000, maximum: 4999 }),\n]);\n\nconst requestPath = Type.String({\n maxLength: 8192,\n pattern: '^/(remote/(catalog(?:/(?:revision|session))?|workspaces|models|child/attach|attach|create)|v1/(providers|sessions))(?:[/?][^#]*)?$',\n});\n\nexport const RemoteHostUplinkMessage = Type.Union([\n Type.Union([\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), installationId: identity, name: identity,\n providerId: Type.Literal('dsh') }, object),\n Type.Object({ uplinkVersion: version, type: Type.Literal('register'), installationId: identity, name: identity,\n providers: Type.Array(provider, { minItems: 1, maxItems: 64 }) }, object),\n ]),\n Type.Object({ uplinkVersion: version, type: Type.Literal('registered'), hostId: identity }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_request'), method: Type.Union([Type.Literal('GET'), Type.Literal('POST')]),\n path: requestPath, sessionId: Type.Optional(identity), body: Type.Optional(Type.String()) }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_response'), status: Type.Integer({ minimum: 200, maximum: 599 }),\n body: Type.String() }, object),\n Type.Object({ ...rpc, type: Type.Literal('rpc_cancel') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_open'), sessionId: identity }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_opened') }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_message'), message: Type.String() }, object),\n Type.Object({ ...stream, type: Type.Literal('stream_close'), code: closeCode, reason: Type.String({ maxLength: 123 }) }, object),\n]);\n\nexport type RemoteHostUplinkMessage = Static<typeof RemoteHostUplinkMessage>;\nexport type RemoteHostUplinkBrokerMessage = Extract<RemoteHostUplinkMessage,\n { type: 'registered' | 'rpc_request' | 'rpc_cancel' | 'stream_open' | 'stream_message' | 'stream_close' }>;\n\nexport function decodeRemoteHostUplinkMessage(json: string): WireDecodeResult<RemoteHostUplinkMessage> {\n let value: unknown;\n try { value = JSON.parse(json); } catch {\n return { status: 'rejected', issues: [{ code: 'invalid_json', path: '', message: 'Invalid Remote Host uplink JSON.' }] };\n }\n if (!validRemoteHostUplinkMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid Remote Host uplink envelope.' }] };\n }\n return { status: 'ok', value };\n}\n\nexport function encodeRemoteHostUplinkMessage(value: RemoteHostUplinkMessage): WireEncodeResult {\n if (!validRemoteHostUplinkMessage(value)) {\n return { status: 'rejected', issues: [{ code: 'invalid_shape', path: '', message: 'Invalid Remote Host uplink envelope.' }] };\n }\n return { status: 'ok', json: JSON.stringify(value) };\n}\n\nfunction validRemoteHostUplinkMessage(value: unknown): value is RemoteHostUplinkMessage {\n if (!Value.Check(RemoteHostUplinkMessage, value)) return false;\n if (value.type === 'register' && 'providers' in value\n && new Set(value.providers.map((provider) => provider.providerId)).size !== value.providers.length) return false;\n if (value.type === 'rpc_request') {\n const pathname = value.path.split('?', 1)[0]!;\n const sessionScoped = pathname === '/remote/attach' || pathname === '/remote/child/attach' || pathname === '/remote/create' || pathname === '/v1/providers'\n || /^\\/v1\\/sessions\\/[^/]+\\/(snapshot|timeline)$/.test(pathname);\n if (sessionScoped !== (value.sessionId !== undefined)) return false;\n if (pathname.startsWith('/remote/')) {\n const isRead = pathname === '/remote/catalog' || pathname === '/remote/catalog/revision'\n || pathname === '/remote/catalog/session' || pathname === '/remote/workspaces' || pathname === '/remote/models';\n if ((isRead && (value.method !== 'GET' || value.body !== undefined))\n || (!isRead && (value.method !== 'POST' || value.body === undefined))) return false;\n }\n }\n if (value.type !== 'stream_close') return true;\n let bytes = 0;\n for (const character of value.reason) {\n const code = character.codePointAt(0)!;\n bytes += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : code <= 0xffff ? 3 : 4;\n }\n return bytes <= 123;\n}\n", "import { type Static, Type } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\n\nconst strict = { additionalProperties: false } as const;\nexport const AgentFileChange = Type.Object({\n path: Type.String({ minLength: 1 }),\n kind: Type.Union([Type.Literal('added'), Type.Literal('modified'), Type.Literal('deleted'), Type.Literal('renamed'), Type.Literal('unknown')]),\n previousPath: Type.Optional(Type.String({ minLength: 1 })),\n diff: Type.String(),\n}, strict);\nexport type AgentFileChange = Static<typeof AgentFileChange>;\n\nexport const AgentFileChangesResult = Type.Object({\n format: Type.Literal('file_changes'), version: Type.Literal(1), files: Type.Array(AgentFileChange),\n}, strict);\nexport type AgentFileChangesResult = Static<typeof AgentFileChangesResult>;\n\nexport function isAgentFileChangesResult(value: unknown): value is AgentFileChangesResult {\n return Value.Check(AgentFileChangesResult, value);\n}\n", "import { Value } from '@sinclair/typebox/value';\nimport { AgentCapabilities } from './snapshot.js';\n\nimport { PublicAgentNonTimelineEvent, PublicAgentTimelineEvent } from './envelope.js';\nimport { AgentQuestionnaireResponse, InteractionRequestedMessage, InteractionResolvedMessage, InteractionResponseMessage } from './interactions.js';\n\nexport function isPublicAgentTimelineEvent(value: unknown): value is PublicAgentTimelineEvent {\n return Value.Check(PublicAgentTimelineEvent, value);\n}\n\nexport function isPublicAgentNonTimelineEvent(value: unknown): value is PublicAgentNonTimelineEvent {\n return Value.Check(PublicAgentNonTimelineEvent, value);\n}\n\nexport function isInteractionRequestedMessage(value: unknown): value is InteractionRequestedMessage {\n return Value.Check(InteractionRequestedMessage, value);\n}\n\nexport function isInteractionResolvedMessage(value: unknown): value is InteractionResolvedMessage {\n return Value.Check(InteractionResolvedMessage, value);\n}\n\nexport function isInteractionResponseMessage(value: unknown): value is InteractionResponseMessage {\n return Value.Check(InteractionResponseMessage, value);\n}\n\nexport function isAgentCapabilities(value: unknown): value is AgentCapabilities {\n return Value.Check(AgentCapabilities, value);\n}\n\nexport function isAgentQuestionnaireResponse(value: unknown): value is AgentQuestionnaireResponse {\n return Value.Check(AgentQuestionnaireResponse, value);\n}\n", "import { Type } from '@sinclair/typebox';\nimport { Value } from '@sinclair/typebox/value';\nimport { PublicAgentTimelineEvent, PublicAgentNonTimelineEvent } from './envelope.js';\nimport { AgentSnapshot } from './snapshot.js';\nimport { InteractionRequestedMessage, InteractionResolvedMessage, InteractionResponseMessage } from './interactions.js';\nimport { timelineItemsWithUser, UserMessageWithOrigin, UserMessageWithoutOrigin } from './timeline.js';\nimport { PROTOCOL_VERSION } from './version.js';\n\nexport type NormalizedProtocolVersion = typeof PROTOCOL_VERSION | '1.6.0' | '1.5.0' | '1.4.0' | '1.1.0';\nexport function isSupportedNormalizedVersion(version: unknown): version is NormalizedProtocolVersion {\n return version === PROTOCOL_VERSION || version === '1.6.0' || version === '1.5.0' || version === '1.4.0' || version === '1.1.0';\n}\nconst TimelineWithoutOrigin = Type.Object({ ...PublicAgentTimelineEvent.properties, item: timelineItemsWithUser(UserMessageWithoutOrigin, false) }, { additionalProperties: false });\nconst Timeline160 = Type.Object({ ...PublicAgentTimelineEvent.properties, item: timelineItemsWithUser(UserMessageWithOrigin, false) }, { additionalProperties: false });\nconst Snapshot150 = Type.Object({ ...AgentSnapshot.properties, protocolVersion: Type.Literal('1.5.0') }, { additionalProperties: false });\nconst Snapshot160 = Type.Object({ ...AgentSnapshot.properties, protocolVersion: Type.Literal('1.6.0') }, { additionalProperties: false });\nconst interactionSchemas = (version: NormalizedProtocolVersion) => Type.Union([\n Type.Object({ ...InteractionRequestedMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n Type.Object({ ...InteractionResolvedMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n Type.Object({ ...InteractionResponseMessage.properties, protocolVersion: Type.Literal(version) }, { additionalProperties: false }),\n]);\nconst Interactions150 = interactionSchemas('1.5.0');\nconst Interactions160 = interactionSchemas('1.6.0');\nconst Interactions140 = interactionSchemas('1.4.0');\nconst Interactions110 = interactionSchemas('1.1.0');\nconst legacyTypes = new Set(['thread_started', 'turn_started', 'turn_completed', 'turn_failed', 'turn_canceled', 'timeline', 'usage_updated', 'runtime_updated', 'interaction_requested', 'interaction_resolved', 'interaction_response']);\nfunction legacyCore(value: unknown): boolean {\n if (Array.isArray(value)) return value.every(legacyCore);\n if (!value || typeof value !== 'object') return true;\n return Object.entries(value).every(([key, child]) => !['result', 'settings', 'childSessions', 'redactedFields', 'redacted', 'sensitive', 'clientMessageId', 'origin'].includes(key)\n && !(key === 'kind' && ['form', 'permission_approval', 'external_action'].includes(String(child))) && legacyCore(child));\n}\n\n/** Validate committed bytes in their declared schema before adapting a projection copy. */\nexport function validateNormalizedEventVersion(version: string, event: unknown): boolean {\n if (!isSupportedNormalizedVersion(version) || !event || typeof event !== 'object' || Array.isArray(event)) return false;\n const value = event as Record<string, unknown>;\n if ('protocolVersion' in value && value.protocolVersion !== version) return false;\n if (version === PROTOCOL_VERSION) return Value.Check(PublicAgentTimelineEvent, event) || Value.Check(PublicAgentNonTimelineEvent, event)\n || Value.Check(AgentSnapshot, event) || Value.Check(InteractionRequestedMessage, event) || Value.Check(InteractionResolvedMessage, event) || Value.Check(InteractionResponseMessage, event);\n if (version !== '1.5.0' && version !== '1.6.0') {\n if (value.type === 'agent_snapshot' || value.usage && typeof value.usage === 'object' && 'accounting' in value.usage) return false;\n if (version === '1.1.0' && (!legacyTypes.has(String(value.type)) || !legacyCore(event))) return false;\n }\n return Value.Check(version === '1.6.0' ? Timeline160 : TimelineWithoutOrigin, event) || Value.Check(PublicAgentNonTimelineEvent, event)\n || (version === '1.6.0' && Value.Check(Snapshot160, event))\n || (version === '1.5.0' && Value.Check(Snapshot150, event))\n || Value.Check(version === '1.6.0' ? Interactions160 : version === '1.5.0' ? Interactions150 : version === '1.4.0' ? Interactions140 : Interactions110, event);\n}\n", "import { filterNativeEnvironment } from './native-environment.js';\nimport { ClaudeAgentProvider } from '@borgee/agent-provider-claude';\nimport { CodexAppServerProvider } from '@borgee/agent-provider-codex';\nimport { CopilotAgentProvider } from '@borgee/agent-provider-copilot';\nimport type { AgentInteractionResponse, AgentProviderAdapter, AgentSession } from '@borgee/agent-provider-sdk';\n\nexport { AgentCommandRejectedError, AgentInputRejectedError, AgentSessionInUseError, redactInteractionRequest, redactInteractionResponse, validateInteractionResponse as validateNativeInteractionResponse } from '@borgee/agent-provider-sdk';\nexport type { AgentTimelineItem, AgentQuestionnaireResponse, AgentCapabilities, AgentInteractionRequest, AgentInteractionResponse, AgentMessageReceipt, AgentPersistenceHandle, AgentProviderAdapter, AgentRuntimeInfo, AgentSession, AgentStreamEvent, ProviderObservation, ProviderStreamItem, ProviderSessionRestored } from '@borgee/agent-provider-sdk';\nexport { decodeAgentSnapshot } from '@borgee/agent-remote-protocol';\nexport type { AgentSnapshot } from '@borgee/agent-remote-protocol';\n\nexport function createHostedNativeProvider(provider: 'claude' | 'codex' | 'copilot', executable?: string, codex: { codexConnectionMode?: 'shared' | 'stdio'; codexSharedSocketPath?: string; codexTrustShared?: boolean } = {}): AgentProviderAdapter {\n const env = filterNativeEnvironment(process.env);\n if (provider === 'claude') return new ClaudeAgentProvider({ executable, env, restrictedNative: true });\n if (provider === 'copilot') return new CopilotAgentProvider({ executable, env });\n if ((codex.codexConnectionMode ?? 'stdio') === 'stdio') {\n if (codex.codexSharedSocketPath !== undefined) throw new Error('A Codex shared socket cannot be configured in stdio mode. Set codexConnectionMode: shared (CODEX_CONNECTION_MODE=shared) explicitly to use a shared daemon.');\n return new CodexAppServerProvider({ executable, env, connectionMode: 'private' });\n }\n if (codex.codexTrustShared !== true) throw new Error('Normalized Codex requires explicit local codexTrustShared: true (CODEX_TRUST_SHARED=true) to use the shared daemon permissions.');\n return new CodexAppServerProvider({ executable, env, connectionMode: 'shared', socketPath: codex.codexSharedSocketPath });\n}\n\nexport async function configureHostedNativeSession(session: AgentSession, provider: string): Promise<void> {\n // Codex preserves native permissions in both transports; Copilot owns its native permission callbacks.\n if (provider === 'copilot' || provider === 'codex') return;\n if (!session.setSessionSetting) throw new Error('The native session cannot enforce Host permissions; select legacy mode.');\n if (provider === 'claude') {\n const permissions = (await session.runtimeInfo()).settings?.find(setting => setting.id === 'permissions')?.value;\n if (permissions !== 'default' && permissions !== 'plan') throw new Error('The native session does not report safe Host permissions.');\n await session.setSessionSetting('permissions', permissions);\n }\n}\n\nimport { isInteractionResponseMessage as validateInteractionResponse, PROTOCOL_VERSION as protocolVersion } from '@borgee/agent-remote-protocol';\nexport const PROTOCOL_VERSION = protocolVersion;\nexport function isInteractionResponseMessage(value: unknown): value is { protocolVersion: string; type: 'interaction_response'; payload: { agentId: string; requestId: string; response: AgentInteractionResponse } } {\n return validateInteractionResponse(value);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["PerMessageDeflate", "data", "PerMessageDeflate", "Receiver", "PerMessageDeflate", "Sender", "extension", "createHash", "URL", "PerMessageDeflate", "Receiver", "Sender", "WebSocket", "key", "stream", "WebSocket", "stream", "createWebSocketStream", "err", "open", "protocol", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "WebSocketServer", "version", "map", "randomUUID", "keys", "field", "text", "setting", "provider", "randomUUID", "resolve", "text", "events", "blockKey", "resolve", "identity", "provider", "Buffer", "record", "unavailable", "count", "child", "candidate", "randomUUID", "text", "resolve", "randomUUID", "path", "WebSocket", "resolve", "exited", "timer", "randomUUID", "Buffer", "createHash", "isAbsolute", "resolve", "createHash", "cloneProjection", "Buffer", "rasterMediaType", "path", "isAbsolute", "resolve", "stat", "detail", "randomUUID", "mapped", "timelineItem", "text", "query", "terminal", "homedir", "isAbsolute", "constants", "open", "open", "constants", "stat", "count", "field", "randomUUID", "path", "isDeepStrictEqual", "field", "keys", "version", "collectCodexThreadHistoryItems", "readThread", "resolve", "deadline", "spawn", "PROVIDER_ID", "randomUUID", "path", "occurrence", "text", "setting", "deadline", "resolve", "isDeepStrictEqual", "questions", "spawn", "unavailable", "isAbsolute", "homedir", "resolve", "randomUUID", "realpath", "stat", "randomUUID", "open", "realpath", "stat", "isAbsolute", "constants", "Channel", "resolve", "DeadlineError", "deadline", "count", "record", "path", "text", "Channel", "record", "terminal", "text", "record", "text", "value", "rpc", "resolve", "terminal", "Channel", "record", "isAbsolute", "realpath", "stat", "randomUUID", "deadline", "text", "command", "path", "open", "constants", "child", "deadline", "resolve", "deadline", "realpath", "stat", "randomUUID", "TypeSystemPolicy", "Set", "Clear", "Delete", "Entries", "Get", "Has", "Set", "map", "HasPropertyKey", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsIterator", "IsNull", "IsNumber", "IsObject", "IsString", "IsSymbol", "IsUint8Array", "IsUndefined", "value", "IsArray", "IsDate", "IsUint8Array", "IsObject", "value", "IsArray", "IsDate", "IsUint8Array", "IsObject", "keys", "Array", "IsObject", "IsArray", "IsAsyncIterator", "IsBigInt", "IsBoolean", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsObject", "IsBoolean", "IsNumber", "IsString", "IsNull", "IsObject", "IsPromise", "IsRegExp", "IsString", "IsSymbol", "IsObject", "IsUndefined", "IsUint8Array", "IsArray", "IsBoolean", "IsBigInt", "IsAsyncIterator", "IsDate", "IsFunction", "IsInteger", "IsIterator", "IsNull", "IsNumber", "IsPromise", "IsObject", "RemoveOptionalFromRest", "RemoveOptionalFromType", "count", "range", "pattern", "Boolean", "BigInt", "Number", "String", "Boolean", "Number", "BigInt", "String", "Visit", "schema", "IsNumber", "IsInteger", "IsBigInt", "IsString", "IsBoolean", "IsString", "keys", "FromUnion", "IsNumber", "IsInteger", "FromProperties", "FromMappedResult", "FromUnion", "IsArray", "IsObject", "Object", "Promise", "FromProperties", "FromMappedResult", "FromMappedResult", "FromRest", "FromProperties", "IsFunction", "IsAsyncIterator", "IsIterator", "IsObject", "Object", "IsArray", "Array", "IsPromise", "Promise", "map", "FromRest", "FromIntersect", "FromUnion", "FromTuple", "FromArray", "FromProperties", "IsArray", "IsObject", "keys", "Number", "FromProperties", "FromMappedResult", "keys", "Intersect", "schema", "Union", "target", "ByteMarker", "ArrayType", "Visit", "DateType", "ObjectType", "Uint8ArrayType", "type_exports", "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", "IsString", "IsSchema", "IsUndefined", "IsBigInt", "IsNumber", "IsBoolean", "IsReadonly", "IsObject", "IsOptional", "IsAny", "IsKindOf", "IsArgument", "IsArray", "IsAsyncIterator", "IsComputed", "IsConstructor", "IsDate", "IsFunction", "HasPropertyKey", "IsInteger", "IsIntersect", "IsTransform", "IsIterator", "IsLiteral", "IsLiteralValue", "IsMappedKey", "IsMappedResult", "IsNever", "IsNot", "IsNull", "IsPromise", "IsRecord", "keys", "IsRef", "IsRegExp", "IsSymbol", "IsTemplateLiteral", "IsThis", "IsTuple", "IsUnion", "IsUint8Array", "IsUnknown", "IsUnsafe", "IsVoid", "IsKind", "ExtendsResult", "type_exports", "FromArray", "Visit", "FromIntersect", "FromLiteral", "count", "Number", "String", "FromTemplateLiteral", "FromTuple", "FromUnion", "FromProperties", "FromMappedResult", "FromMappedKey", "FromAny", "FromArray", "Visit", "value", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromInteger", "FromIntersect", "schema", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "ValueErrorType", "IsDefined", "path", "FromAny", "FromArgument", "FromArray", "Visit", "value", "FromAsyncIterator", "FromBigInt", "FromBoolean", "FromConstructor", "FromDate", "FromFunction", "FromImport", "FromInteger", "FromIntersect", "FromIterator", "FromLiteral", "FromNever", "FromNot", "FromNull", "FromNumber", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromRegExp", "FromString", "FromSymbol", "FromTemplateLiteral", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "FromUint8Array", "FromUnknown", "FromVoid", "FromKind", "_AssertError_Iterator", "FromObject", "Clone", "FromArray", "FromDate", "Clone", "FromAny", "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", "Create", "object", "keys", "schema", "Clone", "Create", "FromArray", "value", "Visit", "FromConstructor", "FromImport", "FromIntersect", "FromNever", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "FromArray", "value", "Visit", "FromImport", "FromIntersect", "schema", "Clone", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "value", "Default", "FromArray", "Visit", "FromBigInt", "FromBoolean", "FromDate", "FromImport", "FromInteger", "FromIntersect", "schema", "FromLiteral", "FromNull", "FromNumber", "FromObject", "FromRecord", "FromRef", "FromString", "FromSymbol", "FromThis", "FromTuple", "FromUndefined", "FromUnion", "Clone", "path", "Default", "FromArray", "value", "Visit", "FromIntersect", "FromImport", "FromNot", "FromObject", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "path", "Default", "FromArray", "value", "Visit", "FromImport", "FromIntersect", "FromNot", "FromObject", "IsUndefined", "FromRecord", "FromRef", "FromThis", "FromTuple", "schema", "FromUnion", "FromArray", "Visit", "FromAsyncIterator", "FromConstructor", "schema", "FromFunction", "FromIntersect", "FromImport", "FromIterator", "FromNot", "FromObject", "FromPromise", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Clone", "FromArray", "Visit", "FromDate", "FromImport", "FromIntersect", "schema", "FromObject", "FromRecord", "FromRef", "FromThis", "FromTuple", "FromUnion", "Default", "Delete", "Get", "Has", "Set", "path", "Escape", "Set", "Delete", "Has", "Get", "ObjectType", "DateType", "ArrayType", "Object", "String", "Delete", "path", "ObjectType", "Visit", "ArrayType", "TypedArrayType", "ValueType", "Clone", "IsStandardObject", "ObjectType", "path", "Clone", "Visit", "ArrayType", "TypedArrayType", "ValueType", "ParseRegistry", "Clone", "Default", "Delete", "Set", "Get", "value", "value_exports", "Clone", "Create", "Default", "FromComputed", "FromRef", "FromIntersect", "FromRest", "FromUnion", "FromPromise", "IsPromise", "Object", "Date", "Symbol", "Uint8Array", "FromArray", "FromValue", "FromProperties", "IsAsyncIterator", "IsIterator", "IsArray", "IsUint8Array", "Uint8Array", "IsDate", "Date", "IsObject", "Object", "IsFunction", "IsUndefined", "IsNull", "IsSymbol", "Symbol", "IsBigInt", "BigInt", "IsNumber", "IsBoolean", "IsString", "IsUndefined", "FromProperties", "FromMappedResult", "FromProperties", "FromMappedResult", "Object", "IsUndefined", "IsBoolean", "IsInteger", "IsNumber", "IsRegExp", "IsString", "record", "RecordKey", "String", "Number", "RecordValue", "FromConstructor", "FromFunction", "FromIntersect", "FromUnion", "FromTuple", "IsUndefined", "FromArray", "FromAsyncIterator", "FromIterator", "FromPromise", "FromObject", "FromProperties", "Object", "FromRecord", "RecordKey", "RecordValue", "FromArgument", "FromProperty", "IsFunction", "IsArray", "IsAsyncIterator", "IsIterator", "IsPromise", "IsObject", "FromTemplateLiteral", "strings", "FromRest", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperty", "FromProperties", "FromObject", "Object", "result", "IsObject", "IsArray", "FromPropertyKey", "FromPropertyKeys", "FromMappedKey", "FromProperties", "FromMappedResult", "FromIntersect", "FromUnion", "FromProperties", "FromObject", "Type", "keys", "Object", "UnionFromPropertyKeys", "result", "IsObject", "IsArray", "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", "IsUndefined", "RegExp", "IsString", "IsFunction", "decode", "Encode", "Decode", "type_exports", "Array", "BigInt", "Boolean", "Date", "Not", "Number", "Object", "Promise", "RegExp", "String", "Symbol", "Uint8Array", "type_exports", "NonEmptyString", "Strict", "NonNegativeInteger", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "NonEmptyString", "Strict", "value_exports", "issues", "identity", "version", "object", "rpc", "stream", "provider", "closeCode", "strict", "value_exports", "version", "provider", "PROTOCOL_VERSION", "isInteractionResponseMessage"]
|
|
7
|
+
}
|