@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.
- package/README.md +12 -5
- package/dist/src/autoloop/dispatcher.d.ts +6 -0
- package/dist/src/autoloop/dispatcher.js +20 -0
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/index.js +3 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/models.js +17 -4
- package/dist/src/models.js.map +1 -1
- package/dist/src/persistent-grok-session.js +59 -20
- package/dist/src/persistent-grok-session.js.map +1 -1
- package/dist/src/persistent-opencode-session.d.ts +14 -0
- package/dist/src/persistent-opencode-session.js +43 -1
- package/dist/src/persistent-opencode-session.js.map +1 -1
- package/dist/src/session-manager.js +171 -7
- package/dist/src/session-manager.js.map +1 -1
- package/package.json +1 -1
- package/skills/references/autoloop.md +6 -4
- package/skills/references/claude-cli-tracking.md +3 -1
- package/skills/references/multi-engine.md +21 -11
- package/skills/references/tools.md +59 -59
- package/skills/references/ultra.md +1 -1
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;;;;;;GAcG;AACH,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5C,KAAK,EAAE;QACL,CAAC,eAAe,CAAC,EAAE;YACjB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,kBAAkB,EAAE,MAAM;gBAC1B,uEAAuE;gBACvE,qEAAqE;gBACrE,oEAAoE;gBACpE,gEAAgE;gBAChE,+DAA+D;gBAC/D,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,MAAM;aACjB;YACD,uEAAuE;YACvE,0EAA0E;YAC1E,uEAAuE;YACvE,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;aACb;SACF;KACF;CACF,CAAC,CAAC;AAYH,+EAA+E;AAE/E,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACvD,UAAU,GAA8B,IAAI,CAAC;IAErD;;;;;;;;OAQG;IACK,iBAAiB,CAAU;IAEnC;;;;;OAKG;IACK,gBAAgB,CAAU;IAEf,sBAAsB;QACvC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,YAAY,MAAqB,EAAE,WAAoB;QACrD,KAAK,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,EAAE;YACnE,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,mBAAmB;YACjC,mBAAmB,EAAE,kBAAkB;YACvC,oBAAoB,EAAE,IAAI;YAC1B,kEAAkE;YAClE,sEAAsE;YACtE,yEAAyE;YACzE,2DAA2D;YAC3D,yBAAyB,EAAE,KAAK;YAChC,iBAAiB,EAAE,UAAU;SAC9B,CAAC,CAAC;QACH,0EAA0E;QAC1E,6DAA6D;QAC7D,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAEkB,YAAY;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,YAAY,EAAE,CAAC;IACvB,CAAC;IAES,IAAI,CAAC,OAAe,EAAE,OAA2B;QACzD,0EAA0E;QAC1E,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEnD,6EAA6E;QAC7E,4EAA4E;QAC5E,wEAAwE;QACxE,sEAAsE;QACtE,4EAA4E;QAC5E,IAAI,IAAI,CAAC,iBAAiB;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,0EAA0E;YAC1E,sEAAsE;YACtE,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,oDAAoD;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACxC,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,0EAA0E;QAC1E,wEAAwE;QACxE,sEAAsE;QACtE,wDAAwD;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACrD,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;QAE3C,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,MAAM,KAAK,GAAc;gBACvB,SAAS,EAAE,IAAI,GAAG,EAAE;gBACpB,SAAS,EAAE,IAAI,GAAG,EAAE;gBACpB,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,yEAAyE;YACzE,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,IAAI,oBAAoB,GAAG,KAAK,CAAC;YAEjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;gBAC7C,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;gBACrB,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;gBACxG,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,iFAAiF;YACjF,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAEzB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC;oBACf,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,OAAO;gBACzB,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;oBAC1D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,sEAAsE;oBACtE,IAAI,QAAQ,IAAI,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1E,oBAAoB,GAAG,IAAI,CAAC;oBAC9B,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;oBAC7B,uEAAuE;oBACvE,sEAAsE;oBACtE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;oBACtF,IAAI,CAAC;wBACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,sBAAsB;oBACxB,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACvC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnD,MAAM,IAAI,SAAS,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,qBAAqB,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACzB,CAAC;gBAED,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBAEf,2EAA2E;gBAC3E,sEAAsE;gBACtE,gCAAgC;gBAChC,IAAI,oBAAoB,EAAE,CAAC;oBACzB,yEAAyE;oBACzE,sCAAsC;oBACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM,CACJ,IAAI,KAAK,CACP,iGAAiG;wBAC/F,sGAAsG;wBACtG,4BAA4B,CAC/B,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,0EAA0E;gBAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEhE,iDAAiD;gBACjD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;gBAElD,mEAAmE;gBACnE,uBAAuB;gBACvB,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAE7B,0DAA0D;gBAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;oBACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;gBAED,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE5C,MAAM,KAAK,GAAgB;oBACzB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;iBACvC,CAAC;gBAEF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAE9C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,6BAA6B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEjE,kBAAkB,CAAC,KAA8B,EAAE,OAA2B,EAAE,KAAgB;QACtG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;QAElC,4EAA4E;QAC5E,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,GAAG,GAAI,KAAK,CAAC,SAAoB,IAAK,KAAK,CAAC,SAAoB,IAAK,KAAK,CAAC,UAAqB,CAAC;QACvG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;QACjE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,iBAAiB,GAAG,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAA2C,CAAC;QAE/D,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,IAAI;oBAAE,MAAM;gBACjB,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAI,IAAI,CAAC,EAAa,IAAI,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,IAAI;oBAAE,MAAM;gBACzB,kEAAkE;gBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAClC,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC;wBACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;oBACrC,CAAC;oBAAC,MAAM,CAAC;wBACP,sBAAsB;oBACxB,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,qEAAqE;gBACrE,kEAAkE;gBAClE,IAAI,CAAC,IAAI;oBAAE,MAAM;gBACjB,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;gBACzC,IAAI,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAwB,IAAI,EAAE,CAAC,CAAC;gBACvE,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI;oBAAE,MAAM;gBACjB,MAAM,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAK,IAAI,CAAC,EAAa,IAAI,EAAE,CAAC;gBACpE,IAAI,CAAC,MAAM;oBAAE,MAAM;gBACnB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC5B,IAAI,CAAC;wBACH,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,sBAAsB;oBACxB,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBACD,0EAA0E;gBAC1E,8CAA8C;gBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAA4C,CAAC;gBACpE,MAAM,MAAM,GAAG,SAAS,EAAE,MAA4B,CAAC;gBACvD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1D,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBACD,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACjD,IAAI,CAAC;wBACH,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC3C,CAAC;oBAAC,MAAM,CAAC;wBACP,sBAAsB;oBACxB,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,YAAY;gBACf,gCAAgC;gBAChC,MAAM;YAER,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,IAAI;oBAAE,MAAM;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAEP,CAAC;gBACd,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;oBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,UAAU,CAAC;oBAC9C,qEAAqE;oBACrE,gDAAgD;oBAChD,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;oBAC1E,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChE,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;oBACnE,CAAC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACxB,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzF,MAAM;YAER;gBACE,yDAAyD;gBACzD,MAAM;QACV,CAAC;IACH,CAAC;IAEkB,WAAW;QAC5B,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;;YAChF,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ;QACN,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
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).
|
|
2552
|
-
//
|
|
2553
|
-
//
|
|
2554
|
-
|
|
2555
|
-
if (
|
|
2556
|
-
throw new Error(
|
|
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.
|
|
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 });
|