mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-09 11:34:16 +00:00
* perf(plugins): declare doctor contract surfaces * perf(doctor): slim migration import closures * perf(plugins): narrow doctor declaration record surface and wire owner-test lane Registry records carry only the doctorContract declaration instead of the whole parsed manifest, and check:changed now selects the src/plugins-owned declaration honesty and closure-guard tests for extension module/manifest changes so cross-lane drift cannot pass PR classification. * fix(doctor): keep control-plane dist imports require-safe Keep doctor and channel control-plane chunks off exec-class dependencies, and enforce native require(esm) loading during postbuild. * chore(plugin-sdk): regenerate API baseline * chore(plugin-sdk): sync export ordering * fix(plugins): satisfy doctor contract CI boundaries * perf(doctor): make qqbot doctor closure dependency-light qqbot was the last plugin above 5s in doctor state-migration enumeration (~8s under tsx/jiti). The cost was not the state-key builder (already a leaf): its doctor closure value-imported the runtime-doctor SDK barrel, whose plugin-state-store/state-db re-exports pull kysely (~330 modules), plus security-runtime for one fileExists (~200 modules), all resolved per-module by jiti during enumeration. Split the migration-define helpers and light re-exports into a new private-local plugin-sdk/runtime-doctor-migrations subpath; runtime-doctor re-exports it so its public surface is byte-identical (API baseline hash unchanged). qqbot's doctor-contract and state-migrations now import only the light subpath, swapping fileExists for the equivalent async legacyStateFileExists already in the closure. qqbot enumeration: ~8.0s/531 modules -> ~0.25s/18 modules. * chore(plugin-sdk): drop private-local subpath from API baseline runtime-doctor-migrations is private-local-only; the baseline tracks public modules, and the earlier line was generated before the classification. * fix(plugins): register runtime-doctor-migrations boundary paths The private-local subpath list feeds the extension package boundary map; the shared paths config and xai's derived overrides must carry the same entry or the boundary contract test fails.
80 lines
3.1 KiB
TypeScript
80 lines
3.1 KiB
TypeScript
import type { ChangedLaneResult } from "./changed-lanes.mjs";
|
|
|
|
export type ChangedCheckCommand = {
|
|
name: string;
|
|
args: string[];
|
|
bin?: string;
|
|
env?: NodeJS.ProcessEnv;
|
|
};
|
|
|
|
export type ChangedCheckPlan = {
|
|
commands: ChangedCheckCommand[];
|
|
summary: string;
|
|
};
|
|
|
|
export type ChangedCheckPlanOptions = {
|
|
env?: NodeJS.ProcessEnv;
|
|
staged?: boolean;
|
|
base?: string;
|
|
head?: string;
|
|
platform?: NodeJS.Platform;
|
|
swiftlintAvailable?: boolean;
|
|
};
|
|
|
|
export type TargetedLintOptions = {
|
|
fileExists?: (path: string) => boolean;
|
|
};
|
|
|
|
export type TargetedLintCommand = Required<
|
|
Pick<ChangedCheckCommand, "name" | "bin" | "args" | "env">
|
|
>;
|
|
|
|
export function createChangedCheckChildEnv(baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
export function changedCheckLocalDependenciesReady(cwd?: string): boolean;
|
|
export function changedCheckRequiresRemote(result?: ChangedLaneResult): boolean;
|
|
export function shouldDelegateChangedCheckToCrabbox(
|
|
argv?: string[],
|
|
env?: NodeJS.ProcessEnv,
|
|
options?: { cwd?: string; result?: ChangedLaneResult; diffRefsReady?: boolean },
|
|
): boolean;
|
|
export function buildChangedCheckCrabboxArgs(argv?: string[], options?: { cwd?: string }): string[];
|
|
export function delegationFailedBeforeRunning(output: string): boolean;
|
|
export function shouldRunNpmLockGuard(paths: string[]): boolean;
|
|
export function shouldRunPromptSnapshotCheck(paths: string[]): boolean;
|
|
export function shouldRunPromptSnapshotOwnerTest(paths: string[]): boolean;
|
|
export function shouldRunControlUiI18nVerify(paths: string[]): boolean;
|
|
export function shouldRunRuntimeSidecarBaselineCheck(paths: string[]): boolean;
|
|
export function shouldRunDoctorContractOwnerTests(paths: string[]): boolean;
|
|
export function shouldRunSqliteSessionSchemaBaselineCheck(paths: string[]): boolean;
|
|
export function shouldRunPluginSdkApiBaselineCheck(paths: string[]): boolean;
|
|
export function shouldRunPluginSdkSurfaceChecks(paths: string[]): boolean;
|
|
export function shouldRunDeprecationHygieneChecks(paths: string[]): boolean;
|
|
export function shouldRunCanvasA2uiNativeResourceCheck(paths: string[]): boolean;
|
|
export function shouldRunAppcastOwnerTest(paths: string[]): boolean;
|
|
export function shouldRunTestTempCreationReport(paths: string[]): boolean;
|
|
export function createNpmLockGuardCommand(paths: string[]): ChangedCheckCommand | null;
|
|
export function createChangedCheckPlan(
|
|
result: ChangedLaneResult,
|
|
options?: ChangedCheckPlanOptions,
|
|
): ChangedCheckPlan;
|
|
export function createTargetedCoreLintCommand(
|
|
paths: string[],
|
|
env?: NodeJS.ProcessEnv,
|
|
options?: TargetedLintOptions,
|
|
): TargetedLintCommand | null;
|
|
export function createTargetedExtensionLintCommand(
|
|
paths: string[],
|
|
env?: NodeJS.ProcessEnv,
|
|
options?: TargetedLintOptions,
|
|
): TargetedLintCommand | null;
|
|
export function createTargetedScriptLintCommand(
|
|
paths: string[],
|
|
env?: NodeJS.ProcessEnv,
|
|
options?: TargetedLintOptions,
|
|
): TargetedLintCommand | null;
|
|
export function createPnpmManagedCommand<T extends ChangedCheckCommand>(
|
|
command: T,
|
|
env?: NodeJS.ProcessEnv,
|
|
): T & { bin: string; env: NodeJS.ProcessEnv };
|
|
export function cleanupCorepackPnpmShimDir(): void;
|