



























@@ -22,9 +22,12 @@ import { buildOutboundSessionContext } from "../infra/outbound/session-context.j
2222import { createSubsystemLogger } from "../logging/subsystem.js";
2323import { loadManifestMetadataSnapshot } from "../plugins/manifest-contract-eligibility.js";
2424import {
25+classifySessionKeyShape,
26+isUnscopedSessionKeySentinel,
2527isSubagentSessionKey,
2628normalizeAgentId,
2729resolveAgentIdFromSessionKey,
30+scopeLegacySessionKeyToAgent,
2831} from "../routing/session-key.js";
2932import { defaultRuntime, type RuntimeEnv } from "../runtime.js";
3033import { applyVerboseOverride } from "../sessions/level-overrides.js";
@@ -48,6 +51,7 @@ import {
4851markAutoFallbackPrimaryProbe,
4952resolveAutoFallbackPrimaryProbe,
5053resolveAgentDir,
54+resolveDefaultAgentId,
5155resolveEffectiveModelFallbacks,
5256resolveSessionAgentId,
5357resolveAgentSkillsFilter,
@@ -322,8 +326,11 @@ async function prepareAgentCommandExecution(opts: AgentCommandOpts, runtime: Run
322326if (!message.trim()) {
323327throw new Error("Message (--message) is required");
324328}
325-if (!opts.to && !opts.sessionId && !opts.sessionKey && !opts.agentId) {
326-throw new Error("Pass --to <E.164>, --session-id, or --agent to choose a session");
329+const rawExplicitSessionKey = opts.sessionKey?.trim();
330+if (!opts.to && !opts.sessionId && !rawExplicitSessionKey && !opts.agentId) {
331+throw new Error(
332+"Pass --to <E.164>, --session-key, --session-id, or --agent to choose a session",
333+);
327334}
328335329336const { cfg } = await resolveAgentRuntimeConfig(runtime, {
@@ -346,8 +353,28 @@ async function prepareAgentCommandExecution(opts: AgentCommandOpts, runtime: Run
346353);
347354}
348355}
349-if (agentIdOverride && opts.sessionKey) {
350-const sessionAgentId = resolveAgentIdFromSessionKey(opts.sessionKey);
356+const shouldScopeDefaultAgentKey =
357+rawExplicitSessionKey &&
358+!agentIdOverride &&
359+classifySessionKeyShape(rawExplicitSessionKey) === "legacy_or_alias" &&
360+!isUnscopedSessionKeySentinel(rawExplicitSessionKey);
361+const explicitSessionKey = scopeLegacySessionKeyToAgent({
362+agentId:
363+agentIdOverride ?? (shouldScopeDefaultAgentKey ? resolveDefaultAgentId(cfg) : undefined),
364+sessionKey: rawExplicitSessionKey,
365+mainKey: cfg.session?.mainKey,
366+});
367+if (explicitSessionKey && classifySessionKeyShape(explicitSessionKey) === "malformed_agent") {
368+throw new Error(
369+`Invalid --session-key "${explicitSessionKey}". Agent-prefixed session keys must use agent:<agent-id>:<session-key>.`,
370+);
371+}
372+if (
373+agentIdOverride &&
374+explicitSessionKey &&
375+classifySessionKeyShape(explicitSessionKey) === "agent"
376+) {
377+const sessionAgentId = resolveAgentIdFromSessionKey(explicitSessionKey);
351378if (sessionAgentId !== agentIdOverride) {
352379throw new Error(
353380`Agent id "${agentIdOverrideRaw}" does not match session key agent "${sessionAgentId}".`,
@@ -381,7 +408,7 @@ async function prepareAgentCommandExecution(opts: AgentCommandOpts, runtime: Run
381408 cfg,
382409to: opts.to,
383410sessionId: opts.sessionId,
384-sessionKey: opts.sessionKey,
411+sessionKey: explicitSessionKey,
385412agentId: agentIdOverride,
386413});
387414@@ -398,7 +425,7 @@ async function prepareAgentCommandExecution(opts: AgentCommandOpts, runtime: Run
398425const sessionAgentId =
399426agentIdOverride ??
400427resolveSessionAgentId({
401-sessionKey: sessionKey ?? opts.sessionKey?.trim(),
428+sessionKey: sessionKey ?? explicitSessionKey,
402429config: cfg,
403430});
404431const outboundSession = buildOutboundSessionContext({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。