@deksden-com/dd-flow-cli 0.9.0-beta.42 → 0.9.0-beta.43

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,14 @@
1
1
  # @deksden-com/dd-flow-cli
2
2
 
3
+ ## 0.9.0-beta.43
4
+
5
+ ### Patch Changes
6
+
7
+ - 78e3eaf: Keep Codex prompt and inspection receipts compact by returning historical turn
8
+ identities and statuses without duplicating their item transcripts. Preserve the
9
+ current result, final answer, native history reference, descendants and observed
10
+ profile so long-running sessions remain within the bounded adapter reply limit.
11
+
3
12
  ## 0.9.0-beta.42
4
13
 
5
14
  ### Patch Changes
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "cli_package": "@deksden-com/dd-flow-cli",
3
- "cli_version": "0.9.0-beta.42",
4
- "cli_commit": "fb9736bf2af837404a43027631113232f0134b58",
5
- "built_at": "2026-09-09T19:11:00.722Z",
3
+ "cli_version": "0.9.0-beta.43",
4
+ "cli_commit": "387b5ce2c63b7e4f97ff240d0a22763f7cc38c47",
5
+ "built_at": "2026-09-09T21:42:22.490Z",
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deksden-com/dd-flow-cli",
3
- "version": "0.9.0-beta.42",
3
+ "version": "0.9.0-beta.43",
4
4
  "description": "Mechanical runtime CLI for dd-flow workflows.",
5
5
  "type": "module",
6
6
  "bin": {