@deksden-com/dd-flow-cli 0.9.0-beta.42 → 0.9.0-beta.44
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @deksden-com/dd-flow-cli
|
|
2
2
|
|
|
3
|
+
## 0.9.0-beta.44
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Allow a managed native session prompt to run for two hours before the outer
|
|
8
|
+
adapter watchdog cancels it, while retaining the existing short timeout for
|
|
9
|
+
non-productive adapter calls.
|
|
10
|
+
|
|
11
|
+
## 0.9.0-beta.43
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 78e3eaf: Keep Codex prompt and inspection receipts compact by returning historical turn
|
|
16
|
+
identities and statuses without duplicating their item transcripts. Preserve the
|
|
17
|
+
current result, final answer, native history reference, descendants and observed
|
|
18
|
+
profile so long-running sessions remain within the bounded adapter reply limit.
|
|
19
|
+
|
|
3
20
|
## 0.9.0-beta.42
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/dist/build-info.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"cli_package": "@deksden-com/dd-flow-cli",
|
|
3
|
-
"cli_version": "0.9.0-beta.
|
|
4
|
-
"cli_commit": "
|
|
5
|
-
"built_at": "2026-09-
|
|
3
|
+
"cli_version": "0.9.0-beta.44",
|
|
4
|
+
"cli_commit": "b42ef93d9732bcce8ad290e0e456d7d394159af2",
|
|
5
|
+
"built_at": "2026-09-10T00:57:09.067Z",
|
|
6
6
|
"built_with_canon": {
|
|
7
7
|
"version": "4.1.0",
|
|
8
8
|
"commit": "ef349bf47cba1c987468e51d73a0dbadbd48dc1f",
|
|
@@ -165,6 +165,15 @@ function profile(options) { return { harness: "codex-desktop", model: options.mo
|
|
|
165
165
|
function threadId(result) { const id = result?.thread?.id ?? result?.threadId; return required(id, "Codex thread id"); }
|
|
166
166
|
function directChildren(bridge, sessionId) { return typeof bridge?.directChildren === "function" ? bridge.directChildren(sessionId) : []; }
|
|
167
167
|
|
|
168
|
+
function threadReceipt(thread) {
|
|
169
|
+
// Thread reads can include the whole transcript even with includeTurns:false.
|
|
170
|
+
// Item evidence lives in the native history/journal, not each command reply.
|
|
171
|
+
return { ...thread, ...(Array.isArray(thread.turns) ? { turns: thread.turns.map(turn => ({
|
|
172
|
+
id: turn?.id ?? null, status: turn?.status ?? null,
|
|
173
|
+
startedAt: turn?.startedAt ?? null, completedAt: turn?.completedAt ?? null
|
|
174
|
+
})) } : {}) };
|
|
175
|
+
}
|
|
176
|
+
|
|
168
177
|
export async function doctor(options = {}) {
|
|
169
178
|
const codex_cli = parseCodexCliVersion(await commandText(options.bin ?? process.env.DD_CODEX_BIN ?? "codex", ["--version"]));
|
|
170
179
|
return await withBridge(options, async () => ({ harness: "codex-desktop", app_server: "available", observed_runtime: { codex_cli, dd_harness_contract: "dd-codex-harness@1" }, requested_profile: profile(options), observed_at: now() }));
|
|
@@ -235,7 +244,7 @@ export async function promptSessionWithBridge(bridge, options) {
|
|
|
235
244
|
const completed = await waitForTurn(bridge, sessionId, turnId, options.timeoutMs ?? 1_800_000, options, cwd);
|
|
236
245
|
const thread = await readCompletedThread(bridge, sessionId);
|
|
237
246
|
const assistantText = latestAssistantText(thread) ?? latestAssistantText(completed);
|
|
238
|
-
return { harness: "codex-desktop", provider_session_id: sessionId, adapter_session_id: sessionId, turn_id: turnId, status: "completed", turn: completed, ...(thread ? { thread } : {}), descendants: directChildren(bridge, sessionId), ...(assistantText ? { assistant_text: assistantText } : {}), requested_profile: profile(options), observed_profile: await observeCodexProfile(bridge, options, sessionId, { model: thread?.model ?? null, reasoning: thread?.reasoningEffort ?? null, provider: thread?.modelProvider ?? null }, "thread/read.after_turn") };
|
|
247
|
+
return { harness: "codex-desktop", provider_session_id: sessionId, adapter_session_id: sessionId, turn_id: turnId, status: "completed", turn: completed, ...(thread ? { thread: threadReceipt(thread) } : {}), descendants: directChildren(bridge, sessionId), ...(assistantText ? { assistant_text: assistantText } : {}), requested_profile: profile(options), observed_profile: await observeCodexProfile(bridge, options, sessionId, { model: thread?.model ?? null, reasoning: thread?.reasoningEffort ?? null, provider: thread?.modelProvider ?? null }, "thread/read.after_turn") };
|
|
239
248
|
}
|
|
240
249
|
|
|
241
250
|
async function ensureThreadLoaded(bridge, sessionId, options, cwd) {
|
|
@@ -370,7 +379,7 @@ export async function inspectSession(options) {
|
|
|
370
379
|
|
|
371
380
|
export async function inspectSessionWithBridge(bridge, options) {
|
|
372
381
|
const sessionId = required(options.sessionId, "--session-id"); const value = await bridge.request("thread/read", { threadId: sessionId, includeTurns: false }); const thread = value?.thread ?? value;
|
|
373
|
-
return { harness: "codex-desktop", provider_session_id: sessionId, adapter_session_id: sessionId, status: thread.status ?? null, thread, descendants: directChildren(bridge, sessionId), requested_profile: profile(options), observed_profile: await observeCodexProfile(bridge, options, sessionId, { model: thread.model ?? null, reasoning: thread.reasoningEffort ?? null, provider: thread.modelProvider ?? null }, "thread/read") };
|
|
382
|
+
return { harness: "codex-desktop", provider_session_id: sessionId, adapter_session_id: sessionId, status: thread.status ?? null, thread: threadReceipt(thread), descendants: directChildren(bridge, sessionId), requested_profile: profile(options), observed_profile: await observeCodexProfile(bridge, options, sessionId, { model: thread.model ?? null, reasoning: thread.reasoningEffort ?? null, provider: thread.modelProvider ?? null }, "thread/read") };
|
|
374
383
|
}
|
|
375
384
|
|
|
376
385
|
export async function cancelSession(options) {
|
|
@@ -60,7 +60,7 @@ export async function controllerAdapter(context, row, manifest, session, args, a
|
|
|
60
60
|
appendEvent(context, row.controller_id, "operation_requested", { operation_id: operationId, operation: args.slice(0, 2), session_id: session.id || null });
|
|
61
61
|
try {
|
|
62
62
|
assertOwner?.();
|
|
63
|
-
const receipt = await runHarnessAdapter({ executable, args, env: controllerEnvironment(context, manifest, session), operationId, runtimeOwner: session.owner, timeoutMs: args[0] === "session" && args[1] === "prompt" ?
|
|
63
|
+
const receipt = await runHarnessAdapter({ executable, args, env: controllerEnvironment(context, manifest, session), operationId, runtimeOwner: session.owner, timeoutMs: args[0] === "session" && args[1] === "prompt" ? 2 * 60 * 60_000 : 120_000 });
|
|
64
64
|
context.db.run("UPDATE run_controller_operations SET receipt_json = ?, updated_at = ? WHERE operation_id = ?", [JSON.stringify(receipt), context.now(), operationId]);
|
|
65
65
|
const target = args[args.indexOf("--session-id") + 1];
|
|
66
66
|
if (args[0] === "session" && args.includes("--session-id") && adapterSessionId(receipt) !== target)
|