@stratusagent/plugins 0.11.3 → 0.11.5
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/contributions.d.ts +102 -0
- package/dist/contributions.d.ts.map +1 -0
- package/dist/contributions.js +238 -0
- package/dist/contributions.js.map +1 -0
- package/dist/home.d.ts +9 -0
- package/dist/home.d.ts.map +1 -0
- package/dist/home.js +19 -0
- package/dist/home.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +40 -16
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +56 -36
- package/dist/loader.js.map +1 -1
- package/dist/manifest.d.ts +22 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +55 -2
- package/dist/manifest.js.map +1 -1
- package/dist/provenance.d.ts +49 -26
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +126 -49
- package/dist/provenance.js.map +1 -1
- package/dist/workspace.d.ts +52 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +98 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +3 -3
package/dist/provenance.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { constants } from 'node:fs';
|
|
2
|
-
import { lstat, mkdir, open,
|
|
2
|
+
import { lstat, mkdir, open, readFile, realpath, stat } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { isTrustLevel, leastTrusted } from '@stratusagent/core';
|
|
5
5
|
/** The ledger's filename inside an agent's workspace. Exported so `fs.write` can refuse to write it. */
|
|
@@ -130,12 +130,27 @@ export const ledgerTrustOfContent = (raw) => {
|
|
|
130
130
|
};
|
|
131
131
|
/**
|
|
132
132
|
* The durable ledger, one append-only JSONL file per agent at
|
|
133
|
-
* `<
|
|
134
|
-
*
|
|
135
|
-
*
|
|
133
|
+
* `<the agent's workspace>/fs-provenance.jsonl`, owner-only. Each record is
|
|
134
|
+
* one `O_APPEND` write, so processes that share an agent — the daemon and a
|
|
135
|
+
* `stratus run` — interleave records rather than overwrite each other.
|
|
136
|
+
*
|
|
137
|
+
* Takes resolvers rather than a root, because where an agent's workspace
|
|
138
|
+
* is is the host's to say: this package depends on `core` and `agents` only
|
|
139
|
+
* and cannot see the `~/.stratus` layout, which is exactly why it must not
|
|
140
|
+
* spell a depth. See `workspaceResolver`.
|
|
141
|
+
*
|
|
142
|
+
* Two of them, and the split is the point. Reading a ledger only needs the
|
|
143
|
+
* *name* of a file that may not exist — every `fs.read`, `fs.list` and
|
|
144
|
+
* `fs.search` takes a snapshot before it does anything — while recording a
|
|
145
|
+
* write needs the directory to be there and owner-only. Asking the
|
|
146
|
+
* preparing one on a read would let a workspace that cannot be made stop
|
|
147
|
+
* reads whose own roots are perfectly readable, and which could not have
|
|
148
|
+
* had a ledger at the blocked path anyway. `prepareFor` defaults to
|
|
149
|
+
* `workspaceFor` for a host that wires this by hand with one resolver.
|
|
136
150
|
*/
|
|
137
|
-
export const createFileLedger = (
|
|
138
|
-
const ledgerPath = (agentId) => path.join(
|
|
151
|
+
export const createFileLedger = (workspaceFor, prepareFor = workspaceFor) => {
|
|
152
|
+
const ledgerPath = (agentId) => path.join(workspaceFor(agentId), LEDGER_FILENAME);
|
|
153
|
+
const ledgerPathForWrite = (agentId) => path.join(prepareFor(agentId), LEDGER_FILENAME);
|
|
139
154
|
const read = async (agentId) => {
|
|
140
155
|
const filePath = ledgerPath(agentId);
|
|
141
156
|
try {
|
|
@@ -165,7 +180,7 @@ export const createFileLedger = (workspaceRoot) => {
|
|
|
165
180
|
// A clean write records nothing — see `TaintedWriteLedger`.
|
|
166
181
|
return;
|
|
167
182
|
}
|
|
168
|
-
const filePath =
|
|
183
|
+
const filePath = ledgerPathForWrite(agentId);
|
|
169
184
|
await mkdir(path.dirname(filePath), { recursive: true, mode: 0o700 });
|
|
170
185
|
// Read and appended through ONE descriptor. A ledger reached through
|
|
171
186
|
// a link (a relocated workspace, a relocated file — both supported)
|
|
@@ -203,38 +218,98 @@ export const createFileLedger = (workspaceRoot) => {
|
|
|
203
218
|
};
|
|
204
219
|
/**
|
|
205
220
|
* Whether `absolutePath` is an agent's ledger — exactly
|
|
206
|
-
* `<
|
|
207
|
-
* one path `fs.write` refuses. Exactly that depth, not any
|
|
208
|
-
* the name: a project an agent keeps under its workspace
|
|
209
|
-
* have a file called `fs-provenance.
|
|
221
|
+
* `<workspace>/fs-provenance.jsonl`, for any of the workspaces given —
|
|
222
|
+
* which is the one path `fs.write` refuses. Exactly that depth, not any
|
|
223
|
+
* descendant with the name: a project an agent keeps under its workspace
|
|
224
|
+
* may legitimately have a file called `fs-provenance.jsonl` of its own.
|
|
210
225
|
*
|
|
211
|
-
* `
|
|
212
|
-
* —
|
|
213
|
-
* judged arrives canonical from the root resolver, and a workspace an
|
|
226
|
+
* `workspaces` are the directories themselves, and every spelling worth
|
|
227
|
+
* checking — each configured path and its canonical form — because the path
|
|
228
|
+
* being judged arrives canonical from the root resolver, and a workspace an
|
|
214
229
|
* operator moved behind a symlink would otherwise compare as outside.
|
|
230
|
+
*
|
|
231
|
+
* Directories, not a root to join an id onto: the depth from any root to an
|
|
232
|
+
* agent's workspace is the host's business, and this package cannot see it.
|
|
233
|
+
* When that depth lived here it was `<root>/<agent>/`, and the move to
|
|
234
|
+
* `agents/<id>/workspace/` would have left this guard silently matching
|
|
235
|
+
* nothing — the one failure mode it exists to prevent.
|
|
215
236
|
*/
|
|
216
|
-
export const isLedgerPath = (
|
|
217
|
-
const relative = path.relative(
|
|
237
|
+
export const isLedgerPath = (workspaces, absolutePath) => workspaces.some((workspace) => {
|
|
238
|
+
const relative = path.relative(workspace, absolutePath);
|
|
218
239
|
if (relative.length === 0 || relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
219
240
|
return false;
|
|
220
241
|
}
|
|
221
242
|
const segments = relative.split(path.sep);
|
|
222
|
-
return segments.length ===
|
|
243
|
+
return segments.length === 1 && segments[0] === LEDGER_FILENAME;
|
|
223
244
|
});
|
|
224
245
|
const identityKey = (identity) => `${identity.dev}:${identity.ino}`;
|
|
225
|
-
|
|
226
|
-
|
|
246
|
+
/**
|
|
247
|
+
* Roots whose immediate children are workspaces, judged lexically.
|
|
248
|
+
*
|
|
249
|
+
* This is the `workspaceRoot` contract and nothing else: one directory per
|
|
250
|
+
* agent directly under the root. It is kept because a workspace that does
|
|
251
|
+
* not exist *yet* still has a reserved ledger path, and enumerating what is
|
|
252
|
+
* on disk cannot name it — so an agent's very first `fs.write` could create
|
|
253
|
+
* or clobber `<root>/<id>/fs-provenance.jsonl` before any tainted write had
|
|
254
|
+
* made the directory.
|
|
255
|
+
*
|
|
256
|
+
* The host's own layout gets no such rule, deliberately. There the
|
|
257
|
+
* workspace sits inside `agents/<id>/`, so a root wide enough to reach an
|
|
258
|
+
* agent that has no directory yet already reaches every other agent's
|
|
259
|
+
* `whitelist.json` and `sessions.db` — there is nothing left for this to
|
|
260
|
+
* save. Under a configured root, which holds workspaces and nothing else,
|
|
261
|
+
* the reason the rule existed still holds.
|
|
262
|
+
*/
|
|
263
|
+
const isLedgerUnderRoot = (roots, absolutePath) => roots.some((root) => {
|
|
264
|
+
const relative = path.relative(root, absolutePath);
|
|
265
|
+
if (path.isAbsolute(relative) || relative === '..' || relative.startsWith(`..${path.sep}`)) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
const segments = relative.split(path.sep);
|
|
269
|
+
return segments.length === 2 && segments[1] === LEDGER_FILENAME;
|
|
270
|
+
});
|
|
271
|
+
/**
|
|
272
|
+
* Whether a canonicalization failure is one that *answers*: nothing is at
|
|
273
|
+
* that path, or it leads nowhere at all.
|
|
274
|
+
*
|
|
275
|
+
* Every other failure is this guard deciding a question by not being able
|
|
276
|
+
* to ask it, and in the direction that destroys something. `EIO`, `EACCES`
|
|
277
|
+
* or `EMFILE` on one workspace drops that agent's ledger out of the set
|
|
278
|
+
* below, and the set is the whole of what the guard refuses — so a write
|
|
279
|
+
* aimed at `fs-provenance.jsonl` would pass and truncate the file this
|
|
280
|
+
* exists to protect. The caller is a single tool call: propagating costs
|
|
281
|
+
* that call, which is the cheaper of the two answers by a long way.
|
|
282
|
+
*/
|
|
283
|
+
const holdsNoLedger = (error) => {
|
|
284
|
+
const code = error.code;
|
|
285
|
+
return code === 'ENOENT' || code === 'ENOTDIR' || code === 'ELOOP';
|
|
286
|
+
};
|
|
287
|
+
export const ledgerGuard = async (workspaces, roots = []) => {
|
|
288
|
+
if (workspaces.length === 0 && roots.length === 0) {
|
|
227
289
|
return async () => false;
|
|
228
290
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
291
|
+
// Every spelling of every agent's workspace: the path the host gave and
|
|
292
|
+
// its canonical form, because the path being judged arrives canonical
|
|
293
|
+
// from the root resolver and a workspace behind a link would otherwise
|
|
294
|
+
// compare as outside.
|
|
295
|
+
const spellings = [];
|
|
296
|
+
// Both spellings of each root too, for the same reason the workspaces
|
|
297
|
+
// have both: the path being judged arrives canonical from the resolver.
|
|
298
|
+
const rootSpellings = [];
|
|
299
|
+
for (const root of roots) {
|
|
300
|
+
rootSpellings.push(root);
|
|
301
|
+
try {
|
|
302
|
+
const canonical = await realpath(root);
|
|
303
|
+
if (canonical !== root) {
|
|
304
|
+
rootSpellings.push(canonical);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
if (!holdsNoLedger(error)) {
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
// Not there yet: only the spelling the operator gave.
|
|
234
312
|
}
|
|
235
|
-
}
|
|
236
|
-
catch {
|
|
237
|
-
// Not there yet: only the configured spelling, and no agents to list.
|
|
238
313
|
}
|
|
239
314
|
const ledgers = new Set();
|
|
240
315
|
// And the files themselves, by identity: a hard link to a ledger from
|
|
@@ -242,39 +317,41 @@ export const ledgerGuard = async (workspaceRoot) => {
|
|
|
242
317
|
// alone, and is the same bytes. Plain numbers, like the resolver's
|
|
243
318
|
// `identity`, so the two sides of a comparison round the same way.
|
|
244
319
|
const identities = new Set();
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
if (!entry.isDirectory() && !entry.isSymbolicLink()) {
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
const lexical = path.join(workspaceRoot, entry.name, LEDGER_FILENAME);
|
|
257
|
-
// Two canonical spellings, because either component can be a link: the
|
|
258
|
-
// agent directory (`ava -> /data/ava`, judged even before the ledger
|
|
259
|
-
// exists there) and the ledger file itself (`fs-provenance.jsonl ->
|
|
260
|
-
// /data/ava-ledger.jsonl`, whose target is what the resolver returns
|
|
261
|
-
// and what a truncating write would empty).
|
|
320
|
+
for (const workspace of workspaces) {
|
|
321
|
+
spellings.push(workspace);
|
|
322
|
+
// Two canonical spellings, because either the workspace directory or
|
|
323
|
+
// the ledger file can be a link: the directory (`ava/workspace ->
|
|
324
|
+
// /data/ava`, judged even before the ledger exists there) and the file
|
|
325
|
+
// itself (`fs-provenance.jsonl -> /data/ava-ledger.jsonl`, whose target
|
|
326
|
+
// is what the resolver returns and what a truncating write would
|
|
327
|
+
// empty).
|
|
262
328
|
try {
|
|
263
|
-
|
|
329
|
+
const canonical = await realpath(workspace);
|
|
330
|
+
if (canonical !== workspace) {
|
|
331
|
+
spellings.push(canonical);
|
|
332
|
+
}
|
|
333
|
+
ledgers.add(path.join(canonical, LEDGER_FILENAME));
|
|
264
334
|
}
|
|
265
|
-
catch {
|
|
266
|
-
|
|
335
|
+
catch (error) {
|
|
336
|
+
if (!holdsNoLedger(error)) {
|
|
337
|
+
throw error;
|
|
338
|
+
}
|
|
339
|
+
// Not there yet, or a dangling link: holds no ledger.
|
|
267
340
|
}
|
|
341
|
+
const lexical = path.join(workspace, LEDGER_FILENAME);
|
|
268
342
|
try {
|
|
269
343
|
ledgers.add(await realpath(lexical));
|
|
270
344
|
identities.add(identityKey(await stat(lexical)));
|
|
271
345
|
}
|
|
272
|
-
catch {
|
|
346
|
+
catch (error) {
|
|
347
|
+
if (!holdsNoLedger(error)) {
|
|
348
|
+
throw error;
|
|
349
|
+
}
|
|
273
350
|
// No ledger there yet, or a dangling link: nothing to protect.
|
|
274
351
|
}
|
|
275
352
|
}
|
|
276
353
|
return async (absolutePath, identity) => {
|
|
277
|
-
if (isLedgerPath(
|
|
354
|
+
if (isLedgerPath(spellings, absolutePath) || isLedgerUnderRoot(rootSpellings, absolutePath) || ledgers.has(absolutePath)) {
|
|
278
355
|
return true;
|
|
279
356
|
}
|
|
280
357
|
if (identities.size === 0) {
|
package/dist/provenance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AgentWorkspaces } from '@stratusagent/core';
|
|
2
|
+
/**
|
|
3
|
+
* How a plugin finds an agent's workspace, from whichever of the two the
|
|
4
|
+
* host gave it.
|
|
5
|
+
*
|
|
6
|
+
* One implementation because there used to be five. Every plugin that
|
|
7
|
+
* writes a file was handed a `workspaceRoot` and appended the agent id to
|
|
8
|
+
* it, so each of them held a copy of the layout — and all five had to
|
|
9
|
+
* change when the workspace moved into the agent's own state directory,
|
|
10
|
+
* which is the cost that key was introduced to avoid and did not.
|
|
11
|
+
*
|
|
12
|
+
* An explicitly configured `workspaceRoot` wins, and the order matters:
|
|
13
|
+
* the loader no longer fills that key with the host's answer — the seam
|
|
14
|
+
* *is* the host's answer — so a value there is one an operator wrote, and
|
|
15
|
+
* relocating a workspace by writing it down is a thing they are documented
|
|
16
|
+
* to be able to do. Under it the old contract still holds: one directory
|
|
17
|
+
* per agent directly under the configured root, which is also what a host
|
|
18
|
+
* wiring a plugin by hand with no layout of its own supplies.
|
|
19
|
+
*
|
|
20
|
+
* Undefined means this host gave the plugin nowhere to write. A caller
|
|
21
|
+
* that needs a path must fail the call naming what is missing rather than
|
|
22
|
+
* choosing a directory of its own.
|
|
23
|
+
*/
|
|
24
|
+
export declare const workspaceResolver: (workspaces: AgentWorkspaces | undefined, workspaceRoot: string | undefined) => ((agentId: string) => string) | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* The same, for a caller that is about to write: the host creates the
|
|
27
|
+
* directory and settles its permissions before answering.
|
|
28
|
+
*
|
|
29
|
+
* Asked only by the call that needs the directory, never by one that only
|
|
30
|
+
* needs the name. Resolving is free; preparing is not, and it can fail —
|
|
31
|
+
* `agents/<id>/workspace` may be unmakeable — so a `browser.goto`, a
|
|
32
|
+
* `fs.read`'s ledger lookup, or a tool result that turned out to be text
|
|
33
|
+
* must not go down with it.
|
|
34
|
+
*
|
|
35
|
+
* A configured `workspaceRoot` is not a state directory, so there is
|
|
36
|
+
* nothing for the host to secure under it and the two answers are the
|
|
37
|
+
* same: plugins already make what they need beneath it.
|
|
38
|
+
*/
|
|
39
|
+
export declare const workspacePreparer: (workspaces: AgentWorkspaces | undefined, workspaceRoot: string | undefined) => ((agentId: string) => string) | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Every agent workspace on this host, for the guard that has to recognise
|
|
42
|
+
* any agent's file rather than the caller's — see `ledgerGuard`.
|
|
43
|
+
*
|
|
44
|
+
* Same precedence as `workspaceResolver`: a configured root's own entries
|
|
45
|
+
* are the agents, which is what reading `workspaceRoot` as a root means,
|
|
46
|
+
* and the seam answers otherwise. A root that is not there yet holds no
|
|
47
|
+
* agents rather than failing, because a guard runs before the first write
|
|
48
|
+
* as well as after it — but only a root that is genuinely absent. See the
|
|
49
|
+
* catch below for why every other failure has to reach the caller.
|
|
50
|
+
*/
|
|
51
|
+
export declare const allAgentWorkspaces: (workspaces: AgentWorkspaces | undefined, workspaceRoot: string | undefined) => Promise<readonly string[]>;
|
|
52
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,eAAe,GAAG,SAAS,EACvC,eAAe,MAAM,GAAG,SAAS,KAChC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SASlC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,eAAe,GAAG,SAAS,EACvC,eAAe,MAAM,GAAG,SAAS,KAChC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SASlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,eAAe,GAAG,SAAS,EACvC,eAAe,MAAM,GAAG,SAAS,KAChC,OAAO,CAAC,SAAS,MAAM,EAAE,CA0B3B,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* How a plugin finds an agent's workspace, from whichever of the two the
|
|
5
|
+
* host gave it.
|
|
6
|
+
*
|
|
7
|
+
* One implementation because there used to be five. Every plugin that
|
|
8
|
+
* writes a file was handed a `workspaceRoot` and appended the agent id to
|
|
9
|
+
* it, so each of them held a copy of the layout — and all five had to
|
|
10
|
+
* change when the workspace moved into the agent's own state directory,
|
|
11
|
+
* which is the cost that key was introduced to avoid and did not.
|
|
12
|
+
*
|
|
13
|
+
* An explicitly configured `workspaceRoot` wins, and the order matters:
|
|
14
|
+
* the loader no longer fills that key with the host's answer — the seam
|
|
15
|
+
* *is* the host's answer — so a value there is one an operator wrote, and
|
|
16
|
+
* relocating a workspace by writing it down is a thing they are documented
|
|
17
|
+
* to be able to do. Under it the old contract still holds: one directory
|
|
18
|
+
* per agent directly under the configured root, which is also what a host
|
|
19
|
+
* wiring a plugin by hand with no layout of its own supplies.
|
|
20
|
+
*
|
|
21
|
+
* Undefined means this host gave the plugin nowhere to write. A caller
|
|
22
|
+
* that needs a path must fail the call naming what is missing rather than
|
|
23
|
+
* choosing a directory of its own.
|
|
24
|
+
*/
|
|
25
|
+
export const workspaceResolver = (workspaces, workspaceRoot) => {
|
|
26
|
+
if (workspaceRoot !== undefined && workspaceRoot.length > 0) {
|
|
27
|
+
const root = workspaceRoot;
|
|
28
|
+
return (agentId) => path.join(root, agentId);
|
|
29
|
+
}
|
|
30
|
+
if (workspaces !== undefined) {
|
|
31
|
+
return (agentId) => workspaces.forAgent(agentId);
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The same, for a caller that is about to write: the host creates the
|
|
37
|
+
* directory and settles its permissions before answering.
|
|
38
|
+
*
|
|
39
|
+
* Asked only by the call that needs the directory, never by one that only
|
|
40
|
+
* needs the name. Resolving is free; preparing is not, and it can fail —
|
|
41
|
+
* `agents/<id>/workspace` may be unmakeable — so a `browser.goto`, a
|
|
42
|
+
* `fs.read`'s ledger lookup, or a tool result that turned out to be text
|
|
43
|
+
* must not go down with it.
|
|
44
|
+
*
|
|
45
|
+
* A configured `workspaceRoot` is not a state directory, so there is
|
|
46
|
+
* nothing for the host to secure under it and the two answers are the
|
|
47
|
+
* same: plugins already make what they need beneath it.
|
|
48
|
+
*/
|
|
49
|
+
export const workspacePreparer = (workspaces, workspaceRoot) => {
|
|
50
|
+
if (workspaceRoot !== undefined && workspaceRoot.length > 0) {
|
|
51
|
+
const root = workspaceRoot;
|
|
52
|
+
return (agentId) => path.join(root, agentId);
|
|
53
|
+
}
|
|
54
|
+
if (workspaces !== undefined) {
|
|
55
|
+
return (agentId) => workspaces.prepare(agentId);
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Every agent workspace on this host, for the guard that has to recognise
|
|
61
|
+
* any agent's file rather than the caller's — see `ledgerGuard`.
|
|
62
|
+
*
|
|
63
|
+
* Same precedence as `workspaceResolver`: a configured root's own entries
|
|
64
|
+
* are the agents, which is what reading `workspaceRoot` as a root means,
|
|
65
|
+
* and the seam answers otherwise. A root that is not there yet holds no
|
|
66
|
+
* agents rather than failing, because a guard runs before the first write
|
|
67
|
+
* as well as after it — but only a root that is genuinely absent. See the
|
|
68
|
+
* catch below for why every other failure has to reach the caller.
|
|
69
|
+
*/
|
|
70
|
+
export const allAgentWorkspaces = async (workspaces, workspaceRoot) => {
|
|
71
|
+
if (workspaceRoot === undefined || workspaceRoot.length === 0) {
|
|
72
|
+
return workspaces !== undefined ? workspaces.all() : [];
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const entries = await readdir(workspaceRoot, { withFileTypes: true });
|
|
76
|
+
return entries
|
|
77
|
+
.filter((entry) => entry.isDirectory() || entry.isSymbolicLink())
|
|
78
|
+
.map((entry) => path.join(workspaceRoot, entry.name));
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const code = error.code;
|
|
82
|
+
// A root that is not there yet, or is not a directory, holds no
|
|
83
|
+
// workspaces and so no ledgers — nothing for a guard to miss.
|
|
84
|
+
//
|
|
85
|
+
// Anything else propagates, and the caller fails its tool call. This
|
|
86
|
+
// list is what `ledgerGuard` is built from, and an empty one is a guard
|
|
87
|
+
// that answers "not a ledger" to every path — so swallowing `EACCES`
|
|
88
|
+
// (a root that is executable but not listable, whose children are still
|
|
89
|
+
// writable by name) or a transient `EMFILE` would let `fs.write`
|
|
90
|
+
// truncate an agent's provenance ledger. "Cannot tell" is not "nothing
|
|
91
|
+
// to protect".
|
|
92
|
+
if (code === 'ENOENT' || code === 'ENOTDIR') {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAuC,EACvC,aAAiC,EACU,EAAE;IAC7C,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAuC,EACvC,aAAiC,EACU,EAAE;IAC7C,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAAuC,EACvC,aAAiC,EACL,EAAE;IAC9B,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;aAChE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,gEAAgE;QAChE,8DAA8D;QAC9D,EAAE;QACF,qEAAqE;QACrE,wEAAwE;QACxE,qEAAqE;QACrE,wEAAwE;QACxE,iEAAiE;QACjE,uEAAuE;QACvE,eAAe;QACf,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stratusagent/plugins",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"node": ">=22.13 <23 || >=23.4"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@stratusagent/agents": "0.11.
|
|
22
|
-
"@stratusagent/core": "0.11.
|
|
21
|
+
"@stratusagent/agents": "0.11.5",
|
|
22
|
+
"@stratusagent/core": "0.11.5"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^24.6.0",
|