gitextract_0pcja33u/ ├── .gitattributes ├── .github/ │ └── workflows/ │ └── build-release.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ └── extensions.json ├── LICENSE ├── README.md ├── README_zh.md ├── app/ │ ├── chrome-extension/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _locales/ │ │ │ ├── de/ │ │ │ │ └── messages.json │ │ │ ├── en/ │ │ │ │ └── messages.json │ │ │ ├── ja/ │ │ │ │ └── messages.json │ │ │ ├── ko/ │ │ │ │ └── messages.json │ │ │ ├── zh_CN/ │ │ │ │ └── messages.json │ │ │ └── zh_TW/ │ │ │ └── messages.json │ │ ├── common/ │ │ │ ├── agent-models.ts │ │ │ ├── constants.ts │ │ │ ├── element-marker-types.ts │ │ │ ├── message-types.ts │ │ │ ├── node-types.ts │ │ │ ├── rr-v3-keepalive-protocol.ts │ │ │ ├── step-types.ts │ │ │ ├── tool-handler.ts │ │ │ └── web-editor-types.ts │ │ ├── entrypoints/ │ │ │ ├── background/ │ │ │ │ ├── element-marker/ │ │ │ │ │ ├── element-marker-storage.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── keepalive-manager.ts │ │ │ │ ├── native-host.ts │ │ │ │ ├── quick-panel/ │ │ │ │ │ ├── agent-handler.ts │ │ │ │ │ ├── commands.ts │ │ │ │ │ └── tabs-handler.ts │ │ │ │ ├── record-replay/ │ │ │ │ │ ├── actions/ │ │ │ │ │ │ ├── adapter.ts │ │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ │ ├── assert.ts │ │ │ │ │ │ │ ├── click.ts │ │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ │ ├── control-flow.ts │ │ │ │ │ │ │ ├── delay.ts │ │ │ │ │ │ │ ├── dom.ts │ │ │ │ │ │ │ ├── drag.ts │ │ │ │ │ │ │ ├── extract.ts │ │ │ │ │ │ │ ├── fill.ts │ │ │ │ │ │ │ ├── http.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── key.ts │ │ │ │ │ │ │ ├── navigate.ts │ │ │ │ │ │ │ ├── screenshot.ts │ │ │ │ │ │ │ ├── script.ts │ │ │ │ │ │ │ ├── scroll.ts │ │ │ │ │ │ │ ├── tabs.ts │ │ │ │ │ │ │ └── wait.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── registry.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── engine/ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── execution-mode.ts │ │ │ │ │ │ ├── logging/ │ │ │ │ │ │ │ └── run-logger.ts │ │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ │ ├── breakpoint.ts │ │ │ │ │ │ │ ├── manager.ts │ │ │ │ │ │ │ └── types.ts │ │ │ │ │ │ ├── policies/ │ │ │ │ │ │ │ ├── retry.ts │ │ │ │ │ │ │ └── wait.ts │ │ │ │ │ │ ├── runners/ │ │ │ │ │ │ │ ├── after-script-queue.ts │ │ │ │ │ │ │ ├── control-flow-runner.ts │ │ │ │ │ │ │ ├── step-executor.ts │ │ │ │ │ │ │ ├── step-runner.ts │ │ │ │ │ │ │ └── subflow-runner.ts │ │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ │ ├── state-manager.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── expression.ts │ │ │ │ │ ├── flow-runner.ts │ │ │ │ │ ├── flow-store.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── legacy-types.ts │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ ├── assert.ts │ │ │ │ │ │ ├── click.ts │ │ │ │ │ │ ├── conditional.ts │ │ │ │ │ │ ├── download-screenshot-attr-event-frame-loop.ts │ │ │ │ │ │ ├── drag.ts │ │ │ │ │ │ ├── execute-flow.ts │ │ │ │ │ │ ├── extract.ts │ │ │ │ │ │ ├── fill.ts │ │ │ │ │ │ ├── http.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── key.ts │ │ │ │ │ │ ├── loops.ts │ │ │ │ │ │ ├── navigate.ts │ │ │ │ │ │ ├── script.ts │ │ │ │ │ │ ├── scroll.ts │ │ │ │ │ │ ├── tabs.ts │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ └── wait.ts │ │ │ │ │ ├── recording/ │ │ │ │ │ │ ├── browser-event-listener.ts │ │ │ │ │ │ ├── content-injection.ts │ │ │ │ │ │ ├── content-message-handler.ts │ │ │ │ │ │ ├── flow-builder.ts │ │ │ │ │ │ ├── recorder-manager.ts │ │ │ │ │ │ └── session-manager.ts │ │ │ │ │ ├── rr-utils.ts │ │ │ │ │ ├── selector-engine.ts │ │ │ │ │ ├── storage/ │ │ │ │ │ │ └── indexeddb-manager.ts │ │ │ │ │ ├── trigger-store.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── record-replay-v3/ │ │ │ │ │ ├── bootstrap.ts │ │ │ │ │ ├── domain/ │ │ │ │ │ │ ├── debug.ts │ │ │ │ │ │ ├── errors.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── flow.ts │ │ │ │ │ │ ├── ids.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── json.ts │ │ │ │ │ │ ├── policy.ts │ │ │ │ │ │ ├── triggers.ts │ │ │ │ │ │ └── variables.ts │ │ │ │ │ ├── engine/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── keepalive/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── offscreen-keepalive.ts │ │ │ │ │ │ ├── kernel/ │ │ │ │ │ │ │ ├── artifacts.ts │ │ │ │ │ │ │ ├── breakpoints.ts │ │ │ │ │ │ │ ├── debug-controller.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── kernel.ts │ │ │ │ │ │ │ ├── recovery-kernel.ts │ │ │ │ │ │ │ ├── runner.ts │ │ │ │ │ │ │ └── traversal.ts │ │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── register-v2-replay-nodes.ts │ │ │ │ │ │ │ ├── registry.ts │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── v2-action-adapter.ts │ │ │ │ │ │ ├── queue/ │ │ │ │ │ │ │ ├── enqueue-run.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── leasing.ts │ │ │ │ │ │ │ ├── queue.ts │ │ │ │ │ │ │ └── scheduler.ts │ │ │ │ │ │ ├── recovery/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── recovery-coordinator.ts │ │ │ │ │ │ ├── storage/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── storage-port.ts │ │ │ │ │ │ ├── transport/ │ │ │ │ │ │ │ ├── events-bus.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── rpc-server.ts │ │ │ │ │ │ │ └── rpc.ts │ │ │ │ │ │ └── triggers/ │ │ │ │ │ │ ├── command-trigger.ts │ │ │ │ │ │ ├── context-menu-trigger.ts │ │ │ │ │ │ ├── cron-trigger.ts │ │ │ │ │ │ ├── dom-trigger.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── interval-trigger.ts │ │ │ │ │ │ ├── manual-trigger.ts │ │ │ │ │ │ ├── once-trigger.ts │ │ │ │ │ │ ├── trigger-handler.ts │ │ │ │ │ │ ├── trigger-manager.ts │ │ │ │ │ │ └── url-trigger.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── storage/ │ │ │ │ │ ├── db.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── flows.ts │ │ │ │ │ ├── import/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── v2-reader.ts │ │ │ │ │ │ └── v2-to-v3.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── persistent-vars.ts │ │ │ │ │ ├── queue.ts │ │ │ │ │ ├── runs.ts │ │ │ │ │ └── triggers.ts │ │ │ │ ├── semantic-similarity.ts │ │ │ │ ├── storage-manager.ts │ │ │ │ ├── tools/ │ │ │ │ │ ├── base-browser.ts │ │ │ │ │ ├── browser/ │ │ │ │ │ │ ├── bookmark.ts │ │ │ │ │ │ ├── common.ts │ │ │ │ │ │ ├── computer.ts │ │ │ │ │ │ ├── console-buffer.ts │ │ │ │ │ │ ├── console.ts │ │ │ │ │ │ ├── dialog.ts │ │ │ │ │ │ ├── download.ts │ │ │ │ │ │ ├── element-picker.ts │ │ │ │ │ │ ├── file-upload.ts │ │ │ │ │ │ ├── gif-auto-capture.ts │ │ │ │ │ │ ├── gif-enhanced-renderer.ts │ │ │ │ │ │ ├── gif-recorder.ts │ │ │ │ │ │ ├── history.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── inject-script.ts │ │ │ │ │ │ ├── interaction.ts │ │ │ │ │ │ ├── javascript.ts │ │ │ │ │ │ ├── keyboard.ts │ │ │ │ │ │ ├── network-capture-debugger.ts │ │ │ │ │ │ ├── network-capture-web-request.ts │ │ │ │ │ │ ├── network-capture.ts │ │ │ │ │ │ ├── network-request.ts │ │ │ │ │ │ ├── performance.ts │ │ │ │ │ │ ├── read-page.ts │ │ │ │ │ │ ├── screenshot.ts │ │ │ │ │ │ ├── userscript.ts │ │ │ │ │ │ ├── vector-search.ts │ │ │ │ │ │ ├── web-fetcher.ts │ │ │ │ │ │ └── window.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── record-replay.ts │ │ │ │ ├── utils/ │ │ │ │ │ └── sidepanel.ts │ │ │ │ └── web-editor/ │ │ │ │ └── index.ts │ │ │ ├── builder/ │ │ │ │ ├── App.vue │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── content.ts │ │ │ ├── element-picker.content.ts │ │ │ ├── offscreen/ │ │ │ │ ├── gif-encoder.ts │ │ │ │ ├── index.html │ │ │ │ ├── main.ts │ │ │ │ └── rr-keepalive.ts │ │ │ ├── options/ │ │ │ │ ├── App.vue │ │ │ │ ├── index.html │ │ │ │ └── main.ts │ │ │ ├── popup/ │ │ │ │ ├── App.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── ConfirmDialog.vue │ │ │ │ │ ├── ElementMarkerManagement.vue │ │ │ │ │ ├── LocalModelPage.vue │ │ │ │ │ ├── ModelCacheManagement.vue │ │ │ │ │ ├── ProgressIndicator.vue │ │ │ │ │ ├── ScheduleDialog.vue │ │ │ │ │ ├── builder/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── Canvas.vue │ │ │ │ │ │ │ ├── EdgePropertyPanel.vue │ │ │ │ │ │ │ ├── KeyValueEditor.vue │ │ │ │ │ │ │ ├── PropertyPanel.vue │ │ │ │ │ │ │ ├── Sidebar.vue │ │ │ │ │ │ │ ├── TriggerPanel.vue │ │ │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ │ │ ├── NodeCard.vue │ │ │ │ │ │ │ │ ├── NodeIf.vue │ │ │ │ │ │ │ │ └── node-util.ts │ │ │ │ │ │ │ └── properties/ │ │ │ │ │ │ │ ├── PropertyAssert.vue │ │ │ │ │ │ │ ├── PropertyClick.vue │ │ │ │ │ │ │ ├── PropertyCloseTab.vue │ │ │ │ │ │ │ ├── PropertyDelay.vue │ │ │ │ │ │ │ ├── PropertyDrag.vue │ │ │ │ │ │ │ ├── PropertyExecuteFlow.vue │ │ │ │ │ │ │ ├── PropertyExtract.vue │ │ │ │ │ │ │ ├── PropertyFill.vue │ │ │ │ │ │ │ ├── PropertyForeach.vue │ │ │ │ │ │ │ ├── PropertyFormRenderer.vue │ │ │ │ │ │ │ ├── PropertyFromSpec.vue │ │ │ │ │ │ │ ├── PropertyHandleDownload.vue │ │ │ │ │ │ │ ├── PropertyHttp.vue │ │ │ │ │ │ │ ├── PropertyIf.vue │ │ │ │ │ │ │ ├── PropertyKey.vue │ │ │ │ │ │ │ ├── PropertyLoopElements.vue │ │ │ │ │ │ │ ├── PropertyNavigate.vue │ │ │ │ │ │ │ ├── PropertyOpenTab.vue │ │ │ │ │ │ │ ├── PropertyScreenshot.vue │ │ │ │ │ │ │ ├── PropertyScript.vue │ │ │ │ │ │ │ ├── PropertyScroll.vue │ │ │ │ │ │ │ ├── PropertySetAttribute.vue │ │ │ │ │ │ │ ├── PropertySwitchFrame.vue │ │ │ │ │ │ │ ├── PropertySwitchTab.vue │ │ │ │ │ │ │ ├── PropertyTrigger.vue │ │ │ │ │ │ │ ├── PropertyTriggerEvent.vue │ │ │ │ │ │ │ ├── PropertyWait.vue │ │ │ │ │ │ │ ├── PropertyWhile.vue │ │ │ │ │ │ │ └── SelectorEditor.vue │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── form-widget-registry.ts │ │ │ │ │ │ │ ├── node-spec-registry.ts │ │ │ │ │ │ │ ├── node-spec.ts │ │ │ │ │ │ │ ├── node-specs-builtin.ts │ │ │ │ │ │ │ ├── toast.ts │ │ │ │ │ │ │ ├── transforms.ts │ │ │ │ │ │ │ ├── ui-nodes.ts │ │ │ │ │ │ │ ├── validation.ts │ │ │ │ │ │ │ └── variables.ts │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ └── useBuilderStore.ts │ │ │ │ │ │ └── widgets/ │ │ │ │ │ │ ├── FieldCode.vue │ │ │ │ │ │ ├── FieldDuration.vue │ │ │ │ │ │ ├── FieldExpression.vue │ │ │ │ │ │ ├── FieldKeySequence.vue │ │ │ │ │ │ ├── FieldSelector.vue │ │ │ │ │ │ ├── FieldTargetLocator.vue │ │ │ │ │ │ └── VarInput.vue │ │ │ │ │ └── icons/ │ │ │ │ │ ├── BoltIcon.vue │ │ │ │ │ ├── CheckIcon.vue │ │ │ │ │ ├── DatabaseIcon.vue │ │ │ │ │ ├── DocumentIcon.vue │ │ │ │ │ ├── EditIcon.vue │ │ │ │ │ ├── MarkerIcon.vue │ │ │ │ │ ├── RecordIcon.vue │ │ │ │ │ ├── RefreshIcon.vue │ │ │ │ │ ├── StopIcon.vue │ │ │ │ │ ├── TabIcon.vue │ │ │ │ │ ├── TrashIcon.vue │ │ │ │ │ ├── VectorIcon.vue │ │ │ │ │ ├── WorkflowIcon.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── index.html │ │ │ │ ├── main.ts │ │ │ │ └── style.css │ │ │ ├── quick-panel.content.ts │ │ │ ├── shared/ │ │ │ │ ├── composables/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useRRV3Rpc.ts │ │ │ │ └── utils/ │ │ │ │ ├── index.ts │ │ │ │ └── rr-flow-convert.ts │ │ │ ├── sidepanel/ │ │ │ │ ├── App.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AgentChat.vue │ │ │ │ │ ├── SidepanelNavigator.vue │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── AttachmentPreview.vue │ │ │ │ │ │ ├── ChatInput.vue │ │ │ │ │ │ ├── CliSettings.vue │ │ │ │ │ │ ├── ConnectionStatus.vue │ │ │ │ │ │ ├── MessageItem.vue │ │ │ │ │ │ ├── MessageList.vue │ │ │ │ │ │ ├── ProjectCreateForm.vue │ │ │ │ │ │ ├── ProjectSelector.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── agent-chat/ │ │ │ │ │ │ ├── AgentChatShell.vue │ │ │ │ │ │ ├── AgentComposer.vue │ │ │ │ │ │ ├── AgentConversation.vue │ │ │ │ │ │ ├── AgentOpenProjectMenu.vue │ │ │ │ │ │ ├── AgentProjectMenu.vue │ │ │ │ │ │ ├── AgentRequestThread.vue │ │ │ │ │ │ ├── AgentSessionListItem.vue │ │ │ │ │ │ ├── AgentSessionMenu.vue │ │ │ │ │ │ ├── AgentSessionSettingsPanel.vue │ │ │ │ │ │ ├── AgentSessionsView.vue │ │ │ │ │ │ ├── AgentSettingsMenu.vue │ │ │ │ │ │ ├── AgentTimeline.vue │ │ │ │ │ │ ├── AgentTimelineItem.vue │ │ │ │ │ │ ├── AgentTopBar.vue │ │ │ │ │ │ ├── ApplyMessageChip.vue │ │ │ │ │ │ ├── AttachmentCachePanel.vue │ │ │ │ │ │ ├── ComposerDrawer.vue │ │ │ │ │ │ ├── ElementChip.vue │ │ │ │ │ │ ├── FakeCaretOverlay.vue │ │ │ │ │ │ ├── SelectionChip.vue │ │ │ │ │ │ ├── WebEditorChanges.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── timeline/ │ │ │ │ │ │ ├── ThinkingNode.vue │ │ │ │ │ │ ├── TimelineNarrativeStep.vue │ │ │ │ │ │ ├── TimelineStatusStep.vue │ │ │ │ │ │ ├── TimelineToolCallStep.vue │ │ │ │ │ │ ├── TimelineToolResultCardStep.vue │ │ │ │ │ │ ├── TimelineUserPromptStep.vue │ │ │ │ │ │ └── markstream-thinking.ts │ │ │ │ │ ├── rr-v3/ │ │ │ │ │ │ └── DebuggerPanel.vue │ │ │ │ │ └── workflows/ │ │ │ │ │ ├── WorkflowListItem.vue │ │ │ │ │ ├── WorkflowsView.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── composables/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useAgentChat.ts │ │ │ │ │ ├── useAgentChatViewRoute.ts │ │ │ │ │ ├── useAgentInputPreferences.ts │ │ │ │ │ ├── useAgentProjects.ts │ │ │ │ │ ├── useAgentServer.ts │ │ │ │ │ ├── useAgentSessions.ts │ │ │ │ │ ├── useAgentTheme.ts │ │ │ │ │ ├── useAgentThreads.ts │ │ │ │ │ ├── useAttachments.ts │ │ │ │ │ ├── useFakeCaret.ts │ │ │ │ │ ├── useFloatingDrag.ts │ │ │ │ │ ├── useOpenProjectPreference.ts │ │ │ │ │ ├── useRRV3Debugger.ts │ │ │ │ │ ├── useRRV3Rpc.ts │ │ │ │ │ ├── useTextareaAutoResize.ts │ │ │ │ │ ├── useWebEditorTxState.ts │ │ │ │ │ └── useWorkflowsV3.ts │ │ │ │ ├── index.html │ │ │ │ ├── main.ts │ │ │ │ ├── styles/ │ │ │ │ │ └── agent-chat.css │ │ │ │ └── utils/ │ │ │ │ └── loading-texts.ts │ │ │ ├── styles/ │ │ │ │ └── tailwind.css │ │ │ ├── web-editor-v2/ │ │ │ │ ├── attr-ui-refactor.md │ │ │ │ ├── constants.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── css-compare.ts │ │ │ │ │ ├── cssom-styles-collector.ts │ │ │ │ │ ├── debug-source.ts │ │ │ │ │ ├── design-tokens/ │ │ │ │ │ │ ├── design-tokens-service.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── token-detector.ts │ │ │ │ │ │ ├── token-resolver.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── editor.ts │ │ │ │ │ ├── element-key.ts │ │ │ │ │ ├── event-controller.ts │ │ │ │ │ ├── execution-tracker.ts │ │ │ │ │ ├── hmr-consistency.ts │ │ │ │ │ ├── locator.ts │ │ │ │ │ ├── message-listener.ts │ │ │ │ │ ├── payload-builder.ts │ │ │ │ │ ├── perf-monitor.ts │ │ │ │ │ ├── position-tracker.ts │ │ │ │ │ ├── props-bridge.ts │ │ │ │ │ ├── snap-engine.ts │ │ │ │ │ ├── transaction-aggregator.ts │ │ │ │ │ └── transaction-manager.ts │ │ │ │ ├── drag/ │ │ │ │ │ └── drag-reorder-controller.ts │ │ │ │ ├── overlay/ │ │ │ │ │ ├── canvas-overlay.ts │ │ │ │ │ └── handles-controller.ts │ │ │ │ ├── selection/ │ │ │ │ │ └── selection-engine.ts │ │ │ │ ├── ui/ │ │ │ │ │ ├── breadcrumbs.ts │ │ │ │ │ ├── floating-drag.ts │ │ │ │ │ ├── icons.ts │ │ │ │ │ ├── property-panel/ │ │ │ │ │ │ ├── class-editor.ts │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── alignment-grid.ts │ │ │ │ │ │ │ ├── icon-button-group.ts │ │ │ │ │ │ │ ├── input-container.ts │ │ │ │ │ │ │ ├── slider-input.ts │ │ │ │ │ │ │ └── token-pill.ts │ │ │ │ │ │ ├── components-tree.ts │ │ │ │ │ │ ├── controls/ │ │ │ │ │ │ │ ├── appearance-control.ts │ │ │ │ │ │ │ ├── background-control.ts │ │ │ │ │ │ │ ├── border-control.ts │ │ │ │ │ │ │ ├── color-field.ts │ │ │ │ │ │ │ ├── css-helpers.ts │ │ │ │ │ │ │ ├── effects-control.ts │ │ │ │ │ │ │ ├── gradient-control.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── layout-control.ts │ │ │ │ │ │ │ ├── number-stepping.ts │ │ │ │ │ │ │ ├── position-control.ts │ │ │ │ │ │ │ ├── size-control.ts │ │ │ │ │ │ │ ├── spacing-control.ts │ │ │ │ │ │ │ ├── token-picker.ts │ │ │ │ │ │ │ └── typography-control.ts │ │ │ │ │ │ ├── css-defaults.ts │ │ │ │ │ │ ├── css-panel.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── property-panel.ts │ │ │ │ │ │ ├── props-panel.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── shadow-host.ts │ │ │ │ │ └── toolbar.ts │ │ │ │ └── utils/ │ │ │ │ └── disposables.ts │ │ │ ├── web-editor-v2.ts │ │ │ └── welcome/ │ │ │ ├── App.vue │ │ │ ├── index.html │ │ │ └── main.ts │ │ ├── env.d.ts │ │ ├── eslint.config.js │ │ ├── inject-scripts/ │ │ │ ├── accessibility-tree-helper.js │ │ │ ├── click-helper.js │ │ │ ├── dom-observer.js │ │ │ ├── element-marker.js │ │ │ ├── element-picker.js │ │ │ ├── fill-helper.js │ │ │ ├── inject-bridge.js │ │ │ ├── interactive-elements-helper.js │ │ │ ├── keyboard-helper.js │ │ │ ├── network-helper.js │ │ │ ├── props-agent.js │ │ │ ├── recorder.js │ │ │ ├── screenshot-helper.js │ │ │ ├── wait-helper.js │ │ │ ├── web-editor.js │ │ │ └── web-fetcher-helper.js │ │ ├── package.json │ │ ├── shared/ │ │ │ ├── element-picker/ │ │ │ │ ├── controller.ts │ │ │ │ └── index.ts │ │ │ ├── quick-panel/ │ │ │ │ ├── core/ │ │ │ │ │ ├── agent-bridge.ts │ │ │ │ │ ├── search-engine.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── providers/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── tabs-provider.ts │ │ │ │ └── ui/ │ │ │ │ ├── ai-chat-panel.ts │ │ │ │ ├── index.ts │ │ │ │ ├── markdown-renderer.ts │ │ │ │ ├── message-renderer.ts │ │ │ │ ├── panel-shell.ts │ │ │ │ ├── quick-entries.ts │ │ │ │ ├── search-input.ts │ │ │ │ ├── shadow-host.ts │ │ │ │ └── styles.ts │ │ │ └── selector/ │ │ │ ├── dom-path.ts │ │ │ ├── fingerprint.ts │ │ │ ├── generator.ts │ │ │ ├── index.ts │ │ │ ├── locator.ts │ │ │ ├── shadow-dom.ts │ │ │ ├── stability.ts │ │ │ ├── strategies/ │ │ │ │ ├── anchor-relpath.ts │ │ │ │ ├── aria.ts │ │ │ │ ├── css-path.ts │ │ │ │ ├── css-unique.ts │ │ │ │ ├── index.ts │ │ │ │ ├── testid.ts │ │ │ │ └── text.ts │ │ │ └── types.ts │ │ ├── tailwind.config.ts │ │ ├── tests/ │ │ │ ├── __mocks__/ │ │ │ │ └── hnswlib-wasm-static.ts │ │ │ ├── record-replay/ │ │ │ │ ├── _test-helpers.ts │ │ │ │ ├── adapter-policy.contract.test.ts │ │ │ │ ├── flow-store-strip-steps.contract.test.ts │ │ │ │ ├── high-risk-actions.integration.test.ts │ │ │ │ ├── hybrid-actions.integration.test.ts │ │ │ │ ├── script-control-flow.integration.test.ts │ │ │ │ ├── session-dag-sync.contract.test.ts │ │ │ │ ├── step-executor.contract.test.ts │ │ │ │ └── tab-cursor.integration.test.ts │ │ │ ├── record-replay-v3/ │ │ │ │ ├── command-trigger.test.ts │ │ │ │ ├── context-menu-trigger.test.ts │ │ │ │ ├── cron-trigger.test.ts │ │ │ │ ├── debugger.contract.test.ts │ │ │ │ ├── dom-trigger.test.ts │ │ │ │ ├── e2e.integration.test.ts │ │ │ │ ├── events.contract.test.ts │ │ │ │ ├── interval-trigger.test.ts │ │ │ │ ├── manual-trigger.test.ts │ │ │ │ ├── once-trigger.test.ts │ │ │ │ ├── queue.contract.test.ts │ │ │ │ ├── recovery.test.ts │ │ │ │ ├── rpc-api.test.ts │ │ │ │ ├── runner.onError.contract.test.ts │ │ │ │ ├── scheduler-integration.test.ts │ │ │ │ ├── scheduler.test.ts │ │ │ │ ├── spec-smoke.test.ts │ │ │ │ ├── trigger-manager.test.ts │ │ │ │ ├── triggers.test.ts │ │ │ │ ├── url-trigger.test.ts │ │ │ │ ├── v2-action-adapter.test.ts │ │ │ │ ├── v2-adapter-integration.test.ts │ │ │ │ ├── v2-to-v3-conversion.test.ts │ │ │ │ └── v3-e2e-harness.ts │ │ │ ├── vitest.setup.ts │ │ │ └── web-editor-v2/ │ │ │ ├── design-tokens.test.ts │ │ │ ├── drag-reorder-controller.test.ts │ │ │ ├── event-controller.test.ts │ │ │ ├── locator.test.ts │ │ │ ├── property-panel-live-sync.test.ts │ │ │ ├── selection-engine.test.ts │ │ │ ├── snap-engine.test.ts │ │ │ └── test-utils/ │ │ │ └── dom.ts │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── gifenc.d.ts │ │ │ └── icons.d.ts │ │ ├── utils/ │ │ │ ├── cdp-session-manager.ts │ │ │ ├── content-indexer.ts │ │ │ ├── i18n.ts │ │ │ ├── image-utils.ts │ │ │ ├── indexeddb-client.ts │ │ │ ├── lru-cache.ts │ │ │ ├── model-cache-manager.ts │ │ │ ├── offscreen-manager.ts │ │ │ ├── output-sanitizer.ts │ │ │ ├── screenshot-context.ts │ │ │ ├── semantic-similarity-engine.ts │ │ │ ├── simd-math-engine.ts │ │ │ ├── text-chunker.ts │ │ │ └── vector-database.ts │ │ ├── vitest.config.ts │ │ ├── workers/ │ │ │ ├── ort-wasm-simd-threaded.jsep.mjs │ │ │ ├── ort-wasm-simd-threaded.jsep.wasm │ │ │ ├── ort-wasm-simd-threaded.mjs │ │ │ ├── ort-wasm-simd-threaded.wasm │ │ │ ├── simd_math.js │ │ │ ├── simd_math_bg.wasm │ │ │ └── similarity.worker.js │ │ └── wxt.config.ts │ └── native-server/ │ ├── .npmignore │ ├── README.md │ ├── debug.sh │ ├── install.md │ ├── jest.config.js │ ├── package.json │ ├── src/ │ │ ├── agent/ │ │ │ ├── attachment-service.ts │ │ │ ├── ccr-detector.ts │ │ │ ├── chat-service.ts │ │ │ ├── db/ │ │ │ │ ├── client.ts │ │ │ │ ├── index.ts │ │ │ │ └── schema.ts │ │ │ ├── directory-picker.ts │ │ │ ├── engines/ │ │ │ │ ├── claude.ts │ │ │ │ ├── codex.ts │ │ │ │ └── types.ts │ │ │ ├── message-service.ts │ │ │ ├── open-project.ts │ │ │ ├── project-service.ts │ │ │ ├── project-types.ts │ │ │ ├── session-service.ts │ │ │ ├── storage.ts │ │ │ ├── stream-manager.ts │ │ │ ├── tool-bridge.ts │ │ │ └── types.ts │ │ ├── cli.ts │ │ ├── constant/ │ │ │ └── index.ts │ │ ├── file-handler.ts │ │ ├── index.ts │ │ ├── mcp/ │ │ │ ├── mcp-server-stdio.ts │ │ │ ├── mcp-server.ts │ │ │ ├── register-tools.ts │ │ │ └── stdio-config.json │ │ ├── native-messaging-host.ts │ │ ├── scripts/ │ │ │ ├── browser-config.ts │ │ │ ├── build.ts │ │ │ ├── constant.ts │ │ │ ├── doctor.ts │ │ │ ├── postinstall.ts │ │ │ ├── register-dev.ts │ │ │ ├── register.ts │ │ │ ├── report.ts │ │ │ ├── run_host.bat │ │ │ ├── run_host.sh │ │ │ └── utils.ts │ │ ├── server/ │ │ │ ├── index.ts │ │ │ ├── routes/ │ │ │ │ ├── agent.ts │ │ │ │ └── index.ts │ │ │ └── server.test.ts │ │ ├── shims/ │ │ │ └── devtools.d.ts │ │ ├── trace-analyzer.ts │ │ ├── types/ │ │ │ └── devtools-frontend.d.ts │ │ └── util/ │ │ └── logger.ts │ └── tsconfig.json ├── commitlint.config.cjs ├── docs/ │ ├── ARCHITECTURE.md │ ├── ARCHITECTURE_zh.md │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── CONTRIBUTING_zh.md │ ├── ISSUE.md │ ├── TOOLS.md │ ├── TOOLS_zh.md │ ├── TROUBLESHOOTING.md │ ├── TROUBLESHOOTING_zh.md │ ├── VisualEditor.md │ ├── VisualEditor_zh.md │ ├── WINDOWS_INSTALL_zh.md │ └── mcp-cli-config.md ├── eslint.config.js ├── package.json ├── packages/ │ ├── shared/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent-types.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── labels.ts │ │ │ ├── node-spec-registry.ts │ │ │ ├── node-spec.ts │ │ │ ├── node-specs-builtin.ts │ │ │ ├── rr-graph.ts │ │ │ ├── step-types.ts │ │ │ ├── tools.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ └── wasm-simd/ │ ├── .gitignore │ ├── BUILD.md │ ├── Cargo.toml │ ├── README.md │ ├── package.json │ └── src/ │ └── lib.rs ├── pnpm-workspace.yaml ├── prompt/ │ ├── content-analize.md │ ├── excalidraw-prompt.md │ └── modify-web.md └── releases/ └── README.md