@claudexor/daemon 2.1.3 → 3.0.0
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/command-retention.d.ts +4 -1
- package/dist/command-retention.d.ts.map +1 -1
- package/dist/command-retention.js +19 -2
- package/dist/command-retention.js.map +1 -1
- package/dist/command-store.d.ts +1 -1
- package/dist/command-store.d.ts.map +1 -1
- package/dist/command-store.js +6 -18
- package/dist/command-store.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/project-partitions.d.ts +31 -44
- package/dist/project-partitions.d.ts.map +1 -1
- package/dist/project-partitions.js +77 -25
- package/dist/project-partitions.js.map +1 -1
- package/dist/projects.d.ts +14 -0
- package/dist/projects.d.ts.map +1 -1
- package/dist/projects.js +66 -7
- package/dist/projects.js.map +1 -1
- package/dist/quota-registry.d.ts +53 -4
- package/dist/quota-registry.d.ts.map +1 -1
- package/dist/quota-registry.js +64 -6
- package/dist/quota-registry.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +31 -48
- package/dist/server.js.map +1 -1
- package/dist/thread-lane-checkpoints.d.ts +40 -0
- package/dist/thread-lane-checkpoints.d.ts.map +1 -0
- package/dist/thread-lane-checkpoints.js +94 -0
- package/dist/thread-lane-checkpoints.js.map +1 -0
- package/dist/thread-store-support.d.ts +3 -1
- package/dist/thread-store-support.d.ts.map +1 -1
- package/dist/thread-store-support.js +4 -1
- package/dist/thread-store-support.js.map +1 -1
- package/dist/threads.d.ts +20 -6
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +44 -47
- package/dist/threads.js.map +1 -1
- package/package.json +5 -5
- package/dist/spec-sessions.d.ts +0 -72
- package/dist/spec-sessions.d.ts.map +0 -1
- package/dist/spec-sessions.js +0 -322
- package/dist/spec-sessions.js.map +0 -1
package/dist/projects.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { lstatSync, realpathSync } from "node:fs";
|
|
2
|
-
import { isAbsolute } from "node:path";
|
|
2
|
+
import { isAbsolute, relative } from "node:path";
|
|
3
3
|
import { Project as ProjectSchema, SCHEMA_VERSION } from "@claudexor/schema";
|
|
4
|
-
import { hashJson, newId, nowIso } from "@claudexor/util";
|
|
4
|
+
import { hashJson, isClaudexorOwnedRuntimePath, newId, nowIso } from "@claudexor/util";
|
|
5
5
|
const REGISTERED = "project.registered";
|
|
6
6
|
const RELINKED = "project.relinked";
|
|
7
|
+
const UNREGISTERED = "project.unregistered";
|
|
7
8
|
/** Global-journal authority for the deliberately empty v2 project registry. */
|
|
8
9
|
export class ProjectStore {
|
|
9
10
|
journal;
|
|
@@ -24,9 +25,29 @@ export class ProjectStore {
|
|
|
24
25
|
const id = this.projectIdByRoot.get(canonicalRoot(root));
|
|
25
26
|
return id ? this.projects.get(id) : undefined;
|
|
26
27
|
}
|
|
28
|
+
/** F3 nested-project disclosure: every registered project whose
|
|
29
|
+
* root overlaps `id`'s root — `inside` when `id` lives under it, `contains`
|
|
30
|
+
* when it lives under `id`. Pure projection over current roots (recomputed as
|
|
31
|
+
* the registry changes), never a refusal — legit monorepos nest. */
|
|
32
|
+
nestingFor(id) {
|
|
33
|
+
const self = this.projects.get(id);
|
|
34
|
+
if (!self)
|
|
35
|
+
return [];
|
|
36
|
+
const relations = [];
|
|
37
|
+
for (const other of this.projects.values()) {
|
|
38
|
+
if (other.id === id)
|
|
39
|
+
continue;
|
|
40
|
+
if (pathStrictlyInside(self.root, other.root))
|
|
41
|
+
relations.push({ relation: "inside", root: other.root, projectId: other.id });
|
|
42
|
+
else if (pathStrictlyInside(other.root, self.root))
|
|
43
|
+
relations.push({ relation: "contains", root: other.root, projectId: other.id });
|
|
44
|
+
}
|
|
45
|
+
return relations.sort((a, b) => a.root.localeCompare(b.root));
|
|
46
|
+
}
|
|
27
47
|
register(input) {
|
|
28
48
|
validateKey(input.idempotencyKey);
|
|
29
49
|
const root = canonicalRoot(input.root);
|
|
50
|
+
assertNotClaudexorOwned(root);
|
|
30
51
|
const keyDigest = hashJson({
|
|
31
52
|
client: input.clientId,
|
|
32
53
|
partition: "global",
|
|
@@ -65,6 +86,7 @@ export class ProjectStore {
|
|
|
65
86
|
if (!current)
|
|
66
87
|
throw Object.assign(new Error(`no such project: ${id}`), { status: 404 });
|
|
67
88
|
const root = canonicalRoot(rootInput);
|
|
89
|
+
assertNotClaudexorOwned(root);
|
|
68
90
|
const owner = this.projectIdByRoot.get(root);
|
|
69
91
|
if (owner && owner !== id) {
|
|
70
92
|
throw Object.assign(new Error(`project root is already registered to ${owner}`), {
|
|
@@ -78,6 +100,17 @@ export class ProjectStore {
|
|
|
78
100
|
this.commit(RELINKED, { project });
|
|
79
101
|
return project;
|
|
80
102
|
}
|
|
103
|
+
/** F2 ghost-cleanup: retire a registered project — used by the
|
|
104
|
+
* daemon sweep to unregister ghosts whose root is inside the Claudexor
|
|
105
|
+
* runtime tree or permanently gone. Removes the registry entry, its root
|
|
106
|
+
* index, and any idempotency bindings pointing at it, in ONE locked write. */
|
|
107
|
+
unregister(id) {
|
|
108
|
+
const project = this.projects.get(id);
|
|
109
|
+
if (!project)
|
|
110
|
+
return undefined;
|
|
111
|
+
this.commit(UNREGISTERED, { project });
|
|
112
|
+
return project;
|
|
113
|
+
}
|
|
81
114
|
validateProjection() {
|
|
82
115
|
for (const project of this.projects.values())
|
|
83
116
|
ProjectSchema.parse(project);
|
|
@@ -92,18 +125,28 @@ export class ProjectStore {
|
|
|
92
125
|
}
|
|
93
126
|
replay() {
|
|
94
127
|
for (const record of this.journal.records()) {
|
|
95
|
-
if (record.type !== REGISTERED && record.type !== RELINKED)
|
|
128
|
+
if (record.type !== REGISTERED && record.type !== RELINKED && record.type !== UNREGISTERED)
|
|
96
129
|
continue;
|
|
97
|
-
this.apply(parseMutation(record.payload));
|
|
130
|
+
this.apply(record.type, parseMutation(record.payload));
|
|
98
131
|
}
|
|
99
132
|
this.validateProjection();
|
|
100
133
|
}
|
|
101
134
|
commit(type, mutation) {
|
|
102
135
|
const parsed = parseMutation(mutation);
|
|
103
136
|
this.journal.append(type, parsed);
|
|
104
|
-
this.apply(parsed);
|
|
105
|
-
}
|
|
106
|
-
apply(mutation) {
|
|
137
|
+
this.apply(type, parsed);
|
|
138
|
+
}
|
|
139
|
+
apply(type, mutation) {
|
|
140
|
+
if (type === UNREGISTERED) {
|
|
141
|
+
this.projects.delete(mutation.project.id);
|
|
142
|
+
if (this.projectIdByRoot.get(mutation.project.root) === mutation.project.id)
|
|
143
|
+
this.projectIdByRoot.delete(mutation.project.root);
|
|
144
|
+
for (const [keyDigest, binding] of this.registrationByKey) {
|
|
145
|
+
if (binding.projectId === mutation.project.id)
|
|
146
|
+
this.registrationByKey.delete(keyDigest);
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
107
150
|
const previous = this.projects.get(mutation.project.id);
|
|
108
151
|
if (previous && previous.root !== mutation.project.root)
|
|
109
152
|
this.projectIdByRoot.delete(previous.root);
|
|
@@ -145,6 +188,22 @@ function canonicalRoot(input) {
|
|
|
145
188
|
}
|
|
146
189
|
return root;
|
|
147
190
|
}
|
|
191
|
+
/** F2 ghost-project guard: a project root inside the Claudexor
|
|
192
|
+
* runtime tree (`~/.claudexor`, esp. the `projects/<digest>/workspaces/`
|
|
193
|
+
* envelope worktrees) is daemon runtime state, never a user project — refuse it at
|
|
194
|
+
* registration/relink with a typed error so an envelope cwd can never become a
|
|
195
|
+
* durable ghost whose root later vanishes. */
|
|
196
|
+
function assertNotClaudexorOwned(root) {
|
|
197
|
+
if (isClaudexorOwnedRuntimePath(root)) {
|
|
198
|
+
throw Object.assign(new Error(`project root is inside the Claudexor runtime tree and cannot be registered as a project: ${root}`), { code: "claudexor_owned_root", status: 400 });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/** True when `child` is STRICTLY below `parent` (not equal). Both are canonical
|
|
202
|
+
* absolute roots, so a path-segment `relative` is sufficient. */
|
|
203
|
+
function pathStrictlyInside(child, parent) {
|
|
204
|
+
const rel = relative(parent, child);
|
|
205
|
+
return rel !== "" && !rel.startsWith("..") && !isAbsolute(rel);
|
|
206
|
+
}
|
|
148
207
|
function parseMutation(value) {
|
|
149
208
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
150
209
|
throw new Error("invalid project mutation");
|
package/dist/projects.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"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"}
|
package/dist/quota-registry.d.ts
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
import type { DurableJournal } from "@claudexor/journal";
|
|
2
|
-
import { type QuotaSnapshot } from "@claudexor/schema";
|
|
3
|
-
|
|
2
|
+
import { type QuotaAbsence, type QuotaSnapshot, type QuotaSubject } from "@claudexor/schema";
|
|
3
|
+
/** One refresh cycle's fruit: the snapshots a source observed, plus the typed
|
|
4
|
+
* absences it CLAIMS for subjects it tried and could not observe. Absence is
|
|
5
|
+
* stated by the source, never inferred from an empty snapshot list. */
|
|
6
|
+
export interface QuotaRefreshResult {
|
|
7
|
+
snapshots: QuotaSnapshot[];
|
|
8
|
+
absences?: QuotaAbsence[];
|
|
9
|
+
}
|
|
10
|
+
export type QuotaRefresher = () => Promise<QuotaRefreshResult>;
|
|
11
|
+
/** The registered subject UNIVERSE: every subject the daemon expects to hear
|
|
12
|
+
* about, so a subject with neither snapshot nor a source claim still surfaces
|
|
13
|
+
* a "no_source" absence instead of vanishing. */
|
|
14
|
+
export type QuotaSubjectUniverse = () => QuotaSubject[];
|
|
4
15
|
/** Global-journal authority for vendor-owned quota snapshots. */
|
|
5
16
|
export declare class QuotaRegistry {
|
|
6
17
|
private readonly journal;
|
|
7
18
|
private readonly refreshers;
|
|
8
19
|
private readonly now;
|
|
20
|
+
private readonly subjects;
|
|
9
21
|
private readonly snapshots;
|
|
22
|
+
/** Ephemeral typed-absence state, recomputed each refresh/poll cycle — NOT
|
|
23
|
+
* journaled: an absence is a live derivation of "who reported nothing this
|
|
24
|
+
* cycle", never a durable fact to replay. */
|
|
25
|
+
private absences;
|
|
10
26
|
private pollFailures;
|
|
11
27
|
private pollNotBefore;
|
|
12
|
-
constructor(journal: DurableJournal, refreshers?: readonly QuotaRefresher[], now?: () => Date);
|
|
28
|
+
constructor(journal: DurableJournal, refreshers?: readonly QuotaRefresher[], now?: () => Date, subjects?: QuotaSubjectUniverse);
|
|
13
29
|
read(): {
|
|
14
30
|
snapshots: {
|
|
15
31
|
source: "codex_app_server" | "codex_rollout" | "claude_statusline" | "claude_api_retry" | "claude_oauth_usage";
|
|
@@ -30,6 +46,17 @@ export declare class QuotaRegistry {
|
|
|
30
46
|
observed_at: string;
|
|
31
47
|
freshness: "unknown" | "fresh" | "stale";
|
|
32
48
|
}[];
|
|
49
|
+
absences: {
|
|
50
|
+
detail: string | null;
|
|
51
|
+
reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
|
|
52
|
+
subject: {
|
|
53
|
+
harness: string;
|
|
54
|
+
credential_route: "local" | "vendor_native" | "managed_api_key";
|
|
55
|
+
plan_label: string | null;
|
|
56
|
+
subject_id: string | null;
|
|
57
|
+
};
|
|
58
|
+
observed_at: string;
|
|
59
|
+
}[];
|
|
33
60
|
refreshed_at: string | null;
|
|
34
61
|
};
|
|
35
62
|
/** Freshness-annotated snapshots with expired (>24h) observations pruned.
|
|
@@ -57,8 +84,30 @@ export declare class QuotaRegistry {
|
|
|
57
84
|
observed_at: string;
|
|
58
85
|
freshness: "unknown" | "fresh" | "stale";
|
|
59
86
|
}[];
|
|
87
|
+
absences: {
|
|
88
|
+
detail: string | null;
|
|
89
|
+
reason: "not_logged_in" | "transport_unavailable" | "platform_unsupported" | "refresh_failed" | "no_source";
|
|
90
|
+
subject: {
|
|
91
|
+
harness: string;
|
|
92
|
+
credential_route: "local" | "vendor_native" | "managed_api_key";
|
|
93
|
+
plan_label: string | null;
|
|
94
|
+
subject_id: string | null;
|
|
95
|
+
};
|
|
96
|
+
observed_at: string;
|
|
97
|
+
}[];
|
|
60
98
|
refreshed_at: string | null;
|
|
61
99
|
}>;
|
|
100
|
+
/** Aggregate one cycle's snapshots + absence claims against the subject
|
|
101
|
+
* universe (release cut V11a): a subject with a fresh-or-stale snapshot from
|
|
102
|
+
* ANY source has no absence; otherwise the first refresher-claimed absence
|
|
103
|
+
* for that subject wins; a universe subject with neither gets "no_source".
|
|
104
|
+
* Identity is (harness, subject_id) — credential_route/source never split a
|
|
105
|
+
* subject for absence purposes. */
|
|
106
|
+
private recomputeAbsences;
|
|
107
|
+
/** Absences whose subject is not (any longer) covered by an active snapshot —
|
|
108
|
+
* a snapshot arriving via ingest between cycles silences its absence at once,
|
|
109
|
+
* so read() never shows a subject with both a snapshot and an absence. */
|
|
110
|
+
private activeAbsences;
|
|
62
111
|
/** Background official-source refresh for empty/stale projections with bounded backoff. */
|
|
63
112
|
pollStale(): Promise<boolean>;
|
|
64
113
|
ingest(harnessId: string, value: unknown): void;
|
|
@@ -69,7 +118,7 @@ export declare class QuotaRegistry {
|
|
|
69
118
|
private apply;
|
|
70
119
|
private remove;
|
|
71
120
|
}
|
|
72
|
-
export declare function quotaProjection(refreshers?: readonly QuotaRefresher[]): {
|
|
121
|
+
export declare function quotaProjection(refreshers?: readonly QuotaRefresher[], subjects?: QuotaSubjectUniverse): {
|
|
73
122
|
name: string;
|
|
74
123
|
create: (journal: DurableJournal) => QuotaRegistry;
|
|
75
124
|
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;AACzD,OAAO,EAKL,KAAK,aAAa,
|
|
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;AACzD,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAW3B;;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;IAUtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D;;iDAE6C;IAC7C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;gBAGP,OAAO,EAAE,cAAc,EACvB,UAAU,GAAE,SAAS,cAAc,EAAO,EAC1C,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,oBAA+B;IAc5D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASJ;;;6EAGyE;IACzE,OAAO,CAAC,eAAe;IAgBjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmCb;;;;;uCAKmC;IACnC,OAAO,CAAC,iBAAiB;IA0BzB;;8EAE0E;IAC1E,OAAO,CAAC,cAAc;IAOtB,2FAA2F;IACrF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBnC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IA4B/C,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMlC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAUzD,kBAAkB,IAAI,IAAI;IAI1B,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;CAUf;AAED,wBAAgB,eAAe,CAC7B,UAAU,GAAE,SAAS,cAAc,EAAO,EAC1C,QAAQ,GAAE,oBAA+B;;sBAIrB,cAAc;yBAEX,aAAa;EAErC"}
|
package/dist/quota-registry.js
CHANGED
|
@@ -12,13 +12,19 @@ export class QuotaRegistry {
|
|
|
12
12
|
journal;
|
|
13
13
|
refreshers;
|
|
14
14
|
now;
|
|
15
|
+
subjects;
|
|
15
16
|
snapshots = new Map();
|
|
17
|
+
/** Ephemeral typed-absence state, recomputed each refresh/poll cycle — NOT
|
|
18
|
+
* journaled: an absence is a live derivation of "who reported nothing this
|
|
19
|
+
* cycle", never a durable fact to replay. */
|
|
20
|
+
absences = [];
|
|
16
21
|
pollFailures = 0;
|
|
17
22
|
pollNotBefore = 0;
|
|
18
|
-
constructor(journal, refreshers = [], now = () => new Date()) {
|
|
23
|
+
constructor(journal, refreshers = [], now = () => new Date(), subjects = () => []) {
|
|
19
24
|
this.journal = journal;
|
|
20
25
|
this.refreshers = refreshers;
|
|
21
26
|
this.now = now;
|
|
27
|
+
this.subjects = subjects;
|
|
22
28
|
for (const record of journal.records()) {
|
|
23
29
|
if (record.type === UPSERTED)
|
|
24
30
|
this.apply(QuotaSnapshotSchema.parse(record.payload));
|
|
@@ -32,8 +38,10 @@ export class QuotaRegistry {
|
|
|
32
38
|
this.validateProjection();
|
|
33
39
|
}
|
|
34
40
|
read() {
|
|
41
|
+
const now = this.now().getTime();
|
|
35
42
|
return ControlQuotaResponse.parse({
|
|
36
|
-
snapshots: this.activeSnapshots(
|
|
43
|
+
snapshots: this.activeSnapshots(now),
|
|
44
|
+
absences: this.activeAbsences(now),
|
|
37
45
|
refreshed_at: null,
|
|
38
46
|
});
|
|
39
47
|
}
|
|
@@ -65,10 +73,14 @@ export class QuotaRegistry {
|
|
|
65
73
|
}
|
|
66
74
|
let successfulSources = 0;
|
|
67
75
|
const failures = [];
|
|
76
|
+
const claims = [];
|
|
68
77
|
for (const refresher of this.refreshers) {
|
|
69
78
|
try {
|
|
70
|
-
|
|
79
|
+
const result = await refresher();
|
|
80
|
+
for (const snapshot of result.snapshots)
|
|
71
81
|
this.upsert(snapshot);
|
|
82
|
+
if (result.absences)
|
|
83
|
+
claims.push(...result.absences);
|
|
72
84
|
successfulSources += 1;
|
|
73
85
|
}
|
|
74
86
|
catch (error) {
|
|
@@ -81,11 +93,52 @@ export class QuotaRegistry {
|
|
|
81
93
|
status: 503,
|
|
82
94
|
});
|
|
83
95
|
}
|
|
96
|
+
const now = this.now().getTime();
|
|
97
|
+
this.recomputeAbsences(claims, now);
|
|
84
98
|
return ControlQuotaResponse.parse({
|
|
85
|
-
snapshots: this.activeSnapshots(
|
|
99
|
+
snapshots: this.activeSnapshots(now),
|
|
100
|
+
absences: this.activeAbsences(now),
|
|
86
101
|
refreshed_at: this.now().toISOString(),
|
|
87
102
|
});
|
|
88
103
|
}
|
|
104
|
+
/** Aggregate one cycle's snapshots + absence claims against the subject
|
|
105
|
+
* universe (release cut V11a): a subject with a fresh-or-stale snapshot from
|
|
106
|
+
* ANY source has no absence; otherwise the first refresher-claimed absence
|
|
107
|
+
* for that subject wins; a universe subject with neither gets "no_source".
|
|
108
|
+
* Identity is (harness, subject_id) — credential_route/source never split a
|
|
109
|
+
* subject for absence purposes. */
|
|
110
|
+
recomputeAbsences(claims, now) {
|
|
111
|
+
const covered = new Set(this.activeSnapshots(now).map((snapshot) => subjectIdentity(snapshot.subject)));
|
|
112
|
+
const result = [];
|
|
113
|
+
const claimed = new Set();
|
|
114
|
+
for (const claim of claims) {
|
|
115
|
+
const key = subjectIdentity(claim.subject);
|
|
116
|
+
if (covered.has(key) || claimed.has(key))
|
|
117
|
+
continue;
|
|
118
|
+
claimed.add(key);
|
|
119
|
+
result.push(claim);
|
|
120
|
+
}
|
|
121
|
+
for (const subject of this.subjects()) {
|
|
122
|
+
const key = subjectIdentity(subject);
|
|
123
|
+
if (covered.has(key) || claimed.has(key))
|
|
124
|
+
continue;
|
|
125
|
+
claimed.add(key);
|
|
126
|
+
result.push({
|
|
127
|
+
subject,
|
|
128
|
+
reason: "no_source",
|
|
129
|
+
detail: null,
|
|
130
|
+
observed_at: new Date(now).toISOString(),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
this.absences = result;
|
|
134
|
+
}
|
|
135
|
+
/** Absences whose subject is not (any longer) covered by an active snapshot —
|
|
136
|
+
* a snapshot arriving via ingest between cycles silences its absence at once,
|
|
137
|
+
* so read() never shows a subject with both a snapshot and an absence. */
|
|
138
|
+
activeAbsences(now) {
|
|
139
|
+
const covered = new Set(this.activeSnapshots(now).map((snapshot) => subjectIdentity(snapshot.subject)));
|
|
140
|
+
return this.absences.filter((absence) => !covered.has(subjectIdentity(absence.subject)));
|
|
141
|
+
}
|
|
89
142
|
/** Background official-source refresh for empty/stale projections with bounded backoff. */
|
|
90
143
|
async pollStale() {
|
|
91
144
|
const now = this.now().getTime();
|
|
@@ -201,10 +254,10 @@ export class QuotaRegistry {
|
|
|
201
254
|
return removed;
|
|
202
255
|
}
|
|
203
256
|
}
|
|
204
|
-
export function quotaProjection(refreshers = []) {
|
|
257
|
+
export function quotaProjection(refreshers = [], subjects = () => []) {
|
|
205
258
|
return {
|
|
206
259
|
name: "quota",
|
|
207
|
-
create: (journal) => new QuotaRegistry(journal, refreshers),
|
|
260
|
+
create: (journal) => new QuotaRegistry(journal, refreshers, () => new Date(), subjects),
|
|
208
261
|
validate: (registry) => registry.validateProjection(),
|
|
209
262
|
};
|
|
210
263
|
}
|
|
@@ -217,6 +270,11 @@ function snapshotKey(snapshot) {
|
|
|
217
270
|
snapshot.source,
|
|
218
271
|
].join("\0");
|
|
219
272
|
}
|
|
273
|
+
/** Absence-matching identity: (harness, subject_id) only — one credential
|
|
274
|
+
* subject is one subject regardless of which route or source observed it. */
|
|
275
|
+
function subjectIdentity(subject) {
|
|
276
|
+
return [subject.harness, subject.subject_id ?? ""].join("\0");
|
|
277
|
+
}
|
|
220
278
|
function staleAt(snapshot, now) {
|
|
221
279
|
if (snapshot.freshness !== "fresh")
|
|
222
280
|
return snapshot;
|
|
@@ -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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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export interface DaemonOptions {
|
|
|
33
33
|
/** Test-only barriers around command authority acquisition. */
|
|
34
34
|
startupBarrier?: (barrier: "before_registry_load" | "after_registry_load") => void | Promise<void>;
|
|
35
35
|
}
|
|
36
|
-
export declare const JOB_STATES: readonly ["queued", "running", "
|
|
36
|
+
export declare const JOB_STATES: readonly ["queued", "running", "succeeded", "failed", "cancelled", "interrupted"];
|
|
37
37
|
export type JobState = (typeof JOB_STATES)[number];
|
|
38
38
|
export interface JobRecord {
|
|
39
39
|
id: string;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAYA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/E;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB;;0BAEsB;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D;;;;iFAI6E;IAC7E,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnF;mEAC+D;IAC/D,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,cAAc,CAAC,EAAE,CACf,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,KACpD,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -5,22 +5,16 @@ import { createInterface } from "node:readline";
|
|
|
5
5
|
import { assertNoInlineSecretValues, errorCode, newId, nowIso, pathExists, redactSecrets, } from "@claudexor/util";
|
|
6
6
|
import { commandStoreForId, commandStoreForRequest, commandStores, } from "./command-authority.js";
|
|
7
7
|
import { productCommandRecords, prunableCommandIds } from "./command-retention.js";
|
|
8
|
+
// Daemon job state is EXACTLY the run LIFECYCLE (D8): outcome quality
|
|
9
|
+
// (checks/review/reason) lives on the run's facts, projected by the control
|
|
10
|
+
// plane — the job state machine never re-encodes it.
|
|
8
11
|
export const JOB_STATES = [
|
|
9
12
|
"queued",
|
|
10
13
|
"running",
|
|
11
|
-
"blocked",
|
|
12
14
|
"succeeded",
|
|
13
|
-
"no_op",
|
|
14
|
-
"ungated",
|
|
15
|
-
"review_not_run",
|
|
16
15
|
"failed",
|
|
17
16
|
"cancelled",
|
|
18
|
-
"
|
|
19
|
-
"cost_unverifiable",
|
|
20
|
-
"exhausted_overshoot",
|
|
21
|
-
"exhausted",
|
|
22
|
-
"not_converged",
|
|
23
|
-
"stuck_no_progress",
|
|
17
|
+
"interrupted",
|
|
24
18
|
];
|
|
25
19
|
/** Unix-socket worker pool; scheduling stays in the injected Orchestrator. */
|
|
26
20
|
export class DaemonServer {
|
|
@@ -379,16 +373,12 @@ export class DaemonServer {
|
|
|
379
373
|
},
|
|
380
374
|
});
|
|
381
375
|
const state = jobStateFromResult(result, controller.signal.aborted);
|
|
382
|
-
if (state === "failed" ||
|
|
383
|
-
|
|
384
|
-
state === "exhausted_overshoot" ||
|
|
385
|
-
state === "exhausted" ||
|
|
386
|
-
state === "not_converged" ||
|
|
387
|
-
state === "stuck_no_progress") {
|
|
376
|
+
if (state === "failed" || state === "interrupted") {
|
|
377
|
+
const reason = resultReason(result);
|
|
388
378
|
rec = this.updateRecord(rec, {
|
|
389
379
|
state,
|
|
390
380
|
result,
|
|
391
|
-
error: resultSummary(result) ?? `run ended
|
|
381
|
+
error: resultSummary(result) ?? `run ended ${state}${reason ? ` (${reason})` : ""}`,
|
|
392
382
|
finishedAt: nowIso(),
|
|
393
383
|
});
|
|
394
384
|
}
|
|
@@ -448,35 +438,19 @@ export class DaemonServer {
|
|
|
448
438
|
function jobStateFromResult(result, aborted) {
|
|
449
439
|
if (aborted)
|
|
450
440
|
return "cancelled";
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
return "review_not_run";
|
|
461
|
-
case "blocked":
|
|
462
|
-
return "blocked";
|
|
463
|
-
case "cancelled":
|
|
464
|
-
return "cancelled";
|
|
465
|
-
case "exhausted":
|
|
466
|
-
case "exhausted_overshoot":
|
|
467
|
-
case "cost_unverifiable":
|
|
468
|
-
return status;
|
|
469
|
-
case "not_converged":
|
|
470
|
-
return "not_converged";
|
|
471
|
-
case "stuck_no_progress":
|
|
472
|
-
return "stuck_no_progress";
|
|
473
|
-
case "failed":
|
|
474
|
-
return "failed";
|
|
475
|
-
default:
|
|
476
|
-
// Fail loudly: a runner result without a recognizable status is NOT a
|
|
477
|
-
// success — success-by-default would mask malformed results forever.
|
|
478
|
-
return "failed";
|
|
441
|
+
// The daemon job state IS the run lifecycle (D8), mapped 1:1 from the
|
|
442
|
+
// engine result's facts.lifecycle. Outcome quality is projected from facts
|
|
443
|
+
// by the control plane — never re-encoded into the job state here.
|
|
444
|
+
const lifecycle = resultLifecycle(result);
|
|
445
|
+
if (lifecycle === "succeeded" ||
|
|
446
|
+
lifecycle === "failed" ||
|
|
447
|
+
lifecycle === "cancelled" ||
|
|
448
|
+
lifecycle === "interrupted") {
|
|
449
|
+
return lifecycle;
|
|
479
450
|
}
|
|
451
|
+
// Fail loudly: a runner result without a recognizable lifecycle is NOT a
|
|
452
|
+
// success — success-by-default would mask malformed results forever.
|
|
453
|
+
return "failed";
|
|
480
454
|
}
|
|
481
455
|
/** Constant-time token comparison (parity with the HTTP control facade). */
|
|
482
456
|
function tokenMatches(candidate, expected) {
|
|
@@ -501,11 +475,20 @@ export function socketAlive(socketPath) {
|
|
|
501
475
|
setTimeout(() => done(false), 500).unref();
|
|
502
476
|
});
|
|
503
477
|
}
|
|
504
|
-
function
|
|
478
|
+
function resultLifecycle(result) {
|
|
505
479
|
if (!result || typeof result !== "object" || Array.isArray(result))
|
|
506
480
|
return null;
|
|
507
|
-
const
|
|
508
|
-
return typeof
|
|
481
|
+
const lifecycle = result["lifecycle"];
|
|
482
|
+
return typeof lifecycle === "string" ? lifecycle : null;
|
|
483
|
+
}
|
|
484
|
+
function resultReason(result) {
|
|
485
|
+
if (!result || typeof result !== "object" || Array.isArray(result))
|
|
486
|
+
return null;
|
|
487
|
+
const facts = result["facts"];
|
|
488
|
+
if (!facts || typeof facts !== "object")
|
|
489
|
+
return null;
|
|
490
|
+
const reason = facts["reason"];
|
|
491
|
+
return typeof reason === "string" ? reason : null;
|
|
509
492
|
}
|
|
510
493
|
function resultSummary(result) {
|
|
511
494
|
if (!result || typeof result !== "object" || Array.isArray(result))
|