@gkorepanov/ccodex 0.3.0 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -9
- package/RELEASING.md +14 -15
- package/SSH_VERIFY.md +11 -0
- package/archive/README.md +23 -0
- package/compatibility.json +1 -2
- package/config.example.toml +12 -4
- package/dist/claude/asyncQueue.d.ts +3 -0
- package/dist/claude/asyncQueue.js +13 -2
- package/dist/claude/asyncQueue.js.map +1 -1
- package/dist/claude/commandActions.d.ts +6 -0
- package/dist/claude/commandActions.js +57 -0
- package/dist/claude/commandActions.js.map +1 -0
- package/dist/claude/compactCommand.d.ts +2 -0
- package/dist/claude/compactCommand.js +7 -0
- package/dist/claude/compactCommand.js.map +1 -0
- package/dist/claude/goalTools.d.ts +15 -0
- package/dist/claude/goalTools.js +173 -0
- package/dist/claude/goalTools.js.map +1 -0
- package/dist/claude/hookMapper.d.ts +17 -4
- package/dist/claude/hookMapper.js +7 -5
- package/dist/claude/hookMapper.js.map +1 -1
- package/dist/claude/rateLimits.d.ts +72 -0
- package/dist/claude/rateLimits.js +330 -0
- package/dist/claude/rateLimits.js.map +1 -0
- package/dist/claude/responseItemValidation.d.ts +2 -0
- package/dist/claude/responseItemValidation.js +40 -0
- package/dist/claude/responseItemValidation.js.map +1 -0
- package/dist/claude/resultClassifier.d.ts +8 -2
- package/dist/claude/resultClassifier.js +1 -1
- package/dist/claude/resultClassifier.js.map +1 -1
- package/dist/claude/service.d.ts +108 -28
- package/dist/claude/service.js +1276 -668
- package/dist/claude/service.js.map +1 -1
- package/dist/claude/session/backgroundOutput.d.ts +2 -0
- package/dist/claude/session/backgroundOutput.js +29 -0
- package/dist/claude/session/backgroundOutput.js.map +1 -0
- package/dist/claude/session/commands.d.ts +855 -0
- package/dist/claude/session/commands.js +2 -0
- package/dist/claude/session/commands.js.map +1 -0
- package/dist/claude/session/goalState.d.ts +49 -0
- package/dist/claude/session/goalState.js +407 -0
- package/dist/claude/session/goalState.js.map +1 -0
- package/dist/claude/session/mailbox.d.ts +52 -0
- package/dist/claude/session/mailbox.js +190 -0
- package/dist/claude/session/mailbox.js.map +1 -0
- package/dist/claude/session/outputAdapter.d.ts +11 -0
- package/dist/claude/session/outputAdapter.js +31 -0
- package/dist/claude/session/outputAdapter.js.map +1 -0
- package/dist/claude/session/providerFacts.d.ts +47 -0
- package/dist/claude/session/providerFacts.js +84 -0
- package/dist/claude/session/providerFacts.js.map +1 -0
- package/dist/claude/session/providerRuntime.d.ts +1 -0
- package/dist/claude/session/providerRuntime.js +2 -0
- package/dist/claude/session/providerRuntime.js.map +1 -0
- package/dist/claude/session/providerRuntimeFactory.d.ts +49 -0
- package/dist/claude/session/providerRuntimeFactory.js +127 -0
- package/dist/claude/session/providerRuntimeFactory.js.map +1 -0
- package/dist/claude/session/repository.d.ts +57 -0
- package/dist/claude/session/repository.js +161 -0
- package/dist/claude/session/repository.js.map +1 -0
- package/dist/claude/session/runtime.d.ts +46 -0
- package/dist/claude/session/runtime.js +140 -0
- package/dist/claude/session/runtime.js.map +1 -0
- package/dist/claude/session/scopeState.d.ts +61 -0
- package/dist/claude/session/scopeState.js +74 -0
- package/dist/claude/session/scopeState.js.map +1 -0
- package/dist/claude/session/session.d.ts +281 -0
- package/dist/claude/session/session.js +6664 -0
- package/dist/claude/session/session.js.map +1 -0
- package/dist/claude/session/shellRunner.d.ts +13 -0
- package/dist/claude/session/shellRunner.js +103 -0
- package/dist/claude/session/shellRunner.js.map +1 -0
- package/dist/claude/session/usage.d.ts +2 -0
- package/dist/claude/session/usage.js +10 -0
- package/dist/claude/session/usage.js.map +1 -0
- package/dist/claude/sessionRegistry.d.ts +26 -0
- package/dist/claude/sessionRegistry.js +118 -0
- package/dist/claude/sessionRegistry.js.map +1 -0
- package/dist/claude/shellSupervisor.d.ts +1 -0
- package/dist/claude/shellSupervisor.js +69 -0
- package/dist/claude/shellSupervisor.js.map +1 -0
- package/dist/claude/statusCommand.d.ts +21 -0
- package/dist/claude/statusCommand.js +97 -0
- package/dist/claude/statusCommand.js.map +1 -0
- package/dist/claude/toolMapper.d.ts +9 -1
- package/dist/claude/toolMapper.js +92 -16
- package/dist/claude/toolMapper.js.map +1 -1
- package/dist/claude/transcriptBrancher.d.ts +37 -0
- package/dist/claude/transcriptBrancher.js +103 -0
- package/dist/claude/transcriptBrancher.js.map +1 -0
- package/dist/cli/delegate.js +23 -1
- package/dist/cli/delegate.js.map +1 -1
- package/dist/cli/main.js +28 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/codex/generated/ResponseItemRuntimeSchema.d.ts +8 -0
- package/dist/codex/generated/ResponseItemRuntimeSchema.js +7 -0
- package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -0
- package/dist/compatibility/probe.js +11 -6
- package/dist/compatibility/probe.js.map +1 -1
- package/dist/config/config.d.ts +9 -0
- package/dist/config/config.js +80 -11
- package/dist/config/config.js.map +1 -1
- package/dist/daemon/daemon.js +91 -43
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/ownership.d.ts +15 -0
- package/dist/daemon/ownership.js +185 -0
- package/dist/daemon/ownership.js.map +1 -0
- package/dist/daemon/supervisor.d.ts +3 -0
- package/dist/daemon/supervisor.js +37 -1
- package/dist/daemon/supervisor.js.map +1 -1
- package/dist/gateway/clientConnection.d.ts +7 -1
- package/dist/gateway/clientConnection.js +435 -48
- package/dist/gateway/clientConnection.js.map +1 -1
- package/dist/gateway/remoteRelay.js +0 -1
- package/dist/gateway/remoteRelay.js.map +1 -1
- package/dist/gateway/server.d.ts +1 -1
- package/dist/gateway/server.js +37 -9
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/subscriptions.d.ts +9 -2
- package/dist/gateway/subscriptions.js +87 -9
- package/dist/gateway/subscriptions.js.map +1 -1
- package/dist/gateway/transientNotice.d.ts +2 -0
- package/dist/gateway/transientNotice.js +42 -1
- package/dist/gateway/transientNotice.js.map +1 -1
- package/dist/handoff/service.d.ts +32 -3
- package/dist/handoff/service.js +304 -26
- package/dist/handoff/service.js.map +1 -1
- package/dist/handoff/titleGeneration.d.ts +28 -0
- package/dist/handoff/titleGeneration.js +151 -0
- package/dist/handoff/titleGeneration.js.map +1 -0
- package/dist/management/doctor.d.ts +1 -1
- package/dist/management/doctor.js +32 -23
- package/dist/management/doctor.js.map +1 -1
- package/dist/management/lifecycle.js +14 -2
- package/dist/management/lifecycle.js.map +1 -1
- package/dist/management/remoteShim.d.ts +10 -0
- package/dist/management/remoteShim.js +65 -0
- package/dist/management/remoteShim.js.map +1 -0
- package/dist/management/setup.d.ts +4 -0
- package/dist/management/setup.js +108 -39
- package/dist/management/setup.js.map +1 -1
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +6 -0
- package/dist/observability/metrics.js.map +1 -1
- package/dist/protocol/errors.d.ts +1 -0
- package/dist/protocol/errors.js +4 -1
- package/dist/protocol/errors.js.map +1 -1
- package/dist/runtime/dependencies.js +2 -2
- package/dist/runtime/dependencies.js.map +1 -1
- package/dist/runtime/providerAvailability.d.ts +24 -0
- package/dist/runtime/providerAvailability.js +107 -0
- package/dist/runtime/providerAvailability.js.map +1 -0
- package/dist/state/stateCommand.d.ts +21 -0
- package/dist/state/stateCommand.js +198 -0
- package/dist/state/stateCommand.js.map +1 -0
- package/dist/state/stockStateTracker.d.ts +14 -0
- package/dist/state/stockStateTracker.js +120 -0
- package/dist/state/stockStateTracker.js.map +1 -0
- package/dist/store/HybridStore.d.ts +118 -2
- package/dist/store/HybridStore.js +23 -1
- package/dist/store/HybridStore.js.map +1 -1
- package/dist/store/memoryStore.d.ts +57 -7
- package/dist/store/memoryStore.js +337 -5
- package/dist/store/memoryStore.js.map +1 -1
- package/dist/store/sqliteStore.d.ts +30 -4
- package/dist/store/sqliteStore.js +395 -42
- package/dist/store/sqliteStore.js.map +1 -1
- package/install.sh +2 -2
- package/package.json +18 -10
- package/dist/claude/interactions.d.ts +0 -23
- package/dist/claude/interactions.js +0 -77
- package/dist/claude/interactions.js.map +0 -1
- package/dist/claude/sessionRuntime.d.ts +0 -102
- package/dist/claude/sessionRuntime.js +0 -1361
- package/dist/claude/sessionRuntime.js.map +0 -1
- /package/{BUILD_BENCHMARKS.md → archive/BUILD_BENCHMARKS.md} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ApprovalsReviewer } from "../codex/generated/v2/ApprovalsReviewer.js";
|
|
2
|
+
import type { AskForApproval } from "../codex/generated/v2/AskForApproval.js";
|
|
3
|
+
import type { SandboxPolicy } from "../codex/generated/v2/SandboxPolicy.js";
|
|
4
|
+
import type { Thread } from "../codex/generated/v2/Thread.js";
|
|
5
|
+
import type { ThreadTokenUsage } from "../codex/generated/v2/ThreadTokenUsage.js";
|
|
6
|
+
import type { UserInput } from "../codex/generated/v2/UserInput.js";
|
|
7
|
+
export interface ThreadStateSnapshot {
|
|
8
|
+
readonly provider: "claude" | "codex";
|
|
9
|
+
readonly model: string;
|
|
10
|
+
readonly effort: string | null;
|
|
11
|
+
readonly serviceTier: string | null;
|
|
12
|
+
readonly approvalPolicy: AskForApproval | null;
|
|
13
|
+
readonly approvalsReviewer: ApprovalsReviewer | null;
|
|
14
|
+
readonly sandboxPolicy: SandboxPolicy | null;
|
|
15
|
+
readonly thread: Thread;
|
|
16
|
+
readonly tokenUsage: ThreadTokenUsage | null;
|
|
17
|
+
readonly providerCostUsd: number | null;
|
|
18
|
+
}
|
|
19
|
+
export declare function isCCodexStateCommand(input: UserInput[]): boolean;
|
|
20
|
+
export declare function stateModelName(provider: "claude" | "codex", value: string): string;
|
|
21
|
+
export declare function formatCCodexState(snapshot: ThreadStateSnapshot, nowMs?: number): string;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export function isCCodexStateCommand(input) {
|
|
2
|
+
return input.length === 1
|
|
3
|
+
&& input[0]?.type === "text"
|
|
4
|
+
&& input[0].text.trim().toLowerCase() === "/ccstate";
|
|
5
|
+
}
|
|
6
|
+
export function stateModelName(provider, value) {
|
|
7
|
+
const withoutProvider = value
|
|
8
|
+
.replace(/^claude:/, "")
|
|
9
|
+
.replace(/^claude-/, "")
|
|
10
|
+
.replace(/^gpt-/, "");
|
|
11
|
+
const words = withoutProvider.split("-").filter(Boolean);
|
|
12
|
+
const version = words.length >= 2
|
|
13
|
+
&& /^\d+$/.test(words.at(-1))
|
|
14
|
+
&& /^\d+$/.test(words.at(-2))
|
|
15
|
+
? `${words.splice(-2).join(".")}`
|
|
16
|
+
: undefined;
|
|
17
|
+
const name = words.map((word) => word.length <= 3 && /^\d+$/.test(word)
|
|
18
|
+
? word
|
|
19
|
+
: `${word.charAt(0).toUpperCase()}${word.slice(1)}`).join(" ");
|
|
20
|
+
return `${provider === "claude" ? "Claude" : "Codex"} ${name}${version ? ` ${version}` : ""}`.trim();
|
|
21
|
+
}
|
|
22
|
+
function compactNumber(value) {
|
|
23
|
+
if (value < 1_000)
|
|
24
|
+
return String(Math.round(value));
|
|
25
|
+
const units = [
|
|
26
|
+
{ size: 1_000_000_000, suffix: "b" },
|
|
27
|
+
{ size: 1_000_000, suffix: "m" },
|
|
28
|
+
{ size: 1_000, suffix: "k" },
|
|
29
|
+
];
|
|
30
|
+
const unit = units.find((candidate) => value >= candidate.size);
|
|
31
|
+
const scaled = value / unit.size;
|
|
32
|
+
const precision = scaled >= 100 || Number.isInteger(scaled) ? 0 : 1;
|
|
33
|
+
return `${scaled.toFixed(precision).replace(/\.0$/, "")}${unit.suffix}`;
|
|
34
|
+
}
|
|
35
|
+
function elapsed(valueMs) {
|
|
36
|
+
const seconds = Math.max(0, Math.floor(valueMs / 1_000));
|
|
37
|
+
const days = Math.floor(seconds / 86_400);
|
|
38
|
+
const hours = Math.floor(seconds % 86_400 / 3_600);
|
|
39
|
+
const minutes = Math.floor(seconds % 3_600 / 60);
|
|
40
|
+
const remainder = seconds % 60;
|
|
41
|
+
if (days > 0)
|
|
42
|
+
return `${days}d ${hours}h`;
|
|
43
|
+
if (hours > 0)
|
|
44
|
+
return `${hours}h ${minutes}m`;
|
|
45
|
+
if (minutes > 0)
|
|
46
|
+
return `${minutes}m ${remainder}s`;
|
|
47
|
+
return `${remainder}s`;
|
|
48
|
+
}
|
|
49
|
+
function relative(valueSeconds, nowMs) {
|
|
50
|
+
const delta = Math.max(0, nowMs - valueSeconds * 1_000);
|
|
51
|
+
if (delta < 60_000)
|
|
52
|
+
return `${Math.floor(delta / 1_000)}s ago`;
|
|
53
|
+
if (delta < 3_600_000)
|
|
54
|
+
return `${Math.floor(delta / 60_000)}m ago`;
|
|
55
|
+
if (delta < 86_400_000)
|
|
56
|
+
return `${Math.floor(delta / 3_600_000)}h ago`;
|
|
57
|
+
return `${Math.floor(delta / 86_400_000)}d ago`;
|
|
58
|
+
}
|
|
59
|
+
function syntheticTurn(items) {
|
|
60
|
+
const user = items.find((item) => item.type === "userMessage");
|
|
61
|
+
if (user?.type !== "userMessage")
|
|
62
|
+
return false;
|
|
63
|
+
return isCCodexStateCommand(user.content)
|
|
64
|
+
|| (user.content.length === 1 && user.content[0]?.type === "text"
|
|
65
|
+
&& ["/ccstatus", "ccodex status", "/ccodex-status"]
|
|
66
|
+
.includes(user.content[0].text.trim().toLowerCase()));
|
|
67
|
+
}
|
|
68
|
+
function toolKind(item) {
|
|
69
|
+
if (item.type === "fileChange")
|
|
70
|
+
return "edit";
|
|
71
|
+
if (item.type === "collabAgentToolCall")
|
|
72
|
+
return "agent";
|
|
73
|
+
if (item.type === "mcpToolCall")
|
|
74
|
+
return "mcp";
|
|
75
|
+
if (item.type === "dynamicToolCall")
|
|
76
|
+
return item.tool.toLowerCase();
|
|
77
|
+
if (item.type === "webSearch")
|
|
78
|
+
return "web";
|
|
79
|
+
if (item.type === "imageView")
|
|
80
|
+
return "read";
|
|
81
|
+
if (item.type === "imageGeneration")
|
|
82
|
+
return "image";
|
|
83
|
+
if (item.type === "sleep")
|
|
84
|
+
return "sleep";
|
|
85
|
+
if (item.type !== "commandExecution")
|
|
86
|
+
return undefined;
|
|
87
|
+
const actions = item.commandActions.map((action) => action.type);
|
|
88
|
+
if (actions.some((type) => type === "read"))
|
|
89
|
+
return "read";
|
|
90
|
+
if (actions.some((type) => type === "search" || type === "listFiles"))
|
|
91
|
+
return "search";
|
|
92
|
+
return "bash";
|
|
93
|
+
}
|
|
94
|
+
function mode(snapshot) {
|
|
95
|
+
if (snapshot.approvalsReviewer === "auto_review")
|
|
96
|
+
return "ᗢ approve for me";
|
|
97
|
+
if (snapshot.approvalPolicy === "on-request" || snapshot.approvalPolicy === "untrusted"
|
|
98
|
+
|| snapshot.approvalPolicy !== null && typeof snapshot.approvalPolicy === "object") {
|
|
99
|
+
return "◇ ask for approval";
|
|
100
|
+
}
|
|
101
|
+
if (snapshot.sandboxPolicy?.type === "dangerFullAccess")
|
|
102
|
+
return "◆ full access";
|
|
103
|
+
if (snapshot.sandboxPolicy?.type === "readOnly")
|
|
104
|
+
return "◈ read only";
|
|
105
|
+
if (!snapshot.approvalPolicy || !snapshot.sandboxPolicy)
|
|
106
|
+
return "unavailable";
|
|
107
|
+
return "◇ no approvals";
|
|
108
|
+
}
|
|
109
|
+
function header(snapshot) {
|
|
110
|
+
const avatar = snapshot.provider === "claude" ? "❋" : "֎";
|
|
111
|
+
const speed = snapshot.serviceTier === "fast" || snapshot.serviceTier === "priority"
|
|
112
|
+
? "⚡ fast"
|
|
113
|
+
: "standard";
|
|
114
|
+
return [
|
|
115
|
+
`${avatar} **${snapshot.model}**`,
|
|
116
|
+
snapshot.effort,
|
|
117
|
+
speed,
|
|
118
|
+
].filter(Boolean).join(" · ");
|
|
119
|
+
}
|
|
120
|
+
function tree(lines) {
|
|
121
|
+
return lines.map((line, index) => ` ${index === lines.length - 1 ? "└" : "├"} ${line}`);
|
|
122
|
+
}
|
|
123
|
+
export function formatCCodexState(snapshot, nowMs = Date.now()) {
|
|
124
|
+
const turns = snapshot.thread.turns.filter((turn) => !syntheticTurn(turn.items));
|
|
125
|
+
let userMessages = 0;
|
|
126
|
+
let assistantMessages = 0;
|
|
127
|
+
const tools = new Map();
|
|
128
|
+
for (const item of turns.flatMap((turn) => turn.items)) {
|
|
129
|
+
if (item.type === "userMessage")
|
|
130
|
+
userMessages += 1;
|
|
131
|
+
else if (item.type === "agentMessage")
|
|
132
|
+
assistantMessages += 1;
|
|
133
|
+
const kind = toolKind(item);
|
|
134
|
+
if (kind)
|
|
135
|
+
tools.set(kind, (tools.get(kind) ?? 0) + 1);
|
|
136
|
+
}
|
|
137
|
+
const compacts = turns.filter((turn) => turn.items.some((item) => item.type === "contextCompaction"));
|
|
138
|
+
const lastCompact = compacts.map((turn) => turn.completedAt ?? turn.startedAt).filter((value) => value !== null).at(-1);
|
|
139
|
+
const runTimeMs = turns.reduce((total, turn) => total + (turn.durationMs
|
|
140
|
+
?? (turn.startedAt === null ? 0 : Math.max(0, nowMs - turn.startedAt * 1_000))), 0);
|
|
141
|
+
const usage = snapshot.tokenUsage;
|
|
142
|
+
const context = usage?.last.totalTokens;
|
|
143
|
+
const window = usage?.modelContextWindow;
|
|
144
|
+
const contextPercent = context !== undefined && window
|
|
145
|
+
? Math.min(100, Math.max(0, Math.round(context / window * 100)))
|
|
146
|
+
: null;
|
|
147
|
+
const filled = contextPercent === null || contextPercent === 0
|
|
148
|
+
? 0
|
|
149
|
+
: contextPercent === 100 ? 10 : Math.max(1, Math.floor(contextPercent / 10));
|
|
150
|
+
const contextBar = contextPercent === null
|
|
151
|
+
? "unavailable"
|
|
152
|
+
: `${"▰".repeat(filled)}${"▱".repeat(10 - filled)} ${contextPercent}% · ${compactNumber(context)}/${compactNumber(window)}`;
|
|
153
|
+
const total = usage?.total;
|
|
154
|
+
const cacheRate = total && total.inputTokens > 0
|
|
155
|
+
? `${Math.round(total.cachedInputTokens / total.inputTokens * 100)}% hit rate`
|
|
156
|
+
: "unavailable";
|
|
157
|
+
const toolEntries = [...tools.entries()].sort((left, right) => right[1] - left[1] || left[0].localeCompare(right[0]));
|
|
158
|
+
const toolTotal = toolEntries.reduce((sum, [, count]) => sum + count, 0);
|
|
159
|
+
const visibleTools = toolEntries.slice(0, 5);
|
|
160
|
+
const hiddenTools = toolEntries.slice(5).reduce((sum, [, count]) => sum + count, 0);
|
|
161
|
+
const toolDetails = visibleTools.length > 0
|
|
162
|
+
? ` (${[
|
|
163
|
+
...visibleTools.map(([name, count]) => `${name} ${count}`),
|
|
164
|
+
...(hiddenTools ? [`other ${hiddenTools}`] : []),
|
|
165
|
+
].join(" · ")})`
|
|
166
|
+
: "";
|
|
167
|
+
const cost = snapshot.providerCostUsd === null
|
|
168
|
+
? "unavailable for subscription"
|
|
169
|
+
: `$${snapshot.providerCostUsd.toFixed(2)} provider estimate`;
|
|
170
|
+
return [
|
|
171
|
+
"◆ **CCodex** │ /ccstate",
|
|
172
|
+
"",
|
|
173
|
+
header(snapshot),
|
|
174
|
+
...tree([
|
|
175
|
+
`context ▸ ${contextBar}`,
|
|
176
|
+
`tokens ▸ ${total
|
|
177
|
+
? `${compactNumber(total.totalTokens)} processed (${compactNumber(total.inputTokens)} in / ${compactNumber(total.outputTokens)} out)`
|
|
178
|
+
: "unavailable"}`,
|
|
179
|
+
`cache ▸ ${cacheRate}`,
|
|
180
|
+
]),
|
|
181
|
+
"",
|
|
182
|
+
"💬 **Chat**",
|
|
183
|
+
...tree([
|
|
184
|
+
`messages ▸ ${userMessages} user / ${assistantMessages} assistant / ${userMessages + assistantMessages} total`,
|
|
185
|
+
`compacts ▸ ${compacts.length}${lastCompact ? ` (last: ${relative(lastCompact, nowMs)})` : ""}`,
|
|
186
|
+
`session ▸ started ${elapsed(nowMs - snapshot.thread.createdAt * 1_000)} ago`,
|
|
187
|
+
]),
|
|
188
|
+
"",
|
|
189
|
+
"⚙️ **Session**",
|
|
190
|
+
...tree([
|
|
191
|
+
`mode ▸ ${mode(snapshot)}`,
|
|
192
|
+
`agent ▸ ${elapsed(runTimeMs)} cumulative turn time`,
|
|
193
|
+
`tools ▸ ${toolTotal} calls${toolDetails}`,
|
|
194
|
+
`cost ▸ ${cost}`,
|
|
195
|
+
]),
|
|
196
|
+
].join("\n");
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=stateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateCommand.js","sourceRoot":"","sources":["../../src/state/stateCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Thread } from "../codex/generated/v2/Thread.js";
|
|
2
|
+
import { type RpcMessage } from "../protocol/envelopes.js";
|
|
3
|
+
import { type ThreadStateSnapshot } from "./stateCommand.js";
|
|
4
|
+
export declare class StockStateTracker {
|
|
5
|
+
private readonly pending;
|
|
6
|
+
private readonly settings;
|
|
7
|
+
private readonly usage;
|
|
8
|
+
observeRequest(connectionId: string, message: RpcMessage): void;
|
|
9
|
+
observeResponse(connectionId: string, message: RpcMessage): void;
|
|
10
|
+
observeNotification(message: RpcMessage): void;
|
|
11
|
+
snapshot(thread: Thread): ThreadStateSnapshot;
|
|
12
|
+
detach(connectionId: string): void;
|
|
13
|
+
private merge;
|
|
14
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { isRequest, isResponse, } from "../protocol/envelopes.js";
|
|
2
|
+
import { stateModelName } from "./stateCommand.js";
|
|
3
|
+
function key(connectionId, id) {
|
|
4
|
+
return `${connectionId}:${typeof id}:${id}`;
|
|
5
|
+
}
|
|
6
|
+
function settingsFrom(value) {
|
|
7
|
+
const collaboration = value.collaborationMode && typeof value.collaborationMode === "object"
|
|
8
|
+
? value.collaborationMode.settings
|
|
9
|
+
: undefined;
|
|
10
|
+
const model = typeof value.model === "string"
|
|
11
|
+
? value.model
|
|
12
|
+
: typeof collaboration?.model === "string" ? collaboration.model : undefined;
|
|
13
|
+
const effort = typeof value.effort === "string"
|
|
14
|
+
? value.effort
|
|
15
|
+
: typeof value.reasoningEffort === "string"
|
|
16
|
+
? value.reasoningEffort
|
|
17
|
+
: typeof collaboration?.reasoning_effort === "string" ? collaboration.reasoning_effort : undefined;
|
|
18
|
+
return {
|
|
19
|
+
...(model ? { model } : {}),
|
|
20
|
+
...("serviceTier" in value && (typeof value.serviceTier === "string" || value.serviceTier === null)
|
|
21
|
+
? { serviceTier: value.serviceTier } : {}),
|
|
22
|
+
...(effort ? { effort: effort } : {}),
|
|
23
|
+
...(value.approvalPolicy ? { approvalPolicy: value.approvalPolicy } : {}),
|
|
24
|
+
...(value.approvalsReviewer
|
|
25
|
+
? { approvalsReviewer: value.approvalsReviewer } : {}),
|
|
26
|
+
...(value.sandboxPolicy
|
|
27
|
+
? { sandboxPolicy: value.sandboxPolicy }
|
|
28
|
+
: value.sandbox ? { sandboxPolicy: value.sandbox } : {}),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export class StockStateTracker {
|
|
32
|
+
pending = new Map();
|
|
33
|
+
settings = new Map();
|
|
34
|
+
usage = new Map();
|
|
35
|
+
observeRequest(connectionId, message) {
|
|
36
|
+
if (!isRequest(message))
|
|
37
|
+
return;
|
|
38
|
+
const params = message.params && typeof message.params === "object"
|
|
39
|
+
? message.params
|
|
40
|
+
: {};
|
|
41
|
+
if (["thread/start", "thread/resume", "thread/fork", "thread/settings/update", "turn/start"]
|
|
42
|
+
.includes(message.method)) {
|
|
43
|
+
this.pending.set(key(connectionId, message.id), { method: message.method, params });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
observeResponse(connectionId, message) {
|
|
47
|
+
if (!isResponse(message))
|
|
48
|
+
return;
|
|
49
|
+
const pending = this.pending.get(key(connectionId, message.id));
|
|
50
|
+
if (!pending)
|
|
51
|
+
return;
|
|
52
|
+
this.pending.delete(key(connectionId, message.id));
|
|
53
|
+
if ("error" in message)
|
|
54
|
+
return;
|
|
55
|
+
const result = message.result && typeof message.result === "object"
|
|
56
|
+
? message.result
|
|
57
|
+
: {};
|
|
58
|
+
const thread = result.thread && typeof result.thread === "object"
|
|
59
|
+
? result.thread
|
|
60
|
+
: undefined;
|
|
61
|
+
const threadId = thread?.id
|
|
62
|
+
?? (typeof pending.params.threadId === "string" ? pending.params.threadId : undefined);
|
|
63
|
+
if (!threadId)
|
|
64
|
+
return;
|
|
65
|
+
if (["thread/start", "thread/resume", "thread/fork"].includes(pending.method)) {
|
|
66
|
+
this.merge(threadId, settingsFrom(result));
|
|
67
|
+
}
|
|
68
|
+
else if (pending.method === "thread/settings/update") {
|
|
69
|
+
this.merge(threadId, settingsFrom(pending.params));
|
|
70
|
+
}
|
|
71
|
+
else if (pending.method === "turn/start") {
|
|
72
|
+
this.merge(threadId, settingsFrom(pending.params));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
observeNotification(message) {
|
|
76
|
+
if (!("method" in message) || "id" in message)
|
|
77
|
+
return;
|
|
78
|
+
const params = message.params && typeof message.params === "object"
|
|
79
|
+
? message.params
|
|
80
|
+
: {};
|
|
81
|
+
const threadId = typeof params.threadId === "string" ? params.threadId : undefined;
|
|
82
|
+
if (message.method === "thread/settings/updated" && threadId
|
|
83
|
+
&& params.threadSettings && typeof params.threadSettings === "object") {
|
|
84
|
+
this.merge(threadId, settingsFrom(params.threadSettings));
|
|
85
|
+
}
|
|
86
|
+
else if (message.method === "thread/tokenUsage/updated" && threadId
|
|
87
|
+
&& params.tokenUsage && typeof params.tokenUsage === "object") {
|
|
88
|
+
this.usage.set(threadId, params.tokenUsage);
|
|
89
|
+
}
|
|
90
|
+
else if (message.method === "thread/deleted" && threadId) {
|
|
91
|
+
this.settings.delete(threadId);
|
|
92
|
+
this.usage.delete(threadId);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
snapshot(thread) {
|
|
96
|
+
const settings = this.settings.get(thread.id);
|
|
97
|
+
return {
|
|
98
|
+
provider: "codex",
|
|
99
|
+
model: stateModelName("codex", settings?.model ?? "unknown"),
|
|
100
|
+
effort: settings?.effort ?? null,
|
|
101
|
+
serviceTier: settings?.serviceTier ?? null,
|
|
102
|
+
approvalPolicy: settings?.approvalPolicy ?? null,
|
|
103
|
+
approvalsReviewer: settings?.approvalsReviewer ?? null,
|
|
104
|
+
sandboxPolicy: settings?.sandboxPolicy ?? null,
|
|
105
|
+
thread,
|
|
106
|
+
tokenUsage: this.usage.get(thread.id) ?? null,
|
|
107
|
+
providerCostUsd: null,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
detach(connectionId) {
|
|
111
|
+
for (const pendingKey of this.pending.keys()) {
|
|
112
|
+
if (pendingKey.startsWith(`${connectionId}:`))
|
|
113
|
+
this.pending.delete(pendingKey);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
merge(threadId, update) {
|
|
117
|
+
this.settings.set(threadId, { ...this.settings.get(threadId), ...update });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=stockStateTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stockStateTracker.js","sourceRoot":"","sources":["../../src/state/stockStateTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,23 @@ import type { Turn } from "../codex/generated/v2/Turn.js";
|
|
|
4
4
|
import type { ThreadGoal } from "../codex/generated/v2/ThreadGoal.js";
|
|
5
5
|
import type { TokenUsageBreakdown } from "../codex/generated/v2/TokenUsageBreakdown.js";
|
|
6
6
|
import type { ApprovalsReviewer } from "../codex/generated/v2/ApprovalsReviewer.js";
|
|
7
|
+
export interface InternalGoal extends ThreadGoal {
|
|
8
|
+
readonly goalId: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GoalPatch {
|
|
11
|
+
readonly objective?: string;
|
|
12
|
+
readonly status?: ThreadGoal["status"];
|
|
13
|
+
readonly tokenBudget?: number | null;
|
|
14
|
+
readonly replace?: boolean;
|
|
15
|
+
readonly now?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface GoalUsageInput {
|
|
18
|
+
readonly threadId: string;
|
|
19
|
+
readonly expectedGoalId: string;
|
|
20
|
+
readonly tokenDelta: number;
|
|
21
|
+
readonly timeDeltaSeconds: number;
|
|
22
|
+
readonly checkpointKey?: string;
|
|
23
|
+
}
|
|
7
24
|
export interface ClaudeThreadRecord {
|
|
8
25
|
readonly thread: Thread;
|
|
9
26
|
readonly claudeSessionId: string;
|
|
@@ -25,7 +42,13 @@ export interface ClaudeThreadRecord {
|
|
|
25
42
|
readonly collaborationMode: unknown | null;
|
|
26
43
|
readonly outputSchema: unknown | null;
|
|
27
44
|
readonly tokenUsageTotal: TokenUsageBreakdown;
|
|
45
|
+
readonly tokenUsageLast: TokenUsageBreakdown | null;
|
|
46
|
+
readonly modelContextWindow: number | null;
|
|
47
|
+
readonly providerCostUsdTotal?: number;
|
|
48
|
+
readonly settingsGeneration?: number;
|
|
28
49
|
}
|
|
50
|
+
export declare function settingsGeneration(record: ClaudeThreadRecord): number;
|
|
51
|
+
export declare function withSettingsFrom(base: ClaudeThreadRecord, settings: ClaudeThreadRecord): ClaudeThreadRecord;
|
|
29
52
|
export interface PendingRequestRecord {
|
|
30
53
|
readonly requestId: string;
|
|
31
54
|
readonly threadId: string;
|
|
@@ -44,6 +67,76 @@ export interface EventPersistence {
|
|
|
44
67
|
readonly providerEventId?: string | null;
|
|
45
68
|
readonly dedupKey?: string | null;
|
|
46
69
|
}
|
|
70
|
+
export interface StateEvent {
|
|
71
|
+
readonly turnId: string | null;
|
|
72
|
+
readonly method: string;
|
|
73
|
+
readonly params: unknown;
|
|
74
|
+
readonly providerEventType?: string | null;
|
|
75
|
+
readonly providerEventId?: string | null;
|
|
76
|
+
}
|
|
77
|
+
export interface ThreadStateCommit {
|
|
78
|
+
readonly record: ClaudeThreadRecord;
|
|
79
|
+
readonly turn?: Turn;
|
|
80
|
+
readonly insertTurn?: boolean;
|
|
81
|
+
readonly providerBoundary?: ProviderBoundaryCommit;
|
|
82
|
+
readonly events: readonly StateEvent[];
|
|
83
|
+
}
|
|
84
|
+
export interface TurnProviderBoundary {
|
|
85
|
+
readonly turnId: string;
|
|
86
|
+
readonly messageUuid: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ProviderBoundaryCommit extends TurnProviderBoundary {
|
|
89
|
+
readonly ownerThreadId: string;
|
|
90
|
+
readonly itemIds?: readonly string[];
|
|
91
|
+
}
|
|
92
|
+
export interface PendingThreadRemoval {
|
|
93
|
+
readonly rootThreadId: string;
|
|
94
|
+
readonly claudeSessionId: string;
|
|
95
|
+
readonly cwd: string;
|
|
96
|
+
readonly kind: "delete" | "release" | "discard";
|
|
97
|
+
}
|
|
98
|
+
export interface StoredEvent {
|
|
99
|
+
readonly sequence: number;
|
|
100
|
+
readonly threadId: string;
|
|
101
|
+
readonly turnId: string | null;
|
|
102
|
+
readonly method: string;
|
|
103
|
+
readonly params: unknown;
|
|
104
|
+
readonly createdAt: number;
|
|
105
|
+
}
|
|
106
|
+
export type ProviderEventDisposition = "pending" | "projected" | "stateOnly" | "retainedOnly" | "abandoned" | "unsupportedVisible" | "failed";
|
|
107
|
+
export interface ProviderEventRecord {
|
|
108
|
+
readonly sequence: number;
|
|
109
|
+
readonly threadId: string;
|
|
110
|
+
readonly processEpoch: string;
|
|
111
|
+
readonly providerSequence: number;
|
|
112
|
+
readonly providerEventType: string;
|
|
113
|
+
readonly providerEventId: string | null;
|
|
114
|
+
readonly payload: unknown;
|
|
115
|
+
readonly disposition: ProviderEventDisposition;
|
|
116
|
+
readonly error: string | null;
|
|
117
|
+
readonly createdAt: number;
|
|
118
|
+
readonly projectedAt: number | null;
|
|
119
|
+
}
|
|
120
|
+
export interface ProviderItemCorrelation {
|
|
121
|
+
readonly providerMessageId: string;
|
|
122
|
+
readonly ownerThreadId: string;
|
|
123
|
+
readonly turnId: string;
|
|
124
|
+
readonly itemId: string;
|
|
125
|
+
}
|
|
126
|
+
export interface ProviderRetractionMutation {
|
|
127
|
+
readonly ownerThreadId: string;
|
|
128
|
+
readonly turn: Turn;
|
|
129
|
+
readonly clearBoundary: boolean;
|
|
130
|
+
}
|
|
131
|
+
export interface AppendProviderEvent {
|
|
132
|
+
readonly threadId: string;
|
|
133
|
+
readonly processEpoch: string;
|
|
134
|
+
readonly providerSequence: number;
|
|
135
|
+
readonly providerEventType: string;
|
|
136
|
+
readonly providerEventId: string | null;
|
|
137
|
+
readonly payload: unknown;
|
|
138
|
+
readonly createdAt: number;
|
|
139
|
+
}
|
|
47
140
|
export interface HybridStore {
|
|
48
141
|
createThread(record: ClaudeThreadRecord): void;
|
|
49
142
|
hasThread(threadId: string): boolean;
|
|
@@ -51,7 +144,13 @@ export interface HybridStore {
|
|
|
51
144
|
allThreadRecords(): ClaudeThreadRecord[];
|
|
52
145
|
listThreads(params: ThreadListParams): Thread[];
|
|
53
146
|
updateThread(record: ClaudeThreadRecord): void;
|
|
147
|
+
isThreadArchived(threadId: string): boolean;
|
|
54
148
|
setThreadArchived(threadId: string, archived: boolean): void;
|
|
149
|
+
commitThreadsArchived(threadIds: readonly string[], archived: boolean): void;
|
|
150
|
+
beginThreadRemoval(removal: PendingThreadRemoval): void;
|
|
151
|
+
cancelThreadRemoval(rootThreadId: string): void;
|
|
152
|
+
listPendingThreadRemovals(): PendingThreadRemoval[];
|
|
153
|
+
commitThreadRemoval(rootThreadId: string, threadIds: readonly string[]): void;
|
|
55
154
|
deleteThread(threadId: string): void;
|
|
56
155
|
createTurn(threadId: string, turn: Turn): void;
|
|
57
156
|
updateTurn(threadId: string, turn: Turn): void;
|
|
@@ -60,16 +159,33 @@ export interface HybridStore {
|
|
|
60
159
|
setTurnClaudeMessageUuid(threadId: string, turnId: string, messageUuid: string): void;
|
|
61
160
|
getTurnClaudeMessageUuid(threadId: string, turnId: string): string | undefined;
|
|
62
161
|
truncateTurns(threadId: string, keepCount: number): void;
|
|
162
|
+
commitForkedThread(record: ClaudeThreadRecord, turns: readonly Turn[], boundaries: readonly TurnProviderBoundary[]): void;
|
|
163
|
+
commitThreadRollback(record: ClaudeThreadRecord, keepCount: number, boundaries: readonly TurnProviderBoundary[], removedThreadIds?: readonly string[]): void;
|
|
164
|
+
commitThreadState(commit: ThreadStateCommit): number[];
|
|
63
165
|
appendEvent(threadId: string, turnId: string | null, method: string, params: unknown, persistence?: EventPersistence): number;
|
|
166
|
+
eventHighWatermark(threadId: string): number;
|
|
167
|
+
listEventsAfter(threadId: string, sequence: number): StoredEvent[];
|
|
64
168
|
hasProcessedProviderEvent(threadId: string, providerEventId: string): boolean;
|
|
65
169
|
markProviderEventProcessed(threadId: string, providerEventType: string, providerEventId: string): void;
|
|
170
|
+
appendProviderEvent(event: AppendProviderEvent): {
|
|
171
|
+
record: ProviderEventRecord;
|
|
172
|
+
inserted: boolean;
|
|
173
|
+
};
|
|
174
|
+
completeProviderEvent(threadId: string, sequence: number, disposition: Exclude<ProviderEventDisposition, "pending">, error?: string | null): void;
|
|
175
|
+
listProviderEvents(threadId: string, disposition?: ProviderEventDisposition): ProviderEventRecord[];
|
|
176
|
+
pruneProviderEvents(threadId: string, maxEvents: number, maxBytes: number): number;
|
|
177
|
+
linkProviderItems(threadId: string, providerMessageId: string, ownerThreadId: string, turnId: string, itemIds: readonly string[]): void;
|
|
178
|
+
listProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): ProviderItemCorrelation[];
|
|
179
|
+
deleteProviderItemCorrelations(threadId: string, providerMessageIds: readonly string[]): void;
|
|
180
|
+
commitProviderRetraction(record: ClaudeThreadRecord, providerMessageIds: readonly string[], mutations: readonly ProviderRetractionMutation[], removedThreadIds?: readonly string[]): void;
|
|
66
181
|
createPendingRequest(request: PendingRequestRecord): void;
|
|
67
182
|
getPendingRequest(requestId: string): PendingRequestRecord | undefined;
|
|
68
183
|
findPendingRequestByClaudeId(threadId: string, claudeRequestId: string): PendingRequestRecord | undefined;
|
|
69
184
|
listPendingRequests(threadId: string): PendingRequestRecord[];
|
|
70
185
|
resolvePendingRequest(requestId: string, status: "resolved" | "cancelled", response: unknown): void;
|
|
71
|
-
getGoal(threadId: string):
|
|
72
|
-
setGoal(
|
|
186
|
+
getGoal(threadId: string): InternalGoal | undefined;
|
|
187
|
+
setGoal(threadId: string, patch: GoalPatch): InternalGoal;
|
|
73
188
|
clearGoal(threadId: string): boolean;
|
|
189
|
+
accountGoalUsage(input: GoalUsageInput): InternalGoal | undefined;
|
|
74
190
|
close(): void;
|
|
75
191
|
}
|
|
@@ -1,2 +1,24 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export function settingsGeneration(record) {
|
|
2
|
+
return record.settingsGeneration ?? 0;
|
|
3
|
+
}
|
|
4
|
+
export function withSettingsFrom(base, settings) {
|
|
5
|
+
return {
|
|
6
|
+
...base,
|
|
7
|
+
thread: { ...base.thread, cwd: settings.thread.cwd },
|
|
8
|
+
modelPickerId: settings.modelPickerId,
|
|
9
|
+
claudeModelValue: settings.claudeModelValue,
|
|
10
|
+
serviceTier: settings.serviceTier,
|
|
11
|
+
approvalPolicy: settings.approvalPolicy,
|
|
12
|
+
approvalsReviewer: settings.approvalsReviewer,
|
|
13
|
+
sandboxPolicy: settings.sandboxPolicy,
|
|
14
|
+
baseInstructions: settings.baseInstructions,
|
|
15
|
+
developerInstructions: settings.developerInstructions,
|
|
16
|
+
personality: settings.personality,
|
|
17
|
+
reasoningEffort: settings.reasoningEffort,
|
|
18
|
+
reasoningSummary: settings.reasoningSummary,
|
|
19
|
+
collaborationMode: settings.collaborationMode,
|
|
20
|
+
outputSchema: settings.outputSchema,
|
|
21
|
+
settingsGeneration: settingsGeneration(settings),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
2
24
|
//# sourceMappingURL=HybridStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridStore.js","sourceRoot":"","sources":["../../src/store/HybridStore.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"HybridStore.js","sourceRoot":"","sources":["../../src/store/HybridStore.ts"],"names":[],"mappings":"AAsDA,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAwB,EACxB,QAA4B;IAE5B,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE;QACpD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,kBAAkB,EAAE,kBAAkB,CAAC,QAAQ,CAAC;KACjD,CAAC;AACJ,CAAC"}
|