@scotthuang/agent-knock-knock 0.14.0 → 0.14.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +11 -8
  3. package/dist/src/backend-public-progress.d.ts +38 -0
  4. package/dist/src/backend-public-progress.js +106 -0
  5. package/dist/src/backend-public-progress.js.map +1 -0
  6. package/dist/src/backend-recovery-semantic.js +5 -5
  7. package/dist/src/backend-recovery-semantic.js.map +1 -1
  8. package/dist/src/backend-task-recovery.js +2 -1
  9. package/dist/src/backend-task-recovery.js.map +1 -1
  10. package/dist/src/cli-core.js +2 -2
  11. package/dist/src/cli-core.js.map +1 -1
  12. package/dist/src/codex-app-server-read-client.d.ts +3 -0
  13. package/dist/src/codex-app-server-read-client.js.map +1 -1
  14. package/dist/src/codex-async-question-adapter.js +18 -9
  15. package/dist/src/codex-async-question-adapter.js.map +1 -1
  16. package/dist/src/codex-lifecycle-compatibility.d.ts +1 -1
  17. package/dist/src/codex-lifecycle-compatibility.js +5 -3
  18. package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
  19. package/dist/src/codex-native-cli-adapter.js +55 -9
  20. package/dist/src/codex-native-cli-adapter.js.map +1 -1
  21. package/dist/src/codex-native-client-rpc.js +5 -1
  22. package/dist/src/codex-native-client-rpc.js.map +1 -1
  23. package/dist/src/codex-native-client.js +14 -8
  24. package/dist/src/codex-native-client.js.map +1 -1
  25. package/dist/src/codex-native-public-projection.d.ts +2 -0
  26. package/dist/src/codex-native-public-projection.js +8 -4
  27. package/dist/src/codex-native-public-projection.js.map +1 -1
  28. package/dist/src/codex-native-task-service.js +2 -1
  29. package/dist/src/codex-native-task-service.js.map +1 -1
  30. package/dist/src/codex-native-types.d.ts +4 -2
  31. package/dist/src/codex-native-types.js.map +1 -1
  32. package/dist/src/codex-permission-surface.d.ts +2 -2
  33. package/dist/src/codex-permission-surface.js +62 -4
  34. package/dist/src/codex-permission-surface.js.map +1 -1
  35. package/dist/src/codex-status-history-navigation.js +2 -6
  36. package/dist/src/codex-status-history-navigation.js.map +1 -1
  37. package/dist/src/codex-terminal-agent-adapter.d.ts +1 -0
  38. package/dist/src/codex-terminal-agent-adapter.js +10 -5
  39. package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
  40. package/dist/src/desktop-cli-adapter.js +25 -4
  41. package/dist/src/desktop-cli-adapter.js.map +1 -1
  42. package/dist/src/desktop-snapshot.js +5 -0
  43. package/dist/src/desktop-snapshot.js.map +1 -1
  44. package/dist/src/desktop-task-recovery.js +2 -1
  45. package/dist/src/desktop-task-recovery.js.map +1 -1
  46. package/dist/src/desktop-task-service.js +2 -1
  47. package/dist/src/desktop-task-service.js.map +1 -1
  48. package/dist/src/desktop-types.d.ts +2 -0
  49. package/dist/src/desktop-types.js.map +1 -1
  50. package/dist/src/monitor-deadline-policy.d.ts +8 -0
  51. package/dist/src/monitor-deadline-policy.js +16 -0
  52. package/dist/src/monitor-deadline-policy.js.map +1 -0
  53. package/dist/src/semantic-tool-command-helpers.js +1 -1
  54. package/dist/src/semantic-tool-command-helpers.js.map +1 -1
  55. package/dist/src/semantic-tool-descriptions.js +4 -1
  56. package/dist/src/semantic-tool-descriptions.js.map +1 -1
  57. package/dist/src/semantic-tool-runtime.js +23 -3
  58. package/dist/src/semantic-tool-runtime.js.map +1 -1
  59. package/dist/src/terminal-command-cli-adapter.js +4 -4
  60. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  61. package/dist/src/terminal-command-dispatch-preparation.js +2 -1
  62. package/dist/src/terminal-command-dispatch-preparation.js.map +1 -1
  63. package/dist/src/terminal-model-control-profile.d.ts +2 -1
  64. package/dist/src/terminal-model-control-profile.js +5 -2
  65. package/dist/src/terminal-model-control-profile.js.map +1 -1
  66. package/dist/src/terminal-monitor-launch-plan.js +3 -2
  67. package/dist/src/terminal-monitor-launch-plan.js.map +1 -1
  68. package/dist/src/terminal-monitor-supervision-cli-adapter.js +2 -2
  69. package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -1
  70. package/dist/src/terminal-native-inspection-profile.js +2 -0
  71. package/dist/src/terminal-native-inspection-profile.js.map +1 -1
  72. package/dist/src/terminal-permission-control-bridge.js +1 -1
  73. package/dist/src/terminal-permission-control-bridge.js.map +1 -1
  74. package/dist/src/terminal-permission-control-list-projection.d.ts +1 -1
  75. package/dist/src/terminal-permission-control.js +1 -1
  76. package/dist/src/terminal-permission-control.js.map +1 -1
  77. package/dist/src/terminal-questionnaire-adapter.js +10 -5
  78. package/dist/src/terminal-questionnaire-adapter.js.map +1 -1
  79. package/dist/src/terminal-submission-retry-reconciliation.js +2 -2
  80. package/dist/src/terminal-submission-retry-reconciliation.js.map +1 -1
  81. package/dist/src/terminal-watch-cli-adapter.js +4 -4
  82. package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
  83. package/docs/backend-task-recovery.md +9 -0
  84. package/docs/codex-0.162.1-compatibility.md +198 -0
  85. package/docs/codex-cli-native-compatibility.md +10 -7
  86. package/docs/openclaw-operations.md +1 -1
  87. package/docs/operator-guide.md +29 -0
  88. package/openclaw.plugin.json +1 -1
  89. package/package.json +1 -1
  90. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +2 -2
@@ -0,0 +1,198 @@
1
+ # Codex CLI 0.162.1 compatibility
2
+
3
+ AKK 0.14.2 adapts the Codex CLI 0.162.1 frontend and reviews its shared
4
+ app-server contract. This is an operation-specific compatibility review, not a
5
+ new numeric minimum or a promise that future Codex versions use the same UI.
6
+ The [CLI direct-control guide](codex-cli-native-compatibility.md) describes the
7
+ separate shared-backend route, which does not need tmux or Herdr.
8
+
9
+ ## Native status and error contract
10
+
11
+ Codex changed the `/status` informational usage link from
12
+ `https://chatgpt.com/codex/settings/usage` to
13
+ `https://chatgpt.com/settings/usage`. AKK previously accepted only the old
14
+ complete line. A real 0.162.1 inspection dispatched `/status` once and displayed
15
+ the correct native session, but AKK could not prove the fresh complete result
16
+ because its closed card parser rejected that new line.
17
+
18
+ The recorded error was that Enter had been dispatched exactly once without a
19
+ proven fresh exact result. The controller's later JSON parse error was
20
+ secondary: the semantic tool had thrown that failure and the Host presented a
21
+ plain-text error. It was not evidence of malformed app-server JSON.
22
+
23
+ Both complete-card parsing and bounded clipped-history recovery now accept
24
+ the two exact official informational lines. They still reject unknown prose,
25
+ duplicate or malformed identity fields, stale cards, changed versions and
26
+ unproven closing surfaces. The usage link is never identity evidence.
27
+
28
+ Native-inspection execution failures now retain JSON `content` and `details`
29
+ with `isError: true`, `error_code: "AKK_NATIVE_INSPECTION_FAILED"`, a sanitized
30
+ diagnostic, `do_not_retry: true` and `safe_to_retry: false`. A failure to parse
31
+ the result does not prove that terminal input never happened. Parameter
32
+ validation and abort semantics, CLI exit status and stderr remain unchanged.
33
+
34
+ ## Terminal interaction contracts
35
+
36
+ The 0.162.1 macOS asynchronous question surface uses `⇧←`/`⇧→` and `⌃]`
37
+ instead of the older textual Shift/Control hints. AKK uses a distinct exact
38
+ profile, including complete footer and question-identity checks. Older
39
+ frontends keep their own grammar; mixed, clipped or unknown keymaps never
40
+ authorize input. Native status may recognize closed queue hints as display
41
+ information without granting answer authority.
42
+
43
+ The model and built-in permission menus receive an exact 0.162.1 profile.
44
+ Model inspection retains the mandatory single current-model marker and exact
45
+ scope footer; a missing default badge does not invent a persisted default.
46
+ Permission selection retains same-thread, same-catalog and effective-result
47
+ checks, including the native Full Access confirmation. Backend per-thread
48
+ permissions and terminal menu actions remain separate capabilities.
49
+
50
+ The dedicated live check also found a second UI change: Full Access confirmation
51
+ moved from an inline picker to a centered 72-column overlay with transcript and
52
+ composer content still visible behind it. Its warning and choices did not
53
+ change. The old tail-only parser correctly stopped before confirming because
54
+ it could not prove that new surface. The 0.162.1 adapter now recognizes the
55
+ exact version-bound styled rectangle, full warning, both choices and selected
56
+ row, while retaining fresh-frame and terminal identity checks. Ambiguous
57
+ background column widths or control sequences still fail closed.
58
+
59
+ Blocking `request_user_input` has its own 0.162.1 v5 profile. Its multi-question
60
+ free-text footer uses the exact `⌃p / ⌃n change question` spelling; the
61
+ canonical Other option's notes description remains unchanged. The reviewed
62
+ ordinary option, free-text, notes and unanswered-confirmation upstream snapshots
63
+ are unchanged from 0.160.0. Regressions cover the new wrapped footer,
64
+ profile-bound interaction IDs and rejection of secrets, mixed keymaps and
65
+ changed submit instructions. This source/regression evidence is separate from
66
+ the live question paths listed below.
67
+
68
+ ## Backend protocol review
69
+
70
+ The retained official binaries generated 875 experimental TypeScript schema
71
+ files for 0.160.0 and 888 for 0.162.1: 13 added, 23 changed and none removed.
72
+ The complete schema sets are not identical. The reviewed core schemas for
73
+ initialization, thread identity/status, loaded-thread listing, thread reads,
74
+ paged turn/item reads, resume, settings updates, steering, command/file
75
+ approval, user input, model listing and interruption are byte-identical.
76
+ Schema or source agreement does not replace runtime response validation or
77
+ prove that a mutation succeeded.
78
+
79
+ The additive changes include `Turn.rootTurnId`, optional `parentTurnId` and
80
+ `rootTurnId` on turn start, `MessagePhase.partial_answer`, and model/effort
81
+ metadata on sub-agent activity. Existing parsers tolerate these additions
82
+ without treating them as new authority.
83
+
84
+ Regression coverage preserves the exact selected turn when sibling turns
85
+ share a `rootTurnId`. An `agentMessage` with `phase: "partial_answer"` is not a
86
+ completed task or a final answer. Native completion state, complete item reads
87
+ and the original turn ID remain necessary for final callbacks. Partial answers
88
+ also remain outside the commentary-only public progress projection. Multiline
89
+ asynchronous question titles, URLs and answers retain their complete native
90
+ question identity and are encoded through the existing structured answer
91
+ envelope, with no automatic duplicate response.
92
+
93
+ The upstream resume path in both reviewed versions requires persisted history.
94
+ A newly loaded, idle, empty thread may expose live metadata before any rollout
95
+ exists. AKK preserves that verified identity as
96
+ `history_state: "unmaterialized"`, but does not advertise Send or permission
97
+ actions that require a native subscription. Status and native inspection can
98
+ return the fresh idle metadata with
99
+ `subscription_state: "unavailable_unmaterialized_history"` and
100
+ `observation_error: "native_subscription_unmaterialized"`. Its
101
+ `interaction_requests_scanned: false` and null pending-interaction count mean
102
+ requests were not scanned, rather than proving that no question or approval
103
+ exists. This diagnostic fallback requires the exact missing-rollout condition
104
+ and a fresh same-thread idle/empty read; it does not accept unrelated failures.
105
+
106
+ ## Version and route boundaries
107
+
108
+ | Route | Compatibility rule |
109
+ | --- | --- |
110
+ | Direct shared-backend CLI | Live identity and method/response contracts govern availability; no exact-version allowlist or numeric minimum is introduced. |
111
+ | Terminal paginated interaction writes | Add only the audited **frontend 0.162.1 / app-server 0.162.1** pair. Existing older audited pairs remain; 0.162.1/0.162.0 and 0.162.1/0.162.2 are not admitted as write pairs. |
112
+ | Terminal native status and controls | The observed process version selects the appropriate profile; exact process, pane, native thread, composer and current UI checks still apply. |
113
+ | Desktop | No new Desktop profile. Native writes retain the exact macOS **26.1002.52244 / build 13536** requirement and verified live owner. |
114
+
115
+ A thread's stored `cliVersion` is creation metadata. It cannot prove the
116
+ version of a currently attached frontend. Same-directory history cannot
117
+ merge a terminal with a shared-backend thread; the route requires exact native
118
+ identity. Busy/blocked state or an uncertain dispatch never triggers a retry
119
+ through another transport.
120
+
121
+ ## Verification record
122
+
123
+ The dedicated live matrix is complete. The table distinguishes operations
124
+ actually executed from source/regression-only coverage and retained historical
125
+ evidence. The formal release gate also passed as recorded below.
126
+
127
+ | Evidence | Current scope |
128
+ | --- | --- |
129
+ | Earlier 0.14.1 targeted live proof | macOS CLI 0.162.1 + shared app-server 0.162.1: bounded public progress during an active task, 720-minute Send monitoring, one local completion acknowledgement and idempotent Send. |
130
+ | Dedicated frontend/backend pair | macOS CLI 0.162.1 + shared app-server 0.162.1, launched through the existing `mycodes --remote` wrapper in a dedicated test session. |
131
+ | Native status, exact identity and List | Passed: the closed native `/status` transaction proved the exact thread and enabled alias coalescing; subsequent materialized-thread backend Status read the same target. |
132
+ | Unmaterialized empty thread | Passed in a separate dedicated 0.162.1/0.162.1 CLI: List withheld Send/permission offers, Status/native inspection retained verified idle identity with unscanned requests and a null pending count, and an attempted semantic Send was rejected before a native turn, Watch or callback was created. The thread stayed empty and global configuration was unchanged. |
133
+ | Model discovery | Passed: the public model-options operation read seven native models and restored the composer. Model mutation was intentionally not exercised because the existing terminal setter persists defaults; its scope remains covered by source review and regressions. |
134
+ | Backend permissions | Passed: Default, Full Access and Read Only round trips retained the selected native thread. This is backend permission evidence, not a terminal menu round-trip claim. |
135
+ | Routed Send, Status, Watch and completion | Passed: Send through the terminal alias selected the native backend, proved acceptance and a 720-minute deadline; Status using the returned native conversation ID and Watch ID read the same active turn and bounded progress. The exact turn completed with one local callback acknowledgement; idempotent Send retained the original Watch and deadline. Reading the old Watch after later turns still returned its original task's progress without later-task text. |
136
+ | Backend command/file approvals | Passed: real requests in the selected test task were approved through their exact native interaction identities; the task completed with one local callback acknowledgement and idempotent repeat handling. |
137
+ | Backend blocking and asynchronous questions | Passed: both answers to a two-question blocking request were received, and an asynchronous free-text answer retained Chinese, emoji and a newline through the final result. Each completion acknowledged once; repeated handling did not duplicate the answer or callback. |
138
+ | Terminal question surface recognition | Real captured blocking-question UI was recognized as actionable under the v5 profile; the captured asynchronous `⇧←` queue hint was recognized as collapsed. Answers in this live matrix used the backend route. Terminal answer-key injection is covered by regressions, not a new live execution claim. |
139
+ | Recovery, Renew, Watch and Unwatch | Passed: after stopping only the isolated test monitor, Recover relaunched observation with its original deadline. No-argument backend Renew used about 720 minutes. A new explicit Watch bound the same active turn with 720 minutes; Unwatch stopped only that observation while the native task continued and the original Send Watch completed once. |
140
+ | Close and accepted callback retry | Passed: Close released AKK management while preserving the same idle native thread. Retrying an already accepted callback was rejected without another notification. |
141
+ | Terminal permission mutation | Passed through the production TerminalAgentBridge and real tmux capture/input: Read Only, Ask for approval, Approve for me and Full Access each changed successfully; the new centered Full Access dialog was confirmed and the final catalog restored the initial Full Access setting. Before every input, the harness rechecked process incarnation, pane, cwd, frontend version and the same idle backend thread. Global configuration remained unchanged. |
142
+ | Older frontend/backend combinations | Regression coverage retained; no new old-version live run is claimed without a separate recorded result. |
143
+ | Desktop live | Explicitly skipped. Relevant regressions remain part of the release gate. |
144
+ | Fast regressions | Final `npm run test:fast`: 2,836 passed, zero failures. |
145
+ | Static/build checks | Type checking, architecture validation and canonical/bundled Skill consistency passed. The Skill's reviewed-version lists include 0.162.1; independent connector package versions are unchanged. |
146
+ | Full regressions | Final release-gate full suite: 3,351 passed, zero failures, on Node.js 24.18.0. |
147
+ | Runtime provenance | All 1,050 compiled runtime files matched the immutable build used for the final live matrix by individual SHA-256 comparison. |
148
+ | Formal release gate | `npm run test:release` passed: full suite, isolated OpenClaw 2026.9.1 compatibility, ClawHub runtime validation and publication dry-run. |
149
+ | Isolated OpenClaw | Loaded all 25 tools; callback, doctor, bundled Skill, tmux fixture/diagnostics, update/reinstall and uninstall checks passed. The existing user Gateway was not restarted or upgraded. |
150
+ | ClawHub/package validation | Runtime Plugin Inspector passed with zero breakages and zero warnings. `npm pack --dry-run` and ClawHub publication dry-run passed with 1,094 files; the canonical bundled Skill and this compatibility report were included, while tests, node_modules, Git metadata and private proof artifacts were excluded. Registry/download verification remains a separate publication step. |
151
+
152
+ Callback acknowledgement at a local test receiver proves AKK callback
153
+ generation/delivery and deduplication at that receiver. It does not prove a
154
+ new OpenClaw-to-WeChat delivery. No user conversation, shared daemon or Gateway
155
+ needs to be restarted to run isolated compatibility checks.
156
+
157
+ The optional general native lifecycle live-smoke was not run: paginated
158
+ new/resume remains unsupported, and the dedicated matrix above covers the
159
+ actual routes changed in this release. Desktop live verification was skipped
160
+ by explicit choice; it is not reported as passing.
161
+
162
+ An old terminal alias without current native identity can still return terminal
163
+ activity while work is active; AKK does not type `/status` into that busy
164
+ terminal to force a merge. The Send-returned native conversation and Watch
165
+ identifiers retain the exact backend route. No identity guard was relaxed to
166
+ make the alias appear resolved.
167
+
168
+ For the stopped explicit Watch, its legacy task `status` can remain `watching`;
169
+ `observation_state: "stopped"` and `observation_active: false` describe the
170
+ monitoring state. Unwatch is not native cancellation or task completion.
171
+
172
+ ## Retained limits
173
+
174
+ - Direct CLI model control and cancellation still require an eligible verified
175
+ terminal capability. Native new/clear/resume remains unsupported for these
176
+ paginated versions; adding a version profile does not enable lifecycle work.
177
+ - A newly loaded CLI thread with no materialized history is not automatically
178
+ writable through the direct adapter: upstream `thread/resume` requires stored
179
+ history. Reading its live metadata is different from acquiring a task/response
180
+ channel. Such a thread must not be advertised as Send-ready solely because it
181
+ is loaded and idle.
182
+ - The Status public body remains bounded to 800 Unicode code points, with
183
+ redaction, grapheme-safe truncation and exact-turn freshness/error reporting.
184
+ List gains no progress body or pagination changes in this release.
185
+ - The shared 720-minute monitoring hard deadline, managed-terminal 60-minute
186
+ inactivity window, existing absolute deadlines and notification deduplication
187
+ remain unchanged. Recover does not replay a task or silently renew it.
188
+ - macOS terminal glyph evidence does not establish Linux/Windows UI validation.
189
+ Desktop live behavior and other Desktop builds are not newly certified.
190
+
191
+ ## Sources
192
+
193
+ - [Official 0.162.1 release](https://github.com/openai/codex/releases/tag/rust-v0.162.1)
194
+ - [Official 0.160.0 to 0.162.1 source comparison](https://github.com/openai/codex/compare/rust-v0.160.0...rust-v0.162.1)
195
+ - [Official 0.162.1 native status card source](https://github.com/openai/codex/blob/rust-v0.162.1/codex-rs/tui/src/status/card.rs)
196
+ - [Official 0.162.1 app-server API](https://github.com/openai/codex/tree/rust-v0.162.1/codex-rs/app-server-protocol)
197
+ - [Official loaded-thread read and resume implementation](https://github.com/openai/codex/blob/rust-v0.162.1/codex-rs/app-server/src/request_processors/thread_processor.rs)
198
+ - [Earlier 0.160.0 compatibility evidence](codex-0.160.0-compatibility.md)
@@ -166,7 +166,8 @@ permit automatic replay of `sent` or `uncertain` responses.
166
166
  | Evidence | Scope |
167
167
  | --- | --- |
168
168
  | Live-tested combination, 2026-10-09 | **macOS: Codex CLI 0.160.0 + shared app-server 0.162.0**; production-adapter operations and limits are recorded below. |
169
- | Current local observation, 2026-10-10 | `codex --version` returned **0.162.1**. The installed daemon version marker and running daemon executable path also identified **0.162.1**. This read-only audit did not obtain a fresh runtime handshake or run an end-to-end task. |
169
+ | Additional targeted live proof, 2026-10-10 | **macOS: Codex CLI 0.162.1 + shared app-server 0.162.1**. Verified public Status progress while a task was in progress through the running OpenClaw plugin, an actual 720-minute Send deadline, one isolated local completion acknowledgement, and repeated Send retaining the original task/deadline. No new WeChat delivery or full native-operation matrix is claimed. |
170
+ | 0.14.2 compatibility review, 2026-10-10 | **macOS: Codex CLI 0.162.1 + shared app-server 0.162.1**. Expanded dedicated-session validation, native UI fixes and retained limits are recorded in the [operation matrix](codex-0.162.1-compatibility.md#verification-record). |
170
171
  | Runtime admission | A loaded main CLI thread, the selected local Codex home, valid stable `x.y.z` backend metadata, and the required live protocol shapes/methods. There is **no established numeric minimum** or exact version allowlist for direct control. |
171
172
  | Platform evidence | The live proof was on macOS. It does not establish a Linux/Windows direct-control validation matrix. |
172
173
 
@@ -178,12 +179,14 @@ not establish support. Unsupported methods or changed response shapes fail for
178
179
  that operation with a diagnostic; unknown state never becomes task completion.
179
180
  Prerelease version suffixes do not meet the stable version syntax check.
180
181
 
181
- The **0.162.1** installation is an observation, not a minimum requirement or a
182
- newly verified combination. No separate 0.162.1 end-to-end evidence was found in
183
- this audit. A thread's `cliVersion` is creation metadata, not proof of the
184
- currently attached frontend's executable version. The terminal TUI's
185
- [audited version pairs](codex-0.160.0-compatibility.md) govern a different
186
- adapter and must not be used as the direct-control version matrix.
182
+ The additional **0.162.1/0.162.1** proof above is limited to the stated
183
+ operations; the [0.14.2 compatibility review](codex-0.162.1-compatibility.md)
184
+ records the subsequent native UI/protocol review and its separate verification
185
+ matrix. Neither record establishes a numeric minimum. A thread's `cliVersion`
186
+ is creation metadata, not proof of the currently attached frontend's executable
187
+ version. The terminal TUI's [audited version pairs](codex-0.162.1-compatibility.md#version-and-route-boundaries)
188
+ govern a different adapter and must not be used as the direct-control version
189
+ matrix.
187
190
 
188
191
  The permission update API is experimental. Backends may evolve, so action-time
189
192
  contract checks and the actual effective settings remain necessary.
@@ -132,7 +132,7 @@ under `plugins.entries.agent-knock-knock.config`:
132
132
  | `codexHome` | Auto-detected | Optional Codex home used for native-session discovery. |
133
133
  | `idleTimeoutMinutes` | `10080` | Retention checked during controlled reconciliation. |
134
134
  | `agentTimeoutMinutes` | `60` | Terminal inactivity timeout. |
135
- | `agentHardTimeoutMinutes` | `720` | Maximum monitor lifetime. |
135
+ | `agentHardTimeoutMinutes` | `720` | New Send/Watch hard lifetime across backend and terminal routes starting in AKK 0.14.1; also the default backend Renew duration. AKK 0.14.0 backend Send/Watch used 60 minutes when this setting is omitted. |
136
136
 
137
137
  A custom `storeDir` must be a dedicated private directory. AKK initializes a
138
138
  missing or empty path and refuses a non-empty manifestless directory instead
@@ -97,6 +97,14 @@ and [Desktop guide](codex-desktop-compatibility.md) for native acceptance and
97
97
  interaction capabilities. The remainder of this section covers terminal Send,
98
98
  including its physical-input fallback and terminal response adapters.
99
99
 
100
+ Starting in AKK 0.14.1, new Send monitoring and explicit or
101
+ automatic Watch share a default **720-minute hard deadline**. Explicit request
102
+ parameters override the Host hard-timeout configuration, which overrides that
103
+ default. Save and use the Watch returned by Send; do not add another Watch merely
104
+ to obtain completion callbacks. Expiry ends observation, not the native task.
105
+ Existing saved deadlines and repeated message IDs are not extended by an upgrade.
106
+ Managed terminal inactivity remains a separate 60-minute default.
107
+
100
108
  The v30 `action_contracts` expose model-facing semantic IDs only. The trusted
101
109
  adapter privately derives and revalidates terminal, process, binding, native
102
110
  thread, composer, approval, handoff, revision, and compare-and-swap evidence.
@@ -408,6 +416,27 @@ A backend conversation Status reads the selected native conversation. Bound
408
416
  terminal Turns and Watches retain their original observation route. List
409
417
  never types into a terminal.
410
418
 
419
+ AKK 0.14.1 adds a single `progress` object to CLI
420
+ backend and Desktop Status. Conversation Status selects its current native turn;
421
+ Watch Status always selects the Watch's original turn, even after a newer task
422
+ starts. The latest public commentary and up to two short action type/status
423
+ summaries share an 800-Unicode-code-point body budget, with unused space shared
424
+ between them. Redaction precedes truncation, which preserves complete graphemes.
425
+ Reasoning, analysis, raw command output, tool arguments and diffs are excluded.
426
+ This is a progress-body limit, not a limit on the whole Status JSON. List does not
427
+ include this body, and the terminal screen contract is unchanged.
428
+
429
+ `progress.native_turn_id` identifies the selected task; `read_at` records the
430
+ read time. `latest_item_at` is a native timestamp of the displayed progress, or
431
+ `null` if none is available; it is never replaced with the read time. `truncated`
432
+ reports shortening of the selected progress body or omission of code blocks. `state: "no_public_progress"` means the read
433
+ succeeded without eligible public progress, while `state: "read_error"` means
434
+ the exact task/items could not be read completely. Neither means the task has
435
+ stopped. Missing old-turn data is never replaced with a successor's progress.
436
+ `trace` retains its existing terminal behavior; it is not an unbounded backend
437
+ progress mode. Final answers and current questions/approvals retain their own
438
+ existing fields.
439
+
411
440
  When the selected conversation is an unbound physical Codex terminal, targeted
412
441
  Status may use the existing closed `/status` identity inspection if that pane
413
442
  is safely idle. It can display a native status card to establish the exact
@@ -149,7 +149,7 @@
149
149
  "agentHardTimeoutMinutes": {
150
150
  "type": "number",
151
151
  "exclusiveMinimum": 0,
152
- "description": "Fallback lifetime ceiling for a managed terminal bridge monitor or Terminal Watch that has not produced approval or completion. Defaults to 720 minutes."
152
+ "description": "Default hard monitoring lifetime for Codex CLI backend/Desktop Send and Watch, Terminal Watch, and managed terminal tasks; also used by backend renew when minutes is omitted. Explicit call parameters take precedence. Defaults to 720 minutes. Independent of the managed terminal inactivity timeout."
153
153
  },
154
154
  "autoApprove": {
155
155
  "type": "object",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scotthuang/agent-knock-knock",
3
- "version": "0.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "Control Codex CLI through its shared backend, Codex Desktop through native IPC, and Codex or Claude Code through terminals from OpenClaw or compatible controller Hosts.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -184,7 +184,7 @@ success; never retry an uncertain repair automatically.
184
184
  For native status inspection:
185
185
 
186
186
  1. Use only a current `available_actions.native_inspect({terminal_id,inspection:"status"})` entry. Those semantic arguments are complete; never add a command or authority field.
187
- 2. Regression-tested profiles are Codex 0.146.0/0.146.1/0.147.0/0.148.0/0.149.1/0.150.1/0.151.0/0.153.0/0.153.4/0.154.0/0.155.1/0.158.0/0.159.0/0.159.2/0.159.3/0.160.0 and Claude Code 2.1.218/2.1.226/2.1.237/2.1.251/2.1.259/2.1.263/2.1.266/2.1.267/2.1.285 `inspection="status"`. Other complete `x.y.z` versions remain callable through the generic runtime profile and add a compatibility warning; actual incompatible UI or schema evidence fails at runtime and is not automatically retried. Claude success includes parsing and safely dismissing the newly opened Status panel. The inspection tool does not accept `/status` text or any arbitrary command string. `/usage`, `/cost`, `/stats`, `/usage-credits`, raw `/model`, `/compact`, and arbitrary slash commands remain unavailable; model changes use only the typed model-control tools above. Never automate bare Codex `/usage`: it opens an interactive menu whose later Enter can select an account-side usage-limit reset.
187
+ 2. Regression-tested profiles are Codex 0.146.0/0.146.1/0.147.0/0.148.0/0.149.1/0.150.1/0.151.0/0.153.0/0.153.4/0.154.0/0.155.1/0.158.0/0.159.0/0.159.2/0.159.3/0.160.0/0.162.1 and Claude Code 2.1.218/2.1.226/2.1.237/2.1.251/2.1.259/2.1.263/2.1.266/2.1.267/2.1.285 `inspection="status"`. Other complete `x.y.z` versions remain callable through the generic runtime profile and add a compatibility warning; actual incompatible UI or schema evidence fails at runtime and is not automatically retried. Claude success includes parsing and safely dismissing the newly opened Status panel. The inspection tool does not accept `/status` text or any arbitrary command string. `/usage`, `/cost`, `/stats`, `/usage-credits`, raw `/model`, `/compact`, and arbitrary slash commands remain unavailable; model changes use only the typed model-control tools above. Never automate bare Codex `/usage`: it opens an interactive menu whose later Enter can select an account-side usage-limit reset.
188
188
  3. Treat this as terminal input even though the native command is read-only. AKK privately derives a fresh binding fence and requires an idle empty composer, exact PID/process/pane/cwd/version identity, and no conflicting Turn, transition, dispatch, approval, or owner.
189
189
  4. Codex `/status` requires an exact viewport of at least 80 columns so the full Session UUID can be proven. That pre-UUID gate applies to native inspection, lifecycle, and strict Session operations that must know the UUID before terminal input. Legacy terminal-scoped ordinary tasks may send once and bind from exact native acceptance afterward without running `/status` or failing merely because the pane is narrow. Codex paginated read-contract candidates attempt their separate closed `/status` binding before physical Send. If an exact callback Watch cannot be prepared safely, AKK may prepare terminal-activity observation; report the receipt's actual callback mode and limitation.
190
190
  5. The result is valid only when AKK proves one fresh bounded native status result and the pane returns to idle. On an uncertain or unproven submission, do not retry, send Enter, clear the composer, or bypass AKK with raw terminal input.
@@ -286,7 +286,7 @@ Action-name glossary:
286
286
 
287
287
  - `status`: inspect one terminal, Turn, or Watch; it sends no native slash command.
288
288
  - `send`: deliver a new request, or perform the separately advertised immutable `retry_submission` form.
289
- - `watch` / `unwatch`: create or stop durable terminal observation; Codex 0.158.0/0.159.0/0.159.2/0.159.3/0.160.0 exact creation performs the closed `/status` transaction, while subsequent observation is read-only.
289
+ - `watch` / `unwatch`: create or stop durable terminal observation; Codex 0.158.0/0.159.0/0.159.2/0.159.3/0.160.0/0.162.1 exact creation performs the closed `/status` transaction, while subsequent observation is read-only.
290
290
  - `list_resumable_threads`, `new_thread`, and `resume_thread`: inspect or change native thread context through their closed lifecycle protocols.
291
291
  - `native_inspect`: run only an advertised closed native inspection such as `status`.
292
292
  - `model_options`, `repair_model_control`, and `set_model`: discover the current native catalog, clear only a proven model-control residue, or consume one catalog offer.