@monoes/monomindcli 2.10.10 → 2.10.14
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/.claude/commands/mastermind/brain.md +14 -14
- package/.claude/commands/mastermind/help.md +2 -2
- package/.claude/commands/mastermind/master.md +24 -19
- package/.claude/commands/mastermind/memory.md +8 -8
- package/.claude/commands/mastermind/monoswarm.md +4 -4
- package/.claude/commands/mastermind.md +7 -7
- package/.claude/commands/truth/start.md +3 -3
- package/.claude/helpers/handlers/gates-handler.cjs +13 -1
- package/.claude/skills/mastermind/SKILL.md +7 -16
- package/.claude/skills/mastermind-debug/SKILL.md +3 -3
- package/.claude/skills/mastermind-design/SKILL.md +2 -0
- package/.claude/skills/mastermind-execute/SKILL.md +66 -11
- package/.claude/skills/mastermind-idea/SKILL.md +9 -2
- package/.claude/skills/mastermind-intake/SKILL.md +31 -7
- package/.claude/skills/mastermind-issue-detail/SKILL.md +70 -16
- package/.claude/skills/mastermind-issues/SKILL.md +111 -16
- package/.claude/skills/mastermind-liveness/SKILL.md +96 -26
- package/.claude/skills/mastermind-my-issues/SKILL.md +40 -8
- package/.claude/skills/mastermind-org/SKILL.md +2 -0
- package/.claude/skills/mastermind-plan/SKILL.md +7 -16
- package/.claude/skills/mastermind-plan-to-tasks/SKILL.md +132 -24
- package/.claude/skills/mastermind-protocol/SKILL.md +33 -22
- package/.claude/skills/mastermind-runorg/SKILL.md +22 -3
- package/.claude/skills/mastermind-skill-builder/SKILL.md +1 -1
- package/.claude/skills/mastermind-tasks/SKILL.md +5 -0
- package/.claude/skills/mastermind-techport/SKILL.md +1 -1
- package/.claude/skills/monodesign/scripts/detector/engines/browser/drivers.mjs +56 -15
- package/.claude/skills/performance-analysis/SKILL.md +1 -1
- package/.claude/skills/verification-quality/SKILL.md +2 -3
- package/README.md +2 -2
- package/dist/src/commands/doc.js +2 -2
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +45 -2
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/memory-crud.d.ts.map +1 -1
- package/dist/src/commands/memory-crud.js +13 -2
- package/dist/src/commands/memory-crud.js.map +1 -1
- package/dist/src/commands/memory.js +1 -1
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +11 -4
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +56 -6
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org.d.ts +26 -0
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +144 -28
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +10 -9
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/upgrade.d.ts.map +1 -1
- package/dist/src/init/upgrade.js +29 -0
- package/dist/src/init/upgrade.js.map +1 -1
- package/dist/src/init/write-codex.d.ts.map +1 -1
- package/dist/src/init/write-codex.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts +5 -0
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +32 -16
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts +9 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +12 -1
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.js +105 -13
- package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts +13 -0
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +257 -31
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/health-tools.js +99 -42
- package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/impact-tools.js +123 -51
- package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.js +113 -96
- package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/shared.d.ts +37 -4
- package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/shared.js +75 -56
- package/dist/src/mcp-tools/monograph/shared.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +60 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +172 -42
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-kg.d.ts +495 -28
- package/dist/src/memory/memory-kg.d.ts.map +1 -1
- package/dist/src/memory/memory-kg.js +2186 -251
- package/dist/src/memory/memory-kg.js.map +1 -1
- package/dist/src/memory/query-router.d.ts +51 -0
- package/dist/src/memory/query-router.d.ts.map +1 -1
- package/dist/src/memory/query-router.js +38 -2
- package/dist/src/memory/query-router.js.map +1 -1
- package/dist/src/orgrt/agent-exec.d.ts.map +1 -1
- package/dist/src/orgrt/agent-exec.js +7 -0
- package/dist/src/orgrt/agent-exec.js.map +1 -1
- package/dist/src/orgrt/agent-runner.d.ts +26 -1
- package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
- package/dist/src/orgrt/agent-runner.js +73 -22
- package/dist/src/orgrt/agent-runner.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
- package/dist/src/orgrt/antigravity-runner.js +36 -19
- package/dist/src/orgrt/antigravity-runner.js.map +1 -1
- package/dist/src/orgrt/approvals.d.ts +26 -2
- package/dist/src/orgrt/approvals.d.ts.map +1 -1
- package/dist/src/orgrt/approvals.js +67 -7
- package/dist/src/orgrt/approvals.js.map +1 -1
- package/dist/src/orgrt/broker.d.ts +21 -2
- package/dist/src/orgrt/broker.d.ts.map +1 -1
- package/dist/src/orgrt/broker.js +56 -8
- package/dist/src/orgrt/broker.js.map +1 -1
- package/dist/src/orgrt/bus.d.ts +8 -0
- package/dist/src/orgrt/bus.d.ts.map +1 -1
- package/dist/src/orgrt/bus.js +27 -0
- package/dist/src/orgrt/bus.js.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.js +15 -5
- package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
- package/dist/src/orgrt/checkpoint.d.ts +42 -4
- package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint.js +75 -4
- package/dist/src/orgrt/checkpoint.js.map +1 -1
- package/dist/src/orgrt/codex-runner.d.ts +1 -1
- package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
- package/dist/src/orgrt/codex-runner.js +50 -23
- package/dist/src/orgrt/codex-runner.js.map +1 -1
- package/dist/src/orgrt/copilot-runner.d.ts +24 -2
- package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
- package/dist/src/orgrt/copilot-runner.js +257 -157
- package/dist/src/orgrt/copilot-runner.js.map +1 -1
- package/dist/src/orgrt/cross-org.d.ts +10 -3
- package/dist/src/orgrt/cross-org.d.ts.map +1 -1
- package/dist/src/orgrt/cross-org.js +225 -10
- package/dist/src/orgrt/cross-org.js.map +1 -1
- package/dist/src/orgrt/crush-runner.d.ts +22 -2
- package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
- package/dist/src/orgrt/crush-runner.js +227 -120
- package/dist/src/orgrt/crush-runner.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +77 -7
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +989 -385
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +2 -2
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +90 -18
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/grok-runner.d.ts +29 -3
- package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
- package/dist/src/orgrt/grok-runner.js +286 -150
- package/dist/src/orgrt/grok-runner.js.map +1 -1
- package/dist/src/orgrt/kimicode-runner.d.ts +5 -5
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +53 -32
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/mailbox.d.ts +15 -0
- package/dist/src/orgrt/mailbox.d.ts.map +1 -1
- package/dist/src/orgrt/mailbox.js +29 -1
- package/dist/src/orgrt/mailbox.js.map +1 -1
- package/dist/src/orgrt/migrate.d.ts.map +1 -1
- package/dist/src/orgrt/migrate.js +8 -5
- package/dist/src/orgrt/migrate.js.map +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/opencode-runner.js +29 -3
- package/dist/src/orgrt/opencode-runner.js.map +1 -1
- package/dist/src/orgrt/org-memory.d.ts +19 -3
- package/dist/src/orgrt/org-memory.d.ts.map +1 -1
- package/dist/src/orgrt/org-memory.js +110 -38
- package/dist/src/orgrt/org-memory.js.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts +3 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.js +35 -3
- package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/pi-runner.d.ts +25 -2
- package/dist/src/orgrt/pi-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-runner.js +271 -152
- package/dist/src/orgrt/pi-runner.js.map +1 -1
- package/dist/src/orgrt/policy.d.ts +1 -0
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +199 -39
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/provider.d.ts +4 -0
- package/dist/src/orgrt/provider.d.ts.map +1 -1
- package/dist/src/orgrt/provider.js +16 -0
- package/dist/src/orgrt/provider.js.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts +3 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.js +35 -3
- package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/qwen-runner.d.ts +30 -3
- package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-runner.js +282 -142
- package/dist/src/orgrt/qwen-runner.js.map +1 -1
- package/dist/src/orgrt/role-slot.d.ts +88 -0
- package/dist/src/orgrt/role-slot.d.ts.map +1 -0
- package/dist/src/orgrt/role-slot.js +133 -0
- package/dist/src/orgrt/role-slot.js.map +1 -0
- package/dist/src/orgrt/runtime-options.d.ts +17 -0
- package/dist/src/orgrt/runtime-options.d.ts.map +1 -0
- package/dist/src/orgrt/runtime-options.js +32 -0
- package/dist/src/orgrt/runtime-options.js.map +1 -0
- package/dist/src/orgrt/scheduler-integration.d.ts +11 -0
- package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler-integration.js +75 -17
- package/dist/src/orgrt/scheduler-integration.js.map +1 -1
- package/dist/src/orgrt/scheduler.d.ts +4 -0
- package/dist/src/orgrt/scheduler.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler.js +7 -1
- package/dist/src/orgrt/scheduler.js.map +1 -1
- package/dist/src/orgrt/server.d.ts +8 -3
- package/dist/src/orgrt/server.d.ts.map +1 -1
- package/dist/src/orgrt/server.js +48 -13
- package/dist/src/orgrt/server.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +26 -2
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +98 -4
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts +5 -0
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +41 -0
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/test-loop.js +2 -2
- package/dist/src/orgrt/test-loop.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +14 -2
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +15 -1
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/orgrt/vercel-runner.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-runner.js +4 -0
- package/dist/src/orgrt/vercel-runner.js.map +1 -1
- package/dist/src/ui/routes-org.mjs +27 -7
- package/dist/src/ui/server.mjs +82 -48
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/dist/src/ui/data/mastermind-sessions.json +0 -1
|
@@ -52,9 +52,32 @@
|
|
|
52
52
|
* deciding how to safely merge into a user's existing crush.json rather
|
|
53
53
|
* than just confirming a fact.
|
|
54
54
|
*
|
|
55
|
+
* Streaming / liveness — WHY INCREMENTAL (#204):
|
|
56
|
+
* This runner originally buffered ALL of crush's stdout in a local
|
|
57
|
+
* variable until the subprocess closed, so any turn longer than
|
|
58
|
+
* session.ts's 4-minute silent-stream watchdog (SILENT_SESSION_MS)
|
|
59
|
+
* yielded zero messages in time — abort, retry, kill, circuit breaker.
|
|
60
|
+
* Same bug class the codex/kimi/antigravity runners had. Unlike those,
|
|
61
|
+
* crush's `run` subcommand has no documented JSON event stream — it's
|
|
62
|
+
* plain text, so there's no structured envelope to segment "messages" by.
|
|
63
|
+
* This runner now parses stdout LINE BY LINE as it arrives: a liveness
|
|
64
|
+
* `tool_use` message is yielded the moment the subprocess spawns
|
|
65
|
+
* (deterministically winning the first-pull race regardless of
|
|
66
|
+
* model-thinking latency), and every non-fence line is yielded as an
|
|
67
|
+
* `assistant` message as soon as it lands rather than after the process
|
|
68
|
+
* exits. Lines inside a ```tool_call fence are withheld from the visible
|
|
69
|
+
* stream (same as the old end-of-turn fence stripping) but still
|
|
70
|
+
* accumulated into the turn's raw text for end-of-turn fence parsing —
|
|
71
|
+
* fence parsing needs the complete, un-split fence body. The fence's
|
|
72
|
+
* OPENING line is forwarded as a `tool_use` liveness message (crush has no
|
|
73
|
+
* tool-execution events of its own to forward, so the org tool-call fence
|
|
74
|
+
* itself is the closest available "tool starting" boundary).
|
|
75
|
+
*
|
|
55
76
|
* Org tools — FENCE PROTOCOL: same approach as the other subprocess runners.
|
|
56
77
|
*/
|
|
57
78
|
import { spawn } from 'node:child_process';
|
|
79
|
+
import { killOnAbort, } from './agent-runner.js';
|
|
80
|
+
import { classifyStderr } from './kimicode-runner.js';
|
|
58
81
|
import { buildToolProtocol, executeToolCall, formatToolResults, MAX_TOOL_ROUNDS, parseToolCalls, TOOL_CALL_RE, } from './tool-fence.js';
|
|
59
82
|
import { UsageProxyServer } from './usage-proxy.js';
|
|
60
83
|
const TURN_TIMEOUT_MS = 2 * 60 * 60 * 1000;
|
|
@@ -107,7 +130,27 @@ export class CrushAgentRunner {
|
|
|
107
130
|
// loop was discarding every round's usage except the final one.
|
|
108
131
|
proxy?.reset();
|
|
109
132
|
for (let round = 0; round <= MAX_TOOL_ROUNDS; round++) {
|
|
110
|
-
|
|
133
|
+
// Filled in by streamTurn as the subprocess runs and when it exits.
|
|
134
|
+
const outcome = {
|
|
135
|
+
rawText: '',
|
|
136
|
+
exitCode: 1,
|
|
137
|
+
stderrTail: '',
|
|
138
|
+
timedOut: false,
|
|
139
|
+
hangSuspected: false,
|
|
140
|
+
};
|
|
141
|
+
for await (const ev of this.streamTurn(bin, nextPrompt, args, proxy, sessionStarted, outcome)) {
|
|
142
|
+
if (ev.kind === 'assistant' && ev.text) {
|
|
143
|
+
// Yield each line of prose AS IT ARRIVES (not after process
|
|
144
|
+
// exit) — a crush turn can run many minutes, and session.ts's
|
|
145
|
+
// watchdog must see messages DURING the turn.
|
|
146
|
+
yield { type: 'assistant', text: ev.text };
|
|
147
|
+
}
|
|
148
|
+
else if (ev.kind === 'tool') {
|
|
149
|
+
// Liveness only: session.ts never renders tool_use as chat —
|
|
150
|
+
// it feeds the StateDetector and refreshes last-activity.
|
|
151
|
+
yield { type: 'tool_use', text: ev.text };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
111
154
|
sessionStarted = true;
|
|
112
155
|
if (outcome.hangSuspected) {
|
|
113
156
|
throw new Error(`CrushAgentRunner: crush produced no output within ${STARTUP_GRACE_MS / 1000}s and was killed. ` +
|
|
@@ -116,14 +159,8 @@ export class CrushAgentRunner {
|
|
|
116
159
|
`this project to accept any prompts, then retry.${outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''}`);
|
|
117
160
|
}
|
|
118
161
|
if (outcome.exitCode !== 0) {
|
|
119
|
-
throw
|
|
120
|
-
(outcome.timedOut
|
|
121
|
-
? ` — killed after exceeding the ${TURN_TIMEOUT_MS / 3_600_000}h turn timeout`
|
|
122
|
-
: '') +
|
|
123
|
-
(outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
|
|
162
|
+
throw turnError(outcome, round);
|
|
124
163
|
}
|
|
125
|
-
if (outcome.text)
|
|
126
|
-
yield { type: 'assistant', text: outcome.text };
|
|
127
164
|
const malformed = [];
|
|
128
165
|
const calls = parseToolCalls([outcome.rawText], (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
|
|
129
166
|
for (const note of malformed)
|
|
@@ -153,7 +190,7 @@ export class CrushAgentRunner {
|
|
|
153
190
|
break;
|
|
154
191
|
}
|
|
155
192
|
// sessionStarted is true by now (set right after the first
|
|
156
|
-
//
|
|
193
|
+
// streamTurn call above) — the retry continues the same crush
|
|
157
194
|
// session via --continue instead of re-sending the system prompt.
|
|
158
195
|
const results = [];
|
|
159
196
|
for (const call of calls)
|
|
@@ -174,124 +211,194 @@ export class CrushAgentRunner {
|
|
|
174
211
|
await proxy?.stop();
|
|
175
212
|
}
|
|
176
213
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}, TURN_TIMEOUT_MS);
|
|
224
|
-
// See STARTUP_GRACE_MS — disarmed by the first stdout chunk below.
|
|
225
|
-
let hangTimer = setTimeout(() => {
|
|
226
|
-
hangSuspected = true;
|
|
214
|
+
/**
|
|
215
|
+
* Run one `crush run` invocation and stream its plain-text stdout
|
|
216
|
+
* INCREMENTALLY: each line is yielded as soon as it arrives (see the
|
|
217
|
+
* header's "Streaming / liveness" note for why buffering until process
|
|
218
|
+
* close was a bug, #204). End-of-turn facts (exit code, stderr tail, raw
|
|
219
|
+
* text, hang/timeout flags) are written into `outcome`, which the caller
|
|
220
|
+
* reads after this generator completes.
|
|
221
|
+
*/
|
|
222
|
+
async *streamTurn(bin, prompt, args, proxy, continueSession, outcome) {
|
|
223
|
+
// No --yolo here: confirmed against a live v0.89.0 install that `crush
|
|
224
|
+
// run` rejects it outright ("Unknown flag: --yolo") — --yolo/-y is a
|
|
225
|
+
// root-only flag for the interactive TUI, not propagated to `run`.
|
|
226
|
+
// Non-interactive `run` mode auto-approves tool calls without it
|
|
227
|
+
// (confirmed live: a file-write tool call completed with no prompt),
|
|
228
|
+
// so this isn't a missing-permission gap either — passing it just
|
|
229
|
+
// made every single invocation fail with a non-zero exit. See #180.
|
|
230
|
+
const cliArgs = ['run', prompt];
|
|
231
|
+
if (args.model)
|
|
232
|
+
cliArgs.push('--model', args.model);
|
|
233
|
+
if (continueSession)
|
|
234
|
+
cliArgs.push('--continue');
|
|
235
|
+
// CRUSH_DISABLE_PROVIDER_AUTO_UPDATE: confirmed via crush's own docs —
|
|
236
|
+
// suppresses a first-run/periodic provider-list update check that would
|
|
237
|
+
// otherwise add an unpredictable network round-trip to a headless turn.
|
|
238
|
+
const env = {
|
|
239
|
+
...process.env,
|
|
240
|
+
CRUSH_DISABLE_PROVIDER_AUTO_UPDATE: '1',
|
|
241
|
+
...args.env,
|
|
242
|
+
};
|
|
243
|
+
if (proxy && this.usageProxyOpts)
|
|
244
|
+
env[this.usageProxyOpts.baseUrlEnvVar] = proxy.url();
|
|
245
|
+
const child = spawn(bin, cliArgs, { cwd: args.cwd, env, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
246
|
+
let stderrTail = '';
|
|
247
|
+
child.stderr?.on('data', (c) => {
|
|
248
|
+
stderrTail = (stderrTail + c.toString()).slice(-4000);
|
|
249
|
+
});
|
|
250
|
+
let sawOutput = false;
|
|
251
|
+
let timedOut = false;
|
|
252
|
+
let hangSuspected = false;
|
|
253
|
+
// SIGTERM→SIGKILL escalation, shared by the turn timeout, the startup
|
|
254
|
+
// hang check, the abort signal, and the abandoned-stream path in
|
|
255
|
+
// `finally` — a CLI that ignores SIGTERM must not leak a zombie per turn.
|
|
256
|
+
const KILL_GRACE_MS = 5000;
|
|
257
|
+
let killTimer;
|
|
258
|
+
const killChild = () => {
|
|
259
|
+
try {
|
|
227
260
|
child.kill('SIGTERM');
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
/* already gone */
|
|
234
|
-
}
|
|
235
|
-
}, KILL_GRACE_MS);
|
|
236
|
-
killTimer.unref?.();
|
|
237
|
-
}, STARTUP_GRACE_MS);
|
|
238
|
-
const exitPromise = new Promise((res, rej) => {
|
|
239
|
-
child.on('error', rej);
|
|
240
|
-
child.on('close', (code) => res(code ?? 1));
|
|
241
|
-
});
|
|
242
|
-
exitPromise.catch(() => { });
|
|
243
|
-
const readStdout = (async () => {
|
|
244
|
-
let stdout = '';
|
|
245
|
-
for await (const chunk of child.stdout) {
|
|
246
|
-
if (!sawOutput) {
|
|
247
|
-
sawOutput = true;
|
|
248
|
-
if (hangTimer) {
|
|
249
|
-
clearTimeout(hangTimer);
|
|
250
|
-
hangTimer = undefined;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
stdout += chunk.toString();
|
|
254
|
-
}
|
|
255
|
-
return stdout;
|
|
256
|
-
})();
|
|
257
|
-
// Timer cleanup lives in a top-level .finally() (not nested inside a
|
|
258
|
-
// success-path .then()) so it runs on EITHER path — a stdout stream
|
|
259
|
-
// error would otherwise skip straight to reject() and leave the
|
|
260
|
-
// TURN_TIMEOUT_MS/hangTimer/killTimer timers running past the
|
|
261
|
-
// process's actual lifetime.
|
|
262
|
-
Promise.all([readStdout, exitPromise])
|
|
263
|
-
.then(([stdout, exitCode]) => {
|
|
264
|
-
const parsed = parseCrushOutput(stdout);
|
|
265
|
-
resolve({
|
|
266
|
-
text: parsed.text,
|
|
267
|
-
rawText: parsed.rawText,
|
|
268
|
-
exitCode,
|
|
269
|
-
stderrTail,
|
|
270
|
-
timedOut,
|
|
271
|
-
hangSuspected,
|
|
272
|
-
});
|
|
273
|
-
}, (err) => {
|
|
274
|
-
// A stdout stream error (the reject path) means the process is
|
|
275
|
-
// still ALIVE and unmanaged — none of the timeout/hang timers
|
|
276
|
-
// would have fired to kill it. Without this, that error would
|
|
277
|
-
// orphan the child. child.kill() on an already-dead process is a
|
|
278
|
-
// documented no-op, so this is safe on every path.
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
/* already gone */
|
|
264
|
+
}
|
|
265
|
+
killTimer = setTimeout(() => {
|
|
279
266
|
try {
|
|
280
|
-
child.kill('
|
|
267
|
+
child.kill('SIGKILL');
|
|
281
268
|
}
|
|
282
269
|
catch {
|
|
283
270
|
/* already gone */
|
|
284
271
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
272
|
+
}, KILL_GRACE_MS);
|
|
273
|
+
killTimer.unref?.();
|
|
274
|
+
};
|
|
275
|
+
const timer = setTimeout(() => {
|
|
276
|
+
timedOut = true;
|
|
277
|
+
killChild();
|
|
278
|
+
}, TURN_TIMEOUT_MS);
|
|
279
|
+
// See STARTUP_GRACE_MS — disarmed by the first stdout chunk below.
|
|
280
|
+
let hangTimer = setTimeout(() => {
|
|
281
|
+
hangSuspected = true;
|
|
282
|
+
killChild();
|
|
283
|
+
}, STARTUP_GRACE_MS);
|
|
284
|
+
// Abort hook (see AgentRunArgs.signal): kill the child so the stdout
|
|
285
|
+
// loop below unblocks instead of orphaning it on iterator.return().
|
|
286
|
+
const unsubscribeAbort = killOnAbort(args.signal, child, KILL_GRACE_MS);
|
|
287
|
+
// Attach the exit promise BEFORE consuming stdout: on a spawn failure
|
|
288
|
+
// (ENOENT, bad binary) the 'error' event fires almost immediately — if
|
|
289
|
+
// no listener is attached yet it escapes as an unhandled 'error' event
|
|
290
|
+
// and crashes the process instead of reaching our catch block.
|
|
291
|
+
const exitPromise = new Promise((res, rej) => {
|
|
292
|
+
child.on('error', rej);
|
|
293
|
+
child.on('close', (code) => res(code ?? 1));
|
|
294
294
|
});
|
|
295
|
+
// Prevent an unhandled-rejection crash if the stdout loop below throws
|
|
296
|
+
// before we await exitPromise (the await still sees the rejection).
|
|
297
|
+
exitPromise.catch(() => { });
|
|
298
|
+
let fullRaw = '';
|
|
299
|
+
// Whether we're currently inside a ```tool_call ... ``` fence — lines in
|
|
300
|
+
// between are withheld from the visible assistant stream (same content
|
|
301
|
+
// TOOL_CALL_RE strips at the end) but still folded into fullRaw so
|
|
302
|
+
// end-of-turn fence parsing sees the complete, un-split fence body.
|
|
303
|
+
let fenceOpen = false;
|
|
304
|
+
// Normalize one complete line of crush's plain-text stdout into the
|
|
305
|
+
// CrushStreamEvent to yield (or null for a blank/fence-interior line).
|
|
306
|
+
const handleLine = (line) => {
|
|
307
|
+
const trimmed = line.trim();
|
|
308
|
+
if (!fenceOpen) {
|
|
309
|
+
if (trimmed.startsWith('```tool_call')) {
|
|
310
|
+
// The model just started emitting a tool_call fence — forward as
|
|
311
|
+
// tool_use liveness at this start boundary (crush has no tool
|
|
312
|
+
// execution events of its own; this fence IS the closest analog).
|
|
313
|
+
fenceOpen = true;
|
|
314
|
+
return { kind: 'tool', text: 'tool_call' };
|
|
315
|
+
}
|
|
316
|
+
return trimmed ? { kind: 'assistant', text: line } : null;
|
|
317
|
+
}
|
|
318
|
+
if (trimmed === '```')
|
|
319
|
+
fenceOpen = false;
|
|
320
|
+
return null;
|
|
321
|
+
};
|
|
322
|
+
try {
|
|
323
|
+
// Immediate liveness yield: session.ts races the FIRST pull against a
|
|
324
|
+
// 4-minute silent-stream watchdog, and crush's first byte of output
|
|
325
|
+
// can itself take minutes. Yielding at spawn wins that race
|
|
326
|
+
// deterministically instead of depending on crush's latency.
|
|
327
|
+
yield { kind: 'tool', text: 'turn started' };
|
|
328
|
+
let buf = '';
|
|
329
|
+
for await (const chunk of child.stdout) {
|
|
330
|
+
if (!sawOutput) {
|
|
331
|
+
sawOutput = true;
|
|
332
|
+
if (hangTimer) {
|
|
333
|
+
clearTimeout(hangTimer);
|
|
334
|
+
hangTimer = undefined;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
buf += chunk.toString();
|
|
338
|
+
const parts = buf.split('\n');
|
|
339
|
+
buf = parts.pop() ?? '';
|
|
340
|
+
for (const line of parts) {
|
|
341
|
+
fullRaw += `${line}\n`;
|
|
342
|
+
const out = handleLine(line);
|
|
343
|
+
if (out)
|
|
344
|
+
yield out;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (buf) {
|
|
348
|
+
fullRaw += buf;
|
|
349
|
+
const out = handleLine(buf);
|
|
350
|
+
if (out)
|
|
351
|
+
yield out;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
finally {
|
|
355
|
+
clearTimeout(timer);
|
|
356
|
+
if (hangTimer)
|
|
357
|
+
clearTimeout(hangTimer);
|
|
358
|
+
unsubscribeAbort();
|
|
359
|
+
if (child.exitCode === null && child.signalCode === null) {
|
|
360
|
+
// NOT confirmed dead. Either the consumer abandoned this stream
|
|
361
|
+
// mid-turn (session.ts's silent abort calls iterator.return(), the
|
|
362
|
+
// mailbox closes, or an error is thrown downstream) — kill it, WITH
|
|
363
|
+
// the SIGKILL escalation — or a SIGTERM from the timeout/hang/abort
|
|
364
|
+
// is still inside its grace period: leave that escalation armed,
|
|
365
|
+
// since clearing it here would orphan a CLI that ignores SIGTERM and
|
|
366
|
+
// then wait on `exitPromise` forever (same fix as codex/kimi/pi-rpc).
|
|
367
|
+
if (!child.killed)
|
|
368
|
+
killChild();
|
|
369
|
+
}
|
|
370
|
+
else if (killTimer) {
|
|
371
|
+
clearTimeout(killTimer);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
const exitCode = await exitPromise;
|
|
375
|
+
if (killTimer)
|
|
376
|
+
clearTimeout(killTimer);
|
|
377
|
+
outcome.rawText = parseCrushOutput(fullRaw).rawText;
|
|
378
|
+
outcome.exitCode = exitCode;
|
|
379
|
+
outcome.stderrTail = stderrTail;
|
|
380
|
+
outcome.timedOut = timedOut;
|
|
381
|
+
outcome.hangSuspected = hangSuspected;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/** Build the actionable error for a failed crush turn. */
|
|
385
|
+
function turnError(outcome, round) {
|
|
386
|
+
if (outcome.timedOut) {
|
|
387
|
+
return new Error(`CrushAgentRunner: crush run failed (exit ${outcome.exitCode}) — killed after exceeding the ${TURN_TIMEOUT_MS / 3_600_000}h turn timeout` +
|
|
388
|
+
(outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
|
|
389
|
+
}
|
|
390
|
+
// Fatal provider errors (auth/permission/quota — classified from stderr):
|
|
391
|
+
// report what actually happened, and tag the error so the daemon does NOT
|
|
392
|
+
// restart into the same guaranteed failure (a restart on quota exhaustion
|
|
393
|
+
// can only hang or fail again).
|
|
394
|
+
const cls = classifyStderr(outcome.stderrTail);
|
|
395
|
+
if (cls.fatal) {
|
|
396
|
+
const err = new Error(`CrushAgentRunner: FATAL provider error (${cls.label}) on turn ${round} — not retrying.` +
|
|
397
|
+
(outcome.stderrTail ? ` stderr: ${outcome.stderrTail.slice(-500)}` : ''));
|
|
398
|
+
err.fatal = true;
|
|
399
|
+
return err;
|
|
295
400
|
}
|
|
401
|
+
return new Error(`CrushAgentRunner: crush run failed (exit ${outcome.exitCode})` +
|
|
402
|
+
(outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
|
|
296
403
|
}
|
|
297
404
|
//# sourceMappingURL=crush-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crush-runner.js","sourceRoot":"","sources":["../../../src/orgrt/crush-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crush-runner.js","sourceRoot":"","sources":["../../../src/orgrt/crush-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { query } from '@anthropic-ai/claude-agent-sdk';
|
|
2
2
|
import type { AgentRunner } from './agent-runner.js';
|
|
3
3
|
import { OrgBus } from './bus.js';
|
|
4
|
-
import { type OrgCheckpoint } from './checkpoint.js';
|
|
4
|
+
import { type OrgCheckpoint, type RoleCheckpoint } from './checkpoint.js';
|
|
5
5
|
import { type RoleFence } from './fence.js';
|
|
6
6
|
import { Mailbox } from './mailbox.js';
|
|
7
7
|
import { PolicyEngine } from './policy.js';
|
|
8
|
+
import { type RespawnReceipt, type RoleSlot } from './role-slot.js';
|
|
9
|
+
import { type RuntimeOptionsReceipt } from './runtime-options.js';
|
|
8
10
|
import { TaskDag } from './task-dag.js';
|
|
9
11
|
import { type BusEvent, type DecisionGate, type OrgDef, type OrgRole, type ProviderConfig } from './types.js';
|
|
10
12
|
/** Resolve which AgentRunner hosts an org's role sessions.
|
|
@@ -118,7 +120,32 @@ export interface RunningOrg {
|
|
|
118
120
|
workdir?: string;
|
|
119
121
|
/** MonoFence guardrail instances keyed by role ID. */
|
|
120
122
|
fences?: Map<string, RoleFence>;
|
|
123
|
+
/** This org's AGENT credential: unlocks delivery/status routes on the org
|
|
124
|
+
* server and is published in the broker registry as its sender identity.
|
|
125
|
+
* Per-org (not daemon-wide) so one org can't present itself as a sibling. */
|
|
126
|
+
credential?: string;
|
|
127
|
+
/** Authoritative role lifecycle state for mid-run replacement — see
|
|
128
|
+
* role-slot.ts. `agents` remains a compatibility view kept in sync (every
|
|
129
|
+
* write to a slot's `runtime` is mirrored into `agents`); NEW lifecycle
|
|
130
|
+
* logic (crash-retry generation guard, budget accounting, respawn) reads
|
|
131
|
+
* and writes roleSlots, not agents, directly. */
|
|
132
|
+
roleSlots: Map<string, RoleSlot>;
|
|
133
|
+
/** The role id startup's single boss-selection rule picked (daemon.ts's
|
|
134
|
+
* bossRole). Stored so respawnRole() (called long after startOrg returns)
|
|
135
|
+
* doesn't need to re-derive it. */
|
|
136
|
+
bossRoleId: string;
|
|
137
|
+
/** Canonical entity names from this org's KG, computed once at startup —
|
|
138
|
+
* reused by respawnRole() when it spawns a replacement incarnation. */
|
|
139
|
+
glossary: string[];
|
|
140
|
+
/** Role ids currently undergoing replacement — rejects a concurrent
|
|
141
|
+
* respawnRole() call for the same role id. */
|
|
142
|
+
respawning: Set<string>;
|
|
121
143
|
}
|
|
144
|
+
/** Bug 4: number of roles for this org that are actually spawned and running
|
|
145
|
+
* right now — the live count run_config.max_concurrent_agents caps. A role
|
|
146
|
+
* that crashed or ended no longer counts, so a slot frees up automatically
|
|
147
|
+
* the moment that happens; nothing needs to explicitly decrement a counter. */
|
|
148
|
+
export declare function activeRoleCount(org: RunningOrg): number;
|
|
122
149
|
export interface DaemonOpts {
|
|
123
150
|
queryFn?: typeof query;
|
|
124
151
|
/** Explicit agent runner (takes precedence over everything). When unset,
|
|
@@ -147,8 +174,12 @@ export interface DaemonOpts {
|
|
|
147
174
|
/** Override the whole-org restart backoff after the boss terminally crashes (tests only;
|
|
148
175
|
* default [10000,30000]ms). */
|
|
149
176
|
bossRestartBackoffMs?: number[];
|
|
150
|
-
/**
|
|
151
|
-
|
|
177
|
+
/** The org server's OPERATOR credential — authorizes human-decision routes
|
|
178
|
+
* (approvals, gates, answers). Published to the operator directory for the
|
|
179
|
+
* `org` CLI, never to the broker registry (see broker.ts). */
|
|
180
|
+
operatorCredential?: string;
|
|
181
|
+
/** Override the operator credential directory (tests only). */
|
|
182
|
+
operatorDir?: string;
|
|
152
183
|
/** Filter tool audit events by tool name or decision (allow|deny) before forwarding */
|
|
153
184
|
auditFilter?: {
|
|
154
185
|
tool?: string;
|
|
@@ -165,9 +196,22 @@ export declare class OrgDaemon {
|
|
|
165
196
|
/** @internal */ private forwarders;
|
|
166
197
|
/** @internal */ private watchdogs;
|
|
167
198
|
/** @internal */ stopping: Map<string, Promise<void>>;
|
|
199
|
+
/** @internal Bug 2 (TOCTOU race): names currently reserved by an in-flight
|
|
200
|
+
* startOrg() call, from the synchronous existence check through
|
|
201
|
+
* registration in `orgs`. Closes the window where two concurrent
|
|
202
|
+
* startOrg(name) calls could both pass the `orgs.has(name)` check before
|
|
203
|
+
* either registered and spawn duplicate runs. */
|
|
204
|
+
/** @internal */ startingOrgs: Set<string>;
|
|
168
205
|
/** @internal */ approvals: Map<string, {
|
|
169
206
|
roleId: string;
|
|
170
207
|
action: string;
|
|
208
|
+
/** Fingerprint of the tool call's actual arguments (e.g. the Bash command,
|
|
209
|
+
* the WebFetch url) — see approvals.ts's checkApproval. Distinguishes a
|
|
210
|
+
* materially different call from one already approved/pending under the
|
|
211
|
+
* same (roleId, action), so one human approval can't silently authorize
|
|
212
|
+
* every future call to that tool. Optional only so pre-fix entries
|
|
213
|
+
* loaded from an old approvals.json don't fail to parse. */
|
|
214
|
+
fingerprint?: string;
|
|
171
215
|
question: string;
|
|
172
216
|
ts: number;
|
|
173
217
|
approved: boolean | null;
|
|
@@ -188,7 +232,7 @@ export declare class OrgDaemon {
|
|
|
188
232
|
/** @internal */ root: string,
|
|
189
233
|
/** @internal */ opts?: DaemonOpts);
|
|
190
234
|
/** Publish this daemon's inbox so orgs started AFTER this call register with the broker. */
|
|
191
|
-
setInboxUrl(url: string,
|
|
235
|
+
setInboxUrl(url: string, operatorCredential?: string): void;
|
|
192
236
|
/** subscribe to events from ALL running orgs (dashboard server uses this) */
|
|
193
237
|
subscribe(fn: (e: BusEvent) => void): () => void;
|
|
194
238
|
listOrgs(): RunningOrg[];
|
|
@@ -217,6 +261,27 @@ export declare class OrgDaemon {
|
|
|
217
261
|
startOrg(name: string, taskOverride?: string, options?: {
|
|
218
262
|
resume?: boolean;
|
|
219
263
|
}): Promise<RunningOrg>;
|
|
264
|
+
/** The actual startOrg implementation. Split out of startOrg() so the
|
|
265
|
+
* reservation guard above runs synchronously, before any `await` in here —
|
|
266
|
+
* see the bug 2 comment in startOrg(). */
|
|
267
|
+
private startOrgInner;
|
|
268
|
+
/** Build one role incarnation: mailbox, policy, AgentRuntime, sessionOpts,
|
|
269
|
+
* and the supervised crash-retry loop. Used by BOTH the startup lazy-spawn
|
|
270
|
+
* path (generation 0, via the `spawnRole` closure inside startOrgInner)
|
|
271
|
+
* and respawnRole() (generation N+1). Does not touch running.agents or
|
|
272
|
+
* running.roleSlots — callers publish the result themselves. */
|
|
273
|
+
spawnRoleIncarnation(name: string, running: RunningOrg, role: OrgRole, generation: number, opts?: {
|
|
274
|
+
roleCheckpoint?: RoleCheckpoint;
|
|
275
|
+
abort?: AbortController;
|
|
276
|
+
budgetTokensOverride?: number;
|
|
277
|
+
}): {
|
|
278
|
+
runtime: AgentRuntime;
|
|
279
|
+
abort: AbortController;
|
|
280
|
+
};
|
|
281
|
+
/** org_respawn_role's daemon-owned implementation. See the design doc's
|
|
282
|
+
* "Replacement algorithm" (13 steps) — this method's body follows those
|
|
283
|
+
* steps in order, numbered in comments. */
|
|
284
|
+
respawnRole(name: string, callerId: string, rawInput: unknown): Promise<RespawnReceipt>;
|
|
220
285
|
/** @internal */
|
|
221
286
|
hasOrgDef(name: string): boolean;
|
|
222
287
|
/** @param opts.drainMs how long to let in-flight agent sessions finish before
|
|
@@ -293,19 +358,24 @@ export declare class OrgDaemon {
|
|
|
293
358
|
outcome: string;
|
|
294
359
|
}): void;
|
|
295
360
|
deliver(fromOrg: string, fromRole: string, to: string, subject: string, body: string): Promise<string>;
|
|
296
|
-
receiveRemote(toOrg: string, toRole: string, fromQualified: string, subject: string, body: string): {
|
|
361
|
+
receiveRemote(toOrg: string, toRole: string, fromQualified: string, subject: string, body: string, fromCredential?: string): Promise<{
|
|
297
362
|
ok: true;
|
|
298
363
|
receipt: string;
|
|
299
364
|
} | {
|
|
300
365
|
ok: false;
|
|
301
366
|
error: string;
|
|
302
|
-
}
|
|
303
|
-
|
|
367
|
+
}>;
|
|
368
|
+
listRuntimeOptions(): Promise<RuntimeOptionsReceipt>;
|
|
304
369
|
/** @internal */
|
|
305
370
|
autoWake(name: string): void;
|
|
306
371
|
private scheduleBossRestart;
|
|
307
372
|
/** @internal */
|
|
308
373
|
scheduleDeferredSpawn(name: string, running: RunningOrg, role: OrgRole, spawnRole: (role: OrgRole) => void): void;
|
|
374
|
+
/** Bug 4: mirrors scheduleDeferredSpawn, but for a role deferred because the
|
|
375
|
+
* org is already at run_config.max_concurrent_agents rather than under host
|
|
376
|
+
* resource pressure — see scheduleConcurrencyDeferredSpawn's doc comment. */
|
|
377
|
+
/** @internal */
|
|
378
|
+
scheduleConcurrencyDeferredSpawn(name: string, running: RunningOrg, role: OrgRole, spawnRole: (role: OrgRole) => void): void;
|
|
309
379
|
private orgMemoryNamespace;
|
|
310
380
|
private orgMemoryDbPath;
|
|
311
381
|
private orgMemoryUsable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/orgrt/daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/orgrt/daemon.ts"],"names":[],"mappings":"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"}
|