@enderfga/claw-orchestrator 7.13.0 → 7.15.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 +163 -137
- package/configs/autoloop-reviewer-prompt.md +1 -1
- package/configs/engines/README.md +45 -5
- package/configs/engines/dsh.json +17 -0
- package/configs/engines/kimi-code.json +17 -0
- package/dist/bin/acp-server.js +7 -12
- package/dist/bin/acp-server.js.map +1 -1
- package/dist/bin/cli.js +127 -67
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/mcp-server.js +2 -54
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/src/acp-server.d.ts +17 -9
- package/dist/src/acp-server.js +151 -30
- package/dist/src/acp-server.js.map +1 -1
- package/dist/src/autoloop/agent-tools.d.ts +2 -0
- package/dist/src/autoloop/agent-tools.js +7 -0
- package/dist/src/autoloop/agent-tools.js.map +1 -1
- package/dist/src/autoloop/dispatcher.d.ts +6 -0
- package/dist/src/autoloop/dispatcher.js +23 -1
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/planner-tools.js +2 -0
- package/dist/src/autoloop/planner-tools.js.map +1 -1
- package/dist/src/council.d.ts +8 -0
- package/dist/src/council.js +45 -12
- package/dist/src/council.js.map +1 -1
- package/dist/src/dashboard/index.html +28 -14
- package/dist/src/embedded-server.js +34 -10
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/engine-presets.d.ts +7 -3
- package/dist/src/engine-presets.js +39 -6
- package/dist/src/engine-presets.js.map +1 -1
- package/dist/src/engine-spawn.js +3 -1
- package/dist/src/engine-spawn.js.map +1 -1
- package/dist/src/fanout.d.ts +13 -3
- package/dist/src/fanout.js +10 -0
- package/dist/src/fanout.js.map +1 -1
- package/dist/src/inbox-manager.d.ts +9 -0
- package/dist/src/inbox-manager.js +8 -2
- package/dist/src/inbox-manager.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +136 -52
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/conditions.d.ts +1 -1
- package/dist/src/kernel/conditions.js +1 -1
- package/dist/src/kernel/engine.d.ts +28 -8
- package/dist/src/kernel/engine.js +93 -19
- package/dist/src/kernel/engine.js.map +1 -1
- package/dist/src/kernel/nodes/agent.js +2 -0
- package/dist/src/kernel/nodes/agent.js.map +1 -1
- package/dist/src/kernel/nodes/council.js +9 -4
- package/dist/src/kernel/nodes/council.js.map +1 -1
- package/dist/src/kernel/nodes/fanout.js +5 -0
- package/dist/src/kernel/nodes/fanout.js.map +1 -1
- package/dist/src/kernel/nodes/goal.d.ts +8 -1
- package/dist/src/kernel/nodes/goal.js +40 -19
- package/dist/src/kernel/nodes/goal.js.map +1 -1
- package/dist/src/kernel/nodes/subflow.js +9 -1
- package/dist/src/kernel/nodes/subflow.js.map +1 -1
- package/dist/src/kernel/nodes/ultraapp.d.ts +1 -0
- package/dist/src/kernel/nodes/ultraapp.js +1 -0
- package/dist/src/kernel/nodes/ultraapp.js.map +1 -1
- package/dist/src/kernel/nodes/verifier.js +5 -1
- package/dist/src/kernel/nodes/verifier.js.map +1 -1
- package/dist/src/kernel/projections.d.ts +1 -0
- package/dist/src/kernel/projections.js +7 -1
- package/dist/src/kernel/projections.js.map +1 -1
- package/dist/src/kernel/templates/index.d.ts +6 -3
- package/dist/src/kernel/templates/index.js +8 -3
- package/dist/src/kernel/templates/index.js.map +1 -1
- package/dist/src/kernel/types.d.ts +30 -10
- package/dist/src/kernel/types.js.map +1 -1
- package/dist/src/logger.d.ts +6 -0
- package/dist/src/logger.js +14 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/mcp-annotations.d.ts +13 -0
- package/dist/src/mcp-annotations.js +100 -0
- package/dist/src/mcp-annotations.js.map +1 -0
- package/dist/src/models.d.ts +7 -0
- package/dist/src/models.js +9 -0
- package/dist/src/models.js.map +1 -1
- package/dist/src/openai-compat.d.ts +11 -5
- package/dist/src/openai-compat.js +55 -54
- package/dist/src/openai-compat.js.map +1 -1
- package/dist/src/persistent-acp-session.d.ts +83 -0
- package/dist/src/persistent-acp-session.js +433 -0
- package/dist/src/persistent-acp-session.js.map +1 -0
- package/dist/src/persistent-codex-app-session.d.ts +2 -0
- package/dist/src/persistent-codex-app-session.js +18 -9
- package/dist/src/persistent-codex-app-session.js.map +1 -1
- package/dist/src/persistent-codex-session.d.ts +14 -3
- package/dist/src/persistent-codex-session.js +22 -19
- package/dist/src/persistent-codex-session.js.map +1 -1
- package/dist/src/persistent-custom-session.d.ts +9 -0
- package/dist/src/persistent-custom-session.js +41 -21
- package/dist/src/persistent-custom-session.js.map +1 -1
- package/dist/src/persistent-grok-session.js +1 -1
- package/dist/src/persistent-grok-session.js.map +1 -1
- package/dist/src/run-ledger.d.ts +3 -3
- package/dist/src/session-manager.d.ts +34 -1
- package/dist/src/session-manager.js +169 -30
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +63 -12
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/ultraapp/build.d.ts +5 -11
- package/dist/src/ultraapp/build.js +5 -11
- package/dist/src/ultraapp/build.js.map +1 -1
- package/dist/src/ultraapp/council-adapter.d.ts +5 -2
- package/dist/src/ultraapp/council-adapter.js +6 -6
- package/dist/src/ultraapp/council-adapter.js.map +1 -1
- package/dist/src/ultraapp/files.d.ts +7 -0
- package/dist/src/ultraapp/files.js +7 -1
- package/dist/src/ultraapp/files.js.map +1 -1
- package/dist/src/ultraapp/manager.d.ts +23 -3
- package/dist/src/ultraapp/manager.js +170 -72
- package/dist/src/ultraapp/manager.js.map +1 -1
- package/dist/src/ultraapp/narrator.js +1 -1
- package/dist/src/ultraapp/narrator.js.map +1 -1
- package/dist/src/ultraapp/versions.d.ts +27 -5
- package/dist/src/ultraapp/versions.js +58 -13
- package/dist/src/ultraapp/versions.js.map +1 -1
- package/openclaw.plugin.json +4 -13
- package/package.json +13 -6
- package/skills/SKILL.md +52 -24
- package/skills/references/acp.md +140 -57
- package/skills/references/autoloop.md +141 -35
- package/skills/references/claude-cli-tracking.md +9 -6
- package/skills/references/cli.md +129 -91
- package/skills/references/council.md +44 -22
- package/skills/references/dashboard.md +37 -21
- package/skills/references/getting-started.md +49 -15
- package/skills/references/inbox.md +13 -8
- package/skills/references/mcp.md +25 -17
- package/skills/references/multi-engine.md +180 -144
- package/skills/references/observability.md +90 -58
- package/skills/references/openai-compat.md +172 -82
- package/skills/references/sessions.md +101 -65
- package/skills/references/tools.md +209 -157
- package/skills/references/ultra.md +7 -7
- package/skills/references/ultraapp.md +101 -56
- package/skills/references/verification.md +112 -56
- package/skills/references/workflow.md +227 -93
- package/assets/banner.jpg +0 -0
|
@@ -198,7 +198,7 @@ export class PersistentGrokSession extends BaseOneShotSession {
|
|
|
198
198
|
const timer = setTimeout(() => {
|
|
199
199
|
if (!settled) {
|
|
200
200
|
settled = true;
|
|
201
|
-
proc
|
|
201
|
+
killEngineTree(proc);
|
|
202
202
|
reject(new Error('Timeout waiting for Grok response'));
|
|
203
203
|
}
|
|
204
204
|
}, timeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-grok-session.js","sourceRoot":"","sources":["../../src/persistent-grok-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persistent-grok-session.js","sourceRoot":"","sources":["../../src/persistent-grok-session.ts"],"names":[],"mappings":"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"}
|
package/dist/src/run-ledger.d.ts
CHANGED
|
@@ -66,14 +66,14 @@ export interface RunLedgerRow {
|
|
|
66
66
|
*
|
|
67
67
|
* Not written at turn time, and deliberately so: a turn finishes before the
|
|
68
68
|
* verifier runs, so stamping a verdict there would be inventing one. It is
|
|
69
|
-
* filled in by `annotateVerdicts()` at read time from the run record
|
|
70
|
-
*
|
|
69
|
+
* filled in by `annotateVerdicts()` at read time from the run record. A
|
|
70
|
+
* standalone `verify_run` writes an evidence bundle, not a ledger row.
|
|
71
71
|
*/
|
|
72
72
|
verified?: boolean;
|
|
73
73
|
/** Evidence bundle id under the run directory, when a contract ran. */
|
|
74
74
|
evidenceId?: string;
|
|
75
75
|
contractId?: string;
|
|
76
|
-
/**
|
|
76
|
+
/** The kind of node this turn belonged to, when the caller said. Only fan-out does (`fanout`). */
|
|
77
77
|
nodeKind?: string;
|
|
78
78
|
/** Primary language detected from the repo's manifest. Detected, never guessed from prose. */
|
|
79
79
|
repoLang?: string;
|
|
@@ -53,6 +53,12 @@ export declare class SessionManager {
|
|
|
53
53
|
/** In-flight proxy startup, so concurrent callers share one server. */
|
|
54
54
|
private _proxyStartPromise;
|
|
55
55
|
private _activePids;
|
|
56
|
+
/**
|
|
57
|
+
* Each recorded pid's command line when it was recorded. An orphan is killed
|
|
58
|
+
* only if it is still that process: this is what lets cleanup recognise an
|
|
59
|
+
* ACP agent or a custom engine, whose binary is no fixed name.
|
|
60
|
+
*/
|
|
61
|
+
private _pidCommands;
|
|
56
62
|
private _circuitBreaker;
|
|
57
63
|
private _inbox;
|
|
58
64
|
/** cwd → detected language, so the manifest probe runs once per directory. */
|
|
@@ -92,6 +98,8 @@ export declare class SessionManager {
|
|
|
92
98
|
private _doStartSession;
|
|
93
99
|
private _startReservedSession;
|
|
94
100
|
sendMessage(name: string, message: string, options?: SendOptions): Promise<SendResult>;
|
|
101
|
+
/** `onDispatch` fires once the turn has passed every check and is handed to the engine. */
|
|
102
|
+
private _sendTurn;
|
|
95
103
|
/**
|
|
96
104
|
* Continue a session's conversation in a new session on another engine.
|
|
97
105
|
*
|
|
@@ -114,6 +122,7 @@ export declare class SessionManager {
|
|
|
114
122
|
message?: string;
|
|
115
123
|
maxChars?: number;
|
|
116
124
|
customEngine?: SessionConfig['customEngine'];
|
|
125
|
+
acpAgent?: SessionConfig['acpAgent'];
|
|
117
126
|
}): Promise<{
|
|
118
127
|
name: string;
|
|
119
128
|
engine: EngineType;
|
|
@@ -514,6 +523,7 @@ export declare class SessionManager {
|
|
|
514
523
|
private _savePersisted;
|
|
515
524
|
private _persistSession;
|
|
516
525
|
private static PID_FILE;
|
|
526
|
+
private _forgetPid;
|
|
517
527
|
private _savePids;
|
|
518
528
|
/**
|
|
519
529
|
* Verify that a PID belongs to a known coding CLI before killing it.
|
|
@@ -548,11 +558,26 @@ export declare class SessionManager {
|
|
|
548
558
|
getCouncil(id: string): Council | undefined;
|
|
549
559
|
/** The live council for a run, or a clear error about why there isn't one. */
|
|
550
560
|
private _liveCouncil;
|
|
551
|
-
|
|
561
|
+
/**
|
|
562
|
+
* Abort a council running in this process. One that is not — finished, or
|
|
563
|
+
* running elsewhere — is left alone and the result says so: its worktrees are
|
|
564
|
+
* either awaiting accept/reject or in use by the process that runs it.
|
|
565
|
+
*/
|
|
566
|
+
councilAbort(id: string): {
|
|
567
|
+
aborted: boolean;
|
|
568
|
+
state?: RunState;
|
|
569
|
+
reason?: string;
|
|
570
|
+
};
|
|
552
571
|
councilInject(id: string, message: string): void;
|
|
553
572
|
councilReview(id: string): Promise<CouncilReviewResult>;
|
|
554
573
|
councilAccept(id: string): Promise<CouncilAcceptResult>;
|
|
555
574
|
councilReject(id: string, feedback: string): Promise<CouncilRejectResult>;
|
|
575
|
+
/**
|
|
576
|
+
* Write the decision onto the run, which is where `council_status` reads it.
|
|
577
|
+
* The `Council` that took it is usually rebuilt from the record and dropped,
|
|
578
|
+
* so its own status would go nowhere.
|
|
579
|
+
*/
|
|
580
|
+
private _recordCouncilDecision;
|
|
556
581
|
/**
|
|
557
582
|
* A `Council` for review / accept / reject.
|
|
558
583
|
*
|
|
@@ -572,6 +597,14 @@ export declare class SessionManager {
|
|
|
572
597
|
fanoutStatus(id: string): FanoutSession;
|
|
573
598
|
fanoutAbort(id: string): void;
|
|
574
599
|
private get _sessionLookup();
|
|
600
|
+
/**
|
|
601
|
+
* An inbox delivery is a turn like any other — capped, written to the run
|
|
602
|
+
* ledger and kept in the handoff record — that its sender does not wait on.
|
|
603
|
+
* Resolves once the turn reaches the engine; a refusal before that (spend cap,
|
|
604
|
+
* session stopped) rejects so the inbox queues the message instead. A failure
|
|
605
|
+
* after it belongs to the turn and is recorded with it.
|
|
606
|
+
*/
|
|
607
|
+
private _deliverInboxTurn;
|
|
575
608
|
sessionSendTo(from: string, to: string, message: string, summary?: string): Promise<{
|
|
576
609
|
delivered: boolean;
|
|
577
610
|
queued: boolean;
|
|
@@ -115,7 +115,7 @@ import { detectRepoLang } from './kernel/repo.js';
|
|
|
115
115
|
import { RunKernel, runDir as kernelRunDir } from './kernel/engine.js';
|
|
116
116
|
import { registerDefaultExecutors } from './kernel/nodes/index.js';
|
|
117
117
|
import { autoloopStateFromRecord, makeAutoloopExecutor } from './kernel/nodes/autoloop.js';
|
|
118
|
-
import { isValidRunId, loadRun, readNodeOutput } from './kernel/store.js';
|
|
118
|
+
import { isValidRunId, loadRun, readNodeOutput, runExists } from './kernel/store.js';
|
|
119
119
|
import { LEGACY_NODE, joinFindings, toCouncilSession, toFanoutSession, toUltraplanResult, toUltrareviewResult, } from './kernel/projections.js';
|
|
120
120
|
import { legacyCouncilWorkflow, legacyFanoutWorkflow, legacyUltraplanWorkflow, splitAgentSecrets, } from './kernel/templates/index.js';
|
|
121
121
|
import { normalizeContract } from './verify/contract.js';
|
|
@@ -136,9 +136,10 @@ import { PersistentGrokSession } from './persistent-grok-session.js';
|
|
|
136
136
|
import { PersistentOpencodeSession } from './persistent-opencode-session.js';
|
|
137
137
|
import { PersistentAgySession } from './persistent-agy-session.js';
|
|
138
138
|
import { PersistentCustomSession } from './persistent-custom-session.js';
|
|
139
|
+
import { PersistentAcpSession } from './persistent-acp-session.js';
|
|
139
140
|
import { resolveCustomEngine } from './engine-presets.js';
|
|
140
141
|
import { EFFORT_LEVELS, ENGINE_TYPES, overrideModelPricing, ENGINE_BINARY_NAMES, } from './types.js';
|
|
141
|
-
import { resolveAlias, isClaudeModel, lookupModel } from './models.js';
|
|
142
|
+
import { resolveAlias, isClaudeModel, lookupModel, resolveEngineAndModel } from './models.js';
|
|
142
143
|
import { isAgyConversationId } from './agy-conversation.js';
|
|
143
144
|
import { Council } from './council.js';
|
|
144
145
|
import { AutoloopRunner } from './autoloop/runner.js';
|
|
@@ -216,6 +217,15 @@ function readStoredAutoloopResumeContext(workspace, runId, originalSendTimeoutMs
|
|
|
216
217
|
}
|
|
217
218
|
return { effectiveSendTimeoutMs, pendingDispatch };
|
|
218
219
|
}
|
|
220
|
+
/** A process's command line as `ps` prints it, or undefined when it cannot be read. */
|
|
221
|
+
function processCommand(pid) {
|
|
222
|
+
try {
|
|
223
|
+
return execFileSync('ps', ['-p', String(pid), '-o', 'command='], { encoding: 'utf8', timeout: 3_000 }).trim();
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
219
229
|
function validateSendTimeoutIncrease(value, current) {
|
|
220
230
|
validateAutoloopTimeoutConfig({ sendTimeoutMs: value });
|
|
221
231
|
if (value <= current) {
|
|
@@ -318,8 +328,24 @@ function validateAutoloopRole(role, engine, customEngine) {
|
|
|
318
328
|
throw new Error(`${label} custom engine config is required`);
|
|
319
329
|
validateAutoloopCustomEngine(role, customEngine);
|
|
320
330
|
}
|
|
331
|
+
// An Autoloop role is configured by engine name alone and has no field for the
|
|
332
|
+
// agent an `acp` engine starts, so the session could only fail later.
|
|
333
|
+
if (resolved === 'acp')
|
|
334
|
+
throw new Error(`${label} engine 'acp' is not supported by Autoloop`);
|
|
321
335
|
return resolved;
|
|
322
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* The plugin's `defaultModel` for a session on `engine` that names no model, or
|
|
339
|
+
* undefined to let the engine run its own default. Engines do not share a model
|
|
340
|
+
* namespace, so the default goes only to an engine that runs it; the claude
|
|
341
|
+
* engine takes any model, proxying a non-Claude one to the gateway.
|
|
342
|
+
*/
|
|
343
|
+
function defaultModelFor(engine, defaultModel) {
|
|
344
|
+
if (!defaultModel || engine === 'claude')
|
|
345
|
+
return defaultModel;
|
|
346
|
+
const owner = resolveEngineAndModel(defaultModel).engine;
|
|
347
|
+
return owner === (engine === 'codex-app' ? 'codex' : engine) ? defaultModel : undefined;
|
|
348
|
+
}
|
|
323
349
|
function validateAutoloopEffort(role, effort) {
|
|
324
350
|
if (effort === undefined)
|
|
325
351
|
return;
|
|
@@ -788,6 +814,12 @@ export class SessionManager {
|
|
|
788
814
|
/** In-flight proxy startup, so concurrent callers share one server. */
|
|
789
815
|
_proxyStartPromise = null;
|
|
790
816
|
_activePids = new Map();
|
|
817
|
+
/**
|
|
818
|
+
* Each recorded pid's command line when it was recorded. An orphan is killed
|
|
819
|
+
* only if it is still that process: this is what lets cleanup recognise an
|
|
820
|
+
* ACP agent or a custom engine, whose binary is no fixed name.
|
|
821
|
+
*/
|
|
822
|
+
_pidCommands = new Map();
|
|
791
823
|
_circuitBreaker = new CircuitBreaker();
|
|
792
824
|
_inbox = new InboxManager();
|
|
793
825
|
/** cwd → detected language, so the manifest probe runs once per directory. */
|
|
@@ -928,6 +960,7 @@ export class SessionManager {
|
|
|
928
960
|
const persisted = skipPersist ? undefined : this.persistedSessions.get(name);
|
|
929
961
|
// Unified: only use resumeSessionId (claudeResumeId is an internal alias, not exposed)
|
|
930
962
|
const resumeId = config.resumeSessionId ?? persisted?.claudeSessionId;
|
|
963
|
+
const engine = config.engine || persisted?.engine || 'claude';
|
|
931
964
|
// ORDER IS LOAD-BEARING — do not "fix" it by moving `...config` up.
|
|
932
965
|
//
|
|
933
966
|
// Object spread copies own keys even when their value is `undefined`, so any
|
|
@@ -943,7 +976,7 @@ export class SessionManager {
|
|
|
943
976
|
cwd: config.cwd || persisted?.cwd || process.cwd(),
|
|
944
977
|
permissionMode: config.permissionMode || this.pluginConfig.defaultPermissionMode,
|
|
945
978
|
effort: config.effort || this.pluginConfig.defaultEffort,
|
|
946
|
-
model: config.model || persisted?.model || this.pluginConfig.defaultModel,
|
|
979
|
+
model: config.model || persisted?.model || defaultModelFor(engine, this.pluginConfig.defaultModel),
|
|
947
980
|
sandboxMode: config.sandboxMode ?? persisted?.sandboxMode,
|
|
948
981
|
autoCompactPercent: config.autoCompactPercent ?? persisted?.autoCompactPercent,
|
|
949
982
|
chrome: config.chrome ?? persisted?.chrome,
|
|
@@ -954,16 +987,15 @@ export class SessionManager {
|
|
|
954
987
|
if (fullConfig.model) {
|
|
955
988
|
fullConfig.resolvedModel = this._resolveModel(fullConfig.model, fullConfig.modelOverrides);
|
|
956
989
|
}
|
|
957
|
-
// Auto-inject proxy baseUrl for non-Claude models on the claude engine.
|
|
958
|
-
// Starts a local proxy server that converts Anthropic → OpenAI format
|
|
959
|
-
// and forwards to the OpenClaw gateway. Zero config required.
|
|
960
|
-
const engine = fullConfig.engine || persisted?.engine || 'claude';
|
|
961
990
|
// Write the resolved engine back so downstream consumers of the managed
|
|
962
991
|
// config (agy resume-id lookups, _persistSession's registry entry) see the
|
|
963
992
|
// real engine even when it came from the persisted registry.
|
|
964
993
|
fullConfig.engine = engine;
|
|
965
994
|
// Circuit breaker — reject early if engine is in backoff
|
|
966
995
|
this._circuitBreaker.check(engine);
|
|
996
|
+
// Auto-inject proxy baseUrl for non-Claude models on the claude engine.
|
|
997
|
+
// Starts a local proxy server that converts Anthropic → OpenAI format
|
|
998
|
+
// and forwards to the OpenClaw gateway. Zero config required.
|
|
967
999
|
if (engine === 'claude' && fullConfig.resolvedModel && !fullConfig.baseUrl) {
|
|
968
1000
|
if (!isClaudeModel(fullConfig.resolvedModel)) {
|
|
969
1001
|
const proxyPort = await this._ensureProxyServer();
|
|
@@ -986,6 +1018,9 @@ export class SessionManager {
|
|
|
986
1018
|
// Track child process PID for orphan cleanup
|
|
987
1019
|
if (session.pid) {
|
|
988
1020
|
this._activePids.set(name, session.pid);
|
|
1021
|
+
const command = processCommand(session.pid);
|
|
1022
|
+
if (command)
|
|
1023
|
+
this._pidCommands.set(session.pid, command);
|
|
989
1024
|
this._savePids();
|
|
990
1025
|
}
|
|
991
1026
|
const managed = {
|
|
@@ -1007,6 +1042,10 @@ export class SessionManager {
|
|
|
1007
1042
|
return this._toSessionInfo(name, managed);
|
|
1008
1043
|
}
|
|
1009
1044
|
async sendMessage(name, message, options = {}) {
|
|
1045
|
+
return this._sendTurn(name, message, options);
|
|
1046
|
+
}
|
|
1047
|
+
/** `onDispatch` fires once the turn has passed every check and is handed to the engine. */
|
|
1048
|
+
async _sendTurn(name, message, options, onDispatch) {
|
|
1010
1049
|
const managed = this._getSession(name);
|
|
1011
1050
|
// Per-session serialization. Two concurrent sendMessage() calls on the
|
|
1012
1051
|
// same session previously raced on PersistentClaudeSession._streamCallbacks
|
|
@@ -1102,7 +1141,14 @@ export class SessionManager {
|
|
|
1102
1141
|
// A session handed off from another engine carries that conversation in
|
|
1103
1142
|
// front of its first message; after that the engine holds it itself.
|
|
1104
1143
|
const outgoing = managed.pendingHandoff ? `${managed.pendingHandoff}\n\n${message}` : message;
|
|
1144
|
+
onDispatch?.();
|
|
1105
1145
|
const result = await managed.session.send(outgoing, sendOpts);
|
|
1146
|
+
const after = this._statsSnapshot(managed);
|
|
1147
|
+
const usage = {
|
|
1148
|
+
tokensIn: Math.max(0, after.tokensIn - ledgerBefore.tokensIn),
|
|
1149
|
+
tokensOut: Math.max(0, after.tokensOut - ledgerBefore.tokensOut),
|
|
1150
|
+
costUsd: Math.max(0, after.costUsd - ledgerBefore.costUsd),
|
|
1151
|
+
};
|
|
1106
1152
|
// Update the resume-capable session ID if available (skip disk persist
|
|
1107
1153
|
// for ephemeral sessions that were started with skipPersistence)
|
|
1108
1154
|
const resumableId = this._managedResumeId(managed);
|
|
@@ -1144,11 +1190,12 @@ export class SessionManager {
|
|
|
1144
1190
|
sessionId: this._managedResumeId(managed),
|
|
1145
1191
|
error: turnError,
|
|
1146
1192
|
events: [],
|
|
1193
|
+
usage,
|
|
1147
1194
|
...(permissionDenials.length ? { permissionDenials } : {}),
|
|
1148
1195
|
...(images.length ? { images } : {}),
|
|
1149
1196
|
};
|
|
1150
1197
|
}
|
|
1151
|
-
return { output: '', sessionId: this._managedResumeId(managed), events: [] };
|
|
1198
|
+
return { output: '', sessionId: this._managedResumeId(managed), events: [], usage };
|
|
1152
1199
|
}
|
|
1153
1200
|
catch (err) {
|
|
1154
1201
|
turnError = err.message;
|
|
@@ -1218,6 +1265,7 @@ export class SessionManager {
|
|
|
1218
1265
|
engine: opts.engine,
|
|
1219
1266
|
...(opts.model ? { model: opts.model } : {}),
|
|
1220
1267
|
...(opts.customEngine ? { customEngine: opts.customEngine } : {}),
|
|
1268
|
+
...(opts.acpAgent ? { acpAgent: opts.acpAgent } : {}),
|
|
1221
1269
|
});
|
|
1222
1270
|
const target = this._getSession(targetName);
|
|
1223
1271
|
// The new session's record starts as the source's, so a second handoff from
|
|
@@ -1533,6 +1581,11 @@ export class SessionManager {
|
|
|
1533
1581
|
if (!contract)
|
|
1534
1582
|
throw new Error('verifyRun requires a contract with at least one recognised check');
|
|
1535
1583
|
const runId = args.label || `verify-${Date.now().toString(36)}`;
|
|
1584
|
+
// The bundle goes under the run store, keyed by the label. A label naming a
|
|
1585
|
+
// workflow run would plant this evidence in that run's directory.
|
|
1586
|
+
if (runExists(runId)) {
|
|
1587
|
+
throw new Error(`verify_run label '${runId}' names an existing workflow run; choose another label`);
|
|
1588
|
+
}
|
|
1536
1589
|
const dir = kernelRunDir(runId);
|
|
1537
1590
|
const evidenceId = 'verify-01';
|
|
1538
1591
|
const { results, rounds } = await runContract(contract, {
|
|
@@ -1559,7 +1612,7 @@ export class SessionManager {
|
|
|
1559
1612
|
managed.session.stop();
|
|
1560
1613
|
this.sessions.delete(name);
|
|
1561
1614
|
// Remove PID tracking
|
|
1562
|
-
this.
|
|
1615
|
+
this._forgetPid(name);
|
|
1563
1616
|
this._savePids();
|
|
1564
1617
|
if (!opts.keepPersisted) {
|
|
1565
1618
|
// Explicit stop = user intent to end session — remove from disk too.
|
|
@@ -1568,6 +1621,9 @@ export class SessionManager {
|
|
|
1568
1621
|
// Claude conversation) pass keepPersisted: true.
|
|
1569
1622
|
this._forgetPersisted(name);
|
|
1570
1623
|
this._savePersisted();
|
|
1624
|
+
// Its unread mail was for this conversation; a later session that takes
|
|
1625
|
+
// the name is a different one and must not receive it.
|
|
1626
|
+
this._inbox.clear(name);
|
|
1571
1627
|
}
|
|
1572
1628
|
}
|
|
1573
1629
|
hasSession(name) {
|
|
@@ -1960,6 +2016,7 @@ export class SessionManager {
|
|
|
1960
2016
|
this.sessions.clear();
|
|
1961
2017
|
// Clear PID tracking
|
|
1962
2018
|
this._activePids.clear();
|
|
2019
|
+
this._pidCommands.clear();
|
|
1963
2020
|
this._savePids();
|
|
1964
2021
|
// Stop proxy server
|
|
1965
2022
|
if (this._proxyServer) {
|
|
@@ -2435,6 +2492,12 @@ export class SessionManager {
|
|
|
2435
2492
|
}
|
|
2436
2493
|
// ─── PID Tracking ──────────────────────────────────────────────────────
|
|
2437
2494
|
static PID_FILE = path.join(os.homedir(), '.openclaw', 'session-pids.json');
|
|
2495
|
+
_forgetPid(name) {
|
|
2496
|
+
const pid = this._activePids.get(name);
|
|
2497
|
+
if (pid !== undefined)
|
|
2498
|
+
this._pidCommands.delete(pid);
|
|
2499
|
+
this._activePids.delete(name);
|
|
2500
|
+
}
|
|
2438
2501
|
_savePids() {
|
|
2439
2502
|
try {
|
|
2440
2503
|
const dir = path.dirname(SessionManager.PID_FILE);
|
|
@@ -2478,11 +2541,13 @@ export class SessionManager {
|
|
|
2478
2541
|
pid: entry.pid,
|
|
2479
2542
|
ownerPid: entry.ownerPid,
|
|
2480
2543
|
since: entry.since ?? now,
|
|
2544
|
+
...(typeof entry.command === 'string' ? { command: entry.command } : {}),
|
|
2481
2545
|
};
|
|
2482
2546
|
}
|
|
2483
2547
|
// Add OUR current entries
|
|
2484
2548
|
for (const [name, pid] of this._activePids) {
|
|
2485
|
-
|
|
2549
|
+
const command = this._pidCommands.get(pid);
|
|
2550
|
+
merged[name] = { pid, ownerPid: process.pid, since: now, ...(command ? { command } : {}) };
|
|
2486
2551
|
}
|
|
2487
2552
|
fs.writeFileSync(SessionManager.PID_FILE, JSON.stringify(merged));
|
|
2488
2553
|
}
|
|
@@ -2494,7 +2559,7 @@ export class SessionManager {
|
|
|
2494
2559
|
* Verify that a PID belongs to a known coding CLI before killing it.
|
|
2495
2560
|
* Prevents killing unrelated processes if the OS recycled the PID.
|
|
2496
2561
|
*/
|
|
2497
|
-
_isKnownCliProcess(pid) {
|
|
2562
|
+
_isKnownCliProcess(pid, recordedCommand) {
|
|
2498
2563
|
// Match known CLI binaries by basename to avoid false positives
|
|
2499
2564
|
// (e.g., 'agent' must not match 'ssh-agent' or 'gpg-agent')
|
|
2500
2565
|
// Anchor each name to executable/path position ((?:^|[/\s])name(?:[\s/]|$))
|
|
@@ -2509,16 +2574,14 @@ export class SessionManager {
|
|
|
2509
2574
|
...ENGINE_BINARY_NAMES.map((bin) => new RegExp(`(?:^|[/\\s])${bin}(?:[\\s/]|$)`)),
|
|
2510
2575
|
/(?:^|\/)agent(?:[\s/]|$)/, // 'agent' only as executable/after a slash (not ssh-agent)
|
|
2511
2576
|
];
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
encoding: 'utf8',
|
|
2515
|
-
timeout: 3_000,
|
|
2516
|
-
}).trim();
|
|
2517
|
-
return knownPatterns.some((pattern) => pattern.test(cmd));
|
|
2518
|
-
}
|
|
2519
|
-
catch {
|
|
2577
|
+
const cmd = processCommand(pid);
|
|
2578
|
+
if (cmd === undefined)
|
|
2520
2579
|
return false; // ps failed — process likely dead or not accessible
|
|
2521
|
-
|
|
2580
|
+
// The same command line as when it was recorded: the process itself, not a
|
|
2581
|
+
// recycled pid — whatever binary it runs.
|
|
2582
|
+
if (recordedCommand && cmd === recordedCommand)
|
|
2583
|
+
return true;
|
|
2584
|
+
return knownPatterns.some((pattern) => pattern.test(cmd));
|
|
2522
2585
|
}
|
|
2523
2586
|
_cleanupOrphanedPids() {
|
|
2524
2587
|
try {
|
|
@@ -2529,6 +2592,7 @@ export class SessionManager {
|
|
|
2529
2592
|
// Resolve entry shape: legacy = number; current = { pid, ownerPid, since }.
|
|
2530
2593
|
let pid;
|
|
2531
2594
|
let ownerPid;
|
|
2595
|
+
let recordedCommand;
|
|
2532
2596
|
if (typeof raw === 'number') {
|
|
2533
2597
|
pid = raw;
|
|
2534
2598
|
ownerPid = null; // unknown owner — treat conservatively (skip kill)
|
|
@@ -2539,6 +2603,7 @@ export class SessionManager {
|
|
|
2539
2603
|
continue;
|
|
2540
2604
|
pid = e.pid;
|
|
2541
2605
|
ownerPid = typeof e.ownerPid === 'number' ? e.ownerPid : null;
|
|
2606
|
+
recordedCommand = typeof e.command === 'string' ? e.command : undefined;
|
|
2542
2607
|
}
|
|
2543
2608
|
else {
|
|
2544
2609
|
continue;
|
|
@@ -2571,7 +2636,7 @@ export class SessionManager {
|
|
|
2571
2636
|
try {
|
|
2572
2637
|
process.kill(pid, 0); // check if alive
|
|
2573
2638
|
// Alive — but verify it's actually a coding CLI, not a recycled PID
|
|
2574
|
-
if (!this._isKnownCliProcess(pid)) {
|
|
2639
|
+
if (!this._isKnownCliProcess(pid, recordedCommand)) {
|
|
2575
2640
|
this.logger.info(`PID ${pid} (session: ${name}) is alive but not a known CLI — skipping kill`);
|
|
2576
2641
|
continue;
|
|
2577
2642
|
}
|
|
@@ -2676,6 +2741,10 @@ export class SessionManager {
|
|
|
2676
2741
|
if (engine === 'codex-app') {
|
|
2677
2742
|
return session.codexThreadId;
|
|
2678
2743
|
}
|
|
2744
|
+
// Likewise an ACP session's `sessionId` is ours; the agent resumes its own.
|
|
2745
|
+
if (engine === 'acp') {
|
|
2746
|
+
return session.agentSessionId;
|
|
2747
|
+
}
|
|
2679
2748
|
return session.sessionId;
|
|
2680
2749
|
}
|
|
2681
2750
|
_storedResumeId(engine, id) {
|
|
@@ -2687,6 +2756,8 @@ export class SessionManager {
|
|
|
2687
2756
|
return id && !/^grok-\d+-/.test(id) ? id : undefined;
|
|
2688
2757
|
if (engine === 'codex-app')
|
|
2689
2758
|
return id && !id.startsWith('codex-app-') ? id : undefined;
|
|
2759
|
+
if (engine === 'acp')
|
|
2760
|
+
return id && !id.startsWith('acp-') ? id : undefined;
|
|
2690
2761
|
return id;
|
|
2691
2762
|
}
|
|
2692
2763
|
_listMdFiles(dir) {
|
|
@@ -2728,6 +2799,8 @@ export class SessionManager {
|
|
|
2728
2799
|
if (!config.customEngine)
|
|
2729
2800
|
throw new Error('customEngine config is required for engine type "custom"');
|
|
2730
2801
|
return new PersistentCustomSession(config);
|
|
2802
|
+
case 'acp':
|
|
2803
|
+
return new PersistentAcpSession(config);
|
|
2731
2804
|
case 'claude':
|
|
2732
2805
|
default:
|
|
2733
2806
|
return new PersistentClaudeSession(config, this.pluginConfig.claudeBin);
|
|
@@ -2795,12 +2868,26 @@ export class SessionManager {
|
|
|
2795
2868
|
throw new Error(`Council '${id}' not found`);
|
|
2796
2869
|
throw new Error(`Council '${id}' is ${record.state} and not running in this process — its record is readable, but there is no live round to act on`);
|
|
2797
2870
|
}
|
|
2871
|
+
/**
|
|
2872
|
+
* Abort a council running in this process. One that is not — finished, or
|
|
2873
|
+
* running elsewhere — is left alone and the result says so: its worktrees are
|
|
2874
|
+
* either awaiting accept/reject or in use by the process that runs it.
|
|
2875
|
+
*/
|
|
2798
2876
|
councilAbort(id) {
|
|
2799
2877
|
// Cancel the run first so the kernel stops advancing, then abort the engine
|
|
2800
2878
|
// so the current round tears down its worktrees.
|
|
2801
|
-
if (
|
|
2879
|
+
if (this.kernel.cancel(id)) {
|
|
2880
|
+
this.kernel.handle(id, LEGACY_NODE)?.abort();
|
|
2881
|
+
return { aborted: true };
|
|
2882
|
+
}
|
|
2883
|
+
const record = loadRun(id);
|
|
2884
|
+
if (!record)
|
|
2802
2885
|
throw new Error(`Council '${id}' not found`);
|
|
2803
|
-
|
|
2886
|
+
return {
|
|
2887
|
+
aborted: false,
|
|
2888
|
+
state: record.state,
|
|
2889
|
+
reason: `Council '${id}' is ${record.state} and not running in this process — nothing was aborted`,
|
|
2890
|
+
};
|
|
2804
2891
|
}
|
|
2805
2892
|
councilInject(id, message) {
|
|
2806
2893
|
this._liveCouncil(id).injectMessage(message);
|
|
@@ -2809,10 +2896,34 @@ export class SessionManager {
|
|
|
2809
2896
|
return this._councilForPostProcessing(id).review();
|
|
2810
2897
|
}
|
|
2811
2898
|
async councilAccept(id) {
|
|
2812
|
-
|
|
2899
|
+
const result = await this._councilForPostProcessing(id).accept();
|
|
2900
|
+
this._recordCouncilDecision(id, 'accepted');
|
|
2901
|
+
return result;
|
|
2813
2902
|
}
|
|
2814
2903
|
async councilReject(id, feedback) {
|
|
2815
|
-
|
|
2904
|
+
const result = await this._councilForPostProcessing(id).reject(feedback);
|
|
2905
|
+
this._recordCouncilDecision(id, 'rejected');
|
|
2906
|
+
return result;
|
|
2907
|
+
}
|
|
2908
|
+
/**
|
|
2909
|
+
* Write the decision onto the run, which is where `council_status` reads it.
|
|
2910
|
+
* The `Council` that took it is usually rebuilt from the record and dropped,
|
|
2911
|
+
* so its own status would go nowhere.
|
|
2912
|
+
*/
|
|
2913
|
+
_recordCouncilDecision(id, status) {
|
|
2914
|
+
// A council live in this process carries the status on its own session.
|
|
2915
|
+
if (this.kernel.handle(id, LEGACY_NODE))
|
|
2916
|
+
return;
|
|
2917
|
+
let recorded = false;
|
|
2918
|
+
let why = 'the run has not finished';
|
|
2919
|
+
try {
|
|
2920
|
+
recorded = this.kernel.amendFinishedNode(id, LEGACY_NODE, { councilStatus: status }, `council ${status}`);
|
|
2921
|
+
}
|
|
2922
|
+
catch (err) {
|
|
2923
|
+
why = err.message;
|
|
2924
|
+
}
|
|
2925
|
+
if (!recorded)
|
|
2926
|
+
this.logger.warn(`[council] ${id}: ${status}, but the status could not be recorded (${why})`);
|
|
2816
2927
|
}
|
|
2817
2928
|
/**
|
|
2818
2929
|
* A `Council` for review / accept / reject.
|
|
@@ -2861,6 +2972,7 @@ export class SessionManager {
|
|
|
2861
2972
|
synthesize: config.synthesize,
|
|
2862
2973
|
synthesisEngine: config.synthesisEngine,
|
|
2863
2974
|
synthesisModel: config.synthesisModel,
|
|
2975
|
+
synthesisAcpAgent: config.synthesisAcpAgent,
|
|
2864
2976
|
synthesisPermissionMode: config.synthesisPermissionMode,
|
|
2865
2977
|
maxTurnsPerAgent: config.maxTurnsPerAgent,
|
|
2866
2978
|
maxBudgetUsd: config.maxBudgetUsd,
|
|
@@ -2886,8 +2998,30 @@ export class SessionManager {
|
|
|
2886
2998
|
getSession: (name) => this.sessions.get(name),
|
|
2887
2999
|
exists: (name) => this.sessions.has(name),
|
|
2888
3000
|
allNames: () => this.sessions.keys(),
|
|
3001
|
+
deliver: (name, text) => this._deliverInboxTurn(name, text),
|
|
2889
3002
|
};
|
|
2890
3003
|
}
|
|
3004
|
+
/**
|
|
3005
|
+
* An inbox delivery is a turn like any other — capped, written to the run
|
|
3006
|
+
* ledger and kept in the handoff record — that its sender does not wait on.
|
|
3007
|
+
* Resolves once the turn reaches the engine; a refusal before that (spend cap,
|
|
3008
|
+
* session stopped) rejects so the inbox queues the message instead. A failure
|
|
3009
|
+
* after it belongs to the turn and is recorded with it.
|
|
3010
|
+
*/
|
|
3011
|
+
_deliverInboxTurn(name, text) {
|
|
3012
|
+
return new Promise((resolve, reject) => {
|
|
3013
|
+
let dispatched = false;
|
|
3014
|
+
this._sendTurn(name, text, {}, () => {
|
|
3015
|
+
dispatched = true;
|
|
3016
|
+
resolve();
|
|
3017
|
+
}).then(() => resolve(), (err) => {
|
|
3018
|
+
if (!dispatched)
|
|
3019
|
+
reject(err);
|
|
3020
|
+
else
|
|
3021
|
+
this.logger.warn(`[SessionManager] inbox turn on '${name}' failed: ${err.message}`);
|
|
3022
|
+
});
|
|
3023
|
+
});
|
|
3024
|
+
}
|
|
2891
3025
|
async sessionSendTo(from, to, message, summary) {
|
|
2892
3026
|
return this._inbox.sendTo(from, to, message, this._sessionLookup, summary, (name, err) => {
|
|
2893
3027
|
this.logger.error(`Broadcast delivery to '${name}' failed:`, err.message);
|
|
@@ -2963,10 +3097,14 @@ export class SessionManager {
|
|
|
2963
3097
|
// Every reviewer runs read-only (see below). A custom reviewer has no config
|
|
2964
3098
|
// to start from, so it is turned away here instead of failing one reviewer
|
|
2965
3099
|
// at a time. (grok was turned away too until its read-only mode moved onto
|
|
2966
|
-
// grok's OS sandbox.)
|
|
3100
|
+
// grok's OS sandbox.) An ACP agent cannot be held read-only at all: its tools
|
|
3101
|
+
// run inside the agent, so the session would refuse to start.
|
|
2967
3102
|
if ((opts?.engines ?? []).includes('custom')) {
|
|
2968
3103
|
throw new Error('ultrareview cannot use custom: reviewers run read-only, which a custom engine cannot be configured for here');
|
|
2969
3104
|
}
|
|
3105
|
+
if ((opts?.engines ?? []).includes('acp')) {
|
|
3106
|
+
throw new Error('ultrareview cannot use acp: reviewers run read-only, which an ACP agent cannot be held to');
|
|
3107
|
+
}
|
|
2970
3108
|
const id = `ultrareview-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
2971
3109
|
const agentCount = Math.min(20, Math.max(1, opts?.agentCount || 5));
|
|
2972
3110
|
const result = {
|
|
@@ -3095,9 +3233,10 @@ export class SessionManager {
|
|
|
3095
3233
|
// Review is read-only: reviewers analyse and report without modifying the
|
|
3096
3234
|
// very code they review. Unlike council, fan-out shares the project dir —
|
|
3097
3235
|
// there is no worktree to contain an edit — so this has to hold on every
|
|
3098
|
-
// engine. `plan`
|
|
3099
|
-
// engine-agnostic setting, which codex,
|
|
3100
|
-
// read-only modes. Before it was set, a
|
|
3236
|
+
// engine. `plan` reaches only the engines with a plan mode (Claude, Grok);
|
|
3237
|
+
// `sandboxMode: 'read-only'` is the engine-agnostic setting, which codex,
|
|
3238
|
+
// agy and opencode map to their own read-only modes. Before it was set, a
|
|
3239
|
+
// codex reviewer ran workspace-write.
|
|
3101
3240
|
permissionMode: 'plan',
|
|
3102
3241
|
sandboxMode: 'read-only',
|
|
3103
3242
|
}));
|
|
@@ -3858,7 +3997,7 @@ export class SessionManager {
|
|
|
3858
3997
|
// owner. After an unclean exit `_cleanupOrphanedPids()` reads them back
|
|
3859
3998
|
// and probes each one; a PID the OS has since recycled to a
|
|
3860
3999
|
// coding-CLI-shaped process gets killed.
|
|
3861
|
-
this.
|
|
4000
|
+
this._forgetPid(name);
|
|
3862
4001
|
pidsChanged = true;
|
|
3863
4002
|
// NOTE: do NOT delete from persistedSessions — idle cleanup is
|
|
3864
4003
|
// in-memory only. Persisted entries survive for PERSIST_DISK_TTL_MS
|