import {
formatThinkingLevels,
isThinkingLevelSupported,
normalizeThinkLevel,
normalizeVerboseLevel,
resolveSupportedThinkingLevel,
type VerboseLevel,
} from "../auto-reply/thinking.js"; import { formatCliCommand } from "../cli/command-format.js"; import type { CliDeps } from "../cli/deps.types.js"; import type { SessionEntry } from "../config/sessions/types.js"; import {
clearAgentRunContext,
emitAgentEvent,
registerAgentRunContext,
} from "../infra/agent-events.js"; import { formatErrorMessage } from "../infra/errors.js"; import { buildOutboundSessionContext } from "../infra/outbound/session-context.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { normalizeAgentId } from "../routing/session-key.js"; import { resolveAgentIdFromSessionKey } from "../routing/session-key.js"; import { defaultRuntime, type RuntimeEnv } from "../runtime.js"; import { applyVerboseOverride } from "../sessions/level-overrides.js"; import { applyModelOverrideToSessionEntry } from "../sessions/model-overrides.js"; import { resolveSendPolicy } from "../sessions/send-policy.js"; import { normalizeOptionalString } from "../shared/string-coerce.js"; import { sanitizeForLog } from "../terminal/ansi.js"; import { resolveMessageChannel } from "../utils/message-channel.js"; import { resolveAgentRuntimeConfig } from "./agent-runtime-config.js"; import {
listAgentIds,
resolveAgentDir,
resolveEffectiveModelFallbacks,
resolveSessionAgentId,
resolveAgentSkillsFilter,
resolveAgentWorkspaceDir,
} from "./agent-scope.js"; import { clearSessionAuthProfileOverride } from "./auth-profiles/session-override.js"; import { ensureAuthProfileStore } from "./auth-profiles/store.js"; import {
persistSessionEntry as persistSessionEntryBase,
prependInternalEventContext,
} from "./command/attempt-execution.shared.js"; import { resolveAgentRunContext } from "./command/run-context.js"; import { resolveSession } from "./command/session.js"; import type { AgentCommandIngressOpts, AgentCommandOpts } from "./command/types.js"; import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "./defaults.js"; import { AGENT_LANE_SUBAGENT } from "./lanes.js"; import { LiveSessionModelSwitchError } from "./live-model-switch.js"; import { loadModelCatalog } from "./model-catalog.js"; import { runWithModelFallback } from "./model-fallback.js"; import {
buildAllowedModelSet,
modelKey,
normalizeModelRef,
parseModelRef,
resolveConfiguredModelRef,
resolveDefaultModelForAgent,
resolveThinkingDefault,
} from "./model-selection.js"; import { resolveProviderIdForAuth } from "./provider-auth-aliases.js"; import { normalizeSpawnedRunMetadata } from "./spawned-context.js"; import { resolveAgentTimeoutMs } from "./timeout.js"; import { ensureAgentWorkspace } from "./workspace.js";
const log = createSubsystemLogger("agents/agent-command");
type AttemptExecutionRuntime = typeofimport("./command/attempt-execution.runtime.js");
type AcpManagerRuntime = typeofimport("../acp/control-plane/manager.js");
type AcpPolicyRuntime = typeofimport("../acp/policy.js");
type AcpRuntimeErrorsRuntime = typeofimport("../acp/runtime/errors.js");
type AcpSessionIdentifiersRuntime = typeofimport("../acp/runtime/session-identifiers.js");
type DeliveryRuntime = typeofimport("./command/delivery.runtime.js");
type SessionStoreRuntime = typeofimport("./command/session-store.runtime.js");
type TranscriptResolveRuntime = typeofimport("../config/sessions/transcript-resolve.runtime.js");
type CliDepsRuntime = typeofimport("../cli/deps.js");
type ExecDefaultsRuntime = typeofimport("./exec-defaults.js");
type SkillsRuntime = typeofimport("./skills.js");
type SkillsFilterRuntime = typeofimport("./skills/filter.js");
type SkillsRefreshStateRuntime = typeofimport("./skills/refresh-state.js");
type SkillsRemoteRuntime = typeofimport("../infra/skills-remote.js");
let attemptExecutionRuntimePromise: Promise<AttemptExecutionRuntime> | undefined;
let acpManagerRuntimePromise: Promise<AcpManagerRuntime> | undefined;
let acpPolicyRuntimePromise: Promise<AcpPolicyRuntime> | undefined;
let acpRuntimeErrorsRuntimePromise: Promise<AcpRuntimeErrorsRuntime> | undefined;
let acpSessionIdentifiersRuntimePromise: Promise<AcpSessionIdentifiersRuntime> | undefined;
let deliveryRuntimePromise: Promise<DeliveryRuntime> | undefined;
let sessionStoreRuntimePromise: Promise<SessionStoreRuntime> | undefined;
let transcriptResolveRuntimePromise: Promise<TranscriptResolveRuntime> | undefined;
let cliDepsRuntimePromise: Promise<CliDepsRuntime> | undefined;
let execDefaultsRuntimePromise: Promise<ExecDefaultsRuntime> | undefined;
let skillsRuntimePromise: Promise<SkillsRuntime> | undefined;
let skillsFilterRuntimePromise: Promise<SkillsFilterRuntime> | undefined;
let skillsRefreshStateRuntimePromise: Promise<SkillsRefreshStateRuntime> | undefined;
let skillsRemoteRuntimePromise: Promise<SkillsRemoteRuntime> | undefined;
function loadAttemptExecutionRuntime(): Promise<AttemptExecutionRuntime> {
attemptExecutionRuntimePromise ??= import("./command/attempt-execution.runtime.js"); return attemptExecutionRuntimePromise;
}
function loadAcpManagerRuntime(): Promise<AcpManagerRuntime> {
acpManagerRuntimePromise ??= import("../acp/control-plane/manager.js"); return acpManagerRuntimePromise;
}
function loadAcpPolicyRuntime(): Promise<AcpPolicyRuntime> {
acpPolicyRuntimePromise ??= import("../acp/policy.js"); return acpPolicyRuntimePromise;
}
function loadAcpRuntimeErrorsRuntime(): Promise<AcpRuntimeErrorsRuntime> {
acpRuntimeErrorsRuntimePromise ??= import("../acp/runtime/errors.js"); return acpRuntimeErrorsRuntimePromise;
}
function loadAcpSessionIdentifiersRuntime(): Promise<AcpSessionIdentifiersRuntime> {
acpSessionIdentifiersRuntimePromise ??= import("../acp/runtime/session-identifiers.js"); return acpSessionIdentifiersRuntimePromise;
}
function loadDeliveryRuntime(): Promise<DeliveryRuntime> {
deliveryRuntimePromise ??= import("./command/delivery.runtime.js"); return deliveryRuntimePromise;
}
function loadSessionStoreRuntime(): Promise<SessionStoreRuntime> {
sessionStoreRuntimePromise ??= import("./command/session-store.runtime.js"); return sessionStoreRuntimePromise;
}
function loadTranscriptResolveRuntime(): Promise<TranscriptResolveRuntime> {
transcriptResolveRuntimePromise ??= import("../config/sessions/transcript-resolve.runtime.js"); return transcriptResolveRuntimePromise;
}
function loadCliDepsRuntime(): Promise<CliDepsRuntime> {
cliDepsRuntimePromise ??= import("../cli/deps.js"); return cliDepsRuntimePromise;
}
function loadExecDefaultsRuntime(): Promise<ExecDefaultsRuntime> {
execDefaultsRuntimePromise ??= import("./exec-defaults.js"); return execDefaultsRuntimePromise;
}
function loadSkillsRuntime(): Promise<SkillsRuntime> {
skillsRuntimePromise ??= import("./skills.js"); return skillsRuntimePromise;
}
function loadSkillsFilterRuntime(): Promise<SkillsFilterRuntime> {
skillsFilterRuntimePromise ??= import("./skills/filter.js"); return skillsFilterRuntimePromise;
}
function loadSkillsRefreshStateRuntime(): Promise<SkillsRefreshStateRuntime> {
skillsRefreshStateRuntimePromise ??= import("./skills/refresh-state.js"); return skillsRefreshStateRuntimePromise;
}
function loadSkillsRemoteRuntime(): Promise<SkillsRemoteRuntime> {
skillsRemoteRuntimePromise ??= import("../infra/skills-remote.js"); return skillsRemoteRuntimePromise;
}
export async function agentCommand(
opts: AgentCommandOpts,
runtime: RuntimeEnv = defaultRuntime,
deps?: CliDeps,
) { return await agentCommandInternal(
{
...opts, // agentCommand is the trusted-operator entrypoint used by CLI/local flows. // Ingress callers must opt into owner semantics explicitly via // agentCommandFromIngress so network-facing paths cannot inherit this default by accident.
senderIsOwner: opts.senderIsOwner ?? true, // Local/CLI callers are trusted by default for per-run model overrides.
allowModelOverride: opts.allowModelOverride ?? true,
},
runtime,
deps,
);
}
export async function agentCommandFromIngress(
opts: AgentCommandIngressOpts,
runtime: RuntimeEnv = defaultRuntime,
deps?: CliDeps,
) { if (typeof opts.senderIsOwner !== "boolean") { // HTTP/WS ingress must declare the trust level explicitly at the boundary. // This keeps network-facing callers from silently picking up the local trusted default. thrownew Error("senderIsOwner must be explicitly set for ingress agent runs.");
} if (typeof opts.allowModelOverride !== "boolean") { thrownew Error("allowModelOverride must be explicitly set for ingress agent runs.");
} return await agentCommandInternal(
{
...opts,
senderIsOwner: opts.senderIsOwner,
allowModelOverride: opts.allowModelOverride,
},
runtime,
deps,
);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.