openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
76 lines (75 loc) • 2.69 kB
JavaScript
import { t as formatErrorMessage } from "./errors-BvOkmQM5.mjs";
import { a as resolveAgentDir } from "./agent-scope-config-BEk6-ThS.mjs";
import { t as buildAgentHookContextChannelFields } from "./hook-agent-context-vC-cM68i.mjs";
import { n as runAgentEndSideEffects, t as awaitAgentEndSideEffects } from "./agent-end-side-effects-Cc9DHY-6.mjs";
import { o as runAgentHarnessLlmOutputHook } from "./lifecycle-hook-helpers-BOCYz9r1.mjs";
import { c as buildEmbeddedForegroundPromptContext } from "./settled-turn-finalization-result-CUcocDhr.mjs";
import "./agent-harness-runtime-C1yVhaNg.mjs";
//#region extensions/agentsapi/agentsapi-attempt-hooks.ts
function createAgentsApiAttemptHooks(params, agentId, startedAtMs) {
const contextWindow = {
contextTokenBudget: params.contextWindowInfo?.tokens ?? params.contextTokenBudget,
contextWindowSource: params.contextWindowInfo?.source,
contextWindowReferenceTokens: params.contextWindowInfo?.referenceTokens
};
const hookContext = {
runId: params.runId,
agentId,
sessionKey: params.sessionKey,
sessionId: params.sessionId,
workspaceDir: params.workspaceDir,
modelProviderId: params.provider,
modelId: params.model.id,
trigger: params.trigger,
inputProvenance: params.inputProvenance,
...buildAgentHookContextChannelFields(params),
channelContext: params.channelContext,
...contextWindow
};
return {
hookContext,
complete
};
async function complete(result) {
const terminal = result.terminal;
runAgentHarnessLlmOutputHook({
event: {
runId: params.runId,
sessionId: params.sessionId,
provider: params.provider,
model: params.model.id,
resolvedRef: `${params.provider}/${params.model.id}`,
harnessId: "agentsapi",
prompt: params.prompt,
...contextWindow,
assistantTexts: result.assistantTexts,
lastAssistant: result.lastAssistant,
usage: result.attemptUsage
},
ctx: hookContext
});
const agentEnd = {
event: {
runId: params.runId,
messages: result.messagesSnapshot,
success: terminal.kind === "ok",
error: terminal.kind === "failed" ? formatErrorMessage(terminal.error) : void 0,
durationMs: Date.now() - startedAtMs
},
ctx: {
...hookContext,
config: params.config,
foregroundPromptContext: buildEmbeddedForegroundPromptContext({
...params,
agentId
}, params.agentDir ?? resolveAgentDir(params.config ?? {}, agentId)),
skillWorkshopAvailable: false,
compacted: false
}
};
if (!params.messageChannel && !params.messageProvider) await awaitAgentEndSideEffects(agentEnd);
else runAgentEndSideEffects(agentEnd);
}
}
//#endregion
export { createAgentsApiAttemptHooks as t };