steroids-cli 0.17.1 → 0.18.1

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 (121) hide show
  1. package/README.md +8 -0
  2. package/dist/commands/loop-phases-coder-decision.d.ts.map +1 -1
  3. package/dist/commands/loop-phases-coder-decision.js +2 -1
  4. package/dist/commands/loop-phases-coder-decision.js.map +1 -1
  5. package/dist/commands/loop-phases-helpers.d.ts.map +1 -1
  6. package/dist/commands/loop-phases-helpers.js.map +1 -1
  7. package/dist/commands/loop-phases-reviewer.d.ts.map +1 -1
  8. package/dist/commands/loop-phases-reviewer.js +18 -39
  9. package/dist/commands/loop-phases-reviewer.js.map +1 -1
  10. package/dist/commands/monitor-respond.d.ts.map +1 -1
  11. package/dist/commands/monitor-respond.js +15 -2
  12. package/dist/commands/monitor-respond.js.map +1 -1
  13. package/dist/commands/monitor.d.ts +1 -1
  14. package/dist/commands/monitor.d.ts.map +1 -1
  15. package/dist/commands/monitor.js +41 -6
  16. package/dist/commands/monitor.js.map +1 -1
  17. package/dist/commands/reviewer-preflight.d.ts.map +1 -1
  18. package/dist/commands/reviewer-preflight.js +8 -64
  19. package/dist/commands/reviewer-preflight.js.map +1 -1
  20. package/dist/commands/sections-delete.d.ts.map +1 -1
  21. package/dist/commands/sections-delete.js +16 -1
  22. package/dist/commands/sections-delete.js.map +1 -1
  23. package/dist/commands/task-runtime-cleanup.d.ts +13 -0
  24. package/dist/commands/task-runtime-cleanup.d.ts.map +1 -0
  25. package/dist/commands/task-runtime-cleanup.js +134 -0
  26. package/dist/commands/task-runtime-cleanup.js.map +1 -0
  27. package/dist/commands/tasks-reset.d.ts.map +1 -1
  28. package/dist/commands/tasks-reset.js +20 -52
  29. package/dist/commands/tasks-reset.js.map +1 -1
  30. package/dist/commands/tasks.d.ts.map +1 -1
  31. package/dist/commands/tasks.js +10 -68
  32. package/dist/commands/tasks.js.map +1 -1
  33. package/dist/commands/web.d.ts +1 -0
  34. package/dist/commands/web.d.ts.map +1 -1
  35. package/dist/commands/web.js +6 -1
  36. package/dist/commands/web.js.map +1 -1
  37. package/dist/database/queries.d.ts.map +1 -1
  38. package/dist/database/queries.js +3 -0
  39. package/dist/database/queries.js.map +1 -1
  40. package/dist/git/section-pr.d.ts +4 -3
  41. package/dist/git/section-pr.d.ts.map +1 -1
  42. package/dist/git/section-pr.js +8 -15
  43. package/dist/git/section-pr.js.map +1 -1
  44. package/dist/intake/reviewer-approval.d.ts +5 -1
  45. package/dist/intake/reviewer-approval.d.ts.map +1 -1
  46. package/dist/intake/reviewer-approval.js +90 -15
  47. package/dist/intake/reviewer-approval.js.map +1 -1
  48. package/dist/monitor/investigator-agent.d.ts +2 -1
  49. package/dist/monitor/investigator-agent.d.ts.map +1 -1
  50. package/dist/monitor/investigator-agent.js +26 -6
  51. package/dist/monitor/investigator-agent.js.map +1 -1
  52. package/dist/monitor/investigator-prompt.d.ts +2 -1
  53. package/dist/monitor/investigator-prompt.d.ts.map +1 -1
  54. package/dist/monitor/investigator-prompt.js +110 -69
  55. package/dist/monitor/investigator-prompt.js.map +1 -1
  56. package/dist/monitor/loop.d.ts.map +1 -1
  57. package/dist/monitor/loop.js +63 -7
  58. package/dist/monitor/loop.js.map +1 -1
  59. package/dist/monitor/response-mode.d.ts +38 -0
  60. package/dist/monitor/response-mode.d.ts.map +1 -0
  61. package/dist/monitor/response-mode.js +189 -0
  62. package/dist/monitor/response-mode.js.map +1 -0
  63. package/dist/orchestrator/approval-effects-replay.d.ts +17 -0
  64. package/dist/orchestrator/approval-effects-replay.d.ts.map +1 -0
  65. package/dist/orchestrator/approval-effects-replay.js +55 -0
  66. package/dist/orchestrator/approval-effects-replay.js.map +1 -0
  67. package/dist/orchestrator/automated-approval-effects.d.ts +26 -0
  68. package/dist/orchestrator/automated-approval-effects.d.ts.map +1 -0
  69. package/dist/orchestrator/automated-approval-effects.js +294 -0
  70. package/dist/orchestrator/automated-approval-effects.js.map +1 -0
  71. package/dist/orchestrator/merge-queue-completion.d.ts +12 -0
  72. package/dist/orchestrator/merge-queue-completion.d.ts.map +1 -0
  73. package/dist/orchestrator/merge-queue-completion.js +33 -0
  74. package/dist/orchestrator/merge-queue-completion.js.map +1 -0
  75. package/dist/orchestrator/merge-queue.d.ts +8 -1
  76. package/dist/orchestrator/merge-queue.d.ts.map +1 -1
  77. package/dist/orchestrator/merge-queue.js +48 -13
  78. package/dist/orchestrator/merge-queue.js.map +1 -1
  79. package/dist/orchestrator/reviewer-approval-outcome.d.ts +26 -0
  80. package/dist/orchestrator/reviewer-approval-outcome.d.ts.map +1 -0
  81. package/dist/orchestrator/reviewer-approval-outcome.js +52 -0
  82. package/dist/orchestrator/reviewer-approval-outcome.js.map +1 -0
  83. package/dist/orchestrator/reviewer-policy.d.ts +12 -0
  84. package/dist/orchestrator/reviewer-policy.d.ts.map +1 -0
  85. package/dist/orchestrator/reviewer-policy.js +53 -0
  86. package/dist/orchestrator/reviewer-policy.js.map +1 -0
  87. package/dist/orchestrator/reviewer.d.ts +4 -19
  88. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  89. package/dist/orchestrator/reviewer.js +14 -63
  90. package/dist/orchestrator/reviewer.js.map +1 -1
  91. package/dist/orchestrator/section-completion.d.ts +9 -0
  92. package/dist/orchestrator/section-completion.d.ts.map +1 -0
  93. package/dist/orchestrator/section-completion.js +22 -0
  94. package/dist/orchestrator/section-completion.js.map +1 -0
  95. package/dist/orchestrator/submission-context.d.ts +30 -0
  96. package/dist/orchestrator/submission-context.d.ts.map +1 -0
  97. package/dist/orchestrator/submission-context.js +124 -0
  98. package/dist/orchestrator/submission-context.js.map +1 -0
  99. package/dist/runners/global-db-connection.d.ts.map +1 -1
  100. package/dist/runners/global-db-connection.js +21 -0
  101. package/dist/runners/global-db-connection.js.map +1 -1
  102. package/dist/runners/global-db-schema-migrations-v21.d.ts +3 -2
  103. package/dist/runners/global-db-schema-migrations-v21.d.ts.map +1 -1
  104. package/dist/runners/global-db-schema-migrations-v21.js +8 -3
  105. package/dist/runners/global-db-schema-migrations-v21.js.map +1 -1
  106. package/dist/runners/global-db-schema.d.ts +2 -1
  107. package/dist/runners/global-db-schema.d.ts.map +1 -1
  108. package/dist/runners/global-db-schema.js +6 -1
  109. package/dist/runners/global-db-schema.js.map +1 -1
  110. package/dist/runners/wakeup-project.d.ts.map +1 -1
  111. package/dist/runners/wakeup-project.js +9 -1
  112. package/dist/runners/wakeup-project.js.map +1 -1
  113. package/dist/runners/wakeup-sanitise-recovery.d.ts +1 -1
  114. package/dist/runners/wakeup-sanitise-recovery.d.ts.map +1 -1
  115. package/dist/runners/wakeup-sanitise-recovery.js +26 -15
  116. package/dist/runners/wakeup-sanitise-recovery.js.map +1 -1
  117. package/dist/runners/wakeup-sanitise.d.ts +1 -1
  118. package/dist/runners/wakeup-sanitise.d.ts.map +1 -1
  119. package/dist/runners/wakeup-sanitise.js +5 -5
  120. package/dist/runners/wakeup-sanitise.js.map +1 -1
  121. package/package.json +28 -2
@@ -1,72 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runReviewerSubmissionPreflight = runReviewerSubmissionPreflight;
4
- const queries_js_1 = require("../database/queries.js");
5
- const submission_resolution_js_1 = require("../git/submission-resolution.js");
6
- const submission_durability_js_1 = require("../git/submission-durability.js");
7
- const loop_phases_helpers_js_1 = require("./loop-phases-helpers.js");
8
- const commit_recovery_js_1 = require("./commit-recovery.js");
4
+ const submission_context_js_1 = require("../orchestrator/submission-context.js");
9
5
  function runReviewerSubmissionPreflight(db, task, effectiveProjectPath, jsonMode = false) {
10
- const submissionCandidates = (0, queries_js_1.getSubmissionCommitShas)(db, task.id);
11
- const latestSubmissionAudit = db
12
- .prepare(`SELECT commit_sha, metadata
13
- FROM audit
14
- WHERE task_id = ?
15
- AND to_status = 'review'
16
- AND commit_sha IS NOT NULL
17
- ORDER BY created_at DESC, id DESC
18
- LIMIT 1`)
19
- .get(task.id);
20
- let latestSubmissionMetadata = null;
21
- if (latestSubmissionAudit?.metadata) {
22
- try {
23
- latestSubmissionMetadata = JSON.parse(latestSubmissionAudit.metadata);
24
- }
25
- catch {
26
- latestSubmissionMetadata = null;
27
- }
6
+ const submissionContext = (0, submission_context_js_1.loadSubmissionContext)(db, effectiveProjectPath, task.id);
7
+ if (!submissionContext.durableRefTrusted) {
8
+ (0, submission_context_js_1.noteDurableRefMismatch)(db, task, effectiveProjectPath);
28
9
  }
29
- const durableRefState = (0, submission_durability_js_1.readDurableSubmissionRef)(effectiveProjectPath, task.id);
30
- const latestAuditCommitSha = latestSubmissionAudit?.commit_sha ?? null;
31
- if (latestSubmissionMetadata?.durable_ref && durableRefState && latestAuditCommitSha) {
32
- const durableShaMatchesAudit = durableRefState.sha === latestAuditCommitSha;
33
- const durableShaMatchesMetadata = !latestSubmissionMetadata.durable_ref_sha ||
34
- latestSubmissionMetadata.durable_ref_sha === durableRefState.sha;
35
- if (durableShaMatchesAudit && durableShaMatchesMetadata) {
36
- const deduped = [durableRefState.sha, ...submissionCandidates.filter((sha) => sha !== durableRefState.sha)];
37
- submissionCandidates.splice(0, submissionCandidates.length, ...deduped);
38
- }
39
- else {
40
- (0, queries_js_1.addAuditEntry)(db, task.id, task.status, task.status, 'orchestrator', {
41
- actorType: 'orchestrator',
42
- notes: `[integrity] Durable ref mismatch: ref=${durableRefState.sha}, latest_audit=${latestAuditCommitSha}. Falling back to submission history.`,
43
- });
44
- }
10
+ const approvalSafety = (0, submission_context_js_1.resolveApprovalSafety)(effectiveProjectPath, submissionContext);
11
+ if (!approvalSafety.ok) {
12
+ return (0, submission_context_js_1.handleUnsafeApprovalSubmission)(db, task, approvalSafety, { jsonMode });
45
13
  }
46
- const submissionResolution = (0, submission_resolution_js_1.resolveSubmissionCommitWithRecovery)(effectiveProjectPath, submissionCandidates);
47
- const latestCandidate = submissionCandidates[0] ?? null;
48
- const allUnreachable = submissionResolution.status !== 'resolved';
49
- const latestMissingWithOlderReachable = submissionResolution.status === 'resolved' &&
50
- latestCandidate !== null &&
51
- submissionResolution.sha !== latestCandidate;
52
- if (allUnreachable || latestMissingWithOlderReachable) {
53
- const recoveryAttempts = (0, loop_phases_helpers_js_1.countCommitRecoveryAttempts)(db, task.id) + 1;
54
- const reasonTag = allUnreachable ? 'all_submissions_unreachable' : 'latest_missing_with_older_reachable';
55
- const attemptsText = submissionResolution.attempts.join(' | ') || 'none';
56
- if (recoveryAttempts >= commit_recovery_js_1.COMMIT_RECOVERY_MAX_ATTEMPTS) {
57
- (0, queries_js_1.updateTaskStatus)(db, task.id, 'disputed', 'orchestrator', `[commit_recovery] Escalating after ${recoveryAttempts} attempts (${reasonTag}; attempts: ${attemptsText}).`);
58
- if (!jsonMode) {
59
- console.log('\n✗ Commit recovery cap reached; task escalated to disputed.');
60
- }
61
- return { ok: false };
62
- }
63
- (0, queries_js_1.updateTaskStatus)(db, task.id, 'in_progress', 'orchestrator', `[commit_recovery] ${reasonTag} (${submissionResolution.status === 'resolved' ? 'resolved_with_stale_latest' : submissionResolution.reason}; attempts: ${attemptsText}). ` +
64
- `Treating task as resubmission. Coder must output exact line: SUBMISSION_COMMIT: <sha> for the commit that implements the task.`);
65
- if (!jsonMode) {
66
- console.log('\n⟳ Reviewer preflight blocked due to unhealthy submission chain; returning to coder.');
67
- }
68
- return { ok: false };
69
- }
70
- return { ok: true, submissionCommitSha: submissionResolution.sha };
14
+ return { ok: true, submissionCommitSha: approvalSafety.approvalSha };
71
15
  }
72
16
  //# sourceMappingURL=reviewer-preflight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer-preflight.js","sourceRoot":"","sources":["../../src/commands/reviewer-preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewer-preflight.js","sourceRoot":"","sources":["../../src/commands/reviewer-preflight.ts"],"names":[],"mappings":";;AAeA,wEAiBC;AA5BD,iFAK+C;AAM/C,SAAgB,8BAA8B,CAC5C,EAAyC,EACzC,IAA6C,EAC7C,oBAA4B,EAC5B,QAAQ,GAAG,KAAK;IAEhB,MAAM,iBAAiB,GAAG,IAAA,6CAAqB,EAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;QACzC,IAAA,8CAAsB,EAAC,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,cAAc,GAAG,IAAA,6CAAqB,EAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAEtF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,IAAA,sDAA8B,EAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC;AACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sections-delete.d.ts","sourceRoot":"","sources":["../../src/commands/sections-delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FxF"}
1
+ {"version":3,"file":"sections-delete.d.ts","sourceRoot":"","sources":["../../src/commands/sections-delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOnD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GxF"}
@@ -7,6 +7,8 @@ const queries_js_1 = require("../database/queries.js");
7
7
  const output_js_1 = require("../cli/output.js");
8
8
  const errors_js_1 = require("../cli/errors.js");
9
9
  const errors_js_2 = require("../cli/errors.js");
10
+ const global_db_js_1 = require("../runners/global-db.js");
11
+ const task_runtime_cleanup_js_1 = require("./task-runtime-cleanup.js");
10
12
  async function deleteSectionCmd(args, flags) {
11
13
  const out = (0, output_js_1.createOutput)({ command: 'sections', subcommand: 'delete', flags });
12
14
  const { values, positionals } = (0, node_util_1.parseArgs)({
@@ -55,12 +57,14 @@ EXAMPLES:
55
57
  if (!section) {
56
58
  throw (0, errors_js_1.sectionNotFoundError)(sectionIdInput);
57
59
  }
60
+ const sectionTasks = db.prepare('SELECT id, title, status FROM tasks WHERE section_id = ? ORDER BY created_at ASC').all(section.id);
58
61
  if (flags.dryRun) {
59
- const taskCount = db.prepare('SELECT COUNT(*) as n FROM tasks WHERE section_id = ?').get(section.id).n;
62
+ const taskCount = sectionTasks.length;
60
63
  out.log(`Would delete section: ${section.name} (${section.id})`);
61
64
  if (taskCount > 0) {
62
65
  if (values.force) {
63
66
  out.log(` Would also delete ${taskCount} task(s)`);
67
+ out.log(' Would also release any runner/workspace state owned by those tasks');
64
68
  }
65
69
  else {
66
70
  out.log(` Section has ${taskCount} task(s) — add --force to delete them too`);
@@ -70,6 +74,17 @@ EXAMPLES:
70
74
  }
71
75
  let deletedTaskCount;
72
76
  try {
77
+ if (values.force && sectionTasks.length > 0) {
78
+ const { db: globalDb, close: closeGlobal } = (0, global_db_js_1.openGlobalDatabase)();
79
+ try {
80
+ for (const task of sectionTasks) {
81
+ (0, task_runtime_cleanup_js_1.cleanupTaskRuntimeState)(globalDb, task.id, projectPath, out, db);
82
+ }
83
+ }
84
+ finally {
85
+ closeGlobal();
86
+ }
87
+ }
73
88
  deletedTaskCount = (0, queries_js_1.deleteSection)(db, section.id, { force: values.force });
74
89
  }
75
90
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"sections-delete.js","sourceRoot":"","sources":["../../src/commands/sections-delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sections-delete.js","sourceRoot":"","sources":["../../src/commands/sections-delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type Database from 'better-sqlite3';
2
+ export declare const FORCE_DELETE_TASK_STATUSES: readonly ["in_progress", "review", "merge_pending"];
3
+ export declare function taskDeleteRequiresForce(status: string): boolean;
4
+ export interface TaskRuntimeCleanupSummary {
5
+ runnerIds: string[];
6
+ releasedSlotIds: number[];
7
+ unblockedSessionIds: string[];
8
+ releasedMergeLocks: number;
9
+ }
10
+ export declare function cleanupTaskRuntimeState(globalDb: Database.Database, taskId: string, projectPath: string, out?: {
11
+ log: (message: string) => void;
12
+ }, projectDb?: Database.Database): TaskRuntimeCleanupSummary;
13
+ //# sourceMappingURL=task-runtime-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-runtime-cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/task-runtime-cleanup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,eAAO,MAAM,0BAA0B,qDAAsD,CAAC;AAE9F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE;IAAE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,EACxC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAC5B,yBAAyB,CA4J3B"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FORCE_DELETE_TASK_STATUSES = void 0;
4
+ exports.taskDeleteRequiresForce = taskDeleteRequiresForce;
5
+ exports.cleanupTaskRuntimeState = cleanupTaskRuntimeState;
6
+ const node_child_process_1 = require("node:child_process");
7
+ const clone_js_1 = require("../parallel/clone.js");
8
+ const pool_js_1 = require("../workspace/pool.js");
9
+ exports.FORCE_DELETE_TASK_STATUSES = ['in_progress', 'review', 'merge_pending'];
10
+ function taskDeleteRequiresForce(status) {
11
+ return exports.FORCE_DELETE_TASK_STATUSES.includes(status);
12
+ }
13
+ function cleanupTaskRuntimeState(globalDb, taskId, projectPath, out, projectDb) {
14
+ const projectId = (0, clone_js_1.getProjectHash)(projectPath);
15
+ const runnerMap = new Map();
16
+ const candidateRunnerIds = new Set();
17
+ if (projectDb) {
18
+ const invocationRunnerIds = projectDb
19
+ .prepare(`SELECT DISTINCT runner_id
20
+ FROM task_invocations
21
+ WHERE task_id = ?
22
+ AND runner_id IS NOT NULL
23
+ AND status = 'running'`)
24
+ .all(taskId);
25
+ for (const row of invocationRunnerIds) {
26
+ candidateRunnerIds.add(row.runner_id);
27
+ }
28
+ }
29
+ const runners = globalDb
30
+ .prepare(`SELECT DISTINCT r.id, r.pid
31
+ FROM runners r
32
+ LEFT JOIN parallel_sessions ps ON ps.id = r.parallel_session_id
33
+ WHERE r.current_task_id = ?
34
+ AND (r.project_path = ? OR ps.project_path = ?)`)
35
+ .all(taskId, projectPath, projectPath);
36
+ for (const runner of runners) {
37
+ runnerMap.set(runner.id, runner);
38
+ candidateRunnerIds.add(runner.id);
39
+ }
40
+ for (const runnerId of candidateRunnerIds) {
41
+ if (runnerMap.has(runnerId)) {
42
+ continue;
43
+ }
44
+ const runner = globalDb
45
+ .prepare(`SELECT r.id, r.pid, r.current_task_id
46
+ FROM runners r
47
+ LEFT JOIN parallel_sessions ps ON ps.id = r.parallel_session_id
48
+ WHERE r.id = ?
49
+ AND (r.project_path = ? OR ps.project_path = ? OR r.project_path IS NULL)`)
50
+ .get(runnerId, projectPath, projectPath);
51
+ if (runner && runner.current_task_id && runner.current_task_id !== taskId) {
52
+ continue;
53
+ }
54
+ runnerMap.set(runnerId, { id: runnerId, pid: runner?.pid ?? null });
55
+ }
56
+ for (const runner of runnerMap.values()) {
57
+ if (!runner.pid)
58
+ continue;
59
+ const ps = (0, node_child_process_1.spawnSync)('ps', ['-p', String(runner.pid), '-o', 'command='], { encoding: 'utf-8' });
60
+ const cmdOutput = `${ps.stdout ?? ''}${ps.stderr ?? ''}`.toLowerCase();
61
+ if (!cmdOutput.includes('steroids') || !cmdOutput.includes('runners')) {
62
+ continue;
63
+ }
64
+ out?.log(` -> Killing active runner process (PID: ${runner.pid})`);
65
+ try {
66
+ process.kill(runner.pid, 'SIGKILL');
67
+ (0, node_child_process_1.spawnSync)('sleep', ['0.1']);
68
+ }
69
+ catch (error) {
70
+ if (error?.code !== 'ESRCH') {
71
+ throw new Error(`Failed to kill active runner PID ${runner.pid}: ${error.message}`);
72
+ }
73
+ }
74
+ }
75
+ const sessionIdsToUnblock = new Set();
76
+ const releasedSlotIds = [];
77
+ let releasedMergeLocks = 0;
78
+ globalDb.transaction(() => {
79
+ for (const runner of runnerMap.values()) {
80
+ const workstreams = globalDb
81
+ .prepare('SELECT id, session_id FROM workstreams WHERE runner_id = ?')
82
+ .all(runner.id);
83
+ for (const workstream of workstreams) {
84
+ out?.log(` -> Revoking workstream lease (${workstream.id})`);
85
+ globalDb
86
+ .prepare('UPDATE workstreams SET runner_id = NULL, lease_expires_at = NULL WHERE id = ?')
87
+ .run(workstream.id);
88
+ sessionIdsToUnblock.add(workstream.session_id);
89
+ }
90
+ globalDb.prepare('DELETE FROM runners WHERE id = ?').run(runner.id);
91
+ }
92
+ for (const sessionId of sessionIdsToUnblock) {
93
+ globalDb
94
+ .prepare(`UPDATE parallel_sessions
95
+ SET status = 'running'
96
+ WHERE id = ?
97
+ AND status IN ('blocked_recovery', 'failed', 'blocked_validation', 'blocked_conflict')`)
98
+ .run(sessionId);
99
+ }
100
+ const slots = globalDb
101
+ .prepare('SELECT id FROM workspace_pool_slots WHERE project_id = ? AND task_id = ?')
102
+ .all(projectId, taskId);
103
+ for (const slot of slots) {
104
+ (0, pool_js_1.releaseSlot)(globalDb, slot.id);
105
+ releasedSlotIds.push(slot.id);
106
+ }
107
+ for (const runnerId of runnerMap.keys()) {
108
+ const released = globalDb
109
+ .prepare(`DELETE FROM workspace_merge_locks
110
+ WHERE project_id = ?
111
+ AND runner_id = ?`)
112
+ .run(projectId, runnerId);
113
+ releasedMergeLocks += released.changes;
114
+ }
115
+ for (const slotId of releasedSlotIds) {
116
+ const released = globalDb
117
+ .prepare(`DELETE FROM workspace_merge_locks
118
+ WHERE project_id = ?
119
+ AND slot_id = ?`)
120
+ .run(projectId, slotId);
121
+ releasedMergeLocks += released.changes;
122
+ }
123
+ })();
124
+ if (releasedMergeLocks > 0) {
125
+ out?.log(` -> Released ${releasedMergeLocks} merge lock(s)`);
126
+ }
127
+ return {
128
+ runnerIds: [...runnerMap.keys()],
129
+ releasedSlotIds,
130
+ unblockedSessionIds: [...sessionIdsToUnblock],
131
+ releasedMergeLocks,
132
+ };
133
+ }
134
+ //# sourceMappingURL=task-runtime-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-runtime-cleanup.js","sourceRoot":"","sources":["../../src/commands/task-runtime-cleanup.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAMnD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmOpF;AAmDD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuErF"}
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;AAOnD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwOpF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFrF"}
@@ -14,6 +14,7 @@ const global_db_js_1 = require("../runners/global-db.js");
14
14
  const git_lifecycle_js_1 = require("../workspace/git-lifecycle.js");
15
15
  const pool_js_1 = require("../workspace/pool.js");
16
16
  const clone_js_1 = require("../parallel/clone.js");
17
+ const task_runtime_cleanup_js_1 = require("./task-runtime-cleanup.js");
17
18
  async function resetTaskCmd(args, flags) {
18
19
  const out = (0, output_js_1.createOutput)({ command: 'tasks', subcommand: 'reset', flags });
19
20
  const { values, positionals } = (0, node_util_1.parseArgs)({
@@ -123,7 +124,13 @@ DESCRIPTION:
123
124
  const fullyValidatedTasks = [];
124
125
  for (const task of validatedTasks) {
125
126
  try {
126
- killRunnerAndRevokeLease(task.id, db, out);
127
+ const { db: globalDb, close: closeGlobal } = (0, global_db_js_1.openGlobalDatabase)();
128
+ try {
129
+ (0, task_runtime_cleanup_js_1.cleanupTaskRuntimeState)(globalDb, task.id, projectPath, out, db);
130
+ }
131
+ finally {
132
+ closeGlobal();
133
+ }
127
134
  fullyValidatedTasks.push(task);
128
135
  }
129
136
  catch (e) {
@@ -206,55 +213,6 @@ DESCRIPTION:
206
213
  }
207
214
  });
208
215
  }
209
- function killRunnerAndRevokeLease(taskId, projDb, out) {
210
- const { db: globalDb, close: closeGlobal } = (0, global_db_js_1.openGlobalDatabase)();
211
- try {
212
- let runnerId = null;
213
- try {
214
- 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);
215
- if (inv)
216
- runnerId = inv.runner_id;
217
- }
218
- catch (err) {
219
- // ignore
220
- }
221
- if (runnerId) {
222
- // Find the active runner PID in global registry
223
- const runner = globalDb.prepare(`SELECT pid, parallel_session_id FROM runners WHERE id = ?`).get(runnerId);
224
- if (runner && runner.pid) {
225
- // PID Reuse Sanity Check: Ensure it belongs to a Steroids runner process
226
- const ps = (0, node_child_process_1.spawnSync)('ps', ['-p', String(runner.pid), '-o', 'command='], { encoding: 'utf-8' });
227
- const cmdOutput = ps.stdout.toLowerCase();
228
- if (cmdOutput.includes('steroids') && cmdOutput.includes('runners')) {
229
- out.log(` -> Killing active runner process (PID: ${runner.pid})`);
230
- try {
231
- process.kill(runner.pid, 'SIGKILL');
232
- (0, node_child_process_1.spawnSync)('sleep', ['0.1']);
233
- }
234
- catch (e) {
235
- if (e.code !== 'ESRCH') {
236
- throw new Error(`Failed to kill active runner PID ${runner.pid}: ${e.message}`);
237
- }
238
- }
239
- }
240
- }
241
- // Revoke lease and unblock session
242
- globalDb.transaction(() => {
243
- // Find workstream using deterministic lookup
244
- const ws = globalDb.prepare(`SELECT id, session_id FROM workstreams WHERE runner_id = ?`).get(runnerId);
245
- if (ws) {
246
- out.log(` -> Revoking workstream lease (${ws.id})`);
247
- globalDb.prepare(`UPDATE workstreams SET runner_id = NULL, lease_expires_at = NULL WHERE id = ?`).run(ws.id);
248
- // Unblock session
249
- globalDb.prepare(`UPDATE parallel_sessions SET status = 'running' WHERE id = ? AND status IN ('blocked_recovery', 'failed', 'blocked_validation', 'blocked_conflict')`).run(ws.session_id);
250
- }
251
- })();
252
- }
253
- }
254
- finally {
255
- closeGlobal();
256
- }
257
- }
258
216
  async function deleteTaskCmd(args, flags) {
259
217
  const out = (0, output_js_1.createOutput)({ command: 'tasks', subcommand: 'delete', flags });
260
218
  const { values, positionals } = (0, node_util_1.parseArgs)({
@@ -301,15 +259,25 @@ EXAMPLES:
301
259
  out.error(errors_js_1.ErrorCode.TASK_NOT_FOUND, `Task not found: ${identifier}`);
302
260
  process.exit((0, errors_js_1.getExitCode)(errors_js_1.ErrorCode.TASK_NOT_FOUND));
303
261
  }
304
- if (task.status === 'in_progress' && !values.force) {
305
- out.error(errors_js_1.ErrorCode.GENERAL_ERROR, `Task is currently in progress. Use --force to delete it anyway.`);
262
+ if ((0, task_runtime_cleanup_js_1.taskDeleteRequiresForce)(task.status) && !values.force) {
263
+ out.error(errors_js_1.ErrorCode.GENERAL_ERROR, `Task is currently active (${task.status}). Use --force to delete it anyway.`);
306
264
  process.exit(1);
307
265
  }
308
266
  if (flags.dryRun) {
309
267
  out.log(`Would delete task: ${task.title} (${task.id})`);
310
268
  out.log(` Status: ${task.status}`);
269
+ if ((0, task_runtime_cleanup_js_1.taskDeleteRequiresForce)(task.status)) {
270
+ out.log(' Would also stop any active runner and release task-owned workspace state');
271
+ }
311
272
  return;
312
273
  }
274
+ const { db: globalDb, close: closeGlobal } = (0, global_db_js_1.openGlobalDatabase)();
275
+ try {
276
+ (0, task_runtime_cleanup_js_1.cleanupTaskRuntimeState)(globalDb, task.id, projectPath, out, db);
277
+ }
278
+ finally {
279
+ closeGlobal();
280
+ }
313
281
  (0, queries_js_1.deleteTask)(db, task.id);
314
282
  if (flags.json) {
315
283
  out.success({ deleted: { id: task.id, title: task.title } });
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-reset.js","sourceRoot":"","sources":["../../src/commands/tasks-reset.ts"],"names":[],"mappings":"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"}
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;AA0JnD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EpF"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAsJnD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EpF"}
@@ -18,8 +18,8 @@ const integration_js_1 = require("../hooks/integration.js");
18
18
  const tasks_reset_js_1 = require("./tasks-reset.js");
19
19
  const tasks_deps_js_1 = require("./tasks-deps.js");
20
20
  const status_js_1 = require("../git/status.js");
21
- const section_pr_js_1 = require("../git/section-pr.js");
22
21
  const loader_js_1 = require("../config/loader.js");
22
+ const automated_approval_effects_js_1 = require("../orchestrator/automated-approval-effects.js");
23
23
  const HELP = (0, help_js_1.generateHelp)({
24
24
  command: 'tasks',
25
25
  description: 'Manage tasks in the automated development workflow',
@@ -943,64 +943,6 @@ EXAMPLES:
943
943
  }
944
944
  });
945
945
  }
946
- /**
947
- * Check if a section is completed after a task is marked complete
948
- */
949
- async function checkSectionCompletion(db, sectionId, flags) {
950
- if (!sectionId) {
951
- return;
952
- }
953
- // Get section info
954
- const section = (0, queries_js_1.getSection)(db, sectionId);
955
- if (!section) {
956
- return;
957
- }
958
- // Section is "done" when all tasks are in terminal states AND at least one completed.
959
- // Terminal states: completed, skipped, failed, disputed, blocked_error, blocked_conflict.
960
- // Non-terminal (active): pending, in_progress, review, partial.
961
- const sectionTasks = (0, queries_js_1.listTasks)(db, { sectionId });
962
- const activeCount = sectionTasks.filter(t => ['pending', 'in_progress', 'review', 'merge_pending', 'partial'].includes(t.status)).length;
963
- const completedCount = sectionTasks.filter(t => t.status === 'completed').length;
964
- const sectionDone = sectionTasks.length > 0 && activeCount === 0 && completedCount > 0;
965
- if (sectionDone) {
966
- // Trigger section.completed hooks (skipped when --no-hooks)
967
- if (!(0, integration_js_1.shouldSkipHooks)(flags)) {
968
- await (0, integration_js_1.triggerHooksSafely)(() => (0, integration_js_1.triggerSectionCompleted)({
969
- id: section.id,
970
- name: section.name,
971
- taskCount: sectionTasks.length,
972
- }, sectionTasks.map((t) => ({ id: t.id, title: t.title })), { verbose: flags.verbose }), { verbose: flags.verbose });
973
- }
974
- // Auto-PR: always runs regardless of --no-hooks (hooks and PRs are orthogonal)
975
- const projectPath = process.cwd();
976
- const config = (0, loader_js_1.loadConfig)(projectPath);
977
- await (0, section_pr_js_1.checkSectionCompletionAndPR)(db, projectPath, sectionId, config);
978
- }
979
- }
980
- /**
981
- * Check if the entire project is completed after a task is marked complete
982
- */
983
- async function checkProjectCompletion(db, flags) {
984
- if ((0, integration_js_1.shouldSkipHooks)(flags)) {
985
- return;
986
- }
987
- // Get all tasks
988
- const allTasks = (0, queries_js_1.listTasks)(db, { status: 'all' });
989
- // Check if all tasks are completed
990
- const allCompleted = allTasks.every((t) => t.status === 'completed');
991
- if (allCompleted && allTasks.length > 0) {
992
- // Get sections
993
- const sections = (0, queries_js_1.listSections)(db);
994
- // Get unique source files
995
- const files = Array.from(new Set(allTasks.map((t) => t.source_file).filter(Boolean)));
996
- // Trigger project.completed hooks
997
- await (0, integration_js_1.triggerHooksSafely)(() => (0, integration_js_1.triggerProjectCompleted)({
998
- totalTasks: allTasks.length,
999
- files,
1000
- sectionCount: sections.length,
1001
- }, { verbose: flags.verbose }), { verbose: flags.verbose });
1002
- }
1003
- }
1004
946
  async function approveTaskCmd(args, flags) {
1005
947
  const out = (0, output_js_1.createOutput)({ command: 'tasks', subcommand: 'approve', flags });
1006
948
  const { values, positionals } = (0, node_util_1.parseArgs)({
@@ -1041,16 +983,16 @@ OPTIONS:
1041
983
  out.error(errors_js_1.ErrorCode.TASK_NOT_FOUND, `Task not found: ${identifier}`, { identifier });
1042
984
  process.exit((0, errors_js_1.getExitCode)(errors_js_1.ErrorCode.TASK_NOT_FOUND));
1043
985
  }
1044
- (0, queries_js_1.approveTask)(db, task.id, values.model, values.notes);
986
+ await (0, automated_approval_effects_js_1.completeTaskWithApprovalEffects)(db, task, {
987
+ actor: `model:${values.model}`,
988
+ notes: values.notes ?? 'Approved via steroids tasks approve',
989
+ config: (0, loader_js_1.loadConfig)(projectPath),
990
+ projectPath,
991
+ intakeProjectPath: projectPath,
992
+ hooksEnabled: !(0, integration_js_1.shouldSkipHooks)(flags),
993
+ verbose: flags.verbose,
994
+ });
1045
995
  const updated = (0, queries_js_1.getTask)(db, task.id);
1046
- // Trigger task.completed hooks
1047
- if (!(0, integration_js_1.shouldSkipHooks)(flags) && updated) {
1048
- await (0, integration_js_1.triggerHooksSafely)(() => (0, integration_js_1.triggerTaskCompleted)(updated, { verbose: flags.verbose }), { verbose: flags.verbose });
1049
- // Check if section is now complete
1050
- await checkSectionCompletion(db, updated.section_id, flags);
1051
- // Check if entire project is now complete
1052
- await checkProjectCompletion(db, flags);
1053
- }
1054
996
  out.success({ task: updated });
1055
997
  if (!flags.json) {
1056
998
  out.log(`Task approved: ${task.title}`);