@scotthuang/agent-knock-knock 0.14.2 → 0.14.4

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 (131) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +233 -108
  3. package/dist/src/backend-callback-public-projection.d.ts +27 -0
  4. package/dist/src/backend-callback-public-projection.js +58 -0
  5. package/dist/src/backend-callback-public-projection.js.map +1 -0
  6. package/dist/src/backend-public-progress.d.ts +2 -0
  7. package/dist/src/backend-public-progress.js +4 -1
  8. package/dist/src/backend-public-progress.js.map +1 -1
  9. package/dist/src/backend-recovery-semantic.js +5 -4
  10. package/dist/src/backend-recovery-semantic.js.map +1 -1
  11. package/dist/src/callback-transport.d.ts +1 -1
  12. package/dist/src/callback-transport.js +2 -2
  13. package/dist/src/callback-transport.js.map +1 -1
  14. package/dist/src/claude-conversation-routing-cli-adapter.d.ts +2 -0
  15. package/dist/src/claude-conversation-routing-cli-adapter.js +127 -0
  16. package/dist/src/claude-conversation-routing-cli-adapter.js.map +1 -0
  17. package/dist/src/claude-conversation-routing-identity.d.ts +11 -0
  18. package/dist/src/claude-conversation-routing-identity.js +46 -0
  19. package/dist/src/claude-conversation-routing-identity.js.map +1 -0
  20. package/dist/src/claude-native-cli-adapter.d.ts +18 -0
  21. package/dist/src/claude-native-cli-adapter.js +159 -0
  22. package/dist/src/claude-native-cli-adapter.js.map +1 -0
  23. package/dist/src/claude-native-client.d.ts +57 -0
  24. package/dist/src/claude-native-client.js +197 -0
  25. package/dist/src/claude-native-client.js.map +1 -0
  26. package/dist/src/claude-native-discovery.d.ts +20 -0
  27. package/dist/src/claude-native-discovery.js +111 -0
  28. package/dist/src/claude-native-discovery.js.map +1 -0
  29. package/dist/src/claude-native-identity.d.ts +29 -0
  30. package/dist/src/claude-native-identity.js +54 -0
  31. package/dist/src/claude-native-identity.js.map +1 -0
  32. package/dist/src/claude-native-monitor.d.ts +13 -0
  33. package/dist/src/claude-native-monitor.js +123 -0
  34. package/dist/src/claude-native-monitor.js.map +1 -0
  35. package/dist/src/claude-native-observation.d.ts +54 -0
  36. package/dist/src/claude-native-observation.js +418 -0
  37. package/dist/src/claude-native-observation.js.map +1 -0
  38. package/dist/src/claude-native-outbox.d.ts +16 -0
  39. package/dist/src/claude-native-outbox.js +122 -0
  40. package/dist/src/claude-native-outbox.js.map +1 -0
  41. package/dist/src/claude-native-peer-helper.d.ts +2 -0
  42. package/dist/src/claude-native-peer-helper.js +121 -0
  43. package/dist/src/claude-native-peer-helper.js.map +1 -0
  44. package/dist/src/claude-native-public-projection.d.ts +605 -0
  45. package/dist/src/claude-native-public-projection.js +98 -0
  46. package/dist/src/claude-native-public-projection.js.map +1 -0
  47. package/dist/src/claude-native-runtime.d.ts +25 -0
  48. package/dist/src/claude-native-runtime.js +74 -0
  49. package/dist/src/claude-native-runtime.js.map +1 -0
  50. package/dist/src/claude-native-state-store.d.ts +49 -0
  51. package/dist/src/claude-native-state-store.js +96 -0
  52. package/dist/src/claude-native-state-store.js.map +1 -0
  53. package/dist/src/claude-native-task-service.d.ts +70 -0
  54. package/dist/src/claude-native-task-service.js +327 -0
  55. package/dist/src/claude-native-task-service.js.map +1 -0
  56. package/dist/src/cli-core.js +2 -1
  57. package/dist/src/cli-core.js.map +1 -1
  58. package/dist/src/cli-runtime-context.d.ts +2 -0
  59. package/dist/src/cli-runtime-context.js.map +1 -1
  60. package/dist/src/codex-native-cli-adapter.js +3 -4
  61. package/dist/src/codex-native-cli-adapter.js.map +1 -1
  62. package/dist/src/codex-native-client.d.ts +2 -0
  63. package/dist/src/codex-native-client.js +13 -3
  64. package/dist/src/codex-native-client.js.map +1 -1
  65. package/dist/src/codex-native-outbox.js +7 -5
  66. package/dist/src/codex-native-outbox.js.map +1 -1
  67. package/dist/src/codex-native-public-projection.d.ts +24 -8
  68. package/dist/src/codex-native-public-projection.js +38 -15
  69. package/dist/src/codex-native-public-projection.js.map +1 -1
  70. package/dist/src/codex-native-runtime.d.ts +1 -1
  71. package/dist/src/codex-native-runtime.js +15 -2
  72. package/dist/src/codex-native-runtime.js.map +1 -1
  73. package/dist/src/codex-native-semantic.js +15 -5
  74. package/dist/src/codex-native-semantic.js.map +1 -1
  75. package/dist/src/codex-native-state-store.d.ts +2 -0
  76. package/dist/src/codex-native-state-store.js +4 -2
  77. package/dist/src/codex-native-state-store.js.map +1 -1
  78. package/dist/src/codex-native-task-service.js +20 -4
  79. package/dist/src/codex-native-task-service.js.map +1 -1
  80. package/dist/src/conversation-list.js +30 -3
  81. package/dist/src/conversation-list.js.map +1 -1
  82. package/dist/src/conversation-routing-cli-adapter.d.ts +2 -7
  83. package/dist/src/conversation-routing-cli-adapter.js +4 -2
  84. package/dist/src/conversation-routing-cli-adapter.js.map +1 -1
  85. package/dist/src/conversation-routing-commands.d.ts +5 -0
  86. package/dist/src/conversation-routing-commands.js.map +1 -1
  87. package/dist/src/desktop-command-presentation.js +3 -1
  88. package/dist/src/desktop-command-presentation.js.map +1 -1
  89. package/dist/src/desktop-public-projection.js +3 -6
  90. package/dist/src/desktop-public-projection.js.map +1 -1
  91. package/dist/src/desktop-task-service.js +10 -3
  92. package/dist/src/desktop-task-service.js.map +1 -1
  93. package/dist/src/durable-notification-kernel.d.ts +10 -0
  94. package/dist/src/durable-notification-kernel.js +18 -1
  95. package/dist/src/durable-notification-kernel.js.map +1 -1
  96. package/dist/src/host-monitor-reconciliation.js +9 -1
  97. package/dist/src/host-monitor-reconciliation.js.map +1 -1
  98. package/dist/src/host-profile-runtime.js +3 -1
  99. package/dist/src/host-profile-runtime.js.map +1 -1
  100. package/dist/src/local-codex-cli-adapter.js +4 -3
  101. package/dist/src/local-codex-cli-adapter.js.map +1 -1
  102. package/dist/src/openclaw-callback-evidence.d.ts +17 -0
  103. package/dist/src/openclaw-callback-evidence.js +75 -0
  104. package/dist/src/openclaw-callback-evidence.js.map +1 -0
  105. package/dist/src/openclaw-callback-transport.js +90 -9
  106. package/dist/src/openclaw-callback-transport.js.map +1 -1
  107. package/dist/src/semantic-conversation-target.js +1 -1
  108. package/dist/src/semantic-conversation-target.js.map +1 -1
  109. package/dist/src/semantic-tool-command-helpers.d.ts +0 -1
  110. package/dist/src/semantic-tool-command-helpers.js +45 -19
  111. package/dist/src/semantic-tool-command-helpers.js.map +1 -1
  112. package/dist/src/semantic-tool-descriptions.js +3 -3
  113. package/dist/src/semantic-tool-descriptions.js.map +1 -1
  114. package/dist/src/semantic-tool-list-projection.js +13 -6
  115. package/dist/src/semantic-tool-list-projection.js.map +1 -1
  116. package/dist/src/semantic-tool-presentation.js +17 -3
  117. package/dist/src/semantic-tool-presentation.js.map +1 -1
  118. package/dist/src/semantic-tool-runtime.js +8 -1
  119. package/dist/src/semantic-tool-runtime.js.map +1 -1
  120. package/dist/src/semantic-tool-schemas.js +15 -15
  121. package/dist/src/semantic-tool-schemas.js.map +1 -1
  122. package/dist/src/terminal-list-cli-adapter.js +5 -1
  123. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  124. package/dist/src/terminal-list-ownership-service.js +1 -1
  125. package/dist/src/terminal-list-ownership-service.js.map +1 -1
  126. package/docs/backend-task-recovery.md +43 -0
  127. package/docs/claude-cli-direct.md +60 -0
  128. package/docs/codex-0.162.1-compatibility.md +65 -10
  129. package/docs/codex-cli-native-compatibility.md +21 -0
  130. package/package.json +2 -2
  131. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +14 -4
@@ -0,0 +1,54 @@
1
+ import { type BackendPublicProgress } from "./backend-public-progress.js";
2
+ import { type ClaudeNativeCatalogEntry, type ClaudeNativeIdentity } from "./claude-native-identity.js";
3
+ export interface ClaudeNativeTranscriptSource {
4
+ relativePath: string;
5
+ device: string;
6
+ inode: string;
7
+ }
8
+ export interface ClaudeNativeToolObservation {
9
+ toolUseId: string;
10
+ name: string;
11
+ status: "pending" | "completed" | "failed";
12
+ }
13
+ export interface ClaudeNativeInputObservation {
14
+ inputUuid: string;
15
+ messageId?: string;
16
+ verifiedPeerPid?: number;
17
+ kind: "root_user" | "absorbed_mid_turn";
18
+ origin: "peer" | "human" | "unknown";
19
+ acceptedAt: string | null;
20
+ state: "inProgress" | "completed" | "interrupted" | "failed" | "unknown";
21
+ responseText: string;
22
+ responseTruncated: boolean;
23
+ completedAt: string | null;
24
+ completionRecordUuid?: string;
25
+ pendingTools: ClaudeNativeToolObservation[];
26
+ toolResults: ClaudeNativeToolObservation[];
27
+ reason?: string;
28
+ }
29
+ export interface ClaudeNativePublicProgress extends BackendPublicProgress {
30
+ native_input_id: string | null;
31
+ task_anchor_kind: "native_input_uuid";
32
+ }
33
+ export interface ClaudeNativeSnapshot {
34
+ identity: ClaudeNativeIdentity;
35
+ readAt: string;
36
+ source?: ClaudeNativeTranscriptSource;
37
+ latestInputUuid: string | null;
38
+ inputs: ClaudeNativeInputObservation[];
39
+ selectedInput?: ClaudeNativeInputObservation;
40
+ progress: ClaudeNativePublicProgress;
41
+ readError?: "missing_transcript" | "read_failed" | "missing_exact_input" | "identity_mismatch" | "incomplete_chain";
42
+ }
43
+ export interface ClaudeNativeObservationOptions {
44
+ exactInputUuid?: string;
45
+ messageId?: string;
46
+ expectedPeerPid?: number;
47
+ now?: Date;
48
+ /** Persist after acceptance; a replaced/moved transcript cannot inherit the old Watch. */
49
+ source?: ClaudeNativeTranscriptSource;
50
+ /** The caller verifies process liveness. A saved entry is usable after exit, never a new process. */
51
+ processAlive?: boolean;
52
+ }
53
+ /** Read-only, bounded projection of one exact session. No cwd-based session inference. */
54
+ export declare function readClaudeNativeSnapshot(entry: ClaudeNativeCatalogEntry, options?: ClaudeNativeObservationOptions): Promise<ClaudeNativeSnapshot>;
@@ -0,0 +1,418 @@
1
+ import fs from "node:fs/promises";
2
+ import { constants } from "node:fs";
3
+ import path from "node:path";
4
+ import { backendPublicProgress, backendPublicProgressReadError } from "./backend-public-progress.js";
5
+ import { isClaudeNativeUuid, validateClaudeNativeIdentity } from "./claude-native-identity.js";
6
+ import { isRecord } from "./value-guards.js";
7
+ const MAX_BYTES = 16 * 1024 * 1024;
8
+ const MAX_RECORDS = 40_000;
9
+ const MAX_INPUTS = 50;
10
+ /** Read-only, bounded projection of one exact session. No cwd-based session inference. */
11
+ export async function readClaudeNativeSnapshot(entry, options = {}) {
12
+ const identity = validateClaudeNativeIdentity(entry);
13
+ const readAt = (options.now ?? new Date()).toISOString();
14
+ const base = { identity, readAt, latestInputUuid: null, inputs: [],
15
+ progress: progressFor(null, [], readAt) };
16
+ if (!validOptions(options))
17
+ return failed(base, "identity_mismatch");
18
+ let loaded;
19
+ try {
20
+ loaded = await loadRecords(entry, options.source);
21
+ }
22
+ catch {
23
+ return failed(base, "read_failed");
24
+ }
25
+ if (!loaded)
26
+ return failed(base, "missing_transcript");
27
+ base.source = loaded.source;
28
+ const { records, roots, conflicts, byParent } = transcriptGraph(loaded.records, entry.sessionId);
29
+ if (!roots.length && records.length && !records.some(record => sessionOf(record) === entry.sessionId))
30
+ return failed(base, "identity_mismatch");
31
+ const last = roots.at(-1);
32
+ base.latestInputUuid = last ? inputId(last) : null;
33
+ const selected = options.exactInputUuid
34
+ ? roots.find(record => inputId(record) === options.exactInputUuid) : last;
35
+ if (options.exactInputUuid && !selected)
36
+ return failed(base, "missing_exact_input");
37
+ if (selected && !exactInputMatches(selected, roots, conflicts, options))
38
+ return failed(base, "identity_mismatch");
39
+ const chosen = roots.slice(-MAX_INPUTS);
40
+ if (selected && !chosen.includes(selected))
41
+ chosen.unshift(selected);
42
+ for (const root of chosen) {
43
+ const chain = causalChain(root, byParent, conflicts, entry.sessionId);
44
+ const projected = observeInput(root, chain, entry, options.processAlive !== false, readAt, inputId(root) === base.latestInputUuid);
45
+ base.inputs.push(projected.observation);
46
+ if (root === selected) {
47
+ base.selectedInput = projected.observation;
48
+ base.progress = projected.progress;
49
+ }
50
+ }
51
+ return base;
52
+ }
53
+ function validOptions(options) {
54
+ if (options.exactInputUuid !== undefined && !isClaudeNativeUuid(options.exactInputUuid))
55
+ return false;
56
+ if (options.messageId !== undefined && !isClaudeNativeUuid(options.messageId))
57
+ return false;
58
+ return options.expectedPeerPid === undefined || Number.isSafeInteger(options.expectedPeerPid) && options.expectedPeerPid > 0;
59
+ }
60
+ function sessionOf(record) { return record.sessionId ?? record.session_id; }
61
+ function transcriptGraph(loaded, sessionId) {
62
+ // Prove the selected graph, allowing identical historical replays after resume.
63
+ const byUuid = new Map(), conflicts = new Set();
64
+ for (const record of loaded) {
65
+ if (!isClaudeNativeUuid(record.uuid))
66
+ continue;
67
+ const prior = byUuid.get(record.uuid);
68
+ if (prior && JSON.stringify(prior) !== JSON.stringify(record))
69
+ conflicts.add(record.uuid);
70
+ if (!prior)
71
+ byUuid.set(record.uuid, record);
72
+ }
73
+ const records = [...byUuid.values()];
74
+ const roots = records.filter(record => isInput(record) && sessionOf(record) === sessionId && record.isSidechain !== true);
75
+ const byParent = new Map();
76
+ for (const record of records) {
77
+ if (!isClaudeNativeUuid(record.parentUuid))
78
+ continue;
79
+ const children = byParent.get(record.parentUuid) ?? [];
80
+ children.push(record);
81
+ byParent.set(record.parentUuid, children);
82
+ }
83
+ return { records, roots, conflicts, byParent };
84
+ }
85
+ function exactInputMatches(selected, roots, conflicts, options) {
86
+ if (conflicts.has(String(selected.uuid)) || roots.filter(root => inputId(root) === inputId(selected)).length !== 1)
87
+ return false;
88
+ const origin = originOf(selected);
89
+ if (options.messageId !== undefined && (origin?.kind !== "peer" || origin.msg_id !== options.messageId))
90
+ return false;
91
+ return options.expectedPeerPid === undefined || origin?.verifiedPeerPid === options.expectedPeerPid;
92
+ }
93
+ function failed(base, reason) {
94
+ return { ...base, readError: reason, progress: { ...backendPublicProgressReadError(null, base.readAt, reason === "identity_mismatch" ? "identity_mismatch" : "read_failed"), native_input_id: null,
95
+ task_anchor_kind: "native_input_uuid" } };
96
+ }
97
+ function originOf(record) {
98
+ const value = isRecord(record.attachment) ? record.attachment.origin : record.origin;
99
+ return isRecord(value) ? value : undefined;
100
+ }
101
+ function inputId(record) {
102
+ return isRecord(record.attachment) ? String(record.attachment.source_uuid) : String(record.uuid);
103
+ }
104
+ function content(record) {
105
+ const message = isRecord(record.message) ? record.message : undefined;
106
+ return Array.isArray(message?.content) ? message.content.filter(isRecord) : [];
107
+ }
108
+ function interrupted(record) {
109
+ return record.type === "user" && content(record).some(block => block.type === "text"
110
+ && (block.text === "[Request interrupted by user]" || block.text === "[Request interrupted by user for tool use]"));
111
+ }
112
+ function isInput(record) {
113
+ if (!isClaudeNativeUuid(record.uuid))
114
+ return false;
115
+ if (record.type === "attachment" && isRecord(record.attachment))
116
+ return record.attachment.type === "queued_command"
117
+ && isClaudeNativeUuid(record.attachment.source_uuid);
118
+ if (record.type !== "user" || record.isCompactSummary === true || record.isVisibleInTranscriptOnly === true
119
+ || (record.isMeta === true && originOf(record)?.kind !== "peer")
120
+ || interrupted(record) || content(record).some(block => block.type === "tool_result"))
121
+ return false;
122
+ const message = isRecord(record.message) ? record.message : undefined;
123
+ return message?.role === "user" && (typeof message.content === "string" || content(record).some(block => block.type === "text"));
124
+ }
125
+ function causalChain(root, byParent, conflicts, sessionId) {
126
+ if (conflicts.has(String(root.uuid)))
127
+ return undefined;
128
+ const chain = [root];
129
+ const seen = new Set([String(root.uuid)]);
130
+ while (true) {
131
+ const children = (byParent.get(String(chain.at(-1).uuid)) ?? [])
132
+ .filter(record => !(isInput(record) && record.type === "user"))
133
+ .filter(record => !(record.type === "system" && record.subtype === "informational" && !byParent.has(String(record.uuid))));
134
+ if (!children.length)
135
+ return chain;
136
+ if (children.length !== 1 || !isClaudeNativeUuid(children[0].uuid) || seen.has(children[0].uuid))
137
+ return undefined;
138
+ const next = children[0];
139
+ if (conflicts.has(String(next.uuid)) || (next.sessionId ?? next.session_id) !== sessionId || next.isSidechain === true)
140
+ return undefined;
141
+ seen.add(String(next.uuid));
142
+ chain.push(next);
143
+ // A durable end marker belongs to this task even when later inputs are descendants.
144
+ if (next.type === "system" && next.subtype === "turn_duration")
145
+ return chain;
146
+ }
147
+ }
148
+ function nativeTime(record) {
149
+ if (typeof record.timestamp !== "string")
150
+ return null;
151
+ const ms = Date.parse(record.timestamp);
152
+ return Number.isFinite(ms) ? new Date(ms).toISOString() : null;
153
+ }
154
+ function hasBackgroundWork(record) {
155
+ if ([record.pendingBackgroundAgentCount, record.pendingWorkflowCount].some(value => value !== undefined && value !== 0))
156
+ return true;
157
+ const result = isRecord(record.toolUseResult) ? record.toolUseResult : {};
158
+ if (typeof result.backgroundTaskId === "string" || result.isAsync === true
159
+ || ["async_launched", "remote_launched", "teammate_spawned"].includes(String(result.status)))
160
+ return true;
161
+ const background = (value) => ["run_in_background", "runInBackground", "is_background", "isBackground",
162
+ "backgroundedByUser", "assistantAutoBackgrounded"].some(key => value[key] === true);
163
+ return background(result) || content(record).some(block => block.type === "tool_use" && isRecord(block.input) && background(block.input));
164
+ }
165
+ function toolType(name) {
166
+ if (name === "Bash")
167
+ return "commandExecution";
168
+ if (name === "Write" || name === "Edit" || name === "NotebookEdit")
169
+ return "fileChange";
170
+ if (name === "WebSearch" || name === "WebFetch")
171
+ return "webSearch";
172
+ return "dynamicToolCall";
173
+ }
174
+ function toolActionKind(name) {
175
+ if (name === "Read")
176
+ return "file_read";
177
+ if (name === "Glob" || name === "Grep")
178
+ return "file_search";
179
+ if (name === "AskUserQuestion")
180
+ return "user_question";
181
+ return undefined;
182
+ }
183
+ function toolName(value) {
184
+ // Tool names are identifiers, never commands, file paths, arguments or output.
185
+ return typeof value === "string" && /^[A-Za-z0-9_:-]{1,120}$/u.test(value) ? value : "unknown";
186
+ }
187
+ function initialInputObservation(root) {
188
+ const origin = originOf(root);
189
+ return { inputUuid: inputId(root),
190
+ ...(typeof origin?.msg_id === "string" ? { messageId: origin.msg_id } : {}),
191
+ ...(Number.isSafeInteger(origin?.verifiedPeerPid) ? { verifiedPeerPid: origin.verifiedPeerPid } : {}),
192
+ kind: root.type === "attachment" ? "absorbed_mid_turn" : "root_user",
193
+ origin: origin?.kind === "peer" ? "peer" : origin ? "unknown" : "human",
194
+ acceptedAt: nativeTime(root), state: "unknown", responseText: "", responseTruncated: false,
195
+ completedAt: null, pendingTools: [], toolResults: [] };
196
+ }
197
+ function observeInput(root, chain, entry, alive, readAt, isLatest) {
198
+ const result = initialInputObservation(root);
199
+ if (!chain)
200
+ return { observation: { ...result, reason: "ambiguous_parent_chain" }, progress: progressFor(result.inputUuid, [], readAt, false) };
201
+ const analysis = analyzeChain(chain);
202
+ result.pendingTools = [...analysis.tools.values()].filter(tool => tool.observation.status === "pending").map(tool => tool.observation);
203
+ result.toolResults = [...analysis.tools.values()].filter(tool => tool.observation.status !== "pending").map(tool => tool.observation);
204
+ settleObservation(result, analysis, entry, alive, isLatest);
205
+ return observationOutput(result, analysis, readAt);
206
+ }
207
+ function analyzeChain(chain) {
208
+ const items = [], tools = new Map();
209
+ let lastMessageId, lastPublicMessageId, finalMessageId;
210
+ let stopRecord, errorRecord, duration;
211
+ let unsafe = false, unknownStopReason = false;
212
+ for (const record of chain.slice(1)) {
213
+ if (record.subtype === "stop_hook_summary" || record.type === "progress" || hasBackgroundWork(record))
214
+ unsafe = true;
215
+ if (interrupted(record))
216
+ stopRecord = record;
217
+ if (record.type === "system" && record.subtype === "turn_duration")
218
+ duration = record;
219
+ const assistant = addAssistantItems(record, tools, items);
220
+ lastMessageId = assistant.messageId ?? lastMessageId;
221
+ lastPublicMessageId = assistant.publicMessageId ?? lastPublicMessageId;
222
+ finalMessageId = assistant.finalMessageId ?? finalMessageId;
223
+ if (assistant.error)
224
+ errorRecord = record;
225
+ unsafe ||= assistant.unsafe;
226
+ unknownStopReason ||= assistant.unknownStopReason;
227
+ unsafe = settleToolResults(record, tools) || unsafe;
228
+ }
229
+ if (unknownStopReason && !stopRecord && !errorRecord)
230
+ unsafe = true;
231
+ return { items, tools, lastMessageId, lastPublicMessageId, finalMessageId, stopRecord, errorRecord, duration, unsafe };
232
+ }
233
+ function completionRecord(result, analysis) {
234
+ if (result.pendingTools.length)
235
+ return undefined;
236
+ if (analysis.stopRecord || analysis.errorRecord)
237
+ return analysis.stopRecord ?? analysis.errorRecord;
238
+ const { duration, finalMessageId, lastMessageId, lastPublicMessageId } = analysis;
239
+ return duration && finalMessageId && finalMessageId === lastMessageId && finalMessageId === lastPublicMessageId ? duration : undefined;
240
+ }
241
+ function settleObservation(result, analysis, entry, alive, isLatest) {
242
+ const finished = completionRecord(result, analysis);
243
+ if (result.kind === "absorbed_mid_turn")
244
+ result.reason = "input_absorbed_into_existing_task";
245
+ else if (analysis.unsafe)
246
+ result.reason = "unsupported_or_incomplete_task_chain";
247
+ else if (finished && nativeTime(finished)) {
248
+ result.state = analysis.stopRecord ? "interrupted" : analysis.errorRecord ? "failed" : "completed";
249
+ result.completedAt = nativeTime(finished);
250
+ result.completionRecordUuid = String(finished.uuid);
251
+ }
252
+ else if (!alive)
253
+ result.reason = "process_exited_without_proven_task_completion";
254
+ else if (!isLatest)
255
+ result.reason = "newer_input_exists_without_proven_completion";
256
+ else if (entry.status === "working" || entry.status === "waiting")
257
+ result.state = "inProgress";
258
+ else
259
+ result.reason = "awaiting_durable_completion";
260
+ }
261
+ function observationOutput(result, analysis, readAt) {
262
+ const { items, lastPublicMessageId, unsafe } = analysis;
263
+ const hasFinal = result.state === "completed" || result.state === "failed";
264
+ const finalItems = items.filter(item => item.type === "agentMessage" && item.delivery === lastPublicMessageId);
265
+ if (hasFinal) {
266
+ const combined = finalItems.length ? [{ ...finalItems.at(-1), text: finalItems.map(item => item.text).join("\n") }] : [];
267
+ const response = progressFor(result.inputUuid, combined, readAt);
268
+ result.responseText = response.text;
269
+ result.responseTruncated = response.truncated;
270
+ }
271
+ // Claude text is public without phases; exclude a proven final from progress.
272
+ const progressItems = hasFinal ? items.filter(item => item.type !== "agentMessage" || item.delivery !== lastPublicMessageId) : items;
273
+ return { observation: result, progress: progressFor(result.inputUuid, progressItems, readAt, !unsafe) };
274
+ }
275
+ function addAssistantItems(record, tools, items) {
276
+ const result = { unsafe: false, unknownStopReason: false, error: false,
277
+ messageId: undefined, publicMessageId: undefined,
278
+ finalMessageId: undefined };
279
+ if (record.type !== "assistant")
280
+ return result;
281
+ const message = isRecord(record.message) ? record.message : undefined;
282
+ result.unsafe = message?.role !== "assistant";
283
+ result.messageId = typeof message?.id === "string" ? message.id : undefined;
284
+ result.error = record.isApiErrorMessage === true;
285
+ if (message?.stop_reason === "end_turn")
286
+ result.finalMessageId = result.messageId;
287
+ else
288
+ result.unknownStopReason = !result.error && message?.stop_reason != null && message.stop_reason !== "tool_use";
289
+ const startedAtMs = nativeTime(record) ? Date.parse(nativeTime(record)) : null;
290
+ for (const block of content(record)) {
291
+ if (block.type === "text" && typeof block.text === "string" && block.text.trim()) {
292
+ if (!result.messageId) {
293
+ result.unsafe = true;
294
+ continue;
295
+ }
296
+ result.publicMessageId = result.messageId;
297
+ items.push({ id: String(record.uuid), type: "agentMessage", phase: "commentary", text: block.text,
298
+ startedAtMs, delivery: result.messageId });
299
+ }
300
+ else if (block.type === "tool_use" && typeof block.id === "string") {
301
+ if (tools.has(block.id)) {
302
+ result.unsafe = true;
303
+ continue;
304
+ }
305
+ const name = toolName(block.name);
306
+ const item = { id: block.id, type: toolType(name), actionKind: toolActionKind(name), status: "inProgress", startedAtMs };
307
+ tools.set(block.id, { observation: { toolUseId: block.id, name, status: "pending" }, item, owner: String(record.uuid) });
308
+ items.push(item);
309
+ }
310
+ }
311
+ return result;
312
+ }
313
+ function settleToolResults(record, tools) {
314
+ let unsafe = false;
315
+ for (const block of content(record)) {
316
+ if (block.type !== "tool_result" || typeof block.tool_use_id !== "string")
317
+ continue;
318
+ const tool = tools.get(block.tool_use_id);
319
+ if (!tool || tool.observation.status !== "pending" || record.parentUuid !== tool.owner) {
320
+ unsafe = true;
321
+ continue;
322
+ }
323
+ tool.observation.status = block.is_error === true ? "failed" : "completed";
324
+ tool.item.status = tool.observation.status;
325
+ tool.item.completedAtMs = nativeTime(record) ? Date.parse(nativeTime(record)) : null;
326
+ }
327
+ return unsafe;
328
+ }
329
+ function progressFor(id, items, readAt, complete = true) {
330
+ const progress = backendPublicProgress({ nativeTurnId: id, readAt,
331
+ turn: id ? { id, itemsComplete: complete, items } : undefined });
332
+ // Claude's UUID identifies an input, not a Codex-style native task/turn.
333
+ return { ...progress, native_turn_id: null, native_input_id: id, task_anchor_kind: "native_input_uuid" };
334
+ }
335
+ async function loadRecords(entry, source) {
336
+ const location = await locateTranscript(entry, source);
337
+ if (!location)
338
+ return undefined;
339
+ const { filename, relativePath } = location;
340
+ if (await fs.realpath(filename) !== filename)
341
+ throw new Error("Transcript symlink rejected");
342
+ const before = await fs.lstat(filename);
343
+ const handle = await fs.open(filename, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
344
+ try {
345
+ const stat = await handle.stat();
346
+ const identity = { relativePath, device: String(stat.dev), inode: String(stat.ino) };
347
+ assertTranscriptFile(stat, before, source);
348
+ const records = await readRecordWindow(handle, stat.size);
349
+ const after = await handle.stat(), current = await fs.lstat(filename);
350
+ if (after.size < stat.size || current.dev !== stat.dev || current.ino !== stat.ino || await fs.realpath(filename) !== filename)
351
+ throw new Error("Transcript changed identity");
352
+ return { source: identity, records };
353
+ }
354
+ finally {
355
+ await handle.close();
356
+ }
357
+ }
358
+ async function locateTranscript(entry, source) {
359
+ const projects = path.join(await fs.realpath(entry.configDir), "projects");
360
+ const root = await lstatOptional(projects);
361
+ if (!root)
362
+ return undefined;
363
+ if (!root.isDirectory() || root.isSymbolicLink() || await fs.realpath(projects) !== projects)
364
+ throw new Error("Unsafe transcript directory");
365
+ const entries = await fs.readdir(projects, { withFileTypes: true });
366
+ if (entries.length > 10_000)
367
+ throw new Error("Transcript catalog limit exceeded");
368
+ const matches = [];
369
+ for (const directory of entries) {
370
+ if (!directory.isDirectory() || directory.isSymbolicLink())
371
+ continue;
372
+ const relative = path.join(directory.name, `${entry.sessionId}.jsonl`);
373
+ if (await lstatOptional(path.join(projects, relative)))
374
+ matches.push(relative);
375
+ }
376
+ if (!matches.length)
377
+ return undefined;
378
+ if (matches.length !== 1 || (source && matches[0] !== source.relativePath))
379
+ throw new Error("Ambiguous or moved transcript");
380
+ return { relativePath: matches[0], filename: path.join(projects, matches[0]) };
381
+ }
382
+ async function lstatOptional(filename) {
383
+ return fs.lstat(filename).catch(error => error.code === "ENOENT" ? undefined : Promise.reject(error));
384
+ }
385
+ function assertTranscriptFile(stat, before, source) {
386
+ if (!stat.isFile() || stat.dev !== before.dev || stat.ino !== before.ino)
387
+ throw new Error("Unsafe/replaced transcript");
388
+ if (typeof process.getuid === "function" && stat.uid !== process.getuid() || stat.mode & 0o022)
389
+ throw new Error("Unsafe transcript owner or mode");
390
+ if (source && (source.device !== String(stat.dev) || source.inode !== String(stat.ino)))
391
+ throw new Error("Transcript anchor changed");
392
+ }
393
+ async function readRecordWindow(handle, size) {
394
+ const offset = Math.max(0, size - MAX_BYTES), buffer = Buffer.alloc(size - offset);
395
+ const read = await handle.read(buffer, 0, buffer.length, offset);
396
+ if (read.bytesRead !== buffer.length)
397
+ throw new Error("Transcript changed while reading");
398
+ let start = 0;
399
+ if (offset > 0) {
400
+ const prefix = Buffer.alloc(1);
401
+ await handle.read(prefix, 0, 1, offset - 1);
402
+ if (prefix[0] !== 10)
403
+ start = buffer.indexOf(10) + 1;
404
+ if (!start && prefix[0] !== 10)
405
+ throw new Error("Transcript record exceeds read limit");
406
+ }
407
+ const records = [], end = buffer.lastIndexOf(10) + 1;
408
+ for (const line of buffer.subarray(start, end).toString("utf8").split("\n")) {
409
+ if (!line.trim())
410
+ continue;
411
+ const value = JSON.parse(line);
412
+ if (!isRecord(value) || records.length >= MAX_RECORDS)
413
+ throw new Error("Invalid/oversized transcript");
414
+ records.push(value);
415
+ }
416
+ return records;
417
+ }
418
+ //# sourceMappingURL=claude-native-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-native-observation.js","sourceRoot":"","sources":["../../src/claude-native-observation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type CallbackAttemptOutcome, type CallbackTransportContextV1, type CallbackTransportDeliverInput } from "./callback-transport.js";
2
+ import type { ClaudeNativeStateRepository, ClaudeNativeTaskRecord } from "./claude-native-state-store.js";
3
+ export interface ClaudeNativeOutboxDependencies {
4
+ repository: ClaudeNativeStateRepository;
5
+ deliver?(input: CallbackTransportDeliverInput): CallbackAttemptOutcome | Promise<CallbackAttemptOutcome>;
6
+ resolveCallbackContext?(task: ClaudeNativeTaskRecord): CallbackTransportContextV1 | undefined;
7
+ now?(): Date;
8
+ randomUUID?(): string;
9
+ deliveryLeaseMs?: number;
10
+ retryDelayMs?: number;
11
+ maxDeliveryAttempts?: number;
12
+ }
13
+ /** Lease and durable checkpoint semantics are shared with the other AKK transports. */
14
+ export declare function createClaudeNativeNotificationOutbox(deps: ClaudeNativeOutboxDependencies): {
15
+ deliverPending(id: string, notificationId?: string): Promise<void>;
16
+ };