@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
package/dist/sidecar/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentTool, AgentEvent, PermissionDecision, SidecarRoots, DaemonRunActivity, DaemonRegistration, SidecarProcs, SidecarSessions } from '@corenel/protocol';
|
|
1
|
+
import type { AgentTool, AgentEvent, PermissionDecision, SidecarRoots, DaemonRunActivity, DaemonRegistration, AgentPause, HostSummary, SidecarProcs, SidecarSessions, RoomOpenRequest, RoomSummary, RoomFinding, RoomFindingEdit } from '@corenel/protocol';
|
|
2
2
|
import { type SidecarChannel, type SidecarMsg, type SidecarInfo, type SidecarRunner, type SidecarHostSync, type SidecarAcp } from '@corenel/protocol';
|
|
3
3
|
/** The payload of a `permission-ask` message, minus its `t` discriminant — derived
|
|
4
4
|
* from the wire protocol so this stays in lockstep with it automatically. */
|
|
@@ -61,6 +61,110 @@ export interface SidecarRunHub {
|
|
|
61
61
|
detach: () => void;
|
|
62
62
|
} | null;
|
|
63
63
|
}
|
|
64
|
+
/** The daemon's shared room service, behind the `room-*` messages. Declared HERE
|
|
65
|
+
* (harness-side), not imported from `@corenel/sidecar`, for the same
|
|
66
|
+
* dependency-direction reason as `SidecarAttendanceRegistry`/`SidecarRunHub`
|
|
67
|
+
* above: `packages/sidecar` depends on `packages/harness`, never the reverse.
|
|
68
|
+
* The concrete `RoomService` (packages/sidecar/src/runner/roomService.ts) has
|
|
69
|
+
* exactly the `open`/`list`/`read`/`answer` shape and is structurally
|
|
70
|
+
* assignable here once wrapped with `subscribe`.
|
|
71
|
+
*
|
|
72
|
+
* `subscribe` mirrors `SidecarRoots.subscribe`: ONE room service is shared by
|
|
73
|
+
* the whole daemon process (one `SidecarServer` per connection, per
|
|
74
|
+
* `packages/sidecar/src/server.ts`), so a room a different client is driving
|
|
75
|
+
* must still push `room-progress` to every attached connection, not just the
|
|
76
|
+
* one that asked. */
|
|
77
|
+
export interface SidecarRooms {
|
|
78
|
+
open(req: RoomOpenRequest): Promise<{
|
|
79
|
+
ok: true;
|
|
80
|
+
room: RoomSummary;
|
|
81
|
+
} | {
|
|
82
|
+
ok: false;
|
|
83
|
+
problems: string[];
|
|
84
|
+
}>;
|
|
85
|
+
list(): Promise<RoomSummary[]>;
|
|
86
|
+
read(roomId: string): Promise<{
|
|
87
|
+
room: RoomSummary;
|
|
88
|
+
messages: unknown[];
|
|
89
|
+
turnCosts: number[];
|
|
90
|
+
} | null>;
|
|
91
|
+
/** `addressed` is who this human turn hands the floor to, resolved to an
|
|
92
|
+
* id. Omitted is an ordinary rotation turn. */
|
|
93
|
+
answer(roomId: string, participantId: string, text: string, addressed?: string): Promise<RoomSummary>;
|
|
94
|
+
/** Drive a room whose floor is an AGENT's -- a dropped machine's park, or
|
|
95
|
+
* anything a restart found mid-flight. See `room-resume` in sidecar.ts for
|
|
96
|
+
* why nothing else can move such a room. */
|
|
97
|
+
resume(roomId: string): Promise<RoomSummary>;
|
|
98
|
+
/** A human's words in a room whose floor is someone else's. Appends to the
|
|
99
|
+
* transcript and moves nothing -- see `room-interject` in sidecar.ts. */
|
|
100
|
+
interject(roomId: string, participantId: string, text: string): Promise<RoomSummary>;
|
|
101
|
+
/** End the room on a person's word, whatever the rotation is doing.
|
|
102
|
+
* Idempotent: an already-closed room answers with the close it already has. */
|
|
103
|
+
close(roomId: string, participantId: string, reason: string): Promise<RoomSummary>;
|
|
104
|
+
/** The room's living findings document. Empty for a room that has recorded
|
|
105
|
+
* nothing; throws only when the document exists and could not be read. */
|
|
106
|
+
findings(roomId: string): Promise<RoomFinding[]>;
|
|
107
|
+
/** Record, revise or withdraw ONE finding on a person's word, returning the
|
|
108
|
+
* document as it then stands. Throws for a refused edit (a closed room, a
|
|
109
|
+
* participant who is not a human member, an edit the rules reject) -- the
|
|
110
|
+
* caller renders the reason. */
|
|
111
|
+
editFinding(roomId: string, participantId: string, edit: RoomFindingEdit): Promise<RoomFinding[]>;
|
|
112
|
+
subscribe(cb: (room: RoomSummary) => void): () => void;
|
|
113
|
+
}
|
|
114
|
+
/** The daemon's pause overrides, behind the `agent-pause-*` messages.
|
|
115
|
+
*
|
|
116
|
+
* Declared HERE (harness-side), not imported from `@corenel/sidecar`, for the
|
|
117
|
+
* same dependency-direction reason as `SidecarAttendanceRegistry` /
|
|
118
|
+
* `SidecarRunHub` / `SidecarRooms` above: `packages/sidecar` depends on
|
|
119
|
+
* `packages/harness`, never the reverse. The daemon's concrete
|
|
120
|
+
* `AgentPauseStore` (packages/sidecar/src/runner/pauseStore.ts) has strictly
|
|
121
|
+
* more members and is structurally assignable.
|
|
122
|
+
*
|
|
123
|
+
* `set` returns the COMPLETE set afterwards so a client never reconciles a
|
|
124
|
+
* delta, and `refresh` is what re-derives the daemon's registrations, so a
|
|
125
|
+
* paused agent's row updates on every connected client rather than only on the
|
|
126
|
+
* one that asked. */
|
|
127
|
+
export interface SidecarPauses {
|
|
128
|
+
list(): AgentPause[];
|
|
129
|
+
set(owner: string, agent: string, paused: boolean): Promise<AgentPause[]>;
|
|
130
|
+
/** Re-derive and republish what this daemon will fire. */
|
|
131
|
+
refresh(): void;
|
|
132
|
+
}
|
|
133
|
+
/** The daemon's synced-host directories, behind the `hosts-*` messages.
|
|
134
|
+
*
|
|
135
|
+
* Declared HERE (harness-side) for the same dependency-direction reason as
|
|
136
|
+
* `SidecarPauses` above: `packages/sidecar` depends on `packages/harness`,
|
|
137
|
+
* never the reverse, so the harness knows the SHAPE and nothing about the
|
|
138
|
+
* manifest file or the filesystem underneath it.
|
|
139
|
+
*
|
|
140
|
+
* `forget` is the only destructive verb in this interface, and its refusal arm
|
|
141
|
+
* is load-bearing: a connected directory must be refused HERE, on the daemon,
|
|
142
|
+
* because a client can send any `dirName` it likes regardless of what its UI
|
|
143
|
+
* offered. `list` reports `connected` from the same live set, so the two can
|
|
144
|
+
* never disagree.
|
|
145
|
+
*
|
|
146
|
+
* `attach` is how that live set is kept: the harness calls it once per
|
|
147
|
+
* connection, as soon as this daemon has resolved which directory the
|
|
148
|
+
* connection belongs to, and calls the returned function when the channel
|
|
149
|
+
* closes. One implementation instance is shared by every per-connection
|
|
150
|
+
* `SidecarServer` (exactly like `rooms`/`runs`); two instances would each see
|
|
151
|
+
* half the connections and each would happily delete the other half's trees. */
|
|
152
|
+
export interface SidecarHosts {
|
|
153
|
+
/** Every manifest entry, with `self` left false -- the harness stamps it from
|
|
154
|
+
* the identity THIS connection authenticated with. */
|
|
155
|
+
list(): Promise<HostSummary[]>;
|
|
156
|
+
/** Remove one synced tree AND its manifest entry together. `ok: false` is a
|
|
157
|
+
* considered refusal (unknown name, a client connected as it, a removal that
|
|
158
|
+
* failed), never a thrown error. */
|
|
159
|
+
forget(dirName: string): Promise<{
|
|
160
|
+
ok: true;
|
|
161
|
+
} | {
|
|
162
|
+
ok: false;
|
|
163
|
+
reason: string;
|
|
164
|
+
}>;
|
|
165
|
+
/** Note that a connection is attached as `dirName`; returns its detach. */
|
|
166
|
+
attach(dirName: string): () => void;
|
|
167
|
+
}
|
|
64
168
|
export interface SidecarServerOptions {
|
|
65
169
|
channel: SidecarChannel;
|
|
66
170
|
/** The pairing token a connecting host must present. */
|
|
@@ -93,6 +197,11 @@ export interface SidecarServerOptions {
|
|
|
93
197
|
* areas (--allow-add-under); without it this sidecar serves no roots-browse /
|
|
94
198
|
* roots-add and advertises no 'add-roots'. */
|
|
95
199
|
roots?: SidecarRoots;
|
|
200
|
+
/** The daemon's shared room service, behind the `room-*` messages. Present
|
|
201
|
+
* only when the daemon can actually drive a room turn (real agent deps
|
|
202
|
+
* resolved). Absent means no room can be opened/listed/read/answered here,
|
|
203
|
+
* and `welcome.features` omits `'rooms'` -- mirrors `roots`/`procs`. */
|
|
204
|
+
rooms?: SidecarRooms;
|
|
96
205
|
/** The daemon's process table, behind `proc-*`. Present ONLY when the operator
|
|
97
206
|
* allowed shell: a streaming spawn is the same capability as the one-shot
|
|
98
207
|
* `sidecar_shell_exec`, held open, so it must not appear on a daemon whose
|
|
@@ -124,6 +233,35 @@ export interface SidecarServerOptions {
|
|
|
124
233
|
* `@corenel/sidecar` here -- the harness stays ignorant of the manifest and the
|
|
125
234
|
* filesystem; only the shape from `@corenel/protocol` is known. */
|
|
126
235
|
hostSync?: SidecarHostSync;
|
|
236
|
+
/** The daemon's pause overrides, behind `agent-pause-*`. Absent means this
|
|
237
|
+
* daemon holds none: it advertises no 'agent-pause' feature and answers every
|
|
238
|
+
* pause message with a refusal that says so, rather than accepting a pause it
|
|
239
|
+
* would never honour. */
|
|
240
|
+
pauses?: SidecarPauses;
|
|
241
|
+
/** The daemon's synced-host directories, behind `hosts-*`. Absent means this
|
|
242
|
+
* daemon exposes no host administration: it advertises no 'hosts-admin'
|
|
243
|
+
* feature and answers every hosts message with a refusal that says so,
|
|
244
|
+
* rather than silently reporting an empty estate. */
|
|
245
|
+
hosts?: SidecarHosts;
|
|
246
|
+
/**
|
|
247
|
+
* The synced directory name this daemon routes THIS client's host sync into,
|
|
248
|
+
* echoed back in the `welcome` so the client can tell which registrations are
|
|
249
|
+
* its own (see `welcome.dirName` in sidecar.ts).
|
|
250
|
+
*
|
|
251
|
+
* Awaited before the welcome is sent -- unlike `onClient`, which is
|
|
252
|
+
* deliberately fire-and-forget and must never delay the handshake. The wait is
|
|
253
|
+
* bounded, and every failure mode (a throw, a rejection, a null, a timeout)
|
|
254
|
+
* ends the same way: the welcome goes out with no `dirName`, which an older
|
|
255
|
+
* client already handles because an older daemon never sent one.
|
|
256
|
+
*
|
|
257
|
+
* It resolves the name from the AUTHENTICATED `clientId` this connection
|
|
258
|
+
* presented. It must never accept a name the client asked for -- that would
|
|
259
|
+
* reintroduce the client-chosen destination `host-sync-put` exists to refuse.
|
|
260
|
+
*/
|
|
261
|
+
clientDirName?: (identity: {
|
|
262
|
+
clientId: string;
|
|
263
|
+
name: string;
|
|
264
|
+
}) => Promise<string | null>;
|
|
127
265
|
}
|
|
128
266
|
export declare class SidecarServer {
|
|
129
267
|
private readonly ch;
|
|
@@ -144,10 +282,20 @@ export declare class SidecarServer {
|
|
|
144
282
|
* connection carries no identity to attribute files to" (an older client).
|
|
145
283
|
* Either way, host-sync must be rejected; see `requireHostSyncIdentity`. */
|
|
146
284
|
private clientId?;
|
|
285
|
+
/** The friendly label from the same `hello`, kept beside `clientId` so the
|
|
286
|
+
* dirName resolver is handed the identity the manifest keys on. */
|
|
287
|
+
private clientName?;
|
|
147
288
|
/** Detach function for this connection's attendance attachment, set on a
|
|
148
289
|
* successful `hello` when `opts.attendance` is wired. Called once, on channel
|
|
149
290
|
* close, so a dead connection stops receiving/counting toward asks. */
|
|
150
291
|
private attendedDetach?;
|
|
292
|
+
/** The synced directory THIS connection belongs to, once resolved -- the same
|
|
293
|
+
* value echoed in `welcome.dirName`. Retained so `hosts-list` can stamp
|
|
294
|
+
* `self` and `hosts-forget` can refuse the caller's own tree from the
|
|
295
|
+
* daemon's own knowledge rather than from anything the client claimed. */
|
|
296
|
+
private dirName?;
|
|
297
|
+
/** Detach for this connection's entry in the shared hosts live set. */
|
|
298
|
+
private hostsDetach?;
|
|
151
299
|
/** Detach callbacks for runs this connection is watching, so a dropped socket
|
|
152
300
|
* stops the hub fanning out into a dead channel. */
|
|
153
301
|
private readonly runDetachers;
|
|
@@ -161,6 +309,10 @@ export declare class SidecarServer {
|
|
|
161
309
|
constructor(opts: SidecarServerOptions);
|
|
162
310
|
private onMessage;
|
|
163
311
|
private onHello;
|
|
312
|
+
/** Resolve the connection's synced directory name, or null for every failure
|
|
313
|
+
* mode there is (throw, rejection, non-string, timeout). */
|
|
314
|
+
private resolveDirName;
|
|
315
|
+
private sendWelcome;
|
|
164
316
|
/** Proxy a host HTTP request server-side. Restricted to LOOPBACK targets — the
|
|
165
317
|
* sidecar must never be usable as an SSRF pivot to internal/metadata hosts. The
|
|
166
318
|
* response streams back (http-res -> http-chunk* -> http-end). */
|
|
@@ -225,6 +377,12 @@ export declare class SidecarServer {
|
|
|
225
377
|
/** One run's kept events. Empty when they were never kept — the ordinary
|
|
226
378
|
* case, and a state the caller renders rather than treats as a failure. */
|
|
227
379
|
private onRunTranscript;
|
|
380
|
+
/** What one of this caller's crew agents has LEARNED, from the daemon's own
|
|
381
|
+
* copy. Same owner-scoping shape as `onRunHistory`: the identity handed down
|
|
382
|
+
* is the untrusted `{ clientId }` this connection authenticated with, and
|
|
383
|
+
* the runner resolves it through the hosts manifest before it ever touches
|
|
384
|
+
* a path. */
|
|
385
|
+
private onCrewMemory;
|
|
228
386
|
private onRun;
|
|
229
387
|
/** The identity to attribute a host-sync write to. Returns either the
|
|
230
388
|
* authenticated `clientId`, or an error string explaining why there is none --
|
|
@@ -235,6 +393,32 @@ export declare class SidecarServer {
|
|
|
235
393
|
private requireHostSyncIdentity;
|
|
236
394
|
private onRootsBrowse;
|
|
237
395
|
private onRootsAdd;
|
|
396
|
+
/** Every synced host directory, with `self` stamped from THIS connection's
|
|
397
|
+
* own resolved directory -- never from anything the client sent. */
|
|
398
|
+
private onHostsList;
|
|
399
|
+
private stampSelf;
|
|
400
|
+
/**
|
|
401
|
+
* Delete one synced tree and its manifest entry.
|
|
402
|
+
*
|
|
403
|
+
* THE REFUSALS ARE THE FEATURE. A client's UI is not a guard -- this message
|
|
404
|
+
* carries a `dirName` the client chose, so both rules that make the operation
|
|
405
|
+
* safe are enforced here: the caller's OWN directory is refused outright, and
|
|
406
|
+
* the port refuses any directory a client is attached as. The first is
|
|
407
|
+
* checked here rather than left to the second because it is answerable from
|
|
408
|
+
* this connection's own identity and yields the more useful sentence.
|
|
409
|
+
*/
|
|
410
|
+
private onHostsForget;
|
|
411
|
+
private onAgentPauseList;
|
|
412
|
+
private onAgentPauseSet;
|
|
413
|
+
private onRoomOpen;
|
|
414
|
+
private onRoomList;
|
|
415
|
+
private onRoomRead;
|
|
416
|
+
private onRoomResume;
|
|
417
|
+
private onRoomAnswer;
|
|
418
|
+
private onRoomInterject;
|
|
419
|
+
private onRoomClose;
|
|
420
|
+
private onRoomFindings;
|
|
421
|
+
private onRoomFindingEdit;
|
|
238
422
|
private onHostSyncPut;
|
|
239
423
|
private onHostSyncDelete;
|
|
240
424
|
/** A ToolContext whose capabilities proxy back to the host (persist-nothing).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sidecar/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,EAEmC,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sidecar/server.ts"],"names":[],"mappings":"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"}
|