@claudexor/daemon 3.1.2 → 3.2.1
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/README.md +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -0
- package/dist/client.js.map +1 -1
- package/dist/command-rpc.d.ts +19 -0
- package/dist/command-rpc.d.ts.map +1 -0
- package/dist/command-rpc.js +20 -0
- package/dist/command-rpc.js.map +1 -0
- package/dist/command-store.d.ts +8 -0
- package/dist/command-store.d.ts.map +1 -1
- package/dist/command-store.js +322 -0
- package/dist/command-store.js.map +1 -1
- package/dist/daemon-shutdown-rpc.d.ts +27 -0
- package/dist/daemon-shutdown-rpc.d.ts.map +1 -0
- package/dist/daemon-shutdown-rpc.js +110 -0
- package/dist/daemon-shutdown-rpc.js.map +1 -0
- package/dist/delivery-command.d.ts +28 -0
- package/dist/delivery-command.d.ts.map +1 -0
- package/dist/delivery-command.js +37 -0
- package/dist/delivery-command.js.map +1 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interactions.d.ts +3 -3
- package/dist/interactions.d.ts.map +1 -1
- package/dist/interactions.js +15 -4
- package/dist/interactions.js.map +1 -1
- package/dist/job-record.d.ts +2 -0
- package/dist/job-record.d.ts.map +1 -1
- package/dist/job-record.js +14 -7
- package/dist/job-record.js.map +1 -1
- package/dist/job-settlement.d.ts +16 -0
- package/dist/job-settlement.d.ts.map +1 -0
- package/dist/job-settlement.js +56 -0
- package/dist/job-settlement.js.map +1 -0
- package/dist/journal-manager.d.ts +5 -5
- package/dist/journal-manager.d.ts.map +1 -1
- package/dist/journal-manager.js.map +1 -1
- package/dist/journal-recovery-files.d.ts +1 -1
- package/dist/operator-decisions.d.ts +10 -1
- package/dist/operator-decisions.d.ts.map +1 -1
- package/dist/operator-decisions.js +18 -10
- package/dist/operator-decisions.js.map +1 -1
- package/dist/project-partitions.d.ts +17 -9
- package/dist/project-partitions.d.ts.map +1 -1
- package/dist/project-partitions.js +13 -34
- package/dist/project-partitions.js.map +1 -1
- package/dist/projects.d.ts.map +1 -1
- package/dist/projects.js.map +1 -1
- package/dist/quota-registry.d.ts +65 -13
- package/dist/quota-registry.d.ts.map +1 -1
- package/dist/quota-registry.js +203 -18
- package/dist/quota-registry.js.map +1 -1
- package/dist/resource-store.d.ts.map +1 -1
- package/dist/run-events.d.ts.map +1 -1
- package/dist/run-events.js.map +1 -1
- package/dist/server.d.ts +7 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +26 -50
- package/dist/server.js.map +1 -1
- package/dist/terminal-authority.d.ts +39 -0
- package/dist/terminal-authority.d.ts.map +1 -0
- package/dist/terminal-authority.js +58 -0
- package/dist/terminal-authority.js.map +1 -0
- package/dist/terminate.d.ts +14 -0
- package/dist/terminate.d.ts.map +1 -1
- package/dist/terminate.js +13 -1
- package/dist/terminate.js.map +1 -1
- package/dist/thread-head-ping.d.ts.map +1 -1
- package/dist/thread-head-ping.js.map +1 -1
- package/dist/thread-store-support.d.ts +7 -0
- package/dist/thread-store-support.d.ts.map +1 -1
- package/dist/thread-store-support.js +22 -0
- package/dist/thread-store-support.js.map +1 -1
- package/dist/threads.d.ts +7 -17
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +24 -37
- package/dist/threads.js.map +1 -1
- package/dist/writer-lease.d.ts +4 -0
- package/dist/writer-lease.d.ts.map +1 -1
- package/dist/writer-lease.js +1 -0
- package/dist/writer-lease.js.map +1 -1
- package/package.json +7 -6
package/dist/quota-registry.d.ts
CHANGED
|
@@ -25,36 +25,42 @@ export declare class QuotaRegistry {
|
|
|
25
25
|
private absences;
|
|
26
26
|
private pollFailures;
|
|
27
27
|
private pollNotBefore;
|
|
28
|
+
/** Signature carried by the last durable projection marker. Raw quota
|
|
29
|
+
* evidence may span several records; this is the commit/recovery boundary
|
|
30
|
+
* consumed by snapshot-then-SSE clients. */
|
|
31
|
+
private lastPublishedProjectionSignature;
|
|
32
|
+
private refreshInFlight;
|
|
28
33
|
constructor(journal: DurableJournal, refreshers?: readonly QuotaRefresher[], now?: () => Date, subjects?: QuotaSubjectUniverse);
|
|
29
34
|
read(): {
|
|
30
35
|
snapshots: {
|
|
31
|
-
source: "codex_app_server" | "codex_rollout" | "claude_statusline" | "claude_api_retry" | "claude_oauth_usage";
|
|
32
36
|
subject: {
|
|
33
37
|
harness: string;
|
|
34
|
-
credential_route: "local" | "
|
|
38
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
35
39
|
plan_label: string | null;
|
|
36
40
|
subject_id: string | null;
|
|
37
41
|
};
|
|
38
42
|
constraints: {
|
|
39
43
|
id: string;
|
|
40
44
|
label: string;
|
|
45
|
+
applies_to_models?: string[] | null | undefined;
|
|
41
46
|
used_ratio: number | null;
|
|
42
47
|
window_seconds: number | null;
|
|
43
48
|
resets_at: string | null;
|
|
44
49
|
cooldown_until: string | null;
|
|
45
50
|
}[];
|
|
51
|
+
source: "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
|
|
46
52
|
observed_at: string;
|
|
47
|
-
freshness: "
|
|
53
|
+
freshness: "fresh" | "stale" | "unknown";
|
|
48
54
|
}[];
|
|
49
55
|
absences: {
|
|
50
|
-
detail: string | null;
|
|
51
|
-
reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
|
|
52
56
|
subject: {
|
|
53
57
|
harness: string;
|
|
54
|
-
credential_route: "local" | "
|
|
58
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
55
59
|
plan_label: string | null;
|
|
56
60
|
subject_id: string | null;
|
|
57
61
|
};
|
|
62
|
+
reason: "no_source" | "not_logged_in" | "platform_unsupported" | "refresh_failed" | "transport_unavailable";
|
|
63
|
+
detail: string | null;
|
|
58
64
|
observed_at: string;
|
|
59
65
|
}[];
|
|
60
66
|
refreshed_at: string | null;
|
|
@@ -66,41 +72,83 @@ export declare class QuotaRegistry {
|
|
|
66
72
|
private activeSnapshots;
|
|
67
73
|
refresh(): Promise<{
|
|
68
74
|
snapshots: {
|
|
69
|
-
source: "codex_app_server" | "codex_rollout" | "claude_statusline" | "claude_api_retry" | "claude_oauth_usage";
|
|
70
75
|
subject: {
|
|
71
76
|
harness: string;
|
|
72
|
-
credential_route: "local" | "
|
|
77
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
73
78
|
plan_label: string | null;
|
|
74
79
|
subject_id: string | null;
|
|
75
80
|
};
|
|
76
81
|
constraints: {
|
|
77
82
|
id: string;
|
|
78
83
|
label: string;
|
|
84
|
+
applies_to_models?: string[] | null | undefined;
|
|
79
85
|
used_ratio: number | null;
|
|
80
86
|
window_seconds: number | null;
|
|
81
87
|
resets_at: string | null;
|
|
82
88
|
cooldown_until: string | null;
|
|
83
89
|
}[];
|
|
90
|
+
source: "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
|
|
84
91
|
observed_at: string;
|
|
85
|
-
freshness: "
|
|
92
|
+
freshness: "fresh" | "stale" | "unknown";
|
|
86
93
|
}[];
|
|
87
94
|
absences: {
|
|
88
|
-
detail: string | null;
|
|
89
|
-
reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
|
|
90
95
|
subject: {
|
|
91
96
|
harness: string;
|
|
92
|
-
credential_route: "local" | "
|
|
97
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
93
98
|
plan_label: string | null;
|
|
94
99
|
subject_id: string | null;
|
|
95
100
|
};
|
|
101
|
+
reason: "no_source" | "not_logged_in" | "platform_unsupported" | "refresh_failed" | "transport_unavailable";
|
|
102
|
+
detail: string | null;
|
|
96
103
|
observed_at: string;
|
|
97
104
|
}[];
|
|
98
105
|
refreshed_at: string | null;
|
|
99
106
|
}>;
|
|
107
|
+
/** Fresh quota plus the exact global-journal fence for snapshot-then-SSE.
|
|
108
|
+
* The cursor is captured inside refreshCycle, synchronously with `response`,
|
|
109
|
+
* so a later append can never be skipped by a client resuming from it. */
|
|
110
|
+
refreshWithCursor(): Promise<{
|
|
111
|
+
response: {
|
|
112
|
+
snapshots: {
|
|
113
|
+
subject: {
|
|
114
|
+
harness: string;
|
|
115
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
116
|
+
plan_label: string | null;
|
|
117
|
+
subject_id: string | null;
|
|
118
|
+
};
|
|
119
|
+
constraints: {
|
|
120
|
+
id: string;
|
|
121
|
+
label: string;
|
|
122
|
+
applies_to_models?: string[] | null | undefined;
|
|
123
|
+
used_ratio: number | null;
|
|
124
|
+
window_seconds: number | null;
|
|
125
|
+
resets_at: string | null;
|
|
126
|
+
cooldown_until: string | null;
|
|
127
|
+
}[];
|
|
128
|
+
source: "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
|
|
129
|
+
observed_at: string;
|
|
130
|
+
freshness: "fresh" | "stale" | "unknown";
|
|
131
|
+
}[];
|
|
132
|
+
absences: {
|
|
133
|
+
subject: {
|
|
134
|
+
harness: string;
|
|
135
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
136
|
+
plan_label: string | null;
|
|
137
|
+
subject_id: string | null;
|
|
138
|
+
};
|
|
139
|
+
reason: "no_source" | "not_logged_in" | "platform_unsupported" | "refresh_failed" | "transport_unavailable";
|
|
140
|
+
detail: string | null;
|
|
141
|
+
observed_at: string;
|
|
142
|
+
}[];
|
|
143
|
+
refreshed_at: string | null;
|
|
144
|
+
};
|
|
145
|
+
quotaEventCursor: string;
|
|
146
|
+
}>;
|
|
100
147
|
/** Cycle-local core: the produced-snapshot count belongs to THIS invocation
|
|
101
148
|
* (wave-2 finding: a shared mutable field let a concurrent user refresh
|
|
102
149
|
* overwrite the poller's view of its own cycle). */
|
|
103
150
|
private refreshCycle;
|
|
151
|
+
private performRefreshCycle;
|
|
104
152
|
/** Aggregate one cycle's snapshots + absence claims against the subject
|
|
105
153
|
* universe (release cut V11a): a subject with a fresh-or-stale snapshot from
|
|
106
154
|
* ANY source has no absence; otherwise the first refresher-claimed absence
|
|
@@ -120,13 +168,17 @@ export declare class QuotaRegistry {
|
|
|
120
168
|
pollStale(): Promise<boolean>;
|
|
121
169
|
ingest(harnessId: string, value: unknown): void;
|
|
122
170
|
upsert(value: QuotaSnapshot): void;
|
|
171
|
+
private recordUpsert;
|
|
123
172
|
removeSubject(harness: string, subjectId: string): number;
|
|
173
|
+
private appendProjectionMarker;
|
|
174
|
+
private publishClockTransitionIfNeeded;
|
|
175
|
+
private projectionSignature;
|
|
124
176
|
validateProjection(): void;
|
|
125
177
|
private upsertCooldown;
|
|
126
178
|
private apply;
|
|
127
179
|
private remove;
|
|
128
180
|
}
|
|
129
|
-
export declare function quotaProjection(refreshers?: readonly QuotaRefresher[], subjects?: QuotaSubjectUniverse): {
|
|
181
|
+
export declare function quotaProjection(refreshers?: readonly QuotaRefresher[], subjects?: QuotaSubjectUniverse, now?: () => Date): {
|
|
130
182
|
name: string;
|
|
131
183
|
create: (journal: DurableJournal) => QuotaRegistry;
|
|
132
184
|
validate: (registry: QuotaRegistry) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-registry.d.ts","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"quota-registry.d.ts","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAKL,KAAK,YAAY,EAEjB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAa3B;;uEAEuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE/D;;iDAEiD;AACjD,MAAM,MAAM,oBAAoB,GAAG,MAAM,YAAY,EAAE,CAAC;AAExD,iEAAiE;AACjE,qBAAa,aAAa;IAetB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAjB3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D;;iDAE6C;IAC7C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B;;gDAE4C;IAC5C,OAAO,CAAC,gCAAgC,CAAuB;IAC/D,OAAO,CAAC,eAAe,CAAiE;IAExF,YACmB,OAAO,EAAE,cAAc,EACvB,UAAU,GAAE,SAAS,cAAc,EAAO,EAC1C,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,oBAA+B,EAkE3D;IAED,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOH;IAED;;;6EAGyE;IACzE,OAAO,CAAC,eAAe;IAkBjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEZ;IAED;;8EAE0E;IACpE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAGtB;IAED;;wDAEoD;IACpD,OAAO,CAAC,YAAY;YASN,mBAAmB;IAkDjC;;;;;uCAKmC;IACnC,OAAO,CAAC,iBAAiB;IA0BzB;;8EAE0E;IAC1E,OAAO,CAAC,cAAc;IAOtB;;yDAEqD;IACrD,oBAAoB,IAAI,IAAI,CAG3B;IAED,2FAA2F;IACrF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAgClC;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA0B9C;IAED,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAGjC;IAED,OAAO,CAAC,YAAY;IA6BpB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASxD;IAED,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,mBAAmB;IAM3B,kBAAkB,IAAI,IAAI,CAEzB;IAED,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;CAUf;AAED,wBAAgB,eAAe,CAC7B,UAAU,GAAE,SAAS,cAAc,EAAO,EAC1C,QAAQ,GAAE,oBAA+B,EACzC,GAAG,GAAE,MAAM,IAAuB;IAGhC,IAAI;IACJ,MAAM,YAAY,cAAc;IAChC,QAAQ,aAAa,aAAa;EAErC"}
|
package/dist/quota-registry.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { hashJson } from "@claudexor/util";
|
|
1
2
|
import { ControlQuotaResponse, HarnessEvent, QuotaSnapshot as QuotaSnapshotSchema, } from "@claudexor/schema";
|
|
2
3
|
const UPSERTED = "quota.snapshot.upserted";
|
|
4
|
+
const SCOPED_PREPARED = "quota.snapshot.scoped_prepared";
|
|
3
5
|
const REMOVED = "quota.subject.removed";
|
|
6
|
+
const PROJECTION_UPDATED = "quota.projection.updated";
|
|
4
7
|
const POLL_BACKOFF_MS = 60_000;
|
|
5
8
|
const MAX_POLL_BACKOFF_MS = 15 * 60_000;
|
|
6
9
|
/** Snapshots older than this are pruned from every projection read (W17):
|
|
@@ -20,22 +23,74 @@ export class QuotaRegistry {
|
|
|
20
23
|
absences = [];
|
|
21
24
|
pollFailures = 0;
|
|
22
25
|
pollNotBefore = 0;
|
|
26
|
+
/** Signature carried by the last durable projection marker. Raw quota
|
|
27
|
+
* evidence may span several records; this is the commit/recovery boundary
|
|
28
|
+
* consumed by snapshot-then-SSE clients. */
|
|
29
|
+
lastPublishedProjectionSignature = null;
|
|
30
|
+
refreshInFlight = null;
|
|
23
31
|
constructor(journal, refreshers = [], now = () => new Date(), subjects = () => []) {
|
|
24
32
|
this.journal = journal;
|
|
25
33
|
this.refreshers = refreshers;
|
|
26
34
|
this.now = now;
|
|
27
35
|
this.subjects = subjects;
|
|
36
|
+
let rawMutationAfterMarker = false;
|
|
37
|
+
let pendingScoped = null;
|
|
28
38
|
for (const record of journal.records()) {
|
|
29
|
-
if (record.type ===
|
|
30
|
-
|
|
39
|
+
if (record.type === SCOPED_PREPARED) {
|
|
40
|
+
const payload = typeof record.payload === "object" &&
|
|
41
|
+
record.payload !== null &&
|
|
42
|
+
!Array.isArray(record.payload)
|
|
43
|
+
? record.payload
|
|
44
|
+
: {};
|
|
45
|
+
const snapshot = QuotaSnapshotSchema.safeParse(payload.snapshot);
|
|
46
|
+
pendingScoped =
|
|
47
|
+
payload.version === 1 && typeof payload.base_hash === "string" && snapshot.success
|
|
48
|
+
? {
|
|
49
|
+
baseHash: payload.base_hash,
|
|
50
|
+
snapshot: snapshot.data,
|
|
51
|
+
}
|
|
52
|
+
: null;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (record.type === UPSERTED) {
|
|
56
|
+
const base = QuotaSnapshotSchema.parse(record.payload);
|
|
57
|
+
const baseHash = hashJson(base);
|
|
58
|
+
const committedScoped = pendingScoped !== null &&
|
|
59
|
+
pendingScoped.baseHash === baseHash &&
|
|
60
|
+
hashJson(legacyV320Snapshot(pendingScoped.snapshot)) === baseHash
|
|
61
|
+
? pendingScoped.snapshot
|
|
62
|
+
: null;
|
|
63
|
+
this.apply(committedScoped ?? base);
|
|
64
|
+
pendingScoped = null;
|
|
65
|
+
rawMutationAfterMarker = true;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// A scoped prepare commits only through the immediately following
|
|
69
|
+
// matching legacy upsert. If the writer stopped or another record
|
|
70
|
+
// intervened, ignore the incomplete prepare on replay.
|
|
71
|
+
pendingScoped = null;
|
|
31
72
|
if (record.type === REMOVED) {
|
|
32
73
|
const payload = record.payload;
|
|
33
74
|
if (typeof payload.harness === "string" && typeof payload.subject_id === "string") {
|
|
34
75
|
this.remove(payload.harness, payload.subject_id);
|
|
35
76
|
}
|
|
77
|
+
rawMutationAfterMarker = true;
|
|
78
|
+
}
|
|
79
|
+
if (record.type === PROJECTION_UPDATED) {
|
|
80
|
+
const payload = record.payload;
|
|
81
|
+
this.lastPublishedProjectionSignature =
|
|
82
|
+
typeof payload.projection_signature === "string" ? payload.projection_signature : null;
|
|
83
|
+
rawMutationAfterMarker = false;
|
|
36
84
|
}
|
|
37
85
|
}
|
|
38
86
|
this.validateProjection();
|
|
87
|
+
// A process can stop after a durable raw mutation but before its separate
|
|
88
|
+
// projection marker. Replaying that state without a new marker would leave
|
|
89
|
+
// already-subscribed clients permanently behind. Close the recovered
|
|
90
|
+
// commit boundary synchronously before the projection becomes available.
|
|
91
|
+
if (rawMutationAfterMarker) {
|
|
92
|
+
this.appendProjectionMarker("recovery", this.now().toISOString());
|
|
93
|
+
}
|
|
39
94
|
}
|
|
40
95
|
read() {
|
|
41
96
|
const now = this.now().getTime();
|
|
@@ -51,6 +106,8 @@ export class QuotaRegistry {
|
|
|
51
106
|
* would hide a live cap from both the footer and the router's ledger. */
|
|
52
107
|
activeSnapshots(now) {
|
|
53
108
|
return [...this.snapshots.values()]
|
|
109
|
+
.map((snapshot) => withoutExpiredScopedCooldowns(snapshot, now))
|
|
110
|
+
.filter((snapshot) => snapshot !== null)
|
|
54
111
|
.filter((snapshot) => {
|
|
55
112
|
const observed = Date.parse(snapshot.observed_at);
|
|
56
113
|
if (!Number.isFinite(observed))
|
|
@@ -67,10 +124,27 @@ export class QuotaRegistry {
|
|
|
67
124
|
async refresh() {
|
|
68
125
|
return (await this.refreshCycle()).response;
|
|
69
126
|
}
|
|
127
|
+
/** Fresh quota plus the exact global-journal fence for snapshot-then-SSE.
|
|
128
|
+
* The cursor is captured inside refreshCycle, synchronously with `response`,
|
|
129
|
+
* so a later append can never be skipped by a client resuming from it. */
|
|
130
|
+
async refreshWithCursor() {
|
|
131
|
+
const { response, quotaEventCursor } = await this.refreshCycle();
|
|
132
|
+
return { response, quotaEventCursor };
|
|
133
|
+
}
|
|
70
134
|
/** Cycle-local core: the produced-snapshot count belongs to THIS invocation
|
|
71
135
|
* (wave-2 finding: a shared mutable field let a concurrent user refresh
|
|
72
136
|
* overwrite the poller's view of its own cycle). */
|
|
73
|
-
|
|
137
|
+
refreshCycle() {
|
|
138
|
+
if (this.refreshInFlight)
|
|
139
|
+
return this.refreshInFlight;
|
|
140
|
+
const cycle = this.performRefreshCycle().finally(() => {
|
|
141
|
+
if (this.refreshInFlight === cycle)
|
|
142
|
+
this.refreshInFlight = null;
|
|
143
|
+
});
|
|
144
|
+
this.refreshInFlight = cycle;
|
|
145
|
+
return cycle;
|
|
146
|
+
}
|
|
147
|
+
async performRefreshCycle() {
|
|
74
148
|
if (this.refreshers.length === 0) {
|
|
75
149
|
throw Object.assign(new Error("no live vendor-owned quota refresh source is available"), {
|
|
76
150
|
code: "quota_refresh_unavailable",
|
|
@@ -84,9 +158,16 @@ export class QuotaRegistry {
|
|
|
84
158
|
for (const refresher of this.refreshers) {
|
|
85
159
|
try {
|
|
86
160
|
const result = await refresher();
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
161
|
+
// Validate the source batch before its first durable write. A malformed
|
|
162
|
+
// later item must not leave earlier items applied without the cycle's
|
|
163
|
+
// projection marker when this is the only nominally successful source.
|
|
164
|
+
const snapshots = result.snapshots.map((snapshot) => QuotaSnapshotSchema.parse(snapshot));
|
|
165
|
+
// One refresh can contain many vendor subjects. Persist every source
|
|
166
|
+
// event, but publish ONE projection-level marker after the full response
|
|
167
|
+
// is assembled so clients never see a marker-per-item burst.
|
|
168
|
+
for (const snapshot of snapshots)
|
|
169
|
+
this.recordUpsert(snapshot);
|
|
170
|
+
producedSnapshots += snapshots.length;
|
|
90
171
|
if (result.absences)
|
|
91
172
|
claims.push(...result.absences);
|
|
92
173
|
successfulSources += 1;
|
|
@@ -103,12 +184,17 @@ export class QuotaRegistry {
|
|
|
103
184
|
}
|
|
104
185
|
const now = this.now().getTime();
|
|
105
186
|
this.recomputeAbsences(claims, now);
|
|
187
|
+
const refreshedAt = this.now().toISOString();
|
|
106
188
|
const response = ControlQuotaResponse.parse({
|
|
107
189
|
snapshots: this.activeSnapshots(now),
|
|
108
190
|
absences: this.activeAbsences(now),
|
|
109
|
-
refreshed_at:
|
|
191
|
+
refreshed_at: refreshedAt,
|
|
110
192
|
});
|
|
111
|
-
|
|
193
|
+
// No await may appear between response construction and this marker/cursor.
|
|
194
|
+
// The marker makes absence-only and identical refreshes observable; its own
|
|
195
|
+
// cursor is the exact last event represented by this response.
|
|
196
|
+
const quotaEventCursor = this.appendProjectionMarker("refresh", refreshedAt, response);
|
|
197
|
+
return { response, producedSnapshots, quotaEventCursor };
|
|
112
198
|
}
|
|
113
199
|
/** Aggregate one cycle's snapshots + absence claims against the subject
|
|
114
200
|
* universe (release cut V11a): a subject with a fresh-or-stale snapshot from
|
|
@@ -159,6 +245,10 @@ export class QuotaRegistry {
|
|
|
159
245
|
async pollStale() {
|
|
160
246
|
const now = this.now().getTime();
|
|
161
247
|
const snapshots = this.activeSnapshots(now);
|
|
248
|
+
// Freshness/pruning are clock-derived projection facts. Publish the change
|
|
249
|
+
// even when the official refresh attempted below fails, so subscribers do
|
|
250
|
+
// not retain a formerly-fresh quota/next_up pairing indefinitely.
|
|
251
|
+
this.publishClockTransitionIfNeeded();
|
|
162
252
|
if (snapshots.length > 0 && snapshots.every((snapshot) => snapshot.freshness === "fresh"))
|
|
163
253
|
return false;
|
|
164
254
|
if (now < this.pollNotBefore)
|
|
@@ -216,16 +306,67 @@ export class QuotaRegistry {
|
|
|
216
306
|
}
|
|
217
307
|
}
|
|
218
308
|
upsert(value) {
|
|
309
|
+
this.recordUpsert(value);
|
|
310
|
+
this.appendProjectionMarker("direct_mutation", this.now().toISOString());
|
|
311
|
+
}
|
|
312
|
+
recordUpsert(value) {
|
|
219
313
|
const snapshot = QuotaSnapshotSchema.parse(value);
|
|
220
|
-
this
|
|
314
|
+
// Runtime updates share this journal with the prior installed engine during
|
|
315
|
+
// rollback. v3.2.0's strict QuotaConstraint schema predates
|
|
316
|
+
// applies_to_models. Prepare the exact current snapshot under a new record
|
|
317
|
+
// type that an older runtime safely ignores, then commit it with the
|
|
318
|
+
// established, explicitly v3.2.0-shaped upsert. Current replay applies a
|
|
319
|
+
// prepare only when its matching base follows, so a stop between the two
|
|
320
|
+
// records loses neither the prior projection nor model scope: the journal
|
|
321
|
+
// appends the pair under one recovery intent and one fsync.
|
|
322
|
+
const legacy = legacyV320Snapshot(snapshot);
|
|
323
|
+
if (snapshot.constraints.some((constraint) => constraint.applies_to_models !== undefined)) {
|
|
324
|
+
this.journal.appendBatch([
|
|
325
|
+
{
|
|
326
|
+
type: SCOPED_PREPARED,
|
|
327
|
+
payload: {
|
|
328
|
+
version: 1,
|
|
329
|
+
base_hash: hashJson(legacy),
|
|
330
|
+
snapshot,
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
{ type: UPSERTED, payload: legacy },
|
|
334
|
+
]);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
this.journal.append(UPSERTED, legacy);
|
|
338
|
+
}
|
|
221
339
|
this.apply(snapshot);
|
|
222
340
|
}
|
|
223
341
|
removeSubject(harness, subjectId) {
|
|
224
342
|
const removed = [...this.snapshots.values()].filter((snapshot) => snapshot.subject.harness === harness && snapshot.subject.subject_id === subjectId).length;
|
|
225
343
|
this.journal.append(REMOVED, { harness, subject_id: subjectId });
|
|
226
344
|
this.remove(harness, subjectId);
|
|
345
|
+
this.appendProjectionMarker("direct_mutation", this.now().toISOString());
|
|
227
346
|
return removed;
|
|
228
347
|
}
|
|
348
|
+
appendProjectionMarker(reason, observedAt, response = this.read()) {
|
|
349
|
+
const projectionSignature = this.projectionSignature(response);
|
|
350
|
+
const marker = this.journal.append(PROJECTION_UPDATED, {
|
|
351
|
+
reason,
|
|
352
|
+
observed_at: observedAt,
|
|
353
|
+
projection_signature: projectionSignature,
|
|
354
|
+
});
|
|
355
|
+
this.lastPublishedProjectionSignature = projectionSignature;
|
|
356
|
+
return this.journal.cursorFor(marker);
|
|
357
|
+
}
|
|
358
|
+
publishClockTransitionIfNeeded() {
|
|
359
|
+
const response = this.read();
|
|
360
|
+
const signature = this.projectionSignature(response);
|
|
361
|
+
if (signature === this.lastPublishedProjectionSignature)
|
|
362
|
+
return;
|
|
363
|
+
this.appendProjectionMarker("clock_transition", this.now().toISOString(), response);
|
|
364
|
+
}
|
|
365
|
+
projectionSignature(response) {
|
|
366
|
+
// refreshed_at is request metadata, not projection identity. Snapshot
|
|
367
|
+
// freshness and absence coverage are logical facts and remain included.
|
|
368
|
+
return JSON.stringify({ snapshots: response.snapshots, absences: response.absences });
|
|
369
|
+
}
|
|
229
370
|
validateProjection() {
|
|
230
371
|
for (const snapshot of this.snapshots.values())
|
|
231
372
|
QuotaSnapshotSchema.parse(snapshot);
|
|
@@ -233,13 +374,17 @@ export class QuotaRegistry {
|
|
|
233
374
|
upsertCooldown(harness, credentialRoute, event) {
|
|
234
375
|
const reset = event.rate_limit?.resets_at ?? null;
|
|
235
376
|
const delay = event.rate_limit?.retry_delay_ms ?? null;
|
|
377
|
+
const now = this.now();
|
|
236
378
|
const cooldownUntil = reset ??
|
|
237
|
-
new Date(
|
|
379
|
+
new Date(now.getTime() + (typeof delay === "number" ? delay : 5 * 60_000)).toISOString();
|
|
238
380
|
const source = harness === "claude" ? "claude_api_retry" : "codex_rollout";
|
|
239
381
|
// The event's profile stamp scopes the cooldown to ITS subject (release
|
|
240
382
|
// wave round-11): a profiled limit must never cool the default subject
|
|
241
383
|
// down (or vice versa), and two profiles never share one quota key.
|
|
242
384
|
const profileId = event.credential_profile_id ?? null;
|
|
385
|
+
const constraintId = event.rate_limit?.constraint_id
|
|
386
|
+
? `cooldown:${event.rate_limit.constraint_id}`
|
|
387
|
+
: "cooldown";
|
|
243
388
|
const existing = [...this.snapshots.values()].find((snapshot) => snapshot.subject.harness === harness &&
|
|
244
389
|
snapshot.subject.credential_route === credentialRoute &&
|
|
245
390
|
(snapshot.subject.subject_id ?? null) === profileId &&
|
|
@@ -255,10 +400,14 @@ export class QuotaRegistry {
|
|
|
255
400
|
observed_at: event.ts,
|
|
256
401
|
freshness: "fresh",
|
|
257
402
|
constraints: [
|
|
258
|
-
...(existing?.constraints.filter((constraint) => constraint.id !==
|
|
403
|
+
...(existing?.constraints.filter((constraint) => constraint.id !== constraintId &&
|
|
404
|
+
!isExpiredScopedCooldown(source, constraint, now.getTime())) ?? []),
|
|
259
405
|
{
|
|
260
|
-
id:
|
|
406
|
+
id: constraintId,
|
|
261
407
|
label: "Cooldown",
|
|
408
|
+
...(event.rate_limit?.applies_to_models !== undefined
|
|
409
|
+
? { applies_to_models: event.rate_limit.applies_to_models }
|
|
410
|
+
: {}),
|
|
262
411
|
used_ratio: null,
|
|
263
412
|
window_seconds: null,
|
|
264
413
|
resets_at: reset,
|
|
@@ -281,10 +430,10 @@ export class QuotaRegistry {
|
|
|
281
430
|
return removed;
|
|
282
431
|
}
|
|
283
432
|
}
|
|
284
|
-
export function quotaProjection(refreshers = [], subjects = () => []) {
|
|
433
|
+
export function quotaProjection(refreshers = [], subjects = () => [], now = () => new Date()) {
|
|
285
434
|
return {
|
|
286
435
|
name: "quota",
|
|
287
|
-
create: (journal) => new QuotaRegistry(journal, refreshers,
|
|
436
|
+
create: (journal) => new QuotaRegistry(journal, refreshers, now, subjects),
|
|
288
437
|
validate: (registry) => registry.validateProjection(),
|
|
289
438
|
};
|
|
290
439
|
}
|
|
@@ -297,6 +446,30 @@ function snapshotKey(snapshot) {
|
|
|
297
446
|
snapshot.source,
|
|
298
447
|
].join("\0");
|
|
299
448
|
}
|
|
449
|
+
/** Exact durable payload accepted by the strict v3.2.0 quota schemas. Keep an
|
|
450
|
+
* explicit allowlist at every nested level so a future additive field cannot
|
|
451
|
+
* silently make updater rollback boot-incompatible again. */
|
|
452
|
+
function legacyV320Snapshot(snapshot) {
|
|
453
|
+
return {
|
|
454
|
+
subject: {
|
|
455
|
+
harness: snapshot.subject.harness,
|
|
456
|
+
credential_route: snapshot.subject.credential_route,
|
|
457
|
+
plan_label: snapshot.subject.plan_label,
|
|
458
|
+
subject_id: snapshot.subject.subject_id,
|
|
459
|
+
},
|
|
460
|
+
constraints: snapshot.constraints.map((constraint) => ({
|
|
461
|
+
id: constraint.id,
|
|
462
|
+
label: constraint.label,
|
|
463
|
+
used_ratio: constraint.used_ratio,
|
|
464
|
+
window_seconds: constraint.window_seconds,
|
|
465
|
+
resets_at: constraint.resets_at,
|
|
466
|
+
cooldown_until: constraint.cooldown_until,
|
|
467
|
+
})),
|
|
468
|
+
source: snapshot.source,
|
|
469
|
+
observed_at: snapshot.observed_at,
|
|
470
|
+
freshness: snapshot.freshness,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
300
473
|
/** Absence-matching identity: (harness, subject_id) only — one credential
|
|
301
474
|
* subject is one subject regardless of which route or source observed it. */
|
|
302
475
|
function subjectIdentity(subject) {
|
|
@@ -306,11 +479,23 @@ function staleAt(snapshot, now) {
|
|
|
306
479
|
if (snapshot.freshness !== "fresh")
|
|
307
480
|
return snapshot;
|
|
308
481
|
const observed = Date.parse(snapshot.observed_at);
|
|
309
|
-
const resetExpired = snapshot.constraints.some((constraint) =>
|
|
310
|
-
const reset = constraint.resets_at ? Date.parse(constraint.resets_at) : Number.NaN;
|
|
311
|
-
return Number.isFinite(reset) && reset <= now;
|
|
312
|
-
});
|
|
482
|
+
const resetExpired = snapshot.constraints.some((constraint) => resetExpiredAt(constraint, now));
|
|
313
483
|
const tooOld = !Number.isFinite(observed) || now - observed > 5 * 60_000;
|
|
314
484
|
return resetExpired || tooOld ? { ...snapshot, freshness: "stale" } : snapshot;
|
|
315
485
|
}
|
|
486
|
+
function resetExpiredAt(constraint, now) {
|
|
487
|
+
const reset = constraint.resets_at ? Date.parse(constraint.resets_at) : Number.NaN;
|
|
488
|
+
return Number.isFinite(reset) && reset <= now;
|
|
489
|
+
}
|
|
490
|
+
function isExpiredScopedCooldown(source, constraint, now) {
|
|
491
|
+
return (source === "claude_api_retry" &&
|
|
492
|
+
constraint.id.startsWith("cooldown:") &&
|
|
493
|
+
resetExpiredAt(constraint, now));
|
|
494
|
+
}
|
|
495
|
+
function withoutExpiredScopedCooldowns(snapshot, now) {
|
|
496
|
+
const constraints = snapshot.constraints.filter((constraint) => !isExpiredScopedCooldown(snapshot.source, constraint, now));
|
|
497
|
+
if (constraints.length === snapshot.constraints.length)
|
|
498
|
+
return snapshot;
|
|
499
|
+
return constraints.length === 0 ? null : { ...snapshot, constraints };
|
|
500
|
+
}
|
|
316
501
|
//# sourceMappingURL=quota-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-registry.js","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quota-registry.js","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-store.d.ts","sourceRoot":"","sources":["../src/resource-store.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,mBAAmB,EACnB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAgC3B,qGAAqG;AACrG,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;
|
|
1
|
+
{"version":3,"file":"resource-store.d.ts","sourceRoot":"","sources":["../src/resource-store.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,mBAAmB,EACnB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAgC3B,qGAAqG;AACrG,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,IAAI,EAAE,MAAM,EAQvB;IAED,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CA+BzF;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAIrE;IAEK,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAyCvD;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAOrE;IAED,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GACrB,UAAU,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,CAuD1C;IAED,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,SAAS,GAAG,UAAU,EAAE,CAqC/D;IAED,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;CAgDrB"}
|
package/dist/run-events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../src/run-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAY,KAAK,QAAQ,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI7E,kFAAkF;AAClF,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../src/run-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAY,KAAK,QAAQ,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI7E,kFAAkF;AAClF,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,cAAc,EAEnD;IAED,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAI1C;IAED,kBAAkB,IAAI,IAAI,CAIzB;CACF;AAED,wBAAgB,kBAAkB;IAE9B,IAAI;IACJ,MAAM,YAAY,cAAc;IAChC,QAAQ,UAAU,aAAa;EAElC"}
|
package/dist/run-events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-events.js","sourceRoot":"","sources":["../src/run-events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkC,MAAM,mBAAmB,CAAC;AAE7E,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,kFAAkF;AAClF,MAAM,OAAO,aAAa;IACK;
|
|
1
|
+
{"version":3,"file":"run-events.js","sourceRoot":"","sources":["../src/run-events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkC,MAAM,mBAAmB,CAAC;AAE7E,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,kFAAkF;AAClF,MAAM,OAAO,aAAa;IACK,OAAO;IAApC,YAA6B,OAAuB;uBAAvB,OAAO;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAoB;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,CAAC,OAAuB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;QAC/D,QAAQ,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE;KAC/D,CAAC;AACJ,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { type CommandAuthority } from "./command-authority.js";
|
|
|
2
2
|
import { type DelegationAdmissionAuthority } from "./delegation-admission.js";
|
|
3
3
|
import { JOB_STATES, jobStateFromResult, type JobRecord } from "./job-record.js";
|
|
4
4
|
import { socketAlive } from "./socket-probe.js";
|
|
5
|
+
import { type RuntimeReplacementAuthority } from "./daemon-shutdown-rpc.js";
|
|
6
|
+
import { type TurnEnqueueProblem as TurnEnqueueProblemValue } from "@claudexor/schema";
|
|
5
7
|
export { JOB_STATES, jobStateFromResult, socketAlive, type JobRecord };
|
|
6
8
|
export interface RunContext {
|
|
7
9
|
jobId: string;
|
|
@@ -13,7 +15,7 @@ export interface RunContext {
|
|
|
13
15
|
}) => void;
|
|
14
16
|
}
|
|
15
17
|
export type RunnerFn = (params: unknown, ctx: RunContext) => Promise<unknown>;
|
|
16
|
-
export interface DaemonOptions {
|
|
18
|
+
export interface DaemonOptions extends RuntimeReplacementAuthority {
|
|
17
19
|
socketPath: string;
|
|
18
20
|
token: string;
|
|
19
21
|
runner: RunnerFn;
|
|
@@ -30,13 +32,11 @@ export interface DaemonOptions {
|
|
|
30
32
|
/** Called when a job that carried a pre-created thread turn (params.turnId)
|
|
31
33
|
* settles failure-shaped WITHOUT ever binding a run — i.e. the refusal
|
|
32
34
|
* happened before the run materialized (trust gate, preflight validation).
|
|
33
|
-
* The observer persists
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
onTurnEnqueueFailed?: (turnId: string, error: string, code: string | null, retryable?: boolean) => void;
|
|
37
|
-
/** Composition-root shutdown hook. When present, RPC shutdown must drain
|
|
38
|
-
* every daemon-owned subsystem, not only this socket queue. */
|
|
35
|
+
* The observer persists one sanitized typed problem on the turn so it is
|
|
36
|
+
* never a silent orphan bubble and no recovery field is dropped. */
|
|
37
|
+
onTurnEnqueueFailed?: (turnId: string, problem: TurnEnqueueProblemValue) => void;
|
|
39
38
|
onShutdownRequested?: () => Promise<void>;
|
|
39
|
+
onRuntimeReplacementRequested?: () => Promise<void>;
|
|
40
40
|
/** Test-only barriers around command authority acquisition. */
|
|
41
41
|
startupBarrier?: (barrier: "before_registry_load" | "after_registry_load") => void | Promise<void>;
|
|
42
42
|
}
|