@stratusagent/cli 0.2.1 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/index.d.ts +42 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +864 -653
- package/dist/index.js.map +1 -1
- package/package.json +19 -7
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ stratus setup
|
|
|
19
19
|
5) Save & finish
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
- **Providers** — sign in to one or more. For Claude,
|
|
22
|
+
- **Providers** — sign in to one or more. For Claude, choose how you pay: a **Claude Pro/Max subscription** (run `claude setup-token`, paste the token — runs route through the Claude Code runtime, so your plan covers usage; requires Claude Code installed and signed in. Tool runs and memory work there too, so it's the same agent as on an API key) or an **Anthropic API key**, pasted straight into the prompt (input is hidden) and checked against the live API when the endpoint supports it — a rejected key is refused; an unreachable endpoint saves the key and verifies it on your first run. OpenAI-compatible services work like API keys, including local models and proxies via a custom base URL.
|
|
23
23
|
- **Models** — pick a **default** and a **fallback**, listed live from the provider APIs where possible (subscription sign-ins and offline setups fall back to the known Claude lineup). If the default model errors mid-run, the run automatically retries on the fallback — even across providers.
|
|
24
24
|
- **Menus are keyboard-driven** — arrow keys (or `j`/`k`) to move, Enter to pick, digits to jump, Esc to go back.
|
|
25
25
|
- **Agent** — name your agent (or accept a generated identity), describe their personality, and their soul file lands in `~/.stratus/agents/`, ready to edit.
|
|
@@ -30,12 +30,15 @@ Credentials are stored in `~/.stratus/credentials.json` (owner-read-only) and se
|
|
|
30
30
|
## Usage
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
+
stratus chat # talk — the conversation persists
|
|
34
|
+
stratus chat --soul ./ava.md
|
|
33
35
|
stratus run "say hello"
|
|
34
36
|
stratus run --soul ./ava.md "introduce yourself"
|
|
35
37
|
stratus run --provider anthropic --model claude-opus-5 "hello"
|
|
36
38
|
stratus run --prompt "use the echo tool" --format json
|
|
37
|
-
stratus agent new #
|
|
39
|
+
stratus agent new # create an agent (guided on a terminal)
|
|
38
40
|
stratus agent new --format soul > ava.md
|
|
41
|
+
stratus agents # who's on the team: souls, models, memory
|
|
39
42
|
stratus dashboard # local browser dashboard
|
|
40
43
|
```
|
|
41
44
|
|
|
@@ -73,6 +76,6 @@ Agents remember: facts saved with the built-in `memory.remember` tool persist to
|
|
|
73
76
|
|
|
74
77
|
Precedence: flags → `STRATUS_*` env vars → soul file hints → config file. Project-local `stratus.config.json` outranks the global `~/.stratus/config.json`; stored sign-ins are endpoint-bound and never sent to endpoints a project config selects.
|
|
75
78
|
|
|
76
|
-
Today the CLI covers setup, one-shot runs, agent creation, and the local dashboard; channels and the always-on agent service are the next milestones.
|
|
79
|
+
Today the CLI covers setup, chat, one-shot runs, agent creation, and the local dashboard; channels and the always-on agent service are the next milestones.
|
|
77
80
|
|
|
78
81
|
Part of [Stratus Agent](https://github.com/stratuslabs/agent) — a tiny TypeScript agent runtime.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
1
|
+
import { type JsonValue, type Session, type StratusEvent } from '@stratusagent/core';
|
|
2
|
+
import { type RuntimeConfig, type StratusProviderName } from '@stratusagent/state';
|
|
3
|
+
export { createFileMemoryStore } from '@stratusagent/state';
|
|
4
|
+
export type { StoredCredential, RuntimeConfig } from '@stratusagent/state';
|
|
3
5
|
export interface CliStreams {
|
|
4
6
|
stdout: Pick<typeof process.stdout, 'write'>;
|
|
5
7
|
stderr: Pick<typeof process.stderr, 'write'>;
|
|
@@ -16,13 +18,15 @@ export interface CliEnvironment {
|
|
|
16
18
|
fetch?: typeof fetch;
|
|
17
19
|
openExternal?: (url: string) => Promise<void> | void;
|
|
18
20
|
dashboardAutoShutdownMs?: number;
|
|
21
|
+
/** Shuts down `stratus serve` the way SIGTERM would (tests). */
|
|
22
|
+
shutdownSignal?: AbortSignal;
|
|
19
23
|
}
|
|
20
24
|
export interface CliRunOptions {
|
|
21
25
|
argv: string[];
|
|
22
26
|
streams?: CliStreams;
|
|
23
27
|
env?: CliEnvironment;
|
|
24
28
|
}
|
|
25
|
-
export type CliProviderName =
|
|
29
|
+
export type CliProviderName = StratusProviderName;
|
|
26
30
|
export type CliApprovalMode = 'always' | 'ask' | 'never';
|
|
27
31
|
export interface ParsedRunCommand {
|
|
28
32
|
command: 'run';
|
|
@@ -54,60 +58,40 @@ export interface ParsedAgentNewCommand {
|
|
|
54
58
|
instructions?: string;
|
|
55
59
|
format: 'text' | 'json' | 'soul';
|
|
56
60
|
}
|
|
57
|
-
export interface
|
|
58
|
-
command: '
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
/** A resolved, ready-to-run fallback model (always a real provider). */
|
|
62
|
-
interface FallbackRuntime {
|
|
63
|
-
provider: 'anthropic' | 'openai';
|
|
64
|
-
model: string;
|
|
61
|
+
export interface ParsedChatCommand {
|
|
62
|
+
command: 'chat';
|
|
63
|
+
provider?: CliProviderName;
|
|
64
|
+
model?: string;
|
|
65
65
|
baseUrl?: string;
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
configPath?: string;
|
|
67
|
+
/** Path to a soul file defining the agent to chat with. */
|
|
68
|
+
soul?: string;
|
|
69
|
+
events: boolean;
|
|
70
|
+
approvals: CliApprovalMode;
|
|
71
|
+
maxTurns?: number;
|
|
68
72
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
provider: 'anthropic';
|
|
83
|
-
model: string;
|
|
84
|
-
baseUrl?: string;
|
|
85
|
-
apiKey?: string;
|
|
86
|
-
/** Claude subscription auth (Claude Code setup token). */
|
|
87
|
-
authToken?: string;
|
|
88
|
-
systemPrompt?: string;
|
|
89
|
-
fetch?: typeof fetch;
|
|
90
|
-
soul?: ParsedSoul;
|
|
91
|
-
fallback?: FallbackRuntime;
|
|
92
|
-
};
|
|
93
|
-
/** A stored sign-in for a provider, kept in ~/.stratus/credentials.json. */
|
|
94
|
-
export interface StoredCredential {
|
|
95
|
-
type: 'api_key' | 'oauth_token';
|
|
96
|
-
value: string;
|
|
97
|
-
/**
|
|
98
|
-
* The endpoint this credential belongs to (openai-compatible services).
|
|
99
|
-
* Kept with the credential so a key for a local model or proxy is never
|
|
100
|
-
* sent to a different service, whatever the current default provider is.
|
|
101
|
-
*/
|
|
102
|
-
baseUrl?: string;
|
|
73
|
+
export interface ParsedAgentsCommand {
|
|
74
|
+
command: 'agents';
|
|
75
|
+
format: 'text' | 'json';
|
|
76
|
+
}
|
|
77
|
+
export interface ParsedServeCommand {
|
|
78
|
+
command: 'serve';
|
|
79
|
+
configPath?: string;
|
|
80
|
+
/** Watchdog idle timeout in milliseconds. 0 disables. */
|
|
81
|
+
idleTimeoutMs?: number;
|
|
82
|
+
events: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface ParsedHelpCommand {
|
|
85
|
+
command: 'help';
|
|
103
86
|
}
|
|
87
|
+
export type ParsedCommand = ParsedRunCommand | ParsedChatCommand | ParsedDashboardCommand | ParsedSetupCommand | ParsedAgentNewCommand | ParsedAgentsCommand | ParsedServeCommand | ParsedHelpCommand;
|
|
104
88
|
export interface DashboardServerHandle {
|
|
105
89
|
url: string;
|
|
106
90
|
close: () => Promise<void>;
|
|
107
91
|
}
|
|
108
|
-
declare const
|
|
92
|
+
export declare const CLI_VERSION = "0.2.5";
|
|
93
|
+
declare const HELP_TEXT = "Stratus Agent CLI\n\nUsage:\n stratus setup\n stratus chat\n stratus chat --soul ./examples/souls/ava.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/ava.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 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, and test it \u2014\n settings go to ~/.stratus/config.json, sign-ins to\n ~/.stratus/credentials.json (0600)\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 Ctrl+C / SIGTERM drains cleanly\n (--idle-timeout <seconds>, --no-events, --config <path>)\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 dashboard Start the local Stratus Agent dashboard and open it in your browser\n help Show this help message\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, or demo\n --model Model name for real providers (anthropic default: claude-opus-5, openai default: gpt-4.1-mini)\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 Tool approval mode: always, ask, or never (default: always)\n --max-turns Maximum provider turns per run (default: 8)\n --port Dashboard port, defaults to an open local port\n --host Dashboard host (default: 127.0.0.1)\n --no-open Do not open the browser automatically\n --help, -h Show this help message\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.\n Legacy STRATUSCLAW_* env vars and stratusclaw.config.json are still supported for compatibility.\n\nSoul files:\n A soul file is markdown with frontmatter (name, provider, model, tools, credentials)\n followed by the agent's persona in prose. See examples/souls/ava.md.\n";
|
|
109
94
|
declare const stringifyValue: (value: JsonValue) => string;
|
|
110
|
-
export declare const createFileMemoryStore: (filePath: string) => AgentMemoryStore;
|
|
111
95
|
export declare const parseCommand: (argv: string[], env?: CliEnvironment) => ParsedCommand;
|
|
112
96
|
export declare const formatEvent: (event: StratusEvent) => string | null;
|
|
113
97
|
export declare const resolveRuntimeConfig: (command: ParsedRunCommand, env?: CliEnvironment) => Promise<RuntimeConfig>;
|
|
@@ -119,14 +103,22 @@ export declare const runSingleLoop: (prompt: string, streams: CliStreams, option
|
|
|
119
103
|
env?: CliEnvironment;
|
|
120
104
|
}) => Promise<Session>;
|
|
121
105
|
export declare const printSessionSummary: (session: Session, streams: CliStreams) => void;
|
|
106
|
+
export declare const runChat: (command: ParsedChatCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
122
107
|
export declare const openExternalUrl: (url: string) => Promise<void>;
|
|
123
108
|
export declare const startDashboardServer: (options: {
|
|
124
109
|
host: string;
|
|
125
110
|
port?: number;
|
|
126
111
|
}) => Promise<DashboardServerHandle>;
|
|
127
112
|
export declare const runSetup: (command: ParsedSetupCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
128
|
-
export declare const
|
|
113
|
+
export declare const runAgents: (command: ParsedAgentsCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
114
|
+
export declare const runAgentNew: (command: ParsedAgentNewCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
129
115
|
export declare const runDashboard: (command: ParsedDashboardCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
116
|
+
/**
|
|
117
|
+
* `stratus serve` — run the gateway (stratusd) in the foreground: load the
|
|
118
|
+
* roster, accept dispatches, print events, and drain cleanly on SIGTERM,
|
|
119
|
+
* SIGINT, or the injected shutdown signal.
|
|
120
|
+
*/
|
|
121
|
+
export declare const runServe: (command: ParsedServeCommand, streams: CliStreams, env?: CliEnvironment) => Promise<number>;
|
|
130
122
|
export declare const runCli: ({ argv, streams, env }: CliRunOptions) => Promise<number>;
|
|
131
123
|
export { HELP_TEXT, stringifyValue };
|
|
132
124
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|