@codetreker/daynight 0.25.2 → 0.26.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 (181) hide show
  1. package/README.md +116 -8
  2. package/config.example.yml +3 -0
  3. package/dist/api/client.js +2 -2
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/parse.js +14 -2
  6. package/dist/api/parse.js.map +1 -1
  7. package/dist/api/types.d.ts +4 -1
  8. package/dist/api/worker-mode.d.ts +6 -0
  9. package/dist/api/worker-mode.js +14 -0
  10. package/dist/api/worker-mode.js.map +1 -0
  11. package/dist/cli/commands.js +2 -0
  12. package/dist/cli/commands.js.map +1 -1
  13. package/dist/commands/controller/command-controls.d.ts +4 -0
  14. package/dist/commands/controller/command-controls.js +33 -0
  15. package/dist/commands/controller/command-controls.js.map +1 -0
  16. package/dist/commands/controller/definition.d.ts +3 -0
  17. package/dist/commands/controller/definition.js +22 -0
  18. package/dist/commands/controller/definition.js.map +1 -0
  19. package/dist/commands/controller/independent.d.ts +3 -0
  20. package/dist/commands/controller/independent.js +344 -0
  21. package/dist/commands/controller/independent.js.map +1 -0
  22. package/dist/commands/controller/index.d.ts +12 -0
  23. package/dist/commands/controller/index.js +73 -0
  24. package/dist/commands/controller/index.js.map +1 -0
  25. package/dist/commands/controller/launch-ticket.d.ts +49 -0
  26. package/dist/commands/controller/launch-ticket.js +99 -0
  27. package/dist/commands/controller/launch-ticket.js.map +1 -0
  28. package/dist/commands/controller/lifecycle-store.d.ts +84 -0
  29. package/dist/commands/controller/lifecycle-store.js +278 -0
  30. package/dist/commands/controller/lifecycle-store.js.map +1 -0
  31. package/dist/commands/controller/local-client.d.ts +44 -0
  32. package/dist/commands/controller/local-client.js +75 -0
  33. package/dist/commands/controller/local-client.js.map +1 -0
  34. package/dist/commands/controller/local-content.d.ts +23 -0
  35. package/dist/commands/controller/local-content.js +103 -0
  36. package/dist/commands/controller/local-content.js.map +1 -0
  37. package/dist/commands/controller/process-proof.d.ts +13 -0
  38. package/dist/commands/controller/process-proof.js +121 -0
  39. package/dist/commands/controller/process-proof.js.map +1 -0
  40. package/dist/commands/controller/providers/claude.d.ts +2 -0
  41. package/dist/commands/controller/providers/claude.js +470 -0
  42. package/dist/commands/controller/providers/claude.js.map +1 -0
  43. package/dist/commands/controller/providers/codex.d.ts +2 -0
  44. package/dist/commands/controller/providers/codex.js +254 -0
  45. package/dist/commands/controller/providers/codex.js.map +1 -0
  46. package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
  47. package/dist/commands/controller/providers/controls-claude.js +138 -0
  48. package/dist/commands/controller/providers/controls-claude.js.map +1 -0
  49. package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
  50. package/dist/commands/controller/providers/controls-codex.js +199 -0
  51. package/dist/commands/controller/providers/controls-codex.js.map +1 -0
  52. package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
  53. package/dist/commands/controller/providers/controls-copilot.js +143 -0
  54. package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
  55. package/dist/commands/controller/providers/controls.d.ts +21 -0
  56. package/dist/commands/controller/providers/controls.js +53 -0
  57. package/dist/commands/controller/providers/controls.js.map +1 -0
  58. package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
  59. package/dist/commands/controller/providers/copilot-interactions.js +295 -0
  60. package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
  61. package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
  62. package/dist/commands/controller/providers/copilot-projection.js +93 -0
  63. package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
  64. package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
  65. package/dist/commands/controller/providers/copilot-runtime.js +127 -0
  66. package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
  67. package/dist/commands/controller/providers/copilot.d.ts +2 -0
  68. package/dist/commands/controller/providers/copilot.js +309 -0
  69. package/dist/commands/controller/providers/copilot.js.map +1 -0
  70. package/dist/commands/controller/providers/interactions.d.ts +3 -0
  71. package/dist/commands/controller/providers/interactions.js +79 -0
  72. package/dist/commands/controller/providers/interactions.js.map +1 -0
  73. package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
  74. package/dist/commands/controller/providers/native-rpc.js +85 -0
  75. package/dist/commands/controller/providers/native-rpc.js.map +1 -0
  76. package/dist/commands/controller/providers/projection.d.ts +23 -0
  77. package/dist/commands/controller/providers/projection.js +99 -0
  78. package/dist/commands/controller/providers/projection.js.map +1 -0
  79. package/dist/commands/controller/providers/turns.d.ts +7 -0
  80. package/dist/commands/controller/providers/turns.js +21 -0
  81. package/dist/commands/controller/providers/turns.js.map +1 -0
  82. package/dist/commands/controller/providers/types.d.ts +44 -0
  83. package/dist/commands/controller/providers/types.js +2 -0
  84. package/dist/commands/controller/providers/types.js.map +1 -0
  85. package/dist/commands/controller/recovery.d.ts +6 -0
  86. package/dist/commands/controller/recovery.js +22 -0
  87. package/dist/commands/controller/recovery.js.map +1 -0
  88. package/dist/commands/controller/relay.d.ts +18 -0
  89. package/dist/commands/controller/relay.js +299 -0
  90. package/dist/commands/controller/relay.js.map +1 -0
  91. package/dist/commands/controller/resume.d.ts +18 -0
  92. package/dist/commands/controller/resume.js +193 -0
  93. package/dist/commands/controller/resume.js.map +1 -0
  94. package/dist/commands/controller/runtime.d.ts +5 -0
  95. package/dist/commands/controller/runtime.js +455 -0
  96. package/dist/commands/controller/runtime.js.map +1 -0
  97. package/dist/commands/controller/windows-job.d.ts +3 -0
  98. package/dist/commands/controller/windows-job.js +59 -0
  99. package/dist/commands/controller/windows-job.js.map +1 -0
  100. package/dist/commands/controller/wire-display.d.ts +5 -0
  101. package/dist/commands/controller/wire-display.js +11 -0
  102. package/dist/commands/controller/wire-display.js.map +1 -0
  103. package/dist/commands/skill/skills/using-daynight/SKILL.md +24 -20
  104. package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +16 -10
  105. package/dist/commands/skill/skills/using-daynight/references/create-task.md +40 -39
  106. package/dist/commands/skill/skills/using-daynight/references/goal.md +40 -29
  107. package/dist/commands/skill/skills/using-daynight/references/handbook.md +4 -3
  108. package/dist/commands/skill/skills/using-daynight/references/handoff.md +3 -0
  109. package/dist/commands/skill/skills/using-daynight/references/run-task.md +3 -3
  110. package/dist/commands/skill/skills/using-daynight/references/task-content.md +96 -51
  111. package/dist/commands/skill/skills/using-daynight/references/task-execution.md +28 -22
  112. package/dist/commands/worker/backend.d.ts +7 -0
  113. package/dist/commands/worker/backend.js +7 -0
  114. package/dist/commands/worker/backend.js.map +1 -0
  115. package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
  116. package/dist/commands/worker/backends/grant-renewal.js +42 -0
  117. package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
  118. package/dist/commands/worker/backends/session-api.d.ts +66 -0
  119. package/dist/commands/worker/backends/session-api.js +84 -0
  120. package/dist/commands/worker/backends/session-api.js.map +1 -0
  121. package/dist/commands/worker/backends/web-process.d.ts +79 -0
  122. package/dist/commands/worker/backends/web-process.js +156 -0
  123. package/dist/commands/worker/backends/web-process.js.map +1 -0
  124. package/dist/commands/worker/backends/web-store.d.ts +49 -0
  125. package/dist/commands/worker/backends/web-store.js +323 -0
  126. package/dist/commands/worker/backends/web-store.js.map +1 -0
  127. package/dist/commands/worker/backends/web-types.d.ts +83 -0
  128. package/dist/commands/worker/backends/web-types.js +3 -0
  129. package/dist/commands/worker/backends/web-types.js.map +1 -0
  130. package/dist/commands/worker/backends/web.d.ts +26 -0
  131. package/dist/commands/worker/backends/web.js +178 -0
  132. package/dist/commands/worker/backends/web.js.map +1 -0
  133. package/dist/commands/worker/config.js +12 -5
  134. package/dist/commands/worker/config.js.map +1 -1
  135. package/dist/commands/worker/control.d.ts +2 -0
  136. package/dist/commands/worker/control.js +11 -4
  137. package/dist/commands/worker/control.js.map +1 -1
  138. package/dist/commands/worker/coordinator.d.ts +7 -0
  139. package/dist/commands/worker/coordinator.js +138 -19
  140. package/dist/commands/worker/coordinator.js.map +1 -1
  141. package/dist/commands/worker/herdr/agents.js +11 -8
  142. package/dist/commands/worker/herdr/agents.js.map +1 -1
  143. package/dist/commands/worker/herdr/arguments.js +10 -5
  144. package/dist/commands/worker/herdr/arguments.js.map +1 -1
  145. package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
  146. package/dist/commands/worker/herdr/claude-input.js +20 -0
  147. package/dist/commands/worker/herdr/claude-input.js.map +1 -0
  148. package/dist/commands/worker/herdr/instance.js +1 -1
  149. package/dist/commands/worker/herdr/instance.js.map +1 -1
  150. package/dist/commands/worker/herdr/preflight.d.ts +1 -1
  151. package/dist/commands/worker/herdr/preflight.js +31 -10
  152. package/dist/commands/worker/herdr/preflight.js.map +1 -1
  153. package/dist/commands/worker/herdr.js +5 -1
  154. package/dist/commands/worker/herdr.js.map +1 -1
  155. package/dist/commands/worker/prompts.js +5 -1
  156. package/dist/commands/worker/prompts.js.map +1 -1
  157. package/dist/commands/worker/repositories.js +2 -2
  158. package/dist/commands/worker/repositories.js.map +1 -1
  159. package/dist/commands/worker/runtime.js +62 -10
  160. package/dist/commands/worker/runtime.js.map +1 -1
  161. package/dist/commands/worker/setup-environment.d.ts +2 -1
  162. package/dist/commands/worker/setup-environment.js +10 -4
  163. package/dist/commands/worker/setup-environment.js.map +1 -1
  164. package/dist/commands/worker/setup.js +5 -5
  165. package/dist/commands/worker/setup.js.map +1 -1
  166. package/dist/commands/worker/store.d.ts +2 -1
  167. package/dist/commands/worker/store.js +19 -9
  168. package/dist/commands/worker/store.js.map +1 -1
  169. package/dist/commands/worker/types.d.ts +4 -1
  170. package/dist/commands/worker/worktrees.js +9 -6
  171. package/dist/commands/worker/worktrees.js.map +1 -1
  172. package/dist/session/controller-protocol.d.ts +245 -0
  173. package/dist/session/controller-protocol.js +218 -0
  174. package/dist/session/controller-protocol.js.map +1 -0
  175. package/dist/session/controls.d.ts +28 -0
  176. package/dist/session/controls.js +37 -0
  177. package/dist/session/controls.js.map +1 -0
  178. package/dist/session/protocol.d.ts +290 -0
  179. package/dist/session/protocol.js +307 -0
  180. package/dist/session/protocol.js.map +1 -0
  181. package/package.json +7 -2
@@ -0,0 +1,254 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ import { CodexControls } from "./controls-codex.js";
4
+ import { NativeTurns } from "./turns.js";
5
+ import { spawn } from "node:child_process";
6
+ import { randomUUID } from "node:crypto";
7
+ import { realpath } from "node:fs/promises";
8
+ import { NativeRpc, NativeRpcError, record, string } from "./native-rpc.js";
9
+ import { CodexProjection, nativeEntryId, parseProviderArguments, readable, limited } from "./projection.js";
10
+ import { formInteraction, validateResponse } from "./interactions.js";
11
+ export const openCodexProvider = async (options) => {
12
+ const config = parseProviderArguments("codex", options.args);
13
+ const executable = options.executable ?? "codex";
14
+ const child = spawn(/\.[cm]?js$/i.test(executable) ? process.execPath : executable, [...(/\.[cm]?js$/i.test(executable) ? [executable] : []), "app-server", "--stdio"], { cwd: options.cwd, env: options.env ?? process.env, stdio: ["pipe", "pipe", "pipe"], windowsHide: true, detached: false });
15
+ options.onSpawn(child);
16
+ child.stderr.on("data", data => options.onDiagnostic?.(String(data)));
17
+ let nativeId = "", currentTurnId = null, activity = "initializing", closed = false, closing = false, sending = false;
18
+ let projection;
19
+ let turnStartedAt = null;
20
+ let controls;
21
+ const pending = new Map();
22
+ const turns = new NativeTurns();
23
+ const capabilities = { send: true, steer: true, cancel: true, respond: true };
24
+ const state = () => options.onState({ nativeSessionId: nativeId || null, activity: pending.size ? "waiting_input" : activity, currentTurnId, turnStartedAt, ...(controls ? { controls: controls.store.value } : {}), capabilities: closed ? { send: false, steer: false, cancel: false, respond: false } : capabilities });
25
+ const showInteraction = (value) => options.onTimeline({ entryId: value.interaction.interactionId, revision: value.interaction.revision, kind: "interaction", interaction: value.interaction });
26
+ const expire = () => { for (const p of pending.values()) {
27
+ p.interaction = { ...p.interaction, state: "expired", revision: "2" };
28
+ showInteraction(p);
29
+ p.rejected?.(new Error("Native interaction expired before confirmation."));
30
+ } pending.clear(); };
31
+ const request = (message) => {
32
+ const params = record(message.params), method = string(message.method);
33
+ if (!nativeId || params.threadId !== nativeId) {
34
+ rpc.reject(message.id, "The request does not belong to this session.");
35
+ return;
36
+ }
37
+ let interaction;
38
+ let result;
39
+ const base = { interactionId: randomUUID(), revision: "1", state: "pending" };
40
+ if (method === "item/commandExecution/requestApproval" || method === "item/fileChange/requestApproval") {
41
+ const decisions = Array.isArray(params.availableDecisions) ? params.availableDecisions : ["accept", "acceptForSession", "decline"];
42
+ const rejection = decisions.includes("decline") ? "decline" : "cancel";
43
+ const actions = ["allow_once", "allow_session", "reject"].filter(action => decisions.includes(action === "allow_once" ? "accept" : action === "allow_session" ? "acceptForSession" : rejection));
44
+ interaction = { ...base, kind: "approval", title: method.includes("fileChange") ? "Approve file changes" : "Approve command", detail: limited(readable(params)), actions };
45
+ result = r => { if (r.kind !== "approval")
46
+ throw new Error("Expected approval response."); return { decision: r.action === "allow_once" ? "accept" : r.action === "allow_session" ? "acceptForSession" : rejection }; };
47
+ }
48
+ else if (method === "item/tool/requestUserInput") {
49
+ interaction = { ...base, kind: "question", title: "Agent question", canDismiss: false, questions: (Array.isArray(params.questions) ? params.questions : []).map(raw => { const q = record(raw); return { questionId: string(q.id), label: string(q.question), options: (Array.isArray(q.options) ? q.options : []).map(raw => { const o = record(raw); return { id: string(o.label), label: string(o.label) + (o.description ? ` — ${string(o.description)}` : "") }; }), multiple: false, allowCustom: q.isOther !== false, required: true, sensitive: q.isSecret === true }; }) };
50
+ result = r => { if (r.kind !== "question")
51
+ throw new Error("Expected question response."); return { answers: Object.fromEntries(r.answers.map(a => [a.questionId, { answers: [...a.optionIds, ...(a.text ? [a.text] : [])] }])) }; };
52
+ }
53
+ else if (method === "mcpServer/elicitation/request" && ["form", "openai/form", "openaiForm"].includes(string(params.mode))) {
54
+ try {
55
+ interaction = formInteraction(string(params.message) || "Agent form", params.requestedSchema);
56
+ }
57
+ catch (error) {
58
+ rpc.reject(message.id, String(error));
59
+ return;
60
+ }
61
+ result = r => ({ action: r.kind === "dismiss" ? "decline" : "accept", content: r.kind === "form" ? Object.fromEntries(r.values.map(v => [v.fieldId, v.value])) : null, _meta: null });
62
+ }
63
+ else {
64
+ rpc.reject(message.id, `Unsupported native interaction: ${method}`);
65
+ options.onTimeline({ entryId: randomUUID(), revision: "1", kind: "error", code: "unsupported_interaction", message: `Unsupported native interaction: ${method}` });
66
+ return;
67
+ }
68
+ const p = { nativeId: message.id, interaction, result };
69
+ pending.set(interaction.interactionId, p);
70
+ showInteraction(p);
71
+ state();
72
+ };
73
+ const projectItem = (raw, completed) => {
74
+ const item = record(raw);
75
+ if (item.type === "userMessage" && typeof item.clientId === "string")
76
+ options.onInputObserved?.(item.clientId);
77
+ projection?.item(item, completed);
78
+ };
79
+ const rpc = new NativeRpc(child, message => {
80
+ if (message.id !== undefined) {
81
+ request(message);
82
+ return;
83
+ }
84
+ const method = string(message.method), p = record(message.params);
85
+ if (p.threadId && nativeId && p.threadId !== nativeId)
86
+ return;
87
+ if (method === "thread/settings/updated")
88
+ controls?.observe(p.threadSettings);
89
+ if (method === "turn/started") {
90
+ currentTurnId = string(record(p.turn).id);
91
+ activity = "working";
92
+ turnStartedAt = new Date().toISOString();
93
+ state();
94
+ }
95
+ if (method === "turn/completed") {
96
+ const turn = record(p.turn);
97
+ turns.complete(string(turn.id), turn.status === "completed" ? null : new Error(`Native turn ended with ${string(turn.status)}: ${readable(turn.error)}`));
98
+ if (!currentTurnId || record(p.turn).id === currentTurnId) {
99
+ currentTurnId = null;
100
+ turnStartedAt = null;
101
+ activity = "idle";
102
+ expire();
103
+ state();
104
+ }
105
+ }
106
+ if (method === "item/started" || method === "item/completed")
107
+ projectItem(p.item, method === "item/completed");
108
+ if (method === "item/agentMessage/delta")
109
+ projection?.delta(string(p.itemId), string(p.delta), "assistant_message");
110
+ if (method === "item/reasoning/summaryTextDelta" || method === "item/reasoning/textDelta")
111
+ projection?.delta(string(p.itemId), string(p.delta), "reasoning");
112
+ if (method === "item/commandExecution/outputDelta" || method === "item/fileChange/outputDelta")
113
+ projection?.toolDelta(string(p.itemId), string(p.delta));
114
+ if (method === "serverRequest/resolved")
115
+ for (const [id, value] of pending)
116
+ if (value.nativeId === p.requestId) {
117
+ value.interaction = { ...value.interaction, state: "resolved", revision: "2" };
118
+ showInteraction(value);
119
+ pending.delete(id);
120
+ value.settled?.();
121
+ state();
122
+ }
123
+ if (method === "error")
124
+ options.onTimeline({ entryId: randomUUID(), revision: "1", kind: "error", code: "native_error", message: limited(readable(p.error ?? p)) });
125
+ if (method === "turn/plan/updated")
126
+ options.onTimeline({ entryId: nativeEntryId(nativeId, `plan:${string(p.turnId)}`), revision: "1", kind: "todo", items: (Array.isArray(p.plan) ? p.plan : []).map((raw, index) => { const item = record(raw); return { id: String(index), text: string(item.step), status: item.status === "completed" ? "completed" : item.status === "inProgress" ? "in_progress" : "pending" }; }) });
127
+ });
128
+ controls = new CodexControls(rpc, () => nativeId, () => currentTurnId, options.cwd, options.env?.CODEX_HOME ?? process.env.CODEX_HOME ?? join(homedir(), ".codex"), state, options.onControlConfirmed, options.controlsRevisionFloor);
129
+ child.once("close", () => {
130
+ closed = true;
131
+ const error = new Error("Native Codex connection ended; pending operation results are unknown.");
132
+ if (currentTurnId)
133
+ turns.complete(currentTurnId, error);
134
+ currentTurnId = null;
135
+ activity = closing ? "stopped" : "unknown";
136
+ expire();
137
+ state();
138
+ if (!closing)
139
+ options.onFatalError?.(error);
140
+ });
141
+ const close = async () => {
142
+ closing = true;
143
+ controls.close();
144
+ if (closed) {
145
+ rpc.dispose();
146
+ return;
147
+ }
148
+ const exited = new Promise((resolve, reject) => { const timer = setTimeout(() => reject(new Error("Native Codex stop is unconfirmed.")), 10_000); child.once("close", () => { clearTimeout(timer); resolve(); }); });
149
+ child.stdin.end();
150
+ const kill = setTimeout(() => child.kill("SIGTERM"), 1_000);
151
+ const force = setTimeout(() => child.kill("SIGKILL"), 5_000);
152
+ try {
153
+ await exited;
154
+ }
155
+ finally {
156
+ clearTimeout(kill);
157
+ clearTimeout(force);
158
+ rpc.dispose();
159
+ }
160
+ };
161
+ try {
162
+ await rpc.request("initialize", { clientInfo: { name: "daynight", title: "Daynight Controller", version: "0.22.0" }, capabilities: { experimentalApi: true } });
163
+ rpc.notify("initialized");
164
+ const response = record(await rpc.request(options.resumeNativeSessionId ? "thread/resume" : "thread/start", { ...(options.resumeNativeSessionId ? { threadId: options.resumeNativeSessionId, excludeTurns: true } : {}), cwd: options.cwd, ...(!options.resumeNativeSessionId && options.model ? { model: options.model } : {}), ...(!options.resumeNativeSessionId && options.unattended ? { sandbox: "danger-full-access", approvalPolicy: "never" } : {}), ...(!options.resumeNativeSessionId && !options.unattended && config.sandbox ? { sandbox: config.sandbox } : {}), ...(!options.resumeNativeSessionId && !options.unattended && config.approvalPolicy ? { approvalPolicy: config.approvalPolicy } : {}), config: { "features.default_mode_request_user_input": true } }));
165
+ const thread = record(response.thread);
166
+ nativeId = string(thread.id);
167
+ if (!nativeId || options.resumeNativeSessionId && nativeId !== options.resumeNativeSessionId || await realpath(string(thread.cwd)) !== await realpath(options.cwd))
168
+ throw new Error("Native Codex session identity or working directory mismatch.");
169
+ controls.seed({ ...response, ...(!options.resumeNativeSessionId && config.effort ? { effort: config.effort } : {}) });
170
+ await controls.refresh();
171
+ projection = new CodexProjection(nativeId, options.onTimeline);
172
+ if (options.resumeNativeSessionId) {
173
+ let cursor = null;
174
+ do {
175
+ const page = record(await rpc.request("thread/items/list", { threadId: nativeId, cursor, limit: 100, sortDirection: "asc" }));
176
+ for (const raw of Array.isArray(page.data) ? page.data : [])
177
+ projectItem(record(raw).item ?? raw, true);
178
+ cursor = string(page.nextCursor) || null;
179
+ } while (cursor);
180
+ }
181
+ else {
182
+ // Persist an empty thread where supported; an absent native file is never guessed on recovery.
183
+ await rpc.request("thread/read", { threadId: nativeId, includeTurns: true }).catch(error => { if (!(error instanceof NativeRpcError))
184
+ throw error; });
185
+ }
186
+ activity = "idle";
187
+ state();
188
+ }
189
+ catch (error) {
190
+ await close();
191
+ throw error;
192
+ }
193
+ const send = async (text, operationId, expectedTurnId, skill) => {
194
+ if (closed || sending || pending.size || expectedTurnId !== currentTurnId)
195
+ throw new NativeRpcError(-32602, "Native turn changed or interaction is pending.");
196
+ sending = true;
197
+ try {
198
+ const result = record(await rpc.request(currentTurnId ? "turn/steer" : "turn/start", { threadId: nativeId, ...(currentTurnId ? { expectedTurnId: currentTurnId } : {}), clientUserMessageId: operationId, input: [{ type: "text", text, text_elements: [] }, ...(skill ? [{ type: "skill", ...skill }] : [])], ...(!currentTurnId && (controls.store.value.settings.find(item => item.id === "effort")?.value ?? (options.resumeNativeSessionId ? undefined : config.effort)) ? { effort: controls.store.value.settings.find(item => item.id === "effort")?.value ?? (options.resumeNativeSessionId ? undefined : config.effort) } : {}) }));
199
+ if (expectedTurnId) {
200
+ if (result.turnId !== expectedTurnId)
201
+ throw new Error("Native steer receipt is unknown.");
202
+ return { disposition: "queued", turnId: expectedTurnId };
203
+ }
204
+ const turn = record(result.turn);
205
+ if (!string(turn.id))
206
+ throw new Error("Native turn receipt is unknown.");
207
+ if (turn.status === "inProgress" && !turns.isComplete(string(turn.id))) {
208
+ currentTurnId = string(turn.id);
209
+ activity = "working";
210
+ state();
211
+ }
212
+ return { disposition: "started", turnId: string(turn.id) };
213
+ }
214
+ finally {
215
+ sending = false;
216
+ }
217
+ };
218
+ return {
219
+ nativeSessionId: nativeId, send,
220
+ async refreshControls() { await controls.refresh(); return { disposition: "handled" }; },
221
+ async setSetting(id, value, operationId, revision) { if (closed || sending)
222
+ throw new NativeRpcError(-32602, "Native controls are busy."); await controls.set(id, value, operationId, revision); return { disposition: "handled" }; },
223
+ async executeCommand(id, args, operationId, revision, expectedTurnId) {
224
+ if (closed || sending || currentTurnId !== null || expectedTurnId !== null || pending.size)
225
+ throw new NativeRpcError(-32602, "Codex commands require an idle session.");
226
+ const command = controls.command(id, revision);
227
+ if (command.kind === "compact") {
228
+ if (args.trim())
229
+ throw new NativeRpcError(-32602, "Compact does not accept arguments.");
230
+ await rpc.request("thread/compact/start", { threadId: nativeId });
231
+ return { disposition: "handled" };
232
+ }
233
+ if (command.kind === "skill")
234
+ return send(args, operationId, null, { name: command.name, path: command.path });
235
+ if (/\$(?!ARGUMENTS\b)(?:[A-Za-z_0-9{]|\$)/.test(command.body) || args.trim() && !command.body.includes("$ARGUMENTS"))
236
+ throw new NativeRpcError(-32602, "This prompt supports only $ARGUMENTS placeholders.");
237
+ return send(command.body.replace(/\$ARGUMENTS\b/g, () => args), operationId, null);
238
+ },
239
+ async cancel(expectedTurnId) { if (currentTurnId !== expectedTurnId)
240
+ throw new NativeRpcError(-32602, "Native turn changed."); await rpc.request("turn/interrupt", { threadId: nativeId, turnId: expectedTurnId }); await turns.wait(expectedTurnId, Date.now() + 30_000).catch(error => { if (!turns.isComplete(expectedTurnId))
241
+ throw error; }); return { disposition: "handled" }; },
242
+ async respond(interactionId, revision, response) {
243
+ const p = pending.get(interactionId);
244
+ if (!p || revision !== p.interaction.revision || p.settled)
245
+ throw new NativeRpcError(-32602, "Native interaction is stale.");
246
+ validateResponse(p.interaction, response);
247
+ const confirmed = new Promise((resolve, reject) => { const timer = setTimeout(() => reject(new Error("Native interaction result is unknown.")), 30_000); p.settled = () => { clearTimeout(timer); resolve(); }; p.rejected = error => { clearTimeout(timer); reject(error); }; });
248
+ rpc.respond(p.nativeId, p.result(response));
249
+ await confirmed;
250
+ return { disposition: "handled" };
251
+ }, waitForTurn: (turnId, deadline) => turns.wait(turnId, deadline), close,
252
+ };
253
+ };
254
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/commands/controller/providers/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Query } from "@anthropic-ai/claude-agent-sdk";
2
+ import { ProviderControls } from "./controls.js";
3
+ export type ClaudeControlQuery = Pick<Query, "setModel" | "setPermissionMode" | "supportedModels" | "supportedCommands" | "reloadSkills" | "applyFlagSettings"> & {
4
+ getSettings?: () => Promise<unknown>;
5
+ };
6
+ export declare class ClaudeControls {
7
+ private readonly native;
8
+ private readonly confirmed?;
9
+ private readonly resumed;
10
+ readonly store: ProviderControls;
11
+ private closed;
12
+ private models;
13
+ private model;
14
+ private permission;
15
+ private effort;
16
+ private effortDefault;
17
+ constructor(native: ClaudeControlQuery, model: string | null, effort: string | undefined, changed: () => void, confirmed?: ((id: string) => void) | undefined, resumed?: boolean, revisionFloor?: string);
18
+ observe(raw: unknown): void;
19
+ private catalogModel;
20
+ private describe;
21
+ private readSettings;
22
+ refresh(): Promise<void>;
23
+ set(id: string, value: string, operationId: string, revision: string): Promise<void>;
24
+ close(): void;
25
+ command(id: string, revision: string): import("./controls.js").SessionNativeCommand;
26
+ }
@@ -0,0 +1,138 @@
1
+ import { ProviderControls, controlDeadline, controlError, uniqueOptions } from "./controls.js";
2
+ import { record, string, NativeRpcError } from "./native-rpc.js";
3
+ const modes = ["default", "acceptEdits", "dontAsk", "plan", "bypassPermissions"];
4
+ const excluded = new Set(["clear", "context", "debug", "extra-usage", "heapdump", "loop", "schedule", "usage", "cost", "stats", "resume", "fork", "model", "permissions", "login", "logout", "exit", "quit", "agents", "mcp", "config", "settings"]);
5
+ export class ClaudeControls {
6
+ native;
7
+ confirmed;
8
+ resumed;
9
+ store;
10
+ closed = false;
11
+ models = [];
12
+ model;
13
+ permission = null;
14
+ effort;
15
+ effortDefault;
16
+ constructor(native, model, effort, changed, confirmed, resumed = false, revisionFloor = "0") {
17
+ this.native = native;
18
+ this.confirmed = confirmed;
19
+ this.resumed = resumed;
20
+ this.store = new ProviderControls(changed, revisionFloor);
21
+ this.model = resumed ? null : model ?? "default";
22
+ this.effortDefault = effort === undefined;
23
+ }
24
+ observe(raw) {
25
+ if (this.closed)
26
+ return;
27
+ const message = record(raw);
28
+ if (message.type !== "system")
29
+ return;
30
+ if (typeof message.permissionMode === "string")
31
+ this.permission = message.permissionMode;
32
+ // Preserve the native default selection instead of replacing it with a resolved alias.
33
+ if (message.subtype === "init" && this.model !== "default" && typeof message.model === "string")
34
+ this.model = this.catalogModel(message.model);
35
+ this.describe();
36
+ }
37
+ catalogModel(actual) {
38
+ if (this.models.some(model => model.value === actual))
39
+ return actual;
40
+ // Alias matching requires native catalog evidence; a requested alias alone
41
+ // does not establish which model the native runtime actually applied.
42
+ const matches = this.models.filter(model => model.value !== "default" && model.resolvedModel === actual);
43
+ const selected = matches.find(model => model.value === this.model);
44
+ return string(selected?.value) || (matches.length === 1 ? string(matches[0].value) : "") || actual;
45
+ }
46
+ describe(error = this.store.value.settingsError) {
47
+ if (this.closed)
48
+ return;
49
+ const settings = [{ id: "model", category: "model", label: "Model", value: this.model, options: uniqueOptions(this.models.map(model => ({ value: string(model.value), label: string(model.displayName) || string(model.value) }))), mutable: this.models.length > 0 && typeof this.native.setModel === "function", scope: "session", description: "Applies to subsequent native requests. Default follows Claude Code." }, { id: "permissions", category: "permission", label: "Permissions", value: this.permission, options: modes.filter(value => value !== "bypassPermissions" || typeof this.native.applyFlagSettings === "function").map(value => ({ value, label: value === "default" ? "Ask for permissions" : value === "acceptEdits" ? "Accept edits" : value === "dontAsk" ? "Deny unapproved tools" : value === "bypassPermissions" ? "Full access (YOLO)" : "Plan" })), mutable: typeof this.native.setPermissionMode === "function", scope: "session", description: "Native permission mode. Full access runs tools without asking and disables the sandbox." }];
50
+ const metadata = this.models.find(model => model.value === this.model || model.resolvedModel === this.model);
51
+ if (metadata?.supportsEffort && Array.isArray(metadata.supportedEffortLevels) && this.effort !== undefined && this.native.getSettings)
52
+ settings.push({ id: "effort", category: "reasoning", label: "Reasoning effort", value: this.effortDefault ? "default" : this.effort, options: uniqueOptions([{ value: "default", label: "Native default" }, ...metadata.supportedEffortLevels.filter(value => typeof value === "string").map(value => ({ value, label: value }))]), mutable: true, scope: "session", description: "Applies to subsequent native requests. Native default clears the effort override." });
53
+ this.store.update({ settings, settingsError: error });
54
+ }
55
+ async readSettings() {
56
+ if (!this.native.getSettings) {
57
+ this.effort = undefined;
58
+ return;
59
+ }
60
+ const applied = record(record(await controlDeadline(this.native.getSettings(), "Claude settings readback")).applied);
61
+ if (applied.effort !== null && typeof applied.effort !== "string")
62
+ throw new Error("Claude did not report applied effort.");
63
+ this.effort = applied.effort;
64
+ this.effortDefault = applied.effort === null;
65
+ if (this.model !== "default" && typeof applied.model === "string")
66
+ this.model = this.catalogModel(applied.model);
67
+ }
68
+ async refresh() {
69
+ try {
70
+ const models = await controlDeadline(this.native.supportedModels(), "Claude model discovery");
71
+ if (!Array.isArray(models) || models.length > 500)
72
+ throw new Error("Invalid Claude model catalog.");
73
+ this.models = models.map(record);
74
+ await this.readSettings();
75
+ this.describe(null);
76
+ }
77
+ catch (error) {
78
+ this.effort = undefined;
79
+ this.describe(controlError(error));
80
+ }
81
+ try {
82
+ await controlDeadline(this.native.reloadSkills(), "Claude skills refresh");
83
+ const entries = await controlDeadline(this.native.supportedCommands(), "Claude commands");
84
+ if (!Array.isArray(entries) || entries.length > 4096)
85
+ throw new Error("Invalid Claude command directory.");
86
+ const commands = new Map();
87
+ for (const raw of entries) {
88
+ const entry = record(raw), name = string(entry.name);
89
+ if (!name || name.length > 128 || !/^[^\s/]+$/u.test(name) || excluded.has(name))
90
+ continue;
91
+ const id = `claude:${name}`;
92
+ commands.set(id, { id, name, description: (string(entry.description) || "Claude command").slice(0, 1000), argumentHint: string(entry.argumentHint).slice(0, 1000) || null, available: true });
93
+ }
94
+ if (commands.size > 500)
95
+ throw new Error("Claude command directory exceeded its bound.");
96
+ this.store.update({ commands: [...commands.values()], commandsError: null });
97
+ }
98
+ catch (error) {
99
+ this.store.update({ commands: [], commandsError: controlError(error) });
100
+ }
101
+ }
102
+ async set(id, value, operationId, revision) {
103
+ this.store.setting(id, value, revision);
104
+ if (this.closed)
105
+ throw new Error("Native session closed.");
106
+ const apply = async () => {
107
+ if (id === "model") {
108
+ await this.native.setModel(value);
109
+ this.model = value;
110
+ await this.readSettings();
111
+ }
112
+ else if (id === "effort") {
113
+ await this.native.applyFlagSettings({ effortLevel: value === "default" ? null : value });
114
+ this.effortDefault = value === "default";
115
+ await this.readSettings();
116
+ if (value !== "default" && this.effort !== value)
117
+ throw new Error("Claude did not apply the requested effort.");
118
+ }
119
+ else {
120
+ if (value !== "bypassPermissions" && this.native.applyFlagSettings)
121
+ await this.native.applyFlagSettings({ sandbox: null });
122
+ await this.native.setPermissionMode(value);
123
+ this.permission = value;
124
+ this.describe();
125
+ if (value === "bypassPermissions")
126
+ await this.native.applyFlagSettings({ sandbox: { enabled: false } });
127
+ }
128
+ if (this.closed)
129
+ throw new Error("Native session closed before control confirmation.");
130
+ this.describe(null);
131
+ this.confirmed?.(operationId);
132
+ };
133
+ await controlDeadline(apply(), "Claude setting update");
134
+ }
135
+ close() { this.closed = true; }
136
+ command(id, revision) { return this.store.command(id, revision); }
137
+ }
138
+ //# sourceMappingURL=controls-claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls-claude.js","sourceRoot":"","sources":["../../../../src/commands/controller/providers/controls-claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { ProviderControls } from "./controls.js";
2
+ import { type NativeRpc } from "./native-rpc.js";
3
+ type Command = {
4
+ kind: "compact";
5
+ } | {
6
+ kind: "skill";
7
+ name: string;
8
+ path: string;
9
+ } | {
10
+ kind: "prompt";
11
+ body: string;
12
+ };
13
+ export declare class CodexControls {
14
+ private readonly rpc;
15
+ private readonly session;
16
+ private readonly turn;
17
+ private readonly cwd;
18
+ private readonly home;
19
+ private readonly confirmed?;
20
+ readonly store: ProviderControls;
21
+ private native;
22
+ private sandboxPolicies;
23
+ private models;
24
+ private requirements;
25
+ private commands;
26
+ private pending;
27
+ private closed;
28
+ constructor(rpc: NativeRpc, session: () => string, turn: () => string | null, cwd: string, home: string, changed: () => void, confirmed?: ((operationId: string) => void) | undefined, revisionFloor?: string);
29
+ seed(value: unknown): void;
30
+ observe(value: unknown): void;
31
+ private describe;
32
+ refresh(): Promise<void>;
33
+ set(id: string, value: string, operationId: string, revision: string): Promise<void>;
34
+ private sandbox;
35
+ command(id: string, revision: string): Command;
36
+ close(): void;
37
+ }
38
+ export {};