steroids-cli 0.4.47
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/LICENSE +21 -0
- package/README.md +640 -0
- package/dist/cli/colors.d.ts +110 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +228 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/env.d.ts +159 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +227 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/errors.d.ts +166 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +244 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/flags.d.ts +75 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +232 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/help.d.ts +97 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +275 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +29 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive.d.ts +58 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +127 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/output.d.ts +116 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +178 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/commands/about.d.ts +7 -0
- package/dist/commands/about.d.ts.map +1 -0
- package/dist/commands/about.js +259 -0
- package/dist/commands/about.js.map +1 -0
- package/dist/commands/ai.d.ts +6 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +382 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +528 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +405 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +665 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/disputes.d.ts +3 -0
- package/dist/commands/disputes.d.ts.map +1 -0
- package/dist/commands/disputes.js +499 -0
- package/dist/commands/disputes.js.map +1 -0
- package/dist/commands/gc.d.ts +3 -0
- package/dist/commands/gc.d.ts.map +1 -0
- package/dist/commands/gc.js +300 -0
- package/dist/commands/gc.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +458 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +604 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/hooks.d.ts +6 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +529 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +200 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/llm.d.ts +7 -0
- package/dist/commands/llm.d.ts.map +1 -0
- package/dist/commands/llm.js +285 -0
- package/dist/commands/llm.js.map +1 -0
- package/dist/commands/locks.d.ts +3 -0
- package/dist/commands/locks.d.ts.map +1 -0
- package/dist/commands/locks.js +431 -0
- package/dist/commands/locks.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +487 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/loop-phases.d.ts +11 -0
- package/dist/commands/loop-phases.d.ts.map +1 -0
- package/dist/commands/loop-phases.js +204 -0
- package/dist/commands/loop-phases.js.map +1 -0
- package/dist/commands/loop.d.ts +3 -0
- package/dist/commands/loop.d.ts.map +1 -0
- package/dist/commands/loop.js +396 -0
- package/dist/commands/loop.js.map +1 -0
- package/dist/commands/projects.d.ts +6 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +362 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/purge.d.ts +3 -0
- package/dist/commands/purge.d.ts.map +1 -0
- package/dist/commands/purge.js +516 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/runners.d.ts +3 -0
- package/dist/commands/runners.d.ts.map +1 -0
- package/dist/commands/runners.js +1076 -0
- package/dist/commands/runners.js.map +1 -0
- package/dist/commands/scan.d.ts +3 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +291 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/sections-commands.d.ts +9 -0
- package/dist/commands/sections-commands.d.ts.map +1 -0
- package/dist/commands/sections-commands.js +282 -0
- package/dist/commands/sections-commands.js.map +1 -0
- package/dist/commands/sections-graph.d.ts +25 -0
- package/dist/commands/sections-graph.d.ts.map +1 -0
- package/dist/commands/sections-graph.js +180 -0
- package/dist/commands/sections-graph.js.map +1 -0
- package/dist/commands/sections.d.ts +3 -0
- package/dist/commands/sections.d.ts.map +1 -0
- package/dist/commands/sections.js +376 -0
- package/dist/commands/sections.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +324 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +1115 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/web.d.ts +7 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +204 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/config/ai-setup.d.ts +27 -0
- package/dist/config/ai-setup.d.ts.map +1 -0
- package/dist/config/ai-setup.js +432 -0
- package/dist/config/ai-setup.js.map +1 -0
- package/dist/config/browser.d.ts +9 -0
- package/dist/config/browser.d.ts.map +1 -0
- package/dist/config/browser.js +200 -0
- package/dist/config/browser.js.map +1 -0
- package/dist/config/json-schema.d.ts +28 -0
- package/dist/config/json-schema.d.ts.map +1 -0
- package/dist/config/json-schema.js +84 -0
- package/dist/config/json-schema.js.map +1 -0
- package/dist/config/loader.d.ts +152 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +270 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +437 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +32 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +187 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/database/connection.d.ts +35 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +208 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/queries.d.ts +218 -0
- package/dist/database/queries.d.ts.map +1 -0
- package/dist/database/queries.js +613 -0
- package/dist/database/queries.js.map +1 -0
- package/dist/database/schema.d.ts +8 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +160 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/disputes/behavior.d.ts +106 -0
- package/dist/disputes/behavior.d.ts.map +1 -0
- package/dist/disputes/behavior.js +150 -0
- package/dist/disputes/behavior.js.map +1 -0
- package/dist/disputes/create.d.ts +59 -0
- package/dist/disputes/create.d.ts.map +1 -0
- package/dist/disputes/create.js +222 -0
- package/dist/disputes/create.js.map +1 -0
- package/dist/disputes/index.d.ts +21 -0
- package/dist/disputes/index.d.ts.map +1 -0
- package/dist/disputes/index.js +76 -0
- package/dist/disputes/index.js.map +1 -0
- package/dist/disputes/markdown.d.ts +41 -0
- package/dist/disputes/markdown.d.ts.map +1 -0
- package/dist/disputes/markdown.js +261 -0
- package/dist/disputes/markdown.js.map +1 -0
- package/dist/disputes/queries.d.ts +83 -0
- package/dist/disputes/queries.d.ts.map +1 -0
- package/dist/disputes/queries.js +180 -0
- package/dist/disputes/queries.js.map +1 -0
- package/dist/disputes/resolve.d.ts +57 -0
- package/dist/disputes/resolve.d.ts.map +1 -0
- package/dist/disputes/resolve.js +171 -0
- package/dist/disputes/resolve.js.map +1 -0
- package/dist/disputes/stale.d.ts +98 -0
- package/dist/disputes/stale.d.ts.map +1 -0
- package/dist/disputes/stale.js +205 -0
- package/dist/disputes/stale.js.map +1 -0
- package/dist/disputes/types.d.ts +92 -0
- package/dist/disputes/types.d.ts.map +1 -0
- package/dist/disputes/types.js +100 -0
- package/dist/disputes/types.js.map +1 -0
- package/dist/git/push.d.ts +26 -0
- package/dist/git/push.d.ts.map +1 -0
- package/dist/git/push.js +97 -0
- package/dist/git/push.js.map +1 -0
- package/dist/git/status.d.ts +61 -0
- package/dist/git/status.d.ts.map +1 -0
- package/dist/git/status.js +251 -0
- package/dist/git/status.js.map +1 -0
- package/dist/hooks/events.d.ts +72 -0
- package/dist/hooks/events.d.ts.map +1 -0
- package/dist/hooks/events.js +120 -0
- package/dist/hooks/events.js.map +1 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +48 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/integration.d.ts +69 -0
- package/dist/hooks/integration.d.ts.map +1 -0
- package/dist/hooks/integration.js +179 -0
- package/dist/hooks/integration.js.map +1 -0
- package/dist/hooks/merge.d.ts +115 -0
- package/dist/hooks/merge.d.ts.map +1 -0
- package/dist/hooks/merge.js +161 -0
- package/dist/hooks/merge.js.map +1 -0
- package/dist/hooks/orchestrator.d.ts +115 -0
- package/dist/hooks/orchestrator.d.ts.map +1 -0
- package/dist/hooks/orchestrator.js +226 -0
- package/dist/hooks/orchestrator.js.map +1 -0
- package/dist/hooks/payload.d.ts +294 -0
- package/dist/hooks/payload.d.ts.map +1 -0
- package/dist/hooks/payload.js +267 -0
- package/dist/hooks/payload.js.map +1 -0
- package/dist/hooks/script-runner.d.ts +63 -0
- package/dist/hooks/script-runner.d.ts.map +1 -0
- package/dist/hooks/script-runner.js +221 -0
- package/dist/hooks/script-runner.js.map +1 -0
- package/dist/hooks/templates.d.ts +104 -0
- package/dist/hooks/templates.d.ts.map +1 -0
- package/dist/hooks/templates.js +327 -0
- package/dist/hooks/templates.js.map +1 -0
- package/dist/hooks/webhook-runner.d.ts +69 -0
- package/dist/hooks/webhook-runner.d.ts.map +1 -0
- package/dist/hooks/webhook-runner.js +208 -0
- package/dist/hooks/webhook-runner.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +281 -0
- package/dist/index.js.map +1 -0
- package/dist/locking/cleanup.d.ts +70 -0
- package/dist/locking/cleanup.d.ts.map +1 -0
- package/dist/locking/cleanup.js +157 -0
- package/dist/locking/cleanup.js.map +1 -0
- package/dist/locking/queries.d.ts +116 -0
- package/dist/locking/queries.d.ts.map +1 -0
- package/dist/locking/queries.js +255 -0
- package/dist/locking/queries.js.map +1 -0
- package/dist/locking/section-lock.d.ts +74 -0
- package/dist/locking/section-lock.d.ts.map +1 -0
- package/dist/locking/section-lock.js +207 -0
- package/dist/locking/section-lock.js.map +1 -0
- package/dist/locking/task-lock.d.ts +92 -0
- package/dist/locking/task-lock.d.ts.map +1 -0
- package/dist/locking/task-lock.js +246 -0
- package/dist/locking/task-lock.js.map +1 -0
- package/dist/migrations/index.d.ts +7 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +37 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifest.d.ts +92 -0
- package/dist/migrations/manifest.d.ts.map +1 -0
- package/dist/migrations/manifest.js +270 -0
- package/dist/migrations/manifest.js.map +1 -0
- package/dist/migrations/runner.d.ts +84 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +351 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/orchestrator/coder.d.ts +32 -0
- package/dist/orchestrator/coder.d.ts.map +1 -0
- package/dist/orchestrator/coder.js +174 -0
- package/dist/orchestrator/coder.js.map +1 -0
- package/dist/orchestrator/coordinator.d.ts +28 -0
- package/dist/orchestrator/coordinator.d.ts.map +1 -0
- package/dist/orchestrator/coordinator.js +256 -0
- package/dist/orchestrator/coordinator.js.map +1 -0
- package/dist/orchestrator/reviewer.d.ts +35 -0
- package/dist/orchestrator/reviewer.d.ts.map +1 -0
- package/dist/orchestrator/reviewer.js +241 -0
- package/dist/orchestrator/reviewer.js.map +1 -0
- package/dist/orchestrator/task-selector.d.ts +102 -0
- package/dist/orchestrator/task-selector.d.ts.map +1 -0
- package/dist/orchestrator/task-selector.js +341 -0
- package/dist/orchestrator/task-selector.js.map +1 -0
- package/dist/prompts/coder.d.ts +36 -0
- package/dist/prompts/coder.d.ts.map +1 -0
- package/dist/prompts/coder.js +315 -0
- package/dist/prompts/coder.js.map +1 -0
- package/dist/prompts/prompt-helpers.d.ts +51 -0
- package/dist/prompts/prompt-helpers.d.ts.map +1 -0
- package/dist/prompts/prompt-helpers.js +312 -0
- package/dist/prompts/prompt-helpers.js.map +1 -0
- package/dist/prompts/reviewer.d.ts +40 -0
- package/dist/prompts/reviewer.d.ts.map +1 -0
- package/dist/prompts/reviewer.js +438 -0
- package/dist/prompts/reviewer.js.map +1 -0
- package/dist/providers/api-models.d.ts +65 -0
- package/dist/providers/api-models.d.ts.map +1 -0
- package/dist/providers/api-models.js +323 -0
- package/dist/providers/api-models.js.map +1 -0
- package/dist/providers/claude.d.ts +53 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +229 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex.d.ts +53 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +214 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/gemini.d.ts +58 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +242 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +49 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +173 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +96 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/invocation-logger.d.ts +114 -0
- package/dist/providers/invocation-logger.d.ts.map +1 -0
- package/dist/providers/invocation-logger.js +298 -0
- package/dist/providers/invocation-logger.js.map +1 -0
- package/dist/providers/openai.d.ts +53 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +232 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +100 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +178 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/runners/activity-log.d.ts +65 -0
- package/dist/runners/activity-log.d.ts.map +1 -0
- package/dist/runners/activity-log.js +148 -0
- package/dist/runners/activity-log.js.map +1 -0
- package/dist/runners/cron.d.ts +26 -0
- package/dist/runners/cron.d.ts.map +1 -0
- package/dist/runners/cron.js +176 -0
- package/dist/runners/cron.js.map +1 -0
- package/dist/runners/daemon.d.ts +71 -0
- package/dist/runners/daemon.d.ts.map +1 -0
- package/dist/runners/daemon.js +245 -0
- package/dist/runners/daemon.js.map +1 -0
- package/dist/runners/global-db.d.ts +31 -0
- package/dist/runners/global-db.d.ts.map +1 -0
- package/dist/runners/global-db.js +230 -0
- package/dist/runners/global-db.js.map +1 -0
- package/dist/runners/hang-detector.d.ts +38 -0
- package/dist/runners/hang-detector.d.ts.map +1 -0
- package/dist/runners/hang-detector.js +136 -0
- package/dist/runners/hang-detector.js.map +1 -0
- package/dist/runners/heartbeat.d.ts +39 -0
- package/dist/runners/heartbeat.d.ts.map +1 -0
- package/dist/runners/heartbeat.js +79 -0
- package/dist/runners/heartbeat.js.map +1 -0
- package/dist/runners/lock.d.ts +47 -0
- package/dist/runners/lock.d.ts.map +1 -0
- package/dist/runners/lock.js +150 -0
- package/dist/runners/lock.js.map +1 -0
- package/dist/runners/orchestrator-loop.d.ts +20 -0
- package/dist/runners/orchestrator-loop.d.ts.map +1 -0
- package/dist/runners/orchestrator-loop.js +285 -0
- package/dist/runners/orchestrator-loop.js.map +1 -0
- package/dist/runners/projects.d.ts +96 -0
- package/dist/runners/projects.d.ts.map +1 -0
- package/dist/runners/projects.js +255 -0
- package/dist/runners/projects.js.map +1 -0
- package/dist/runners/wakeup.d.ts +34 -0
- package/dist/runners/wakeup.d.ts.map +1 -0
- package/dist/runners/wakeup.js +291 -0
- package/dist/runners/wakeup.js.map +1 -0
- package/migrations/001_initial_schema.sql +106 -0
- package/migrations/002_add_commit_sha.sql +12 -0
- package/migrations/003_add_section_priority.sql +13 -0
- package/migrations/004_add_section_dependencies.sql +18 -0
- package/migrations/005_add_audit_actor_model.sql +10 -0
- package/migrations/006_add_task_invocations.sql +33 -0
- package/migrations/007_add_file_anchor.sql +14 -0
- package/migrations/manifest.json +62 -0
- package/package.json +49 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite database connection management
|
|
3
|
+
* Uses better-sqlite3 for synchronous operations with WAL mode
|
|
4
|
+
*/
|
|
5
|
+
import Database from 'better-sqlite3';
|
|
6
|
+
export interface DatabaseConnection {
|
|
7
|
+
db: Database.Database;
|
|
8
|
+
close: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get the path to the steroids database
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDbPath(projectPath?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Check if steroids is initialized in the given directory
|
|
16
|
+
*/
|
|
17
|
+
export declare function isInitialized(projectPath?: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the database with schema
|
|
20
|
+
*/
|
|
21
|
+
export declare function initDatabase(projectPath?: string): DatabaseConnection;
|
|
22
|
+
/**
|
|
23
|
+
* Open an existing database connection
|
|
24
|
+
* Automatically applies pending migrations if any are found
|
|
25
|
+
*/
|
|
26
|
+
export declare function openDatabase(projectPath?: string): DatabaseConnection;
|
|
27
|
+
/**
|
|
28
|
+
* Get schema version from database
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSchemaVersion(db: Database.Database): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* Check if database schema is current
|
|
33
|
+
*/
|
|
34
|
+
export declare function isSchemaUpToDate(db: Database.Database): boolean;
|
|
35
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAwBrE;AAyCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAoCrE;AAsED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CASrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAG/D"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SQLite database connection management
|
|
4
|
+
* Uses better-sqlite3 for synchronous operations with WAL mode
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.getDbPath = getDbPath;
|
|
11
|
+
exports.isInitialized = isInitialized;
|
|
12
|
+
exports.initDatabase = initDatabase;
|
|
13
|
+
exports.openDatabase = openDatabase;
|
|
14
|
+
exports.getSchemaVersion = getSchemaVersion;
|
|
15
|
+
exports.isSchemaUpToDate = isSchemaUpToDate;
|
|
16
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
17
|
+
const node_fs_1 = require("node:fs");
|
|
18
|
+
const node_path_1 = require("node:path");
|
|
19
|
+
const schema_js_1 = require("./schema.js");
|
|
20
|
+
const runner_js_1 = require("../migrations/runner.js");
|
|
21
|
+
const STEROIDS_DIR = '.steroids';
|
|
22
|
+
const DB_NAME = 'steroids.db';
|
|
23
|
+
/**
|
|
24
|
+
* Get the path to the steroids database
|
|
25
|
+
*/
|
|
26
|
+
function getDbPath(projectPath) {
|
|
27
|
+
const basePath = projectPath || process.cwd();
|
|
28
|
+
return (0, node_path_1.join)(basePath, STEROIDS_DIR, DB_NAME);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if steroids is initialized in the given directory
|
|
32
|
+
*/
|
|
33
|
+
function isInitialized(projectPath) {
|
|
34
|
+
return (0, node_fs_1.existsSync)(getDbPath(projectPath));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the database with schema
|
|
38
|
+
*/
|
|
39
|
+
function initDatabase(projectPath) {
|
|
40
|
+
const dbPath = getDbPath(projectPath);
|
|
41
|
+
const steroidsDir = (0, node_path_1.dirname)(dbPath);
|
|
42
|
+
// Create .steroids directory if it doesn't exist
|
|
43
|
+
if (!(0, node_fs_1.existsSync)(steroidsDir)) {
|
|
44
|
+
(0, node_fs_1.mkdirSync)(steroidsDir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
47
|
+
// Configure SQLite for optimal performance and safety
|
|
48
|
+
db.pragma('journal_mode = WAL');
|
|
49
|
+
db.pragma('busy_timeout = 5000');
|
|
50
|
+
db.pragma('foreign_keys = ON');
|
|
51
|
+
// Create schema
|
|
52
|
+
db.exec(schema_js_1.SCHEMA_SQL);
|
|
53
|
+
db.exec(schema_js_1.INITIAL_SCHEMA_DATA);
|
|
54
|
+
return {
|
|
55
|
+
db,
|
|
56
|
+
close: () => db.close(),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if an error is a schema mismatch (missing column/table)
|
|
61
|
+
*/
|
|
62
|
+
function isSchemaMismatchError(err) {
|
|
63
|
+
if (!(err instanceof Error))
|
|
64
|
+
return false;
|
|
65
|
+
const msg = err.message.toLowerCase();
|
|
66
|
+
return (msg.includes('has no column named') ||
|
|
67
|
+
msg.includes('no such column') ||
|
|
68
|
+
msg.includes('no such table'));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Format a helpful error message for schema mismatches
|
|
72
|
+
*/
|
|
73
|
+
function formatMigrationHint(originalError, migrationResult) {
|
|
74
|
+
const lines = [
|
|
75
|
+
`Database schema is out of date: ${originalError.message}`,
|
|
76
|
+
'',
|
|
77
|
+
'Your database is missing columns or tables added in a newer version of Steroids.',
|
|
78
|
+
];
|
|
79
|
+
if (migrationResult) {
|
|
80
|
+
lines.push(`Auto-migration failed: ${migrationResult}`);
|
|
81
|
+
}
|
|
82
|
+
lines.push('', 'To fix this, run:', '', ' STEROIDS_AUTO_MIGRATE=1 steroids health', '', 'Or set STEROIDS_AUTO_MIGRATE=1 in your environment to migrate automatically.');
|
|
83
|
+
return lines.join('\n');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Open an existing database connection
|
|
87
|
+
* Automatically applies pending migrations if any are found
|
|
88
|
+
*/
|
|
89
|
+
function openDatabase(projectPath) {
|
|
90
|
+
const dbPath = getDbPath(projectPath);
|
|
91
|
+
if (!(0, node_fs_1.existsSync)(dbPath)) {
|
|
92
|
+
throw new Error(`Steroids not initialized. Run 'steroids init' first.\nExpected database at: ${dbPath}`);
|
|
93
|
+
}
|
|
94
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
95
|
+
// Configure SQLite
|
|
96
|
+
db.pragma('journal_mode = WAL');
|
|
97
|
+
db.pragma('busy_timeout = 5000');
|
|
98
|
+
db.pragma('foreign_keys = ON');
|
|
99
|
+
// Always attempt auto-migration for pending migrations
|
|
100
|
+
try {
|
|
101
|
+
const result = (0, runner_js_1.autoMigrate)(db, dbPath);
|
|
102
|
+
if (result.applied && result.migrations.length > 0) {
|
|
103
|
+
console.log(`Auto-migrated database: ${result.migrations.join(', ')}`);
|
|
104
|
+
}
|
|
105
|
+
if (result.error) {
|
|
106
|
+
console.error(`Warning: Migration issue: ${result.error}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
// Log but don't fail - the DB may still work if no new columns are needed
|
|
111
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
112
|
+
console.warn(`Warning: Could not check migrations: ${msg}`);
|
|
113
|
+
}
|
|
114
|
+
// Wrap the database with schema error interception
|
|
115
|
+
return {
|
|
116
|
+
db: wrapWithSchemaErrorHandling(db),
|
|
117
|
+
close: () => db.close(),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Wrap a database instance to intercept schema mismatch errors
|
|
122
|
+
* and provide helpful migration instructions instead of raw SQLite errors
|
|
123
|
+
*/
|
|
124
|
+
function wrapWithSchemaErrorHandling(db) {
|
|
125
|
+
const originalPrepare = db.prepare.bind(db);
|
|
126
|
+
db.prepare = function wrappedPrepare(sql) {
|
|
127
|
+
try {
|
|
128
|
+
const stmt = originalPrepare(sql);
|
|
129
|
+
return wrapStatement(stmt);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
if (isSchemaMismatchError(err)) {
|
|
133
|
+
const hint = formatMigrationHint(err);
|
|
134
|
+
const wrapped = new Error(hint);
|
|
135
|
+
wrapped.name = 'MigrationRequired';
|
|
136
|
+
throw wrapped;
|
|
137
|
+
}
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
// Also wrap db.exec for raw SQL execution
|
|
142
|
+
const originalExec = db.exec.bind(db);
|
|
143
|
+
db.exec = function wrappedExec(sql) {
|
|
144
|
+
try {
|
|
145
|
+
return originalExec(sql);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
if (isSchemaMismatchError(err)) {
|
|
149
|
+
const hint = formatMigrationHint(err);
|
|
150
|
+
const wrapped = new Error(hint);
|
|
151
|
+
wrapped.name = 'MigrationRequired';
|
|
152
|
+
throw wrapped;
|
|
153
|
+
}
|
|
154
|
+
throw err;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
return db;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Wrap a prepared statement to intercept schema errors at execution time
|
|
161
|
+
*/
|
|
162
|
+
function wrapStatement(stmt) {
|
|
163
|
+
const wrapMethod = (fn) => {
|
|
164
|
+
return ((...args) => {
|
|
165
|
+
try {
|
|
166
|
+
return fn.apply(stmt, args);
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
if (isSchemaMismatchError(err)) {
|
|
170
|
+
const hint = formatMigrationHint(err);
|
|
171
|
+
const wrapped = new Error(hint);
|
|
172
|
+
wrapped.name = 'MigrationRequired';
|
|
173
|
+
throw wrapped;
|
|
174
|
+
}
|
|
175
|
+
throw err;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
if (stmt.run)
|
|
180
|
+
stmt.run = wrapMethod(stmt.run.bind(stmt));
|
|
181
|
+
if (stmt.get)
|
|
182
|
+
stmt.get = wrapMethod(stmt.get.bind(stmt));
|
|
183
|
+
if (stmt.all)
|
|
184
|
+
stmt.all = wrapMethod(stmt.all.bind(stmt));
|
|
185
|
+
return stmt;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get schema version from database
|
|
189
|
+
*/
|
|
190
|
+
function getSchemaVersion(db) {
|
|
191
|
+
try {
|
|
192
|
+
const row = db
|
|
193
|
+
.prepare('SELECT value FROM _schema WHERE key = ?')
|
|
194
|
+
.get('version');
|
|
195
|
+
return row?.value ?? null;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Check if database schema is current
|
|
203
|
+
*/
|
|
204
|
+
function isSchemaUpToDate(db) {
|
|
205
|
+
const version = getSchemaVersion(db);
|
|
206
|
+
return version === schema_js_1.SCHEMA_VERSION;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database query functions for tasks, sections, and audit
|
|
3
|
+
*/
|
|
4
|
+
import type Database from 'better-sqlite3';
|
|
5
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'review' | 'completed' | 'disputed' | 'failed' | 'skipped' | 'partial';
|
|
6
|
+
export declare const STATUS_MARKERS: Record<TaskStatus, string>;
|
|
7
|
+
export interface Task {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
status: TaskStatus;
|
|
11
|
+
section_id: string | null;
|
|
12
|
+
source_file: string | null;
|
|
13
|
+
file_path: string | null;
|
|
14
|
+
file_line: number | null;
|
|
15
|
+
file_commit_sha: string | null;
|
|
16
|
+
file_content_hash: string | null;
|
|
17
|
+
rejection_count: number;
|
|
18
|
+
created_at: string;
|
|
19
|
+
updated_at: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Section {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
position: number;
|
|
25
|
+
priority?: number;
|
|
26
|
+
skipped?: number;
|
|
27
|
+
created_at: string;
|
|
28
|
+
}
|
|
29
|
+
export interface SectionDependency {
|
|
30
|
+
id: string;
|
|
31
|
+
section_id: string;
|
|
32
|
+
depends_on_section_id: string;
|
|
33
|
+
created_at: string;
|
|
34
|
+
}
|
|
35
|
+
export interface AuditEntry {
|
|
36
|
+
id: number;
|
|
37
|
+
task_id: string;
|
|
38
|
+
from_status: string | null;
|
|
39
|
+
to_status: string;
|
|
40
|
+
actor: string;
|
|
41
|
+
notes: string | null;
|
|
42
|
+
commit_sha: string | null;
|
|
43
|
+
created_at: string;
|
|
44
|
+
}
|
|
45
|
+
export interface RejectionEntry {
|
|
46
|
+
rejection_number: number;
|
|
47
|
+
commit_sha: string | null;
|
|
48
|
+
notes: string | null;
|
|
49
|
+
actor: string;
|
|
50
|
+
created_at: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function createSection(db: Database.Database, name: string, position?: number): Section;
|
|
53
|
+
export declare function listSections(db: Database.Database): Section[];
|
|
54
|
+
export declare function getSection(db: Database.Database, id: string): Section | null;
|
|
55
|
+
export declare function getSectionByName(db: Database.Database, name: string): Section | null;
|
|
56
|
+
export declare function getOrCreateFeedbackSection(db: Database.Database): Section;
|
|
57
|
+
export declare function getSectionTaskCount(db: Database.Database, sectionId: string): number;
|
|
58
|
+
/**
|
|
59
|
+
* Get dependencies for a section that have incomplete tasks
|
|
60
|
+
* Returns sections that the given section depends on and have any non-completed tasks
|
|
61
|
+
* (pending, in_progress, review, disputed, failed, skipped, partial)
|
|
62
|
+
*/
|
|
63
|
+
export declare function getPendingDependencies(db: Database.Database, sectionId: string): Section[];
|
|
64
|
+
/**
|
|
65
|
+
* Check if all dependencies for a section are met
|
|
66
|
+
* Dependencies are considered met when all tasks in dependent sections are completed
|
|
67
|
+
*/
|
|
68
|
+
export declare function hasDependenciesMet(db: Database.Database, sectionId: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Set the priority of a section
|
|
71
|
+
* Priority range: 0 (highest) to 100 (lowest), default is 50
|
|
72
|
+
*/
|
|
73
|
+
export declare function setSectionPriority(db: Database.Database, sectionId: string, priority: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check if adding a dependency would create a circular dependency
|
|
76
|
+
* Returns true if circular dependency would be created
|
|
77
|
+
*/
|
|
78
|
+
export declare function wouldCreateCircularDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Add a dependency between sections
|
|
81
|
+
* Makes sectionId depend on dependsOnSectionId
|
|
82
|
+
*/
|
|
83
|
+
export declare function addSectionDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): SectionDependency;
|
|
84
|
+
/**
|
|
85
|
+
* Remove a dependency between sections
|
|
86
|
+
*/
|
|
87
|
+
export declare function removeSectionDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* Get all dependencies for a section
|
|
90
|
+
*/
|
|
91
|
+
export declare function getSectionDependencies(db: Database.Database, sectionId: string): Section[];
|
|
92
|
+
/**
|
|
93
|
+
* Get all sections that depend on a given section
|
|
94
|
+
*/
|
|
95
|
+
export declare function getSectionDependents(db: Database.Database, sectionId: string): Section[];
|
|
96
|
+
export declare function createTask(db: Database.Database, title: string, options?: {
|
|
97
|
+
sectionId?: string;
|
|
98
|
+
sourceFile?: string;
|
|
99
|
+
status?: TaskStatus;
|
|
100
|
+
filePath?: string;
|
|
101
|
+
fileLine?: number;
|
|
102
|
+
fileCommitSha?: string;
|
|
103
|
+
fileContentHash?: string;
|
|
104
|
+
}): Task;
|
|
105
|
+
export declare function getTask(db: Database.Database, id: string): Task | null;
|
|
106
|
+
export declare function getTaskByTitle(db: Database.Database, title: string): Task | null;
|
|
107
|
+
export declare function listTasks(db: Database.Database, options?: {
|
|
108
|
+
status?: TaskStatus | 'all';
|
|
109
|
+
sectionId?: string;
|
|
110
|
+
search?: string;
|
|
111
|
+
}): Task[];
|
|
112
|
+
export declare function updateTaskStatus(db: Database.Database, taskId: string, newStatus: TaskStatus, actor: string, notes?: string, commitSha?: string): void;
|
|
113
|
+
/**
|
|
114
|
+
* Reset rejection count to 0 (keeps audit history)
|
|
115
|
+
* Use when manually restarting a task after spec changes
|
|
116
|
+
*/
|
|
117
|
+
export declare function resetRejectionCount(db: Database.Database, taskId: string, actor: string, notes?: string): number;
|
|
118
|
+
export declare function approveTask(db: Database.Database, taskId: string, model: string, notes?: string, commitSha?: string): void;
|
|
119
|
+
export declare function rejectTask(db: Database.Database, taskId: string, model: string, notes?: string, commitSha?: string): {
|
|
120
|
+
status: 'retry' | 'failed';
|
|
121
|
+
rejectionCount: number;
|
|
122
|
+
};
|
|
123
|
+
export interface AuditOptions {
|
|
124
|
+
notes?: string;
|
|
125
|
+
commitSha?: string;
|
|
126
|
+
actorType?: 'human' | 'coder' | 'reviewer' | 'orchestrator';
|
|
127
|
+
model?: string;
|
|
128
|
+
}
|
|
129
|
+
export declare function addAuditEntry(db: Database.Database, taskId: string, fromStatus: string | null, toStatus: string, actor: string, options?: AuditOptions | string, commitSha?: string): void;
|
|
130
|
+
export declare function getTaskAudit(db: Database.Database, taskId: string): AuditEntry[];
|
|
131
|
+
/**
|
|
132
|
+
* Get rejection history for a task
|
|
133
|
+
* Returns entries where a review was rejected (review -> in_progress)
|
|
134
|
+
* Includes commit hash for easy reference
|
|
135
|
+
*/
|
|
136
|
+
export declare function getTaskRejections(db: Database.Database, taskId: string): RejectionEntry[];
|
|
137
|
+
/**
|
|
138
|
+
* Get the latest submission notes (when coder submitted for review)
|
|
139
|
+
* This captures any notes the coder included with --notes flag
|
|
140
|
+
*/
|
|
141
|
+
export declare function getLatestSubmissionNotes(db: Database.Database, taskId: string): string | null;
|
|
142
|
+
export declare function createSystemDisputeForRejection(db: Database.Database, taskId: string, reason: string): string;
|
|
143
|
+
export declare function findNextTask(db: Database.Database, sectionId?: string): {
|
|
144
|
+
task: Task | null;
|
|
145
|
+
action: 'review' | 'resume' | 'start' | 'idle';
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Get the last rejection notes for a task
|
|
149
|
+
*/
|
|
150
|
+
export declare function getLastRejectionNotes(db: Database.Database, taskId: string): string | null;
|
|
151
|
+
/**
|
|
152
|
+
* Get task counts by status for project stats
|
|
153
|
+
* Used by runner heartbeat to update global database
|
|
154
|
+
*/
|
|
155
|
+
export declare function getTaskCountsByStatus(db: Database.Database): {
|
|
156
|
+
pending: number;
|
|
157
|
+
in_progress: number;
|
|
158
|
+
review: number;
|
|
159
|
+
completed: number;
|
|
160
|
+
};
|
|
161
|
+
export interface TaskInvocation {
|
|
162
|
+
id: number;
|
|
163
|
+
task_id: string;
|
|
164
|
+
role: 'coder' | 'reviewer';
|
|
165
|
+
provider: string;
|
|
166
|
+
model: string;
|
|
167
|
+
prompt: string;
|
|
168
|
+
response: string | null;
|
|
169
|
+
error: string | null;
|
|
170
|
+
exit_code: number;
|
|
171
|
+
duration_ms: number;
|
|
172
|
+
success: number;
|
|
173
|
+
timed_out: number;
|
|
174
|
+
rejection_number: number | null;
|
|
175
|
+
created_at: string;
|
|
176
|
+
}
|
|
177
|
+
export interface CreateInvocationParams {
|
|
178
|
+
taskId: string;
|
|
179
|
+
role: 'coder' | 'reviewer';
|
|
180
|
+
provider: string;
|
|
181
|
+
model: string;
|
|
182
|
+
prompt: string;
|
|
183
|
+
response?: string;
|
|
184
|
+
error?: string;
|
|
185
|
+
exitCode: number;
|
|
186
|
+
durationMs: number;
|
|
187
|
+
success: boolean;
|
|
188
|
+
timedOut: boolean;
|
|
189
|
+
rejectionNumber?: number;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Log an LLM invocation for a task
|
|
193
|
+
* This stores the full prompt and response for debugging
|
|
194
|
+
*/
|
|
195
|
+
export declare function createTaskInvocation(db: Database.Database, params: CreateInvocationParams): number;
|
|
196
|
+
/**
|
|
197
|
+
* Get all invocations for a task
|
|
198
|
+
* Ordered by creation time (oldest first)
|
|
199
|
+
*/
|
|
200
|
+
export declare function getTaskInvocations(db: Database.Database, taskId: string): TaskInvocation[];
|
|
201
|
+
/**
|
|
202
|
+
* Get recent invocations for a task (limited)
|
|
203
|
+
* Ordered by creation time (newest first)
|
|
204
|
+
*/
|
|
205
|
+
export declare function getRecentTaskInvocations(db: Database.Database, taskId: string, limit?: number): TaskInvocation[];
|
|
206
|
+
/**
|
|
207
|
+
* Get the latest invocation for a specific role
|
|
208
|
+
*/
|
|
209
|
+
export declare function getLatestInvocation(db: Database.Database, taskId: string, role: 'coder' | 'reviewer'): TaskInvocation | null;
|
|
210
|
+
/**
|
|
211
|
+
* Get invocation count for a task
|
|
212
|
+
*/
|
|
213
|
+
export declare function getInvocationCount(db: Database.Database, taskId: string): {
|
|
214
|
+
coder: number;
|
|
215
|
+
reviewer: number;
|
|
216
|
+
total: number;
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":"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"}
|