@neriros/ralphy 2.13.13 → 2.13.15

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 (2) hide show
  1. package/dist/cli/index.js +40 -5
  2. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -70108,7 +70108,8 @@ function TaskLoop({ opts }) {
70108
70108
 
70109
70109
  // apps/cli/src/components/AgentMode.tsx
70110
70110
  var import_react57 = __toESM(require_react(), 1);
70111
- import { join as join16 } from "path";
70111
+ import { join as join16, relative } from "path";
70112
+ import { homedir as homedir3 } from "os";
70112
70113
 
70113
70114
  // apps/cli/src/agent/config.ts
70114
70115
  import { join as join10 } from "path";
@@ -72164,6 +72165,22 @@ function prLabel(prUrl) {
72164
72165
  const m = prUrl.match(/\/pull\/(\d+)/);
72165
72166
  return m ? `#${m[1]}` : "PR";
72166
72167
  }
72168
+ var HYPERLINKS_SUPPORTED = (() => {
72169
+ if (process.env["TMUX"])
72170
+ return false;
72171
+ const tp = process.env["TERM_PROGRAM"];
72172
+ if (tp === "iTerm.app" || tp === "WezTerm" || tp === "Hyper")
72173
+ return true;
72174
+ const term = process.env["TERM"];
72175
+ if (term === "xterm-kitty" || term === "foot" || term === "xterm-ghostty")
72176
+ return true;
72177
+ if (process.env["VTE_VERSION"])
72178
+ return true;
72179
+ return false;
72180
+ })();
72181
+ function osc8(url, label) {
72182
+ return HYPERLINKS_SUPPORTED ? `\x1B]8;;${url}\x07${label}\x1B]8;;\x07` : label;
72183
+ }
72167
72184
  var ANSI_STRIP_RE = /\x1b(?:\[[0-9;]*[A-Za-z]|\][^\x07\x1b]*(?:\x07|\x1b\\)|.)/g;
72168
72185
  var BOX_ONLY_RE = /^[\s\u2500\u2502\u256D\u256E\u2570\u256F\u254C\u2504\u2501\u2503]+$/;
72169
72186
  var STATUS_BAR_LINE_RE = /^[\u280B\u2819\u2839\u2838\u283C\u2834\u2826\u2827\u2807\u280F\u2713\u2717]\s+iter\s+\d+/;
@@ -72265,6 +72282,15 @@ function displayTailLines(activeCount) {
72265
72282
  return 8;
72266
72283
  return 5;
72267
72284
  }
72285
+ var AGENT_LOG_PATH = join16(homedir3(), ".ralph", "agent-mode.log");
72286
+ var SESSION_START = new Date().toISOString();
72287
+ function writeAgentLog(text) {
72288
+ const line = `[${new Date().toISOString()}] ${text}
72289
+ `;
72290
+ Bun.file(AGENT_LOG_PATH).text().catch(() => "").then((existing) => Bun.write(AGENT_LOG_PATH, existing + line)).catch(() => {
72291
+ return;
72292
+ });
72293
+ }
72268
72294
  function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72269
72295
  const { exit } = use_app_default();
72270
72296
  const { stdout } = use_stdout_default();
@@ -72280,11 +72306,13 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72280
72306
  const [pollStatus, setPollStatus] = import_react57.useState({ state: "idle", lastFound: null, lastAdded: null, lastAt: null, filterDesc: "" });
72281
72307
  function appendLog(text, color) {
72282
72308
  setLogs((prev) => [...prev, { id: nextId(), text, color }]);
72309
+ writeAgentLog(text);
72283
72310
  }
72284
72311
  import_react57.useEffect(() => {
72285
72312
  let pollTimer = null;
72286
72313
  let cancelled = false;
72287
72314
  async function init2() {
72315
+ writeAgentLog(`=== session start ${SESSION_START} ===`);
72288
72316
  const cfgPath = await ensureRalphyConfig(projectRoot);
72289
72317
  const cfg2 = await loadRalphyConfig(projectRoot);
72290
72318
  cfgRef.current = cfg2;
@@ -72305,6 +72333,7 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72305
72333
  onLog: appendLog,
72306
72334
  onWorkersChanged: () => setTick((t) => t + 1),
72307
72335
  onWorkerStarted: (changeName, dir, logFile, changeDir) => {
72336
+ writeAgentLog(`worker-started ${changeName} log=${logFile}`);
72308
72337
  workerMetaRef.current.set(changeName, {
72309
72338
  startedAt: Date.now(),
72310
72339
  statesDir: dir,
@@ -72321,14 +72350,17 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72321
72350
  });
72322
72351
  },
72323
72352
  onWorkerExited: (changeName) => {
72353
+ writeAgentLog(`worker-exited ${changeName}`);
72324
72354
  workerMetaRef.current.delete(changeName);
72325
72355
  },
72326
72356
  onWorkerPhase: (changeName, phase, detail) => {
72327
72357
  const m = workerMetaRef.current.get(changeName);
72328
72358
  if (!m)
72329
72359
  return;
72330
- if (m.phase !== phase)
72360
+ if (m.phase !== phase) {
72361
+ writeAgentLog(`phase ${changeName}: ${phase}${detail ? ` (${detail})` : ""}`);
72331
72362
  m.phaseStartedAt = Date.now();
72363
+ }
72332
72364
  m.phase = phase;
72333
72365
  m.phaseDetail = detail ?? "";
72334
72366
  },
@@ -72963,7 +72995,8 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72963
72995
  }, undefined, false, undefined, this),
72964
72996
  /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
72965
72997
  color: "blue",
72966
- children: w.issueIdentifier
72998
+ underline: HYPERLINKS_SUPPORTED,
72999
+ children: osc8(w.issue.url, w.issueIdentifier)
72967
73000
  }, undefined, false, undefined, this)
72968
73001
  ]
72969
73002
  }, undefined, true, undefined, this),
@@ -72976,7 +73009,8 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
72976
73009
  }, undefined, false, undefined, this),
72977
73010
  /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
72978
73011
  color: "green",
72979
- children: prLabel(prUrl)
73012
+ underline: HYPERLINKS_SUPPORTED,
73013
+ children: osc8(prUrl, prLabel(prUrl))
72980
73014
  }, undefined, false, undefined, this)
72981
73015
  ]
72982
73016
  }, undefined, true, undefined, this)
@@ -73000,6 +73034,7 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
73000
73034
  /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
73001
73035
  gap: 3,
73002
73036
  marginTop: 0,
73037
+ flexWrap: "wrap",
73003
73038
  children: [
73004
73039
  /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
73005
73040
  gap: 1,
@@ -73048,7 +73083,7 @@ function AgentMode({ args, projectRoot, statesDir, tasksDir }) {
73048
73083
  }, undefined, false, undefined, this),
73049
73084
  /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
73050
73085
  dimColor: true,
73051
- children: trunc(meta?.logFile ?? "\u2013", 60)
73086
+ children: trunc(meta?.logFile ? relative(process.cwd(), meta.logFile) : "\u2013", 40)
73052
73087
  }, undefined, false, undefined, this)
73053
73088
  ]
73054
73089
  }, undefined, true, undefined, this)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neriros/ralphy",
3
- "version": "2.13.13",
3
+ "version": "2.13.15",
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",