mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-18 04:31:10 +00:00
fix(cycles): reduce remaining static import seams
This commit is contained in:
@@ -4,7 +4,7 @@ import { homedir } from "node:os";
|
||||
import path from "node:path";
|
||||
import { sliceUtf16Safe } from "../utils.js";
|
||||
import { assertSandboxPath } from "./sandbox-paths.js";
|
||||
import type { SandboxBackendExecSpec } from "./sandbox/backend.js";
|
||||
import type { SandboxBackendExecSpec } from "./sandbox/backend-handle.types.js";
|
||||
|
||||
const CHUNK_LIMIT = 8 * 1024;
|
||||
|
||||
|
||||
@@ -16,6 +16,12 @@
|
||||
import { EventEmitter } from "node:events";
|
||||
import WebSocket, { type ClientOptions } from "ws";
|
||||
import { buildOpenAIWebSocketWarmUpPayload } from "./openai-ws-request.js";
|
||||
import type {
|
||||
ClientEvent,
|
||||
FunctionToolDefinition,
|
||||
InputItem,
|
||||
OpenAIResponsesAssistantPhase,
|
||||
} from "./openai-ws-types.js";
|
||||
import {
|
||||
buildProviderRequestTlsClientOptions,
|
||||
resolveProviderRequestPolicyConfig,
|
||||
@@ -49,8 +55,6 @@ export interface UsageInfo {
|
||||
};
|
||||
}
|
||||
|
||||
export type OpenAIResponsesAssistantPhase = "commentary" | "final_answer";
|
||||
|
||||
export type OutputItem =
|
||||
| {
|
||||
type: "message";
|
||||
@@ -195,78 +199,16 @@ export type OpenAIWebSocketEvent =
|
||||
| RateLimitUpdatedEvent
|
||||
| ErrorEvent;
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Client → Server Event Types
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
export type ContentPart =
|
||||
| { type: "input_text"; text: string }
|
||||
| { type: "output_text"; text: string }
|
||||
| {
|
||||
type: "input_image";
|
||||
source: { type: "url"; url: string } | { type: "base64"; media_type: string; data: string };
|
||||
};
|
||||
|
||||
export type InputItem =
|
||||
| {
|
||||
type: "message";
|
||||
role: "system" | "developer" | "user" | "assistant";
|
||||
content: string | ContentPart[];
|
||||
phase?: OpenAIResponsesAssistantPhase;
|
||||
}
|
||||
| { type: "function_call"; id?: string; call_id?: string; name: string; arguments: string }
|
||||
| { type: "function_call_output"; call_id: string; output: string }
|
||||
| {
|
||||
type: "reasoning";
|
||||
id?: string;
|
||||
content?: string;
|
||||
encrypted_content?: string;
|
||||
summary?: string;
|
||||
}
|
||||
| { type: "item_reference"; id: string };
|
||||
|
||||
export type ToolChoice =
|
||||
| "auto"
|
||||
| "none"
|
||||
| "required"
|
||||
| { type: "function"; function: { name: string } };
|
||||
|
||||
export interface FunctionToolDefinition {
|
||||
type: "function";
|
||||
name: string;
|
||||
description?: string;
|
||||
parameters?: Record<string, unknown>;
|
||||
strict?: boolean;
|
||||
}
|
||||
|
||||
/** Standard response.create event payload (full turn) */
|
||||
export interface ResponseCreateEvent {
|
||||
type: "response.create";
|
||||
model: string;
|
||||
store?: boolean;
|
||||
stream?: boolean;
|
||||
input?: string | InputItem[];
|
||||
instructions?: string;
|
||||
tools?: FunctionToolDefinition[];
|
||||
tool_choice?: ToolChoice;
|
||||
context_management?: unknown;
|
||||
previous_response_id?: string;
|
||||
max_output_tokens?: number;
|
||||
temperature?: number;
|
||||
top_p?: number;
|
||||
metadata?: Record<string, string>;
|
||||
reasoning?: { effort?: "low" | "medium" | "high"; summary?: "auto" | "concise" | "detailed" };
|
||||
text?: { verbosity?: "low" | "medium" | "high"; [key: string]: unknown };
|
||||
truncation?: "auto" | "disabled";
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
/** Warm-up payload: generate: false pre-loads connection without generating output */
|
||||
export interface WarmUpEvent extends ResponseCreateEvent {
|
||||
generate: false;
|
||||
}
|
||||
|
||||
export type ClientEvent = ResponseCreateEvent | WarmUpEvent;
|
||||
export type {
|
||||
ClientEvent,
|
||||
ContentPart,
|
||||
FunctionToolDefinition,
|
||||
InputItem,
|
||||
OpenAIResponsesAssistantPhase,
|
||||
ResponseCreateEvent,
|
||||
ToolChoice,
|
||||
WarmUpEvent,
|
||||
} from "./openai-ws-types.js";
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Connection Manager
|
||||
|
||||
@@ -5,7 +5,7 @@ import type {
|
||||
InputItem,
|
||||
ResponseCreateEvent,
|
||||
WarmUpEvent,
|
||||
} from "./openai-ws-connection.js";
|
||||
} from "./openai-ws-types.js";
|
||||
import { resolveOpenAITextVerbosity } from "./pi-embedded-runner/openai-stream-wrappers.js";
|
||||
import { resolveProviderRequestPolicyConfig } from "./provider-request-config.js";
|
||||
import { stripSystemPromptCacheBoundary } from "./system-prompt-cache-boundary.js";
|
||||
|
||||
69
src/agents/openai-ws-types.ts
Normal file
69
src/agents/openai-ws-types.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
export type OpenAIResponsesAssistantPhase = "commentary" | "final_answer";
|
||||
|
||||
export type ContentPart =
|
||||
| { type: "input_text"; text: string }
|
||||
| { type: "output_text"; text: string }
|
||||
| {
|
||||
type: "input_image";
|
||||
source: { type: "url"; url: string } | { type: "base64"; media_type: string; data: string };
|
||||
};
|
||||
|
||||
export type InputItem =
|
||||
| {
|
||||
type: "message";
|
||||
role: "system" | "developer" | "user" | "assistant";
|
||||
content: string | ContentPart[];
|
||||
phase?: OpenAIResponsesAssistantPhase;
|
||||
}
|
||||
| { type: "function_call"; id?: string; call_id?: string; name: string; arguments: string }
|
||||
| { type: "function_call_output"; call_id: string; output: string }
|
||||
| {
|
||||
type: "reasoning";
|
||||
id?: string;
|
||||
content?: string;
|
||||
encrypted_content?: string;
|
||||
summary?: string;
|
||||
}
|
||||
| { type: "item_reference"; id: string };
|
||||
|
||||
export type ToolChoice =
|
||||
| "auto"
|
||||
| "none"
|
||||
| "required"
|
||||
| { type: "function"; function: { name: string } };
|
||||
|
||||
export interface FunctionToolDefinition {
|
||||
type: "function";
|
||||
name: string;
|
||||
description?: string;
|
||||
parameters?: Record<string, unknown>;
|
||||
strict?: boolean;
|
||||
}
|
||||
|
||||
export interface ResponseCreateEvent {
|
||||
type: "response.create";
|
||||
model: string;
|
||||
store?: boolean;
|
||||
stream?: boolean;
|
||||
input?: string | InputItem[];
|
||||
instructions?: string;
|
||||
tools?: FunctionToolDefinition[];
|
||||
tool_choice?: ToolChoice;
|
||||
context_management?: unknown;
|
||||
previous_response_id?: string;
|
||||
max_output_tokens?: number;
|
||||
temperature?: number;
|
||||
top_p?: number;
|
||||
metadata?: Record<string, string>;
|
||||
reasoning?: { effort?: "low" | "medium" | "high"; summary?: "auto" | "concise" | "detailed" };
|
||||
text?: { verbosity?: "low" | "medium" | "high"; [key: string]: unknown };
|
||||
truncation?: "auto" | "disabled";
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
/** Warm-up payload: generate: false pre-loads connection without generating output */
|
||||
export interface WarmUpEvent extends ResponseCreateEvent {
|
||||
generate: false;
|
||||
}
|
||||
|
||||
export type ClientEvent = ResponseCreateEvent | WarmUpEvent;
|
||||
@@ -10,10 +10,8 @@ import {
|
||||
import type { ThinkLevel } from "../../auto-reply/thinking.js";
|
||||
import { resolveChannelCapabilities } from "../../config/channel-capabilities.js";
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
import {
|
||||
ensureContextEnginesInitialized,
|
||||
resolveContextEngine,
|
||||
} from "../../context-engine/index.js";
|
||||
import { ensureContextEnginesInitialized } from "../../context-engine/init.js";
|
||||
import { resolveContextEngine } from "../../context-engine/registry.js";
|
||||
import {
|
||||
captureCompactionCheckpointSnapshot,
|
||||
cleanupCompactionCheckpointSnapshot,
|
||||
|
||||
@@ -6,7 +6,7 @@ import { resolveBoundaryPath } from "../../infra/boundary-path.js";
|
||||
import { parseSshTarget } from "../../infra/ssh-tunnel.js";
|
||||
import { resolvePreferredOpenClawTmpDir } from "../../infra/tmp-openclaw-dir.js";
|
||||
import { resolveUserPath } from "../../utils.js";
|
||||
import type { SandboxBackendCommandResult } from "./backend.js";
|
||||
import type { SandboxBackendCommandResult } from "./backend-handle.types.js";
|
||||
import { sanitizeEnvVars } from "./sanitize-env-vars.js";
|
||||
|
||||
export type SshSandboxSettings = {
|
||||
|
||||
@@ -3,7 +3,7 @@ import * as sessions from "../config/sessions.js";
|
||||
import * as gateway from "../gateway/call.js";
|
||||
import * as sessionUtils from "../gateway/session-utils.fs.js";
|
||||
import { recoverOrphanedSubagentSessions } from "./subagent-orphan-recovery.js";
|
||||
import * as subagentRegistryRuntime from "./subagent-registry-runtime.js";
|
||||
import * as subagentRegistrySteerRuntime from "./subagent-registry-steer-runtime.js";
|
||||
import type { SubagentRunRecord } from "./subagent-registry.types.js";
|
||||
|
||||
// Mock dependencies before importing the module under test
|
||||
@@ -28,7 +28,7 @@ vi.mock("../gateway/session-utils.fs.js", () => ({
|
||||
readSessionMessages: vi.fn(() => []),
|
||||
}));
|
||||
|
||||
vi.mock("./subagent-registry-runtime.js", () => ({
|
||||
vi.mock("./subagent-registry-steer-runtime.js", () => ({
|
||||
replaceSubagentRunAfterSteer: vi.fn(() => true),
|
||||
}));
|
||||
|
||||
@@ -103,7 +103,7 @@ describe("subagent-orphan-recovery", () => {
|
||||
expect(params.sessionKey).toBe("agent:main:subagent:test-session-1");
|
||||
expect(params.message).toContain("gateway reload");
|
||||
expect(params.message).toContain("Test task: implement feature X");
|
||||
expect(subagentRegistryRuntime.replaceSubagentRunAfterSteer).toHaveBeenCalledWith(
|
||||
expect(subagentRegistrySteerRuntime.replaceSubagentRunAfterSteer).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
previousRunId: "run-1",
|
||||
nextRunId: "test-run-id",
|
||||
@@ -408,7 +408,7 @@ describe("subagent-orphan-recovery", () => {
|
||||
|
||||
it("does not retry a session after the gateway accepted resume but run remap failed", async () => {
|
||||
vi.mocked(gateway.callGateway).mockResolvedValue({ runId: "new-run" } as never);
|
||||
vi.mocked(subagentRegistryRuntime.replaceSubagentRunAfterSteer).mockReturnValue(false);
|
||||
vi.mocked(subagentRegistrySteerRuntime.replaceSubagentRunAfterSteer).mockReturnValue(false);
|
||||
|
||||
vi.mocked(sessions.loadSessionStore).mockReturnValue({
|
||||
"agent:main:subagent:test-session-1": {
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
import { callGateway } from "../gateway/call.js";
|
||||
import { readSessionMessages } from "../gateway/session-utils.fs.js";
|
||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||
import { replaceSubagentRunAfterSteer } from "./subagent-registry-runtime.js";
|
||||
import { replaceSubagentRunAfterSteer } from "./subagent-registry-steer-runtime.js";
|
||||
import type { SubagentRunRecord } from "./subagent-registry.types.js";
|
||||
|
||||
const log = createSubsystemLogger("subagent-orphan-recovery");
|
||||
|
||||
23
src/agents/subagent-registry-steer-runtime.ts
Normal file
23
src/agents/subagent-registry-steer-runtime.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { SubagentRunRecord } from "./subagent-registry.types.js";
|
||||
|
||||
export type ReplaceSubagentRunAfterSteerParams = {
|
||||
previousRunId: string;
|
||||
nextRunId: string;
|
||||
fallback?: SubagentRunRecord;
|
||||
runTimeoutSeconds?: number;
|
||||
preserveFrozenResultFallback?: boolean;
|
||||
};
|
||||
|
||||
type ReplaceSubagentRunAfterSteerFn = (params: ReplaceSubagentRunAfterSteerParams) => boolean;
|
||||
|
||||
let replaceSubagentRunAfterSteerImpl: ReplaceSubagentRunAfterSteerFn | null = null;
|
||||
|
||||
export function configureSubagentRegistrySteerRuntime(params: {
|
||||
replaceSubagentRunAfterSteer: ReplaceSubagentRunAfterSteerFn;
|
||||
}) {
|
||||
replaceSubagentRunAfterSteerImpl = params.replaceSubagentRunAfterSteer;
|
||||
}
|
||||
|
||||
export function replaceSubagentRunAfterSteer(params: ReplaceSubagentRunAfterSteerParams) {
|
||||
return replaceSubagentRunAfterSteerImpl?.(params) ?? false;
|
||||
}
|
||||
@@ -51,6 +51,7 @@ import {
|
||||
persistSubagentRunsToDisk,
|
||||
restoreSubagentRunsFromDisk,
|
||||
} from "./subagent-registry-state.js";
|
||||
import { configureSubagentRegistrySteerRuntime } from "./subagent-registry-steer-runtime.js";
|
||||
import type { SubagentRunRecord } from "./subagent-registry.types.js";
|
||||
import { resolveAgentTimeoutMs } from "./timeout.js";
|
||||
|
||||
@@ -650,6 +651,10 @@ const subagentRunManager = createSubagentRunManager({
|
||||
completeSubagentRun,
|
||||
});
|
||||
|
||||
configureSubagentRegistrySteerRuntime({
|
||||
replaceSubagentRunAfterSteer: (params) => subagentRunManager.replaceSubagentRunAfterSteer(params),
|
||||
});
|
||||
|
||||
export function markSubagentRunForSteerRestart(runId: string) {
|
||||
return subagentRunManager.markSubagentRunForSteerRestart(runId);
|
||||
}
|
||||
|
||||
44
src/channels/plugins/approval-native.types.ts
Normal file
44
src/channels/plugins/approval-native.types.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import type { OpenClawConfig } from "../../config/types.openclaw.js";
|
||||
import type { ChannelApprovalKind } from "../../infra/approval-types.js";
|
||||
import type { ExecApprovalRequest } from "../../infra/exec-approvals.js";
|
||||
import type { PluginApprovalRequest } from "../../infra/plugin-approvals.js";
|
||||
|
||||
export type ChannelApprovalNativeSurface = "origin" | "approver-dm";
|
||||
|
||||
export type ChannelApprovalNativeTarget = {
|
||||
to: string;
|
||||
threadId?: string | number | null;
|
||||
};
|
||||
|
||||
export type ChannelApprovalNativeDeliveryPreference = ChannelApprovalNativeSurface | "both";
|
||||
|
||||
export type ChannelApprovalNativeRequest = ExecApprovalRequest | PluginApprovalRequest;
|
||||
|
||||
export type ChannelApprovalNativeDeliveryCapabilities = {
|
||||
enabled: boolean;
|
||||
preferredSurface: ChannelApprovalNativeDeliveryPreference;
|
||||
supportsOriginSurface: boolean;
|
||||
supportsApproverDmSurface: boolean;
|
||||
notifyOriginWhenDmOnly?: boolean;
|
||||
};
|
||||
|
||||
export type ChannelApprovalNativeAdapter = {
|
||||
describeDeliveryCapabilities: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeDeliveryCapabilities;
|
||||
resolveOriginTarget?: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeTarget | null | Promise<ChannelApprovalNativeTarget | null>;
|
||||
resolveApproverDmTargets?: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeTarget[] | Promise<ChannelApprovalNativeTarget[]>;
|
||||
};
|
||||
@@ -4,6 +4,7 @@ import type { AgentBinding } from "../../config/types.agents.js";
|
||||
import type { OpenClawConfig } from "../../config/types.openclaw.js";
|
||||
import type { GroupToolPolicyConfig } from "../../config/types.tools.js";
|
||||
import type { ChannelApprovalNativeRuntimeAdapter } from "../../infra/approval-handler-runtime-types.js";
|
||||
import type { ChannelApprovalKind } from "../../infra/approval-types.js";
|
||||
import type { ExecApprovalRequest, ExecApprovalResolved } from "../../infra/exec-approvals.js";
|
||||
import type { OutboundDeliveryResult } from "../../infra/outbound/deliver-types.js";
|
||||
import type { OutboundIdentity } from "../../infra/outbound/identity-types.js";
|
||||
@@ -17,6 +18,7 @@ import type { PluginRuntime } from "../../plugins/runtime/types.js";
|
||||
import type { RuntimeEnv } from "../../runtime.js";
|
||||
import type { ResolverContext, SecretDefaults } from "../../secrets/runtime-shared.js";
|
||||
import type { SecretTargetRegistryEntry } from "../../secrets/target-registry-types.js";
|
||||
import type { ChannelApprovalNativeAdapter } from "./approval-native.types.js";
|
||||
import type { ConfigWriteTarget } from "./config-writes.js";
|
||||
import type {
|
||||
ChannelAccountSnapshot,
|
||||
@@ -36,7 +38,7 @@ import type {
|
||||
} from "./types.core.js";
|
||||
|
||||
type ConfiguredBindingRule = AgentBinding;
|
||||
export type { ChannelApprovalKind } from "../../infra/approval-handler-runtime-types.js";
|
||||
export type { ChannelApprovalKind } from "../../infra/approval-types.js";
|
||||
|
||||
export type ChannelActionAvailabilityState =
|
||||
| { kind: "enabled" }
|
||||
@@ -667,52 +669,21 @@ export type ChannelApprovalDeliveryAdapter = {
|
||||
request: ExecApprovalRequest;
|
||||
}) => boolean;
|
||||
};
|
||||
export type { ChannelApprovalKind } from "../../infra/approval-handler-runtime-types.js";
|
||||
export type { ChannelApprovalKind } from "../../infra/approval-types.js";
|
||||
|
||||
export type ChannelApproveCommandBehavior =
|
||||
| { kind: "allow" }
|
||||
| { kind: "ignore" }
|
||||
| { kind: "reply"; text: string };
|
||||
|
||||
export type ChannelApprovalNativeSurface = "origin" | "approver-dm";
|
||||
|
||||
export type ChannelApprovalNativeTarget = {
|
||||
to: string;
|
||||
threadId?: string | number | null;
|
||||
};
|
||||
|
||||
export type ChannelApprovalNativeDeliveryPreference = ChannelApprovalNativeSurface | "both";
|
||||
|
||||
export type ChannelApprovalNativeRequest = ExecApprovalRequest | PluginApprovalRequest;
|
||||
|
||||
export type ChannelApprovalNativeDeliveryCapabilities = {
|
||||
enabled: boolean;
|
||||
preferredSurface: ChannelApprovalNativeDeliveryPreference;
|
||||
supportsOriginSurface: boolean;
|
||||
supportsApproverDmSurface: boolean;
|
||||
notifyOriginWhenDmOnly?: boolean;
|
||||
};
|
||||
|
||||
export type ChannelApprovalNativeAdapter = {
|
||||
describeDeliveryCapabilities: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeDeliveryCapabilities;
|
||||
resolveOriginTarget?: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeTarget | null | Promise<ChannelApprovalNativeTarget | null>;
|
||||
resolveApproverDmTargets?: (params: {
|
||||
cfg: OpenClawConfig;
|
||||
accountId?: string | null;
|
||||
approvalKind: ChannelApprovalKind;
|
||||
request: ChannelApprovalNativeRequest;
|
||||
}) => ChannelApprovalNativeTarget[] | Promise<ChannelApprovalNativeTarget[]>;
|
||||
};
|
||||
export type {
|
||||
ChannelApprovalNativeAdapter,
|
||||
ChannelApprovalNativeDeliveryCapabilities,
|
||||
ChannelApprovalNativeDeliveryPreference,
|
||||
ChannelApprovalNativeRequest,
|
||||
ChannelApprovalNativeSurface,
|
||||
ChannelApprovalNativeTarget,
|
||||
} from "./approval-native.types.js";
|
||||
|
||||
export type ChannelApprovalRenderAdapter = {
|
||||
exec?: {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { ChannelApprovalNativePlannedTarget } from "./approval-native-delivery.js";
|
||||
import type { PreparedChannelNativeApprovalTarget } from "./approval-native-runtime.js";
|
||||
import type { ChannelApprovalKind } from "./approval-types.js";
|
||||
import type {
|
||||
ExpiredApprovalView,
|
||||
PendingApprovalView,
|
||||
@@ -12,7 +13,6 @@ import type { PluginApprovalRequest, PluginApprovalResolved } from "./plugin-app
|
||||
|
||||
export type ApprovalRequest = ExecApprovalRequest | PluginApprovalRequest;
|
||||
export type ApprovalResolved = ExecApprovalResolved | PluginApprovalResolved;
|
||||
export type ChannelApprovalKind = "exec" | "plugin";
|
||||
|
||||
export type ChannelApprovalCapabilityHandlerContext = {
|
||||
cfg: OpenClawConfig;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import type {
|
||||
ChannelApprovalKind,
|
||||
ChannelApprovalNativeAdapter,
|
||||
ChannelApprovalNativeSurface,
|
||||
ChannelApprovalNativeTarget,
|
||||
} from "../channels/plugins/types.adapters.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
} from "../channels/plugins/approval-native.types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { buildChannelApprovalNativeTargetKey } from "./approval-native-target-key.js";
|
||||
import type { ChannelApprovalKind } from "./approval-types.js";
|
||||
import type { ExecApprovalRequest } from "./exec-approvals.js";
|
||||
import type { PluginApprovalRequest } from "./plugin-approvals.js";
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { ChannelApprovalKind } from "../channels/plugins/types.adapters.js";
|
||||
import {
|
||||
normalizeLowercaseStringOrEmpty,
|
||||
normalizeOptionalString,
|
||||
@@ -12,6 +11,7 @@ import {
|
||||
resolveApprovalRoutedElsewhereNoticeText,
|
||||
} from "./approval-native-route-notice.js";
|
||||
import { buildChannelApprovalNativeTargetKey } from "./approval-native-target-key.js";
|
||||
import type { ChannelApprovalKind } from "./approval-types.js";
|
||||
import type { ExecApprovalRequest } from "./exec-approvals.js";
|
||||
import type { PluginApprovalRequest } from "./plugin-approvals.js";
|
||||
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
import type {
|
||||
ChannelApprovalKind,
|
||||
ChannelApprovalNativeAdapter,
|
||||
} from "../channels/plugins/types.adapters.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ChannelApprovalNativeAdapter } from "../channels/plugins/approval-native.types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
resolveChannelNativeApprovalDeliveryPlan,
|
||||
type ChannelApprovalNativePlannedTarget,
|
||||
type ChannelApprovalNativeDeliveryPlan,
|
||||
} from "./approval-native-delivery.js";
|
||||
import { createApprovalNativeRouteReporter } from "./approval-native-route-coordinator.js";
|
||||
import type { ChannelApprovalKind } from "./approval-types.js";
|
||||
import {
|
||||
createExecApprovalChannelRuntime,
|
||||
type ExecApprovalChannelRuntime,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ChannelApprovalNativeTarget } from "../channels/plugins/types.adapters.js";
|
||||
import type { ChannelApprovalNativeTarget } from "../channels/plugins/approval-native.types.js";
|
||||
import { normalizeOptionalString } from "../shared/string-coerce.js";
|
||||
|
||||
export function buildChannelApprovalNativeTargetKey(target: ChannelApprovalNativeTarget): string {
|
||||
|
||||
1
src/infra/approval-types.ts
Normal file
1
src/infra/approval-types.ts
Normal file
@@ -0,0 +1 @@
|
||||
export type ChannelApprovalKind = "exec" | "plugin";
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { ChannelApprovalKind } from "../channels/plugins/types.adapters.js";
|
||||
import type { ChannelApprovalKind } from "./approval-types.js";
|
||||
import { resolveExecApprovalCommandDisplay } from "./exec-approval-command-display.js";
|
||||
import {
|
||||
buildExecApprovalActionDescriptors,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { applyPluginAutoEnable } from "../config/plugin-auto-enable.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
withBundledPluginAllowlistCompat,
|
||||
withBundledPluginEnablementCompat,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginRuntime } from "./runtime/types.js";
|
||||
import type { OpenClawPluginApi, PluginLogger } from "./types.js";
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
import { parseFrontmatterBlock } from "../markdown/frontmatter.js";
|
||||
import { isPathInsideWithRealpath } from "../security/scan-paths.js";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { applyMergePatch } from "../config/merge-patch.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { matchBoundaryFileOpenFailure, openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
import { isRecord } from "../utils.js";
|
||||
import { normalizePluginsConfig, resolveEffectivePluginActivationState } from "./config-state.js";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { applyMergePatch } from "../config/merge-patch.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
import { isRecord } from "../utils.js";
|
||||
import {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { applyMergePatch } from "../config/merge-patch.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
import { isRecord } from "../utils.js";
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
withBundledPluginAllowlistCompat,
|
||||
withBundledPluginEnablementCompat,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { buildPluginApi } from "./api-builder.js";
|
||||
import type { MemoryEmbeddingProviderAdapter } from "./memory-embedding-providers.js";
|
||||
import type { PluginRuntime } from "./runtime/types.js";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { listPotentialConfiguredChannelIds } from "../channels/config-presence.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
resolveMemoryDreamingConfig,
|
||||
resolveMemoryDreamingPluginConfig,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { collectUniqueCommandDescriptors } from "../cli/program/command-descriptor-utils.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginLoadOptions } from "./loader.js";
|
||||
import { loadOpenClawPluginCliRegistry, loadOpenClawPlugins } from "./loader.js";
|
||||
import type { PluginRegistry } from "./registry.js";
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
import { resolveConversationBindingContext } from "../channels/conversation-binding-context.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { logVerbose } from "../globals.js";
|
||||
import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { isRecord } from "../utils.js";
|
||||
import { findBundledPluginMetadataById } from "./bundled-plugin-metadata.js";
|
||||
import { loadPluginManifestRegistry } from "./manifest-registry.js";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { normalizeChatChannelId } from "../channels/ids.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
normalizeOptionalLowercaseString,
|
||||
normalizeOptionalString,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
resolveMemorySlotDecisionShared,
|
||||
resolveEnableStateShared,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { normalizeChatChannelId } from "../channels/ids.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { ensurePluginAllowlisted } from "../config/plugins-allowlist.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { setPluginEnabledInConfig } from "./toggle-config.js";
|
||||
|
||||
export type PluginEnableResult = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginInstallRecord } from "../config/types.plugins.js";
|
||||
import { buildNpmResolutionFields, type NpmSpecResolution } from "../infra/install-source-utils.js";
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
} from "../agents/harness/registry.js";
|
||||
import type { ChannelPlugin } from "../channels/plugins/types.js";
|
||||
import { isChannelConfigured } from "../config/channel-configured.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginInstallRecord } from "../config/types.plugins.js";
|
||||
import type { GatewayRequestHandler } from "../gateway/server-methods/types.js";
|
||||
import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
resolveManifestCommandAliasOwnerInRegistry,
|
||||
type PluginManifestCommandAliasRecord,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolvePluginCapabilityProviders } from "./capability-provider-runtime.js";
|
||||
import {
|
||||
getRegisteredMemoryEmbeddingProvider,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { SecretInput } from "../config/types.secrets.js";
|
||||
import type { EmbeddingInput } from "../memory-host-sdk/host/embedding-inputs.js";
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolveRuntimePluginRegistry } from "./loader.js";
|
||||
import { getMemoryRuntime } from "./memory-state.js";
|
||||
import {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { MemoryCitationsMode } from "../config/types.memory.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { MemorySearchManager } from "../memory-host-sdk/runtime-files.js";
|
||||
|
||||
export type MemoryPromptSectionBuilder = (params: {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { upsertAuthProfile } from "../agents/auth-profiles/profiles.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { SecretInput } from "../config/types.secrets.js";
|
||||
import { createLazyRuntimeSurface } from "../shared/lazy-runtime.js";
|
||||
import { normalizeOptionalString } from "../shared/string-coerce.js";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { normalizeProviderId } from "../agents/model-selection.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
normalizeLowercaseStringOrEmpty,
|
||||
normalizeOptionalLowercaseString,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { normalizeLegacyOnboardAuthChoice } from "../commands/auth-choice-legacy.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolveManifestProviderAuthChoice } from "./provider-auth-choices.js";
|
||||
|
||||
function normalizeLegacyAuthChoice(choice: string, env?: NodeJS.ProcessEnv): string {
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
} from "../agents/agent-scope.js";
|
||||
import { upsertAuthProfile } from "../agents/auth-profiles.js";
|
||||
import { resolveDefaultAgentWorkspaceDir } from "../agents/workspace.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { RuntimeEnv } from "../runtime.js";
|
||||
import type { WizardPrompter } from "../wizard/prompts.js";
|
||||
import { enablePluginInConfig } from "./enable.js";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { resolveProviderIdForAuth } from "../agents/provider-auth-aliases.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { normalizePluginsConfig, resolveEffectiveEnableState } from "./config-state.js";
|
||||
import { loadPluginManifestRegistry, type PluginManifestRecord } from "./manifest-registry.js";
|
||||
import type { PluginOrigin } from "./types.js";
|
||||
|
||||
@@ -5,8 +5,8 @@ import { resolveOpenClawAgentDir } from "../agents/agent-paths.js";
|
||||
import { buildAuthProfileId } from "../agents/auth-profiles/identity.js";
|
||||
import { upsertAuthProfile } from "../agents/auth-profiles/profiles.js";
|
||||
import { resolveProviderIdForAuth } from "../agents/provider-auth-aliases.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveStateDir } from "../config/paths.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
coerceSecretRef,
|
||||
DEFAULT_SECRET_PROVIDER_ALIAS,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadPluginManifestRegistry } from "./manifest-registry.js";
|
||||
import { resolveDiscoveredProviderPluginIds } from "./providers.js";
|
||||
import { resolvePluginProviders } from "./providers.runtime.js";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { normalizeProviderId } from "../agents/model-selection.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ModelProviderConfig } from "../config/types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { ProviderDiscoveryOrder, ProviderPlugin } from "./types.js";
|
||||
|
||||
const DISCOVERY_ORDER: readonly ProviderDiscoveryOrder[] = ["simple", "profile", "paired", "late"];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DEFAULT_PROVIDER } from "../agents/defaults.js";
|
||||
import { resolveAllowlistModelKey } from "../agents/model-allowlist-ref.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
|
||||
export function ensureModelAllowlistEntry(params: {
|
||||
cfg: OpenClawConfig;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
export {
|
||||
applyOpencodeZenModelDefault,
|
||||
OPENCODE_ZEN_DEFAULT_MODEL,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { AgentModelListConfig } from "../config/types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
|
||||
export function resolvePrimaryModel(model?: AgentModelListConfig | string): string | undefined {
|
||||
if (typeof model === "string") {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import path from "node:path";
|
||||
import { formatCliCommand } from "../cli/command-format.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { asNullableObjectRecord } from "../shared/record-coerce.js";
|
||||
import { note } from "../terminal/note.js";
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { normalizeProviderId } from "../agents/provider-id.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ModelProviderConfig } from "../config/types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadBundledPluginPublicArtifactModuleSync } from "./public-surface-loader.js";
|
||||
import type {
|
||||
ProviderApplyConfigDefaultsContext,
|
||||
|
||||
@@ -5,8 +5,8 @@ import {
|
||||
} from "../agents/plugin-text-transforms.js";
|
||||
import { normalizeProviderId } from "../agents/provider-id.js";
|
||||
import type { ProviderSystemPromptContribution } from "../agents/system-prompt-contribution.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ModelProviderConfig } from "../config/types.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { normalizeOptionalString } from "../shared/string-coerce.js";
|
||||
import { resolveBundledProviderPolicySurface } from "./provider-public-artifacts.js";
|
||||
import { resolveCatalogHookProviderPluginIds } from "./providers.js";
|
||||
|
||||
@@ -5,8 +5,8 @@ import {
|
||||
SELF_HOSTED_DEFAULT_COST,
|
||||
SELF_HOSTED_DEFAULT_MAX_TOKENS,
|
||||
} from "../agents/self-hosted-provider-defaults.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { ModelDefinitionConfig } from "../config/types.models.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||
import {
|
||||
normalizeOptionalString,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DEFAULT_PROVIDER } from "../agents/defaults.js";
|
||||
import { normalizeProviderId } from "../agents/model-selection.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
normalizeOptionalLowercaseString,
|
||||
normalizeOptionalString,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { STATE_DIR } from "../config/paths.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||
import type { PluginRegistry } from "./registry.js";
|
||||
import type { OpenClawPluginServiceContext, PluginLogger } from "./types.js";
|
||||
|
||||
@@ -2,7 +2,7 @@ import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { normalizeProviderId } from "../agents/provider-id.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { buildPluginApi } from "./api-builder.js";
|
||||
import { collectPluginConfigContractMatches } from "./config-contracts.js";
|
||||
import { discoverOpenClawPlugins } from "./discovery.js";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { normalizeChatChannelId } from "../channels/ids.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
|
||||
export function setPluginEnabledInConfig(
|
||||
config: OpenClawConfig,
|
||||
|
||||
@@ -60,7 +60,7 @@ import type {
|
||||
RuntimeWebFetchMetadata,
|
||||
RuntimeWebSearchMetadata,
|
||||
} from "../secrets/runtime-web-tools.types.js";
|
||||
import type { SecurityAuditFinding } from "../security/audit.js";
|
||||
import type { SecurityAuditFinding } from "../security/audit.types.js";
|
||||
import type {
|
||||
SpeechDirectiveTokenParseContext,
|
||||
SpeechDirectiveTokenParseResult,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginInstallRecord } from "../config/types.plugins.js";
|
||||
import { formatErrorMessage } from "../infra/errors.js";
|
||||
import { resolvePluginInstallDir } from "./install.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
expectedIntegrityForUpdate,
|
||||
readInstalledPackageVersion,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { withActivatedPluginIds } from "./activation-context.js";
|
||||
import {
|
||||
buildPluginSnapshotCacheEnvKey,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginManifestRecord } from "./manifest-registry.js";
|
||||
import { resolvePluginWebSearchProviders } from "./web-search-providers.runtime.js";
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { listAgentIds, resolveAgentDir } from "../agents/agent-scope.js";
|
||||
import { resolveAuthStorePath } from "../agents/auth-profiles/paths.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolveUserPath } from "../utils.js";
|
||||
|
||||
export function listAuthProfileStorePaths(config: OpenClawConfig, stateDir: string): string[] {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadBundledPluginPublicArtifactModuleSync } from "../plugins/public-surface-loader.js";
|
||||
import type { ResolverContext, SecretDefaults } from "./runtime-shared.js";
|
||||
import type { SecretTargetRegistryEntry } from "./target-registry-types.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadPluginManifestRegistry } from "../plugins/manifest-registry.js";
|
||||
|
||||
type ChannelEnvVarLookupParams = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { coerceSecretRef, resolveSecretInputRef } from "../config/types.secrets.js";
|
||||
import { getPath } from "./path-utils.js";
|
||||
import { isExpectedResolvedSecretValue } from "./secret-value.js";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { isDeepStrictEqual } from "node:util";
|
||||
import type { AuthProfileStore } from "../agents/auth-profiles.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
resolveSecretInputRef,
|
||||
type SecretProviderConfig,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { listAgentIds, resolveAgentDir, resolveDefaultAgentId } from "../agents/
|
||||
import type { AuthProfileStore } from "../agents/auth-profiles.js";
|
||||
import { AUTH_STORE_VERSION } from "../agents/auth-profiles/constants.js";
|
||||
import { loadPersistedAuthProfileStore } from "../agents/auth-profiles/persisted.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { SecretProviderConfig, SecretRef, SecretRefSource } from "../config/types.secrets.js";
|
||||
import { isSafeExecutableValue } from "../infra/exec-safety.js";
|
||||
import { normalizeAgentId } from "../routing/session-key.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { SecretRef } from "../config/types.secrets.js";
|
||||
import { formatExecSecretRefIdValidationMessage, isValidExecSecretRefId } from "./ref-contract.js";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { resolveProviderAuthAliasMap } from "../agents/provider-auth-aliases.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadPluginManifestRegistry } from "../plugins/manifest-registry.js";
|
||||
|
||||
const CORE_PROVIDER_AUTH_ENV_VAR_CANDIDATES = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
normalizeSecretInputString,
|
||||
resolveSecretInputRef,
|
||||
|
||||
@@ -2,8 +2,8 @@ import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { expect, vi } from "vitest";
|
||||
import { ensureAuthProfileStore, type AuthProfileStore } from "../agents/auth-profiles.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { clearConfigCache, clearRuntimeConfigSnapshot, loadConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { captureEnv } from "../test-utils/env.js";
|
||||
import { clearSecretsRuntimeSnapshot } from "./runtime.js";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { getBootstrapChannelSecrets } from "../channels/plugins/bootstrap-registry.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { loadBundledChannelSecretContractApi } from "./channel-contract-api.js";
|
||||
import { type ResolverContext, type SecretDefaults } from "./runtime-shared.js";
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { MediaUnderstandingModelConfig } from "../config/types.tools.js";
|
||||
import {
|
||||
resolveConfiguredMediaEntryCapabilities,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agents/agent-scope.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import {
|
||||
collectPluginConfigContractMatches,
|
||||
resolvePluginConfigContractsById,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import type { PluginOrigin } from "../plugins/types.js";
|
||||
import { collectChannelConfigAssignments } from "./runtime-config-collectors-channels.js";
|
||||
import { collectCoreConfigAssignments } from "./runtime-config-collectors-core.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { createGatewayCredentialPlan } from "../gateway/credential-planner.js";
|
||||
import type { SecretDefaults } from "./runtime-shared.js";
|
||||
import { isRecord } from "./shared.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolveSecretInputRef } from "../config/types.secrets.js";
|
||||
import { createLazyRuntimeNamedExport } from "../shared/lazy-runtime.js";
|
||||
import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { resolveSecretInputRef } from "../config/types.secrets.js";
|
||||
import {
|
||||
resolveManifestContractPluginIds,
|
||||
|
||||
@@ -2,8 +2,8 @@ import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { expect, vi } from "vitest";
|
||||
import { ensureAuthProfileStore, type AuthProfileStore } from "../agents/auth-profiles.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { clearConfigCache, clearRuntimeConfigSnapshot, loadConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { clearPluginDiscoveryCache } from "../plugins/discovery.js";
|
||||
import { clearPluginLoaderCache } from "../plugins/loader.js";
|
||||
import { clearPluginManifestRegistryCache } from "../plugins/manifest-registry.js";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { listAgentIds, resolveAgentDir } from "../agents/agent-scope.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { formatErrorMessage } from "../infra/errors.js";
|
||||
import { resolveUserPath } from "../utils.js";
|
||||
import { listAuthProfileStorePaths as listAuthProfileStorePathsFromAuthStorePaths } from "./auth-store-paths.js";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
||||
import { getPath } from "./path-utils.js";
|
||||
import { getCoreSecretTargetRegistry, getSecretTargetRegistry } from "./target-registry-data.js";
|
||||
import {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import type { SecurityAuditFinding } from "./audit.js";
|
||||
import type { SecurityAuditFinding } from "./audit.types.js";
|
||||
|
||||
let auditDeepModulePromise: Promise<typeof import("./audit.deep.runtime.js")> | undefined;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { formatCliCommand } from "../cli/command-format.js";
|
||||
import type { SecurityAuditFinding, SecurityAuditReport } from "./audit.js";
|
||||
import type { SecurityAuditFinding, SecurityAuditReport } from "./audit.types.js";
|
||||
|
||||
export function collectDeepProbeFindings(params: {
|
||||
deep?: SecurityAuditReport["deep"];
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
resolveTaskFlowRegistryDir,
|
||||
resolveTaskFlowRegistrySqlitePath,
|
||||
} from "./task-flow-registry.paths.js";
|
||||
import type { TaskFlowRegistryStoreSnapshot } from "./task-flow-registry.store.js";
|
||||
import type { TaskFlowRegistryStoreSnapshot } from "./task-flow-registry.store.types.js";
|
||||
import type { TaskFlowRecord, TaskFlowSyncMode, JsonValue } from "./task-flow-registry.types.js";
|
||||
|
||||
type FlowRegistryRow = {
|
||||
|
||||
@@ -5,11 +5,10 @@ import {
|
||||
saveTaskFlowRegistryStateToSqlite,
|
||||
upsertTaskFlowRegistryRecordToSqlite,
|
||||
} from "./task-flow-registry.store.sqlite.js";
|
||||
import type { TaskFlowRegistryStoreSnapshot } from "./task-flow-registry.store.types.js";
|
||||
import type { TaskFlowRecord } from "./task-flow-registry.types.js";
|
||||
|
||||
export type TaskFlowRegistryStoreSnapshot = {
|
||||
flows: Map<string, TaskFlowRecord>;
|
||||
};
|
||||
export type { TaskFlowRegistryStoreSnapshot } from "./task-flow-registry.store.types.js";
|
||||
|
||||
export type TaskFlowRegistryStore = {
|
||||
loadSnapshot: () => TaskFlowRegistryStoreSnapshot;
|
||||
|
||||
5
src/tasks/task-flow-registry.store.types.ts
Normal file
5
src/tasks/task-flow-registry.store.types.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import type { TaskFlowRecord } from "./task-flow-registry.types.js";
|
||||
|
||||
export type TaskFlowRegistryStoreSnapshot = {
|
||||
flows: Map<string, TaskFlowRecord>;
|
||||
};
|
||||
@@ -3,7 +3,7 @@ import type { DatabaseSync, StatementSync } from "node:sqlite";
|
||||
import { requireNodeSqlite } from "../infra/node-sqlite.js";
|
||||
import type { DeliveryContext } from "../utils/delivery-context.js";
|
||||
import { resolveTaskRegistryDir, resolveTaskRegistrySqlitePath } from "./task-registry.paths.js";
|
||||
import type { TaskRegistryStoreSnapshot } from "./task-registry.store.js";
|
||||
import type { TaskRegistryStoreSnapshot } from "./task-registry.store.types.js";
|
||||
import type { TaskDeliveryState, TaskRecord } from "./task-registry.types.js";
|
||||
|
||||
type TaskRegistryRow = {
|
||||
|
||||
@@ -9,12 +9,10 @@ import {
|
||||
upsertTaskDeliveryStateToSqlite,
|
||||
upsertTaskRegistryRecordToSqlite,
|
||||
} from "./task-registry.store.sqlite.js";
|
||||
import type { TaskRegistryStoreSnapshot } from "./task-registry.store.types.js";
|
||||
import type { TaskDeliveryState, TaskRecord } from "./task-registry.types.js";
|
||||
|
||||
export type TaskRegistryStoreSnapshot = {
|
||||
tasks: Map<string, TaskRecord>;
|
||||
deliveryStates: Map<string, TaskDeliveryState>;
|
||||
};
|
||||
export type { TaskRegistryStoreSnapshot } from "./task-registry.store.types.js";
|
||||
|
||||
export type TaskRegistryStore = {
|
||||
loadSnapshot: () => TaskRegistryStoreSnapshot;
|
||||
|
||||
6
src/tasks/task-registry.store.types.ts
Normal file
6
src/tasks/task-registry.store.types.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import type { TaskDeliveryState, TaskRecord } from "./task-registry.types.js";
|
||||
|
||||
export type TaskRegistryStoreSnapshot = {
|
||||
tasks: Map<string, TaskRecord>;
|
||||
deliveryStates: Map<string, TaskDeliveryState>;
|
||||
};
|
||||
Reference in New Issue
Block a user