@scotthuang/agent-knock-knock 0.14.2 → 0.14.3
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 +14 -0
- package/README.md +233 -108
- package/dist/src/backend-callback-public-projection.d.ts +27 -0
- package/dist/src/backend-callback-public-projection.js +58 -0
- package/dist/src/backend-callback-public-projection.js.map +1 -0
- package/dist/src/backend-public-progress.d.ts +2 -0
- package/dist/src/backend-public-progress.js +4 -1
- package/dist/src/backend-public-progress.js.map +1 -1
- package/dist/src/backend-recovery-semantic.js +5 -4
- package/dist/src/backend-recovery-semantic.js.map +1 -1
- package/dist/src/callback-transport.d.ts +1 -1
- package/dist/src/callback-transport.js +2 -2
- package/dist/src/callback-transport.js.map +1 -1
- package/dist/src/claude-conversation-routing-cli-adapter.d.ts +2 -0
- package/dist/src/claude-conversation-routing-cli-adapter.js +127 -0
- package/dist/src/claude-conversation-routing-cli-adapter.js.map +1 -0
- package/dist/src/claude-conversation-routing-identity.d.ts +11 -0
- package/dist/src/claude-conversation-routing-identity.js +46 -0
- package/dist/src/claude-conversation-routing-identity.js.map +1 -0
- package/dist/src/claude-native-cli-adapter.d.ts +18 -0
- package/dist/src/claude-native-cli-adapter.js +159 -0
- package/dist/src/claude-native-cli-adapter.js.map +1 -0
- package/dist/src/claude-native-client.d.ts +57 -0
- package/dist/src/claude-native-client.js +197 -0
- package/dist/src/claude-native-client.js.map +1 -0
- package/dist/src/claude-native-discovery.d.ts +20 -0
- package/dist/src/claude-native-discovery.js +111 -0
- package/dist/src/claude-native-discovery.js.map +1 -0
- package/dist/src/claude-native-identity.d.ts +29 -0
- package/dist/src/claude-native-identity.js +54 -0
- package/dist/src/claude-native-identity.js.map +1 -0
- package/dist/src/claude-native-monitor.d.ts +13 -0
- package/dist/src/claude-native-monitor.js +123 -0
- package/dist/src/claude-native-monitor.js.map +1 -0
- package/dist/src/claude-native-observation.d.ts +54 -0
- package/dist/src/claude-native-observation.js +418 -0
- package/dist/src/claude-native-observation.js.map +1 -0
- package/dist/src/claude-native-outbox.d.ts +16 -0
- package/dist/src/claude-native-outbox.js +122 -0
- package/dist/src/claude-native-outbox.js.map +1 -0
- package/dist/src/claude-native-peer-helper.d.ts +2 -0
- package/dist/src/claude-native-peer-helper.js +121 -0
- package/dist/src/claude-native-peer-helper.js.map +1 -0
- package/dist/src/claude-native-public-projection.d.ts +605 -0
- package/dist/src/claude-native-public-projection.js +98 -0
- package/dist/src/claude-native-public-projection.js.map +1 -0
- package/dist/src/claude-native-runtime.d.ts +25 -0
- package/dist/src/claude-native-runtime.js +74 -0
- package/dist/src/claude-native-runtime.js.map +1 -0
- package/dist/src/claude-native-state-store.d.ts +49 -0
- package/dist/src/claude-native-state-store.js +96 -0
- package/dist/src/claude-native-state-store.js.map +1 -0
- package/dist/src/claude-native-task-service.d.ts +70 -0
- package/dist/src/claude-native-task-service.js +327 -0
- package/dist/src/claude-native-task-service.js.map +1 -0
- package/dist/src/cli-core.js +2 -1
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/cli-runtime-context.d.ts +2 -0
- package/dist/src/cli-runtime-context.js.map +1 -1
- package/dist/src/codex-native-outbox.js +7 -5
- package/dist/src/codex-native-outbox.js.map +1 -1
- package/dist/src/codex-native-public-projection.d.ts +17 -7
- package/dist/src/codex-native-public-projection.js +4 -4
- package/dist/src/codex-native-public-projection.js.map +1 -1
- package/dist/src/codex-native-semantic.js +15 -5
- package/dist/src/codex-native-semantic.js.map +1 -1
- package/dist/src/conversation-list.js +8 -2
- package/dist/src/conversation-list.js.map +1 -1
- package/dist/src/conversation-routing-cli-adapter.d.ts +2 -7
- package/dist/src/conversation-routing-cli-adapter.js +4 -2
- package/dist/src/conversation-routing-cli-adapter.js.map +1 -1
- package/dist/src/conversation-routing-commands.d.ts +5 -0
- package/dist/src/conversation-routing-commands.js.map +1 -1
- package/dist/src/desktop-command-presentation.js +3 -1
- package/dist/src/desktop-command-presentation.js.map +1 -1
- package/dist/src/desktop-public-projection.js +3 -6
- package/dist/src/desktop-public-projection.js.map +1 -1
- package/dist/src/desktop-task-service.js +10 -3
- package/dist/src/desktop-task-service.js.map +1 -1
- package/dist/src/durable-notification-kernel.d.ts +10 -0
- package/dist/src/durable-notification-kernel.js +18 -1
- package/dist/src/durable-notification-kernel.js.map +1 -1
- package/dist/src/host-monitor-reconciliation.js +9 -1
- package/dist/src/host-monitor-reconciliation.js.map +1 -1
- package/dist/src/host-profile-runtime.js +3 -1
- package/dist/src/host-profile-runtime.js.map +1 -1
- package/dist/src/local-codex-cli-adapter.js +4 -3
- package/dist/src/local-codex-cli-adapter.js.map +1 -1
- package/dist/src/openclaw-callback-evidence.d.ts +17 -0
- package/dist/src/openclaw-callback-evidence.js +75 -0
- package/dist/src/openclaw-callback-evidence.js.map +1 -0
- package/dist/src/openclaw-callback-transport.js +90 -9
- package/dist/src/openclaw-callback-transport.js.map +1 -1
- package/dist/src/semantic-conversation-target.js +1 -1
- package/dist/src/semantic-conversation-target.js.map +1 -1
- package/dist/src/semantic-tool-command-helpers.d.ts +0 -1
- package/dist/src/semantic-tool-command-helpers.js +27 -17
- package/dist/src/semantic-tool-command-helpers.js.map +1 -1
- package/dist/src/semantic-tool-descriptions.js +3 -3
- package/dist/src/semantic-tool-descriptions.js.map +1 -1
- package/dist/src/semantic-tool-list-projection.js +11 -4
- package/dist/src/semantic-tool-list-projection.js.map +1 -1
- package/dist/src/semantic-tool-presentation.js +17 -3
- package/dist/src/semantic-tool-presentation.js.map +1 -1
- package/dist/src/semantic-tool-runtime.js +8 -1
- package/dist/src/semantic-tool-runtime.js.map +1 -1
- package/dist/src/semantic-tool-schemas.js +15 -15
- package/dist/src/semantic-tool-schemas.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.js +5 -1
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-ownership-service.js +1 -1
- package/dist/src/terminal-list-ownership-service.js.map +1 -1
- package/docs/backend-task-recovery.md +43 -0
- package/docs/claude-cli-direct.md +60 -0
- package/package.json +2 -2
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +14 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-native-public-projection.js","sourceRoot":"","sources":["../../src/claude-native-public-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ClaudeNativeClient } from "./claude-native-client.js";
|
|
2
|
+
import { type ClaudeNativeIdentity } from "./claude-native-identity.js";
|
|
3
|
+
import type { CallbackAttemptOutcome, CallbackTransportDeliverInput } from "./callback-transport.js";
|
|
4
|
+
export interface ClaudeNativeRuntimeOptions {
|
|
5
|
+
storeDir: string;
|
|
6
|
+
claudeConfigDirs: string[];
|
|
7
|
+
claudeBin?: string;
|
|
8
|
+
pythonBin?: string;
|
|
9
|
+
openclawBin?: string;
|
|
10
|
+
client?: Pick<ClaudeNativeClient, "discover" | "inspect" | "send" | "close">;
|
|
11
|
+
callbackDeliver?(input: CallbackTransportDeliverInput): Promise<CallbackAttemptOutcome> | CallbackAttemptOutcome;
|
|
12
|
+
processCheck?(identity: ClaudeNativeIdentity): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/** Exit and PID reuse are separate from an unavailable registry or an unknown protocol. */
|
|
15
|
+
export declare function assertClaudeOriginalProcess(identity: ClaudeNativeIdentity): Promise<void>;
|
|
16
|
+
export declare function createClaudeNativeRuntime(options: ClaudeNativeRuntimeOptions): {
|
|
17
|
+
catalog: {
|
|
18
|
+
discover: () => Promise<import("./claude-native-discovery.js").ClaudeNativeDiscoveryResult>;
|
|
19
|
+
};
|
|
20
|
+
tasks: import("./claude-native-task-service.js").ClaudeNativeTasks;
|
|
21
|
+
inspect: (identity: ClaudeNativeIdentity) => Promise<import("./claude-native-identity.js").ClaudeNativeCatalogEntry>;
|
|
22
|
+
read(identity: ClaudeNativeIdentity, exactInputUuid?: string, messageId?: string): Promise<import("./claude-native-observation.js").ClaudeNativeSnapshot>;
|
|
23
|
+
reconcile: (id: string) => Promise<import("./claude-native-state-store.js").ClaudeNativeTaskRecord>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { createClaudeNativeClient } from "./claude-native-client.js";
|
|
4
|
+
import { runClaudeNativeCommand } from "./claude-native-discovery.js";
|
|
5
|
+
import { ClaudeNativeError } from "./claude-native-identity.js";
|
|
6
|
+
import { readClaudeNativeSnapshot } from "./claude-native-observation.js";
|
|
7
|
+
import { createClaudeNativeStateStore } from "./claude-native-state-store.js";
|
|
8
|
+
import { createClaudeNativeTaskService } from "./claude-native-task-service.js";
|
|
9
|
+
import { createFileLockCliAdapter } from "./file-lock-cli-adapter.js";
|
|
10
|
+
import { createOpenClawCallbackTransport } from "./openclaw-callback-transport.js";
|
|
11
|
+
import { createHostProfileCallbackTransport } from "./host-profile-callback-transport.js";
|
|
12
|
+
import { cliCwd, cliEnv, cliNow, cliNowMs, cliPid, cliSleepSync } from "./cli-runtime-context.js";
|
|
13
|
+
/** Exit and PID reuse are separate from an unavailable registry or an unknown protocol. */
|
|
14
|
+
export async function assertClaudeOriginalProcess(identity) {
|
|
15
|
+
let info;
|
|
16
|
+
try {
|
|
17
|
+
info = await runClaudeNativeCommand("/bin/ps", ["-p", String(identity.pid), "-o", "uid=", "-o", "lstart="], { ...process.env, LC_ALL: "C", TZ: "UTC" });
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
try {
|
|
21
|
+
process.kill(identity.pid, 0);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error.code === "ESRCH")
|
|
25
|
+
throw new ClaudeNativeError("process_exited", "Original Claude process exited");
|
|
26
|
+
}
|
|
27
|
+
throw new ClaudeNativeError("process_check_unavailable", "Could not verify the original Claude process");
|
|
28
|
+
}
|
|
29
|
+
if (info.trim().replace(/\s+/gu, " ") !== `${process.getuid?.()} ${identity.processStart}`) {
|
|
30
|
+
throw new ClaudeNativeError("process_changed", "Original Claude process identity changed");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function createClaudeNativeRuntime(options) {
|
|
34
|
+
const canonical = (dir) => { try {
|
|
35
|
+
return fs.realpathSync(dir);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return path.resolve(dir);
|
|
39
|
+
} };
|
|
40
|
+
const homes = new Set(options.claudeConfigDirs.map(canonical));
|
|
41
|
+
const client = options.client ?? createClaudeNativeClient({ configDirs: [...homes], claudePath: options.claudeBin, pythonPath: options.pythonBin });
|
|
42
|
+
function assertConfigured(identity) {
|
|
43
|
+
if (!path.isAbsolute(identity.configDir) || !homes.has(canonical(identity.configDir)))
|
|
44
|
+
throw new ClaudeNativeError("unconfigured_home", "Claude target is outside configured local homes");
|
|
45
|
+
}
|
|
46
|
+
async function inspect(identity) {
|
|
47
|
+
assertConfigured(identity);
|
|
48
|
+
await (options.processCheck ?? assertClaudeOriginalProcess)(identity);
|
|
49
|
+
return client.inspect(identity);
|
|
50
|
+
}
|
|
51
|
+
const locks = createFileLockCliAdapter({ now: cliNow, nowMs: cliNowMs, pid: cliPid, sleepSync: cliSleepSync });
|
|
52
|
+
const repository = createClaudeNativeStateStore(options.storeDir, { acquire: lock => locks.acquire(lock) });
|
|
53
|
+
const legacy = createOpenClawCallbackTransport({ now: cliNow, environment: cliEnv,
|
|
54
|
+
redactConversation: () => { throw new Error("Claude native callbacks use exact task records"); },
|
|
55
|
+
recordCallbackProcessDelivery: () => { throw new Error("Claude native callbacks use their durable outbox"); } });
|
|
56
|
+
const callbacks = createHostProfileCallbackTransport({ legacyTransport: legacy, environment: cliEnv, cwd: cliCwd(), now: cliNow });
|
|
57
|
+
const tasks = createClaudeNativeTaskService({ repository, inspect, now: cliNow,
|
|
58
|
+
send: (identity, input) => { assertConfigured(identity); return client.send(identity, input); },
|
|
59
|
+
observe: async (entry, observation) => {
|
|
60
|
+
const current = await inspect(entry);
|
|
61
|
+
return readClaudeNativeSnapshot(current, { ...observation, processAlive: true });
|
|
62
|
+
},
|
|
63
|
+
deliver: options.callbackDeliver ?? (input => callbacks.deliver(input)),
|
|
64
|
+
resolveCallbackContext: task => ({ legacyOptions: { gatewayMethod: "chat.send", openclawSession: task.controller_session,
|
|
65
|
+
gatewaySession: task.controller_session, openclawBin: options.openclawBin } }) });
|
|
66
|
+
return { catalog: { discover: () => client.discover() }, tasks, inspect,
|
|
67
|
+
async read(identity, exactInputUuid, messageId) {
|
|
68
|
+
const entry = await inspect(identity);
|
|
69
|
+
return readClaudeNativeSnapshot(entry, { exactInputUuid, messageId, processAlive: true });
|
|
70
|
+
},
|
|
71
|
+
reconcile: (id) => tasks.reconcile(id),
|
|
72
|
+
async close() { client.close(); } };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=claude-native-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-native-runtime.js","sourceRoot":"","sources":["../../src/claude-native-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CallbackRouteV1 } from "./callback-transport.js";
|
|
2
|
+
import { type BackendRecoveryFields } from "./backend-task-recovery.js";
|
|
3
|
+
import { type NativeRecordRepository } from "./codex-native-record-store.js";
|
|
4
|
+
import type { CodexNativeNotification } from "./codex-native-state-store.js";
|
|
5
|
+
import { type ClaudeNativeIdentity, type ClaudeNativeCatalogEntry } from "./claude-native-identity.js";
|
|
6
|
+
import type { ClaudeNativeTranscriptSource, ClaudeNativePublicProgress } from "./claude-native-observation.js";
|
|
7
|
+
export type ClaudeNativeTaskStatus = "awaiting_acceptance" | "watching" | "completed" | "failed" | "interrupted" | "exited" | "timed_out" | "cancelled";
|
|
8
|
+
export interface ClaudeNativeSendIntent {
|
|
9
|
+
message_id: string;
|
|
10
|
+
client_user_message_id: string;
|
|
11
|
+
native_message_id: string;
|
|
12
|
+
text: string;
|
|
13
|
+
sender_pid?: number;
|
|
14
|
+
state: "reserved" | "uncertain" | "accepted" | "not_sent" | "held" | "refused" | "attached";
|
|
15
|
+
dispatched_at: string;
|
|
16
|
+
error_code?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ClaudeNativeTaskRecord extends BackendRecoveryFields {
|
|
19
|
+
schema: "agent-knock-knock/claude-native-task";
|
|
20
|
+
version: 1;
|
|
21
|
+
revision: number;
|
|
22
|
+
id: string;
|
|
23
|
+
watch_id: string;
|
|
24
|
+
native_id: string;
|
|
25
|
+
target: ClaudeNativeIdentity;
|
|
26
|
+
entry: ClaudeNativeCatalogEntry;
|
|
27
|
+
controller_session: string;
|
|
28
|
+
kind: "send" | "watch";
|
|
29
|
+
status: ClaudeNativeTaskStatus;
|
|
30
|
+
created_at: string;
|
|
31
|
+
updated_at: string;
|
|
32
|
+
deadline_at: string;
|
|
33
|
+
native_input_id?: string;
|
|
34
|
+
source?: ClaudeNativeTranscriptSource;
|
|
35
|
+
send_intent?: ClaudeNativeSendIntent;
|
|
36
|
+
callback_route?: CallbackRouteV1;
|
|
37
|
+
observed_at?: string;
|
|
38
|
+
observation_error?: string;
|
|
39
|
+
response_text?: string;
|
|
40
|
+
response_truncated?: boolean;
|
|
41
|
+
progress?: ClaudeNativePublicProgress;
|
|
42
|
+
waiting_for?: string;
|
|
43
|
+
notifications: CodexNativeNotification[];
|
|
44
|
+
}
|
|
45
|
+
export type ClaudeNativeStateRepository = NativeRecordRepository<ClaudeNativeTaskRecord>;
|
|
46
|
+
export declare function assertClaudeNativeTaskRecord(value: unknown): asserts value is ClaudeNativeTaskRecord;
|
|
47
|
+
export declare function createClaudeNativeStateStore(storeDir: string, locks: {
|
|
48
|
+
acquire(lock: string): () => void;
|
|
49
|
+
}): ClaudeNativeStateRepository;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
import { createCallbackEnvelope, parseCallbackRoute, parseCallbackAttemptOutcome } from "./callback-transport.js";
|
|
3
|
+
import { assertBackendRecoveryFields, assertBackendRecoveryUpdate } from "./backend-task-recovery.js";
|
|
4
|
+
import { createNativeRecordRepository } from "./codex-native-record-store.js";
|
|
5
|
+
import { createClaudeNativeConversationId, isClaudeNativeWatchId, isClaudeNativeUuid } from "./claude-native-identity.js";
|
|
6
|
+
const time = (v) => typeof v === "string" && Number.isFinite(Date.parse(v));
|
|
7
|
+
const text = (v) => typeof v === "string" && v.trim().length > 0;
|
|
8
|
+
export function assertClaudeNativeTaskRecord(value) {
|
|
9
|
+
const r = value;
|
|
10
|
+
if (!r || r.schema !== "agent-knock-knock/claude-native-task" || r.version !== 1 ||
|
|
11
|
+
!Number.isSafeInteger(r.revision) || r.revision < 1 || !isClaudeNativeWatchId(r.id) || r.watch_id !== r.id ||
|
|
12
|
+
!text(r.controller_session) || !["send", "watch"].includes(r.kind) ||
|
|
13
|
+
!["awaiting_acceptance", "watching", "completed", "failed", "interrupted", "exited", "timed_out", "cancelled"].includes(r.status) ||
|
|
14
|
+
![r.created_at, r.updated_at, r.deadline_at].every(time) || !Array.isArray(r.notifications))
|
|
15
|
+
throw new Error("Invalid Claude native task");
|
|
16
|
+
assertTaskIdentity(r);
|
|
17
|
+
assertSendIntent(r);
|
|
18
|
+
if (r.source && (!text(r.source.relativePath) || !/^\d+$/u.test(r.source.device) || !/^\d+$/u.test(r.source.inode)))
|
|
19
|
+
throw new Error("Invalid Claude transcript anchor");
|
|
20
|
+
if (r.callback_route && parseCallbackRoute(r.callback_route).controller_session_id !== r.controller_session)
|
|
21
|
+
throw new Error("Claude callback owner mismatch");
|
|
22
|
+
assertNotifications(r);
|
|
23
|
+
}
|
|
24
|
+
function assertTaskIdentity(r) {
|
|
25
|
+
if (createClaudeNativeConversationId(r.target) !== r.native_id || createClaudeNativeConversationId(r.entry) !== r.native_id)
|
|
26
|
+
throw new Error("Claude task identity mismatch");
|
|
27
|
+
assertBackendRecoveryFields(r);
|
|
28
|
+
if (r.native_input_id !== undefined && !isClaudeNativeUuid(r.native_input_id))
|
|
29
|
+
throw new Error("Invalid Claude input anchor");
|
|
30
|
+
if (r.kind === "watch" && (!r.native_input_id || r.send_intent))
|
|
31
|
+
throw new Error("Claude Watch requires exact input");
|
|
32
|
+
}
|
|
33
|
+
function assertSendIntent(r) {
|
|
34
|
+
if (r.kind === "send") {
|
|
35
|
+
const i = r.send_intent;
|
|
36
|
+
if (!i || !text(i.message_id) || !text(i.text) || !isClaudeNativeUuid(i.client_user_message_id) ||
|
|
37
|
+
!isClaudeNativeUuid(i.native_message_id) || !time(i.dispatched_at) ||
|
|
38
|
+
!["reserved", "uncertain", "accepted", "not_sent", "held", "refused", "attached"].includes(i.state) ||
|
|
39
|
+
i.sender_pid !== undefined && (!Number.isSafeInteger(i.sender_pid) || i.sender_pid < 1) ||
|
|
40
|
+
r.native_input_id && r.native_input_id !== i.client_user_message_id)
|
|
41
|
+
throw new Error("Invalid Claude send intent");
|
|
42
|
+
if (i.state === "accepted" && (!r.native_input_id || !i.sender_pid))
|
|
43
|
+
throw new Error("Claude acceptance requires exact native provenance");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function assertNotifications(r) {
|
|
47
|
+
const ids = new Set();
|
|
48
|
+
for (const n of r.notifications) {
|
|
49
|
+
if (!n || !r.callback_route || !text(n.id) || ids.has(n.id) || !Number.isSafeInteger(n.attempts) || n.attempts < 0 ||
|
|
50
|
+
!["ready", "leased", "retry_wait", "accepted", "failed", "uncertain"].includes(n.status))
|
|
51
|
+
throw new Error("Invalid Claude callback");
|
|
52
|
+
ids.add(n.id);
|
|
53
|
+
assertNotificationIdentity(r, n);
|
|
54
|
+
if (n.outcome)
|
|
55
|
+
parseCallbackAttemptOutcome(n.outcome);
|
|
56
|
+
if (n.status === "leased" && (!text(n.attempt_id) || !time(n.lease_expires_at)))
|
|
57
|
+
throw new Error("Invalid Claude callback lease");
|
|
58
|
+
if (n.status === "retry_wait" && (!time(n.retry_at) || n.outcome?.disposition !== "retryable_failure"))
|
|
59
|
+
throw new Error("Invalid Claude callback retry");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function assertNotificationIdentity(r, n) {
|
|
63
|
+
const envelope = createCallbackEnvelope({ route: r.callback_route, source: n.envelope.source, event: n.envelope.event });
|
|
64
|
+
if (!isDeepStrictEqual(envelope, n.envelope) || envelope.source.kind !== "claude_native_watch" ||
|
|
65
|
+
envelope.source.watch_id !== r.id || envelope.source.native_id !== r.native_id || envelope.event.id !== n.id)
|
|
66
|
+
throw new Error("Claude callback identity mismatch");
|
|
67
|
+
}
|
|
68
|
+
export function createClaudeNativeStateStore(storeDir, locks) {
|
|
69
|
+
return createNativeRecordRepository({ storeDir, directory: "claude-native-tasks", prefix: "claude-cli-watch:",
|
|
70
|
+
acquire: locks.acquire, assert: assertClaudeNativeTaskRecord,
|
|
71
|
+
assertUpdate(previous, next) {
|
|
72
|
+
for (const key of ["id", "watch_id", "native_id", "target", "controller_session", "kind", "created_at", "callback_route"]) {
|
|
73
|
+
if (!isDeepStrictEqual(previous[key], next[key]))
|
|
74
|
+
throw new Error(`Claude immutable ${key} changed`);
|
|
75
|
+
}
|
|
76
|
+
assertBackendRecoveryUpdate(previous, next);
|
|
77
|
+
if (previous.native_input_id && previous.native_input_id !== next.native_input_id)
|
|
78
|
+
throw new Error("Claude input anchor changed");
|
|
79
|
+
if (previous.source && !isDeepStrictEqual(previous.source, next.source))
|
|
80
|
+
throw new Error("Claude transcript anchor changed");
|
|
81
|
+
if (previous.send_intent) {
|
|
82
|
+
for (const key of ["message_id", "client_user_message_id", "native_message_id", "text", "dispatched_at"]) {
|
|
83
|
+
if (previous.send_intent[key] !== next.send_intent?.[key])
|
|
84
|
+
throw new Error("Claude send intent changed");
|
|
85
|
+
}
|
|
86
|
+
if (previous.send_intent.sender_pid && previous.send_intent.sender_pid !== next.send_intent?.sender_pid)
|
|
87
|
+
throw new Error("Claude sender changed");
|
|
88
|
+
}
|
|
89
|
+
for (const before of previous.notifications) {
|
|
90
|
+
const after = next.notifications.find(n => n.id === before.id);
|
|
91
|
+
if (!after || !isDeepStrictEqual(before.envelope, after.envelope))
|
|
92
|
+
throw new Error("Claude notification changed");
|
|
93
|
+
}
|
|
94
|
+
} });
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=claude-native-state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-native-state-store.js","sourceRoot":"","sources":["../../src/claude-native-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type CallbackRouteV1 } from "./callback-transport.js";
|
|
2
|
+
import { type ClaudeNativeCatalogEntry, type ClaudeNativeIdentity } from "./claude-native-identity.js";
|
|
3
|
+
import type { ClaudeNativeClient } from "./claude-native-client.js";
|
|
4
|
+
import type { ClaudeNativeSnapshot, ClaudeNativeObservationOptions } from "./claude-native-observation.js";
|
|
5
|
+
import { type ClaudeNativeOutboxDependencies } from "./claude-native-outbox.js";
|
|
6
|
+
import type { ClaudeNativeTaskRecord } from "./claude-native-state-store.js";
|
|
7
|
+
export interface ClaudeNativeTaskInput {
|
|
8
|
+
target: ClaudeNativeIdentity;
|
|
9
|
+
nativeId: string;
|
|
10
|
+
controllerSession: string;
|
|
11
|
+
callbackRoute?: CallbackRouteV1;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ClaudeNativeTaskDependencies extends ClaudeNativeOutboxDependencies {
|
|
15
|
+
inspect(identity: ClaudeNativeIdentity): Promise<ClaudeNativeCatalogEntry>;
|
|
16
|
+
observe(entry: ClaudeNativeCatalogEntry, options: ClaudeNativeObservationOptions): Promise<ClaudeNativeSnapshot>;
|
|
17
|
+
send: ClaudeNativeClient["send"];
|
|
18
|
+
acceptancePollAttempts?: number;
|
|
19
|
+
acceptancePollIntervalMs?: number;
|
|
20
|
+
sleep?(ms: number): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare function claudeNativeTaskNeedsReconciliation(task: ClaudeNativeTaskRecord): boolean;
|
|
23
|
+
export declare function claudeNativeErrorCode(error: unknown): string;
|
|
24
|
+
export declare function createClaudeNativeTaskService(deps: ClaudeNativeTaskDependencies): ClaudeNativeTasks;
|
|
25
|
+
export declare class ClaudeNativeTasks {
|
|
26
|
+
private readonly deps;
|
|
27
|
+
private readonly now;
|
|
28
|
+
private readonly uuid;
|
|
29
|
+
private readonly outbox;
|
|
30
|
+
constructor(deps: ClaudeNativeTaskDependencies);
|
|
31
|
+
status(id: string): ClaudeNativeTaskRecord;
|
|
32
|
+
list(): ClaudeNativeTaskRecord[];
|
|
33
|
+
shouldMonitor(id: string): boolean;
|
|
34
|
+
private update;
|
|
35
|
+
private make;
|
|
36
|
+
private notify;
|
|
37
|
+
private sameSend;
|
|
38
|
+
send(input: ClaudeNativeTaskInput & {
|
|
39
|
+
messageId: string;
|
|
40
|
+
text: string;
|
|
41
|
+
}): Promise<ClaudeNativeTaskRecord>;
|
|
42
|
+
watch(input: ClaudeNativeTaskInput): Promise<ClaudeNativeTaskRecord>;
|
|
43
|
+
private apply;
|
|
44
|
+
reconcile(id: string): Promise<ClaudeNativeTaskRecord>;
|
|
45
|
+
reconcileAll(): Promise<{
|
|
46
|
+
tasks: ClaudeNativeTaskRecord[];
|
|
47
|
+
errors: {
|
|
48
|
+
id: string;
|
|
49
|
+
error_code: string;
|
|
50
|
+
}[];
|
|
51
|
+
}>;
|
|
52
|
+
unwatch(id: string, input: {
|
|
53
|
+
controllerSession: string;
|
|
54
|
+
}): ClaudeNativeTaskRecord;
|
|
55
|
+
close(id: string, input: {
|
|
56
|
+
controllerSession: string;
|
|
57
|
+
reason?: string;
|
|
58
|
+
}): ClaudeNativeTaskRecord;
|
|
59
|
+
renew(id: string, input: {
|
|
60
|
+
controllerSession: string;
|
|
61
|
+
timeoutMs?: number;
|
|
62
|
+
}): Promise<ClaudeNativeTaskRecord>;
|
|
63
|
+
recover(id: string, input: {
|
|
64
|
+
controllerSession: string;
|
|
65
|
+
}): Promise<ClaudeNativeTaskRecord>;
|
|
66
|
+
retryCallback(id: string, input: {
|
|
67
|
+
controllerSession: string;
|
|
68
|
+
notificationId?: string;
|
|
69
|
+
}): Promise<ClaudeNativeTaskRecord>;
|
|
70
|
+
}
|