@stratusagent/cli 0.11.7 → 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.
Files changed (72) hide show
  1. package/README.md +5 -2
  2. package/dist/approvals.js +1 -1
  3. package/dist/approvals.js.map +1 -1
  4. package/dist/autonomy.d.ts +13 -0
  5. package/dist/autonomy.d.ts.map +1 -0
  6. package/dist/autonomy.js +24 -0
  7. package/dist/autonomy.js.map +1 -0
  8. package/dist/commands/grants.d.ts.map +1 -1
  9. package/dist/commands/grants.js +83 -4
  10. package/dist/commands/grants.js.map +1 -1
  11. package/dist/commands/health.d.ts +18 -0
  12. package/dist/commands/health.d.ts.map +1 -0
  13. package/dist/commands/health.js +95 -0
  14. package/dist/commands/health.js.map +1 -0
  15. package/dist/commands/serve.d.ts.map +1 -1
  16. package/dist/commands/serve.js +95 -21
  17. package/dist/commands/serve.js.map +1 -1
  18. package/dist/commands/setup.d.ts.map +1 -1
  19. package/dist/commands/setup.js +7 -1
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/update.d.ts +30 -1
  22. package/dist/commands/update.d.ts.map +1 -1
  23. package/dist/commands/update.js +169 -21
  24. package/dist/commands/update.js.map +1 -1
  25. package/dist/daemon.d.ts +3 -1
  26. package/dist/daemon.d.ts.map +1 -1
  27. package/dist/daemon.js +4 -1
  28. package/dist/daemon.js.map +1 -1
  29. package/dist/environment.d.ts +11 -0
  30. package/dist/environment.d.ts.map +1 -1
  31. package/dist/help.d.ts +1 -1
  32. package/dist/help.d.ts.map +1 -1
  33. package/dist/help.js +21 -8
  34. package/dist/help.js.map +1 -1
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/logs.d.ts +20 -0
  40. package/dist/logs.d.ts.map +1 -1
  41. package/dist/logs.js +37 -0
  42. package/dist/logs.js.map +1 -1
  43. package/dist/main.d.ts +1 -1
  44. package/dist/main.d.ts.map +1 -1
  45. package/dist/main.js +20 -3
  46. package/dist/main.js.map +1 -1
  47. package/dist/npm.d.ts +3 -2
  48. package/dist/npm.d.ts.map +1 -1
  49. package/dist/npm.js +5 -2
  50. package/dist/npm.js.map +1 -1
  51. package/dist/operator-commands.d.ts +34 -0
  52. package/dist/operator-commands.d.ts.map +1 -0
  53. package/dist/operator-commands.js +59 -0
  54. package/dist/operator-commands.js.map +1 -0
  55. package/dist/parse.d.ts +21 -1
  56. package/dist/parse.d.ts.map +1 -1
  57. package/dist/parse.js +47 -0
  58. package/dist/parse.js.map +1 -1
  59. package/dist/plugin-catalog.d.ts.map +1 -1
  60. package/dist/plugin-catalog.js +1 -0
  61. package/dist/plugin-catalog.js.map +1 -1
  62. package/dist/runtime.d.ts.map +1 -1
  63. package/dist/runtime.js +3 -1
  64. package/dist/runtime.js.map +1 -1
  65. package/dist/supervisor.d.ts.map +1 -1
  66. package/dist/supervisor.js +7 -1
  67. package/dist/supervisor.js.map +1 -1
  68. package/dist/trusted-config.d.ts +12 -0
  69. package/dist/trusted-config.d.ts.map +1 -1
  70. package/dist/trusted-config.js +41 -0
  71. package/dist/trusted-config.js.map +1 -1
  72. package/package.json +25 -25
@@ -1,5 +1,8 @@
1
+ import { spawn } from 'node:child_process';
1
2
  import { readFile, writeFile } from 'node:fs/promises';
2
- import { newerStateMessage, pendingStateMigrations, readStateStamp, applyPerAgentWorkspaces, workspaceRepairPending, runStateMigrations, STATE_SCHEMA_VERSION, } from '@stratusagent/state';
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";
@@ -39,8 +42,8 @@ import { readCompanions } from "../companions.js";
39
42
  * marked migrations stay pending and the operator is told what to stop —
40
43
  * a deferral is recoverable, and moving live state is not.
41
44
  */
42
- const claimExclusiveHome = async (env) => {
43
- const { claimHome, HomeClaimedError } = await import('@stratusagent/gateway');
45
+ const claimExclusiveHome = async (env, gateway) => {
46
+ const { claimHome, HomeClaimedError } = gateway;
44
47
  let claim;
45
48
  try {
46
49
  claim = claimHome(env);
@@ -57,7 +60,99 @@ const claimExclusiveHome = async (env) => {
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
- if (stateNewer) {
146
- writeLine(streams.stderr, newerStateMessage(stamp.schemaVersion));
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
- writeLine(streams.stderr, `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.`);
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,13 +272,37 @@ 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
- writeLine(streams.stderr, `Not updating: ${unitError.message}`);
165
- writeLine(streams.stderr, 'The updated daemon would refuse to start on it, so nothing was stopped. Fix the file and run `stratus update` again.');
166
- return 1;
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
- const wasRunning = status?.running === true;
170
- if (wasRunning) {
283
+ // Loaded before npm replaces anything on disk. Everything this process
284
+ // imported statically is the old build, held in the module cache; a
285
+ // module first imported *after* the install is read from the new files,
286
+ // and its own imports of a package already loaded resolve to the old
287
+ // copy in that cache. 0.11.7's gateway imports `FileLockHeldError` from
288
+ // `@stratusagent/state`, which a 0.11.6 process has loaded without it,
289
+ // so every upgrade to 0.11.7 failed its migrations on a missing export.
290
+ // Loaded here, the whole run stays the old build, as the line after the
291
+ // install says it is. And before the stop, not just before the install:
292
+ // a load that fails then leaves the daemon serving, where one failing
293
+ // after the stop sat outside the recovery that restarts it.
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) {
171
306
  // No daemon may hold the session database while state migrates — this
172
307
  // bracket is the one place an update could otherwise lose data.
173
308
  out('Stopping stratusd for the update…');
@@ -190,7 +325,7 @@ export const runUpdate = async (command, streams, env) => {
190
325
  // printing a line promising a version npm never confirmed. Staleness is
191
326
  // still *reported* offline — it is measured against this build, which
192
327
  // needs no network — so `--check` says what an online update would fix.
193
- const upgrading = latest === undefined ? [] : [
328
+ const upgrading = latest === undefined || resume !== undefined ? [] : [
194
329
  ...(upgradeAvailable ? [`${CLI_PACKAGE_NAME}@latest`] : []),
195
330
  // `@latest` only where latest IS the target. Where this build is the
196
331
  // newer one, `@latest` would install the very version the target just
@@ -206,17 +341,30 @@ export const runUpdate = async (command, streams, env) => {
206
341
  out(`Upgrading ${entry.name} ${entry.version} → ${target}…`);
207
342
  }
208
343
  const installed = await (env.packageInstaller ?? defaultPackageInstaller)(upgrading);
209
- if (installed.ok) {
210
- // This process is still the old build; migrations the new version
211
- // adds run when it first starts — which the restart below is.
212
- out('Upgraded. Migrations the new version adds run on its first start.');
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.');
213
361
  }
214
362
  else {
215
363
  upgradeFailed = true;
216
364
  writeLine(streams.stderr, `npm install failed: ${installed.message || 'unknown error'} — continuing with migrations and the unit rewrite.`);
217
365
  }
218
366
  }
219
- else {
367
+ else if (resume === undefined) {
220
368
  out(latest === undefined
221
369
  ? 'Skipping the package upgrade — npm did not answer.'
222
370
  : 'Package already up to date.');
@@ -238,7 +386,7 @@ export const runUpdate = async (command, streams, env) => {
238
386
  let claim;
239
387
  let applied;
240
388
  try {
241
- claim = await claimExclusiveHome(env);
389
+ claim = await claimExclusiveHome(env, gateway);
242
390
  if (!claim.held) {
243
391
  writeLine(streams.stderr, `Another stratusd is serving this home (${claim.reason}), so the per-agent state move is left pending — `
244
392
  + 'everything else still applied. Stop that daemon and run `stratus update` again to finish it.');
@@ -250,8 +398,8 @@ export const runUpdate = async (command, streams, env) => {
250
398
  // holding the home comes past. This is the remedy for a home that has
251
399
  // no daemon at all — `stratus run` takes no claim, so it cannot do this,
252
400
  // and `stratus doctor` names it and points here.
253
- if (claim.held && await workspaceRepairPending(env)) {
254
- const repaired = await applyPerAgentWorkspaces(env);
401
+ if (claim.held) {
402
+ const repaired = await repairWorkspacesIfPending(env);
255
403
  if (repaired !== undefined) {
256
404
  writeLine(streams.stdout, `workspace layout: ${repaired}`);
257
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/daemon.d.ts CHANGED
@@ -24,7 +24,9 @@ interface RunningGatewayTarget {
24
24
  */
25
25
  export declare const runningGatewayBase: (env: CliEnvironment, target: RunningGatewayTarget) => Promise<string | undefined>;
26
26
  /** One authenticated call to a daemon's control API, with the network and auth failures said plainly. */
27
- export declare const callRunningGateway: (env: CliEnvironment, target: RunningGatewayTarget, base: string, pathname: string, body?: Record<string, unknown>, method?: "GET" | "POST") => Promise<Response>;
27
+ export declare const callRunningGateway: (env: CliEnvironment, target: RunningGatewayTarget, base: string, pathname: string, body?: Record<string, unknown>, method?: "GET" | "POST",
28
+ /** Gives up on the call — a probe must answer in bounded time even when the daemon cannot. */
29
+ signal?: AbortSignal) => Promise<Response>;
28
30
  /** The API's own sentence for a failure, or the status when it sent none. */
29
31
  export declare const gatewayErrorMessage: (response: Response) => Promise<string>;
30
32
  export declare const noRunningDaemonMessage: (env: CliEnvironment) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,cAAc,EACnB,UAAU,MAAM,GAAG,SAAS,KAC3B,OAAO,CAAC,MAAM,CAgBhB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,aAAa,GAAI,KAAK,cAAc,KAAG,kBAQlD,CAAC;AAEH,gEAAgE;AAChE,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,KAAK,cAAc,EAAE,QAAQ,oBAAoB,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAMtH,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,GAC7B,KAAK,cAAc,EACnB,QAAQ,oBAAoB,EAC5B,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAQ,KAAK,GAAG,MAAe,KAC9B,OAAO,CAAC,QAAQ,CA0BlB,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,GAAU,UAAU,QAAQ,KAAG,OAAO,CAAC,MAAM,CAU5E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,KAAK,cAAc,KAAG,MAE8C,CAAC;AAE5G,uEAAuE;AACvE,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAS1F,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,GAC3B,KAAK,cAAc,EACnB,MAAM,MAAM,EACZ,WAAW,OAAO,KAAK,KACtB,OAAO,CAAC,OAAO,CAUjB,CAAC;AAeF;;;;;;;;;;;GAWG;AACH;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,OAAO,CAmB9E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,MAAM,CAS1E,CAAC"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,cAAc,EACnB,UAAU,MAAM,GAAG,SAAS,KAC3B,OAAO,CAAC,MAAM,CAgBhB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,aAAa,GAAI,KAAK,cAAc,KAAG,kBAQlD,CAAC;AAEH,gEAAgE;AAChE,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,KAAK,cAAc,EAAE,QAAQ,oBAAoB,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAMtH,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,GAC7B,KAAK,cAAc,EACnB,QAAQ,oBAAoB,EAC5B,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAQ,KAAK,GAAG,MAAe;AAC/B,8FAA8F;AAC9F,SAAS,WAAW,KACnB,OAAO,CAAC,QAAQ,CA2BlB,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,GAAU,UAAU,QAAQ,KAAG,OAAO,CAAC,MAAM,CAU5E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,KAAK,cAAc,KAAG,MAE8C,CAAC;AAE5G,uEAAuE;AACvE,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAS1F,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,GAC3B,KAAK,cAAc,EACnB,MAAM,MAAM,EACZ,WAAW,OAAO,KAAK,KACtB,OAAO,CAAC,OAAO,CAUjB,CAAC;AAeF;;;;;;;;;;;GAWG;AACH;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,OAAO,CAmB9E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,MAAM,CAS1E,CAAC"}
package/dist/daemon.js CHANGED
@@ -48,7 +48,9 @@ export const runningGatewayBase = async (env, target) => {
48
48
  return info?.url.replace(/\/+$/, '');
49
49
  };
50
50
  /** One authenticated call to a daemon's control API, with the network and auth failures said plainly. */
51
- export const callRunningGateway = async (env, target, base, pathname, body, method = 'POST') => {
51
+ export const callRunningGateway = async (env, target, base, pathname, body, method = 'POST',
52
+ /** Gives up on the call — a probe must answer in bounded time even when the daemon cannot. */
53
+ signal) => {
52
54
  const token = await gatewayToken(env, target.token);
53
55
  const fetchImpl = env.fetch ?? globalThis.fetch;
54
56
  if (typeof fetchImpl !== 'function') {
@@ -63,6 +65,7 @@ export const callRunningGateway = async (env, target, base, pathname, body, meth
63
65
  ...(body ? { 'content-type': 'application/json' } : {}),
64
66
  },
65
67
  ...(body ? { body: JSON.stringify(body) } : {}),
68
+ ...(signal !== undefined ? { signal } : {}),
66
69
  });
67
70
  }
68
71
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,18 @@ export interface CliEnvironment {
55
55
  packageVersionFetcher?: PackageVersionFetcher;
56
56
  /** Reads the version an installed package declares. Injected so tests do not assert on their own node_modules. */
57
57
  installedVersionReader?: InstalledVersionReader;
58
+ /** Loads `@stratusagent/gateway` for `stratus update` (tests observe when). Default a dynamic `import()`. */
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>;
58
67
  }
68
+ /** Whether the daemon was running when the update that stopped it began. */
69
+ export type UpdateResume = 'running' | 'stopped';
59
70
  /**
60
71
  * A dashboard session as it crosses the restart hand-off: structurally the
61
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":"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"}
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 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. With @stratusagent/control-api\n installed it also serves the HTTP + WebSocket control API\n on 127.0.0.1:4123 (--no-api, --api-host, --api-port, or\n 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 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, 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: a running\n daemon's control API (all but agents default to the daemon\n ~/.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 --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
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,g9mBAsTrB,CAAC"}
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
@@ -25,6 +25,7 @@ Usage:
25
25
  stratus plugins --format json
26
26
  stratus skill reload
27
27
  stratus restart
28
+ stratus health
28
29
  stratus schedules
29
30
  stratus schedules cancel <id>
30
31
  stratus grants blair
@@ -73,10 +74,12 @@ Commands:
73
74
  (--idle-timeout <seconds>, --approvals <headless|remote>,
74
75
  --no-events, --no-log-file, --config <path>); everything it
75
76
  says is also written to ~/.stratus/logs, which
76
- "stratus logs" reads. With @stratusagent/control-api
77
- installed it also serves the HTTP + WebSocket control API
78
- on 127.0.0.1:4123 (--no-api, --api-host, --api-port, or
79
- the config file's "api" block)
77
+ "stratus logs" reads (--log-format json puts those same
78
+ records on stdout as JSON lines instead of the human
79
+ ones, for docker logs and journald). With
80
+ @stratusagent/control-api installed it also serves the
81
+ HTTP + WebSocket control API on 127.0.0.1:4123 (--no-api,
82
+ --api-host, --api-port, or the config file's "api" block)
80
83
  service Keep stratusd running under launchd (macOS) or systemd
81
84
  (Linux): install, uninstall, status, start, stop.
82
85
  Installing starts it now and at every login
@@ -130,6 +133,11 @@ Commands:
130
133
  ones finish for up to --drain-timeout <seconds> (default
131
134
  30), then comes back with sessions, schedules, and
132
135
  channels intact, under the service manager or not
136
+ health Ask the running daemon whether it is serving: exit 0 and
137
+ one line (version, uptime, agents, sessions, pending
138
+ approvals), or exit 1 and one sentence saying why not.
139
+ For a container HEALTHCHECK, a Kubernetes probe, or a
140
+ monitoring script (--gateway, --token, --format json)
133
141
  credential set Store a named credential an agent can resolve — a search
134
142
  backend asks for search.apiKey. The value is read from
135
143
  stdin, never from a flag, so it stays out of your shell
@@ -163,7 +171,10 @@ Commands:
163
171
  else from ~/.stratus/agents/<id>/whitelist.json; --format
164
172
  json. "stratus grants revoke <agent> --tool <name> |
165
173
  --scope "<command>" | --origin <origin>" takes one back,
166
- 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)
167
178
  memory list Show an agent's live memory with the trust label each
168
179
  entry carries — user, agent, unknown (no recorded origin,
169
180
  or written in a conversation with someone not configured
@@ -253,9 +264,9 @@ Options:
253
264
  --port dashboard: port for a daemon it starts (default: 4123)
254
265
  --host dashboard: host for a daemon it starts (default: 127.0.0.1)
255
266
  --no-open Do not open the browser automatically
256
- --gateway agents / skill reload / restart / session rollover: a running
257
- daemon's control API (all but agents default to the daemon
258
- ~/.stratus/gateway.json names)
267
+ --gateway agents / skill reload / restart / session rollover / health: a
268
+ running daemon's control API (all but agents default to the
269
+ daemon ~/.stratus/gateway.json names)
259
270
  --trust memory list: show only this label; memory reassert: the
260
271
  label to record (user, agent, unknown, external)
261
272
  --all-unknown memory reassert: every live entry with no recorded origin
@@ -273,6 +284,8 @@ Options:
273
284
  --api serve: serve it even where the config says api.enabled: false
274
285
  --api-host serve: control API interface (default: 127.0.0.1)
275
286
  --api-port serve: control API port (default: 4123, 0 for any free port)
287
+ --log-format serve: text (default) or json — every structured log record
288
+ as one JSON line on stdout, and no human lines
276
289
  --help, -h Show this help message
277
290
  --version, -v Print this build's version and exit
278
291