@neriros/ralphy 3.10.7 → 3.10.8

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.
@@ -18928,8 +18928,8 @@ import { readFileSync } from "fs";
18928
18928
  import { resolve } from "path";
18929
18929
  function getVersion() {
18930
18930
  try {
18931
- if ("3.10.7")
18932
- return "3.10.7";
18931
+ if ("3.10.8")
18932
+ return "3.10.8";
18933
18933
  } catch {}
18934
18934
  const dirsToTry = [];
18935
18935
  try {
@@ -80519,7 +80519,7 @@ function foldLegacyAssignee(v) {
80519
80519
  }
80520
80520
  return rest2;
80521
80521
  }
80522
- var CURRENT_WORKFLOW_VERSION = 3, MarkerSchema, SET_INDICATOR_KEYS, GetIndicatorSchema, SetIndicatorSchema, IndicatorsSchema, ProjectSchema, CommandsSchema, DEFAULT_META_ONLY_FILES, BoundariesSchema, WorkflowConfigSchema;
80522
+ var CURRENT_WORKFLOW_VERSION = 4, MarkerSchema, SET_INDICATOR_KEYS, GetIndicatorSchema, SetIndicatorSchema, IndicatorsSchema, ProjectSchema, CommandsSchema, DEFAULT_META_ONLY_FILES, BoundariesSchema, WorkflowConfigSchema;
80523
80523
  var init_schema = __esm(() => {
80524
80524
  init_zod();
80525
80525
  MarkerSchema = exports_external.discriminatedUnion("type", [
@@ -80533,7 +80533,13 @@ var init_schema = __esm(() => {
80533
80533
  exports_external.object({ type: exports_external.literal("project"), value: exports_external.string().min(1) }).strict(),
80534
80534
  exports_external.object({ type: exports_external.literal("comment"), value: exports_external.string().min(1) }).strict()
80535
80535
  ]);
80536
- SET_INDICATOR_KEYS = ["setInProgress", "setDone", "setError", "clearApproved"];
80536
+ SET_INDICATOR_KEYS = [
80537
+ "setInProgress",
80538
+ "setDone",
80539
+ "setPrReady",
80540
+ "setError",
80541
+ "clearApproved"
80542
+ ];
80537
80543
  GetIndicatorSchema = exports_external.object({
80538
80544
  filter: exports_external.array(MarkerSchema).default([])
80539
80545
  });
@@ -80547,6 +80553,7 @@ var init_schema = __esm(() => {
80547
80553
  getAutoApprove: GetIndicatorSchema.optional(),
80548
80554
  setInProgress: SetIndicatorSchema.optional(),
80549
80555
  setDone: SetIndicatorSchema.optional(),
80556
+ setPrReady: SetIndicatorSchema.optional(),
80550
80557
  setError: SetIndicatorSchema.optional(),
80551
80558
  setAwaitingConfirmation: SetIndicatorSchema.optional(),
80552
80559
  clearApproved: SetIndicatorSchema.optional(),
@@ -80851,6 +80858,9 @@ linear:
80851
80858
  # setDone: # status/label to set when the PR is opened
80852
80859
  # type: status
80853
80860
  # value: In Review
80861
+ # setPrReady: # additive: marker set when the PR is ready for human review
80862
+ # type: status # (fires unless the PR is auto-merged immediately; does not replace setDone)
80863
+ # value: In Review
80854
80864
  # setError: # label applied when a task is quarantined
80855
80865
  # type: label
80856
80866
  # value: "ralph:error"
@@ -83953,6 +83963,12 @@ var init_SetupWizard = __esm(async () => {
83953
83963
  description: "Set when the task finishes and its pull request is opened.",
83954
83964
  slots: ["setDone"]
83955
83965
  },
83966
+ {
83967
+ key: "prReady",
83968
+ label: "PR ready",
83969
+ description: "Optional, additive: set when the PR is marked ready for human review (non-draft), layered on top of Done. Skipped only on the immediate non-draft auto-merge path.",
83970
+ slots: ["setPrReady"]
83971
+ },
83956
83972
  {
83957
83973
  key: "error",
83958
83974
  label: "Error",
@@ -84041,6 +84057,11 @@ var init_migrations = __esm(() => {
84041
84057
  version: 3,
84042
84058
  description: "The per-workflow `linear.assignee` setting is replaced by a global " + "`linear.filter` expression (e.g. `assignee = me`) applied to every " + "ticket fetch. Existing `assignee` values are folded in automatically; " + "note that an empty filter now defaults to `assignee = me` (it previously " + "meant unassigned-only).",
84043
84059
  fields: ["linear.filter"]
84060
+ },
84061
+ {
84062
+ version: 4,
84063
+ description: "A new additive `setPrReady` Linear indicator marks a ticket the moment its " + "PR is human-mergeable (ready, non-draft), layered on top of `setDone`. " + "Re-run the indicator builder to add it, or keep your current indicators.",
84064
+ fields: ["linear.indicators"]
84044
84065
  }
84045
84066
  ];
84046
84067
  LATEST_MIGRATION_VERSION = MIGRATIONS.reduce((max2, migration) => Math.max(max2, migration.version), 0);
@@ -101289,6 +101310,8 @@ async function runDebug(opts) {
101289
101310
  out(" \u26A0 setError applied \u2014 issue is quarantined in Linear");
101290
101311
  if (logHas("setDone applied"))
101291
101312
  out(" \u2713 setDone applied \u2014 issue marked done in Linear");
101313
+ if (logHas("setPrReady applied"))
101314
+ out(" \u2713 setPrReady applied \u2014 PR is ready for human review");
101292
101315
  if (logHas("clearConflicted applied"))
101293
101316
  out(" \u2713 clearConflicted applied");
101294
101317
  if (logHas("setConflicted applied"))
@@ -101738,6 +101761,7 @@ var init_cli2 = __esm(() => {
101738
101761
  "getAutoMerge",
101739
101762
  "setInProgress",
101740
101763
  "setDone",
101764
+ "setPrReady",
101741
101765
  "setError"
101742
101766
  ]);
101743
101767
  GET_KEYS = new Set(["getTodo", "getInProgress", "getAutoMerge"]);
@@ -101776,9 +101800,10 @@ var init_cli2 = __esm(() => {
101776
101800
  " --worktree Run each task in its own git worktree",
101777
101801
  " --indicator <k>:<t>:<v> Override an indicator (repeatable).",
101778
101802
  " Keys: getTodo, getInProgress, getAutoMerge,",
101779
- " setInProgress, setDone, setError",
101803
+ " setInProgress, setDone, setPrReady, setError",
101780
101804
  " Types: label, status, attachment, project, comment",
101781
101805
  " --indicator setInProgress:attachment:In Progress",
101806
+ " --indicator setPrReady:status:In Review (additive ready marker)",
101782
101807
  " (attachment upserts a single 'Ralphy' entry; value = subtitle)",
101783
101808
  " --create-pr Push the worker branch and open a GitHub PR on success (needs --worktree)",
101784
101809
  " --fix-ci After opening the PR, re-run on CI failures until green (needs --create-pr)",
@@ -104248,6 +104273,7 @@ async function runPrPhase(input, deps) {
104248
104273
  emit: emit3,
104249
104274
  respawnWorker,
104250
104275
  registerPr,
104276
+ onPrReady,
104251
104277
  checkPrConflict,
104252
104278
  resolveDependencyBaseBranch
104253
104279
  } = deps;
@@ -104442,6 +104468,9 @@ ${indented}${suffix}`, "yellow");
104442
104468
  log3(`! manual merge failed for ${prUrl}: ${e.stderr?.trim() || e.message}`, "yellow");
104443
104469
  }
104444
104470
  }
104471
+ if (!(wantAutoMerge && !prReadyNeeded)) {
104472
+ await onPrReady?.(prUrl);
104473
+ }
104445
104474
  return 0;
104446
104475
  }
104447
104476
  async function runWorktreeCleanupPhase(input, deps) {
@@ -104647,6 +104676,7 @@ async function runPostTask(input, deps) {
104647
104676
  emit: emit3,
104648
104677
  respawnWorker,
104649
104678
  ...deps.registerPr !== undefined ? { registerPr: deps.registerPr } : {},
104679
+ ...deps.onPrReady !== undefined ? { onPrReady: deps.onPrReady } : {},
104650
104680
  ...deps.checkPrConflict !== undefined ? { checkPrConflict: deps.checkPrConflict } : {},
104651
104681
  ...deps.resolveDependencyBaseBranch !== undefined ? { resolveDependencyBaseBranch: deps.resolveDependencyBaseBranch } : {}
104652
104682
  });
@@ -108150,6 +108180,8 @@ function createSpawnWorker(input) {
108150
108180
  indicators,
108151
108181
  cmdRunner,
108152
108182
  gitRunner,
108183
+ applyIndicator,
108184
+ bus,
108153
108185
  onLog,
108154
108186
  diag,
108155
108187
  runners,
@@ -108378,6 +108410,23 @@ function createSpawnWorker(input) {
108378
108410
  runScript,
108379
108411
  ...retroDepEntry(args.agentDebug, runRetrospectiveHook),
108380
108412
  registerPr: (cn, url2) => onPrRegistered(cn, url2),
108413
+ ...issueForChange && indicators.setPrReady ? {
108414
+ onPrReady: async () => {
108415
+ const issue2 = issueForChange;
108416
+ const marker = indicators.setPrReady;
108417
+ try {
108418
+ await applyIndicator(issue2, marker);
108419
+ onLog(` ${issue2.identifier}: setPrReady applied`, "gray");
108420
+ } catch (err) {
108421
+ onLog(`! Linear setPrReady failed for ${issue2.identifier}: ${err.message}`, "yellow");
108422
+ emitCapture(bus, "agent_indicator_failed", {
108423
+ indicator: "setPrReady",
108424
+ issue_identifier: issue2.identifier,
108425
+ error: err.message
108426
+ });
108427
+ }
108428
+ }
108429
+ } : {},
108381
108430
  ...onWorkerPhase && {
108382
108431
  onPhase: (phase2, detail) => onWorkerPhase(changeName, phase2, detail)
108383
108432
  },
@@ -108415,6 +108464,7 @@ var init_worker = __esm(() => {
108415
108464
  init_agent_run_state();
108416
108465
  init_retro();
108417
108466
  init_engine();
108467
+ init_coordinator();
108418
108468
  });
108419
108469
 
108420
108470
  // apps/agent/src/agent/baseline/runner.ts
@@ -261809,6 +261859,8 @@ function buildAgentCoordinator(input) {
261809
261859
  indicators,
261810
261860
  cmdRunner,
261811
261861
  gitRunner,
261862
+ applyIndicator: resolvers.applyIndicator,
261863
+ bus,
261812
261864
  onLog,
261813
261865
  diag,
261814
261866
  runners: input.runners,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neriros/ralphy",
3
- "version": "3.10.7",
3
+ "version": "3.10.8",
4
4
  "description": "An iterative AI task execution framework. Orchestrates multi-phase autonomous work using Claude or Codex engines.",
5
5
  "keywords": [
6
6
  "agent",