Small fixes
A selection of 80 fixes from 174 pull requests.
69.Encoding the wrong result branch
A known tool failure could be encoded by an overlapping success schema. Select the encoder using isFailure, rather than asking a success-first union to choose again.
121234567910118910151611121314151617181921 readonly decodeResult: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError> readonly encodeResult: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError> readonly encodeResult: (u: unknown, isFailure: boolean) => Effect.Effect<unknown, Schema.SchemaError>}>()
const getSchemas = (tool: Tool.Any) => { let schemas = schemasCache.get(tool) if (Predicate.isUndefined(schemas)) { const handler = services.mapUnsafe.get(tool.id)! as Tool.Handler<any> const resultSchema = tool.failureMode === "return" ? Schema.Union([tool.successSchema, tool.failureSchema, AiError.AiError]) : tool.successSchema const decodeParameters = Schema.isSchema(tool.parametersSchema) ? Schema.decodeUnknownEffect(tool.parametersSchema) as any : (u: unknown) => Effect.succeed(u) const decodeResult = Schema.decodeUnknownEffect(resultSchema) as any const encodeResult = Schema.encodeUnknownEffect(resultSchema) as any const encodeSuccess = Schema.encodeUnknownEffect(tool.successSchema) as any const encodeFailure = Schema.encodeUnknownEffect(tool.failureSchema) as any const encodeAiError = Schema.encodeUnknownEffect(AiError.AiError) const encodeResult = (u: unknown, isFailure: boolean) => !isFailure ? encodeSuccess(u) : AiError.isAiError(u) ? encodeAiError(u) : encodeFailure(u) schemas = { context: handler.context, handler: handler.handler, decodeParameters, decodeResult,