/** * External ROS-node capability executor — Phase 1 completion. * * Dispatches `implementation.kind: "external_ros_node"` capabilities via * the existing RosTransport action / service / topic APIs. The manifest * `launch` field is metadata only (operator-owned bringup) — the gateway * never shells out to `ros2 launch` in v1. */ import type { Capability, CapabilityImplementation } from "./capabilities.js"; import type { RosTransport } from "./transport/transport.js"; import type { SafetyLimits } from "./safety.js"; export interface ExecuteExternalOptions { /** Robot namespace for topic/action/service prefixing. */ namespace?: string; /** Optional timeout for subscribe_once (ms). */ timeoutMs?: number; /** * When aborted mid-action, call `transport.cancelActionGoal` (best-effort). * Subscribe waits also reject early on abort. */ signal?: AbortSignal; /** When set, NavigateToPose-style goals outside the fence are rejected. */ workspaceCheck?: SafetyLimits; } export interface ExecuteExternalResult { text: string; outputs?: Record; isError?: boolean; } /** * Map navigate_to-style inputs into a Nav2 NavigateToPose goal when the * action type looks like NavigateToPose and inputs have x/y. */ export declare function buildExternalGoal(impl: Extract, inputs: Record): Record; /** * Execute an external_ros_node capability against a connected transport. */ export declare function executeExternalCapability(capability: Capability, inputs: Record, transport: RosTransport, options?: ExecuteExternalOptions): Promise; //# sourceMappingURL=external-capability.d.ts.map