mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-16 18:34:18 +00:00
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { requestHeartbeat } from "../../infra/heartbeat-wake.js";
|
|
import { enqueueSystemEvent } from "../../infra/system-events.js";
|
|
import { runCommandWithTimeout } from "../../process/exec.js";
|
|
import { createLazyRuntimeMethod, createLazyRuntimeModule } from "../../shared/lazy-runtime.js";
|
|
import { formatNativeDependencyHint } from "./native-deps.js";
|
|
import type { RunHeartbeatOnceOptions } from "./types-core.js";
|
|
import type { PluginRuntime } from "./types.js";
|
|
|
|
const loadHeartbeatRunnerRuntime = createLazyRuntimeModule(
|
|
() => import("../../infra/heartbeat-runner.js"),
|
|
);
|
|
const runHeartbeatOnceInternal = createLazyRuntimeMethod(
|
|
loadHeartbeatRunnerRuntime,
|
|
(runtime) => runtime.runHeartbeatOnce,
|
|
);
|
|
|
|
export function createRuntimeSystem(): PluginRuntime["system"] {
|
|
const requestHeartbeatNow: PluginRuntime["system"]["requestHeartbeatNow"] = (opts) =>
|
|
requestHeartbeat({
|
|
source: opts?.source ?? "other",
|
|
intent: opts?.intent ?? "immediate",
|
|
reason: opts?.reason,
|
|
coalesceMs: opts?.coalesceMs,
|
|
agentId: opts?.agentId,
|
|
sessionKey: opts?.sessionKey,
|
|
heartbeat: opts?.heartbeat,
|
|
});
|
|
|
|
return {
|
|
enqueueSystemEvent,
|
|
requestHeartbeat,
|
|
requestHeartbeatNow,
|
|
runHeartbeatOnce: (opts?: RunHeartbeatOnceOptions) => {
|
|
// Destructure to forward only the plugin-safe subset; prevent cfg/deps injection at runtime.
|
|
const { reason, agentId, sessionKey, heartbeat } = opts ?? {};
|
|
return runHeartbeatOnceInternal({
|
|
reason,
|
|
agentId,
|
|
sessionKey,
|
|
heartbeat: heartbeat ? { target: heartbeat.target } : undefined,
|
|
});
|
|
},
|
|
runCommandWithTimeout,
|
|
formatNativeDependencyHint,
|
|
};
|
|
}
|