steroids-cli 0.9.42 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/cli/base-command.d.ts +16 -0
  2. package/dist/cli/base-command.d.ts.map +1 -0
  3. package/dist/cli/base-command.js +42 -0
  4. package/dist/cli/base-command.js.map +1 -0
  5. package/dist/cli/version-check.d.ts.map +1 -1
  6. package/dist/cli/version-check.js +28 -2
  7. package/dist/cli/version-check.js.map +1 -1
  8. package/dist/commands/disputes.js +15 -30
  9. package/dist/commands/disputes.js.map +1 -1
  10. package/dist/commands/gc.d.ts +1 -1
  11. package/dist/commands/gc.d.ts.map +1 -1
  12. package/dist/commands/gc.js +49 -64
  13. package/dist/commands/gc.js.map +1 -1
  14. package/dist/commands/git.d.ts.map +1 -1
  15. package/dist/commands/git.js +5 -8
  16. package/dist/commands/git.js.map +1 -1
  17. package/dist/commands/health-stuck.js +2 -6
  18. package/dist/commands/health-stuck.js.map +1 -1
  19. package/dist/commands/health.d.ts.map +1 -1
  20. package/dist/commands/health.js +2 -6
  21. package/dist/commands/health.js.map +1 -1
  22. package/dist/commands/llm.d.ts.map +1 -1
  23. package/dist/commands/llm.js +4 -12
  24. package/dist/commands/llm.js.map +1 -1
  25. package/dist/commands/locks.js +12 -24
  26. package/dist/commands/locks.js.map +1 -1
  27. package/dist/commands/loop-phases.d.ts +12 -4
  28. package/dist/commands/loop-phases.d.ts.map +1 -1
  29. package/dist/commands/loop-phases.js +163 -111
  30. package/dist/commands/loop-phases.js.map +1 -1
  31. package/dist/commands/purge.d.ts.map +1 -1
  32. package/dist/commands/purge.js +11 -22
  33. package/dist/commands/purge.js.map +1 -1
  34. package/dist/commands/runners-list.d.ts.map +1 -1
  35. package/dist/commands/runners-list.js +11 -30
  36. package/dist/commands/runners-list.js.map +1 -1
  37. package/dist/commands/runners-parallel.d.ts.map +1 -1
  38. package/dist/commands/runners-parallel.js +3 -7
  39. package/dist/commands/runners-parallel.js.map +1 -1
  40. package/dist/commands/runners.js +2 -9
  41. package/dist/commands/runners.js.map +1 -1
  42. package/dist/commands/scan.d.ts.map +1 -1
  43. package/dist/commands/scan.js +5 -8
  44. package/dist/commands/scan.js.map +1 -1
  45. package/dist/commands/sections-commands.d.ts.map +1 -1
  46. package/dist/commands/sections-commands.js +12 -24
  47. package/dist/commands/sections-commands.js.map +1 -1
  48. package/dist/commands/sections.js +6 -12
  49. package/dist/commands/sections.js.map +1 -1
  50. package/dist/commands/skills.d.ts +11 -0
  51. package/dist/commands/skills.d.ts.map +1 -0
  52. package/dist/commands/skills.js +181 -0
  53. package/dist/commands/skills.js.map +1 -0
  54. package/dist/commands/tasks-reset.d.ts +3 -0
  55. package/dist/commands/tasks-reset.d.ts.map +1 -0
  56. package/dist/commands/tasks-reset.js +200 -0
  57. package/dist/commands/tasks-reset.js.map +1 -0
  58. package/dist/commands/tasks.d.ts.map +1 -1
  59. package/dist/commands/tasks.js +57 -67
  60. package/dist/commands/tasks.js.map +1 -1
  61. package/dist/commands/web.d.ts.map +1 -1
  62. package/dist/commands/web.js +3 -1
  63. package/dist/commands/web.js.map +1 -1
  64. package/dist/config/loader.d.ts +1 -0
  65. package/dist/config/loader.d.ts.map +1 -1
  66. package/dist/config/loader.js.map +1 -1
  67. package/dist/database/connection.d.ts +10 -1
  68. package/dist/database/connection.d.ts.map +1 -1
  69. package/dist/database/connection.js +32 -6
  70. package/dist/database/connection.js.map +1 -1
  71. package/dist/database/queries.d.ts +18 -0
  72. package/dist/database/queries.d.ts.map +1 -1
  73. package/dist/database/queries.js +91 -20
  74. package/dist/database/queries.js.map +1 -1
  75. package/dist/database/schema.d.ts +2 -2
  76. package/dist/database/schema.d.ts.map +1 -1
  77. package/dist/database/schema.js +8 -0
  78. package/dist/database/schema.js.map +1 -1
  79. package/dist/git/status.d.ts.map +1 -1
  80. package/dist/git/status.js +13 -2
  81. package/dist/git/status.js.map +1 -1
  82. package/dist/git/submission-resolution.d.ts.map +1 -1
  83. package/dist/git/submission-resolution.js +3 -7
  84. package/dist/git/submission-resolution.js.map +1 -1
  85. package/dist/index.js +5 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/migrations/backfill.d.ts +3 -0
  88. package/dist/migrations/backfill.d.ts.map +1 -0
  89. package/dist/migrations/backfill.js +53 -0
  90. package/dist/migrations/backfill.js.map +1 -0
  91. package/dist/migrations/runner.d.ts.map +1 -1
  92. package/dist/migrations/runner.js +9 -0
  93. package/dist/migrations/runner.js.map +1 -1
  94. package/dist/orchestrator/base-runner.d.ts +14 -0
  95. package/dist/orchestrator/base-runner.d.ts.map +1 -0
  96. package/dist/orchestrator/base-runner.js +57 -0
  97. package/dist/orchestrator/base-runner.js.map +1 -0
  98. package/dist/orchestrator/coder.d.ts +4 -22
  99. package/dist/orchestrator/coder.d.ts.map +1 -1
  100. package/dist/orchestrator/coder.js +136 -183
  101. package/dist/orchestrator/coder.js.map +1 -1
  102. package/dist/orchestrator/coordinator.d.ts.map +1 -1
  103. package/dist/orchestrator/coordinator.js +1 -0
  104. package/dist/orchestrator/coordinator.js.map +1 -1
  105. package/dist/orchestrator/fallback-handler.d.ts +3 -23
  106. package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
  107. package/dist/orchestrator/fallback-handler.js +40 -357
  108. package/dist/orchestrator/fallback-handler.js.map +1 -1
  109. package/dist/orchestrator/history-manager.d.ts +15 -0
  110. package/dist/orchestrator/history-manager.d.ts.map +1 -0
  111. package/dist/orchestrator/history-manager.js +93 -0
  112. package/dist/orchestrator/history-manager.js.map +1 -0
  113. package/dist/orchestrator/post-coder.d.ts.map +1 -1
  114. package/dist/orchestrator/post-coder.js +16 -24
  115. package/dist/orchestrator/post-coder.js.map +1 -1
  116. package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
  117. package/dist/orchestrator/post-reviewer.js +25 -37
  118. package/dist/orchestrator/post-reviewer.js.map +1 -1
  119. package/dist/orchestrator/reviewer.d.ts +5 -29
  120. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  121. package/dist/orchestrator/reviewer.js +193 -255
  122. package/dist/orchestrator/reviewer.js.map +1 -1
  123. package/dist/orchestrator/signal-parser.d.ts +32 -0
  124. package/dist/orchestrator/signal-parser.d.ts.map +1 -0
  125. package/dist/orchestrator/signal-parser.js +73 -0
  126. package/dist/orchestrator/signal-parser.js.map +1 -0
  127. package/dist/orchestrator/types.d.ts +9 -13
  128. package/dist/orchestrator/types.d.ts.map +1 -1
  129. package/dist/parallel/clone.d.ts.map +1 -1
  130. package/dist/parallel/clone.js +37 -2
  131. package/dist/parallel/clone.js.map +1 -1
  132. package/dist/parallel/merge-conflict-attempts.d.ts.map +1 -1
  133. package/dist/parallel/merge-conflict-attempts.js +4 -12
  134. package/dist/parallel/merge-conflict-attempts.js.map +1 -1
  135. package/dist/parallel/merge-conflict.d.ts.map +1 -1
  136. package/dist/parallel/merge-conflict.js +3 -10
  137. package/dist/parallel/merge-conflict.js.map +1 -1
  138. package/dist/parallel/merge-sealing.d.ts +0 -3
  139. package/dist/parallel/merge-sealing.d.ts.map +1 -1
  140. package/dist/parallel/merge-sealing.js +5 -9
  141. package/dist/parallel/merge-sealing.js.map +1 -1
  142. package/dist/prompts/coder.d.ts +1 -1
  143. package/dist/prompts/coder.d.ts.map +1 -1
  144. package/dist/prompts/coder.js +66 -119
  145. package/dist/prompts/coder.js.map +1 -1
  146. package/dist/prompts/prompt-helpers.d.ts +4 -0
  147. package/dist/prompts/prompt-helpers.d.ts.map +1 -1
  148. package/dist/prompts/prompt-helpers.js +35 -0
  149. package/dist/prompts/prompt-helpers.js.map +1 -1
  150. package/dist/prompts/reviewer.d.ts.map +1 -1
  151. package/dist/prompts/reviewer.js +1 -3
  152. package/dist/prompts/reviewer.js.map +1 -1
  153. package/dist/providers/claude.d.ts.map +1 -1
  154. package/dist/providers/claude.js +9 -1
  155. package/dist/providers/claude.js.map +1 -1
  156. package/dist/providers/codex.d.ts.map +1 -1
  157. package/dist/providers/codex.js +10 -1
  158. package/dist/providers/codex.js.map +1 -1
  159. package/dist/providers/gemini.d.ts +9 -48
  160. package/dist/providers/gemini.d.ts.map +1 -1
  161. package/dist/providers/gemini.js +133 -101
  162. package/dist/providers/gemini.js.map +1 -1
  163. package/dist/providers/interface.d.ts +9 -1
  164. package/dist/providers/interface.d.ts.map +1 -1
  165. package/dist/providers/interface.js +11 -1
  166. package/dist/providers/interface.js.map +1 -1
  167. package/dist/providers/invocation-logger.d.ts +2 -0
  168. package/dist/providers/invocation-logger.d.ts.map +1 -1
  169. package/dist/providers/invocation-logger.js +3 -3
  170. package/dist/providers/invocation-logger.js.map +1 -1
  171. package/dist/providers/mistral.d.ts.map +1 -1
  172. package/dist/providers/mistral.js +12 -1
  173. package/dist/providers/mistral.js.map +1 -1
  174. package/dist/providers/ping.d.ts +5 -0
  175. package/dist/providers/ping.d.ts.map +1 -0
  176. package/dist/providers/ping.js +35 -0
  177. package/dist/providers/ping.js.map +1 -0
  178. package/dist/providers/registry.d.ts +4 -0
  179. package/dist/providers/registry.d.ts.map +1 -1
  180. package/dist/providers/registry.js +18 -0
  181. package/dist/providers/registry.js.map +1 -1
  182. package/dist/runners/activity-log.d.ts.map +1 -1
  183. package/dist/runners/activity-log.js +12 -36
  184. package/dist/runners/activity-log.js.map +1 -1
  185. package/dist/runners/credit-pause.d.ts +2 -3
  186. package/dist/runners/credit-pause.d.ts.map +1 -1
  187. package/dist/runners/credit-pause.js +25 -40
  188. package/dist/runners/credit-pause.js.map +1 -1
  189. package/dist/runners/daemon.d.ts +0 -8
  190. package/dist/runners/daemon.d.ts.map +1 -1
  191. package/dist/runners/daemon.js +23 -76
  192. package/dist/runners/daemon.js.map +1 -1
  193. package/dist/runners/global-db.d.ts +14 -1
  194. package/dist/runners/global-db.d.ts.map +1 -1
  195. package/dist/runners/global-db.js +123 -59
  196. package/dist/runners/global-db.js.map +1 -1
  197. package/dist/runners/orchestrator-loop.d.ts.map +1 -1
  198. package/dist/runners/orchestrator-loop.js +2 -6
  199. package/dist/runners/orchestrator-loop.js.map +1 -1
  200. package/dist/runners/projects.d.ts +2 -32
  201. package/dist/runners/projects.d.ts.map +1 -1
  202. package/dist/runners/projects.js +23 -103
  203. package/dist/runners/projects.js.map +1 -1
  204. package/dist/runners/wakeup-checks.d.ts +0 -3
  205. package/dist/runners/wakeup-checks.d.ts.map +1 -1
  206. package/dist/runners/wakeup-checks.js +13 -26
  207. package/dist/runners/wakeup-checks.js.map +1 -1
  208. package/dist/runners/wakeup-timing.d.ts.map +1 -1
  209. package/dist/runners/wakeup-timing.js +4 -12
  210. package/dist/runners/wakeup-timing.js.map +1 -1
  211. package/dist/runners/wakeup.d.ts +1 -1
  212. package/dist/runners/wakeup.d.ts.map +1 -1
  213. package/dist/runners/wakeup.js +394 -359
  214. package/dist/runners/wakeup.js.map +1 -1
  215. package/dist/utils/tokens.d.ts +14 -0
  216. package/dist/utils/tokens.d.ts.map +1 -0
  217. package/dist/utils/tokens.js +62 -0
  218. package/dist/utils/tokens.js.map +1 -0
  219. package/migrations/004_add_section_dependencies.sql +1 -1
  220. package/migrations/017_add_invocation_runner_id.sql +8 -0
  221. package/migrations/018_expand_audit_columns.sql +13 -0
  222. package/migrations/019_add_task_start_sha.sql +9 -0
  223. package/migrations/manifest.json +25 -1
  224. package/package.json +4 -3
  225. package/dist/orchestrator/schemas.d.ts +0 -26
  226. package/dist/orchestrator/schemas.d.ts.map +0 -1
  227. package/dist/orchestrator/schemas.js +0 -154
  228. package/dist/orchestrator/schemas.js.map +0 -1
  229. package/dist/parallel/merge.test.d.ts +0 -5
  230. package/dist/parallel/merge.test.d.ts.map +0 -1
  231. package/dist/parallel/merge.test.js +0 -322
  232. package/dist/parallel/merge.test.js.map +0 -1
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * steroids skills - Manage and assign AI skills
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.listSkills = listSkills;
7
+ exports.getSkillContent = getSkillContent;
8
+ exports.skillsCommand = skillsCommand;
9
+ const output_js_1 = require("../cli/output.js");
10
+ const help_js_1 = require("../cli/help.js");
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
13
+ const node_os_1 = require("node:os");
14
+ const loader_js_1 = require("../config/loader.js");
15
+ const HELP = (0, help_js_1.generateHelp)({
16
+ command: 'skills',
17
+ description: 'Manage custom AI skills and project assignments',
18
+ details: `Skills are modular prompt extensions that guide AI behavior.
19
+ Global skills are stored in ~/.steroids/skills/.
20
+ Pre-installed skills are available for all projects.`,
21
+ usage: [
22
+ 'steroids skills list [--global]',
23
+ 'steroids skills create <filename> --content "<markdown>"',
24
+ 'steroids skills assign <project-path> <skill-name>',
25
+ 'steroids skills unassign <project-path> <skill-name>',
26
+ ],
27
+ subcommands: [
28
+ { name: 'list', description: 'List available skills and their assignments' },
29
+ { name: 'create', description: 'Create a new custom skill' },
30
+ { name: 'assign', description: 'Assign a skill to a project' },
31
+ { name: 'unassign', description: 'Remove a skill from a project' },
32
+ ],
33
+ examples: [
34
+ { command: 'steroids skills list', description: 'List all skills' },
35
+ { command: 'steroids skills assign . adhere-to-architecture', description: 'Assign a skill to current project' },
36
+ ],
37
+ options: [
38
+ { long: 'content', description: 'Skill content (for create)', values: '<text>' },
39
+ ],
40
+ });
41
+ function getCustomSkillsDir() {
42
+ const dir = (0, node_path_1.join)((0, node_os_1.homedir)(), '.steroids', 'skills');
43
+ if (!(0, node_fs_1.existsSync)(dir)) {
44
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
45
+ }
46
+ return dir;
47
+ }
48
+ function getPreinstalledSkillsDir() {
49
+ // Try to find the WebUI/src/assets/skills directory
50
+ let currentDir = process.cwd();
51
+ let rootDir = currentDir;
52
+ while (currentDir !== '/') {
53
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(currentDir, 'WebUI', 'src', 'assets', 'skills'))) {
54
+ rootDir = currentDir;
55
+ break;
56
+ }
57
+ currentDir = (0, node_path_1.join)(currentDir, '..');
58
+ }
59
+ return (0, node_path_1.join)(rootDir, 'WebUI', 'src', 'assets', 'skills');
60
+ }
61
+ async function listSkills() {
62
+ const skills = [];
63
+ const customDir = getCustomSkillsDir();
64
+ if ((0, node_fs_1.existsSync)(customDir)) {
65
+ for (const file of (0, node_fs_1.readdirSync)(customDir)) {
66
+ if (file.endsWith('.md')) {
67
+ skills.push({ name: file.replace('.md', ''), type: 'custom' });
68
+ }
69
+ }
70
+ }
71
+ const preinstalledDir = getPreinstalledSkillsDir();
72
+ if ((0, node_fs_1.existsSync)(preinstalledDir)) {
73
+ for (const file of (0, node_fs_1.readdirSync)(preinstalledDir)) {
74
+ if (file.endsWith('.md')) {
75
+ // Prevent duplicates if custom overrides pre-installed
76
+ if (!skills.find(s => s.name === file.replace('.md', ''))) {
77
+ skills.push({ name: file.replace('.md', ''), type: 'pre-installed' });
78
+ }
79
+ }
80
+ }
81
+ }
82
+ return skills;
83
+ }
84
+ function getSkillContent(name) {
85
+ const customFile = (0, node_path_1.join)(getCustomSkillsDir(), `${name}.md`);
86
+ if ((0, node_fs_1.existsSync)(customFile))
87
+ return (0, node_fs_1.readFileSync)(customFile, 'utf-8');
88
+ const preinstalledFile = (0, node_path_1.join)(getPreinstalledSkillsDir(), `${name}.md`);
89
+ if ((0, node_fs_1.existsSync)(preinstalledFile))
90
+ return (0, node_fs_1.readFileSync)(preinstalledFile, 'utf-8');
91
+ return null;
92
+ }
93
+ async function skillsCommand(args, flags) {
94
+ const out = (0, output_js_1.createOutput)({ command: 'skills', flags });
95
+ if (flags.help || args.includes('-h') || args.includes('--help')) {
96
+ out.log(HELP);
97
+ return;
98
+ }
99
+ const subcommand = args[0] || 'list';
100
+ switch (subcommand) {
101
+ case 'list': {
102
+ const skills = await listSkills();
103
+ if (skills.length === 0) {
104
+ out.log('No skills found.');
105
+ return;
106
+ }
107
+ out.log('AVAILABLE SKILLS');
108
+ out.log('────────────────────────────────────────────────');
109
+ for (const skill of skills) {
110
+ out.log(`${skill.name.padEnd(30)} [${skill.type}]`);
111
+ }
112
+ break;
113
+ }
114
+ case 'create': {
115
+ const name = args[1];
116
+ if (!name) {
117
+ out.error('INVALID_ARGUMENTS', 'Skill name is required');
118
+ process.exit(2);
119
+ }
120
+ // Parse --content flag manually
121
+ let content = '';
122
+ const contentIndex = args.indexOf('--content');
123
+ if (contentIndex !== -1 && args.length > contentIndex + 1) {
124
+ content = args[contentIndex + 1];
125
+ }
126
+ else {
127
+ out.error('INVALID_ARGUMENTS', '--content flag is required to create a skill');
128
+ process.exit(2);
129
+ }
130
+ const filePath = (0, node_path_1.join)(getCustomSkillsDir(), `${name.replace('.md', '')}.md`);
131
+ (0, node_fs_1.writeFileSync)(filePath, content, 'utf-8');
132
+ out.log(`Created custom skill: ${name}`);
133
+ break;
134
+ }
135
+ case 'assign': {
136
+ const projectPath = args[1];
137
+ const skillName = args[2];
138
+ if (!projectPath || !skillName) {
139
+ out.error('INVALID_ARGUMENTS', 'Usage: steroids skills assign <project-path> <skill-name>');
140
+ process.exit(2);
141
+ }
142
+ const configPath = (0, node_path_1.join)(projectPath, 'steroids.config.yaml');
143
+ let config = (0, loader_js_1.loadConfigFile)(configPath);
144
+ if (!config.skills)
145
+ config.skills = [];
146
+ if (!config.skills.includes(skillName)) {
147
+ config.skills.push(skillName);
148
+ (0, loader_js_1.saveConfig)(config, configPath);
149
+ out.log(`Assigned skill '${skillName}' to project at ${projectPath}`);
150
+ }
151
+ else {
152
+ out.log(`Skill '${skillName}' is already assigned to this project.`);
153
+ }
154
+ break;
155
+ }
156
+ case 'unassign': {
157
+ const projectPath = args[1];
158
+ const skillName = args[2];
159
+ if (!projectPath || !skillName) {
160
+ out.error('INVALID_ARGUMENTS', 'Usage: steroids skills unassign <project-path> <skill-name>');
161
+ process.exit(2);
162
+ }
163
+ const configPath = (0, node_path_1.join)(projectPath, 'steroids.config.yaml');
164
+ let config = (0, loader_js_1.loadConfigFile)(configPath);
165
+ if (config.skills && config.skills.includes(skillName)) {
166
+ config.skills = config.skills.filter(s => s !== skillName);
167
+ (0, loader_js_1.saveConfig)(config, configPath);
168
+ out.log(`Unassigned skill '${skillName}' from project at ${projectPath}`);
169
+ }
170
+ else {
171
+ out.log(`Skill '${skillName}' was not assigned to this project.`);
172
+ }
173
+ break;
174
+ }
175
+ default:
176
+ out.log(`Unknown subcommand: ${subcommand}`);
177
+ out.log('Run "steroids skills --help" for usage.');
178
+ process.exit(2);
179
+ }
180
+ }
181
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GlobalFlags } from '../cli/flags.js';
2
+ export declare function resetTaskCmd(args: string[], flags: GlobalFlags): Promise<void>;
3
+ //# sourceMappingURL=tasks-reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-reset.d.ts","sourceRoot":"","sources":["../../src/commands/tasks-reset.ts"],"names":[],"mappings":"AAQA,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,CA4JpF"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetTaskCmd = resetTaskCmd;
4
+ const node_util_1 = require("node:util");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const node_child_process_1 = require("node:child_process");
8
+ const connection_js_1 = require("../database/connection.js");
9
+ const queries_js_1 = require("../database/queries.js");
10
+ const output_js_1 = require("../cli/output.js");
11
+ const errors_js_1 = require("../cli/errors.js");
12
+ const global_db_js_1 = require("../runners/global-db.js");
13
+ async function resetTaskCmd(args, flags) {
14
+ const out = (0, output_js_1.createOutput)({ command: 'tasks', subcommand: 'reset', flags });
15
+ const { values, positionals } = (0, node_util_1.parseArgs)({
16
+ args,
17
+ options: {
18
+ help: { type: 'boolean', short: 'h', default: false },
19
+ failed: { type: 'boolean', default: false },
20
+ disputed: { type: 'boolean', default: false },
21
+ all: { type: 'boolean', default: false },
22
+ },
23
+ allowPositionals: true,
24
+ });
25
+ if (values.help || flags.help || (positionals.length === 0 && !values.failed && !values.disputed && !values.all)) {
26
+ out.log(`
27
+ steroids tasks reset [<id|title>] [options] - Reset failed/disputed tasks to pending
28
+
29
+ USAGE:
30
+ steroids tasks reset <id|title>
31
+ steroids tasks reset --failed
32
+ steroids tasks reset --disputed
33
+ steroids tasks reset --all
34
+
35
+ OPTIONS:
36
+ --failed Reset all failed tasks
37
+ --disputed Reset all disputed tasks
38
+ --all Reset all failed and disputed tasks
39
+ -h, --help Show help
40
+
41
+ DESCRIPTION:
42
+ Safely resets blocked tasks back to the 'pending' state. This command executes as an
43
+ atomic transaction and performs rigorous pre-flight checks to ensure the workspace
44
+ and dependencies are structurally sound before allowing the task to be picked up again.
45
+ It also kills any active runner processes to prevent race conditions.
46
+ `);
47
+ return;
48
+ }
49
+ const projectPath = process.cwd();
50
+ /* REFACTOR_MANUAL */ (0, connection_js_1.withDatabase)(projectPath, (db) => {
51
+ let tasksToReset = [];
52
+ if (positionals.length > 0) {
53
+ const identifier = positionals.join(' ');
54
+ let task = (0, queries_js_1.getTask)(db, identifier) || (0, queries_js_1.getTaskByTitle)(db, identifier);
55
+ if (!task) {
56
+ out.error(errors_js_1.ErrorCode.TASK_NOT_FOUND, `Task not found: ${identifier}`);
57
+ process.exit((0, errors_js_1.getExitCode)(errors_js_1.ErrorCode.TASK_NOT_FOUND));
58
+ }
59
+ tasksToReset.push(task);
60
+ }
61
+ else {
62
+ if (values.all || values.failed) {
63
+ tasksToReset.push(...(0, queries_js_1.listTasks)(db, { status: 'failed' }));
64
+ }
65
+ if (values.all || values.disputed) {
66
+ tasksToReset.push(...(0, queries_js_1.listTasks)(db, { status: 'disputed' }));
67
+ }
68
+ // Deduplicate in case
69
+ const seen = new Set();
70
+ tasksToReset = tasksToReset.filter(t => {
71
+ if (seen.has(t.id))
72
+ return false;
73
+ seen.add(t.id);
74
+ return true;
75
+ });
76
+ }
77
+ if (tasksToReset.length === 0) {
78
+ out.log('No tasks found to reset.');
79
+ return;
80
+ }
81
+ const validatedTasks = [];
82
+ for (const task of tasksToReset) {
83
+ out.log(`Validating task: ${task.title} (${task.id})`);
84
+ // 1. Dependency pre-flight check
85
+ let preFlightPassed = true;
86
+ if (task.reference_task_id && task.reference_commit) {
87
+ const refTask = (0, queries_js_1.getTask)(db, task.reference_task_id);
88
+ if (refTask && refTask.file_path) {
89
+ const check = (0, node_child_process_1.spawnSync)('git', ['ls-tree', task.reference_commit, refTask.file_path], { encoding: 'utf-8' });
90
+ if (check.status !== 0 || !check.stdout.trim()) {
91
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, `Pre-flight check failed: Dependency task ${refTask.id} reference_commit ${task.reference_commit} does not contain ${refTask.file_path}`);
92
+ preFlightPassed = false;
93
+ }
94
+ // Untracked check for the reference task's file
95
+ if (!(0, node_fs_1.existsSync)((0, node_path_1.join)(process.cwd(), refTask.file_path))) {
96
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, `Pre-flight check failed: Required untracked dependency file does not exist: ${refTask.file_path}`);
97
+ preFlightPassed = false;
98
+ }
99
+ }
100
+ }
101
+ if (!preFlightPassed) {
102
+ out.log(` -> Skipping reset due to pre-flight dependency failure.`);
103
+ continue;
104
+ }
105
+ validatedTasks.push(task);
106
+ }
107
+ if (validatedTasks.length === 0) {
108
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, 'All tasks failed pre-flight checks.');
109
+ process.exit(1);
110
+ }
111
+ // 2. Terminate active runners and revoke leases
112
+ const fullyValidatedTasks = [];
113
+ for (const task of validatedTasks) {
114
+ try {
115
+ killRunnerAndRevokeLease(task.id, db, out);
116
+ fullyValidatedTasks.push(task);
117
+ }
118
+ catch (e) {
119
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, `Failed to kill active runner for task ${task.id}: ${e.message}`);
120
+ out.log(` -> Skipping reset due to process termination failure.`);
121
+ }
122
+ }
123
+ if (fullyValidatedTasks.length === 0) {
124
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, 'All tasks failed pre-flight or runner termination checks.');
125
+ process.exit(1);
126
+ }
127
+ // 3. Atomic Database Transaction across ALL validated tasks
128
+ db.transaction(() => {
129
+ for (const task of fullyValidatedTasks) {
130
+ // Update task status
131
+ db.prepare(`UPDATE tasks SET status = 'pending', rejection_count = 0, failure_count = 0 WHERE id = ?`).run(task.id);
132
+ // Auto-resolve open disputes
133
+ db.prepare(`UPDATE disputes SET status = 'resolved', resolution = 'custom', resolution_notes = 'Bulk reset via CLI', resolved_at = datetime('now') WHERE task_id = ? AND status = 'open'`).run(task.id);
134
+ // Delete task_locks
135
+ db.prepare(`DELETE FROM task_locks WHERE task_id = ?`).run(task.id);
136
+ // Insert audit log
137
+ db.prepare(`INSERT INTO audit (task_id, from_status, to_status, actor, notes) VALUES (?, ?, 'pending', 'human:cli', 'Human-initiated bulk reset via CLI')`).run(task.id, task.status);
138
+ }
139
+ })();
140
+ for (const task of fullyValidatedTasks) {
141
+ out.log(` -> Successfully reset ${task.id} to pending.`);
142
+ }
143
+ if (flags.json) {
144
+ out.success({ resetCount: fullyValidatedTasks.length, totalAttempted: tasksToReset.length });
145
+ }
146
+ else {
147
+ out.log(`\nSuccessfully reset ${fullyValidatedTasks.length} task(s).`);
148
+ }
149
+ });
150
+ }
151
+ function killRunnerAndRevokeLease(taskId, projDb, out) {
152
+ const { db: globalDb, close: closeGlobal } = (0, global_db_js_1.openGlobalDatabase)();
153
+ try {
154
+ let runnerId = null;
155
+ try {
156
+ const inv = projDb.prepare(`SELECT runner_id FROM task_invocations WHERE task_id = ? AND runner_id IS NOT NULL ORDER BY created_at DESC LIMIT 1`).get(taskId);
157
+ if (inv)
158
+ runnerId = inv.runner_id;
159
+ }
160
+ catch (err) {
161
+ // ignore
162
+ }
163
+ if (runnerId) {
164
+ // Find the active runner PID in global registry
165
+ const runner = globalDb.prepare(`SELECT pid, parallel_session_id FROM runners WHERE id = ?`).get(runnerId);
166
+ if (runner && runner.pid) {
167
+ // PID Reuse Sanity Check: Ensure it belongs to a Steroids runner process
168
+ const ps = (0, node_child_process_1.spawnSync)('ps', ['-p', String(runner.pid), '-o', 'command='], { encoding: 'utf-8' });
169
+ const cmdOutput = ps.stdout.toLowerCase();
170
+ if (cmdOutput.includes('steroids') && cmdOutput.includes('runners')) {
171
+ out.log(` -> Killing active runner process (PID: ${runner.pid})`);
172
+ try {
173
+ process.kill(runner.pid, 'SIGKILL');
174
+ (0, node_child_process_1.spawnSync)('sleep', ['0.1']);
175
+ }
176
+ catch (e) {
177
+ if (e.code !== 'ESRCH') {
178
+ throw new Error(`Failed to kill active runner PID ${runner.pid}: ${e.message}`);
179
+ }
180
+ }
181
+ }
182
+ }
183
+ // Revoke lease and unblock session
184
+ globalDb.transaction(() => {
185
+ // Find workstream using deterministic lookup
186
+ const ws = globalDb.prepare(`SELECT id, session_id FROM workstreams WHERE runner_id = ?`).get(runnerId);
187
+ if (ws) {
188
+ out.log(` -> Revoking workstream lease (${ws.id})`);
189
+ globalDb.prepare(`UPDATE workstreams SET runner_id = NULL, lease_expires_at = NULL WHERE id = ?`).run(ws.id);
190
+ // Unblock session
191
+ globalDb.prepare(`UPDATE parallel_sessions SET status = 'running' WHERE id = ? AND status IN ('blocked_recovery', 'failed', 'blocked_validation', 'blocked_conflict')`).run(ws.session_id);
192
+ }
193
+ })();
194
+ }
195
+ }
196
+ finally {
197
+ closeGlobal();
198
+ }
199
+ }
200
+ //# sourceMappingURL=tasks-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-reset.js","sourceRoot":"","sources":["../../src/commands/tasks-reset.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAyInD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEpF"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA+InD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEpF"}