@dv.nghiem/flowdeck 0.5.1 → 0.5.3
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +166 -51
- package/dist/services/delegation-budget.d.ts +1 -0
- package/dist/services/delegation-budget.d.ts.map +1 -1
- package/dist/services/harness-controller.d.ts +2 -0
- package/dist/services/harness-controller.d.ts.map +1 -1
- package/dist/services/harness-types.d.ts +8 -0
- package/dist/services/harness-types.d.ts.map +1 -1
- package/dist/tools/delegate.d.ts +2 -2
- package/dist/tools/delegate.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkHjD,QAAA,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkHjD,QAAA,MAAM,MAAM,EAAE,MAuSb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -5857,6 +5857,9 @@ function resolveDelegationBudgetConfig(config) {
|
|
|
5857
5857
|
};
|
|
5858
5858
|
}
|
|
5859
5859
|
function init(runId, config) {
|
|
5860
|
+
const existing = budgets.get(runId);
|
|
5861
|
+
if (existing)
|
|
5862
|
+
return existing;
|
|
5860
5863
|
const resolved = resolveDelegationBudgetConfig(config);
|
|
5861
5864
|
const budget = {
|
|
5862
5865
|
runId,
|
|
@@ -5896,6 +5899,15 @@ function recordDelegation(parentRunId, childRunId) {
|
|
|
5896
5899
|
budgets.set(childRunId, child);
|
|
5897
5900
|
return child.currentDepth <= child.config.maxDepth;
|
|
5898
5901
|
}
|
|
5902
|
+
function releaseDelegation(parentRunId, childRunId) {
|
|
5903
|
+
const child = budgets.get(childRunId);
|
|
5904
|
+
if (!child)
|
|
5905
|
+
return false;
|
|
5906
|
+
const parent = budgets.get(parentRunId);
|
|
5907
|
+
child.currentDepth = parent?.currentDepth ?? 0;
|
|
5908
|
+
budgets.set(childRunId, child);
|
|
5909
|
+
return true;
|
|
5910
|
+
}
|
|
5899
5911
|
function incrementSameStepRetry(runId) {
|
|
5900
5912
|
const budget = budgets.get(runId);
|
|
5901
5913
|
if (!budget)
|
|
@@ -5918,9 +5930,12 @@ function toSnapshot(budget) {
|
|
|
5918
5930
|
|
|
5919
5931
|
// src/tools/delegate.ts
|
|
5920
5932
|
var DEFAULT_TIMEOUT_MS = 120000;
|
|
5933
|
+
var MAX_TIMEOUT_MS = 600000;
|
|
5921
5934
|
function normalizeMode(mode) {
|
|
5922
5935
|
if (mode === "council" || mode === "pipeline")
|
|
5923
5936
|
return mode;
|
|
5937
|
+
if (typeof mode === "string" && mode.length > 0)
|
|
5938
|
+
return mode;
|
|
5924
5939
|
return "direct";
|
|
5925
5940
|
}
|
|
5926
5941
|
function validateCouncilContext(context) {
|
|
@@ -5948,10 +5963,7 @@ function validatePipelineContext(context) {
|
|
|
5948
5963
|
function isRegisteredAgent(agent) {
|
|
5949
5964
|
return AGENT_NAMES.includes(agent);
|
|
5950
5965
|
}
|
|
5951
|
-
function
|
|
5952
|
-
return part.type === "text";
|
|
5953
|
-
}
|
|
5954
|
-
function createDelegateTool(client, statePersistence) {
|
|
5966
|
+
function createDelegateTool(client, statePersistence, ensureRunContext) {
|
|
5955
5967
|
return tool13({
|
|
5956
5968
|
description: "Delegate work to another FlowDeck agent. Use this instead of raw @agent references for any work requiring write/edit/bash or specialist knowledge. " + "Modes: direct (single agent), council (fan out the same task to multiple agents in parallel), pipeline (sequential stages where each stage's output is passed to the next via context.previousOutput). " + "For council mode, provide context.agents (non-empty string array). For pipeline mode, provide context.stages (non-empty array of { agent, task? }).",
|
|
5957
5969
|
args: {
|
|
@@ -5965,15 +5977,13 @@ function createDelegateTool(client, statePersistence) {
|
|
|
5965
5977
|
const directory = ctx.directory;
|
|
5966
5978
|
const sessionID = ctx.sessionID;
|
|
5967
5979
|
const resolvedMode = normalizeMode(mode);
|
|
5968
|
-
|
|
5980
|
+
let runCtx = statePersistence.getRunContext(sessionID);
|
|
5969
5981
|
if (!runCtx) {
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
error: "No active run context for this session. Start a command first."
|
|
5976
|
-
};
|
|
5982
|
+
runCtx = ensureRunContext({
|
|
5983
|
+
sessionID,
|
|
5984
|
+
description: task,
|
|
5985
|
+
agent
|
|
5986
|
+
});
|
|
5977
5987
|
}
|
|
5978
5988
|
if (!getBudget(runCtx.runId)) {
|
|
5979
5989
|
init(runCtx.runId);
|
|
@@ -6002,8 +6012,15 @@ function createDelegateTool(client, statePersistence) {
|
|
|
6002
6012
|
};
|
|
6003
6013
|
}
|
|
6004
6014
|
const span = statePersistence.openAgentSpan(runCtx, runCtx.currentSpanId, agent, task, runCtx.currentStage ?? "execute");
|
|
6005
|
-
|
|
6006
|
-
|
|
6015
|
+
let result;
|
|
6016
|
+
try {
|
|
6017
|
+
result = await executeDirectDelegation(client, ctx, agent, task, span, runCtx, statePersistence, context);
|
|
6018
|
+
} catch (error) {
|
|
6019
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
6020
|
+
result = { status: "failed", output: "", error: message };
|
|
6021
|
+
}
|
|
6022
|
+
const spanStatus = result.status === "blocked" ? "blocked" : result.status === "failed" ? "failed" : "complete";
|
|
6023
|
+
statePersistence.closeAgentSpan(span.span_id, spanStatus, {
|
|
6007
6024
|
output_valid: result.status === "complete"
|
|
6008
6025
|
});
|
|
6009
6026
|
return {
|
|
@@ -6127,7 +6144,7 @@ ${r.error ? `ERROR: ${r.error}` : r.output}`).join(`
|
|
|
6127
6144
|
run_id: runCtx.runId,
|
|
6128
6145
|
status: "blocked",
|
|
6129
6146
|
output: "",
|
|
6130
|
-
error: `Delegation mode "${resolvedMode}" is not supported.`
|
|
6147
|
+
error: `Delegation mode "${resolvedMode}" is not supported by this version of FlowDeck. Use mode: "direct" for now. For multi-stage work, make sequential "direct" delegate calls from the orchestrator and pass each stage's output via context.previousOutput.`
|
|
6131
6148
|
};
|
|
6132
6149
|
} catch (error) {
|
|
6133
6150
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -6138,10 +6155,64 @@ ${r.error ? `ERROR: ${r.error}` : r.output}`).join(`
|
|
|
6138
6155
|
output: "",
|
|
6139
6156
|
error: message
|
|
6140
6157
|
};
|
|
6158
|
+
} finally {
|
|
6159
|
+
releaseDelegation(runCtx.runId, childRunId);
|
|
6141
6160
|
}
|
|
6142
6161
|
}
|
|
6143
6162
|
});
|
|
6144
6163
|
}
|
|
6164
|
+
function collectTextFromParts(parts) {
|
|
6165
|
+
if (!Array.isArray(parts))
|
|
6166
|
+
return "";
|
|
6167
|
+
return parts.filter((part) => {
|
|
6168
|
+
if (!part || typeof part !== "object")
|
|
6169
|
+
return false;
|
|
6170
|
+
const type = "type" in part ? part.type : undefined;
|
|
6171
|
+
return type === "text" || type === "step-finish";
|
|
6172
|
+
}).map((part) => {
|
|
6173
|
+
const text = "text" in part && typeof part.text === "string" ? part.text : undefined;
|
|
6174
|
+
const content = "content" in part && typeof part.content === "string" ? part.content : undefined;
|
|
6175
|
+
return text ?? content ?? "";
|
|
6176
|
+
}).filter((text) => text.length > 0).join(`
|
|
6177
|
+
`);
|
|
6178
|
+
}
|
|
6179
|
+
function extractTextOutput(promptRes) {
|
|
6180
|
+
const data = promptRes?.data;
|
|
6181
|
+
for (const parts of [data?.parts, data?.message?.parts, data?.info?.message?.parts]) {
|
|
6182
|
+
const output = collectTextFromParts(parts);
|
|
6183
|
+
if (output)
|
|
6184
|
+
return output;
|
|
6185
|
+
}
|
|
6186
|
+
return "";
|
|
6187
|
+
}
|
|
6188
|
+
function extractMessageContent(message) {
|
|
6189
|
+
if (!message || typeof message !== "object")
|
|
6190
|
+
return "";
|
|
6191
|
+
if ("content" in message && typeof message.content === "string")
|
|
6192
|
+
return message.content;
|
|
6193
|
+
if ("parts" in message)
|
|
6194
|
+
return collectTextFromParts(message.parts);
|
|
6195
|
+
return "";
|
|
6196
|
+
}
|
|
6197
|
+
async function fetchFallbackOutput(client, childId) {
|
|
6198
|
+
const sessionClient = client.session;
|
|
6199
|
+
if (typeof sessionClient.messages !== "function")
|
|
6200
|
+
return "";
|
|
6201
|
+
const messageRes = await sessionClient.messages({ path: { id: childId } }).catch(() => null);
|
|
6202
|
+
const data = messageRes?.data;
|
|
6203
|
+
const messages = Array.isArray(data) ? data : Array.isArray(data?.messages) ? data.messages : [];
|
|
6204
|
+
for (let index = messages.length - 1;index >= 0; index -= 1) {
|
|
6205
|
+
const message = messages[index];
|
|
6206
|
+
if (!message || typeof message !== "object")
|
|
6207
|
+
continue;
|
|
6208
|
+
const role = "role" in message ? message.role : undefined;
|
|
6209
|
+
const author = "author" in message ? message.author : undefined;
|
|
6210
|
+
if (role === "assistant" || author === "assistant") {
|
|
6211
|
+
return extractMessageContent(message);
|
|
6212
|
+
}
|
|
6213
|
+
}
|
|
6214
|
+
return "";
|
|
6215
|
+
}
|
|
6145
6216
|
function extractErrorMessage(error) {
|
|
6146
6217
|
if (error instanceof Error)
|
|
6147
6218
|
return error.message;
|
|
@@ -6164,6 +6235,7 @@ async function executeDirectDelegation(client, ctx, agent, task, span, runCtx, s
|
|
|
6164
6235
|
};
|
|
6165
6236
|
}
|
|
6166
6237
|
const childId = createRes.data.id;
|
|
6238
|
+
const timeoutMs = Math.min(typeof context?.timeoutMs === "number" ? context.timeoutMs : DEFAULT_TIMEOUT_MS, MAX_TIMEOUT_MS);
|
|
6167
6239
|
statePersistence.updateRunContext({
|
|
6168
6240
|
...runCtx,
|
|
6169
6241
|
sessionID: childId,
|
|
@@ -6172,14 +6244,32 @@ async function executeDirectDelegation(client, ctx, agent, task, span, runCtx, s
|
|
|
6172
6244
|
const parts = [
|
|
6173
6245
|
{ type: "text", text: buildDelegatePrompt(agent, task, context) }
|
|
6174
6246
|
];
|
|
6175
|
-
|
|
6176
|
-
|
|
6177
|
-
|
|
6178
|
-
|
|
6179
|
-
|
|
6180
|
-
|
|
6181
|
-
|
|
6182
|
-
|
|
6247
|
+
let promptRes;
|
|
6248
|
+
try {
|
|
6249
|
+
promptRes = await Promise.race([
|
|
6250
|
+
client.session.prompt({
|
|
6251
|
+
path: { id: childId },
|
|
6252
|
+
body: { agent, parts },
|
|
6253
|
+
query: { directory: ctx.directory }
|
|
6254
|
+
}),
|
|
6255
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error("Delegate session timed out")), timeoutMs))
|
|
6256
|
+
]);
|
|
6257
|
+
} catch (error) {
|
|
6258
|
+
if (error instanceof Error && error.message === "Delegate session timed out") {
|
|
6259
|
+
const sessionClient = client.session;
|
|
6260
|
+
await sessionClient.abort?.({ path: { id: childId } }).catch(() => {});
|
|
6261
|
+
return {
|
|
6262
|
+
status: "failed",
|
|
6263
|
+
output: "",
|
|
6264
|
+
error: `Delegate session ${childId} (agent: ${agent}) timed out after ${timeoutMs}ms.`
|
|
6265
|
+
};
|
|
6266
|
+
}
|
|
6267
|
+
throw error;
|
|
6268
|
+
}
|
|
6269
|
+
if (process.env.FLOWDECK_DEBUG_DELEGATE) {
|
|
6270
|
+
console.error("[flowdeck delegate] prompt data keys", Object.keys(promptRes.data ?? {}));
|
|
6271
|
+
console.error("[flowdeck delegate] prompt data", JSON.stringify(promptRes.data));
|
|
6272
|
+
}
|
|
6183
6273
|
if (promptRes.error) {
|
|
6184
6274
|
return {
|
|
6185
6275
|
status: "failed",
|
|
@@ -6187,11 +6277,17 @@ async function executeDirectDelegation(client, ctx, agent, task, span, runCtx, s
|
|
|
6187
6277
|
error: extractErrorMessage(promptRes.error)
|
|
6188
6278
|
};
|
|
6189
6279
|
}
|
|
6190
|
-
const output = (promptRes
|
|
6191
|
-
|
|
6280
|
+
const output = extractTextOutput(promptRes) || await fetchFallbackOutput(client, childId);
|
|
6281
|
+
if (!output) {
|
|
6282
|
+
return {
|
|
6283
|
+
status: "failed",
|
|
6284
|
+
output: "",
|
|
6285
|
+
error: `Subagent session ${childId} (agent: ${agent}) produced no text output after prompt + message fetch. This may indicate the subagent ended without a text summary, or the SDK response shape changed — check FLOWDECK_DEBUG_DELEGATE logs.`
|
|
6286
|
+
};
|
|
6287
|
+
}
|
|
6192
6288
|
return {
|
|
6193
6289
|
status: "complete",
|
|
6194
|
-
output
|
|
6290
|
+
output
|
|
6195
6291
|
};
|
|
6196
6292
|
}
|
|
6197
6293
|
function buildDelegatePrompt(agent, task, context) {
|
|
@@ -11440,13 +11536,46 @@ function createHarnessController(config) {
|
|
|
11440
11536
|
function log(msg) {
|
|
11441
11537
|
appLog(msg);
|
|
11442
11538
|
}
|
|
11443
|
-
function
|
|
11539
|
+
function getRunCtxStrict(sessionID) {
|
|
11444
11540
|
const ctx = statePersistence.getRunContext(sessionID);
|
|
11445
11541
|
if (!ctx) {
|
|
11446
11542
|
throw new Error(`No active run context for session ${sessionID}`);
|
|
11447
11543
|
}
|
|
11448
11544
|
return ctx;
|
|
11449
11545
|
}
|
|
11546
|
+
const ensureRunContext = (input) => {
|
|
11547
|
+
const { sessionID, command = "auto", description, agent } = input;
|
|
11548
|
+
const existing = statePersistence.getRunContext(sessionID);
|
|
11549
|
+
if (existing) {
|
|
11550
|
+
return existing;
|
|
11551
|
+
}
|
|
11552
|
+
const route = buildAdaptiveWorkflow(description);
|
|
11553
|
+
state.currentWorkflowClass = route.workflowClass ?? route.taskType;
|
|
11554
|
+
const currentStage = route.stageSequence[0]?.name ?? "discuss";
|
|
11555
|
+
const runCtx = statePersistence.startRun(command, { arguments: description, agent }, sessionID);
|
|
11556
|
+
const assembledContext = contextIngress.assemble({
|
|
11557
|
+
runId: runCtx.runId,
|
|
11558
|
+
sessionId: sessionID,
|
|
11559
|
+
projectRoot: directory,
|
|
11560
|
+
command,
|
|
11561
|
+
description,
|
|
11562
|
+
currentStage
|
|
11563
|
+
});
|
|
11564
|
+
const budget = assembledContext.tokenBudget;
|
|
11565
|
+
log(`[context-ingress] run=${sessionID} trivial=${assembledContext.isTrivialChat} ` + `tokens=${budget.usedTokens}/${budget.limitTokens} (${budget.component})`);
|
|
11566
|
+
const ctxWithWorkflow = {
|
|
11567
|
+
...runCtx,
|
|
11568
|
+
workflowClass: state.currentWorkflowClass,
|
|
11569
|
+
currentStage
|
|
11570
|
+
};
|
|
11571
|
+
statePersistence.updateRunContext(ctxWithWorkflow);
|
|
11572
|
+
statePersistence.recordObservation(ctxWithWorkflow, "workflow", JSON.stringify({
|
|
11573
|
+
workflowClass: state.currentWorkflowClass,
|
|
11574
|
+
currentStage,
|
|
11575
|
+
stageSequence: route.stageSequence.map((s) => s.name)
|
|
11576
|
+
}));
|
|
11577
|
+
return ctxWithWorkflow;
|
|
11578
|
+
};
|
|
11450
11579
|
function buildCommandAuditEntry(req, runCtx) {
|
|
11451
11580
|
return {
|
|
11452
11581
|
id: randomUUID8(),
|
|
@@ -11511,31 +11640,12 @@ function createHarnessController(config) {
|
|
|
11511
11640
|
state.lastCommandOutput = null;
|
|
11512
11641
|
state.lastActiveSessionID = req.sessionID;
|
|
11513
11642
|
const description = `${req.command} ${req.arguments ?? ""}`.trim();
|
|
11514
|
-
const
|
|
11515
|
-
|
|
11516
|
-
const currentStage = route.stageSequence[0]?.name ?? "discuss";
|
|
11517
|
-
const runCtx = statePersistence.startRun(req.command, { arguments: req.arguments }, req.sessionID);
|
|
11518
|
-
const assembledContext = contextIngress.assemble({
|
|
11519
|
-
runId: runCtx.runId,
|
|
11520
|
-
sessionId: req.sessionID,
|
|
11521
|
-
projectRoot: directory,
|
|
11643
|
+
const ctxWithWorkflow = ensureRunContext({
|
|
11644
|
+
sessionID: req.sessionID,
|
|
11522
11645
|
command: req.command,
|
|
11523
11646
|
description,
|
|
11524
|
-
|
|
11647
|
+
agent: req.agent
|
|
11525
11648
|
});
|
|
11526
|
-
const budget = assembledContext.tokenBudget;
|
|
11527
|
-
log(`[context-ingress] run=${req.sessionID} trivial=${assembledContext.isTrivialChat} ` + `tokens=${budget.usedTokens}/${budget.limitTokens} (${budget.component})`);
|
|
11528
|
-
const ctxWithWorkflow = {
|
|
11529
|
-
...runCtx,
|
|
11530
|
-
workflowClass: state.currentWorkflowClass,
|
|
11531
|
-
currentStage
|
|
11532
|
-
};
|
|
11533
|
-
statePersistence.updateRunContext(ctxWithWorkflow);
|
|
11534
|
-
statePersistence.recordObservation(ctxWithWorkflow, "workflow", JSON.stringify({
|
|
11535
|
-
workflowClass: state.currentWorkflowClass,
|
|
11536
|
-
currentStage,
|
|
11537
|
-
stageSequence: route.stageSequence.map((s) => s.name)
|
|
11538
|
-
}));
|
|
11539
11649
|
try {
|
|
11540
11650
|
auditLog.append(buildCommandAuditEntry(req, ctxWithWorkflow));
|
|
11541
11651
|
} catch (error) {
|
|
@@ -11545,7 +11655,11 @@ function createHarnessController(config) {
|
|
|
11545
11655
|
return ctxWithWorkflow;
|
|
11546
11656
|
},
|
|
11547
11657
|
evaluateToolCall(req) {
|
|
11548
|
-
const runCtx =
|
|
11658
|
+
const runCtx = statePersistence.getRunContext(req.sessionID) ?? ensureRunContext({
|
|
11659
|
+
sessionID: req.sessionID,
|
|
11660
|
+
description: `${req.tool} ${JSON.stringify(req.args)} auto-invoked`,
|
|
11661
|
+
agent: req.agent
|
|
11662
|
+
});
|
|
11549
11663
|
state.lastActiveSessionID = req.sessionID;
|
|
11550
11664
|
const agent = req.agent ?? "orchestrator";
|
|
11551
11665
|
try {
|
|
@@ -11617,6 +11731,7 @@ function createHarnessController(config) {
|
|
|
11617
11731
|
return contextIngress.getAssembledContext(sessionID);
|
|
11618
11732
|
},
|
|
11619
11733
|
endRun,
|
|
11734
|
+
ensureRunContext,
|
|
11620
11735
|
getCurrentStage(sessionID) {
|
|
11621
11736
|
const sid = sessionID ?? state.lastActiveSessionID;
|
|
11622
11737
|
if (!sid)
|
|
@@ -11693,7 +11808,7 @@ var plugin = async (input, _options) => {
|
|
|
11693
11808
|
contextIngress
|
|
11694
11809
|
});
|
|
11695
11810
|
harness.init();
|
|
11696
|
-
const delegateTool = createDelegateTool(client, harness.getStatePersistence());
|
|
11811
|
+
const delegateTool = createDelegateTool(client, harness.getStatePersistence(), (input2) => harness.ensureRunContext(input2));
|
|
11697
11812
|
const contextMonitor = harness.getContextMonitor();
|
|
11698
11813
|
const shellEnvHook = createShellEnvHook({ directory, worktree });
|
|
11699
11814
|
const todoHook = createTodoHook(client);
|
|
@@ -41,6 +41,7 @@ export declare function init(runId: string, config?: FlowDeckConfig): Delegation
|
|
|
41
41
|
export declare function getBudget(runId: string): DelegationBudgetSnapshot | null;
|
|
42
42
|
export declare function checkSpend(runId: string, _toolName?: string): PolicyDecision;
|
|
43
43
|
export declare function recordDelegation(parentRunId: string, childRunId: string): boolean;
|
|
44
|
+
export declare function releaseDelegation(parentRunId: string, childRunId: string): boolean;
|
|
44
45
|
export declare function incrementSameStepRetry(runId: string): boolean;
|
|
45
46
|
export declare function resetSameStepRetry(runId: string): void;
|
|
46
47
|
export declare function toSnapshot(budget: DelegationBudget): DelegationBudgetSnapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation-budget.d.ts","sourceRoot":"","sources":["../../src/services/delegation-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAA;AAGpE,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AA6BD,wBAAgB,6BAA6B,CAC3C,MAAM,CAAC,EAAE,cAAc,GACtB,sBAAsB,CAQxB;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"delegation-budget.d.ts","sourceRoot":"","sources":["../../src/services/delegation-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAA;AAGpE,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AA6BD,wBAAgB,6BAA6B,CAC3C,MAAM,CAAC,EAAE,cAAc,GACtB,sBAAsB,CAQxB;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAc7E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI,CAIxE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAe5E;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAYjF;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQlF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAW7E;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,8CAA8C;AAC9C,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI,CAOlE;AAED,qDAAqD;AACrD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -11,6 +11,7 @@ import type { AssembledContext, RunContext } from "./harness-types";
|
|
|
11
11
|
import { type ContextIngressService } from "./context-ingress";
|
|
12
12
|
import { type StatePersistenceService } from "./state-persistence";
|
|
13
13
|
import { createContextWindowMonitorHook } from "../hooks/context-window-monitor";
|
|
14
|
+
import type { EnsureRunContext } from "./harness-types";
|
|
14
15
|
import { type VerificationLayer } from "./verification-layer";
|
|
15
16
|
import { type RecoveryLayer } from "./recovery-layer";
|
|
16
17
|
export interface HarnessControllerConfig {
|
|
@@ -43,6 +44,7 @@ export interface SessionEvent {
|
|
|
43
44
|
export interface HarnessController {
|
|
44
45
|
init(): void;
|
|
45
46
|
onCommandBefore(req: CommandRequest): RunContext;
|
|
47
|
+
ensureRunContext: EnsureRunContext;
|
|
46
48
|
evaluateToolCall(req: ToolCallRequest): PolicyDecision;
|
|
47
49
|
recordToolOutcome(req: ToolCallRequest, output: unknown, status: "success" | "error" | "blocked"): void;
|
|
48
50
|
onSessionEvent(evt: SessionEvent): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-controller.d.ts","sourceRoot":"","sources":["../../src/services/harness-controller.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3F,OAAO,EAA0B,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAG1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"harness-controller.d.ts","sourceRoot":"","sources":["../../src/services/harness-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,13 @@ export interface RunContext {
|
|
|
106
106
|
workflowClass?: string;
|
|
107
107
|
currentStage?: string;
|
|
108
108
|
}
|
|
109
|
+
/** Lazy, idempotent run-context initializer used by tools and auto-routers. */
|
|
110
|
+
export type EnsureRunContext = (input: {
|
|
111
|
+
sessionID: string;
|
|
112
|
+
command?: string;
|
|
113
|
+
description: string;
|
|
114
|
+
agent?: string;
|
|
115
|
+
}) => RunContext;
|
|
109
116
|
/** Possible recovery actions when a run is stuck or fails. */
|
|
110
117
|
export type RecoveryAction = "retry" | "fallback-agent" | "escalate" | "stop";
|
|
111
118
|
/** Arguments accepted by the delegate tool. */
|
|
@@ -120,6 +127,7 @@ export interface DelegateToolArgs {
|
|
|
120
127
|
task?: string;
|
|
121
128
|
}>;
|
|
122
129
|
previousOutput?: string;
|
|
130
|
+
timeoutMs?: number;
|
|
123
131
|
};
|
|
124
132
|
}
|
|
125
133
|
/** Progress entry for a single pipeline stage. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-types.d.ts","sourceRoot":"","sources":["../../src/services/harness-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"harness-types.d.ts","sourceRoot":"","sources":["../../src/services/harness-types.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/delegate.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { type ToolDefinition } from "@opencode-ai/plugin";
|
|
11
11
|
import type { OpencodeClient } from "@opencode-ai/sdk";
|
|
12
12
|
import type { StatePersistenceService } from "../services/state-persistence";
|
|
13
|
-
import type { DelegateResult, DelegateToolArgs } from "../services/harness-types";
|
|
13
|
+
import type { DelegateResult, DelegateToolArgs, EnsureRunContext } from "../services/harness-types";
|
|
14
14
|
export type { DelegateResult, DelegateToolArgs };
|
|
15
|
-
export declare function createDelegateTool(client: OpencodeClient, statePersistence: StatePersistenceService): ToolDefinition;
|
|
15
|
+
export declare function createDelegateTool(client: OpencodeClient, statePersistence: StatePersistenceService, ensureRunContext: EnsureRunContext): ToolDefinition;
|
|
16
16
|
//# sourceMappingURL=delegate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAA;AAGtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAc,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAA;AAGtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAc,MAAM,2BAA2B,CAAA;AAK/G,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA;AA+ChD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,gBAAgB,EAAE,uBAAuB,EACzC,gBAAgB,EAAE,gBAAgB,GACjC,cAAc,CA6PhB"}
|