@enderfga/claw-orchestrator 7.9.0 → 7.11.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.
@@ -34,6 +34,19 @@
34
34
  */
35
35
  import type { SessionConfig, SessionSendOptions, TurnResult } from './types.js';
36
36
  import { BaseOneShotSession } from './base-oneshot-session.js';
37
+ /**
38
+ * OpenCode 2 — `opencode upgrade --major`, beta-only builds versioned
39
+ * `0.0.0-beta-N` (as of 2026-10-11) — keeps `run --format json` but breaks this
40
+ * wrapper three ways, each measured on 0.0.0-beta-17823:
41
+ * - `--variant` is gone (effort moved into `provider/model#variant`), so any
42
+ * session with an effort level fails every turn;
43
+ * - no `step_finish` event, so a turn reports no tokens and no cost;
44
+ * - the read-only agent could not be verified: with it, OpenCode's free
45
+ * tier answers 403 ("can only be used from within OpenCode").
46
+ * Refusing up front is the honest answer until a stable V2 is wired and
47
+ * measured; running it would silently drop effort, cost, and a read-only label.
48
+ */
49
+ export declare function isOpencodeV2(version: string | undefined): boolean;
37
50
  export declare class PersistentOpencodeSession extends BaseOneShotSession {
38
51
  private _currentRl;
39
52
  /**
@@ -54,6 +67,7 @@ export declare class PersistentOpencodeSession extends BaseOneShotSession {
54
67
  */
55
68
  private _reportedCostUsd?;
56
69
  protected _continuesConversation(): boolean;
70
+ start(): Promise<this>;
57
71
  constructor(config: SessionConfig, opencodeBin?: string);
58
72
  protected _cleanupProc(): void;
59
73
  protected _run(message: string, options: SessionSendOptions): Promise<TurnResult>;
@@ -32,7 +32,7 @@
32
32
  * `--auto`, and `--yolo` do exist as of opencode 1.4.0 if an allow-all run is
33
33
  * ever wanted — verified against 1.17.15.)
34
34
  */
35
- import { killEngineTree, spawnEngine } from './engine-spawn.js';
35
+ import { execEngine, killEngineTree, spawnEngine } from './engine-spawn.js';
36
36
  import * as readline from 'node:readline';
37
37
  import { estimateTokens } from './models.js';
38
38
  import { sanitizeSecrets } from './sanitize.js';
@@ -83,6 +83,40 @@ const READ_ONLY_AGENT_CONFIG = JSON.stringify({
83
83
  },
84
84
  },
85
85
  });
86
+ // ─── OpenCode 2 ─────────────────────────────────────────────────────────────
87
+ /**
88
+ * What `opencode --version` says, once per binary per process. `undefined`
89
+ * when it could not be read — a check that cannot run blocks nothing.
90
+ */
91
+ const versionCache = new Map();
92
+ function opencodeVersion(bin) {
93
+ let v = versionCache.get(bin);
94
+ if (!v) {
95
+ v = execEngine(bin, ['--version'], { timeout: 15_000 }).then((r) => `${r.stdout}${r.stderr}`.trim() || undefined, () => undefined);
96
+ versionCache.set(bin, v);
97
+ }
98
+ return v;
99
+ }
100
+ /**
101
+ * OpenCode 2 — `opencode upgrade --major`, beta-only builds versioned
102
+ * `0.0.0-beta-N` (as of 2026-10-11) — keeps `run --format json` but breaks this
103
+ * wrapper three ways, each measured on 0.0.0-beta-17823:
104
+ * - `--variant` is gone (effort moved into `provider/model#variant`), so any
105
+ * session with an effort level fails every turn;
106
+ * - no `step_finish` event, so a turn reports no tokens and no cost;
107
+ * - the read-only agent could not be verified: with it, OpenCode's free
108
+ * tier answers 403 ("can only be used from within OpenCode").
109
+ * Refusing up front is the honest answer until a stable V2 is wired and
110
+ * measured; running it would silently drop effort, cost, and a read-only label.
111
+ */
112
+ export function isOpencodeV2(version) {
113
+ if (!version)
114
+ return false;
115
+ if (/\b0\.0\.0-(beta|next|dev)/.test(version) || /\bopencode2\b/.test(version))
116
+ return true;
117
+ const m = version.match(/\b(\d+)\.\d+\.\d+/);
118
+ return !!m && Number(m[1]) >= 2;
119
+ }
86
120
  // ─── PersistentOpencodeSession ──────────────────────────────────────────────
87
121
  export class PersistentOpencodeSession extends BaseOneShotSession {
88
122
  _currentRl = null;
@@ -106,6 +140,14 @@ export class PersistentOpencodeSession extends BaseOneShotSession {
106
140
  _continuesConversation() {
107
141
  return !!this.opencodeSessionId;
108
142
  }
143
+ async start() {
144
+ const version = await opencodeVersion(this.engineBin);
145
+ if (isOpencodeV2(version)) {
146
+ throw new Error(`OpenCode 2 (${version}) is not supported yet: it drops the per-turn usage events and the --variant flag ` +
147
+ 'this engine relies on, and its read-only agent is unverified. claw-orchestrator is tested with OpenCode 1.x.');
148
+ }
149
+ return super.start();
150
+ }
109
151
  constructor(config, opencodeBin) {
110
152
  super(config, opencodeBin || process.env.OPENCODE_BIN || 'opencode', {
111
153
  enginePrefix: 'opencode',
@@ -1 +1 @@
1
- {"version":3,"file":"persistent-opencode-session.js","sourceRoot":"","sources":["../../src/persistent-opencode-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistent-opencode-session.js","sourceRoot":"","sources":["../../src/persistent-opencode-session.ts"],"names":[],"mappings":"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"}
@@ -327,6 +327,133 @@ function validateAutoloopEffort(role, effort) {
327
327
  throw new Error(`${label} effort '${String(effort)}' is not supported`);
328
328
  }
329
329
  }
330
+ /** True when path is under tasks/<id>/ and tasks/<id>/goal.json is a regular file. */
331
+ function isMarkedAutoloopLedgerPath(workspace, filePath) {
332
+ const parts = filePath.split('/');
333
+ if (parts.length < 3 || parts[0] !== 'tasks')
334
+ return false;
335
+ for (const seg of parts) {
336
+ if (seg === '' || seg === '.' || seg === '..')
337
+ return false;
338
+ }
339
+ const id = parts[1];
340
+ try {
341
+ return fs.statSync(path.join(workspace, 'tasks', id, 'goal.json')).isFile();
342
+ }
343
+ catch {
344
+ return false;
345
+ }
346
+ }
347
+ /** Porcelain XY allowed for a marked ledger: untracked or index-clean worktree mod. */
348
+ function isAllowedAutoloopLedgerStatus(x, y) {
349
+ return (x === '?' && y === '?') || (x === ' ' && y === 'M');
350
+ }
351
+ /** True for an index gitlink, false for an ordinary path, null when Git cannot answer. */
352
+ function isTrackedGitlink(workspace, filePath) {
353
+ try {
354
+ const record = execFileSync('git', ['--literal-pathspecs', '-C', workspace, 'ls-files', '--stage', '-z', '--', filePath], {
355
+ encoding: 'utf8',
356
+ stdio: ['ignore', 'pipe', 'pipe'],
357
+ env: { ...process.env, LC_ALL: 'C' },
358
+ });
359
+ return record.startsWith('160000 ');
360
+ }
361
+ catch {
362
+ return null;
363
+ }
364
+ }
365
+ /**
366
+ * `git status` paths are repo-root-relative. Strip a verified `--show-prefix` so
367
+ * ledger checks see workspace-relative paths. Null = outside the workspace.
368
+ */
369
+ function workspaceRelativePorcelainPath(repoRelPath, prefix) {
370
+ if (prefix.length === 0)
371
+ return repoRelPath;
372
+ if (!repoRelPath.startsWith(prefix))
373
+ return null;
374
+ return repoRelPath.slice(prefix.length);
375
+ }
376
+ /**
377
+ * Read and verify `rev-parse --show-prefix` against toplevel↔workspace relative
378
+ * path. Returns null when verification fails (caller fail-closes as dirty).
379
+ */
380
+ function readVerifiedGitShowPrefix(workspace) {
381
+ try {
382
+ const toplevel = execFileSync('git', ['-C', workspace, 'rev-parse', '--show-toplevel'], {
383
+ encoding: 'utf8',
384
+ stdio: ['ignore', 'pipe', 'pipe'],
385
+ }).replace(/\r?\n$/, '');
386
+ const prefix = execFileSync('git', ['-C', workspace, 'rev-parse', '--show-prefix'], {
387
+ encoding: 'utf8',
388
+ stdio: ['ignore', 'pipe', 'pipe'],
389
+ }).replace(/\r?\n$/, '');
390
+ const resolvedTop = fs.realpathSync(toplevel);
391
+ const resolvedWs = fs.realpathSync(workspace);
392
+ const rel = path.relative(resolvedTop, resolvedWs);
393
+ if (rel === '..' || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel))
394
+ return null;
395
+ const expected = rel === '' ? '' : `${rel.split(path.sep).join('/')}/`;
396
+ return expected === prefix ? prefix : null;
397
+ }
398
+ catch {
399
+ return null;
400
+ }
401
+ }
402
+ /** Only this deterministic git failure means a non-repository workspace. */
403
+ function isNotGitRepositoryError(err) {
404
+ if (!err || typeof err !== 'object')
405
+ return false;
406
+ const stderr = err.stderr;
407
+ const text = typeof stderr === 'string' ? stderr : Buffer.isBuffer(stderr) ? stderr.toString('utf8') : '';
408
+ const lines = text.trim().split(/\r?\n/);
409
+ if (lines.length === 1) {
410
+ return lines[0] === 'fatal: not a git repository (or any of the parent directories): .git';
411
+ }
412
+ return (lines.length === 2 &&
413
+ /^fatal: not a git repository \(or any parent up to mount point .+\)$/.test(lines[0]) &&
414
+ lines[1] === 'Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).');
415
+ }
416
+ /**
417
+ * Parse `git status --porcelain=v1 -z` output. Returns true when any record must
418
+ * refuse autoloopStart. Ignore only status exactly `??` or index-clean ` M`
419
+ * under a marked ledger (after normalizing repo-root paths with a verified
420
+ * show-prefix).
421
+ */
422
+ function porcelainHasDisallowedAutoloopDirt(workspace, porcelain, prefix) {
423
+ if (porcelain.length === 0)
424
+ return false;
425
+ let i = 0;
426
+ while (i < porcelain.length) {
427
+ if (i + 3 > porcelain.length)
428
+ return true;
429
+ const x = porcelain[i];
430
+ const y = porcelain[i + 1];
431
+ if (porcelain[i + 2] !== ' ')
432
+ return true;
433
+ i += 3;
434
+ const nul = porcelain.indexOf('\0', i);
435
+ if (nul < 0)
436
+ return true;
437
+ const repoRelPath = porcelain.slice(i, nul);
438
+ i = nul + 1;
439
+ if (x === 'R' || x === 'C' || y === 'R' || y === 'C') {
440
+ const nul2 = porcelain.indexOf('\0', i);
441
+ if (nul2 < 0)
442
+ return true;
443
+ i = nul2 + 1;
444
+ return true;
445
+ }
446
+ const filePath = workspaceRelativePorcelainPath(repoRelPath, prefix);
447
+ if (filePath === null || !isAllowedAutoloopLedgerStatus(x, y) || !isMarkedAutoloopLedgerPath(workspace, filePath)) {
448
+ return true;
449
+ }
450
+ // Porcelain v1 -z collapses every kind of submodule dirt to worktree `M`.
451
+ // Never let a gitlink inherit the ordinary ledger-file ` M` exception.
452
+ if (x === ' ' && y === 'M' && isTrackedGitlink(workspace, filePath) !== false)
453
+ return true;
454
+ }
455
+ return false;
456
+ }
330
457
  /**
331
458
  * The tool calls a turn's `result` event says the engine refused, normalized.
332
459
  *
@@ -2548,12 +2675,12 @@ export class SessionManager {
2548
2675
  // review stayed `running` forever. It is one run now, and there is nothing to
2549
2676
  // poll.
2550
2677
  async ultrareviewStart(cwd, opts) {
2551
- // Every reviewer runs read-only (see below). grok refuses a read-only session
2552
- // rather than approximate one, and a custom reviewer has no config to start
2553
- // from, so both are turned away here instead of failing one reviewer at a time.
2554
- const unsupported = (opts?.engines ?? []).filter((e) => e === 'grok' || e === 'custom');
2555
- if (unsupported.length) {
2556
- throw new Error(`ultrareview cannot use ${[...new Set(unsupported)].join(', ')}: reviewers run read-only, which ${unsupported.includes('grok') ? 'grok refuses' : 'a custom engine cannot be configured for here'}`);
2678
+ // Every reviewer runs read-only (see below). A custom reviewer has no config
2679
+ // to start from, so it is turned away here instead of failing one reviewer
2680
+ // at a time. (grok was turned away too until its read-only mode moved onto
2681
+ // grok's OS sandbox.)
2682
+ if ((opts?.engines ?? []).includes('custom')) {
2683
+ throw new Error('ultrareview cannot use custom: reviewers run read-only, which a custom engine cannot be configured for here');
2557
2684
  }
2558
2685
  const id = `ultrareview-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
2559
2686
  const agentCount = Math.min(20, Math.max(1, opts?.agentCount || 5));
@@ -2924,7 +3051,7 @@ export class SessionManager {
2924
3051
  if (!subject.startsWith(`autoloop/iter-${n}:`))
2925
3052
  return;
2926
3053
  this.logger.info?.(`[autoloop/${runId}] recovering committed iter ${n} into Reviewer`);
2927
- await dispatcher.spawnSubagents();
3054
+ await dispatcher.ensureReviewerForCommittedRecovery();
2928
3055
  runner.markSubagentsSpawned();
2929
3056
  runner.state.iter = n;
2930
3057
  void runner
@@ -2968,6 +3095,43 @@ export class SessionManager {
2968
3095
  throw new Error(`Autoloop session name '${sessionName}' is already in use`);
2969
3096
  }
2970
3097
  }
3098
+ // Refuse a dirty git worktree before the run directory or Planner exists.
3099
+ // --porcelain=v1 -z keeps paths literal (spaces/quotes). --untracked-files=all
3100
+ // overrides status.showUntrackedFiles=no, while --ignore-submodules=none
3101
+ // prevents repository config from hiding submodule dirt; do not pass
3102
+ // --ignored. Only the deterministic not-a-git-repository error allows the
3103
+ // start; every other status failure rejects. Do not raise maxBuffer:
3104
+ // ENOBUFS or already-nonempty stdout means dirt. Untracked (??) or
3105
+ // index-clean worktree mods
3106
+ // (` M`) under tasks/<id>/ are ignored only when tasks/<id>/goal.json is a
3107
+ // regular file — every other status (staged/rename/copy/delete/conflict/
3108
+ // malformed) rejects.
3109
+ // Nested workspaces: status paths are repo-root-relative; strip a verified
3110
+ // `rev-parse --show-prefix` before the ledger check; paths outside the
3111
+ // workspace still refuse.
3112
+ const dirtyStartError = new Error('Autoloop workspace has uncommitted changes; commit or stash them before starting');
3113
+ let porcelain = '';
3114
+ try {
3115
+ porcelain = execFileSync('git', ['-C', opts.workspace, 'status', '--porcelain=v1', '-z', '--untracked-files=all', '--ignore-submodules=none'], {
3116
+ encoding: 'utf8',
3117
+ stdio: ['ignore', 'pipe', 'pipe'],
3118
+ env: { ...process.env, LC_ALL: 'C' },
3119
+ });
3120
+ }
3121
+ catch (err) {
3122
+ const e = err;
3123
+ const partial = typeof e.stdout === 'string' ? e.stdout : Buffer.isBuffer(e.stdout) ? e.stdout.toString('utf8') : '';
3124
+ if (e.code === 'ENOBUFS' || partial.trim() !== '' || !isNotGitRepositoryError(err)) {
3125
+ throw dirtyStartError;
3126
+ }
3127
+ porcelain = '';
3128
+ }
3129
+ if (porcelain.length > 0) {
3130
+ const prefix = readVerifiedGitShowPrefix(opts.workspace);
3131
+ if (prefix === null || porcelainHasDisallowedAutoloopDirt(opts.workspace, porcelain, prefix)) {
3132
+ throw dirtyStartError;
3133
+ }
3134
+ }
2971
3135
  const tag = `${opts.runId}:${randomUUID()}`;
2972
3136
  const ready = new Promise((resolve, reject) => {
2973
3137
  this._autoloopReady.set(tag, { resolve, reject });