mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-05 20:40:20 +00:00
refactor: break runtime import cycles
This commit is contained in:
@@ -7,7 +7,7 @@ import type {
|
||||
} from "../../context-engine/types.js";
|
||||
import { formatErrorMessage } from "../../infra/errors.js";
|
||||
import { emitSessionTranscriptUpdate } from "../../sessions/transcript-events.js";
|
||||
import { getRawSessionAppendMessage } from "../session-tool-result-guard.js";
|
||||
import { getRawSessionAppendMessage } from "../session-raw-append-message.js";
|
||||
import { acquireSessionWriteLock } from "../session-write-lock.js";
|
||||
import { log } from "./logger.js";
|
||||
|
||||
|
||||
24
src/agents/session-raw-append-message.ts
Normal file
24
src/agents/session-raw-append-message.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import type { SessionManager } from "@mariozechner/pi-coding-agent";
|
||||
|
||||
const RAW_APPEND_MESSAGE = Symbol("openclaw.session.rawAppendMessage");
|
||||
|
||||
export type SessionManagerWithRawAppend = SessionManager & {
|
||||
[RAW_APPEND_MESSAGE]?: SessionManager["appendMessage"];
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the unguarded appendMessage implementation for a session manager.
|
||||
*/
|
||||
export function getRawSessionAppendMessage(
|
||||
sessionManager: SessionManager,
|
||||
): SessionManager["appendMessage"] {
|
||||
const rawAppend = (sessionManager as SessionManagerWithRawAppend)[RAW_APPEND_MESSAGE];
|
||||
return rawAppend ?? sessionManager.appendMessage.bind(sessionManager);
|
||||
}
|
||||
|
||||
export function setRawSessionAppendMessage(
|
||||
sessionManager: SessionManager,
|
||||
appendMessage: SessionManager["appendMessage"],
|
||||
): void {
|
||||
(sessionManager as SessionManagerWithRawAppend)[RAW_APPEND_MESSAGE] = appendMessage;
|
||||
}
|
||||
@@ -11,14 +11,13 @@ import {
|
||||
DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS,
|
||||
truncateToolResultMessage,
|
||||
} from "./pi-embedded-runner/tool-result-truncation.js";
|
||||
import {
|
||||
getRawSessionAppendMessage,
|
||||
setRawSessionAppendMessage,
|
||||
} from "./session-raw-append-message.js";
|
||||
import { createPendingToolCallState } from "./session-tool-result-state.js";
|
||||
import { makeMissingToolResult, sanitizeToolCallInputs } from "./session-transcript-repair.js";
|
||||
import { extractToolCallsFromAssistant, extractToolResultId } from "./tool-call-id.js";
|
||||
const RAW_APPEND_MESSAGE = Symbol("openclaw.session.rawAppendMessage");
|
||||
|
||||
type SessionManagerWithRawAppend = SessionManager & {
|
||||
[RAW_APPEND_MESSAGE]?: SessionManager["appendMessage"];
|
||||
};
|
||||
|
||||
/**
|
||||
* Truncate oversized text content blocks in a tool result message.
|
||||
@@ -63,15 +62,7 @@ function normalizePersistedToolResultName(
|
||||
return toolResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the unguarded appendMessage implementation for a session manager.
|
||||
*/
|
||||
export function getRawSessionAppendMessage(
|
||||
sessionManager: SessionManager,
|
||||
): SessionManager["appendMessage"] {
|
||||
const rawAppend = (sessionManager as SessionManagerWithRawAppend)[RAW_APPEND_MESSAGE];
|
||||
return rawAppend ?? sessionManager.appendMessage.bind(sessionManager);
|
||||
}
|
||||
export { getRawSessionAppendMessage };
|
||||
|
||||
export function installSessionToolResultGuard(
|
||||
sessionManager: SessionManager,
|
||||
@@ -115,7 +106,7 @@ export function installSessionToolResultGuard(
|
||||
getPendingIds: () => string[];
|
||||
} {
|
||||
const originalAppend = getRawSessionAppendMessage(sessionManager);
|
||||
(sessionManager as SessionManagerWithRawAppend)[RAW_APPEND_MESSAGE] = originalAppend;
|
||||
setRawSessionAppendMessage(sessionManager, originalAppend);
|
||||
const pendingState = createPendingToolCallState();
|
||||
const persistMessage = (message: AgentMessage) => {
|
||||
const transformer = opts?.transformMessageForPersistence;
|
||||
|
||||
@@ -11,4 +11,4 @@ export { resolveExternalBestEffortDeliveryTarget } from "../infra/outbound/best-
|
||||
export { createBoundDeliveryRouter } from "../infra/outbound/bound-delivery-router.js";
|
||||
export { resolveConversationIdFromTargets } from "../infra/outbound/conversation-id.js";
|
||||
export { getGlobalHookRunner } from "../plugins/hook-runner-global.js";
|
||||
export { isEmbeddedPiRunActive, queueEmbeddedPiMessage } from "./pi-embedded.js";
|
||||
export { isEmbeddedPiRunActive, queueEmbeddedPiMessage } from "./pi-embedded-runner/runs.js";
|
||||
|
||||
@@ -10,4 +10,4 @@ export {
|
||||
isEmbeddedPiRunActive,
|
||||
queueEmbeddedPiMessage,
|
||||
waitForEmbeddedPiRunEnd,
|
||||
} from "./pi-embedded.js";
|
||||
} from "./pi-embedded-runner/runs.js";
|
||||
|
||||
@@ -15,7 +15,7 @@ import { formatErrorMessage } from "../infra/errors.js";
|
||||
import { isSubagentSessionKey, parseAgentSessionKey } from "../routing/session-key.js";
|
||||
import { INTERNAL_MESSAGE_CHANNEL } from "../utils/message-channel.js";
|
||||
import { AGENT_LANE_SUBAGENT } from "./lanes.js";
|
||||
import { abortEmbeddedPiRun } from "./pi-embedded.js";
|
||||
import { abortEmbeddedPiRun } from "./pi-embedded-runner/runs.js";
|
||||
import {
|
||||
readLatestAssistantReplySnapshot,
|
||||
waitForAgentRunAndReadUpdatedAssistantReply,
|
||||
|
||||
Reference in New Issue
Block a user