Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b9ea148
Restore Claude adapter on sibling stack
juliusmarminge Mar 6, 2026
da9cbcc
test: restore Claude coverage on sibling stack
juliusmarminge Mar 6, 2026
95c5005
contracts: restore Claude schemas on sibling stack
juliusmarminge Mar 6, 2026
11aca1f
model: restore Claude catalogs on sibling stack
juliusmarminge Mar 6, 2026
1da30f7
split: restore Claude provider surface on sibling stack
juliusmarminge Mar 6, 2026
de7cfba
split: restore Claude SDK manifest and plan doc
juliusmarminge Mar 6, 2026
01f01c5
build: sync Claude SDK lockfile on sibling stack
juliusmarminge Mar 6, 2026
99cd1c5
Fix post-rebase provider integration
juliusmarminge Mar 16, 2026
ff34d2c
lock
juliusmarminge Mar 16, 2026
858116d
fmt
juliusmarminge Mar 16, 2026
040011d
Remove Cursor provider support across server and web
juliusmarminge Mar 16, 2026
c5bfff1
unify start option union
juliusmarminge Mar 16, 2026
73152ab
fmt
juliusmarminge Mar 16, 2026
e0facb0
fix circular import
juliusmarminge Mar 16, 2026
d2b00e6
Show Claude Code in provider picker and add Cursor placeholder
juliusmarminge Mar 16, 2026
2121682
Improve Claude adapter tool streaming and health checks
juliusmarminge Mar 16, 2026
fdcb05d
replace ad-hoc union for contract type
juliusmarminge Mar 16, 2026
33791cd
align branding guide lines
juliusmarminge Mar 16, 2026
f34dd0a
Schema.is
juliusmarminge Mar 16, 2026
b403ca3
dont provide generated orchestration ids to native providerRefs
juliusmarminge Mar 16, 2026
fc9660f
Enforce provider-model consistency for thread turn starts
juliusmarminge Mar 17, 2026
b577cb5
Fix locked-thread model selection and provider fallback
juliusmarminge Mar 17, 2026
b04132d
Use provider default model in orchestration integration seed
juliusmarminge Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
441 changes: 441 additions & 0 deletions .plans/17-claude-agent.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

## Project Snapshot

T3 Code is a minimal web GUI for using code agents like Codex and Claude Code (coming soon).
T3 Code is a minimal web GUI for using coding agents like Codex and Claude.

This repository is a VERY EARLY WIP. Proposing sweeping changes that improve long-term maintainability is encouraged.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# T3 Code

T3 Code is a minimal web GUI for coding agents. Currently Codex-first, with Claude Code support coming soon.
T3 Code is a minimal web GUI for coding agents (currently Codex and Claude, more coming soon).

## How to use

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { execFileSync } from "node:child_process";
import * as NodeServices from "@effect/platform-node/NodeServices";
import {
ApprovalRequestId,
ProviderKind,
type OrchestrationEvent,
type OrchestrationThread,
} from "@t3tools/contracts";
Expand Down Expand Up @@ -205,7 +206,7 @@ export interface OrchestrationIntegrationHarness {
}

interface MakeOrchestrationIntegrationHarnessOptions {
readonly provider?: "codex";
readonly provider?: ProviderKind;
readonly realCodex?: boolean;
}

Expand Down
11 changes: 6 additions & 5 deletions apps/server/integration/TestProviderAdapter.integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
ProviderTurnStartResult,
ThreadId,
TurnId,
ProviderKind,
} from "@t3tools/contracts";
import { Effect, Queue, Stream } from "effect";

Expand All @@ -35,7 +36,7 @@ export interface TestTurnResponse {
export type FixtureProviderRuntimeEvent = {
readonly type: string;
readonly eventId: EventId;
readonly provider: "codex";
readonly provider: ProviderKind;
readonly createdAt: string;
readonly threadId: string;
readonly turnId?: string | undefined;
Expand Down Expand Up @@ -177,7 +178,7 @@ function normalizeFixtureEvent(rawEvent: Record<string, unknown>): ProviderRunti

export interface TestProviderAdapterHarness {
readonly adapter: ProviderAdapterShape<ProviderAdapterError>;
readonly provider: "codex";
readonly provider: ProviderKind;
readonly queueTurnResponse: (
threadId: ThreadId,
response: TestTurnResponse,
Expand All @@ -197,15 +198,15 @@ export interface TestProviderAdapterHarness {
}

interface MakeTestProviderAdapterHarnessOptions {
readonly provider?: "codex";
readonly provider?: ProviderKind;
}

function nowIso(): string {
return new Date().toISOString();
}

function sessionNotFound(
provider: "codex",
provider: ProviderKind,
threadId: ThreadId,
): ProviderAdapterSessionNotFoundError {
return new ProviderAdapterSessionNotFoundError({
Expand All @@ -215,7 +216,7 @@ function sessionNotFound(
}

function missingSessionEffect(
provider: "codex",
provider: ProviderKind,
threadId: ThreadId,
): Effect.Effect<never, ProviderAdapterError> {
return Effect.fail(sessionNotFound(provider, threadId));
Expand Down
Loading