@stratusagent/cli 0.11.2 → 0.11.3
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/README.md +13 -7
- package/dist/approvals.d.ts +87 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +315 -0
- package/dist/approvals.js.map +1 -0
- package/dist/commands/agent-new.d.ts +22 -0
- package/dist/commands/agent-new.d.ts.map +1 -0
- package/dist/commands/agent-new.js +154 -0
- package/dist/commands/agent-new.js.map +1 -0
- package/dist/commands/agents.d.ts +4 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +90 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/chat.d.ts +4 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +224 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/credential.d.ts +22 -0
- package/dist/commands/credential.d.ts.map +1 -0
- package/dist/commands/credential.js +93 -0
- package/dist/commands/credential.js.map +1 -0
- package/dist/commands/dashboard.d.ts +14 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +195 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/doctor.d.ts +40 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +357 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/grants.d.ts +19 -0
- package/dist/commands/grants.d.ts.map +1 -0
- package/dist/commands/grants.js +128 -0
- package/dist/commands/grants.js.map +1 -0
- package/dist/commands/logs.d.ts +9 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +58 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/memory.d.ts +20 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +110 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/plugins.d.ts +91 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +359 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/restart.d.ts +4 -0
- package/dist/commands/restart.d.ts.map +1 -0
- package/dist/commands/restart.js +25 -0
- package/dist/commands/restart.js.map +1 -0
- package/dist/commands/schedules.d.ts +11 -0
- package/dist/commands/schedules.d.ts.map +1 -0
- package/dist/commands/schedules.js +50 -0
- package/dist/commands/schedules.js.map +1 -0
- package/dist/commands/serve.d.ts +4 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +612 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/service.d.ts +9 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +97 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/session.d.ts +9 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +25 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +2412 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skills.d.ts +15 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +272 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/template.d.ts +4 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +575 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/update.d.ts +21 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +291 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/daemon.d.ts +74 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +192 -0
- package/dist/daemon.js.map +1 -0
- package/dist/environment.d.ts +108 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +2 -0
- package/dist/environment.js.map +1 -0
- package/dist/events.d.ts +17 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +87 -0
- package/dist/events.js.map +1 -0
- package/dist/help.d.ts +2 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +266 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +31 -624
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -6981
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +16 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +45 -0
- package/dist/io.js.map +1 -0
- package/dist/loaders.d.ts +31 -0
- package/dist/loaders.d.ts.map +1 -0
- package/dist/loaders.js +56 -0
- package/dist/loaders.js.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +214 -0
- package/dist/main.js.map +1 -0
- package/dist/npm.d.ts +66 -0
- package/dist/npm.d.ts.map +1 -0
- package/dist/npm.js +201 -0
- package/dist/npm.js.map +1 -0
- package/dist/parse.d.ts +231 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +1082 -0
- package/dist/parse.js.map +1 -0
- package/dist/plugin-catalog.d.ts +35 -0
- package/dist/plugin-catalog.d.ts.map +1 -0
- package/dist/plugin-catalog.js +58 -0
- package/dist/plugin-catalog.js.map +1 -0
- package/dist/preflight.d.ts +60 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +102 -0
- package/dist/preflight.js.map +1 -0
- package/dist/prompter.d.ts +84 -0
- package/dist/prompter.d.ts.map +1 -0
- package/dist/prompter.js +347 -0
- package/dist/prompter.js.map +1 -0
- package/dist/roster.d.ts +57 -0
- package/dist/roster.d.ts.map +1 -0
- package/dist/roster.js +78 -0
- package/dist/roster.js.map +1 -0
- package/dist/runtime.d.ts +59 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +266 -0
- package/dist/runtime.js.map +1 -0
- package/dist/slack.d.ts +26 -0
- package/dist/slack.d.ts.map +1 -0
- package/dist/slack.js +113 -0
- package/dist/slack.js.map +1 -0
- package/dist/source.d.ts +24 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +80 -0
- package/dist/source.js.map +1 -0
- package/dist/supervisor.d.ts +69 -0
- package/dist/supervisor.d.ts.map +1 -0
- package/dist/supervisor.js +218 -0
- package/dist/supervisor.js.map +1 -0
- package/dist/trusted-config.d.ts +71 -0
- package/dist/trusted-config.d.ts.map +1 -0
- package/dist/trusted-config.js +118 -0
- package/dist/trusted-config.js.map +1 -0
- package/package.json +25 -23
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CliStreams, CliEnvironment } from '../environment.ts';
|
|
2
|
+
import type { ParsedGrantsCommand } from '../parse.ts';
|
|
3
|
+
/**
|
|
4
|
+
* `stratus grants <agent>` and `stratus grants revoke <agent> …` — the
|
|
5
|
+
* operator's view of what an agent may do unattended, and the way to take
|
|
6
|
+
* one back.
|
|
7
|
+
*
|
|
8
|
+
* Through the running daemon when one says it is serving, and only then
|
|
9
|
+
* from the files, because of the daemon's cache: the store reads each
|
|
10
|
+
* agent's file once per process, so a revoke that edited the file behind a
|
|
11
|
+
* live daemon would leave the policy honouring a grant the listing no
|
|
12
|
+
* longer shows until the next restart. Going through `POST
|
|
13
|
+
* /agents/:id/grants/revoke` is what makes a revoke the next call's answer.
|
|
14
|
+
* A daemon that `gateway.json` names but that does not answer falls back
|
|
15
|
+
* to the files with a warning saying exactly that, since the file is still
|
|
16
|
+
* the truth for the next daemon to start.
|
|
17
|
+
*/
|
|
18
|
+
export declare const runGrants: (command: ParsedGrantsCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
19
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/commands/grants.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQvD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,mBAAmB,EAC5B,SAAS,UAAU,EACnB,MAAK,cAAmB,KACvB,OAAO,CAAC,MAAM,CAmHhB,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createFileCommandWhitelist, describeAgentGrants, describeToolGrant, whitelistPathFor, } from '@stratusagent/permissions';
|
|
2
|
+
import { agentsDirPath, gatewayInfoPath } from '@stratusagent/state';
|
|
3
|
+
import { callRunningGateway, gatewayErrorMessage, readGatewayInfo } from "../daemon.js";
|
|
4
|
+
import { writeLine } from "../io.js";
|
|
5
|
+
/**
|
|
6
|
+
* `stratus grants <agent>` and `stratus grants revoke <agent> …` — the
|
|
7
|
+
* operator's view of what an agent may do unattended, and the way to take
|
|
8
|
+
* one back.
|
|
9
|
+
*
|
|
10
|
+
* Through the running daemon when one says it is serving, and only then
|
|
11
|
+
* from the files, because of the daemon's cache: the store reads each
|
|
12
|
+
* agent's file once per process, so a revoke that edited the file behind a
|
|
13
|
+
* live daemon would leave the policy honouring a grant the listing no
|
|
14
|
+
* longer shows until the next restart. Going through `POST
|
|
15
|
+
* /agents/:id/grants/revoke` is what makes a revoke the next call's answer.
|
|
16
|
+
* A daemon that `gateway.json` names but that does not answer falls back
|
|
17
|
+
* to the files with a warning saying exactly that, since the file is still
|
|
18
|
+
* the truth for the next daemon to start.
|
|
19
|
+
*/
|
|
20
|
+
export const runGrants = async (command, streams, env = {}) => {
|
|
21
|
+
const agentId = command.agentId;
|
|
22
|
+
const encoded = encodeURIComponent(agentId);
|
|
23
|
+
const base = command.gateway
|
|
24
|
+
? command.gateway.replace(/\/+$/, '')
|
|
25
|
+
: (await readGatewayInfo(env))?.url.replace(/\/+$/, '');
|
|
26
|
+
const revocation = command.action === 'revoke'
|
|
27
|
+
? command.tool !== undefined
|
|
28
|
+
? { tool: command.tool }
|
|
29
|
+
: command.scope !== undefined
|
|
30
|
+
? { scope: command.scope }
|
|
31
|
+
: { origin: command.origin ?? '' }
|
|
32
|
+
: undefined;
|
|
33
|
+
const named = revocation?.tool ?? revocation?.scope ?? revocation?.origin ?? '';
|
|
34
|
+
const fromFiles = async () => {
|
|
35
|
+
const store = createFileCommandWhitelist({
|
|
36
|
+
directory: agentsDirPath(env),
|
|
37
|
+
warn: (line) => writeLine(streams.stderr, `Warning: ${line}`),
|
|
38
|
+
});
|
|
39
|
+
if (revocation) {
|
|
40
|
+
const revoked = revocation.tool !== undefined
|
|
41
|
+
? await store.forgetTool(agentId, revocation.tool)
|
|
42
|
+
: revocation.scope !== undefined
|
|
43
|
+
? await store.forgetScope(agentId, revocation.scope)
|
|
44
|
+
: await store.forgetOrigin(agentId, revocation.origin ?? '');
|
|
45
|
+
return reportRevocation(revoked);
|
|
46
|
+
}
|
|
47
|
+
const listing = { agentId, ...describeAgentGrants(await store.grantsFor(agentId)) };
|
|
48
|
+
return render(listing, `${whitelistPathFor(agentsDirPath(env), agentId)}`);
|
|
49
|
+
};
|
|
50
|
+
const reportRevocation = (revoked) => {
|
|
51
|
+
if (!revoked) {
|
|
52
|
+
writeLine(streams.stderr, `${agentId} has no such grant. \`stratus grants ${agentId}\` lists what exists.`);
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
writeLine(streams.stdout, `Revoked ${named} for ${agentId}.`);
|
|
56
|
+
return 0;
|
|
57
|
+
};
|
|
58
|
+
const render = (listing, source) => {
|
|
59
|
+
if (command.format === 'json') {
|
|
60
|
+
writeLine(streams.stdout, JSON.stringify({ ...listing, source }, null, 2));
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
const total = listing.tools.length + listing.scopes.length + listing.origins.length;
|
|
64
|
+
if (total === 0) {
|
|
65
|
+
writeLine(streams.stdout, `${agentId} has no standing grants beyond the built-in safe list (${source}).`);
|
|
66
|
+
writeLine(streams.stdout, 'An "always allow" answered on one of its gated calls creates one.');
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
writeLine(streams.stdout, `${agentId} may do this unattended, beyond the built-in safe list (${source}):`);
|
|
70
|
+
if (listing.tools.length > 0) {
|
|
71
|
+
writeLine(streams.stdout, ' tools');
|
|
72
|
+
for (const grant of listing.tools) {
|
|
73
|
+
const by = grant.grantedBy ? ` by ${grant.grantedBy}` : '';
|
|
74
|
+
const stale = grant.stale ? ` — stale: ${grant.stale}` : '';
|
|
75
|
+
writeLine(streams.stdout, ` ${describeToolGrant(grant)} (granted ${grant.grantedAt}${by})${stale}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (listing.scopes.length > 0) {
|
|
79
|
+
writeLine(streams.stdout, ' commands');
|
|
80
|
+
for (const row of listing.scopes) {
|
|
81
|
+
writeLine(streams.stdout, ` ${row.description}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (listing.origins.length > 0) {
|
|
85
|
+
writeLine(streams.stdout, ' sites');
|
|
86
|
+
for (const row of listing.origins) {
|
|
87
|
+
writeLine(streams.stdout, ` ${row.origin}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
writeLine(streams.stdout, `Take one back: stratus grants revoke ${agentId} --tool <name> | --scope "<command>" | --origin <origin>`);
|
|
91
|
+
return 0;
|
|
92
|
+
};
|
|
93
|
+
if (!base) {
|
|
94
|
+
return fromFiles();
|
|
95
|
+
}
|
|
96
|
+
let response;
|
|
97
|
+
try {
|
|
98
|
+
response = revocation
|
|
99
|
+
? await callRunningGateway(env, command, base, `/api/v1/agents/${encoded}/grants/revoke`, revocation)
|
|
100
|
+
: await callRunningGateway(env, command, base, `/api/v1/agents/${encoded}/grants`, undefined, 'GET');
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (command.gateway) {
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
// Named by the file, not answering: a daemon that crashed leaves the
|
|
107
|
+
// file behind. The files are still the truth for the next one to
|
|
108
|
+
// start, so act on them — and say so, because if a daemon *is* alive
|
|
109
|
+
// behind a broken API it keeps its cached view until it restarts.
|
|
110
|
+
writeLine(streams.stderr, `Warning: ${gatewayInfoPath(env)} names a daemon at ${base}, but it did not answer `
|
|
111
|
+
+ `(${error instanceof Error ? error.message : String(error)}). `
|
|
112
|
+
+ `${revocation ? 'Revoking in' : 'Reading'} ${whitelistPathFor(agentsDirPath(env), agentId)} instead; `
|
|
113
|
+
+ 'a daemon that is running will not notice until it restarts.');
|
|
114
|
+
return fromFiles();
|
|
115
|
+
}
|
|
116
|
+
if (response.status === 404 && revocation) {
|
|
117
|
+
return reportRevocation(false);
|
|
118
|
+
}
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
writeLine(streams.stderr, `Error: ${await gatewayErrorMessage(response)}`);
|
|
121
|
+
return 1;
|
|
122
|
+
}
|
|
123
|
+
if (revocation) {
|
|
124
|
+
return reportRevocation(true);
|
|
125
|
+
}
|
|
126
|
+
return render(await response.json(), `from the daemon at ${base}`);
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/commands/grants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CliStreams, CliEnvironment } from '../environment.ts';
|
|
2
|
+
import type { ParsedLogsCommand } from '../parse.ts';
|
|
3
|
+
/**
|
|
4
|
+
* `stratus logs` — the daemon's structured log, filtered. `serve` streams
|
|
5
|
+
* to its own stdout, which is gone the moment it runs under a service
|
|
6
|
+
* manager; this reads the file it also writes, from any terminal.
|
|
7
|
+
*/
|
|
8
|
+
export declare const runLogs: (command: ParsedLogsCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
9
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,iBAAiB,EAC1B,SAAS,UAAU,EACnB,MAAK,cAAmB,KACvB,OAAO,CAAC,MAAM,CAkDhB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { logsDirPath } from '@stratusagent/state';
|
|
2
|
+
import { currentLogPosition, formatLogRecord, readRecentRecords, tailLog, } from "../logs.js";
|
|
3
|
+
import { writeLine } from "../io.js";
|
|
4
|
+
/**
|
|
5
|
+
* `stratus logs` — the daemon's structured log, filtered. `serve` streams
|
|
6
|
+
* to its own stdout, which is gone the moment it runs under a service
|
|
7
|
+
* manager; this reads the file it also writes, from any terminal.
|
|
8
|
+
*/
|
|
9
|
+
export const runLogs = async (command, streams, env = {}) => {
|
|
10
|
+
const dir = logsDirPath(env);
|
|
11
|
+
const filter = {
|
|
12
|
+
...(command.agentId ? { agentId: command.agentId } : {}),
|
|
13
|
+
...(command.sessionId ? { sessionId: command.sessionId } : {}),
|
|
14
|
+
};
|
|
15
|
+
const emit = (record) => {
|
|
16
|
+
writeLine(streams.stdout, command.format === 'json' ? JSON.stringify(record) : formatLogRecord(record));
|
|
17
|
+
};
|
|
18
|
+
// Captured BEFORE the backlog is read: the daemon keeps writing while a
|
|
19
|
+
// large backlog prints, and a follower that takes its offset afterwards
|
|
20
|
+
// skips everything written in between — permanently.
|
|
21
|
+
const followFrom = command.follow ? await currentLogPosition(dir) : undefined;
|
|
22
|
+
// Bounded by the same offset the follower resumes from: without it, a
|
|
23
|
+
// record written between the two reads is printed by the backlog and
|
|
24
|
+
// then again by the stream.
|
|
25
|
+
const recent = await readRecentRecords(dir, command.limit, filter, followFrom);
|
|
26
|
+
for (const record of recent) {
|
|
27
|
+
emit(record);
|
|
28
|
+
}
|
|
29
|
+
if (!command.follow) {
|
|
30
|
+
if (recent.length === 0 && command.format === 'text') {
|
|
31
|
+
writeLine(streams.stdout, `No log records yet in ${dir}. Start the daemon with \`stratus serve\`.`);
|
|
32
|
+
}
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
const controller = new AbortController();
|
|
36
|
+
const stop = () => controller.abort();
|
|
37
|
+
process.once('SIGINT', stop);
|
|
38
|
+
process.once('SIGTERM', stop);
|
|
39
|
+
env.shutdownSignal?.addEventListener('abort', stop, { once: true });
|
|
40
|
+
if (env.shutdownSignal?.aborted) {
|
|
41
|
+
stop();
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
await tailLog({
|
|
45
|
+
dir,
|
|
46
|
+
filter,
|
|
47
|
+
...(followFrom !== undefined ? { startPosition: followFrom } : {}),
|
|
48
|
+
signal: controller.signal,
|
|
49
|
+
onRecord: emit,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
process.off('SIGINT', stop);
|
|
54
|
+
process.off('SIGTERM', stop);
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CliStreams, CliEnvironment } from '../environment.ts';
|
|
2
|
+
import type { ParsedMemoryCommand } from '../parse.ts';
|
|
3
|
+
/**
|
|
4
|
+
* `stratus memory list|reassert` — the operator's half of provenance.
|
|
5
|
+
*
|
|
6
|
+
* `list` shows what an agent's store holds with the label each entry
|
|
7
|
+
* carries, because an operator cannot re-assert what they cannot see.
|
|
8
|
+
* `reassert` is the one way a label ever rises: it appends a re-assertion
|
|
9
|
+
* record to the JSONL (never rewrites a line), so a running daemon — which
|
|
10
|
+
* re-reads the file on every read — sees it at once. Operator only, on
|
|
11
|
+
* purpose: no tool exposes this, because an agent re-labelling its own
|
|
12
|
+
* memory as trusted is the attack writing its own permission slip.
|
|
13
|
+
*
|
|
14
|
+
* `--all-unknown` exists for the upgrade: every entry written before labels
|
|
15
|
+
* existed reads `unknown`, and the injected slice of such a store makes
|
|
16
|
+
* every session `unknown` on its first turn. Re-asserting the entries the
|
|
17
|
+
* agent actually surfaces, once, is the bounded work that drains it.
|
|
18
|
+
*/
|
|
19
|
+
export declare const runMemory: (command: ParsedMemoryCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
20
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,mBAAmB,EAC5B,SAAS,UAAU,EACnB,MAAK,cAAmB,KACvB,OAAO,CAAC,MAAM,CAkGhB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { escapeControlCharacters, memoryEntryTrust } from '@stratusagent/core';
|
|
2
|
+
import { createFileMemoryStore, memoryFilePath, migrateLegacyMemory, withLegacyDefaultMemories, } from '@stratusagent/state';
|
|
3
|
+
import { writeLine } from "../io.js";
|
|
4
|
+
/**
|
|
5
|
+
* `stratus memory list|reassert` — the operator's half of provenance.
|
|
6
|
+
*
|
|
7
|
+
* `list` shows what an agent's store holds with the label each entry
|
|
8
|
+
* carries, because an operator cannot re-assert what they cannot see.
|
|
9
|
+
* `reassert` is the one way a label ever rises: it appends a re-assertion
|
|
10
|
+
* record to the JSONL (never rewrites a line), so a running daemon — which
|
|
11
|
+
* re-reads the file on every read — sees it at once. Operator only, on
|
|
12
|
+
* purpose: no tool exposes this, because an agent re-labelling its own
|
|
13
|
+
* memory as trusted is the attack writing its own permission slip.
|
|
14
|
+
*
|
|
15
|
+
* `--all-unknown` exists for the upgrade: every entry written before labels
|
|
16
|
+
* existed reads `unknown`, and the injected slice of such a store makes
|
|
17
|
+
* every session `unknown` on its first turn. Re-asserting the entries the
|
|
18
|
+
* agent actually surfaces, once, is the bounded work that drains it.
|
|
19
|
+
*/
|
|
20
|
+
export const runMemory = async (command, streams, env = {}) => {
|
|
21
|
+
// Only the writer folds a legacy per-directory store in: `list` is the
|
|
22
|
+
// read-only command a downgraded build is allowed to run against newer
|
|
23
|
+
// state, and a migration is a write.
|
|
24
|
+
if (command.action === 'reassert') {
|
|
25
|
+
await migrateLegacyMemory(env);
|
|
26
|
+
}
|
|
27
|
+
const store = withLegacyDefaultMemories(createFileMemoryStore(memoryFilePath(env)));
|
|
28
|
+
// Two ways an entry reads `unknown`, and only one is the upgrade case:
|
|
29
|
+
// no label at all (written before labels existed, or added by hand), or a
|
|
30
|
+
// recorded `unknown` — a session that heard from a sender nobody vouched
|
|
31
|
+
// for, or ran a shell command. The bulk re-assertion is for the first;
|
|
32
|
+
// the second may hold a stranger's text and is named by id, once read.
|
|
33
|
+
const unlabelled = (entry) => entry.trust === undefined;
|
|
34
|
+
const describeEntry = (entry) => ({
|
|
35
|
+
id: entry.id,
|
|
36
|
+
trust: memoryEntryTrust(entry),
|
|
37
|
+
content: entry.content,
|
|
38
|
+
createdAt: entry.createdAt,
|
|
39
|
+
...(entry.origin ? { origin: entry.origin } : {}),
|
|
40
|
+
});
|
|
41
|
+
if (command.action === 'list') {
|
|
42
|
+
const live = (await store.list(command.agentId)).entries
|
|
43
|
+
.filter((entry) => command.trust === undefined || memoryEntryTrust(entry) === command.trust);
|
|
44
|
+
if (command.format === 'json') {
|
|
45
|
+
writeLine(streams.stdout, JSON.stringify({ agentId: command.agentId, entries: live.map(describeEntry) }, null, 2));
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
if (live.length === 0) {
|
|
49
|
+
writeLine(streams.stdout, command.trust === undefined
|
|
50
|
+
? `${command.agentId} has no live memory entries in ${memoryFilePath(env)}.`
|
|
51
|
+
: `${command.agentId} has no live memory entries at ${command.trust}.`);
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
for (const entry of live) {
|
|
55
|
+
const taintedBy = entry.origin?.taintedBy ? ` (tainted by ${entry.origin.taintedBy})` : '';
|
|
56
|
+
const unrecorded = unlabelled(entry) ? ' (no recorded origin)' : '';
|
|
57
|
+
writeLine(streams.stdout, `${entry.id} [${memoryEntryTrust(entry)}]${taintedBy}${unrecorded}`);
|
|
58
|
+
writeLine(streams.stdout, ` ${escapeControlCharacters(entry.content)}`);
|
|
59
|
+
}
|
|
60
|
+
if (command.trust === undefined) {
|
|
61
|
+
const unlabelledCount = live.filter(unlabelled).length;
|
|
62
|
+
const recordedUnknown = live.filter((entry) => !unlabelled(entry) && memoryEntryTrust(entry) === 'unknown').length;
|
|
63
|
+
if (unlabelledCount > 0) {
|
|
64
|
+
writeLine(streams.stdout, '');
|
|
65
|
+
writeLine(streams.stdout, `${unlabelledCount} entr${unlabelledCount === 1 ? 'y has' : 'ies have'} no recorded origin, so any session that reads one writes unknown. `
|
|
66
|
+
+ `Review them, then: stratus memory reassert ${command.agentId} --trust user --all-unknown (or name ids).`);
|
|
67
|
+
}
|
|
68
|
+
if (recordedUnknown > 0) {
|
|
69
|
+
writeLine(streams.stdout, '');
|
|
70
|
+
writeLine(streams.stdout, `${recordedUnknown} entr${recordedUnknown === 1 ? 'y was' : 'ies were'} recorded unknown — written after a message from someone not configured as a principal, or after a shell command — `
|
|
71
|
+
+ 'and may repeat what a stranger said. --all-unknown leaves these alone; re-assert one by id once you have read it.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
if (!store.reassertTrust) {
|
|
77
|
+
writeLine(streams.stderr, 'Error: this memory store cannot re-assert trust.');
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
const trust = command.trust ?? 'user';
|
|
81
|
+
const live = (await store.list(command.agentId)).entries;
|
|
82
|
+
const targets = command.allUnknown
|
|
83
|
+
? [...new Set([...live.filter(unlabelled).map((entry) => entry.id), ...command.ids])]
|
|
84
|
+
: command.ids;
|
|
85
|
+
if (targets.length === 0) {
|
|
86
|
+
writeLine(streams.stdout, `${command.agentId} has no live entries with no recorded origin; nothing to re-assert. An entry recorded unknown is named by id.`);
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
const missing = [];
|
|
90
|
+
let changed = 0;
|
|
91
|
+
for (const id of targets) {
|
|
92
|
+
if (await store.reassertTrust(command.agentId, id, trust)) {
|
|
93
|
+
changed += 1;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
missing.push(id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (command.format === 'json') {
|
|
100
|
+
writeLine(streams.stdout, JSON.stringify({ agentId: command.agentId, trust, reasserted: changed, missing }, null, 2));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
writeLine(streams.stdout, `Re-asserted ${changed} entr${changed === 1 ? 'y' : 'ies'} of ${command.agentId} as ${trust}. A running daemon reads the change on its next turn.`);
|
|
104
|
+
}
|
|
105
|
+
for (const id of missing) {
|
|
106
|
+
writeLine(streams.stderr, `No live memory entry with id ${id} belongs to ${command.agentId}; nothing was re-asserted for it.`);
|
|
107
|
+
}
|
|
108
|
+
return missing.length === 0 ? 0 : 1;
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type ToolRisk } from '@stratusagent/core';
|
|
2
|
+
import type { CliStreams, CliEnvironment } from '../environment.ts';
|
|
3
|
+
import type { ParsedPluginsCommand } from '../parse.ts';
|
|
4
|
+
/** One tool a plugin's manifest declares, as this machine would have it. */
|
|
5
|
+
export interface PluginToolReport {
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* Declared as a namespace rather than named, so the tools under it arrive
|
|
9
|
+
* when the server connects. `mcp.*` is the case: a name that does not
|
|
10
|
+
* exist yet is not a name that does not exist.
|
|
11
|
+
*/
|
|
12
|
+
discovered: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* What `ManifestBoundToolRegistry` would settle on, minus the claim only a
|
|
15
|
+
* running daemon has. An operator's `toolRisks` override *replaces* the
|
|
16
|
+
* manifest's declaration and is bounded only by the package's floor —
|
|
17
|
+
* lowering one is the whole point of the key — and without an override it
|
|
18
|
+
* is the riskier of the declaration and that floor. A registered object
|
|
19
|
+
* may then raise itself further, so this is a floor on what a call will
|
|
20
|
+
* face rather than the last word on it.
|
|
21
|
+
*/
|
|
22
|
+
risk: ToolRisk;
|
|
23
|
+
/**
|
|
24
|
+
* Agent ids whose `tools:` allowlist selects this name. Empty is the
|
|
25
|
+
* finding, not the absence of one: installing a plugin grants nothing.
|
|
26
|
+
*/
|
|
27
|
+
grantedTo: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface PluginReport {
|
|
30
|
+
package: string;
|
|
31
|
+
/** Resolvable from this process. */
|
|
32
|
+
installed: boolean;
|
|
33
|
+
/** Named in the trusted config's plugins block, whatever its `enabled`. */
|
|
34
|
+
configured: boolean;
|
|
35
|
+
/** Configured and not switched off. */
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
tools: PluginToolReport[];
|
|
38
|
+
/**
|
|
39
|
+
* Why a daemon would register nothing for this plugin, when it would —
|
|
40
|
+
* an unreadable manifest, or settings its own schema rejects. Enabled and
|
|
41
|
+
* loadable are different questions, and a report that ran them together
|
|
42
|
+
* would call `plugin-mcp` with no `servers` ready to use.
|
|
43
|
+
*/
|
|
44
|
+
problem?: string;
|
|
45
|
+
/**
|
|
46
|
+
* What might go wrong that a manifest cannot settle. A name two packages
|
|
47
|
+
* both declare collides only if both *register* it, and registration is
|
|
48
|
+
* `setup()`'s business — so this says "if it does" rather than reporting
|
|
49
|
+
* a failure that may never happen.
|
|
50
|
+
*/
|
|
51
|
+
warnings?: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface PluginsReport {
|
|
54
|
+
approvals: 'headless' | 'remote';
|
|
55
|
+
/**
|
|
56
|
+
* What this machine would really do with a gated call — the mode alone
|
|
57
|
+
* does not say. `headless` still runs one a standing grant, an approved
|
|
58
|
+
* command scope, or an approved site already covers (the engine checks
|
|
59
|
+
* all three before it refuses), and `remote` with no reachable approver
|
|
60
|
+
* denies on arrival rather than asking anybody.
|
|
61
|
+
*/
|
|
62
|
+
approvalsSummary: string;
|
|
63
|
+
/**
|
|
64
|
+
* Set when the roster did not load, in which case every `grantedTo` is
|
|
65
|
+
* withheld rather than reported empty — the same rule `stratus skills`
|
|
66
|
+
* follows, and for the same reason: unreadable enablement must not print
|
|
67
|
+
* as "granted to nobody".
|
|
68
|
+
*/
|
|
69
|
+
rosterUnreadable: boolean;
|
|
70
|
+
plugins: PluginReport[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* What this machine's plugins are, and where the chain from installed to
|
|
74
|
+
* callable breaks.
|
|
75
|
+
*
|
|
76
|
+
* Four things have to be true before an agent can call a plugin's tool —
|
|
77
|
+
* the package is installed, a trusted config enables it, the agent's
|
|
78
|
+
* `tools:` names it, and the approval policy lets the call through — and
|
|
79
|
+
* every one of them fails silently on its own. A listing of installed
|
|
80
|
+
* packages answers the first and reads as an answer to all four, which is
|
|
81
|
+
* how an agent ends up with a persona describing tools it never had.
|
|
82
|
+
*
|
|
83
|
+
* Manifests rather than a load: `readPluginManifest` imports nothing, so
|
|
84
|
+
* this never runs a plugin's `setup` — which for the MCP bridge would spawn
|
|
85
|
+
* every configured server's subprocess to answer a question about a
|
|
86
|
+
* daemon that is not running.
|
|
87
|
+
*/
|
|
88
|
+
export declare const collectPluginsReport: (command: ParsedPluginsCommand, env: CliEnvironment, warn: (line: string) => void) => Promise<PluginsReport>;
|
|
89
|
+
/** `stratus plugins` — the chain from installed to callable, per plugin. */
|
|
90
|
+
export declare const runPlugins: (command: ParsedPluginsCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
91
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAW5B,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AASxD,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC;IACjC;;;;;;OAMG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,oBAAoB,EAC7B,KAAK,cAAc,EACnB,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAC3B,OAAO,CAAC,aAAa,CAuRvB,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,UAAU,GACrB,SAAS,oBAAoB,EAC7B,SAAS,UAAU,EACnB,MAAK,cAAmB,KACvB,OAAO,CAAC,MAAM,CAiEhB,CAAC"}
|