@neriros/ralphy 3.8.11 → 3.10.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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@neriros/ralphy.svg)](https://www.npmjs.com/package/@neriros/ralphy)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/@neriros/ralphy.svg)](https://www.npmjs.com/package/@neriros/ralphy)
5
- [![license](https://img.shields.io/npm/l/@neriros/ralphy.svg)](https://github.com/NeriRos/ralphy/blob/main/LICENSE)
5
+ [![license](https://img.shields.io/npm/l/@neriros/ralphy.svg)](https://github.com/rosneri/ralphy/blob/main/LICENSE)
6
6
  [![Bun](https://img.shields.io/badge/runtime-Bun-fbf0df.svg)](https://bun.sh)
7
7
 
8
8
  An iterative AI task execution framework. Ralphy runs Claude or Codex in a checklist-driven loop with state on disk, cost safeguards, and a long-lived **agent** that polls Linear, opens PRs, and iterates with reviewers.
package/dist/mcp/index.js CHANGED
@@ -6657,8 +6657,8 @@ function getStorage() {
6657
6657
  function runWithContext(ctx, fn) {
6658
6658
  return contextStore.run(ctx, fn);
6659
6659
  }
6660
- function createDefaultContext() {
6661
- return { storage: createFileSystemProvider() };
6660
+ function createDefaultContext(overrides = {}) {
6661
+ return { storage: createFileSystemProvider(), ...overrides };
6662
6662
  }
6663
6663
 
6664
6664
  // node_modules/.bun/zod@4.3.6/node_modules/zod/v3/helpers/util.js
@@ -24014,7 +24014,8 @@ var OWNERSHIP = {
24014
24014
  confirmation: ["confirmation"],
24015
24015
  "review-followup": ["review"],
24016
24016
  "ci-fix": ["ci"],
24017
- implement: ["pr"]
24017
+ implement: ["pr"],
24018
+ coordinator: ["flow"]
24018
24019
  };
24019
24020
  var ALL_OWNED_SLOTS = new Set(Object.values(OWNERSHIP).flatMap((slots) => [...slots]));
24020
24021
 
@@ -24066,6 +24067,7 @@ var StateSchema = exports_external.object({
24066
24067
  model: exports_external.string().default("opus"),
24067
24068
  manualTest: exports_external.boolean().default(false),
24068
24069
  createPr: exports_external.boolean().default(false),
24070
+ prDraft: exports_external.boolean().default(false),
24069
24071
  validateOnComplete: exports_external.boolean().default(false),
24070
24072
  usage: UsageSchema.default({}),
24071
24073
  history: exports_external.array(HistoryEntrySchema).default([]),
@@ -24097,12 +24099,14 @@ var StateSchema = exports_external.object({
24097
24099
  designPdf: exports_external.object({
24098
24100
  attachmentId: exports_external.string().nullable().default(null),
24099
24101
  sha256: exports_external.string().nullable().default(null)
24100
- }).default({ attachmentId: null, sha256: null })
24102
+ }).default({ attachmentId: null, sha256: null }),
24103
+ legacyProposalPurged: exports_external.boolean().default(false)
24101
24104
  }).default({
24102
24105
  proposal: { attachmentId: null, sha256: null },
24103
24106
  design: { attachmentId: null, sha256: null },
24104
24107
  proposalPdf: { attachmentId: null, sha256: null },
24105
- designPdf: { attachmentId: null, sha256: null }
24108
+ designPdf: { attachmentId: null, sha256: null },
24109
+ legacyProposalPurged: false
24106
24110
  }),
24107
24111
  confirmation: exports_external.object({
24108
24112
  askedAt: exports_external.string().nullable().default(null),
@@ -24183,6 +24187,7 @@ function buildInitialState(options) {
24183
24187
  model: options.model ?? "opus",
24184
24188
  manualTest: options.manualTest ?? false,
24185
24189
  createPr: options.createPr ?? false,
24190
+ prDraft: options.prDraft ?? false,
24186
24191
  createdAt: now,
24187
24192
  lastModified: now,
24188
24193
  metadata: { branch }
@@ -25120,8 +25125,6 @@ class OpenSpecChangeStore {
25120
25125
  } catch {}
25121
25126
  }
25122
25127
  const changesDir = join4("openspec", "changes");
25123
- if (!await Bun.file(changesDir).exists())
25124
- return [];
25125
25128
  try {
25126
25129
  const entries = await readdir(changesDir, { withFileTypes: true });
25127
25130
  return entries.filter((entry) => entry.isDirectory() && entry.name !== "archive").map((entry) => entry.name);