opencode-autoresearch 3.6.0 → 3.8.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 (66) hide show
  1. package/.opencode-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +166 -0
  3. package/INSTALL.md +2 -2
  4. package/README.md +83 -39
  5. package/VERSION +1 -1
  6. package/dist/badge.d.ts +9 -0
  7. package/dist/badge.d.ts.map +1 -0
  8. package/dist/badge.js +86 -0
  9. package/dist/badge.js.map +1 -0
  10. package/dist/cli.js +578 -26
  11. package/dist/cli.js.map +1 -1
  12. package/dist/constants.d.ts +7 -1
  13. package/dist/constants.d.ts.map +1 -1
  14. package/dist/constants.js +7 -1
  15. package/dist/constants.js.map +1 -1
  16. package/dist/goal-init.d.ts +30 -0
  17. package/dist/goal-init.d.ts.map +1 -0
  18. package/dist/goal-init.js +109 -0
  19. package/dist/goal-init.js.map +1 -0
  20. package/dist/helpers.d.ts +13 -2
  21. package/dist/helpers.d.ts.map +1 -1
  22. package/dist/helpers.js +152 -9
  23. package/dist/helpers.js.map +1 -1
  24. package/dist/index.d.ts +12 -4
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +7 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/memory-manager.d.ts +24 -0
  29. package/dist/memory-manager.d.ts.map +1 -0
  30. package/dist/memory-manager.js +336 -0
  31. package/dist/memory-manager.js.map +1 -0
  32. package/dist/run-manager.d.ts +27 -2
  33. package/dist/run-manager.d.ts.map +1 -1
  34. package/dist/run-manager.js +210 -15
  35. package/dist/run-manager.js.map +1 -1
  36. package/dist/score-parser.d.ts +56 -0
  37. package/dist/score-parser.d.ts.map +1 -0
  38. package/dist/score-parser.js +109 -0
  39. package/dist/score-parser.js.map +1 -0
  40. package/dist/subagent-pool.d.ts +11 -0
  41. package/dist/subagent-pool.d.ts.map +1 -1
  42. package/dist/subagent-pool.js +95 -0
  43. package/dist/subagent-pool.js.map +1 -1
  44. package/dist/task-schema.d.ts +62 -0
  45. package/dist/task-schema.d.ts.map +1 -0
  46. package/dist/task-schema.js +95 -0
  47. package/dist/task-schema.js.map +1 -0
  48. package/dist/translators/cli.d.ts +5 -0
  49. package/dist/translators/cli.d.ts.map +1 -0
  50. package/dist/translators/cli.js +85 -0
  51. package/dist/translators/cli.js.map +1 -0
  52. package/dist/translators/hermes.d.ts +28 -0
  53. package/dist/translators/hermes.d.ts.map +1 -0
  54. package/dist/translators/hermes.js +102 -0
  55. package/dist/translators/hermes.js.map +1 -0
  56. package/dist/types.d.ts +113 -0
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/verifier-parser.d.ts +19 -0
  59. package/dist/verifier-parser.d.ts.map +1 -0
  60. package/dist/verifier-parser.js +161 -0
  61. package/dist/verifier-parser.js.map +1 -0
  62. package/docs/ARCHITECTURE.md +3 -0
  63. package/docs/RELEASE.md +15 -36
  64. package/docs/index.html +5 -0
  65. package/hooks/verify-package.sh +5 -1
  66. package/package.json +6 -6
package/dist/types.d.ts CHANGED
@@ -12,9 +12,12 @@ export interface RunConfig {
12
12
  direction: string;
13
13
  verify: string;
14
14
  mode: string;
15
+ operating_mode?: string;
15
16
  scope?: string;
16
17
  guard?: string;
18
+ scorer?: string;
17
19
  iterations?: number;
20
+ max_no_progress?: number;
18
21
  duration?: string;
19
22
  memory_path?: string;
20
23
  required_keep_labels?: string[];
@@ -22,6 +25,12 @@ export interface RunConfig {
22
25
  run_tag?: string;
23
26
  stop_condition?: string;
24
27
  baseline?: string;
28
+ num_drafts?: number;
29
+ branch_selection_policy?: "best" | "roulette" | "diverse";
30
+ outcome_metric?: string;
31
+ outcome_direction?: string;
32
+ instrument_metric?: string;
33
+ instrument_direction?: string;
25
34
  }
26
35
  export type WizardConfig = Partial<Omit<RunConfig, 'baseline'>> & {
27
36
  rollback_strategy?: string;
@@ -50,7 +59,9 @@ export interface RunFlags {
50
59
  export interface LastIteration {
51
60
  iteration: number;
52
61
  decision: string;
62
+ scorer_status?: string;
53
63
  metric_value?: string;
64
+ instrument_value?: string;
54
65
  change_summary: string;
55
66
  labels: string[];
56
67
  timestamp: string;
@@ -58,6 +69,20 @@ export interface LastIteration {
58
69
  stop_labels_satisfied: boolean;
59
70
  missing_keep_labels: string[];
60
71
  missing_stop_labels: string[];
72
+ id?: string;
73
+ parent_id?: string;
74
+ branch?: string;
75
+ stage?: string;
76
+ agent?: string;
77
+ score_components?: Record<string, number>;
78
+ }
79
+ export type OperatingMode = "converge" | "continuous" | "supervised";
80
+ export interface ExperimentLineage {
81
+ id: string;
82
+ parent_id: string | null;
83
+ branch: string;
84
+ stage: string;
85
+ agent: string;
61
86
  }
62
87
  export interface RunState {
63
88
  schema_version: number;
@@ -66,11 +91,15 @@ export interface RunState {
66
91
  updated_at: string;
67
92
  status: string;
68
93
  mode: string;
94
+ operating_mode: OperatingMode;
69
95
  goal: string;
70
96
  scope: string;
71
97
  metric: Metric;
98
+ instrument_metric?: Metric;
72
99
  verify: string;
73
100
  guard?: string;
101
+ scorer?: string;
102
+ max_no_progress?: number;
74
103
  iterations_cap?: number;
75
104
  duration?: string;
76
105
  duration_seconds?: number;
@@ -84,6 +113,8 @@ export interface RunState {
84
113
  stats: RunStats;
85
114
  flags: RunFlags;
86
115
  last_iteration?: LastIteration;
116
+ draft_pool?: DraftPoolConfig;
117
+ lineage?: ExperimentLineage;
87
118
  }
88
119
  export interface SupervisorSnapshot {
89
120
  decision: string;
@@ -91,8 +122,10 @@ export interface SupervisorSnapshot {
91
122
  run_id: string;
92
123
  status: string;
93
124
  mode: string;
125
+ operating_mode: OperatingMode;
94
126
  goal: string;
95
127
  metric: Metric;
128
+ instrument_metric?: Metric;
96
129
  stats: RunStats;
97
130
  last_iteration?: LastIteration;
98
131
  results_rows: number;
@@ -102,5 +135,85 @@ export interface SupervisorSnapshot {
102
135
  subagent_pool?: Record<string, unknown>;
103
136
  continuation_policy?: Record<string, unknown>;
104
137
  subagent_guidance?: Record<string, unknown>;
138
+ draft_pool?: DraftPoolConfig;
139
+ }
140
+ export type BranchSelectionPolicy = "best" | "roulette" | "diverse";
141
+ export interface BranchSelectionPolicyInfo {
142
+ id: BranchSelectionPolicy;
143
+ label: string;
144
+ description: string;
145
+ recommended_for: string[];
146
+ }
147
+ export interface DraftBranch {
148
+ branch_id: string;
149
+ iteration: number;
150
+ parent_iteration: number;
151
+ metric_value?: string;
152
+ status: "pending" | "running" | "completed" | "discarded";
153
+ policy_override?: BranchSelectionPolicy;
154
+ }
155
+ export interface MemoryProvenance {
156
+ run_id: string;
157
+ iteration: number;
158
+ goal: string;
159
+ metric_name: string;
160
+ metric_value: string;
161
+ direction: string;
162
+ timestamp: string;
163
+ labels: string[];
164
+ }
165
+ export interface MemoryItem {
166
+ id: string;
167
+ pattern: string;
168
+ description: string;
169
+ provenance: MemoryProvenance;
170
+ verification_count: number;
171
+ first_observed: string;
172
+ consolidated_at: string;
173
+ status: "active" | "expired";
174
+ expired_at?: string;
175
+ }
176
+ export interface PendingMemoryItem {
177
+ id: string;
178
+ pattern: string;
179
+ description: string;
180
+ provenance: MemoryProvenance;
181
+ verification_count: number;
182
+ first_observed: string;
183
+ last_verified: string;
184
+ }
185
+ export interface MemoryConsolidationState {
186
+ pending_items: PendingMemoryItem[];
187
+ consolidated_items: MemoryItem[];
188
+ consolidation_threshold: number;
189
+ last_consolidated?: string;
190
+ }
191
+ export interface MemoryAuditLogEntry {
192
+ timestamp: string;
193
+ action: "added" | "expired" | "promoted";
194
+ item_id: string;
195
+ pattern: string;
196
+ provenance: MemoryProvenance;
197
+ verification_count: number;
198
+ reason?: string;
199
+ }
200
+ export interface DraftPoolConfig {
201
+ kind: "autoresearch_draft_pool";
202
+ version: number;
203
+ num_drafts: number;
204
+ branch_selection_policy: BranchSelectionPolicy;
205
+ active_drafts: DraftBranch[];
206
+ best_branch_id?: string;
207
+ available_policies: BranchSelectionPolicyInfo[];
208
+ }
209
+ export interface GoalDoc {
210
+ goal: string;
211
+ metric: string;
212
+ direction: string;
213
+ verify: string;
214
+ guard?: string;
215
+ constraints?: string;
216
+ file_map?: string;
217
+ stop_conditions?: string;
105
218
  }
106
219
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export type VerifierDecision = "keep" | "discard" | "needs_human";
2
+ export interface VerifierOutput {
3
+ is_bug: boolean;
4
+ summary: string;
5
+ metric: string;
6
+ confidence: number;
7
+ evidence: string[];
8
+ decision?: VerifierDecision;
9
+ reason?: string;
10
+ }
11
+ export interface ValidationResult {
12
+ valid: boolean;
13
+ output?: VerifierOutput;
14
+ blocker_reason?: string;
15
+ }
16
+ export declare function parseVerifierOutput(output: string): ValidationResult;
17
+ export declare function determineDecision(output: VerifierOutput): VerifierDecision;
18
+ export declare function isSafeToApply(result: ValidationResult): boolean;
19
+ //# sourceMappingURL=verifier-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier-parser.d.ts","sourceRoot":"","sources":["../src/verifier-parser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAoKpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAU1E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,161 @@
1
+ const VALID_CONFIDENCE_VALUES = [0, 0.25, 0.5, 0.75, 1.0];
2
+ export function parseVerifierOutput(output) {
3
+ if (typeof output !== "string") {
4
+ return {
5
+ valid: false,
6
+ blocker_reason: "Verifier output must be a non-empty string",
7
+ };
8
+ }
9
+ const trimmedOutput = output.trim();
10
+ if (!trimmedOutput) {
11
+ return {
12
+ valid: false,
13
+ blocker_reason: "Verifier output must be a non-empty string",
14
+ };
15
+ }
16
+ let parsed;
17
+ try {
18
+ parsed = JSON.parse(trimmedOutput);
19
+ }
20
+ catch (error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ return {
23
+ valid: false,
24
+ blocker_reason: `Invalid JSON in verifier output: ${message}`,
25
+ };
26
+ }
27
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
28
+ return {
29
+ valid: false,
30
+ blocker_reason: "Verifier output must be a JSON object",
31
+ };
32
+ }
33
+ const obj = parsed;
34
+ if (!("is_bug" in obj)) {
35
+ return {
36
+ valid: false,
37
+ blocker_reason: "Verifier output missing required field: is_bug",
38
+ };
39
+ }
40
+ if (typeof obj.is_bug !== "boolean") {
41
+ return {
42
+ valid: false,
43
+ blocker_reason: "Verifier output field 'is_bug' must be a boolean",
44
+ };
45
+ }
46
+ if (!("summary" in obj)) {
47
+ return {
48
+ valid: false,
49
+ blocker_reason: "Verifier output missing required field: summary",
50
+ };
51
+ }
52
+ if (typeof obj.summary !== "string") {
53
+ return {
54
+ valid: false,
55
+ blocker_reason: "Verifier output field 'summary' must be a string",
56
+ };
57
+ }
58
+ if (!("metric" in obj)) {
59
+ return {
60
+ valid: false,
61
+ blocker_reason: "Verifier output missing required field: metric",
62
+ };
63
+ }
64
+ if (typeof obj.metric !== "string") {
65
+ return {
66
+ valid: false,
67
+ blocker_reason: "Verifier output field 'metric' must be a string",
68
+ };
69
+ }
70
+ if (!("confidence" in obj)) {
71
+ return {
72
+ valid: false,
73
+ blocker_reason: "Verifier output missing required field: confidence",
74
+ };
75
+ }
76
+ if (typeof obj.confidence !== "number" || !isFinite(obj.confidence)) {
77
+ return {
78
+ valid: false,
79
+ blocker_reason: "Verifier output field 'confidence' must be a finite number",
80
+ };
81
+ }
82
+ if (!VALID_CONFIDENCE_VALUES.includes(obj.confidence)) {
83
+ return {
84
+ valid: false,
85
+ blocker_reason: `Verifier output field 'confidence' must be one of: ${VALID_CONFIDENCE_VALUES.join(", ")}`,
86
+ };
87
+ }
88
+ if (!("evidence" in obj)) {
89
+ return {
90
+ valid: false,
91
+ blocker_reason: "Verifier output missing required field: evidence",
92
+ };
93
+ }
94
+ if (!Array.isArray(obj.evidence)) {
95
+ return {
96
+ valid: false,
97
+ blocker_reason: "Verifier output field 'evidence' must be an array",
98
+ };
99
+ }
100
+ const evidence = obj.evidence;
101
+ for (let i = 0; i < evidence.length; i++) {
102
+ if (typeof evidence[i] !== "string") {
103
+ return {
104
+ valid: false,
105
+ blocker_reason: `Verifier output field 'evidence[${i}]' must be a string`,
106
+ };
107
+ }
108
+ }
109
+ let decision;
110
+ if ("decision" in obj && obj.decision !== undefined) {
111
+ if (typeof obj.decision !== "string") {
112
+ return {
113
+ valid: false,
114
+ blocker_reason: "Verifier output field 'decision' must be a string",
115
+ };
116
+ }
117
+ const normalizedDecision = obj.decision.toLowerCase().trim();
118
+ if (!["keep", "discard", "needs_human"].includes(normalizedDecision)) {
119
+ return {
120
+ valid: false,
121
+ blocker_reason: "Verifier output field 'decision' must be one of: keep, discard, needs_human",
122
+ };
123
+ }
124
+ decision = normalizedDecision;
125
+ }
126
+ let reason;
127
+ if ("reason" in obj && obj.reason !== undefined) {
128
+ if (typeof obj.reason !== "string") {
129
+ return {
130
+ valid: false,
131
+ blocker_reason: "Verifier output field 'reason' must be a string",
132
+ };
133
+ }
134
+ reason = obj.reason;
135
+ }
136
+ return {
137
+ valid: true,
138
+ output: {
139
+ is_bug: obj.is_bug,
140
+ summary: obj.summary,
141
+ metric: obj.metric,
142
+ confidence: obj.confidence,
143
+ evidence: obj.evidence,
144
+ decision,
145
+ reason,
146
+ },
147
+ };
148
+ }
149
+ export function determineDecision(output) {
150
+ if (output.decision) {
151
+ return output.decision;
152
+ }
153
+ if (output.is_bug) {
154
+ return "discard";
155
+ }
156
+ return "keep";
157
+ }
158
+ export function isSafeToApply(result) {
159
+ return result.valid && result.output !== undefined;
160
+ }
161
+ //# sourceMappingURL=verifier-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier-parser.js","sourceRoot":"","sources":["../src/verifier-parser.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,7 @@ flowchart TD
109
109
  | Artifact | Purpose |
110
110
  | --- | --- |
111
111
  | `.autoresearch/state.json` | Current run checkpoint |
112
+ | `.autoresearch/goal.md` | First-class goal document (goal, metric, verify, guard, constraints, file\_map, stop\_conditions) |
112
113
  | `autoresearch-results.tsv` | Iteration log |
113
114
  | `.autoresearch/launch.json` | Background launch request |
114
115
  | `autoresearch-report.md` | End-of-run report |
@@ -151,8 +152,10 @@ flowchart TD
151
152
  | Command | Purpose |
152
153
  | --- | --- |
153
154
  | `autoresearch init` | Initialize a run |
155
+ | `autoresearch goal init` | Create a `GOAL.md` goal definition file |
154
156
  | `autoresearch wizard` | Generate setup summary |
155
157
  | `autoresearch status` | Print run status |
158
+ | `autoresearch goal` | Show the goal document |
156
159
  | `autoresearch launch` | Launch background run |
157
160
  | `autoresearch stop` | Request stop |
158
161
  | `autoresearch resume` | Resume background run |
package/docs/RELEASE.md CHANGED
@@ -1,25 +1,16 @@
1
1
  # Release Process
2
2
 
3
- This package uses npm publish for releases. GitHub Actions automates the full release pipeline.
3
+ This package uses semantic-release to publish GitHub Releases and npm packages. Pull requests validate release readiness; merges to `main` publish automatically.
4
4
 
5
5
  ## Version Alignment
6
6
 
7
- `VERSION`, `package.json`, `package-lock.json`, `src/constants.ts`, and `.opencode-plugin/plugin.json` must all stay aligned. The `VERSION` file is the canonical source of truth.
7
+ Semantic-release publishes from the checked-out merge commit but does not push release commits back to protected `main`. Keep version surfaces aligned in release-prep PRs when pinned install docs or runtime version constants need to change.
8
8
 
9
9
  ## Release Steps
10
10
 
11
- ### 1. Update version
11
+ ### 1. Prepare a conventional commit
12
12
 
13
- ```bash
14
- # Update VERSION file
15
- echo "3.3.3" > VERSION
16
-
17
- # Sync to package.json
18
- npm version 3.3.3 --no-git-tag-version
19
-
20
- # Sync to src/constants.ts
21
- # Update the VERSION export manually or use sed
22
- ```
13
+ Use a semantic-release compatible commit message such as `fix: restore release build` or `feat: add workflow mode`. Do not manually tag releases for the normal path.
23
14
 
24
15
  ### 2. Build and verify
25
16
 
@@ -31,40 +22,28 @@ npm run verify:pack
31
22
  npm test
32
23
  ```
33
24
 
34
- ### 3. Update CHANGELOG
35
-
36
- Add a new section for the version in `CHANGELOG.md`:
37
-
38
- ```markdown
39
- ## [3.3.3] - YYYY-MM-DD
40
-
41
- ### Added
42
- - Root install handoff
43
- - Public install verification notes
44
-
45
- ### Changed
46
- - Installation docs
47
- - Package verification allowlist
48
- ```
49
-
50
- ### 4. Commit and tag
25
+ ### 3. Open and merge a pull request
51
26
 
52
27
  ```bash
53
28
  git add -A
54
- git commit -m "Release v3.3.3"
55
- git tag v3.3.3
56
- git push origin main v3.3.3
29
+ git commit -m "fix: restore release build"
30
+ git push -u origin <branch>
31
+ gh pr create --fill
57
32
  ```
58
33
 
59
- ### 5. Automated release
34
+ After CI passes, merge the pull request into `main`. The merge to `main` triggers `release.yml`.
35
+
36
+ ### 4. Automated release
60
37
 
61
38
  GitHub Actions will:
62
39
 
63
40
  1. Build and type-check
64
41
  2. Verify package contents
65
42
  3. Run tests
66
- 4. Create a GitHub Release with the CHANGELOG section
67
- 5. Publish to npm with provenance through trusted publishing
43
+ 4. Run semantic-release on `main`
44
+ 5. Sync version files in the release workspace for packaging
45
+ 6. Create a GitHub Release
46
+ 7. Publish npm `latest` with provenance through trusted publishing
68
47
 
69
48
  ## Manual publish (fallback)
70
49
 
package/docs/index.html CHANGED
@@ -243,6 +243,11 @@ docs/
243
243
  <tr><td><code>autoresearch-memory.md</code></td><td>Reusable memory</td></tr>
244
244
  </table>
245
245
  </article>
246
+ <article class="panel">
247
+ <h2>Examples</h2>
248
+ <p>Reproducible run examples with complete state, results, and report artifacts.</p>
249
+ <p><a href="examples/README.md">View Example Gallery →</a></p>
250
+ </article>
246
251
  </section>
247
252
  </main>
248
253
  </body>
@@ -16,7 +16,7 @@ const packResult = JSON.parse(raw);
16
16
  const entries = Array.isArray(packResult) ? packResult : [packResult];
17
17
  const files = entries.flatMap((entry) => Array.isArray(entry.files) ? entry.files : []);
18
18
 
19
- const allowedRoots = new Set(["dist", "hooks", "commands", "skills", ".opencode-plugin"]);
19
+ const allowedRoots = new Set(["dist", "hooks", "commands", "skills", ".opencode-plugin", ".vscode"]);
20
20
  const allowedFiles = new Set([
21
21
  "package.json",
22
22
  "README.md",
@@ -24,6 +24,9 @@ const allowedFiles = new Set([
24
24
  "AGENTS.md",
25
25
  "VERSION",
26
26
  "INSTALL.md",
27
+ "CHANGELOG.md",
28
+ ".editorconfig",
29
+ ".gitattributes",
27
30
  ".opencode/INSTALL.md",
28
31
  "plugins/autoresearch.ts",
29
32
  "docs/ARCHITECTURE.md",
@@ -45,6 +48,7 @@ const requiredFiles = [
45
48
  "hooks/init.sh",
46
49
  "skills/autoresearch/SKILL.md",
47
50
  "commands/autoresearch.md",
51
+ "CHANGELOG.md",
48
52
  ];
49
53
 
50
54
  const normalizePath = (filePath) => filePath.replace(/^package\//, "");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-autoresearch",
3
- "version": "3.6.0",
3
+ "version": "3.8.0",
4
4
  "description": "Autonomous recursive self-improvement engine for OpenCode and Hermes Agent. Subagent-first iteration loop with mechanical verification.",
5
5
  "author": {
6
6
  "name": "Maleick",
@@ -58,13 +58,14 @@
58
58
  "AGENTS.md",
59
59
  "VERSION",
60
60
  "README.md",
61
+ "CHANGELOG.md",
61
62
  "LICENSE"
62
63
  ],
63
64
  "scripts": {
64
65
  "build": "tsc",
65
66
  "typecheck": "tsc --noEmit",
66
67
  "audit": "npm audit --audit-level=moderate",
67
- "test": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.config.json",
68
+ "test": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.config.json --runInBand",
68
69
  "verify:pack": "bash hooks/verify-package.sh",
69
70
  "prepack": "node scripts/sync-version.mjs && tsc"
70
71
  },
@@ -72,18 +73,17 @@
72
73
  "@semantic-release/changelog": "^6.0.3",
73
74
  "@semantic-release/commit-analyzer": "^13.0.1",
74
75
  "@semantic-release/exec": "^7.1.0",
75
- "@semantic-release/git": "^10.0.1",
76
76
  "@semantic-release/github": "^12.0.6",
77
77
  "@semantic-release/npm": "^13.1.5",
78
78
  "@semantic-release/release-notes-generator": "^14.1.0",
79
79
  "@types/jest": "^30.0.0",
80
- "@types/node": "^20.0.0",
80
+ "@types/node": "^25.6.2",
81
81
  "jest": "^30.3.0",
82
82
  "semantic-release": "^25.0.3",
83
83
  "ts-jest": "^29.4.9",
84
- "typescript": "^5.9.3"
84
+ "typescript": "^6.0.3"
85
85
  },
86
86
  "engines": {
87
- "node": ">=18.0.0"
87
+ "node": ">=22"
88
88
  }
89
89
  }