steroids-cli 0.17.1 → 0.18.0

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 (117) 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/database/queries.d.ts.map +1 -1
  34. package/dist/database/queries.js +3 -0
  35. package/dist/database/queries.js.map +1 -1
  36. package/dist/git/section-pr.d.ts +4 -3
  37. package/dist/git/section-pr.d.ts.map +1 -1
  38. package/dist/git/section-pr.js +8 -15
  39. package/dist/git/section-pr.js.map +1 -1
  40. package/dist/intake/reviewer-approval.d.ts +5 -1
  41. package/dist/intake/reviewer-approval.d.ts.map +1 -1
  42. package/dist/intake/reviewer-approval.js +90 -15
  43. package/dist/intake/reviewer-approval.js.map +1 -1
  44. package/dist/monitor/investigator-agent.d.ts +2 -1
  45. package/dist/monitor/investigator-agent.d.ts.map +1 -1
  46. package/dist/monitor/investigator-agent.js +26 -6
  47. package/dist/monitor/investigator-agent.js.map +1 -1
  48. package/dist/monitor/investigator-prompt.d.ts +2 -1
  49. package/dist/monitor/investigator-prompt.d.ts.map +1 -1
  50. package/dist/monitor/investigator-prompt.js +110 -69
  51. package/dist/monitor/investigator-prompt.js.map +1 -1
  52. package/dist/monitor/loop.d.ts.map +1 -1
  53. package/dist/monitor/loop.js +63 -7
  54. package/dist/monitor/loop.js.map +1 -1
  55. package/dist/monitor/response-mode.d.ts +38 -0
  56. package/dist/monitor/response-mode.d.ts.map +1 -0
  57. package/dist/monitor/response-mode.js +189 -0
  58. package/dist/monitor/response-mode.js.map +1 -0
  59. package/dist/orchestrator/approval-effects-replay.d.ts +17 -0
  60. package/dist/orchestrator/approval-effects-replay.d.ts.map +1 -0
  61. package/dist/orchestrator/approval-effects-replay.js +55 -0
  62. package/dist/orchestrator/approval-effects-replay.js.map +1 -0
  63. package/dist/orchestrator/automated-approval-effects.d.ts +26 -0
  64. package/dist/orchestrator/automated-approval-effects.d.ts.map +1 -0
  65. package/dist/orchestrator/automated-approval-effects.js +294 -0
  66. package/dist/orchestrator/automated-approval-effects.js.map +1 -0
  67. package/dist/orchestrator/merge-queue-completion.d.ts +12 -0
  68. package/dist/orchestrator/merge-queue-completion.d.ts.map +1 -0
  69. package/dist/orchestrator/merge-queue-completion.js +33 -0
  70. package/dist/orchestrator/merge-queue-completion.js.map +1 -0
  71. package/dist/orchestrator/merge-queue.d.ts +8 -1
  72. package/dist/orchestrator/merge-queue.d.ts.map +1 -1
  73. package/dist/orchestrator/merge-queue.js +48 -13
  74. package/dist/orchestrator/merge-queue.js.map +1 -1
  75. package/dist/orchestrator/reviewer-approval-outcome.d.ts +26 -0
  76. package/dist/orchestrator/reviewer-approval-outcome.d.ts.map +1 -0
  77. package/dist/orchestrator/reviewer-approval-outcome.js +52 -0
  78. package/dist/orchestrator/reviewer-approval-outcome.js.map +1 -0
  79. package/dist/orchestrator/reviewer-policy.d.ts +12 -0
  80. package/dist/orchestrator/reviewer-policy.d.ts.map +1 -0
  81. package/dist/orchestrator/reviewer-policy.js +53 -0
  82. package/dist/orchestrator/reviewer-policy.js.map +1 -0
  83. package/dist/orchestrator/reviewer.d.ts +4 -19
  84. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  85. package/dist/orchestrator/reviewer.js +14 -63
  86. package/dist/orchestrator/reviewer.js.map +1 -1
  87. package/dist/orchestrator/section-completion.d.ts +9 -0
  88. package/dist/orchestrator/section-completion.d.ts.map +1 -0
  89. package/dist/orchestrator/section-completion.js +22 -0
  90. package/dist/orchestrator/section-completion.js.map +1 -0
  91. package/dist/orchestrator/submission-context.d.ts +30 -0
  92. package/dist/orchestrator/submission-context.d.ts.map +1 -0
  93. package/dist/orchestrator/submission-context.js +124 -0
  94. package/dist/orchestrator/submission-context.js.map +1 -0
  95. package/dist/runners/global-db-connection.d.ts.map +1 -1
  96. package/dist/runners/global-db-connection.js +21 -0
  97. package/dist/runners/global-db-connection.js.map +1 -1
  98. package/dist/runners/global-db-schema-migrations-v21.d.ts +3 -2
  99. package/dist/runners/global-db-schema-migrations-v21.d.ts.map +1 -1
  100. package/dist/runners/global-db-schema-migrations-v21.js +8 -3
  101. package/dist/runners/global-db-schema-migrations-v21.js.map +1 -1
  102. package/dist/runners/global-db-schema.d.ts +2 -1
  103. package/dist/runners/global-db-schema.d.ts.map +1 -1
  104. package/dist/runners/global-db-schema.js +6 -1
  105. package/dist/runners/global-db-schema.js.map +1 -1
  106. package/dist/runners/wakeup-project.d.ts.map +1 -1
  107. package/dist/runners/wakeup-project.js +9 -1
  108. package/dist/runners/wakeup-project.js.map +1 -1
  109. package/dist/runners/wakeup-sanitise-recovery.d.ts +1 -1
  110. package/dist/runners/wakeup-sanitise-recovery.d.ts.map +1 -1
  111. package/dist/runners/wakeup-sanitise-recovery.js +26 -15
  112. package/dist/runners/wakeup-sanitise-recovery.js.map +1 -1
  113. package/dist/runners/wakeup-sanitise.d.ts +1 -1
  114. package/dist/runners/wakeup-sanitise.d.ts.map +1 -1
  115. package/dist/runners/wakeup-sanitise.js +5 -5
  116. package/dist/runners/wakeup-sanitise.js.map +1 -1
  117. package/package.json +28 -2
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildIntakeApprovalReplayInput = buildIntakeApprovalReplayInput;
3
4
  exports.handleIntakeTaskApproval = handleIntakeTaskApproval;
4
5
  const queries_js_1 = require("../database/queries.js");
5
6
  const intake_queries_js_1 = require("../database/intake-queries.js");
6
7
  const pipeline_glue_js_1 = require("./pipeline-glue.js");
7
8
  const task_templates_js_1 = require("./task-templates.js");
9
+ const task_templates_js_2 = require("./task-templates.js");
8
10
  const task_reference_js_1 = require("./task-reference.js");
9
11
  function getOrCreateSectionId(db, sectionName) {
10
12
  const existing = (0, queries_js_1.getSectionByName)(db, sectionName);
@@ -33,38 +35,111 @@ function createNextIntakeTask(db, nextPhase, report, options = {}) {
33
35
  });
34
36
  return nextTask.id;
35
37
  }
36
- function handleIntakeTaskApproval(db, task, projectPath) {
38
+ function findExistingNextTaskId(db, nextTaskTitle) {
39
+ const row = db
40
+ .prepare(`SELECT id
41
+ FROM tasks
42
+ WHERE title = ?
43
+ AND source_file = ?
44
+ ORDER BY created_at DESC, id DESC
45
+ LIMIT 1`)
46
+ .get(nextTaskTitle, task_templates_js_2.DEFAULT_INTAKE_PIPELINE_SOURCE_FILE);
47
+ return row?.id ?? null;
48
+ }
49
+ function resolveLinkedNextTaskId(db, linkedTaskId, nextPhase, nextTaskTitle, source, externalId) {
50
+ if (!linkedTaskId) {
51
+ return null;
52
+ }
53
+ const linkedTask = (0, queries_js_1.getTask)(db, linkedTaskId);
54
+ if (!linkedTask) {
55
+ return null;
56
+ }
57
+ const reference = (0, task_reference_js_1.parseIntakeTaskReference)(linkedTask);
58
+ if (linkedTask.title === nextTaskTitle &&
59
+ reference?.phase === nextPhase &&
60
+ reference.source === source &&
61
+ reference.externalId === externalId) {
62
+ return linkedTaskId;
63
+ }
64
+ return null;
65
+ }
66
+ function resolveReplayInput(task, source) {
67
+ if (typeof source !== 'string') {
68
+ return source;
69
+ }
70
+ return buildIntakeApprovalReplayInput(task, source);
71
+ }
72
+ function buildIntakeApprovalReplayInput(task, projectPath) {
37
73
  const reference = (0, task_reference_js_1.parseIntakeTaskReference)(task);
38
74
  if (!reference || reference.phase === 'fix') {
39
- return { handled: false };
40
- }
41
- const report = (0, intake_queries_js_1.getIntakeReport)(db, reference.source, reference.externalId);
42
- if (!report) {
43
- throw new Error(`Intake pipeline task refers to missing report ${reference.source}#${reference.externalId}`);
75
+ return null;
44
76
  }
45
77
  const result = (0, pipeline_glue_js_1.parseIntakeResultFile)(projectPath);
46
78
  if (result.phase !== reference.phase) {
47
79
  throw new Error(`Intake result phase "${result.phase}" does not match approved task phase "${reference.phase}" for ${reference.source}#${reference.externalId}`);
48
80
  }
49
- const transition = (0, pipeline_glue_js_1.deriveIntakePipelineTransition)(result);
50
- if (transition.action === 'complete') {
81
+ return {
82
+ kind: 'intake',
83
+ source: reference.source,
84
+ externalId: reference.externalId,
85
+ phase: reference.phase,
86
+ currentTaskTitle: task.title,
87
+ transition: (0, pipeline_glue_js_1.deriveIntakePipelineTransition)(result),
88
+ };
89
+ }
90
+ function handleIntakeTaskApproval(db, task, projectPathOrReplayInput) {
91
+ const replayInput = resolveReplayInput(task, projectPathOrReplayInput);
92
+ if (!replayInput) {
93
+ return { handled: false };
94
+ }
95
+ const report = (0, intake_queries_js_1.getIntakeReport)(db, replayInput.source, replayInput.externalId);
96
+ if (!report) {
97
+ throw new Error(`Intake pipeline task refers to missing report ${replayInput.source}#${replayInput.externalId}`);
98
+ }
99
+ if (replayInput.transition.action === 'complete') {
100
+ const targetStatus = replayInput.transition.resolutionCode === 'fixed' ? 'resolved' : 'ignored';
101
+ if (report.status === targetStatus) {
102
+ return { handled: true, transition: replayInput.transition };
103
+ }
51
104
  (0, intake_queries_js_1.updateIntakeReportState)(db, report.source, report.externalId, {
52
- status: transition.resolutionCode === 'fixed' ? 'resolved' : 'ignored',
105
+ status: targetStatus,
53
106
  resolvedAt: new Date().toISOString(),
54
107
  linkedTaskId: task.id,
55
108
  });
56
- return { handled: true, transition };
109
+ return { handled: true, transition: replayInput.transition };
57
110
  }
58
- const createdTaskId = createNextIntakeTask(db, transition.nextPhase, report, {
59
- currentTaskTitle: task.title,
60
- nextTaskTitle: transition.nextTaskTitle,
61
- retry: transition.action === 'retry',
111
+ const nextTaskTitle = replayInput.transition.nextTaskTitle ??
112
+ (0, task_templates_js_1.buildIntakeTaskTemplate)(replayInput.transition.nextPhase, report, {
113
+ retryAttempt: replayInput.transition.action === 'retry'
114
+ ? parseRetryAttemptFromTitle(replayInput.currentTaskTitle) + 1
115
+ : undefined,
116
+ }).title;
117
+ const existingNextTaskId = (report.linkedTaskId && report.linkedTaskId !== task.id
118
+ ? resolveLinkedNextTaskId(db, report.linkedTaskId, replayInput.transition.nextPhase, nextTaskTitle, replayInput.source, replayInput.externalId)
119
+ : null) ??
120
+ findExistingNextTaskId(db, nextTaskTitle);
121
+ if (existingNextTaskId) {
122
+ (0, intake_queries_js_1.updateIntakeReportState)(db, report.source, report.externalId, {
123
+ status: 'in_progress',
124
+ resolvedAt: null,
125
+ linkedTaskId: existingNextTaskId,
126
+ });
127
+ return {
128
+ handled: true,
129
+ transition: replayInput.transition,
130
+ createdTaskId: existingNextTaskId,
131
+ };
132
+ }
133
+ const createdTaskId = createNextIntakeTask(db, replayInput.transition.nextPhase, report, {
134
+ currentTaskTitle: replayInput.currentTaskTitle,
135
+ nextTaskTitle: replayInput.transition.nextTaskTitle,
136
+ retry: replayInput.transition.action === 'retry',
62
137
  });
63
138
  (0, intake_queries_js_1.updateIntakeReportState)(db, report.source, report.externalId, {
64
139
  status: 'in_progress',
65
140
  resolvedAt: null,
66
141
  linkedTaskId: createdTaskId,
67
142
  });
68
- return { handled: true, transition, createdTaskId };
143
+ return { handled: true, transition: replayInput.transition, createdTaskId };
69
144
  }
70
145
  //# sourceMappingURL=reviewer-approval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer-approval.js","sourceRoot":"","sources":["../../src/intake/reviewer-approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewer-approval.js","sourceRoot":"","sources":["../../src/intake/reviewer-approval.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  *
14
14
  * Every action is fully documented in the run results for accountability.
15
15
  */
16
+ import { type StoredMonitorResponsePreset } from './response-mode.js';
16
17
  import type { ScanResult } from './scanner.js';
17
18
  export type FirstResponderAction = {
18
19
  action: 'reset_task';
@@ -99,5 +100,5 @@ export declare function parseFirstResponderResponse(raw: string): FirstResponder
99
100
  export declare function runFirstResponder(agents: Array<{
100
101
  provider: string;
101
102
  model: string;
102
- }>, scanResult: ScanResult, preset: string, customPrompt: string | null, remediationContext?: string): Promise<FirstResponderResult>;
103
+ }>, scanResult: ScanResult, preset: StoredMonitorResponsePreset, customPrompt: string | null, remediationContext?: string): Promise<FirstResponderResult>;
103
104
  //# sourceMappingURL=investigator-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"investigator-agent.d.ts","sourceRoot":"","sources":["../../src/monitor/investigator-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM/C,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/G;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChH;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtG;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChH;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,aAAa,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9G,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuBD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAmD3D,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAuD/E;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CA8F/B"}
1
+ {"version":3,"file":"investigator-agent.d.ts","sourceRoot":"","sources":["../../src/monitor/investigator-agent.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ exports.runFirstResponder = runFirstResponder;
21
21
  const registry_js_1 = require("../providers/registry.js");
22
22
  const investigator_prompt_js_1 = require("./investigator-prompt.js");
23
23
  const investigator_actions_js_1 = require("./investigator-actions.js");
24
+ const response_mode_js_1 = require("./response-mode.js");
24
25
  // ---------------------------------------------------------------------------
25
26
  // Allowed action schemas (used in prompt + validation)
26
27
  // ---------------------------------------------------------------------------
@@ -143,12 +144,27 @@ function parseFirstResponderResponse(raw) {
143
144
  }
144
145
  return { diagnosis, actions: validActions };
145
146
  }
147
+ function filterActionsForPreset(actions, preset, diagnosis) {
148
+ const policy = (0, response_mode_js_1.getMonitorResponsePolicy)(preset);
149
+ const filtered = actions.filter((action) => {
150
+ const allowed = policy.allowedActions.has(action.action);
151
+ if (!allowed) {
152
+ console.warn(`[first-responder] Dropping disallowed ${action.action} action for ${policy.preset}`);
153
+ }
154
+ return allowed;
155
+ });
156
+ if (filtered.length > 0 || actions.length === 0 || !policy.allowedActions.has('report_only')) {
157
+ return filtered;
158
+ }
159
+ return [{ action: 'report_only', diagnosis }];
160
+ }
146
161
  // ---------------------------------------------------------------------------
147
162
  // Main entry point — fallback chain
148
163
  // ---------------------------------------------------------------------------
149
164
  async function runFirstResponder(agents, scanResult, preset, customPrompt, remediationContext) {
150
165
  const registry = await (0, registry_js_1.getProviderRegistry)();
151
166
  const prompt = (0, investigator_prompt_js_1.buildFirstResponderPrompt)(scanResult, preset, customPrompt, remediationContext);
167
+ const policy = (0, response_mode_js_1.getMonitorResponsePolicy)(preset);
152
168
  for (const agent of agents) {
153
169
  let provider;
154
170
  try {
@@ -191,15 +207,18 @@ async function runFirstResponder(agents, scanResult, preset, customPrompt, remed
191
207
  continue;
192
208
  }
193
209
  const response = parseFirstResponderResponse(result.stdout);
210
+ const filteredActions = filterActionsForPreset(response.actions, preset, response.diagnosis);
194
211
  // M6: If FR returned only report_only but scan has actionable anomalies, inject fallback actions.
195
212
  // Uses reset_task for task-level anomalies (94.9% success) over trigger_wakeup (0% for idle_project).
196
213
  const ACTIONABLE_TYPES = new Set(['blocked_task', 'failed_task', 'orphaned_task', 'hanging_invocation', 'zombie_runner', 'dead_runner']);
197
214
  const actionableAnomalies = scanResult.anomalies.filter(a => ACTIONABLE_TYPES.has(a.type));
198
- const onlyReportOnly = response.actions.length === 0 || response.actions.every(a => a.action === 'report_only');
199
- if (actionableAnomalies.length > 0 && onlyReportOnly) {
215
+ const onlyReportOnly = filteredActions.length === 0 || filteredActions.every(a => a.action === 'report_only');
216
+ let finalActions = filteredActions;
217
+ if (policy.allowFallbackRepairInjection && actionableAnomalies.length > 0 && onlyReportOnly) {
218
+ const repairActions = [];
200
219
  const taskAnomaly = actionableAnomalies.find(a => a.taskId);
201
220
  if (taskAnomaly) {
202
- response.actions.push({
221
+ repairActions.push({
203
222
  action: 'reset_task',
204
223
  projectPath: taskAnomaly.projectPath,
205
224
  taskId: taskAnomaly.taskId,
@@ -207,18 +226,19 @@ async function runFirstResponder(agents, scanResult, preset, customPrompt, remed
207
226
  });
208
227
  }
209
228
  else {
210
- response.actions.push({
229
+ repairActions.push({
211
230
  action: 'trigger_wakeup',
212
231
  reason: 'M6: FR returned only report_only for actionable anomalies; injecting wakeup',
213
232
  });
214
233
  }
234
+ finalActions = [...filteredActions, ...repairActions];
215
235
  }
216
- const actionResults = await (0, investigator_actions_js_1.executeActions)(response.actions);
236
+ const actionResults = await (0, investigator_actions_js_1.executeActions)(finalActions);
217
237
  return {
218
238
  success: true,
219
239
  agentUsed: `${agent.provider}/${agent.model}`,
220
240
  diagnosis: response.diagnosis,
221
- actions: response.actions,
241
+ actions: finalActions,
222
242
  actionResults,
223
243
  };
224
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"investigator-agent.js","sourceRoot":"","sources":["../../src/monitor/investigator-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"investigator-agent.js","sourceRoot":"","sources":["../../src/monitor/investigator-agent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Prompt builder for the first responder agent.
3
3
  */
4
+ import { type StoredMonitorResponsePreset } from './response-mode.js';
4
5
  import type { ScanResult } from './scanner.js';
5
- export declare function buildFirstResponderPrompt(scanResult: ScanResult, preset: string, customPrompt: string | null, remediationContext?: string): string;
6
+ export declare function buildFirstResponderPrompt(scanResult: ScanResult, preset: StoredMonitorResponsePreset, customPrompt: string | null, remediationContext?: string): string;
6
7
  //# sourceMappingURL=investigator-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"investigator-prompt.d.ts","sourceRoot":"","sources":["../../src/monitor/investigator-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ/C,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAiIR"}
1
+ {"version":3,"file":"investigator-prompt.d.ts","sourceRoot":"","sources":["../../src/monitor/investigator-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgH/C,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAyER"}
@@ -4,15 +4,113 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.buildFirstResponderPrompt = buildFirstResponderPrompt;
7
+ const response_mode_js_1 = require("./response-mode.js");
7
8
  const PRESET_INSTRUCTIONS = {
8
- stop_on_error: 'If you find any critical anomaly, emit a stop_all_runners action immediately. Do not attempt repairs.',
9
- investigate_and_stop: 'Diagnose the root cause. If the situation is dangerous, stop all runners. Otherwise, report only.',
9
+ monitor_only: 'This mode is observation-only. Do not request any actions. Provide diagnosis only.',
10
+ triage_only: 'Diagnose the root cause. Investigate with read-only queries when needed. Do not request mutating actions.',
10
11
  fix_and_monitor: 'Attempt to fix issues by resetting stuck tasks, adding missing dependencies, providing feedback to coders, or killing zombie runners. Only stop all runners as a last resort.',
12
+ custom: 'Follow the custom instructions below while staying within the host-enforced action policy.',
13
+ stop_on_error: 'Legacy mode: if the situation is dangerous, stop all runners immediately. Do not attempt other repairs.',
14
+ investigate_and_stop: 'Legacy mode: diagnose the root cause. If the situation is dangerous, stop all runners. Otherwise, report only.',
11
15
  };
16
+ const ACTION_DOCS = [
17
+ {
18
+ action: 'query_db',
19
+ text: `**Investigation & Debugging:**
20
+
21
+ - { "action": "query_db", "projectPath": "<path>", "sql": "<SELECT ...>", "reason": "<why>" }
22
+ Run a READ-ONLY SQL query against a project's database to investigate issues.
23
+ Only SELECT statements are allowed.
24
+ Tables available: tasks, sections, section_dependencies, task_invocations, task_feedback, task_rejections.`,
25
+ },
26
+ {
27
+ action: 'reset_task',
28
+ text: `**Task Fixes:**
29
+
30
+ - { "action": "reset_task", "projectPath": "<path>", "taskId": "<id>", "reason": "<why>" }
31
+ Reset a stuck or failed task so it can run again.`,
32
+ },
33
+ {
34
+ action: 'update_task',
35
+ text: `- { "action": "update_task", "projectPath": "<path>", "taskId": "<id>", "fields": { ... }, "reason": "<why>" }
36
+ Update specific task fields. Allowed fields: status, failure_count, rejection_count, merge_failure_count, conflict_count, blocked_reason, description, merge_phase, approved_sha, rebase_attempts.`,
37
+ },
38
+ {
39
+ action: 'add_task_feedback',
40
+ text: `- { "action": "add_task_feedback", "projectPath": "<path>", "taskId": "<id>", "feedback": "<guidance>", "reason": "<why>" }
41
+ Add feedback that future coder or reviewer attempts will see.`,
42
+ },
43
+ {
44
+ action: 'add_dependency',
45
+ text: `**Dependency & Ordering Fixes:**
46
+
47
+ - { "action": "add_dependency", "projectPath": "<path>", "sectionId": "<id>", "dependsOnSectionId": "<id>", "reason": "<why>" }
48
+ Add a section dependency so work runs in the correct order.`,
49
+ },
50
+ {
51
+ action: 'reset_project',
52
+ text: `**Project & Runner Controls:**
53
+
54
+ - { "action": "reset_project", "projectPath": "<path>", "reason": "<why>" }
55
+ Reset all blocked or failed tasks in a project to pending.`,
56
+ },
57
+ {
58
+ action: 'kill_runner',
59
+ text: `- { "action": "kill_runner", "runnerId": "<pid>", "reason": "<why>" }
60
+ Send SIGTERM to a specific runner process by PID.`,
61
+ },
62
+ {
63
+ action: 'stop_all_runners',
64
+ text: `- { "action": "stop_all_runners", "reason": "<why>" }
65
+ Stop every active runner. Use only when the system is in a dangerous state.`,
66
+ },
67
+ {
68
+ action: 'trigger_wakeup',
69
+ text: `- { "action": "trigger_wakeup", "reason": "<why>" }
70
+ Trigger the wakeup cycle to restart runners and recover from idle states.`,
71
+ },
72
+ {
73
+ action: 'release_merge_lock',
74
+ text: `**Merge Queue:**
75
+
76
+ - { "action": "release_merge_lock", "projectPath": "<path>", "diagnosis": "<why>" }
77
+ Force-release a stale merge lock for a project.`,
78
+ },
79
+ {
80
+ action: 'reset_merge_phase',
81
+ text: `- { "action": "reset_merge_phase", "projectPath": "<path>", "taskId": "<id>", "diagnosis": "<why>" }
82
+ Reset a stuck merge_pending task back to the queued phase.`,
83
+ },
84
+ {
85
+ action: 'suppress_anomaly',
86
+ text: `**Suppression:**
87
+
88
+ - { "action": "suppress_anomaly", "projectPath": "<path>", "anomalyType": "<type>", "duration_hours": <number>, "reason": "<why>" }
89
+ Suppress a known false positive anomaly for the specified project and type (max 168 hours).`,
90
+ },
91
+ {
92
+ action: 'report_only',
93
+ text: `**Report:**
94
+
95
+ - { "action": "report_only", "diagnosis": "<summary>" }
96
+ No action taken, just report findings.`,
97
+ },
98
+ ];
99
+ function buildAllowedActionsSection(preset) {
100
+ const policy = (0, response_mode_js_1.getMonitorResponsePolicy)(preset);
101
+ if (policy.allowedActions.size === 0) {
102
+ return `No actions are allowed in this mode. Return an empty "actions" array.`;
103
+ }
104
+ return ACTION_DOCS
105
+ .filter((doc) => policy.allowedActions.has(doc.action))
106
+ .map((doc) => doc.text)
107
+ .join('\n\n');
108
+ }
12
109
  function buildFirstResponderPrompt(scanResult, preset, customPrompt, remediationContext) {
110
+ const policy = (0, response_mode_js_1.getMonitorResponsePolicy)(preset);
13
111
  const presetText = preset === 'custom' && customPrompt
14
112
  ? customPrompt
15
- : PRESET_INSTRUCTIONS[preset] ?? PRESET_INSTRUCTIONS.investigate_and_stop;
113
+ : PRESET_INSTRUCTIONS[preset];
16
114
  const anomalyList = scanResult.anomalies.length === 0
17
115
  ? 'No anomalies detected.'
18
116
  : scanResult.anomalies.map((a, i) => `${i + 1}. [${a.severity.toUpperCase()}] ${a.type} — ${a.details}\n` +
@@ -42,6 +140,12 @@ ${presetText}
42
140
 
43
141
  ## Instructions
44
142
 
143
+ Selected response mode: ${policy.label}
144
+ Host policy:
145
+ - Auto-dispatch allowed: ${policy.autoDispatch ? 'yes' : 'no'}
146
+ - Mutating actions allowed: ${policy.allowedActions.has('reset_task') ? 'yes' : 'no'}
147
+ - Fallback repair injection allowed: ${policy.allowFallbackRepairInjection ? 'yes' : 'no'}
148
+
45
149
  Analyze the anomalies above and respond with a JSON object matching this schema:
46
150
 
47
151
  {
@@ -55,71 +159,7 @@ Analyze the anomalies above and respond with a JSON object matching this schema:
55
159
 
56
160
  ### Allowed Actions
57
161
 
58
- **Investigation & Debugging:**
59
-
60
- - { "action": "query_db", "projectPath": "<path>", "sql": "<SELECT ...>", "reason": "<why>" }
61
- Run a READ-ONLY SQL query against a project's database to investigate issues.
62
- Use this to inspect task states, dependencies, invocation history, section ordering, etc.
63
- Only SELECT statements are allowed. Results are returned for your analysis.
64
- Tables available: tasks, sections, section_dependencies, task_invocations, task_feedback, task_rejections.
65
- Example: SELECT id, title, status, failure_count, rejection_count, section_id FROM tasks WHERE status NOT IN ('completed', 'skipped')
66
-
67
- **Task Fixes:**
68
-
69
- - { "action": "reset_task", "projectPath": "<path>", "taskId": "<id>", "reason": "<why>" }
70
- Resets a stuck/failed task to pending (clears failure and rejection counts).
71
-
72
- - { "action": "update_task", "projectPath": "<path>", "taskId": "<id>", "fields": { ... }, "reason": "<why>" }
73
- Update specific task fields. Allowed fields: status, failure_count, rejection_count, merge_failure_count, conflict_count, blocked_reason, description, merge_phase, approved_sha, rebase_attempts.
74
- Valid statuses: pending, in_progress, review, merge_pending, completed, failed, skipped, disputed, blocked_conflict, blocked_error.
75
- Use this for surgical fixes — e.g., changing status from blocked_error to pending, clearing a blocked_reason, updating a description to be clearer.
76
-
77
- - { "action": "add_task_feedback", "projectPath": "<path>", "taskId": "<id>", "feedback": "<guidance>", "reason": "<why>" }
78
- Add human-style feedback notes to a task. Next time a coder or reviewer works on this task, they will see your feedback.
79
- Use this to guide future attempts — e.g., "The previous approach failed because X. Try Y instead." or "This task depends on task Z being completed first — check that Z's output file exists before proceeding."
80
-
81
- **Dependency & Ordering Fixes:**
82
-
83
- - { "action": "add_dependency", "projectPath": "<path>", "sectionId": "<id>", "dependsOnSectionId": "<id>", "reason": "<why>" }
84
- Add a section dependency so sectionId won't run until dependsOnSectionId completes.
85
- Use when tasks are failing because they run before a prerequisite section is done.
86
- Circular dependencies are automatically rejected.
87
-
88
- **Project & Runner Controls:**
89
-
90
- - { "action": "reset_project", "projectPath": "<path>", "reason": "<why>" }
91
- Resets ALL blocked/failed/skipped tasks in a project to pending and re-enables the project.
92
- Use when a project has multiple blocked tasks that need bulk recovery.
93
-
94
- - { "action": "kill_runner", "runnerId": "<pid>", "reason": "<why>" }
95
- Sends SIGTERM to a specific runner process by PID.
96
-
97
- - { "action": "stop_all_runners", "reason": "<why>" }
98
- Stops every active runner. Use only when the system is in a dangerous state.
99
-
100
- - { "action": "trigger_wakeup", "reason": "<why>" }
101
- Triggers the wakeup cycle to restart runners and recover from idle states.
102
-
103
- **Merge Queue:**
104
-
105
- - { "action": "release_merge_lock", "projectPath": "<path>", "diagnosis": "<why>" }
106
- Force-release a stale merge lock for a project. Use when a merge_pending task is stuck because the merge lock was not released after a crash.
107
-
108
- - { "action": "reset_merge_phase", "projectPath": "<path>", "taskId": "<id>", "diagnosis": "<why>" }
109
- Reset a merge_pending task's merge_phase to 'queued' and clear rebase_attempts. Use when a task is stuck in rebasing/rebase_review phase.
110
-
111
- **Suppression:**
112
-
113
- - { "action": "suppress_anomaly", "projectPath": "<path>", "anomalyType": "<type>", "duration_hours": <number>, "reason": "<why>" }
114
- Suppress a known false positive anomaly for the specified project and type (max 168 hours = 1 week).
115
- The scanner will skip matching anomalies until the suppression expires.
116
- Use when you have confirmed an anomaly is a false positive (e.g., idle_project when runners are actually active via parallel sessions).
117
- Valid anomaly types: orphaned_task, hanging_invocation, zombie_runner, dead_runner, db_inconsistency, credit_exhaustion, failed_task, skipped_task, idle_project, high_invocations, repeated_failures, blocked_task, stale_merge_lock, stuck_merge_phase, disputed_task.
118
-
119
- **Report:**
120
-
121
- - { "action": "report_only", "diagnosis": "<summary>" }
122
- No action taken, just report findings. Use when anomalies are informational only.
162
+ ${buildAllowedActionsSection(preset)}
123
163
 
124
164
  ## Guidelines
125
165
 
@@ -131,7 +171,8 @@ Analyze the anomalies above and respond with a JSON object matching this schema:
131
171
  - NEVER modify the steroids CLI source code — your job is to fix project-level task/runner issues.
132
172
  - Respond with valid JSON only — no markdown fences, no commentary outside the JSON.
133
173
  - If no action is needed, use a single report_only action.
134
- - Blocking issues (blocked_task, idle_project, orphaned_task) MUST be acted upon do NOT use report_only for these.
174
+ - If this mode does not allow a desired action, do not request it.
175
+ - Blocking issues still require a useful diagnosis even when this mode forbids repair.
135
176
  - Document everything. Your actions will be reviewed. Explain your reasoning.`;
136
177
  }
137
178
  //# sourceMappingURL=investigator-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"investigator-prompt.js","sourceRoot":"","sources":["../../src/monitor/investigator-prompt.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAUH,8DAsIC;AA5ID,MAAM,mBAAmB,GAA2B;IAClD,aAAa,EAAE,uGAAuG;IACtH,oBAAoB,EAAE,mGAAmG;IACzH,eAAe,EAAE,+KAA+K;CACjM,CAAC;AAEF,SAAgB,yBAAyB,CACvC,UAAsB,EACtB,MAAc,EACd,YAA2B,EAC3B,kBAA2B;IAE3B,MAAM,UAAU,GAAG,MAAM,KAAK,QAAQ,IAAI,YAAY;QACpD,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,oBAAoB,CAAC;IAE5E,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QACnD,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,IAAI;YACpE,eAAe,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,KAAK;YACnD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAC3C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjB,MAAM,kBAAkB,GAAG,kBAAkB;QAC3C,CAAC,CAAC,+BAA+B,kBAAkB,IAAI;QACvD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;kBAKS,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBAC1C,UAAU,CAAC,YAAY;WAChC,UAAU,CAAC,OAAO;;;;EAI3B,WAAW;EACX,kBAAkB;;;EAGlB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA8FkE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"investigator-prompt.js","sourceRoot":"","sources":["../../src/monitor/investigator-prompt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/monitor/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqBH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,GAAG,iBAAiB,GAAG,4BAA4B,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmRD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDlD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkE3I"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/monitor/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,GAAG,iBAAiB,GAAG,4BAA4B,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmSD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAgElD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8F3I"}