@nexface/tools 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"operation-view.js","sourceRoot":"","sources":["../src/operation-view.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CursorIcon as Cursor } from \"@phosphor-icons/react/Cursor\";\nimport { SparkleIcon as Sparkle } from \"@phosphor-icons/react/Sparkle\";\nimport * as React from \"react\";\nimport { useLayoutEffect, useEffect, useRef, useState, type CSSProperties } from \"react\";\nimport { createPortal, flushSync } from \"react-dom\";\nimport type { AgentOperation, AgentOperationProgressEntry, AgentOperationTarget } from \"./operation-types.js\";\n\nimport { lockOperationSurface } from \"./operation-lock.js\";\n\nconst BROWSER_TOOL_NAMES = new Set([\"nxf_getSnapshot\", \"nxf_executeAction\", \"nxf_applyAction\"]);\nconst CENTER_BROWSER_TOOL_NAMES = new Set([\"nxf_getSnapshot\", \"nxf_executeAction\"]);\nconst POINTER_EXIT_DURATION_MS = 120;\nconst CONTROLLER_EXIT_DURATION_MS = 300;\n\ninterface PointerPosition {\n left: number;\n top: number;\n}\n\ntype PointerPhase = \"hidden\" | \"resting\" | \"moving\";\n\ninterface PointerMotion {\n durationMs: number;\n phase: PointerPhase;\n position: PointerPosition;\n revision: number;\n toolCallId: string;\n}\n\nfunction operationProgressLabel(operation: AgentOperation): string {\n const progressLabel = operation.progressLabel?.trim().replace(/\\s+/g, \" \");\n if (progressLabel) return progressLabel.slice(0, 48);\n return BROWSER_TOOL_NAMES.has(operation.name)\n ? \"正在浏览网页\"\n : \"正在处理你的请求\";\n}\n\nfunction operationEffect(operation: AgentOperation): \"read\" | \"action\" | \"navigate\" | \"processing\" {\n return operation.effect ?? \"action\";\n}\n\nfunction normalizedLabel(label: string | undefined): string | undefined {\n const normalized = label?.trim().replace(/\\s+/g, \" \");\n return normalized || undefined;\n}\n\nfunction operationTargetLabel(\n operation: AgentOperation,\n target: AgentOperationTarget | undefined,\n): string | undefined {\n const label = target?.label;\n if (!label || label === operation.name) return undefined;\n const rawNamePrefix = `${operation.name} · `;\n return label.startsWith(rawNamePrefix) ? label.slice(rawNamePrefix.length) : label;\n}\n\nfunction pointerMoveDuration(from: PointerPosition, to: PointerPosition): number {\n const distance = Math.hypot(to.left - from.left, to.top - from.top);\n if (distance < 2) return 0;\n return Math.round(Math.min(360, Math.max(180, 180 + distance * 0.18)));\n}\n\nfunction pointerReachedTarget(element: HTMLElement, target: PointerPosition): boolean {\n const rect = element.getBoundingClientRect();\n return Math.hypot(rect.left - target.left, rect.top - target.top) < 2;\n}\n\ninterface AgentPointerProps {\n active: boolean;\n initialPosition: PointerPosition | undefined;\n label: string;\n labelActive: boolean;\n operation: AgentOperation;\n targetElement: HTMLElement | undefined;\n targetPosition: PointerPosition | undefined;\n visible: boolean;\n onPointerReady?(toolCallId: string): void;\n}\n\nfunction AgentPointer({ active, initialPosition, label, labelActive, operation, targetElement, targetPosition, visible, onPointerReady }: AgentPointerProps) {\n const pointerRef = useRef<HTMLDivElement>(null);\n const activeOperationRef = useRef<string | undefined>(undefined);\n const activeTargetRef = useRef<HTMLElement | undefined>(undefined);\n const exitTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const movementTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const motionRevisionRef = useRef(0);\n const latestActiveRef = useRef(active);\n const latestOperationRef = useRef(operation);\n const [motion, setMotion] = useState<PointerMotion>();\n latestActiveRef.current = active;\n latestOperationRef.current = operation;\n\n const clearExitTimer = () => {\n if (!exitTimerRef.current) return;\n clearTimeout(exitTimerRef.current);\n exitTimerRef.current = undefined;\n };\n const clearMovementTimer = () => {\n if (!movementTimerRef.current) return;\n clearTimeout(movementTimerRef.current);\n movementTimerRef.current = undefined;\n };\n const finishMovement = (revision: number, toolCallId: string) => {\n const latestOperation = latestOperationRef.current;\n if (!latestActiveRef.current\n || motionRevisionRef.current !== revision\n || latestOperation.toolCallId !== toolCallId) return;\n clearMovementTimer();\n const settle = () => setMotion((current) => current?.revision === revision ? { ...current, phase: \"resting\" } : current);\n if (latestOperation.name !== \"nxf_applyAction\" || !onPointerReady) {\n settle();\n return;\n }\n queueMicrotask(() => {\n if (!latestActiveRef.current || motionRevisionRef.current !== revision || latestOperationRef.current.toolCallId !== toolCallId) return;\n flushSync(settle);\n requestAnimationFrame(() => requestAnimationFrame(() => {\n if (latestActiveRef.current && motionRevisionRef.current === revision\n && latestOperationRef.current.toolCallId === toolCallId && activeTargetRef.current?.isConnected) onPointerReady(toolCallId);\n }));\n });\n };\n\n useEffect(() => () => {\n clearExitTimer();\n clearMovementTimer();\n }, []);\n\n useEffect(() => {\n if (!visible || !initialPosition) {\n if (!motion || motion.phase === \"hidden\") return;\n activeOperationRef.current = undefined;\n activeTargetRef.current = undefined;\n clearMovementTimer();\n const revision = ++motionRevisionRef.current;\n setMotion((current) => current\n ? { ...current, durationMs: POINTER_EXIT_DURATION_MS, phase: \"hidden\", revision }\n : current);\n clearExitTimer();\n exitTimerRef.current = setTimeout(() => {\n if (motionRevisionRef.current === revision) setMotion(undefined);\n }, POINTER_EXIT_DURATION_MS);\n return;\n }\n\n clearExitTimer();\n if (!motion) {\n activeOperationRef.current = operation.toolCallId;\n activeTargetRef.current = undefined;\n const revision = ++motionRevisionRef.current;\n setMotion({\n durationMs: 0,\n phase: \"resting\",\n position: initialPosition,\n revision,\n toolCallId: operation.toolCallId,\n });\n return;\n }\n\n if (!active) {\n activeOperationRef.current = undefined;\n activeTargetRef.current = undefined;\n clearMovementTimer();\n if (motion.phase !== \"resting\") {\n const revision = ++motionRevisionRef.current;\n setMotion((current) => current\n ? { ...current, phase: \"resting\", revision }\n : current);\n }\n return;\n }\n\n const operationChanged = activeOperationRef.current !== operation.toolCallId;\n if (operationChanged) {\n activeOperationRef.current = operation.toolCallId;\n activeTargetRef.current = undefined;\n clearMovementTimer();\n } else if (motion.phase === \"hidden\") {\n setMotion((current) => current\n ? { ...current, durationMs: 0, phase: \"resting\" }\n : current);\n }\n\n if (!targetElement || !targetPosition) {\n const positionChanged = CENTER_BROWSER_TOOL_NAMES.has(operation.name)\n && (motion.position.left !== initialPosition.left || motion.position.top !== initialPosition.top);\n if (operationChanged || activeTargetRef.current || positionChanged) {\n activeTargetRef.current = undefined;\n clearMovementTimer();\n const revision = ++motionRevisionRef.current;\n const pointerRect = pointerRef.current?.getBoundingClientRect();\n setMotion((current) => current\n ? {\n ...current,\n durationMs: 0,\n phase: \"resting\",\n position: operationChanged || positionChanged ? initialPosition : pointerRect\n ? { left: pointerRect.left, top: pointerRect.top }\n : current.position,\n revision,\n toolCallId: operation.toolCallId,\n }\n : current);\n }\n return;\n }\n const targetChanged = operationChanged || activeTargetRef.current !== targetElement;\n if (!targetChanged) {\n if (motion.position.left === targetPosition.left && motion.position.top === targetPosition.top) return;\n clearMovementTimer();\n const revision = ++motionRevisionRef.current;\n const durationMs = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ? 0 : 180;\n setMotion((current) => current\n ? { ...current, durationMs, phase: \"moving\", position: targetPosition, revision }\n : current);\n if (durationMs === 0) finishMovement(revision, operation.toolCallId);\n else movementTimerRef.current = setTimeout(() => finishMovement(revision, operation.toolCallId), durationMs + 50);\n return;\n }\n\n activeTargetRef.current = targetElement;\n clearMovementTimer();\n const revision = ++motionRevisionRef.current;\n const pointerRect = pointerRef.current?.getBoundingClientRect();\n const currentPosition = pointerRect\n ? { left: pointerRect.left, top: pointerRect.top }\n : motion.position;\n const prefersReducedMotion = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ?? false;\n const durationMs = prefersReducedMotion ? 0 : pointerMoveDuration(currentPosition, targetPosition);\n setMotion((current) => current\n ? {\n ...current,\n durationMs,\n phase: \"moving\",\n position: targetPosition,\n revision,\n toolCallId: operation.toolCallId,\n }\n : current);\n if (durationMs === 0) finishMovement(revision, operation.toolCallId);\n else {\n // A first-frame position update may not dispatch transitionend.\n movementTimerRef.current = setTimeout(() => finishMovement(revision, operation.toolCallId), durationMs + 50);\n }\n }, [\n active,\n initialPosition?.left,\n initialPosition?.top,\n motion,\n operation.toolCallId,\n targetElement,\n targetPosition?.left,\n targetPosition?.top,\n visible,\n ]);\n\n if (!motion) return null;\n const effect = operationEffect(operation);\n const activeEffect = active ? effect : undefined;\n const browserTool = CENTER_BROWSER_TOOL_NAMES.has(operation.name);\n return (\n <div\n aria-hidden\n className=\"agent-operation__pointer-effect\"\n data-active={active ? \"true\" : \"false\"}\n data-operation-effect={activeEffect}\n data-phase={motion.phase}\n onTransitionEnd={(event) => {\n if (event.currentTarget !== event.target\n || event.propertyName !== \"transform\"\n || motion.phase !== \"moving\"\n || !pointerReachedTarget(event.currentTarget, motion.position)) return;\n finishMovement(motion.revision, motion.toolCallId);\n }}\n ref={pointerRef}\n style={{\n \"--agent-operation-pointer-duration\": `${motion.durationMs}ms`,\n \"--agent-operation-pointer-x\": `${motion.position.left}px`,\n \"--agent-operation-pointer-y\": `${motion.position.top}px`,\n } as CSSProperties}\n >\n {active && visible && motion.toolCallId === operation.toolCallId && browserTool && effect === \"action\" && motion.phase !== \"hidden\" ? (\n <>\n <span className=\"agent-operation__browser-halo\" />\n {labelActive ? <span className=\"agent-operation__browser-label\" title={label}>{label}</span> : null}\n </>\n ) : null}\n {active && visible && motion.toolCallId === operation.toolCallId && !browserTool && effect === \"action\" && motion.phase !== \"hidden\" ? (\n <>\n <span className=\"agent-operation__pointer-cursor\">\n <Cursor className=\"agent-operation__pointer\" size={24} weight=\"fill\" />\n </span>\n </>\n ) : null}\n {active && (!browserTool || (effect === \"read\" && visible && motion.toolCallId === operation.toolCallId))\n && motion.phase !== \"hidden\" && (labelActive || effect !== \"action\") ? (\n <span className={labelActive ? \"agent-operation__pointer-label\" : \"agent-operation__pointer-indicator\"} data-browser-tool={browserTool ? \"true\" : undefined} data-operation-effect={activeEffect} title={labelActive ? label : undefined}>\n {activeEffect === \"processing\" ? <span className=\"agent-operation__pointer-processing\" /> : null}\n {activeEffect === \"read\" ? (\n <span className=\"agent-operation__pointer-read-scan\">\n <i />\n <i />\n <i />\n <i />\n <i />\n </span>\n ) : null}\n {activeEffect === \"navigate\" ? <span className=\"agent-operation__pointer-navigation-trail\" /> : null}\n {labelActive ? <span className=\"agent-operation__pointer-label-text\">{label}</span> : null}\n </span>\n ) : null}\n </div>\n );\n}\n\nexport interface OperationOverlayViewProps {\n fallbackPosition?: PointerPosition;\n feedbackActive?: boolean;\n labelActive?: boolean;\n operation?: AgentOperation;\n progressHistory?: readonly AgentOperationProgressEntry[];\n running: boolean;\n humanHasControl?: boolean;\n cancelling?: boolean;\n onCancel?(): void;\n resolveSurface?(): HTMLElement | undefined;\n resolveTarget?(operation: AgentOperation): AgentOperationTarget | undefined;\n onPointerReady?(toolCallId: string): void;\n}\n\nexport function OperationOverlayView({ operation, progressHistory = [], running, feedbackActive = running, labelActive = feedbackActive, humanHasControl = false, cancelling = false, onCancel, resolveSurface, resolveTarget, fallbackPosition, onPointerReady }: OperationOverlayViewProps) {\n const [, setGeometry] = useState(\"\");\n useLayoutEffect(() => {\n const rect = resolveSurface?.()?.getBoundingClientRect();\n if (rect) setGeometry([rect.left, rect.top, rect.width, rect.height].join(\",\"));\n }, [resolveSurface]);\n const [historyOpen, setHistoryOpen] = useState(false);\n const [historyId] = useState(() => `nexface-operation-history-${globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`}`);\n const clearTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\n const controllerTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const [visibleOperation, setVisibleOperation] = useState(operation);\n const [controllerMounted, setControllerMounted] = useState(Boolean(operation\n && operation.status !== \"cancelled\"\n && (running || humanHasControl || operation.status === \"failed\")));\n const [controllerExiting, setControllerExiting] = useState(false);\n useLayoutEffect(() => {\n if (clearTimerRef.current) clearTimeout(clearTimerRef.current);\n if (operation) setVisibleOperation(operation);\n if (operation?.status === \"cancelled\") {\n clearTimerRef.current = setTimeout(() => setVisibleOperation(undefined), 600);\n }\n return () => { if (clearTimerRef.current) clearTimeout(clearTimerRef.current); };\n }, [operation, running]);\n useEffect(() => {\n if ((!running && !feedbackActive && !humanHasControl) || !visibleOperation || visibleOperation.status === \"cancelled\") return;\n let frame = requestAnimationFrame(function update() {\n const surface = resolveSurface?.();\n const target = resolveTarget?.(visibleOperation)?.element;\n const geometry = [surface, target].map((element) => {\n if (!element?.isConnected) return \"\";\n const rect = element.getBoundingClientRect();\n return [rect.left, rect.top, rect.width, rect.height].join(\",\");\n }).join(\";\");\n setGeometry(geometry);\n frame = requestAnimationFrame(update);\n });\n return () => cancelAnimationFrame(frame);\n }, [visibleOperation?.toolCallId, visibleOperation?.status, running, feedbackActive, humanHasControl, resolveSurface, resolveTarget]);\n useEffect(() => {\n if (progressHistory.length === 0) setHistoryOpen(false);\n }, [progressHistory.length]);\n const controllerShouldBeVisible = Boolean(visibleOperation\n && visibleOperation.status !== \"cancelled\"\n && (running || humanHasControl || visibleOperation.status === \"failed\"));\n useEffect(() => {\n if (controllerTimerRef.current) clearTimeout(controllerTimerRef.current);\n if (controllerShouldBeVisible) {\n setControllerMounted(true);\n setControllerExiting(false);\n return;\n }\n if (!controllerMounted) {\n setControllerExiting(false);\n return;\n }\n setHistoryOpen(false);\n setControllerExiting(true);\n controllerTimerRef.current = setTimeout(() => {\n setControllerMounted(false);\n setControllerExiting(false);\n }, CONTROLLER_EXIT_DURATION_MS);\n return () => {\n if (controllerTimerRef.current) clearTimeout(controllerTimerRef.current);\n };\n }, [controllerMounted, controllerShouldBeVisible]);\n useLayoutEffect(() => {\n const surface = resolveSurface?.();\n if (!surface || !running || humanHasControl) return;\n return lockOperationSurface(surface, () => cancelButtonRef.current?.focus());\n }, [humanHasControl, resolveSurface, running]);\n if (!visibleOperation || typeof document === \"undefined\") return null;\n const resolvedTarget = resolveTarget?.(visibleOperation);\n const surfaceElement = resolveSurface?.();\n const target = resolvedTarget && (!surfaceElement || surfaceElement.contains(resolvedTarget.element))\n ? resolvedTarget\n : undefined;\n const structuredTargetLost = visibleOperation.name === \"nxf_applyAction\" && !target;\n const progressLabel = operationProgressLabel(visibleOperation);\n const effect = operationEffect(visibleOperation);\n const targetLabel = operationTargetLabel(visibleOperation, target);\n const pointerLabel = normalizedLabel(visibleOperation.progressLabel) ?? targetLabel ?? progressLabel;\n const controllerLabel = humanHasControl ? undefined : progressLabel;\n const statusLabel = humanHasControl ? \"等待你完成操作\" : {\n running: \"Agent 正在控制\",\n completed: running ? \"工具已完成,任务继续中\" : \"操作已完成\",\n failed: running ? \"Agent 正在处理错误\" : \"操作失败\",\n cancelled: \"任务已终止\",\n }[visibleOperation.status];\n const compactStatusLabel = humanHasControl\n ? \"等待你完成操作\"\n : progressLabel;\n const rect = target?.element.isConnected ? target.element.getBoundingClientRect() : undefined;\n const highlightedRect = effect === \"navigate\" ? undefined : rect;\n const surfaceRect = surfaceElement?.isConnected ? surfaceElement.getBoundingClientRect() : undefined;\n const agentControlsSurface = running && !humanHasControl;\n const operationFeedbackActive = feedbackActive && !structuredTargetLost && !humanHasControl && visibleOperation.status !== \"cancelled\";\n const pointerVisible = Boolean(surfaceRect) && operationFeedbackActive;\n const pointerPosition = rect ? {\n left: rect.left + rect.width / 2,\n top: rect.top + rect.height / 2,\n } : undefined;\n const cancel = onCancel ? () => {\n onCancel();\n } : undefined;\n return createPortal(\n <div className=\"agent-operation\" data-nexface-ignore data-feedback-active={operationFeedbackActive} data-structured-target-lost={structuredTargetLost} data-human-control={humanHasControl} data-operation-effect={effect} data-run-active={running} data-status={visibleOperation.status}>\n {agentControlsSurface && surfaceRect ? <div aria-hidden className=\"agent-operation__surface\" style={{\n ...(highlightedRect ? {\n \"--agent-operation-cutout-height\": `${highlightedRect.height}px`,\n \"--agent-operation-cutout-left\": `${highlightedRect.left - surfaceRect.left}px`,\n \"--agent-operation-cutout-top\": `${highlightedRect.top - surfaceRect.top}px`,\n \"--agent-operation-cutout-width\": `${highlightedRect.width}px`,\n } : {}),\n height: surfaceRect.height, left: surfaceRect.left, top: surfaceRect.top, width: surfaceRect.width,\n } as CSSProperties} /> : null}\n {operationFeedbackActive && highlightedRect ? <div aria-hidden className=\"agent-operation__target\" data-operation-effect={effect} style={{ height: highlightedRect.height, left: highlightedRect.left, top: highlightedRect.top, width: highlightedRect.width }} /> : null}\n <AgentPointer\n active={operationFeedbackActive}\n initialPosition={visibleOperation.name === \"nxf_applyAction\" && surfaceRect\n ? { left: surfaceRect.left + surfaceRect.width / 2, top: surfaceRect.top + surfaceRect.height / 2 }\n : pointerPosition ?? fallbackPosition ?? (surfaceRect ? { left: surfaceRect.left + surfaceRect.width / 2, top: surfaceRect.top + surfaceRect.height / 2 } : undefined)}\n label={pointerLabel}\n labelActive={labelActive}\n operation={visibleOperation}\n targetElement={target?.element}\n targetPosition={pointerPosition}\n visible={pointerVisible}\n {...(onPointerReady ? { onPointerReady } : {})}\n />\n {controllerMounted ? <section aria-live=\"polite\" className=\"agent-operation__controller\" data-visibility={controllerExiting ? \"exiting\" : \"visible\"} style={surfaceRect ? { left: surfaceRect.left + surfaceRect.width / 2, right: \"auto\", \"--agent-operation-controller-x\": \"-50%\", maxWidth: Math.max(0, surfaceRect.width - 32) } as CSSProperties : undefined}>\n {historyOpen ? <aside aria-label=\"本次运行的操作记录\" className=\"agent-operation__history\" id={historyId}>\n <header><strong>操作记录</strong><span>{progressHistory.length}</span></header>\n <ol>{progressHistory.map(({ progressLabel: label, toolCallId }, index) => <li key={toolCallId}>\n <span aria-hidden>{index + 1}</span><p>{label}</p>\n </li>)}</ol>\n </aside> : null}\n <span aria-hidden className=\"agent-operation__edge-flow\" /><span aria-hidden className=\"agent-operation__pause-mark\"><i /><i /></span><button\n aria-controls={historyId}\n aria-expanded={historyOpen}\n aria-label=\"查看本次运行的操作记录\"\n className=\"agent-operation__activity\"\n data-open={historyOpen ? \"true\" : \"false\"}\n disabled={progressHistory.length === 0}\n onClick={() => setHistoryOpen((current) => !current)}\n title={progressHistory.length === 0 ? \"暂无操作记录\" : \"查看本次运行的操作记录\"}\n type=\"button\"\n ><Sparkle className=\"agent-operation__activity-icon\" size={16} weight=\"fill\" /><i /><b>✦</b></button>\n <div><span className=\"agent-operation__heading\"><strong>{controllerLabel}</strong></span>{statusLabel ? <small className=\"agent-operation__description\"><span className=\"agent-operation__status\">{statusLabel}</span></small> : null}</div>\n {(running || humanHasControl) && visibleOperation.status !== \"cancelled\" ? <span className=\"agent-operation__compact-status\" title={compactStatusLabel}>{compactStatusLabel}</span> : null}\n {cancel && (running || humanHasControl) && visibleOperation.status !== \"cancelled\" ? <button ref={cancelButtonRef} className=\"agent-operation__stop\" type=\"button\" disabled={cancelling} onClick={cancel}>{cancelling ? \"正在终止\" : \"终止任务\"}</button> : null}\n </section> : null}\n </div>, document.body,\n );\n}\n"]}
1
+ {"version":3,"file":"operation-view.js","sourceRoot":"","sources":["../src/operation-view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI3D,MAAM,MAAM,GAAG,CAAC,IAAa,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;AACpH,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1F,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAC;AAEtI,SAAS,cAAc,CAAC,OAAoB,EAAE,MAAe,EAAE,YAA4D;IACzH,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;QAC/B,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC3D,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACzJ,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAE,EAAE;QAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,IAAI,OAAO,EAAE;YAAE,MAAM,EAAE,CAAC;IAC5F,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC;QAChF,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uDAAuD;KACzF,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IACxD,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO;QAAE,OAAO,EAAE,CAAC;SAAM,IAAI,OAAO,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,QAAQ,EAAmC;IAClE,OAAO,8BAAM,SAAS,EAAC,gCAAgC,uBAAoB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,2BAAyB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK;QAC7K,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,8BAAM,SAAS,EAAC,qCAAqC,GAAG,CAAC,CAAC,CAAC,IAAI;QAClG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,8BAAM,SAAS,EAAC,oCAAoC;YAAC,8BAAK;YAAA,8BAAK;YAAA,8BAAK;YAAA,8BAAK;YAAA,8BAAK,CAAO,CAAC,CAAC,CAAC,IAAI;QACzH,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,8BAAM,SAAS,EAAC,2CAA2C,GAAG,CAAC,CAAC,CAAC,IAAI;QACvG,8BAAM,SAAS,EAAC,qCAAqC,IAAE,QAAQ,CAAC,KAAK,CAAQ,CACxE,CAAC;AACV,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAmE;IAChH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChF,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ;QAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAG,QAAQ,IAAI,YAAY,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,kDAAiB,SAAS,EAAC,iCAAiC,iBAAa,MAAM,2BAAwB,QAAQ,CAAC,MAAM,EACrI,KAAK,EAAE,EAAE,oCAAoC,EAAE,KAAK,EAAE,6BAA6B,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI;YACtG,6BAA6B,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,EAAmB;QACtE,oBAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,GAAI,CACjC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAKtE;IACC,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACtG,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACrD,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;gBAChG,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,QAAQ,EAAE,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU;gBAAE,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACjG,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC;QACzE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1F,SAAS,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC;IACxE,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE,YAAY;YAAE,OAAO;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACzH,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9G,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,kDAAiB,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,iCAAiC,iBACnF,MAAM,2BAAyB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzE,KAAK,EAAE,EAAE,oCAAoC,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI;YACrE,6BAA6B,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,6BAA6B,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAmB;QAC1I,8BAAM,SAAS,EAAC,iCAAiC;YAAC,oBAAC,MAAM,IAAC,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,GAAG,CAAO;QAC/H,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,oBAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC,CAAC,IAAI,CAC9D,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAA6B;IACnM,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,6BAA6B,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACzI,MAAM,eAAe,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IACxD,MAAM,yBAAyB,GAAG,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,OAAO,IAAI,eAAe,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IACpI,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAoC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvJ,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,yBAAyB,EAAE,CAAC;YAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9E,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,uBAAuB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;QAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACnG,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,cAAc,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,eAAe;YAAE,OAAO;QACpD,OAAO,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,cAAc,EAAE,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC7F,MAAM,MAAM,GAAG,cAAc,EAAE,WAAW,IAAI,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7G,OAAO;YACL,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/E,MAAM;YACN,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE;SAC5C,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAChE,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACtD,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe;YAAE,OAAO;QACzC,IAAI,KAAK,GAAG,qBAAqB,CAAC,SAAS,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxG,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IACjE,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,CAAC,UAAU,IAAI,CAAC,eAAe,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,MAAM,MAAM,GAAG,cAAc,EAAE,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,MAAM,KAAK,UAAU,IAAI,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,MAAM,oBAAoB,GAAG,OAAO,IAAI,CAAC,eAAe,CAAC;IACzD,MAAM,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,oBAAoB,KAAK,SAAS,CAAC;IAC7D,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;IAC9E,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;IACjF,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;QACnE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO;KAC9D,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,OAAO,YAAY,CACjB,6BAAK,SAAS,EAAC,iBAAiB,uDAA2C,uBAAuB,iCAA+B,oBAAoB,wBAAsB,eAAe,2BAAyB,MAAM,IAAI,QAAQ,qBAAmB,OAAO,iBAAe,SAAS,CAAC,MAAM;QAC3R,oBAAoB,IAAI,WAAW,CAAC,CAAC,CAAC,kDAAiB,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE;gBAClG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,iCAAiC,EAAE,GAAG,eAAe,CAAC,MAAM,IAAI;oBACtF,+BAA+B,EAAE,GAAG,eAAe,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI;oBAC/E,8BAA8B,EAAE,GAAG,eAAe,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,EAAE,gCAAgC,EAAE,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtJ,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK;aAClF,GAAI,CAAC,CAAC,CAAC,IAAI;QAC5B,cAAc,IAAI,eAAe,CAAC,CAAC,CAAC,kDAAiB,SAAS,EAAC,yBAAyB,2BAAwB,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI;QACjQ,oBAAC,YAAY,IAAC,MAAM,EAAE,oBAAoB,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,EACrH,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,GAAI;QACjG,cAAc,IAAI,MAAM,KAAK,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,oBAAC,iBAAiB,IAAC,GAAG,EAAE,cAAc,CAAC,EAAE,EAC/F,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI;QAC9G,iBAAiB,CAAC,CAAC,CAAC,8CAAmB,QAAQ,EAAC,SAAS,EAAC,6BAA6B,qBAAkB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC,EAAmB,CAAC,CAAC,CAAC,SAAS;YAC9V,WAAW,CAAC,CAAC,CAAC,6CAAkB,wDAAW,EAAC,SAAS,EAAC,0BAA0B,EAAC,EAAE,EAAE,SAAS;gBAC7F;oBAAQ,+DAAqB;oBAAA,kCAAO,eAAe,CAAC,MAAM,CAAQ,CAAS;gBAC3E,gCAAK,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,4BAAI,GAAG,EAAE,UAAU;oBAC3F,qDAAmB,KAAK,GAAG,CAAC,CAAQ;oBAAA,+BAAI,KAAK,CAAK,CAC/C,CAAC,CAAM,CACN,CAAC,CAAC,CAAC,IAAI;YACf,mDAAkB,SAAS,EAAC,4BAA4B,GAAG;YAAA,mDAAkB,SAAS,EAAC,6BAA6B;gBAAC,8BAAK;gBAAA,8BAAK,CAAO;YAAA,iDACrH,SAAS,mBACT,WAAW,gBACf,oEAAa,EACxB,SAAS,EAAC,2BAA2B,eAC1B,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACzC,QAAQ,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EACpD,KAAK,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAC9D,IAAI,EAAC,QAAQ;gBACd,oBAAC,OAAO,IAAC,SAAS,EAAC,gCAAgC,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,GAAG;gBAAA,8BAAK;gBAAA,wCAAQ,CAAS;YACrG;gBAAK,8BAAM,SAAS,EAAC,0BAA0B;oBAAC,oCAAS,eAAe,CAAU,CAAO;gBAAC,WAAW,CAAC,CAAC,CAAC,+BAAO,SAAS,EAAC,8BAA8B;oBAAC,8BAAM,SAAS,EAAC,yBAAyB,IAAE,WAAW,CAAQ,CAAQ,CAAC,CAAC,CAAC,IAAI,CAAO;YAC3O,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,8BAAM,SAAS,EAAC,iCAAiC,EAAC,KAAK,EAAE,kBAAkB,IAAG,kBAAkB,CAAQ,CAAC,CAAC,CAAC,IAAI;YAClL,MAAM,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,gCAAQ,GAAG,EAAE,eAAe,EAAE,SAAS,EAAC,uBAAuB,EAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAU,CAAC,CAAC,CAAC,IAAI,CACzO,CAAC,CAAC,CAAC,IAAI,CACb,EAAE,QAAQ,CAAC,IAAI,CACtB,CAAC;AACJ,CAAC","sourcesContent":["import { CursorIcon as Cursor } from \"@phosphor-icons/react/Cursor\";\nimport { SparkleIcon as Sparkle } from \"@phosphor-icons/react/Sparkle\";\nimport * as React from \"react\";\nimport { useCallback, useLayoutEffect, useEffect, useRef, useState, type CSSProperties } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PageCommandError } from \"./browser/locator.js\";\nimport type { AgentOperation, AgentOperationProgressEntry, OperationFeedback } from \"./operation-types.js\";\nimport { lockOperationSurface } from \"./operation-lock.js\";\n\ntype Position = { left: number; top: number };\ntype Motion = { position: Position; durationMs: number; persistent: boolean };\nconst center = (rect: DOMRect): Position => ({ left: rect.left + rect.width / 2, top: rect.top + rect.height / 2 });\nconst distance = (a: Position, b: Position) => Math.hypot(a.left - b.left, a.top - b.top);\nconst interrupted = () => new PageCommandError({ code: \"EXECUTION_CANCELLED\", message: \"Page action presentation was interrupted.\" });\n\nfunction presentPointer(pointer: HTMLElement, target: Element, presentation: NonNullable<OperationFeedback[\"presentation\"]>): () => void {\n let finished = false;\n const finish = (error?: Error) => {\n if (finished) return;\n finished = true;\n clearTimeout(timer);\n pointer.removeEventListener(\"transitionend\", onTransition);\n presentation.signal?.removeEventListener(\"abort\", onAbort);\n presentation.finish(error);\n };\n const reached = () => pointer.isConnected && target.isConnected && distance(pointer.getBoundingClientRect(), center(target.getBoundingClientRect())) < 2;\n const onTransition = (event: TransitionEvent) => {\n if (event.target === pointer && event.propertyName === \"transform\" && reached()) finish();\n };\n const onAbort = () => finish(interrupted());\n const timer = setTimeout(() => reached() ? finish() : finish(new PageCommandError({\n code: \"ACTION_TIMEOUT\", message: \"Page action pointer did not reach its target in time.\",\n })), 750);\n pointer.addEventListener(\"transitionend\", onTransition);\n presentation.signal?.addEventListener(\"abort\", onAbort, { once: true });\n queueMicrotask(() => { if (presentation.signal?.aborted) onAbort(); else if (reached()) finish(); });\n return () => finish(interrupted());\n}\n\nfunction FeedbackLabel({ feedback }: { feedback: OperationFeedback }) {\n return <span className=\"agent-operation__pointer-label\" data-browser-tool={feedback.centered ? \"true\" : undefined} data-operation-effect={feedback.effect} title={feedback.label}>\n {feedback.effect === \"processing\" ? <span className=\"agent-operation__pointer-processing\" /> : null}\n {feedback.effect === \"read\" ? <span className=\"agent-operation__pointer-read-scan\"><i /><i /><i /><i /><i /></span> : null}\n {feedback.effect === \"navigate\" ? <span className=\"agent-operation__pointer-navigation-trail\" /> : null}\n <span className=\"agent-operation__pointer-label-text\">{feedback.label}</span>\n </span>;\n}\n\nfunction FeedbackIndicator({ feedback, position }: { feedback: OperationFeedback; position: Position | undefined }) {\n const [lastPosition, setLastPosition] = useState(position ?? feedback.position);\n useLayoutEffect(() => { if (position) setLastPosition(position); }, [position?.left, position?.top]);\n const current = position ?? lastPosition;\n return current ? <div aria-hidden className=\"agent-operation__pointer-effect\" data-active=\"true\" data-operation-effect={feedback.effect}\n style={{ \"--agent-operation-pointer-duration\": \"0ms\", \"--agent-operation-pointer-x\": `${current.left}px`,\n \"--agent-operation-pointer-y\": `${current.top}px` } as CSSProperties}>\n <FeedbackLabel feedback={feedback} />\n </div> : null;\n}\n\nfunction AgentPointer({ active, feedback, targetPosition, surfaceCenter }: {\n active: boolean;\n feedback: OperationFeedback | undefined;\n targetPosition: Position | undefined;\n surfaceCenter: Position | undefined;\n}) {\n const pointer = useRef<HTMLDivElement>(null);\n const [motion, setMotion] = useState<Motion>();\n const action = feedback?.effect === \"action\" && (!feedback.requiresTarget || Boolean(targetPosition));\n useLayoutEffect(() => {\n if (!active) { setMotion(undefined); return; }\n if (!action || !targetPosition) {\n if (action && !feedback?.requiresTarget && motion && pointer.current) {\n const rect = pointer.current.getBoundingClientRect();\n if (distance(rect, motion.position) >= 1) setMotion({ ...motion, position: rect, durationMs: 0 });\n }\n return;\n }\n if (!motion) {\n setMotion({ position: feedback?.persistentCursor && surfaceCenter ? surfaceCenter : targetPosition,\n durationMs: 0, persistent: Boolean(feedback?.persistentCursor) });\n return;\n }\n if (distance(motion.position, targetPosition) < 1) {\n if (feedback?.persistentCursor && !motion.persistent) setMotion({ ...motion, persistent: true });\n return;\n }\n const from = pointer.current?.getBoundingClientRect() ?? motion.position;\n const durationMs = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches ? 0\n : Math.round(Math.min(360, Math.max(180, 180 + distance(from, targetPosition) * 0.18)));\n setMotion({ position: targetPosition, durationMs, persistent: motion.persistent || Boolean(feedback?.persistentCursor) });\n }, [active, action, feedback?.id, targetPosition?.left, targetPosition?.top, motion]);\n const show = Boolean(active && motion && (motion.persistent || action));\n useLayoutEffect(() => {\n if (!feedback?.presentation) return;\n if (!active || !feedback.target?.isConnected || !targetPosition) { feedback.presentation.finish(interrupted()); return; }\n if (show && pointer.current) return presentPointer(pointer.current, feedback.target, feedback.presentation);\n }, [active, show, feedback?.presentation, feedback?.target, Boolean(targetPosition)]);\n return show && motion ? <div aria-hidden ref={pointer} className=\"agent-operation__pointer-effect\"\n data-active={action} data-operation-effect={action ? \"action\" : undefined}\n style={{ \"--agent-operation-pointer-duration\": `${motion.durationMs}ms`,\n \"--agent-operation-pointer-x\": `${motion.position.left}px`, \"--agent-operation-pointer-y\": `${motion.position.top}px` } as CSSProperties}>\n <span className=\"agent-operation__pointer-cursor\"><Cursor className=\"agent-operation__pointer\" size={24} weight=\"fill\" /></span>\n {action && feedback ? <FeedbackLabel feedback={feedback} /> : null}\n </div> : null;\n}\n\nexport interface OperationOverlayViewProps {\n operation: AgentOperation;\n feedback?: OperationFeedback;\n progressHistory?: readonly AgentOperationProgressEntry[];\n running: boolean;\n humanHasControl?: boolean;\n cancelling?: boolean;\n onCancel?(): void;\n resolveSurface?(): HTMLElement | undefined;\n}\n\nexport function OperationOverlayView({ operation, feedback, progressHistory = [], running, humanHasControl = false, cancelling = false, onCancel: cancel, resolveSurface }: OperationOverlayViewProps) {\n const [, setGeometry] = useState(\"\");\n const [historyOpen, setHistoryOpen] = useState(false);\n const [historyId] = useState(() => `nexface-operation-history-${globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`}`);\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\n const controllerShouldBeVisible = operation.status !== \"cancelled\" && (running || humanHasControl || operation.status === \"failed\");\n const [controllerVisibility, setControllerVisibility] = useState<\"visible\" | \"exiting\" | undefined>(controllerShouldBeVisible ? \"visible\" : undefined);\n useEffect(() => {\n if (controllerShouldBeVisible) { setControllerVisibility(\"visible\"); return; }\n setHistoryOpen(false);\n setControllerVisibility((current) => current ? \"exiting\" : undefined);\n const timer = setTimeout(() => setControllerVisibility(undefined), 300);\n return () => clearTimeout(timer);\n }, [controllerShouldBeVisible]);\n useEffect(() => { if (!progressHistory.length) setHistoryOpen(false); }, [progressHistory.length]);\n useLayoutEffect(() => {\n const surface = resolveSurface?.();\n if (!surface || !running || humanHasControl) return;\n return lockOperationSurface(surface, () => cancelButtonRef.current?.focus());\n }, [humanHasControl, resolveSurface, running]);\n const readGeometry = useCallback(() => {\n const surface = resolveSurface?.();\n const resolvedTarget = feedback?.resolveTarget ? feedback.resolveTarget() : feedback?.target;\n const target = resolvedTarget?.isConnected && surface?.contains(resolvedTarget) ? resolvedTarget : undefined;\n return {\n surfaceRect: surface?.isConnected ? surface.getBoundingClientRect() : undefined,\n target,\n targetRect: target?.getBoundingClientRect(),\n };\n }, [resolveSurface, feedback?.target, feedback?.resolveTarget]);\n useLayoutEffect(() => {\n const update = () => {\n const { surfaceRect, targetRect } = readGeometry();\n const geometry = [surfaceRect, targetRect].map((rect) => {\n if (!rect) return \"\";\n return [rect.left, rect.top, rect.width, rect.height].join(\",\");\n }).join(\";\");\n setGeometry(geometry);\n };\n update();\n if (!running && !humanHasControl) return;\n let frame = requestAnimationFrame(function track() { update(); frame = requestAnimationFrame(track); });\n return () => cancelAnimationFrame(frame);\n }, [readGeometry, operation, running, humanHasControl]);\n if (typeof document === \"undefined\") return null;\n const { surfaceRect, target, targetRect: rect } = readGeometry();\n const structuredTargetLost = Boolean(feedback?.requiresTarget && !target);\n const activeFeedback = !cancelling && !humanHasControl && !structuredTargetLost ? feedback : undefined;\n const effect = activeFeedback?.effect;\n const highlightedRect = effect === \"navigate\" || activeFeedback?.centered ? undefined : rect;\n const agentControlsSurface = running && !humanHasControl;\n const operationFeedbackActive = Boolean(activeFeedback);\n const controllerMounted = Boolean(controllerVisibility);\n const controllerExiting = controllerVisibility === \"exiting\";\n const controllerLabel = humanHasControl ? undefined : operation.progressLabel;\n const compactStatusLabel = humanHasControl ? \"等待你完成操作\" : operation.progressLabel;\n const statusLabel = humanHasControl ? \"等待你完成操作\" : {\n running: \"Agent 正在控制\", completed: running ? \"工具已完成,任务继续中\" : \"操作已完成\",\n failed: running ? \"Agent 正在处理错误\" : \"操作失败\", cancelled: \"任务已终止\",\n }[operation.status];\n const targetPosition = rect ? center(rect) : undefined;\n return createPortal(\n <div className=\"agent-operation\" data-nexface-ignore data-feedback-active={operationFeedbackActive} data-structured-target-lost={structuredTargetLost} data-human-control={humanHasControl} data-operation-effect={effect ?? \"action\"} data-run-active={running} data-status={operation.status}>\n {agentControlsSurface && surfaceRect ? <div aria-hidden className=\"agent-operation__surface\" style={{\n ...(highlightedRect ? { \"--agent-operation-cutout-height\": `${highlightedRect.height}px`,\n \"--agent-operation-cutout-left\": `${highlightedRect.left - surfaceRect.left}px`,\n \"--agent-operation-cutout-top\": `${highlightedRect.top - surfaceRect.top}px`, \"--agent-operation-cutout-width\": `${highlightedRect.width}px` } : {}),\n height: surfaceRect.height, left: surfaceRect.left, top: surfaceRect.top, width: surfaceRect.width,\n } as CSSProperties} /> : null}\n {activeFeedback && highlightedRect ? <div aria-hidden className=\"agent-operation__target\" data-operation-effect={effect} style={{ height: highlightedRect.height, left: highlightedRect.left, top: highlightedRect.top, width: highlightedRect.width }} /> : null}\n <AgentPointer active={agentControlsSurface && !cancelling} feedback={feedback?.presentation ? feedback : activeFeedback}\n targetPosition={targetPosition} surfaceCenter={surfaceRect ? center(surfaceRect) : undefined} />\n {activeFeedback && effect !== \"action\" && surfaceRect ? <FeedbackIndicator key={activeFeedback.id}\n feedback={activeFeedback} position={activeFeedback.centered ? center(surfaceRect) : targetPosition} /> : null}\n {controllerMounted ? <section aria-live=\"polite\" className=\"agent-operation__controller\" data-visibility={controllerExiting ? \"exiting\" : \"visible\"} style={surfaceRect ? { left: surfaceRect.left + surfaceRect.width / 2, right: \"auto\", \"--agent-operation-controller-x\": \"-50%\", maxWidth: Math.max(0, surfaceRect.width - 32) } as CSSProperties : undefined}>\n {historyOpen ? <aside aria-label=\"本次运行的操作记录\" className=\"agent-operation__history\" id={historyId}>\n <header><strong>操作记录</strong><span>{progressHistory.length}</span></header>\n <ol>{progressHistory.map(({ progressLabel: label, toolCallId }, index) => <li key={toolCallId}>\n <span aria-hidden>{index + 1}</span><p>{label}</p>\n </li>)}</ol>\n </aside> : null}\n <span aria-hidden className=\"agent-operation__edge-flow\" /><span aria-hidden className=\"agent-operation__pause-mark\"><i /><i /></span><button\n aria-controls={historyId}\n aria-expanded={historyOpen}\n aria-label=\"查看本次运行的操作记录\"\n className=\"agent-operation__activity\"\n data-open={historyOpen ? \"true\" : \"false\"}\n disabled={progressHistory.length === 0}\n onClick={() => setHistoryOpen((current) => !current)}\n title={progressHistory.length === 0 ? \"暂无操作记录\" : \"查看本次运行的操作记录\"}\n type=\"button\"\n ><Sparkle className=\"agent-operation__activity-icon\" size={16} weight=\"fill\" /><i /><b>✦</b></button>\n <div><span className=\"agent-operation__heading\"><strong>{controllerLabel}</strong></span>{statusLabel ? <small className=\"agent-operation__description\"><span className=\"agent-operation__status\">{statusLabel}</span></small> : null}</div>\n {(running || humanHasControl) && operation.status !== \"cancelled\" ? <span className=\"agent-operation__compact-status\" title={compactStatusLabel}>{compactStatusLabel}</span> : null}\n {cancel && (running || humanHasControl) && operation.status !== \"cancelled\" ? <button ref={cancelButtonRef} className=\"agent-operation__stop\" type=\"button\" disabled={cancelling} onClick={cancel}>{cancelling ? \"正在终止\" : \"终止任务\"}</button> : null}\n </section> : null}\n </div>, document.body,\n );\n}\n"]}
package/dist/react.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type MouseEvent, type JSX, type JSXElementConstructor, type ReactElement, type ReactNode, type RefCallback } from "react";
1
+ import { type MouseEvent, type JSXElementConstructor, type ReactElement, type ReactNode, type RefCallback } from "react";
2
2
  import { type AgentNavigation, type AgentNavigationExecutors } from "./navigation.js";
3
3
  import type { ToolRuntime } from "./runtime.js";
4
4
  import type { AgentContextEntry, AgentToolDefinition, AgentToolExecutor } from "./types.js";
@@ -69,7 +69,7 @@ export declare function ToolsProvider({ children, toolRuntime, webMcp, }: {
69
69
  children: ReactNode;
70
70
  toolRuntime: ToolRuntime;
71
71
  webMcp?: boolean;
72
- }): JSX.Element;
72
+ }): ReactElement;
73
73
  export declare function useAgentContext(context: AgentContextEntry): void;
74
74
  export declare function AgentContext(context: AgentContextEntry): null;
75
75
  export type AgentUIActionEvent = "click";
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n Children,\n Fragment,\n cloneElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type MouseEvent,\n type JSX,\n type JSXElementConstructor,\n type Ref,\n type ReactElement,\n type ReactNode,\n type RefCallback,\n} from \"react\";\n\nimport { defineAgentTool } from \"./definition.js\";\nimport {\n getAgentNavigationEntries,\n type AgentNavigation,\n type AgentNavigationExecutors,\n type AgentNavigationResult,\n} from \"./navigation.js\";\nimport { AgentToolError, getInternalToolRuntime } from \"./runtime.js\";\nimport {\n InternalToolRuntimeScope,\n useInternalToolRuntime,\n} from \"./internal-react.js\";\nimport type { ToolRuntime } from \"./runtime.js\";\nimport type {\n AgentContextEntry,\n AgentContextRegistration,\n AgentToolDefinition,\n AgentToolExecutor,\n} from \"./types.js\";\nimport type { AgentToolConfirmationConfig } from \"./runtime.js\";\nimport { connectToolRuntimeToWebMcp } from \"./webmcp.js\";\n\n/**\n * @experimental Human-in-the-loop Chat confirmation configuration.\n * @beta\n */\nexport interface AgentToolChatConfirmationConfig {\n mode: \"chat\";\n title?: string;\n description?: string;\n confirmLabel?: string;\n rejectLabel?: string;\n}\n\n/**\n * @experimental Human-in-the-loop Page confirmation configuration.\n * @beta\n */\nexport interface AgentToolPageConfirmationConfig {\n mode: \"page\";\n title?: string;\n description?: string;\n}\n\nexport interface UseAgentToolDefaultOptions {\n /**\n * @experimental Enables human-in-the-loop Chat confirmation.\n * @beta\n */\n requiresConfirmation?: AgentToolChatConfirmationConfig;\n}\n\n/**\n * @experimental Enables human-in-the-loop Page confirmation.\n * @beta\n */\nexport interface UseAgentToolPageConfirmationOptions {\n requiresConfirmation: AgentToolPageConfirmationConfig;\n}\n\nexport interface AgentToolBinding<\n TInput = unknown,\n TElement extends HTMLElement = HTMLElement,\n> {\n readonly toolName: string;\n readonly ref: RefCallback<TElement>;\n refWhen(match: (input: TInput) => boolean): RefCallback<TElement>;\n}\n\ndeclare const pageConfirmableAgentToolBindingBrand: unique symbol;\n\n/**\n * @experimental Binding for human-in-the-loop Page confirmation.\n * @beta\n */\nexport interface PageConfirmableAgentToolBinding<\n TInput = unknown,\n TElement extends HTMLElement = HTMLElement,\n> extends AgentToolBinding<TInput, TElement> {\n readonly [pageConfirmableAgentToolBindingBrand]: true;\n}\n\ntype BindingInternals = {\n resolveTarget(input: unknown): HTMLElement | undefined;\n pageConfirmable: boolean;\n getConditionalTargetRegistrations(): readonly {\n element: HTMLElement;\n match(input: unknown): boolean;\n }[];\n};\n\nconst bindingInternals = new WeakMap<object, BindingInternals>();\n\nexport function getAgentToolBindingInternals(\n binding: AgentToolBinding,\n): BindingInternals {\n const internals = bindingInternals.get(binding);\n if (!internals) throw new Error(\"Invalid Agent Tool Binding.\");\n return internals;\n}\n\nfunction createAgentToolBinding<TInput, TElement extends HTMLElement>(\n toolName: string,\n pageConfirmable: boolean,\n): AgentToolBinding<TInput, TElement> {\n let fixedElement: TElement | null = null;\n const conditionalElements = new Map<\n RefCallback<TElement>,\n { element: TElement; match: (input: TInput) => boolean }\n >();\n const ref: RefCallback<TElement> = (element) => {\n if (element && fixedElement && fixedElement !== element) {\n throw new Error(\"An Agent Tool Binding ref can only attach to one element.\");\n }\n fixedElement = element;\n };\n const binding: AgentToolBinding<TInput, TElement> = {\n toolName,\n ref,\n refWhen(match) {\n let callback: RefCallback<TElement>;\n callback = (element) => {\n if (element) {\n conditionalElements.set(callback, { element, match });\n } else {\n conditionalElements.delete(callback);\n }\n };\n return callback;\n },\n };\n bindingInternals.set(binding, {\n resolveTarget(input) {\n for (const entry of conditionalElements.values()) {\n if (entry.element.isConnected && entry.match(input as TInput)) return entry.element;\n }\n return fixedElement?.isConnected ? fixedElement : undefined;\n },\n pageConfirmable,\n getConditionalTargetRegistrations: () =>\n Array.from(conditionalElements.values(), ({ element, match }) => ({\n element,\n match: (input: unknown) => match(input as TInput),\n })),\n });\n return binding;\n}\n\nfunction useAgentBinding<\n TInput,\n TResult,\n TElement extends HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolDefaultOptions | UseAgentToolPageConfirmationOptions,\n): AgentToolBinding<TInput, TElement> {\n const runtime = useInternalToolRuntime();\n const confirmation = options.requiresConfirmation;\n if (\n confirmation !== undefined\n && (\n !confirmation\n || typeof confirmation !== \"object\"\n || (confirmation.mode !== \"chat\" && confirmation.mode !== \"page\")\n )\n ) {\n throw new Error(\n \"requiresConfirmation must explicitly use chat or page mode.\",\n );\n }\n const executeRef = useRef(execute);\n executeRef.current = execute;\n const confirmationRef = useRef<AgentToolConfirmationConfig | undefined>(\n confirmation,\n );\n confirmationRef.current = confirmation;\n const mode = confirmation?.mode;\n const binding = useMemo(\n () => createAgentToolBinding<TInput, TElement>(\n definition.name,\n mode === \"page\",\n ),\n [runtime, definition, mode],\n );\n useLayoutEffect(() => {\n const controller = new AbortController();\n runtime.register(\n definition,\n (input, context) => executeRef.current(input, context),\n {\n signal: controller.signal,\n getConfirmation: () => confirmationRef.current,\n resolveTarget: (input) => getAgentToolBindingInternals(binding).resolveTarget(input),\n },\n );\n return () => controller.abort();\n }, [runtime, definition, mode]);\n return binding;\n}\n\n/**\n * @experimental The Page confirmation overload is experimental.\n * @beta\n */\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolPageConfirmationOptions,\n): PageConfirmableAgentToolBinding<TInput, TElement>;\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options?: UseAgentToolDefaultOptions,\n): AgentToolBinding<TInput, TElement>;\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolDefaultOptions | UseAgentToolPageConfirmationOptions = {},\n): AgentToolBinding<TInput, TElement> {\n return useAgentBinding(definition, execute, options);\n}\n\nfunction getAgentNavigationExecutor(\n executors: unknown,\n key: string,\n): AgentToolExecutor<any, void> {\n if (\n !executors\n || typeof executors !== \"object\"\n || !Object.hasOwn(executors, key)\n ) {\n throw new Error(`Missing navigation executor: ${key}.`);\n }\n const executor = (executors as Record<string, unknown>)[key];\n if (typeof executor !== \"function\") {\n throw new Error(`Missing navigation executor: ${key}.`);\n }\n return executor as AgentToolExecutor<any, void>;\n}\n\nexport function useAgentNavigation<\n TNavigation extends AgentNavigation,\n const TExecutors extends AgentNavigationExecutors<TNavigation>,\n>(\n navigation: TNavigation,\n executors: TExecutors & Record<\n Exclude<\n keyof TExecutors,\n keyof AgentNavigationExecutors<TNavigation>\n >,\n never\n >,\n): void {\n const runtime = useInternalToolRuntime();\n const entries = getAgentNavigationEntries(navigation);\n for (const entry of entries) {\n getAgentNavigationExecutor(executors, entry.key);\n }\n const routeKeys = new Set(entries.map((entry) => entry.key));\n for (const key of Object.keys(executors)) {\n if (!routeKeys.has(key)) {\n throw new Error(`Unknown navigation executor: ${key}.`);\n }\n }\n const executorsRef = useRef(executors);\n executorsRef.current = executors;\n\n useLayoutEffect(() => {\n const controller = new AbortController();\n try {\n for (const entry of entries) {\n runtime.register(\n entry.definition,\n async (input, context): Promise<AgentNavigationResult> => {\n const executor = getAgentNavigationExecutor(\n executorsRef.current,\n entry.key,\n );\n await executor(input, context);\n return { status: \"navigated\" };\n },\n { signal: controller.signal },\n );\n }\n } catch (error) {\n controller.abort();\n throw error;\n }\n return () => controller.abort();\n }, [runtime, navigation]);\n}\n\nexport function ToolsProvider({\n children,\n toolRuntime,\n webMcp = true,\n}: {\n children: ReactNode;\n toolRuntime: ToolRuntime;\n webMcp?: boolean;\n}): JSX.Element {\n const runtime = getInternalToolRuntime(toolRuntime);\n return (\n <InternalToolRuntimeScope runtime={toolRuntime}>\n <WebMcpRuntimeBridge enabled={webMcp} runtime={runtime} />\n {children}\n </InternalToolRuntimeScope>\n );\n}\n\nfunction WebMcpRuntimeBridge({\n enabled,\n runtime,\n}: {\n enabled: boolean;\n runtime: ReturnType<typeof getInternalToolRuntime>;\n}) {\n useEffect(() => {\n if (!enabled) return undefined;\n return connectToolRuntimeToWebMcp(runtime);\n }, [enabled, runtime]);\n return null;\n}\n\nexport function useAgentContext(context: AgentContextEntry): void {\n const runtime = useInternalToolRuntime();\n const registrationRef = useRef<AgentContextRegistration | undefined>(undefined);\n useLayoutEffect(() => {\n const controller = new AbortController();\n const registration = runtime.registerContext(context, { signal: controller.signal });\n registrationRef.current = registration;\n return () => {\n if (registrationRef.current === registration) registrationRef.current = undefined;\n controller.abort();\n };\n }, [runtime, context.name]);\n useLayoutEffect(() => {\n registrationRef.current?.update(context);\n }, [runtime, context.name, context.description, context.value]);\n}\n\nexport function AgentContext(context: AgentContextEntry): null {\n useAgentContext(context);\n return null;\n}\n\nfunction waitForActionResult<TResult>(\n result: TResult | Promise<TResult>,\n signal: AbortSignal,\n): Promise<TResult> {\n if (signal.aborted) return Promise.reject(signal.reason);\n return new Promise((resolve, reject) => {\n const onAbort = () => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n Promise.resolve(result).then(\n (value) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n });\n}\n\nexport type AgentUIActionEvent = \"click\";\n\ntype Awaitable<TResult> = TResult | Promise<TResult>;\n\nexport interface AgentUIActionChildProps<TResult = void> {\n onClick: (event: MouseEvent<HTMLElement>) => Awaitable<TResult>;\n disabled?: boolean;\n}\n\nexport interface AgentUIActionProps<TResult = void> {\n name: string;\n description: string;\n event?: AgentUIActionEvent;\n children: ReactElement<AgentUIActionChildProps<TResult>>;\n}\n\ntype PendingInvocation<TResult> = {\n resolve: (value: TResult | PromiseLike<TResult>) => void;\n reject: (reason?: unknown) => void;\n};\n\nfunction setRefValue<T>(ref: Ref<T> | undefined, value: T | null): (() => void) | undefined {\n if (typeof ref === \"function\") {\n const cleanup = ref(value);\n return typeof cleanup === \"function\" ? cleanup : undefined;\n }\n if (ref) (ref as { current: T | null }).current = value;\n}\n\nfunction getElementRef(element: ReactElement): Ref<HTMLElement> | undefined {\n const props = element.props as Record<string, unknown>;\n const refDescriptor = Object.getOwnPropertyDescriptor(element, \"ref\");\n if (refDescriptor && \"value\" in refDescriptor) {\n return refDescriptor.value as Ref<HTMLElement> | undefined;\n }\n return (props as { ref?: Ref<HTMLElement> }).ref;\n}\n\nfunction isHTMLElement(value: unknown): value is HTMLElement {\n if (!value || typeof value !== \"object\") return false;\n const ownerDocument = (value as { ownerDocument?: Document }).ownerDocument;\n const ElementConstructor =\n ownerDocument?.defaultView?.HTMLElement ??\n (typeof HTMLElement === \"undefined\" ? undefined : HTMLElement);\n return ElementConstructor !== undefined && value instanceof ElementConstructor;\n}\n\nfunction warnAgentUIAction(message: string): void {\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n console.warn(message);\n }\n}\n\nconst eventAdapters: Record<AgentUIActionEvent, { invoke(target: HTMLElement): void }> = {\n click: {\n invoke(target) {\n target.click();\n },\n },\n};\n\nexport function AgentUIAction<TResult = void>({\n name,\n description,\n event = \"click\",\n children,\n}: AgentUIActionProps<TResult>): ReactElement<AgentUIActionChildProps<TResult>, string | JSXElementConstructor<any>> {\n const runtime = useInternalToolRuntime();\n const child = Children.only(children) as ReactElement<AgentUIActionChildProps<TResult>>;\n const isFragment = child.type === Fragment;\n const handler = isFragment ? undefined : child.props.onClick;\n const childDisabled = isFragment ? false : Boolean(child.props.disabled);\n const childRef = isFragment ? undefined : getElementRef(child);\n const [target, setTarget] = useState<HTMLElement | null>(null);\n const targetRef = useRef<HTMLElement | null>(null);\n const handlerRef = useRef(handler);\n const disabledRef = useRef(childDisabled);\n const pendingInvocationRef = useRef<PendingInvocation<TResult> | null>(null);\n const invalidTargetRef = useRef(false);\n const warnedTargetRef = useRef(false);\n const warnedChildRef = useRef<\"fragment\" | \"handler\" | null>(null);\n const invokingRef = useRef(false);\n\n useLayoutEffect(() => {\n handlerRef.current = handler;\n disabledRef.current = childDisabled;\n });\n\n const mergedRef = useCallback(\n (value: unknown) => {\n const element = isHTMLElement(value) ? value : null;\n const cleanupChildRef = setRefValue(childRef as Ref<unknown> | undefined, value);\n invalidTargetRef.current = value !== null && !element;\n targetRef.current = element;\n setTarget(element);\n if (element) warnedTargetRef.current = false;\n if (cleanupChildRef) {\n return () => {\n cleanupChildRef();\n if (targetRef.current === element) {\n invalidTargetRef.current = false;\n targetRef.current = null;\n setTarget(null);\n }\n };\n }\n },\n [childRef],\n );\n\n const invokeHandler = useCallback((mouseEvent: MouseEvent<HTMLElement>) => {\n const currentHandler = handlerRef.current;\n const pending = pendingInvocationRef.current;\n if (pending) pendingInvocationRef.current = null;\n if (!currentHandler) {\n pending?.reject(\n new AgentToolError(\n \"ACTION_NOT_HANDLED\",\n `AgentUIAction \"${name}\" does not have an onClick handler.`,\n ),\n );\n return undefined as TResult;\n }\n try {\n const result = currentHandler(mouseEvent);\n if (pending) Promise.resolve(result).then(pending.resolve, pending.reject);\n return result;\n } catch (error) {\n if (pending) {\n pending.reject(error);\n return undefined as TResult;\n }\n throw error;\n }\n }, [name]);\n\n const definition = useMemo(\n () =>\n defineAgentTool<TResult>({\n name,\n description,\n }),\n [name, description],\n );\n\n useLayoutEffect(() => {\n if (isFragment || !handler) {\n const warningType = isFragment ? \"fragment\" : \"handler\";\n if (warnedChildRef.current !== warningType) {\n warnedChildRef.current = warningType;\n warnAgentUIAction(\n isFragment\n ? `AgentUIAction \"${name}\" does not support React.Fragment children.`\n : `AgentUIAction \"${name}\" needs a child with onClick.`,\n );\n }\n return;\n }\n warnedChildRef.current = null;\n if (!target) {\n if (!targetRef.current && !warnedTargetRef.current) {\n warnedTargetRef.current = true;\n warnAgentUIAction(\n invalidTargetRef.current\n ? `AgentUIAction \"${name}\" needs its child ref to resolve to an HTMLElement; the Tool is not registered.`\n : `AgentUIAction \"${name}\" needs its child to forward ref to an HTMLElement; the Tool is not registered.`,\n );\n }\n return;\n }\n\n const controller = new AbortController();\n runtime.register(\n definition,\n async (_input, context) => {\n if (invokingRef.current) {\n throw new AgentToolError(\n \"ACTION_IN_FLIGHT\",\n `AgentUIAction \"${name}\" is already being invoked.`,\n );\n }\n if (disabledRef.current) {\n throw new AgentToolError(\n \"TOOL_UNAVAILABLE\",\n `AgentUIAction \"${name}\" is disabled.`,\n );\n }\n const currentTarget = targetRef.current;\n if (!currentTarget || !currentTarget.isConnected) {\n throw new AgentToolError(\n \"ACTION_TARGET_UNAVAILABLE\",\n `AgentUIAction \"${name}\" target is not available.`,\n );\n }\n invokingRef.current = true;\n let resolveInvocation!: (value: TResult | PromiseLike<TResult>) => void;\n let rejectInvocation!: (reason?: unknown) => void;\n const actionPromise = new Promise<TResult>((resolve, reject) => {\n resolveInvocation = resolve;\n rejectInvocation = reject;\n });\n const pendingInvocation = {\n resolve: resolveInvocation,\n reject: rejectInvocation,\n };\n pendingInvocationRef.current = pendingInvocation;\n try {\n eventAdapters[event].invoke(currentTarget);\n } catch (error) {\n if (pendingInvocationRef.current === pendingInvocation) {\n pendingInvocationRef.current = null;\n }\n invokingRef.current = false;\n throw error;\n }\n if (pendingInvocationRef.current === pendingInvocation) {\n pendingInvocationRef.current = null;\n invokingRef.current = false;\n throw new AgentToolError(\n \"ACTION_NOT_HANDLED\",\n `AgentUIAction \"${name}\" click did not invoke its onClick handler.`,\n );\n }\n try {\n return await waitForActionResult(actionPromise, context.signal);\n } finally {\n if (context.signal.aborted) {\n void actionPromise.then(\n () => {\n invokingRef.current = false;\n },\n () => {\n invokingRef.current = false;\n },\n );\n } else {\n invokingRef.current = false;\n }\n }\n },\n { signal: controller.signal },\n );\n return () => controller.abort();\n }, [runtime, definition, event, handler !== undefined, isFragment, name, target]);\n\n if (isFragment) return child;\n return cloneElement(child, {\n onClick: invokeHandler,\n ref: mergedRef,\n } as AgentUIActionChildProps<TResult> & { ref: Ref<HTMLElement> });\n}\n\nexport type {\n AgentContextValue,\n AgentToolDefinition,\n AgentToolExecutor,\n} from \"./types.js\";\n"]}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n Children,\n Fragment,\n cloneElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type MouseEvent,\n type JSXElementConstructor,\n type Ref,\n type ReactElement,\n type ReactNode,\n type RefCallback,\n} from \"react\";\n\nimport { defineAgentTool } from \"./definition.js\";\nimport {\n getAgentNavigationEntries,\n type AgentNavigation,\n type AgentNavigationExecutors,\n type AgentNavigationResult,\n} from \"./navigation.js\";\nimport { AgentToolError, getInternalToolRuntime } from \"./runtime.js\";\nimport {\n InternalToolRuntimeScope,\n useInternalToolRuntime,\n} from \"./internal-react.js\";\nimport type { ToolRuntime } from \"./runtime.js\";\nimport type {\n AgentContextEntry,\n AgentContextRegistration,\n AgentToolDefinition,\n AgentToolExecutor,\n} from \"./types.js\";\nimport type { AgentToolConfirmationConfig } from \"./runtime.js\";\nimport { connectToolRuntimeToWebMcp } from \"./webmcp.js\";\n\n/**\n * @experimental Human-in-the-loop Chat confirmation configuration.\n * @beta\n */\nexport interface AgentToolChatConfirmationConfig {\n mode: \"chat\";\n title?: string;\n description?: string;\n confirmLabel?: string;\n rejectLabel?: string;\n}\n\n/**\n * @experimental Human-in-the-loop Page confirmation configuration.\n * @beta\n */\nexport interface AgentToolPageConfirmationConfig {\n mode: \"page\";\n title?: string;\n description?: string;\n}\n\nexport interface UseAgentToolDefaultOptions {\n /**\n * @experimental Enables human-in-the-loop Chat confirmation.\n * @beta\n */\n requiresConfirmation?: AgentToolChatConfirmationConfig;\n}\n\n/**\n * @experimental Enables human-in-the-loop Page confirmation.\n * @beta\n */\nexport interface UseAgentToolPageConfirmationOptions {\n requiresConfirmation: AgentToolPageConfirmationConfig;\n}\n\nexport interface AgentToolBinding<\n TInput = unknown,\n TElement extends HTMLElement = HTMLElement,\n> {\n readonly toolName: string;\n readonly ref: RefCallback<TElement>;\n refWhen(match: (input: TInput) => boolean): RefCallback<TElement>;\n}\n\ndeclare const pageConfirmableAgentToolBindingBrand: unique symbol;\n\n/**\n * @experimental Binding for human-in-the-loop Page confirmation.\n * @beta\n */\nexport interface PageConfirmableAgentToolBinding<\n TInput = unknown,\n TElement extends HTMLElement = HTMLElement,\n> extends AgentToolBinding<TInput, TElement> {\n readonly [pageConfirmableAgentToolBindingBrand]: true;\n}\n\ntype BindingInternals = {\n resolveTarget(input: unknown): HTMLElement | undefined;\n pageConfirmable: boolean;\n getConditionalTargetRegistrations(): readonly {\n element: HTMLElement;\n match(input: unknown): boolean;\n }[];\n};\n\nconst bindingInternals = new WeakMap<object, BindingInternals>();\n\nexport function getAgentToolBindingInternals(\n binding: AgentToolBinding,\n): BindingInternals {\n const internals = bindingInternals.get(binding);\n if (!internals) throw new Error(\"Invalid Agent Tool Binding.\");\n return internals;\n}\n\nfunction createAgentToolBinding<TInput, TElement extends HTMLElement>(\n toolName: string,\n pageConfirmable: boolean,\n): AgentToolBinding<TInput, TElement> {\n let fixedElement: TElement | null = null;\n const conditionalElements = new Map<\n RefCallback<TElement>,\n { element: TElement; match: (input: TInput) => boolean }\n >();\n const ref: RefCallback<TElement> = (element) => {\n if (element && fixedElement && fixedElement !== element) {\n throw new Error(\"An Agent Tool Binding ref can only attach to one element.\");\n }\n fixedElement = element;\n };\n const binding: AgentToolBinding<TInput, TElement> = {\n toolName,\n ref,\n refWhen(match) {\n let callback: RefCallback<TElement>;\n callback = (element) => {\n if (element) {\n conditionalElements.set(callback, { element, match });\n } else {\n conditionalElements.delete(callback);\n }\n };\n return callback;\n },\n };\n bindingInternals.set(binding, {\n resolveTarget(input) {\n for (const entry of conditionalElements.values()) {\n if (entry.element.isConnected && entry.match(input as TInput)) return entry.element;\n }\n return fixedElement?.isConnected ? fixedElement : undefined;\n },\n pageConfirmable,\n getConditionalTargetRegistrations: () =>\n Array.from(conditionalElements.values(), ({ element, match }) => ({\n element,\n match: (input: unknown) => match(input as TInput),\n })),\n });\n return binding;\n}\n\nfunction useAgentBinding<\n TInput,\n TResult,\n TElement extends HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolDefaultOptions | UseAgentToolPageConfirmationOptions,\n): AgentToolBinding<TInput, TElement> {\n const runtime = useInternalToolRuntime();\n const confirmation = options.requiresConfirmation;\n if (\n confirmation !== undefined\n && (\n !confirmation\n || typeof confirmation !== \"object\"\n || (confirmation.mode !== \"chat\" && confirmation.mode !== \"page\")\n )\n ) {\n throw new Error(\n \"requiresConfirmation must explicitly use chat or page mode.\",\n );\n }\n const executeRef = useRef(execute);\n executeRef.current = execute;\n const confirmationRef = useRef<AgentToolConfirmationConfig | undefined>(\n confirmation,\n );\n confirmationRef.current = confirmation;\n const mode = confirmation?.mode;\n const binding = useMemo(\n () => createAgentToolBinding<TInput, TElement>(\n definition.name,\n mode === \"page\",\n ),\n [runtime, definition, mode],\n );\n useLayoutEffect(() => {\n const controller = new AbortController();\n runtime.register(\n definition,\n (input, context) => executeRef.current(input, context),\n {\n signal: controller.signal,\n getConfirmation: () => confirmationRef.current,\n resolveTarget: (input) => getAgentToolBindingInternals(binding).resolveTarget(input),\n },\n );\n return () => controller.abort();\n }, [runtime, definition, mode]);\n return binding;\n}\n\n/**\n * @experimental The Page confirmation overload is experimental.\n * @beta\n */\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolPageConfirmationOptions,\n): PageConfirmableAgentToolBinding<TInput, TElement>;\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options?: UseAgentToolDefaultOptions,\n): AgentToolBinding<TInput, TElement>;\nexport function useAgentTool<\n TInput,\n TResult,\n TElement extends HTMLElement = HTMLElement,\n>(\n definition: AgentToolDefinition<TInput, TResult>,\n execute: AgentToolExecutor<TInput, TResult>,\n options: UseAgentToolDefaultOptions | UseAgentToolPageConfirmationOptions = {},\n): AgentToolBinding<TInput, TElement> {\n return useAgentBinding(definition, execute, options);\n}\n\nfunction getAgentNavigationExecutor(\n executors: unknown,\n key: string,\n): AgentToolExecutor<any, void> {\n if (\n !executors\n || typeof executors !== \"object\"\n || !Object.hasOwn(executors, key)\n ) {\n throw new Error(`Missing navigation executor: ${key}.`);\n }\n const executor = (executors as Record<string, unknown>)[key];\n if (typeof executor !== \"function\") {\n throw new Error(`Missing navigation executor: ${key}.`);\n }\n return executor as AgentToolExecutor<any, void>;\n}\n\nexport function useAgentNavigation<\n TNavigation extends AgentNavigation,\n const TExecutors extends AgentNavigationExecutors<TNavigation>,\n>(\n navigation: TNavigation,\n executors: TExecutors & Record<\n Exclude<\n keyof TExecutors,\n keyof AgentNavigationExecutors<TNavigation>\n >,\n never\n >,\n): void {\n const runtime = useInternalToolRuntime();\n const entries = getAgentNavigationEntries(navigation);\n for (const entry of entries) {\n getAgentNavigationExecutor(executors, entry.key);\n }\n const routeKeys = new Set(entries.map((entry) => entry.key));\n for (const key of Object.keys(executors)) {\n if (!routeKeys.has(key)) {\n throw new Error(`Unknown navigation executor: ${key}.`);\n }\n }\n const executorsRef = useRef(executors);\n executorsRef.current = executors;\n\n useLayoutEffect(() => {\n const controller = new AbortController();\n try {\n for (const entry of entries) {\n runtime.register(\n entry.definition,\n async (input, context): Promise<AgentNavigationResult> => {\n const executor = getAgentNavigationExecutor(\n executorsRef.current,\n entry.key,\n );\n await executor(input, context);\n return { status: \"navigated\" };\n },\n { signal: controller.signal },\n );\n }\n } catch (error) {\n controller.abort();\n throw error;\n }\n return () => controller.abort();\n }, [runtime, navigation]);\n}\n\nexport function ToolsProvider({\n children,\n toolRuntime,\n webMcp = true,\n}: {\n children: ReactNode;\n toolRuntime: ToolRuntime;\n webMcp?: boolean;\n}): ReactElement {\n const runtime = getInternalToolRuntime(toolRuntime);\n return (\n <InternalToolRuntimeScope runtime={toolRuntime}>\n <WebMcpRuntimeBridge enabled={webMcp} runtime={runtime} />\n {children}\n </InternalToolRuntimeScope>\n );\n}\n\nfunction WebMcpRuntimeBridge({\n enabled,\n runtime,\n}: {\n enabled: boolean;\n runtime: ReturnType<typeof getInternalToolRuntime>;\n}) {\n useEffect(() => {\n if (!enabled) return undefined;\n return connectToolRuntimeToWebMcp(runtime);\n }, [enabled, runtime]);\n return null;\n}\n\nexport function useAgentContext(context: AgentContextEntry): void {\n const runtime = useInternalToolRuntime();\n const registrationRef = useRef<AgentContextRegistration | undefined>(undefined);\n useLayoutEffect(() => {\n const controller = new AbortController();\n const registration = runtime.registerContext(context, { signal: controller.signal });\n registrationRef.current = registration;\n return () => {\n if (registrationRef.current === registration) registrationRef.current = undefined;\n controller.abort();\n };\n }, [runtime, context.name]);\n useLayoutEffect(() => {\n registrationRef.current?.update(context);\n }, [runtime, context.name, context.description, context.value]);\n}\n\nexport function AgentContext(context: AgentContextEntry): null {\n useAgentContext(context);\n return null;\n}\n\nfunction waitForActionResult<TResult>(\n result: TResult | Promise<TResult>,\n signal: AbortSignal,\n): Promise<TResult> {\n if (signal.aborted) return Promise.reject(signal.reason);\n return new Promise((resolve, reject) => {\n const onAbort = () => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(signal.reason);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n Promise.resolve(result).then(\n (value) => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener(\"abort\", onAbort);\n reject(error);\n },\n );\n });\n}\n\nexport type AgentUIActionEvent = \"click\";\n\ntype Awaitable<TResult> = TResult | Promise<TResult>;\n\nexport interface AgentUIActionChildProps<TResult = void> {\n onClick: (event: MouseEvent<HTMLElement>) => Awaitable<TResult>;\n disabled?: boolean;\n}\n\nexport interface AgentUIActionProps<TResult = void> {\n name: string;\n description: string;\n event?: AgentUIActionEvent;\n children: ReactElement<AgentUIActionChildProps<TResult>>;\n}\n\ntype PendingInvocation<TResult> = {\n resolve: (value: TResult | PromiseLike<TResult>) => void;\n reject: (reason?: unknown) => void;\n};\n\nfunction setRefValue<T>(ref: Ref<T> | undefined, value: T | null): (() => void) | undefined {\n if (typeof ref === \"function\") {\n const cleanup = ref(value);\n return typeof cleanup === \"function\" ? cleanup : undefined;\n }\n if (ref) (ref as { current: T | null }).current = value;\n}\n\nfunction getElementRef(element: ReactElement): Ref<HTMLElement> | undefined {\n const props = element.props as Record<string, unknown>;\n const refDescriptor = Object.getOwnPropertyDescriptor(element, \"ref\");\n if (refDescriptor && \"value\" in refDescriptor) {\n return refDescriptor.value as Ref<HTMLElement> | undefined;\n }\n return (props as { ref?: Ref<HTMLElement> }).ref;\n}\n\nfunction isHTMLElement(value: unknown): value is HTMLElement {\n if (!value || typeof value !== \"object\") return false;\n const ownerDocument = (value as { ownerDocument?: Document }).ownerDocument;\n const ElementConstructor =\n ownerDocument?.defaultView?.HTMLElement ??\n (typeof HTMLElement === \"undefined\" ? undefined : HTMLElement);\n return ElementConstructor !== undefined && value instanceof ElementConstructor;\n}\n\nfunction warnAgentUIAction(message: string): void {\n if (typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\") {\n console.warn(message);\n }\n}\n\nconst eventAdapters: Record<AgentUIActionEvent, { invoke(target: HTMLElement): void }> = {\n click: {\n invoke(target) {\n target.click();\n },\n },\n};\n\nexport function AgentUIAction<TResult = void>({\n name,\n description,\n event = \"click\",\n children,\n}: AgentUIActionProps<TResult>): ReactElement<AgentUIActionChildProps<TResult>, string | JSXElementConstructor<any>> {\n const runtime = useInternalToolRuntime();\n const child = Children.only(children) as ReactElement<AgentUIActionChildProps<TResult>>;\n const isFragment = child.type === Fragment;\n const handler = isFragment ? undefined : child.props.onClick;\n const childDisabled = isFragment ? false : Boolean(child.props.disabled);\n const childRef = isFragment ? undefined : getElementRef(child);\n const [target, setTarget] = useState<HTMLElement | null>(null);\n const targetRef = useRef<HTMLElement | null>(null);\n const handlerRef = useRef(handler);\n const disabledRef = useRef(childDisabled);\n const pendingInvocationRef = useRef<PendingInvocation<TResult> | null>(null);\n const invalidTargetRef = useRef(false);\n const warnedTargetRef = useRef(false);\n const warnedChildRef = useRef<\"fragment\" | \"handler\" | null>(null);\n const invokingRef = useRef(false);\n\n useLayoutEffect(() => {\n handlerRef.current = handler;\n disabledRef.current = childDisabled;\n });\n\n const mergedRef = useCallback(\n (value: unknown) => {\n const element = isHTMLElement(value) ? value : null;\n const cleanupChildRef = setRefValue(childRef as Ref<unknown> | undefined, value);\n invalidTargetRef.current = value !== null && !element;\n targetRef.current = element;\n setTarget(element);\n if (element) warnedTargetRef.current = false;\n if (cleanupChildRef) {\n return () => {\n cleanupChildRef();\n if (targetRef.current === element) {\n invalidTargetRef.current = false;\n targetRef.current = null;\n setTarget(null);\n }\n };\n }\n },\n [childRef],\n );\n\n const invokeHandler = useCallback((mouseEvent: MouseEvent<HTMLElement>) => {\n const currentHandler = handlerRef.current;\n const pending = pendingInvocationRef.current;\n if (pending) pendingInvocationRef.current = null;\n if (!currentHandler) {\n pending?.reject(\n new AgentToolError(\n \"ACTION_NOT_HANDLED\",\n `AgentUIAction \"${name}\" does not have an onClick handler.`,\n ),\n );\n return undefined as TResult;\n }\n try {\n const result = currentHandler(mouseEvent);\n if (pending) Promise.resolve(result).then(pending.resolve, pending.reject);\n return result;\n } catch (error) {\n if (pending) {\n pending.reject(error);\n return undefined as TResult;\n }\n throw error;\n }\n }, [name]);\n\n const definition = useMemo(\n () =>\n defineAgentTool<TResult>({\n name,\n description,\n }),\n [name, description],\n );\n\n useLayoutEffect(() => {\n if (isFragment || !handler) {\n const warningType = isFragment ? \"fragment\" : \"handler\";\n if (warnedChildRef.current !== warningType) {\n warnedChildRef.current = warningType;\n warnAgentUIAction(\n isFragment\n ? `AgentUIAction \"${name}\" does not support React.Fragment children.`\n : `AgentUIAction \"${name}\" needs a child with onClick.`,\n );\n }\n return;\n }\n warnedChildRef.current = null;\n if (!target) {\n if (!targetRef.current && !warnedTargetRef.current) {\n warnedTargetRef.current = true;\n warnAgentUIAction(\n invalidTargetRef.current\n ? `AgentUIAction \"${name}\" needs its child ref to resolve to an HTMLElement; the Tool is not registered.`\n : `AgentUIAction \"${name}\" needs its child to forward ref to an HTMLElement; the Tool is not registered.`,\n );\n }\n return;\n }\n\n const controller = new AbortController();\n runtime.register(\n definition,\n async (_input, context) => {\n if (invokingRef.current) {\n throw new AgentToolError(\n \"ACTION_IN_FLIGHT\",\n `AgentUIAction \"${name}\" is already being invoked.`,\n );\n }\n if (disabledRef.current) {\n throw new AgentToolError(\n \"TOOL_UNAVAILABLE\",\n `AgentUIAction \"${name}\" is disabled.`,\n );\n }\n const currentTarget = targetRef.current;\n if (!currentTarget || !currentTarget.isConnected) {\n throw new AgentToolError(\n \"ACTION_TARGET_UNAVAILABLE\",\n `AgentUIAction \"${name}\" target is not available.`,\n );\n }\n invokingRef.current = true;\n let resolveInvocation!: (value: TResult | PromiseLike<TResult>) => void;\n let rejectInvocation!: (reason?: unknown) => void;\n const actionPromise = new Promise<TResult>((resolve, reject) => {\n resolveInvocation = resolve;\n rejectInvocation = reject;\n });\n const pendingInvocation = {\n resolve: resolveInvocation,\n reject: rejectInvocation,\n };\n pendingInvocationRef.current = pendingInvocation;\n try {\n eventAdapters[event].invoke(currentTarget);\n } catch (error) {\n if (pendingInvocationRef.current === pendingInvocation) {\n pendingInvocationRef.current = null;\n }\n invokingRef.current = false;\n throw error;\n }\n if (pendingInvocationRef.current === pendingInvocation) {\n pendingInvocationRef.current = null;\n invokingRef.current = false;\n throw new AgentToolError(\n \"ACTION_NOT_HANDLED\",\n `AgentUIAction \"${name}\" click did not invoke its onClick handler.`,\n );\n }\n try {\n return await waitForActionResult(actionPromise, context.signal);\n } finally {\n if (context.signal.aborted) {\n void actionPromise.then(\n () => {\n invokingRef.current = false;\n },\n () => {\n invokingRef.current = false;\n },\n );\n } else {\n invokingRef.current = false;\n }\n }\n },\n { signal: controller.signal },\n );\n return () => controller.abort();\n }, [runtime, definition, event, handler !== undefined, isFragment, name, target]);\n\n if (isFragment) return child;\n return cloneElement(child, {\n onClick: invokeHandler,\n ref: mergedRef,\n } as AgentUIActionChildProps<TResult> & { ref: Ref<HTMLElement> });\n}\n\nexport type {\n AgentContextValue,\n AgentToolDefinition,\n AgentToolExecutor,\n} from \"./types.js\";\n"]}
package/dist/runtime.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { PageActionFeedback } from "./browser/feedback.js";
1
2
  import type { TaskProgress } from "./operation-runtime.js";
2
3
  export { AgentToolError } from "./errors.js";
3
4
  import { OperationTracker, type RuntimeActivitySnapshot } from "./operation-runtime.js";
@@ -26,7 +27,12 @@ declare const toolRuntimeBrand: unique symbol;
26
27
  */
27
28
  export interface ToolOperation {
28
29
  readonly id: string;
29
- setWaitingForUser(waiting: boolean): void;
30
+ /**
31
+ * @experimental End the operation and wait for its admitted tool calls to settle.
32
+ * @beta
33
+ * @param options - Final outcome; defaults to completed. Does not cancel execution.
34
+ * @returns A promise that resolves when outstanding calls have settled and the operation is released.
35
+ */
30
36
  end(options?: {
31
37
  outcome?: "completed" | "failed" | "cancelled";
32
38
  }): Promise<void>;
@@ -34,19 +40,32 @@ export interface ToolOperation {
34
40
  export interface ToolRuntime {
35
41
  readonly [toolRuntimeBrand]: true;
36
42
  /**
37
- * @experimental Begin a logical operation; throws OPERATION_BUSY while occupied.
43
+ * @experimental Begin a logical operation spanning one complete host-managed task.
38
44
  * @beta
45
+ * @param options - Optional callback for cancellation requested from the operation UI.
46
+ * @returns A handle that the host must end on completion, failure, or cancellation.
47
+ * @throws An OPERATION_BUSY error if another operation or unscoped tool call is outstanding.
48
+ * @remarks The host owns cancellation. Pass its signal to execute and external requests, then end the operation.
39
49
  */
40
50
  beginOperation(options?: {
41
- signal?: AbortSignal;
42
51
  onCancel?: () => void;
43
52
  }): ToolOperation;
44
53
  getTools(): readonly RuntimeAgentTool[];
45
54
  getContexts(options?: {
46
55
  signal?: AbortSignal;
47
56
  }): Promise<readonly AgentContextEntry[]>;
57
+ /**
58
+ * @experimental Execute a current Runtime Tool through the Runtime queue.
59
+ * @beta
60
+ * @param tool - The current tool object returned by this Runtime's getTools method.
61
+ * @param input - Arguments matching the tool's input schema.
62
+ * @param options - Optional cancellation signal and display-only progress label.
63
+ * @returns The tool result, or a rejected promise when execution fails.
64
+ * @remarks Joins the operation active when submitted. Rejects with OPERATION_BUSY while ending. Does not trigger user confirmation.
65
+ */
48
66
  execute<TInput, TResult>(tool: RuntimeAgentTool<TInput, TResult>, input: TInput, options?: {
49
67
  signal?: AbortSignal;
68
+ progressLabel?: string;
50
69
  }): Promise<TResult>;
51
70
  on(eventName: "toolchange", listener: (event: ToolRuntimeToolChangeEvent) => void): () => void;
52
71
  /**
@@ -95,11 +114,12 @@ export interface InternalToolRuntime extends ToolRuntime, EventTarget {
95
114
  }): ToolOperation;
96
115
  endBridgeOperation(handle: ToolOperation): Promise<void>;
97
116
  setTaskProgress(handle: ToolOperation, progress: TaskProgress): void;
117
+ setOperationWaiting(handle: ToolOperation, waiting: boolean): void;
98
118
  getActivitySnapshot(): RuntimeActivitySnapshot;
99
119
  subscribeActivity(listener: () => void): () => void;
100
120
  requestOperationCancel(id: string): void;
101
121
  resolveTarget(tool: RuntimeAgentTool, input: unknown): HTMLElement | undefined;
102
- setPageActionPresentation(wait: (event: AgentToolExecutionEvent, signal?: AbortSignal) => Promise<void>): () => void;
122
+ setPageActionFeedback(listener: (event: AgentToolExecutionEvent, feedback: PageActionFeedback, signal?: AbortSignal) => void | Promise<void>): () => void;
103
123
  executeWithProgress<TInput, TResult>(tool: RuntimeAgentTool<TInput, TResult>, input: TInput, options: {
104
124
  signal?: AbortSignal;
105
125
  progressLabel?: string;
@@ -132,16 +152,16 @@ export declare class ToolRuntimeImplementation extends EventTarget implements To
132
152
  #private;
133
153
  readonly [toolRuntimeBrand]: true;
134
154
  beginOperation(options?: {
135
- signal?: AbortSignal;
136
155
  onCancel?: () => void;
137
156
  }): ToolOperation;
138
157
  beginInternalOperation(options?: Parameters<OperationTracker["begin"]>[0]): ToolOperation;
139
158
  endBridgeOperation(handle: ToolOperation): Promise<void>;
140
159
  setTaskProgress: (handle: ToolOperation, progress: TaskProgress) => void;
160
+ setOperationWaiting: (handle: ToolOperation, waiting: boolean) => void;
141
161
  getActivitySnapshot: () => RuntimeActivitySnapshot;
142
162
  subscribeActivity: (listener: () => void) => (() => void);
143
163
  requestOperationCancel(id: string): void;
144
- setPageActionPresentation(wait: (event: AgentToolExecutionEvent, signal?: AbortSignal) => Promise<void>): () => void;
164
+ setPageActionFeedback(listener: (event: AgentToolExecutionEvent, feedback: PageActionFeedback, signal?: AbortSignal) => void | Promise<void>): () => void;
145
165
  constructor(options?: ToolRuntimeOptions);
146
166
  on(eventName: "toolchange", listener: (event: ToolRuntimeToolChangeEvent) => void): () => void;
147
167
  on(eventName: "toolexecution", listener: (event: AgentToolExecutionEvent) => void): () => void;
@@ -168,6 +188,7 @@ export declare class ToolRuntimeImplementation extends EventTarget implements To
168
188
  }): Promise<void>;
169
189
  execute<TInput, TResult>(tool: RuntimeAgentTool<TInput, TResult>, input: TInput, options?: {
170
190
  signal?: AbortSignal;
191
+ progressLabel?: string;
171
192
  }): Promise<TResult>;
172
193
  executeWithProgress<TInput, TResult>(tool: RuntimeAgentTool<TInput, TResult>, input: TInput, options?: {
173
194
  signal?: AbortSignal;
package/dist/runtime.js CHANGED
@@ -1,10 +1,11 @@
1
+ import { PageCommandError } from "./browser/locator.js";
2
+ import { measurePagePhase } from "./browser/diagnostics.js";
1
3
  import { AgentToolError, TOOL_ERROR_CODES } from "./errors.js";
2
4
  export { AgentToolError } from "./errors.js";
3
5
  import { OperationTracker } from "./operation-runtime.js";
4
6
  import { isValidAgentContextName } from "./definition.js";
5
7
  import { assertAgentToolInputSchema, validateAgentToolInput } from "./schema.js";
6
8
  import { createBrowserToolset, } from "./browser/toolset.js";
7
- import { measurePagePhase } from "./browser/diagnostics.js";
8
9
  const CONTEXT_ERROR_CODES = [
9
10
  "CONTEXT_DISPOSED",
10
11
  "CONTEXT_NAME_MISMATCH",
@@ -126,23 +127,24 @@ export class ToolRuntimeImplementation extends EventTarget {
126
127
  #browserToolset;
127
128
  #browserRuntimeTools = new WeakMap();
128
129
  #executionTail;
129
- #pageActionPresentation;
130
+ #pageActionFeedback;
130
131
  #operations = new OperationTracker();
131
132
  beginOperation(options = {}) {
132
- return this.#operations.begin(options);
133
+ return this.#operations.begin(options.onCancel ? { onCancel: options.onCancel } : {});
133
134
  }
134
135
  beginInternalOperation(options = {}) {
135
136
  return this.#operations.begin(options);
136
137
  }
137
138
  endBridgeOperation(handle) { return this.#operations.disposeBridge(handle); }
138
139
  setTaskProgress = (handle, progress) => this.#operations.setTaskProgress(handle, progress);
140
+ setOperationWaiting = (handle, waiting) => this.#operations.setWaitingForUser(handle, waiting);
139
141
  getActivitySnapshot = () => this.#operations.getSnapshot();
140
142
  subscribeActivity = (listener) => this.#operations.subscribe(listener);
141
143
  requestOperationCancel(id) { this.#operations.requestCancel(id); }
142
- setPageActionPresentation(wait) {
143
- this.#pageActionPresentation = wait;
144
- return () => { if (this.#pageActionPresentation === wait)
145
- this.#pageActionPresentation = undefined; };
144
+ setPageActionFeedback(listener) {
145
+ this.#pageActionFeedback = listener;
146
+ return () => { if (this.#pageActionFeedback === listener)
147
+ this.#pageActionFeedback = undefined; };
146
148
  }
147
149
  #emitExecution(event) {
148
150
  this.#operations.observe(event);
@@ -394,7 +396,7 @@ export class ToolRuntimeImplementation extends EventTarget {
394
396
  });
395
397
  }
396
398
  execute(tool, input, options = {}) {
397
- return this.executeWithProgress(tool, input, options.signal ? { signal: options.signal } : {});
399
+ return this.executeWithProgress(tool, input, options);
398
400
  }
399
401
  executeWithProgress(tool, input, options = {}) {
400
402
  const label = options.progressLabel?.trim().replace(/\s+/g, " ").slice(0, 48);
@@ -418,12 +420,13 @@ export class ToolRuntimeImplementation extends EventTarget {
418
420
  || this.#getBrowserRuntimeTool(definition) !== tool) {
419
421
  return Promise.reject(new AgentToolError("CONTRACT_MISMATCH", `Tool "${name}" is registered with a different Definition.`));
420
422
  }
421
- return this.#enqueue((operationId) => this.#observeExecution(tool, input, options.signal, async (presentTarget) => {
423
+ return this.#enqueue((operationId) => this.#observeExecution(tool, input, options.signal, async (onFeedback, assertActive) => {
422
424
  const signal = options.signal ?? new AbortController().signal;
423
425
  signal.throwIfAborted();
424
426
  return browserHandler.execute(input, {
425
427
  signal,
426
- ...(presentTarget ? { presentTarget } : {}),
428
+ ...(onFeedback ? { onFeedback } : {}),
429
+ ...(assertActive ? { assertActive } : {}),
427
430
  });
428
431
  }, options.progressLabel, operationId), options.signal);
429
432
  }
@@ -451,7 +454,13 @@ export class ToolRuntimeImplementation extends EventTarget {
451
454
  #enqueue(execute, signal) {
452
455
  if (signal?.aborted)
453
456
  return Promise.reject(signal.reason);
454
- const admission = this.#operations.admit();
457
+ let admission;
458
+ try {
459
+ admission = this.#operations.admit();
460
+ }
461
+ catch (error) {
462
+ return Promise.reject(error);
463
+ }
455
464
  const previous = this.#executionTail;
456
465
  let removeQueuedAbort = () => { };
457
466
  const start = async () => {
@@ -513,19 +522,22 @@ export class ToolRuntimeImplementation extends EventTarget {
513
522
  input,
514
523
  ...(progressLabel ? { progressLabel } : {}),
515
524
  };
516
- const presentation = running.name === "nxf_applyAction" && this.resolveTarget(tool, input)
517
- ? this.#pageActionPresentation : undefined;
518
- const waitForPresentation = Boolean(presentation);
519
- if (!waitForPresentation)
520
- this.#emitExecution(running);
521
- try {
525
+ const presentation = this.#pageActionFeedback;
526
+ const assertActive = () => {
522
527
  signal?.throwIfAborted();
523
- const result = await execute(waitForPresentation ? async () => {
524
- if (this.#pageActionPresentation !== presentation)
525
- throw new Error("Page action presentation was interrupted.");
526
- this.#emitExecution(running);
527
- await measurePagePhase("presentation", () => presentation(running, signal));
528
- } : undefined);
528
+ if (presentation && this.#pageActionFeedback !== presentation) {
529
+ throw new PageCommandError({ code: "EXECUTION_CANCELLED", message: "Page action presentation was detached." });
530
+ }
531
+ };
532
+ this.#emitExecution(running);
533
+ try {
534
+ assertActive();
535
+ const result = await execute(async (feedback) => {
536
+ assertActive();
537
+ if (presentation)
538
+ await measurePagePhase("presentation", async () => { await presentation(running, feedback, signal); });
539
+ assertActive();
540
+ }, assertActive);
529
541
  signal?.throwIfAborted();
530
542
  this.#emitExecution({
531
543
  ...running, status: "success", finishedAt: Date.now(), result,