diff --git a/src/agents/code-mode-bridge.ts b/src/agents/code-mode-bridge.ts index d549f45a6273..bf0061f9c688 100644 --- a/src/agents/code-mode-bridge.ts +++ b/src/agents/code-mode-bridge.ts @@ -16,8 +16,8 @@ import type { SubagentRunRecord } from "./subagent-registry.types.js"; import { SWARM_CODE_MODE_IDEMPOTENCY_KEY, SWARM_CODE_MODE_REQUEST_FINGERPRINT, -} from "./swarm-code-mode.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; +} from "./subagents/swarm/swarm-code-mode.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; import { ToolSearchRuntime, type ToolSearchToolContext } from "./tool-search.js"; import { waitForCollectorCompletion, diff --git a/src/agents/code-mode-execution.ts b/src/agents/code-mode-execution.ts index 6bda3cea495e..ddbcc981f2e9 100644 --- a/src/agents/code-mode-execution.ts +++ b/src/agents/code-mode-execution.ts @@ -44,7 +44,7 @@ import { } from "./code-mode-state.js"; import { normalizeCodeModeWorkerResult, runCodeModeWorker } from "./code-mode-worker.js"; import type { AgentToolUpdateCallback } from "./runtime/index.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; import { ToolSearchRuntime, type ToolSearchToolContext } from "./tool-search.js"; import { ToolInputError } from "./tools/common.js"; diff --git a/src/agents/code-mode-swarm.test.ts b/src/agents/code-mode-swarm.test.ts index cdd76bf8ef19..b8d171c72ff5 100644 --- a/src/agents/code-mode-swarm.test.ts +++ b/src/agents/code-mode-swarm.test.ts @@ -7,7 +7,7 @@ import { testing } from "./code-mode.test-support.js"; import { SWARM_CODE_MODE_IDEMPOTENCY_KEY, SWARM_CODE_MODE_REQUEST_FINGERPRINT, -} from "./swarm-code-mode.js"; +} from "./subagents/swarm/swarm-code-mode.js"; const config = resolveCodeModeConfig({ tools: { codeMode: true } } as never); diff --git a/src/agents/code-mode.ts b/src/agents/code-mode.ts index 0fddb052b635..8af7e530bb55 100644 --- a/src/agents/code-mode.ts +++ b/src/agents/code-mode.ts @@ -40,7 +40,7 @@ import { import type { AgentToolUpdateCallback } from "./runtime/index.js"; import { optionalStringEnum } from "./schema/typebox.js"; import type { ToolDefinition } from "./sessions/index.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; import { isDirectVisibleCatalogTool } from "./tool-search-catalog.js"; import { formatToolSearchControlResult, type ToolSearchRuntime } from "./tool-search-runtime.js"; import { diff --git a/src/agents/openclaw-tools.swarm.ts b/src/agents/openclaw-tools.swarm.ts index 79b55ca90fbb..658e357efb34 100644 --- a/src/agents/openclaw-tools.swarm.ts +++ b/src/agents/openclaw-tools.swarm.ts @@ -4,7 +4,7 @@ import { getSubagentRunByRunId, recordSwarmStructuredOutput, } from "./subagent-registry.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; import { createAgentsWaitTool } from "./tools/agents-wait-tool.js"; import type { AnyAgentTool } from "./tools/common.js"; import { createStructuredOutputTool } from "./tools/structured-output-tool.js"; diff --git a/src/agents/subagent-registry-helpers.test.ts b/src/agents/subagent-registry-helpers.test.ts index 19805fbe3393..ec86196d8189 100644 --- a/src/agents/subagent-registry-helpers.test.ts +++ b/src/agents/subagent-registry-helpers.test.ts @@ -13,7 +13,7 @@ import { updateSubagentArchiveAtMs, } from "./subagent-registry-helpers.js"; import type { SubagentRunRecord } from "./subagent-registry.types.js"; -import { updateSwarmCollectorCompletion } from "./swarm-collector.js"; +import { updateSwarmCollectorCompletion } from "./subagents/swarm/swarm-collector.js"; function createRunEntry(overrides: Partial = {}): SubagentRunRecord { return { diff --git a/src/agents/subagent-registry-lifecycle-completion.ts b/src/agents/subagent-registry-lifecycle-completion.ts index fbffe7c901df..69878108aa48 100644 --- a/src/agents/subagent-registry-lifecycle-completion.ts +++ b/src/agents/subagent-registry-lifecycle-completion.ts @@ -33,8 +33,8 @@ import type { import type { createSubagentRegistryLifecycleDelivery } from "./subagent-registry-lifecycle-delivery.js"; import { createSubagentRegistryLifecycleTerminalCleanup } from "./subagent-registry-lifecycle-terminal-cleanup.js"; import type { SubagentCompletionRequest, SubagentRunRecord } from "./subagent-registry.types.js"; -import { updateSwarmCollectorCompletion } from "./swarm-collector.js"; -import { releaseSwarmRun } from "./swarm-scheduler.js"; +import { updateSwarmCollectorCompletion } from "./subagents/swarm/swarm-collector.js"; +import { releaseSwarmRun } from "./subagents/swarm/swarm-scheduler.js"; import { peekSwarmStructuredOutput } from "./tools/structured-output-tool.js"; export function createSubagentRegistryLifecycleCompletion( diff --git a/src/agents/subagent-registry-restore.ts b/src/agents/subagent-registry-restore.ts index f01b3558e825..0ed3b69d4c72 100644 --- a/src/agents/subagent-registry-restore.ts +++ b/src/agents/subagent-registry-restore.ts @@ -23,8 +23,8 @@ import { } from "./subagent-session-reconciliation.js"; import { retrySubagentCleanup } from "./subagent-spawn-cleanup.js"; import { readGatewayRunId } from "./subagent-spawn-gateway.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; -import { enqueueSwarmRun } from "./swarm-scheduler.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; +import { enqueueSwarmRun } from "./subagents/swarm/swarm-scheduler.js"; type RestoredQueuedFailureSettlementClaim = { entry: SubagentRunRecord; diff --git a/src/agents/subagent-registry-run-manager.ts b/src/agents/subagent-registry-run-manager.ts index e043dce1ed12..d1642577705c 100644 --- a/src/agents/subagent-registry-run-manager.ts +++ b/src/agents/subagent-registry-run-manager.ts @@ -69,8 +69,8 @@ import { getSubagentSessionStartedAt, } from "./subagent-session-metrics.js"; import type { SubagentSessionCompletion } from "./subagent-session-reconciliation.js"; -import { updateSwarmCollectorCompletion } from "./swarm-collector.js"; -import { isSwarmRunQueued, removeQueuedSwarmRun } from "./swarm-scheduler.js"; +import { updateSwarmCollectorCompletion } from "./subagents/swarm/swarm-collector.js"; +import { isSwarmRunQueued, removeQueuedSwarmRun } from "./subagents/swarm/swarm-scheduler.js"; const log = createSubsystemLogger("agents/subagent-registry"); const RECOVERABLE_WAIT_RETRY_DELAY_MS = isFastTestRuntimeEnv() ? 25 : 5_000; diff --git a/src/agents/subagent-registry.test.ts b/src/agents/subagent-registry.test.ts index d41c61bc2452..ff23b22bb308 100644 --- a/src/agents/subagent-registry.test.ts +++ b/src/agents/subagent-registry.test.ts @@ -63,7 +63,7 @@ import type { SubagentRunParamsOverrides, SubagentRunRecordOverrides, } from "./subagent-test-fixtures.test-helpers.js"; -import { testing as swarmSchedulerTesting } from "./swarm-scheduler.test-support.js"; +import { testing as swarmSchedulerTesting } from "./subagents/swarm/swarm-scheduler.test-support.js"; const noop = () => {}; diff --git a/src/agents/subagent-spawn-request.ts b/src/agents/subagent-spawn-request.ts index 506f7ff58875..bd6b8cd8bb69 100644 --- a/src/agents/subagent-spawn-request.ts +++ b/src/agents/subagent-spawn-request.ts @@ -19,9 +19,9 @@ import { resolveConfiguredSubagentRunTimeoutSeconds } from "./subagent-spawn-pla import { loadSubagentConfig } from "./subagent-spawn-session-patch.js"; import { resolveInternalSessionKey, resolveMainSessionAlias } from "./subagent-spawn.runtime.js"; import { normalizeSubagentTaskName } from "./subagent-task-name.js"; -import { resolveSwarmConfig } from "./swarm-config.js"; -import { validateStructuredOutputSchema } from "./swarm-output-schema.js"; -import { reserveSwarmRun } from "./swarm-scheduler.js"; +import { resolveSwarmConfig } from "./subagents/swarm/swarm-config.js"; +import { validateStructuredOutputSchema } from "./subagents/swarm/swarm-output-schema.js"; +import { reserveSwarmRun } from "./subagents/swarm/swarm-scheduler.js"; type ResolvedSubagentSpawnRequest = { request: { diff --git a/src/agents/subagent-spawn.in-process-gateway.test.ts b/src/agents/subagent-spawn.in-process-gateway.test.ts index 3a0a6ae96b78..9e8c389a3f2c 100644 --- a/src/agents/subagent-spawn.in-process-gateway.test.ts +++ b/src/agents/subagent-spawn.in-process-gateway.test.ts @@ -33,7 +33,7 @@ import { } from "./subagent-registry.test-helpers.js"; import { spawnSubagentDirect } from "./subagent-spawn.js"; import { testing as subagentSpawnTesting } from "./subagent-spawn.test-support.js"; -import { testing as swarmSchedulerTesting } from "./swarm-scheduler.test-support.js"; +import { testing as swarmSchedulerTesting } from "./subagents/swarm/swarm-scheduler.test-support.js"; const envSnapshot = captureEnv(["OPENCLAW_CONFIG_PATH", "OPENCLAW_STATE_DIR"]); let stateDir = ""; diff --git a/src/agents/subagent-spawn.test.ts b/src/agents/subagent-spawn.test.ts index 5c984eb7449c..f04f3e0806db 100644 --- a/src/agents/subagent-spawn.test.ts +++ b/src/agents/subagent-spawn.test.ts @@ -11,7 +11,7 @@ import { installSessionStoreCaptureMock, loadSubagentSpawnModuleForTest, } from "./subagent-spawn.test-helpers.js"; -import { testing as swarmSchedulerTesting } from "./swarm-scheduler.test-support.js"; +import { testing as swarmSchedulerTesting } from "./subagents/swarm/swarm-scheduler.test-support.js"; import { installAcceptedSubagentGatewayMock } from "./test-helpers/subagent-gateway.js"; const hoisted = vi.hoisted(() => ({ diff --git a/src/agents/subagent-spawn.ts b/src/agents/subagent-spawn.ts index 2f3f597354a3..0ae0647cc925 100644 --- a/src/agents/subagent-spawn.ts +++ b/src/agents/subagent-spawn.ts @@ -63,7 +63,7 @@ import { emitSessionLifecycleEvent, mergeDeliveryContext, } from "./subagent-spawn.runtime.js"; -import { activateSwarmRun, removeQueuedSwarmRun } from "./swarm-scheduler.js"; +import { activateSwarmRun, removeQueuedSwarmRun } from "./subagents/swarm/swarm-scheduler.js"; export { SUBAGENT_SPAWN_CONTEXT_MODES, SUBAGENT_SPAWN_MODES } from "./subagent-spawn.types.js"; diff --git a/src/agents/swarm-code-mode.ts b/src/agents/subagents/swarm/swarm-code-mode.ts similarity index 100% rename from src/agents/swarm-code-mode.ts rename to src/agents/subagents/swarm/swarm-code-mode.ts diff --git a/src/agents/swarm-collector.ts b/src/agents/subagents/swarm/swarm-collector.ts similarity index 82% rename from src/agents/swarm-collector.ts rename to src/agents/subagents/swarm/swarm-collector.ts index 70ad32c481a2..2e66ae0e5913 100644 --- a/src/agents/swarm-collector.ts +++ b/src/agents/subagents/swarm/swarm-collector.ts @@ -1,10 +1,10 @@ -import type { OpenClawConfig } from "../config/types.openclaw.js"; -import { ensureCompletionState } from "./subagent-delivery-state.js"; -import { SUBAGENT_ENDED_REASON_KILLED } from "./subagent-lifecycle-events.js"; -import { updateSubagentArchiveAtMs } from "./subagent-registry-helpers.js"; -import type { SubagentRunRecord, SwarmCollectorStatus } from "./subagent-registry.types.js"; -import { loadSubagentSessionEntry } from "./subagent-session-reconciliation.js"; -import { consumeSwarmStructuredOutput } from "./tools/structured-output-tool.js"; +import type { OpenClawConfig } from "../../../config/types.openclaw.js"; +import { ensureCompletionState } from "../../subagent-delivery-state.js"; +import { SUBAGENT_ENDED_REASON_KILLED } from "../../subagent-lifecycle-events.js"; +import { updateSubagentArchiveAtMs } from "../../subagent-registry-helpers.js"; +import type { SubagentRunRecord, SwarmCollectorStatus } from "../../subagent-registry.types.js"; +import { loadSubagentSessionEntry } from "../../subagent-session-reconciliation.js"; +import { consumeSwarmStructuredOutput } from "../../tools/structured-output-tool.js"; function resolveStatus( entry: SubagentRunRecord, diff --git a/src/agents/swarm-config.test.ts b/src/agents/subagents/swarm/swarm-config.test.ts similarity index 100% rename from src/agents/swarm-config.test.ts rename to src/agents/subagents/swarm/swarm-config.test.ts diff --git a/src/agents/swarm-config.ts b/src/agents/subagents/swarm/swarm-config.ts similarity index 92% rename from src/agents/swarm-config.ts rename to src/agents/subagents/swarm/swarm-config.ts index 7675ab8255c7..d98a5ac1f3bf 100644 --- a/src/agents/swarm-config.ts +++ b/src/agents/subagents/swarm/swarm-config.ts @@ -1,7 +1,7 @@ import { isRecord } from "@openclaw/normalization-core/record-coerce"; -import type { OpenClawConfig } from "../config/types.openclaw.js"; -import { clampNumber } from "../utils.js"; -import { resolveAgentConfig } from "./agent-scope-config.js"; +import type { OpenClawConfig } from "../../../config/types.openclaw.js"; +import { clampNumber } from "../../../utils.js"; +import { resolveAgentConfig } from "../../agent-scope-config.js"; type ResolvedSwarmConfig = { enabled: boolean; diff --git a/src/agents/swarm-output-schema.ts b/src/agents/subagents/swarm/swarm-output-schema.ts similarity index 73% rename from src/agents/swarm-output-schema.ts rename to src/agents/subagents/swarm/swarm-output-schema.ts index 0c2428fe572a..a18cffcecb4f 100644 --- a/src/agents/swarm-output-schema.ts +++ b/src/agents/subagents/swarm/swarm-output-schema.ts @@ -1,5 +1,5 @@ -import { validateJsonSchemaValue } from "../plugins/schema-validator.js"; -import type { JsonSchemaObject } from "../shared/json-schema.types.js"; +import { validateJsonSchemaValue } from "../../../plugins/schema-validator.js"; +import type { JsonSchemaObject } from "../../../shared/json-schema.types.js"; export function validateStructuredOutputSchema( schema: Record, diff --git a/src/agents/swarm-scheduler.test-support.ts b/src/agents/subagents/swarm/swarm-scheduler.test-support.ts similarity index 100% rename from src/agents/swarm-scheduler.test-support.ts rename to src/agents/subagents/swarm/swarm-scheduler.test-support.ts diff --git a/src/agents/swarm-scheduler.test.ts b/src/agents/subagents/swarm/swarm-scheduler.test.ts similarity index 100% rename from src/agents/swarm-scheduler.test.ts rename to src/agents/subagents/swarm/swarm-scheduler.test.ts diff --git a/src/agents/swarm-scheduler.ts b/src/agents/subagents/swarm/swarm-scheduler.ts similarity index 98% rename from src/agents/swarm-scheduler.ts rename to src/agents/subagents/swarm/swarm-scheduler.ts index efab38efda0a..b2b330014079 100644 --- a/src/agents/swarm-scheduler.ts +++ b/src/agents/subagents/swarm/swarm-scheduler.ts @@ -1,4 +1,4 @@ -import { isFastTestRuntimeEnv } from "../infra/env.js"; +import { isFastTestRuntimeEnv } from "../../../infra/env.js"; type QueuedSwarmRun = { runId: string; diff --git a/src/agents/tools/agents-wait-tool.ts b/src/agents/tools/agents-wait-tool.ts index 2c18e1fb480a..62c04ccc573d 100644 --- a/src/agents/tools/agents-wait-tool.ts +++ b/src/agents/tools/agents-wait-tool.ts @@ -5,7 +5,7 @@ import { resolveSubagentCompletionResultText } from "../subagent-completion-resu import { onSubagentRegistryPersisted } from "../subagent-registry-state.js"; import { getSubagentRunsByRunIds } from "../subagent-registry.js"; import type { SubagentRunRecord } from "../subagent-registry.types.js"; -import { resolveSwarmConfig } from "../swarm-config.js"; +import { resolveSwarmConfig } from "../subagents/swarm/swarm-config.js"; import type { AnyAgentTool } from "./common.js"; import { jsonResult, ToolInputError } from "./common.js"; diff --git a/src/agents/tools/sessions-spawn-tool.test.ts b/src/agents/tools/sessions-spawn-tool.test.ts index 0e2eea32b816..bd9580db677b 100644 --- a/src/agents/tools/sessions-spawn-tool.test.ts +++ b/src/agents/tools/sessions-spawn-tool.test.ts @@ -8,7 +8,7 @@ import { withTempDir } from "../../test-helpers/temp-dir.js"; import { SWARM_CODE_MODE_IDEMPOTENCY_KEY, SWARM_CODE_MODE_REQUEST_FINGERPRINT, -} from "../swarm-code-mode.js"; +} from "../subagents/swarm/swarm-code-mode.js"; import type { InProcessGatewayCaller } from "./in-process-gateway.js"; const hoisted = vi.hoisted(() => { diff --git a/src/agents/tools/sessions-spawn-tool.ts b/src/agents/tools/sessions-spawn-tool.ts index 09e780fe80b9..c6dff51e0662 100644 --- a/src/agents/tools/sessions-spawn-tool.ts +++ b/src/agents/tools/sessions-spawn-tool.ts @@ -33,8 +33,8 @@ import { normalizeSubagentTaskName } from "../subagent-task-name.js"; import { SWARM_CODE_MODE_IDEMPOTENCY_KEY, SWARM_CODE_MODE_REQUEST_FINGERPRINT, -} from "../swarm-code-mode.js"; -import { resolveSwarmConfig } from "../swarm-config.js"; +} from "../subagents/swarm/swarm-code-mode.js"; +import { resolveSwarmConfig } from "../subagents/swarm/swarm-config.js"; import { describeSessionsSpawnTool, SESSIONS_SPAWN_SUBAGENT_TOOL_DISPLAY_SUMMARY, diff --git a/src/agents/tools/structured-output-tool.test.ts b/src/agents/tools/structured-output-tool.test.ts index 2a75834100c3..3d11692c68e9 100644 --- a/src/agents/tools/structured-output-tool.test.ts +++ b/src/agents/tools/structured-output-tool.test.ts @@ -1,6 +1,6 @@ import { Value } from "typebox/value"; import { beforeEach, describe, expect, it } from "vitest"; -import { validateStructuredOutputSchema } from "../swarm-output-schema.js"; +import { validateStructuredOutputSchema } from "../subagents/swarm/swarm-output-schema.js"; import { isToolResultError } from "../tool-result-error.js"; import { createStructuredOutputTool } from "./structured-output-tool.js"; import { testing } from "./structured-output-tool.test-support.js"; diff --git a/src/agents/tools/swarm-tools.integration.test.ts b/src/agents/tools/swarm-tools.integration.test.ts index 8a0739d502c7..0d31ecd85cab 100644 --- a/src/agents/tools/swarm-tools.integration.test.ts +++ b/src/agents/tools/swarm-tools.integration.test.ts @@ -9,7 +9,7 @@ import { } from "../subagent-registry.test-helpers.js"; import "../subagent-registry.mocks.shared.js"; import { testing as spawnTesting } from "../subagent-spawn.test-support.js"; -import { testing as swarmSchedulerTesting } from "../swarm-scheduler.test-support.js"; +import { testing as swarmSchedulerTesting } from "../subagents/swarm/swarm-scheduler.test-support.js"; import { createAgentsWaitTool } from "./agents-wait-tool.js"; import { createSessionsSpawnTool } from "./sessions-spawn-tool.js"; import { testing as structuredOutputTesting } from "./structured-output-tool.test-support.js"; diff --git a/src/gateway/agent-turn/agent-request-preflight.ts b/src/gateway/agent-turn/agent-request-preflight.ts index 5896421cb130..d253847551d6 100644 --- a/src/gateway/agent-turn/agent-request-preflight.ts +++ b/src/gateway/agent-turn/agent-request-preflight.ts @@ -8,8 +8,8 @@ import { findAuthorizedSwarmCollectorRequest, findSwarmCollectorSession, } from "../../agents/subagent-registry-memory.js"; -import { resolveSwarmConfig } from "../../agents/swarm-config.js"; -import { validateStructuredOutputSchema } from "../../agents/swarm-output-schema.js"; +import { resolveSwarmConfig } from "../../agents/subagents/swarm/swarm-config.js"; +import { validateStructuredOutputSchema } from "../../agents/subagents/swarm/swarm-output-schema.js"; import { resolveAgentIdFromSessionKey, resolveStorePath } from "../../config/sessions.js"; import { loadSessionEntry } from "../../config/sessions/session-accessor.js"; import { diff --git a/src/gateway/server-methods/chat-metadata-runtime.ts b/src/gateway/server-methods/chat-metadata-runtime.ts index 84cf30f9e9fb..3d7989fa24c0 100644 --- a/src/gateway/server-methods/chat-metadata-runtime.ts +++ b/src/gateway/server-methods/chat-metadata-runtime.ts @@ -15,7 +15,7 @@ import { } from "../../agents/prepared-model-catalog.js"; import { getPreparedModelRuntimeAuthMaterializations } from "../../agents/prepared-model-runtime-auth.js"; import type { PreparedModelRuntimeSnapshot } from "../../agents/prepared-model-runtime.js"; -import { resolveSwarmConfig } from "../../agents/swarm-config.js"; +import { resolveSwarmConfig } from "../../agents/subagents/swarm/swarm-config.js"; import { resolveRuntimeConfigCacheKey } from "../../config/runtime-snapshot.js"; import { resolveSessionAuthProfileOverrideSource } from "../../config/sessions/auth-profile-override-provenance.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; diff --git a/src/gateway/server-methods/tools-catalog.ts b/src/gateway/server-methods/tools-catalog.ts index baadb242b21f..ce241ee96eaa 100644 --- a/src/gateway/server-methods/tools-catalog.ts +++ b/src/gateway/server-methods/tools-catalog.ts @@ -9,7 +9,7 @@ import { resolveAgentWorkspaceDir, resolveDefaultAgentId, } from "../../agents/agent-scope.js"; -import { resolveSwarmConfig } from "../../agents/swarm-config.js"; +import { resolveSwarmConfig } from "../../agents/subagents/swarm/swarm-config.js"; import { listCoreToolSections, PROFILE_OPTIONS,