@codetreker/daynight 0.25.4 → 0.27.2
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 +160 -11
- package/config.example.yml +3 -0
- package/dist/api/client.d.ts +3 -2
- package/dist/api/client.js +10 -6
- package/dist/api/client.js.map +1 -1
- package/dist/api/parse.d.ts +3 -2
- package/dist/api/parse.js +59 -10
- package/dist/api/parse.js.map +1 -1
- package/dist/api/types.d.ts +75 -1
- package/dist/api/worker-mode.d.ts +6 -0
- package/dist/api/worker-mode.js +14 -0
- package/dist/api/worker-mode.js.map +1 -0
- package/dist/cli/commands.js +2 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/commands/controller/command-controls.d.ts +4 -0
- package/dist/commands/controller/command-controls.js +33 -0
- package/dist/commands/controller/command-controls.js.map +1 -0
- package/dist/commands/controller/definition.d.ts +3 -0
- package/dist/commands/controller/definition.js +22 -0
- package/dist/commands/controller/definition.js.map +1 -0
- package/dist/commands/controller/independent.d.ts +3 -0
- package/dist/commands/controller/independent.js +344 -0
- package/dist/commands/controller/independent.js.map +1 -0
- package/dist/commands/controller/index.d.ts +12 -0
- package/dist/commands/controller/index.js +73 -0
- package/dist/commands/controller/index.js.map +1 -0
- package/dist/commands/controller/launch-ticket.d.ts +49 -0
- package/dist/commands/controller/launch-ticket.js +99 -0
- package/dist/commands/controller/launch-ticket.js.map +1 -0
- package/dist/commands/controller/lifecycle-store.d.ts +84 -0
- package/dist/commands/controller/lifecycle-store.js +278 -0
- package/dist/commands/controller/lifecycle-store.js.map +1 -0
- package/dist/commands/controller/local-client.d.ts +44 -0
- package/dist/commands/controller/local-client.js +75 -0
- package/dist/commands/controller/local-client.js.map +1 -0
- package/dist/commands/controller/local-content.d.ts +23 -0
- package/dist/commands/controller/local-content.js +103 -0
- package/dist/commands/controller/local-content.js.map +1 -0
- package/dist/commands/controller/process-proof.d.ts +13 -0
- package/dist/commands/controller/process-proof.js +121 -0
- package/dist/commands/controller/process-proof.js.map +1 -0
- package/dist/commands/controller/providers/claude.d.ts +2 -0
- package/dist/commands/controller/providers/claude.js +470 -0
- package/dist/commands/controller/providers/claude.js.map +1 -0
- package/dist/commands/controller/providers/codex.d.ts +2 -0
- package/dist/commands/controller/providers/codex.js +254 -0
- package/dist/commands/controller/providers/codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-claude.d.ts +26 -0
- package/dist/commands/controller/providers/controls-claude.js +138 -0
- package/dist/commands/controller/providers/controls-claude.js.map +1 -0
- package/dist/commands/controller/providers/controls-codex.d.ts +38 -0
- package/dist/commands/controller/providers/controls-codex.js +199 -0
- package/dist/commands/controller/providers/controls-codex.js.map +1 -0
- package/dist/commands/controller/providers/controls-copilot.d.ts +20 -0
- package/dist/commands/controller/providers/controls-copilot.js +143 -0
- package/dist/commands/controller/providers/controls-copilot.js.map +1 -0
- package/dist/commands/controller/providers/controls.d.ts +21 -0
- package/dist/commands/controller/providers/controls.js +53 -0
- package/dist/commands/controller/providers/controls.js.map +1 -0
- package/dist/commands/controller/providers/copilot-interactions.d.ts +47 -0
- package/dist/commands/controller/providers/copilot-interactions.js +295 -0
- package/dist/commands/controller/providers/copilot-interactions.js.map +1 -0
- package/dist/commands/controller/providers/copilot-projection.d.ts +11 -0
- package/dist/commands/controller/providers/copilot-projection.js +93 -0
- package/dist/commands/controller/providers/copilot-projection.js.map +1 -0
- package/dist/commands/controller/providers/copilot-runtime.d.ts +9 -0
- package/dist/commands/controller/providers/copilot-runtime.js +127 -0
- package/dist/commands/controller/providers/copilot-runtime.js.map +1 -0
- package/dist/commands/controller/providers/copilot.d.ts +2 -0
- package/dist/commands/controller/providers/copilot.js +309 -0
- package/dist/commands/controller/providers/copilot.js.map +1 -0
- package/dist/commands/controller/providers/interactions.d.ts +3 -0
- package/dist/commands/controller/providers/interactions.js +79 -0
- package/dist/commands/controller/providers/interactions.js.map +1 -0
- package/dist/commands/controller/providers/native-rpc.d.ts +28 -0
- package/dist/commands/controller/providers/native-rpc.js +85 -0
- package/dist/commands/controller/providers/native-rpc.js.map +1 -0
- package/dist/commands/controller/providers/projection.d.ts +23 -0
- package/dist/commands/controller/providers/projection.js +99 -0
- package/dist/commands/controller/providers/projection.js.map +1 -0
- package/dist/commands/controller/providers/turns.d.ts +7 -0
- package/dist/commands/controller/providers/turns.js +21 -0
- package/dist/commands/controller/providers/turns.js.map +1 -0
- package/dist/commands/controller/providers/types.d.ts +44 -0
- package/dist/commands/controller/providers/types.js +2 -0
- package/dist/commands/controller/providers/types.js.map +1 -0
- package/dist/commands/controller/recovery.d.ts +6 -0
- package/dist/commands/controller/recovery.js +22 -0
- package/dist/commands/controller/recovery.js.map +1 -0
- package/dist/commands/controller/relay.d.ts +18 -0
- package/dist/commands/controller/relay.js +299 -0
- package/dist/commands/controller/relay.js.map +1 -0
- package/dist/commands/controller/resume.d.ts +18 -0
- package/dist/commands/controller/resume.js +193 -0
- package/dist/commands/controller/resume.js.map +1 -0
- package/dist/commands/controller/runtime.d.ts +5 -0
- package/dist/commands/controller/runtime.js +455 -0
- package/dist/commands/controller/runtime.js.map +1 -0
- package/dist/commands/controller/windows-job.d.ts +3 -0
- package/dist/commands/controller/windows-job.js +59 -0
- package/dist/commands/controller/windows-job.js.map +1 -0
- package/dist/commands/controller/wire-display.d.ts +5 -0
- package/dist/commands/controller/wire-display.js +11 -0
- package/dist/commands/controller/wire-display.js.map +1 -0
- package/dist/commands/skill/skills/using-daynight/SKILL.md +52 -162
- package/dist/commands/skill/skills/using-daynight/references/authorization.md +36 -0
- package/dist/commands/skill/skills/using-daynight/references/autopilot-managed-task.md +77 -193
- package/dist/commands/skill/skills/using-daynight/references/create-task.md +31 -186
- package/dist/commands/skill/skills/using-daynight/references/final-acceptance.md +25 -0
- package/dist/commands/skill/skills/using-daynight/references/goal.md +46 -243
- package/dist/commands/skill/skills/using-daynight/references/handbook.md +37 -294
- package/dist/commands/skill/skills/using-daynight/references/handoff.md +33 -91
- package/dist/commands/skill/skills/using-daynight/references/project-management.md +24 -0
- package/dist/commands/skill/skills/using-daynight/references/run-task.md +18 -59
- package/dist/commands/skill/skills/using-daynight/references/setup.md +16 -0
- package/dist/commands/skill/skills/using-daynight/references/task-content.md +80 -177
- package/dist/commands/skill/skills/using-daynight/references/task-execution.md +34 -126
- package/dist/commands/skill/skills/using-daynight/references/task-management.md +135 -0
- package/dist/commands/skill/skills/using-daynight/references/write-safety.md +34 -0
- package/dist/commands/task/command.js +5 -3
- package/dist/commands/task/command.js.map +1 -1
- package/dist/commands/task/definition.js +4 -2
- package/dist/commands/task/definition.js.map +1 -1
- package/dist/commands/task/rendering.d.ts +1 -0
- package/dist/commands/task/rendering.js +10 -1
- package/dist/commands/task/rendering.js.map +1 -1
- package/dist/commands/worker/backend.d.ts +7 -0
- package/dist/commands/worker/backend.js +7 -0
- package/dist/commands/worker/backend.js.map +1 -0
- package/dist/commands/worker/backends/grant-renewal.d.ts +13 -0
- package/dist/commands/worker/backends/grant-renewal.js +42 -0
- package/dist/commands/worker/backends/grant-renewal.js.map +1 -0
- package/dist/commands/worker/backends/session-api.d.ts +66 -0
- package/dist/commands/worker/backends/session-api.js +84 -0
- package/dist/commands/worker/backends/session-api.js.map +1 -0
- package/dist/commands/worker/backends/web-process.d.ts +79 -0
- package/dist/commands/worker/backends/web-process.js +156 -0
- package/dist/commands/worker/backends/web-process.js.map +1 -0
- package/dist/commands/worker/backends/web-store.d.ts +49 -0
- package/dist/commands/worker/backends/web-store.js +323 -0
- package/dist/commands/worker/backends/web-store.js.map +1 -0
- package/dist/commands/worker/backends/web-types.d.ts +83 -0
- package/dist/commands/worker/backends/web-types.js +3 -0
- package/dist/commands/worker/backends/web-types.js.map +1 -0
- package/dist/commands/worker/backends/web.d.ts +26 -0
- package/dist/commands/worker/backends/web.js +178 -0
- package/dist/commands/worker/backends/web.js.map +1 -0
- package/dist/commands/worker/config.js +12 -5
- package/dist/commands/worker/config.js.map +1 -1
- package/dist/commands/worker/control.d.ts +2 -0
- package/dist/commands/worker/control.js +11 -4
- package/dist/commands/worker/control.js.map +1 -1
- package/dist/commands/worker/coordinator.d.ts +10 -1
- package/dist/commands/worker/coordinator.js +153 -24
- package/dist/commands/worker/coordinator.js.map +1 -1
- package/dist/commands/worker/herdr/agents.js +5 -4
- package/dist/commands/worker/herdr/agents.js.map +1 -1
- package/dist/commands/worker/herdr/arguments.js +9 -4
- package/dist/commands/worker/herdr/arguments.js.map +1 -1
- package/dist/commands/worker/herdr/claude-input.d.ts +2 -0
- package/dist/commands/worker/herdr/claude-input.js +20 -0
- package/dist/commands/worker/herdr/claude-input.js.map +1 -0
- package/dist/commands/worker/herdr/command.d.ts +11 -2
- package/dist/commands/worker/herdr/command.js +23 -8
- package/dist/commands/worker/herdr/command.js.map +1 -1
- package/dist/commands/worker/herdr/instance.d.ts +5 -1
- package/dist/commands/worker/herdr/instance.js +31 -1
- package/dist/commands/worker/herdr/instance.js.map +1 -1
- package/dist/commands/worker/herdr/preflight.d.ts +1 -1
- package/dist/commands/worker/herdr/preflight.js +34 -15
- package/dist/commands/worker/herdr/preflight.js.map +1 -1
- package/dist/commands/worker/herdr/version-probe.d.ts +13 -0
- package/dist/commands/worker/herdr/version-probe.js +21 -0
- package/dist/commands/worker/herdr/version-probe.js.map +1 -0
- package/dist/commands/worker/herdr.js +7 -7
- package/dist/commands/worker/herdr.js.map +1 -1
- package/dist/commands/worker/index.d.ts +2 -0
- package/dist/commands/worker/index.js +1 -1
- package/dist/commands/worker/index.js.map +1 -1
- package/dist/commands/worker/prompts.js +5 -1
- package/dist/commands/worker/prompts.js.map +1 -1
- package/dist/commands/worker/remote.d.ts +3 -1
- package/dist/commands/worker/remote.js +4 -0
- package/dist/commands/worker/remote.js.map +1 -1
- package/dist/commands/worker/reporter.d.ts +14 -0
- package/dist/commands/worker/reporter.js +174 -0
- package/dist/commands/worker/reporter.js.map +1 -0
- package/dist/commands/worker/repositories.js +2 -2
- package/dist/commands/worker/repositories.js.map +1 -1
- package/dist/commands/worker/runtime.d.ts +2 -0
- package/dist/commands/worker/runtime.js +76 -11
- package/dist/commands/worker/runtime.js.map +1 -1
- package/dist/commands/worker/setup-environment.d.ts +2 -1
- package/dist/commands/worker/setup-environment.js +10 -4
- package/dist/commands/worker/setup-environment.js.map +1 -1
- package/dist/commands/worker/setup.js +5 -5
- package/dist/commands/worker/setup.js.map +1 -1
- package/dist/commands/worker/store.d.ts +2 -1
- package/dist/commands/worker/store.js +19 -9
- package/dist/commands/worker/store.js.map +1 -1
- package/dist/commands/worker/telemetry.d.ts +22 -0
- package/dist/commands/worker/telemetry.js +265 -0
- package/dist/commands/worker/telemetry.js.map +1 -0
- package/dist/commands/worker/types.d.ts +4 -1
- package/dist/session/controller-protocol.d.ts +245 -0
- package/dist/session/controller-protocol.js +218 -0
- package/dist/session/controller-protocol.js.map +1 -0
- package/dist/session/controls.d.ts +28 -0
- package/dist/session/controls.js +37 -0
- package/dist/session/controls.js.map +1 -0
- package/dist/session/protocol.d.ts +290 -0
- package/dist/session/protocol.js +307 -0
- package/dist/session/protocol.js.map +1 -0
- 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 {};
|