@prestyj/cli 5.32.0 → 5.32.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 (230) hide show
  1. package/README.md +3 -2
  2. package/assets/skills/task-list/SKILL.md +39 -0
  3. package/dist/app-sidecar/app-settings.js +11 -5
  4. package/dist/app-sidecar/app-settings.js.map +1 -1
  5. package/dist/app-sidecar/auth-routes.js +10 -3
  6. package/dist/app-sidecar/auth-routes.js.map +1 -1
  7. package/dist/app-sidecar/git-target.d.ts +15 -2
  8. package/dist/app-sidecar/git-target.js +24 -10
  9. package/dist/app-sidecar/git-target.js.map +1 -1
  10. package/dist/app-sidecar/goal-routes.js +8 -0
  11. package/dist/app-sidecar/goal-routes.js.map +1 -1
  12. package/dist/app-sidecar/history-routes.js +7 -0
  13. package/dist/app-sidecar/history-routes.js.map +1 -1
  14. package/dist/app-sidecar/history.d.ts +5 -0
  15. package/dist/app-sidecar/history.js.map +1 -1
  16. package/dist/app-sidecar/integration-routes.js +4 -0
  17. package/dist/app-sidecar/integration-routes.js.map +1 -1
  18. package/dist/app-sidecar/mcp-routes.js +1 -0
  19. package/dist/app-sidecar/mcp-routes.js.map +1 -1
  20. package/dist/app-sidecar/mcp-rows.d.ts +2 -0
  21. package/dist/app-sidecar/mcp-rows.js +4 -1
  22. package/dist/app-sidecar/mcp-rows.js.map +1 -1
  23. package/dist/app-sidecar/prompt-routes.js +67 -1
  24. package/dist/app-sidecar/prompt-routes.js.map +1 -1
  25. package/dist/app-sidecar/route-context.d.ts +2 -0
  26. package/dist/app-sidecar/run-control-routes.js +43 -3
  27. package/dist/app-sidecar/run-control-routes.js.map +1 -1
  28. package/dist/app-sidecar/session-routes.js +10 -0
  29. package/dist/app-sidecar/session-routes.js.map +1 -1
  30. package/dist/app-sidecar/task-routes.js +2 -0
  31. package/dist/app-sidecar/task-routes.js.map +1 -1
  32. package/dist/app-sidecar/trophy-manager.d.ts +15 -0
  33. package/dist/app-sidecar/trophy-manager.js +71 -0
  34. package/dist/app-sidecar/trophy-manager.js.map +1 -0
  35. package/dist/app-sidecar/workspace-routes.js +1 -0
  36. package/dist/app-sidecar/workspace-routes.js.map +1 -1
  37. package/dist/app-sidecar.js +157 -30
  38. package/dist/app-sidecar.js.map +1 -1
  39. package/dist/cli/auth.js +22 -1
  40. package/dist/cli/auth.js.map +1 -1
  41. package/dist/cli/mcp.js +6 -1
  42. package/dist/cli/mcp.js.map +1 -1
  43. package/dist/cli.js +13 -9
  44. package/dist/cli.js.map +1 -1
  45. package/dist/config.js +4 -2
  46. package/dist/config.js.map +1 -1
  47. package/dist/core/action-threats.d.ts +68 -0
  48. package/dist/core/action-threats.js +894 -0
  49. package/dist/core/action-threats.js.map +1 -0
  50. package/dist/core/agent-notifications.d.ts +18 -0
  51. package/dist/core/agent-notifications.js +35 -2
  52. package/dist/core/agent-notifications.js.map +1 -1
  53. package/dist/core/agent-session/verification-tracker.d.ts +21 -0
  54. package/dist/core/agent-session/verification-tracker.js +39 -1
  55. package/dist/core/agent-session/verification-tracker.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +168 -2
  57. package/dist/core/agent-session.js +486 -23
  58. package/dist/core/agent-session.js.map +1 -1
  59. package/dist/core/blocked-packages-file.d.ts +33 -0
  60. package/dist/core/blocked-packages-file.js +274 -0
  61. package/dist/core/blocked-packages-file.js.map +1 -0
  62. package/dist/core/compaction/policy.d.ts +2 -2
  63. package/dist/core/compaction/policy.js +86 -43
  64. package/dist/core/compaction/policy.js.map +1 -1
  65. package/dist/core/compaction/token-estimator.d.ts +4 -1
  66. package/dist/core/compaction/token-estimator.js +5 -2
  67. package/dist/core/compaction/token-estimator.js.map +1 -1
  68. package/dist/core/event-bus.d.ts +10 -0
  69. package/dist/core/event-bus.js +2 -0
  70. package/dist/core/event-bus.js.map +1 -1
  71. package/dist/core/idle-wake.d.ts +62 -0
  72. package/dist/core/idle-wake.js +103 -0
  73. package/dist/core/idle-wake.js.map +1 -0
  74. package/dist/core/injection-detect.d.ts +2 -1
  75. package/dist/core/injection-detect.js +13 -4
  76. package/dist/core/injection-detect.js.map +1 -1
  77. package/dist/core/installed-threats.d.ts +23 -0
  78. package/dist/core/installed-threats.js +71 -0
  79. package/dist/core/installed-threats.js.map +1 -0
  80. package/dist/core/mcp/catalog-cache.d.ts +2 -0
  81. package/dist/core/mcp/catalog-cache.js +4 -0
  82. package/dist/core/mcp/catalog-cache.js.map +1 -1
  83. package/dist/core/mcp/client.d.ts +8 -0
  84. package/dist/core/mcp/client.js +37 -3
  85. package/dist/core/mcp/client.js.map +1 -1
  86. package/dist/core/mcp/deferred-catalog.d.ts +12 -1
  87. package/dist/core/mcp/deferred-catalog.js +37 -10
  88. package/dist/core/mcp/deferred-catalog.js.map +1 -1
  89. package/dist/core/mcp/index.d.ts +2 -0
  90. package/dist/core/mcp/index.js +1 -0
  91. package/dist/core/mcp/index.js.map +1 -1
  92. package/dist/core/mcp/tool-guard.d.ts +58 -0
  93. package/dist/core/mcp/tool-guard.js +215 -0
  94. package/dist/core/mcp/tool-guard.js.map +1 -0
  95. package/dist/core/network-guard.d.ts +0 -20
  96. package/dist/core/network-guard.js +6 -0
  97. package/dist/core/network-guard.js.map +1 -1
  98. package/dist/core/package-cooldown.d.ts +71 -0
  99. package/dist/core/package-cooldown.js +301 -0
  100. package/dist/core/package-cooldown.js.map +1 -0
  101. package/dist/core/package-threats.d.ts +77 -3
  102. package/dist/core/package-threats.js +1250 -78
  103. package/dist/core/package-threats.js.map +1 -1
  104. package/dist/core/process-manager.d.ts +54 -12
  105. package/dist/core/process-manager.js +233 -56
  106. package/dist/core/process-manager.js.map +1 -1
  107. package/dist/core/project-files.d.ts +15 -0
  108. package/dist/core/project-files.js +37 -0
  109. package/dist/core/project-files.js.map +1 -0
  110. package/dist/core/prompt-commands.js +1 -0
  111. package/dist/core/prompt-commands.js.map +1 -1
  112. package/dist/core/session-manager.d.ts +3 -1
  113. package/dist/core/session-manager.js +2 -1
  114. package/dist/core/session-manager.js.map +1 -1
  115. package/dist/core/settings-manager.d.ts +1 -0
  116. package/dist/core/settings-manager.js +4 -0
  117. package/dist/core/settings-manager.js.map +1 -1
  118. package/dist/core/shell-threats.d.ts +14 -1
  119. package/dist/core/shell-threats.js +73 -24
  120. package/dist/core/shell-threats.js.map +1 -1
  121. package/dist/core/skill-scan.d.ts +112 -0
  122. package/dist/core/skill-scan.js +781 -0
  123. package/dist/core/skill-scan.js.map +1 -0
  124. package/dist/core/skills.d.ts +33 -0
  125. package/dist/core/skills.js +87 -16
  126. package/dist/core/skills.js.map +1 -1
  127. package/dist/core/slash-commands.d.ts +5 -1
  128. package/dist/core/slash-commands.js +24 -9
  129. package/dist/core/slash-commands.js.map +1 -1
  130. package/dist/core/steering.d.ts +7 -0
  131. package/dist/core/steering.js +13 -0
  132. package/dist/core/steering.js.map +1 -1
  133. package/dist/core/style-packs/index.js +1 -1
  134. package/dist/core/style-packs/index.js.map +1 -1
  135. package/dist/core/style-packs/packs.js +2 -2
  136. package/dist/core/subagent-manager.js +5 -4
  137. package/dist/core/subagent-manager.js.map +1 -1
  138. package/dist/core/threat-feed.d.ts +65 -0
  139. package/dist/core/threat-feed.js +335 -0
  140. package/dist/core/threat-feed.js.map +1 -0
  141. package/dist/core/trophies/catalog-more.d.ts +2 -0
  142. package/dist/core/trophies/catalog-more.js +857 -0
  143. package/dist/core/trophies/catalog-more.js.map +1 -0
  144. package/dist/core/trophies/catalog.d.ts +4 -0
  145. package/dist/core/trophies/catalog.js +649 -0
  146. package/dist/core/trophies/catalog.js.map +1 -0
  147. package/dist/core/trophies/engine.d.ts +70 -0
  148. package/dist/core/trophies/engine.js +351 -0
  149. package/dist/core/trophies/engine.js.map +1 -0
  150. package/dist/core/trophies/store.d.ts +17 -0
  151. package/dist/core/trophies/store.js +113 -0
  152. package/dist/core/trophies/store.js.map +1 -0
  153. package/dist/core/trophies/types.d.ts +119 -0
  154. package/dist/core/trophies/types.js +78 -0
  155. package/dist/core/trophies/types.js.map +1 -0
  156. package/dist/core/verification-evidence.d.ts +10 -6
  157. package/dist/core/verification-evidence.js +190 -11
  158. package/dist/core/verification-evidence.js.map +1 -1
  159. package/dist/goals-agent/goals-agent.js +3 -2
  160. package/dist/goals-agent/goals-agent.js.map +1 -1
  161. package/dist/interactive.js +16 -5
  162. package/dist/interactive.js.map +1 -1
  163. package/dist/modes/acp-mode.js +8 -1
  164. package/dist/modes/acp-mode.js.map +1 -1
  165. package/dist/modes/agent-home-mode.js +13 -1
  166. package/dist/modes/agent-home-mode.js.map +1 -1
  167. package/dist/modes/rpc-mode.d.ts +2 -1
  168. package/dist/modes/rpc-mode.js +15 -3
  169. package/dist/modes/rpc-mode.js.map +1 -1
  170. package/dist/modes/serve-mode.js +13 -1
  171. package/dist/modes/serve-mode.js.map +1 -1
  172. package/dist/system-prompt.d.ts +8 -0
  173. package/dist/system-prompt.js +34 -13
  174. package/dist/system-prompt.js.map +1 -1
  175. package/dist/test-support/slow-git.d.ts +1 -0
  176. package/dist/test-support/slow-git.js +21 -0
  177. package/dist/test-support/slow-git.js.map +1 -0
  178. package/dist/tools/background-watch-lint.d.ts +18 -0
  179. package/dist/tools/background-watch-lint.js +102 -0
  180. package/dist/tools/background-watch-lint.js.map +1 -0
  181. package/dist/tools/bash.d.ts +15 -4
  182. package/dist/tools/bash.js +75 -47
  183. package/dist/tools/bash.js.map +1 -1
  184. package/dist/tools/checklist.d.ts +3 -3
  185. package/dist/tools/compress.js +45 -0
  186. package/dist/tools/compress.js.map +1 -1
  187. package/dist/tools/edit.js +5 -0
  188. package/dist/tools/edit.js.map +1 -1
  189. package/dist/tools/generate-image.d.ts +29 -6
  190. package/dist/tools/generate-image.js +325 -151
  191. package/dist/tools/generate-image.js.map +1 -1
  192. package/dist/tools/grep.d.ts +14 -0
  193. package/dist/tools/grep.js +36 -2
  194. package/dist/tools/grep.js.map +1 -1
  195. package/dist/tools/index.d.ts +5 -1
  196. package/dist/tools/index.js +7 -4
  197. package/dist/tools/index.js.map +1 -1
  198. package/dist/tools/prompt-hints.d.ts +8 -1
  199. package/dist/tools/prompt-hints.js +22 -2
  200. package/dist/tools/prompt-hints.js.map +1 -1
  201. package/dist/tools/routine-output.d.ts +30 -0
  202. package/dist/tools/routine-output.js +203 -0
  203. package/dist/tools/routine-output.js.map +1 -0
  204. package/dist/tools/skill.d.ts +2 -2
  205. package/dist/tools/skill.js +8 -1
  206. package/dist/tools/skill.js.map +1 -1
  207. package/dist/tools/subagent-shared.js +4 -1
  208. package/dist/tools/subagent-shared.js.map +1 -1
  209. package/dist/tools/task-output.js +11 -1
  210. package/dist/tools/task-output.js.map +1 -1
  211. package/dist/tools/write.js +8 -0
  212. package/dist/tools/write.js.map +1 -1
  213. package/dist/ui/components/ModelSelector.d.ts +10 -0
  214. package/dist/ui/components/ModelSelector.js +51 -5
  215. package/dist/ui/components/ModelSelector.js.map +1 -1
  216. package/dist/ui/components/ToolExecution.js +2 -2
  217. package/dist/ui/components/ToolExecution.js.map +1 -1
  218. package/dist/ui/mcp.d.ts +2 -0
  219. package/dist/ui/mcp.js.map +1 -1
  220. package/dist/ui/terminal-history.js +2 -1
  221. package/dist/ui/terminal-history.js.map +1 -1
  222. package/dist/ui/tool-line-summary.js +3 -1
  223. package/dist/ui/tool-line-summary.js.map +1 -1
  224. package/dist/utils/git.d.ts +12 -3
  225. package/dist/utils/git.js +21 -8
  226. package/dist/utils/git.js.map +1 -1
  227. package/dist/utils/image.d.ts +14 -0
  228. package/dist/utils/image.js +23 -0
  229. package/dist/utils/image.js.map +1 -1
  230. package/package.json +5 -5
@@ -63,6 +63,97 @@ export const MAX_PROCESS_WAIT_MS = 600_000;
63
63
  const ADOPTED_PRIOR_OUTPUT_BYTES = 1024 * 1024;
64
64
  /** Chars of the matched log line carried in a pattern-wake notification. */
65
65
  const WAKE_LINE_CHARS = 200;
66
+ /**
67
+ * Most new log bytes one wake tick scans. A process that floods its log faster
68
+ * than this between ticks only has its latest output checked — that is where a
69
+ * fresh failure or readiness line is.
70
+ */
71
+ const WAKE_SCAN_MAX_BYTES = 1024 * 1024;
72
+ /** ANSI escape sequences: SGR colours, cursor movement, OSC titles/links. */
73
+ // eslint-disable-next-line no-control-regex -- matching terminal escapes is the point
74
+ const ANSI_ESCAPE = /\u001b\[[0-?]*[ -/]*[@-~]|\u001b\][^\u0007\u001b]*(?:\u0007|\u001b\\)/g;
75
+ /**
76
+ * Remove terminal colour and cursor codes. Test runners and CLIs colour their
77
+ * output, and a code can sit inside the very word a wake looks for:
78
+ * `\e[31mFAIL\e[0mED` never matches /FAILED/ until it is stripped.
79
+ */
80
+ export function stripAnsi(text) {
81
+ return text.replace(ANSI_ESCAPE, "");
82
+ }
83
+ /**
84
+ * Lines that mean "something failed" in the tools agents actually run in the
85
+ * background. Each one is anchored to a shape a tool prints, NOT a bare word:
86
+ * "error" or "failed" alone shows up in plenty of healthy output (file names,
87
+ * "0 failed", log levels), and a wake that cries wolf trains the agent to
88
+ * ignore it.
89
+ */
90
+ const FAILURE_LINE_PATTERNS = [
91
+ // vitest / jest file results, pytest FAILED lines, go "FAIL\tpkg".
92
+ /^\s*FAIL(?:ED)?\b(?!\s*[:=]?\s*0\b)/,
93
+ // go test.
94
+ /^\s*--- FAIL:/,
95
+ // Summaries: vitest "Tests 2 failed | 8 passed", jest "Tests: 2 failed",
96
+ // pytest "==== 2 failed, 8 passed ====", mocha "2 failing".
97
+ /^\s*(?:Tests?:?|Test Files|=+)\s.*\b[1-9]\d* failed\b/,
98
+ /^\s*[1-9]\d* failing\b/,
99
+ // vitest's failed-test marker, esbuild's "✘ [ERROR]", Playwright's list
100
+ // reporter (" ✘ 5 e2e/a.spec.ts:9:5 › …", several spaces).
101
+ /^\s*[✗✘×]\s+\S/,
102
+ // TypeScript.
103
+ /\berror TS\d{3,5}:/,
104
+ // rustc / cargo.
105
+ /^error(?:\[E\d{4}\])?: \S/,
106
+ // npm / pnpm / yarn.
107
+ /^npm ERR! /,
108
+ /\bERR_PNPM_[A-Z_]+\b/,
109
+ /\bELIFECYCLE\b.*\bfailed\b/i,
110
+ // Python, Rust panics.
111
+ /^Traceback \(most recent call last\):/,
112
+ /\bpanicked at\b/,
113
+ // Uncaught JS errors at the start of a line ("TypeError: x is undefined").
114
+ /^\s*(?:Uncaught |Unhandled )?[A-Z][A-Za-z]*Error: \S/,
115
+ // Bundlers and build tools.
116
+ /^\s*BUILD FAILED\b/,
117
+ /\bBuild failed with \d+ errors?\b/,
118
+ // GitHub Actions log lines, and `gh run watch`'s failed-job row:
119
+ // "X test (windows-latest) in 3m2s (ID 123)".
120
+ /^##\[error\]/,
121
+ /\bProcess completed with exit code [1-9]\d*\b/,
122
+ /^X .+ \(ID \d+\)\s*$/,
123
+ ];
124
+ /**
125
+ * The first line in `text` that looks like a tool reporting a failure, ANSI
126
+ * codes stripped, or undefined. Exported for tests.
127
+ */
128
+ export function findFailureLine(text) {
129
+ for (const raw of stripAnsi(text).split(/\r?\n|\r/)) {
130
+ if (raw.length > 4096)
131
+ continue; // A minified blob, not a status line.
132
+ if (FAILURE_LINE_PATTERNS.some((pattern) => pattern.test(raw)))
133
+ return raw;
134
+ }
135
+ return undefined;
136
+ }
137
+ /**
138
+ * The line holding the first match of `pattern` that ends inside `fresh`, where
139
+ * `seen` is overlap already scanned on an earlier tick. Matching across the
140
+ * boundary still counts (a line split between ticks), but a match lying wholly
141
+ * inside `seen` was already reported and must not fire again.
142
+ */
143
+ function findFreshMatchLine(pattern, seen, fresh) {
144
+ const text = seen + fresh;
145
+ const boundary = seen.length;
146
+ const flags = pattern.flags.includes("g") ? pattern.flags : `${pattern.flags}g`;
147
+ for (const match of text.matchAll(new RegExp(pattern.source, flags))) {
148
+ const end = match.index + match[0].length;
149
+ if (end <= boundary && !(match[0].length === 0 && match.index >= boundary))
150
+ continue;
151
+ const lineStart = text.lastIndexOf("\n", match.index - 1) + 1;
152
+ const lineEnd = text.indexOf("\n", match.index);
153
+ return text.slice(lineStart, lineEnd === -1 ? undefined : lineEnd) || match[0];
154
+ }
155
+ return undefined;
156
+ }
66
157
  /** One log line, whitespace-collapsed and tail-bounded — never the raw log. */
67
158
  function boundedLine(text) {
68
159
  const collapsed = text.replace(/\s+/g, " ").trim();
@@ -107,6 +198,9 @@ export class ProcessManager {
107
198
  wakeStates = new Map();
108
199
  /** Log size at the last emitted checkpoint, so a quiet process stays quiet. */
109
200
  watchedSizes = new Map();
201
+ /** Processes the agent or host is deliberately stopping: their non-zero exit
202
+ * is the stop working, not news, so it must not raise an urgent alert. */
203
+ stopping = new Set();
110
204
  /** Timestamp of the last retention sweep; 0 means "never swept". */
111
205
  lastPruneAt = 0;
112
206
  constructor(ops = {}) {
@@ -153,7 +247,9 @@ export class ProcessManager {
153
247
  }
154
248
  }
155
249
  }
156
- async start(command, cwd, launch, wake) {
250
+ async start(command, cwd, launch, wake,
251
+ /** Extra env for this process (e.g. the package release-age cooldown). */
252
+ extraEnv = {}) {
157
253
  await fsp.mkdir(this.bgDir, { recursive: true });
158
254
  void this.pruneOldLogs();
159
255
  const id = crypto.randomUUID().slice(0, 8);
@@ -168,7 +264,7 @@ export class ProcessManager {
168
264
  // stdin is a pipe so callers can drive interactive processes (REPLs,
169
265
  // scaffolders, [Y/n] prompts) via sendInput(); stdout/stderr go to the log.
170
266
  stdio: ["pipe", fd, fd],
171
- env: getSafeToolEnv(),
267
+ env: { ...getSafeToolEnv(), ...extraEnv },
172
268
  });
173
269
  fs.closeSync(fd);
174
270
  // Swallow EPIPE: writing to a process that has already exited would
@@ -263,10 +359,10 @@ export class ProcessManager {
263
359
  void this.refreshLogSize(proc).then(() => this.notifyExit(proc));
264
360
  });
265
361
  this.armWatcher(proc);
266
- let wakeArmed = false;
267
- if (wake && (wake.pattern || wake.silenceMs)) {
268
- wakeArmed = this.armWakeWatcher(proc, wake);
269
- }
362
+ // Always armed: the built-in failure detector runs on every task, so a
363
+ // build or CI watcher that prints a failure but keeps running releases a
364
+ // waiting agent at once instead of at exit or the wait cap.
365
+ const wakeArmed = this.armWakeWatcher(proc, wake);
270
366
  return { id, pid, logFile, wakeArmed };
271
367
  }
272
368
  /**
@@ -367,13 +463,15 @@ export class ProcessManager {
367
463
  const queue = this.ops.notifications;
368
464
  if (!queue)
369
465
  return;
466
+ // A failed exit is news the agent must act on; a deliberate stop is not.
467
+ const urgent = proc.exitCode !== 0 && !this.stopping.has(proc.id);
370
468
  void (async () => {
371
469
  const size = proc.logSize;
372
470
  const tail = size > 0 ? await this.readTail(proc.logFile, size) : "";
373
471
  queue.enqueue("process", proc.id, `Background process ${proc.id} (${proc.command}) exited with code ${proc.exitCode} ` +
374
472
  `after ${formatElapsed(Date.now() - proc.startedAt)}` +
375
473
  `${tail ? `. Last output: ${tail}` : ""}. ` +
376
- `Read it with task_output id="${proc.id}".`, { terminal: true });
474
+ `Read it with task_output id="${proc.id}".`, { terminal: true, urgent });
377
475
  })();
378
476
  }
379
477
  /** Read the trailing bytes of a log without loading the whole file. */
@@ -395,43 +493,48 @@ export class ProcessManager {
395
493
  }
396
494
  }
397
495
  /** Read the bytes of a log in `[start, end)` without loading the file. */
398
- async readRange(logFile, start, end) {
496
+ async readBytes(logFile, start, end) {
399
497
  try {
400
498
  const fh = await fsp.open(logFile, "r");
401
499
  try {
402
500
  const buf = Buffer.alloc(Math.max(0, end - start));
403
501
  const { bytesRead } = await fh.read(buf, 0, buf.length, start);
404
- return buf.subarray(0, bytesRead).toString("utf-8");
502
+ return buf.subarray(0, bytesRead);
405
503
  }
406
504
  finally {
407
505
  await fh.close();
408
506
  }
409
507
  }
410
508
  catch {
411
- return "";
509
+ return Buffer.alloc(0);
412
510
  }
413
511
  }
414
512
  /**
415
- * Wake-rule watcher: evaluates the model's `pattern`/`silenceMs` conditions
416
- * every {@link WAKE_INTERVAL_MS} and pushes a steering-path notification the
417
- * moment one holds. Each rule is one-shot; once every declared rule has fired
418
- * (or the process exits) the watcher retires. Unlike the progress watcher it
419
- * never backs off — the agent asked for exactly this signal, however long it
420
- * takes, and a late match on a quiet dev server is precisely the point.
513
+ * Wake watcher, evaluated every {@link WAKE_INTERVAL_MS}. Always runs the
514
+ * built-in failure detector (one-shot), plus the model's declared rules when
515
+ * a notification queue can deliver them: `pattern` fires on every new match,
516
+ * `silenceMs` once. It retires on exit, or once nothing is left that could
517
+ * still fire. Unlike the progress watcher it never backs off — a late match
518
+ * on a quiet dev server is precisely the point.
519
+ *
520
+ * Returns whether the model's declared rules were armed. Without a queue they
521
+ * are not (nothing could deliver them), but failure detection still releases
522
+ * a blocking `task_output` wait directly.
421
523
  */
422
- armWakeWatcher(proc, rules) {
423
- if (!this.ops.notifications)
424
- return false; // No queue wired: nothing to wake.
524
+ armWakeWatcher(proc, requested) {
525
+ const wantsRules = Boolean(requested && (requested.pattern || requested.silenceMs));
526
+ const rulesArmed = wantsRules && this.ops.notifications !== undefined;
425
527
  const state = {
426
- rules,
528
+ rules: rulesArmed && requested ? requested : {},
427
529
  scanOffset: 0,
530
+ failureOffset: 0,
428
531
  lastSize: 0,
429
532
  lastGrowthAt: proc.startedAt,
430
- matched: false,
431
533
  silenceFired: false,
534
+ failureFired: false,
432
535
  };
433
536
  this.wakeStates.set(proc.id, state);
434
- const patternSource = rules.pattern?.source ?? "";
537
+ const patternSource = state.rules.pattern?.source ?? "";
435
538
  // Re-scan a little before the last offset so a match straddling the tick
436
539
  // boundary is still seen; the offset only ever advances to full size.
437
540
  const overlap = Math.min(256, patternSource.length + 16);
@@ -442,8 +545,10 @@ export class ProcessManager {
442
545
  this.disposeWakeWatcher(proc.id);
443
546
  return;
444
547
  }
445
- const done = (!state.rules.pattern || state.matched) &&
446
- (!state.rules.silenceMs || state.silenceFired);
548
+ // A pattern can always match again, so it keeps the watcher alive.
549
+ const done = !state.rules.pattern &&
550
+ (!state.rules.silenceMs || state.silenceFired) &&
551
+ state.failureFired;
447
552
  if (done) {
448
553
  this.disposeWakeWatcher(proc.id);
449
554
  return;
@@ -455,57 +560,101 @@ export class ProcessManager {
455
560
  this.wakeWatchers.set(proc.id, timer);
456
561
  };
457
562
  tick();
458
- return true;
563
+ return rulesArmed;
564
+ }
565
+ /** Record a wake on the process and release anyone blocked waiting on it. */
566
+ fireWake(proc, reason, offset) {
567
+ proc.wakeReason = reason;
568
+ proc.wakeOffset = offset;
569
+ this.children.get(proc.id)?.emit("gg:wake", reason);
459
570
  }
460
571
  async evaluateWakeRules(proc, state, overlap) {
461
572
  const queue = this.ops.notifications;
462
- if (!queue)
463
- return;
464
573
  const size = await this.refreshLogSize(proc);
574
+ const gone = () => proc.exitCode !== null || !this.wakeStates.has(proc.id);
465
575
  if (size > state.lastSize) {
466
576
  state.lastSize = size;
467
577
  state.lastGrowthAt = Date.now();
468
578
  }
469
579
  const { pattern, silenceMs } = state.rules;
470
- if (pattern && !state.matched && size > state.scanOffset) {
471
- const start = Math.max(0, state.scanOffset - overlap);
472
- const chunk = await this.readRange(proc.logFile, start, size);
473
- if (proc.exitCode !== null || !this.wakeStates.has(proc.id))
580
+ if (pattern && queue && size > state.scanOffset) {
581
+ let start = Math.max(0, state.scanOffset - overlap);
582
+ if (size - start > WAKE_SCAN_MAX_BYTES)
583
+ start = size - WAKE_SCAN_MAX_BYTES;
584
+ const buf = await this.readBytes(proc.logFile, start, size);
585
+ if (gone())
474
586
  return;
475
- state.scanOffset = size;
476
- const match = pattern.exec(chunk);
477
- if (match) {
478
- state.matched = true;
587
+ const boundary = Math.max(0, Math.min(buf.length, state.scanOffset - start));
588
+ state.scanOffset = Math.max(state.scanOffset, start + buf.length);
589
+ const line = findFreshMatchLine(pattern, stripAnsi(buf.subarray(0, boundary).toString("utf-8")), stripAnsi(buf.subarray(boundary).toString("utf-8")));
590
+ if (line !== undefined) {
591
+ state.lastPatternLine = boundedLine(line);
479
592
  // The declared signal outranks generic progress: retire the progress
480
593
  // watcher so its next tick cannot supersede this notification in the
481
594
  // latest-only queue. Exit notifications come from the exit handler.
482
595
  this.disposeProgressWatcher(proc.id);
483
- const line = chunk
484
- .slice(Math.max(0, match.index - WAKE_LINE_CHARS))
485
- .split("\n")
486
- .find((l) => pattern.test(l)) ?? match[0];
487
596
  queue.enqueue("process", proc.id, `Background process ${proc.id} (${proc.command}) produced output matching your wake ` +
488
597
  `pattern /${pattern.source}/: ${boundedLine(line)}. Still running — ` +
489
598
  `task_output id="${proc.id}" for full context.`);
490
- proc.wakeReason = "pattern";
491
- this.children.get(proc.id)?.emit("gg:wake", proc.wakeReason);
599
+ this.fireWake(proc, "pattern", state.scanOffset);
600
+ }
601
+ }
602
+ if (!state.failureFired && size > state.failureOffset) {
603
+ let start = state.failureOffset;
604
+ if (size - start > WAKE_SCAN_MAX_BYTES)
605
+ start = size - WAKE_SCAN_MAX_BYTES;
606
+ const buf = await this.readBytes(proc.logFile, start, size);
607
+ if (gone())
608
+ return;
609
+ // Whole lines only: a line still being written is re-read next tick, so
610
+ // "FAI" + "LED" across two writes is still one failure line.
611
+ const lastNewline = buf.lastIndexOf(0x0a);
612
+ if (lastNewline >= 0) {
613
+ state.failureOffset = start + lastNewline + 1;
614
+ // Lines the agent has already read (task_output ran while this tick
615
+ // was reading) are not news; waking for them replays a seen failure.
616
+ const readTo = proc.lastReadOffset - start;
617
+ const unreadStart = readTo <= 0 ? 0 : buf.lastIndexOf(0x0a, readTo - 1) + 1;
618
+ const line = unreadStart >= lastNewline
619
+ ? undefined
620
+ : findFailureLine(buf.subarray(unreadStart, lastNewline).toString("utf-8"));
621
+ if (line !== undefined) {
622
+ state.failureFired = true;
623
+ this.disposeProgressWatcher(proc.id);
624
+ // The queue keeps one entry per task, so this notice replaces any
625
+ // pattern notice still pending. When both fired on the same line, say
626
+ // both: the agent asked for that pattern by name.
627
+ const shown = boundedLine(line);
628
+ const what = pattern && state.lastPatternLine === shown
629
+ ? `produced output matching your wake pattern /${pattern.source}/ that also looks like a failure`
630
+ : "printed what looks like a failure";
631
+ queue?.enqueue("process", proc.id, `Background process ${proc.id} (${proc.command}) ${what}: ` +
632
+ `${shown}. Still running — read it with task_output id="${proc.id}", ` +
633
+ `then fix the cause, stop it, or keep waiting if the failure is expected.`, { urgent: true });
634
+ this.fireWake(proc, "failure", state.failureOffset);
635
+ }
636
+ }
637
+ else if (buf.length >= WAKE_SCAN_MAX_BYTES) {
638
+ // One enormous unterminated line (a progress bar redrawn with \r):
639
+ // skip it rather than re-reading a megabyte every tick.
640
+ state.failureOffset = start + buf.length;
492
641
  }
493
642
  }
494
- if (silenceMs &&
643
+ if (queue &&
644
+ silenceMs &&
495
645
  !state.silenceFired &&
496
646
  proc.exitCode === null &&
497
647
  Date.now() - state.lastGrowthAt >= silenceMs) {
498
648
  state.silenceFired = true;
499
649
  this.disposeProgressWatcher(proc.id);
500
650
  const tail = await this.readTail(proc.logFile, size);
501
- if (proc.exitCode !== null || !this.wakeStates.has(proc.id))
651
+ if (gone())
502
652
  return;
503
653
  queue.enqueue("process", proc.id, `Background process ${proc.id} (${proc.command}) has produced no output for ` +
504
654
  `${Math.round((Date.now() - state.lastGrowthAt) / 1000)}s — it may be stalled` +
505
655
  `${tail ? `. Last output: ${tail}` : " (no output so far)"}. ` +
506
656
  `Check task_output id="${proc.id}" and decide whether to wait, send input, or stop it.`);
507
- proc.wakeReason = "silence";
508
- this.children.get(proc.id)?.emit("gg:wake", proc.wakeReason);
657
+ this.fireWake(proc, "silence", size);
509
658
  }
510
659
  }
511
660
  /** Stop and forget a process's wake watcher. */
@@ -550,38 +699,54 @@ export class ProcessManager {
550
699
  * else to do does not have.
551
700
  */
552
701
  async waitForExitOrWake(id, timeoutMs, signal) {
702
+ return (await this.waitForActivity(id, timeoutMs, signal)).reason;
703
+ }
704
+ /**
705
+ * {@link waitForExitOrWake}, plus what ended it. Besides this task exiting or
706
+ * waking, the wait also ends when ANOTHER task raises an urgent notification
707
+ * (a different build failed, a child agent finished): the agent blocked here
708
+ * has no other way to learn that before its wait runs out.
709
+ */
710
+ async waitForActivity(id, timeoutMs, signal) {
553
711
  const proc = this.processes.get(id);
554
712
  if (!proc)
555
- return "unknown";
713
+ return { reason: "unknown" };
556
714
  const child = this.children.get(id);
557
715
  // Already terminal (or no live child tracked): nothing to wait on.
558
716
  if (!child || proc.exitCode !== null)
559
- return "exited";
717
+ return { reason: "exited" };
560
718
  if (signal?.aborted)
561
- return "timeout";
719
+ return { reason: "timeout" };
562
720
  if (proc.wakeReason)
563
- return proc.wakeReason;
721
+ return { reason: proc.wakeReason };
564
722
  const bounded = Math.min(Math.max(timeoutMs, 0), MAX_PROCESS_WAIT_MS);
565
723
  return await new Promise((resolve) => {
566
- const settle = (outcome) => {
724
+ const settle = (result) => {
567
725
  clearTimeout(timer);
568
726
  child.off("close", onClose);
569
727
  child.off("gg:wake", onWake);
570
728
  signal?.removeEventListener("abort", onAbort);
571
- resolve(outcome);
729
+ unsubscribe?.();
730
+ resolve(result);
572
731
  };
573
732
  // Registered after start()'s own 'close' handler, so `exitCode` is
574
733
  // already set by the time this resolves.
575
- const onClose = () => settle("exited");
576
- const onWake = (reason) => settle(reason);
734
+ const onClose = () => settle({ reason: "exited" });
735
+ const onWake = (reason) => settle({ reason });
577
736
  // Give up the wait when the caller is cancelled; the process itself is
578
737
  // left running — this only ends our observation of it.
579
- const onAbort = () => settle("timeout");
580
- const timer = setTimeout(() => settle("timeout"), bounded);
738
+ const onAbort = () => settle({ reason: "timeout" });
739
+ const timer = setTimeout(() => settle({ reason: "timeout" }), bounded);
581
740
  timer.unref?.();
582
741
  child.once("close", onClose);
583
742
  child.once("gg:wake", onWake);
584
743
  signal?.addEventListener("abort", onAbort, { once: true });
744
+ // This task's own alerts arrive above as exit/wake; only others count here.
745
+ const unsubscribe = this.ops.notifications?.onUrgent((entry) => {
746
+ if (entry.kind === "process" && entry.id === id)
747
+ return;
748
+ settle({ reason: "other", detail: entry.text });
749
+ });
585
750
  });
586
751
  }
587
752
  async readOutput(id, fromStart) {
@@ -594,7 +759,6 @@ export class ProcessManager {
594
759
  output: `No background process with id "${id}"`,
595
760
  };
596
761
  }
597
- delete proc.wakeReason;
598
762
  const offset = fromStart ? 0 : proc.lastReadOffset;
599
763
  let output = "";
600
764
  try {
@@ -608,9 +772,19 @@ export class ProcessManager {
608
772
  output = buf.subarray(0, bytesRead).toString("utf-8");
609
773
  proc.lastReadOffset = offset + bytesRead;
610
774
  }
775
+ // Consume the wake only once this read covers what it is about: a wake
776
+ // that fired while the read was in flight, for output past it, stays.
777
+ if ((proc.wakeOffset ?? 0) <= proc.lastReadOffset) {
778
+ delete proc.wakeReason;
779
+ delete proc.wakeOffset;
780
+ }
611
781
  }
612
782
  catch {
613
783
  output = "(failed to read log file)";
784
+ // Unreadable log: a wake that can never be consumed would make every
785
+ // later wait return at once.
786
+ delete proc.wakeReason;
787
+ delete proc.wakeOffset;
614
788
  }
615
789
  const isRunning = this.children.has(id);
616
790
  return { id, isRunning, exitCode: proc.exitCode, output };
@@ -664,6 +838,7 @@ export class ProcessManager {
664
838
  }
665
839
  if (proc.pid <= 0)
666
840
  return `Process ${id} failed to start`;
841
+ this.stopping.add(id);
667
842
  const isWindows = (this.ops.platform ?? process.platform) === "win32";
668
843
  if (isWindows) {
669
844
  // Windows has no process groups and no real SIGTERM: signalling the
@@ -706,6 +881,7 @@ export class ProcessManager {
706
881
  for (const [id, proc] of this.processes) {
707
882
  if (proc.exitCode !== null && !this.children.has(id) && proc.startedAt < cutoff) {
708
883
  this.processes.delete(id);
884
+ this.stopping.delete(id);
709
885
  this.disposeWatcher(id);
710
886
  }
711
887
  }
@@ -714,6 +890,7 @@ export class ProcessManager {
714
890
  shutdownAll() {
715
891
  for (const [id, proc] of this.processes) {
716
892
  if (this.children.has(id)) {
893
+ this.stopping.add(id);
717
894
  stopProcessTree(proc.pid, this.ops);
718
895
  proc.exitCode = proc.exitCode ?? 1;
719
896
  this.children.delete(id);
@@ -1 +1 @@
1
- {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/core/process-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/core/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Most files the prompt's Environment section lists, shallowest first. */
2
+ export declare const PROJECT_FILES_SHOWN = 60;
3
+ export interface ProjectFileList {
4
+ /** Every listed file in the work tree under `cwd`. */
5
+ total: number;
6
+ /** The shallowest {@link PROJECT_FILES_SHOWN}, in a stable order. */
7
+ shown: readonly string[];
8
+ }
9
+ /**
10
+ * Files under `cwd` (tracked, plus untracked but not ignored), shallowest
11
+ * first, so the model can read the right files in its first call instead of
12
+ * listing them. `null` outside a git work tree, when git fails or times out,
13
+ * or when nothing is listed.
14
+ */
15
+ export declare function listProjectFiles(cwd: string, signal?: AbortSignal): Promise<ProjectFileList | null>;
@@ -0,0 +1,37 @@
1
+ import { runBackgroundGit } from "../utils/git.js";
2
+ /** Most files the prompt's Environment section lists, shallowest first. */
3
+ export const PROJECT_FILES_SHOWN = 60;
4
+ // Large monorepos list in well under a second; past this the line is skipped.
5
+ const LIST_TIMEOUT_MS = 5_000;
6
+ /**
7
+ * Files under `cwd` (tracked, plus untracked but not ignored), shallowest
8
+ * first, so the model can read the right files in its first call instead of
9
+ * listing them. `null` outside a git work tree, when git fails or times out,
10
+ * or when nothing is listed.
11
+ */
12
+ export async function listProjectFiles(cwd, signal) {
13
+ let stdout;
14
+ try {
15
+ ({ stdout } = await runBackgroundGit(["ls-files", "-z", "--cached", "--others", "--exclude-standard"], { cwd, signal, timeoutMs: LIST_TIMEOUT_MS, maxBuffer: 64 * 1024 * 1024 }));
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ const files = [
21
+ ...new Set(stdout
22
+ .split("\0")
23
+ // EZ's own state isn't project code; control characters would break the line.
24
+ // eslint-disable-next-line no-control-regex
25
+ .filter((f) => f && !f.startsWith(".ezcoder/") && !/[\u0000-\u001f]/.test(f))),
26
+ ].sort(byDepthThenPath);
27
+ if (files.length === 0)
28
+ return null;
29
+ return { total: files.length, shown: files.slice(0, PROJECT_FILES_SHOWN) };
30
+ }
31
+ function byDepthThenPath(a, b) {
32
+ const depth = a.split("/").length - b.split("/").length;
33
+ if (depth !== 0)
34
+ return depth;
35
+ return a < b ? -1 : a > b ? 1 : 0;
36
+ }
37
+ //# sourceMappingURL=project-files.js.map