steroids-cli 0.8.14 → 0.8.15
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 +2 -2
- package/dist/commands/about.d.ts +1 -2
- package/dist/commands/about.d.ts.map +1 -1
- package/dist/commands/about.js +3 -251
- package/dist/commands/about.js.map +1 -1
- package/dist/commands/llm.d.ts.map +1 -1
- package/dist/commands/llm.js +104 -3
- package/dist/commands/llm.js.map +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -246,9 +246,9 @@ That's it. Open your browser at:
|
|
|
246
246
|
| Command | Description |
|
|
247
247
|
|---------|-------------|
|
|
248
248
|
| `steroids init` | Initialize Steroids in current directory |
|
|
249
|
-
| `steroids
|
|
250
|
-
| `steroids llm` | Compact instructions for LLM agents (call when context lost) |
|
|
249
|
+
| `steroids llm` | Quick reference for LLM agents (project setup, commands, task flow) |
|
|
251
250
|
| `steroids llm --context` | Include current project context (active tasks, runners) |
|
|
251
|
+
| `steroids about` | Alias for `steroids llm` |
|
|
252
252
|
| `steroids loop` | Run the coder/reviewer loop interactively |
|
|
253
253
|
| `steroids loop --once` | Run one iteration only |
|
|
254
254
|
|
package/dist/commands/about.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* About Command
|
|
3
|
-
* Explains what Steroids is for LLMs discovering the tool
|
|
2
|
+
* About Command - Alias for llm command
|
|
4
3
|
*/
|
|
5
4
|
import type { GlobalFlags } from '../cli/flags.js';
|
|
6
5
|
export declare function aboutCommand(args: string[], flags: GlobalFlags): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF"}
|
package/dist/commands/about.js
CHANGED
|
@@ -1,259 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* About Command
|
|
4
|
-
* Explains what Steroids is for LLMs discovering the tool
|
|
3
|
+
* About Command - Alias for llm command
|
|
5
4
|
*/
|
|
6
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
6
|
exports.aboutCommand = aboutCommand;
|
|
8
|
-
const
|
|
9
|
-
const help_js_1 = require("../cli/help.js");
|
|
10
|
-
const ABOUT_TEXT = `
|
|
11
|
-
STEROIDS - Automated Task Execution System
|
|
12
|
-
===========================================
|
|
13
|
-
|
|
14
|
-
Steroids is an AI-powered task orchestration system that manages software
|
|
15
|
-
development tasks through a coder/reviewer loop. It enables LLMs to work
|
|
16
|
-
autonomously on codebases while maintaining quality through automated review.
|
|
17
|
-
|
|
18
|
-
CORE CONCEPT
|
|
19
|
-
------------
|
|
20
|
-
Tasks are organized into sections and processed by two AI roles:
|
|
21
|
-
|
|
22
|
-
1. CODER: Implements tasks by writing code, running builds, and tests
|
|
23
|
-
2. REVIEWER: Reviews completed work, approves or rejects with feedback
|
|
24
|
-
|
|
25
|
-
When rejected, tasks return to the coder with notes. This loop continues
|
|
26
|
-
until approval or a dispute is raised (after 15 rejections).
|
|
27
|
-
|
|
28
|
-
HOW IT WORKS
|
|
29
|
-
------------
|
|
30
|
-
1. Human creates tasks with specifications in markdown files
|
|
31
|
-
2. Runner daemon picks up pending tasks in priority order
|
|
32
|
-
3. Coder AI implements the task following the specification
|
|
33
|
-
4. Reviewer AI evaluates the implementation
|
|
34
|
-
5. On approval: task marked complete, next task starts
|
|
35
|
-
6. On rejection: task returns to coder with feedback
|
|
36
|
-
7. After 15 rejections: dispute raised for human resolution
|
|
37
|
-
|
|
38
|
-
KEY COMMANDS FOR LLMs
|
|
39
|
-
---------------------
|
|
40
|
-
steroids tasks list List pending tasks
|
|
41
|
-
steroids tasks list --status all Show all tasks with status
|
|
42
|
-
steroids sections list Show task sections
|
|
43
|
-
steroids tasks update <id> --status review Submit work for review
|
|
44
|
-
steroids tasks approve <id> Approve as reviewer
|
|
45
|
-
steroids tasks reject <id> --notes "..." Reject with feedback
|
|
46
|
-
steroids dispute create Raise a dispute
|
|
47
|
-
|
|
48
|
-
TASK LIFECYCLE
|
|
49
|
-
--------------
|
|
50
|
-
pending -> in_progress -> review -> completed
|
|
51
|
-
^ |
|
|
52
|
-
| v (rejected)
|
|
53
|
-
+----------+
|
|
54
|
-
|
|
55
|
-
SPECIFICATIONS
|
|
56
|
-
--------------
|
|
57
|
-
Each task has a sourceFile pointing to a markdown specification.
|
|
58
|
-
The coder MUST follow this specification exactly.
|
|
59
|
-
The reviewer MUST verify the implementation matches the spec.
|
|
60
|
-
|
|
61
|
-
PROJECT SETUP - HOW TO STRUCTURE WORK
|
|
62
|
-
-------------------------------------
|
|
63
|
-
Steroids works best when projects are structured correctly. Think of it like
|
|
64
|
-
building a house: sections are rooms, tasks are individual construction steps.
|
|
65
|
-
|
|
66
|
-
SECTIONS = Features or Functional Areas
|
|
67
|
-
- Each section represents ONE cohesive piece of functionality
|
|
68
|
-
- Sections should be independent enough to be worked on in isolation
|
|
69
|
-
- Name sections clearly: "Phase 1: User Authentication", "Phase 2: Dashboard"
|
|
70
|
-
- Sections have priorities and can depend on other sections
|
|
71
|
-
|
|
72
|
-
TASKS = Small, Atomic Implementation Steps
|
|
73
|
-
- Each task should be completable in ONE focused session (15-60 min of AI work)
|
|
74
|
-
- Tasks should do ONE thing well - if you say "and" you might need two tasks
|
|
75
|
-
- Tasks must have a clear specification file explaining exactly what to build
|
|
76
|
-
- Tasks are ordered within sections - earlier tasks may set up later ones
|
|
77
|
-
|
|
78
|
-
EXAMPLE FROM THIS PROJECT (steroids-cli):
|
|
79
|
-
Section: "Phase 0.7: Section Focus"
|
|
80
|
-
Tasks:
|
|
81
|
-
1. Add --section flag to loop command
|
|
82
|
-
2. Add sectionId parameter to TaskSelectionOptions
|
|
83
|
-
3. Update task selection queries to filter by section
|
|
84
|
-
4. Update loop display to show focused section
|
|
85
|
-
5. Add section validation
|
|
86
|
-
|
|
87
|
-
Each task is small and specific. Together they implement "section focus."
|
|
88
|
-
|
|
89
|
-
WRITING GOOD SPECIFICATIONS:
|
|
90
|
-
- Create a specs/ directory with markdown files
|
|
91
|
-
- Each spec should include: purpose, requirements, examples, edge cases
|
|
92
|
-
- Reference existing code patterns the implementation should follow
|
|
93
|
-
- Include acceptance criteria - how do we know it's done?
|
|
94
|
-
|
|
95
|
-
EXAMPLE SPEC STRUCTURE (specs/feature-name.md):
|
|
96
|
-
# Feature Name
|
|
97
|
-
|
|
98
|
-
## Overview
|
|
99
|
-
What this feature does and why.
|
|
100
|
-
|
|
101
|
-
## Requirements
|
|
102
|
-
- Specific requirement 1
|
|
103
|
-
- Specific requirement 2
|
|
104
|
-
|
|
105
|
-
## Implementation Notes
|
|
106
|
-
- Follow pattern in src/existing/similar.ts
|
|
107
|
-
- Use existing utility from src/utils/helper.ts
|
|
108
|
-
|
|
109
|
-
## Examples
|
|
110
|
-
\`\`\`bash
|
|
111
|
-
steroids command --flag value
|
|
112
|
-
# Expected output...
|
|
113
|
-
\`\`\`
|
|
114
|
-
|
|
115
|
-
## Acceptance Criteria
|
|
116
|
-
- [ ] Command works as shown in examples
|
|
117
|
-
- [ ] Tests pass
|
|
118
|
-
- [ ] Documentation updated
|
|
119
|
-
|
|
120
|
-
ADDING TASKS
|
|
121
|
-
-----------
|
|
122
|
-
steroids tasks add <title> --section <id> --source <spec-file> [options]
|
|
123
|
-
|
|
124
|
-
Required:
|
|
125
|
-
--section <id> Section the task belongs to
|
|
126
|
-
--source <file> Specification markdown file for the coder/reviewer
|
|
127
|
-
|
|
128
|
-
Optional:
|
|
129
|
-
--file <path> Anchor task to a specific file (must be committed in git)
|
|
130
|
-
--line <number> Line number in the anchored file (requires --file)
|
|
131
|
-
--feedback Add to "Needs User Input" section (skips --section/--source)
|
|
132
|
-
|
|
133
|
-
When --file is used, Steroids validates the file is tracked and clean in git,
|
|
134
|
-
then auto-captures the commit SHA and content hash. The coder/reviewer prompts
|
|
135
|
-
will reference this exact file location.
|
|
136
|
-
|
|
137
|
-
When --feedback is used, the task goes to a special skipped section called
|
|
138
|
-
"Needs User Input" that the runner ignores. Use for advisory items, disputes,
|
|
139
|
-
or anything needing human review.
|
|
140
|
-
|
|
141
|
-
Examples:
|
|
142
|
-
steroids tasks add "Implement login" --section abc123 --source specs/login.md
|
|
143
|
-
steroids tasks add "Fix null check" --section abc123 --source spec.md --file src/utils.ts --line 42
|
|
144
|
-
steroids tasks add "Review execSync usage" --feedback
|
|
145
|
-
|
|
146
|
-
INITIALIZING A PROJECT:
|
|
147
|
-
1. steroids init # Creates .steroids/ directory
|
|
148
|
-
2. Create specs/ with your specifications
|
|
149
|
-
3. steroids sections add "Phase 1: Feature Name"
|
|
150
|
-
4. steroids tasks add "Task title" --section <id> --source specs/spec.md
|
|
151
|
-
5. steroids loop # Start processing
|
|
152
|
-
|
|
153
|
-
IMPORTANT RULES
|
|
154
|
-
---------------
|
|
155
|
-
- Always run build AND tests before submitting for review
|
|
156
|
-
- Read the task specification thoroughly before implementing
|
|
157
|
-
- Make small, focused commits
|
|
158
|
-
- Never modify code outside the task scope
|
|
159
|
-
- If stuck, create a dispute rather than guessing
|
|
160
|
-
|
|
161
|
-
For full documentation:
|
|
162
|
-
- CLI: steroids --help
|
|
163
|
-
- Tasks: steroids tasks --help
|
|
164
|
-
- Config: steroids config show
|
|
165
|
-
`;
|
|
166
|
-
const HELP = (0, help_js_1.generateHelp)({
|
|
167
|
-
command: 'about',
|
|
168
|
-
description: 'Explains what Steroids is and how it works',
|
|
169
|
-
details: `Designed for LLMs discovering this tool for the first time.
|
|
170
|
-
Provides comprehensive overview of architecture, workflow, and best practices.
|
|
171
|
-
Use --json for structured output optimized for LLM parsing.`,
|
|
172
|
-
usage: ['steroids about [options]'],
|
|
173
|
-
examples: [
|
|
174
|
-
{ command: 'steroids about', description: 'Human-readable explanation' },
|
|
175
|
-
{ command: 'steroids about --json', description: 'Structured JSON for LLM parsing' },
|
|
176
|
-
],
|
|
177
|
-
related: [
|
|
178
|
-
{ command: 'steroids llm', description: 'Compact quick reference when context is lost' },
|
|
179
|
-
{ command: 'steroids --help', description: 'CLI help with all commands' },
|
|
180
|
-
],
|
|
181
|
-
showGlobalOptions: true,
|
|
182
|
-
showExitCodes: false,
|
|
183
|
-
showEnvVars: false,
|
|
184
|
-
});
|
|
7
|
+
const llm_js_1 = require("./llm.js");
|
|
185
8
|
async function aboutCommand(args, flags) {
|
|
186
|
-
|
|
187
|
-
if (flags.help) {
|
|
188
|
-
out.log(HELP);
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const data = {
|
|
192
|
-
name: 'Steroids',
|
|
193
|
-
description: 'AI-powered task orchestration with coder/reviewer loop',
|
|
194
|
-
version: process.env.npm_package_version ?? '0.0.0',
|
|
195
|
-
concept: {
|
|
196
|
-
roles: [
|
|
197
|
-
{ name: 'coder', purpose: 'Implements tasks by writing code, running builds and tests' },
|
|
198
|
-
{ name: 'reviewer', purpose: 'Reviews completed work, approves or rejects with feedback' },
|
|
199
|
-
],
|
|
200
|
-
workflow: [
|
|
201
|
-
'Human creates tasks with specifications',
|
|
202
|
-
'Runner picks up pending tasks',
|
|
203
|
-
'Coder implements following specification',
|
|
204
|
-
'Reviewer evaluates implementation',
|
|
205
|
-
'Approved: task complete, next starts',
|
|
206
|
-
'Rejected: returns to coder with notes',
|
|
207
|
-
'After 15 rejections: dispute raised',
|
|
208
|
-
],
|
|
209
|
-
lifecycle: ['pending', 'in_progress', 'review', 'completed'],
|
|
210
|
-
},
|
|
211
|
-
projectSetup: {
|
|
212
|
-
sections: 'Features or functional areas - each represents ONE cohesive piece of functionality',
|
|
213
|
-
tasks: 'Small, atomic implementation steps - completable in 15-60 min, does ONE thing well',
|
|
214
|
-
specifications: 'Markdown files in specs/ with purpose, requirements, examples, acceptance criteria',
|
|
215
|
-
example: {
|
|
216
|
-
section: 'Phase 0.7: Section Focus',
|
|
217
|
-
tasks: [
|
|
218
|
-
'Add --section flag to loop command',
|
|
219
|
-
'Add sectionId parameter to TaskSelectionOptions',
|
|
220
|
-
'Update task selection queries to filter by section',
|
|
221
|
-
'Update loop display to show focused section',
|
|
222
|
-
'Add section validation',
|
|
223
|
-
],
|
|
224
|
-
},
|
|
225
|
-
steps: [
|
|
226
|
-
'steroids init - creates .steroids/ directory',
|
|
227
|
-
'Create specs/ with your specifications',
|
|
228
|
-
'steroids sections add "Phase 1: Feature Name"',
|
|
229
|
-
'steroids tasks add "Task title" --section <id> --source specs/spec.md',
|
|
230
|
-
'steroids tasks add "Task title" --section <id> --source spec.md --file src/foo.ts --line 42 (anchor to file)',
|
|
231
|
-
'steroids tasks add "Advisory note" --feedback (skipped section for human review)',
|
|
232
|
-
'steroids loop - start processing',
|
|
233
|
-
],
|
|
234
|
-
},
|
|
235
|
-
commands: [
|
|
236
|
-
{ command: 'steroids tasks list', description: 'List pending tasks' },
|
|
237
|
-
{ command: 'steroids tasks list --status all', description: 'Show all tasks' },
|
|
238
|
-
{ command: 'steroids sections list', description: 'Show task sections' },
|
|
239
|
-
{ command: 'steroids tasks update <id> --status review', description: 'Submit for review' },
|
|
240
|
-
{ command: 'steroids tasks approve <id>', description: 'Approve as reviewer' },
|
|
241
|
-
{ command: 'steroids tasks reject <id> --notes "..."', description: 'Reject with feedback' },
|
|
242
|
-
{ command: 'steroids dispute create', description: 'Raise a dispute' },
|
|
243
|
-
],
|
|
244
|
-
rules: [
|
|
245
|
-
'Always run build AND tests before submitting for review',
|
|
246
|
-
'Read the task specification thoroughly before implementing',
|
|
247
|
-
'Make small, focused commits',
|
|
248
|
-
'Never modify code outside the task scope',
|
|
249
|
-
'If stuck, create a dispute rather than guessing',
|
|
250
|
-
],
|
|
251
|
-
};
|
|
252
|
-
if (flags.json) {
|
|
253
|
-
out.success(data);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
out.log(ABOUT_TEXT);
|
|
257
|
-
}
|
|
9
|
+
await (0, llm_js_1.llmCommand)(args, flags);
|
|
258
10
|
}
|
|
259
11
|
//# sourceMappingURL=about.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"about.js","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"about.js","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,oCAEC;AAJD,qCAAsC;AAE/B,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,KAAkB;IACnE,MAAM,IAAA,mBAAU,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6RnD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KlF"}
|
package/dist/commands/llm.js
CHANGED
|
@@ -12,6 +12,7 @@ const daemon_js_1 = require("../runners/daemon.js");
|
|
|
12
12
|
const connection_js_1 = require("../database/connection.js");
|
|
13
13
|
const queries_js_1 = require("../database/queries.js");
|
|
14
14
|
const help_js_1 = require("../cli/help.js");
|
|
15
|
+
const output_js_1 = require("../cli/output.js");
|
|
15
16
|
const LLM_INSTRUCTIONS = `# STEROIDS LLM QUICK REFERENCE
|
|
16
17
|
|
|
17
18
|
## WHAT IS STEROIDS
|
|
@@ -20,6 +21,29 @@ It manages tasks and invokes LLM agents (coders/reviewers) to execute them.
|
|
|
20
21
|
The system spawns separate LLM processes for coding and reviewing.
|
|
21
22
|
Deterministic daemon — never makes decisions, just follows the state machine.
|
|
22
23
|
|
|
24
|
+
## TASK SIZING (CRITICAL)
|
|
25
|
+
|
|
26
|
+
Tasks should be PR-sized chunks of work — not individual classes or functions,
|
|
27
|
+
but whole testable pieces of functionality. Think "what would make a good pull request?"
|
|
28
|
+
|
|
29
|
+
GOOD task sizing:
|
|
30
|
+
- "Implement user authentication endpoint with tests"
|
|
31
|
+
- "Add section dependency graph visualization"
|
|
32
|
+
- "Build CSV export for task reports"
|
|
33
|
+
|
|
34
|
+
BAD task sizing (too granular):
|
|
35
|
+
- "Create UserService class"
|
|
36
|
+
- "Add validateEmail helper function"
|
|
37
|
+
- "Write test for login method"
|
|
38
|
+
|
|
39
|
+
BAD task sizing (too large):
|
|
40
|
+
- "Build the entire frontend"
|
|
41
|
+
- "Implement all API endpoints"
|
|
42
|
+
|
|
43
|
+
Each task should produce a reviewable, testable unit of work that can be
|
|
44
|
+
merged independently. The reviewer needs enough context to verify correctness,
|
|
45
|
+
and the coder needs enough scope to make meaningful progress.
|
|
46
|
+
|
|
23
47
|
## TASK STATE MACHINE
|
|
24
48
|
|
|
25
49
|
### All 8 Statuses
|
|
@@ -200,6 +224,30 @@ steroids tasks skip <id> --notes "spec says SKIP, needs Cloud SQL setup"
|
|
|
200
224
|
# Use when: spec says SKIP/MANUAL, requires cloud console, account creation, etc.
|
|
201
225
|
# --partial: use if you coded some parts but rest needs human action
|
|
202
226
|
|
|
227
|
+
## PROJECT SETUP
|
|
228
|
+
|
|
229
|
+
SECTIONS = Features or Functional Areas
|
|
230
|
+
- Each section represents ONE cohesive piece of functionality
|
|
231
|
+
- Sections should be independent enough to be worked on in isolation
|
|
232
|
+
- Sections have priorities and can depend on other sections
|
|
233
|
+
|
|
234
|
+
TASKS = PR-Sized Implementation Units
|
|
235
|
+
- Each task produces a reviewable, testable unit of work
|
|
236
|
+
- Tasks must have a specification file explaining exactly what to build
|
|
237
|
+
- Tasks are ordered within sections — earlier tasks may set up later ones
|
|
238
|
+
|
|
239
|
+
SPECIFICATIONS = Markdown files describing what to build
|
|
240
|
+
- Include: purpose, requirements, examples, acceptance criteria
|
|
241
|
+
- Reference existing code patterns the implementation should follow
|
|
242
|
+
- Create a specs/ directory with markdown files
|
|
243
|
+
|
|
244
|
+
INITIALIZING A PROJECT:
|
|
245
|
+
1. steroids init
|
|
246
|
+
2. Create specs/ with your specifications
|
|
247
|
+
3. steroids sections add "Phase 1: Feature Name"
|
|
248
|
+
4. steroids tasks add "Task title" --section <id> --source specs/spec.md
|
|
249
|
+
5. steroids loop
|
|
250
|
+
|
|
203
251
|
## IMPORTANT NOTES
|
|
204
252
|
- Task spec is in source file (see tasks audit output)
|
|
205
253
|
- Max 15 rejections before task fails; coordinator intervenes at [2, 5, 9]
|
|
@@ -207,36 +255,89 @@ steroids tasks skip <id> --notes "spec says SKIP, needs Cloud SQL setup"
|
|
|
207
255
|
- Each project isolated: own database, own runner
|
|
208
256
|
- Section dependencies block entire sections, not individual tasks
|
|
209
257
|
- Build+test verification happens automatically after coder submits
|
|
258
|
+
- Always run build AND tests before submitting for review
|
|
259
|
+
- Never modify code outside the task scope
|
|
260
|
+
- If stuck, create a dispute rather than guessing
|
|
210
261
|
`;
|
|
211
262
|
const HELP = (0, help_js_1.generateHelp)({
|
|
212
263
|
command: 'llm',
|
|
213
|
-
description: '
|
|
214
|
-
details: '
|
|
264
|
+
description: 'Quick reference for LLM agents (alias: steroids about)',
|
|
265
|
+
details: 'Complete reference guide for AI agents working with Steroids. Shows key commands, task flow, project setup, and current context.',
|
|
215
266
|
usage: [
|
|
216
267
|
'steroids llm',
|
|
217
268
|
'steroids llm --context',
|
|
269
|
+
'steroids llm --json',
|
|
270
|
+
'steroids about # alias for steroids llm',
|
|
218
271
|
],
|
|
219
272
|
options: [
|
|
220
273
|
{ long: 'context', description: 'Include current project context (projects, runners, tasks)' },
|
|
274
|
+
{ short: 'j', long: 'json', description: 'Output structured JSON for LLM parsing' },
|
|
221
275
|
],
|
|
222
276
|
examples: [
|
|
223
277
|
{ command: 'steroids llm', description: 'Show LLM quick reference' },
|
|
224
278
|
{ command: 'steroids llm --context', description: 'Show reference with current context' },
|
|
279
|
+
{ command: 'steroids about --json', description: 'Structured JSON output' },
|
|
225
280
|
],
|
|
226
281
|
related: [
|
|
227
|
-
{ command: 'steroids about', description: 'Explain what Steroids is' },
|
|
228
282
|
{ command: 'steroids tasks', description: 'Manage tasks' },
|
|
283
|
+
{ command: 'steroids sections', description: 'Manage sections' },
|
|
229
284
|
],
|
|
230
285
|
showGlobalOptions: false,
|
|
231
286
|
showEnvVars: false,
|
|
232
287
|
showExitCodes: false,
|
|
233
288
|
});
|
|
234
289
|
async function llmCommand(args, flags) {
|
|
290
|
+
const out = (0, output_js_1.createOutput)({ command: 'llm', flags });
|
|
235
291
|
// Check for help
|
|
236
292
|
if (flags.help || args.includes('-h') || args.includes('--help')) {
|
|
237
293
|
console.log(HELP);
|
|
238
294
|
return;
|
|
239
295
|
}
|
|
296
|
+
// JSON output mode
|
|
297
|
+
if (flags.json) {
|
|
298
|
+
out.success({
|
|
299
|
+
name: 'Steroids',
|
|
300
|
+
description: 'AI-powered task orchestration with coder/reviewer loop',
|
|
301
|
+
version: process.env.npm_package_version ?? '0.0.0',
|
|
302
|
+
concept: {
|
|
303
|
+
roles: [
|
|
304
|
+
{ name: 'coder', purpose: 'Implements tasks by writing code, running builds and tests' },
|
|
305
|
+
{ name: 'reviewer', purpose: 'Reviews completed work, approves or rejects with feedback' },
|
|
306
|
+
],
|
|
307
|
+
workflow: [
|
|
308
|
+
'Human creates tasks with specifications',
|
|
309
|
+
'Runner picks up pending tasks',
|
|
310
|
+
'Coder implements following specification',
|
|
311
|
+
'Reviewer evaluates implementation',
|
|
312
|
+
'Approved: task complete, next starts',
|
|
313
|
+
'Rejected: returns to coder with notes',
|
|
314
|
+
'After 15 rejections: dispute raised',
|
|
315
|
+
],
|
|
316
|
+
lifecycle: ['pending', 'in_progress', 'review', 'completed'],
|
|
317
|
+
},
|
|
318
|
+
taskSizing: 'PR-sized chunks — whole testable pieces of functionality, not individual classes',
|
|
319
|
+
projectSetup: {
|
|
320
|
+
sections: 'Features or functional areas — each represents ONE cohesive piece of functionality',
|
|
321
|
+
tasks: 'PR-sized implementation units — reviewable, testable units of work',
|
|
322
|
+
specifications: 'Markdown files in specs/ with purpose, requirements, examples, acceptance criteria',
|
|
323
|
+
},
|
|
324
|
+
commands: [
|
|
325
|
+
{ command: 'steroids tasks list', description: 'List pending tasks' },
|
|
326
|
+
{ command: 'steroids tasks list --status all', description: 'Show all tasks' },
|
|
327
|
+
{ command: 'steroids sections list', description: 'Show task sections' },
|
|
328
|
+
{ command: 'steroids tasks approve <id>', description: 'Approve as reviewer' },
|
|
329
|
+
{ command: 'steroids tasks reject <id> --notes "..."', description: 'Reject with feedback' },
|
|
330
|
+
],
|
|
331
|
+
rules: [
|
|
332
|
+
'Always run build AND tests before submitting for review',
|
|
333
|
+
'Read the task specification thoroughly before implementing',
|
|
334
|
+
'Make small, focused commits',
|
|
335
|
+
'Never modify code outside the task scope',
|
|
336
|
+
'If stuck, create a dispute rather than guessing',
|
|
337
|
+
],
|
|
338
|
+
});
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
240
341
|
const includeContext = args.includes('--context');
|
|
241
342
|
// Always print instructions
|
|
242
343
|
console.log(LLM_INSTRUCTIONS);
|
package/dist/commands/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/commands/llm.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA+RH,gCA4KC;AAxcD,qCAAqC;AACrC,yCAAqC;AACrC,wDAA+D;AAC/D,oDAAmD;AACnD,6DAAyD;AACzD,uDAAmD;AACnD,4CAA8C;AAC9C,gDAAgD;AAEhD,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqPxB,CAAC;AAEF,MAAM,IAAI,GAAG,IAAA,sBAAY,EAAC;IACxB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,wDAAwD;IACrE,OAAO,EAAE,kIAAkI;IAC3I,KAAK,EAAE;QACL,cAAc;QACd,wBAAwB;QACxB,qBAAqB;QACrB,oDAAoD;KACrD;IACD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4DAA4D,EAAE;QAC9F,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wCAAwC,EAAE;KACpF;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,0BAA0B,EAAE;QACpE,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,qCAAqC,EAAE;QACzF,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,wBAAwB,EAAE;KAC5E;IACD,OAAO,EAAE;QACP,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;QAC1D,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE;KACjE;IACD,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,KAAK;CACrB,CAAC,CAAC;AAEI,KAAK,UAAU,UAAU,CAAC,IAAc,EAAE,KAAkB;IACjE,MAAM,GAAG,GAAG,IAAA,wBAAY,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpD,iBAAiB;IACjB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,CAAC,OAAO,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,wDAAwD;YACrE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;YACnD,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE;oBACxF,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,2DAA2D,EAAE;iBAC3F;gBACD,QAAQ,EAAE;oBACR,yCAAyC;oBACzC,+BAA+B;oBAC/B,0CAA0C;oBAC1C,mCAAmC;oBACnC,sCAAsC;oBACtC,uCAAuC;oBACvC,qCAAqC;iBACtC;gBACD,SAAS,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;aAC7D;YACD,UAAU,EAAE,kFAAkF;YAC9F,YAAY,EAAE;gBACZ,QAAQ,EAAE,oFAAoF;gBAC9F,KAAK,EAAE,oEAAoE;gBAC3E,cAAc,EAAE,oFAAoF;aACrG;YACD,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACrE,EAAE,OAAO,EAAE,kCAAkC,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC9E,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACxE,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBAC9E,EAAE,OAAO,EAAE,0CAA0C,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAC7F;YACD,KAAK,EAAE;gBACL,yDAAyD;gBACzD,4DAA4D;gBAC5D,6BAA6B;gBAC7B,0CAA0C;gBAC1C,iDAAiD;aAClD;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElD,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9B,qCAAqC;IACrC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEzC,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,mCAAqB,EAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,uBAAW,GAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,mCAAqB,EAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,wBAAwB,CAAC;gBACvD,IAAI,CAAC,IAAA,oBAAU,EAAC,MAAM,CAAC;oBAAE,SAAS;gBAElC,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAA,sBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;wBAC5D,MAAM,MAAM,GAAG,IAAA,sBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACnD,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC;wBAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,IAAA,oBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAExD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,WAAW,EAAE,CAAC;4BACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;4BACnE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC9F,CAAC;oBACH,CAAC;4BAAS,CAAC;wBACT,KAAK,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;YACD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QAED,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,mCAAqB,EAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,wBAAwB,CAAC;gBACvD,IAAI,CAAC,IAAA,oBAAU,EAAC,MAAM,CAAC;oBAAE,SAAS;gBAElC,IAAI,CAAC;oBACH,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAA,sBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;wBACrD,MAAM,OAAO,GAAG,IAAA,sBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;wBACrD,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;wBAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,IAAA,oBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAExD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;4BAC9B,YAAY,EAAE,CAAC;4BACf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;4BACzD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC5F,CAAC;oBACH,CAAC;4BAAS,CAAC;wBACT,KAAK,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;YACD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -63,8 +63,8 @@ USAGE:
|
|
|
63
63
|
steroids <command> [options]
|
|
64
64
|
|
|
65
65
|
COMMANDS:
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
llm Quick reference for LLM agents (project setup, commands, task flow)
|
|
67
|
+
about Alias for llm
|
|
68
68
|
|
|
69
69
|
init Initialize steroids in current directory
|
|
70
70
|
sections Manage task sections
|