1import {
2 ProjectId,
3 ProviderInstanceId,
4 ThreadId,
5 type OrchestrationProjectShell,
6 type OrchestrationV2ShellSnapshot,
7 type OrchestrationV2ThreadProjection,
8 type OrchestrationV2ThreadShell,
9} from "@t3tools/contracts";
10import * as DateTime from "effect/DateTime";
11
12export const v2Now = DateTime.makeUnsafe("2026-06-20T00:00:00.000Z");
13const v2ProjectId = ProjectId.make("project-v2");
14export const v2ThreadId = ThreadId.make("thread-v2");
15const v2ProviderInstanceId = ProviderInstanceId.make("codex");
16
17export const v2Project: OrchestrationProjectShell = {
18 id: v2ProjectId,
19 title: "Project",
20 workspaceRoot: "/workspace/project",
21 repositoryIdentity: null,
22 defaultModelSelection: null,
23 scripts: [],
24 createdAt: "2026-06-20T00:00:00.000Z",
25 updatedAt: "2026-06-20T00:00:00.000Z",
26};
27
28export const v2ThreadShell: OrchestrationV2ThreadShell = {
29 id: v2ThreadId,
30 projectId: v2ProjectId,
31 title: "Thread",
32 providerInstanceId: v2ProviderInstanceId,
33 modelSelection: { instanceId: v2ProviderInstanceId, model: "gpt-5.4" },
34 runtimeMode: "full-access",
35 interactionMode: "default",
36 branch: null,
37 worktreePath: null,
38 activeProviderThreadId: null,
39 lineage: { rootThreadId: v2ThreadId, parentThreadId: null, relationshipToParent: null },
40 forkedFrom: null,
41 createdBy: "user",
42 creationSource: "web",
43 latestRunId: null,
44 activeRunId: null,
45 status: "idle",
46 pendingRuntimeRequest: null,
47 latestVisibleMessage: null,
48 latestUserMessageAt: null,
49 hasActionableProposedPlan: false,
50 itemCount: 0,
51 visibleItemCount: 0,
52 createdAt: v2Now,
53 updatedAt: v2Now,
54 archivedAt: null,
55 settledOverride: null,
56 settledAt: null,
57 lastVisitedAt: null,
58 deletedAt: null,
59};
60
61export const v2Projection: OrchestrationV2ThreadProjection = {
62 thread: {
63 id: v2ThreadShell.id,
64 projectId: v2ThreadShell.projectId,
65 title: v2ThreadShell.title,
66 providerInstanceId: v2ThreadShell.providerInstanceId,
67 modelSelection: v2ThreadShell.modelSelection,
68 runtimeMode: v2ThreadShell.runtimeMode,
69 interactionMode: v2ThreadShell.interactionMode,
70 branch: v2ThreadShell.branch,
71 worktreePath: v2ThreadShell.worktreePath,
72 activeProviderThreadId: v2ThreadShell.activeProviderThreadId,
73 lineage: v2ThreadShell.lineage,
74 forkedFrom: v2ThreadShell.forkedFrom,
75 createdBy: v2ThreadShell.createdBy,
76 creationSource: v2ThreadShell.creationSource,
77 createdAt: v2Now,
78 updatedAt: v2Now,
79 archivedAt: null,
80 settledOverride: null,
81 settledAt: null,
82 lastVisitedAt: null,
83 deletedAt: null,
84 },
85 runs: [],
86 attempts: [],
87 nodes: [],
88 subagents: [],
89 providerSessions: [],
90 providerThreads: [],
91 providerTurns: [],
92 runtimeRequests: [],
93 messages: [],
94 plans: [],
95 turnItems: [],
96 checkpointScopes: [],
97 checkpoints: [],
98 contextHandoffs: [],
99 contextTransfers: [],
100 visibleTurnItems: [],
101 updatedAt: v2Now,
102};
103
104export const v2ShellSnapshot: OrchestrationV2ShellSnapshot = {
105 schemaVersion: 1,
106 snapshotSequence: 0,
107 projects: [v2Project],
108 threads: [v2ThreadShell],
109 archivedThreads: [],
110};