opencode-autoresearch 3.1.0-beta.2

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 (71) hide show
  1. package/.opencode-plugin/plugin.json +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +74 -0
  4. package/commands/autoresearch/debug.md +23 -0
  5. package/commands/autoresearch/fix.md +21 -0
  6. package/commands/autoresearch/learn.md +21 -0
  7. package/commands/autoresearch/plan.md +25 -0
  8. package/commands/autoresearch/predict.md +21 -0
  9. package/commands/autoresearch/scenario.md +21 -0
  10. package/commands/autoresearch/security.md +21 -0
  11. package/commands/autoresearch/ship.md +22 -0
  12. package/commands/autoresearch.md +45 -0
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +202 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/constants.d.ts +13 -0
  18. package/dist/constants.d.ts.map +1 -0
  19. package/dist/constants.js +13 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/helpers.d.ts +19 -0
  22. package/dist/helpers.d.ts.map +1 -0
  23. package/dist/helpers.js +137 -0
  24. package/dist/helpers.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +3 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/run-manager.d.ts +9 -0
  30. package/dist/run-manager.d.ts.map +1 -0
  31. package/dist/run-manager.js +239 -0
  32. package/dist/run-manager.js.map +1 -0
  33. package/dist/subagent-pool.d.ts +7 -0
  34. package/dist/subagent-pool.d.ts.map +1 -0
  35. package/dist/subagent-pool.js +101 -0
  36. package/dist/subagent-pool.js.map +1 -0
  37. package/dist/types.d.ts +129 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +2 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/wizard.d.ts +3 -0
  42. package/dist/wizard.d.ts.map +1 -0
  43. package/dist/wizard.js +56 -0
  44. package/dist/wizard.js.map +1 -0
  45. package/docs/ARCHITECTURE.md +88 -0
  46. package/docs/CNAME +1 -0
  47. package/docs/OPENCODE_INSTALL.md +48 -0
  48. package/docs/RELEASE.md +67 -0
  49. package/docs/autoresearch-loop.svg +95 -0
  50. package/docs/index.html +249 -0
  51. package/hooks/init.sh +21 -0
  52. package/hooks/status.sh +23 -0
  53. package/hooks/stop.sh +27 -0
  54. package/package.json +49 -0
  55. package/skills/autoresearch/SKILL.md +77 -0
  56. package/skills/autoresearch/references/core-principles.md +20 -0
  57. package/skills/autoresearch/references/debug-workflow.md +31 -0
  58. package/skills/autoresearch/references/fix-workflow.md +25 -0
  59. package/skills/autoresearch/references/interaction-wizard.md +33 -0
  60. package/skills/autoresearch/references/learn-workflow.md +15 -0
  61. package/skills/autoresearch/references/loop-workflow.md +35 -0
  62. package/skills/autoresearch/references/plan-workflow.md +42 -0
  63. package/skills/autoresearch/references/predict-workflow.md +15 -0
  64. package/skills/autoresearch/references/results-logging.md +29 -0
  65. package/skills/autoresearch/references/runtime-hard-invariants.md +13 -0
  66. package/skills/autoresearch/references/scenario-workflow.md +15 -0
  67. package/skills/autoresearch/references/security-workflow.md +15 -0
  68. package/skills/autoresearch/references/ship-workflow.md +15 -0
  69. package/skills/autoresearch/references/state-management.md +39 -0
  70. package/skills/autoresearch/references/structured-output-spec.md +34 -0
  71. package/skills/autoresearch/references/subagent-orchestration.md +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAGA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMtE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK5G;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAO3E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAOtE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOjG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CA0BpF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE,CAO3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGpF"}
@@ -0,0 +1,137 @@
1
+ import { writeFileSync, mkdirSync, readFileSync, renameSync, unlinkSync, existsSync } from "fs";
2
+ import { resolve, dirname } from "path";
3
+ export class AutoresearchError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "AutoresearchError";
7
+ }
8
+ }
9
+ export function printJson(payload) {
10
+ console.log(JSON.stringify(payload, null, 2));
11
+ }
12
+ export function utcNow() {
13
+ return new Date().toISOString().replace("Z", "+00:00").split("+")[0] + "Z";
14
+ }
15
+ export function resolveRepo(repo) {
16
+ return repo ?? process.cwd();
17
+ }
18
+ export function ensureParent(filePath) {
19
+ mkdirSync(dirname(filePath), { recursive: true });
20
+ }
21
+ export async function atomicWriteText(filePath, content) {
22
+ ensureParent(filePath);
23
+ const tmp = filePath + ".tmp." + Date.now();
24
+ writeFileSync(tmp, content, "utf-8");
25
+ try {
26
+ renameSync(tmp, filePath);
27
+ }
28
+ catch {
29
+ try {
30
+ unlinkSync(tmp);
31
+ }
32
+ catch { /* ignore */ }
33
+ throw new AutoresearchError("Failed to write " + filePath);
34
+ }
35
+ }
36
+ export async function atomicWriteJson(filePath, payload) {
37
+ await atomicWriteText(filePath, JSON.stringify(payload, null, 2) + "\n");
38
+ }
39
+ export function readJsonFile(filePath) {
40
+ try {
41
+ return JSON.parse(readFileSync(filePath, "utf-8"));
42
+ }
43
+ catch {
44
+ throw new AutoresearchError("Missing file: " + filePath);
45
+ }
46
+ }
47
+ export function resolvePath(repo, value, defaultName) {
48
+ if (value) {
49
+ return value.startsWith("/") ? value : resolve(repo ?? ".", value);
50
+ }
51
+ return resolve(repo ?? ".", defaultName);
52
+ }
53
+ export function normalizeDirection(value) {
54
+ if (!value)
55
+ return "lower";
56
+ const normalized = value.trim().toLowerCase();
57
+ if (normalized !== "lower" && normalized !== "higher") {
58
+ throw new AutoresearchError("Unsupported direction: " + value);
59
+ }
60
+ return normalized;
61
+ }
62
+ export function normalizeMode(value) {
63
+ if (!value)
64
+ return "foreground";
65
+ const normalized = value.trim().toLowerCase();
66
+ if (normalized !== "foreground" && normalized !== "background") {
67
+ throw new AutoresearchError("Unsupported mode: " + value);
68
+ }
69
+ return normalized;
70
+ }
71
+ export function normalizeResultStatus(value, fieldName) {
72
+ if (!value)
73
+ throw new AutoresearchError("Missing " + fieldName);
74
+ const normalized = value.trim().toLowerCase();
75
+ if (!["pass", "fail", "skip"].includes(normalized)) {
76
+ throw new AutoresearchError("Unsupported " + fieldName + ": " + value);
77
+ }
78
+ return normalized;
79
+ }
80
+ export function parseDurationSeconds(value) {
81
+ if (!value)
82
+ return null;
83
+ const normalized = value.trim().toLowerCase();
84
+ if (!normalized)
85
+ return null;
86
+ if (/^\d+$/.test(normalized)) {
87
+ const n = parseInt(normalized);
88
+ if (n <= 0)
89
+ throw new AutoresearchError("Invalid duration: " + value);
90
+ return n;
91
+ }
92
+ const tokens = [...normalized.matchAll(/(\d+)([smhd])/g)];
93
+ let total = 0;
94
+ let pos = 0;
95
+ for (const match of tokens) {
96
+ if (match.index !== pos) {
97
+ throw new AutoresearchError("Invalid duration: " + value);
98
+ }
99
+ const amount = parseInt(match[1]);
100
+ const unit = match[2];
101
+ const multiplier = { s: 1, m: 60, h: 3600, d: 86400 };
102
+ total += amount * (multiplier[unit] ?? 0);
103
+ pos += match[0].length;
104
+ }
105
+ if (pos !== normalized.length || total <= 0) {
106
+ throw new AutoresearchError("Invalid duration: " + value);
107
+ }
108
+ return total;
109
+ }
110
+ export function inferVerifyCommand(repo) {
111
+ const base = repo ?? ".";
112
+ const hasPkg = existsSync(resolve(base, "package.json"));
113
+ if (hasPkg)
114
+ return "npm test";
115
+ const makeFile = resolve(base, "Makefile");
116
+ if (existsSync(makeFile))
117
+ return "make test";
118
+ const hasPy = existsSync(resolve(base, "pytest.ini")) || existsSync(resolve(base, "tests"));
119
+ if (hasPy)
120
+ return "pytest";
121
+ return "<set verify command>";
122
+ }
123
+ export function normalizeLabels(values) {
124
+ if (!values)
125
+ return [];
126
+ if (typeof values === "string") {
127
+ return [...new Set(values.split(",").map((s) => s.trim()).filter(Boolean))];
128
+ }
129
+ if (!Array.isArray(values))
130
+ return [];
131
+ return [...new Set(values.map((v) => v.trim()).filter(Boolean))];
132
+ }
133
+ export function missingRequiredLabels(labels, required) {
134
+ const labelSet = new Set(labels);
135
+ return required.filter((l) => !labelSet.has(l));
136
+ }
137
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { VERSION, PACKAGE_NAME, PRODUCT_BRAND, SKILL_NAME } from "./constants.js";
2
+ export { VERSION, PACKAGE_NAME, PRODUCT_BRAND, SKILL_NAME };
3
+ export type { RunConfig, WizardConfig, SupervisorSnapshot, RunState } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ import { VERSION, PACKAGE_NAME, PRODUCT_BRAND, SKILL_NAME, } from "./constants.js";
2
+ export { VERSION, PACKAGE_NAME, PRODUCT_BRAND, SKILL_NAME };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { RunConfig, RunState } from "./types.js";
2
+ export declare function initializeRun(repo: string | undefined, resultsPathValue: string | undefined, statePathValue: string | undefined, config: RunConfig, freshStart: boolean): Promise<RunState>;
3
+ export declare function appendIteration(repo: string | undefined, resultsPathValue: string | undefined, statePathValue: string | undefined, decision: string, metricValue: string | undefined, verifyStatus: string, guardStatus: string, hypothesis: string | undefined, changeSummary: string, labels: string[] | undefined, note: string | undefined, iteration: number | undefined): Promise<RunState>;
4
+ export declare function makeStatePayload(config: RunConfig, resultsPath: string, statePath: string): RunState;
5
+ export declare function setStopRequested(repo: string | undefined, statePathValue: string | undefined): Promise<RunState>;
6
+ export declare function resumeBackgroundRun(repo: string | undefined, statePathValue: string | undefined): Promise<RunState>;
7
+ export declare function completeRun(repo: string | undefined, statePathValue: string | undefined): Promise<RunState>;
8
+ export declare function buildSupervisorSnapshot(repo: string | undefined, _resultsPath: string | undefined, statePathValue: string | undefined): Promise<Record<string, unknown>>;
9
+ //# sourceMappingURL=run-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manager.d.ts","sourceRoot":"","sources":["../src/run-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiBtD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,QAAQ,CAAC,CA0EnB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,QAAQ,CA8DV;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,QAAQ,CAAC,CAgBnB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,cAAc,EAAE,MAAM,GAAG,SAAS,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwClC"}
@@ -0,0 +1,239 @@
1
+ import { utcNow, ensureParent, atomicWriteJson, readJsonFile, resolvePath, normalizeDirection, parseDurationSeconds, normalizeLabels, missingRequiredLabels, AutoresearchError, } from "./helpers.js";
2
+ import { RESULTS_DEFAULT, STATE_DEFAULT } from "./constants.js";
3
+ import { buildSubagentPoolPlan, buildContinuationPolicy } from "./subagent-pool.js";
4
+ import { writeFileSync, appendFileSync, existsSync } from "fs";
5
+ export async function initializeRun(repo, resultsPathValue, statePathValue, config, freshStart) {
6
+ const resultsPath = resolvePath(repo, resultsPathValue, RESULTS_DEFAULT);
7
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
8
+ if (existsSync(statePath) && !freshStart) {
9
+ throw new AutoresearchError(`${statePath} already exists. Use --fresh-start to archive.`);
10
+ }
11
+ const header = "timestamp\titeration\tdecision\tmetric_value\tverify_status\tguard_status\thypothesis\tchange_summary\tlabels\tnote\n";
12
+ ensureParent(resultsPath);
13
+ if (!existsSync(resultsPath)) {
14
+ writeFileSync(resultsPath, header, "utf-8");
15
+ }
16
+ else {
17
+ appendFileSync(resultsPath, header, "utf-8");
18
+ }
19
+ const state = makeStatePayload(config, resultsPath, statePath);
20
+ await atomicWriteJson(statePath, state);
21
+ return state;
22
+ }
23
+ export async function appendIteration(repo, resultsPathValue, statePathValue, decision, metricValue, verifyStatus, guardStatus, hypothesis, changeSummary, labels, note, iteration) {
24
+ const resultsPath = resolvePath(repo, resultsPathValue, RESULTS_DEFAULT);
25
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
26
+ const state = readJsonFile(statePath);
27
+ const currentIteration = iteration ?? state.stats.total_iterations + 1;
28
+ const now = utcNow();
29
+ const labelList = normalizeLabels(labels ?? []);
30
+ const labelReqs = state.label_requirements ?? { keep: [], stop: [] };
31
+ const requiredKeep = normalizeLabels(labelReqs.keep ?? []);
32
+ const requiredStop = normalizeLabels(labelReqs.stop ?? []);
33
+ const missingKeep = missingRequiredLabels(labelList, requiredKeep);
34
+ const missingStop = missingRequiredLabels(labelList, requiredStop);
35
+ if (decision === "keep" && missingKeep.length > 0) {
36
+ throw new AutoresearchError(`Keep requires labels: ${missingKeep.join(", ")}`);
37
+ }
38
+ const resultRow = [
39
+ now,
40
+ String(currentIteration),
41
+ decision,
42
+ metricValue ?? "",
43
+ verifyStatus,
44
+ guardStatus,
45
+ hypothesis ?? "",
46
+ changeSummary,
47
+ labelList.join(","),
48
+ note ?? "",
49
+ ].join("\t") + "\n";
50
+ appendFileSync(resultsPath, resultRow, "utf-8");
51
+ const newState = {
52
+ ...state,
53
+ updated_at: now,
54
+ status: "running",
55
+ stats: {
56
+ ...state.stats,
57
+ total_iterations: currentIteration,
58
+ },
59
+ flags: {
60
+ ...state.flags,
61
+ stop_ready: decision === "keep" && missingStop.length === 0,
62
+ },
63
+ };
64
+ if (decision === "keep") {
65
+ newState.stats.kept = (newState.stats.kept ?? 0) + 1;
66
+ newState.stats.consecutive_discards = 0;
67
+ }
68
+ else if (decision === "discard") {
69
+ newState.stats.discarded = (newState.stats.discarded ?? 0) + 1;
70
+ newState.stats.consecutive_discards = (newState.stats.consecutive_discards ?? 0) + 1;
71
+ }
72
+ else if (decision === "needs_human") {
73
+ newState.stats.needs_human = (newState.stats.needs_human ?? 0) + 1;
74
+ newState.flags.needs_human = true;
75
+ newState.stats.consecutive_discards = 0;
76
+ }
77
+ newState.last_iteration = {
78
+ iteration: currentIteration,
79
+ decision,
80
+ metric_value: metricValue,
81
+ change_summary: changeSummary,
82
+ labels: labelList,
83
+ timestamp: now,
84
+ keep_labels_satisfied: missingKeep.length === 0,
85
+ stop_labels_satisfied: missingStop.length === 0,
86
+ missing_keep_labels: missingKeep,
87
+ missing_stop_labels: missingStop,
88
+ };
89
+ await atomicWriteJson(statePath, newState);
90
+ return newState;
91
+ }
92
+ export function makeStatePayload(config, resultsPath, statePath) {
93
+ const now = utcNow();
94
+ const durationSeconds = parseDurationSeconds(config.duration);
95
+ const deadlineAt = durationSeconds != null
96
+ ? new Date(Date.now() + durationSeconds * 1000).toISOString().split(".")[0] + "Z"
97
+ : undefined;
98
+ const subagentPool = buildSubagentPoolPlan({
99
+ goal: config.goal,
100
+ scope: config.scope ?? "current repository",
101
+ mode: config.mode,
102
+ });
103
+ const continuationPolicy = buildContinuationPolicy(config.mode);
104
+ return {
105
+ schema_version: 1,
106
+ run_id: config.run_tag ?? `run-${Date.now().toString(36)}`,
107
+ created_at: now,
108
+ updated_at: now,
109
+ status: "initialized",
110
+ mode: config.mode,
111
+ goal: config.goal,
112
+ scope: config.scope ?? "current repository",
113
+ metric: {
114
+ name: config.metric,
115
+ direction: normalizeDirection(config.direction),
116
+ baseline: config.baseline,
117
+ best: config.baseline,
118
+ latest: config.baseline,
119
+ },
120
+ verify: config.verify,
121
+ guard: config.guard,
122
+ iterations_cap: config.iterations,
123
+ duration: config.duration,
124
+ duration_seconds: durationSeconds ?? undefined,
125
+ deadline_at: deadlineAt,
126
+ label_requirements: {
127
+ keep: normalizeLabels(config.required_keep_labels ?? []),
128
+ stop: normalizeLabels(config.required_stop_labels ?? []),
129
+ },
130
+ stop_condition: config.stop_condition,
131
+ artifact_paths: {
132
+ results: resultsPath,
133
+ state: statePath,
134
+ },
135
+ stats: {
136
+ total_iterations: 0,
137
+ kept: 0,
138
+ discarded: 0,
139
+ needs_human: 0,
140
+ consecutive_discards: 0,
141
+ best_iteration: undefined,
142
+ },
143
+ flags: {
144
+ stop_requested: false,
145
+ needs_human: false,
146
+ background_active: config.mode === "background",
147
+ stop_ready: false,
148
+ },
149
+ subagent_pool: subagentPool,
150
+ continuation_policy: continuationPolicy,
151
+ };
152
+ }
153
+ export async function setStopRequested(repo, statePathValue) {
154
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
155
+ const state = readJsonFile(statePath);
156
+ if (state.mode !== "background") {
157
+ throw new AutoresearchError("Only background runs can be stopped.");
158
+ }
159
+ state.updated_at = utcNow();
160
+ state.flags.stop_requested = true;
161
+ state.flags.background_active = false;
162
+ state.status = "stopping";
163
+ await atomicWriteJson(statePath, state);
164
+ return state;
165
+ }
166
+ export async function resumeBackgroundRun(repo, statePathValue) {
167
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
168
+ const state = readJsonFile(statePath);
169
+ if (state.mode !== "background") {
170
+ throw new AutoresearchError("Only background runs can be resumed.");
171
+ }
172
+ if (state.status === "completed") {
173
+ throw new AutoresearchError("Completed runs cannot be resumed.");
174
+ }
175
+ state.updated_at = utcNow();
176
+ state.flags.stop_requested = false;
177
+ state.flags.needs_human = false;
178
+ state.flags.background_active = true;
179
+ state.status = "running";
180
+ await atomicWriteJson(statePath, state);
181
+ return state;
182
+ }
183
+ export async function completeRun(repo, statePathValue) {
184
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
185
+ const state = readJsonFile(statePath);
186
+ if (state.status === "completed")
187
+ return state;
188
+ state.updated_at = utcNow();
189
+ state.status = "completed";
190
+ state.flags.background_active = false;
191
+ state.flags.needs_human = false;
192
+ state.flags.stop_requested = false;
193
+ state.flags.stop_ready = false;
194
+ await atomicWriteJson(statePath, state);
195
+ return state;
196
+ }
197
+ export async function buildSupervisorSnapshot(repo, _resultsPath, statePathValue) {
198
+ const statePath = resolvePath(repo, statePathValue, STATE_DEFAULT);
199
+ const state = readJsonFile(statePath);
200
+ void _resultsPath; // used for snapshot, results path tracked separately
201
+ let decision = "relaunch";
202
+ let reason = "ready_for_next_iteration";
203
+ if (state.flags.stop_requested) {
204
+ decision = "stop";
205
+ reason = "stop_requested";
206
+ }
207
+ else if (state.flags.needs_human) {
208
+ decision = "needs_human";
209
+ reason = "human_input_required";
210
+ }
211
+ else if (state.deadline_at && new Date() >= new Date(state.deadline_at)) {
212
+ decision = "stop";
213
+ reason = "duration_elapsed";
214
+ }
215
+ else if (state.iterations_cap != null && state.stats.total_iterations >= state.iterations_cap) {
216
+ decision = "stop";
217
+ reason = "iteration_cap_reached";
218
+ }
219
+ else if (state.status === "completed" || state.status === "stopped") {
220
+ decision = "stop";
221
+ reason = `state_${state.status}`;
222
+ }
223
+ return {
224
+ decision,
225
+ reason,
226
+ run_id: state.run_id,
227
+ status: state.status,
228
+ mode: state.mode,
229
+ goal: state.goal,
230
+ metric: state.metric,
231
+ stats: state.stats,
232
+ last_iteration: state.last_iteration,
233
+ results_rows: 0,
234
+ artifact_paths: state.artifact_paths,
235
+ flags: state.flags,
236
+ label_requirements: state.label_requirements,
237
+ };
238
+ }
239
+ //# sourceMappingURL=run-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-manager.js","sourceRoot":"","sources":["../src/run-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAwB,EACxB,gBAAoC,EACpC,cAAkC,EAClC,MAAiB,EACjB,UAAmB;IAEnB,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAEnE,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,iBAAiB,CAAC,GAAG,SAAS,gDAAgD,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,MAAM,GAAG,uHAAuH,CAAC;IACvI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAwB,EACxB,gBAAoC,EACpC,cAAkC,EAClC,QAAgB,EAChB,WAA+B,EAC/B,YAAoB,EACpB,WAAmB,EACnB,UAA8B,EAC9B,aAAqB,EACrB,MAA4B,EAC5B,IAAwB,EACxB,SAA6B;IAE7B,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAwB,CAAC;IAE7D,MAAM,gBAAgB,GAAG,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEnE,IAAI,QAAQ,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,GAAG;QACH,MAAM,CAAC,gBAAgB,CAAC;QACxB,QAAQ;QACR,WAAW,IAAI,EAAE;QACjB,YAAY;QACZ,WAAW;QACX,UAAU,IAAI,EAAE;QAChB,aAAa;QACb,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,IAAI,EAAE;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpB,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAa;QACzB,GAAG,KAAK;QACR,UAAU,EAAE,GAAG;QACf,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE;YACL,GAAG,KAAK,CAAC,KAAK;YACd,gBAAgB,EAAE,gBAAgB;SACnC;QACD,KAAK,EAAE;YACL,GAAG,KAAK,CAAC,KAAK;YACd,UAAU,EAAE,QAAQ,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;SAC5D;KACF,CAAC;IAEF,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,QAAQ,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,QAAQ,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;SAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnE,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,cAAc,GAAG;QACxB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ;QACR,YAAY,EAAE,WAAW;QACzB,cAAc,EAAE,aAAa;QAC7B,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;QACd,qBAAqB,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/C,qBAAqB,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QAC/C,mBAAmB,EAAE,WAAW;QAChC,mBAAmB,EAAE,WAAW;KACjC,CAAC;IAEF,MAAM,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,eAAe,IAAI,IAAI;QACxC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;QACjF,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,oBAAoB;QAC3C,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhE,OAAO;QACL,cAAc,EAAE,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAC1D,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,GAAG;QACf,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,oBAAoB;QAC3C,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,MAAM,EAAE,MAAM,CAAC,QAAQ;SACxB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,cAAc,EAAE,MAAM,CAAC,UAAU;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,eAAe,IAAI,SAAS;QAC9C,WAAW,EAAE,UAAU;QACvB,kBAAkB,EAAE;YAClB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;YACxD,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;SACzD;QACD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,cAAc,EAAE;YACd,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,SAAS;SACjB;QACD,KAAK,EAAE;YACL,gBAAgB,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,oBAAoB,EAAE,CAAC;YACvB,cAAc,EAAE,SAAS;SAC1B;QACD,KAAK,EAAE;YACL,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,MAAM,CAAC,IAAI,KAAK,YAAY;YAC/C,UAAU,EAAE,KAAK;SAClB;QACD,aAAa,EAAE,YAAY;QAC3B,mBAAmB,EAAE,kBAAkB;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAwB,EACxB,cAAkC;IAElC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAwB,CAAC;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,iBAAiB,CAAC,sCAAsC,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;IAC1B,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAwB,EACxB,cAAkC;IAElC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAwB,CAAC;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,iBAAiB,CAAC,sCAAsC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,iBAAiB,CAAC,mCAAmC,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAwB,EACxB,cAAkC;IAElC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAwB,CAAC;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/C,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;IAC3B,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IAC/B,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAwB,EACxB,YAAgC,EAChC,cAAkC;IAElC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAwB,CAAC;IAC7D,KAAK,YAAY,CAAC,CAAC,qDAAqD;IAExE,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,MAAM,GAAG,0BAA0B,CAAC;IAExC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/B,QAAQ,GAAG,MAAM,CAAC;QAClB,MAAM,GAAG,gBAAgB,CAAC;IAC5B,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,QAAQ,GAAG,aAAa,CAAC;QACzB,MAAM,GAAG,sBAAsB,CAAC;IAClC,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1E,QAAQ,GAAG,MAAM,CAAC;QAClB,MAAM,GAAG,kBAAkB,CAAC;IAC9B,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAChG,QAAQ,GAAG,MAAM,CAAC;QAClB,MAAM,GAAG,uBAAuB,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtE,QAAQ,GAAG,MAAM,CAAC;QAClB,MAAM,GAAG,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,QAAQ;QACR,MAAM;QACN,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function buildSubagentPoolPlan(params: {
2
+ goal: string;
3
+ scope?: string;
4
+ mode: string;
5
+ }): Record<string, unknown>;
6
+ export declare function buildContinuationPolicy(mode: string): Record<string, unknown>;
7
+ //# sourceMappingURL=subagent-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-pool.d.ts","sourceRoot":"","sources":["../src/subagent-pool.ts"],"names":[],"mappings":"AAoDA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiD1B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW7E"}
@@ -0,0 +1,101 @@
1
+ const ROLE_LIMIT = 6;
2
+ const RESOURCE_TIERS = {
3
+ lite: ["orchestrator", "scout", "verifier"],
4
+ balanced: ["orchestrator", "scout", "analyst", "verifier"],
5
+ full: ["orchestrator", "scout", "analyst", "verifier", "synthesizer"],
6
+ };
7
+ const BASE_ROLES = [
8
+ { id: "orchestrator", name: "Orchestrator", focus: "Keep the goal, scope, and mode aligned; route work and merge results." },
9
+ { id: "scout", name: "Scout", focus: "Locate relevant files, docs, commands, and prior context in the repo." },
10
+ { id: "analyst", name: "Analyst", focus: "Turn evidence into options, tradeoffs, and a clear next-step recommendation." },
11
+ { id: "verifier", name: "Verifier", focus: "Check claims with commands, tests, or log reads before the pool settles." },
12
+ { id: "synthesizer", name: "Synthesizer", focus: "Condense the best evidence into a stable summary the orchestrator can reuse." },
13
+ ];
14
+ const SPECIAL_ROLES = [
15
+ { id: "security_reviewer", name: "Security Reviewer", focus: "Look for safety, abuse, auth, and data-handling risks.", triggers: ["security", "vuln", "threat", "auth", "permission"] },
16
+ { id: "debugger", name: "Debugger", focus: "Reproduce failures, isolate causes, and narrow the repair path.", triggers: ["debug", "fix", "bug", "error", "fail", "failing"] },
17
+ { id: "release_guard", name: "Release Guard", focus: "Check ship-readiness, rollout risk, and user-visible regressions.", triggers: ["ship", "release", "deploy", "rollout"] },
18
+ { id: "research_tracker", name: "Research Tracker", focus: "Collect background, comparisons, and scenario coverage for the loop.", triggers: ["learn", "research", "predict", "scenario"] },
19
+ ];
20
+ function chooseSpecialRole(goal, scope, mode) {
21
+ const lowered = `${goal} ${scope ?? ""} ${mode}`.toLowerCase();
22
+ return SPECIAL_ROLES.find((r) => r.triggers?.some((t) => lowered.includes(t)));
23
+ }
24
+ function chooseResourceTier(goal, scope, mode, specialRole) {
25
+ if (mode === "background")
26
+ return { tier: "full", reason: "Background runs need full standing pool alignment." };
27
+ if (specialRole)
28
+ return { tier: "full", reason: `Goal needs ${specialRole.name} coverage.` };
29
+ const tokens = `${goal} ${scope ?? ""}`.split(/\s+/).length;
30
+ if (tokens <= 8 && !scope)
31
+ return { tier: "lite", reason: "Short narrow work can use a smaller pool." };
32
+ if (tokens <= 20)
33
+ return { tier: "balanced", reason: "Moderate work benefits from balanced coverage." };
34
+ return { tier: "full", reason: "Broader work benefits from full standing pool." };
35
+ }
36
+ function buildRoleHandoffPrompt(template, goal, scope, mode) {
37
+ return `You are the ${template.name}. Focus: ${template.focus} Goal: ${goal}. Scope: ${scope ?? "current repository"}. Mode: ${mode}. Do not mutate autoresearch state. Return evidence and one next-step recommendation.`;
38
+ }
39
+ export function buildSubagentPoolPlan(params) {
40
+ const { goal, scope, mode } = params;
41
+ const specialRole = chooseSpecialRole(goal, scope, mode);
42
+ const { tier, reason } = chooseResourceTier(goal, scope, mode, specialRole);
43
+ const tierRoles = RESOURCE_TIERS[tier] ?? RESOURCE_TIERS.lite;
44
+ const allRoles = [...BASE_ROLES];
45
+ if (specialRole)
46
+ allRoles.push(specialRole);
47
+ const usedRoles = allRoles.slice(0, ROLE_LIMIT);
48
+ return {
49
+ kind: "autoresearch_subagent_pool",
50
+ version: 1,
51
+ pool_key: `autoresearch-pool-${Date.now().toString(36)}`,
52
+ role_limit: ROLE_LIMIT,
53
+ standing_pool: true,
54
+ reuse_across_iterations: true,
55
+ orchestrator_role_id: "orchestrator",
56
+ state_owner: "orchestrator",
57
+ fallback_mode: "serial",
58
+ resource_tier: tier,
59
+ recommended_active_role_ids: tierRoles,
60
+ activation: {
61
+ during_setup: tier !== "lite",
62
+ during_iterations: true,
63
+ during_resume: true,
64
+ reason,
65
+ },
66
+ handoff_contract: [
67
+ "Only the orchestrator records iterations or mutates state.",
68
+ "Non-orchestrator roles return evidence and concise recommendations.",
69
+ "Keep the pool stable across iterations.",
70
+ ],
71
+ reanchor_checklist: [
72
+ "Restate the goal, scope, metric, and verify command before the next handoff.",
73
+ "Summarize the latest kept or discarded iteration before asking the pool for more work.",
74
+ "Reuse current role ownership unless drift or repeated discards force a reset.",
75
+ ],
76
+ goal,
77
+ scope: scope ?? null,
78
+ mode,
79
+ roles: usedRoles.map((r) => ({
80
+ id: r.id,
81
+ name: r.name,
82
+ focus: r.focus,
83
+ active_by_default: tierRoles.includes(r.id),
84
+ handoff_prompt: buildRoleHandoffPrompt(r, goal, scope, mode),
85
+ })),
86
+ specialization: specialRole?.id ?? null,
87
+ };
88
+ }
89
+ export function buildContinuationPolicy(mode) {
90
+ return {
91
+ approval_boundary: "pre_launch",
92
+ post_launch_default: "continue",
93
+ completion_requires_review: mode === "foreground",
94
+ stop_conditions: [
95
+ "user_stop",
96
+ "configured_stop_condition",
97
+ "needs_human",
98
+ ],
99
+ };
100
+ }
101
+ //# sourceMappingURL=subagent-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-pool.js","sourceRoot":"","sources":["../src/subagent-pool.ts"],"names":[],"mappings":"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"}