@nexface/tools 0.1.11-alpha.0 → 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.
- package/dist/browser/controller.js +27 -8
- package/dist/browser/controller.js.map +1 -1
- package/dist/browser/feedback.d.ts +8 -2
- package/dist/browser/feedback.js +11 -2
- package/dist/browser/feedback.js.map +1 -1
- package/dist/browser/locator.d.ts +1 -0
- package/dist/browser/locator.js +1 -1
- package/dist/browser/locator.js.map +1 -1
- package/dist/browser/toolset.d.ts +3 -1
- package/dist/browser/toolset.js +9 -6
- package/dist/browser/toolset.js.map +1 -1
- package/dist/operation-runtime.d.ts +1 -0
- package/dist/operation-runtime.js +12 -8
- package/dist/operation-runtime.js.map +1 -1
- package/dist/operation-surface.js +78 -100
- package/dist/operation-surface.js.map +1 -1
- package/dist/operation-types.d.ts +18 -8
- package/dist/operation-types.js.map +1 -1
- package/dist/operation-view.d.ts +4 -13
- package/dist/operation-view.js +147 -348
- package/dist/operation-view.js.map +1 -1
- package/dist/runtime.d.ts +27 -6
- package/dist/runtime.js +35 -23
- package/dist/runtime.js.map +1 -1
- package/dist/styles.css +1 -7
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-surface.js","sourceRoot":"","sources":["../src/operation-surface.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { useCallback, useLayoutEffect, useRef, useState, type ReactElement, type ReactNode, type RefObject, type SyntheticEvent } from \"react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport type { AgentToolExecutionEvent } from \"./internal-types.js\";\nimport { getInternalToolRuntime, type ToolRuntime } from \"./runtime.js\";\nimport { isOperationSurfaceLocked } from \"./operation-lock.js\";\nimport { isAgentActivation } from \"./browser/focus.js\";\nimport { OperationOverlayView } from \"./operation-view.js\";\nimport type { AgentOperation, AgentOperationProgressEntry } from \"./operation-types.js\";\n\nconst CENTER_BROWSER_TOOL_NAMES = new Set([\"nxf_getSnapshot\", \"nxf_executeAction\"]);\n\nexport interface AgentOperationSurfaceProps {\n toolRuntime: ToolRuntime;\n children: ReactNode;\n}\n\nconst surfaces = new WeakSet<ToolRuntime>();\n\nexport function AgentOperationSurface(props: AgentOperationSurfaceProps): ReactElement {\n const element = useRef<HTMLDivElement>(null);\n const initial = useRef(props.toolRuntime);\n if (initial.current !== props.toolRuntime) {\n throw new Error(\"AgentOperationSurface requires a stable Runtime. Remount it to change Runtime.\");\n }\n useLayoutEffect(() => {\n if (surfaces.has(props.toolRuntime)) throw new Error(\"Only one AgentOperationSurface is supported per Runtime.\");\n surfaces.add(props.toolRuntime);\n return () => { surfaces.delete(props.toolRuntime); };\n }, [props.toolRuntime]);\n const blockUserInput = useCallback((event: SyntheticEvent) => {\n if ((event.type === \"submit\" || event.type === \"reset\") && isAgentActivation()) return;\n if (!element.current || !isOperationSurfaceLocked(element.current) || !event.nativeEvent.isTrusted) return;\n event.preventDefault();\n event.stopPropagation();\n }, []);\n const blockPassiveUserInput = useCallback((event: SyntheticEvent) => {\n if (!element.current || !isOperationSurfaceLocked(element.current) || !event.nativeEvent.isTrusted) return;\n // Stop React's capture dispatch, but let the native event reach our non-passive\n // surface listener. React's passive root listener cannot prevent scrolling.\n event.isPropagationStopped = () => true;\n }, []);\n return <>\n <div ref={element} className=\"nexface-operation-surface\"\n onClickCapture={blockUserInput} onDoubleClickCapture={blockUserInput} onAuxClickCapture={blockUserInput}\n onPointerDownCapture={blockUserInput} onPointerUpCapture={blockUserInput}\n onPointerMoveCapture={blockUserInput} onPointerOverCapture={blockUserInput} onPointerOutCapture={blockUserInput}\n onMouseDownCapture={blockUserInput} onMouseUpCapture={blockUserInput} onContextMenuCapture={blockUserInput}\n onMouseMoveCapture={blockUserInput} onMouseOverCapture={blockUserInput} onMouseOutCapture={blockUserInput}\n onWheelCapture={blockPassiveUserInput} onTouchStartCapture={blockPassiveUserInput} onTouchMoveCapture={blockPassiveUserInput}\n onTouchEndCapture={blockUserInput} onTouchCancelCapture={blockUserInput}\n onKeyDownCapture={blockUserInput} onKeyUpCapture={blockUserInput} onKeyPressCapture={blockUserInput}\n onBeforeInputCapture={blockUserInput} onPasteCapture={blockUserInput} onCutCapture={blockUserInput}\n onDropCapture={blockUserInput} onDragStartCapture={blockUserInput}\n onSubmitCapture={blockUserInput} onResetCapture={blockUserInput}\n >{props.children}</div>\n <OperationSurfaceContent {...props} element={element} />\n </>;\n}\n\nfunction OperationSurfaceContent({ toolRuntime, element }: AgentOperationSurfaceProps & { element: RefObject<HTMLDivElement | null> }) {\n const runtime = getInternalToolRuntime(toolRuntime);\n const activity = useSyncExternalStore(runtime.subscribeActivity, runtime.getActivitySnapshot, runtime.getActivitySnapshot);\n const cycle = activity.operation;\n const [outcome, setOutcome] = useState<{ id: string; status: \"completed\" | \"failed\" | \"cancelled\" }>();\n useLayoutEffect(() => runtime.subscribeActivity(() => {\n const current = runtime.getActivitySnapshot().operation;\n // Task progress does not replace page feedback. Only lifecycle boundaries clear it.\n setVisual((visual) => {\n if (current) return current.status === \"running\" && visual?.event.operationId === current.id ? visual : undefined;\n return visual && runtime.getActivitySnapshot().executions.some((event) => event.id === visual.event.id) ? visual : undefined;\n });\n if (current?.status === \"ending\" && current.outcome) setOutcome({ id: current.id, status: current.outcome });\n }), [runtime]);\n const [visual, setVisual] = useState<{ event: AgentToolExecutionEvent; target?: HTMLElement; position?: { left: number; top: number } }>();\n const pendingPresentation = useRef<{ id: string; finish(): void; interrupt(): void } | undefined>(undefined);\n useLayoutEffect(() => {\n const dispose = runtime.setPageActionPresentation((event, signal) => {\n const target = runtime.resolveTarget(event.tool, event.input);\n if (!target || !element.current?.contains(target)) return Promise.resolve();\n return new Promise<void>((resolve, reject) => {\n let finished = false;\n const settle = (error?: Error) => {\n if (finished) return;\n finished = true;\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", finish);\n if (pendingPresentation.current?.id === event.id) pendingPresentation.current = undefined;\n if (error) reject(error);\n else resolve();\n };\n const finish = () => settle();\n const timer = setTimeout(finish, 750);\n pendingPresentation.current = {\n id: event.id,\n finish,\n interrupt: () => settle(new Error(\"Page action presentation was interrupted.\")),\n };\n if (signal?.aborted) finish();\n else signal?.addEventListener(\"abort\", finish, { once: true });\n });\n });\n return () => { pendingPresentation.current?.interrupt(); dispose(); };\n }, [runtime, element]);\n const onPointerReady = useCallback((id: string) => {\n if (pendingPresentation.current?.id === id) pendingPresentation.current.finish();\n }, []);\n const [history, setHistory] = useState<{ scope: string; entries: AgentOperationProgressEntry[] }>({ scope: \"\", entries: [] });\n useLayoutEffect(() => {\n const onExecution = (event: AgentToolExecutionEvent) => {\n const scope = event.operationId ?? event.id;\n const operation = runtime.getActivitySnapshot().operation;\n const canDisplay = !event.operationId || (operation?.id === event.operationId && operation.status === \"running\");\n if (canDisplay && event.status === \"running\") {\n const target = event.tool.definition.effect === \"navigate\"\n ? element.current\n : runtime.resolveTarget(event.tool, event.input);\n if (target?.isConnected && element.current?.contains(target)) {\n const rect = target.getBoundingClientRect();\n setVisual({ event, target, position: { left: rect.left + rect.width / 2, top: rect.top + rect.height / 2 } });\n } else if (CENTER_BROWSER_TOOL_NAMES.has(event.name)) {\n setVisual({ event });\n } else if (event.name === \"nxf_applyAction\") {\n setVisual(undefined);\n }\n } else if (canDisplay) {\n setVisual((current) => current?.event.id === event.id && current.event.operationId === event.operationId\n ? { ...current, event: { ...current.event, ...event } }\n : current);\n }\n setHistory((current) => {\n if ((operation && event.operationId !== operation.id) || (event.status !== \"running\" && current.scope !== scope)) return current;\n const entries = current.scope === scope ? current.entries : [];\n const entry = {\n toolCallId: event.id,\n progressLabel: `${event.progressLabel || \"正在处理你的请求\"} · ${event.cancelled ? \"已取消\" : event.status === \"running\" ? \"执行中\" : event.status === \"success\" ? \"已完成\" : \"失败\"}`,\n };\n return { scope, entries: entries.some((item) => item.toolCallId === event.id)\n ? entries.map((item) => item.toolCallId === event.id ? entry : item)\n : [...entries, entry] };\n });\n };\n const unsubscribe = toolRuntime.on(\"toolexecution\", onExecution);\n for (const event of runtime.getActivitySnapshot().executions) onExecution(event);\n return unsubscribe;\n }, [runtime, toolRuntime, element]);\n const activated = Boolean(cycle && (cycle.source === \"webmcp\" || cycle.hasExecuted));\n const executing = activity.executions.length > 0;\n const waiting = cycle?.status === \"waiting\" && !executing;\n const running = executing || (activated && cycle?.status !== \"waiting\");\n const stopping = cycle?.status === \"cancelling\" || cycle?.status === \"ending\";\n useLayoutEffect(() => {\n if (!running || waiting) setVisual(undefined);\n }, [running, waiting]);\n const serverExecuting = cycle?.taskProgress?.phase === \"tool\";\n const currentVisual = !serverExecuting && !stopping && !waiting && visual && (cycle\n ? cycle.status === \"running\" && visual.event.operationId === cycle.id\n : activity.executions.some((event) => event.id === visual.event.id)) ? visual : undefined;\n const resolveSurface = useCallback(() => element.current ?? undefined, [element]);\n const resolveTarget = useCallback(() => {\n if (!currentVisual) return undefined;\n const target = currentVisual.target;\n if (target?.isConnected && element.current?.contains(target)\n && (currentVisual.event.tool.definition.effect === \"navigate\" || toolRuntime.getTools().includes(currentVisual.event.tool))) return { element: target };\n return undefined;\n }, [currentVisual, element, toolRuntime]);\n const operation: AgentOperation = currentVisual ? {\n toolCallId: currentVisual.event.id,\n name: currentVisual.event.name,\n input: currentVisual.event.input,\n effect: currentVisual.event.tool.definition.effect,\n progressLabel: currentVisual.event.progressLabel || \"正在处理你的请求\",\n status: currentVisual.event.status === \"running\" ? \"running\" : currentVisual.event.status === \"success\" ? \"completed\" : \"failed\",\n } : {\n toolCallId: cycle?.taskProgress?.phase === \"tool\" ? cycle.taskProgress.toolCallId : cycle?.id ?? history.scope,\n name: \"agent\",\n ...(serverExecuting ? { effect: \"read\" as const } : {}),\n progressLabel: waiting ? \"等待你完成操作\" : cycle?.status === \"cancelling\" ? \"正在终止\" : cycle?.taskProgress?.phase === \"tool\" ? cycle.taskProgress.progressLabel || \"正在执行工具\" : cycle?.taskProgress ? \"正在处理\" : \"正在处理你的请求\",\n status: running || waiting ? \"running\" : outcome?.id === history.scope ? outcome.status : \"completed\",\n };\n const entries = !cycle || history.scope === cycle.id ? history.entries : [];\n return activated || executing || entries.length ? <OperationOverlayView\n operation={operation}\n progressHistory={entries}\n running={running}\n feedbackActive={Boolean(currentVisual || serverExecuting) && running && !waiting && !stopping}\n humanHasControl={waiting}\n {...(cycle?.canCancel ? { onCancel: () => runtime.requestOperationCancel(cycle.id) } : {})}\n cancelling={cycle?.status === \"cancelling\" || cycle?.status === \"ending\"}\n {...(currentVisual?.position ? { fallbackPosition: currentVisual.position } : {})}\n resolveSurface={resolveSurface}\n resolveTarget={resolveTarget}\n onPointerReady={onPointerReady}\n /> : null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"operation-surface.js","sourceRoot":"","sources":["../src/operation-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAA0E,MAAM,OAAO,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI3D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEhG,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,SAAmC,EAAE,EAAE,CACjG,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;AACnD,MAAM,qBAAqB,GAAG,CAAC,KAA8B,EAAE,SAAmC,EAAE,EAAE,CACpG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAO1H,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAe,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACjH,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACxB,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAqB,EAAE,EAAE;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,iBAAiB,EAAE;YAAE,OAAO;QACvF,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS;YAAE,OAAO;QAC3G,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,KAAqB,EAAE,EAAE;QAClE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS;YAAE,OAAO;QAC3G,gFAAgF;QAChF,4EAA4E;QAC5E,KAAK,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO;QACL,6BAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,2BAA2B,EACtD,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EACvG,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EACxE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAC/G,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAC1G,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EACzG,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAC5H,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EACvE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EACnG,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAClG,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EACjE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,IAC/D,KAAK,CAAC,QAAQ,CAAO;QACvB,oBAAC,uBAAuB,OAAK,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CACvD,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAE,WAAW,EAAE,OAAO,EAA8E;IACnI,MAAM,OAAO,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3H,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAoD,CAAC;IAC3F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAmE,CAAC;IACxG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA4D,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9H,MAAM,KAAK,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACpI,eAAe,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC;QAC1D,IAAI,SAAS,EAAE,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO;YAAE,UAAU,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IACvH,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,eAAe,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC;QAC1D,IAAI,MAAM,EAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,MAAM,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,CAAC;QACnL,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvH,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAsB;YAC9B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,KAAK,QAAQ;YAC1G,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACnF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,QAAQ;wBAAE,OAAO;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,IAAI,KAAK;wBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;wBAAM,OAAO,EAAE,CAAC;gBAC3C,CAAC;aACF,CAAC;YACF,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxB,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,WAAW,GAAG,CAAC,KAA8B,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC;YAC1D,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;YACzG,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7C,IAAI,IAAI;oBAAE,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACxE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI;yBAClE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;qBACZ,CAAC;oBACJ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC9H,IAAI,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;wBAC5C,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;gCAChH,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;gCAChJ,QAAQ,EAAE,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,EAAE,EAAE,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU;gBAAE,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;oBAC7H,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;gBAAE,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChI,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;oBAAE,OAAO,OAAO,CAAC;gBACrH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE;oBAClC,aAAa,EAAE,GAAG,KAAK,CAAC,aAAa,IAAI,UAAU,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxK,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC;wBAC3E,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACjG,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,UAAU;YAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACjF,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;IAChD,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO;QAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,MAAM,eAAe,GAAG,KAAK,EAAE,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC;IAC9D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM;WAChD,CAAC,CAAC,eAAe,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;WACpF,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,MAAM,aAAa,GAAG,aAAa,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAC7F,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,IAAI,QAAQ;YAC/D,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,IAAI,QAAQ;gBACtF,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa;YACtE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YAC1H,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpG,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAC9F,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAe,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtH,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,OAAO,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAC,oBAAoB,IAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,OAAO,CAAC,KAAK,EACrG,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,KAC5G,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC9B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1F,cAAc,EAAE,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC","sourcesContent":["import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useCallback, useLayoutEffect, useRef, useState, type ReactElement, type ReactNode, type RefObject, type SyntheticEvent } from \"react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { PageCommandError } from \"./browser/locator.js\";\nimport type { AgentToolExecutionEvent } from \"./internal-types.js\";\nimport { getInternalToolRuntime, type ToolRuntime } from \"./runtime.js\";\nimport { isOperationSurfaceLocked } from \"./operation-lock.js\";\nimport { isAgentActivation } from \"./browser/focus.js\";\nimport { OperationOverlayView } from \"./operation-view.js\";\nimport type { AgentOperation, AgentOperationProgressEntry, OperationFeedback } from \"./operation-types.js\";\nimport type { OperationSnapshot } from \"./operation-runtime.js\";\n\nconst BROWSER_TOOL_NAMES = new Set([\"nxf_getSnapshot\", \"nxf_executeAction\", \"nxf_applyAction\"]);\n\nconst belongsToOperation = (event: AgentToolExecutionEvent, operation: OperationSnapshot | null) =>\n !operation || event.operationId === operation.id;\nconst canPresentInOperation = (event: AgentToolExecutionEvent, operation: OperationSnapshot | null) =>\n belongsToOperation(event, operation) && (!operation || operation.status === \"running\" || operation.status === \"ending\");\n\nexport interface AgentOperationSurfaceProps {\n toolRuntime: ToolRuntime;\n children: ReactNode;\n}\n\nconst surfaces = new WeakSet<ToolRuntime>();\n\nexport function AgentOperationSurface(props: AgentOperationSurfaceProps): ReactElement {\n const element = useRef<HTMLDivElement>(null);\n const initial = useRef(props.toolRuntime);\n if (initial.current !== props.toolRuntime) {\n throw new Error(\"AgentOperationSurface requires a stable Runtime. Remount it to change Runtime.\");\n }\n useLayoutEffect(() => {\n if (surfaces.has(props.toolRuntime)) throw new Error(\"Only one AgentOperationSurface is supported per Runtime.\");\n surfaces.add(props.toolRuntime);\n return () => { surfaces.delete(props.toolRuntime); };\n }, [props.toolRuntime]);\n const blockUserInput = useCallback((event: SyntheticEvent) => {\n if ((event.type === \"submit\" || event.type === \"reset\") && isAgentActivation()) return;\n if (!element.current || !isOperationSurfaceLocked(element.current) || !event.nativeEvent.isTrusted) return;\n event.preventDefault();\n event.stopPropagation();\n }, []);\n const blockPassiveUserInput = useCallback((event: SyntheticEvent) => {\n if (!element.current || !isOperationSurfaceLocked(element.current) || !event.nativeEvent.isTrusted) return;\n // Stop React's capture dispatch, but let the native event reach our non-passive\n // surface listener. React's passive root listener cannot prevent scrolling.\n event.isPropagationStopped = () => true;\n }, []);\n return <>\n <div ref={element} className=\"nexface-operation-surface\"\n onClickCapture={blockUserInput} onDoubleClickCapture={blockUserInput} onAuxClickCapture={blockUserInput}\n onPointerDownCapture={blockUserInput} onPointerUpCapture={blockUserInput}\n onPointerMoveCapture={blockUserInput} onPointerOverCapture={blockUserInput} onPointerOutCapture={blockUserInput}\n onMouseDownCapture={blockUserInput} onMouseUpCapture={blockUserInput} onContextMenuCapture={blockUserInput}\n onMouseMoveCapture={blockUserInput} onMouseOverCapture={blockUserInput} onMouseOutCapture={blockUserInput}\n onWheelCapture={blockPassiveUserInput} onTouchStartCapture={blockPassiveUserInput} onTouchMoveCapture={blockPassiveUserInput}\n onTouchEndCapture={blockUserInput} onTouchCancelCapture={blockUserInput}\n onKeyDownCapture={blockUserInput} onKeyUpCapture={blockUserInput} onKeyPressCapture={blockUserInput}\n onBeforeInputCapture={blockUserInput} onPasteCapture={blockUserInput} onCutCapture={blockUserInput}\n onDropCapture={blockUserInput} onDragStartCapture={blockUserInput}\n onSubmitCapture={blockUserInput} onResetCapture={blockUserInput}\n >{props.children}</div>\n <OperationSurfaceContent {...props} element={element} />\n </>;\n}\n\nfunction OperationSurfaceContent({ toolRuntime, element }: AgentOperationSurfaceProps & { element: RefObject<HTMLDivElement | null> }) {\n const runtime = getInternalToolRuntime(toolRuntime);\n const activity = useSyncExternalStore(runtime.subscribeActivity, runtime.getActivitySnapshot, runtime.getActivitySnapshot);\n const cycle = activity.operation;\n const [outcome, setOutcome] = useState<{ id: string; status: AgentOperation[\"status\"] }>();\n const [visual, setVisual] = useState<{ event: AgentToolExecutionEvent; feedback: OperationFeedback }>();\n const [history, setHistory] = useState<{ scope: string; entries: AgentOperationProgressEntry[] }>({ scope: \"\", entries: [] });\n const label = (event: AgentToolExecutionEvent) => event.progressLabel || (BROWSER_TOOL_NAMES.has(event.name) ? \"正在操作\" : \"正在处理你的请求\");\n useLayoutEffect(() => runtime.subscribeActivity(() => {\n const operation = runtime.getActivitySnapshot().operation;\n if (operation?.status === \"ending\" && operation.outcome) setOutcome({ id: operation.id, status: operation.outcome });\n }), [runtime]);\n useLayoutEffect(() => runtime.setPageActionFeedback((event, feedback, signal) => {\n const operation = runtime.getActivitySnapshot().operation;\n if (signal?.aborted || !canPresentInOperation(event, operation)) throw new PageCommandError({ code: \"EXECUTION_CANCELLED\", message: \"Page action presentation was interrupted.\" });\n const target = feedback.target;\n if (!feedback.effect || (feedback.effect === \"action\" && (!target?.isConnected || !element.current?.contains(target)))) {\n setVisual(undefined);\n return;\n }\n const next: OperationFeedback = {\n id: crypto.randomUUID(), effect: feedback.effect, label: label(event),\n centered: feedback.effect === \"read\", persistentCursor: true, requiresTarget: feedback.effect === \"action\",\n ...(target ? { target } : {}),\n };\n if (feedback.effect !== \"action\") { setVisual({ event, feedback: next }); return; }\n return new Promise<void>((resolve, reject) => {\n let finished = false;\n next.presentation = {\n ...(signal ? { signal } : {}),\n finish: (error) => {\n if (finished) return;\n finished = true;\n if (error) reject(error); else resolve();\n },\n };\n flushSync(() => setVisual({ event, feedback: next }));\n });\n }), [runtime, element]);\n useLayoutEffect(() => {\n const onExecution = (event: AgentToolExecutionEvent) => {\n const scope = event.operationId ?? event.id;\n const operation = runtime.getActivitySnapshot().operation;\n const canDisplay = !event.operationId || (operation !== null && canPresentInOperation(event, operation));\n const page = BROWSER_TOOL_NAMES.has(event.name);\n if (canDisplay && event.status === \"running\") {\n if (page) setVisual(event.name === \"nxf_getSnapshot\" ? { event, feedback: {\n id: event.id, effect: \"read\", label: label(event), centered: true,\n } } : undefined);\n else {\n const target = event.tool.definition.effect === \"navigate\" ? element.current : runtime.resolveTarget(event.tool, event.input);\n if (target?.isConnected && element.current?.contains(target)) {\n const rect = target.getBoundingClientRect();\n setVisual({ event, feedback: { id: event.id, effect: event.tool.definition.effect ?? \"action\", label: label(event),\n resolveTarget: () => event.tool.definition.effect === \"navigate\" ? element.current ?? undefined : runtime.resolveTarget(event.tool, event.input),\n position: { left: rect.left + rect.width / 2, top: rect.top + rect.height / 2 } } });\n }\n }\n } else if (canDisplay) setVisual((current) => current?.event.id === event.id && current.event.operationId === event.operationId\n ? page ? undefined : { ...current, event } : current);\n if (page && !operation && event.status === \"error\") setOutcome({ id: scope, status: event.cancelled ? \"cancelled\" : \"failed\" });\n setHistory((current) => {\n if (!belongsToOperation(event, operation) || (event.status !== \"running\" && current.scope !== scope)) return current;\n const entries = current.scope === scope ? current.entries : [];\n const entry = { toolCallId: event.id,\n progressLabel: `${event.progressLabel || \"正在处理你的请求\"} · ${event.cancelled ? \"已取消\" : event.status === \"running\" ? \"执行中\" : event.status === \"success\" ? \"已完成\" : \"失败\"}` };\n return { scope, entries: entries.some((item) => item.toolCallId === event.id)\n ? entries.map((item) => item.toolCallId === event.id ? entry : item) : [...entries, entry] };\n });\n };\n const unsubscribe = toolRuntime.on(\"toolexecution\", onExecution);\n for (const event of runtime.getActivitySnapshot().executions) onExecution(event);\n return unsubscribe;\n }, [runtime, toolRuntime, element]);\n const activated = Boolean(cycle && (cycle.source === \"webmcp\" || cycle.hasExecuted));\n const executing = activity.executions.length > 0;\n const waiting = cycle?.status === \"waiting\" && !executing;\n const running = executing || (activated && cycle?.status !== \"waiting\");\n const stopping = cycle?.status === \"cancelling\";\n useLayoutEffect(() => { if (!running || waiting) setVisual(undefined); }, [running, waiting]);\n const serverExecuting = cycle?.taskProgress?.phase === \"tool\";\n const visualExecuting = Boolean(visual && activity.executions.some((event) => event.id === visual.event.id));\n const currentVisual = !stopping && !waiting && visual\n && (!serverExecuting || (BROWSER_TOOL_NAMES.has(visual.event.name) && visualExecuting))\n && canPresentInOperation(visual.event, cycle) && (cycle || visualExecuting) ? visual : undefined;\n const browserExecution = activity.executions.find((event) => BROWSER_TOOL_NAMES.has(event.name));\n const progressLabel = currentVisual?.feedback.label ?? (waiting ? \"等待你完成操作\" : stopping ? \"正在终止\"\n : browserExecution ? browserExecution.progressLabel || \"正在浏览网页\"\n : cycle?.taskProgress?.phase === \"tool\" ? cycle.taskProgress.progressLabel || \"正在执行工具\"\n : cycle?.taskProgress ? \"正在处理\" : \"正在处理你的请求\");\n const operation: AgentOperation = { progressLabel, status: currentVisual\n ? currentVisual.event.status === \"running\" ? \"running\" : currentVisual.event.status === \"success\" ? \"completed\" : \"failed\"\n : running || waiting ? \"running\" : outcome?.id === history.scope ? outcome.status : \"completed\" };\n const feedback = currentVisual?.feedback ?? (serverExecuting && running && !waiting && !stopping\n ? { id: cycle.taskProgress.toolCallId, effect: \"read\" as const, label: progressLabel, centered: true } : undefined);\n const resolveSurface = useCallback(() => element.current ?? undefined, [element]);\n const entries = !cycle || history.scope === cycle.id ? history.entries : [];\n return activated || executing || entries.length ? <OperationOverlayView key={cycle?.id ?? history.scope}\n operation={operation} progressHistory={entries} running={running} humanHasControl={waiting} cancelling={stopping}\n {...(feedback ? { feedback } : {})}\n {...(cycle?.canCancel ? { onCancel: () => runtime.requestOperationCancel(cycle.id) } : {})}\n resolveSurface={resolveSurface} /> : null;\n}\n"]}
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import type { AgentToolEffect } from "./types.js";
|
|
2
2
|
export interface AgentOperation {
|
|
3
|
-
|
|
4
|
-
name: string;
|
|
5
|
-
input?: unknown;
|
|
6
|
-
progressLabel?: string;
|
|
7
|
-
effect?: AgentToolEffect | "processing";
|
|
3
|
+
progressLabel: string;
|
|
8
4
|
status: "running" | "completed" | "failed" | "cancelled";
|
|
9
5
|
}
|
|
10
6
|
export interface AgentOperationProgressEntry {
|
|
11
7
|
progressLabel: string;
|
|
12
8
|
toolCallId: string;
|
|
13
9
|
}
|
|
14
|
-
export interface
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
export interface OperationFeedback {
|
|
11
|
+
id: string;
|
|
12
|
+
effect: AgentToolEffect | "processing";
|
|
13
|
+
label: string;
|
|
14
|
+
target?: Element;
|
|
15
|
+
resolveTarget?(): Element | undefined;
|
|
16
|
+
position?: {
|
|
17
|
+
left: number;
|
|
18
|
+
top: number;
|
|
19
|
+
};
|
|
20
|
+
centered?: boolean;
|
|
21
|
+
persistentCursor?: boolean;
|
|
22
|
+
requiresTarget?: boolean;
|
|
23
|
+
presentation?: {
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
finish(error?: Error): void;
|
|
26
|
+
};
|
|
17
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-types.js","sourceRoot":"","sources":["../src/operation-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AgentToolEffect } from \"./types.js\";\n\nexport interface AgentOperation {\n
|
|
1
|
+
{"version":3,"file":"operation-types.js","sourceRoot":"","sources":["../src/operation-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AgentToolEffect } from \"./types.js\";\n\nexport interface AgentOperation {\n progressLabel: string;\n status: \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n}\n\nexport interface AgentOperationProgressEntry {\n progressLabel: string;\n toolCallId: string;\n}\n\nexport interface OperationFeedback {\n id: string;\n effect: AgentToolEffect | \"processing\";\n label: string;\n target?: Element;\n resolveTarget?(): Element | undefined;\n position?: { left: number; top: number };\n centered?: boolean;\n persistentCursor?: boolean;\n requiresTarget?: boolean;\n presentation?: {\n signal?: AbortSignal;\n finish(error?: Error): void;\n };\n}\n"]}
|
package/dist/operation-view.d.ts
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { AgentOperation, AgentOperationProgressEntry,
|
|
3
|
-
interface PointerPosition {
|
|
4
|
-
left: number;
|
|
5
|
-
top: number;
|
|
6
|
-
}
|
|
2
|
+
import type { AgentOperation, AgentOperationProgressEntry, OperationFeedback } from "./operation-types.js";
|
|
7
3
|
export interface OperationOverlayViewProps {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
labelActive?: boolean;
|
|
11
|
-
operation?: AgentOperation;
|
|
4
|
+
operation: AgentOperation;
|
|
5
|
+
feedback?: OperationFeedback;
|
|
12
6
|
progressHistory?: readonly AgentOperationProgressEntry[];
|
|
13
7
|
running: boolean;
|
|
14
8
|
humanHasControl?: boolean;
|
|
15
9
|
cancelling?: boolean;
|
|
16
10
|
onCancel?(): void;
|
|
17
11
|
resolveSurface?(): HTMLElement | undefined;
|
|
18
|
-
resolveTarget?(operation: AgentOperation): AgentOperationTarget | undefined;
|
|
19
|
-
onPointerReady?(toolCallId: string): void;
|
|
20
12
|
}
|
|
21
|
-
export declare function OperationOverlayView({ operation, progressHistory, running,
|
|
22
|
-
export {};
|
|
13
|
+
export declare function OperationOverlayView({ operation, feedback, progressHistory, running, humanHasControl, cancelling, onCancel: cancel, resolveSurface }: OperationOverlayViewProps): React.ReactPortal | null;
|