mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 00:52:53 +00:00
Allow the browser upload tool to resolve OpenClaw-managed inbound media refs such as `media://inbound/<id>` and sandbox-relative `media/inbound/<id>` while preserving the existing upload-root path contract.
Keep upload-root files ahead of sandbox-relative inbound fallback, reject nested absolute inbound media files, and validate raw `media://` paths before URL normalization so traversal-shaped refs cannot resolve to direct media ids.
Verification:
- `OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs extensions/browser/src/browser/paths.test.ts --reporter=verbose`
- `OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs extensions/browser/src/browser/paths.test.ts --reporter=dot`
- `OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo`
- `pnpm lint --threads=8`
- `.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- `git diff --check`
- GitHub PR checks on be08e6c8a8: dependency-guard, check-lint, check-test-types, check-additional-extension-bundled, checks-fast-contracts-plugins-a, checks-fast-contracts-plugins-b all passed.
Fixes #83544.
Co-authored-by: Zee Zheng <zheng.zuo0@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
95 lines
3.2 KiB
TypeScript
95 lines
3.2 KiB
TypeScript
export { startBrowserBridgeServer, stopBrowserBridgeServer } from "./browser/bridge-server.js";
|
|
export type { BrowserBridge } from "./browser/bridge-server.js";
|
|
export {
|
|
browserAct,
|
|
browserArmDialog,
|
|
browserArmFileChooser,
|
|
browserConsoleMessages,
|
|
browserNavigate,
|
|
browserPdfSave,
|
|
browserScreenshotAction,
|
|
} from "./browser/client-actions.js";
|
|
export {
|
|
browserCloseTab,
|
|
browserFocusTab,
|
|
browserOpenTab,
|
|
browserCreateProfile,
|
|
browserDeleteProfile,
|
|
browserDoctor,
|
|
browserProfiles,
|
|
browserResetProfile,
|
|
browserSnapshot,
|
|
browserStart,
|
|
browserStatus,
|
|
browserStop,
|
|
browserTabAction,
|
|
browserTabs,
|
|
} from "./browser/client.js";
|
|
export { runBrowserProxyCommand } from "./node-host/invoke-browser.js";
|
|
export type {
|
|
BrowserCreateProfileResult,
|
|
BrowserDeleteProfileResult,
|
|
BrowserDoctorCheck,
|
|
BrowserDoctorReport,
|
|
BrowserResetProfileResult,
|
|
BrowserStatus,
|
|
BrowserTab,
|
|
BrowserTransport,
|
|
ProfileStatus,
|
|
SnapshotResult,
|
|
} from "./browser/client.js";
|
|
export type { BrowserExecutable } from "./browser/chrome.executables.js";
|
|
export type { ResolvedBrowserConfig, ResolvedBrowserProfile } from "./browser/config.js";
|
|
export { resolveBrowserConfig, resolveProfile } from "./browser/config.js";
|
|
export {
|
|
DEFAULT_AI_SNAPSHOT_MAX_CHARS,
|
|
DEFAULT_BROWSER_EVALUATE_ENABLED,
|
|
DEFAULT_OPENCLAW_BROWSER_COLOR,
|
|
DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME,
|
|
} from "./browser/constants.js";
|
|
export {
|
|
parseBrowserMajorVersion,
|
|
readBrowserVersion,
|
|
resolveGoogleChromeExecutableForPlatform,
|
|
} from "./browser/chrome.executables.js";
|
|
export { redactCdpUrl } from "./browser/cdp.helpers.js";
|
|
export {
|
|
DEFAULT_UPLOAD_DIR,
|
|
resolveExistingPathsWithinRoot,
|
|
resolveExistingUploadPaths,
|
|
} from "./browser/paths.js";
|
|
export { getBrowserProfileCapabilities } from "./browser/profile-capabilities.js";
|
|
export { applyBrowserProxyPaths, persistBrowserProxyFiles } from "./browser/proxy-files.js";
|
|
export {
|
|
isPersistentBrowserProfileMutation,
|
|
normalizeBrowserRequestPath,
|
|
resolveRequestedBrowserProfile,
|
|
} from "./browser/request-policy.js";
|
|
export {
|
|
closeTrackedBrowserTabsForSessions,
|
|
trackSessionBrowserTab,
|
|
untrackSessionBrowserTab,
|
|
} from "./browser/session-tab-registry.js";
|
|
export { ensureBrowserControlAuth, resolveBrowserControlAuth } from "./browser/control-auth.js";
|
|
export { movePathToTrash } from "./browser/trash.js";
|
|
export {
|
|
createBrowserControlContext,
|
|
getBrowserControlState,
|
|
startBrowserControlServiceFromConfig,
|
|
stopBrowserControlService,
|
|
} from "./control-service.js";
|
|
export { createBrowserRuntimeState, stopBrowserRuntime } from "./browser/runtime-lifecycle.js";
|
|
export { type BrowserServerState, createBrowserRouteContext } from "./browser/server-context.js";
|
|
export { registerBrowserRoutes } from "./browser/routes/index.js";
|
|
export { createBrowserRouteDispatcher } from "./browser/routes/dispatcher.js";
|
|
export type { BrowserRouteRegistrar } from "./browser/routes/types.js";
|
|
export {
|
|
installBrowserAuthMiddleware,
|
|
installBrowserCommonMiddleware,
|
|
} from "./browser/server-middleware.js";
|
|
export type { BrowserFormField } from "./browser/client-actions-core.js";
|
|
export {
|
|
normalizeBrowserFormField,
|
|
normalizeBrowserFormFieldValue,
|
|
} from "./browser/form-fields.js";
|