From 041acf158a277c9f8eca5e844770ffa74d9ed752 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Thu, 26 Feb 2026 21:36:44 -0800 Subject: [PATCH] fix nullability --- .../src/persistence/NodeSqliteClient.test.ts | 34 +++++++++++-------- packages/contracts/src/orchestration.ts | 8 ++--- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/apps/server/src/persistence/NodeSqliteClient.test.ts b/apps/server/src/persistence/NodeSqliteClient.test.ts index 18c24ec64517d815b8832577442f9fd953a17509..a055d409ba2ac7dbb88fb9f1fe8d561a54f5224a 100644 --- a/apps/server/src/persistence/NodeSqliteClient.test.ts +++ b/apps/server/src/persistence/NodeSqliteClient.test.ts @@ -4,23 +4,27 @@ import * as SqlClient from "effect/unstable/sql/SqlClient"; import * as SqliteClient from "./NodeSqliteClient.ts"; -it.effect("runs prepared queries and returns positional values", () => - Effect.gen(function* () { - const sql = yield* SqlClient.SqlClient; +const layer = it.layer(SqliteClient.layerMemory()); - yield* sql`CREATE TABLE entries(id INTEGER PRIMARY KEY, name TEXT NOT NULL)`; - yield* sql`INSERT INTO entries(name) VALUES (${"alpha"}), (${"beta"})`; +layer("NodeSqliteClient", (it) => { + it.effect("runs prepared queries and returns positional values", () => + Effect.gen(function* () { + const sql = yield* SqlClient.SqlClient; - const rows = yield* sql<{ readonly id: number; readonly name: string }>` + yield* sql`CREATE TABLE entries(id INTEGER PRIMARY KEY, name TEXT NOT NULL)`; + yield* sql`INSERT INTO entries(name) VALUES (${"alpha"}), (${"beta"})`; + + const rows = yield* sql<{ readonly id: number; readonly name: string }>` SELECT id, name FROM entries ORDER BY id `; - assert.equal(rows.length, 2); - assert.equal(rows[0]?.name, "alpha"); - assert.equal(rows[1]?.name, "beta"); + assert.equal(rows.length, 2); + assert.equal(rows[0]?.name, "alpha"); + assert.equal(rows[1]?.name, "beta"); - const values = yield* sql`SELECT id, name FROM entries ORDER BY id`.values; - assert.equal(values.length, 2); - assert.equal(values[0]?.[1], "alpha"); - assert.equal(values[1]?.[1], "beta"); - }).pipe(Effect.provide(SqliteClient.layerMemory())), -); + const values = yield* sql`SELECT id, name FROM entries ORDER BY id`.values; + assert.equal(values.length, 2); + assert.equal(values[0]?.[1], "alpha"); + assert.equal(values[1]?.[1], "beta"); + }), + ); +}); diff --git a/packages/contracts/src/orchestration.ts b/packages/contracts/src/orchestration.ts index 619ea31bb4dbbb957eda22f740363bd4317192e2..06fcbfec3ea10e0ab700ca77842151a9c4f08aea 100644 --- a/packages/contracts/src/orchestration.ts +++ b/packages/contracts/src/orchestration.ts @@ -142,8 +142,8 @@ export const OrchestrationSession = Schema.Struct({ providerName: Schema.NullOr(TrimmedNonEmptyString), providerSessionId: Schema.NullOr(ProviderSessionId), providerThreadId: Schema.NullOr(ProviderThreadId), - approvalPolicy: ProviderApprovalPolicy, - sandboxMode: ProviderSandboxMode, + approvalPolicy: ProviderApprovalPolicy.pipe(Schema.withDecodingDefault(() => "on-failure")), + sandboxMode: ProviderSandboxMode.pipe(Schema.withDecodingDefault(() => "workspace-write")), activeTurnId: Schema.NullOr(TurnId), lastError: Schema.NullOr(TrimmedNonEmptyString), updatedAt: IsoDateTime, @@ -500,8 +500,8 @@ export const ThreadTurnStartRequestedPayload = Schema.Struct({ model: Schema.optional(TrimmedNonEmptyString), effort: Schema.optional(TrimmedNonEmptyString), assistantDeliveryMode: Schema.optional(AssistantDeliveryMode), - approvalPolicy: ProviderApprovalPolicy, - sandboxMode: ProviderSandboxMode, + approvalPolicy: ProviderApprovalPolicy.pipe(Schema.withDecodingDefault(() => "on-failure")), + sandboxMode: ProviderSandboxMode.pipe(Schema.withDecodingDefault(() => "workspace-write")), createdAt: IsoDateTime, }); -- 2.54.0