@claudexor/daemon 1.0.0 → 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/threads.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
1
|
import { SCHEMA_VERSION, Session as SessionSchema, Thread as ThreadSchema, ThreadTurn as ThreadTurnSchema, } from "@claudexor/schema";
|
|
4
2
|
import { newId, nowIso, redactSecrets } from "@claudexor/util";
|
|
3
|
+
import { reduceThreadLifecycle } from "./thread-lifecycle.js";
|
|
4
|
+
import { assertUnique, idempotencyConflict, parseMutation, threadCreationIdempotency, turnIdempotency, upsert, } from "./thread-store-support.js";
|
|
5
|
+
const UPSERTED = "thread.entities_upserted";
|
|
5
6
|
/**
|
|
6
7
|
* Thread routing invariant: a sticky primary harness must be a member of a
|
|
7
8
|
* NON-EMPTY eligible pool (an empty pool = engine auto-pool, so it constrains
|
|
@@ -14,91 +15,109 @@ function coercePrimaryToPool(primary, pool) {
|
|
|
14
15
|
return null;
|
|
15
16
|
return primary;
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Durable thread/session registry (chat/session-first SSOT). The Thread is
|
|
19
|
-
* the Claudexor-owned conversation; Sessions are re-hostable pointers to each
|
|
20
|
-
* harness's native CLI session. Persisted as one JSON file with atomic writes
|
|
21
|
-
* (temp + rename), mirroring the daemon job registry's durability contract.
|
|
22
|
-
*/
|
|
18
|
+
/** Journal-backed thread/session projection. Returned mutations are fsynced. */
|
|
23
19
|
export class ThreadStore {
|
|
24
|
-
|
|
20
|
+
journal;
|
|
21
|
+
headPing;
|
|
25
22
|
state = { threads: [], sessions: [], turns: [] };
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
turnIdByKey = new Map();
|
|
24
|
+
threadIdByKey = new Map();
|
|
25
|
+
constructor(journal, headPing) {
|
|
26
|
+
this.journal = journal;
|
|
27
|
+
this.headPing = headPing;
|
|
28
|
+
this.replay();
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
validateProjection() {
|
|
31
|
+
for (const thread of this.state.threads)
|
|
32
|
+
ThreadSchema.parse(thread);
|
|
33
|
+
for (const session of this.state.sessions)
|
|
34
|
+
SessionSchema.parse(session);
|
|
35
|
+
for (const turn of this.state.turns)
|
|
36
|
+
ThreadTurnSchema.parse(turn);
|
|
37
|
+
assertUnique(this.state.threads, "thread");
|
|
38
|
+
assertUnique(this.state.sessions, "session");
|
|
39
|
+
assertUnique(this.state.turns, "turn");
|
|
40
|
+
for (const value of this.turnIdByKey.values()) {
|
|
41
|
+
if (!this.getTurn(value.turnId))
|
|
42
|
+
throw new Error("thread idempotency index is dangling");
|
|
36
43
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
this.state = { threads: [], sessions: [], turns: [] };
|
|
41
|
-
return;
|
|
44
|
+
for (const value of this.threadIdByKey.values()) {
|
|
45
|
+
if (!this.getThread(value.threadId))
|
|
46
|
+
throw new Error("thread creation idempotency index is dangling");
|
|
42
47
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
48
|
+
}
|
|
49
|
+
replay() {
|
|
50
|
+
for (const record of this.journal.records()) {
|
|
51
|
+
if (record.type === UPSERTED)
|
|
52
|
+
this.apply(parseMutation(record.payload));
|
|
53
|
+
}
|
|
54
|
+
this.validateProjection();
|
|
55
|
+
}
|
|
56
|
+
commit(mutation) {
|
|
57
|
+
const parsed = parseMutation(mutation);
|
|
58
|
+
this.journal.append(UPSERTED, parsed);
|
|
59
|
+
this.apply(parsed);
|
|
60
|
+
// Every PERSISTED mutation invalidates the touched threads' summaries —
|
|
61
|
+
// pinging here (the single writer) covers create/rename/archive/turn-add/
|
|
62
|
+
// enqueue-error/session/worktree without per-call-site wiring, so a future
|
|
63
|
+
// mutation path cannot forget the ping. Replay never pings (it goes
|
|
64
|
+
// through apply(), not commit()); the run-terminal path pings via
|
|
65
|
+
// pingHead() directly because no store mutation happens at terminal.
|
|
66
|
+
const touched = new Set([
|
|
67
|
+
...(parsed.threads ?? []).map((thread) => thread.id),
|
|
68
|
+
...(parsed.turns ?? []).map((turn) => turn.thread_id),
|
|
69
|
+
...(parsed.sessions ?? []).map((session) => session.thread_id),
|
|
70
|
+
]);
|
|
71
|
+
for (const threadId of touched)
|
|
72
|
+
this.pingHead(threadId);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Emit the content-free head-invalidation ping for one thread. The owning
|
|
76
|
+
* partition name is this store's journal partition — the single source of
|
|
77
|
+
* the thread->project mapping.
|
|
78
|
+
*/
|
|
79
|
+
pingHead(threadId) {
|
|
80
|
+
const partition = this.journal.options.partition;
|
|
81
|
+
const projectId = partition.startsWith("project:") ? partition.slice("project:".length) : null;
|
|
82
|
+
this.headPing?.({ threadId, projectId });
|
|
83
|
+
}
|
|
84
|
+
apply(mutation) {
|
|
85
|
+
for (const thread of mutation.threads ?? [])
|
|
86
|
+
upsert(this.state.threads, thread);
|
|
87
|
+
for (const session of mutation.sessions ?? [])
|
|
88
|
+
upsert(this.state.sessions, session);
|
|
89
|
+
for (const turn of mutation.turns ?? [])
|
|
90
|
+
upsert(this.state.turns, turn);
|
|
91
|
+
if (mutation.idempotency) {
|
|
92
|
+
const { keyDigest, requestDigest, turnId } = mutation.idempotency;
|
|
93
|
+
const prior = this.turnIdByKey.get(keyDigest);
|
|
94
|
+
if (prior && (prior.turnId !== turnId || prior.requestDigest !== requestDigest)) {
|
|
95
|
+
throw new Error("conflicting thread idempotency history");
|
|
89
96
|
}
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
this.turnIdByKey.set(keyDigest, { turnId, requestDigest });
|
|
98
|
+
}
|
|
99
|
+
if (mutation.threadCreation) {
|
|
100
|
+
const { keyDigest, requestDigest, threadId } = mutation.threadCreation;
|
|
101
|
+
const prior = this.threadIdByKey.get(keyDigest);
|
|
102
|
+
if (prior && (prior.threadId !== threadId || prior.requestDigest !== requestDigest)) {
|
|
103
|
+
throw new Error("conflicting thread creation idempotency history");
|
|
92
104
|
}
|
|
105
|
+
this.threadIdByKey.set(keyDigest, { threadId, requestDigest });
|
|
93
106
|
}
|
|
94
107
|
}
|
|
95
|
-
persist() {
|
|
96
|
-
mkdirSync(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
97
|
-
const tmp = join(dirname(this.path), `.threads-${process.pid}.tmp`);
|
|
98
|
-
writeFileSync(tmp, JSON.stringify(this.state, null, 2), { mode: 0o600 });
|
|
99
|
-
renameSync(tmp, this.path);
|
|
100
|
-
}
|
|
101
108
|
createThread(input) {
|
|
109
|
+
const creation = threadCreationIdempotency(this.journal.options.partition, input.idempotency);
|
|
110
|
+
if (creation) {
|
|
111
|
+
const prior = this.threadIdByKey.get(creation.keyDigest);
|
|
112
|
+
if (prior) {
|
|
113
|
+
if (prior.requestDigest !== creation.requestDigest)
|
|
114
|
+
throw idempotencyConflict();
|
|
115
|
+
const existing = this.getThread(prior.threadId);
|
|
116
|
+
if (!existing)
|
|
117
|
+
throw new Error(`idempotency record points to missing thread ${prior.threadId}`);
|
|
118
|
+
return existing;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
102
121
|
const now = nowIso();
|
|
103
122
|
// Same invariant as updateThread: a sticky primary must be a member of a
|
|
104
123
|
// non-empty eligible pool. Enforce it at CREATE too (the create request carries
|
|
@@ -118,13 +137,19 @@ export class ThreadStore {
|
|
|
118
137
|
mode: input.mode ?? (input.repoRoot ? "agent" : "ask"),
|
|
119
138
|
// An isolated workspace needs a git project for its worktree; a no-project
|
|
120
139
|
// thread is always in_place (review #6 — never persist a doomed config).
|
|
121
|
-
workspace: {
|
|
140
|
+
workspace: {
|
|
141
|
+
mode: input.repoRoot ? (input.workspace ?? "in_place") : "in_place",
|
|
142
|
+
worktree_path: null,
|
|
143
|
+
base_sha: null,
|
|
144
|
+
},
|
|
122
145
|
auth_preference: input.authPreference ?? "auto",
|
|
146
|
+
credential_profile_id: input.credentialProfileId ?? null,
|
|
123
147
|
primary_harness: primary,
|
|
124
148
|
eligible_harnesses: eligible,
|
|
125
149
|
});
|
|
126
|
-
|
|
127
|
-
|
|
150
|
+
if (creation)
|
|
151
|
+
creation.threadId = thread.id;
|
|
152
|
+
this.commit({ threads: [thread], ...(creation ? { threadCreation: creation } : {}) });
|
|
128
153
|
return thread;
|
|
129
154
|
}
|
|
130
155
|
/** Rename and/or open/close (archive) a thread. */
|
|
@@ -132,35 +157,75 @@ export class ThreadStore {
|
|
|
132
157
|
const thread = this.getThread(id);
|
|
133
158
|
if (!thread)
|
|
134
159
|
throw Object.assign(new Error(`no such thread: ${id}`), { status: 404 });
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
thread
|
|
160
|
+
if (thread.state === "trashed" || thread.state === "purged") {
|
|
161
|
+
throw Object.assign(new Error(`thread ${id} is ${thread.state}`), {
|
|
162
|
+
status: 409,
|
|
163
|
+
code: `thread_${thread.state}`,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
const next = ThreadSchema.parse({
|
|
167
|
+
...thread,
|
|
168
|
+
...(patch.title !== undefined ? { title: patch.title } : {}),
|
|
169
|
+
...(patch.state !== undefined ? { state: patch.state } : {}),
|
|
170
|
+
...(patch.primaryHarness !== undefined ? { primary_harness: patch.primaryHarness } : {}),
|
|
171
|
+
...(patch.credentialProfileId !== undefined
|
|
172
|
+
? { credential_profile_id: patch.credentialProfileId }
|
|
173
|
+
: {}),
|
|
174
|
+
...(patch.eligibleHarnesses !== undefined
|
|
175
|
+
? { eligible_harnesses: patch.eligibleHarnesses }
|
|
176
|
+
: {}),
|
|
177
|
+
updated_at: nowIso(),
|
|
178
|
+
});
|
|
143
179
|
// Invariant (thread.ts contract): a sticky primary must be a member of a non-empty
|
|
144
180
|
// eligible pool. If a PATCH leaves the primary outside the pool — e.g. the user
|
|
145
181
|
// removed the primary harness from the pool — clear it to null (Auto) rather than
|
|
146
182
|
// persist an incoherent state that the UI would show as "X answers in chat" while
|
|
147
183
|
// the engine silently drops X. (An empty pool = auto, so it imposes no constraint.)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
184
|
+
next.primary_harness = coercePrimaryToPool(next.primary_harness, next.eligible_harnesses);
|
|
185
|
+
this.commit({ threads: [next] });
|
|
186
|
+
return next;
|
|
187
|
+
}
|
|
188
|
+
trashThread(id) {
|
|
189
|
+
return this.changeLifecycle(id, "trash");
|
|
190
|
+
}
|
|
191
|
+
restoreThread(id) {
|
|
192
|
+
return this.changeLifecycle(id, "restore");
|
|
193
|
+
}
|
|
194
|
+
purgeThread(id) {
|
|
195
|
+
return this.changeLifecycle(id, "purge");
|
|
196
|
+
}
|
|
197
|
+
changeLifecycle(id, action) {
|
|
198
|
+
const thread = this.getThread(id);
|
|
199
|
+
if (!thread)
|
|
200
|
+
throw Object.assign(new Error(`no such thread: ${id}`), { status: 404 });
|
|
201
|
+
const next = reduceThreadLifecycle(thread, action);
|
|
202
|
+
if (next !== thread)
|
|
203
|
+
this.commit({ threads: [next] });
|
|
204
|
+
return next;
|
|
152
205
|
}
|
|
153
206
|
/** Persist the resolved isolated worktree path + base sha for a thread. */
|
|
154
|
-
setThreadWorktree(id, worktreePath, baseSha) {
|
|
207
|
+
setThreadWorktree(id, worktreePath, baseSha, deliveredThroughRunId) {
|
|
155
208
|
const thread = this.getThread(id);
|
|
156
209
|
if (!thread)
|
|
157
210
|
return;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
211
|
+
const next = ThreadSchema.parse({
|
|
212
|
+
...thread,
|
|
213
|
+
workspace: {
|
|
214
|
+
...thread.workspace,
|
|
215
|
+
worktree_path: worktreePath,
|
|
216
|
+
base_sha: baseSha,
|
|
217
|
+
...(deliveredThroughRunId !== undefined
|
|
218
|
+
? { delivered_through_run_id: deliveredThroughRunId }
|
|
219
|
+
: {}),
|
|
220
|
+
},
|
|
221
|
+
updated_at: nowIso(),
|
|
222
|
+
});
|
|
223
|
+
this.commit({ threads: [next] });
|
|
161
224
|
}
|
|
162
225
|
listThreads() {
|
|
163
|
-
return
|
|
226
|
+
return this.state.threads
|
|
227
|
+
.filter((thread) => thread.state !== "purged")
|
|
228
|
+
.sort((a, b) => (a.updated_at < b.updated_at ? 1 : -1));
|
|
164
229
|
}
|
|
165
230
|
getThread(id) {
|
|
166
231
|
return this.state.threads.find((t) => t.id === id);
|
|
@@ -192,7 +257,9 @@ export class ThreadStore {
|
|
|
192
257
|
// workspace/session context from one thread while advancing another
|
|
193
258
|
// thread's lineage. A turn also never rides without its thread id.
|
|
194
259
|
if (!threadId) {
|
|
195
|
-
throw Object.assign(new Error(`turnId ${turnId} requires its threadId`), {
|
|
260
|
+
throw Object.assign(new Error(`turnId ${turnId} requires its threadId`), {
|
|
261
|
+
code: "unbound_turn",
|
|
262
|
+
});
|
|
196
263
|
}
|
|
197
264
|
if (turn.thread_id !== threadId) {
|
|
198
265
|
throw Object.assign(new Error(`turn ${turnId} belongs to thread ${turn.thread_id}, not ${threadId}`), { code: "foreign_turn" });
|
|
@@ -204,11 +271,16 @@ export class ThreadStore {
|
|
|
204
271
|
return this.state.sessions.filter((s) => s.thread_id === threadId);
|
|
205
272
|
}
|
|
206
273
|
/** Native resume map for a thread: harnessId -> native session id (live sessions only). */
|
|
207
|
-
resumeMap(threadId) {
|
|
274
|
+
resumeMap(threadId, profileId = null) {
|
|
208
275
|
const map = {};
|
|
209
276
|
for (const s of this.sessionsForThread(threadId)) {
|
|
210
|
-
|
|
211
|
-
|
|
277
|
+
// INV-135: resume never crosses credential profiles — a session recorded
|
|
278
|
+
// under one profile (or the null engine default) is eligible ONLY for a
|
|
279
|
+
// turn running as exactly that profile. The entry CARRIES its profile so
|
|
280
|
+
// the engine boundary re-verifies against the RESOLVED profile (which
|
|
281
|
+
// preflight rotation may have changed after this map was built).
|
|
282
|
+
if (s.state === "live" && s.native_session_id && (s.profile_id ?? null) === profileId)
|
|
283
|
+
map[s.harness_id] = { sessionId: s.native_session_id, profileId: s.profile_id ?? null };
|
|
212
284
|
}
|
|
213
285
|
return map;
|
|
214
286
|
}
|
|
@@ -221,9 +293,27 @@ export class ThreadStore {
|
|
|
221
293
|
* concurrent turns cannot both claim the same stale head.
|
|
222
294
|
*/
|
|
223
295
|
createTurn(threadId, prompt, input = {}) {
|
|
296
|
+
const idempotency = turnIdempotency(this.journal.options.partition, threadId, input.idempotency);
|
|
297
|
+
if (idempotency) {
|
|
298
|
+
const prior = this.turnIdByKey.get(idempotency.keyDigest);
|
|
299
|
+
if (prior) {
|
|
300
|
+
if (prior.requestDigest !== idempotency.requestDigest)
|
|
301
|
+
throw idempotencyConflict();
|
|
302
|
+
const existing = this.getTurn(prior.turnId);
|
|
303
|
+
if (!existing)
|
|
304
|
+
throw new Error(`idempotency record points to missing turn ${prior.turnId}`);
|
|
305
|
+
return existing;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
224
308
|
const thread = this.getThread(threadId);
|
|
225
309
|
if (!thread)
|
|
226
310
|
throw Object.assign(new Error(`no such thread: ${threadId}`), { status: 404 });
|
|
311
|
+
if (thread.state === "trashed" || thread.state === "purged") {
|
|
312
|
+
throw Object.assign(new Error(`thread ${threadId} is ${thread.state}`), {
|
|
313
|
+
status: 409,
|
|
314
|
+
code: `thread_${thread.state}`,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
227
317
|
// Count TURNS, not run_ids: run_ids is only filled at bindTurnRun (which lags
|
|
228
318
|
// the runner), so a second turn created before the first binds would also see
|
|
229
319
|
// an empty run_ids and wrongly claim "initial" (review #5).
|
|
@@ -237,17 +327,20 @@ export class ThreadStore {
|
|
|
237
327
|
plan_run_id: input.planRunId ?? null,
|
|
238
328
|
kind,
|
|
239
329
|
// The durable conversation store is read back into UIs: redact at the
|
|
240
|
-
//
|
|
330
|
+
// persistence boundary exactly like other durable state projections do.
|
|
241
331
|
prompt: redactSecrets(prompt),
|
|
242
332
|
attachments: input.attachments ?? [],
|
|
243
333
|
created_at: nowIso(),
|
|
244
334
|
});
|
|
245
|
-
this.state.turns.push(turn);
|
|
246
335
|
// First prompt names the thread (no LLM): cheap, honest, editable via rename.
|
|
247
|
-
|
|
248
|
-
thread
|
|
249
|
-
|
|
250
|
-
|
|
336
|
+
const nextThread = ThreadSchema.parse({
|
|
337
|
+
...thread,
|
|
338
|
+
title: thread.title || turn.prompt.split("\n")[0].slice(0, 60),
|
|
339
|
+
updated_at: nowIso(),
|
|
340
|
+
});
|
|
341
|
+
if (idempotency)
|
|
342
|
+
idempotency.turnId = turn.id;
|
|
343
|
+
this.commit({ threads: [nextThread], turns: [turn], ...(idempotency ? { idempotency } : {}) });
|
|
251
344
|
return turn;
|
|
252
345
|
}
|
|
253
346
|
/** Bind a started run to its turn and advance the thread head (runner-owned). */
|
|
@@ -255,18 +348,20 @@ export class ThreadStore {
|
|
|
255
348
|
const turn = this.state.turns.find((t) => t.id === turnId);
|
|
256
349
|
if (!turn)
|
|
257
350
|
return;
|
|
258
|
-
turn
|
|
351
|
+
const nextTurn = ThreadTurnSchema.parse({ ...turn, run_id: runId, enqueue_error: null });
|
|
259
352
|
// A binding run supersedes any recorded refusal (the retry path): the
|
|
260
353
|
// turn is no longer an orphan, so the stale error must not linger.
|
|
261
|
-
turn.enqueue_error = null;
|
|
262
354
|
const thread = this.getThread(turn.thread_id);
|
|
355
|
+
let nextThread;
|
|
263
356
|
if (thread) {
|
|
264
|
-
|
|
265
|
-
thread
|
|
266
|
-
|
|
267
|
-
|
|
357
|
+
nextThread = ThreadSchema.parse({
|
|
358
|
+
...thread,
|
|
359
|
+
run_ids: thread.run_ids.includes(runId) ? thread.run_ids : [...thread.run_ids, runId],
|
|
360
|
+
head_run_id: runId,
|
|
361
|
+
updated_at: nowIso(),
|
|
362
|
+
});
|
|
268
363
|
}
|
|
269
|
-
this.
|
|
364
|
+
this.commit({ turns: [nextTurn], ...(nextThread ? { threads: [nextThread] } : {}) });
|
|
270
365
|
}
|
|
271
366
|
/**
|
|
272
367
|
* Persist the reason a turn's run could NOT be enqueued/started (trust
|
|
@@ -282,41 +377,59 @@ export class ThreadStore {
|
|
|
282
377
|
const turn = this.state.turns.find((t) => t.id === turnId);
|
|
283
378
|
if (!turn || turn.run_id)
|
|
284
379
|
return;
|
|
285
|
-
|
|
380
|
+
const nextTurn = ThreadTurnSchema.parse({
|
|
381
|
+
...turn,
|
|
382
|
+
enqueue_error: { message: redactSecrets(message), code, retryable, failed_at: nowIso() },
|
|
383
|
+
});
|
|
286
384
|
const thread = this.getThread(turn.thread_id);
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
this.persist();
|
|
385
|
+
const nextThread = thread ? ThreadSchema.parse({ ...thread, updated_at: nowIso() }) : undefined;
|
|
386
|
+
this.commit({ turns: [nextTurn], ...(nextThread ? { threads: [nextThread] } : {}) });
|
|
290
387
|
}
|
|
291
|
-
/** Record/refresh the native CLI session a harness emitted for this thread.
|
|
292
|
-
|
|
293
|
-
|
|
388
|
+
/** Record/refresh the native CLI session a harness emitted for this thread.
|
|
389
|
+
* Keyed by (thread, harness, PROFILE) — resume eligibility is
|
|
390
|
+
* profile-specific (release wave round-16 #3), so profile B's session must
|
|
391
|
+
* never overwrite profile A's row: an A→B→A sequence resumes A's own native
|
|
392
|
+
* conversation (the null engine default is its own row too). */
|
|
393
|
+
recordSession(threadId, harnessId, nativeSessionId, observedModel, profileId = null) {
|
|
394
|
+
const existing = this.state.sessions.find((s) => s.thread_id === threadId &&
|
|
395
|
+
s.harness_id === harnessId &&
|
|
396
|
+
(s.profile_id ?? null) === (profileId ?? null));
|
|
294
397
|
const now = nowIso();
|
|
295
|
-
|
|
296
|
-
existing
|
|
297
|
-
existing.state = "live";
|
|
298
|
-
existing.resume_kind = "resume_by_id";
|
|
299
|
-
if (observedModel)
|
|
300
|
-
existing.last_observed_model = observedModel;
|
|
301
|
-
existing.updated_at = now;
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
this.state.sessions.push(SessionSchema.parse({
|
|
398
|
+
const session = SessionSchema.parse({
|
|
399
|
+
...(existing ?? {
|
|
305
400
|
id: newId("se"),
|
|
306
401
|
thread_id: threadId,
|
|
307
402
|
harness_id: harnessId,
|
|
308
|
-
native_session_id: nativeSessionId,
|
|
309
|
-
last_observed_model: observedModel ?? null,
|
|
310
|
-
resume_kind: "resume_by_id",
|
|
311
|
-
state: "live",
|
|
312
403
|
created_at: now,
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
404
|
+
}),
|
|
405
|
+
profile_id: profileId,
|
|
406
|
+
native_session_id: nativeSessionId,
|
|
407
|
+
last_observed_model: observedModel || existing?.last_observed_model || null,
|
|
408
|
+
resume_kind: "resume_by_id",
|
|
409
|
+
state: "live",
|
|
410
|
+
updated_at: now,
|
|
411
|
+
});
|
|
316
412
|
const thread = this.getThread(threadId);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
this.persist();
|
|
413
|
+
const nextThread = thread ? ThreadSchema.parse({ ...thread, updated_at: now }) : undefined;
|
|
414
|
+
this.commit({ sessions: [session], ...(nextThread ? { threads: [nextThread] } : {}) });
|
|
320
415
|
}
|
|
416
|
+
relinkProjectRoot(root) {
|
|
417
|
+
const threads = this.state.threads
|
|
418
|
+
.filter((thread) => thread.repo && thread.repo.root !== root)
|
|
419
|
+
.map((thread) => ThreadSchema.parse({
|
|
420
|
+
...thread,
|
|
421
|
+
repo: { ...thread.repo, root },
|
|
422
|
+
updated_at: nowIso(),
|
|
423
|
+
}));
|
|
424
|
+
if (threads.length > 0)
|
|
425
|
+
this.commit({ threads });
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
export function threadProjection(headPing) {
|
|
429
|
+
return {
|
|
430
|
+
name: "threads",
|
|
431
|
+
create: (journal) => new ThreadStore(journal, headPing),
|
|
432
|
+
validate: (store) => store.validateProjection(),
|
|
433
|
+
};
|
|
321
434
|
}
|
|
322
435
|
//# sourceMappingURL=threads.js.map
|
package/dist/threads.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,OAAO,IAAI,aAAa,EACxB,MAAM,IAAI,YAAY,EACtB,UAAU,IAAI,gBAAgB,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAsC/D;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,OAAsB,EAAE,IAAc;IACjE,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAGO;IAFrB,KAAK,GAAqB,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE3E,YAA6B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QACnC,IAAI,GAA8B,CAAC;QACnC,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAA8B,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,gEAAgE;YAChE,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,2EAA2E;QAC3E,2EAA2E;QAC3E,kEAAkE;QAClE,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,CAAI,KAA4B,EAAE,MAAiE,EAAO,EAAE,CACvH,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxD,sEAAsE;gBACtE,oEAAoE;gBACpE,mEAAmE;gBACnE,mEAAmE;gBACnE,eAAe;gBACf,MAAM,GAAG,GAAG,IAA+B,CAAC;gBAC5C,MAAM,QAAQ,GAA4B,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;gBACrF,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS;oBAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBAClE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,aAAa;oBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;gBACtE,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,eAAe;oBAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;gBAC1F,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACzC,mEAAmE;oBACnE,oEAAoE;oBACpE,iEAAiE;oBACjE,oEAAoE;oBACpE,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;oBACjC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAChC,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtE,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC;SACzC,CAAC;QACF,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjF,OAAO,CAAC,KAAK,CACX,8BAA8B,OAAO,iEAAiE,IAAI,CAAC,IAAI,MAAM,CACtH,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO;QACb,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;QACpE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,KAAwB;QACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,yEAAyE;QACzE,gFAAgF;QAChF,sEAAsE;QACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,cAAc;YAC9B,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;YACxE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,mEAAmE;YACnE,uEAAuE;YACvE,8EAA8E;YAC9E,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACtD,2EAA2E;YAC3E,yEAAyE;YACzE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrH,eAAe,EAAE,KAAK,CAAC,cAAc,IAAI,MAAM;YAC/C,eAAe,EAAE,OAAO;YACxB,kBAAkB,EAAE,QAAQ;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mDAAmD;IACnD,YAAY,CAAC,EAAU,EAAE,KAAwB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1D,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;YAAE,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC;QACtF,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS;YAAE,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC/F,mFAAmF;QACnF,gFAAgF;QAChF,kFAAkF;QAClF,kFAAkF;QAClF,oFAAoF;QACpF,MAAM,CAAC,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChG,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2EAA2E;IAC3E,iBAAiB,CAAC,EAAU,EAAE,YAAoB,EAAE,OAAe;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC3F,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,WAAoB,EAAE,SAAkB;QACrD,MAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,mEAAmE;YACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,MAAM,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,QAAQ,MAAM,sBAAsB,IAAI,CAAC,SAAS,SAAS,QAAQ,EAAE,CAAC,EAChF,EAAE,IAAI,EAAE,cAAc,EAAE,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,iBAAiB,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,2FAA2F;IAC3F,SAAS,CAAC,QAAgB;QACxB,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,iBAAiB;gBAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,QAAyB,EAAE;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5F,8EAA8E;QAC9E,8EAA8E;QAC9E,4DAA4D;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,IAAI,GAAuB,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;YAClC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;YACf,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;YACvF,WAAW,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YACpC,IAAI;YACJ,sEAAsE;YACtE,6DAA6D;YAC7D,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,UAAU,EAAE,MAAM,EAAE;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,8EAA8E;QAC9E,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iFAAiF;IACjF,WAAW,CAAC,MAAc,EAAE,KAAa;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CAAC,MAAc,EAAE,OAAe,EAAE,OAAsB,IAAI,EAAE,SAAS,GAAG,IAAI;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACjC,IAAI,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,MAAM;YAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAGD,+EAA+E;IAC/E,aAAa,CAAC,QAAgB,EAAE,SAAiB,EAAE,eAAuB,EAAE,aAA6B;QACvG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;QACzG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,iBAAiB,GAAG,eAAe,CAAC;YAC7C,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;YACxB,QAAQ,CAAC,WAAW,GAAG,cAAc,CAAC;YACtC,IAAI,aAAa;gBAAE,QAAQ,CAAC,mBAAmB,GAAG,aAAa,CAAC;YAChE,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACtB,aAAa,CAAC,KAAK,CAAC;gBAClB,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;gBACf,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,SAAS;gBACrB,iBAAiB,EAAE,eAAe;gBAClC,mBAAmB,EAAE,aAAa,IAAI,IAAI;gBAC1C,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,GAAG;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CAEF"}
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"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"}
|
package/dist/token.d.ts
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
export declare function daemonDir(): string;
|
|
2
|
+
/**
|
|
3
|
+
* Prove every daemon-owned root component before any token/log/lock writer is
|
|
4
|
+
* allowed to touch it. On first launch the default `~/.claudexor` parent may
|
|
5
|
+
* not exist yet, so create that one owned root before proving the v2 subtree.
|
|
6
|
+
* A custom root must still have a canonical parent supplied by its operator.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ensureDaemonRuntimeRoot(): string;
|
|
2
9
|
export declare function defaultSocketPath(): string;
|
|
3
10
|
export declare function logPath(): string;
|
|
4
|
-
/** Read or generate a per-user local auth token (0600). */
|
|
11
|
+
/** Read or generate a per-user local auth token (0600), never through links. */
|
|
5
12
|
export declare function ensureToken(): string;
|
|
6
13
|
export declare function readToken(): string | null;
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
14
|
+
/**
|
|
15
|
+
* Rotate only a proven owner-controlled token inode. The caller already fences
|
|
16
|
+
* a live daemon; this writer adds no compatibility path that would chmod or
|
|
17
|
+
* overwrite a symlink/hardlink/foreign file.
|
|
18
|
+
*/
|
|
10
19
|
export declare function rotateToken(): string;
|
|
11
20
|
//# sourceMappingURL=token.d.ts.map
|
package/dist/token.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAmBA,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,gFAAgF;AAChF,wBAAgB,WAAW,IAAI,MAAM,CAgCpC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAOzC;AAiBD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAgCpC"}
|