rivetplane 0.4.2 → 0.6.0

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.
Files changed (44) hide show
  1. package/README.md +18 -1
  2. package/dist/acp-attach.js +26 -4
  3. package/dist/acp-attach.js.map +1 -1
  4. package/dist/claude-code-discovery.js +123 -7
  5. package/dist/claude-code-discovery.js.map +1 -1
  6. package/dist/cli.js +48 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/client.js +92 -13
  9. package/dist/client.js.map +1 -1
  10. package/dist/codex-app-server.js +153 -8
  11. package/dist/codex-app-server.js.map +1 -1
  12. package/dist/codex-rollout-discovery.js +121 -7
  13. package/dist/codex-rollout-discovery.js.map +1 -1
  14. package/dist/hook-bridge-install.js +133 -0
  15. package/dist/hook-bridge-install.js.map +1 -0
  16. package/dist/hook-bridge.js +79 -0
  17. package/dist/hook-bridge.js.map +1 -0
  18. package/dist/hook-discovery.js +115 -0
  19. package/dist/hook-discovery.js.map +1 -0
  20. package/dist/hook-ingestion.js +507 -0
  21. package/dist/hook-ingestion.js.map +1 -0
  22. package/dist/hook-install.js +348 -0
  23. package/dist/hook-install.js.map +1 -0
  24. package/dist/index.js +4 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/launch-command.js +51 -0
  27. package/dist/launch-command.js.map +1 -0
  28. package/dist/local-api.js +44 -3
  29. package/dist/local-api.js.map +1 -1
  30. package/dist/opencode-export-discovery.js +16 -4
  31. package/dist/opencode-export-discovery.js.map +1 -1
  32. package/dist/opencode-manager.js +126 -7
  33. package/dist/opencode-manager.js.map +1 -1
  34. package/dist/pending-normalization.js +29 -0
  35. package/dist/pending-normalization.js.map +1 -0
  36. package/dist/registry.js +6 -2
  37. package/dist/registry.js.map +1 -1
  38. package/dist/relay.js +184 -14
  39. package/dist/relay.js.map +1 -1
  40. package/dist/session-manager.js +3 -1
  41. package/dist/session-manager.js.map +1 -1
  42. package/dist/usage.js +131 -0
  43. package/dist/usage.js.map +1 -0
  44. package/package.json +1 -1
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -8,6 +8,8 @@ import { OpenCodeExportDiscovery } from "./opencode-export-discovery.js";
8
8
  import { CodexRolloutDiscovery } from "./codex-rollout-discovery.js";
9
9
  import { CodexAppServerManager } from "./codex-app-server.js";
10
10
  import { ClaudeCodeDiscovery } from "./claude-code-discovery.js";
11
+ import { HookIngestor } from "./hook-ingestion.js";
12
+ import { UsageCollector } from "./usage.js";
11
13
  export class HarnessControlClient {
12
14
  options;
13
15
  manager;
@@ -18,15 +20,22 @@ export class HarnessControlClient {
18
20
  codex_rollouts;
19
21
  codex_app_server;
20
22
  claude_code;
23
+ hooks;
24
+ usage;
21
25
  constructor(options = {}) {
22
26
  this.options = options;
23
27
  const machineId = options.credentials?.machine_id ?? `local-${randomUUID()}`;
24
- this.manager = new SessionManager(machineId, { ...(options.discovery_directory ? { directory: options.discovery_directory } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}) });
28
+ this.usage = new UsageCollector(machineId, { ...(options.usage_checkpoint_path ? { checkpoint_path: options.usage_checkpoint_path } : {}) });
29
+ this.manager = new SessionManager(machineId, { usage: this.usage, ...(options.discovery_directory ? { directory: options.discovery_directory } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}) });
30
+ this.hooks = new HookIngestor(machineId, this.manager.registry);
31
+ this.hooks.setUsage(this.usage);
25
32
  if (typeof options.opencode_url === "string" || options.opencode_managed)
26
- this.opencode = new OpenCodeManager(machineId, this.manager.registry, { ...(typeof options.opencode_url === "string" ? { url: options.opencode_url } : {}), ...(options.opencode_directory ? { directory: options.opencode_directory } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}) });
33
+ this.opencode = new OpenCodeManager(machineId, this.manager.registry, { usage: this.usage, ...(typeof options.opencode_url === "string" ? { url: options.opencode_url } : {}), ...(options.opencode_directory ? { directory: options.opencode_directory } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}) });
34
+ this.hooks.setAuthoritativeTarget((harness, id) => harness === "opencode" && Boolean(this.opencode?.target(id)) || harness === "codex" && Boolean(this.codex_app_server?.target(id)));
27
35
  const exportEnabled = options.opencode_export ?? (!options.opencode_managed && typeof options.opencode_url !== "string");
28
36
  if (options.opencode_url !== false && exportEnabled)
29
37
  this.opencode_exports = new OpenCodeExportDiscovery(machineId, this.manager.registry, {
38
+ usage: this.usage,
30
39
  ...(options.opencode_directory ? { directory: options.opencode_directory } : {}), ...(options.opencode_executable ? { executable: options.opencode_executable } : {}),
31
40
  ...(options.opencode_checkpoint_path ? { checkpoint_path: options.opencode_checkpoint_path } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}),
32
41
  ...(options.opencode_max_sessions_per_project ? { max_sessions_per_project: options.opencode_max_sessions_per_project } : {}),
@@ -41,17 +50,33 @@ export class HarnessControlClient {
41
50
  });
42
51
  if (options.codex_managed || options.codex_endpoint)
43
52
  this.codex_app_server = new CodexAppServerManager(machineId, this.manager.registry, {
53
+ usage: this.usage,
44
54
  managed: options.codex_managed ?? false, ...(options.codex_endpoint ? { endpoint: options.codex_endpoint } : {}), ...(options.codex_token ? { token: options.codex_token } : {}),
45
- ...(options.codex_directory ? { directory: options.codex_directory } : {}), ...(options.codex_executable ? { executable: options.codex_executable } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}),
55
+ ...(options.codex_directory ? { directory: options.codex_directory } : {}), ...(options.codex_executable ? { executable: options.codex_executable } : {}),
56
+ ...(options.codex_socket_path ? { socket_path: options.codex_socket_path } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}),
46
57
  });
47
58
  if (options.claude_code !== false)
48
59
  this.claude_code = new ClaudeCodeDiscovery(machineId, this.manager.registry, {
60
+ usage: this.usage,
49
61
  ...(options.claude_executable ? { executable: options.claude_executable } : {}), ...(options.claude_config_dir ? { config_dir: options.claude_config_dir } : {}),
50
62
  ...(options.claude_checkpoint_path ? { checkpoint_path: options.claude_checkpoint_path } : {}), ...(options.discovery_interval_ms ? { interval_ms: options.discovery_interval_ms } : {}),
51
63
  });
52
- const target = (id) => this.manager.target(id) ?? this.opencode?.target(id) ?? this.codex_app_server?.target(id) ?? this.opencode_exports?.target(id) ?? this.codex_rollouts?.target(id) ?? this.claude_code?.target(id);
64
+ // A standalone TUI and the auto-started OpenCode serve adapter can expose
65
+ // the same database-backed session. Only the live hook owns that TUI's
66
+ // exact question Deferred, so prefer it over the compatibility adapter.
67
+ // Managed OpenCode remains authoritative because it suppresses duplicate
68
+ // hook targets via setAuthoritativeTarget above.
69
+ const target = (id) => selectCommandTarget(id, [
70
+ (value) => this.manager.target(value),
71
+ (value) => this.codex_app_server?.target(value),
72
+ (value) => this.hooks.target(value),
73
+ (value) => this.opencode?.target(value),
74
+ (value) => this.opencode_exports?.target(value),
75
+ (value) => this.codex_rollouts?.target(value),
76
+ (value) => this.claude_code?.target(value),
77
+ ]);
53
78
  this.local_api = new LocalApi(this.manager.registry, { port: options.local_port ?? 41737, target,
54
- harnesses: () => this.harnesses(), discovery_directory: this.manager.discovery.directory });
79
+ harnesses: () => this.harnesses(), discovery_directory: this.manager.discovery.directory, hooks: this.hooks, ...(options.hook_discovery_path ? { hook_discovery_path: options.hook_discovery_path } : {}) });
55
80
  if (options.credentials && options.relay !== false)
56
81
  this.relay = new OutboundRelay(options.credentials, this.manager.registry, target, {
57
82
  createSession: async (command) => {
@@ -61,20 +86,74 @@ export class HarnessControlClient {
61
86
  return this.codex_app_server.createSession(command);
62
87
  throw new Error("Harness cannot create sessions");
63
88
  },
64
- capabilities: () => [this.opencode?.capabilities() ?? this.opencode_exports?.capabilities(), this.codex_app_server?.capabilities() ?? this.codex_rollouts?.capabilities(), this.claude_code?.capabilities()].filter((value) => Boolean(value)),
89
+ capabilities: () => this.capabilityReports(),
90
+ usage: this.usage,
65
91
  });
92
+ this.relay?.on("warning", (error) => this.manager.registry.emit("warning", error));
66
93
  this.manager.registry.on("warning", (error) => this.manager.registry.emit("log", `Warning: ${error instanceof Error ? error.message : String(error)}`));
67
94
  }
68
- async start() { const local_port = await this.local_api.start(); await Promise.all([this.manager.start(), this.opencode?.start(), this.opencode_exports?.start(), this.claude_code?.start(), this.codex_rollouts?.start(), this.codex_app_server?.start()]); this.relay?.start(); return { local_port }; }
69
- async stop() { this.relay?.stop(); this.opencode?.stop(); this.opencode_exports?.stop(); this.claude_code?.stop(); this.codex_rollouts?.stop(); await this.codex_app_server?.stop(); this.manager.stop(); await this.local_api.stop(); }
95
+ async start() { await this.usage.start(); const local_port = await this.local_api.start(); await Promise.all([this.manager.start(), this.opencode?.start(), this.opencode_exports?.start(), this.claude_code?.start(), this.codex_rollouts?.start(), this.codex_app_server?.start()]); this.relay?.start(); return { local_port }; }
96
+ async stop() { this.relay?.stop(); this.opencode?.stop(); this.opencode_exports?.stop(); this.claude_code?.stop(); this.codex_rollouts?.stop(); await this.codex_app_server?.stop(); this.manager.stop(); await this.local_api.stop(); await this.usage.flush(); }
97
+ capabilityReports() {
98
+ return preferCapabilities([
99
+ this.opencode?.capabilities(), this.codex_app_server?.capabilities(), ...this.hooks.capabilities(),
100
+ this.opencode_exports?.capabilities(), this.codex_rollouts?.capabilities(), this.claude_code?.capabilities(),
101
+ ].filter((value) => Boolean(value)));
102
+ }
70
103
  harnesses() {
71
- const result = new Map();
72
- for (const item of [...this.manager.harnesses(), ...(this.opencode?.harnesses() ?? []), ...(this.opencode_exports?.harnesses() ?? []), ...(this.claude_code?.harnesses() ?? []), ...(this.codex_rollouts?.harnesses() ?? []), ...(this.codex_app_server?.harnesses() ?? [])]) {
73
- const prior = result.get(item.harness_type);
74
- result.set(item.harness_type, prior ? { ...prior, ...item, discovered_sessions: prior.discovered_sessions + item.discovered_sessions, attached_sessions: prior.attached_sessions + item.attached_sessions } : item);
104
+ return aggregateHarnessStatuses([...this.manager.harnesses(), ...(this.opencode?.harnesses() ?? []), ...(this.opencode_exports?.harnesses() ?? []), ...(this.claude_code?.harnesses() ?? []), ...(this.codex_rollouts?.harnesses() ?? []), ...(this.codex_app_server?.harnesses() ?? []), ...this.hooks.harnesses()]);
105
+ }
106
+ }
107
+ export function selectCommandTarget(id, sources) {
108
+ for (const source of sources) {
109
+ const target = source(id);
110
+ if (target)
111
+ return target;
112
+ }
113
+ return undefined;
114
+ }
115
+ function capabilityRank(item) {
116
+ const capabilities = item.capabilities;
117
+ if (!capabilities)
118
+ return 0;
119
+ if (capabilities.live_attachment?.supported)
120
+ return 3;
121
+ if (capabilities.discovery.mode === "read_write")
122
+ return 2;
123
+ return 1;
124
+ }
125
+ export function aggregateHarnessStatuses(items) {
126
+ const result = new Map();
127
+ for (const item of items) {
128
+ let aggregate = result.get(item.harness_type);
129
+ if (!aggregate) {
130
+ aggregate = { status: { harness_type: item.harness_type, discovered_sessions: 0, attached_sessions: 0 }, discovered_ids: new Set(), attached_ids: new Set(), anonymous_discovered: 0, anonymous_attached: 0, capability_rank: -1 };
131
+ result.set(item.harness_type, aggregate);
132
+ }
133
+ if (item.discovered_session_ids)
134
+ for (const id of item.discovered_session_ids)
135
+ aggregate.discovered_ids.add(id);
136
+ else
137
+ aggregate.anonymous_discovered += item.discovered_sessions;
138
+ if (item.attached_session_ids)
139
+ for (const id of item.attached_session_ids)
140
+ aggregate.attached_ids.add(id);
141
+ else
142
+ aggregate.anonymous_attached += item.attached_sessions;
143
+ const rank = capabilityRank(item);
144
+ if (rank > aggregate.capability_rank) {
145
+ aggregate.capability_rank = rank;
146
+ aggregate.status = { harness_type: item.harness_type, discovered_sessions: 0, attached_sessions: 0, ...(item.version ? { version: item.version } : {}), ...(item.capabilities ? { capabilities: item.capabilities } : {}) };
75
147
  }
76
- return [...result.values()];
77
148
  }
149
+ return [...result.values()].map((aggregate) => ({ ...aggregate.status, discovered_sessions: aggregate.discovered_ids.size + aggregate.anonymous_discovered, attached_sessions: aggregate.attached_ids.size + aggregate.anonymous_attached }));
150
+ }
151
+ export function preferCapabilities(reports) {
152
+ const selected = new Map();
153
+ for (const report of reports)
154
+ if (!selected.has(report.harness_type))
155
+ selected.set(report.harness_type, report);
156
+ return [...selected.values()].map((report) => structuredClone(report));
78
157
  }
79
158
  export function localCredentials(server_url) {
80
159
  const machine_id = `local-${randomUUID()}`;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,81 @@ import { homedir } from "node:os";
5
5
  import { dirname, join } from "node:path";
6
6
  import { spawn } from "node:child_process";
7
7
  import WebSocket from "ws";
8
+ import { normalizeApprovalInput } from "./pending-normalization.js";
8
9
  import { SessionRegistry } from "./registry.js";
10
+ export function codexThreadUsage(params, model) {
11
+ const threadId = string(params.threadId);
12
+ const turnId = string(params.turnId);
13
+ const usage = object(params.tokenUsage);
14
+ const total = object(usage?.total);
15
+ if (!threadId || !usage || !total)
16
+ return undefined;
17
+ const input = number(total.inputTokens);
18
+ const output = number(total.outputTokens);
19
+ const reasoning = number(total.reasoningOutputTokens);
20
+ const cache = number(total.cachedInputTokens);
21
+ const cacheWrite = number(total.cacheWriteInputTokens);
22
+ const all = number(total.totalTokens);
23
+ const window = number(usage.modelContextWindow);
24
+ return {
25
+ session_id: threadId, ...(turnId ? { turn_id: turnId } : {}), harness: "codex", provider: "openai", ...(model ? { model } : {}),
26
+ source: "codex-app-server:thread/tokenUsage/updated", source_counter_mode: "cumulative", counter_key: `codex:thread:${threadId}`,
27
+ tokens: { input, output, reasoning, cache_read: cache, cache_write: cacheWrite, total: all },
28
+ ...(window !== undefined ? { context: { window_size: window, ...(all !== undefined ? { used_tokens: all } : {}) } } : {}), cost: { status: "unavailable" },
29
+ };
30
+ }
31
+ export function codexRateLimits(value) {
32
+ const roots = [];
33
+ const legacy = object(value.rateLimits) ?? value;
34
+ roots.push({ prefix: string(legacy.limitName) ?? string(legacy.limitId) ?? "", value: legacy });
35
+ const byId = object(value.rateLimitsByLimitId);
36
+ if (byId)
37
+ for (const [id, item] of Object.entries(byId)) {
38
+ const parsed = object(item);
39
+ if (parsed && parsed !== legacy)
40
+ roots.push({ prefix: string(parsed.limitName) ?? id, value: parsed });
41
+ }
42
+ const result = [];
43
+ for (const root of roots) {
44
+ for (const name of ["primary", "secondary"]) {
45
+ const item = object(root.value[name]);
46
+ if (!item)
47
+ continue;
48
+ const used = number(item.usedPercent);
49
+ const reset = number(item.resetsAt);
50
+ result.push({ name: root.prefix ? `${root.prefix}:${name}` : name, ...(used !== undefined ? { used_percent: used } : {}), ...(reset !== undefined ? { resets_at: new Date(reset * 1_000).toISOString() } : {}) });
51
+ }
52
+ const credits = object(root.value.credits);
53
+ const balance = numeric(credits?.balance);
54
+ if (credits && (balance !== undefined || credits.unlimited === true))
55
+ result.push({ name: root.prefix ? `${root.prefix}:credits` : "credits", ...(balance !== undefined ? { remaining: balance } : {}) });
56
+ const spend = object(root.value.individualLimit);
57
+ const limit = numeric(spend?.limit);
58
+ const used = numeric(spend?.used);
59
+ const reset = number(spend?.resetsAt);
60
+ if (spend)
61
+ result.push({ name: root.prefix ? `${root.prefix}:spend` : "spend", ...(limit !== undefined ? { limit } : {}), ...(limit !== undefined && used !== undefined ? { remaining: Math.max(0, limit - used) } : {}), ...(reset !== undefined ? { resets_at: new Date(reset * 1_000).toISOString() } : {}) });
62
+ }
63
+ return result;
64
+ }
65
+ export function codexAccountUsage(value) {
66
+ const thread = object(value.threadUsage);
67
+ const groups = array(thread?.groups).map(object).filter((item) => Boolean(item));
68
+ const sessionId = string(thread?.threadId) ?? null;
69
+ // account/usage/read overlaps thread/tokenUsage/updated. Use it only for
70
+ // estimated cost so additive token totals cannot count a turn twice.
71
+ const usd = numeric(thread?.estimatedUsageUsdMicros);
72
+ const credits = numeric(thread?.estimatedUsageCreditsMicros);
73
+ const models = [...new Set(groups.flatMap((group) => string(group.model) ? [string(group.model)] : []))];
74
+ if (usd === undefined && credits === undefined)
75
+ return undefined;
76
+ return { session_id: sessionId, harness: "codex", provider: "openai", ...(models.length === 1 ? { model: models[0] } : {}), source: "codex-app-server:account/usage/read", source_counter_mode: "cumulative", counter_key: `codex:account-usage:${sessionId ?? "account"}`,
77
+ tokens: {}, cost: usd !== undefined ? { status: "estimated", amount: usd / 1_000_000, currency: "USD" } : credits !== undefined ? { status: "estimated", amount: credits / 1_000_000, currency: "CREDITS" } : { status: "unavailable" } };
78
+ }
9
79
  function object(value) { return value !== null && typeof value === "object" && !Array.isArray(value) ? value : undefined; }
10
80
  function string(value) { return typeof value === "string" ? value : undefined; }
11
81
  function number(value) { return typeof value === "number" && Number.isFinite(value) ? value : undefined; }
82
+ function numeric(value) { const parsed = typeof value === "string" && value.trim() ? Number(value) : value; return typeof parsed === "number" && Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined; }
12
83
  function array(value) { return Array.isArray(value) ? value : []; }
13
84
  function isoSeconds(value) { return new Date((number(value) ?? Date.now() / 1_000) * 1_000).toISOString(); }
14
85
  function summary(value, limit = 2_000) { const text = typeof value === "string" ? value : JSON.stringify(value) ?? ""; return text.length <= limit ? text : `${text.slice(0, limit - 3)}...`; }
@@ -86,6 +157,7 @@ export class CodexAppServerManager {
86
157
  #default_model;
87
158
  #pollFailures = 0;
88
159
  #nextPollAt = 0;
160
+ #accountUsageAt = 0;
89
161
  #stopped = false;
90
162
  constructor(machine_id, registry, options = {}) {
91
163
  this.machine_id = machine_id;
@@ -114,7 +186,11 @@ export class CodexAppServerManager {
114
186
  await unlink(this.#token_path).catch(() => undefined);
115
187
  }
116
188
  target(id) { return this.#online && this.#threads.has(id) ? new CodexTarget(this, id) : undefined; }
117
- harnesses() { return this.#endpoint ? [{ harness_type: "codex", discovered_sessions: this.#threads.size, attached_sessions: this.#online ? this.#threads.size : 0, capabilities: this.health() }] : []; }
189
+ harnesses() {
190
+ const ids = [...this.#threads.keys()];
191
+ const attached = this.#online ? [...this.#threads].filter(([, state]) => state.loaded).map(([id]) => id) : [];
192
+ return this.#endpoint ? [{ harness_type: "codex", discovered_sessions: ids.length, attached_sessions: attached.length, discovered_session_ids: ids, attached_session_ids: attached, capabilities: this.health() }] : [];
193
+ }
118
194
  health() {
119
195
  const support = (value, reason) => value ? { supported: true, mode: "read_write" } : { supported: false, mode: "unsupported", reason };
120
196
  const offline = "The Codex app-server transport is not connected.";
@@ -138,6 +214,9 @@ export class CodexAppServerManager {
138
214
  const state = this.#threads.get(id);
139
215
  state.loaded = true;
140
216
  state.retain_until = (this.options.now?.() ?? Date.now()) + (this.options.new_thread_grace_ms ?? 60_000);
217
+ this.#markControlled(id);
218
+ if (command.title)
219
+ await this.setThreadName(id, command.title);
141
220
  return id;
142
221
  }
143
222
  async poll() {
@@ -151,6 +230,10 @@ export class CodexAppServerManager {
151
230
  if (!this.#socket || this.#socket.readyState !== WebSocket.OPEN)
152
231
  await this.#connect();
153
232
  await this.#listThreads();
233
+ if (now - this.#accountUsageAt >= 60_000) {
234
+ await this.#accountUsage();
235
+ this.#accountUsageAt = now;
236
+ }
154
237
  this.#pollFailures = 0;
155
238
  this.#nextPollAt = 0;
156
239
  }
@@ -172,6 +255,7 @@ export class CodexAppServerManager {
172
255
  if (!state.loaded) {
173
256
  await this.#request("thread/resume", { threadId });
174
257
  state.loaded = true;
258
+ this.#markControlled(threadId);
175
259
  }
176
260
  const result = object(await this.#request("turn/start", { threadId, clientUserMessageId: randomUUID(), input: [{ type: "text", text, text_elements: [] }] }));
177
261
  const turn = object(result?.turn);
@@ -186,6 +270,13 @@ export class CodexAppServerManager {
186
270
  await this.#request("turn/interrupt", { threadId, turnId: state.turn_id });
187
271
  this.#operations.interrupt = true;
188
272
  }
273
+ async setThreadName(threadId, name) {
274
+ this.#requireThread(threadId);
275
+ await this.#request("thread/name/set", { threadId, name });
276
+ const current = this.registry.get(threadId);
277
+ if (current)
278
+ this.registry.upsert({ ...current, title: name });
279
+ }
189
280
  async setCollaborationMode(threadId, mode) {
190
281
  this.#requireThread(threadId);
191
282
  const model = this.#default_model ?? this.#models[0]?.model_id;
@@ -348,7 +439,7 @@ export class CodexAppServerManager {
348
439
  if (state.missing_polls < (this.options.missing_poll_limit ?? 3))
349
440
  continue;
350
441
  this.#threads.delete(id);
351
- if (object(current?.metadata)?.codex_control === "app-server")
442
+ if (String(object(current?.metadata)?.codex_control).startsWith("app-server"))
352
443
  this.registry.remove(id);
353
444
  }
354
445
  const now = this.options.now?.() ?? Date.now();
@@ -382,8 +473,8 @@ export class CodexAppServerManager {
382
473
  this.#threads.set(id, state);
383
474
  const status = current?.pending?.type === "approval" ? "waiting_approval" : current?.pending?.type === "question" ? "waiting_input" : threadStatus(thread.status);
384
475
  this.registry.upsert({ id, machine_id: this.machine_id, harness_type: "codex", cwd: string(thread.cwd) ?? this.directory, status, created_at: isoSeconds(thread.createdAt), last_activity_at: isoSeconds(thread.updatedAt), pending: current?.pending ?? null,
385
- title: string(thread.name) ?? string(thread.preview), read_only: false, ...(string(thread.modelProvider) ? { model: { provider_id: string(thread.modelProvider), model_id: "unknown" } } : {}),
386
- metadata: { codex_control: "app-server", live_process_attached: true, transport: this.#transport, cli_version: string(thread.cliVersion) ?? this.#version, source: thread.source } });
476
+ title: string(thread.name) ?? string(thread.preview), read_only: !state.loaded, ...(string(thread.modelProvider) ? { model: { provider_id: string(thread.modelProvider), model_id: "unknown" } } : {}),
477
+ metadata: { codex_control: state.loaded ? "app-server" : "app-server-history", live_process_attached: state.loaded, transport: this.#transport, cli_version: string(thread.cliVersion) ?? this.#version, source: thread.source } });
387
478
  }
388
479
  async #readThread(threadId) {
389
480
  const response = object(await this.#request("thread/read", { threadId, includeTurns: true }));
@@ -453,8 +544,12 @@ export class CodexAppServerManager {
453
544
  this.#send({ id: rpcId, error: { code: -32602, message: "Unknown thread" } });
454
545
  return;
455
546
  }
547
+ this.#markControlled(threadId);
456
548
  const id = String(rpcId);
457
- const pending = { type: "approval", id, session_id: threadId, tool_name: method.includes("commandExecution") ? "commandExecution" : "fileChange", tool_input_summary: summary(params.command ?? params.reason ?? params), requested_at: new Date(number(params.startedAtMs) ?? Date.now()).toISOString() };
549
+ const details = normalizeApprovalInput({ command: params.command, description: params.reason });
550
+ const pending = { type: "approval", id, session_id: threadId, tool_name: method.includes("commandExecution") ? "commandExecution" : "fileChange", tool_input_summary: details.summary,
551
+ ...(details.command ? { command: details.command } : {}), ...(details.description ? { description: details.description } : {}),
552
+ source: "codex-app-server", response_mode: "remote", requested_at: new Date(number(params.startedAtMs) ?? Date.now()).toISOString() };
458
553
  this.#pending.set(id, { rpc_id: rpcId, method, params });
459
554
  this.registry.setPending(threadId, pending);
460
555
  this.registry.append(threadId, "permission_request", { approval_id: id, tool_name: pending.tool_name, tool_input_summary: pending.tool_input_summary }, { id: `codex-request-${requestKey(rpcId)}` });
@@ -467,11 +562,12 @@ export class CodexAppServerManager {
467
562
  this.#send({ id: rpcId, error: { code: -32602, message: "Unknown thread" } });
468
563
  return;
469
564
  }
565
+ this.#markControlled(threadId);
470
566
  const questions = array(params.questions).map(object).filter((item) => Boolean(item));
471
567
  const id = String(rpcId);
472
568
  const pending = { type: "question", id, session_id: threadId, prompt: questions.map((item) => string(item.question) ?? "").join("\n"), header: questions.map((item) => string(item.header) ?? "").join(" / "),
473
569
  options: questions.flatMap((item) => questionOptions(item.options).map((option) => option.label)), option_details: questions.flatMap((item) => questionOptions(item.options)),
474
- questions: questions.map((item) => ({ prompt: string(item.question) ?? "", header: string(item.header) ?? "", options: questionOptions(item.options), custom: item.isOther === true })), tool_call_id: string(params.itemId), requested_at: new Date().toISOString() };
570
+ questions: questions.map((item) => ({ prompt: string(item.question) ?? "", header: string(item.header) ?? "", options: questionOptions(item.options), custom: item.isOther === true })), tool_call_id: string(params.itemId), source: "codex-app-server", response_mode: "remote", requested_at: new Date().toISOString() };
475
571
  this.#pending.set(id, { rpc_id: rpcId, method, params });
476
572
  this.registry.setPending(threadId, pending);
477
573
  this.registry.setStatus(threadId, "waiting_input");
@@ -481,6 +577,23 @@ export class CodexAppServerManager {
481
577
  this.#diagnostic(method);
482
578
  }
483
579
  #notification(method, params) {
580
+ // This official process-level notification has no session state for Rivetplane.
581
+ if (method === "remoteControl/status/changed")
582
+ return;
583
+ if (method === "thread/tokenUsage/updated") {
584
+ const threadId = string(params.threadId);
585
+ const model = threadId ? this.registry.get(threadId)?.model?.model_id : undefined;
586
+ const sample = codexThreadUsage(params, model);
587
+ if (sample)
588
+ this.options.usage?.ingest(sample);
589
+ return;
590
+ }
591
+ if (method === "account/rateLimits/updated") {
592
+ const quota = codexRateLimits(params);
593
+ if (quota.length)
594
+ this.options.usage?.ingest({ session_id: null, harness: "codex", provider: "openai", source: "codex-app-server:account/rateLimits/updated", source_counter_mode: "cumulative", counter_key: "codex:account:rate-limits", tokens: {}, cost: { status: "unavailable" }, quota });
595
+ return;
596
+ }
484
597
  const threadId = string(params.threadId);
485
598
  if (method === "turn/started" && threadId) {
486
599
  const turn = object(params.turn);
@@ -519,8 +632,15 @@ export class CodexAppServerManager {
519
632
  }
520
633
  if (["thread/started", "thread/status/changed", "thread/name/updated"].includes(method)) {
521
634
  const thread = object(params.thread);
522
- if (thread?.id)
635
+ const id = string(thread?.id);
636
+ if (thread && id) {
637
+ if (method === "thread/started") {
638
+ const state = this.#threads.get(id) ?? { loaded: true };
639
+ state.loaded = true;
640
+ this.#threads.set(id, state);
641
+ }
523
642
  this.#syncThread(thread);
643
+ }
524
644
  return;
525
645
  }
526
646
  if (method === "error" || method === "warning") {
@@ -553,6 +673,29 @@ export class CodexAppServerManager {
553
673
  this.registry.append(threadId, "tool_result", { tool_call_id: id, output_summary: summary(item.aggregatedOutput ?? item.result ?? item.error), is_error: string(item.status) !== "completed" }, { id: `codex-item-${id}-result`, ts });
554
674
  }
555
675
  }
676
+ async #accountUsage() {
677
+ try {
678
+ const response = object(await this.#request("account/usage/read", {}));
679
+ const sample = response && codexAccountUsage(response);
680
+ if (sample)
681
+ this.options.usage?.ingest(sample);
682
+ }
683
+ catch { /* Version-dependent. */ }
684
+ await mapLimit([...this.#threads.keys()].slice(0, 12), this.options.concurrency ?? 2, async (threadId) => { try {
685
+ const response = object(await this.#request("account/usage/read", { threadId }));
686
+ const sample = response && codexAccountUsage(response);
687
+ if (sample)
688
+ this.options.usage?.ingest(sample);
689
+ }
690
+ catch { /* Version-dependent. */ } });
691
+ try {
692
+ const response = object(await this.#request("account/rateLimits/read", {}));
693
+ const quota = response ? codexRateLimits(response) : [];
694
+ if (quota.length)
695
+ this.options.usage?.ingest({ session_id: null, harness: "codex", provider: "openai", source: "codex-app-server:account/rateLimits/read", source_counter_mode: "cumulative", counter_key: "codex:account:rate-limits", tokens: {}, cost: { status: "unavailable" }, quota });
696
+ }
697
+ catch { /* Version-dependent. */ }
698
+ }
556
699
  #request(method, params) {
557
700
  const id = this.#request_id++;
558
701
  return new Promise((resolve, reject) => {
@@ -577,9 +720,11 @@ export class CodexAppServerManager {
577
720
  request.reject(error);
578
721
  } this.#requests.clear(); this.#pending.clear(); for (const id of this.#threads.keys()) {
579
722
  const current = this.registry.get(id);
580
- if (object(current?.metadata)?.codex_control === "app-server")
723
+ if (String(object(current?.metadata)?.codex_control).startsWith("app-server"))
581
724
  this.registry.remove(id);
582
725
  } this.#threads.clear(); }
726
+ #markControlled(id) { const state = this.#threads.get(id); const current = this.registry.get(id); if (!state || !current)
727
+ return; state.loaded = true; this.registry.upsert({ ...current, read_only: false, metadata: { ...object(current.metadata), codex_control: "app-server", live_process_attached: true } }); }
583
728
  #requireThread(id) { const state = this.#threads.get(id); if (!state)
584
729
  throw new Error(`Codex thread ${id} is not attached`); return state; }
585
730
  #disableMethod(method) { if (method === "turn/start")