Compare commits

...

1 Commits

Author SHA1 Message Date
Peter Steinberger
91ae4f969b refactor: narrow memory host runtime adapters 2026-05-30 18:42:23 -04:00
8 changed files with 107 additions and 269 deletions

View File

@@ -1,21 +1,23 @@
export { DEFAULT_AGENT_COMPACTION_RESERVE_TOKENS_FLOOR } from "../../../../src/agents/agent-settings.js";
export {
DEFAULT_AGENT_COMPACTION_RESERVE_TOKENS_FLOOR,
asToolParamsRecord,
jsonResult,
parseAgentSessionKey,
readNumberParam,
readStringParam,
resolveAgentContextLimits,
resolveAgentDir,
resolveAgentWorkspaceDir,
resolveCronStyleNow,
resolveDefaultAgentId,
resolveSessionAgentId,
} from "../../../../src/agents/agent-scope.js";
export { resolveCronStyleNow } from "../../../../src/agents/current-time.js";
export {
resolveMemorySearchConfig,
resolveMemorySearchSyncConfig,
resolveSessionAgentId,
} from "./openclaw-runtime.js";
export type {
AnyAgentTool,
ResolvedMemorySearchConfig,
ResolvedMemorySearchSyncConfig,
} from "./openclaw-runtime.js";
type ResolvedMemorySearchConfig,
type ResolvedMemorySearchSyncConfig,
} from "../../../../src/agents/memory-search.js";
export {
asToolParamsRecord,
jsonResult,
readNumberParam,
readStringParam,
} from "../../../../src/agents/tools/common.js";
export type { AnyAgentTool } from "../../../../src/agents/tools/common.js";
export { parseAgentSessionKey } from "../../../../src/routing/session-key.js";

View File

@@ -1,17 +1,9 @@
export {
colorize,
defaultRuntime,
formatDocsLink,
formatErrorMessage,
formatHelpExamples,
isRich,
isVerbose,
resolveCommandSecretRefsViaGateway,
setVerbose,
shortenHomeInString,
shortenHomePath,
theme,
withManager,
withProgress,
withProgressTotals,
} from "./openclaw-runtime.js";
export { formatErrorMessage, withManager } from "../../../../src/cli/cli-utils.js";
export { resolveCommandSecretRefsViaGateway } from "../../../../src/cli/command-secret-gateway.js";
export { formatHelpExamples } from "../../../../src/cli/help-format.js";
export { withProgress, withProgressTotals } from "../../../../src/cli/progress.js";
export { isVerbose, setVerbose } from "../../../../src/globals.js";
export { defaultRuntime } from "../../../../src/runtime.js";
export { resolveUserPath, shortenHomeInString, shortenHomePath } from "../../../../src/utils.js";
export { formatDocsLink } from "../../../terminal-core/src/links.js";
export { colorize, isRich, theme } from "../../../terminal-core/src/theme.js";

View File

@@ -1,13 +1,14 @@
export { parseDurationMs } from "../../../../src/cli/parse-duration.js";
export { parseNonNegativeByteSize } from "../../../../src/config/byte-size.js";
export {
getRuntimeConfig,
hasConfiguredSecretInput,
/** @deprecated Use getRuntimeConfig(), or pass the already loaded config through the call path. */
loadConfig,
normalizeResolvedSecretInputString,
parseDurationMs,
parseNonNegativeByteSize,
resolveSessionTranscriptsDirForAgent,
resolveStateDir,
} from "./openclaw-runtime.js";
} from "../../../../src/config/config.js";
export type { OpenClawConfig } from "../../../../src/config/config.js";
export { resolveStateDir } from "../../../../src/config/paths.js";
export { resolveSessionTranscriptsDirForAgent } from "../../../../src/config/sessions/paths.js";
export type { SessionSendPolicyConfig } from "../../../../src/config/types.base.js";
export type {
MemoryBackend,
MemoryCitationsMode,
@@ -15,8 +16,10 @@ export type {
MemoryQmdIndexPath,
MemoryQmdMcporterConfig,
MemoryQmdSearchMode,
MemorySearchConfig,
OpenClawConfig,
SecretInput,
SessionSendPolicyConfig,
} from "./openclaw-runtime.js";
} from "../../../../src/config/types.memory.js";
export {
hasConfiguredSecretInput,
normalizeResolvedSecretInputString,
} from "../../../../src/config/types.secrets.js";
export type { MemorySearchConfig } from "../../../../src/config/types.tools.js";
export type { SecretInput } from "../../../../src/config/types.secrets.js";

View File

@@ -1,38 +1,44 @@
export { CHARS_PER_TOKEN_ESTIMATE, estimateStringChars } from "../../../../src/utils/cjk-chars.js";
export {
CHARS_PER_TOKEN_ESTIMATE,
DEFAULT_SQLITE_WAL_AUTOCHECKPOINT_PAGES,
DEFAULT_SQLITE_WAL_TRUNCATE_INTERVAL_MS,
applyWindowsSpawnProgramPolicy,
configureSqliteWalMaintenance,
root,
createSubsystemLogger,
detectMime,
estimateStringChars,
} from "../../../../src/infra/sqlite-wal.js";
export type {
SqliteWalMaintenance,
SqliteWalMaintenanceOptions,
} from "../../../../src/infra/sqlite-wal.js";
export { root } from "../../../../src/infra/fs-safe.js";
export {
installProcessWarningFilter,
materializeWindowsSpawnProgram,
redactSensitiveText,
resolveGlobalSingleton,
shouldIgnoreWarning,
} from "../../../../src/infra/warning-filter.js";
export type { ProcessWarning } from "../../../../src/infra/warning-filter.js";
export { redactSensitiveText } from "../../../../src/logging/redact.js";
export { createSubsystemLogger } from "../../../../src/logging/subsystem.js";
export { detectMime } from "../../../../src/media/mime.js";
export { resolveGlobalSingleton } from "../../../../src/shared/global-singleton.js";
export { runTasksWithConcurrency } from "../../../../src/utils/run-with-concurrency.js";
export { splitShellArgs } from "../../../../src/utils/shell-argv.js";
export {
resolveUserPath,
shortenHomeInString,
shortenHomePath,
truncateUtf16Safe,
} from "../../../../src/utils.js";
export {
applyWindowsSpawnProgramPolicy,
materializeWindowsSpawnProgram,
resolveWindowsExecutablePath,
resolveWindowsSpawnProgram,
resolveWindowsSpawnProgramCandidate,
runTasksWithConcurrency,
shortenHomeInString,
shortenHomePath,
shouldIgnoreWarning,
splitShellArgs,
truncateUtf16Safe,
} from "./openclaw-runtime.js";
} from "../../../../src/plugin-sdk/windows-spawn.js";
export type {
ProcessWarning,
ResolveWindowsSpawnProgramCandidateParams,
ResolveWindowsSpawnProgramParams,
SqliteWalMaintenance,
SqliteWalMaintenanceOptions,
WindowsSpawnCandidateResolution,
WindowsSpawnInvocation,
WindowsSpawnProgram,
WindowsSpawnProgramCandidate,
WindowsSpawnResolution,
} from "./openclaw-runtime.js";
} from "../../../../src/plugin-sdk/windows-spawn.js";

View File

@@ -1,15 +1,24 @@
export {
buildActiveMemoryPromptSection,
emptyPluginConfigSchema,
buildMemoryPromptSection as buildActiveMemoryPromptSection,
getMemoryCapabilityRegistration,
getMemoryEmbeddingProvider,
listActiveMemoryPublicArtifacts,
} from "../../../../src/plugins/memory-state.js";
export type {
MemoryFlushPlan,
MemoryFlushPlanResolver,
MemoryPluginCapability,
MemoryPluginPublicArtifact,
MemoryPluginPublicArtifactsProvider,
MemoryPluginRuntime,
MemoryPromptSectionBuilder,
} from "../../../../src/plugins/memory-state.js";
export { emptyPluginConfigSchema } from "../../../../src/plugins/config-schema.js";
export {
getMemoryEmbeddingProvider,
listMemoryEmbeddingProviders,
listRegisteredMemoryEmbeddingProviderAdapters,
listRegisteredMemoryEmbeddingProviders,
resolveCanonicalRootMemoryFile,
shouldSkipRootMemoryAuxiliaryPath,
} from "./openclaw-runtime.js";
} from "../../../../src/plugins/memory-embedding-provider-runtime.js";
export type {
MemoryEmbeddingBatchChunk,
MemoryEmbeddingBatchOptions,
@@ -19,12 +28,9 @@ export type {
MemoryEmbeddingProviderCreateOptions,
MemoryEmbeddingProviderCreateResult,
MemoryEmbeddingProviderRuntime,
MemoryFlushPlan,
MemoryFlushPlanResolver,
MemoryPluginCapability,
MemoryPluginPublicArtifact,
MemoryPluginPublicArtifactsProvider,
MemoryPluginRuntime,
MemoryPromptSectionBuilder,
OpenClawPluginApi,
} from "./openclaw-runtime.js";
} from "../../../../src/plugins/memory-embedding-providers.js";
export type { OpenClawPluginApi } from "../../../../src/plugins/types.js";
export {
resolveCanonicalRootMemoryFile,
shouldSkipRootMemoryAuxiliaryPath,
} from "../../../../src/memory/root-memory-files.js";

View File

@@ -1,18 +1,20 @@
export { HEARTBEAT_PROMPT } from "../../../../src/auto-reply/heartbeat.js";
export { isHeartbeatUserMessage } from "../../../../src/auto-reply/heartbeat-filter.js";
export { stripInboundMetadata } from "../../../../src/auto-reply/reply/strip-inbound-meta.js";
export {
HEARTBEAT_PROMPT,
HEARTBEAT_TOKEN,
SILENT_REPLY_TOKEN,
hasInterSessionUserProvenance,
isCompactionCheckpointTranscriptFileName,
isCronRunSessionKey,
isExecCompletionEvent,
isHeartbeatUserMessage,
isSessionArchiveArtifactName,
isSilentReplyPayloadText,
} from "../../../../src/auto-reply/tokens.js";
export { stripInternalRuntimeContext } from "../../../../src/agents/internal-runtime-context.js";
export { isExecCompletionEvent } from "../../../../src/infra/heartbeat-events-filter.js";
export {
isCompactionCheckpointTranscriptFileName,
isSessionArchiveArtifactName,
isUsageCountedSessionTranscriptFileName,
onSessionTranscriptUpdate,
parseUsageCountedSessionIdFromFileName,
resolveSessionTranscriptsDirForAgent,
stripInboundMetadata,
stripInternalRuntimeContext,
} from "./openclaw-runtime.js";
} from "../../../../src/config/sessions/artifacts.js";
export { resolveSessionTranscriptsDirForAgent } from "../../../../src/config/sessions/paths.js";
export { hasInterSessionUserProvenance } from "../../../../src/sessions/input-provenance.js";
export { isCronRunSessionKey } from "../../../../src/sessions/session-key-utils.js";
export { onSessionTranscriptUpdate } from "../../../../src/sessions/transcript-events.js";

View File

@@ -1,170 +0,0 @@
// Agent/runtime helpers.
export { resolveCronStyleNow } from "../../../../src/agents/current-time.js";
export {
resolveAgentContextLimits,
resolveAgentDir,
resolveAgentWorkspaceDir,
resolveDefaultAgentId,
resolveSessionAgentId,
} from "../../../../src/agents/agent-scope.js";
export { requireApiKey, resolveApiKeyForProvider } from "../../../../src/agents/model-auth.js";
export { stripInternalRuntimeContext } from "../../../../src/agents/internal-runtime-context.js";
export { DEFAULT_AGENT_COMPACTION_RESERVE_TOKENS_FLOOR } from "../../../../src/agents/agent-settings.js";
export {
asToolParamsRecord,
jsonResult,
readNumberParam,
readStringParam,
} from "../../../../src/agents/tools/common.js";
export type { AnyAgentTool } from "../../../../src/agents/tools/common.js";
export {
resolveMemorySearchConfig,
resolveMemorySearchSyncConfig,
type ResolvedMemorySearchConfig,
type ResolvedMemorySearchSyncConfig,
} from "../../../../src/agents/memory-search.js";
// Session and reply helpers.
export { isHeartbeatUserMessage } from "../../../../src/auto-reply/heartbeat-filter.js";
export { HEARTBEAT_PROMPT } from "../../../../src/auto-reply/heartbeat.js";
export { stripInboundMetadata } from "../../../../src/auto-reply/reply/strip-inbound-meta.js";
export {
HEARTBEAT_TOKEN,
SILENT_REPLY_TOKEN,
isSilentReplyPayloadText,
} from "../../../../src/auto-reply/tokens.js";
// CLI/runtime/config helpers.
export { formatErrorMessage, withManager } from "../../../../src/cli/cli-utils.js";
export { resolveCommandSecretRefsViaGateway } from "../../../../src/cli/command-secret-gateway.js";
export { formatHelpExamples } from "../../../../src/cli/help-format.js";
export { parseDurationMs } from "../../../../src/cli/parse-duration.js";
export { withProgress, withProgressTotals } from "../../../../src/cli/progress.js";
export { parseNonNegativeByteSize } from "../../../../src/config/byte-size.js";
export {
getRuntimeConfig,
/** @deprecated Use getRuntimeConfig(), or pass the already loaded config through the call path. */
loadConfig,
} from "../../../../src/config/config.js";
export type { OpenClawConfig } from "../../../../src/config/config.js";
export { resolveStateDir } from "../../../../src/config/paths.js";
export {
isCompactionCheckpointTranscriptFileName,
isSessionArchiveArtifactName,
isUsageCountedSessionTranscriptFileName,
parseUsageCountedSessionIdFromFileName,
} from "../../../../src/config/sessions/artifacts.js";
export { resolveSessionTranscriptsDirForAgent } from "../../../../src/config/sessions/paths.js";
export type { SessionSendPolicyConfig } from "../../../../src/config/types.base.js";
export type {
MemoryBackend,
MemoryCitationsMode,
MemoryQmdConfig,
MemoryQmdIndexPath,
MemoryQmdMcporterConfig,
MemoryQmdSearchMode,
} from "../../../../src/config/types.memory.js";
export {
hasConfiguredSecretInput,
normalizeResolvedSecretInputString,
} from "../../../../src/config/types.secrets.js";
export type { SecretInput } from "../../../../src/config/types.secrets.js";
export type { MemorySearchConfig } from "../../../../src/config/types.tools.js";
export { isVerbose, setVerbose } from "../../../../src/globals.js";
// IO, network, and logging helpers.
export { isExecCompletionEvent } from "../../../../src/infra/heartbeat-events-filter.js";
export { root } from "../../../../src/infra/fs-safe.js";
export { fetchWithSsrFGuard } from "../../../../src/infra/net/fetch-guard.js";
export { shouldUseEnvHttpProxyForUrl } from "../../../../src/infra/net/proxy-env.js";
export { ssrfPolicyFromHttpBaseUrlAllowedHostname } from "../../../../src/infra/net/ssrf.js";
export {
DEFAULT_SQLITE_WAL_AUTOCHECKPOINT_PAGES,
DEFAULT_SQLITE_WAL_TRUNCATE_INTERVAL_MS,
configureSqliteWalMaintenance,
} from "../../../../src/infra/sqlite-wal.js";
export type {
SqliteWalMaintenance,
SqliteWalMaintenanceOptions,
} from "../../../../src/infra/sqlite-wal.js";
export {
installProcessWarningFilter,
shouldIgnoreWarning,
} from "../../../../src/infra/warning-filter.js";
export type { ProcessWarning } from "../../../../src/infra/warning-filter.js";
export { redactSensitiveText } from "../../../../src/logging/redact.js";
export { createSubsystemLogger } from "../../../../src/logging/subsystem.js";
export { detectMime } from "../../../../src/media/mime.js";
// Memory plugin helpers.
export {
resolveCanonicalRootMemoryFile,
shouldSkipRootMemoryAuxiliaryPath,
} from "../../../../src/memory/root-memory-files.js";
export {
getMemoryEmbeddingProvider,
listMemoryEmbeddingProviders,
listRegisteredMemoryEmbeddingProviderAdapters,
listRegisteredMemoryEmbeddingProviders,
} from "../../../../src/plugins/memory-embedding-provider-runtime.js";
export type {
MemoryEmbeddingBatchChunk,
MemoryEmbeddingBatchOptions,
MemoryEmbeddingProvider,
MemoryEmbeddingProviderAdapter,
MemoryEmbeddingProviderCallOptions,
MemoryEmbeddingProviderCreateOptions,
MemoryEmbeddingProviderCreateResult,
MemoryEmbeddingProviderRuntime,
} from "../../../../src/plugins/memory-embedding-providers.js";
export { emptyPluginConfigSchema } from "../../../../src/plugins/config-schema.js";
export {
buildMemoryPromptSection as buildActiveMemoryPromptSection,
getMemoryCapabilityRegistration,
listActiveMemoryPublicArtifacts,
} from "../../../../src/plugins/memory-state.js";
export type {
MemoryFlushPlan,
MemoryFlushPlanResolver,
MemoryPluginCapability,
MemoryPluginPublicArtifact,
MemoryPluginPublicArtifactsProvider,
MemoryPluginRuntime,
MemoryPromptSectionBuilder,
} from "../../../../src/plugins/memory-state.js";
export type { OpenClawPluginApi } from "../../../../src/plugins/types.js";
// Shared session/text utilities.
export { defaultRuntime } from "../../../../src/runtime.js";
export { parseAgentSessionKey } from "../../../../src/routing/session-key.js";
export { hasInterSessionUserProvenance } from "../../../../src/sessions/input-provenance.js";
export { isCronRunSessionKey } from "../../../../src/sessions/session-key-utils.js";
export { onSessionTranscriptUpdate } from "../../../../src/sessions/transcript-events.js";
export { formatDocsLink } from "../../../terminal-core/src/links.js";
export { colorize, isRich, theme } from "../../../terminal-core/src/theme.js";
export { CHARS_PER_TOKEN_ESTIMATE, estimateStringChars } from "../../../../src/utils/cjk-chars.js";
export { runTasksWithConcurrency } from "../../../../src/utils/run-with-concurrency.js";
export { splitShellArgs } from "../../../../src/utils/shell-argv.js";
export {
resolveUserPath,
shortenHomeInString,
shortenHomePath,
truncateUtf16Safe,
} from "../../../../src/utils.js";
export {
applyWindowsSpawnProgramPolicy,
materializeWindowsSpawnProgram,
resolveWindowsExecutablePath,
resolveWindowsSpawnProgram,
resolveWindowsSpawnProgramCandidate,
} from "../../../../src/plugin-sdk/windows-spawn.js";
export type {
ResolveWindowsSpawnProgramCandidateParams,
ResolveWindowsSpawnProgramParams,
WindowsSpawnCandidateResolution,
WindowsSpawnInvocation,
WindowsSpawnProgram,
WindowsSpawnProgramCandidate,
WindowsSpawnResolution,
} from "../../../../src/plugin-sdk/windows-spawn.js";
export { resolveGlobalSingleton } from "../../../../src/shared/global-singleton.js";

View File

@@ -59,16 +59,13 @@ const MEMORY_HOST_SDK_EXPORTS = [
"./status",
] as const;
const MEMORY_HOST_SDK_ALLOWED_CORE_BRIDGE_FILES = [
"packages/memory-host-sdk/src/host/openclaw-runtime-auth.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-network.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime.ts",
] as const;
const MEMORY_HOST_SDK_RUNTIME_ADAPTER_FILES = [
"packages/memory-host-sdk/src/host/openclaw-runtime-agent.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-auth.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-cli.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-config.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-io.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-memory.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-network.ts",
"packages/memory-host-sdk/src/host/openclaw-runtime-session.ts",
] as const;
@@ -318,9 +315,9 @@ describe("opt-in extension package boundaries", () => {
expect(collectCoreReferenceFiles("packages/memory-host-sdk/src")).toEqual([
...MEMORY_HOST_SDK_ALLOWED_CORE_BRIDGE_FILES,
]);
expect(collectOpenClawRuntimeDirectImportFiles("packages/memory-host-sdk/src")).toEqual([
...MEMORY_HOST_SDK_RUNTIME_ADAPTER_FILES,
]);
expect(collectOpenClawRuntimeDirectImportFiles("packages/memory-host-sdk/src")).toStrictEqual(
[],
);
});
it("keeps plugin-package-contract independent from core internals", () => {