cli-jaw 2.0.1 → 2.0.2
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/README.ko.md +3 -2
- package/README.md +41 -12
- package/dist/bin/_http-client.js +34 -0
- package/dist/bin/_http-client.js.map +1 -0
- package/dist/bin/cli-jaw.js +10 -5
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/browser-web-ai.js +155 -38
- package/dist/bin/commands/browser-web-ai.js.map +1 -1
- package/dist/bin/commands/browser.js +265 -37
- package/dist/bin/commands/browser.js.map +1 -1
- package/dist/bin/commands/chat.js +18 -14
- package/dist/bin/commands/chat.js.map +1 -1
- package/dist/bin/commands/clone.js +3 -2
- package/dist/bin/commands/clone.js.map +1 -1
- package/dist/bin/commands/dashboard.js +22 -18
- package/dist/bin/commands/dashboard.js.map +1 -1
- package/dist/bin/commands/dispatch.js +9 -11
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +26 -14
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/employee.js +12 -7
- package/dist/bin/commands/employee.js.map +1 -1
- package/dist/bin/commands/init.js +9 -9
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/launchd.js +17 -7
- package/dist/bin/commands/launchd.js.map +1 -1
- package/dist/bin/commands/mcp.js +7 -4
- package/dist/bin/commands/mcp.js.map +1 -1
- package/dist/bin/commands/memory.js +7 -5
- package/dist/bin/commands/memory.js.map +1 -1
- package/dist/bin/commands/orchestrate.js +6 -3
- package/dist/bin/commands/orchestrate.js.map +1 -1
- package/dist/bin/commands/reset.js +4 -3
- package/dist/bin/commands/reset.js.map +1 -1
- package/dist/bin/commands/serve.js +3 -2
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/bin/commands/service.js +2 -2
- package/dist/bin/commands/service.js.map +1 -1
- package/dist/bin/commands/status.js +10 -9
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/commands/tui/api.js +26 -18
- package/dist/bin/commands/tui/api.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +3 -1
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/simple-mode.js +1 -1
- package/dist/bin/commands/tui/simple-mode.js.map +1 -1
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/postinstall.js +153 -65
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/bin/star-prompt.js +4 -3
- package/dist/bin/star-prompt.js.map +1 -1
- package/dist/lib/mcp/format-converters.js +15 -10
- package/dist/lib/mcp/format-converters.js.map +1 -1
- package/dist/lib/mcp/mcp-install.js +2 -2
- package/dist/lib/mcp/mcp-install.js.map +1 -1
- package/dist/lib/mcp/skills-distribution.js +2 -2
- package/dist/lib/mcp/skills-distribution.js.map +1 -1
- package/dist/lib/mcp/skills-reset.js +5 -4
- package/dist/lib/mcp/skills-reset.js.map +1 -1
- package/dist/lib/mcp/skills-symlinks.js +9 -9
- package/dist/lib/mcp/skills-symlinks.js.map +1 -1
- package/dist/lib/mcp/skills-utils.js +5 -4
- package/dist/lib/mcp/skills-utils.js.map +1 -1
- package/dist/lib/mcp/unified-config.js +3 -2
- package/dist/lib/mcp/unified-config.js.map +1 -1
- package/dist/lib/mime-detect.js +65 -0
- package/dist/lib/mime-detect.js.map +1 -0
- package/dist/lib/quota-copilot.js +12 -10
- package/dist/lib/quota-copilot.js.map +1 -1
- package/dist/lib/stt.js +3 -3
- package/dist/lib/stt.js.map +1 -1
- package/dist/lib/upload.js +14 -5
- package/dist/lib/upload.js.map +1 -1
- package/dist/scripts/i18n-registry.js +4 -4
- package/dist/scripts/i18n-registry.js.map +1 -1
- package/dist/server.js +61 -57
- package/dist/server.js.map +1 -1
- package/dist/src/agent/alert-escalation.js +61 -0
- package/dist/src/agent/alert-escalation.js.map +1 -0
- package/dist/src/agent/args.js +71 -2
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/error-classifier.js +9 -4
- package/dist/src/agent/error-classifier.js.map +1 -1
- package/dist/src/agent/events.js +130 -101
- package/dist/src/agent/events.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +44 -19
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/live-run-state.js +7 -3
- package/dist/src/agent/live-run-state.js.map +1 -1
- package/dist/src/agent/memory-flush-controller.js +6 -4
- package/dist/src/agent/memory-flush-controller.js.map +1 -1
- package/dist/src/agent/opencode-diagnostics.js +7 -6
- package/dist/src/agent/opencode-diagnostics.js.map +1 -1
- package/dist/src/agent/session-persistence.js +1 -1
- package/dist/src/agent/session-persistence.js.map +1 -1
- package/dist/src/agent/spawn-env.js +33 -16
- package/dist/src/agent/spawn-env.js.map +1 -1
- package/dist/src/agent/spawn.js +176 -110
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/agent/watchdog.js +56 -0
- package/dist/src/agent/watchdog.js.map +1 -0
- package/dist/src/browser/actions.js +179 -70
- package/dist/src/browser/actions.js.map +1 -1
- package/dist/src/browser/connection.js +296 -19
- package/dist/src/browser/connection.js.map +1 -1
- package/dist/src/browser/index.js +4 -1
- package/dist/src/browser/index.js.map +1 -1
- package/dist/src/browser/launch-policy.js +1 -1
- package/dist/src/browser/launch-policy.js.map +1 -1
- package/dist/src/browser/primitives.js +11 -7
- package/dist/src/browser/primitives.js.map +1 -1
- package/dist/src/browser/runtime-diagnostics.js +45 -0
- package/dist/src/browser/runtime-diagnostics.js.map +1 -0
- package/dist/src/browser/runtime-orphans.js +127 -0
- package/dist/src/browser/runtime-orphans.js.map +1 -0
- package/dist/src/browser/runtime-owner-store.js +51 -0
- package/dist/src/browser/runtime-owner-store.js.map +1 -0
- package/dist/src/browser/runtime-owner.js +2 -2
- package/dist/src/browser/runtime-owner.js.map +1 -1
- package/dist/src/browser/tab-lifecycle.js +157 -0
- package/dist/src/browser/tab-lifecycle.js.map +1 -0
- package/dist/src/browser/vision.js +35 -11
- package/dist/src/browser/vision.js.map +1 -1
- package/dist/src/browser/web-ai/action-breadth.js +56 -0
- package/dist/src/browser/web-ai/action-breadth.js.map +1 -0
- package/dist/src/browser/web-ai/action-cache.js +9 -8
- package/dist/src/browser/web-ai/action-cache.js.map +1 -1
- package/dist/src/browser/web-ai/action-intent.js +64 -0
- package/dist/src/browser/web-ai/action-intent.js.map +1 -0
- package/dist/src/browser/web-ai/action-memory.js +82 -0
- package/dist/src/browser/web-ai/action-memory.js.map +1 -0
- package/dist/src/browser/web-ai/action-trace.js +11 -6
- package/dist/src/browser/web-ai/action-trace.js.map +1 -1
- package/dist/src/browser/web-ai/annotated-screenshot.js +2 -1
- package/dist/src/browser/web-ai/annotated-screenshot.js.map +1 -1
- package/dist/src/browser/web-ai/answer-artifact.js +97 -0
- package/dist/src/browser/web-ai/answer-artifact.js.map +1 -0
- package/dist/src/browser/web-ai/ax-snapshot.js +3 -2
- package/dist/src/browser/web-ai/ax-snapshot.js.map +1 -1
- package/dist/src/browser/web-ai/browser-primitives.js +10 -7
- package/dist/src/browser/web-ai/browser-primitives.js.map +1 -1
- package/dist/src/browser/web-ai/capability-registry.js +1 -1
- package/dist/src/browser/web-ai/capability-registry.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt-composer.js +12 -12
- package/dist/src/browser/web-ai/chatgpt-composer.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt-model.js +469 -50
- package/dist/src/browser/web-ai/chatgpt-model.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt-response.js +82 -10
- package/dist/src/browser/web-ai/chatgpt-response.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt.js +325 -49
- package/dist/src/browser/web-ai/chatgpt.js.map +1 -1
- package/dist/src/browser/web-ai/churn-log.js +1 -1
- package/dist/src/browser/web-ai/churn-log.js.map +1 -1
- package/dist/src/browser/web-ai/cli-sessions.js +42 -26
- package/dist/src/browser/web-ai/cli-sessions.js.map +1 -1
- package/dist/src/browser/web-ai/context-pack/builder.js +1 -1
- package/dist/src/browser/web-ai/context-pack/builder.js.map +1 -1
- package/dist/src/browser/web-ai/context-pack/file-selector.js +2 -2
- package/dist/src/browser/web-ai/context-pack/file-selector.js.map +1 -1
- package/dist/src/browser/web-ai/context-pack/report.js +1 -1
- package/dist/src/browser/web-ai/context-pack/report.js.map +1 -1
- package/dist/src/browser/web-ai/copy-markdown.js +25 -5
- package/dist/src/browser/web-ai/copy-markdown.js.map +1 -1
- package/dist/src/browser/web-ai/diagnostics.js +17 -14
- package/dist/src/browser/web-ai/diagnostics.js.map +1 -1
- package/dist/src/browser/web-ai/doctor.js +10 -6
- package/dist/src/browser/web-ai/doctor.js.map +1 -1
- package/dist/src/browser/web-ai/dom-hash.js.map +1 -1
- package/dist/src/browser/web-ai/errors.js +5 -22
- package/dist/src/browser/web-ai/errors.js.map +1 -1
- package/dist/src/browser/web-ai/gemini-live.js +7 -6
- package/dist/src/browser/web-ai/gemini-live.js.map +1 -1
- package/dist/src/browser/web-ai/grok-live.js +9 -5
- package/dist/src/browser/web-ai/grok-live.js.map +1 -1
- package/dist/src/browser/web-ai/index.js +5 -0
- package/dist/src/browser/web-ai/index.js.map +1 -1
- package/dist/src/browser/web-ai/observation-bundle.js +90 -0
- package/dist/src/browser/web-ai/observation-bundle.js.map +1 -0
- package/dist/src/browser/web-ai/observe-actions.js +186 -0
- package/dist/src/browser/web-ai/observe-actions.js.map +1 -0
- package/dist/src/browser/web-ai/observe-targets.js +6 -1
- package/dist/src/browser/web-ai/observe-targets.js.map +1 -1
- package/dist/src/browser/web-ai/planner-contract.js +18 -0
- package/dist/src/browser/web-ai/planner-contract.js.map +1 -0
- package/dist/src/browser/web-ai/post-action-assert.js +8 -7
- package/dist/src/browser/web-ai/post-action-assert.js.map +1 -1
- package/dist/src/browser/web-ai/product-surfaces.js +2 -1
- package/dist/src/browser/web-ai/product-surfaces.js.map +1 -1
- package/dist/src/browser/web-ai/provider-adapter.js.map +1 -1
- package/dist/src/browser/web-ai/question.js +14 -7
- package/dist/src/browser/web-ai/question.js.map +1 -1
- package/dist/src/browser/web-ai/ref-registry.js.map +1 -1
- package/dist/src/browser/web-ai/self-heal.js +20 -14
- package/dist/src/browser/web-ai/self-heal.js.map +1 -1
- package/dist/src/browser/web-ai/session-store.js +61 -1
- package/dist/src/browser/web-ai/session-store.js.map +1 -1
- package/dist/src/browser/web-ai/session.js +43 -2
- package/dist/src/browser/web-ai/session.js.map +1 -1
- package/dist/src/browser/web-ai/source-audit.js +116 -0
- package/dist/src/browser/web-ai/source-audit.js.map +1 -0
- package/dist/src/browser/web-ai/tab-finalizer.js +18 -0
- package/dist/src/browser/web-ai/tab-finalizer.js.map +1 -0
- package/dist/src/browser/web-ai/tab-lease-store.js +390 -0
- package/dist/src/browser/web-ai/tab-lease-store.js.map +1 -0
- package/dist/src/browser/web-ai/tab-pool.js +44 -0
- package/dist/src/browser/web-ai/tab-pool.js.map +1 -0
- package/dist/src/browser/web-ai/target-resolver.js +31 -0
- package/dist/src/browser/web-ai/target-resolver.js.map +1 -0
- package/dist/src/browser/web-ai/trace-persistence.js +4 -2
- package/dist/src/browser/web-ai/trace-persistence.js.map +1 -1
- package/dist/src/browser/web-ai/vendor-editor-contract.js.map +1 -1
- package/dist/src/browser/web-ai/watcher.js +8 -7
- package/dist/src/browser/web-ai/watcher.js.map +1 -1
- package/dist/src/cli/acp-client.js +40 -26
- package/dist/src/cli/acp-client.js.map +1 -1
- package/dist/src/cli/command-context.js +3 -3
- package/dist/src/cli/command-context.js.map +1 -1
- package/dist/src/cli/commands.js +25 -16
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/compact.js.map +1 -1
- package/dist/src/cli/handlers-completions.js +6 -4
- package/dist/src/cli/handlers-completions.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +45 -38
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers.js +44 -36
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/readiness.js +3 -1
- package/dist/src/cli/readiness.js.map +1 -1
- package/dist/src/cli/registry.js +1 -1
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +4 -1
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/cli/types.js +4 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/command-contract/catalog.js +1 -1
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/command-contract/help-renderer.js +1 -1
- package/dist/src/command-contract/help-renderer.js.map +1 -1
- package/dist/src/core/browser-open-default.js +13 -0
- package/dist/src/core/browser-open-default.js.map +1 -0
- package/dist/src/core/browser-open.js +41 -0
- package/dist/src/core/browser-open.js.map +1 -0
- package/dist/src/core/bus.js +13 -2
- package/dist/src/core/bus.js.map +1 -1
- package/dist/src/core/compact.js +5 -4
- package/dist/src/core/compact.js.map +1 -1
- package/dist/src/core/config.js +51 -52
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +48 -6
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/employees.js +9 -8
- package/dist/src/core/employees.js.map +1 -1
- package/dist/src/core/instance.js +7 -6
- package/dist/src/core/instance.js.map +1 -1
- package/dist/src/core/logger.js +1 -1
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/main-session.js +7 -7
- package/dist/src/core/main-session.js.map +1 -1
- package/dist/src/core/path-expand.js +10 -0
- package/dist/src/core/path-expand.js.map +1 -0
- package/dist/src/core/runtime-path.js +1 -1
- package/dist/src/core/runtime-path.js.map +1 -1
- package/dist/src/core/runtime-settings.js +13 -13
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/settings-merge.js +14 -14
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/core/strip-undefined.js +13 -0
- package/dist/src/core/strip-undefined.js.map +1 -0
- package/dist/src/core/tcc.js +1 -1
- package/dist/src/core/tcc.js.map +1 -1
- package/dist/src/discord/bot.js +19 -18
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/channel-types.js +14 -0
- package/dist/src/discord/channel-types.js.map +1 -0
- package/dist/src/discord/commands.js +7 -6
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/discord-file.js.map +1 -1
- package/dist/src/discord/forwarder.js +3 -3
- package/dist/src/discord/forwarder.js.map +1 -1
- package/dist/src/http/error-middleware.js +3 -3
- package/dist/src/http/error-middleware.js.map +1 -1
- package/dist/src/http/response.js +2 -2
- package/dist/src/http/response.js.map +1 -1
- package/dist/src/ide/diff.js +7 -7
- package/dist/src/ide/diff.js.map +1 -1
- package/dist/src/manager/board/routes.js +28 -27
- package/dist/src/manager/board/routes.js.map +1 -1
- package/dist/src/manager/dashboard-home.js +3 -5
- package/dist/src/manager/dashboard-home.js.map +1 -1
- package/dist/src/manager/dashboard-service.js +2 -2
- package/dist/src/manager/dashboard-service.js.map +1 -1
- package/dist/src/manager/health-history.js +10 -9
- package/dist/src/manager/health-history.js.map +1 -1
- package/dist/src/manager/launchd-service.js +2 -2
- package/dist/src/manager/launchd-service.js.map +1 -1
- package/dist/src/manager/lifecycle-helpers.js +7 -6
- package/dist/src/manager/lifecycle-helpers.js.map +1 -1
- package/dist/src/manager/lifecycle.js +7 -6
- package/dist/src/manager/lifecycle.js.map +1 -1
- package/dist/src/manager/logs.js +18 -18
- package/dist/src/manager/logs.js.map +1 -1
- package/dist/src/manager/metadata.js +10 -2
- package/dist/src/manager/metadata.js.map +1 -1
- package/dist/src/manager/notes/assets.js +216 -0
- package/dist/src/manager/notes/assets.js.map +1 -0
- package/dist/src/manager/notes/capabilities.js +56 -0
- package/dist/src/manager/notes/capabilities.js.map +1 -0
- package/dist/src/manager/notes/constants.js +11 -0
- package/dist/src/manager/notes/constants.js.map +1 -0
- package/dist/src/manager/notes/frontmatter.js +120 -0
- package/dist/src/manager/notes/frontmatter.js.map +1 -0
- package/dist/src/manager/notes/link-resolver.js +96 -0
- package/dist/src/manager/notes/link-resolver.js.map +1 -0
- package/dist/src/manager/notes/path-guards.js +4 -0
- package/dist/src/manager/notes/path-guards.js.map +1 -1
- package/dist/src/manager/notes/remote-assets.js +128 -0
- package/dist/src/manager/notes/remote-assets.js.map +1 -0
- package/dist/src/manager/notes/routes.js +63 -13
- package/dist/src/manager/notes/routes.js.map +1 -1
- package/dist/src/manager/notes/store.js +3 -2
- package/dist/src/manager/notes/store.js.map +1 -1
- package/dist/src/manager/notes/system-trash.js +3 -3
- package/dist/src/manager/notes/system-trash.js.map +1 -1
- package/dist/src/manager/notes/vault-index.js +220 -0
- package/dist/src/manager/notes/vault-index.js.map +1 -0
- package/dist/src/manager/notes/watcher.js +27 -0
- package/dist/src/manager/notes/watcher.js.map +1 -0
- package/dist/src/manager/notes/wiki-links.js +109 -0
- package/dist/src/manager/notes/wiki-links.js.map +1 -0
- package/dist/src/manager/process-verify.js +29 -0
- package/dist/src/manager/process-verify.js.map +1 -1
- package/dist/src/manager/profiles.js +3 -2
- package/dist/src/manager/profiles.js.map +1 -1
- package/dist/src/manager/registry.js +60 -58
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/electron-metrics.js +22 -22
- package/dist/src/manager/routes/electron-metrics.js.map +1 -1
- package/dist/src/manager/scan.js +2 -2
- package/dist/src/manager/scan.js.map +1 -1
- package/dist/src/manager/schedule/routes.js +24 -23
- package/dist/src/manager/schedule/routes.js.map +1 -1
- package/dist/src/manager/server.js +28 -28
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/manager/systemd-service.js +1 -1
- package/dist/src/manager/systemd-service.js.map +1 -1
- package/dist/src/memory/bootstrap.js +5 -4
- package/dist/src/memory/bootstrap.js.map +1 -1
- package/dist/src/memory/heartbeat-schedule.js +10 -10
- package/dist/src/memory/heartbeat-schedule.js.map +1 -1
- package/dist/src/memory/heartbeat.js +23 -22
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/memory/indexing.js.map +1 -1
- package/dist/src/memory/keyword-expand.js +1 -1
- package/dist/src/memory/keyword-expand.js.map +1 -1
- package/dist/src/memory/memory.js +2 -2
- package/dist/src/memory/memory.js.map +1 -1
- package/dist/src/memory/runtime.js +6 -5
- package/dist/src/memory/runtime.js.map +1 -1
- package/dist/src/memory/shared.js +2 -1
- package/dist/src/memory/shared.js.map +1 -1
- package/dist/src/memory/worklog.js +1 -1
- package/dist/src/memory/worklog.js.map +1 -1
- package/dist/src/messaging/runtime.js +13 -10
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send.js +16 -15
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/orchestrator/collect.js +6 -6
- package/dist/src/orchestrator/collect.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +112 -77
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +6 -5
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +42 -42
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +3 -3
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/worker-registry.js +4 -3
- package/dist/src/orchestrator/worker-registry.js.map +1 -1
- package/dist/src/prompt/builder.js +24 -19
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +15 -10
- package/dist/src/prompt/templates/control-system.md +9 -7
- package/dist/src/prompt/templates/employee.md +5 -4
- package/dist/src/prompt/templates/vision-click.md +1 -1
- package/dist/src/routes/_http-error.js +15 -0
- package/dist/src/routes/_http-error.js.map +1 -0
- package/dist/src/routes/avatar.js +6 -5
- package/dist/src/routes/avatar.js.map +1 -1
- package/dist/src/routes/browser.js +132 -45
- package/dist/src/routes/browser.js.map +1 -1
- package/dist/src/routes/employees.js +28 -21
- package/dist/src/routes/employees.js.map +1 -1
- package/dist/src/routes/heartbeat.js +12 -9
- package/dist/src/routes/heartbeat.js.map +1 -1
- package/dist/src/routes/i18n.js +13 -7
- package/dist/src/routes/i18n.js.map +1 -1
- package/dist/src/routes/jaw-memory.js +15 -11
- package/dist/src/routes/jaw-memory.js.map +1 -1
- package/dist/src/routes/memory.js +25 -20
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/messaging.js +50 -29
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +38 -24
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/quota.js +81 -17
- package/dist/src/routes/quota.js.map +1 -1
- package/dist/src/routes/settings.js +28 -18
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/skills.js +22 -13
- package/dist/src/routes/skills.js.map +1 -1
- package/dist/src/routes/traces.js +77 -0
- package/dist/src/routes/traces.js.map +1 -0
- package/dist/src/security/path-guards.js +2 -1
- package/dist/src/security/path-guards.js.map +1 -1
- package/dist/src/shared/tool-log-sanitize.js +191 -0
- package/dist/src/shared/tool-log-sanitize.js.map +1 -0
- package/dist/src/telegram/bot.js +65 -55
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/forwarder.js +5 -9
- package/dist/src/telegram/forwarder.js.map +1 -1
- package/dist/src/telegram/telegram-file.js +28 -24
- package/dist/src/telegram/telegram-file.js.map +1 -1
- package/dist/src/telegram/voice.js +4 -3
- package/dist/src/telegram/voice.js.map +1 -1
- package/dist/src/trace/redact.js +50 -0
- package/dist/src/trace/redact.js.map +1 -0
- package/dist/src/trace/store.js +162 -0
- package/dist/src/trace/store.js.map +1 -0
- package/dist/src/trace/types.js +2 -0
- package/dist/src/trace/types.js.map +1 -0
- package/dist/src/types/cli-engine.js +34 -0
- package/dist/src/types/cli-engine.js.map +1 -0
- package/dist/src/types/cli-events.js +31 -0
- package/dist/src/types/cli-events.js.map +1 -0
- package/package.json +22 -2
- package/public/css/tool-ui.css +3 -1
- package/public/css/trace-drawer.css +48 -0
- package/public/dist/assets/{AdvancedExport-3WAYIabE.js → AdvancedExport-DJZ2VmBR.js} +1 -1
- package/public/dist/assets/Agent-CgpLT8IY.js +1 -0
- package/public/dist/assets/Browser-CrkiQoB8.js +1 -0
- package/public/dist/assets/{ChannelsDiscord-UzFPlWT4.js → ChannelsDiscord-CVUC22D4.js} +1 -1
- package/public/dist/assets/{ChannelsTelegram-DNWtPX0w.js → ChannelsTelegram-DEatIQNM.js} +1 -1
- package/public/dist/assets/{DashboardMeta-Y_6nVeJO.js → DashboardMeta-BKoxRc7i.js} +1 -1
- package/public/dist/assets/{Display-D8vGOl4s.js → Display-DnNGV9Km.js} +1 -1
- package/public/dist/assets/{Employees-YR_sIRK4.js → Employees-DZ2iJYKy.js} +1 -1
- package/public/dist/assets/{HealthBadge-CPePajyU.js → HealthBadge-Cq2c7G9s.js} +1 -1
- package/public/dist/assets/{Heartbeat-DTpAULQR.js → Heartbeat-BML6eTXZ.js} +1 -1
- package/public/dist/assets/{Mcp-DM-PgG6z.js → Mcp-BlEviQ3h.js} +1 -1
- package/public/dist/assets/{Memory-C_LvJnkn.js → Memory-BRyH80He.js} +1 -1
- package/public/dist/assets/MilkdownWysiwygEditor-Cm3uXfWf.js +52 -0
- package/public/dist/assets/ModelProvider-DxyR7EL9.js +1 -0
- package/public/dist/assets/Network-DDOOESh1.js +1 -0
- package/public/dist/assets/{Permissions-B1naJjjw.js → Permissions-Br0eSbKb.js} +1 -1
- package/public/dist/assets/{Permissions-BKffrMJD.js → Permissions-QHkzStqQ.js} +1 -1
- package/public/dist/assets/{Profile-DIqjSe2C.js → Profile-C79NKumk.js} +1 -1
- package/public/dist/assets/{Prompts-BMfbV6Y4.js → Prompts-BmiIDiXW.js} +1 -1
- package/public/dist/assets/{SpeechKeys-DjiQTzSL.js → SpeechKeys-B8304XJK.js} +1 -1
- package/public/dist/assets/app-Be58Cs3Y.js +32 -0
- package/public/dist/assets/{app-BzvwJJiv.css → app-CphocJzo.css} +1 -1
- package/public/dist/assets/{dist-DTvxN3ux.js → dist-BD0UXfgF2.js} +1 -1
- package/public/dist/assets/{dist-CASeq-Tl.js → dist-BNfXO3Yr.js} +1 -1
- package/public/dist/assets/{dist-BMPiaUzF.js → dist-BUnPYbK3.js} +1 -1
- package/public/dist/assets/{dist-CT_X3hVT.js → dist-BZosRD2u.js} +1 -1
- package/public/dist/assets/{dist-4J6YbNXv.js → dist-Bd9PlnQm.js} +1 -1
- package/public/dist/assets/{dist-BcZjyn5g.js → dist-BsT5UdNP.js} +1 -1
- package/public/dist/assets/{dist-BfBhOPR-.js → dist-CIuXW-sc.js} +1 -1
- package/public/dist/assets/{dist-BMiCig3A2.js → dist-CL4PTYWf.js} +1 -1
- package/public/dist/assets/{dist-VyP6-HLb.js → dist-Ch5VAlV9.js} +1 -1
- package/public/dist/assets/dist-ClqO40BE.js +1 -0
- package/public/dist/assets/{dist-c98Tp7bP.js → dist-Cp42cMcI.js} +1 -1
- package/public/dist/assets/{dist-CIlYL1qe.js → dist-CpUK8ypo.js} +1 -1
- package/public/dist/assets/dist-CxeLAw2Y.js +1 -0
- package/public/dist/assets/dist-D2SH8nxa.js +1 -0
- package/public/dist/assets/{dist-84fwQ7bO.js → dist-D6cUXP7K.js} +1 -1
- package/public/dist/assets/{dist-BOCcQAyF.js → dist-D7bCuS3f.js} +1 -1
- package/public/dist/assets/{dist-DMmpfLVP.js → dist-DFYRUAjN.js} +1 -1
- package/public/dist/assets/{dist-DdY6pTJr.js → dist-DZsFVYF4.js} +1 -1
- package/public/dist/assets/{dist-B0p3Eyme.js → dist-Db16ogVk.js} +1 -1
- package/public/dist/assets/{dist-DlnNtr6L.js → dist-DfodGES_.js} +1 -1
- package/public/dist/assets/{dist-DO9so2a2.js → dist-SU-YTAIg.js} +1 -1
- package/public/dist/assets/{dist-DUjXiMLP.js → dist-UYn7T-GH.js} +1 -1
- package/public/dist/assets/{dist-BW1409rz.js → dist-W51oDoeA.js} +1 -1
- package/public/dist/assets/{dist-BimBQZx1.js → dist-eU7TyC86.js} +1 -1
- package/public/dist/assets/dist-l9HH00ip.js +1 -0
- package/public/dist/assets/{dist-BrOPNxdH.js → dist-urPTQzXL.js} +1 -1
- package/public/dist/assets/{dist-AloEV3J52.js → dist-yHP6L0Ty.js} +1 -1
- package/public/dist/assets/{employees-Bbabvbyx.js → employees-CxdghzoD.js} +7 -7
- package/public/dist/assets/{error-normalize-DdvKGLt_.js → error-normalize-5n-zlEQ3.js} +1 -1
- package/public/dist/assets/insert-image-markdown-DIEa-zjk.js +22 -0
- package/public/dist/assets/{manager-DyB2ZUr9.css → manager-DEiyrWDP.css} +1 -1
- package/public/dist/assets/manager-UEXd1_9T.js +25 -0
- package/public/dist/assets/{memory-B_plvcuQ.js → memory-CsMNkYtv.js} +9 -9
- package/public/dist/assets/memory-DXad_DPO.js +1 -0
- package/public/dist/assets/{page-shell-DML_HneX.js → page-shell-D5tbivHH.js} +1 -1
- package/public/dist/assets/{render-DEhbfUAW.js → render-DGQX46ei.js} +2 -2
- package/public/dist/assets/{settings-D7F-_kYG.js → settings-BH213Yv3.js} +14 -14
- package/public/dist/assets/settings-DXT87G2U.js +1 -0
- package/public/dist/assets/settings-client-ajlwI-oK.js +1 -0
- package/public/dist/assets/skills-5o_1v0nz.js +1 -0
- package/public/dist/assets/{skills-DoGJOc0D.js → skills-CQtCtHPA.js} +6 -6
- package/public/dist/assets/slash-commands-D4-hrrmh.js +1 -0
- package/public/dist/assets/{slash-commands-khNFPOyF.js → slash-commands-Dzk1xHWS.js} +1 -1
- package/public/dist/assets/trace-drawer-SRKcfm2S.js +15 -0
- package/public/dist/assets/ui-CdRKN2S6.js +141 -0
- package/public/dist/assets/ui-n43jmg_f.js +1 -0
- package/public/dist/assets/{ws-B2aJ-nD2.js → ws-CTHQFzM1.js} +8 -8
- package/public/dist/index.html +2 -2
- package/public/dist/manager/index.html +2 -2
- package/public/index.html +1 -0
- package/public/js/constants.ts +5 -5
- package/public/js/diagram/iframe-renderer.ts +11 -11
- package/public/js/features/chat.ts +1 -1
- package/public/js/features/memory.ts +10 -10
- package/public/js/features/pending-queue.ts +2 -2
- package/public/js/features/process-block.ts +257 -29
- package/public/js/features/process-step-match.ts +18 -0
- package/public/js/features/settings-cli-status.ts +1 -1
- package/public/js/features/settings-stt.ts +37 -11
- package/public/js/features/settings-templates.ts +2 -2
- package/public/js/features/slash-commands.ts +1 -1
- package/public/js/features/tool-ui.ts +13 -7
- package/public/js/features/trace-drawer.ts +122 -0
- package/public/js/icons.ts +1 -1
- package/public/js/main.ts +28 -28
- package/public/js/provider-icons.ts +1 -1
- package/public/js/render.ts +29 -27
- package/public/js/sanitizer.ts +4 -0
- package/public/js/ui.ts +234 -68
- package/public/js/virtual-scroll.ts +19 -33
- package/public/js/ws.ts +22 -10
- package/public/manager/src/App.tsx +34 -6
- package/public/manager/src/api.ts +55 -1
- package/public/manager/src/components/ActivityTimeline.tsx +1 -1
- package/public/manager/src/components/InstanceDetailPanel.tsx +2 -2
- package/public/manager/src/components/InstanceGroups.tsx +5 -5
- package/public/manager/src/components/InstanceListContent.tsx +1 -1
- package/public/manager/src/dashboard-features.ts +1 -1
- package/public/manager/src/manager-notes.css +49 -2
- package/public/manager/src/notes/MarkdownEditor.tsx +7 -3
- package/public/manager/src/notes/NotesFileTree.tsx +45 -6
- package/public/manager/src/notes/NotesSidebar.tsx +24 -55
- package/public/manager/src/notes/NotesWorkspace.tsx +50 -3
- package/public/manager/src/notes/image-assets/clipboard-images.ts +100 -0
- package/public/manager/src/notes/image-assets/insert-image-markdown.ts +85 -0
- package/public/manager/src/notes/notes-api.ts +2 -0
- package/public/manager/src/notes/notes-types.ts +8 -1
- package/public/manager/src/notes/rendering/MarkdownRenderer.tsx +6 -0
- package/public/manager/src/notes/rendering/markdown-render-security.ts +19 -1
- package/public/manager/src/notes/rich-markdown/paste-policy.ts +6 -2
- package/public/manager/src/notes/rich-markdown/rich-markdown-extension.ts +5 -5
- package/public/manager/src/notes/rich-markdown/rich-widget.ts +8 -8
- package/public/manager/src/notes/useNotesExternalSync.ts +37 -0
- package/public/manager/src/notes/useNotesModel.ts +91 -0
- package/public/manager/src/notes/wysiwyg/MilkdownWysiwygEditor.tsx +157 -17
- package/public/manager/src/notes/wysiwyg/milkdown-block-keymap.ts +14 -2
- package/public/manager/src/notes/wysiwyg/milkdown-code-block-view.ts +20 -20
- package/public/manager/src/notes/wysiwyg/milkdown-heading-source-view.ts +8 -8
- package/public/manager/src/notes/wysiwyg/milkdown-math.ts +25 -25
- package/public/manager/src/settings/pages/Browser.tsx +38 -20
- package/public/manager/src/settings/pages/ModelProvider.tsx +11 -9
- package/public/manager/src/settings/pages/Network.tsx +10 -10
- package/public/manager/src/settings/pages/components/HealthBadge.tsx +12 -12
- package/public/manager/src/settings/pages/components/agent/runtime-employees-helpers.ts +12 -10
- package/public/manager/src/settings/pages/components/employees-helpers.ts +9 -9
- package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +13 -13
- package/public/manager/src/settings/pages/components/memory-helpers.ts +4 -4
- package/public/manager/src/settings/pages/mcp-helpers.ts +7 -7
- package/public/manager/src/settings/settings-client.ts +4 -3
- package/public/manager/src/sync/IframeBridge.tsx +29 -0
- package/public/manager/src/sync/VisibilityBridge.tsx +24 -0
- package/public/manager/src/sync/invalidation-bus.ts +30 -0
- package/public/manager/src/sync/useInvalidationSubscription.ts +19 -0
- package/public/manager/src/types.ts +101 -0
- package/scripts/check-strict-baseline.mjs +255 -0
- package/scripts/claim-audit.mjs +159 -0
- package/scripts/i18n-registry.ts +4 -4
- package/scripts/install-officecli.sh +2 -2
- package/scripts/install-wsl.sh +2 -1
- package/scripts/release-gates.mjs +347 -0
- package/scripts/release-preview.sh +3 -0
- package/scripts/release.sh +4 -0
- package/scripts/smoke/opencode-external-dir-smoke.ts +14 -5
- package/public/dist/assets/Agent-BYdzZwD0.js +0 -1
- package/public/dist/assets/Browser-CkGeczuN.js +0 -1
- package/public/dist/assets/MilkdownWysiwygEditor-B7k9bAey.js +0 -52
- package/public/dist/assets/ModelProvider-CX3Qhowu.js +0 -1
- package/public/dist/assets/Network-DfPLFAvw.js +0 -1
- package/public/dist/assets/app-DLYoRkU9.js +0 -32
- package/public/dist/assets/dist-8zNAQAIa.js +0 -1
- package/public/dist/assets/dist-BgeY6nvK.js +0 -1
- package/public/dist/assets/dist-BzDGGxHQ.js +0 -1
- package/public/dist/assets/dist-D3YKbVi-.js +0 -1
- package/public/dist/assets/manager-CUSgFbMO.js +0 -25
- package/public/dist/assets/markdown-render-security-DJfJPWO-.js +0 -22
- package/public/dist/assets/memory-DQ6dU0qs.js +0 -1
- package/public/dist/assets/settings-DxLPUbpj.js +0 -1
- package/public/dist/assets/settings-client-CGf3uPPf.js +0 -1
- package/public/dist/assets/skills-yMfNYJ8m.js +0 -1
- package/public/dist/assets/slash-commands-CZcwr1W6.js +0 -1
- package/public/dist/assets/ui-04YlOMgn.js +0 -136
- package/public/dist/assets/ui-D6hlMjRq.js +0 -1
- /package/public/dist/assets/{InlineWarn-CqgWEC41.js → InlineWarn-BooBRm7o.js} +0 -0
- /package/public/dist/assets/{agent-meta-puNn13DV.js → agent-meta-DHddpWHQ.js} +0 -0
- /package/public/dist/assets/{fields-DH9JS3mb.js → fields-BtncIZYA.js} +0 -0
- /package/public/dist/assets/{mermaid-loader-6XC0y10y.js → mermaid-loader-BEFIOoJn.js} +0 -0
- /package/public/dist/assets/{path-utils-CtsDDGZg.js → path-utils-BuEEtj9w.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-VSld09PZ.js → w3c-keyname-IiiZScED.js} +0 -0
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { JAW_HOME, deriveCdpPort, settings } from '../core/config.js';
|
|
2
|
+
import { stripUndefined } from '../core/strip-undefined.js';
|
|
2
3
|
import { execFile, spawn } from 'node:child_process';
|
|
3
4
|
import { join } from 'path';
|
|
4
5
|
import fs from 'node:fs';
|
|
5
6
|
import net from 'node:net';
|
|
6
7
|
import { chromium } from 'playwright-core';
|
|
7
8
|
import { resolveLaunchPolicy } from './launch-policy.js';
|
|
9
|
+
import os from 'node:os';
|
|
8
10
|
import { browserReaperIntervalMs, createEmptyBrowserRuntime, createExternalBrowserRuntime, createJawOwnedBrowserRuntime, decideBrowserCloseAction, shouldCloseIdleRuntime, } from './runtime-owner.js';
|
|
11
|
+
import { clearDurableBrowserRuntimeOwner, writeDurableBrowserRuntimeOwner } from './runtime-owner-store.js';
|
|
9
12
|
const PROFILE_DIR = join(JAW_HOME, 'browser-profile');
|
|
13
|
+
const TAB_ACTIVITY_FILE = join(JAW_HOME, 'browser-tab-activity.json');
|
|
10
14
|
let cached = null;
|
|
11
15
|
let chromeProc = null;
|
|
12
16
|
let activePort = null;
|
|
@@ -15,12 +19,72 @@ let activeCommandCount = 0;
|
|
|
15
19
|
let idleReaper = null;
|
|
16
20
|
let verifiedActiveTargetId = null;
|
|
17
21
|
let browserStateVersion = 0;
|
|
22
|
+
const tabActivity = new Map();
|
|
23
|
+
let tabActivityLoaded = false;
|
|
24
|
+
function isRecord(value) {
|
|
25
|
+
return Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
26
|
+
}
|
|
27
|
+
function errorMessage(error) {
|
|
28
|
+
return error instanceof Error ? error.message : String(error ?? '');
|
|
29
|
+
}
|
|
30
|
+
function requireTargetId(value) {
|
|
31
|
+
if (isRecord(value) && typeof value["targetId"] === 'string')
|
|
32
|
+
return { targetId: value["targetId"] };
|
|
33
|
+
throw new Error('CDP response missing targetId');
|
|
34
|
+
}
|
|
35
|
+
function targetInfoMatches(value, targetId) {
|
|
36
|
+
if (!isRecord(value) || !isRecord(value["targetInfo"]))
|
|
37
|
+
return false;
|
|
38
|
+
return value["targetInfo"]["targetId"] === targetId;
|
|
39
|
+
}
|
|
18
40
|
export function markBrowserStateChanged() {
|
|
19
41
|
browserStateVersion++;
|
|
20
42
|
}
|
|
21
43
|
export function getBrowserStateVersion() {
|
|
22
44
|
return browserStateVersion;
|
|
23
45
|
}
|
|
46
|
+
function loadTabActivity() {
|
|
47
|
+
if (tabActivityLoaded)
|
|
48
|
+
return;
|
|
49
|
+
tabActivityLoaded = true;
|
|
50
|
+
if (!fs.existsSync(TAB_ACTIVITY_FILE))
|
|
51
|
+
return;
|
|
52
|
+
try {
|
|
53
|
+
const parsed = JSON.parse(fs.readFileSync(TAB_ACTIVITY_FILE, 'utf8'));
|
|
54
|
+
for (const [targetId, lastActiveAt] of Object.entries(parsed.tabs || {})) {
|
|
55
|
+
if (targetId && Number.isFinite(lastActiveAt))
|
|
56
|
+
tabActivity.set(targetId, lastActiveAt);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
tabActivity.clear();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function saveTabActivity() {
|
|
64
|
+
fs.mkdirSync(JAW_HOME, { recursive: true });
|
|
65
|
+
fs.writeFileSync(TAB_ACTIVITY_FILE, `${JSON.stringify({ tabs: Object.fromEntries(tabActivity.entries()) }, null, 2)}\n`);
|
|
66
|
+
}
|
|
67
|
+
export function markTabActive(targetId, at = Date.now()) {
|
|
68
|
+
if (!targetId)
|
|
69
|
+
return null;
|
|
70
|
+
loadTabActivity();
|
|
71
|
+
tabActivity.set(targetId, at);
|
|
72
|
+
saveTabActivity();
|
|
73
|
+
return at;
|
|
74
|
+
}
|
|
75
|
+
export function forgetTabActivity(targetId) {
|
|
76
|
+
if (!targetId)
|
|
77
|
+
return;
|
|
78
|
+
loadTabActivity();
|
|
79
|
+
tabActivity.delete(targetId);
|
|
80
|
+
saveTabActivity();
|
|
81
|
+
}
|
|
82
|
+
export function getTabActivity(targetId) {
|
|
83
|
+
if (!targetId)
|
|
84
|
+
return null;
|
|
85
|
+
loadTabActivity();
|
|
86
|
+
return tabActivity.get(targetId) || null;
|
|
87
|
+
}
|
|
24
88
|
/** Check if a port is already listening via TCP connect */
|
|
25
89
|
function isPortListening(port, host = '127.0.0.1') {
|
|
26
90
|
return new Promise(resolve => {
|
|
@@ -46,6 +110,28 @@ async function waitForCdpReady(port, timeoutMs = 10000) {
|
|
|
46
110
|
}
|
|
47
111
|
return false;
|
|
48
112
|
}
|
|
113
|
+
async function resetStaleChromeProcIfCdpUnavailable(port) {
|
|
114
|
+
if (!chromeProc || chromeProc.killed)
|
|
115
|
+
return false;
|
|
116
|
+
if (await waitForCdpReady(port, 1000))
|
|
117
|
+
return false;
|
|
118
|
+
try {
|
|
119
|
+
chromeProc.kill('SIGTERM');
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// The process may have already exited between the killed check and SIGTERM.
|
|
123
|
+
}
|
|
124
|
+
chromeProc = null;
|
|
125
|
+
if (runtimeOwner?.ownership === 'jaw-owned') {
|
|
126
|
+
clearDurableBrowserRuntimeOwner(runtimeOwner);
|
|
127
|
+
runtimeOwner = null;
|
|
128
|
+
activePort = null;
|
|
129
|
+
verifiedActiveTargetId = null;
|
|
130
|
+
disconnectLocalBrowserCache();
|
|
131
|
+
markBrowserStateChanged();
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
49
135
|
function isWSL() {
|
|
50
136
|
if (process.platform !== 'linux')
|
|
51
137
|
return false;
|
|
@@ -60,12 +146,12 @@ function findChrome() {
|
|
|
60
146
|
const platform = process.platform;
|
|
61
147
|
const paths = [];
|
|
62
148
|
if (platform === 'darwin') {
|
|
63
|
-
paths.push('/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '/Applications/Chromium.app/Contents/MacOS/Chromium', '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser', `${
|
|
149
|
+
paths.push('/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '/Applications/Chromium.app/Contents/MacOS/Chromium', '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser', `${os.homedir()}/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`);
|
|
64
150
|
}
|
|
65
151
|
else if (platform === 'win32') {
|
|
66
|
-
const pf = process.env
|
|
152
|
+
const pf = process.env["PROGRAMFILES"] || 'C:\\Program Files';
|
|
67
153
|
const pf86 = process.env['PROGRAMFILES(X86)'] || 'C:\\Program Files (x86)';
|
|
68
|
-
const local = process.env
|
|
154
|
+
const local = process.env["LOCALAPPDATA"] || '';
|
|
69
155
|
paths.push(`${pf}\\Google\\Chrome\\Application\\chrome.exe`, `${pf86}\\Google\\Chrome\\Application\\chrome.exe`, `${local}\\Google\\Chrome\\Application\\chrome.exe`, `${pf}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe`);
|
|
70
156
|
}
|
|
71
157
|
else {
|
|
@@ -107,8 +193,35 @@ export async function withBrowserActivity(fn) {
|
|
|
107
193
|
}
|
|
108
194
|
}
|
|
109
195
|
function readProcessCommandLine(pid) {
|
|
110
|
-
if (process.platform === 'win32')
|
|
111
|
-
|
|
196
|
+
if (process.platform === 'win32') {
|
|
197
|
+
const pidText = String(Math.trunc(pid));
|
|
198
|
+
return new Promise((resolve) => {
|
|
199
|
+
execFile('powershell.exe', [
|
|
200
|
+
'-NoProfile',
|
|
201
|
+
'-NonInteractive',
|
|
202
|
+
'-Command',
|
|
203
|
+
`(Get-CimInstance Win32_Process -Filter "ProcessId = ${pidText}").CommandLine`,
|
|
204
|
+
], (psError, psStdout) => {
|
|
205
|
+
const psCommand = psStdout.trim();
|
|
206
|
+
if (!psError && psCommand) {
|
|
207
|
+
resolve(psCommand);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
execFile('wmic.exe', ['process', 'where', `ProcessId=${pidText}`, 'get', 'CommandLine', '/value'], (wmicError, wmicStdout) => {
|
|
211
|
+
if (wmicError) {
|
|
212
|
+
resolve(null);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const command = wmicStdout
|
|
216
|
+
.split(/\r?\n/)
|
|
217
|
+
.find((line) => line.startsWith('CommandLine='))
|
|
218
|
+
?.slice('CommandLine='.length)
|
|
219
|
+
.trim();
|
|
220
|
+
resolve(command || null);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
112
225
|
if (process.platform === 'linux') {
|
|
113
226
|
try {
|
|
114
227
|
return Promise.resolve(fs.readFileSync(`/proc/${pid}/cmdline`, 'utf8').replace(/\0/g, ' ').trim());
|
|
@@ -132,8 +245,6 @@ async function isRecordedChromeStillOwned(owner) {
|
|
|
132
245
|
return false;
|
|
133
246
|
if (!owner.pid || !owner.port || !owner.userDataDir)
|
|
134
247
|
return false;
|
|
135
|
-
if (process.platform === 'win32')
|
|
136
|
-
return false;
|
|
137
248
|
const command = await readProcessCommandLine(owner.pid);
|
|
138
249
|
if (!command)
|
|
139
250
|
return false;
|
|
@@ -169,6 +280,7 @@ async function closeOwnedChrome(reason) {
|
|
|
169
280
|
}
|
|
170
281
|
}
|
|
171
282
|
chromeProc = null;
|
|
283
|
+
clearDurableBrowserRuntimeOwner(owner);
|
|
172
284
|
runtimeOwner = null;
|
|
173
285
|
activePort = null;
|
|
174
286
|
verifiedActiveTargetId = null;
|
|
@@ -211,17 +323,20 @@ export async function launchChrome(port = deriveCdpPort(), opts = {}) {
|
|
|
211
323
|
`Another process may be occupying the port. Try --port <other> or stop the conflicting process.`);
|
|
212
324
|
}
|
|
213
325
|
}
|
|
214
|
-
if (chromeProc && !chromeProc.killed)
|
|
215
|
-
|
|
216
|
-
|
|
326
|
+
if (chromeProc && !chromeProc.killed) {
|
|
327
|
+
const reset = await resetStaleChromeProcIfCdpUnavailable(port);
|
|
328
|
+
if (!reset)
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const launchPolicy = resolveLaunchPolicy(stripUndefined({
|
|
217
332
|
mode: opts.mode,
|
|
218
333
|
headless: opts.headless,
|
|
219
|
-
});
|
|
334
|
+
}));
|
|
220
335
|
if (!launchPolicy.allowLaunch) {
|
|
221
336
|
throw new Error(launchPolicy.denyReason || 'Browser launch denied by policy');
|
|
222
337
|
}
|
|
223
338
|
const chrome = findChrome();
|
|
224
|
-
const noSandbox = process.env
|
|
339
|
+
const noSandbox = process.env["CHROME_NO_SANDBOX"] === '1';
|
|
225
340
|
const headless = launchPolicy.headless;
|
|
226
341
|
// Minimum window size to prevent responsive layout shifts
|
|
227
342
|
// that cause Playwright "element is not stable" errors
|
|
@@ -243,12 +358,14 @@ export async function launchChrome(port = deriveCdpPort(), opts = {}) {
|
|
|
243
358
|
const ready = await waitForCdpReady(port);
|
|
244
359
|
if (ready) {
|
|
245
360
|
activePort = port;
|
|
246
|
-
|
|
361
|
+
const owner = createJawOwnedBrowserRuntime({
|
|
247
362
|
port,
|
|
248
363
|
pid: chromeProc.pid ?? null,
|
|
249
364
|
userDataDir: PROFILE_DIR,
|
|
250
365
|
headless,
|
|
251
366
|
});
|
|
367
|
+
runtimeOwner = owner;
|
|
368
|
+
writeDurableBrowserRuntimeOwner(owner);
|
|
252
369
|
ensureIdleReaperStarted();
|
|
253
370
|
}
|
|
254
371
|
else {
|
|
@@ -265,7 +382,7 @@ export async function launchChrome(port = deriveCdpPort(), opts = {}) {
|
|
|
265
382
|
}
|
|
266
383
|
/** Resolve effective CDP port: activePort > settings.browser.cdpPort > deriveCdpPort() */
|
|
267
384
|
export function getActivePort() {
|
|
268
|
-
return activePort || settings
|
|
385
|
+
return activePort || settings["browser"]?.cdpPort || deriveCdpPort();
|
|
269
386
|
}
|
|
270
387
|
export async function connectCdp(port = getActivePort(), retries = 3) {
|
|
271
388
|
const cdpUrl = `http://127.0.0.1:${port}`;
|
|
@@ -291,7 +408,7 @@ export async function connectCdp(port = getActivePort(), retries = 3) {
|
|
|
291
408
|
}
|
|
292
409
|
export async function getActivePage(port = getActivePort()) {
|
|
293
410
|
const { browser } = await connectCdp(port);
|
|
294
|
-
const pages = browser.contexts().flatMap((
|
|
411
|
+
const pages = browser.contexts().flatMap((context) => context.pages());
|
|
295
412
|
if (verifiedActiveTargetId) {
|
|
296
413
|
const tabs = await readCdpPageTargets(port).catch(() => []);
|
|
297
414
|
const tab = tabs.find((t) => t.id === verifiedActiveTargetId);
|
|
@@ -320,6 +437,7 @@ function toBrowserTabInfo(tab, index, activeTargetId) {
|
|
|
320
437
|
type: tab.type || 'page',
|
|
321
438
|
active: Boolean(activeTargetId && targetId === activeTargetId),
|
|
322
439
|
attached: true,
|
|
440
|
+
lastActiveAt: getTabActivity(targetId),
|
|
323
441
|
};
|
|
324
442
|
}
|
|
325
443
|
async function resolveActiveTargetId(port, tabs) {
|
|
@@ -340,7 +458,10 @@ export async function getActiveTab(port = getActivePort()) {
|
|
|
340
458
|
return { ok: false, reason: 'none' };
|
|
341
459
|
if (active.length > 1)
|
|
342
460
|
return { ok: false, reason: 'ambiguous' };
|
|
343
|
-
|
|
461
|
+
const tab = active[0];
|
|
462
|
+
if (!tab)
|
|
463
|
+
return { ok: false, reason: 'none' };
|
|
464
|
+
return { ok: true, tab };
|
|
344
465
|
}
|
|
345
466
|
export async function switchTab(port = getActivePort(), target) {
|
|
346
467
|
const tabs = await readCdpPageTargets(port);
|
|
@@ -359,6 +480,7 @@ export async function switchTab(port = getActivePort(), target) {
|
|
|
359
480
|
await cdp.detach().catch(() => undefined);
|
|
360
481
|
}
|
|
361
482
|
verifiedActiveTargetId = wanted.id;
|
|
483
|
+
markTabActive(wanted.id);
|
|
362
484
|
markBrowserStateChanged();
|
|
363
485
|
const active = await getActiveTab(port);
|
|
364
486
|
if (!active.ok || active.tab?.targetId !== wanted.id)
|
|
@@ -385,10 +507,165 @@ export function getBrowserRuntimeStatus() {
|
|
|
385
507
|
: createEmptyBrowserRuntime(activeCommandCount);
|
|
386
508
|
}
|
|
387
509
|
export async function getCdpSession(port = getActivePort()) {
|
|
388
|
-
|
|
389
|
-
|
|
510
|
+
try {
|
|
511
|
+
const page = await getActivePage(port);
|
|
512
|
+
if (page)
|
|
513
|
+
return page.context().newCDPSession(page);
|
|
514
|
+
const { browser } = await connectCdp(port);
|
|
515
|
+
if (typeof browser.newBrowserCDPSession === 'function') {
|
|
516
|
+
return browser.newBrowserCDPSession();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
catch (error) {
|
|
520
|
+
if (!errorMessage(error).includes('Browser.setDownloadBehavior'))
|
|
521
|
+
throw error;
|
|
522
|
+
}
|
|
523
|
+
return createRawBrowserCdpSession(port);
|
|
524
|
+
}
|
|
525
|
+
async function createRawBrowserCdpSession(port) {
|
|
526
|
+
const response = await fetch(`http://127.0.0.1:${port}/json/version`);
|
|
527
|
+
const version = await response.json();
|
|
528
|
+
const endpoint = version.webSocketDebuggerUrl;
|
|
529
|
+
if (!endpoint || typeof WebSocket !== 'function')
|
|
390
530
|
return null;
|
|
391
|
-
|
|
531
|
+
const ws = new WebSocket(endpoint);
|
|
532
|
+
let nextId = 1;
|
|
533
|
+
const pending = new Map();
|
|
534
|
+
ws.addEventListener('message', event => {
|
|
535
|
+
let payload = null;
|
|
536
|
+
try {
|
|
537
|
+
payload = JSON.parse(String(event.data));
|
|
538
|
+
}
|
|
539
|
+
catch {
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
if (!isRecord(payload) || typeof payload["id"] !== 'number' || !pending.has(payload["id"]))
|
|
543
|
+
return;
|
|
544
|
+
const callbacks = pending.get(payload["id"]);
|
|
545
|
+
pending.delete(payload["id"]);
|
|
546
|
+
const error = payload["error"];
|
|
547
|
+
if (isRecord(error))
|
|
548
|
+
callbacks.reject(new Error(typeof error["message"] === 'string' ? error["message"] : JSON.stringify(error)));
|
|
549
|
+
else
|
|
550
|
+
callbacks.resolve(payload["result"] || {});
|
|
551
|
+
});
|
|
552
|
+
await new Promise((resolve, reject) => {
|
|
553
|
+
ws.addEventListener('open', () => resolve(), { once: true });
|
|
554
|
+
ws.addEventListener('error', () => reject(new Error('CDP websocket connection failed')), { once: true });
|
|
555
|
+
});
|
|
556
|
+
return {
|
|
557
|
+
send(method, params = {}) {
|
|
558
|
+
const id = nextId++;
|
|
559
|
+
const promise = new Promise((resolve, reject) => pending.set(id, { resolve, reject }));
|
|
560
|
+
ws.send(JSON.stringify({ id, method, params }));
|
|
561
|
+
return promise;
|
|
562
|
+
},
|
|
563
|
+
async detach() {
|
|
564
|
+
for (const { reject } of pending.values())
|
|
565
|
+
reject(new Error('CDP session detached'));
|
|
566
|
+
pending.clear();
|
|
567
|
+
if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING)
|
|
568
|
+
ws.close();
|
|
569
|
+
},
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
function isReusableBlankTab(tab, allTabs = []) {
|
|
573
|
+
const url = String(tab.url || '').toLowerCase();
|
|
574
|
+
if (!tab.id || (url !== 'about:blank' && url !== ''))
|
|
575
|
+
return false;
|
|
576
|
+
return allTabs.length <= 1;
|
|
577
|
+
}
|
|
578
|
+
export async function createTab(port = getActivePort(), url = 'about:blank', opts = {}) {
|
|
579
|
+
const cdp = await getCdpSession(port);
|
|
580
|
+
if (!cdp)
|
|
581
|
+
throw new Error('No CDP session available for tab creation');
|
|
582
|
+
try {
|
|
583
|
+
if (url !== 'about:blank' && opts.reuseBlank !== false) {
|
|
584
|
+
const tabs = await readCdpPageTargets(port);
|
|
585
|
+
const blank = tabs.find(tab => isReusableBlankTab(tab, tabs));
|
|
586
|
+
if (blank?.id) {
|
|
587
|
+
const page = await waitForPageByTargetId(port, blank.id);
|
|
588
|
+
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30_000 });
|
|
589
|
+
if (opts.activate !== false) {
|
|
590
|
+
await cdp.send('Target.activateTarget', { targetId: blank.id });
|
|
591
|
+
verifiedActiveTargetId = blank.id;
|
|
592
|
+
markBrowserStateChanged();
|
|
593
|
+
}
|
|
594
|
+
const lastActiveAt = markTabActive(blank.id);
|
|
595
|
+
const title = await page.title().catch(() => 'New Tab');
|
|
596
|
+
return { targetId: blank.id, url: page.url(), title, activated: opts.activate !== false, lastActiveAt, reusedBlank: true };
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
const { targetId } = await createTargetWithWindowFallback(cdp, url, opts);
|
|
600
|
+
await new Promise(r => setTimeout(r, 100));
|
|
601
|
+
const tabs = await readCdpPageTargets(port);
|
|
602
|
+
const tab = tabs.find(t => t.id === targetId);
|
|
603
|
+
const lastActiveAt = markTabActive(targetId);
|
|
604
|
+
return { targetId, url: tab?.url || url, title: tab?.title || 'New Tab', activated: opts.activate !== false, lastActiveAt };
|
|
605
|
+
}
|
|
606
|
+
finally {
|
|
607
|
+
await cdp.detach().catch(() => undefined);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
async function createTargetWithWindowFallback(cdp, url, opts) {
|
|
611
|
+
try {
|
|
612
|
+
return requireTargetId(await cdp.send('Target.createTarget', { url, newWindow: false, background: !opts.activate }));
|
|
613
|
+
}
|
|
614
|
+
catch (error) {
|
|
615
|
+
if (!errorMessage(error).includes('no browser is open'))
|
|
616
|
+
throw error;
|
|
617
|
+
return requireTargetId(await cdp.send('Target.createTarget', { url, newWindow: true, background: false }));
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
export async function closeTab(port = getActivePort(), targetId) {
|
|
621
|
+
const cdp = await getCdpSession(port);
|
|
622
|
+
if (!cdp)
|
|
623
|
+
throw new Error('No CDP session available for tab close');
|
|
624
|
+
try {
|
|
625
|
+
await cdp.send('Target.closeTarget', { targetId });
|
|
626
|
+
forgetTabActivity(targetId);
|
|
627
|
+
return { closed: true, targetId };
|
|
628
|
+
}
|
|
629
|
+
catch (error) {
|
|
630
|
+
if (errorMessage(error).includes('No target')) {
|
|
631
|
+
forgetTabActivity(targetId);
|
|
632
|
+
return { closed: true, targetId, alreadyClosed: true };
|
|
633
|
+
}
|
|
634
|
+
throw error;
|
|
635
|
+
}
|
|
636
|
+
finally {
|
|
637
|
+
await cdp.detach().catch(() => undefined);
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
export async function getPageByTargetId(port = getActivePort(), targetId) {
|
|
641
|
+
const { browser } = await connectCdp(port);
|
|
642
|
+
const contexts = browser.contexts();
|
|
643
|
+
for (const context of contexts) {
|
|
644
|
+
for (const page of context.pages()) {
|
|
645
|
+
const session = await context.newCDPSession(page);
|
|
646
|
+
try {
|
|
647
|
+
const targetInfo = await session.send('Target.getTargetInfo');
|
|
648
|
+
if (targetInfoMatches(targetInfo, targetId)) {
|
|
649
|
+
markTabActive(targetId);
|
|
650
|
+
return page;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
finally {
|
|
654
|
+
await session.detach().catch(() => undefined);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
return null;
|
|
659
|
+
}
|
|
660
|
+
export async function waitForPageByTargetId(port = getActivePort(), targetId, timeoutMs = 10_000) {
|
|
661
|
+
const deadline = Date.now() + timeoutMs;
|
|
662
|
+
while (Date.now() < deadline) {
|
|
663
|
+
const page = await getPageByTargetId(port, targetId);
|
|
664
|
+
if (page && !page.isClosed?.())
|
|
665
|
+
return page;
|
|
666
|
+
await new Promise(r => setTimeout(r, 100));
|
|
667
|
+
}
|
|
668
|
+
throw new Error(`new tab page not found for targetId ${targetId}`);
|
|
392
669
|
}
|
|
393
670
|
export async function closeBrowser() {
|
|
394
671
|
if (runtimeOwner?.ownership === 'external') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/browser/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/browser/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAA4C,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE5G,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;AAStE,IAAI,MAAM,GAAkC,IAAI,CAAC;AACjD,IAAI,UAAU,GAAwB,IAAI,CAAC;AAC3C,IAAI,UAAU,GAAkB,IAAI,CAAC;AACrC,IAAI,YAAY,GAA+B,IAAI,CAAC;AACpD,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAC3B,IAAI,UAAU,GAA0C,IAAI,CAAC;AAC7D,IAAI,sBAAsB,GAAkB,IAAI,CAAC;AACjD,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;AA2B9B,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAChC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;IACrG,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,QAAgB;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACnC,mBAAmB,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB;IAClC,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe;IACpB,IAAI,iBAAiB;QAAE,OAAO;IAC9B,iBAAiB,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO;IAC9C,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAsC,CAAC;QAC3G,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,WAAW,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACL,CAAC;AAED,SAAS,eAAe;IACpB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAmC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC;IAClB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC;IAClB,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAmC;IACjE,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,eAAe,EAAE,CAAC;IAClB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,eAAe,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAmC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,eAAe,EAAE,CAAC;IAClB,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED,2DAA2D;AAC3D,SAAS,eAAe,CAAC,IAAY,EAAE,IAAI,GAAG,WAAW;IACrD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,SAAS,GAAG,KAAK;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,eAAe,EAAE;gBAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,oCAAoC,CAAC,IAAY;IAC5D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACL,4EAA4E;IAChF,CAAC;IACD,UAAU,GAAG,IAAI,CAAC;IAClB,IAAI,YAAY,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;QAC1C,+BAA+B,CAAC,YAAY,CAAC,CAAC;QAC9C,YAAY,GAAG,IAAI,CAAC;QACpB,UAAU,GAAG,IAAI,CAAC;QAClB,sBAAsB,GAAG,IAAI,CAAC;QAC9B,2BAA2B,EAAE,CAAC;QAC9B,uBAAuB,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,KAAK;IACV,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACf,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACN,8DAA8D,EAC9D,oDAAoD,EACpD,8DAA8D,EAC9D,GAAG,EAAE,CAAC,OAAO,EAAE,8DAA8D,CAChF,CAAC;IACN,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,yBAAyB,CAAC;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CACN,GAAG,EAAE,2CAA2C,EAChD,GAAG,IAAI,2CAA2C,EAClD,GAAG,KAAK,2CAA2C,EACnD,GAAG,EAAE,wDAAwD,CAChE,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CACN,+BAA+B,EAC/B,wBAAwB,EACxB,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,CAC3B,CAAC;QACF,IAAI,KAAK,EAAE,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CACN,2DAA2D,EAC3D,iEAAiE,CACpE,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB;IACxB,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,kBAAkB,EAAE,CAAC;IACrB,mBAAmB,EAAE,CAAC;IACtB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,GAAG,EAAE;QACR,IAAI,KAAK;YAAE,OAAO;QAClB,KAAK,GAAG,IAAI,CAAC;QACb,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC;QACzD,mBAAmB,EAAE,CAAC;IAC1B,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAI,EAAoB;IAC7D,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,IAAI,CAAC;QACD,OAAO,MAAM,EAAE,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACP,GAAG,EAAE,CAAC;IACV,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,QAAQ,CAAC,gBAAgB,EAAE;gBACvB,YAAY;gBACZ,iBAAiB;gBACjB,UAAU;gBACV,uDAAuD,OAAO,gBAAgB;aACjF,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;oBACxB,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnB,OAAO;gBACX,CAAC;gBACD,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;oBACzH,IAAI,SAAS,EAAE,CAAC;wBACZ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,UAAU;yBACrB,KAAK,CAAC,OAAO,CAAC;yBACd,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;wBAChD,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;yBAC7B,IAAI,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvG,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpE,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACX,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,KAAiC;IACvE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,OAAO,CAAC,QAAQ,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC;WACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,2BAA2B;IAChC,MAAM,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAyB;IACrD,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QAC/B,2BAA2B,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IAE3C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QAClB,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACL,gEAAgE;QACpE,CAAC;IACL,CAAC;IACD,UAAU,GAAG,IAAI,CAAC;IAClB,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,YAAY,GAAG,IAAI,CAAC;IACpB,UAAU,GAAG,IAAI,CAAC;IAClB,sBAAsB,GAAG,IAAI,CAAC;IAC9B,uBAAuB,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,WAAW;IACtB,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC;QAAE,OAAO;IAClF,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB;IAC5B,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1B,KAAK,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC9B,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,IAAI,GAAG,aAAa,EAAE,EACtB,OAAwD,EAAE;IAE1D,6EAA6E;IAC7E,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,eAAe,EAAE;gBAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,+BAA+B,IAAI,6NAA6N,CAAC,CAAC;gBAC/Q,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,8BAA8B,CAAC,CAAC;gBAC3F,UAAU,GAAG,IAAI,CAAC;gBAClB,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;gBAClD,uBAAuB,EAAE,CAAC;gBAC1B,OAAO;YACX,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CACX,QAAQ,IAAI,wCAAwC;gBACpD,gGAAgG,CACnG,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,oCAAoC,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK;YAAE,OAAO;IACvB,CAAC;IAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;KAC1B,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,IAAI,iCAAiC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC;IAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IAEvC,0DAA0D;IAC1D,uDAAuD;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE;QACvB,2BAA2B,IAAI,EAAE;QACjC,mBAAmB,WAAW,EAAE;QAChC,iBAAiB,QAAQ,IAAI,SAAS,EAAE;QACxC,gBAAgB,EAAE,4BAA4B;QAC9C,yBAAyB;QACzB,iCAAiC;QACjC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,aAAa;KAChB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxC,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,qDAAqD;IACrD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAAG,4BAA4B,CAAC;YACvC,IAAI;YACJ,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI;YAC3B,WAAW,EAAE,WAAW;YACxB,QAAQ;SACX,CAAC,CAAC;QACH,YAAY,GAAG,KAAK,CAAC;QACrB,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACvC,uBAAuB,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACJ,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,KAAK,CACX,qCAAqC,IAAI,cAAc;YACvD,oBAAoB;YACpB,sFAAsF;YACtF,kEAAkE;YAClE,wCAAwC,CAC3C,CAAC;IACN,CAAC;AACL,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa;IACzB,OAAO,UAAU,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,aAAa,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,OAAO,GAAG,CAAC;IAChE,MAAM,MAAM,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,OAAO,MAAM,CAAC;IAE7E,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1E,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,SAAS,GAAG,CAAU,CAAC;YACvB,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,IAAI,OAAO,4BAA4B,CAAC,CAAC;gBAC5F,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,cAAc,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAI,GAAG,aAAa,EAAE;IACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,IAAI,sBAAsB,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,sBAAsB,CAAC,CAAC;QAC9D,IAAI,GAAG,EAAE,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC3E,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAI,GAAG,aAAa,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,YAAY,CAAC,CAAC;IAC/D,OAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAc,EAAE,KAAa,EAAE,cAA6B;IAClF,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9B,OAAO;QACH,KAAK,EAAE,QAAQ;QACf,QAAQ;QACR,KAAK,EAAE,KAAK,GAAG,CAAC;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;QACxB,MAAM,EAAE,OAAO,CAAC,cAAc,IAAI,QAAQ,KAAK,cAAc,CAAC;QAC9D,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC;KACzC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,IAAiB;IAChE,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,sBAAsB,CAAC,EAAE,CAAC;QAC9E,OAAO,sBAAsB,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAI,GAAG,aAAa,EAAE;IACjD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAI,GAAG,aAAa,EAAE;IACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,MAAc;IAClE,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAE3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACjD,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACP,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IACD,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,uBAAuB,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjG,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAI,GAAG,aAAa,EAAE;IACzD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO;YACH,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,MAAM,EAAE,oBAAoB,IAAI,EAAE;YAClC,OAAO,EAAE,uBAAuB,EAAE;SACrC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,CAAC;IAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,uBAAuB;IACnC,OAAO,YAAY;QACf,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,kBAAkB,EAAE;QACzC,CAAC,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAI,GAAG,aAAa,EAAE;IACtD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,OAAO,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAC1C,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAAE,MAAM,KAAK,CAAC;IAClF,CAAC;IACD,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,IAAY;IAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,eAAe,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAuC,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAC9C,IAAI,CAAC,QAAQ,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiF,CAAC;IACzG,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACnC,IAAI,OAAO,GAAY,IAAI,CAAC;QAC5B,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO;QACnG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAE,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;YAC7H,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IACH,OAAO;QACH,IAAI,CAAC,MAAc,EAAE,SAAkC,EAAE;YACrD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAChG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,MAAM;YACR,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;gBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/F,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAc,EAAE,UAAuB,EAAE;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,GAAG,GAAG,aAAa,EAAE,OAAqD,EAAE;IAChI,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACvE,IAAI,CAAC;QACD,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9D,IAAI,KAAK,EAAE,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzE,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;oBAC1B,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChE,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC;oBAClC,uBAAuB,EAAE,CAAC;gBAC9B,CAAC;gBACD,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACxD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/H,CAAC;QACL,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1E,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,YAAY,EAAE,CAAC;IAChI,CAAC;YAAS,CAAC;QACP,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,GAAsB,EAAE,GAAW,EAAE,IAA4B;IAC3G,IAAI,CAAC;QACD,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,MAAM,KAAK,CAAC;QACrE,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/G,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,QAAgB;IACnE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACpE,IAAI,CAAC;QACD,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,QAAgB;IAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC9D,IAAI,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC1C,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACxB,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;oBAAS,CAAC;gBACP,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAI,GAAG,aAAa,EAAE,EAAE,QAAgB,EAAE,SAAS,GAAG,MAAM;IACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,IAAI,YAAY,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;QACzC,2BAA2B,EAAE,CAAC;QAC9B,YAAY,GAAG,IAAI,CAAC;QACpB,UAAU,GAAG,IAAI,CAAC;QAClB,sBAAsB,GAAG,IAAI,CAAC;QAC9B,uBAAuB,EAAE,CAAC;QAC1B,OAAO;IACX,CAAC;IACD,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,2BAA2B;IACvC,MAAM,GAAG,IAAI,CAAC;IACd,UAAU,GAAG,IAAI,CAAC;IAClB,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,IAAI,CAAC;IACpB,kBAAkB,GAAG,CAAC,CAAC;IACvB,sBAAsB,GAAG,IAAI,CAAC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACb,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1B,UAAU,GAAG,IAAI,CAAC;IACtB,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { launchChrome, connectCdp, getActivePage, getActivePort, listTabs, getBrowserStatus, closeBrowser, getBrowserRuntimeStatus, beginBrowserActivity, withBrowserActivity, resetBrowserRuntimeForTests, getCdpSession, getActiveTab, switchTab, markBrowserStateChanged, getBrowserStateVersion, } from './connection.js';
|
|
1
|
+
export { launchChrome, connectCdp, getActivePage, getActivePort, listTabs, getBrowserStatus, closeBrowser, getBrowserRuntimeStatus, beginBrowserActivity, withBrowserActivity, resetBrowserRuntimeForTests, getCdpSession, getActiveTab, switchTab, createTab, closeTab, getPageByTargetId, waitForPageByTargetId, markBrowserStateChanged, getBrowserStateVersion, markTabActive, forgetTabActivity, getTabActivity, } from './connection.js';
|
|
2
|
+
export { getBrowserDiagnostics } from './runtime-diagnostics.js';
|
|
3
|
+
export { cleanupBrowserRuntimeOrphans, inspectBrowserRuntimeOrphans } from './runtime-orphans.js';
|
|
4
|
+
export { cleanupIdleTabs, isPinned, parseTabDuration, pinTab, selectTabsForCleanup, unpinTab, } from './tab-lifecycle.js';
|
|
2
5
|
export * from './primitives.js';
|
|
3
6
|
export { snapshot, screenshot, click, type, press, hover, navigate, evaluate, getPageText, mouseClick, getDom, waitForSelector, waitForText, reload, resize, scroll, select, drag, mouseMove, mouseDown, mouseUp, getConsole, getNetwork, } from './actions.js';
|
|
4
7
|
export { visionClick, extractCoordinates } from './vision.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EACtD,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EACxC,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAClE,2BAA2B,EAC3B,aAAa,EAAE,YAAY,EAAE,SAAS,EACtC,uBAAuB,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EACtD,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EACxC,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAClE,2BAA2B,EAC3B,aAAa,EAAE,YAAY,EAAE,SAAS,EACtC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,EAC7D,uBAAuB,EAAE,sBAAsB,EAC/C,aAAa,EAAE,iBAAiB,EAAE,cAAc,GACnD,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,EACH,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,GACtF,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACH,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EACxC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EACtC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EACpC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GACxD,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC"}
|
|
@@ -6,7 +6,7 @@ export function normalizeBrowserStartMode(mode) {
|
|
|
6
6
|
}
|
|
7
7
|
export function resolveLaunchPolicy(input = {}) {
|
|
8
8
|
const mode = normalizeBrowserStartMode(input.mode);
|
|
9
|
-
const envHeadless = input.envHeadless ?? process.env
|
|
9
|
+
const envHeadless = input.envHeadless ?? process.env["CHROME_HEADLESS"] === '1';
|
|
10
10
|
const requestedHeadless = input.headless === true || envHeadless;
|
|
11
11
|
if (mode === 'debug') {
|
|
12
12
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch-policy.js","sourceRoot":"","sources":["../../../src/browser/launch-policy.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,0BAA0B,GACnC,kFAAkF,CAAC;AAEvF,MAAM,UAAU,yBAAyB,CAAC,IAAsC;IAC5E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAkC,EAAE;IACpE,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"launch-policy.js","sourceRoot":"","sources":["../../../src/browser/launch-policy.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,0BAA0B,GACnC,kFAAkF,CAAC;AAEvF,MAAM,UAAU,yBAAyB,CAAC,IAAsC;IAC5E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAkC,EAAE;IACpE,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC;IAChF,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,WAAW,CAAC;IAEjE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO;YACH,IAAI;YACJ,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,0BAA0B;SACzC,CAAC;IACN,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO;YACH,IAAI;YACJ,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;SACjB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI;QACJ,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,iBAAiB;KAC9B,CAAC;AACN,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { stripUndefined } from '../core/strip-undefined.js';
|
|
1
2
|
export class BrowserCapabilityError extends Error {
|
|
2
3
|
capabilityId;
|
|
3
4
|
stage;
|
|
@@ -34,9 +35,11 @@ export async function findVisibleCandidate(page, selectors, options = {}) {
|
|
|
34
35
|
do {
|
|
35
36
|
for (const selector of selectors) {
|
|
36
37
|
const baseLocator = page.locator(selector);
|
|
37
|
-
const count = await baseLocator.count().catch(() => 0);
|
|
38
|
+
const count = await baseLocator.count?.().catch(() => 0) ?? 0;
|
|
38
39
|
for (let index = 0; index < count; index += 1) {
|
|
39
|
-
const locator = typeof baseLocator.nth === 'function'
|
|
40
|
+
const locator = typeof baseLocator.nth === 'function'
|
|
41
|
+
? baseLocator.nth(index)
|
|
42
|
+
: baseLocator.first?.() ?? baseLocator;
|
|
40
43
|
const visible = await isLocatorVisible(locator);
|
|
41
44
|
const candidate = { selector, index, locator, visible };
|
|
42
45
|
firstCandidate ??= candidate;
|
|
@@ -107,7 +110,7 @@ export async function waitForStableTextAfterBaseline(page, selectors, baseline,
|
|
|
107
110
|
await page.waitForTimeout?.(pollIntervalMs);
|
|
108
111
|
}
|
|
109
112
|
warnings.push('stable-text-timeout');
|
|
110
|
-
return { ok: false, baseline, latestText: stableText, warnings };
|
|
113
|
+
return stripUndefined({ ok: false, baseline, latestText: stableText, warnings });
|
|
111
114
|
}
|
|
112
115
|
export async function captureBrowserDiagnostics(input = {}) {
|
|
113
116
|
const page = input.page;
|
|
@@ -122,7 +125,8 @@ export async function captureBrowserDiagnostics(input = {}) {
|
|
|
122
125
|
return out;
|
|
123
126
|
}
|
|
124
127
|
try {
|
|
125
|
-
|
|
128
|
+
const urlValue = typeof page.url === 'function' ? await page.url() : page.url;
|
|
129
|
+
out.url = String(urlValue ?? '');
|
|
126
130
|
}
|
|
127
131
|
catch (e) {
|
|
128
132
|
out.warnings.push(`url:${e.message}`);
|
|
@@ -155,7 +159,7 @@ async function readTexts(page, selectors) {
|
|
|
155
159
|
if (Array.isArray(evaluated) && evaluated.length > 0)
|
|
156
160
|
return evaluated.map(String);
|
|
157
161
|
for (const selector of selectors) {
|
|
158
|
-
const locators = await page.locator(selector).all().catch(() => []);
|
|
162
|
+
const locators = await page.locator(selector).all?.().catch(() => []) ?? [];
|
|
159
163
|
const texts = [];
|
|
160
164
|
for (const locator of locators) {
|
|
161
165
|
const text = String(await locator.innerText?.().catch(() => '') || '').trim();
|
|
@@ -169,7 +173,7 @@ async function readTexts(page, selectors) {
|
|
|
169
173
|
}
|
|
170
174
|
async function countSelector(page, selector) {
|
|
171
175
|
try {
|
|
172
|
-
return await page.locator(selector).count();
|
|
176
|
+
return await page.locator(selector).count?.() ?? 0;
|
|
173
177
|
}
|
|
174
178
|
catch {
|
|
175
179
|
return 0;
|
|
@@ -177,7 +181,7 @@ async function countSelector(page, selector) {
|
|
|
177
181
|
}
|
|
178
182
|
async function countVisibleSelector(page, selector) {
|
|
179
183
|
try {
|
|
180
|
-
const locators = await page.locator(selector).all();
|
|
184
|
+
const locators = await page.locator(selector).all?.() ?? [];
|
|
181
185
|
let total = 0;
|
|
182
186
|
for (const locator of locators) {
|
|
183
187
|
if (await isLocatorVisible(locator))
|