@claudexor/daemon 1.0.1 → 2.1.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.
- package/dist/client.d.ts +29 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +24 -4
- package/dist/client.js.map +1 -1
- package/dist/command-authority.d.ts +11 -0
- package/dist/command-authority.d.ts.map +1 -0
- package/dist/command-authority.js +15 -0
- package/dist/command-authority.js.map +1 -0
- package/dist/command-retention.d.ts +5 -0
- package/dist/command-retention.d.ts.map +1 -0
- package/dist/command-retention.js +18 -0
- package/dist/command-retention.js.map +1 -0
- package/dist/command-store.d.ts +41 -0
- package/dist/command-store.d.ts.map +1 -0
- package/dist/command-store.js +197 -0
- package/dist/command-store.js.map +1 -0
- package/dist/events.d.ts +2 -3
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +2 -3
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/interactions.d.ts +32 -22
- package/dist/interactions.d.ts.map +1 -1
- package/dist/interactions.js +183 -56
- package/dist/interactions.js.map +1 -1
- package/dist/journal-events.d.ts +4 -0
- package/dist/journal-events.d.ts.map +1 -0
- package/dist/journal-events.js +23 -0
- package/dist/journal-events.js.map +1 -0
- package/dist/journal-manager.d.ts +72 -0
- package/dist/journal-manager.d.ts.map +1 -0
- package/dist/journal-manager.js +463 -0
- package/dist/journal-manager.js.map +1 -0
- package/dist/journal-projection.d.ts +11 -0
- package/dist/journal-projection.d.ts.map +1 -0
- package/dist/journal-projection.js +2 -0
- package/dist/journal-projection.js.map +1 -0
- package/dist/journal-recovery-files.d.ts +27 -0
- package/dist/journal-recovery-files.d.ts.map +1 -0
- package/dist/journal-recovery-files.js +209 -0
- package/dist/journal-recovery-files.js.map +1 -0
- package/dist/operator-decisions.d.ts +30 -0
- package/dist/operator-decisions.d.ts.map +1 -0
- package/dist/operator-decisions.js +137 -0
- package/dist/operator-decisions.js.map +1 -0
- package/dist/project-partitions.d.ts +167 -0
- package/dist/project-partitions.d.ts.map +1 -0
- package/dist/project-partitions.js +365 -0
- package/dist/project-partitions.js.map +1 -0
- package/dist/projects.d.ts +29 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +180 -0
- package/dist/projects.js.map +1 -0
- package/dist/quota-registry.d.ts +75 -0
- package/dist/quota-registry.d.ts.map +1 -0
- package/dist/quota-registry.js +208 -0
- package/dist/quota-registry.js.map +1 -0
- package/dist/resource-store.d.ts +22 -0
- package/dist/resource-store.d.ts.map +1 -0
- package/dist/resource-store.js +272 -0
- package/dist/resource-store.js.map +1 -0
- package/dist/run-events.d.ts +15 -0
- package/dist/run-events.d.ts.map +1 -0
- package/dist/run-events.js +29 -0
- package/dist/run-events.js.map +1 -0
- package/dist/server.d.ts +33 -33
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +231 -238
- package/dist/server.js.map +1 -1
- package/dist/spec-sessions.d.ts +72 -0
- package/dist/spec-sessions.d.ts.map +1 -0
- package/dist/spec-sessions.js +301 -0
- package/dist/spec-sessions.js.map +1 -0
- package/dist/terminate.d.ts +52 -0
- package/dist/terminate.d.ts.map +1 -0
- package/dist/terminate.js +111 -0
- package/dist/terminate.js.map +1 -0
- package/dist/thread-head-ping.d.ts +35 -0
- package/dist/thread-head-ping.d.ts.map +1 -0
- package/dist/thread-head-ping.js +67 -0
- package/dist/thread-head-ping.js.map +1 -0
- package/dist/thread-lifecycle.d.ts +5 -0
- package/dist/thread-lifecycle.d.ts.map +1 -0
- package/dist/thread-lifecycle.js +57 -0
- package/dist/thread-lifecycle.js.map +1 -0
- package/dist/thread-store-support.d.ts +37 -0
- package/dist/thread-store-support.d.ts.map +1 -0
- package/dist/thread-store-support.js +94 -0
- package/dist/thread-store-support.js.map +1 -0
- package/dist/threads.d.ts +59 -13
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +254 -141
- package/dist/threads.js.map +1 -1
- package/dist/token.d.ts +13 -4
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +134 -29
- package/dist/token.js.map +1 -1
- package/dist/writer-lease.d.ts +21 -0
- package/dist/writer-lease.d.ts.map +1 -0
- package/dist/writer-lease.js +94 -0
- package/dist/writer-lease.js.map +1 -0
- package/package.json +5 -4
package/dist/client.d.ts
CHANGED
|
@@ -5,7 +5,12 @@ export declare class DaemonClient {
|
|
|
5
5
|
constructor(socketPath: string, token: string);
|
|
6
6
|
call<T = unknown>(method: string, params?: unknown): Promise<T>;
|
|
7
7
|
health(): Promise<unknown>;
|
|
8
|
-
enqueue(
|
|
8
|
+
enqueue(request: unknown, options?: {
|
|
9
|
+
idempotencyKey?: string;
|
|
10
|
+
clientId?: string;
|
|
11
|
+
idempotencyRequest?: unknown;
|
|
12
|
+
operation?: string;
|
|
13
|
+
}): Promise<{
|
|
9
14
|
id: string;
|
|
10
15
|
state: string;
|
|
11
16
|
}>;
|
|
@@ -18,10 +23,31 @@ export declare class DaemonClient {
|
|
|
18
23
|
runDir?: string;
|
|
19
24
|
result?: unknown;
|
|
20
25
|
error?: string;
|
|
26
|
+
errorCode?: string;
|
|
27
|
+
errorStatus?: number;
|
|
21
28
|
createdAt?: string;
|
|
22
29
|
startedAt?: string;
|
|
23
30
|
finishedAt?: string;
|
|
24
31
|
}>;
|
|
32
|
+
findAccepted(request: unknown, options: {
|
|
33
|
+
idempotencyKey: string;
|
|
34
|
+
clientId?: string;
|
|
35
|
+
operation?: string;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
id: string;
|
|
38
|
+
state: string;
|
|
39
|
+
params?: unknown;
|
|
40
|
+
runId?: string;
|
|
41
|
+
taskId?: string;
|
|
42
|
+
runDir?: string;
|
|
43
|
+
result?: unknown;
|
|
44
|
+
error?: string;
|
|
45
|
+
errorCode?: string;
|
|
46
|
+
errorStatus?: number;
|
|
47
|
+
createdAt?: string;
|
|
48
|
+
startedAt?: string;
|
|
49
|
+
finishedAt?: string;
|
|
50
|
+
} | null>;
|
|
25
51
|
list(): Promise<{
|
|
26
52
|
id: string;
|
|
27
53
|
state: string;
|
|
@@ -30,6 +56,8 @@ export declare class DaemonClient {
|
|
|
30
56
|
taskId?: string;
|
|
31
57
|
runDir?: string;
|
|
32
58
|
error?: string;
|
|
59
|
+
errorCode?: string;
|
|
60
|
+
errorStatus?: number;
|
|
33
61
|
createdAt?: string;
|
|
34
62
|
startedAt?: string;
|
|
35
63
|
finishedAt?: string;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,8DAA8D;AAC9D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;IAGhC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAgD/D,MAAM;IAGN,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;KACf;YAEiB,MAAM;eAAS,MAAM;;IAQ9C,MAAM,CAAC,EAAE,EAAE,MAAM;YAET,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAGvB,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;YAjBpE,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,OAAO;gBACR,MAAM;oBACF,MAAM;sBACJ,MAAM;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAcvB,IAAI;YAGM,MAAM;eACH,MAAM;iBACJ,OAAO;gBACR,MAAM;iBACL,MAAM;iBACN,MAAM;gBACP,MAAM;oBACF,MAAM;sBACJ,MAAM;oBACR,MAAM;oBACN,MAAM;qBACL,MAAM;;IAIzB,MAAM,CAAC,EAAE,EAAE,MAAM;IAGjB,QAAQ;CAGT"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { connect } from "node:net";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { createInterface } from "node:readline";
|
|
3
4
|
/** Thin JSON-RPC client for the daemon over a Unix socket. */
|
|
4
5
|
export class DaemonClient {
|
|
@@ -41,8 +42,13 @@ export class DaemonClient {
|
|
|
41
42
|
const msg = JSON.parse(line);
|
|
42
43
|
if (msg.id !== id)
|
|
43
44
|
return;
|
|
44
|
-
if (msg.error)
|
|
45
|
-
|
|
45
|
+
if (msg.error) {
|
|
46
|
+
const error = Object.assign(new Error(msg.error.message), {
|
|
47
|
+
...(typeof msg.error.code === "string" ? { code: msg.error.code } : {}),
|
|
48
|
+
...(typeof msg.error.status === "number" ? { status: msg.error.status } : {}),
|
|
49
|
+
});
|
|
50
|
+
finish(() => reject(error));
|
|
51
|
+
}
|
|
46
52
|
else
|
|
47
53
|
finish(() => resolve(msg.result));
|
|
48
54
|
}
|
|
@@ -55,12 +61,26 @@ export class DaemonClient {
|
|
|
55
61
|
health() {
|
|
56
62
|
return this.call("claudexor.health");
|
|
57
63
|
}
|
|
58
|
-
enqueue(
|
|
59
|
-
return this.call("claudexor.enqueue",
|
|
64
|
+
enqueue(request, options = {}) {
|
|
65
|
+
return this.call("claudexor.enqueue", {
|
|
66
|
+
request,
|
|
67
|
+
idempotencyKey: options.idempotencyKey ?? randomUUID(),
|
|
68
|
+
clientId: options.clientId ?? "daemon-client",
|
|
69
|
+
idempotencyRequest: options.idempotencyRequest,
|
|
70
|
+
operation: options.operation,
|
|
71
|
+
});
|
|
60
72
|
}
|
|
61
73
|
status(id) {
|
|
62
74
|
return this.call("claudexor.status", { id });
|
|
63
75
|
}
|
|
76
|
+
findAccepted(request, options) {
|
|
77
|
+
return this.call("claudexor.findAccepted", {
|
|
78
|
+
request,
|
|
79
|
+
idempotencyKey: options.idempotencyKey,
|
|
80
|
+
clientId: options.clientId ?? "daemon-client",
|
|
81
|
+
operation: options.operation,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
64
84
|
list() {
|
|
65
85
|
return this.call("claudexor.list");
|
|
66
86
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,8DAA8D;AAC9D,MAAM,OAAO,YAAY;IAEJ;IACA;IAFnB,YACmB,UAAkB,EAClB,KAAa;QADb,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEJ,IAAI,CAAc,MAAc,EAAE,MAAgB;QAChD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,IAAI,GAAW,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,EAAkD,CAAC;YACvD,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;gBAChC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,EAAE,EAAE,KAAK,EAAE,CAAC;gBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,EAAE,EAAE,CAAC;YACP,CAAC,CAAC;YACF,mEAAmE;YACnE,gEAAgE;YAChE,MAAM,KAAK,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CommandStore } from "./command-store.js";
|
|
2
|
+
export interface CommandAuthority {
|
|
3
|
+
current?(): CommandStore;
|
|
4
|
+
forRequest?(params: unknown): CommandStore;
|
|
5
|
+
all?(): CommandStore[];
|
|
6
|
+
findById?(id: string): CommandStore | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare function commandStores(authority: CommandAuthority): CommandStore[];
|
|
9
|
+
export declare function commandStoreForRequest(authority: CommandAuthority, params: unknown): CommandStore;
|
|
10
|
+
export declare function commandStoreForId(authority: CommandAuthority, id: string): CommandStore | undefined;
|
|
11
|
+
//# sourceMappingURL=command-authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-authority.d.ts","sourceRoot":"","sources":["../src/command-authority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,IAAI,YAAY,CAAC;IACzB,UAAU,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC;IAC3C,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;CACjD;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAGzE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,CAIjG;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,gBAAgB,EAC3B,EAAE,EAAE,MAAM,GACT,YAAY,GAAG,SAAS,CAE1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function commandStores(authority) {
|
|
2
|
+
if (authority.all)
|
|
3
|
+
return authority.all();
|
|
4
|
+
return authority.current ? [authority.current()] : [];
|
|
5
|
+
}
|
|
6
|
+
export function commandStoreForRequest(authority, params) {
|
|
7
|
+
const store = authority.forRequest?.(params) ?? authority.current?.();
|
|
8
|
+
if (!store)
|
|
9
|
+
throw new Error("command authority cannot route the request");
|
|
10
|
+
return store;
|
|
11
|
+
}
|
|
12
|
+
export function commandStoreForId(authority, id) {
|
|
13
|
+
return authority.findById?.(id) ?? commandStores(authority).find((store) => store.get(id));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=command-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-authority.js","sourceRoot":"","sources":["../src/command-authority.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,aAAa,CAAC,SAA2B;IACvD,IAAI,SAAS,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC;IAC1C,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAA2B,EAAE,MAAe;IACjF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAA2B,EAC3B,EAAU;IAEV,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { JobRecord } from "./server.js";
|
|
2
|
+
export declare function productCommandRecords(records: readonly JobRecord[]): JobRecord[];
|
|
3
|
+
/** Select only expired terminal records; blocked commands remain operator-visible. */
|
|
4
|
+
export declare function prunableCommandIds(records: readonly JobRecord[], cap: number, retentionMs: number, now: number): string[];
|
|
5
|
+
//# sourceMappingURL=command-retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-retention.d.ts","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhF;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAaV"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function productCommandRecords(records) {
|
|
2
|
+
return records.filter(({ id }) => !id.startsWith("delivery-"));
|
|
3
|
+
}
|
|
4
|
+
/** Select only expired terminal records; blocked commands remain operator-visible. */
|
|
5
|
+
export function prunableCommandIds(records, cap, retentionMs, now) {
|
|
6
|
+
const terminal = records.filter((record) => !["running", "queued", "blocked"].includes(record.state));
|
|
7
|
+
if (terminal.length <= cap)
|
|
8
|
+
return [];
|
|
9
|
+
return terminal
|
|
10
|
+
.filter((record) => {
|
|
11
|
+
const settledAt = Date.parse(record.finishedAt ?? "");
|
|
12
|
+
return Number.isFinite(settledAt) && now - settledAt >= retentionMs;
|
|
13
|
+
})
|
|
14
|
+
.sort((a, b) => (a.createdAt < b.createdAt ? -1 : 1))
|
|
15
|
+
.slice(0, terminal.length - cap)
|
|
16
|
+
.map((record) => record.id);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=command-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-retention.js","sourceRoot":"","sources":["../src/command-retention.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,OAA6B;IACjE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAChC,OAA6B,EAC7B,GAAW,EACX,WAAmB,EACnB,GAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CACrE,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC;IACtE,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;SAC/B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { DurableJournal } from "@claudexor/journal";
|
|
2
|
+
import type { JobRecord } from "./server.js";
|
|
3
|
+
/** Journal-backed authority for daemon commands. A returned mutation is fsynced. */
|
|
4
|
+
export declare class CommandStore {
|
|
5
|
+
private readonly journal;
|
|
6
|
+
private readonly now;
|
|
7
|
+
private readonly recordsById;
|
|
8
|
+
private readonly idByKeyDigest;
|
|
9
|
+
constructor(journal: DurableJournal, now?: () => Date);
|
|
10
|
+
accept(input: {
|
|
11
|
+
id: string;
|
|
12
|
+
params: unknown;
|
|
13
|
+
idempotencyKey: string;
|
|
14
|
+
clientId: string;
|
|
15
|
+
operation?: string;
|
|
16
|
+
idempotencyParams?: unknown;
|
|
17
|
+
}): {
|
|
18
|
+
record: JobRecord;
|
|
19
|
+
reused: boolean;
|
|
20
|
+
};
|
|
21
|
+
find(input: {
|
|
22
|
+
params: unknown;
|
|
23
|
+
idempotencyKey: string;
|
|
24
|
+
clientId: string;
|
|
25
|
+
operation?: string;
|
|
26
|
+
}): JobRecord | null;
|
|
27
|
+
get(id: string): JobRecord | undefined;
|
|
28
|
+
records(): JobRecord[];
|
|
29
|
+
update(id: string, patch: Partial<JobRecord>): JobRecord;
|
|
30
|
+
prune(ids: readonly string[]): void;
|
|
31
|
+
validateProjection(): void;
|
|
32
|
+
private replay;
|
|
33
|
+
private interruptUnknownCommands;
|
|
34
|
+
private drop;
|
|
35
|
+
}
|
|
36
|
+
export declare function commandProjection(): {
|
|
37
|
+
name: string;
|
|
38
|
+
create: (journal: DurableJournal) => CommandStore;
|
|
39
|
+
validate: (store: CommandStore) => void;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=command-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-store.d.ts","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AAgBvD,oFAAoF;AACpF,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4D;gBAGvE,OAAO,EAAE,cAAc,EACvB,GAAG,GAAE,MAAM,IAAuB;IAMrD,MAAM,CAAC,KAAK,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IA0B1C,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,SAAS,GAAG,IAAI;IASpB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,OAAO,IAAI,SAAS,EAAE;IAItB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;IASxD,KAAK,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAMnC,kBAAkB,IAAI,IAAI;IAO1B,OAAO,CAAC,MAAM;IAkCd,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,IAAI;CAOb;AAED,wBAAgB,iBAAiB;;sBAGX,cAAc;sBACd,YAAY;EAEjC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { hashJson } from "@claudexor/util";
|
|
2
|
+
const ACCEPTED = "command.accepted";
|
|
3
|
+
const UPDATED = "command.updated";
|
|
4
|
+
const PRUNED = "command.pruned";
|
|
5
|
+
/** Journal-backed authority for daemon commands. A returned mutation is fsynced. */
|
|
6
|
+
export class CommandStore {
|
|
7
|
+
journal;
|
|
8
|
+
now;
|
|
9
|
+
recordsById = new Map();
|
|
10
|
+
idByKeyDigest = new Map();
|
|
11
|
+
constructor(journal, now = () => new Date()) {
|
|
12
|
+
this.journal = journal;
|
|
13
|
+
this.now = now;
|
|
14
|
+
this.replay();
|
|
15
|
+
this.interruptUnknownCommands();
|
|
16
|
+
}
|
|
17
|
+
accept(input) {
|
|
18
|
+
validateKey(input.idempotencyKey);
|
|
19
|
+
const { requestDigest, keyDigest } = digests(this.journal.options.partition, input);
|
|
20
|
+
const prior = this.idByKeyDigest.get(keyDigest);
|
|
21
|
+
if (prior) {
|
|
22
|
+
if (prior.requestDigest !== requestDigest)
|
|
23
|
+
throw conflict();
|
|
24
|
+
const record = this.recordsById.get(prior.id);
|
|
25
|
+
if (!record)
|
|
26
|
+
throw new Error(`idempotency record points to missing command ${prior.id}`);
|
|
27
|
+
return { record, reused: true };
|
|
28
|
+
}
|
|
29
|
+
const record = {
|
|
30
|
+
id: input.id,
|
|
31
|
+
state: "queued",
|
|
32
|
+
params: structuredClone(input.params),
|
|
33
|
+
createdAt: this.now().toISOString(),
|
|
34
|
+
};
|
|
35
|
+
this.journal.append(ACCEPTED, {
|
|
36
|
+
record: persisted(record),
|
|
37
|
+
keyDigest,
|
|
38
|
+
requestDigest,
|
|
39
|
+
});
|
|
40
|
+
this.recordsById.set(record.id, record);
|
|
41
|
+
this.idByKeyDigest.set(keyDigest, { id: record.id, requestDigest });
|
|
42
|
+
return { record, reused: false };
|
|
43
|
+
}
|
|
44
|
+
find(input) {
|
|
45
|
+
validateKey(input.idempotencyKey);
|
|
46
|
+
const { requestDigest, keyDigest } = digests(this.journal.options.partition, input);
|
|
47
|
+
const prior = this.idByKeyDigest.get(keyDigest);
|
|
48
|
+
if (!prior)
|
|
49
|
+
return null;
|
|
50
|
+
if (prior.requestDigest !== requestDigest)
|
|
51
|
+
throw conflict();
|
|
52
|
+
return this.recordsById.get(prior.id) ?? null;
|
|
53
|
+
}
|
|
54
|
+
get(id) {
|
|
55
|
+
return this.recordsById.get(id);
|
|
56
|
+
}
|
|
57
|
+
records() {
|
|
58
|
+
return [...this.recordsById.values()];
|
|
59
|
+
}
|
|
60
|
+
update(id, patch) {
|
|
61
|
+
const current = this.recordsById.get(id);
|
|
62
|
+
if (!current)
|
|
63
|
+
throw new Error(`no such job: ${id}`);
|
|
64
|
+
const next = { ...current, ...structuredClone(patch), id: current.id };
|
|
65
|
+
this.journal.append(UPDATED, { record: persisted(next) });
|
|
66
|
+
this.recordsById.set(id, next);
|
|
67
|
+
return next;
|
|
68
|
+
}
|
|
69
|
+
prune(ids) {
|
|
70
|
+
if (ids.length === 0)
|
|
71
|
+
return;
|
|
72
|
+
this.journal.append(PRUNED, { ids: [...ids] });
|
|
73
|
+
this.drop(ids);
|
|
74
|
+
}
|
|
75
|
+
validateProjection() {
|
|
76
|
+
for (const record of this.recordsById.values())
|
|
77
|
+
validateRecord(record);
|
|
78
|
+
for (const entry of this.idByKeyDigest.values()) {
|
|
79
|
+
if (!this.recordsById.has(entry.id))
|
|
80
|
+
throw new Error("command idempotency index is dangling");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
replay() {
|
|
84
|
+
for (const entry of this.journal.records()) {
|
|
85
|
+
if (entry.type === ACCEPTED) {
|
|
86
|
+
const payload = entry.payload;
|
|
87
|
+
validateRecord(payload.record);
|
|
88
|
+
if (!payload.keyDigest || !payload.requestDigest)
|
|
89
|
+
throw new Error("invalid accepted command");
|
|
90
|
+
const prior = this.idByKeyDigest.get(payload.keyDigest);
|
|
91
|
+
if (prior &&
|
|
92
|
+
(prior.id !== payload.record.id || prior.requestDigest !== payload.requestDigest)) {
|
|
93
|
+
throw new Error("conflicting command idempotency history");
|
|
94
|
+
}
|
|
95
|
+
this.recordsById.set(payload.record.id, structuredClone(payload.record));
|
|
96
|
+
this.idByKeyDigest.set(payload.keyDigest, {
|
|
97
|
+
id: payload.record.id,
|
|
98
|
+
requestDigest: payload.requestDigest,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else if (entry.type === UPDATED) {
|
|
102
|
+
const record = entry.payload.record;
|
|
103
|
+
validateRecord(record);
|
|
104
|
+
if (!this.recordsById.has(record.id))
|
|
105
|
+
throw new Error("command update precedes acceptance");
|
|
106
|
+
this.recordsById.set(record.id, structuredClone(record));
|
|
107
|
+
}
|
|
108
|
+
else if (entry.type === PRUNED) {
|
|
109
|
+
const ids = entry.payload.ids;
|
|
110
|
+
if (!Array.isArray(ids) || ids.some((id) => typeof id !== "string")) {
|
|
111
|
+
throw new Error("invalid command prune record");
|
|
112
|
+
}
|
|
113
|
+
this.drop(ids);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
interruptUnknownCommands() {
|
|
118
|
+
for (const record of this.recordsById.values()) {
|
|
119
|
+
if (record.state !== "queued" && record.state !== "running")
|
|
120
|
+
continue;
|
|
121
|
+
this.update(record.id, {
|
|
122
|
+
state: "interrupted_unknown",
|
|
123
|
+
error: "daemon restarted before command completion was durably observed",
|
|
124
|
+
finishedAt: this.now().toISOString(),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
drop(ids) {
|
|
129
|
+
const removed = new Set(ids);
|
|
130
|
+
for (const id of removed)
|
|
131
|
+
this.recordsById.delete(id);
|
|
132
|
+
for (const [digest, entry] of this.idByKeyDigest) {
|
|
133
|
+
if (removed.has(entry.id))
|
|
134
|
+
this.idByKeyDigest.delete(digest);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function commandProjection() {
|
|
139
|
+
return {
|
|
140
|
+
name: "commands",
|
|
141
|
+
create: (journal) => new CommandStore(journal),
|
|
142
|
+
validate: (store) => store.validateProjection(),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function persisted(record) {
|
|
146
|
+
return structuredClone(record);
|
|
147
|
+
}
|
|
148
|
+
function validateRecord(record) {
|
|
149
|
+
if (!record || typeof record !== "object" || !record.id || !record.createdAt) {
|
|
150
|
+
throw new Error("invalid command record");
|
|
151
|
+
}
|
|
152
|
+
const states = [
|
|
153
|
+
"queued",
|
|
154
|
+
"running",
|
|
155
|
+
"blocked",
|
|
156
|
+
"succeeded",
|
|
157
|
+
"no_op",
|
|
158
|
+
"ungated",
|
|
159
|
+
"review_not_run",
|
|
160
|
+
"failed",
|
|
161
|
+
"cancelled",
|
|
162
|
+
"interrupted_unknown",
|
|
163
|
+
"cost_unverifiable",
|
|
164
|
+
"exhausted_overshoot",
|
|
165
|
+
"exhausted",
|
|
166
|
+
"not_converged",
|
|
167
|
+
"stuck_no_progress",
|
|
168
|
+
];
|
|
169
|
+
if (!states.includes(record.state))
|
|
170
|
+
throw new Error(`invalid command state '${record.state}'`);
|
|
171
|
+
}
|
|
172
|
+
function validateKey(key) {
|
|
173
|
+
if (!key || key.length > 256) {
|
|
174
|
+
throw Object.assign(new Error("Idempotency-Key must contain 1-256 characters"), {
|
|
175
|
+
code: "invalid_idempotency_key",
|
|
176
|
+
status: 400,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function digests(partition, input) {
|
|
181
|
+
return {
|
|
182
|
+
requestDigest: hashJson(input.idempotencyParams ?? input.params),
|
|
183
|
+
keyDigest: hashJson({
|
|
184
|
+
client: input.clientId,
|
|
185
|
+
partition,
|
|
186
|
+
operation: input.operation ?? "run.create",
|
|
187
|
+
key: input.idempotencyKey,
|
|
188
|
+
}),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function conflict() {
|
|
192
|
+
return Object.assign(new Error("idempotency key was already used with a different request"), {
|
|
193
|
+
code: "idempotency_conflict",
|
|
194
|
+
status: 409,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=command-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-store.js","sourceRoot":"","sources":["../src/command-store.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
CHANGED
|
@@ -2,9 +2,8 @@ import type { RunEvent } from "@claudexor/schema";
|
|
|
2
2
|
export type RunEventListener = (event: RunEvent) => void;
|
|
3
3
|
/**
|
|
4
4
|
* In-process run-event bus: the daemon's runner publishes every RunEvent the
|
|
5
|
-
* orchestrator emits
|
|
6
|
-
*
|
|
7
|
-
* replay source; this bus only removes tail-polling latency. A throwing
|
|
5
|
+
* orchestrator emits after the owning journal append, and live observers
|
|
6
|
+
* subscribe for push delivery. This bus only removes polling latency. A throwing
|
|
8
7
|
* listener must never break a run.
|
|
9
8
|
*/
|
|
10
9
|
export declare class RunEventBus {
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAU9B,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;CAMlD"}
|
package/dist/events.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-process run-event bus: the daemon's runner publishes every RunEvent the
|
|
3
|
-
* orchestrator emits
|
|
4
|
-
*
|
|
5
|
-
* replay source; this bus only removes tail-polling latency. A throwing
|
|
3
|
+
* orchestrator emits after the owning journal append, and live observers
|
|
4
|
+
* subscribe for push delivery. This bus only removes polling latency. A throwing
|
|
6
5
|
* listener must never break a run.
|
|
7
6
|
*/
|
|
8
7
|
export class RunEventBus {
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACL,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEzD,OAAO,CAAC,KAAe;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAA0B;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
export * from "./token.js";
|
|
2
2
|
export * from "./server.js";
|
|
3
|
+
export * from "./writer-lease.js";
|
|
4
|
+
export * from "./terminate.js";
|
|
3
5
|
export * from "./client.js";
|
|
4
6
|
export * from "./events.js";
|
|
5
7
|
export * from "./interactions.js";
|
|
8
|
+
export * from "./operator-decisions.js";
|
|
9
|
+
export * from "./run-events.js";
|
|
10
|
+
export * from "./spec-sessions.js";
|
|
6
11
|
export * from "./threads.js";
|
|
12
|
+
export * from "./thread-head-ping.js";
|
|
13
|
+
export * from "./projects.js";
|
|
14
|
+
export * from "./journal-manager.js";
|
|
15
|
+
export * from "./command-store.js";
|
|
16
|
+
export * from "./command-authority.js";
|
|
17
|
+
export * from "./resource-store.js";
|
|
18
|
+
export * from "./quota-registry.js";
|
|
19
|
+
export * from "./project-partitions.js";
|
|
7
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
export * from "./token.js";
|
|
2
2
|
export * from "./server.js";
|
|
3
|
+
export * from "./writer-lease.js";
|
|
4
|
+
export * from "./terminate.js";
|
|
3
5
|
export * from "./client.js";
|
|
4
6
|
export * from "./events.js";
|
|
5
7
|
export * from "./interactions.js";
|
|
8
|
+
export * from "./operator-decisions.js";
|
|
9
|
+
export * from "./run-events.js";
|
|
10
|
+
export * from "./spec-sessions.js";
|
|
6
11
|
export * from "./threads.js";
|
|
12
|
+
export * from "./thread-head-ping.js";
|
|
13
|
+
export * from "./projects.js";
|
|
14
|
+
export * from "./journal-manager.js";
|
|
15
|
+
export * from "./command-store.js";
|
|
16
|
+
export * from "./command-authority.js";
|
|
17
|
+
export * from "./resource-store.js";
|
|
18
|
+
export * from "./quota-registry.js";
|
|
19
|
+
export * from "./project-partitions.js";
|
|
7
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
package/dist/interactions.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DurableJournal } from "@claudexor/journal";
|
|
1
2
|
import type { ControlPendingInteraction, InteractionAnswerSet, InteractionRequest } from "@claudexor/schema";
|
|
2
3
|
/** Structural twin of the orchestrator's PendingInteractionContext. */
|
|
3
4
|
export interface InteractionContext {
|
|
@@ -10,35 +11,44 @@ export interface InteractionContext {
|
|
|
10
11
|
timeoutAt: string;
|
|
11
12
|
}
|
|
12
13
|
export type InteractionAnswerStatus = "delivered" | "not_found" | "already_resolved" | "rejected";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* parks the attempt's promise here; control-api lists pending entries for the
|
|
18
|
-
* UI and delivers answers via `answer()`. The orchestrator owns the timeout —
|
|
19
|
-
* entries self-expire here only as hygiene so a timed-out question cannot be
|
|
20
|
-
* answered into a session that already moved on.
|
|
21
|
-
*/
|
|
22
|
-
export declare class InteractionRegistry {
|
|
14
|
+
export type InteractionTerminal = "answered" | "timeout" | "run_terminal" | "interrupted";
|
|
15
|
+
/** Journal-backed authority for pending interaction projections. */
|
|
16
|
+
export declare class InteractionStore {
|
|
17
|
+
private readonly journal;
|
|
23
18
|
private readonly pending;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
private readonly resolved;
|
|
20
|
+
constructor(journal: DurableJournal);
|
|
21
|
+
request(ctx: InteractionContext): ControlPendingInteraction;
|
|
22
|
+
resolve(runId: string, interactionId: string, terminal: InteractionTerminal): "resolved" | "not_found" | "already_resolved";
|
|
23
|
+
resolveRun(runId: string, terminal: Extract<InteractionTerminal, "run_terminal" | "interrupted">): string[];
|
|
24
|
+
status(runId: string, interactionId: string): "pending" | "resolved" | "missing";
|
|
25
|
+
pendingForRun(runId: string): ControlPendingInteraction[];
|
|
26
|
+
validateProjection(): void;
|
|
27
|
+
private replay;
|
|
28
|
+
private interruptAfterRestart;
|
|
29
|
+
private commitResolution;
|
|
30
|
+
private applyResolution;
|
|
31
|
+
}
|
|
32
|
+
/** Live answer bridge; durable state remains owned by InteractionStore. */
|
|
33
|
+
export declare class InteractionRegistry {
|
|
34
|
+
private readonly stores;
|
|
35
|
+
private readonly live;
|
|
36
|
+
constructor(stores: {
|
|
37
|
+
forRequest(params: unknown): InteractionStore;
|
|
38
|
+
all(): InteractionStore[];
|
|
39
|
+
});
|
|
40
|
+
register(ctx: InteractionContext, params: unknown): Promise<InteractionAnswerSet | null>;
|
|
31
41
|
answer(runId: string, interactionId: string, rawAnswers: unknown): {
|
|
32
42
|
status: InteractionAnswerStatus;
|
|
33
43
|
message?: string;
|
|
34
44
|
};
|
|
35
|
-
/** Resolve-and-drop every pending question of a run that reached a terminal
|
|
36
|
-
* (cancel/failed/succeeded): a dead run must not advertise waiting_on_user
|
|
37
|
-
* for up to the interaction timeout. Resolving null mirrors the
|
|
38
|
-
* orchestrator's own decline path. */
|
|
39
45
|
dropForRun(runId: string): void;
|
|
40
46
|
pendingForRun(runId: string): ControlPendingInteraction[];
|
|
41
|
-
/** Drop expired entries (the orchestrator already declined them). */
|
|
42
47
|
private prune;
|
|
43
48
|
}
|
|
49
|
+
export declare function interactionProjection(): {
|
|
50
|
+
name: string;
|
|
51
|
+
create: (journal: DurableJournal) => InteractionStore;
|
|
52
|
+
validate: (store: InteractionStore) => void;
|
|
53
|
+
};
|
|
44
54
|
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAM3B,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,WAAW,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAClG,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;AAW1F,oEAAoE;AACpE,qBAAa,gBAAgB;IAIf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAEjB,OAAO,EAAE,cAAc;IAKpD,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,yBAAyB;IAoB3D,OAAO,CACL,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,mBAAmB,GAC5B,UAAU,GAAG,WAAW,GAAG,kBAAkB;IAQhD,UAAU,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,CAAC,mBAAmB,EAAE,cAAc,GAAG,aAAa,CAAC,GACrE,MAAM,EAAE;IAMX,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS;IAMhF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,yBAAyB,EAAE;IAIzD,kBAAkB,IAAI,IAAI;IAO1B,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;CAOxB;AAQD,2EAA2E;AAC3E,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;gBAGlC,MAAM,EAAE;QACvB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC;QAC9C,GAAG,IAAI,gBAAgB,EAAE,CAAC;KAC3B;IAGH,QAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAaxF,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,OAAO,GAClB;QAAE,MAAM,EAAE,uBAAuB,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBxD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,yBAAyB,EAAE;IAKzD,OAAO,CAAC,KAAK;CAYd;AAED,wBAAgB,qBAAqB;;sBAGf,cAAc;sBACd,gBAAgB;EAErC"}
|