@corenel/harness 0.4.1 → 0.5.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/dist/api/backend.d.ts +24 -0
- package/dist/api/backend.d.ts.map +1 -1
- package/dist/api/backend.js +32 -8
- package/dist/api/backend.js.map +1 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +10 -1
- package/dist/api/client.js.map +1 -1
- package/dist/core/budget.d.ts +6 -0
- package/dist/core/budget.d.ts.map +1 -1
- package/dist/core/budget.js +16 -0
- package/dist/core/budget.js.map +1 -1
- package/dist/core/factFile.d.ts +25 -0
- package/dist/core/factFile.d.ts.map +1 -0
- package/dist/core/factFile.js +59 -0
- package/dist/core/factFile.js.map +1 -0
- package/dist/core/loop.d.ts +18 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +50 -2
- package/dist/core/loop.js.map +1 -1
- package/dist/core/recovery.d.ts +4 -3
- package/dist/core/recovery.d.ts.map +1 -1
- package/dist/core/recovery.js +20 -0
- package/dist/core/recovery.js.map +1 -1
- package/dist/prompts/config.d.ts +14 -0
- package/dist/prompts/config.d.ts.map +1 -1
- package/dist/prompts/config.js +25 -0
- package/dist/prompts/config.js.map +1 -1
- package/dist/prompts/library/defaults.generated.js +4 -4
- package/dist/prompts/library/defaults.generated.js.map +1 -1
- package/dist/providers/gateway.d.ts.map +1 -1
- package/dist/providers/gateway.js +11 -1
- package/dist/providers/gateway.js.map +1 -1
- package/dist/redact.d.ts +10 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +53 -0
- package/dist/redact.js.map +1 -0
- package/dist/rooms/findings.d.ts +134 -0
- package/dist/rooms/findings.d.ts.map +1 -0
- package/dist/rooms/findings.js +262 -0
- package/dist/rooms/findings.js.map +1 -0
- package/dist/sidecar/host.d.ts +192 -2
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +407 -0
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/server.d.ts +185 -1
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +515 -3
- package/dist/sidecar/server.js.map +1 -1
- package/dist/tools/builtins.d.ts.map +1 -1
- package/dist/tools/builtins.js +8 -0
- package/dist/tools/builtins.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +8 -0
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/roomTools.d.ts +95 -0
- package/dist/tools/roomTools.d.ts.map +1 -0
- package/dist/tools/roomTools.js +279 -0
- package/dist/tools/roomTools.js.map +1 -0
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +1 -0
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +3 -0
- package/dist/tools/web.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/* The room's living findings document.
|
|
2
|
+
*
|
|
3
|
+
* WHAT IT IS. A room's conclusions, recorded AS the room reaches them rather
|
|
4
|
+
* than recalled once at the end. A record written when a thing is agreed is
|
|
5
|
+
* accurate; an end-of-room synthesis is a lossy re-reading of prose, and it
|
|
6
|
+
* fails exactly when the room most needs it (a close that depends on a model
|
|
7
|
+
* call is a close that can fail).
|
|
8
|
+
*
|
|
9
|
+
* WHERE IT LIVES. Beside the transcript, at
|
|
10
|
+
* `<roomsRoot>/<roomId>/FINDINGS.jsonl` -- the same directory as SESSION.jsonl,
|
|
11
|
+
* never in the project tree. A room's conclusions belong to the room, not to
|
|
12
|
+
* whatever workspace happened to be open while it ran.
|
|
13
|
+
*
|
|
14
|
+
* WHY A LOG OF EDITS AND NOT A DOCUMENT BLOB. Two participants recording in the
|
|
15
|
+
* same room must not clobber each other. A whole-document overwrite makes that
|
|
16
|
+
* the default failure: the later writer's text replaces the earlier writer's,
|
|
17
|
+
* silently and completely. So the file is an append-only log of per-finding
|
|
18
|
+
* OPS -- `record`, `revise`, `withdraw` -- each naming ONE finding by id, and
|
|
19
|
+
* the document is the fold of them. Two participants recording concurrently
|
|
20
|
+
* append two independent `record` lines and the document holds both. The worst
|
|
21
|
+
* a genuine collision can do is two revisions of the SAME finding, where the
|
|
22
|
+
* later one wins and the earlier one is still in the log, which is the failure
|
|
23
|
+
* mode of a version history rather than of a lost write.
|
|
24
|
+
*
|
|
25
|
+
* WHY IT CAN SHRINK. A document that can only grow is a log, not a document.
|
|
26
|
+
* `revise` corrects a finding in place (the previous wording stays in the log);
|
|
27
|
+
* `withdraw` retires one with a stated reason, and a withdrawn finding is
|
|
28
|
+
* marked, never erased -- a reader of the file can still see what the room
|
|
29
|
+
* believed and when it stopped believing it. Only ACTIVE findings are rendered
|
|
30
|
+
* to participants, so a withdrawn decision is never re-read as current.
|
|
31
|
+
*
|
|
32
|
+
* WHO WRITES IT. Nothing here writes anything: this module is pure. The room
|
|
33
|
+
* engine is the single writer of a room's files, exactly as it is of
|
|
34
|
+
* SESSION.jsonl (see turn.ts) -- a participant's tool records its INTENT into
|
|
35
|
+
* `ctx.runState` and the engine applies it after the turn.
|
|
36
|
+
*/
|
|
37
|
+
/** The findings file, beside SESSION.jsonl in the room's own directory. */
|
|
38
|
+
export const FINDINGS_FILE = 'FINDINGS.jsonl';
|
|
39
|
+
export const FINDING_KIND = 'finding';
|
|
40
|
+
/** Per-finding length cap, in characters. The same number as `MAX_ROOM_BRIEF`
|
|
41
|
+
* on purpose: a finding is a decision stated once, at about the length a room's
|
|
42
|
+
* whole purpose takes to state. */
|
|
43
|
+
export const MAX_FINDING_TEXT = 500;
|
|
44
|
+
/** How many ACTIVE findings a room may hold at once.
|
|
45
|
+
*
|
|
46
|
+
* This is a per-turn cost multiplier, not a storage limit: the document is
|
|
47
|
+
* rendered into every participant's system prompt on every turn, so its size is
|
|
48
|
+
* paid once per turn per participant for the rest of the room. 16 x 500 chars
|
|
49
|
+
* is ~8K characters, roughly 2K tokens -- the same order as the transcript
|
|
50
|
+
* overhead a room already carries, and comfortably under what would start
|
|
51
|
+
* crowding out the conversation itself. It is also about the point past which a
|
|
52
|
+
* findings list stops being a document a person reads and becomes a log they
|
|
53
|
+
* skim: a room with seventeen live decisions has not converged.
|
|
54
|
+
*
|
|
55
|
+
* At the cap, recording is REFUSED (out loud, naming the cap) rather than
|
|
56
|
+
* silently dropping the oldest: a room that quietly loses its first decision to
|
|
57
|
+
* make room for its seventeenth is worse than one told to tidy up. Revising and
|
|
58
|
+
* withdrawing still work at the cap, so the room can always make space. */
|
|
59
|
+
export const MAX_ROOM_FINDINGS = 16;
|
|
60
|
+
export function encodeFindingLine(line) {
|
|
61
|
+
return JSON.stringify(line) + '\n';
|
|
62
|
+
}
|
|
63
|
+
function str(v) { return typeof v === 'string' ? v.trim() : ''; }
|
|
64
|
+
/** Apply one line to a folded document. Exported because the engine applies a
|
|
65
|
+
* turn's edits one at a time and must plan each against the document as the
|
|
66
|
+
* PREVIOUS edit left it -- otherwise two records in one turn mint the same id. */
|
|
67
|
+
export function applyFindingLine(doc, line) {
|
|
68
|
+
if (line.op === 'record') {
|
|
69
|
+
if (doc.some((f) => f.id === line.id))
|
|
70
|
+
return [...doc];
|
|
71
|
+
return [...doc, {
|
|
72
|
+
id: line.id, text: line.text, by: line.by, at: line.at,
|
|
73
|
+
revisedBy: null, revisedAt: null, withdrawn: null,
|
|
74
|
+
}];
|
|
75
|
+
}
|
|
76
|
+
// A revision or a withdrawal of an id nothing recorded describes nothing:
|
|
77
|
+
// dropped, exactly as `foldRoom` drops a line written before its open.
|
|
78
|
+
const found = doc.find((f) => f.id === line.id);
|
|
79
|
+
if (!found)
|
|
80
|
+
return [...doc];
|
|
81
|
+
return doc.map((f) => {
|
|
82
|
+
if (f.id !== line.id)
|
|
83
|
+
return f;
|
|
84
|
+
if (line.op === 'revise')
|
|
85
|
+
return { ...f, text: line.text, revisedBy: line.by, revisedAt: line.at };
|
|
86
|
+
return { ...f, withdrawn: { by: line.by, at: line.at, reason: line.reason } };
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function parseFindingLine(raw) {
|
|
90
|
+
const s = raw.trim();
|
|
91
|
+
if (!s)
|
|
92
|
+
return null;
|
|
93
|
+
let parsed;
|
|
94
|
+
try {
|
|
95
|
+
parsed = JSON.parse(s);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (!parsed || typeof parsed !== 'object')
|
|
101
|
+
return null;
|
|
102
|
+
const o = parsed;
|
|
103
|
+
if (o.k !== FINDING_KIND)
|
|
104
|
+
return null;
|
|
105
|
+
const id = str(o.id);
|
|
106
|
+
const by = str(o.by);
|
|
107
|
+
const at = typeof o.at === 'number' && Number.isFinite(o.at) ? o.at : null;
|
|
108
|
+
if (!id || !by || at === null)
|
|
109
|
+
return null;
|
|
110
|
+
if (o.op === 'record' || o.op === 'revise') {
|
|
111
|
+
const text = str(o.text);
|
|
112
|
+
if (!text)
|
|
113
|
+
return null;
|
|
114
|
+
return { k: FINDING_KIND, op: o.op, id, at, by, text };
|
|
115
|
+
}
|
|
116
|
+
if (o.op === 'withdraw') {
|
|
117
|
+
const reason = str(o.reason);
|
|
118
|
+
if (!reason)
|
|
119
|
+
return null;
|
|
120
|
+
return { k: FINDING_KIND, op: 'withdraw', id, at, by, reason };
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
/** Fold a FINDINGS.jsonl text into the document. Degrades, never throws: one
|
|
125
|
+
* malformed line must not take the whole document with it, and a line of any
|
|
126
|
+
* other kind (a file that ever ends up sharing this one) is simply not ours. */
|
|
127
|
+
export function foldFindings(text) {
|
|
128
|
+
let doc = [];
|
|
129
|
+
for (const raw of text.split('\n')) {
|
|
130
|
+
const line = parseFindingLine(raw);
|
|
131
|
+
if (line)
|
|
132
|
+
doc = applyFindingLine(doc, line);
|
|
133
|
+
}
|
|
134
|
+
return doc;
|
|
135
|
+
}
|
|
136
|
+
/** The findings that still stand. What participants are shown, and what the cap
|
|
137
|
+
* counts -- a withdrawn finding costs nothing per turn and should not keep the
|
|
138
|
+
* room from recording a new one. */
|
|
139
|
+
export function activeFindings(doc) {
|
|
140
|
+
return doc.filter((f) => f.withdrawn === null);
|
|
141
|
+
}
|
|
142
|
+
/** The next id, never reusing one a withdrawn finding held: an id that comes
|
|
143
|
+
* back meaning something else makes the log unreadable. */
|
|
144
|
+
function nextFindingId(doc) {
|
|
145
|
+
let max = 0;
|
|
146
|
+
for (const f of doc) {
|
|
147
|
+
const n = /^f(\d+)$/.exec(f.id);
|
|
148
|
+
if (n)
|
|
149
|
+
max = Math.max(max, Number(n[1]));
|
|
150
|
+
}
|
|
151
|
+
return `f${max + 1}`;
|
|
152
|
+
}
|
|
153
|
+
function idList(doc) {
|
|
154
|
+
const active = activeFindings(doc).map((f) => f.id);
|
|
155
|
+
return active.length ? active.join(', ') : '(none)';
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Turn one requested edit into the line that would record it, or say why not.
|
|
159
|
+
*
|
|
160
|
+
* The ONE place an edit is validated, so the agent's tool, the human's facade
|
|
161
|
+
* call and the engine's apply step cannot drift into three different ideas of
|
|
162
|
+
* what a legal finding is. Pure: it writes nothing and mutates nothing.
|
|
163
|
+
*/
|
|
164
|
+
export function planFindingEdit(doc, edit, by, at) {
|
|
165
|
+
const author = str(by);
|
|
166
|
+
if (!author)
|
|
167
|
+
return { ok: false, problem: 'A finding must record who found it.' };
|
|
168
|
+
if (edit.kind === 'record') {
|
|
169
|
+
const text = str(edit.text);
|
|
170
|
+
if (!text)
|
|
171
|
+
return { ok: false, problem: 'A finding cannot be empty -- say what the room decided.' };
|
|
172
|
+
if (text.length > MAX_FINDING_TEXT) {
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
problem: `That finding is ${text.length} characters; the maximum is ${MAX_FINDING_TEXT}. `
|
|
176
|
+
+ 'State the decision, not the discussion that reached it.',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (activeFindings(doc).length >= MAX_ROOM_FINDINGS) {
|
|
180
|
+
return {
|
|
181
|
+
ok: false,
|
|
182
|
+
problem: `This room already holds the maximum of ${MAX_ROOM_FINDINGS} findings. `
|
|
183
|
+
+ 'Revise one that is now wrong, or withdraw one that no longer holds, and record this in its place.',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return { ok: true, line: { k: FINDING_KIND, op: 'record', id: nextFindingId(doc), at, by: author, text } };
|
|
187
|
+
}
|
|
188
|
+
const id = str(edit.id);
|
|
189
|
+
const found = doc.find((f) => f.id === id);
|
|
190
|
+
if (!found) {
|
|
191
|
+
return { ok: false, problem: `There is no finding "${id}" in this room. The findings are: ${idList(doc)}.` };
|
|
192
|
+
}
|
|
193
|
+
if (found.withdrawn) {
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
problem: `Finding ${id} was withdrawn (${found.withdrawn.reason}) and cannot be changed. `
|
|
197
|
+
+ 'Record a new finding instead.',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if (edit.kind === 'revise') {
|
|
201
|
+
const text = str(edit.text);
|
|
202
|
+
if (!text)
|
|
203
|
+
return { ok: false, problem: 'A revision cannot be empty -- withdraw the finding instead.' };
|
|
204
|
+
if (text.length > MAX_FINDING_TEXT) {
|
|
205
|
+
return {
|
|
206
|
+
ok: false,
|
|
207
|
+
problem: `That revision is ${text.length} characters; the maximum is ${MAX_FINDING_TEXT}.`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return { ok: true, line: { k: FINDING_KIND, op: 'revise', id, at, by: author, text } };
|
|
211
|
+
}
|
|
212
|
+
const reason = str(edit.reason);
|
|
213
|
+
if (!reason) {
|
|
214
|
+
return { ok: false, problem: 'Withdrawing a finding needs a reason -- a decision that vanishes without one cannot be reviewed later.' };
|
|
215
|
+
}
|
|
216
|
+
return { ok: true, line: { k: FINDING_KIND, op: 'withdraw', id, at, by: author, reason } };
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Plan a WHOLE turn's worth of edits against one document, in order.
|
|
220
|
+
*
|
|
221
|
+
* Sequential and cumulative: each edit is planned against the document as the
|
|
222
|
+
* previous one left it, which is the only way two `record` calls in one turn
|
|
223
|
+
* can mint two different ids -- and the only way an edit that depends on an
|
|
224
|
+
* earlier one in the same turn (withdraw, then record in its place) can be
|
|
225
|
+
* judged against reality. A refused edit is SKIPPED with its reason collected,
|
|
226
|
+
* never fatal: one bad edit must not throw away the good ones beside it.
|
|
227
|
+
*
|
|
228
|
+
* Used by the participant's tool (to answer "what id will this get, and would
|
|
229
|
+
* it even be allowed") and by the engine (to actually write the lines), so the
|
|
230
|
+
* two can never disagree about what a turn's edits mean.
|
|
231
|
+
*/
|
|
232
|
+
export function planFindingEdits(doc, edits, by, at) {
|
|
233
|
+
let next = [...doc];
|
|
234
|
+
const lines = [];
|
|
235
|
+
const problems = [];
|
|
236
|
+
for (const edit of edits) {
|
|
237
|
+
const planned = planFindingEdit(next, edit, by, at);
|
|
238
|
+
if (!planned.ok) {
|
|
239
|
+
problems.push(planned.problem);
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
lines.push(planned.line);
|
|
243
|
+
next = applyFindingLine(next, planned.line);
|
|
244
|
+
}
|
|
245
|
+
return { lines, doc: next, problems };
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* The findings as a participant reads them, ids included so a revision or a
|
|
249
|
+
* withdrawal can name one.
|
|
250
|
+
*
|
|
251
|
+
* Active only. A withdrawn finding is still in the file (and still on screen,
|
|
252
|
+
* marked, for the person in the room) but must never be rendered here: a
|
|
253
|
+
* participant shown a retired decision alongside the live ones has no way to
|
|
254
|
+
* tell them apart and will build on the wrong one.
|
|
255
|
+
*/
|
|
256
|
+
export function renderFindings(doc) {
|
|
257
|
+
const active = activeFindings(doc);
|
|
258
|
+
if (!active.length)
|
|
259
|
+
return 'Nothing has been recorded in this room yet.';
|
|
260
|
+
return active.map((f) => `${f.id} (${f.revisedBy ?? f.by}): ${f.text}`).join('\n');
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../../rooms/findings.ts"],"names":[],"mappings":"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"}
|
package/dist/sidecar/host.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AgentTool, IMemoryProvider, IKeyValueStore, ISearchProvider, ISessionStore, PermissionRequest, AskQuestion, AskAnswers, AgentEvent, PermissionDecision, DaemonRunActivity, DaemonRegistration, ProcInfo, RunRecordInfo, SessionInfo, SessionRepoSpec, SessionSnapshotInfo } from '@corenel/protocol';
|
|
1
|
+
import type { AgentTool, IMemoryProvider, IKeyValueStore, ISearchProvider, ISessionStore, PermissionRequest, AskQuestion, AskAnswers, AgentEvent, PermissionDecision, DaemonRunActivity, DaemonRegistration, AgentPause, HostSummary, ProcInfo, RunRecordInfo, SessionInfo, SessionRepoSpec, SessionSnapshotInfo, CrewMemoryInfo } from '@corenel/protocol';
|
|
2
2
|
import type { FileService } from '@corenel/protocol';
|
|
3
|
-
import { type SidecarChannel, type SidecarInfo, type AcpPromptPart, type AcpModeInfo, type AcpStartOptions } from '@corenel/protocol';
|
|
3
|
+
import { type SidecarChannel, type SidecarInfo, type AcpPromptPart, type AcpModeInfo, type AcpStartOptions, type RoomOpenRequest, type RoomSummary, type RoomFinding, type RoomFindingEdit } from '@corenel/protocol';
|
|
4
4
|
/** The host's live capabilities a connected sidecar may proxy into. Only the ones
|
|
5
5
|
* provided are reachable; a proxy call to a missing one is rejected. */
|
|
6
6
|
export interface HostProviders {
|
|
@@ -69,6 +69,11 @@ export interface SidecarHostOptions {
|
|
|
69
69
|
* previous set - never merge, or an agent deleted on the daemon would live
|
|
70
70
|
* forever in a client that was connected when it went. */
|
|
71
71
|
onRegistrations?: (list: DaemonRegistration[]) => void;
|
|
72
|
+
/** A room moved (Task 6's `room-progress` broadcast) — every connected client
|
|
73
|
+
* hears every room's progress, not just the one that opened it (see
|
|
74
|
+
* `SidecarRooms.subscribe` in server.ts). Fires whether or not this client
|
|
75
|
+
* ever called `roomOpen`/`roomList`/`roomRead`. */
|
|
76
|
+
onRoomProgress?: (room: RoomSummary) => void;
|
|
72
77
|
}
|
|
73
78
|
/** What a caller wants to hear about one process. Both handlers are optional:
|
|
74
79
|
* a client that only wants to know when a build finishes should not have to
|
|
@@ -112,12 +117,29 @@ export declare class SidecarHost {
|
|
|
112
117
|
* spawned it, and the same process can be watched by a spawn and later by a
|
|
113
118
|
* reattach. Keyed by the only durable identity there is. */
|
|
114
119
|
private readonly procWatchers;
|
|
120
|
+
private roomSeq;
|
|
121
|
+
private readonly roomOpenPending;
|
|
122
|
+
private readonly roomListPending;
|
|
123
|
+
private pauseSeq;
|
|
124
|
+
private readonly pausePending;
|
|
125
|
+
private hostsSeq;
|
|
126
|
+
private readonly hostsPending;
|
|
127
|
+
private readonly roomReadPending;
|
|
128
|
+
private readonly roomAnswerPending;
|
|
129
|
+
private readonly roomResumePending;
|
|
130
|
+
private readonly roomInterjectPending;
|
|
131
|
+
private readonly roomClosePending;
|
|
132
|
+
private readonly roomFindingsPending;
|
|
133
|
+
private readonly roomFindingEditPending;
|
|
115
134
|
private sessionSeq;
|
|
116
135
|
private readonly sessionPending;
|
|
117
136
|
/** Per-session stream handlers, keyed by session because a session outlives
|
|
118
137
|
* the request that started watching it. */
|
|
119
138
|
private readonly sessionWatchers;
|
|
120
139
|
private features;
|
|
140
|
+
/** The synced directory name the daemon echoed for THIS connection
|
|
141
|
+
* (`welcome.dirName`), or null against an older daemon that sends none. */
|
|
142
|
+
private dirName;
|
|
121
143
|
private info;
|
|
122
144
|
private readonly imported;
|
|
123
145
|
private welcome;
|
|
@@ -259,6 +281,17 @@ export declare class SidecarHost {
|
|
|
259
281
|
* which says whether there was ever anything to fetch.
|
|
260
282
|
*/
|
|
261
283
|
runTranscript(agent: string, runId: string): Promise<unknown[]>;
|
|
284
|
+
/**
|
|
285
|
+
* What one of this daemon's agents remembers, newest first.
|
|
286
|
+
*
|
|
287
|
+
* Answered from the daemon's own copy, which decision 2 of the memory design
|
|
288
|
+
* makes authoritative for a deployed agent: memory is not synced, so the
|
|
289
|
+
* browser's local folder for a deployed agent is not merely stale, it was
|
|
290
|
+
* never written. An empty list therefore means "this agent has remembered
|
|
291
|
+
* nothing", and a REJECTION means "this machine could not be asked" -- a
|
|
292
|
+
* caller must render those differently.
|
|
293
|
+
*/
|
|
294
|
+
crewMemory(agent: string): Promise<CrewMemoryInfo[]>;
|
|
262
295
|
/** Every capture this daemon could restore from, newest first.
|
|
263
296
|
*
|
|
264
297
|
* An empty list is a real answer — a daemon whose backend cannot capture has
|
|
@@ -346,6 +379,163 @@ export declare class SidecarHost {
|
|
|
346
379
|
* may add a working directory this session. Feature-detected from the welcome --
|
|
347
380
|
* an older sidecar simply never advertises it. */
|
|
348
381
|
canAddRoots(): boolean;
|
|
382
|
+
/** True when the connected sidecar can drive a room (Task 7's daemon handler is
|
|
383
|
+
* wired). An older or unconfigured sidecar omits 'rooms' from `welcome.features`
|
|
384
|
+
* and every room-* message is refused server-side; feature-detecting here means
|
|
385
|
+
* the browser never sends one it already knows will be refused. */
|
|
386
|
+
supportsRooms(): boolean;
|
|
387
|
+
/** True when the connected daemon HOLDS agent pauses. Feature-detected from
|
|
388
|
+
* the welcome, so a client offers "Pause" only where pausing would actually
|
|
389
|
+
* stop the agent rather than reporting a success the daemon ignores. */
|
|
390
|
+
supportsAgentPause(): boolean;
|
|
391
|
+
/** True when the connected daemon can report and reclaim its synced host
|
|
392
|
+
* directories. Feature-detected so a client offers a destructive control only
|
|
393
|
+
* where the daemon would actually honour it. */
|
|
394
|
+
supportsHostsAdmin(): boolean;
|
|
395
|
+
/** Every synced host directory this daemon holds. */
|
|
396
|
+
listHosts(): Promise<{
|
|
397
|
+
ok: true;
|
|
398
|
+
hosts: HostSummary[];
|
|
399
|
+
} | {
|
|
400
|
+
ok: false;
|
|
401
|
+
error: string;
|
|
402
|
+
}>;
|
|
403
|
+
/** Remove one synced tree AND its manifest entry. `ok: false` is the daemon's
|
|
404
|
+
* considered refusal -- a connected directory, this connection's own, or a
|
|
405
|
+
* removal that failed -- so it resolves rather than rejects; only a dropped
|
|
406
|
+
* connection rejects. Resolves with the COMPLETE set afterwards. */
|
|
407
|
+
forgetHost(dirName: string): Promise<{
|
|
408
|
+
ok: true;
|
|
409
|
+
hosts: HostSummary[];
|
|
410
|
+
} | {
|
|
411
|
+
ok: false;
|
|
412
|
+
error: string;
|
|
413
|
+
}>;
|
|
414
|
+
/** The synced directory name this daemon routes THIS connection's host sync
|
|
415
|
+
* into, or null against a daemon too old to say. Never a guess: a caller that
|
|
416
|
+
* gets null must fall back to deducing it, or offer nothing. */
|
|
417
|
+
syncDirName(): string | null;
|
|
418
|
+
/** Every pause this daemon is holding. */
|
|
419
|
+
listAgentPauses(): Promise<{
|
|
420
|
+
ok: true;
|
|
421
|
+
pauses: AgentPause[];
|
|
422
|
+
} | {
|
|
423
|
+
ok: false;
|
|
424
|
+
error: string;
|
|
425
|
+
}>;
|
|
426
|
+
/** Hold or release a pause on one owner's agent. `ok: false` is the daemon's
|
|
427
|
+
* considered refusal (it holds no pauses, or the ceiling is reached) -- a real
|
|
428
|
+
* answer, so it resolves rather than rejects; only a dropped connection
|
|
429
|
+
* rejects. Resolves with the COMPLETE set afterwards. */
|
|
430
|
+
setAgentPause(owner: string, agent: string, paused: boolean): Promise<{
|
|
431
|
+
ok: true;
|
|
432
|
+
pauses: AgentPause[];
|
|
433
|
+
} | {
|
|
434
|
+
ok: false;
|
|
435
|
+
error: string;
|
|
436
|
+
}>;
|
|
437
|
+
/** Ask the daemon to open a room. `ok: false` here is the daemon's CONSIDERED
|
|
438
|
+
* refusal (validation problems, or an unreachable participant) — a real answer,
|
|
439
|
+
* not a transport failure, so it resolves rather than rejects. Only a dropped
|
|
440
|
+
* connection while this is outstanding rejects (see `disconnect`). */
|
|
441
|
+
roomOpen(req: RoomOpenRequest): Promise<{
|
|
442
|
+
ok: true;
|
|
443
|
+
room: RoomSummary;
|
|
444
|
+
} | {
|
|
445
|
+
ok: false;
|
|
446
|
+
problems: string[];
|
|
447
|
+
}>;
|
|
448
|
+
/** The daemon's rooms, as last read — see sidecar.ts's `room-list-result` for
|
|
449
|
+
* why a store failure (`ok: false`) is kept distinct from a genuine empty list. */
|
|
450
|
+
roomList(): Promise<{
|
|
451
|
+
ok: true;
|
|
452
|
+
rooms: RoomSummary[];
|
|
453
|
+
} | {
|
|
454
|
+
ok: false;
|
|
455
|
+
error: string;
|
|
456
|
+
}>;
|
|
457
|
+
/** One room's summary, its messages, and what each turn cost (in turn
|
|
458
|
+
* order). `ok: true, room: null` is "no such room" (a considered answer);
|
|
459
|
+
* `ok: false` is a store failure — see sidecar.ts's `room-read-result` for
|
|
460
|
+
* why the two must not collapse into one. */
|
|
461
|
+
roomRead(roomId: string): Promise<{
|
|
462
|
+
ok: true;
|
|
463
|
+
room: RoomSummary | null;
|
|
464
|
+
messages: unknown[];
|
|
465
|
+
turnCosts: number[];
|
|
466
|
+
} | {
|
|
467
|
+
ok: false;
|
|
468
|
+
error: string;
|
|
469
|
+
}>;
|
|
470
|
+
/** Drive a room that is waiting on a MACHINE -- a participant whose machine
|
|
471
|
+
* dropped, or any room a daemon restart found mid-flight. Nothing else can
|
|
472
|
+
* move such a room: `roomOpen` refuses a room that exists and `roomAnswer`
|
|
473
|
+
* refuses a floor that is not a human's. See `room-resume` in sidecar.ts. */
|
|
474
|
+
roomResume(roomId: string): Promise<{
|
|
475
|
+
ok: true;
|
|
476
|
+
room: RoomSummary;
|
|
477
|
+
} | {
|
|
478
|
+
ok: false;
|
|
479
|
+
error: string;
|
|
480
|
+
}>;
|
|
481
|
+
/** The human's answer for one room turn.
|
|
482
|
+
*
|
|
483
|
+
* `addressed` is the participant this turn hands the floor to -- an id, already
|
|
484
|
+
* resolved against the room's membership by the caller. Omitted is an ordinary
|
|
485
|
+
* rotation turn, and is never sent as a field at all, so a daemon that predates
|
|
486
|
+
* the command sees exactly the message it always did. */
|
|
487
|
+
roomAnswer(roomId: string, participantId: string, text: string, addressed?: string): Promise<{
|
|
488
|
+
ok: true;
|
|
489
|
+
room: RoomSummary;
|
|
490
|
+
} | {
|
|
491
|
+
ok: false;
|
|
492
|
+
error: string;
|
|
493
|
+
}>;
|
|
494
|
+
/** Say something in a room whose floor is someone ELSE's.
|
|
495
|
+
*
|
|
496
|
+
* Not an answer: it appends to the transcript and moves nothing -- no turn is
|
|
497
|
+
* taken, the floor does not rotate, an outstanding hand-over is untouched.
|
|
498
|
+
* The next participant to speak reads it, which is the whole point. */
|
|
499
|
+
roomInterject(roomId: string, participantId: string, text: string): Promise<{
|
|
500
|
+
ok: true;
|
|
501
|
+
room: RoomSummary;
|
|
502
|
+
} | {
|
|
503
|
+
ok: false;
|
|
504
|
+
error: string;
|
|
505
|
+
}>;
|
|
506
|
+
/** End the room, on this person's word, whatever the rotation is doing.
|
|
507
|
+
*
|
|
508
|
+
* Idempotent: a room that is already closed answers with the close it already
|
|
509
|
+
* carries rather than recording a second one. */
|
|
510
|
+
roomClose(roomId: string, participantId: string, reason: string): Promise<{
|
|
511
|
+
ok: true;
|
|
512
|
+
room: RoomSummary;
|
|
513
|
+
} | {
|
|
514
|
+
ok: false;
|
|
515
|
+
error: string;
|
|
516
|
+
}>;
|
|
517
|
+
/** The room's living findings document -- what it has decided, as opposed to
|
|
518
|
+
* what was said (that is `roomRead`). A room that has recorded nothing answers
|
|
519
|
+
* with an empty document, which is a real answer, not an absence. */
|
|
520
|
+
roomFindings(roomId: string): Promise<{
|
|
521
|
+
ok: true;
|
|
522
|
+
findings: RoomFinding[];
|
|
523
|
+
} | {
|
|
524
|
+
ok: false;
|
|
525
|
+
error: string;
|
|
526
|
+
}>;
|
|
527
|
+
/** The person in the room recording, correcting or withdrawing ONE finding.
|
|
528
|
+
*
|
|
529
|
+
* Per-finding, never a whole-document write: a client that could replace the
|
|
530
|
+
* document would silently overwrite whatever an agent recorded between its
|
|
531
|
+
* read and its write. Answers with the document as it then stands. */
|
|
532
|
+
roomEditFinding(roomId: string, participantId: string, edit: RoomFindingEdit): Promise<{
|
|
533
|
+
ok: true;
|
|
534
|
+
findings: RoomFinding[];
|
|
535
|
+
} | {
|
|
536
|
+
ok: false;
|
|
537
|
+
error: string;
|
|
538
|
+
}>;
|
|
349
539
|
/** Directory NAMES under `path`, or the declared areas themselves when `path` is
|
|
350
540
|
* omitted. Names only: never files, contents or stats. Rejects with the sidecar's
|
|
351
541
|
* message (e.g. outside every allowed area). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
|