steroids-cli 0.12.6 → 0.12.8
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 +52 -0
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +10 -0
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/llm-content.d.ts +2 -0
- package/dist/commands/llm-content.d.ts.map +1 -0
- package/dist/commands/llm-content.js +319 -0
- package/dist/commands/llm-content.js.map +1 -0
- package/dist/commands/llm.d.ts.map +1 -1
- package/dist/commands/llm.js +22 -290
- package/dist/commands/llm.js.map +1 -1
- package/dist/commands/loop-phases-coder.js +1 -1
- package/dist/commands/loop-phases-coder.js.map +1 -1
- package/dist/commands/loop-phases-reviewer-follow-ups.d.ts +7 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.d.ts.map +1 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.js +44 -0
- package/dist/commands/loop-phases-reviewer-follow-ups.js.map +1 -0
- package/dist/commands/loop-phases-reviewer.d.ts.map +1 -1
- package/dist/commands/loop-phases-reviewer.js +6 -45
- package/dist/commands/loop-phases-reviewer.js.map +1 -1
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +12 -1
- package/dist/commands/web.js.map +1 -1
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +27 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +111 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +74 -0
- package/dist/config/validator.js.map +1 -1
- package/dist/database/intake-queries.d.ts +51 -0
- package/dist/database/intake-queries.d.ts.map +1 -0
- package/dist/database/intake-queries.js +250 -0
- package/dist/database/intake-queries.js.map +1 -0
- package/dist/database/queries.d.ts +4 -0
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +49 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/git/section-pr.d.ts +3 -2
- package/dist/git/section-pr.d.ts.map +1 -1
- package/dist/git/section-pr.js +95 -15
- package/dist/git/section-pr.js.map +1 -1
- package/dist/hooks/events.d.ts +10 -1
- package/dist/hooks/events.d.ts.map +1 -1
- package/dist/hooks/events.js +23 -1
- package/dist/hooks/events.js.map +1 -1
- package/dist/hooks/integration.d.ts +22 -0
- package/dist/hooks/integration.d.ts.map +1 -1
- package/dist/hooks/integration.js +52 -0
- package/dist/hooks/integration.js.map +1 -1
- package/dist/hooks/payload-factories.d.ts +17 -0
- package/dist/hooks/payload-factories.d.ts.map +1 -0
- package/dist/hooks/payload-factories.js +69 -0
- package/dist/hooks/payload-factories.js.map +1 -0
- package/dist/hooks/payload-types.d.ts +169 -0
- package/dist/hooks/payload-types.d.ts.map +1 -0
- package/dist/hooks/payload-types.js +3 -0
- package/dist/hooks/payload-types.js.map +1 -0
- package/dist/hooks/payload-validation.d.ts +6 -0
- package/dist/hooks/payload-validation.d.ts.map +1 -0
- package/dist/hooks/payload-validation.js +186 -0
- package/dist/hooks/payload-validation.js.map +1 -0
- package/dist/hooks/payload.d.ts +6 -334
- package/dist/hooks/payload.d.ts.map +1 -1
- package/dist/hooks/payload.js +21 -307
- package/dist/hooks/payload.js.map +1 -1
- package/dist/hooks/template-resolvers.d.ts +9 -0
- package/dist/hooks/template-resolvers.d.ts.map +1 -0
- package/dist/hooks/template-resolvers.js +133 -0
- package/dist/hooks/template-resolvers.js.map +1 -0
- package/dist/hooks/templates.d.ts +13 -0
- package/dist/hooks/templates.d.ts.map +1 -1
- package/dist/hooks/templates.js +40 -118
- package/dist/hooks/templates.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/intake/github-gate-api.d.ts +37 -0
- package/dist/intake/github-gate-api.d.ts.map +1 -0
- package/dist/intake/github-gate-api.js +210 -0
- package/dist/intake/github-gate-api.js.map +1 -0
- package/dist/intake/github-gate.d.ts +22 -0
- package/dist/intake/github-gate.d.ts.map +1 -0
- package/dist/intake/github-gate.js +261 -0
- package/dist/intake/github-gate.js.map +1 -0
- package/dist/intake/github-issues-connector.d.ts +26 -0
- package/dist/intake/github-issues-connector.d.ts.map +1 -0
- package/dist/intake/github-issues-connector.js +350 -0
- package/dist/intake/github-issues-connector.js.map +1 -0
- package/dist/intake/index.d.ts +10 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +26 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/pipeline-glue.d.ts +61 -0
- package/dist/intake/pipeline-glue.d.ts.map +1 -0
- package/dist/intake/pipeline-glue.js +137 -0
- package/dist/intake/pipeline-glue.js.map +1 -0
- package/dist/intake/poller.d.ts +28 -0
- package/dist/intake/poller.d.ts.map +1 -0
- package/dist/intake/poller.js +186 -0
- package/dist/intake/poller.js.map +1 -0
- package/dist/intake/post-pr.d.ts +17 -0
- package/dist/intake/post-pr.d.ts.map +1 -0
- package/dist/intake/post-pr.js +78 -0
- package/dist/intake/post-pr.js.map +1 -0
- package/dist/intake/registry.d.ts +17 -0
- package/dist/intake/registry.d.ts.map +1 -0
- package/dist/intake/registry.js +57 -0
- package/dist/intake/registry.js.map +1 -0
- package/dist/intake/reviewer-approval.d.ts +10 -0
- package/dist/intake/reviewer-approval.d.ts.map +1 -0
- package/dist/intake/reviewer-approval.js +70 -0
- package/dist/intake/reviewer-approval.js.map +1 -0
- package/dist/intake/task-reference.d.ts +10 -0
- package/dist/intake/task-reference.d.ts.map +1 -0
- package/dist/intake/task-reference.js +23 -0
- package/dist/intake/task-reference.js.map +1 -0
- package/dist/intake/task-templates.d.ts +25 -0
- package/dist/intake/task-templates.d.ts.map +1 -0
- package/dist/intake/task-templates.js +98 -0
- package/dist/intake/task-templates.js.map +1 -0
- package/dist/intake/types.d.ts +103 -0
- package/dist/intake/types.d.ts.map +1 -0
- package/dist/intake/types.js +3 -0
- package/dist/intake/types.js.map +1 -0
- package/dist/orchestrator/coder.d.ts +2 -0
- package/dist/orchestrator/coder.d.ts.map +1 -1
- package/dist/orchestrator/coder.js +25 -2
- package/dist/orchestrator/coder.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +7 -14
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/interface.js +50 -0
- package/dist/providers/interface.js.map +1 -1
- package/dist/runners/orchestrator-loop.d.ts.map +1 -1
- package/dist/runners/orchestrator-loop.js +7 -0
- package/dist/runners/orchestrator-loop.js.map +1 -1
- package/dist/runners/system-pressure.d.ts +26 -0
- package/dist/runners/system-pressure.d.ts.map +1 -0
- package/dist/runners/system-pressure.js +128 -0
- package/dist/runners/system-pressure.js.map +1 -0
- package/dist/runners/wakeup-checks.d.ts.map +1 -1
- package/dist/runners/wakeup-checks.js +16 -1
- package/dist/runners/wakeup-checks.js.map +1 -1
- package/dist/runners/wakeup-global-cleanup.d.ts +20 -0
- package/dist/runners/wakeup-global-cleanup.d.ts.map +1 -0
- package/dist/runners/wakeup-global-cleanup.js +317 -0
- package/dist/runners/wakeup-global-cleanup.js.map +1 -0
- package/dist/runners/wakeup-needed.d.ts +5 -0
- package/dist/runners/wakeup-needed.d.ts.map +1 -0
- package/dist/runners/wakeup-needed.js +42 -0
- package/dist/runners/wakeup-needed.js.map +1 -0
- package/dist/runners/wakeup-project-parallel.d.ts +13 -0
- package/dist/runners/wakeup-project-parallel.d.ts.map +1 -0
- package/dist/runners/wakeup-project-parallel.js +238 -0
- package/dist/runners/wakeup-project-parallel.js.map +1 -0
- package/dist/runners/wakeup-project.d.ts +10 -0
- package/dist/runners/wakeup-project.d.ts.map +1 -0
- package/dist/runners/wakeup-project.js +209 -0
- package/dist/runners/wakeup-project.js.map +1 -0
- package/dist/runners/wakeup-registration.d.ts +2 -0
- package/dist/runners/wakeup-registration.d.ts.map +1 -0
- package/dist/runners/wakeup-registration.js +42 -0
- package/dist/runners/wakeup-registration.js.map +1 -0
- package/dist/runners/wakeup-types.d.ts +25 -0
- package/dist/runners/wakeup-types.d.ts.map +1 -0
- package/dist/runners/wakeup-types.js +3 -0
- package/dist/runners/wakeup-types.js.map +1 -0
- package/dist/runners/wakeup.d.ts +4 -24
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +25 -601
- package/dist/runners/wakeup.js.map +1 -1
- package/dist/workspace/pool.d.ts.map +1 -1
- package/dist/workspace/pool.js +37 -4
- package/dist/workspace/pool.js.map +1 -1
- package/migrations/025_add_intake_tables.sql +51 -0
- package/migrations/026_add_section_coder_and_pr_fields.sql +11 -0
- package/migrations/manifest.json +18 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,6 +34,7 @@ Steroids is an AI-powered task orchestration system that automates software deve
|
|
|
34
34
|
* [Web Dashboard](#web-dashboard)
|
|
35
35
|
* [CLI Commands](#cli-commands)
|
|
36
36
|
* [Runner Daemon](#runner-daemon)
|
|
37
|
+
* [Bug Intake](#bug-intake)
|
|
37
38
|
* [Coordinator System](#coordinator-system)
|
|
38
39
|
* [Disputes](#disputes)
|
|
39
40
|
* [Hooks](#hooks)
|
|
@@ -116,6 +117,7 @@ pending → in_progress → review → completed
|
|
|
116
117
|
* **Multi-provider support** — Claude, Codex (OpenAI), Gemini
|
|
117
118
|
* **CLI-first workflow** for power users and automation
|
|
118
119
|
* **Background runner daemon** to process tasks without babysitting
|
|
120
|
+
* **Bug intake pipeline** for polling external reports, triaging them, and driving triage/reproduction/fix work
|
|
119
121
|
* **Event hooks** — trigger scripts/webhooks on task completion, project events
|
|
120
122
|
* **Multi-project support** with global project registry
|
|
121
123
|
* **Web dashboard** for monitoring progress across projects
|
|
@@ -405,6 +407,20 @@ The daemon:
|
|
|
405
407
|
|
|
406
408
|
---
|
|
407
409
|
|
|
410
|
+
## Bug Intake
|
|
411
|
+
|
|
412
|
+
Steroids can ingest external bug reports, normalize them into the project database, and move them through a deterministic `triage -> reproduction -> fix` workflow.
|
|
413
|
+
|
|
414
|
+
- Intake connectors poll during `steroids runners wakeup`, honoring each connector's poll interval and persisted cursor state.
|
|
415
|
+
- GitHub intake can also accept signed inbound webhooks at `POST /webhooks/intake/:connector`.
|
|
416
|
+
- New reports can open a GitHub approval issue, then create internal intake tasks only after the gate is approved.
|
|
417
|
+
- Intake tasks stay phase-specific: triage decides `close | reproduce | fix`, reproduction decides `close | retry | fix`, and approved tasks advance the report without ad hoc state transitions.
|
|
418
|
+
- The dashboard and API expose intake reports, summary stats, and connector health so you can monitor the pipeline without digging through the database.
|
|
419
|
+
|
|
420
|
+
This is intended for bug-report funnels such as GitHub Issues or Sentry where you want external reports to become tightly scoped internal work instead of free-form backlog noise.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
408
424
|
## Coordinator System
|
|
409
425
|
|
|
410
426
|
When the coder and reviewer get stuck in a rejection loop, the **coordinator** intervenes automatically at rejection thresholds (2, 5, and 9 rejections):
|
|
@@ -498,6 +514,15 @@ ai:
|
|
|
498
514
|
provider: claude
|
|
499
515
|
model: claude-sonnet-4
|
|
500
516
|
|
|
517
|
+
git:
|
|
518
|
+
remote: origin
|
|
519
|
+
branch: main
|
|
520
|
+
prAssignees: # Optional GitHub assignees for auto-created section PRs
|
|
521
|
+
- "@me"
|
|
522
|
+
prReviewers: # Optional GitHub reviewers or teams for auto-created section PRs
|
|
523
|
+
- octocat
|
|
524
|
+
- my-org/platform-team
|
|
525
|
+
|
|
501
526
|
output:
|
|
502
527
|
format: table
|
|
503
528
|
colors: true
|
|
@@ -541,8 +566,35 @@ logs:
|
|
|
541
566
|
backup:
|
|
542
567
|
enabled: true
|
|
543
568
|
retention: 7d
|
|
569
|
+
|
|
570
|
+
intake:
|
|
571
|
+
enabled: false
|
|
572
|
+
pollIntervalMinutes: 15
|
|
573
|
+
maxReportsPerPoll: 50
|
|
574
|
+
connectors:
|
|
575
|
+
sentry:
|
|
576
|
+
enabled: false
|
|
577
|
+
baseUrl: https://sentry.io
|
|
578
|
+
organization: ""
|
|
579
|
+
project: ""
|
|
580
|
+
authTokenEnvVar: SENTRY_AUTH_TOKEN
|
|
581
|
+
webhookSecretEnvVar: SENTRY_WEBHOOK_SECRET
|
|
582
|
+
github:
|
|
583
|
+
enabled: false
|
|
584
|
+
apiBaseUrl: https://api.github.com
|
|
585
|
+
owner: ""
|
|
586
|
+
repo: ""
|
|
587
|
+
tokenEnvVar: GITHUB_TOKEN
|
|
588
|
+
webhookSecretEnvVar: GITHUB_WEBHOOK_SECRET
|
|
589
|
+
labels: []
|
|
544
590
|
```
|
|
545
591
|
|
|
592
|
+
`intake` defines shared bug-intake connector settings. Validation rejects `intake.enabled: true` unless at least one connector is enabled and its required identifiers are configured.
|
|
593
|
+
|
|
594
|
+
The GitHub Issues connector uses the installed `gh` CLI for pull and push operations. The token named by `intake.connectors.github.tokenEnvVar` must be present in the environment when intake runs.
|
|
595
|
+
Inbound signed webhooks use `POST /webhooks/intake/:connector` and validate HMAC-SHA256 signatures against the connector secret named by `webhookSecretEnvVar`.
|
|
596
|
+
Enabled intake connectors are polled during the regular `steroids runners wakeup` cycle, honoring `pollIntervalMinutes` and persisting normalized reports plus per-connector cursor state in the project database.
|
|
597
|
+
|
|
546
598
|
### Global Config (`~/.steroids/config.yaml`)
|
|
547
599
|
|
|
548
600
|
Same schema — acts as default, overridden by project config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../src/commands/gc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../src/commands/gc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0DnD,eAAO,MAAM,SAAS,uDAuDpB,CAAC"}
|
package/dist/commands/gc.js
CHANGED
|
@@ -36,6 +36,7 @@ const HELP = (0, help_js_1.generateHelp)({
|
|
|
36
36
|
{ command: 'steroids backup', description: 'Create backups' },
|
|
37
37
|
],
|
|
38
38
|
});
|
|
39
|
+
const wakeup_global_cleanup_js_1 = require("../runners/wakeup-global-cleanup.js");
|
|
39
40
|
const base_command_js_1 = require("../cli/base-command.js");
|
|
40
41
|
exports.gcCommand = (0, base_command_js_1.defineCommand)({
|
|
41
42
|
name: 'gc',
|
|
@@ -61,6 +62,7 @@ exports.gcCommand = (0, base_command_js_1.defineCommand)({
|
|
|
61
62
|
orphanedIds: 0,
|
|
62
63
|
staleRunners: 0,
|
|
63
64
|
tempFiles: 0,
|
|
65
|
+
providerHomes: 0,
|
|
64
66
|
vacuumedBytes: 0,
|
|
65
67
|
};
|
|
66
68
|
/* REFACTOR_MANUAL */ (0, connection_js_1.withDatabase)(projectPath, (db) => {
|
|
@@ -75,6 +77,7 @@ exports.gcCommand = (0, base_command_js_1.defineCommand)({
|
|
|
75
77
|
// Clean temp files
|
|
76
78
|
if (runAll || values['temp-files']) {
|
|
77
79
|
result.tempFiles = cleanTempFiles(projectPath, dryRun);
|
|
80
|
+
result.providerHomes = (0, wakeup_global_cleanup_js_1.cleanStaleProviderHomes)(dryRun, () => { });
|
|
78
81
|
}
|
|
79
82
|
// Vacuum database
|
|
80
83
|
if (runAll || values.vacuum) {
|
|
@@ -243,6 +246,7 @@ function outputResult(result, json, dryRun) {
|
|
|
243
246
|
orphanedIds: result.orphanedIds,
|
|
244
247
|
staleRunners: result.staleRunners,
|
|
245
248
|
tempFiles: result.tempFiles,
|
|
249
|
+
providerHomes: result.providerHomes,
|
|
246
250
|
vacuumedBytes: result.vacuumedBytes,
|
|
247
251
|
},
|
|
248
252
|
error: null,
|
|
@@ -268,6 +272,12 @@ function outputResult(result, json, dryRun) {
|
|
|
268
272
|
else {
|
|
269
273
|
console.log(` - No temp files found`);
|
|
270
274
|
}
|
|
275
|
+
if (result.providerHomes > 0) {
|
|
276
|
+
console.log(` \u2713 ${prefix}Cleaned ${result.providerHomes} stale provider home dir(s)`);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
console.log(` - No stale provider homes found`);
|
|
280
|
+
}
|
|
271
281
|
if (result.vacuumedBytes > 0) {
|
|
272
282
|
console.log(` \u2713 ${prefix}Vacuumed database (${formatSize(result.vacuumedBytes)} ${dryRun ? 'potential' : 'saved'})`);
|
|
273
283
|
}
|
package/dist/commands/gc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/commands/gc.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AASzD,qCAAgF;AAChF,yCAAiC;AAGjC,4CAA8C;AAE9C,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/commands/gc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const LLM_INSTRUCTIONS = "# STEROIDS LLM QUICK REFERENCE\n\n## WHAT IS STEROIDS\nSteroids=automated task orchestration system.\nIt manages tasks and invokes LLM agents (coders/reviewers) to execute them.\nThe system spawns separate LLM processes for coding and reviewing.\nDeterministic daemon \u2014 never makes decisions, just follows the state machine.\n\n## DATABASE ACCESS RULES (CRITICAL)\n- Never touch '.steroids/steroids.db' directly \u2014 no raw SQL, no sqlite3.\n- Use 'steroids llm' first to understand how to inspect or manipulate the system.\n- Read/write operations must go through the steroids CLI only.\n\n## TASK SIZING (CRITICAL)\n\nTasks should be PR-sized chunks of work \u2014 not individual classes or functions,\nbut whole testable pieces of functionality. Think \"what would make a good pull request?\"\n\nGOOD task sizing:\n- \"Implement user authentication endpoint with tests\"\n- \"Add section dependency graph visualization\"\n- \"Build CSV export for task reports\"\n\nBAD task sizing (too granular):\n- \"Create UserService class\"\n- \"Add validateEmail helper function\"\n- \"Write test for login method\"\n\nBAD task sizing (too large):\n- \"Build the entire frontend\"\n- \"Implement all API endpoints\"\n\nEach task should produce a reviewable, testable unit of work that can be\nmerged independently. The reviewer needs enough context to verify correctness,\nand the coder needs enough scope to make meaningful progress.\n\n## TASK STATE MACHINE\n\n### All 8 Statuses\n\n| Marker | Status | Terminal? | Runner picks it? | Description |\n|--------|-------------|-----------|-------------------|------------------------------------------------|\n| [ ] | pending | No | YES \u2192 coder | Not started, waiting for coder |\n| [-] | in_progress | No | YES \u2192 coder | Coder is actively working |\n| [o] | review | No | YES \u2192 reviewer | Coder finished, waiting for reviewer |\n| [x] | completed | YES | No | Reviewer approved, code pushed |\n| [!] | disputed | YES | No | Coder/reviewer disagreement, code pushed |\n| [F] | failed | YES | No | Exceeded 15 rejections, needs human |\n| [S] | skipped | YES | No | Fully external \u2014 nothing to code |\n| [s] | partial | YES | No | Some coded, rest needs external setup |\n\nCRITICAL: skipped [S] and partial [s] are TERMINAL states. The runner will NEVER\npick them up for coding. Once a task is marked partial/skipped, it is DONE from the\nrunner's perspective. If coding is still needed, reset to pending manually.\n\n### State Transitions\n\npending [ ] \u2192 in_progress [-] \u2192 review [o] \u2192 completed [x] (approved)\n \u2193 rejected \u2192 back to in_progress [-]\n \u2193 disputed \u2192 disputed [!] (code pushed, move on)\n if 15 rejections \u2192 failed [F] (full stop)\nHuman can mark at any time \u2192 skipped [S] or partial [s] (terminal)\n\n### Coordinator Intervention\nAt rejection thresholds [2, 5, 9], a coordinator LLM is invoked to analyze the\nrejection pattern and provide guidance to both coder and reviewer. This breaks\ncoder/reviewer deadlocks without human intervention.\n\n## TASK SELECTION ALGORITHM\n\nRunner selects tasks in strict priority order:\n\n Priority 1: review [o] \u2014 complete reviews before starting new work\n Priority 2: in_progress [-] \u2014 resume incomplete work\n Priority 3: pending [ ] \u2014 start new work\n\nWithin each priority, ordered by: section position (lower=first), then created_at (older=first).\n\n### Filters Applied Before Selection\n1. Terminal statuses excluded: completed, disputed, failed, skipped, partial\n2. Tasks in skipped sections excluded (unless runner focused on specific section)\n3. Tasks in sections with UNMET DEPENDENCIES excluded (see below)\n4. Tasks locked by another runner excluded\n\nIf no selectable task exists \u2192 runner goes idle.\n\n## SECTION DEPENDENCIES\n\nSections can declare dependencies on other sections:\n steroids sections depends-on <A> <B> \u2192 Section A depends on Section B\n\nEffect: ALL tasks in section B must be completed before ANY task in section A\ncan be picked by the runner. \"Completed\" means status=completed (not just\nskipped/partial \u2014 those count as incomplete for dependency purposes).\n\nDependency checks:\n- Cycle detection prevents circular dependencies\n- Runner evaluates dependencies at task selection time\n- Use `steroids sections graph` to visualize the dependency tree\n\nCommands:\n steroids sections depends-on <id> <dep-id> # add dependency\n steroids sections no-depends-on <id> <dep-id> # remove dependency\n steroids sections list --deps # show deps inline\n steroids sections graph # ASCII dependency tree\n steroids sections graph --mermaid # Mermaid syntax\n steroids sections graph --json # JSON output\n\n## ARCHITECTURE\n- Tasks stored in .steroids/steroids.db (SQLite, per project)\n- Runner daemon executes the loop (one per project)\n- Coder LLM: implements task, commits, submits for review\n- Reviewer LLM: verifies implementation, approves or rejects\n- Coordinator LLM: breaks deadlocks at rejection thresholds [2, 5, 9]\n- Build verification: orchestrator re-runs build+tests after coder submits\n- If build/tests fail \u2192 auto-reject back to in_progress (coder fixes)\n\n## MULTI-PROJECT\n- Multiple projects can have runners simultaneously\n- Each runner bound to ONE project only\n- Global registry at ~/.steroids/steroids.db tracks all projects\n- NEVER modify files outside current project\n\n## KEY COMMANDS\n\n### View Tasks\nsteroids tasks stats # task counts by status\nsteroids tasks # pending tasks (current project)\nsteroids tasks --status active # in_progress+review (current project)\nsteroids tasks --status active --global # active across ALL projects\nsteroids tasks --status all # all tasks\nsteroids tasks audit <id> # view task spec, history, rejection notes\n\n### Add Tasks\nsteroids tasks add \"Title\" --section <id> --source <spec-file>\nsteroids tasks add \"Title\" --section <id> --source spec.md --file src/foo.ts --line 42\nsteroids tasks feedback \"Advisory note\"\n\nOptions:\n --section <id> Section to add the task to (required unless --feedback)\n --source <file> Specification markdown file (required unless --feedback)\n --file <path> Anchor task to a specific file in the codebase\n File must be committed in git (not dirty/untracked)\n Auto-captures: commit SHA of last change + content hash\n Coder/reviewer prompts will reference this exact location\n --line <number> Line number in the anchored file (requires --file)\n --feedback Add to skipped \"Needs User Input\" section for human review\n Skips --section and --source requirements\n\nBEST PRACTICE: When generating tasks from documentation or specs, commit the\ndocumentation first, then fill in ALL values including optional ones:\n --source pointing to the committed spec file\n --file pointing to the relevant source file in the codebase\n --line pointing to the exact line where work applies\nThis gives the coder/reviewer maximum context and traceability.\n\n### Manage Tasks\nsteroids tasks update <id> --status <s> --actor model --model <m>\n statuses: pending, in_progress, review, completed, skipped, partial\nsteroids tasks update <id> --source <file> # fix/change spec file\nsteroids tasks update <id> --title \"New title\" # rename task\nsteroids tasks update <id> --section <id> # move to different section\nsteroids tasks update <id> --file <path> --line <n> # change file anchor\nsteroids tasks approve <id> --model <m> [--notes \"msg\"] # mark completed\nsteroids tasks reject <id> --model <m> --notes \"feedback\" # back to pending\nsteroids tasks skip <id> --notes \"reason\" # external setup, skip it\nsteroids tasks skip <id> --partial --notes \"reason\" # coded some, rest external\n\n### Sections\nsteroids sections list # list sections\nsteroids sections list --deps # list with dependencies shown\nsteroids sections skip <id> # exclude from runner\nsteroids sections unskip <id> # include in runner\nsteroids sections priority <id> <val> # set priority (0-100 or high/medium/low)\nsteroids sections depends-on <A> <B> # A depends on B (B must complete first)\nsteroids sections no-depends-on <A> <B> # remove dependency\nsteroids sections graph # show dependency graph\n\n### Runners (daemon that executes tasks)\nsteroids runners list # all runners (all projects)\nsteroids runners start --detach # start background daemon\nsteroids runners start --section \"X\" # focus on specific section\nsteroids runners stop --all # stop all\nsteroids runners status # current state\nsteroids runners logs <pid> # view daemon output\nsteroids runners wakeup # poll intake + restart stale runners\n\nNOTE: Stopping a runner is temporary \u2014 the wakeup cron will respawn it.\nTo permanently stop a runner, DISABLE the project first:\n steroids projects disable # then steroids runners stop --all\n\n### Projects\nsteroids projects list # all registered projects\n\n### Web Dashboard\nsteroids web # clone (first run) and launch dashboard\nsteroids web update # pull latest + reinstall deps\nsteroids web stop # stop running dashboard\nsteroids web status # check if dashboard is running\nsteroids web config # manage web dashboard configuration\n\n## BUG INTAKE\n\nExternal bug intake is config-driven and currently supports the GitHub Issues\nconnector. If `intake.connectors.sentry.enabled=true`, registry construction\nfails fast because the Sentry runtime connector is not implemented here.\n\nKey concepts:\n- Connector: pulls normalized reports from an external source into Steroids\n- Intake report: stored record keyed by source + external_id\n- Approval gate: GitHub issue flow that approves or rejects intake reports\n- Intake hooks: `intake.received`, `intake.triaged`, `intake.pr_created`\n- Intake pipeline tasks: `Triage intake report ...`, `Reproduce intake report ...`,\n `Fix intake report ...`\n\nUseful commands:\n steroids config show intake # inspect merged intake config\n steroids config schema intake # JSON Schema for intake settings\n steroids config validate # validate connector config\n steroids hooks list --event intake.received # inspect intake automation hooks\n steroids runners wakeup # poll due connectors + sync gate issues\n steroids web # view intake reports in dashboard\n\nIntake report statuses:\n open -> triaged -> in_progress -> resolved\n \\-> ignored\n\n## COMMON OPERATIONS\n\n### Start automation\nsteroids runners start --detach # daemon picks tasks and invokes coders/reviewers\n\n### Check what's happening\nsteroids tasks --status active --global # see all active work\nsteroids runners list # see all running daemons\n\n### Unblock stuck task in review\nsteroids tasks approve <id> --model human # approve manually\nsteroids tasks reject <id> --model human --notes \"reason\" # reject manually\n\n### Restart failed task\nsteroids tasks update <id> --status pending --reset-rejections # reset to pending with fresh count\n\n### Fix incorrectly marked partial/skipped tasks\nsteroids tasks update <id> --status pending --actor human:cli\n# Use when: a task was marked partial/skipped but still needs coding\n\n### Skip external setup task\nsteroids tasks skip <id> --notes \"spec says SKIP, needs Cloud SQL setup\"\n# Use when: spec says SKIP/MANUAL, requires cloud console, account creation, etc.\n# --partial: use if you coded some parts but rest needs human action\n\n## PROJECT SETUP\n\nSECTIONS = Features or Functional Areas\n - Each section represents ONE cohesive piece of functionality\n - Sections should be independent enough to be worked on in isolation\n - Sections have priorities and can depend on other sections\n\nTASKS = PR-Sized Implementation Units\n - Each task produces a reviewable, testable unit of work\n - Tasks must have a specification file explaining exactly what to build\n - Tasks are ordered within sections \u2014 earlier tasks may set up later ones\n\nSPECIFICATIONS = Markdown files describing what to build\n - Include: purpose, requirements, examples, acceptance criteria\n - Reference existing code patterns the implementation should follow\n - Create a specs/ directory with markdown files\n\nINITIALIZING A PROJECT:\n 1. steroids init -y # non-interactive, accept defaults\n 2. Create specs/ with your specifications\n 3. steroids sections add \"Phase 1: Feature Name\"\n 4. steroids tasks add \"Task title\" --section <id> --source specs/spec.md\n 5. steroids loop\n\n## DATABASE MIGRATIONS (IMPORTANT)\n\nEach project has its own SQLite database (.steroids/steroids.db). When Steroids is\nupdated with schema changes, older project databases need migration.\n\nMigrations run AUTOMATICALLY on any command that opens the database. However, if a\nproject hasn't been used for a while and the schema has drifted significantly,\nauto-migration may fail.\n\n### Before Adding Tasks to an Existing Project\nAlways verify the database is healthy first:\n steroids health # checks DB, runs auto-migration\n\nIf you see \"Database schema is out of date\" errors:\n STEROIDS_AUTO_MIGRATE=1 steroids health # force migration + health check\n\n### How Migrations Work\n- Migration files live in migrations/ (SQL with UP/DOWN sections)\n- Applied automatically when the database is opened\n- A backup is created before each migration (.steroids/backups/)\n- Safe to run multiple times (idempotent)\n- If migration fails: fix the issue, then re-run any steroids command\n\n### For LLM Agents\nALWAYS run `steroids health` before adding the first task to a project you haven't\ntouched recently. This ensures the schema is current and prevents cryptic SQL errors\nduring task creation or runner execution.\n\n## IMPORTANT NOTES\n- Task spec is in source file (see tasks audit output)\n- Max 15 rejections before task fails; coordinator intervenes at [2, 5, 9]\n- Runner auto-restarts via cron (steroids runners cron install)\n- Each project isolated: own database, own runner\n- Section dependencies block entire sections, not individual tasks\n- Build+test verification happens automatically after coder submits\n- Always run build AND tests before submitting for review\n- Never modify code outside the task scope\n- If stuck, create a dispute rather than guessing\n";
|
|
2
|
+
//# sourceMappingURL=llm-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-content.d.ts","sourceRoot":"","sources":["../../src/commands/llm-content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,yreA0T5B,CAAC"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LLM_INSTRUCTIONS = void 0;
|
|
4
|
+
exports.LLM_INSTRUCTIONS = `# STEROIDS LLM QUICK REFERENCE
|
|
5
|
+
|
|
6
|
+
## WHAT IS STEROIDS
|
|
7
|
+
Steroids=automated task orchestration system.
|
|
8
|
+
It manages tasks and invokes LLM agents (coders/reviewers) to execute them.
|
|
9
|
+
The system spawns separate LLM processes for coding and reviewing.
|
|
10
|
+
Deterministic daemon — never makes decisions, just follows the state machine.
|
|
11
|
+
|
|
12
|
+
## DATABASE ACCESS RULES (CRITICAL)
|
|
13
|
+
- Never touch '.steroids/steroids.db' directly — no raw SQL, no sqlite3.
|
|
14
|
+
- Use 'steroids llm' first to understand how to inspect or manipulate the system.
|
|
15
|
+
- Read/write operations must go through the steroids CLI only.
|
|
16
|
+
|
|
17
|
+
## TASK SIZING (CRITICAL)
|
|
18
|
+
|
|
19
|
+
Tasks should be PR-sized chunks of work — not individual classes or functions,
|
|
20
|
+
but whole testable pieces of functionality. Think "what would make a good pull request?"
|
|
21
|
+
|
|
22
|
+
GOOD task sizing:
|
|
23
|
+
- "Implement user authentication endpoint with tests"
|
|
24
|
+
- "Add section dependency graph visualization"
|
|
25
|
+
- "Build CSV export for task reports"
|
|
26
|
+
|
|
27
|
+
BAD task sizing (too granular):
|
|
28
|
+
- "Create UserService class"
|
|
29
|
+
- "Add validateEmail helper function"
|
|
30
|
+
- "Write test for login method"
|
|
31
|
+
|
|
32
|
+
BAD task sizing (too large):
|
|
33
|
+
- "Build the entire frontend"
|
|
34
|
+
- "Implement all API endpoints"
|
|
35
|
+
|
|
36
|
+
Each task should produce a reviewable, testable unit of work that can be
|
|
37
|
+
merged independently. The reviewer needs enough context to verify correctness,
|
|
38
|
+
and the coder needs enough scope to make meaningful progress.
|
|
39
|
+
|
|
40
|
+
## TASK STATE MACHINE
|
|
41
|
+
|
|
42
|
+
### All 8 Statuses
|
|
43
|
+
|
|
44
|
+
| Marker | Status | Terminal? | Runner picks it? | Description |
|
|
45
|
+
|--------|-------------|-----------|-------------------|------------------------------------------------|
|
|
46
|
+
| [ ] | pending | No | YES → coder | Not started, waiting for coder |
|
|
47
|
+
| [-] | in_progress | No | YES → coder | Coder is actively working |
|
|
48
|
+
| [o] | review | No | YES → reviewer | Coder finished, waiting for reviewer |
|
|
49
|
+
| [x] | completed | YES | No | Reviewer approved, code pushed |
|
|
50
|
+
| [!] | disputed | YES | No | Coder/reviewer disagreement, code pushed |
|
|
51
|
+
| [F] | failed | YES | No | Exceeded 15 rejections, needs human |
|
|
52
|
+
| [S] | skipped | YES | No | Fully external — nothing to code |
|
|
53
|
+
| [s] | partial | YES | No | Some coded, rest needs external setup |
|
|
54
|
+
|
|
55
|
+
CRITICAL: skipped [S] and partial [s] are TERMINAL states. The runner will NEVER
|
|
56
|
+
pick them up for coding. Once a task is marked partial/skipped, it is DONE from the
|
|
57
|
+
runner's perspective. If coding is still needed, reset to pending manually.
|
|
58
|
+
|
|
59
|
+
### State Transitions
|
|
60
|
+
|
|
61
|
+
pending [ ] → in_progress [-] → review [o] → completed [x] (approved)
|
|
62
|
+
↓ rejected → back to in_progress [-]
|
|
63
|
+
↓ disputed → disputed [!] (code pushed, move on)
|
|
64
|
+
if 15 rejections → failed [F] (full stop)
|
|
65
|
+
Human can mark at any time → skipped [S] or partial [s] (terminal)
|
|
66
|
+
|
|
67
|
+
### Coordinator Intervention
|
|
68
|
+
At rejection thresholds [2, 5, 9], a coordinator LLM is invoked to analyze the
|
|
69
|
+
rejection pattern and provide guidance to both coder and reviewer. This breaks
|
|
70
|
+
coder/reviewer deadlocks without human intervention.
|
|
71
|
+
|
|
72
|
+
## TASK SELECTION ALGORITHM
|
|
73
|
+
|
|
74
|
+
Runner selects tasks in strict priority order:
|
|
75
|
+
|
|
76
|
+
Priority 1: review [o] — complete reviews before starting new work
|
|
77
|
+
Priority 2: in_progress [-] — resume incomplete work
|
|
78
|
+
Priority 3: pending [ ] — start new work
|
|
79
|
+
|
|
80
|
+
Within each priority, ordered by: section position (lower=first), then created_at (older=first).
|
|
81
|
+
|
|
82
|
+
### Filters Applied Before Selection
|
|
83
|
+
1. Terminal statuses excluded: completed, disputed, failed, skipped, partial
|
|
84
|
+
2. Tasks in skipped sections excluded (unless runner focused on specific section)
|
|
85
|
+
3. Tasks in sections with UNMET DEPENDENCIES excluded (see below)
|
|
86
|
+
4. Tasks locked by another runner excluded
|
|
87
|
+
|
|
88
|
+
If no selectable task exists → runner goes idle.
|
|
89
|
+
|
|
90
|
+
## SECTION DEPENDENCIES
|
|
91
|
+
|
|
92
|
+
Sections can declare dependencies on other sections:
|
|
93
|
+
steroids sections depends-on <A> <B> → Section A depends on Section B
|
|
94
|
+
|
|
95
|
+
Effect: ALL tasks in section B must be completed before ANY task in section A
|
|
96
|
+
can be picked by the runner. "Completed" means status=completed (not just
|
|
97
|
+
skipped/partial — those count as incomplete for dependency purposes).
|
|
98
|
+
|
|
99
|
+
Dependency checks:
|
|
100
|
+
- Cycle detection prevents circular dependencies
|
|
101
|
+
- Runner evaluates dependencies at task selection time
|
|
102
|
+
- Use \`steroids sections graph\` to visualize the dependency tree
|
|
103
|
+
|
|
104
|
+
Commands:
|
|
105
|
+
steroids sections depends-on <id> <dep-id> # add dependency
|
|
106
|
+
steroids sections no-depends-on <id> <dep-id> # remove dependency
|
|
107
|
+
steroids sections list --deps # show deps inline
|
|
108
|
+
steroids sections graph # ASCII dependency tree
|
|
109
|
+
steroids sections graph --mermaid # Mermaid syntax
|
|
110
|
+
steroids sections graph --json # JSON output
|
|
111
|
+
|
|
112
|
+
## ARCHITECTURE
|
|
113
|
+
- Tasks stored in .steroids/steroids.db (SQLite, per project)
|
|
114
|
+
- Runner daemon executes the loop (one per project)
|
|
115
|
+
- Coder LLM: implements task, commits, submits for review
|
|
116
|
+
- Reviewer LLM: verifies implementation, approves or rejects
|
|
117
|
+
- Coordinator LLM: breaks deadlocks at rejection thresholds [2, 5, 9]
|
|
118
|
+
- Build verification: orchestrator re-runs build+tests after coder submits
|
|
119
|
+
- If build/tests fail → auto-reject back to in_progress (coder fixes)
|
|
120
|
+
|
|
121
|
+
## MULTI-PROJECT
|
|
122
|
+
- Multiple projects can have runners simultaneously
|
|
123
|
+
- Each runner bound to ONE project only
|
|
124
|
+
- Global registry at ~/.steroids/steroids.db tracks all projects
|
|
125
|
+
- NEVER modify files outside current project
|
|
126
|
+
|
|
127
|
+
## KEY COMMANDS
|
|
128
|
+
|
|
129
|
+
### View Tasks
|
|
130
|
+
steroids tasks stats # task counts by status
|
|
131
|
+
steroids tasks # pending tasks (current project)
|
|
132
|
+
steroids tasks --status active # in_progress+review (current project)
|
|
133
|
+
steroids tasks --status active --global # active across ALL projects
|
|
134
|
+
steroids tasks --status all # all tasks
|
|
135
|
+
steroids tasks audit <id> # view task spec, history, rejection notes
|
|
136
|
+
|
|
137
|
+
### Add Tasks
|
|
138
|
+
steroids tasks add "Title" --section <id> --source <spec-file>
|
|
139
|
+
steroids tasks add "Title" --section <id> --source spec.md --file src/foo.ts --line 42
|
|
140
|
+
steroids tasks feedback "Advisory note"
|
|
141
|
+
|
|
142
|
+
Options:
|
|
143
|
+
--section <id> Section to add the task to (required unless --feedback)
|
|
144
|
+
--source <file> Specification markdown file (required unless --feedback)
|
|
145
|
+
--file <path> Anchor task to a specific file in the codebase
|
|
146
|
+
File must be committed in git (not dirty/untracked)
|
|
147
|
+
Auto-captures: commit SHA of last change + content hash
|
|
148
|
+
Coder/reviewer prompts will reference this exact location
|
|
149
|
+
--line <number> Line number in the anchored file (requires --file)
|
|
150
|
+
--feedback Add to skipped "Needs User Input" section for human review
|
|
151
|
+
Skips --section and --source requirements
|
|
152
|
+
|
|
153
|
+
BEST PRACTICE: When generating tasks from documentation or specs, commit the
|
|
154
|
+
documentation first, then fill in ALL values including optional ones:
|
|
155
|
+
--source pointing to the committed spec file
|
|
156
|
+
--file pointing to the relevant source file in the codebase
|
|
157
|
+
--line pointing to the exact line where work applies
|
|
158
|
+
This gives the coder/reviewer maximum context and traceability.
|
|
159
|
+
|
|
160
|
+
### Manage Tasks
|
|
161
|
+
steroids tasks update <id> --status <s> --actor model --model <m>
|
|
162
|
+
statuses: pending, in_progress, review, completed, skipped, partial
|
|
163
|
+
steroids tasks update <id> --source <file> # fix/change spec file
|
|
164
|
+
steroids tasks update <id> --title "New title" # rename task
|
|
165
|
+
steroids tasks update <id> --section <id> # move to different section
|
|
166
|
+
steroids tasks update <id> --file <path> --line <n> # change file anchor
|
|
167
|
+
steroids tasks approve <id> --model <m> [--notes "msg"] # mark completed
|
|
168
|
+
steroids tasks reject <id> --model <m> --notes "feedback" # back to pending
|
|
169
|
+
steroids tasks skip <id> --notes "reason" # external setup, skip it
|
|
170
|
+
steroids tasks skip <id> --partial --notes "reason" # coded some, rest external
|
|
171
|
+
|
|
172
|
+
### Sections
|
|
173
|
+
steroids sections list # list sections
|
|
174
|
+
steroids sections list --deps # list with dependencies shown
|
|
175
|
+
steroids sections skip <id> # exclude from runner
|
|
176
|
+
steroids sections unskip <id> # include in runner
|
|
177
|
+
steroids sections priority <id> <val> # set priority (0-100 or high/medium/low)
|
|
178
|
+
steroids sections depends-on <A> <B> # A depends on B (B must complete first)
|
|
179
|
+
steroids sections no-depends-on <A> <B> # remove dependency
|
|
180
|
+
steroids sections graph # show dependency graph
|
|
181
|
+
|
|
182
|
+
### Runners (daemon that executes tasks)
|
|
183
|
+
steroids runners list # all runners (all projects)
|
|
184
|
+
steroids runners start --detach # start background daemon
|
|
185
|
+
steroids runners start --section "X" # focus on specific section
|
|
186
|
+
steroids runners stop --all # stop all
|
|
187
|
+
steroids runners status # current state
|
|
188
|
+
steroids runners logs <pid> # view daemon output
|
|
189
|
+
steroids runners wakeup # poll intake + restart stale runners
|
|
190
|
+
|
|
191
|
+
NOTE: Stopping a runner is temporary — the wakeup cron will respawn it.
|
|
192
|
+
To permanently stop a runner, DISABLE the project first:
|
|
193
|
+
steroids projects disable # then steroids runners stop --all
|
|
194
|
+
|
|
195
|
+
### Projects
|
|
196
|
+
steroids projects list # all registered projects
|
|
197
|
+
|
|
198
|
+
### Web Dashboard
|
|
199
|
+
steroids web # clone (first run) and launch dashboard
|
|
200
|
+
steroids web update # pull latest + reinstall deps
|
|
201
|
+
steroids web stop # stop running dashboard
|
|
202
|
+
steroids web status # check if dashboard is running
|
|
203
|
+
steroids web config # manage web dashboard configuration
|
|
204
|
+
|
|
205
|
+
## BUG INTAKE
|
|
206
|
+
|
|
207
|
+
External bug intake is config-driven and currently supports the GitHub Issues
|
|
208
|
+
connector. If \`intake.connectors.sentry.enabled=true\`, registry construction
|
|
209
|
+
fails fast because the Sentry runtime connector is not implemented here.
|
|
210
|
+
|
|
211
|
+
Key concepts:
|
|
212
|
+
- Connector: pulls normalized reports from an external source into Steroids
|
|
213
|
+
- Intake report: stored record keyed by source + external_id
|
|
214
|
+
- Approval gate: GitHub issue flow that approves or rejects intake reports
|
|
215
|
+
- Intake hooks: \`intake.received\`, \`intake.triaged\`, \`intake.pr_created\`
|
|
216
|
+
- Intake pipeline tasks: \`Triage intake report ...\`, \`Reproduce intake report ...\`,
|
|
217
|
+
\`Fix intake report ...\`
|
|
218
|
+
|
|
219
|
+
Useful commands:
|
|
220
|
+
steroids config show intake # inspect merged intake config
|
|
221
|
+
steroids config schema intake # JSON Schema for intake settings
|
|
222
|
+
steroids config validate # validate connector config
|
|
223
|
+
steroids hooks list --event intake.received # inspect intake automation hooks
|
|
224
|
+
steroids runners wakeup # poll due connectors + sync gate issues
|
|
225
|
+
steroids web # view intake reports in dashboard
|
|
226
|
+
|
|
227
|
+
Intake report statuses:
|
|
228
|
+
open -> triaged -> in_progress -> resolved
|
|
229
|
+
\\-> ignored
|
|
230
|
+
|
|
231
|
+
## COMMON OPERATIONS
|
|
232
|
+
|
|
233
|
+
### Start automation
|
|
234
|
+
steroids runners start --detach # daemon picks tasks and invokes coders/reviewers
|
|
235
|
+
|
|
236
|
+
### Check what's happening
|
|
237
|
+
steroids tasks --status active --global # see all active work
|
|
238
|
+
steroids runners list # see all running daemons
|
|
239
|
+
|
|
240
|
+
### Unblock stuck task in review
|
|
241
|
+
steroids tasks approve <id> --model human # approve manually
|
|
242
|
+
steroids tasks reject <id> --model human --notes "reason" # reject manually
|
|
243
|
+
|
|
244
|
+
### Restart failed task
|
|
245
|
+
steroids tasks update <id> --status pending --reset-rejections # reset to pending with fresh count
|
|
246
|
+
|
|
247
|
+
### Fix incorrectly marked partial/skipped tasks
|
|
248
|
+
steroids tasks update <id> --status pending --actor human:cli
|
|
249
|
+
# Use when: a task was marked partial/skipped but still needs coding
|
|
250
|
+
|
|
251
|
+
### Skip external setup task
|
|
252
|
+
steroids tasks skip <id> --notes "spec says SKIP, needs Cloud SQL setup"
|
|
253
|
+
# Use when: spec says SKIP/MANUAL, requires cloud console, account creation, etc.
|
|
254
|
+
# --partial: use if you coded some parts but rest needs human action
|
|
255
|
+
|
|
256
|
+
## PROJECT SETUP
|
|
257
|
+
|
|
258
|
+
SECTIONS = Features or Functional Areas
|
|
259
|
+
- Each section represents ONE cohesive piece of functionality
|
|
260
|
+
- Sections should be independent enough to be worked on in isolation
|
|
261
|
+
- Sections have priorities and can depend on other sections
|
|
262
|
+
|
|
263
|
+
TASKS = PR-Sized Implementation Units
|
|
264
|
+
- Each task produces a reviewable, testable unit of work
|
|
265
|
+
- Tasks must have a specification file explaining exactly what to build
|
|
266
|
+
- Tasks are ordered within sections — earlier tasks may set up later ones
|
|
267
|
+
|
|
268
|
+
SPECIFICATIONS = Markdown files describing what to build
|
|
269
|
+
- Include: purpose, requirements, examples, acceptance criteria
|
|
270
|
+
- Reference existing code patterns the implementation should follow
|
|
271
|
+
- Create a specs/ directory with markdown files
|
|
272
|
+
|
|
273
|
+
INITIALIZING A PROJECT:
|
|
274
|
+
1. steroids init -y # non-interactive, accept defaults
|
|
275
|
+
2. Create specs/ with your specifications
|
|
276
|
+
3. steroids sections add "Phase 1: Feature Name"
|
|
277
|
+
4. steroids tasks add "Task title" --section <id> --source specs/spec.md
|
|
278
|
+
5. steroids loop
|
|
279
|
+
|
|
280
|
+
## DATABASE MIGRATIONS (IMPORTANT)
|
|
281
|
+
|
|
282
|
+
Each project has its own SQLite database (.steroids/steroids.db). When Steroids is
|
|
283
|
+
updated with schema changes, older project databases need migration.
|
|
284
|
+
|
|
285
|
+
Migrations run AUTOMATICALLY on any command that opens the database. However, if a
|
|
286
|
+
project hasn't been used for a while and the schema has drifted significantly,
|
|
287
|
+
auto-migration may fail.
|
|
288
|
+
|
|
289
|
+
### Before Adding Tasks to an Existing Project
|
|
290
|
+
Always verify the database is healthy first:
|
|
291
|
+
steroids health # checks DB, runs auto-migration
|
|
292
|
+
|
|
293
|
+
If you see "Database schema is out of date" errors:
|
|
294
|
+
STEROIDS_AUTO_MIGRATE=1 steroids health # force migration + health check
|
|
295
|
+
|
|
296
|
+
### How Migrations Work
|
|
297
|
+
- Migration files live in migrations/ (SQL with UP/DOWN sections)
|
|
298
|
+
- Applied automatically when the database is opened
|
|
299
|
+
- A backup is created before each migration (.steroids/backups/)
|
|
300
|
+
- Safe to run multiple times (idempotent)
|
|
301
|
+
- If migration fails: fix the issue, then re-run any steroids command
|
|
302
|
+
|
|
303
|
+
### For LLM Agents
|
|
304
|
+
ALWAYS run \`steroids health\` before adding the first task to a project you haven't
|
|
305
|
+
touched recently. This ensures the schema is current and prevents cryptic SQL errors
|
|
306
|
+
during task creation or runner execution.
|
|
307
|
+
|
|
308
|
+
## IMPORTANT NOTES
|
|
309
|
+
- Task spec is in source file (see tasks audit output)
|
|
310
|
+
- Max 15 rejections before task fails; coordinator intervenes at [2, 5, 9]
|
|
311
|
+
- Runner auto-restarts via cron (steroids runners cron install)
|
|
312
|
+
- Each project isolated: own database, own runner
|
|
313
|
+
- Section dependencies block entire sections, not individual tasks
|
|
314
|
+
- Build+test verification happens automatically after coder submits
|
|
315
|
+
- Always run build AND tests before submitting for review
|
|
316
|
+
- Never modify code outside the task scope
|
|
317
|
+
- If stuck, create a dispute rather than guessing
|
|
318
|
+
`;
|
|
319
|
+
//# sourceMappingURL=llm-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-content.js","sourceRoot":"","sources":["../../src/commands/llm-content.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0T/B,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;AA0CnD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsLlF"}
|