@stratusagent/cli 0.11.8 → 0.11.9
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/approvals.js +1 -1
- package/dist/approvals.js.map +1 -1
- package/dist/autonomy.d.ts +13 -0
- package/dist/autonomy.d.ts.map +1 -0
- package/dist/autonomy.js +24 -0
- package/dist/autonomy.js.map +1 -0
- package/dist/commands/grants.d.ts.map +1 -1
- package/dist/commands/grants.js +83 -4
- package/dist/commands/grants.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +52 -9
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +6 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.d.ts +30 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +155 -19
- package/dist/commands/update.js.map +1 -1
- package/dist/environment.d.ts +9 -0
- package/dist/environment.d.ts.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +4 -1
- package/dist/help.js.map +1 -1
- package/dist/npm.d.ts +1 -1
- package/dist/npm.js +1 -1
- package/dist/operator-commands.d.ts +34 -0
- package/dist/operator-commands.d.ts.map +1 -0
- package/dist/operator-commands.js +59 -0
- package/dist/operator-commands.js.map +1 -0
- package/dist/parse.d.ts +6 -0
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +5 -0
- package/dist/parse.js.map +1 -1
- package/dist/plugin-catalog.d.ts.map +1 -1
- package/dist/plugin-catalog.js +1 -0
- package/dist/plugin-catalog.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +2 -1
- package/dist/runtime.js.map +1 -1
- package/dist/trusted-config.d.ts +12 -0
- package/dist/trusted-config.d.ts.map +1 -1
- package/dist/trusted-config.js +41 -0
- package/dist/trusted-config.js.map +1 -1
- package/package.json +25 -25
package/dist/commands/update.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
1
2
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
-
import
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { newerStateMessage, pendingStateMigrations, readStateStamp, repairWorkspacesIfPending, runStateMigrations, STATE_SCHEMA_VERSION, } from '@stratusagent/state';
|
|
3
6
|
import { installService, readServiceCommand, readServiceStatus, serviceUnitPath, startService, stopService, } from "../service.js";
|
|
4
7
|
import { legacyDaemonServing, serviceEnvFor } from "../daemon.js";
|
|
5
8
|
import { installedUnitConfigError } from "./service.js";
|
|
@@ -57,7 +60,99 @@ const claimExclusiveHome = async (env, gateway) => {
|
|
|
57
60
|
}
|
|
58
61
|
return { held: true, reason: '', release: () => claim.release() };
|
|
59
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Set on the process `stratus update` hands its second half to, saying
|
|
65
|
+
* whether the daemon was running before the first half stopped it. An
|
|
66
|
+
* environment variable rather than a flag: it is a hand-off between two
|
|
67
|
+
* builds of this command, not something an operator types.
|
|
68
|
+
*/
|
|
69
|
+
export const UPDATE_RESUME_ENV = 'STRATUS_UPDATE_RESUME';
|
|
70
|
+
const readResume = (env) => {
|
|
71
|
+
const value = (env.processEnv ?? process.env)[UPDATE_RESUME_ENV];
|
|
72
|
+
return value === 'running' || value === 'stopped' ? value : undefined;
|
|
73
|
+
};
|
|
74
|
+
/** What the second half sends up once it is running, so a crash before it is not mistaken for its answer. */
|
|
75
|
+
export const UPDATE_RESUMED_MESSAGE = 'stratus.update.resumed';
|
|
76
|
+
/**
|
|
77
|
+
* Run `stratus update` again on the build npm just put on disk, and wait.
|
|
78
|
+
*
|
|
79
|
+
* The process that ran the install is the old build, and Node cannot swap
|
|
80
|
+
* it out: everything already imported stays the old code in the module
|
|
81
|
+
* cache, while anything imported for the first time is read from the new
|
|
82
|
+
* files and resolves its own imports against that cache. A new module
|
|
83
|
+
* asking an old one for an export it does not have fails the migration
|
|
84
|
+
* ("does not provide an export named …") — 0.11.7's `FileLockHeldError`,
|
|
85
|
+
* 0.11.8's `createPluginStateDirectories`. Preloading one module at a time
|
|
86
|
+
* only fixes the import someone already tripped over; a fresh process has
|
|
87
|
+
* nothing cached and runs the new build whole.
|
|
88
|
+
*
|
|
89
|
+
* Its exit code is the update's only once it has said it took over. A new
|
|
90
|
+
* build that dies before that, on a missing entrypoint or a module that
|
|
91
|
+
* throws as it loads, exits without ever reaching the recovery that
|
|
92
|
+
* restarts the daemon, so it resolves `undefined` and this process
|
|
93
|
+
* finishes the update itself instead.
|
|
94
|
+
*/
|
|
95
|
+
export const defaultUpdateContinuation = (env, entrypoint = (() => {
|
|
96
|
+
const modulePath = fileURLToPath(import.meta.url);
|
|
97
|
+
return path.join(path.dirname(modulePath), '..', `bin${path.extname(modulePath)}`);
|
|
98
|
+
})()) => (resume) => new Promise((resolve) => {
|
|
99
|
+
let resumed = false;
|
|
100
|
+
const child = spawn(process.execPath, [...process.execArgv, entrypoint, 'update'], {
|
|
101
|
+
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
102
|
+
cwd: env.cwd ?? process.cwd(),
|
|
103
|
+
env: { ...(env.processEnv ?? process.env), [UPDATE_RESUME_ENV]: resume },
|
|
104
|
+
});
|
|
105
|
+
child.on('message', (message) => {
|
|
106
|
+
if (message === UPDATE_RESUMED_MESSAGE) {
|
|
107
|
+
resumed = true;
|
|
108
|
+
// The channel would keep the child alive; it has said all it needs to.
|
|
109
|
+
child.disconnect();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
child.once('error', () => resolve(undefined));
|
|
113
|
+
child.once('exit', (code) => resolve(resumed ? code ?? 1 : undefined));
|
|
114
|
+
});
|
|
115
|
+
/** Tell the first half this process has taken over the update. */
|
|
116
|
+
const announceResumed = () => new Promise((resolve) => {
|
|
117
|
+
if (typeof process.send !== 'function' || !process.connected) {
|
|
118
|
+
resolve();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
process.send(UPDATE_RESUMED_MESSAGE, undefined, {}, () => resolve());
|
|
122
|
+
});
|
|
60
123
|
export const runUpdate = async (command, streams, env) => {
|
|
124
|
+
// Set when this process is the second half of an update an older build
|
|
125
|
+
// began: the daemon is already stopped and the packages already
|
|
126
|
+
// installed, so neither happens again.
|
|
127
|
+
const resume = command.check ? undefined : readResume(env);
|
|
128
|
+
if (resume === undefined) {
|
|
129
|
+
return runUpdateSteps(command, streams, env, undefined);
|
|
130
|
+
}
|
|
131
|
+
// Once this process says it took over, its exit is the update's answer,
|
|
132
|
+
// and the first half will not restart anything. So from here every way
|
|
133
|
+
// out has to leave a daemon that was running running again — including a
|
|
134
|
+
// throw from a version lookup, a status read, or a state file, none of
|
|
135
|
+
// which have a recovery of their own. Starting a service that the steps
|
|
136
|
+
// already restarted is harmless; leaving the fleet down is not.
|
|
137
|
+
await announceResumed();
|
|
138
|
+
try {
|
|
139
|
+
return await runUpdateSteps(command, streams, env, resume);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
writeLine(streams.stderr, `Update failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
143
|
+
if (resume === 'running') {
|
|
144
|
+
const restarted = await startService(serviceEnvFor(env));
|
|
145
|
+
for (const message of restarted.messages) {
|
|
146
|
+
writeLine(restarted.ok ? streams.stdout : streams.stderr, message);
|
|
147
|
+
}
|
|
148
|
+
writeLine(streams.stderr, restarted.ok
|
|
149
|
+
? 'stratusd was restarted. Fix the failure and run `stratus update` again.'
|
|
150
|
+
: 'stratusd could not be restarted either — bring it back with `stratus service start`.');
|
|
151
|
+
}
|
|
152
|
+
return 1;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const runUpdateSteps = async (command, streams, env, resume) => {
|
|
61
156
|
const serviceEnv = serviceEnvFor(env);
|
|
62
157
|
const out = (line) => writeLine(streams.stdout, line);
|
|
63
158
|
const latest = await (env.packageVersionFetcher ?? defaultPackageVersionFetcher)(CLI_PACKAGE_NAME);
|
|
@@ -142,9 +237,26 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
142
237
|
// Actionable exits 1, so a cron job or script can notice.
|
|
143
238
|
return actionable ? 1 : 0;
|
|
144
239
|
}
|
|
145
|
-
|
|
146
|
-
|
|
240
|
+
// In the second half of an update, the first half already stopped the
|
|
241
|
+
// daemon: a refusal here must bring it back, or the fleet stays down
|
|
242
|
+
// over a check that changed nothing.
|
|
243
|
+
const refuse = async (lines) => {
|
|
244
|
+
for (const line of lines) {
|
|
245
|
+
writeLine(streams.stderr, line);
|
|
246
|
+
}
|
|
247
|
+
if (resume === 'running') {
|
|
248
|
+
const restarted = await startService(serviceEnv);
|
|
249
|
+
for (const message of restarted.messages) {
|
|
250
|
+
writeLine(restarted.ok ? streams.stdout : streams.stderr, message);
|
|
251
|
+
}
|
|
252
|
+
writeLine(streams.stderr, restarted.ok
|
|
253
|
+
? 'stratusd was restarted on its previous unit.'
|
|
254
|
+
: 'stratusd could not be restarted either — bring it back with `stratus service start`.');
|
|
255
|
+
}
|
|
147
256
|
return 1;
|
|
257
|
+
};
|
|
258
|
+
if (stateNewer) {
|
|
259
|
+
return refuse([newerStateMessage(stamp.schemaVersion)]);
|
|
148
260
|
}
|
|
149
261
|
if (status?.installed && (status.runAtLogin === undefined || status.running === undefined)) {
|
|
150
262
|
// The rewrite has to re-state the login setting and restore the prior
|
|
@@ -152,8 +264,7 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
152
264
|
// Guessing would let a transient status failure convert a deliberate
|
|
153
265
|
// --no-login install, or rewrite-and-stop a daemon that was actually
|
|
154
266
|
// running — refuse instead, before anything has been stopped.
|
|
155
|
-
|
|
156
|
-
return 1;
|
|
267
|
+
return refuse([`Not updating: whether stratusd ${status.running === undefined ? 'is running' : 'starts at login'} could not be determined (the service manager did not answer), and the unit rewrite would have to guess. Check \`stratus service status\` and retry.`]);
|
|
157
268
|
}
|
|
158
269
|
// Before anything is stopped: the update restarts the service, and a
|
|
159
270
|
// daemon that then refuses its config would leave the fleet down with
|
|
@@ -161,9 +272,12 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
161
272
|
if (status?.installed) {
|
|
162
273
|
const unitError = await installedUnitConfigError(env, serviceEnv);
|
|
163
274
|
if (unitError) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
275
|
+
return refuse([
|
|
276
|
+
`Not updating: ${unitError.message}`,
|
|
277
|
+
resume === undefined
|
|
278
|
+
? 'The updated daemon would refuse to start on it, so nothing was stopped. Fix the file and run `stratus update` again.'
|
|
279
|
+
: 'The updated daemon would refuse to start on it. Fix the file and run `stratus update` again.',
|
|
280
|
+
]);
|
|
167
281
|
}
|
|
168
282
|
}
|
|
169
283
|
// Loaded before npm replaces anything on disk. Everything this process
|
|
@@ -177,9 +291,18 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
177
291
|
// install says it is. And before the stop, not just before the install:
|
|
178
292
|
// a load that fails then leaves the daemon serving, where one failing
|
|
179
293
|
// after the stop sat outside the recovery that restarts it.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
294
|
+
let gateway;
|
|
295
|
+
try {
|
|
296
|
+
gateway = await (env.gatewayLoader ?? (() => import('@stratusagent/gateway')))();
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
if (resume === undefined) {
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
return refuse([`Could not load the gateway: ${error instanceof Error ? error.message : String(error)}`]);
|
|
303
|
+
}
|
|
304
|
+
const wasRunning = resume === undefined ? status?.running === true : resume === 'running';
|
|
305
|
+
if (wasRunning && resume === undefined) {
|
|
183
306
|
// No daemon may hold the session database while state migrates — this
|
|
184
307
|
// bracket is the one place an update could otherwise lose data.
|
|
185
308
|
out('Stopping stratusd for the update…');
|
|
@@ -202,7 +325,7 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
202
325
|
// printing a line promising a version npm never confirmed. Staleness is
|
|
203
326
|
// still *reported* offline — it is measured against this build, which
|
|
204
327
|
// needs no network — so `--check` says what an online update would fix.
|
|
205
|
-
const upgrading = latest === undefined ? [] : [
|
|
328
|
+
const upgrading = latest === undefined || resume !== undefined ? [] : [
|
|
206
329
|
...(upgradeAvailable ? [`${CLI_PACKAGE_NAME}@latest`] : []),
|
|
207
330
|
// `@latest` only where latest IS the target. Where this build is the
|
|
208
331
|
// newer one, `@latest` would install the very version the target just
|
|
@@ -218,17 +341,30 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
218
341
|
out(`Upgrading ${entry.name} ${entry.version} → ${target}…`);
|
|
219
342
|
}
|
|
220
343
|
const installed = await (env.packageInstaller ?? defaultPackageInstaller)(upgrading);
|
|
221
|
-
if (installed.ok) {
|
|
222
|
-
// This process is still the old build
|
|
223
|
-
//
|
|
224
|
-
out('Upgraded.
|
|
344
|
+
if (installed.ok && upgradeAvailable) {
|
|
345
|
+
// This process is still the old build, so the rest of the update —
|
|
346
|
+
// the migrations above all — runs in a fresh one on the new build.
|
|
347
|
+
out('Upgraded. Continuing the update on the new build…');
|
|
348
|
+
const code = await (env.updateContinuation ?? defaultUpdateContinuation(env))(wasRunning ? 'running' : 'stopped');
|
|
349
|
+
if (code !== undefined) {
|
|
350
|
+
return code;
|
|
351
|
+
}
|
|
352
|
+
// It never took over: it could not be started, or died loading.
|
|
353
|
+
// Carry on here rather than leave a stopped daemon behind; this run
|
|
354
|
+
// restarts it if its own migration fails.
|
|
355
|
+
writeLine(streams.stderr, 'The new build did not take over the update — continuing on this one.');
|
|
356
|
+
}
|
|
357
|
+
else if (installed.ok) {
|
|
358
|
+
// Only companions changed. This process's own modules are untouched,
|
|
359
|
+
// so the rest of the update is safe to run here.
|
|
360
|
+
out('Upgraded.');
|
|
225
361
|
}
|
|
226
362
|
else {
|
|
227
363
|
upgradeFailed = true;
|
|
228
364
|
writeLine(streams.stderr, `npm install failed: ${installed.message || 'unknown error'} — continuing with migrations and the unit rewrite.`);
|
|
229
365
|
}
|
|
230
366
|
}
|
|
231
|
-
else {
|
|
367
|
+
else if (resume === undefined) {
|
|
232
368
|
out(latest === undefined
|
|
233
369
|
? 'Skipping the package upgrade — npm did not answer.'
|
|
234
370
|
: 'Package already up to date.');
|
|
@@ -262,8 +398,8 @@ export const runUpdate = async (command, streams, env) => {
|
|
|
262
398
|
// holding the home comes past. This is the remedy for a home that has
|
|
263
399
|
// no daemon at all — `stratus run` takes no claim, so it cannot do this,
|
|
264
400
|
// and `stratus doctor` names it and points here.
|
|
265
|
-
if (claim.held
|
|
266
|
-
const repaired = await
|
|
401
|
+
if (claim.held) {
|
|
402
|
+
const repaired = await repairWorkspacesIfPending(env);
|
|
267
403
|
if (repaired !== undefined) {
|
|
268
404
|
writeLine(streams.stdout, `workspace layout: ${repaired}`);
|
|
269
405
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/environment.d.ts
CHANGED
|
@@ -57,7 +57,16 @@ export interface CliEnvironment {
|
|
|
57
57
|
installedVersionReader?: InstalledVersionReader;
|
|
58
58
|
/** Loads `@stratusagent/gateway` for `stratus update` (tests observe when). Default a dynamic `import()`. */
|
|
59
59
|
gatewayLoader?: () => Promise<typeof import('@stratusagent/gateway')>;
|
|
60
|
+
/**
|
|
61
|
+
* Runs the rest of `stratus update` — migrations, unit rewrite, restart —
|
|
62
|
+
* in a fresh process on the build npm just installed (tests). Resolves
|
|
63
|
+
* with its exit code, or `undefined` when it could not be started. The
|
|
64
|
+
* default spawns this CLI's own entrypoint.
|
|
65
|
+
*/
|
|
66
|
+
updateContinuation?: (resume: UpdateResume) => Promise<number | undefined>;
|
|
60
67
|
}
|
|
68
|
+
/** Whether the daemon was running when the update that stopped it began. */
|
|
69
|
+
export type UpdateResume = 'running' | 'stopped';
|
|
61
70
|
/**
|
|
62
71
|
* A dashboard session as it crosses the restart hand-off: structurally the
|
|
63
72
|
* control API's `DashboardSession`, declared here rather than imported.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACnF;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gGAAgG;IAChG,eAAe,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAClC,mHAAmH;IACnH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sFAAsF;IACtF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,kHAAkH;IAClH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,6GAA6G;IAC7G,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,uBAAuB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"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"}
|
package/dist/help.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const HELP_TEXT = "Stratus Agent CLI\n\nUsage:\n stratus setup\n stratus chat\n stratus chat --soul ./examples/souls/blair.md\n stratus run --prompt \"Use the demo tool\"\n stratus run \"Say hello\"\n ANTHROPIC_API_KEY=... stratus run --provider anthropic \"Say hello\"\n stratus run --soul ./examples/souls/blair.md \"Say hello\"\n echo \"Use the echo tool\" | stratus run --stdin\n STRATUS_PROVIDER=openai OPENAI_API_KEY=... stratus run \"Say hello\"\n stratus run --config ./stratus.config.json --provider openai \"Say hello\"\n stratus agents\n stratus agents --gateway http://127.0.0.1:4123\n stratus template add ./examples/templates/example\n stratus template add stratuslabs/template-oncall --yes\n stratus skill add stratuslabs/skill-code-review\n stratus skill add ./my-skills --skill code-review --agent blair\n stratus skill validate ./my-skill\n stratus skills\n stratus plugins\n stratus plugins --format json\n stratus skill reload\n stratus restart\n stratus health\n stratus schedules\n stratus schedules cancel <id>\n stratus grants blair\n stratus grants revoke blair --tool web.fetch\n stratus memory list blair\n stratus memory search blair deploy pipeline\n stratus memory pin blair blair:memory:...\n stratus memory export blair --file blair-memory.jsonl\n stratus memory reassert blair --trust user --all-unknown\n stratus session rollover slack:blair:T01ABCDEF:D07GHIJKL\n printf %s \"$BRAVE_KEY\" | stratus credential set search.apiKey\n stratus credentials\n stratus channel set imessage --agent blair apiKey apiSecret\n stratus channels\n stratus doctor\n stratus update\n stratus update --check\n stratus --version\n stratus service install\n stratus service status\n stratus logs -f\n stratus logs --agent blair -n 200\n stratus dashboard\n stratus dashboard --port 4123 --host 0.0.0.0 --no-open\n\nCommands:\n setup Menu-driven onboarding: pick a provider, sign in (Claude\n subscription or API key), create your agent, enable the\n plugins it may use, connect it to Slack or a channel a\n plugin contributes, choose who\n approves gated calls unattended, and test it \u2014 settings\n go to ~/.stratus/config.json,\n sign-ins and channel tokens to ~/.stratus/credentials.json\n (0600). Save & finish offers to install any optional\n package your answers imply (the Slack channel, the control\n API and dashboard) before it starts the daemon\n chat Talk with your agent \u2014 the conversation persists across turns\n and remembered facts accumulate; /exit or Ctrl+C to leave\n run Execute one local Stratus Agent session\n serve Run stratusd, the always-on gateway: durable sessions, the\n whole roster live at once (each agent on its own provider),\n delegation, and a watchdog \u2014 one per home (it refuses to\n start over a daemon already serving ~/.stratus, and exits\n 78 on a trusted config that will not load), and\n Ctrl+C / SIGTERM drains cleanly\n (--idle-timeout <seconds>, --approvals <headless|remote>,\n --no-events, --no-log-file, --config <path>); everything it\n says is also written to ~/.stratus/logs, which\n \"stratus logs\" reads (--log-format json puts those same\n records on stdout as JSON lines instead of the human\n ones, for docker logs and journald). With\n @stratusagent/control-api installed it also serves the\n HTTP + WebSocket control API on 127.0.0.1:4123 (--no-api,\n --api-host, --api-port, or the config file's \"api\" block)\n service Keep stratusd running under launchd (macOS) or systemd\n (Linux): install, uninstall, status, start, stop.\n Installing starts it now and at every login\n (--no-login installs without the login trigger,\n --config <path> pins the daemon to one config file)\n logs Read the daemon's log from any terminal: -f to follow,\n -n <count> for backlog, --agent / --session to filter,\n --format json for the raw records\n template add Install a template \u2014 a folder (or GitHub repo) holding\n soul files, skills, and the plugin config they need. Prints\n every agent, skill, plugin package and config key it would\n add, then asks; --yes installs without asking, --force\n replaces an agent or skill already installed under the same\n name. Plugin packages the template's config.json names are\n installed with npm install -g and enabled in\n ~/.stratus/config.json, which needs a restart to take\n effect. See docs/guides/templates.md for the layout\n skill add Install skills from a GitHub repo (owner/repo or URL) or a\n local path into ~/.stratus/skills \u2014 whole directories, one\n per skill; works with skills published for other agents\n (skills.sh-style repos). Installed is not enabled: a soul\n opts in via skills:, or pass --agent <id> to enable now.\n --skill <id> picks from a multi-skill repo (repeatable),\n --force replaces an already-installed id. A skill that\n does not conform to the Agent Skills spec is refused,\n naming what is wrong; one that installs with caveats\n (fields another host owns, a bundled scripts/) says so.\n A running daemon reloads its skills afterwards, no\n restart (--no-reload skips that)\n skill validate Check a skill directory, a directory of skills, or an\n installed skill id against the Agent Skills spec \u2014 the\n same check \"skill add\" runs, so what validates installs.\n Exit 1 if anything would be refused\n skills List installed skills and which agents enable each, after\n the built-in stratus skill every agent has\n (also: stratus skill list)\n plugins What this machine's plugins are, and where the chain from\n installed to callable breaks: whether the package resolves,\n whether a trusted config enables it, which agents' tools:\n lists select each tool it declares, and what the approval\n policy does with a gated call. Read from each package's\n manifest, so nothing is imported and no plugin's setup runs\n (--format json, --config <path>; also: stratus plugin list)\n skill reload Ask the running daemon to re-read ~/.stratus/skills \u2014 for a\n skill edited or removed by hand. A skill that will not\n load refuses the whole reload and the previous set keeps\n serving; nothing becomes reachable to an agent whose soul\n does not list it\n restart Ask the running daemon for an announced restart \u2014 what a\n plugin change needs: it refuses new turns, lets in-flight\n ones finish for up to --drain-timeout <seconds> (default\n 30), then comes back with sessions, schedules, and\n channels intact, under the service manager or not\n health Ask the running daemon whether it is serving: exit 0 and\n one line (version, uptime, agents, sessions, pending\n approvals), or exit 1 and one sentence saying why not.\n For a container HEALTHCHECK, a Kubernetes probe, or a\n monitoring script (--gateway, --token, --format json)\n credential set Store a named credential an agent can resolve \u2014 a search\n backend asks for search.apiKey. The value is read from\n stdin, never from a flag, so it stays out of your shell\n history: printf %s \"$KEY\" | stratus credential set\n search.apiKey. --agent <id> stores one agent's own key,\n which outranks the shared entry for that agent. Storing\n grants nothing: the soul still needs credentials: [name]\n credentials List stored credential names and which agents have their\n own \u2014 names only, never values (also: credential list)\n credential remove\n Forget one (--agent <id> for that agent's own entry)\n channel set Store a channel plugin's secrets for one agent: stratus\n channel set <kind> --agent <id> <name>... asks for each\n value without echoing it, or reads one per line from\n stdin; never from a flag. Replaces what that agent had on\n that channel. Slack's are appToken and botToken, the\n default when no names are given. Read at the next start\n channel list Which agents have secrets stored for which channel \u2014\n names only, never values (also: channels)\n channel remove Forget one agent's secrets for one channel\n schedules List every schedule the fleet has set \u2014 cadence, prompt,\n pre-authorized destination, next firing \u2014 straight from the\n daemon's database (--format json). \"stratus schedules\n cancel <id>\" stops the next firing and revokes the\n destination that was approved with it\n (also: stratus schedule list / schedule cancel <id>)\n grants What an agent may do unattended beyond the built-in safe\n list \u2014 its standing tool grants, command scopes, and\n sites, each an \"always allow\" somebody answered. From the\n running daemon when one is serving (--gateway, --token),\n else from ~/.stratus/agents/<id>/whitelist.json; --format\n json. \"stratus grants revoke <agent> --tool <name> |\n --scope \"<command>\" | --origin <origin>\" takes one back,\n and a running daemon stops honouring it at once\n memory list Show an agent's live memory with the trust label each\n entry carries \u2014 user, agent, unknown (no recorded origin,\n or written in a conversation with someone not configured\n as a principal), external (recorded after reading content\n from outside) \u2014 plus what is pinned and what is outside\n its validity window. --trust <level> filters; --format json\n memory search Search one agent's memory the way the agent does: plain\n words, every one of which must appear in a fact or in\n what the fact is about. Expired facts are found and\n marked. --limit <n>; --format json\n memory forget Retire entries by id. They leave the prompt and recall\n and stay in the record, where audit still shows them\n memory audit Every entry the agent ever wrote, forgotten ones\n included, with which entry replaced which\n memory pin Keep entries in the agent's prompt every turn:\n stratus memory pin <agent> <id>.... The pinned core is\n capped at 2 KiB of content and refuses rather than\n evicting, so nothing already pinned is ever dropped.\n \"memory unpin\" takes one back\n memory export Write an agent's entries to JSONL (--file <path>, else\n stdout) \u2014 for moving an agent to another machine\n memory import Read that JSONL back into an agent (--file <path>).\n Imported entries land external, because a file from\n elsewhere may repeat what a stranger wrote;\n --preserve-trust keeps each recorded label instead, for\n a file you vouch for\n memory reassert Re-label entries as an operator: stratus memory reassert\n <agent> --trust user <id>..., or --all-unknown for every\n entry with no recorded origin (the upgrade case; an\n entry recorded unknown \u2014 a stranger's message, a shell\n command \u2014 is left for you to name by id). Appends\n a record to ~/.stratus/memory.jsonl; a running daemon\n sees it on its next turn. The only way a label ever\n rises \u2014 no tool can do this\n session rollover Start a conversation over under the same session id,\n archiving its transcript so far \u2014 for a long-lived\n session (a Slack DM) that predates provenance tracking\n and would otherwise write unknown forever. Asks the\n running daemon (--gateway, --token)\n agent new Create an agent identity (generates a human-ish name + avatar theme)\n agents List your agents: who they are, where their souls live, what\n they run on, what they remember (also: stratus agent list).\n --gateway <url> asks a running daemon instead of resolving\n locally, authenticating with ~/.stratus/gateway-token\n (override with --token or STRATUS_GATEWAY_TOKEN)\n doctor Show what a run would use right now \u2014 provider, model, soul \u2014\n and which file or environment variable decided each, then\n flag anything that would surprise you (--format json)\n update The whole upgrade dance, in the order that cannot lose\n data: stop stratusd, upgrade the package from npm \u2014\n together with every optional first-party package this\n machine has, which ship in lockstep with it \u2014 run\n pending state migrations, rewrite the service unit with\n current node/entrypoint paths, restart. --check reports\n what it would do without doing any of it (exits 1 when\n something is actionable, a companion left behind\n included). Works offline too \u2014 an unreachable npm skips\n the upgrade but still migrates and repairs the unit\n dashboard Open the web dashboard: finds a running daemon (or starts one),\n mints a single-use sign-in link, and opens your browser at it.\n Needs @stratusagent/control-api and @stratusagent/dashboard\n help Show this help message\n version Print this build's version (also: --version, -v)\n\nAgent options:\n --name Agent name (omit to have one generated)\n --instructions The agent's persona/instructions\n --format Output format for agent new: text, json, or soul (a ready-to-edit soul file)\n\nOptions:\n --prompt, -p Prompt to send to the local agent loop\n --stdin Read the prompt from stdin\n --provider Provider to use: anthropic, openai, codex, demo, or the name a plugin registers\n --model Model name for real providers (anthropic default: claude-opus-5-5, openai default: gpt-4.1-mini, codex default: gpt-5.5)\n --base-url Override the provider API base URL\n --soul Run as the agent defined by a soul file (markdown + frontmatter, see examples/souls)\n --config Config file path (run: load settings from it, setup: write it)\n --format Output format: text or json (default: text)\n --no-events Hide event-by-event progress lines in text mode\n --approvals run/chat: tool approval mode \u2014 always, ask (every call), gated (safe tools\n run, the rest ask), or never. Default: gated at a terminal; always\n otherwise, said once on stderr the first time a gated tool runs\n serve: how the daemon reaches a human \u2014 headless (refuse every\n gated call) or remote (ask in Slack). Default headless, or\n the config file's \"approvals.mode\"\n --max-turns Maximum tool turns per run before it wraps up (default: 40)\n --port dashboard: port for a daemon it starts (default: 4123)\n --host dashboard: host for a daemon it starts (default: 127.0.0.1)\n --no-open Do not open the browser automatically\n --gateway agents / skill reload / restart / session rollover / health: a\n running daemon's control API (all but agents default to the\n daemon ~/.stratus/gateway.json names)\n --trust memory list: show only this label; memory reassert: the\n label to record (user, agent, unknown, external)\n --all-unknown memory reassert: every live entry with no recorded origin\n --limit memory search: maximum hits (the store bounds it too)\n --file memory export / import: the JSONL path\n --preserve-trust memory import: keep each entry's recorded trust label\n instead of landing it external\n --token Bearer token for --gateway (default: ~/.stratus/gateway-token)\n --no-reload skill add: install without reloading a running daemon\n -y, --yes template add: install without the review prompt\n --reason restart: why, for the daemon's log\n --drain-timeout restart: seconds the daemon lets in-flight turns finish\n before aborting them (default: 30)\n --no-api serve: do not serve the control API\n --api serve: serve it even where the config says api.enabled: false\n --api-host serve: control API interface (default: 127.0.0.1)\n --api-port serve: control API port (default: 4123, 0 for any free port)\n --log-format serve: text (default) or json \u2014 every structured log record\n as one JSON line on stdout, and no human lines\n --help, -h Show this help message\n --version, -v Print this build's version and exit\n\nConfig file:\n The CLI looks for ./stratus.config.json first, then a path from --config / STRATUS_CONFIG,\n then the global ~/.stratus/config.json written by `stratus setup`.\n A \"soul\" key (or STRATUS_SOUL) points at a soul file so every run uses that agent \u2014\n from ~/.stratus/config.json or a file named with --config; an auto-discovered\n ./stratus.config.json does not get to choose a soul or a systemPrompt.\n\nPlugins (tools):\n Capability is optional: install a package, then list it under \"plugins\" in a\n TRUSTED config (--config, STRATUS_CONFIG, or ~/.stratus/config.json), keyed by\n package name. A plugin runs inside this process, so an auto-discovered\n project-local stratus.config.json may not enable one.\n\n \"plugins\": {\n \"@stratusagent/tool-fs\": { \"enabled\": true, \"roots\": [\"~/notes\"],\n \"agents\": { \"blair\": { \"roots\": [\"~/work/blair\"] } } },\n \"@stratusagent/tool-web\": { \"enabled\": true }\n }\n\n Available: @stratusagent/tool-fs (fs.read/list/search/write),\n @stratusagent/tool-shell (shell.run), @stratusagent/tool-web (web.fetch),\n @stratusagent/tool-browser (browser.goto/read/screenshot/act).\n Installing one grants no agent anything \u2014 each soul lists what it may call.\n\nSoul files:\n A soul file is markdown with frontmatter (name, provider, model, tools, skills, credentials, delegates)\n followed by the agent's persona in prose. See examples/souls/blair.md.\n \"tools\" takes exact names or a whole toolset: tools: [fs.read, fs.search] or\n tools: [fs.*]. Omitted means every registered tool.\n \"delegates\" lists the agent ids this agent may hand work to with agent.delegate,\n or ['*'] for anyone on the roster; omitted means nobody.\n \"skills\" is the same allowlist shape over installed skills (see stratus\n skills), except omitted means none \u2014 a skill is enabled per agent, never\n by being installed.\n";
|
|
1
|
+
export declare const HELP_TEXT = "Stratus Agent CLI\n\nUsage:\n stratus setup\n stratus chat\n stratus chat --soul ./examples/souls/blair.md\n stratus run --prompt \"Use the demo tool\"\n stratus run \"Say hello\"\n ANTHROPIC_API_KEY=... stratus run --provider anthropic \"Say hello\"\n stratus run --soul ./examples/souls/blair.md \"Say hello\"\n echo \"Use the echo tool\" | stratus run --stdin\n STRATUS_PROVIDER=openai OPENAI_API_KEY=... stratus run \"Say hello\"\n stratus run --config ./stratus.config.json --provider openai \"Say hello\"\n stratus agents\n stratus agents --gateway http://127.0.0.1:4123\n stratus template add ./examples/templates/example\n stratus template add stratuslabs/template-oncall --yes\n stratus skill add stratuslabs/skill-code-review\n stratus skill add ./my-skills --skill code-review --agent blair\n stratus skill validate ./my-skill\n stratus skills\n stratus plugins\n stratus plugins --format json\n stratus skill reload\n stratus restart\n stratus health\n stratus schedules\n stratus schedules cancel <id>\n stratus grants blair\n stratus grants revoke blair --tool web.fetch\n stratus memory list blair\n stratus memory search blair deploy pipeline\n stratus memory pin blair blair:memory:...\n stratus memory export blair --file blair-memory.jsonl\n stratus memory reassert blair --trust user --all-unknown\n stratus session rollover slack:blair:T01ABCDEF:D07GHIJKL\n printf %s \"$BRAVE_KEY\" | stratus credential set search.apiKey\n stratus credentials\n stratus channel set imessage --agent blair apiKey apiSecret\n stratus channels\n stratus doctor\n stratus update\n stratus update --check\n stratus --version\n stratus service install\n stratus service status\n stratus logs -f\n stratus logs --agent blair -n 200\n stratus dashboard\n stratus dashboard --port 4123 --host 0.0.0.0 --no-open\n\nCommands:\n setup Menu-driven onboarding: pick a provider, sign in (Claude\n subscription or API key), create your agent, enable the\n plugins it may use, connect it to Slack or a channel a\n plugin contributes, choose who\n approves gated calls unattended, and test it \u2014 settings\n go to ~/.stratus/config.json,\n sign-ins and channel tokens to ~/.stratus/credentials.json\n (0600). Save & finish offers to install any optional\n package your answers imply (the Slack channel, the control\n API and dashboard) before it starts the daemon\n chat Talk with your agent \u2014 the conversation persists across turns\n and remembered facts accumulate; /exit or Ctrl+C to leave\n run Execute one local Stratus Agent session\n serve Run stratusd, the always-on gateway: durable sessions, the\n whole roster live at once (each agent on its own provider),\n delegation, and a watchdog \u2014 one per home (it refuses to\n start over a daemon already serving ~/.stratus, and exits\n 78 on a trusted config that will not load), and\n Ctrl+C / SIGTERM drains cleanly\n (--idle-timeout <seconds>, --approvals <headless|remote>,\n --no-events, --no-log-file, --config <path>); everything it\n says is also written to ~/.stratus/logs, which\n \"stratus logs\" reads (--log-format json puts those same\n records on stdout as JSON lines instead of the human\n ones, for docker logs and journald). With\n @stratusagent/control-api installed it also serves the\n HTTP + WebSocket control API on 127.0.0.1:4123 (--no-api,\n --api-host, --api-port, or the config file's \"api\" block)\n service Keep stratusd running under launchd (macOS) or systemd\n (Linux): install, uninstall, status, start, stop.\n Installing starts it now and at every login\n (--no-login installs without the login trigger,\n --config <path> pins the daemon to one config file)\n logs Read the daemon's log from any terminal: -f to follow,\n -n <count> for backlog, --agent / --session to filter,\n --format json for the raw records\n template add Install a template \u2014 a folder (or GitHub repo) holding\n soul files, skills, and the plugin config they need. Prints\n every agent, skill, plugin package and config key it would\n add, then asks; --yes installs without asking, --force\n replaces an agent or skill already installed under the same\n name. Plugin packages the template's config.json names are\n installed with npm install -g and enabled in\n ~/.stratus/config.json, which needs a restart to take\n effect. See docs/guides/templates.md for the layout\n skill add Install skills from a GitHub repo (owner/repo or URL) or a\n local path into ~/.stratus/skills \u2014 whole directories, one\n per skill; works with skills published for other agents\n (skills.sh-style repos). Installed is not enabled: a soul\n opts in via skills:, or pass --agent <id> to enable now.\n --skill <id> picks from a multi-skill repo (repeatable),\n --force replaces an already-installed id. A skill that\n does not conform to the Agent Skills spec is refused,\n naming what is wrong; one that installs with caveats\n (fields another host owns, a bundled scripts/) says so.\n A running daemon reloads its skills afterwards, no\n restart (--no-reload skips that)\n skill validate Check a skill directory, a directory of skills, or an\n installed skill id against the Agent Skills spec \u2014 the\n same check \"skill add\" runs, so what validates installs.\n Exit 1 if anything would be refused\n skills List installed skills and which agents enable each, after\n the built-in stratus skill every agent has\n (also: stratus skill list)\n plugins What this machine's plugins are, and where the chain from\n installed to callable breaks: whether the package resolves,\n whether a trusted config enables it, which agents' tools:\n lists select each tool it declares, and what the approval\n policy does with a gated call. Read from each package's\n manifest, so nothing is imported and no plugin's setup runs\n (--format json, --config <path>; also: stratus plugin list)\n skill reload Ask the running daemon to re-read ~/.stratus/skills \u2014 for a\n skill edited or removed by hand. A skill that will not\n load refuses the whole reload and the previous set keeps\n serving; nothing becomes reachable to an agent whose soul\n does not list it\n restart Ask the running daemon for an announced restart \u2014 what a\n plugin change needs: it refuses new turns, lets in-flight\n ones finish for up to --drain-timeout <seconds> (default\n 30), then comes back with sessions, schedules, and\n channels intact, under the service manager or not\n health Ask the running daemon whether it is serving: exit 0 and\n one line (version, uptime, agents, sessions, pending\n approvals), or exit 1 and one sentence saying why not.\n For a container HEALTHCHECK, a Kubernetes probe, or a\n monitoring script (--gateway, --token, --format json)\n credential set Store a named credential an agent can resolve \u2014 a search\n backend asks for search.apiKey. The value is read from\n stdin, never from a flag, so it stays out of your shell\n history: printf %s \"$KEY\" | stratus credential set\n search.apiKey. --agent <id> stores one agent's own key,\n which outranks the shared entry for that agent. Storing\n grants nothing: the soul still needs credentials: [name]\n credentials List stored credential names and which agents have their\n own \u2014 names only, never values (also: credential list)\n credential remove\n Forget one (--agent <id> for that agent's own entry)\n channel set Store a channel plugin's secrets for one agent: stratus\n channel set <kind> --agent <id> <name>... asks for each\n value without echoing it, or reads one per line from\n stdin; never from a flag. Replaces what that agent had on\n that channel. Slack's are appToken and botToken, the\n default when no names are given. Read at the next start\n channel list Which agents have secrets stored for which channel \u2014\n names only, never values (also: channels)\n channel remove Forget one agent's secrets for one channel\n schedules List every schedule the fleet has set \u2014 cadence, prompt,\n pre-authorized destination, next firing \u2014 straight from the\n daemon's database (--format json). \"stratus schedules\n cancel <id>\" stops the next firing and revokes the\n destination that was approved with it\n (also: stratus schedule list / schedule cancel <id>)\n grants What an agent may do unattended beyond the built-in safe\n list \u2014 its standing tool grants, command scopes, and\n sites, each an \"always allow\" somebody answered. From the\n running daemon when one is serving (--gateway, --token),\n else from ~/.stratus/agents/<id>/whitelist.json; --format\n json. \"stratus grants revoke <agent> --tool <name> |\n --scope \"<command>\" | --origin <origin>\" takes one back,\n and a running daemon stops honouring it at once. Also\n lists approvals.commands from config: the daemon's own\n when one is serving, else the file --config names (or\n the one stratus serve would find)\n memory list Show an agent's live memory with the trust label each\n entry carries \u2014 user, agent, unknown (no recorded origin,\n or written in a conversation with someone not configured\n as a principal), external (recorded after reading content\n from outside) \u2014 plus what is pinned and what is outside\n its validity window. --trust <level> filters; --format json\n memory search Search one agent's memory the way the agent does: plain\n words, every one of which must appear in a fact or in\n what the fact is about. Expired facts are found and\n marked. --limit <n>; --format json\n memory forget Retire entries by id. They leave the prompt and recall\n and stay in the record, where audit still shows them\n memory audit Every entry the agent ever wrote, forgotten ones\n included, with which entry replaced which\n memory pin Keep entries in the agent's prompt every turn:\n stratus memory pin <agent> <id>.... The pinned core is\n capped at 2 KiB of content and refuses rather than\n evicting, so nothing already pinned is ever dropped.\n \"memory unpin\" takes one back\n memory export Write an agent's entries to JSONL (--file <path>, else\n stdout) \u2014 for moving an agent to another machine\n memory import Read that JSONL back into an agent (--file <path>).\n Imported entries land external, because a file from\n elsewhere may repeat what a stranger wrote;\n --preserve-trust keeps each recorded label instead, for\n a file you vouch for\n memory reassert Re-label entries as an operator: stratus memory reassert\n <agent> --trust user <id>..., or --all-unknown for every\n entry with no recorded origin (the upgrade case; an\n entry recorded unknown \u2014 a stranger's message, a shell\n command \u2014 is left for you to name by id). Appends\n a record to ~/.stratus/memory.jsonl; a running daemon\n sees it on its next turn. The only way a label ever\n rises \u2014 no tool can do this\n session rollover Start a conversation over under the same session id,\n archiving its transcript so far \u2014 for a long-lived\n session (a Slack DM) that predates provenance tracking\n and would otherwise write unknown forever. Asks the\n running daemon (--gateway, --token)\n agent new Create an agent identity (generates a human-ish name + avatar theme)\n agents List your agents: who they are, where their souls live, what\n they run on, what they remember (also: stratus agent list).\n --gateway <url> asks a running daemon instead of resolving\n locally, authenticating with ~/.stratus/gateway-token\n (override with --token or STRATUS_GATEWAY_TOKEN)\n doctor Show what a run would use right now \u2014 provider, model, soul \u2014\n and which file or environment variable decided each, then\n flag anything that would surprise you (--format json)\n update The whole upgrade dance, in the order that cannot lose\n data: stop stratusd, upgrade the package from npm \u2014\n together with every optional first-party package this\n machine has, which ship in lockstep with it \u2014 run\n pending state migrations, rewrite the service unit with\n current node/entrypoint paths, restart. --check reports\n what it would do without doing any of it (exits 1 when\n something is actionable, a companion left behind\n included). Works offline too \u2014 an unreachable npm skips\n the upgrade but still migrates and repairs the unit\n dashboard Open the web dashboard: finds a running daemon (or starts one),\n mints a single-use sign-in link, and opens your browser at it.\n Needs @stratusagent/control-api and @stratusagent/dashboard\n help Show this help message\n version Print this build's version (also: --version, -v)\n\nAgent options:\n --name Agent name (omit to have one generated)\n --instructions The agent's persona/instructions\n --format Output format for agent new: text, json, or soul (a ready-to-edit soul file)\n\nOptions:\n --prompt, -p Prompt to send to the local agent loop\n --stdin Read the prompt from stdin\n --provider Provider to use: anthropic, openai, codex, demo, or the name a plugin registers\n --model Model name for real providers (anthropic default: claude-opus-5-5, openai default: gpt-4.1-mini, codex default: gpt-5.5)\n --base-url Override the provider API base URL\n --soul Run as the agent defined by a soul file (markdown + frontmatter, see examples/souls)\n --config Config file path (run: load settings from it, setup: write it)\n --format Output format: text or json (default: text)\n --no-events Hide event-by-event progress lines in text mode\n --approvals run/chat: tool approval mode \u2014 always, ask (every call), gated (safe tools\n run, the rest ask), or never. Default: gated at a terminal; always\n otherwise, said once on stderr the first time a gated tool runs\n serve: how the daemon reaches a human \u2014 headless (refuse every\n gated call) or remote (ask in Slack). Default headless, or\n the config file's \"approvals.mode\"\n --max-turns Maximum tool turns per run before it wraps up (default: 40)\n --port dashboard: port for a daemon it starts (default: 4123)\n --host dashboard: host for a daemon it starts (default: 127.0.0.1)\n --no-open Do not open the browser automatically\n --gateway agents / skill reload / restart / session rollover / health: a\n running daemon's control API (all but agents default to the\n daemon ~/.stratus/gateway.json names)\n --trust memory list: show only this label; memory reassert: the\n label to record (user, agent, unknown, external)\n --all-unknown memory reassert: every live entry with no recorded origin\n --limit memory search: maximum hits (the store bounds it too)\n --file memory export / import: the JSONL path\n --preserve-trust memory import: keep each entry's recorded trust label\n instead of landing it external\n --token Bearer token for --gateway (default: ~/.stratus/gateway-token)\n --no-reload skill add: install without reloading a running daemon\n -y, --yes template add: install without the review prompt\n --reason restart: why, for the daemon's log\n --drain-timeout restart: seconds the daemon lets in-flight turns finish\n before aborting them (default: 30)\n --no-api serve: do not serve the control API\n --api serve: serve it even where the config says api.enabled: false\n --api-host serve: control API interface (default: 127.0.0.1)\n --api-port serve: control API port (default: 4123, 0 for any free port)\n --log-format serve: text (default) or json \u2014 every structured log record\n as one JSON line on stdout, and no human lines\n --help, -h Show this help message\n --version, -v Print this build's version and exit\n\nConfig file:\n The CLI looks for ./stratus.config.json first, then a path from --config / STRATUS_CONFIG,\n then the global ~/.stratus/config.json written by `stratus setup`.\n A \"soul\" key (or STRATUS_SOUL) points at a soul file so every run uses that agent \u2014\n from ~/.stratus/config.json or a file named with --config; an auto-discovered\n ./stratus.config.json does not get to choose a soul or a systemPrompt.\n\nPlugins (tools):\n Capability is optional: install a package, then list it under \"plugins\" in a\n TRUSTED config (--config, STRATUS_CONFIG, or ~/.stratus/config.json), keyed by\n package name. A plugin runs inside this process, so an auto-discovered\n project-local stratus.config.json may not enable one.\n\n \"plugins\": {\n \"@stratusagent/tool-fs\": { \"enabled\": true, \"roots\": [\"~/notes\"],\n \"agents\": { \"blair\": { \"roots\": [\"~/work/blair\"] } } },\n \"@stratusagent/tool-web\": { \"enabled\": true }\n }\n\n Available: @stratusagent/tool-fs (fs.read/list/search/write),\n @stratusagent/tool-shell (shell.run), @stratusagent/tool-web (web.fetch),\n @stratusagent/tool-browser (browser.goto/read/screenshot/act).\n Installing one grants no agent anything \u2014 each soul lists what it may call.\n\nSoul files:\n A soul file is markdown with frontmatter (name, provider, model, tools, skills, credentials, delegates)\n followed by the agent's persona in prose. See examples/souls/blair.md.\n \"tools\" takes exact names or a whole toolset: tools: [fs.read, fs.search] or\n tools: [fs.*]. Omitted means every registered tool.\n \"delegates\" lists the agent ids this agent may hand work to with agent.delegate,\n or ['*'] for anyone on the roster; omitted means nobody.\n \"skills\" is the same allowlist shape over installed skills (see stratus\n skills), except omitted means none \u2014 a skill is enabled per agent, never\n by being installed.\n";
|
|
2
2
|
//# sourceMappingURL=help.d.ts.map
|
package/dist/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,+2oBAmUrB,CAAC"}
|
package/dist/help.js
CHANGED
|
@@ -171,7 +171,10 @@ Commands:
|
|
|
171
171
|
else from ~/.stratus/agents/<id>/whitelist.json; --format
|
|
172
172
|
json. "stratus grants revoke <agent> --tool <name> |
|
|
173
173
|
--scope "<command>" | --origin <origin>" takes one back,
|
|
174
|
-
and a running daemon stops honouring it at once
|
|
174
|
+
and a running daemon stops honouring it at once. Also
|
|
175
|
+
lists approvals.commands from config: the daemon's own
|
|
176
|
+
when one is serving, else the file --config names (or
|
|
177
|
+
the one stratus serve would find)
|
|
175
178
|
memory list Show an agent's live memory with the trust label each
|
|
176
179
|
entry carries — user, agent, unknown (no recorded origin,
|
|
177
180
|
or written in a conversation with someone not configured
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAwP8C,uBAAuB,kDAAkD,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2ElK,CAAC"}
|
package/dist/npm.d.ts
CHANGED
|
@@ -62,6 +62,6 @@ export declare const defaultPackageInstaller: PackageInstaller;
|
|
|
62
62
|
* decides whether somebody's Slack adapter gets upgraded.
|
|
63
63
|
*/
|
|
64
64
|
export declare const defaultInstalledVersionReader: InstalledVersionReader;
|
|
65
|
-
export declare const CLI_VERSION = "0.11.
|
|
65
|
+
export declare const CLI_VERSION = "0.11.9";
|
|
66
66
|
export declare const CLI_PACKAGE_NAME = "@stratusagent/cli";
|
|
67
67
|
//# sourceMappingURL=npm.d.ts.map
|
package/dist/npm.js
CHANGED
|
@@ -199,6 +199,6 @@ export const defaultInstalledVersionReader = async (specifier) => {
|
|
|
199
199
|
const { installedPackageVersion } = await import('@stratusagent/plugins');
|
|
200
200
|
return installedPackageVersion(specifier, { resolve: (target) => import.meta.resolve(target) });
|
|
201
201
|
};
|
|
202
|
-
export const CLI_VERSION = '0.11.
|
|
202
|
+
export const CLI_VERSION = '0.11.9';
|
|
203
203
|
export const CLI_PACKAGE_NAME = '@stratusagent/cli';
|
|
204
204
|
//# sourceMappingURL=npm.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type CommandScope } from '@stratusagent/permissions';
|
|
2
|
+
import { type ApprovalsConfig } from '@stratusagent/state';
|
|
3
|
+
/**
|
|
4
|
+
* The commands an operator declared in `approvals.commands` (every agent)
|
|
5
|
+
* and `approvals.agents.<id>.commands` (one agent), as the scopes the
|
|
6
|
+
* permission engine matches. Each declared command runs without asking.
|
|
7
|
+
*
|
|
8
|
+
* Read from the config the daemon started with and never written anywhere:
|
|
9
|
+
* the whitelist file holds what somebody answered "always allow" to, this
|
|
10
|
+
* is what the operator wrote down, and keeping them apart is what lets
|
|
11
|
+
* `stratus grants revoke` say truthfully that a config entry is not its to
|
|
12
|
+
* take back.
|
|
13
|
+
*
|
|
14
|
+
* An entry that is not a command prefix (a flag, an operator, a glob) is
|
|
15
|
+
* skipped and reported once through `warn`. Skipping narrows what runs
|
|
16
|
+
* unattended, which is the direction to fail in; refusing to start would
|
|
17
|
+
* turn a typo in a convenience list into an outage.
|
|
18
|
+
*/
|
|
19
|
+
export interface OperatorCommands {
|
|
20
|
+
scopesFor(agentId: string): CommandScope[];
|
|
21
|
+
/** The entries in force for an agent, as written. */
|
|
22
|
+
declaredFor(agentId: string): string[];
|
|
23
|
+
/** The startup line naming what runs without asking because config says so. */
|
|
24
|
+
describe(): string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export declare const createOperatorCommands: (approvals: ApprovalsConfig, warn: (line: string) => void) => OperatorCommands;
|
|
27
|
+
/**
|
|
28
|
+
* Whether config entries still let a command run, judged the way the policy
|
|
29
|
+
* judges it: each entry's parsed scope, limits and all, matched against the
|
|
30
|
+
* command. `agentboard` covers `agentboard task`; `head` does not cover
|
|
31
|
+
* `head --help`, because the built-in limits on `head` come with the entry.
|
|
32
|
+
*/
|
|
33
|
+
export declare const configCovers: (entries: readonly string[], command: string) => boolean;
|
|
34
|
+
//# sourceMappingURL=operator-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator-commands.d.ts","sourceRoot":"","sources":["../src/operator-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAC3C,qDAAqD;IACrD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,eAAO,MAAM,sBAAsB,GACjC,WAAW,eAAe,EAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAC3B,gBA0CF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,KAAG,OAM1E,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { analyzeCommand, commandScopeFromPrefix, matchesScope } from '@stratusagent/permissions';
|
|
2
|
+
import { resolveAgentApprovals } from '@stratusagent/state';
|
|
3
|
+
export const createOperatorCommands = (approvals, warn) => {
|
|
4
|
+
const parsed = new Map();
|
|
5
|
+
const scopeOf = (entry) => {
|
|
6
|
+
if (!parsed.has(entry)) {
|
|
7
|
+
const result = commandScopeFromPrefix(entry);
|
|
8
|
+
if ('reason' in result) {
|
|
9
|
+
warn(`approvals.commands: ignoring "${entry}": ${result.reason}`);
|
|
10
|
+
parsed.set(entry, undefined);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
parsed.set(entry, result.scope);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return parsed.get(entry);
|
|
17
|
+
};
|
|
18
|
+
// Only the entries that took effect. A rejected one is reported once as
|
|
19
|
+
// ignored, and listing it again as allowed would contradict that.
|
|
20
|
+
const declaredFor = (agentId) => (resolveAgentApprovals(approvals, agentId).commands ?? []).filter((entry) => scopeOf(entry) !== undefined);
|
|
21
|
+
// Every entry is checked up front, so a bad one is reported when the
|
|
22
|
+
// daemon starts, not the first time some agent happens to run a command.
|
|
23
|
+
for (const entry of [...(approvals.commands ?? []), ...Object.values(approvals.agents ?? {}).flatMap((agent) => agent.commands ?? [])]) {
|
|
24
|
+
scopeOf(entry);
|
|
25
|
+
}
|
|
26
|
+
const effective = (entries) => (entries ?? []).filter((entry) => scopeOf(entry) !== undefined);
|
|
27
|
+
return {
|
|
28
|
+
declaredFor,
|
|
29
|
+
scopesFor: (agentId) => declaredFor(agentId)
|
|
30
|
+
.map(scopeOf)
|
|
31
|
+
.filter((scope) => scope !== undefined),
|
|
32
|
+
describe: () => {
|
|
33
|
+
const parts = [];
|
|
34
|
+
if (effective(approvals.commands).length > 0) {
|
|
35
|
+
parts.push(`${effective(approvals.commands).join(', ')} for every agent`);
|
|
36
|
+
}
|
|
37
|
+
for (const [agentId, agent] of Object.entries(approvals.agents ?? {})) {
|
|
38
|
+
if (effective(agent.commands).length > 0) {
|
|
39
|
+
parts.push(`${effective(agent.commands).join(', ')} for ${agentId}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return parts.length === 0 ? undefined : `approvals: run without asking, from config: ${parts.join('; ')}`;
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Whether config entries still let a command run, judged the way the policy
|
|
48
|
+
* judges it: each entry's parsed scope, limits and all, matched against the
|
|
49
|
+
* command. `agentboard` covers `agentboard task`; `head` does not cover
|
|
50
|
+
* `head --help`, because the built-in limits on `head` come with the entry.
|
|
51
|
+
*/
|
|
52
|
+
export const configCovers = (entries, command) => {
|
|
53
|
+
const analysis = analyzeCommand(command.trim());
|
|
54
|
+
return entries.some((entry) => {
|
|
55
|
+
const parsed = commandScopeFromPrefix(entry);
|
|
56
|
+
return 'scope' in parsed && matchesScope(analysis, parsed.scope);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=operator-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator-commands.js","sourceRoot":"","sources":["../src/operator-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.d.ts
CHANGED
|
@@ -158,6 +158,12 @@ export interface ParsedSchedulesCommand {
|
|
|
158
158
|
}
|
|
159
159
|
export interface ParsedGrantsCommand {
|
|
160
160
|
command: 'grants';
|
|
161
|
+
/**
|
|
162
|
+
* The config a stopped daemon would start with, for the `approvals.commands`
|
|
163
|
+
* part of the listing. A serving daemon reports its own; this only matters
|
|
164
|
+
* when the files are read. Default: what `stratus serve` would find.
|
|
165
|
+
*/
|
|
166
|
+
configPath?: string;
|
|
161
167
|
action: 'list' | 'revoke';
|
|
162
168
|
agentId: string;
|
|
163
169
|
/** revoke: exactly one of the three names what goes. */
|