authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-05 22:07:20-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-05 23:00:41-08:00
logf8886e874d43fe591fa50d28e9a8983632ba7e45
treed786bad354359b61d3a45c7e298342ce227658f6
parent2435a9cd58d697332f304833770febec0ff01262

rm task lifecycle events from ui


3 files changed, 38 insertions(+), 11 deletions(-)

apps/web/src/session-logic.test.ts+29
...@@ -343,6 +343,35 @@ describe("deriveWorkLogEntries", () => {...@@ -343,6 +343,35 @@ describe("deriveWorkLogEntries", () => {
343 expect(entries.map((entry) => entry.id)).toEqual(["tool-complete"]);343 expect(entries.map((entry) => entry.id)).toEqual(["tool-complete"]);
344 });344 });
345345
346 it("omits task start and completion lifecycle entries", () => {
347 const activities: OrchestrationThreadActivity[] = [
348 makeActivity({
349 id: "task-start",
350 createdAt: "2026-02-23T00:00:01.000Z",
351 kind: "task.started",
352 summary: "default task started",
353 tone: "info",
354 }),
355 makeActivity({
356 id: "task-progress",
357 createdAt: "2026-02-23T00:00:02.000Z",
358 kind: "task.progress",
359 summary: "Updating files",
360 tone: "info",
361 }),
362 makeActivity({
363 id: "task-complete",
364 createdAt: "2026-02-23T00:00:03.000Z",
365 kind: "task.completed",
366 summary: "Task completed",
367 tone: "info",
368 }),
369 ];
370
371 const entries = deriveWorkLogEntries(activities, undefined);
372 expect(entries.map((entry) => entry.id)).toEqual(["task-progress"]);
373 });
374
346 it("filters by turn id when provided", () => {375 it("filters by turn id when provided", () => {
347 const activities: OrchestrationThreadActivity[] = [376 const activities: OrchestrationThreadActivity[] = [
348 makeActivity({ id: "turn-1", turnId: "turn-1", summary: "Tool call", kind: "tool.started" }),377 makeActivity({ id: "turn-1", turnId: "turn-1", summary: "Tool call", kind: "tool.started" }),
apps/web/src/session-logic.ts+1
...@@ -394,6 +394,7 @@ export function deriveWorkLogEntries(...@@ -394,6 +394,7 @@ export function deriveWorkLogEntries(
394 return ordered394 return ordered
395 .filter((activity) => (latestTurnId ? activity.turnId === latestTurnId : true))395 .filter((activity) => (latestTurnId ? activity.turnId === latestTurnId : true))
396 .filter((activity) => activity.kind !== "tool.started")396 .filter((activity) => activity.kind !== "tool.started")
397 .filter((activity) => activity.kind !== "task.started" && activity.kind !== "task.completed")
397 .filter((activity) => activity.summary !== "Checkpoint captured")398 .filter((activity) => activity.summary !== "Checkpoint captured")
398 .map((activity) => {399 .map((activity) => {
399 const payload =400 const payload =
packages/contracts/src/model.ts+8-11
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1import { Schema } from "effect";1import { Schema } from "effect";
2import { ProviderKind } from "./orchestration";
23
3export const CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"] as const;4export const CODEX_REASONING_EFFORT_OPTIONS = ["xhigh", "high", "medium", "low"] as const;
4export type CodexReasoningEffort = (typeof CODEX_REASONING_EFFORT_OPTIONS)[number];5export type CodexReasoningEffort = (typeof CODEX_REASONING_EFFORT_OPTIONS)[number];
...@@ -27,15 +28,14 @@ export const MODEL_OPTIONS_BY_PROVIDER = {...@@ -27,15 +28,14 @@ export const MODEL_OPTIONS_BY_PROVIDER = {
27 { slug: "gpt-5.2-codex", name: "GPT-5.2 Codex" },28 { slug: "gpt-5.2-codex", name: "GPT-5.2 Codex" },
28 { slug: "gpt-5.2", name: "GPT-5.2" },29 { slug: "gpt-5.2", name: "GPT-5.2" },
29 ],30 ],
30} as const satisfies Record<"codex", readonly ModelOption[]>;31} as const satisfies Record<ProviderKind, readonly ModelOption[]>;
3132
32type BuiltInModelSlug =33type BuiltInModelSlug = (typeof MODEL_OPTIONS_BY_PROVIDER)[ProviderKind][number]["slug"];
33 (typeof MODEL_OPTIONS_BY_PROVIDER)[keyof typeof MODEL_OPTIONS_BY_PROVIDER][number]["slug"];
34export type ModelSlug = BuiltInModelSlug | (string & {});34export type ModelSlug = BuiltInModelSlug | (string & {});
3535
36export const DEFAULT_MODEL_BY_PROVIDER = {36export const DEFAULT_MODEL_BY_PROVIDER = {
37 codex: "gpt-5.3-codex",37 codex: "gpt-5.4",
38} as const satisfies Record<keyof typeof MODEL_OPTIONS_BY_PROVIDER, ModelSlug>;38} as const satisfies Record<ProviderKind, ModelSlug>;
3939
40// Backward compatibility for existing Codex-only call sites.40// Backward compatibility for existing Codex-only call sites.
41export const MODEL_OPTIONS = MODEL_OPTIONS_BY_PROVIDER.codex;41export const MODEL_OPTIONS = MODEL_OPTIONS_BY_PROVIDER.codex;
...@@ -49,15 +49,12 @@ export const MODEL_SLUG_ALIASES_BY_PROVIDER = {...@@ -49,15 +49,12 @@ export const MODEL_SLUG_ALIASES_BY_PROVIDER = {
49 "5.3-spark": "gpt-5.3-codex-spark",49 "5.3-spark": "gpt-5.3-codex-spark",
50 "gpt-5.3-spark": "gpt-5.3-codex-spark",50 "gpt-5.3-spark": "gpt-5.3-codex-spark",
51 },51 },
52} as const satisfies Record<keyof typeof MODEL_OPTIONS_BY_PROVIDER, Record<string, ModelSlug>>;52} as const satisfies Record<ProviderKind, Record<string, ModelSlug>>;
5353
54export const REASONING_EFFORT_OPTIONS_BY_PROVIDER = {54export const REASONING_EFFORT_OPTIONS_BY_PROVIDER = {
55 codex: CODEX_REASONING_EFFORT_OPTIONS,55 codex: CODEX_REASONING_EFFORT_OPTIONS,
56} as const satisfies Record<56} as const satisfies Record<ProviderKind, readonly CodexReasoningEffort[]>;
57 keyof typeof MODEL_OPTIONS_BY_PROVIDER,
58 readonly CodexReasoningEffort[]
59>;
6057
61export const DEFAULT_REASONING_EFFORT_BY_PROVIDER = {58export const DEFAULT_REASONING_EFFORT_BY_PROVIDER = {
62 codex: "high",59 codex: "high",
63} as const satisfies Record<keyof typeof MODEL_OPTIONS_BY_PROVIDER, CodexReasoningEffort | null>;60} as const satisfies Record<ProviderKind, CodexReasoningEffort | null>;