@enderfga/claw-orchestrator 3.4.2 → 3.5.6
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 +9 -9
- package/configs/autoloop-coder-prompt.md +59 -0
- package/configs/autoloop-planner-prompt.md +136 -0
- package/configs/autoloop-reviewer-prompt.md +76 -0
- package/dist/bin/cli.js +30 -4
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/autoloop/agent-tools.d.ts +44 -0
- package/dist/src/autoloop/agent-tools.js +71 -0
- package/dist/src/autoloop/agent-tools.js.map +1 -0
- package/dist/src/autoloop/dispatcher.d.ts +137 -0
- package/dist/src/autoloop/dispatcher.js +580 -0
- package/dist/src/autoloop/dispatcher.js.map +1 -0
- package/dist/src/autoloop/messages.d.ts +114 -0
- package/dist/src/autoloop/messages.js +92 -0
- package/dist/src/autoloop/messages.js.map +1 -0
- package/dist/src/autoloop/notify.d.ts +36 -0
- package/dist/src/autoloop/notify.js +166 -0
- package/dist/src/autoloop/notify.js.map +1 -0
- package/dist/src/autoloop/planner-tools.d.ts +81 -0
- package/dist/src/autoloop/planner-tools.js +140 -0
- package/dist/src/autoloop/planner-tools.js.map +1 -0
- package/dist/src/autoloop/runner.d.ts +48 -0
- package/dist/src/autoloop/runner.js +214 -0
- package/dist/src/autoloop/runner.js.map +1 -0
- package/dist/src/autoloop/types.d.ts +69 -0
- package/dist/src/autoloop/types.js +16 -0
- package/dist/src/autoloop/types.js.map +1 -0
- package/dist/src/dashboard/index.html +910 -0
- package/dist/src/embedded-server.d.ts +1 -0
- package/dist/src/embedded-server.js +237 -51
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.js +67 -105
- package/dist/src/index.js.map +1 -1
- package/dist/src/session-manager.d.ts +47 -14
- package/dist/src/session-manager.js +135 -47
- package/dist/src/session-manager.js.map +1 -1
- package/package.json +2 -2
- package/skills/references/autoloop.md +176 -193
- package/configs/autoloop-bootstrap-prompt.md +0 -30
- package/configs/autoloop-compress-prompt.md +0 -50
- package/configs/autoloop-propose-prompt.md +0 -57
- package/configs/autoloop-ratchet-prompt.md +0 -56
- package/dist/src/autoloop-types.d.ts +0 -218
- package/dist/src/autoloop-types.js +0 -130
- package/dist/src/autoloop-types.js.map +0 -1
- package/dist/src/autoloop.d.ts +0 -70
- package/dist/src/autoloop.js +0 -910
- package/dist/src/autoloop.js.map +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClaudeAgentDispatcher — wires the v2 runner to real persistent Claude
|
|
3
|
+
* sessions managed by SessionManager.
|
|
4
|
+
*
|
|
5
|
+
* S2 scope: Planner only (chat-mode, no subagents yet). Coder/Reviewer
|
|
6
|
+
* delivery throws — S4 wires them in.
|
|
7
|
+
*
|
|
8
|
+
* Naming convention:
|
|
9
|
+
* autoloop-<run_id>-planner
|
|
10
|
+
* autoloop-<run_id>-coder (S4)
|
|
11
|
+
* autoloop-<run_id>-reviewer (S4)
|
|
12
|
+
*
|
|
13
|
+
* Reply path:
|
|
14
|
+
* When the user chats, we sendMessage(planner, text) and capture the
|
|
15
|
+
* Planner's natural-language reply. The reply is *not* a v2 message —
|
|
16
|
+
* it is emitted as the dispatcher's own 'planner_reply' event so the
|
|
17
|
+
* `autoloop_chat` plugin tool can return it to the user. Structured
|
|
18
|
+
* signals (S3+) will be parsed out of the same reply text and pushed
|
|
19
|
+
* into the runner queue.
|
|
20
|
+
*/
|
|
21
|
+
import { EventEmitter } from 'node:events';
|
|
22
|
+
import type { SessionManager } from '../session-manager.js';
|
|
23
|
+
import type { Logger } from '../logger.js';
|
|
24
|
+
import { type AnyAutoloopMessage } from './messages.js';
|
|
25
|
+
import type { AgentDispatcher, AutoloopState, PushPolicy } from './types.js';
|
|
26
|
+
import { type SpawnSubagentsArgs } from './planner-tools.js';
|
|
27
|
+
export interface ClaudeAgentDispatcherConfig {
|
|
28
|
+
manager: SessionManager;
|
|
29
|
+
runId: string;
|
|
30
|
+
workspace: string;
|
|
31
|
+
/** Override the default Planner system prompt (default loads from configs/autoloop-planner-prompt.md). */
|
|
32
|
+
plannerPromptPath?: string;
|
|
33
|
+
/** Override Coder/Reviewer prompt paths (defaults walk-up to configs/autoloop-{coder,reviewer}-prompt.md). */
|
|
34
|
+
coderPromptPath?: string;
|
|
35
|
+
reviewerPromptPath?: string;
|
|
36
|
+
/** Model alias for Planner (default: 'opus'). */
|
|
37
|
+
plannerModel?: string;
|
|
38
|
+
/** Default Coder model (default: 'sonnet'). Can be overridden per spawn_subagents call. */
|
|
39
|
+
coderModel?: string;
|
|
40
|
+
/** Default Reviewer model (default: 'sonnet'). */
|
|
41
|
+
reviewerModel?: string;
|
|
42
|
+
/** Per-message wall-clock cap. Default 10 min. */
|
|
43
|
+
sendTimeoutMs?: number;
|
|
44
|
+
logger?: Logger;
|
|
45
|
+
/**
|
|
46
|
+
* Auto-compact thresholds (percent of context window). When the agent's
|
|
47
|
+
* `contextPercent` (from getStats) climbs above its threshold after a
|
|
48
|
+
* turn, the dispatcher dispatches `/compact <agent-specific summary>` to
|
|
49
|
+
* that agent. Defaults: Planner 80%, Coder 70%, Reviewer 70%.
|
|
50
|
+
*
|
|
51
|
+
* Per the design doc §7: each agent's context is precious; don't let it
|
|
52
|
+
* silently fill until the API rejects.
|
|
53
|
+
*/
|
|
54
|
+
compactThresholds?: {
|
|
55
|
+
planner?: number;
|
|
56
|
+
coder?: number;
|
|
57
|
+
reviewer?: number;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Push-policy ref that S3's update_push_policy mutates. Caller (SessionManager)
|
|
61
|
+
* passes its own policy object so changes are visible to the runner.
|
|
62
|
+
*/
|
|
63
|
+
pushPolicyRef?: PushPolicy;
|
|
64
|
+
/** Called when Planner emits spawn_subagents. S4 implements; S3 records the intent. */
|
|
65
|
+
onSpawnSubagents?: (args: SpawnSubagentsArgs) => Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
export declare class ClaudeAgentDispatcher extends EventEmitter implements AgentDispatcher {
|
|
68
|
+
readonly config: ClaudeAgentDispatcherConfig;
|
|
69
|
+
private logger;
|
|
70
|
+
private plannerName;
|
|
71
|
+
private coderName;
|
|
72
|
+
private reviewerName;
|
|
73
|
+
private plannerStarted;
|
|
74
|
+
private coderStarted;
|
|
75
|
+
private reviewerStarted;
|
|
76
|
+
private plannerSystemPrompt;
|
|
77
|
+
private coderSystemPrompt;
|
|
78
|
+
private reviewerSystemPrompt;
|
|
79
|
+
private coderModel;
|
|
80
|
+
private reviewerModel;
|
|
81
|
+
/** Where Reviewer reads from. Created lazily by stageReviewSandbox(). */
|
|
82
|
+
private reviewerSandboxDir;
|
|
83
|
+
private ledgerDir;
|
|
84
|
+
constructor(config: ClaudeAgentDispatcherConfig);
|
|
85
|
+
get sessionNames(): {
|
|
86
|
+
planner: string;
|
|
87
|
+
coder: string;
|
|
88
|
+
reviewer: string;
|
|
89
|
+
};
|
|
90
|
+
init(state: AutoloopState): Promise<void>;
|
|
91
|
+
shutdown(reason: string): Promise<void>;
|
|
92
|
+
deliver(env: AnyAutoloopMessage): Promise<AnyAutoloopMessage[]>;
|
|
93
|
+
/**
|
|
94
|
+
* Start Coder + Reviewer sessions. Idempotent. Called in response to a
|
|
95
|
+
* Planner spawn_subagents tool (the SessionManager wires this via
|
|
96
|
+
* onSpawnSubagents).
|
|
97
|
+
*/
|
|
98
|
+
spawnSubagents(args?: SpawnSubagentsArgs): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Reset a single subagent — stop its session, clear the started flag, and
|
|
101
|
+
* (optionally) eagerly start a fresh one. The session-level system prompt is
|
|
102
|
+
* the same; persistent state lives in `<ledger>/{coder,reviewer}_memory.md`
|
|
103
|
+
* which the agent reads on its first turn after reset.
|
|
104
|
+
*
|
|
105
|
+
* Refuses to reset Planner without `force: true` — Planner reset throws away
|
|
106
|
+
* the user-conversation context and must be a deliberate action.
|
|
107
|
+
*/
|
|
108
|
+
resetAgent(agent: 'planner' | 'coder' | 'reviewer', opts?: {
|
|
109
|
+
force?: boolean;
|
|
110
|
+
eagerRestart?: boolean;
|
|
111
|
+
}): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Wrap a subagent send. If the underlying session throws or returns an
|
|
114
|
+
* error string, auto-reset the subagent once and retry. Used by
|
|
115
|
+
* deliverToCoder / deliverToReviewer to recover from subprocess deaths.
|
|
116
|
+
*/
|
|
117
|
+
private sendWithRecovery;
|
|
118
|
+
private lastCompactAt;
|
|
119
|
+
private compactSummaryFor;
|
|
120
|
+
private maybeCompact;
|
|
121
|
+
private ensurePlanner;
|
|
122
|
+
private deliverToPlanner;
|
|
123
|
+
private ensureCoder;
|
|
124
|
+
private deliverToCoder;
|
|
125
|
+
private ensureReviewer;
|
|
126
|
+
/**
|
|
127
|
+
* Stage the iter's artifacts into the Reviewer sandbox cwd. Reviewer is a
|
|
128
|
+
* persistent session whose cwd is fixed at <ledger>/reviewer_sandbox/, so
|
|
129
|
+
* every review must rewrite the sandbox to "this iter's view".
|
|
130
|
+
*/
|
|
131
|
+
private stageReviewSandbox;
|
|
132
|
+
private deliverToReviewer;
|
|
133
|
+
private persistVerdict;
|
|
134
|
+
/** Run a git command in the workspace; returns combined output. Used by Coder commits. */
|
|
135
|
+
private runGit;
|
|
136
|
+
private gitCommit;
|
|
137
|
+
}
|