@ai-agent-forge/agent-forge 0.87.0 → 0.88.1
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/CHANGELOG.md +56 -0
- package/README.md +2 -2
- package/bundled-plugins/agent-loop-policy/agent-forge.json +19 -0
- package/bundled-plugins/agent-loop-policy/dist/entry.d.ts +28 -0
- package/bundled-plugins/agent-loop-policy/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/agent-loop-policy/dist/entry.js +69 -0
- package/bundled-plugins/agent-loop-policy/dist/entry.js.map +1 -0
- package/bundled-plugins/agent-loop-policy/dist/loop-guard.d.ts +199 -0
- package/bundled-plugins/agent-loop-policy/dist/loop-guard.d.ts.map +1 -0
- package/bundled-plugins/agent-loop-policy/dist/loop-guard.js +208 -0
- package/bundled-plugins/agent-loop-policy/dist/loop-guard.js.map +1 -0
- package/bundled-plugins/agent-loop-policy/dist/run-loop-strategy.d.ts +17 -0
- package/bundled-plugins/agent-loop-policy/dist/run-loop-strategy.d.ts.map +1 -0
- package/bundled-plugins/agent-loop-policy/dist/run-loop-strategy.js +18 -0
- package/bundled-plugins/agent-loop-policy/dist/run-loop-strategy.js.map +1 -0
- package/bundled-plugins/agent-loop-policy/plugin.json +7 -0
- package/bundled-plugins/coding-tools/agent-forge.json +19 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/bash.d.ts +5 -44
- package/bundled-plugins/coding-tools/dist/bash.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/bash.js +15 -119
- package/bundled-plugins/coding-tools/dist/bash.js.map +1 -0
- package/bundled-plugins/coding-tools/dist/capability.d.ts +25 -0
- package/bundled-plugins/coding-tools/dist/capability.d.ts.map +1 -0
- package/bundled-plugins/coding-tools/dist/capability.js +98 -0
- package/bundled-plugins/coding-tools/dist/capability.js.map +1 -0
- package/bundled-plugins/coding-tools/dist/config.d.ts +8 -0
- package/bundled-plugins/coding-tools/dist/config.d.ts.map +1 -0
- package/bundled-plugins/coding-tools/dist/config.js +8 -0
- package/bundled-plugins/coding-tools/dist/config.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/edit.d.ts +3 -3
- package/bundled-plugins/coding-tools/dist/edit.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/edit.js +12 -10
- package/bundled-plugins/coding-tools/dist/edit.js.map +1 -0
- package/bundled-plugins/coding-tools/dist/entry.d.ts +14 -0
- package/bundled-plugins/coding-tools/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/coding-tools/dist/entry.js +23 -0
- package/bundled-plugins/coding-tools/dist/entry.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/find.d.ts +4 -4
- package/bundled-plugins/coding-tools/dist/find.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/find.js +10 -8
- package/bundled-plugins/coding-tools/dist/find.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/grep.d.ts +3 -3
- package/bundled-plugins/coding-tools/dist/grep.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/grep.js +10 -8
- package/bundled-plugins/coding-tools/dist/grep.js.map +1 -0
- package/bundled-plugins/coding-tools/dist/index.d.ts +17 -0
- package/bundled-plugins/coding-tools/dist/index.d.ts.map +1 -0
- package/bundled-plugins/coding-tools/dist/index.js +17 -0
- package/bundled-plugins/coding-tools/dist/index.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/ls.d.ts +3 -3
- package/bundled-plugins/coding-tools/dist/ls.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/ls.js +8 -6
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/ls.js.map +1 -1
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/powershell.d.ts +2 -1
- package/bundled-plugins/coding-tools/dist/powershell.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/powershell.js +6 -3
- package/bundled-plugins/coding-tools/dist/powershell.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/read.d.ts +3 -3
- package/bundled-plugins/coding-tools/dist/read.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/read.js +15 -13
- package/bundled-plugins/coding-tools/dist/read.js.map +1 -0
- package/bundled-plugins/coding-tools/dist/types.d.ts +74 -0
- package/bundled-plugins/coding-tools/dist/types.d.ts.map +1 -0
- package/bundled-plugins/coding-tools/dist/types.js +28 -0
- package/bundled-plugins/coding-tools/dist/types.js.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/write.d.ts +2 -2
- package/bundled-plugins/coding-tools/dist/write.d.ts.map +1 -0
- package/{dist/core/tools → bundled-plugins/coding-tools/dist}/write.js +11 -9
- package/bundled-plugins/coding-tools/dist/write.js.map +1 -0
- package/bundled-plugins/coding-tools/plugin.json +10 -0
- package/bundled-plugins/compaction-policy/agent-forge.json +19 -0
- package/bundled-plugins/compaction-policy/dist/branch-summary-policy.d.ts +6 -0
- package/bundled-plugins/compaction-policy/dist/branch-summary-policy.d.ts.map +1 -0
- package/bundled-plugins/compaction-policy/dist/branch-summary-policy.js +19 -0
- package/bundled-plugins/compaction-policy/dist/branch-summary-policy.js.map +1 -0
- package/bundled-plugins/compaction-policy/dist/compaction-policy.d.ts +6 -0
- package/bundled-plugins/compaction-policy/dist/compaction-policy.d.ts.map +1 -0
- package/bundled-plugins/compaction-policy/dist/compaction-policy.js +38 -0
- package/bundled-plugins/compaction-policy/dist/compaction-policy.js.map +1 -0
- package/bundled-plugins/compaction-policy/dist/entry.d.ts +13 -0
- package/bundled-plugins/compaction-policy/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/compaction-policy/dist/entry.js +23 -0
- package/bundled-plugins/compaction-policy/dist/entry.js.map +1 -0
- package/bundled-plugins/compaction-policy/plugin.json +10 -0
- package/bundled-plugins/mcp-http/dist/index.d.ts +8 -0
- package/bundled-plugins/mcp-http/dist/index.d.ts.map +1 -0
- package/bundled-plugins/mcp-http/dist/index.js +8 -0
- package/bundled-plugins/mcp-http/dist/index.js.map +1 -0
- package/bundled-plugins/mcp-http/dist/mcp-http.d.ts.map +1 -0
- package/{dist/plugins → bundled-plugins/mcp-http/dist}/mcp-http.js +1 -1
- package/bundled-plugins/mcp-http/dist/mcp-http.js.map +1 -0
- package/bundled-plugins/overflow-policy/agent-forge.json +19 -0
- package/bundled-plugins/overflow-policy/dist/entry.d.ts +16 -0
- package/bundled-plugins/overflow-policy/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/overflow-policy/dist/entry.js +35 -0
- package/bundled-plugins/overflow-policy/dist/entry.js.map +1 -0
- package/bundled-plugins/overflow-policy/plugin.json +10 -0
- package/bundled-plugins/provider-failover/agent-forge.json +19 -0
- package/bundled-plugins/provider-failover/dist/entry.d.ts +8 -0
- package/bundled-plugins/provider-failover/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/provider-failover/dist/entry.js +8 -0
- package/bundled-plugins/provider-failover/dist/entry.js.map +1 -0
- package/bundled-plugins/provider-failover/dist/provider-failover.d.ts +122 -0
- package/bundled-plugins/provider-failover/dist/provider-failover.d.ts.map +1 -0
- package/{dist/core/extensions → bundled-plugins/provider-failover/dist}/provider-failover.js +149 -61
- package/bundled-plugins/provider-failover/dist/provider-failover.js.map +1 -0
- package/bundled-plugins/provider-failover/plugin.json +7 -0
- package/bundled-plugins/retry-policy/agent-forge.json +19 -0
- package/bundled-plugins/retry-policy/dist/entry.d.ts +16 -0
- package/bundled-plugins/retry-policy/dist/entry.d.ts.map +1 -0
- package/bundled-plugins/retry-policy/dist/entry.js +34 -0
- package/bundled-plugins/retry-policy/dist/entry.js.map +1 -0
- package/bundled-plugins/retry-policy/plugin.json +10 -0
- package/dist/bundle/.build-manifest.json +105 -183
- package/dist/bundle/chunks/{anthropic-messages-ALDZBUKI.js → anthropic-messages-PLAKXR73.js} +1 -1
- package/dist/bundle/chunks/{azure-openai-responses-A2WJWZFB.js → azure-openai-responses-OUWQ2AZD.js} +1 -1
- package/dist/bundle/chunks/{chunk-CIX3FSBK.js → chunk-A3JYRWB6.js} +1 -1
- package/dist/bundle/chunks/{chunk-SQFG22WN.js → chunk-AC2FIS4G.js} +1 -1
- package/dist/bundle/chunks/chunk-AQLNTW2B.js +664 -0
- package/dist/bundle/chunks/chunk-D3ARGZFR.js +13 -0
- package/dist/bundle/chunks/{chunk-YJCQVXW5.js → chunk-HTEVUY7F.js} +1 -1
- package/dist/bundle/chunks/{chunk-Y7HXTASS.js → chunk-HV64ASMT.js} +1 -1
- package/dist/bundle/chunks/chunk-LZOEQITZ.js +855 -0
- package/dist/bundle/chunks/{chunk-7ZY7IXZD.js → chunk-TRDNDS6A.js} +1 -1
- package/dist/bundle/chunks/chunk-Z72JWUZ4.js +4 -0
- package/dist/bundle/chunks/{google-generative-ai-NIB4WONV.js → google-generative-ai-DLII6DAT.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-DCPYUEUO.js → google-vertex-G7BZL7GM.js} +1 -1
- package/dist/bundle/chunks/image-resize-worker.js +3 -3
- package/dist/bundle/chunks/{mistral-conversations-OC6LA5XL.js → mistral-conversations-JXUK24ID.js} +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-IO2X4Y7L.js → openai-codex-responses-5GSGFIPG.js} +1 -1
- package/dist/bundle/chunks/{openai-completions-XYQQHETU.js → openai-completions-EI2I6DTG.js} +1 -1
- package/dist/bundle/chunks/{openai-responses-DLIRN3CI.js → openai-responses-AUJQ3NWT.js} +1 -1
- package/dist/bundle/chunks/{pi-messages-E6RRYBO7.js → pi-messages-PWU2VJMR.js} +1 -1
- package/dist/bundle/chunks/virtual-modules-WF6WRHP7.js +5 -0
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/client.js +1 -1
- package/dist/bundle/index.js +3 -3
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/capabilities/builtin.d.ts +1 -1
- package/dist/capabilities/builtin.d.ts.map +1 -1
- package/dist/capabilities/builtin.js +5 -0
- package/dist/capabilities/builtin.js.map +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js +14 -2
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +1 -1
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/plugin-command.d.ts.map +1 -1
- package/dist/cli/plugin-command.js +17 -1
- package/dist/cli/plugin-command.js.map +1 -1
- package/dist/config.d.ts +2 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -6
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +1 -1
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +6 -10
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +21 -112
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-internal.d.ts +1 -7
- package/dist/core/agent-session-internal.d.ts.map +1 -1
- package/dist/core/agent-session-internal.js.map +1 -1
- package/dist/core/agent-session-loop.d.ts +4 -3
- package/dist/core/agent-session-loop.d.ts.map +1 -1
- package/dist/core/agent-session-loop.js +9 -6
- package/dist/core/agent-session-loop.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +32 -4
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +30 -9
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tools.d.ts.map +1 -1
- package/dist/core/agent-session-tools.js +5 -1
- package/dist/core/agent-session-tools.js.map +1 -1
- package/dist/core/agent-session.d.ts +12 -33
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +61 -67
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.d.ts +23 -151
- package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.js +28 -290
- package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -1
- package/dist/core/extensions/capability-runtime-types.d.ts +5 -3
- package/dist/core/extensions/capability-runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-types.js.map +1 -1
- package/dist/core/extensions/capability-runtime.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime.js +42 -6
- package/dist/core/extensions/capability-runtime.js.map +1 -1
- package/dist/core/extensions/index.d.ts +12 -5
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +12 -5
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/virtual-modules.js +65 -0
- package/dist/core/extensions/virtual-modules.js.map +1 -1
- package/dist/core/facade/coding-agent-facade.d.ts +1 -7
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
- package/dist/core/facade/coding-agent-facade.js +0 -3
- package/dist/core/facade/coding-agent-facade.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/cli.js +3 -1
- package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js +2 -4
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-errors.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/core-errors.js +3 -1
- package/dist/core/i18n/locales/zh-cn/core-errors.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js +2 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -1
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -1
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +0 -2
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -1
- package/dist/core/model-config.d.ts +0 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +9 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +3 -3
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer.d.ts +2 -2
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +7 -8
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/sdk.d.ts +18 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +267 -76
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +9 -20
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +20 -54
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash-operations.d.ts +41 -0
- package/dist/core/tools/bash-operations.d.ts.map +1 -0
- package/dist/core/tools/bash-operations.js +113 -0
- package/dist/core/tools/bash-operations.js.map +1 -0
- package/dist/core/tools/index.d.ts +12 -36
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -117
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/readme-path.d.ts +3 -0
- package/dist/core/tools/readme-path.d.ts.map +1 -0
- package/dist/core/tools/readme-path.js +15 -0
- package/dist/core/tools/readme-path.js.map +1 -0
- package/dist/index.d.ts +3 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -39
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -2
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +0 -2
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -7
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -6
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +6 -28
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +0 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +9 -25
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +0 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +23 -36
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +0 -8
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +0 -12
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +0 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -19
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/plugins/ecosystem/cli.d.ts.map +1 -1
- package/dist/plugins/ecosystem/cli.js +14 -2
- package/dist/plugins/ecosystem/cli.js.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts +7 -2
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.js +64 -9
- package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js +6 -0
- package/dist/plugins/ecosystem/node-plugin-acquisition-host.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +9 -2
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +23 -0
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +9 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.js +5 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -1
- package/dist/profiles/builtin-suites.d.ts +5 -1
- package/dist/profiles/builtin-suites.d.ts.map +1 -1
- package/dist/profiles/builtin-suites.js +6 -1
- package/dist/profiles/builtin-suites.js.map +1 -1
- package/dist/utils/photon.d.ts +2 -2
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js +2 -2
- package/dist/utils/photon.js.map +1 -1
- package/docs/compaction.md +1 -3
- package/docs/docs.json +4 -0
- package/docs/index.md +1 -0
- package/docs/mcp.md +103 -0
- package/docs/models.md +14 -22
- package/docs/providers.md +0 -1
- package/docs/rpc.md +1 -26
- package/docs/sdk.md +4 -6
- package/docs/settings.md +9 -12
- package/docs/skills.md +1 -9
- package/docs/usage.md +1 -1
- package/examples/extensions/bash-spawn-hook/index.ts +7 -2
- package/examples/extensions/built-in-tool-renderer/index.ts +4 -2
- package/examples/extensions/minimal-mode/index.ts +2 -2
- package/examples/extensions/truncated-tool/index.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/with-deps/plugin.json +1 -1
- package/examples/sdk/10-settings.ts +2 -4
- package/examples/sdk/12-full-control.ts +1 -2
- package/package.json +3 -4
- package/dist/bundle/chunks/chunk-6ZKDNZHA.js +0 -145
- package/dist/bundle/chunks/chunk-BFC2BDVJ.js +0 -13
- package/dist/bundle/chunks/chunk-MOHOLL3F.js +0 -1456
- package/dist/bundle/chunks/virtual-modules-KZ5DRH7Q.js +0 -2
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts +0 -7
- package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts.map +0 -1
- package/dist/core/extensions/bootstrap-branch-summary-policy.js +0 -28
- package/dist/core/extensions/bootstrap-branch-summary-policy.js.map +0 -1
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts +0 -7
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +0 -1
- package/dist/core/extensions/bootstrap-compaction-policy.js +0 -82
- package/dist/core/extensions/bootstrap-compaction-policy.js.map +0 -1
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts +0 -7
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +0 -1
- package/dist/core/extensions/bootstrap-overflow-policy.js +0 -30
- package/dist/core/extensions/bootstrap-overflow-policy.js.map +0 -1
- package/dist/core/extensions/bootstrap-retry-policy.d.ts +0 -7
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +0 -1
- package/dist/core/extensions/bootstrap-retry-policy.js +0 -29
- package/dist/core/extensions/bootstrap-retry-policy.js.map +0 -1
- package/dist/core/extensions/bootstrap-tools.d.ts +0 -20
- package/dist/core/extensions/bootstrap-tools.d.ts.map +0 -1
- package/dist/core/extensions/bootstrap-tools.js +0 -36
- package/dist/core/extensions/bootstrap-tools.js.map +0 -1
- package/dist/core/extensions/microcompact.d.ts +0 -80
- package/dist/core/extensions/microcompact.d.ts.map +0 -1
- package/dist/core/extensions/microcompact.js +0 -134
- package/dist/core/extensions/microcompact.js.map +0 -1
- package/dist/core/extensions/provider-failover.d.ts +0 -106
- package/dist/core/extensions/provider-failover.d.ts.map +0 -1
- package/dist/core/extensions/provider-failover.js.map +0 -1
- package/dist/core/tools/bash.d.ts.map +0 -1
- package/dist/core/tools/bash.js.map +0 -1
- package/dist/core/tools/edit.d.ts.map +0 -1
- package/dist/core/tools/edit.js.map +0 -1
- package/dist/core/tools/find.d.ts.map +0 -1
- package/dist/core/tools/find.js.map +0 -1
- package/dist/core/tools/grep.d.ts.map +0 -1
- package/dist/core/tools/grep.js.map +0 -1
- package/dist/core/tools/ls.d.ts.map +0 -1
- package/dist/core/tools/powershell.d.ts.map +0 -1
- package/dist/core/tools/powershell.js.map +0 -1
- package/dist/core/tools/read.d.ts.map +0 -1
- package/dist/core/tools/read.js.map +0 -1
- package/dist/core/tools/write.d.ts.map +0 -1
- package/dist/core/tools/write.js.map +0 -1
- package/dist/plugins/mcp-http.d.ts.map +0 -1
- package/dist/plugins/mcp-http.js.map +0 -1
- package/dist/profile/child-facade.d.ts +0 -44
- package/dist/profile/child-facade.d.ts.map +0 -1
- package/dist/profile/child-facade.js +0 -56
- package/dist/profile/child-facade.js.map +0 -1
- package/dist/profile/dependency-wiring.d.ts +0 -48
- package/dist/profile/dependency-wiring.d.ts.map +0 -1
- package/dist/profile/dependency-wiring.js +0 -56
- package/dist/profile/dependency-wiring.js.map +0 -1
- package/dist/profile/domain-recovery.d.ts +0 -60
- package/dist/profile/domain-recovery.d.ts.map +0 -1
- package/dist/profile/domain-recovery.js +0 -94
- package/dist/profile/domain-recovery.js.map +0 -1
- package/dist/profile/first-roles.d.ts +0 -30
- package/dist/profile/first-roles.d.ts.map +0 -1
- package/dist/profile/first-roles.js +0 -83
- package/dist/profile/first-roles.js.map +0 -1
- package/dist/profile/goal-plugin.d.ts +0 -38
- package/dist/profile/goal-plugin.d.ts.map +0 -1
- package/dist/profile/goal-plugin.js +0 -132
- package/dist/profile/goal-plugin.js.map +0 -1
- package/dist/profile/plan-plugin.d.ts +0 -44
- package/dist/profile/plan-plugin.d.ts.map +0 -1
- package/dist/profile/plan-plugin.js +0 -157
- package/dist/profile/plan-plugin.js.map +0 -1
- package/dist/profile/policy-manifest.d.ts +0 -53
- package/dist/profile/policy-manifest.d.ts.map +0 -1
- package/dist/profile/policy-manifest.js +0 -53
- package/dist/profile/policy-manifest.js.map +0 -1
- package/dist/profile/role-assembly.d.ts +0 -47
- package/dist/profile/role-assembly.d.ts.map +0 -1
- package/dist/profile/role-assembly.js +0 -31
- package/dist/profile/role-assembly.js.map +0 -1
- package/dist/profile/role-catalog.d.ts +0 -43
- package/dist/profile/role-catalog.d.ts.map +0 -1
- package/dist/profile/role-catalog.js +0 -132
- package/dist/profile/role-catalog.js.map +0 -1
- package/dist/profile/role-orchestrator.d.ts +0 -123
- package/dist/profile/role-orchestrator.d.ts.map +0 -1
- package/dist/profile/role-orchestrator.js +0 -195
- package/dist/profile/role-orchestrator.js.map +0 -1
- package/dist/profile/role-runner.d.ts +0 -99
- package/dist/profile/role-runner.d.ts.map +0 -1
- package/dist/profile/role-runner.js +0 -79
- package/dist/profile/role-runner.js.map +0 -1
- package/dist/profile/root-facade.d.ts +0 -36
- package/dist/profile/root-facade.d.ts.map +0 -1
- package/dist/profile/root-facade.js +0 -49
- package/dist/profile/root-facade.js.map +0 -1
- package/dist/profile/skill-discovery-wiring.d.ts +0 -58
- package/dist/profile/skill-discovery-wiring.d.ts.map +0 -1
- package/dist/profile/skill-discovery-wiring.js +0 -80
- package/dist/profile/skill-discovery-wiring.js.map +0 -1
- package/dist/profile/state-store.d.ts +0 -62
- package/dist/profile/state-store.d.ts.map +0 -1
- package/dist/profile/state-store.js +0 -144
- package/dist/profile/state-store.js.map +0 -1
- package/dist/profile/todo-plugin.d.ts +0 -37
- package/dist/profile/todo-plugin.d.ts.map +0 -1
- package/dist/profile/todo-plugin.js +0 -137
- package/dist/profile/todo-plugin.js.map +0 -1
- package/dist/server/create-harness.d.ts +0 -26
- package/dist/server/create-harness.d.ts.map +0 -1
- package/dist/server/create-harness.js +0 -106
- package/dist/server/create-harness.js.map +0 -1
- /package/{dist/plugins → bundled-plugins/mcp-http/dist}/mcp-http.d.ts +0 -0
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * createAgentSession() options. The SDK does the heavy lifting.\n */\n\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { type ImageContent, modelsAreEqual } from \"@agent-forge/ai\";\nimport { setCapabilityOverrides } from \"@agent-forge/tui\";\nimport chalk from \"chalk\";\nimport { type Args, isValidHostLogLevel, type Mode, normalizeSessionName, parseArgs, printHelp } from \"./cli/args.ts\";\nimport {\n\ttype AuthCheckResult,\n\tcheckProviderAuth,\n\tcreateAuthCheckModelRuntime,\n\tgetProviderCredential,\n} from \"./cli/auth-check.ts\";\nimport {\n\ttype AuthCommand,\n\tAuthCommandError,\n\tgetAuthCommandName,\n\tgetAuthCommandUsage,\n\tisAuthCommandHelp,\n\tparseAuthCommand,\n\tprintAuthCommandHelp,\n\tvalidateAuthCommandArgs,\n} from \"./cli/auth-command.ts\";\nimport { resolveCredentialForPrint } from \"./cli/credential-print.ts\";\nimport { processFileArguments } from \"./cli/file-processor.ts\";\nimport { buildInitialMessage } from \"./cli/initial-message.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { handlePluginEcosystemCommand } from \"./cli/plugin-command.ts\";\nimport type { PluginManagerControllerV1 } from \"./cli/plugin-manager-controller.ts\";\nimport { runServeMode } from \"./cli/serve.ts\";\nimport { resolveSessionPath, selectSession } from \"./cli/session-picker.ts\";\nimport { shouldRunFirstTimeSetup, showFirstTimeSetup, showStartupSelector } from \"./cli/startup-ui.ts\";\nimport { runTraceView } from \"./cli/trace-view.ts\";\nimport {\n\tAPP_NAME,\n\tCONFIG_DIR_NAME,\n\tENV_SESSION_DIR,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetPackageDir,\n\tgetSessionsDir,\n\tVERSION,\n} from \"./config.ts\";\nimport { type CreateAgentSessionRuntimeFactory, createAgentSessionRuntime } from \"./core/agent-session-runtime.ts\";\nimport {\n\ttype AgentSessionRuntimeDiagnostic,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionServices,\n} from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage, ReadOnlyAuthStorage } from \"./core/auth-storage.ts\";\nimport { exportFromFile } from \"./core/export-html/index.ts\";\nimport type { InteractionHostV1 } from \"./core/extensions/index.ts\";\nimport { applyHttpProxySettings, configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { setI18nLanguage, t } from \"./core/i18n/index.ts\";\nimport { createHostLogger, type HostLogger, type HostLogLevel } from \"./core/logger.ts\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.ts\";\nimport { restoreStdout, takeOverStdout } from \"./core/output-guard.ts\";\nimport type { CreateAgentSessionOptions } from \"./core/sdk.ts\";\nimport {\n\tformatMissingSessionCwdPrompt,\n\tgetMissingSessionCwdIssue,\n\tMissingSessionCwdError,\n\ttype SessionCwdIssue,\n} from \"./core/session-cwd.ts\";\nimport { assertValidSessionId, SessionManager } from \"./core/session-manager.ts\";\nimport { collectSettingsDiagnostics, deduplicateDiagnostics } from \"./core/settings-diagnostics.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { sweepTraceFiles } from \"./core/trace-retention.ts\";\nimport type { ActivePluginBindingResolverV1 } from \"./plugins/ecosystem/active-bindings.ts\";\nimport {\n\tcreateDefaultActivePluginBindingsResolverV1,\n\tdefaultPluginHostFactsV1,\n} from \"./plugins/ecosystem/default-active-bindings.ts\";\nimport { runNodePluginBootstrapV1 } from \"./plugins/ecosystem/node-plugin-bootstrap.ts\";\nimport type { PluginBootstrapResultV1 } from \"./plugins/ecosystem/plugin-bootstrap.ts\";\nimport type { PluginSelectionV1 } from \"./plugins/ecosystem/selection.ts\";\nimport { createPluginSelectionStoreV1 } from \"./plugins/ecosystem/selection-store.ts\";\nimport type { HostFactsV1 } from \"./plugins/ecosystem/types.ts\";\nimport {\n\ttype BuiltinPluginManifestOverridesV1,\n\ttype BuiltinPluginProfileIdV1,\n\tdefaultBuiltinVerifiedPluginsV1,\n\tisBuiltinPluginProfileIdV1,\n} from \"./profile/plugin-profiles.ts\";\nimport type { VerifiedToolPluginV1 } from \"./profile/profile-assembly.ts\";\nimport { isBuiltinSuiteId } from \"./profiles/builtin-suites.ts\";\nimport {\n\tclearDanglingSuiteSettings,\n\tcreateSuite,\n\tdeleteSuite,\n\tfindSuiteSessionRefs,\n\treleaseTrashedSuite,\n\tresetSuite,\n\tSuiteLifecycleError,\n\tsweepSuiteTrash,\n} from \"./profiles/suite-lifecycle.ts\";\nimport {\n\tgetSuiteWorkspaceDir,\n\tlistSuiteIds,\n\tSUITE_ENV_VAR,\n\tSUITE_MANIFEST_FILENAME,\n\tSuiteRebindError,\n\tSuiteResolutionError,\n} from \"./profiles/suite-loader.ts\";\n\ntype AppMode = \"interactive\" | \"print\" | \"json\" | \"rpc\";\n\nimport { createSubagentMailbox, createTurnProgressSourceV1 } from \"@agent-forge/protocol/subagent\";\nimport { agentSessionsDir } from \"./core/agent-session-paths.ts\";\nimport { findSessionFile, readAgentSession } from \"./core/agent-session-store.ts\";\nimport {\n\ttype AgentTaskChildProfileV1,\n\tparseAgentTaskChildProfileV1,\n\ttype SubagentCommunicationWiringV1,\n} from \"./core/extensions/public-api.ts\";\nimport { printTimings, resetTimings, time } from \"./core/timings.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { cleanupManagedInstall, handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport { runSubagentTaskRunner } from \"./plugins/subagent-task/runner-entry.ts\";\nimport { createSubagentTaskSessionFactoryV1 } from \"./plugins/subagent-task/session-factory.ts\";\nimport { isLocalPath, normalizePath, resolvePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\n/**\n * Process-level host logger (设计 §5), created lazily by {@link main}. The\n * logger owns the process-wide uncaughtException/unhandledRejection hooks, so\n * repeated `main()` invocations (tests, embedding loops) must reuse the first\n * instance instead of accumulating listeners.\n */\nlet processHostLogger: HostLogger | undefined;\n\n/**\n * Read all content from piped stdin.\n * Returns undefined if stdin is a TTY (interactive terminal).\n */\nasync function readPipedStdin(): Promise<string | undefined> {\n\t// If stdin is a TTY, we're running interactively - don't read stdin\n\tif (process.stdin.isTTY) {\n\t\treturn undefined;\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tlet data = \"\";\n\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\t\tprocess.stdin.on(\"end\", () => {\n\t\t\tresolve(data.trim() || undefined);\n\t\t});\n\t\tprocess.stdin.resume();\n\t});\n}\n\n/**\n * Suite 漂移/升级提示降噪(借鉴 lastChangelogVersion 的\"记已见版本\"模式):\n * 同一 suite 的同版本漂移/升级诊断只呈现一次——首次见到时保留并记录 ack,\n * 之后相同指纹的提示在启动面静默(诊断仍可经 /debug 面查看)。新指纹\n * (锁内容变化、更高的 factory revision)会重新提示。\n */\nfunction filterAcknowledgedSuiteNotices(\n\tdiagnostics: readonly AgentSessionRuntimeDiagnostic[],\n\tsettingsManager: SettingsManager,\n): AgentSessionRuntimeDiagnostic[] {\n\tconst driftPattern = /^Suite \"([^\"]+)\" profile lock (drift|migration required): (.+)$/;\n\tconst upgradePattern = /^Suite \"([^\"]+)\": factory revision (\\d+) available/;\n\tconst kept: AgentSessionRuntimeDiagnostic[] = [];\n\tfor (const diagnostic of diagnostics) {\n\t\tconst drift = driftPattern.exec(diagnostic.message);\n\t\tconst upgrade = drift === null ? upgradePattern.exec(diagnostic.message) : undefined;\n\t\tif (drift === null && upgrade === null) {\n\t\t\tkept.push(diagnostic);\n\t\t\tcontinue;\n\t\t}\n\t\tconst upgradeRevisionMatch = upgrade?.[2];\n\t\tconst suiteId = drift?.[1] ?? upgrade?.[1];\n\t\tif (suiteId === undefined) {\n\t\t\tkept.push(diagnostic);\n\t\t\tcontinue;\n\t\t}\n\t\tconst previous = settingsManager.getSuiteNoticeAcknowledgement(suiteId);\n\t\tif (drift !== null) {\n\t\t\tconst digest = drift[3] ?? \"\";\n\t\t\tif (previous?.driftDigest === digest) continue;\n\t\t\tsettingsManager.setSuiteNoticeAcknowledgement(suiteId, {\n\t\t\t\t...(previous ?? {}),\n\t\t\t\tdriftDigest: digest,\n\t\t\t});\n\t\t} else if (upgrade !== null && upgradeRevisionMatch !== undefined) {\n\t\t\tconst revision = Number.parseInt(upgradeRevisionMatch, 10);\n\t\t\tif (previous?.upgradeRevision !== undefined && previous.upgradeRevision >= revision) continue;\n\t\t\tsettingsManager.setSuiteNoticeAcknowledgement(suiteId, {\n\t\t\t\t...(previous ?? {}),\n\t\t\t\tupgradeRevision: revision,\n\t\t\t});\n\t\t}\n\t\tkept.push(diagnostic);\n\t}\n\treturn kept;\n}\n\nfunction reportDiagnostics(diagnostics: readonly AgentSessionRuntimeDiagnostic[]): void {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : diagnostic.type === \"warning\" ? chalk.yellow : chalk.dim;\n\t\tconst message =\n\t\t\tdiagnostic.type === \"error\"\n\t\t\t\t? t(\"Error: {message}\", { message: diagnostic.message })\n\t\t\t\t: diagnostic.type === \"warning\"\n\t\t\t\t\t? t(\"Warning: {message}\", { message: diagnostic.message })\n\t\t\t\t\t: diagnostic.message;\n\t\tconsole.error(color(message));\n\t}\n}\n\nfunction isTruthyEnvFlag(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\nfunction resolveAppMode(parsed: Args, stdinIsTTY: boolean, stdoutIsTTY: boolean): AppMode {\n\t// Headless subagent runner (D-045): stdout is the subagent-task protocol\n\t// channel, so this mode must never classify as interactive.\n\tif (parsed.subagentRunner === true) {\n\t\treturn \"print\";\n\t}\n\tif (parsed.mode === \"rpc\") {\n\t\treturn \"rpc\";\n\t}\n\tif (parsed.mode === \"json\") {\n\t\treturn \"json\";\n\t}\n\tif (parsed.print || !stdinIsTTY || !stdoutIsTTY) {\n\t\treturn \"print\";\n\t}\n\treturn \"interactive\";\n}\n\nfunction toPrintOutputMode(appMode: AppMode): Exclude<Mode, \"rpc\"> {\n\treturn appMode === \"json\" ? \"json\" : \"text\";\n}\n\nfunction isPlainRuntimeMetadataCommand(parsed: Args): boolean {\n\treturn !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);\n}\n\nasync function runAuthCommand(args: string[]): Promise<boolean> {\n\tif (isAuthCommandHelp(args)) {\n\t\tprintAuthCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet command: AuthCommand | undefined;\n\ttry {\n\t\tcommand = parseAuthCommand(args);\n\t} catch (error) {\n\t\tconst message = error instanceof AuthCommandError ? error.message : t(\"Failed to parse auth command\");\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tif (!command) return false;\n\n\tconst parsed = parseArgs(command.args);\n\t// Unknown long options keep the dedicated \"Invalid arguments\" surface; every\n\t// other parse diagnostic keeps the auth-check failure semantics (exit 2 for\n\t// `auth check`) via the AuthCommandError path inside the try below.\n\tconst unknownLongOptions = parsed.diagnostics.filter((diagnostic) =>\n\t\tdiagnostic.message.startsWith(\"Unknown option: --\"),\n\t);\n\tif (unknownLongOptions.length > 0) {\n\t\tfor (const diagnostic of unknownLongOptions) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: diagnostic.message })));\n\t\t}\n\t\tconsole.error(chalk.red(t('Invalid arguments for \"{command}\".', { command: getAuthCommandName(command.kind) })));\n\t\tconsole.error(\n\t\t\tchalk.dim(\n\t\t\t\tt('Use \"{help}\" or \"{usage}\".', {\n\t\t\t\t\thelp: `${APP_NAME} --help`,\n\t\t\t\t\tusage: getAuthCommandUsage(command.kind),\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tif (parsed.diagnostics.length > 0) {\n\t\t\tthrow new AuthCommandError(parsed.diagnostics.map((diagnostic) => diagnostic.message).join(\"\\n\"));\n\t\t}\n\t\tif (command.kind !== \"check\") {\n\t\t\tconst signal = AbortSignal.timeout(15_000);\n\t\t\tconst modelRuntime = await ModelRuntime.create({ allowModelNetwork: false, signal });\n\t\t\tconst credential = await resolveCredentialForPrint(\n\t\t\t\tparsed,\n\t\t\t\tmodelRuntime,\n\t\t\t\tcommand.kind,\n\t\t\t\tcommand.minExpiryMs,\n\t\t\t\tsignal,\n\t\t\t);\n\t\t\tprocess.stdout.write(`${credential}\\n`);\n\t\t\treturn true;\n\t\t}\n\n\t\tconst requestedAuth = validateAuthCommandArgs(parsed, command.kind);\n\t\tlet result: AuthCheckResult;\n\t\tlet credential: string | undefined;\n\t\ttry {\n\t\t\tconst credentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();\n\t\t\tconst modelRuntime = await createAuthCheckModelRuntime(credentials);\n\t\t\tresult = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh });\n\t\t\tif (command.credentials && result.status === \"ready\") {\n\t\t\t\tcredential = await getProviderCredential(result.provider, modelRuntime, credentials, {\n\t\t\t\t\trefresh: !command.noRefresh,\n\t\t\t\t});\n\t\t\t\tif (!credential) {\n\t\t\t\t\tresult = { status: \"not_ready\", provider: result.provider, reason: \"credential_not_available\" };\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\tresult = {\n\t\t\t\tstatus: \"invalid\",\n\t\t\t\tprovider: requestedAuth.provider ?? requestedAuth.model!,\n\t\t\t\treason: \"invalid_state\",\n\t\t\t};\n\t\t}\n\t\tconst output = command.json\n\t\t\t? JSON.stringify({ ...result, ...(credential ? { credentials: credential } : {}) })\n\t\t\t: (credential ?? result.status);\n\t\tprocess.stdout.write(`${output}\\n`);\n\t\tprocess.exitCode = result.status === \"ready\" ? 0 : result.status === \"not_ready\" ? 1 : 2;\n\t} catch (error) {\n\t\tconst message = error instanceof AuthCommandError ? error.message : t(\"Failed to resolve credential\");\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exitCode = command.kind === \"check\" ? 2 : 1;\n\t}\n\treturn true;\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n\tstdinContent?: string,\n): Promise<{\n\tinitialMessage?: string;\n\tinitialImages?: ImageContent[];\n}> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn buildInitialMessage({ parsed, stdinContent });\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\treturn buildInitialMessage({\n\t\tparsed,\n\t\tfileText: text,\n\t\tfileImages: images,\n\t\tstdinContent,\n\t});\n}\n\nfunction findLocalSessionByExactId(\n\tsessionId: string,\n\tcwd: string,\n\tsessionDir?: string,\n): { type: \"local\"; path: string } | undefined {\n\tconst path = SessionManager.findById(cwd, sessionId, sessionDir);\n\treturn path ? { type: \"local\", path } : undefined;\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nfunction printSuiteLifecycleError(error: unknown): void {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n}\n\nfunction suiteWorkspaceExists(agentDir: string, id: string): boolean {\n\treturn existsSync(join(getSuiteWorkspaceDir(agentDir, id), SUITE_MANIFEST_FILENAME));\n}\n\n/**\n * Suite lifecycle one-shot actions (设计 §9, M4): --suite-create/--suite-delete/\n * --suite-reset. Every performed action terminates the process; without any\n * lifecycle flag this returns and startup continues. Non-interactive stdin\n * refuses destructive actions (safe default).\n */\nasync function handleSuiteLifecycleCommands(parsed: Args, cwd: string, agentDir: string): Promise<void> {\n\tif (parsed.suiteCreate !== undefined) {\n\t\ttry {\n\t\t\tconst result = createSuite({\n\t\t\t\tagentDir,\n\t\t\t\tid: parsed.suiteCreate,\n\t\t\t\t...(parsed.cloneFrom === undefined ? {} : { cloneFrom: parsed.cloneFrom }),\n\t\t\t});\n\t\t\tconsole.log(t('Created suite \"{id}\" at {dir}', { id: result.suiteId, dir: result.suiteDir }));\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\tif (parsed.cloneFrom !== undefined) {\n\t\tconsole.error(chalk.red(t(\"Error: --clone-from requires --suite-create\")));\n\t\tprocess.exit(1);\n\t}\n\n\tif (parsed.suiteDelete !== undefined) {\n\t\tconst id = parsed.suiteDelete;\n\t\tif (isBuiltinSuiteId(id)) {\n\t\t\tprintSuiteLifecycleError(new SuiteLifecycleError(\"delete\", id, [`builtin suite \"${id}\" cannot be deleted`]));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (!suiteWorkspaceExists(agentDir, id)) {\n\t\t\tprintSuiteLifecycleError(new SuiteResolutionError(id, listSuiteIds(agentDir)));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst refs = findSuiteSessionRefs(agentDir, id);\n\t\tif (refs.length > 0) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\tt('Error: suite \"{id}\" is referenced by {count} existing session(s); deletion refused:', {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tcount: refs.length,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t\tfor (const ref of refs) {\n\t\t\t\tconsole.error(` ${ref.sessionId} ${ref.path}`);\n\t\t\t}\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst suiteDir = getSuiteWorkspaceDir(agentDir, id);\n\t\tconsole.log(\n\t\t\tt('Deleting suite \"{id}\": the workspace directory {dir} will be moved to the trash and released.', {\n\t\t\t\tid,\n\t\t\t\tdir: suiteDir,\n\t\t\t}),\n\t\t);\n\t\tif (!process.stdin.isTTY) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\tt(\n\t\t\t\t\t\t'Refusing to delete suite \"{id}\" without an interactive confirmation (non-interactive stdin). Re-run in a terminal to confirm.',\n\t\t\t\t\t\t{ id },\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (!(await promptConfirm(t('Delete suite \"{id}\"?', { id })))) {\n\t\t\tconsole.log(t('Aborted: suite \"{id}\" was not deleted.', { id }));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\ttry {\n\t\t\tconst result = deleteSuite({ agentDir, id, refs });\n\t\t\tconst cleanup = clearDanglingSuiteSettings(SettingsManager.create(cwd, agentDir), id);\n\t\t\tfor (const scope of cleanup.clearedScopes) {\n\t\t\t\tconsole.log(t('Cleared the {scope} settings \"suite\" key (pointed at \"{id}\").', { scope, id }));\n\t\t\t}\n\t\t\treleaseTrashedSuite(result.trashPath);\n\t\t\tconsole.log(\n\t\t\t\tt('Deleted suite \"{id}\"; the workspace was moved to {trashPath} and is being released.', {\n\t\t\t\t\tid,\n\t\t\t\t\ttrashPath: result.trashPath,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.suiteReset !== undefined) {\n\t\tconst id = parsed.suiteReset;\n\t\tif (!isBuiltinSuiteId(id)) {\n\t\t\tconst message = listSuiteIds(agentDir).includes(id)\n\t\t\t\t? t('Suite \"{id}\" is a user suite; only builtin suites can be reset — use --suite-delete instead.', {\n\t\t\t\t\t\tid,\n\t\t\t\t\t})\n\t\t\t\t: new SuiteResolutionError(id, listSuiteIds(agentDir)).message;\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\ttry {\n\t\t\tconst plan = resetSuite({ agentDir, id });\n\t\t\tif (plan.diffText.length === 0) {\n\t\t\t\tconsole.log(t('Suite \"{id}\" already matches the factory contents; nothing to reset.', { id }));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tconsole.log(`${t('Resetting builtin suite \"{id}\" to the factory contents:', { id })}\\n`);\n\t\t\tconsole.log(plan.diffText);\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.red(\n\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t'Refusing to reset suite \"{id}\" without an interactive confirmation (non-interactive stdin). Review the diff above and re-run in a terminal to confirm.',\n\t\t\t\t\t\t\t{ id },\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tif (!(await promptConfirm(t('Apply reset of suite \"{id}\"?', { id })))) {\n\t\t\t\tconsole.log(t('Aborted: suite \"{id}\" was not reset.', { id }));\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tconst result = plan.apply();\n\t\t\tconsole.log(\n\t\t\t\tt('Suite \"{id}\" was reset to the factory contents (profile lock generation {generation}).', {\n\t\t\t\t\tid,\n\t\t\t\t\tgeneration: result.lock.generation,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n}\n\nfunction validateForkFlags(parsed: Args): void {\n\tif (!parsed.fork) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(\n\t\t\tchalk.red(t(\"Error: --fork cannot be combined with {flags}\", { flags: conflictingFlags.join(\", \") })),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction validateSessionIdFlags(parsed: Args): void {\n\tif (parsed.sessionId === undefined) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\tt(\n\t\t\t\t\t\"Error: --session-id cannot be combined with {flags}. To resume that exact session, drop the other flags and use --session-id alone (or use --continue to resume the most recent session).\",\n\t\t\t\t\t{ flags: conflictingFlags.join(\", \") },\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\ttry {\n\t\tassertValidSessionId(parsed.sessionId);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction openSessionOrExit(path: string, sessionDir?: string): SessionManager {\n\ttry {\n\t\treturn SessionManager.open(path, sessionDir);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction forkSessionOrExit(sourcePath: string, cwd: string, sessionDir?: string, sessionId?: string): SessionManager {\n\ttry {\n\t\treturn SessionManager.forkFrom(sourcePath, cwd, sessionDir, { id: sessionId });\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nexport async function createSessionManager(\n\tparsed: Args,\n\tcwd: string,\n\tsessionDir: string | undefined,\n\tsettingsManager: SettingsManager,\n): Promise<SessionManager> {\n\tif (parsed.noSession || parsed.help || parsed.listModels !== undefined) {\n\t\treturn SessionManager.inMemory(cwd, parsed.sessionId !== undefined ? { id: parsed.sessionId } : undefined);\n\t}\n\n\tif (parsed.fork) {\n\t\tif (parsed.sessionId) {\n\t\t\tconst existingTarget = findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);\n\t\t\tif (existingTarget) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.red(t(\"Session already exists with id '{sessionId}'\", { sessionId: parsed.sessionId })),\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t}\n\n\t\tconst resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\tcase \"global\":\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir, parsed.sessionId);\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(t(\"No session found matching '{arg}'\", { arg: resolved.arg })));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.session) {\n\t\tconst resolved = await resolveSessionPath(parsed.session, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\t\treturn openSessionOrExit(resolved.path, sessionDir);\n\n\t\t\tcase \"global\": {\n\t\t\t\tconsole.log(chalk.yellow(t(\"Session found in different project: {cwd}\", { cwd: resolved.cwd })));\n\t\t\t\tconst shouldFork = await promptConfirm(t(\"Fork this session into current directory?\"));\n\t\t\t\tif (!shouldFork) {\n\t\t\t\t\tconsole.log(chalk.dim(t(\"Aborted.\")));\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\t\t\t}\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(t(\"No session found matching '{arg}'\", { arg: resolved.arg })));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.resume) {\n\t\ttry {\n\t\t\tconst selectedPath = await selectSession(\n\t\t\t\t(onProgress, signal) => SessionManager.list(cwd, sessionDir, onProgress, signal),\n\t\t\t\t(onProgress, signal) => SessionManager.listAll(sessionDir, onProgress, signal),\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tif (!selectedPath) {\n\t\t\t\tconsole.log(chalk.dim(t(\"No session selected\")));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn SessionManager.open(selectedPath, sessionDir);\n\t\t} finally {\n\t\t\tstopThemeWatcher();\n\t\t}\n\t}\n\n\tif (parsed.continue) {\n\t\treturn SessionManager.continueRecent(cwd, sessionDir);\n\t}\n\n\tif (parsed.sessionId) {\n\t\tconst existingSession = findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);\n\t\tif (existingSession) {\n\t\t\treturn SessionManager.open(existingSession.path, sessionDir);\n\t\t}\n\t\tconsole.error(\n\t\t\tchalk.yellow(\n\t\t\t\tt(\"Warning: No project session found with id '{sessionId}'; creating a new session with that id.\", {\n\t\t\t\t\tsessionId: parsed.sessionId,\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn SessionManager.create(cwd, sessionDir, { id: parsed.sessionId });\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\thasExistingSession: boolean,\n\tmodelRuntime: ModelRuntime,\n\tsettingsManager: SettingsManager,\n): {\n\toptions: CreateAgentSessionOptions;\n\tcliThinkingFromModel: boolean;\n\tdiagnostics: AgentSessionRuntimeDiagnostic[];\n} {\n\tconst options: CreateAgentSessionOptions = {};\n\t// CRM 座席发现 F1/F2:显式迁移入口——--rebind-suite 采纳当前插件集并重写绑定。\n\tif (parsed.rebindSuite) options.allowSuiteRebind = true;\n\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\tlet cliThinkingFromModel = false;\n\n\t// Model from CLI\n\t// - supports --provider <name> --model <pattern>\n\t// - supports --model <provider>/<pattern>\n\tif (parsed.model) {\n\t\tconst resolved = resolveCliModel({\n\t\t\tcliProvider: parsed.provider,\n\t\t\tcliModel: parsed.model,\n\t\t\tcliThinking: parsed.thinking,\n\t\t\tmodelRuntime,\n\t\t});\n\t\tif (resolved.warning) {\n\t\t\tdiagnostics.push({ type: \"warning\", message: resolved.warning });\n\t\t}\n\t\tif (resolved.error) {\n\t\t\tdiagnostics.push({ type: \"error\", message: resolved.error });\n\t\t}\n\t\tif (resolved.model) {\n\t\t\toptions.model = resolved.model;\n\t\t\t// Allow \"--model <pattern>:<thinking>\" as a shorthand.\n\t\t\t// Explicit --thinking still takes precedence (applied later).\n\t\t\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = resolved.thinkingLevel;\n\t\t\t\tcliThinkingFromModel = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!options.model && scopedModels.length > 0 && !hasExistingSession) {\n\t\t// Check if saved default is in scoped models - use it if so, otherwise first scoped model\n\t\tconst savedProvider = settingsManager.getDefaultProvider();\n\t\tconst savedModelId = settingsManager.getDefaultModel();\n\t\tconst savedModel = savedProvider && savedModelId ? modelRuntime.getModel(savedProvider, savedModelId) : undefined;\n\t\tconst savedInScope = savedModel ? scopedModels.find((sm) => modelsAreEqual(sm.model, savedModel)) : undefined;\n\n\t\tif (savedInScope) {\n\t\t\toptions.model = savedInScope.model;\n\t\t\t// Use thinking level from scoped model config if explicitly set\n\t\t\tif (!parsed.thinking && savedInScope.thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = savedInScope.thinkingLevel;\n\t\t\t}\n\t\t} else {\n\t\t\toptions.model = scopedModels[0].model;\n\t\t\t// Use thinking level from first scoped model if explicitly set\n\t\t\tif (!parsed.thinking && scopedModels[0].thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = scopedModels[0].thinkingLevel;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Thinking level from CLI (takes precedence over scoped model thinking levels set above)\n\tif (parsed.thinking) {\n\t\toptions.thinkingLevel = parsed.thinking;\n\t}\n\n\t// Scoped models for Ctrl+P cycling\n\t// Keep thinking level undefined when not explicitly set in the model pattern.\n\t// Undefined means \"inherit current session thinking level\" during cycling.\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((sm) => ({\n\t\t\tmodel: sm.model,\n\t\t\tthinkingLevel: sm.thinkingLevel,\n\t\t}));\n\t}\n\n\t// API key from CLI - set as a non-persistent runtime override\n\t// (handled by caller before createAgentSession)\n\n\t// Tools\n\tif (parsed.noTools) {\n\t\toptions.noTools = \"all\";\n\t} else if (parsed.noBuiltinTools) {\n\t\toptions.noTools = \"builtin\";\n\t}\n\tif (parsed.tools) {\n\t\toptions.tools = [...parsed.tools];\n\t}\n\tif (parsed.excludeTools) {\n\t\toptions.excludeTools = [...parsed.excludeTools];\n\t}\n\tif (parsed.suite) {\n\t\toptions.suite = parsed.suite;\n\t}\n\n\treturn { options, cliThinkingFromModel, diagnostics };\n}\n\nfunction resolveCliPaths(cwd: string, paths: string[] | undefined): string[] | undefined {\n\treturn paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));\n}\n\nasync function promptForMissingSessionCwd(\n\tissue: SessionCwdIssue,\n\tsettingsManager: SettingsManager,\n): Promise<string | undefined> {\n\treturn showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [\n\t\t{ label: \"Continue\", value: issue.fallbackCwd },\n\t\t{ label: \"Cancel\", value: undefined },\n\t]);\n}\n\ninterface CliPluginSelection {\n\treadonly profileId?: BuiltinPluginProfileIdV1;\n\treadonly selectedPluginIds?: readonly string[];\n\treadonly disabledPluginIds?: readonly string[];\n\treadonly diagnostics: readonly AgentSessionRuntimeDiagnostic[];\n}\n\nfunction selectionDiagnostics(\n\tstatus: \"invalid\" | \"cancelled\",\n\tdiagnostics: readonly { readonly code: string; readonly message: string }[],\n): AgentSessionRuntimeDiagnostic[] {\n\treturn diagnostics.map((item) => ({\n\t\ttype: \"error\" as const,\n\t\tmessage: `Plugin selection ${status} (${item.code}): ${item.message}`,\n\t}));\n}\n\n/**\n * Resolve explicit CLI selection and the optional persisted profile snapshot.\n * The store is deliberately not read for an ordinary run, so a user's saved\n * plugin choices cannot silently change the default session surface.\n */\nasync function resolveCliPluginSelection(parsed: Args, agentDir: string, cwd: string): Promise<CliPluginSelection> {\n\tconst hasExplicitSelection =\n\t\tparsed.pluginProfile !== undefined ||\n\t\tparsed.plugins !== undefined ||\n\t\tparsed.disabledPlugins !== undefined ||\n\t\tparsed.pluginSelectionScope !== undefined;\n\tif (!hasExplicitSelection || parsed.noPlugins) return { diagnostics: [] };\n\tif (parsed.pluginProfile === undefined && parsed.plugins === undefined && parsed.disabledPlugins === undefined) {\n\t\treturn { diagnostics: [{ type: \"error\", message: \"--plugin-scope requires an explicit plugin selection\" }] };\n\t}\n\n\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\tconst selectionScope = parsed.pluginSelectionScope ?? \"global\";\n\tconst selectionPath =\n\t\tselectionScope === \"project\"\n\t\t\t? join(cwd, CONFIG_DIR_NAME, \".plugin-selection.json\")\n\t\t\t: join(agentDir, \".plugin-selection.json\");\n\tconst store = createPluginSelectionStoreV1({ filePath: selectionPath });\n\tlet persistedResult: Awaited<ReturnType<typeof store.read>>;\n\ttry {\n\t\tpersistedResult = await store.read();\n\t} catch {\n\t\tdiagnostics.push({ type: \"error\", message: \"Plugin selection could not be read\" });\n\t\treturn { diagnostics };\n\t}\n\tif (persistedResult.status === \"invalid\" || persistedResult.status === \"cancelled\") {\n\t\tdiagnostics.push(...selectionDiagnostics(persistedResult.status, persistedResult.diagnostics));\n\t\treturn { diagnostics };\n\t}\n\n\tconst explicitProfileId = parsed.pluginProfile;\n\tlet profileId: BuiltinPluginProfileIdV1 | undefined;\n\tif (explicitProfileId !== undefined) {\n\t\tif (!isBuiltinPluginProfileIdV1(explicitProfileId)) {\n\t\t\tdiagnostics.push({ type: \"error\", message: `Unknown plugin profile: ${explicitProfileId}` });\n\t\t\treturn { diagnostics };\n\t\t}\n\t\tprofileId = explicitProfileId;\n\t}\n\n\tlet persistedSelection: PluginSelectionV1 | undefined;\n\tif (profileId !== undefined) {\n\t\tpersistedSelection = persistedResult.snapshot.selections.find((selection) => selection.profileId === profileId);\n\t} else if (parsed.plugins !== undefined || parsed.disabledPlugins !== undefined) {\n\t\tif (persistedResult.snapshot.selections.length !== 1) {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage:\n\t\t\t\t\tpersistedResult.snapshot.selections.length === 0\n\t\t\t\t\t\t? \"--plugin/--disable-plugin requires --plugin-profile or one persisted plugin profile\"\n\t\t\t\t\t\t: \"--plugin/--disable-plugin requires --plugin-profile when multiple persisted profiles exist\",\n\t\t\t});\n\t\t\treturn { diagnostics };\n\t\t}\n\t\tpersistedSelection = persistedResult.snapshot.selections[0];\n\t\tif (persistedSelection !== undefined && isBuiltinPluginProfileIdV1(persistedSelection.profileId)) {\n\t\t\tprofileId = persistedSelection.profileId;\n\t\t} else {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `Unknown persisted plugin profile: ${persistedSelection?.profileId ?? \"\"}`,\n\t\t\t});\n\t\t\treturn { diagnostics };\n\t\t}\n\t}\n\n\treturn {\n\t\t...(profileId === undefined ? {} : { profileId }),\n\t\t...(parsed.plugins !== undefined\n\t\t\t? { selectedPluginIds: Object.freeze([...parsed.plugins]) }\n\t\t\t: persistedSelection === undefined\n\t\t\t\t? {}\n\t\t\t\t: { selectedPluginIds: persistedSelection.selectedPluginIds }),\n\t\t...(parsed.disabledPlugins !== undefined\n\t\t\t? { disabledPluginIds: Object.freeze([...parsed.disabledPlugins]) }\n\t\t\t: persistedSelection === undefined\n\t\t\t\t? {}\n\t\t\t\t: { disabledPluginIds: persistedSelection.disabledPluginIds }),\n\t\tdiagnostics,\n\t};\n}\n\nexport interface MainOptions {\n\t/** Host facts and runtime adapters used to resolve builtin plugin Profiles. */\n\tpluginHost?: HostFactsV1;\n\t/** Optional host-owned registry/installer manager for the global config UI. */\n\tpluginManagerController?: PluginManagerControllerV1;\n\t/** Optional host-owned registry/installer manager for project config UI. */\n\tprojectPluginManagerController?: PluginManagerControllerV1;\n\tverifiedPlugins?: readonly VerifiedToolPluginV1[];\n\t/** Explicit host-owned active installed manifests; never discovered implicitly. */\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1;\n\t/**\n\t * Optional host resolver for active state. The default CLI constructs the\n\t * built-in disk resolver (reads the agentDir install store and the\n\t * global/project plugin-state.json with a digest-only verifier); a host\n\t * injection still takes precedence. Network registries and signature trust\n\t * roots remain outside the default path.\n\t */\n\tresolveActivePluginBindings?: ActivePluginBindingResolverV1;\n}\n\nexport async function main(args: string[], options?: MainOptions) {\n\tresetTimings();\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env.AGENT_FORGE_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env.AGENT_FORGE_OFFLINE = \"1\";\n\t\tprocess.env.AGENT_FORGE_SKIP_VERSION_CHECK = \"1\";\n\t}\n\n\tif (await runAuthCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handlePluginEcosystemCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (process.platform === \"win32\") {\n\t\tcleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\t}\n\tcleanupManagedInstall();\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst bootstrapSettingsManager = SettingsManager.create(cwd, agentDir);\n\tsetI18nLanguage(bootstrapSettingsManager.getUiLanguage());\n\tapplyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher();\n\n\tif (await handlePackageCommand(args)) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tif (process.platform === \"win32\" && exitCode === 0 && args[0] === \"update\") {\n\t\t\t// We normally prefer process.exit(0) for package commands so bad extensions cannot keep\n\t\t\t// one-shot commands alive. On Windows, Node can assert after fetch() if process.exit(0)\n\t\t\t// runs during teardown; let successful `pi update` drain naturally instead.\n\t\t\t// https://github.com/nodejs/node/issues/56645\n\t\t\treturn;\n\t\t}\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\n\tconst configCommandOptions =\n\t\toptions?.pluginManagerController === undefined && options?.projectPluginManagerController === undefined\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\t...(options?.pluginManagerController === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { pluginManagerController: options.pluginManagerController }),\n\t\t\t\t\t...(options?.projectPluginManagerController === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { projectPluginManagerController: options.projectPluginManagerController }),\n\t\t\t\t};\n\tif (await handleConfigCommand(args, configCommandOptions)) {\n\t\treturn;\n\t}\n\n\tconst parsed = parseArgs(args);\n\tif (parsed.diagnostics.length > 0) {\n\t\tfor (const d of parsed.diagnostics) {\n\t\t\tconst color = d.type === \"error\" ? chalk.red : chalk.yellow;\n\t\t\tconsole.error(\n\t\t\t\tcolor(\n\t\t\t\t\td.type === \"error\"\n\t\t\t\t\t\t? t(\"Error: {message}\", { message: d.message })\n\t\t\t\t\t\t: t(\"Warning: {message}\", { message: d.message }),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (parsed.diagnostics.some((d) => d.type === \"error\")) {\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\ttime(\"parseArgs\");\n\n\t// 宿主进程日志(设计 §5):目录随 agentDir(<agentDir>/logs),级别按\n\t// --log-level → AGENT_FORGE_LOG_LEVEL → 默认 info 解析,保留窗口按\n\t// AGENT_FORGE_LOG_MAX_AGE_DAYS 解析(缺省 14,非法值回退默认)。logger 自带\n\t// uncaughtException/unhandledRejection 钩子(默认挂真实 process),一次性命令\n\t// 与 serve 模式同样获得崩溃兜底日志;logger 句柄无需显式 close(进程生命周期)。\n\t// 进程级单例:钩子随创建累积,重复创建会泄漏监听器;生产进程只 run 一次,\n\t// 测试等重复入口复用首例(级别以首次解析为准)。\n\tconst envLogLevel = process.env.AGENT_FORGE_LOG_LEVEL;\n\tconst hostLogLevel: HostLogLevel | undefined =\n\t\tparsed.logLevel ?? (envLogLevel !== undefined && isValidHostLogLevel(envLogLevel) ? envLogLevel : undefined);\n\tconst rawLogMaxAgeDays = process.env.AGENT_FORGE_LOG_MAX_AGE_DAYS;\n\tconst hostLogMaxAgeDays =\n\t\trawLogMaxAgeDays !== undefined && /^\\d+$/.test(rawLogMaxAgeDays)\n\t\t\t? Number.parseInt(rawLogMaxAgeDays, 10)\n\t\t\t: undefined;\n\tif (processHostLogger === undefined) {\n\t\tprocessHostLogger = createHostLogger({\n\t\t\tdir: join(agentDir, \"logs\"),\n\t\t\t...(hostLogLevel === undefined ? {} : { level: hostLogLevel }),\n\t\t\t...(hostLogMaxAgeDays === undefined ? {} : { maxAgeDays: hostLogMaxAgeDays }),\n\t\t});\n\t}\n\n\t// 轨迹保留(设计 §6):AGENT_FORGE_TRACE_MAX_AGE_DAYS(>0 整数开启;缺省/非法 =\n\t// 永久保留)。只清默认 sessions 根(根目录 + 一层子目录)下过期的 *.trace.jsonl,\n\t// 永不触碰会话文件;自定义 sessionDir 不在清扫范围。删除事实经 hostLogger 可见:\n\t// deleted>0 记 info,failed>0 记 warn。宿主启动一次性执行,失败不阻塞启动。\n\tconst rawTraceMaxAgeDays = process.env.AGENT_FORGE_TRACE_MAX_AGE_DAYS;\n\tconst traceMaxAgeDays =\n\t\trawTraceMaxAgeDays !== undefined && /^\\d+$/.test(rawTraceMaxAgeDays)\n\t\t\t? Number.parseInt(rawTraceMaxAgeDays, 10)\n\t\t\t: 0;\n\tif (traceMaxAgeDays > 0) {\n\t\tconst traceSweep = sweepTraceFiles(getSessionsDir(), { maxAgeDays: traceMaxAgeDays, now: Date.now });\n\t\tif (traceSweep.deleted > 0) {\n\t\t\tprocessHostLogger.info(\"retention\", \"trace sweep removed expired trace files\", {\n\t\t\t\tfields: { deleted: traceSweep.deleted, failed: traceSweep.failed },\n\t\t\t});\n\t\t}\n\t\tif (traceSweep.failed > 0) {\n\t\t\tprocessHostLogger.warn(\"retention\", \"trace sweep finished with failures\", {\n\t\t\t\tfields: { deleted: traceSweep.deleted, failed: traceSweep.failed },\n\t\t\t});\n\t\t}\n\t}\n\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.export) {\n\t\tlet result: string;\n\t\ttry {\n\t\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : t(\"Failed to export session\");\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconsole.log(t(\"Exported to: {result}\", { result }));\n\t\tprocess.exit(0);\n\t}\n\n\t// Trace viewer (设计 §8 第 3 期): same exit-style dispatch as --export above,\n\t// which also wins when both are given. The view command needs no runtime\n\t// service, so it runs before any session/manager creation; per the --export\n\t// precedent it is not registered in the --serve conflictingFlags list (this\n\t// dispatch exits before that check is reached).\n\tif (parsed.trace !== undefined) {\n\t\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\t\tconst sessionDir =\n\t\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\t\tbootstrapSettingsManager.getSessionDir();\n\t\tconst result = await runTraceView(parsed.trace, {\n\t\t\tjson: parsed.traceJson === true,\n\t\t\tcwd,\n\t\t\t...(sessionDir === undefined ? {} : { sessionDir }),\n\t\t\t...(parsed.traceKind === undefined ? {} : { kinds: parsed.traceKind }),\n\t\t\t...(parsed.traceLimit === undefined ? {} : { limit: parsed.traceLimit }),\n\t\t});\n\t\tif (!result.ok) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: result.message ?? \"Unknown error\" })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\n\t// Remote server mode (E3 tail): serve the coding-agent session runtime over\n\t// TCP and keep the process alive; no session manager or runtime is needed\n\t// for startup, so this runs before any session/runtime service is created.\n\tif (parsed.serve !== undefined) {\n\t\t// help/listModels must win over starting the server, and the generic\n\t\t// handlers below need the full runtime that serve mode deliberately\n\t\t// never creates; answer them here with the same output instead.\n\t\tif (parsed.help || parsed.listModels !== undefined) {\n\t\t\t// Align with the generic path: migrate legacy settings first so the\n\t\t\t// reported diagnostics reflect the post-migration state.\n\t\t\trunMigrations(cwd);\n\t\t\treportDiagnostics(collectSettingsDiagnostics(bootstrapSettingsManager));\n\t\t\tif (parsed.help) {\n\t\t\t\t// Extension CLI flags are registered by the resource loader, which\n\t\t\t\t// serve mode never builds; the generic help text stays accurate.\n\t\t\t\tprintHelp();\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tconst modelRuntime = await ModelRuntime.create({ signal: AbortSignal.timeout(15_000) });\n\t\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\t\tawait listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));\n\t\t\tprocess.exit(0);\n\t\t}\n\t\t// Prompt/session inputs would silently change nothing in serve mode, so\n\t\t// reject them up front with the concrete conflicting flags.\n\t\tconst conflictingFlags = [\n\t\t\tparsed.print ? \"--print\" : undefined,\n\t\t\tparsed.messages.length > 0 ? \"positional args\" : undefined,\n\t\t\tparsed.fileArgs.length > 0 ? \"@file args\" : undefined,\n\t\t\tparsed.continue ? \"--continue\" : undefined,\n\t\t\tparsed.resume ? \"--resume\" : undefined,\n\t\t\tparsed.session ? \"--session\" : undefined,\n\t\t\tparsed.sessionId ? \"--session-id\" : undefined,\n\t\t\tparsed.fork ? \"--fork\" : undefined,\n\t\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t\t\tparsed.mode ? \"--mode\" : undefined,\n\t\t\tparsed.suiteCreate ? \"--suite-create\" : undefined,\n\t\t\tparsed.suiteDelete ? \"--suite-delete\" : undefined,\n\t\t\tparsed.suiteReset ? \"--suite-reset\" : undefined,\n\t\t\tparsed.cloneFrom ? \"--clone-from\" : undefined,\n\t\t].filter((flag): flag is string => flag !== undefined);\n\t\tif (conflictingFlags.length > 0) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(t(\"Error: --serve cannot be combined with {flags}\", { flags: conflictingFlags.join(\", \") })),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// Remaining options would be silently ignored; list the ones the user\n\t\t// actually passed so nothing disappears without a trace.\n\t\tconst ignoredFlagChecks: Array<readonly [string, boolean]> = [\n\t\t\t[\"--name\", parsed.name !== undefined],\n\t\t\t[\"--thinking\", parsed.thinking !== undefined],\n\t\t\t[\"--provider\", parsed.provider !== undefined],\n\t\t\t[\"--model\", parsed.model !== undefined],\n\t\t\t[\"--api-key\", parsed.apiKey !== undefined],\n\t\t\t[\"--models\", (parsed.models?.length ?? 0) > 0],\n\t\t\t[\"--verbose\", parsed.verbose === true],\n\t\t\t[\"--tui-mode\", parsed.tuiMode !== undefined],\n\t\t\t[\"--suite\", parsed.suite !== undefined],\n\t\t\t[\"--tools\", (parsed.tools?.length ?? 0) > 0],\n\t\t\t[\"--exclude-tools\", (parsed.excludeTools?.length ?? 0) > 0],\n\t\t\t[\"--no-tools\", parsed.noTools === true],\n\t\t\t[\"--no-builtin-tools\", parsed.noBuiltinTools === true],\n\t\t\t[\"--skill\", (parsed.skills?.length ?? 0) > 0],\n\t\t\t[\"--prompt-template\", (parsed.promptTemplates?.length ?? 0) > 0],\n\t\t\t[\"--no-prompt-templates\", parsed.noPromptTemplates === true],\n\t\t\t[\"--theme\", (parsed.themes?.length ?? 0) > 0],\n\t\t\t[\"--use-theme\", parsed.useTheme !== undefined],\n\t\t\t[\"--no-themes\", parsed.noThemes === true],\n\t\t\t[\"--no-context-files\", parsed.noContextFiles === true],\n\t\t\t[\"--no-skills\", parsed.noSkills === true],\n\t\t\t[\"--no-plugins\", parsed.noPlugins === true],\n\t\t\t[\"--no-trace\", parsed.noTrace === true],\n\t\t\t[\"--plugin-profile\", parsed.pluginProfile !== undefined],\n\t\t\t[\"--plugin\", (parsed.plugins?.length ?? 0) > 0],\n\t\t\t[\"--disable-plugin\", (parsed.disabledPlugins?.length ?? 0) > 0],\n\t\t\t[\"--system-prompt\", parsed.systemPrompt !== undefined],\n\t\t\t[\"--append-system-prompt\", (parsed.appendSystemPrompt?.length ?? 0) > 0],\n\t\t];\n\t\tconst ignoredFlags = ignoredFlagChecks.flatMap(([flag, passed]) => (passed ? [flag] : []));\n\t\tif (ignoredFlags.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\tchalk.yellow(t(\"--serve ignores session/model/tool options: {flags}\", { flags: ignoredFlags.join(\", \") })),\n\t\t\t);\n\t\t}\n\t\tawait runServeMode(parsed.serve, {\n\t\t\t...(parsed.serveWorkspaceRoots === undefined ? {} : { workspaceRoots: parsed.serveWorkspaceRoots }),\n\t\t\t...(parsed.sessionDir === undefined ? {} : { sessionDir: parsed.sessionDir }),\n\t\t\t// D-067 第一期 S3:serve 会话此前拿不到进程文件 logger(SDK 面为 no-op),\n\t\t\t// 现在与交互模式同源注入,日志落 <agentDir>/logs。\n\t\t\t...(processHostLogger === undefined ? {} : { hostLogger: processHostLogger }),\n\t\t});\n\t\treturn;\n\t}\n\n\t// Suite lifecycle one-shot actions (设计 §9, M4): only cwd + agentDir are\n\t// needed, so they run before any session/runtime service is created and\n\t// always terminate the process.\n\tawait handleSuiteLifecycleCommands(parsed, cwd, agentDir);\n\n\t// Expired suite trash sweep (设计 §9, M4): fire-and-forget best-effort like\n\t// the RPC model catalog refresh below — failures stay silent (7-day default\n\t// retention) and the sweep re-runs on the next start.\n\tvoid sweepSuiteTrash(agentDir).catch(() => {});\n\n\tlet appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);\n\t// Headless subagent runner (D-045) owns its stdout: the subagent-task protocol\n\t// frames must reach the parent on the real stdout, so the non-interactive\n\t// stdout takeover (which redirects process.stdout writes to stderr) is skipped.\n\tconst shouldTakeOverStdout =\n\t\tparsed.subagentRunner !== true && appMode !== \"interactive\" && !isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(t(\"Error: @file arguments are not supported in RPC mode\")));\n\t\tprocess.exit(1);\n\t}\n\n\tvalidateForkFlags(parsed);\n\tvalidateSessionIdFlags(parsed);\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd);\n\ttime(\"runMigrations\");\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir);\n\tconst startupSettingsDiagnostics = collectSettingsDiagnostics(startupSettingsManager);\n\n\t// Experimental first-time setup: theme choice and analytics opt-in.\n\t// Runs before any runtime services are created so the chosen settings apply everywhere.\n\tif (appMode === \"interactive\" && !parsed.help && parsed.listModels === undefined && shouldRunFirstTimeSetup()) {\n\t\tawait showFirstTimeSetup(startupSettingsManager);\n\t\ttime(\"firstTimeSetup\");\n\t}\n\n\tif (appMode === \"interactive\" && parsed.useTheme !== undefined) {\n\t\tstartupSettingsManager.applyOverrides({ theme: parsed.useTheme });\n\t}\n\n\t// Decide the final runtime cwd before creating cwd-bound runtime services.\n\t// --session and --resume may select a session from another project, so project-local\n\t// settings, resources, provider registrations, and models must be resolved only after\n\t// the target session cwd is known. The startup-cwd settings manager is used only for\n\t// sessionDir lookup during session selection.\n\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\tconst sessionDir =\n\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\tstartupSettingsManager.getSessionDir();\n\tlet sessionManager = await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tif (appMode === \"interactive\") {\n\t\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tsessionManager = SessionManager.open(missingSessionCwdIssue.sessionFile!, sessionDir, selectedCwd);\n\t\t} else {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (parsed.name !== undefined) {\n\t\tconst name = normalizeSessionName(parsed.name);\n\t\tif (name === undefined) {\n\t\t\tconsole.error(chalk.red(t(\"Error: --name requires a non-empty value\")));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tsessionManager.appendSessionInfo(name);\n\t}\n\ttime(\"createSessionManager\");\n\tconst cliPluginSelection = await resolveCliPluginSelection(parsed, agentDir, sessionManager.getCwd());\n\n\tconst resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);\n\tconst resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\t// Interaction host wiring (1A.8): createRuntime builds sessions before the\n\t// mode owns its UI, so the interactive/rpc modes install their\n\t// InteractionHostV1 into a late-bound slot after construction. Prompts that\n\t// arrive before installation settle as \"unavailable\"; notify is dropped\n\t// (nothing is on screen to receive it yet).\n\tconst createInteractionHostSlot = (): {\n\t\thost: InteractionHostV1;\n\t\tsetTarget: (target: InteractionHostV1 | undefined) => void;\n\t} => {\n\t\tlet target: InteractionHostV1 | undefined;\n\t\treturn {\n\t\t\thost: {\n\t\t\t\tnotify: (request) => target?.notify(request),\n\t\t\t\tprompt: (request, context) =>\n\t\t\t\t\ttarget ? target.prompt(request, context) : Promise.resolve({ status: \"unavailable\" }),\n\t\t\t},\n\t\t\tsetTarget: (next) => {\n\t\t\t\ttarget = next;\n\t\t\t},\n\t\t};\n\t};\n\tconst interactionHostSlots = {\n\t\tinteractive: createInteractionHostSlot(),\n\t\trpc: createInteractionHostSlot(),\n\t};\n\t// 启动 bootstrap(设计 §4.4):在 suite/profile 解析之前,把出厂清单里缺失的\n\t// 第一方插件经 npm 装入安装店。每进程只跑一次(含本地幂等比对);出厂清单\n\t// 当前为空,即零依赖调用的 no-op。bootstrap 自身异常兜底为诊断结果,绝不阻断\n\t// 启动;AGENT_FORGE_PLUGIN_BOOTSTRAP=off 在接线层完全跳过。\n\tlet startupPluginBootstrap: Promise<PluginBootstrapResultV1> | undefined;\n\tconst runStartupPluginBootstrap = (bootstrapCwd: string): Promise<PluginBootstrapResultV1> => {\n\t\tstartupPluginBootstrap ??= runNodePluginBootstrapV1({ agentDir, cwd: bootstrapCwd }).catch(\n\t\t\t(error: unknown): PluginBootstrapResultV1 => ({\n\t\t\t\tversion: 1,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tactions: [],\n\t\t\t\tdiagnostics: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: \"bootstrap_failed\",\n\t\t\t\t\t\tmessage: `Startup plugin bootstrap failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdurationMs: 0,\n\t\t\t}),\n\t\t);\n\t\treturn startupPluginBootstrap;\n\t};\n\tconst createRuntime: CreateAgentSessionRuntimeFactory = async ({\n\t\tcwd,\n\t\tagentDir,\n\t\tsessionManager,\n\t\tchildProfile,\n\t\tchildModelId,\n\t\tsubagentCommunicationWiring,\n\t}) => {\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir);\n\t\t// Bootstrap 先于 active 解析执行(设计 §4.4 触发点):新装入店的第一方插件\n\t\t// 在下面的 bindings 解析中立即可见。诊断走启动 stderr 通道(与 parseArgs\n\t\t// 诊断同风格);installed/skipped 动作静默。\n\t\tif (!parsed.noPlugins) {\n\t\t\tconst bootstrapResult = await runStartupPluginBootstrap(cwd);\n\t\t\tfor (const diagnostic of bootstrapResult.diagnostics) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\tt(\"Plugin bootstrap {code}: {message}\", { code: diagnostic.code, message: diagnostic.message }),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst resolveActivePluginBindings =\n\t\t\toptions?.resolveActivePluginBindings ?? createDefaultActivePluginBindingsResolverV1();\n\t\tlet activeBindings: Awaited<ReturnType<ActivePluginBindingResolverV1>> | undefined;\n\t\tlet pluginBindingDiagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\t\t// Installed-code-loading is profile-INDEPENDENT (D-075 设计 §\"已装插件\n\t\t// 进会话\"链路): suite capability packages and sdk-membership families\n\t\t// (memory/observability) must surface whenever they are installed, even\n\t\t// without a --plugin-profile selection — the pre-D-075 embedded registry\n\t\t// gave the coding suite its goal/plan/todo tools unconditionally, and\n\t\t// bootstrap (§4.4) exists to make them available out of the box.\n\t\tif (!parsed.noPlugins && options?.manifestOverrides === undefined) {\n\t\t\ttry {\n\t\t\t\tconst resolvedBindings = await resolveActivePluginBindings({ cwd, agentDir });\n\t\t\t\tactiveBindings = resolvedBindings;\n\t\t\t\tpluginBindingDiagnostics = resolvedBindings.diagnostics.map((item) => ({\n\t\t\t\t\ttype: resolvedBindings.status === \"unavailable\" ? (\"warning\" as const) : (\"info\" as const),\n\t\t\t\t\tmessage: `Active plugin binding ${item.code}: ${item.message}`,\n\t\t\t\t}));\n\t\t\t} catch {\n\t\t\t\tpluginBindingDiagnostics = [\n\t\t\t\t\t{ type: \"error\", message: \"Active plugin binding resolver failed; no installed version was selected\" },\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t\tconst activeManifestOverrides = activeBindings?.status === \"ready\" ? activeBindings.manifestOverrides : undefined;\n\t\tconst activeVerifiedPlugins = activeBindings?.status === \"ready\" ? activeBindings.verifiedPlugins : undefined;\n\t\t// Installed-code-loading (D-075 S2): the verified active installations'\n\t\t// plugin.json paths ride the same channel as manifestOverrides into the\n\t\t// sdk's explicit candidate pool (membership-filtered there).\n\t\tconst activeInstalledCapabilityPlugins =\n\t\t\tactiveBindings?.status === \"ready\"\n\t\t\t\t? [...activeBindings.installedManifestPaths].map(([pluginId, manifestPath]) => ({\n\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\tmanifestPath,\n\t\t\t\t\t}))\n\t\t\t\t: undefined;\n\t\t// D-075 S3: category-A plugin code ships in independent packages loaded\n\t\t// from the install store, so the CLI no longer wires host-side adapters\n\t\t// (desktop UIA / lsp / test-runner) into a runtime bridge. Profile\n\t\t// resolution still needs host facts to run the resolver's fail-closed\n\t\t// platform checks, and the packaged plugins declare no host features or\n\t\t// adapters (design §4.1), so the observed runtime facts are sufficient;\n\t\t// host injection always wins.\n\t\tconst pluginHost =\n\t\t\toptions?.pluginHost ??\n\t\t\t(parsed.noPlugins || (cliPluginSelection.profileId === undefined && activeBindings === undefined)\n\t\t\t\t? undefined\n\t\t\t\t: defaultPluginHostFactsV1());\n\t\t// First-party plugins of an explicitly selected Profile are trusted by\n\t\t// default (the builtins ship with the product and the user chose the\n\t\t// Profile explicitly); installed third-party versions still come from\n\t\t// the disk resolver and host injection always wins.\n\t\tconst verifiedPlugins =\n\t\t\toptions?.verifiedPlugins ??\n\t\t\t(cliPluginSelection.profileId === undefined\n\t\t\t\t? activeVerifiedPlugins\n\t\t\t\t: [\n\t\t\t\t\t\t...defaultBuiltinVerifiedPluginsV1(cliPluginSelection.profileId).filter(\n\t\t\t\t\t\t\t(builtin) =>\n\t\t\t\t\t\t\t\t!activeVerifiedPlugins?.some(\n\t\t\t\t\t\t\t\t\t(active) => active.pluginId === builtin.pluginId && active.version === builtin.version,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t...(activeVerifiedPlugins ?? []),\n\t\t\t\t\t]);\n\t\tconst services = await createAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\tmodelRuntimeSignal: AbortSignal.timeout(15_000),\n\t\t\t// First-party entry suite assembly (方案实施计划 §7 范围 2): the\n\t\t\t// three-level agents.md chain, system prompt gate, and association\n\t\t\t// filters apply on this self-built loader; the suite resolves once\n\t\t\t// here and rides to session creation via services.suiteId.\n\t\t\tsuite: parsed.suite,\n\t\t\tsuiteAssembly: true,\n\t\t\t...(parsed.noPlugins || cliPluginSelection.profileId === undefined\n\t\t\t\t? {}\n\t\t\t\t: { pluginProfileId: cliPluginSelection.profileId }),\n\t\t\t...(parsed.noPlugins || cliPluginSelection.selectedPluginIds === undefined\n\t\t\t\t? {}\n\t\t\t\t: { selectedPluginIds: cliPluginSelection.selectedPluginIds }),\n\t\t\t...(parsed.noPlugins || cliPluginSelection.disabledPluginIds === undefined\n\t\t\t\t? {}\n\t\t\t\t: { disabledPluginIds: cliPluginSelection.disabledPluginIds }),\n\t\t\t...(parsed.noPlugins || pluginHost === undefined ? {} : { pluginHost }),\n\t\t\t...(parsed.noPlugins || verifiedPlugins === undefined ? {} : { verifiedPlugins }),\n\t\t\t...(parsed.noPlugins || options?.manifestOverrides === undefined\n\t\t\t\t? activeManifestOverrides === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: { manifestOverrides: activeManifestOverrides }\n\t\t\t\t: { manifestOverrides: options.manifestOverrides }),\n\t\t\t...(parsed.noPlugins || activeInstalledCapabilityPlugins === undefined\n\t\t\t\t? {}\n\t\t\t\t: { installedCapabilityPlugins: activeInstalledCapabilityPlugins }),\n\t\t\t...(pluginBindingDiagnostics.length === 0 ? {} : { pluginBindingDiagnostics }),\n\t\t\tresourceLoaderOptions: {\n\t\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\t\tnoSkills: parsed.noSkills,\n\t\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\t\tnoThemes: parsed.noThemes,\n\t\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\t\t// 档案的 systemPromptAppend(承载退役切片 2):runner 叶子经同一资源\n\t\t\t\t// loader 追加通道落地(shared 侧由 child loader 覆盖点做的事在这里做)。\n\t\t\t\tappendSystemPrompt: [\n\t\t\t\t\t...(parsed.appendSystemPrompt ?? []),\n\t\t\t\t\t...(childProfile?.systemPromptAppend === undefined ? [] : [childProfile.systemPromptAppend]),\n\t\t\t\t],\n\t\t\t},\n\t\t});\n\t\tconst { settingsManager, modelRuntime } = services;\n\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t...cliPluginSelection.diagnostics,\n\t\t\t...services.diagnostics,\n\t\t\t...collectSettingsDiagnostics(settingsManager),\n\t\t];\n\n\t\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\tconst scopedModels =\n\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t? await resolveModelScope(modelPatterns, modelRuntime, { signal: AbortSignal.timeout(15_000) })\n\t\t\t\t: [];\n\t\t// 档案 model 解析(pooled parity 补口):与 shared 侧同一纪律——只能在 runner 自己\n\t\t// 的 scoped models 里挑,解析不到即失败并列出可用 id,不静默回落默认模型。\n\t\tconst profileModel =\n\t\t\tchildModelId === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (() => {\n\t\t\t\t\t\tconst entry = scopedModels.find((candidate) => candidate.model.id === childModelId);\n\t\t\t\t\t\tif (entry === undefined) {\n\t\t\t\t\t\t\tconst available = scopedModels.map((candidate) => candidate.model.id).sort();\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\tt(\"agent task child profile model {model} is not among the runner's scoped models{available}\", {\n\t\t\t\t\t\t\t\t\tmodel: JSON.stringify(childModelId),\n\t\t\t\t\t\t\t\t\tavailable:\n\t\t\t\t\t\t\t\t\t\tavailable.length === 0 ? \" (none configured)\" : `; available: ${available.join(\", \")}`,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn entry.model;\n\t\t\t\t\t})();\n\t\tconst sessionContext = sessionManager.buildSessionContext();\n\t\tconst {\n\t\t\toptions: sessionOptions,\n\t\t\tcliThinkingFromModel,\n\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t} = buildSessionOptions(parsed, scopedModels, sessionContext.messages.length > 0, modelRuntime, settingsManager);\n\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\t\t// Resume model restoration (dogfood 2026-09-25 live defect): the last explicit\n\t\t// model_change in the session file (/model switch) must be honored on restart —\n\t\t// previously the model silently reverted to the default, so turns after the\n\t\t// switch ran on (and were billed to) the old provider. Explicit CLI --model\n\t\t// takes priority over the persisted value.\n\t\tconst resumedSessionModel = (() => {\n\t\t\tif (sessionOptions.model) return undefined;\n\t\t\tconst persisted = sessionContext.model;\n\t\t\tif (!persisted) return undefined;\n\t\t\treturn modelRuntime.getModel(persisted.provider, persisted.modelId) ?? undefined;\n\t\t})();\n\n\t\tif (parsed.apiKey) {\n\t\t\tif (!sessionOptions.model) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait modelRuntime.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t}\n\t\t}\n\n\t\t// pooled runner 叶子:档案只收窄(mode 更严、thinkingLevel 更窄),不放大。\n\t\tconst childProfileMode =\n\t\t\tchildProfile !== undefined && childProfile.mode === \"readonly\" && parsed.subagentRunner === true\n\t\t\t\t? (\"readonly\" as const)\n\t\t\t\t: undefined;\n\t\tconst created = await createAgentSessionFromServices({\n\t\t\tservices,\n\t\t\tsessionManager,\n\t\t\tmodel: profileModel ?? sessionOptions.model ?? resumedSessionModel,\n\t\t\tthinkingLevel:\n\t\t\t\t(childProfile?.thinkingLevel as typeof sessionOptions.thinkingLevel) ?? sessionOptions.thinkingLevel,\n\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\ttools: sessionOptions.tools,\n\t\t\texcludeTools: sessionOptions.excludeTools,\n\t\t\tnoTools: sessionOptions.noTools,\n\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\tsuite: sessionOptions.suite,\n\t\t\tdiscoverCapabilityPlugins: parsed.noPlugins ? false : undefined,\n\t\t\t// Trace/log control face (设计 §4.4/§5/§6):--no-trace 关闭本会话轨迹\n\t\t\t// 收集;进程级 logger(含崩溃钩子)传给会话打点,未创建时保持 no-op 契约。\n\t\t\ttraceEnabled: parsed.noTrace === true ? false : undefined,\n\t\t\t// OTLP 遥测导出(设计 §8,D-065 增补 5):标准 OTEL_EXPORTER_OTLP_ENDPOINT\n\t\t\t// 环境变量显式开启 OTLP/HTTP+JSON 轨迹导出;未设置时导出器不存在,行为零变化。\n\t\t\t...(typeof process.env.OTEL_EXPORTER_OTLP_ENDPOINT === \"string\" &&\n\t\t\tprocess.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim().length > 0\n\t\t\t\t? { traceOptions: { otlp: { endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim() } } }\n\t\t\t\t: {}),\n\t\t\thostLogger: processHostLogger,\n\t\t\t...(childProfileMode === undefined ? {} : { capabilityMode: childProfileMode }),\n\t\t\t// 叶子不再整体关闭 agent tasks(承载退役切片 2):它经自动池化获得自己的\n\t\t\t// 委派面(嵌套委派保留,递归边界由 delegate 沿 S2 血缘头的深度硬限与每父级\n\t\t\t// 总量配额执行),并因 sdk 的 reader/lister 注入同时获得回读面。\n\t\t\t// 子代理通信面(D-060 S5 pooled parity):runner 叶子的 post/drainInbox 接线\n\t\t\t// 经 services 装配传入(文件承载信箱,跨进程与父侧 drain 同一目录)。\n\t\t\t...(subagentCommunicationWiring === undefined ? {} : { subagentCommunicationWiring }),\n\t\t\t// 承载退役切片 1(生产 CLI 默认 pooled):CLI 进程声明自身入口可信——\n\t\t\t// 未显式配置池时按 self-invocation 自动池化(叶子路径无害:delegate 不装配池)。\n\t\t\tsubagentPoolFromSelfInvocation: true,\n\t\t\t// Interaction capability (1A.8): only the interactive TUI and RPC hosts\n\t\t\t// serve interaction tasks; print/json hosts leave the feature absent.\n\t\t\t...(appMode === \"interactive\" ? { interactionHost: interactionHostSlots.interactive.host } : {}),\n\t\t\t...(appMode === \"rpc\" ? { interactionHost: interactionHostSlots.rpc.host } : {}),\n\t\t});\n\t\tfor (const rejection of created.pluginRejections) {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\" as const,\n\t\t\t\tmessage: `Capability plugin rejected (${rejection.code}): ${rejection.pluginId ?? rejection.manifestPath}: ${rejection.message}`,\n\t\t\t});\n\t\t}\n\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t}\n\n\t\tif (childProfile?.tools !== undefined) {\n\t\t\t// 档案的工具面是白名单:与叶子继承面求交(不放大),随后由 server 侧核验。\n\t\t\tconst inherited = created.session.getActiveToolNames();\n\t\t\tconst narrowed = inherited.filter((name) => childProfile.tools?.includes(name));\n\t\t\tcreated.session.setActiveToolsByName(narrowed);\n\t\t}\n\t\treturn {\n\t\t\t...created,\n\t\t\tservices: {\n\t\t\t\t...services,\n\t\t\t\t// /metrics 数据源 ref 由 createAgentSession 内建的 services 携带\n\t\t\t\t// (observability 插件工厂挂载时写入)。运行时对外暴露的是外层\n\t\t\t\t// session-independent services,不含该 ref——不对齐的话 TUI/RPC 的\n\t\t\t\t// 惰性闭包永远读到 undefined(/metrics 曾因此永远报未挂载)。\n\t\t\t\tobservabilityGetMetricsRef: created.session.observabilityGetMetricsRef,\n\t\t\t},\n\t\t\tdiagnostics,\n\t\t\t...(childProfile === undefined\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tchildFacts: (() => {\n\t\t\t\t\t\t\tconst sessionApi = created.session.getSessionAPI();\n\t\t\t\t\t\t\tconst systemPromptOptions = sessionApi.getSystemPromptOptions?.();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tactiveTools: created.session.getActiveToolNames(),\n\t\t\t\t\t\t\t\t...(childProfile?.thinkingLevel === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: { thinkingLevel: sessionApi.getThinkingLevel?.() }),\n\t\t\t\t\t\t\t\t// 叶子实际生效的 append 段(CLI append 与档案 append 的合并串,已含\n\t\t\t\t\t\t\t\t// 方案 APPEND_SYSTEM.md 门控结果):server 用包含语义核验档案 append。\n\t\t\t\t\t\t\t\t...(systemPromptOptions?.appendSystemPrompt === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: { systemPromptAppend: systemPromptOptions.appendSystemPrompt }),\n\t\t\t\t\t\t\t\t...(created.session.model === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\t\t\t\t\t\tprovider: created.session.model.provider,\n\t\t\t\t\t\t\t\t\t\t\t\tid: created.session.model.id,\n\t\t\t\t\t\t\t\t\t\t\t\tcontextWindow: created.session.model.contextWindow,\n\t\t\t\t\t\t\t\t\t\t\t\tmaxTokens: created.session.model.maxTokens,\n\t\t\t\t\t\t\t\t\t\t\t\treasoning: created.session.model.reasoning,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tcapabilityMode: created.session.getCapabilityRuntime().host.mode,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})(),\n\t\t\t\t\t}),\n\t\t};\n\t};\n\ttime(\"createRuntime\");\n\t/**\n\t * runner 叶子的档案解析:形状由公共解析器校验;字段级不支持的情况在这里 fail fast,\n\t * 不做静默忽略(当前全部字段均可落地:model 按 runner 自身 scoped models 解析)。\n\t */\n\tfunction parseSubagentTaskChildProfile(raw: unknown): AgentTaskChildProfileV1 | undefined {\n\t\tif (raw === undefined) return undefined;\n\t\tconst parsed = parseAgentTaskChildProfileV1(raw);\n\t\tif (!parsed.ok) throw new Error(`child task profile is invalid: ${parsed.message}`);\n\t\treturn parsed.profile;\n\t}\n\t// Headless subagent runner (D-045 pooled increment 2b): serve the subagent-task\n\t// protocol on stdio and never construct the parent session runtime — stdout is\n\t// the protocol channel, so this branch must run before any mode startup output.\n\tif (parsed.subagentRunner === true) {\n\t\tconst runnerSessionCwd = sessionManager.getCwd();\n\t\tconst runner = runSubagentTaskRunner({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t\tcreateSession: createSubagentTaskSessionFactoryV1({\n\t\t\t\tcreateSession: async (request) => {\n\t\t\t\t\t// 每任务一个独立叶子会话。档案(若上游带了)在这一层落地:mode/thinkingLevel\n\t\t\t\t\t// 经创建选项,tools 收窄在 createRuntime 内完成,事实回传给 server 核验。\n\t\t\t\t\tconst childProfile = parseSubagentTaskChildProfile(request.profile);\n\t\t\t\t\t// resume(D-060 S5 pooled parity):目标必须是本父会话的**已落盘**子会话,\n\t\t\t\t\t// 血缘不过线与不存在同型失败;命中则打开既有 JSONL 续写(同一 sessionId)。\n\t\t\t\t\tconst resumeRead =\n\t\t\t\t\t\ttypeof request.resumeSessionId === \"string\" && request.resumeSessionId !== \"\"\n\t\t\t\t\t\t\t? readAgentSession({ agentDir, sessionId: request.resumeSessionId })\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tif (typeof request.resumeSessionId === \"string\" && request.resumeSessionId !== \"\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tresumeRead === undefined ||\n\t\t\t\t\t\t\trequest.parentSessionId === undefined ||\n\t\t\t\t\t\t\tresumeRead.parentAgentSession !== request.parentSessionId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\tt(\"resume target {resumeId} is not a persisted child of session {parentId}\", {\n\t\t\t\t\t\t\t\t\tresumeId: request.resumeSessionId,\n\t\t\t\t\t\t\t\t\tparentId: String(request.parentSessionId),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst resumeFilePath =\n\t\t\t\t\t\tresumeRead !== undefined && typeof request.resumeSessionId === \"string\"\n\t\t\t\t\t\t\t? findSessionFile(agentSessionsDir(agentDir), request.resumeSessionId)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t// 通信面(D-060 S5 pooled parity):叶子向自己的父 post(escalate/兄弟消息)\n\t\t\t\t\t// 并 drain 自己的收件箱——文件承载信箱,root 以父会话 id 为键;叶子身份在\n\t\t\t\t\t// create 返回后补上(工厂注册先于身份可知)。\n\t\t\t\t\tconst leafIdentity: { current: string | undefined } = { current: undefined };\n\t\t\t\t\tconst requireIdentity = (): string => {\n\t\t\t\t\t\tif (leafIdentity.current === undefined) throw new Error(\"leaf session identity is not bound yet\");\n\t\t\t\t\t\treturn leafIdentity.current;\n\t\t\t\t\t};\n\t\t\t\t\tconst leafWiring: SubagentCommunicationWiringV1 =\n\t\t\t\t\t\trequest.parentSessionId === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tpostEscalate: (text) => {\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).postEscalate(requireIdentity(), text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tsendSibling: (toSessionId, text) => {\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).postSibling(requireIdentity(), toSessionId, text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdrainInbox: (limit) =>\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).drainInbox(requireIdentity(), limit),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\tconst created = await createRuntime({\n\t\t\t\t\t\tcwd: runnerSessionCwd,\n\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t// 叶子会话落盘(D-060 §3):与 root 会话同构的 JSONL,放 _agents 目录,\n\t\t\t\t\t\t// 头部写血缘(父 agent 会话 id + 角色 id),父侧可按 sessionId 回读。\n\t\t\t\t\t\t// resume 改为打开既有会话文件续写(同一 sessionId,多轮子任务)。\n\t\t\t\t\t\tsessionManager:\n\t\t\t\t\t\t\tresumeFilePath !== undefined && request.resumeSessionId !== undefined\n\t\t\t\t\t\t\t\t? SessionManager.open(resumeFilePath, agentSessionsDir(agentDir), runnerSessionCwd)\n\t\t\t\t\t\t\t\t: SessionManager.create(runnerSessionCwd, agentSessionsDir(agentDir), {\n\t\t\t\t\t\t\t\t\t\t...(request.parentSessionId === undefined\n\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t: { parentAgentSession: request.parentSessionId }),\n\t\t\t\t\t\t\t\t\t\t// 回合级血缘:仅 create 消费;resume(open)不写头。\n\t\t\t\t\t\t\t\t\t\t...(request.parentTraceId === undefined ? {} : { parentTraceId: request.parentTraceId }),\n\t\t\t\t\t\t\t\t\t\t...(childProfile?.roleId === undefined ? {} : { agentRole: childProfile.roleId }),\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t...(childProfile === undefined ? {} : { childProfile }),\n\t\t\t\t\t\t...(childProfile?.model === undefined ? {} : { childModelId: childProfile.model }),\n\t\t\t\t\t\t...(Object.keys(leafWiring).length === 0 ? {} : { subagentCommunicationWiring: leafWiring }),\n\t\t\t\t\t});\n\t\t\t\t\tconst session = created.session;\n\t\t\t\t\tconst sessionApi = session.getSessionAPI();\n\t\t\t\t\tleafIdentity.current = sessionApi.getAgentSessionId?.() ?? sessionApi.getSessionId();\n\t\t\t\t\t// 显式映射到命令面会话契约:不复用 AgentSession 全量面,避免隐藏依赖会话布局。\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprompt: (text) => session.prompt(text, { expandPromptTemplates: false }),\n\t\t\t\t\t\tabort: (reason) => session.abort(reason),\n\t\t\t\t\t\tdispose: () => session.dispose(),\n\t\t\t\t\t\tgetMessages: () => sessionApi.getMessages(),\n\t\t\t\t\t\tgetSessionId: () => sessionApi.getSessionId(),\n\t\t\t\t\t\t// D-044 §5.6:回合级进度(turn_end + 有界工具摘要)经协议 progress 事件回父侧。\n\t\t\t\t\t\tonProgress: createTurnProgressSourceV1(session),\n\t\t\t\t\t\t// 父→子引导(D-060 S5 pooled parity):转发会话自身 steer。\n\t\t\t\t\t\t...(sessionApi.steer === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tsteer: (text: string): Promise<void> => {\n\t\t\t\t\t\t\t\t\t\tconst steerFn = sessionApi.steer;\n\t\t\t\t\t\t\t\t\t\tif (steerFn === undefined) return Promise.resolve();\n\t\t\t\t\t\t\t\t\t\treturn steerFn.call(sessionApi, text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t// 档案事实:只有带档案的 create 才会被 server 要求自证。\n\t\t\t\t\t\t...(created.childFacts === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { facts: () => created.childFacts as NonNullable<typeof created.childFacts> }),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t}),\n\t\t});\n\t\tawait runner.done;\n\t\treturn;\n\t}\n\tlet runtime: Awaited<ReturnType<typeof createAgentSessionRuntime>>;\n\t// Unresolved startup suite id (设计 §9): interactive mode recovers in-process\n\t// by handing a pending selector to InteractiveMode (the user picks a suite\n\t// before the first prompt); print/json/rpc keep the structured exit-1.\n\tlet pendingSuiteSelector: { requestedId: string; available: readonly string[] } | undefined;\n\ttry {\n\t\truntime = await createAgentSessionRuntime(createRuntime, {\n\t\t\tcwd: sessionManager.getCwd(),\n\t\t\tagentDir,\n\t\t\tsessionManager,\n\t\t});\n\t} catch (error) {\n\t\t// 已绑定会话换 suite / Profile 身份漂移(SuiteRebindError):用户可自行纠正的\n\t\t// 参数错误,干净的一行 stderr + 退出 1,不甩内部栈(dogfood 2026-09-25 实测)。\n\t\tif (error instanceof SuiteRebindError) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: error.message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// Unknown --suite/env/settings suite ids are a structured startup error\n\t\t// (设计 §9): list the available ids and exit 1 instead of a stack trace.\n\t\tif (!(error instanceof SuiteResolutionError)) throw error;\n\t\tif (appMode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: error.message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// One in-process recovery attempt (设计 §9 startup selector): record the\n\t\t// pending pick, clear this run's explicit suite for the retry, and delete\n\t\t// AGENT_FORGE_SUITE when it named the unknown id — the env is the only\n\t\t// source this process may eliminate. A settings-level unknown id cannot\n\t\t// be resolved in-process (silently rewriting the user's settings files is\n\t\t// not a startup decision), so the retry still throws and exits 1 below\n\t\t// with the same structured guidance.\n\t\tpendingSuiteSelector = { requestedId: error.requestedId, available: error.availableSuiteIds };\n\t\tparsed.suite = undefined;\n\t\tif (process.env[SUITE_ENV_VAR] === error.requestedId) {\n\t\t\tdelete process.env[SUITE_ENV_VAR];\n\t\t}\n\t\ttry {\n\t\t\truntime = await createAgentSessionRuntime(createRuntime, {\n\t\t\t\tcwd: sessionManager.getCwd(),\n\t\t\t\tagentDir,\n\t\t\t\tsessionManager,\n\t\t\t});\n\t\t} catch (retryError) {\n\t\t\tif (retryError instanceof SuiteResolutionError) {\n\t\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: retryError.message })));\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tthrow retryError;\n\t\t}\n\t}\n\ttime(\"createAgentSessionRuntime\");\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRuntime } = services;\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tapplyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\n\tif (parsed.help) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tprintHelp();\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.listModels !== undefined) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tawait listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));\n\t\tprocess.exit(0);\n\t}\n\n\t// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC\n\tlet stdinContent: string | undefined;\n\tif (appMode !== \"rpc\") {\n\t\tstdinContent = await readPipedStdin();\n\t\t// v8 ignore next -- stdin 的 isTTY 在两次读取间不会变化,交互模式下不可能读到管道内容\n\t\tif (stdinContent !== undefined && appMode === \"interactive\") {\n\t\t\tappMode = \"print\";\n\t\t}\n\t}\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\n\tinitTheme(settingsManager.getTheme(), appMode === \"interactive\");\n\ttime(\"initTheme\");\n\n\t// Show deprecation warnings in interactive mode\n\tif (appMode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\n\ttime(\"resolveModelScope\");\n\tconst allStartupDiagnostics = deduplicateDiagnostics([...startupSettingsDiagnostics, ...runtime.diagnostics]);\n\tconst startupDiagnostics = filterAcknowledgedSuiteNotices(allStartupDiagnostics, settingsManager);\n\t// ack 经 save() 的异步写队列落盘;print 模式随即退出、TUI 退出链也不经过\n\t// settings flush,这里统一等待落盘,否则\"已读\"记录静默丢失。\n\tawait settingsManager.flush().catch(() => {});\n\tconst hasRuntimeErrors = runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\tif (appMode !== \"interactive\" || hasRuntimeErrors) {\n\t\treportDiagnostics(startupDiagnostics);\n\t}\n\tif (hasRuntimeErrors) {\n\t\tprocess.exit(1);\n\t}\n\t// D-028: interactive mode suppresses startup warnings above, so rejected\n\t// capability plugins get an explicit stderr note before the TUI takes over.\n\tif (appMode === \"interactive\") {\n\t\tfor (const rejection of runtime.pluginRejections) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\tt(\"Warning: capability plugin rejected ({code}): {target}: {message}\", {\n\t\t\t\t\t\tcode: rejection.code,\n\t\t\t\t\t\ttarget: rejection.pluginId ?? rejection.manifestPath,\n\t\t\t\t\t\tmessage: rejection.message,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\ttime(\"createAgentSession\");\n\n\t// With nothing configured, agent core falls back to an all-\"unknown\"\n\t// placeholder model (packages/agent/src/agent.ts DEFAULT_MODEL), so a truthy\n\t// session.model does not mean a usable model. Non-interactive modes must\n\t// stop here with the login guidance instead of dying mid-request.\n\tconst noModelResolved = !session.model || (session.model.provider === \"unknown\" && session.model.id === \"unknown\");\n\tif (appMode !== \"interactive\" && noModelResolved) {\n\t\tconsole.error(chalk.red(modelFallbackMessage ?? formatNoModelsAvailableMessage()));\n\t\tprocess.exit(1);\n\t}\n\n\tconst startupBenchmark = isTruthyEnvFlag(process.env.AGENT_FORGE_STARTUP_BENCHMARK);\n\tif (startupBenchmark && appMode !== \"interactive\") {\n\t\tconsole.error(chalk.red(t(\"Error: AGENT_FORGE_STARTUP_BENCHMARK only supports interactive mode\")));\n\t\tprocess.exit(1);\n\t}\n\n\t// RPC refreshes catalogs here in the background; interactive mode starts its refresh after TUI initialization.\n\tif (!offlineMode && appMode === \"rpc\") {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), 15_000);\n\t\tvoid modelRuntime\n\t\t\t.refresh({ signal: controller.signal })\n\t\t\t.catch(() => {})\n\t\t\t.finally(() => clearTimeout(timeout));\n\t}\n\n\tif (appMode === \"rpc\") {\n\t\tprintTimings();\n\t\tawait runRpcMode(runtime, {\n\t\t\tinteractionHostSlot: interactionHostSlots.rpc,\n\t\t\t// 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到\n\t\t\t// undefined(/metrics 曾因此永远报未挂载)。\n\t\t\tgetMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),\n\t\t});\n\t} else if (appMode === \"interactive\") {\n\t\tconst interactiveMode = new InteractiveMode(runtime, {\n\t\t\t// 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到\n\t\t\t// undefined(/metrics 曾因此永远报未挂载)。\n\t\t\tgetMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),\n\t\t\tmigratedProviders,\n\t\t\tstartupDiagnostics,\n\t\t\tmodelFallbackMessage,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t\tinitialMessages: parsed.messages,\n\t\t\tverbose: parsed.verbose,\n\t\t\ttuiMode: parsed.tuiMode,\n\t\t\tinitialThemeSetting: parsed.useTheme,\n\t\t\tpendingSuiteSelector,\n\t\t\tsettingsManager,\n\t\t});\n\t\t// Interaction capability (1A.8): the TUI owns the dialog surface, so its\n\t\t// host backs the slot the session was created with.\n\t\tinteractionHostSlots.interactive.setTarget(interactiveMode.createInteractionHostV1());\n\t\tif (startupBenchmark) {\n\t\t\tawait interactiveMode.init();\n\t\t\ttime(\"interactiveMode.init\");\n\t\t\t// Give the TUI's stdin handler a brief chance to consume terminal query replies\n\t\t\t// (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 150));\n\t\t\tinteractiveMode.stop();\n\t\t\tstopThemeWatcher();\n\t\t\tprintTimings();\n\t\t\tif (process.stdout.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t\t}\n\t\t\tif (process.stderr.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tawait interactiveMode.run();\n\t} else {\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(runtime, {\n\t\t\tmode: toPrintOutputMode(appMode),\n\t\t\tmessages: parsed.messages,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t\treturn;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAqB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,mBAAmB,EAAa,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtH,OAAO,EAEN,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACN,QAAQ,EACR,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,OAAO,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAyC,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAEN,8BAA8B,EAC9B,0BAA0B,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAsC,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,GAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EACN,2CAA2C,EAC3C,wBAAwB,GACxB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAGxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAEtF,OAAO,EAGN,+BAA+B,EAC/B,0BAA0B,GAC1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACN,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,eAAe,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAEN,4BAA4B,GAE5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,gCAAgC,CAAC;AAEpF;;;;;GAKG;AACH,IAAI,iBAAyC,CAAC;AAE9C;;;GAGG;AACH,KAAK,UAAU,cAAc,GAAgC;IAC5D,oEAAoE;IACpE,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YACnC,IAAI,IAAI,KAAK,CAAC;QAAA,CACd,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;QAAA,CAClC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAAA,CACvB,CAAC,CAAC;AAAA,CACH;AAED;;;;;GAKG;AACH,SAAS,8BAA8B,CACtC,WAAqD,EACrD,eAAgC,EACE;IAClC,MAAM,YAAY,GAAG,iEAAiE,CAAC;IACvF,MAAM,cAAc,GAAG,oDAAoD,CAAC;IAC5E,MAAM,IAAI,GAAoC,EAAE,CAAC;IACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,SAAS;QACV,CAAC;QACD,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,SAAS;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,QAAQ,EAAE,WAAW,KAAK,MAAM;gBAAE,SAAS;YAC/C,eAAe,CAAC,6BAA6B,CAAC,OAAO,EAAE;gBACtD,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnB,WAAW,EAAE,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE,eAAe,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ;gBAAE,SAAS;YAC9F,eAAe,CAAC,6BAA6B,CAAC,OAAO,EAAE;gBACtD,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnB,eAAe,EAAE,QAAQ;aACzB,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,iBAAiB,CAAC,WAAqD,EAAQ;IACvF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjH,MAAM,OAAO,GACZ,UAAU,CAAC,IAAI,KAAK,OAAO;YAC1B,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;YACxD,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;gBAC9B,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1D,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;AAAA,CACD;AAED,SAAS,eAAe,CAAC,KAAyB,EAAW;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AAAA,CACxF;AAED,SAAS,cAAc,CAAC,MAAY,EAAE,UAAmB,EAAE,WAAoB,EAAW;IACzF,yEAAyE;IACzE,4DAA4D;IAC5D,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,OAAO,aAAa,CAAC;AAAA,CACrB;AAED,SAAS,iBAAiB,CAAC,OAAgB,EAAwB;IAClE,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAAA,CAC5C;AAED,SAAS,6BAA6B,CAAC,MAAY,EAAW;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;AAAA,CAC/G;AAED,KAAK,UAAU,cAAc,CAAC,IAAc,EAAoB;IAC/D,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,oBAAoB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,OAAgC,CAAC;IACrC,IAAI,CAAC;QACJ,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;QACtG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,6EAA6E;IAC7E,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACnE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CACnD,CAAC;IACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjH,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,CAAC,CAAC,4BAA4B,EAAE;YAC/B,IAAI,EAAE,GAAG,QAAQ,SAAS;YAC1B,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;SACxC,CAAC,CACF,CACD,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrF,MAAM,UAAU,GAAG,MAAM,yBAAyB,CACjD,MAAM,EACN,YAAY,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,MAAM,CACN,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,MAAuB,CAAC;QAC5B,IAAI,UAA8B,CAAC;QACnC,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACzF,MAAM,YAAY,GAAG,MAAM,2BAA2B,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACxF,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACtD,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE;oBACpF,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS;iBAC3B,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjB,MAAM,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;gBACjG,CAAC;YACF,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,GAAG;gBACR,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAM;gBACxD,MAAM,EAAE,eAAe;aACvB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;YAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACnF,CAAC,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;QACtG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,KAAK,UAAU,qBAAqB,CACnC,MAAY,EACZ,gBAAyB,EACzB,YAAqB,EAInB;IACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3F,OAAO,mBAAmB,CAAC;QAC1B,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,MAAM;QAClB,YAAY;KACZ,CAAC,CAAC;AAAA,CACH;AAED,SAAS,yBAAyB,CACjC,SAAiB,EACjB,GAAW,EACX,UAAmB,EAC2B;IAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAClD;AAED,0CAA0C;AAC1C,KAAK,UAAU,aAAa,CAAC,OAAe,EAAoB;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,eAAe,CAAC;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAAA,CACxE,CAAC,CAAC;IAAA,CACH,CAAC,CAAC;AAAA,CACH;AAED,SAAS,wBAAwB,CAAC,KAAc,EAAQ;IACvD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,CAC7D;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,EAAU,EAAW;IACpE,OAAO,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAAA,CACrF;AAED;;;;;GAKG;AACH,KAAK,UAAU,4BAA4B,CAAC,MAAY,EAAE,GAAW,EAAE,QAAgB,EAAiB;IACvG,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,WAAW,CAAC;gBAC1B,QAAQ;gBACR,EAAE,EAAE,MAAM,CAAC,WAAW;gBACtB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC1E,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,+BAA+B,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9B,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,wBAAwB,CAAC,IAAI,mBAAmB,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,wBAAwB,CAAC,IAAI,oBAAoB,CAAC,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,CAAC,CAAC,qFAAqF,EAAE;gBACxF,EAAE;gBACF,KAAK,EAAE,IAAI,CAAC,MAAM;aAClB,CAAC,CACF,CACD,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CACV,CAAC,CAAC,+FAA+F,EAAE;YAClG,EAAE;YACF,GAAG,EAAE,QAAQ;SACb,CAAC,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,CAAC,CACA,+HAA+H,EAC/H,EAAE,EAAE,EAAE,CACN,CACD,CACD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,wCAAwC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,0BAA0B,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACtF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,+DAA+D,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;YACD,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CACV,CAAC,CAAC,qFAAqF,EAAE;gBACxF,EAAE;gBACF,SAAS,EAAE,MAAM,CAAC,SAAS;aAC3B,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC,gGAA8F,EAAE;oBAClG,EAAE;iBACF,CAAC;gBACH,CAAC,CAAC,IAAI,oBAAoB,CAAC,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,sEAAsE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,yDAAyD,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,CAAC,CACA,wJAAwJ,EACxJ,EAAE,EAAE,EAAE,CACN,CACD,CACD,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,8BAA8B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAsC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CACV,CAAC,CAAC,wFAAwF,EAAE;gBAC3F,EAAE;gBACF,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;aAClC,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAED,SAAS,iBAAiB,CAAC,MAAY,EAAQ;IAC9C,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO;IAEzB,MAAM,gBAAgB,GAAG;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACtC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;KAC7C,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAEvD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACrG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAED,SAAS,sBAAsB,CAAC,MAAY,EAAQ;IACnD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO;IAE3C,MAAM,gBAAgB,GAAG;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACtC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAEvD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CACR,CAAC,CACA,2LAA2L,EAC3L,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtC,CACD,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACJ,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,UAAmB,EAAkB;IAC7E,IAAI,CAAC;QACJ,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,GAAW,EAAE,UAAmB,EAAE,SAAkB,EAAkB;IACpH,IAAI,CAAC;QACJ,OAAO,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AAAA,CACD;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,MAAY,EACZ,GAAW,EACX,UAA8B,EAC9B,eAAgC,EACN;IAC1B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5G,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,cAAc,GAAG,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YACpF,IAAI,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,8CAA8C,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAC7F,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAExE,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACZ,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAE5E,KAAK,WAAW;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAE3E,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACX,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAErD,KAAK,QAAQ,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,2CAA2C,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjG,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACvF,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;gBACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC1D,CAAC;YAED,KAAK,WAAW;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,MAAM,aAAa,CACvC,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAChF,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAC9E,eAAe,CACf,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACV,gBAAgB,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,cAAc,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,yBAAyB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrF,IAAI,eAAe,EAAE,CAAC;YACrB,OAAO,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,MAAM,CACX,CAAC,CAAC,+FAA+F,EAAE;YAClG,SAAS,EAAE,MAAM,CAAC,SAAS;SAC3B,CAAC,CACF,CACD,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAAA,CACxE;AAED,SAAS,mBAAmB,CAC3B,MAAY,EACZ,YAA2B,EAC3B,kBAA2B,EAC3B,YAA0B,EAC1B,eAAgC,EAK/B;IACD,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,0GAAsD;IACtD,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACxD,MAAM,WAAW,GAAoC,EAAE,CAAC;IACxD,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,iBAAiB;IACjB,iDAAiD;IACjD,0CAA0C;IAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,eAAe,CAAC;YAChC,WAAW,EAAE,MAAM,CAAC,QAAQ;YAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK;YACtB,WAAW,EAAE,MAAM,CAAC,QAAQ;YAC5B,YAAY;SACZ,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC/B,uDAAuD;YACvD,8DAA8D;YAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAChD,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;gBAC/C,oBAAoB,GAAG,IAAI,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtE,0FAA0F;QAC1F,MAAM,aAAa,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9G,IAAI,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YACnC,gEAAgE;YAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;gBACpD,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;YACpD,CAAC;QACF,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtC,+DAA+D;YAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBACvD,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAED,yFAAyF;IACzF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,mCAAmC;IACnC,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,aAAa,EAAE,EAAE,CAAC,aAAa;SAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,gDAAgD;IAEhD,QAAQ;IACR,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,CAAC;AAAA,CACtD;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,KAA2B,EAAwB;IACxF,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,CACrF;AAED,KAAK,UAAU,0BAA0B,CACxC,KAAsB,EACtB,eAAgC,EACF;IAC9B,OAAO,mBAAmB,CAAC,eAAe,EAAE,6BAA6B,CAAC,KAAK,CAAC,EAAE;QACjF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;QAC/C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;KACrC,CAAC,CAAC;AAAA,CACH;AASD,SAAS,oBAAoB,CAC5B,MAA+B,EAC/B,WAA2E,EACzC;IAClC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,OAAgB;QACtB,OAAO,EAAE,oBAAoB,MAAM,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;KACrE,CAAC,CAAC,CAAC;AAAA,CACJ;AAED;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CAAC,MAAY,EAAE,QAAgB,EAAE,GAAW,EAA+B;IAClH,MAAM,oBAAoB,GACzB,MAAM,CAAC,aAAa,KAAK,SAAS;QAClC,MAAM,CAAC,OAAO,KAAK,SAAS;QAC5B,MAAM,CAAC,eAAe,KAAK,SAAS;QACpC,MAAM,CAAC,oBAAoB,KAAK,SAAS,CAAC;IAC3C,IAAI,CAAC,oBAAoB,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC1E,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAChH,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC,EAAE,CAAC;IAC9G,CAAC;IAED,MAAM,WAAW,GAAoC,EAAE,CAAC;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,IAAI,QAAQ,CAAC;IAC/D,MAAM,aAAa,GAClB,cAAc,KAAK,SAAS;QAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,wBAAwB,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,4BAA4B,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;IACxE,IAAI,eAAuD,CAAC;IAC5D,IAAI,CAAC;QACJ,eAAe,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;QACnF,OAAO,EAAE,WAAW,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACpF,WAAW,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/F,OAAO,EAAE,WAAW,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC;IAC/C,IAAI,SAA+C,CAAC;IACpD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO,EAAE,WAAW,EAAE,CAAC;QACxB,CAAC;QACD,SAAS,GAAG,iBAAiB,CAAC;IAC/B,CAAC;IAED,IAAI,kBAAiD,CAAC;IACtD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACjH,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACjF,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,WAAW,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,OAAO;gBACb,OAAO,EACN,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;oBAC/C,CAAC,CAAC,qFAAqF;oBACvF,CAAC,CAAC,4FAA4F;aAChG,CAAC,CAAC;YACH,OAAO,EAAE,WAAW,EAAE,CAAC;QACxB,CAAC;QACD,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,kBAAkB,KAAK,SAAS,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClG,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,qCAAqC,kBAAkB,EAAE,SAAS,IAAI,EAAE,EAAE;aACnF,CAAC,CAAC;YACH,OAAO,EAAE,WAAW,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAED,OAAO;QACN,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;YAC/B,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAC3D,CAAC,CAAC,kBAAkB,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE;YACnE,CAAC,CAAC,kBAAkB,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAChE,WAAW;KACX,CAAC;AAAA,CACF;AAsBD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,OAAqB,EAAE;IACjE,YAAY,EAAE,CAAC;IACf,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;IACR,CAAC;IAED,IAAI,MAAM,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO;IACR,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,kCAAkC,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,qBAAqB,EAAE,CAAC;IAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,wBAAwB,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvE,eAAe,CAAC,wBAAwB,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1D,sBAAsB,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/E,uBAAuB,EAAE,CAAC;IAE1B,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC5E,wFAAwF;YACxF,wFAAwF;YACxF,4EAA4E;YAC5E,8CAA8C;YAC9C,OAAO;QACR,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO;IACR,CAAC;IAED,MAAM,oBAAoB,GACzB,OAAO,EAAE,uBAAuB,KAAK,SAAS,IAAI,OAAO,EAAE,8BAA8B,KAAK,SAAS;QACtG,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACA,GAAG,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS;gBACjD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,EAAE,8BAA8B,KAAK,SAAS;gBACxD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,8BAA8B,EAAE,OAAO,CAAC,8BAA8B,EAAE,CAAC;SAC9E,CAAC;IACL,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;QAC3D,OAAO;IACR,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5D,OAAO,CAAC,KAAK,CACZ,KAAK,CACJ,CAAC,CAAC,IAAI,KAAK,OAAO;gBACjB,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC/C,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAClD,CACD,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,CAAC;IAElB,2FAAkD;IAClD,iFAAyD;IACzD,6FAA2D;IAC3D,6FAA+D;IAC/D,8GAAoD;IACpD,2GAAyC;IACzC,wEAA0B;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,MAAM,YAAY,GACjB,MAAM,CAAC,QAAQ,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9G,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAClE,MAAM,iBAAiB,GACtB,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/D,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACrC,iBAAiB,GAAG,gBAAgB,CAAC;YACpC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC3B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YAC9D,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;SAC7E,CAAC,CAAC;IACJ,CAAC;IAED,oGAA6D;IAC7D,4GAAwD;IACxD,4GAAsD;IACtD,kGAAsD;IACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACtE,MAAM,eAAe,GACpB,kBAAkB,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACnE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC;IACN,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrG,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,yCAAyC,EAAE;gBAC9E,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;aAClE,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,oCAAoC,EAAE;gBACzE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;aAClE,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,mFAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,gDAAgD;IAChD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,UAAU,GACf,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,wBAAwB,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/C,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,IAAI;YAC/B,GAAG;YACH,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,qEAAqE;QACrE,oEAAoE;QACpE,gEAAgE;QAChE,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpD,oEAAoE;YACpE,yDAAyD;YACzD,aAAa,CAAC,GAAG,CAAC,CAAC;YACnB,iBAAiB,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,mEAAmE;gBACnE,iEAAiE;gBACjE,SAAS,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxF,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,MAAM,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,wEAAwE;QACxE,4DAA4D;QAC5D,MAAM,gBAAgB,GAAG;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;YAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAClC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YACjD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YACjD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;SAC7C,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACvD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CACtG,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,sEAAsE;QACtE,yDAAyD;QACzD,MAAM,iBAAiB,GAAsC;YAC5D,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;YACrC,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;YAC7C,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;YAC7C,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;YACvC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;YAC1C,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YACtC,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;YAC5C,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;YACvC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YACvC,CAAC,oBAAoB,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;YACtD,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAChE,CAAC,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,KAAK,IAAI,CAAC;YAC5D,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;YAC9C,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;YACzC,CAAC,oBAAoB,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;YACtD,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;YACzC,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC;YAC3C,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YACvC,CAAC,kBAAkB,EAAE,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC;YACxD,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/D,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;YACtD,CAAC,wBAAwB,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACxE,CAAC;QACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CACX,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,qDAAqD,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAC1G,CAAC;QACH,CAAC;QACD,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;YAChC,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACnG,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7E,+FAAuD;YACvD,mEAAmC;YACnC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;SAC7E,CAAC,CAAC;QACH,OAAO;IACR,CAAC;IAED,6EAAwE;IACxE,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,4BAA4B,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE1D,+EAA0E;IAC1E,8EAA4E;IAC5E,sDAAsD;IACtD,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,+EAA+E;IAC/E,0EAA0E;IAC1E,gFAAgF;IAChF,MAAM,oBAAoB,GACzB,MAAM,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,KAAK,aAAa,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACvG,IAAI,oBAAoB,EAAE,CAAC;QAC1B,cAAc,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,yDAAyD;IACzD,MAAM,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7F,IAAI,CAAC,eAAe,CAAC,CAAC;IAEtB,MAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,0BAA0B,GAAG,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;IAEtF,oEAAoE;IACpE,wFAAwF;IACxF,IAAI,OAAO,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,uBAAuB,EAAE,EAAE,CAAC;QAC/G,MAAM,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChE,sBAAsB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,2EAA2E;IAC3E,qFAAqF;IACrF,sFAAsF;IACtF,qFAAqF;IACrF,8CAA8C;IAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GACf,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,sBAAsB,CAAC,aAAa,EAAE,CAAC;IACxC,IAAI,cAAc,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;IACjG,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC9E,IAAI,sBAAsB,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;YACrG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC7B,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtG,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,2BAA2B,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,2EAA2E;IAC3E,+DAA+D;IAC/D,4EAA4E;IAC5E,wEAAwE;IACxE,4CAA4C;IAC5C,MAAM,yBAAyB,GAAG,GAGhC,EAAE,CAAC;QACJ,IAAI,MAAqC,CAAC;QAC1C,OAAO;YACN,IAAI,EAAE;gBACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;gBAC5C,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC5B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;aACtF;YACD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpB,MAAM,GAAG,IAAI,CAAC;YAAA,CACd;SACD,CAAC;IAAA,CACF,CAAC;IACF,MAAM,oBAAoB,GAAG;QAC5B,WAAW,EAAE,yBAAyB,EAAE;QACxC,GAAG,EAAE,yBAAyB,EAAE;KAChC,CAAC;IACF,oGAAuD;IACvD,2GAAyC;IACzC,8FAAwD;IACxD,qFAAqC;IACrC,+DAA6C;IAC7C,IAAI,sBAAoE,CAAC;IACzE,MAAM,yBAAyB,GAAG,CAAC,YAAoB,EAAoC,EAAE,CAAC;QAC7F,sBAAsB,KAAK,wBAAwB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CACzF,CAAC,KAAc,EAA2B,EAAE,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACrG;aACD;YACD,UAAU,EAAE,CAAC;SACb,CAAC,CACF,CAAC;QACF,OAAO,sBAAsB,CAAC;IAAA,CAC9B,CAAC;IACF,MAAM,aAAa,GAAqC,KAAK,EAAE,EAC9D,GAAG,EACH,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,2BAA2B,GAC3B,EAAE,EAAE,CAAC;QACL,MAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrE,oGAAmD;QACnD,8FAAoD;QACpD,yDAAiC;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC;YAC7D,KAAK,MAAM,UAAU,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,MAAM,CACX,CAAC,CAAC,oCAAoC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAC/F,CACD,CAAC;YACH,CAAC;QACF,CAAC;QACD,MAAM,2BAA2B,GAChC,OAAO,EAAE,2BAA2B,IAAI,2CAA2C,EAAE,CAAC;QACvF,IAAI,cAA8E,CAAC;QACnF,IAAI,wBAAwB,GAAoC,EAAE,CAAC;QACnE,8EAAiE;QACjE,2EAAiE;QACjE,wEAAwE;QACxE,2EAAyE;QACzE,sEAAsE;QACtE,kEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACnE,IAAI,CAAC;gBACJ,MAAM,gBAAgB,GAAG,MAAM,2BAA2B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9E,cAAc,GAAG,gBAAgB,CAAC;gBAClC,wBAAwB,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtE,IAAI,EAAE,gBAAgB,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,MAAgB;oBAC1F,OAAO,EAAE,yBAAyB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;iBAC9D,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACR,wBAAwB,GAAG;oBAC1B,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,0EAA0E,EAAE;iBACtG,CAAC;YACH,CAAC;QACF,CAAC;QACD,MAAM,uBAAuB,GAAG,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,MAAM,qBAAqB,GAAG,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,wEAAwE;QACxE,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,gCAAgC,GACrC,cAAc,EAAE,MAAM,KAAK,OAAO;YACjC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9E,QAAQ;gBACR,YAAY;aACZ,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QACd,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,sEAAsE;QACtE,wEAAwE;QACxE,yEAAwE;QACxE,8BAA8B;QAC9B,MAAM,UAAU,GACf,OAAO,EAAE,UAAU;YACnB,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,SAAS,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,CAAC;gBAChG,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAChC,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,eAAe,GACpB,OAAO,EAAE,eAAe;YACxB,CAAC,kBAAkB,CAAC,SAAS,KAAK,SAAS;gBAC1C,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC;oBACA,GAAG,+BAA+B,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM,CACtE,CAAC,OAAO,EAAE,EAAE,CACX,CAAC,qBAAqB,EAAE,IAAI,CAC3B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CACtF,CACF;oBACD,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;iBAChC,CAAC,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;YACjD,GAAG;YACH,QAAQ;YACR,eAAe,EAAE,sBAAsB;YACvC,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,0EAAyD;YACzD,mEAAmE;YACnE,mEAAmE;YACnE,2DAA2D;YAC3D,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,IAAI;YACnB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,SAAS,KAAK,SAAS;gBACjE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,kBAAkB,CAAC,SAAS,EAAE,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,iBAAiB,KAAK,SAAS;gBACzE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,iBAAiB,KAAK,SAAS;gBACzE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;YACjF,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,EAAE,iBAAiB,KAAK,SAAS;gBAC/D,CAAC,CAAC,uBAAuB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,uBAAuB,EAAE;gBACjD,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,gCAAgC,KAAK,SAAS;gBACrE,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,CAAC;YACpE,GAAG,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,CAAC;YAC9E,qBAAqB,EAAE;gBACtB,oBAAoB,EAAE,kBAAkB;gBACxC,6BAA6B,EAAE,2BAA2B;gBAC1D,oBAAoB,EAAE,kBAAkB;gBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,wFAAkD;gBAClD,8FAAoD;gBACpD,kBAAkB,EAAE;oBACnB,GAAG,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;oBACpC,GAAG,CAAC,YAAY,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;iBAC5F;aACD;SACD,CAAC,CAAC;QACH,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QACnD,MAAM,WAAW,GAAoC;YACpD,GAAG,kBAAkB,CAAC,WAAW;YACjC,GAAG,QAAQ,CAAC,WAAW;YACvB,GAAG,0BAA0B,CAAC,eAAe,CAAC;SAC9C,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAC1E,MAAM,YAAY,GACjB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,MAAM,iBAAiB,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/F,CAAC,CAAC,EAAE,CAAC;QACP,0GAA8D;QAC9D,sGAAgD;QAChD,MAAM,YAAY,GACjB,YAAY,KAAK,SAAS;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACP,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;gBACpF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7E,MAAM,IAAI,KAAK,CACd,CAAC,CAAC,2FAA2F,EAAE;wBAC9F,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;wBACnC,SAAS,EACR,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACvF,CAAC,CACF,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC;YAAA,CACnB,CAAC,EAAE,CAAC;QACR,MAAM,cAAc,GAAG,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC5D,MAAM,EACL,OAAO,EAAE,cAAc,EACvB,oBAAoB,EACpB,WAAW,EAAE,wBAAwB,GACrC,GAAG,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACjH,WAAW,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC9C,+EAA+E;QAC/E,kFAAgF;QAChF,4EAA4E;QAC5E,4EAA4E;QAC5E,2CAA2C;QAC3C,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,cAAc,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YACjC,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAAA,CACjF,CAAC,EAAE,CAAC;QAEL,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC3B,WAAW,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,yFAAyF;iBAClG,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,MAAM,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACnF,CAAC;QACF,CAAC;QAED,gGAAwD;QACxD,MAAM,gBAAgB,GACrB,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI;YAC/F,CAAC,CAAE,UAAoB;YACvB,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;YACpD,QAAQ;YACR,cAAc;YACd,KAAK,EAAE,YAAY,IAAI,cAAc,CAAC,KAAK,IAAI,mBAAmB;YAClE,aAAa,EACX,YAAY,EAAE,aAAqD,IAAI,cAAc,CAAC,aAAa;YACrG,YAAY,EAAE,cAAc,CAAC,YAAY;YACzC,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,YAAY,EAAE,cAAc,CAAC,YAAY;YACzC,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,yBAAyB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC/D,mFAA4D;YAC5D,wGAA8C;YAC9C,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzD,0FAA6D;YAC7D,6GAAiD;YACjD,GAAG,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,QAAQ;gBAC/D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACxD,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;gBAC1F,CAAC,CAAC,EAAE,CAAC;YACN,UAAU,EAAE,iBAAiB;YAC7B,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;YAC/E,qGAA6C;YAC7C,wGAA8C;YAC9C,sFAA4C;YAC5C,2FAA+D;YAC/D,+FAA6C;YAC7C,GAAG,CAAC,2BAA2B,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,CAAC;YACrF,gGAA8C;YAC9C,2GAAuD;YACvD,8BAA8B,EAAE,IAAI;YACpC,wEAAwE;YACxE,sEAAsE;YACtE,GAAG,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,oBAAoB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChF,CAAC,CAAC;QACH,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,+BAA+B,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,OAAO,EAAE;aAChI,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,oBAAoB,CAAC;QAClF,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;YAClD,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,YAAY,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACvC,2GAA2C;YAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,OAAO;YACN,GAAG,OAAO;YACV,QAAQ,EAAE;gBACT,GAAG,QAAQ;gBACX,0EAAwD;gBACxD,sFAAwC;gBACxC,gFAAwD;gBACxD,kFAA0C;gBAC1C,0BAA0B,EAAE,OAAO,CAAC,OAAO,CAAC,0BAA0B;aACtE;YACD,WAAW;YACX,GAAG,CAAC,YAAY,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACA,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;wBAClB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;wBACnD,MAAM,mBAAmB,GAAG,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC;wBAClE,OAAO;4BACN,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;4BACjD,GAAG,CAAC,YAAY,EAAE,aAAa,KAAK,SAAS;gCAC5C,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC;4BACtD,uFAAiD;4BACjD,yFAAqD;4BACrD,GAAG,CAAC,mBAAmB,EAAE,kBAAkB,KAAK,SAAS;gCACxD,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;4BAClE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;gCACtC,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC;oCACA,KAAK,EAAE;wCACN,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ;wCACxC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wCAC5B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa;wCAClD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;wCAC1C,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS;qCAC1C;iCACD,CAAC;4BACJ,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI;yBAChE,CAAC;oBAAA,CACF,CAAC,EAAE;iBACJ,CAAC;SACJ,CAAC;IAAA,CACF,CAAC;IACF,IAAI,CAAC,eAAe,CAAC,CAAC;IACtB;;;OAGG;IACH,SAAS,6BAA6B,CAAC,GAAY,EAAuC;QACzF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,MAAM,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC,OAAO,CAAC;IAAA,CACtB;IACD,gFAAgF;IAChF,iFAA+E;IAC/E,gFAAgF;IAChF,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,kCAAkC,CAAC;gBACjD,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;oBACjC,yGAAiD;oBACjD,+FAAqD;oBACrD,MAAM,YAAY,GAAG,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACpE,+FAAuD;oBACvD,wGAAgD;oBAChD,MAAM,UAAU,GACf,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe,KAAK,EAAE;wBAC5E,CAAC,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;wBACpE,CAAC,CAAC,SAAS,CAAC;oBACd,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe,KAAK,EAAE,EAAE,CAAC;wBACnF,IACC,UAAU,KAAK,SAAS;4BACxB,OAAO,CAAC,eAAe,KAAK,SAAS;4BACrC,UAAU,CAAC,kBAAkB,KAAK,OAAO,CAAC,eAAe,EACxD,CAAC;4BACF,MAAM,IAAI,KAAK,CACd,CAAC,CAAC,yEAAyE,EAAE;gCAC5E,QAAQ,EAAE,OAAO,CAAC,eAAe;gCACjC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;6BACzC,CAAC,CACF,CAAC;wBACH,CAAC;oBACF,CAAC;oBACD,MAAM,cAAc,GACnB,UAAU,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ;wBACtE,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;wBACtE,CAAC,CAAC,SAAS,CAAC;oBACd,gGAA0D;oBAC1D,uGAA+C;oBAC/C,gEAA4B;oBAC5B,MAAM,YAAY,GAAoC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;oBAC7E,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC;wBACrC,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS;4BAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;wBAClG,OAAO,YAAY,CAAC,OAAO,CAAC;oBAAA,CAC5B,CAAC;oBACF,MAAM,UAAU,GACf,OAAO,CAAC,eAAe,KAAK,SAAS;wBACpC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACA,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gCACvB,qBAAqB,CAAC;oCACrB,QAAQ;oCACR,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe;iCACnD,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;4BAAA,CACzC;4BACD,WAAW,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;gCACnC,qBAAqB,CAAC;oCACrB,QAAQ;oCACR,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe;iCACnD,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;4BAAA,CACrD;4BACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CACrB,qBAAqB,CAAC;gCACrB,QAAQ;gCACR,oBAAoB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe;6BACnD,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC;yBACxC,CAAC;oBACL,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;wBACnC,GAAG,EAAE,gBAAgB;wBACrB,QAAQ;wBACR,6FAAoD;wBACpD,0FAAkD;wBAClD,yFAA2C;wBAC3C,cAAc,EACb,cAAc,KAAK,SAAS,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;4BACpE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;4BACnF,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gCACpE,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;oCACxC,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;gCACnD,qEAAqC;gCACrC,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;gCACxF,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;6BACjF,CAAC;wBACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;wBACvD,GAAG,CAAC,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC;wBAClF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;qBAC5F,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;oBAChC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;oBAC3C,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,iBAAiB,EAAE,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBACrF,8GAAgD;oBAChD,OAAO;wBACN,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;wBACxE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;wBACxC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;wBAChC,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;wBAC3C,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE;wBAC7C,wGAAyD;wBACzD,UAAU,EAAE,0BAA0B,CAAC,OAAO,CAAC;wBAC/C,4EAA8C;wBAC9C,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS;4BACjC,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC;gCACA,KAAK,EAAE,CAAC,IAAY,EAAiB,EAAE,CAAC;oCACvC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;oCACjC,IAAI,OAAO,KAAK,SAAS;wCAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;oCACpD,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gCAAA,CACtC;6BACD,CAAC;wBACJ,4EAAsC;wBACtC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;4BACnC,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAoD,EAAE,CAAC;qBACjF,CAAC;gBAAA,CACF;aACD,CAAC;SACF,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC;QAClB,OAAO;IACR,CAAC;IACD,IAAI,OAA8D,CAAC;IACnE,iFAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,oBAAuF,CAAC;IAC5F,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE;YACxD,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE;YAC5B,QAAQ;YACR,cAAc;SACd,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,mGAAyD;QACzD,uGAAyD;QACzD,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,wEAAwE;QACxE,4EAAuE;QACvE,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAoB,CAAC;YAAE,MAAM,KAAK,CAAC;QAC1D,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,4EAAuE;QACvE,0EAA0E;QAC1E,yEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,qCAAqC;QACrC,oBAAoB,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC9F,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC;YACJ,OAAO,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE;gBACxD,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE;gBAC5B,QAAQ;gBACR,cAAc;aACd,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACrB,IAAI,UAAU,YAAY,oBAAoB,EAAE,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,CAAC;QAClB,CAAC;IACF,CAAC;IACD,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAClC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC;IAC5D,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IACnD,sBAAsB,CAAC,eAAe,CAAC,8BAA8B,EAAE,CAAC,CAAC;IACzE,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,CAAC;IACtE,uBAAuB,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;QAC9C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,sFAAsF;IACtF,IAAI,YAAgC,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvB,YAAY,GAAG,MAAM,cAAc,EAAE,CAAC;QACtC,gHAA4D;QAC5D,IAAI,YAAY,KAAK,SAAS,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC7D,OAAO,GAAG,OAAO,CAAC;QACnB,CAAC;IACF,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEvB,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,MAAM,qBAAqB,CACpE,MAAM,EACN,eAAe,CAAC,kBAAkB,EAAE,EACpC,YAAY,CACZ,CAAC;IACF,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9B,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,KAAK,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,CAAC,CAAC;IAElB,gDAAgD;IAChD,IAAI,OAAO,KAAK,aAAa,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1B,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,CAAC,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9G,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;IAClG,iGAAiD;IACjD,kFAAwC;IACxC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/F,IAAI,OAAO,KAAK,aAAa,IAAI,gBAAgB,EAAE,CAAC;QACnD,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,yEAAyE;IACzE,4EAA4E;IAC5E,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,MAAM,CACX,CAAC,CAAC,mEAAmE,EAAE;gBACtE,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY;gBACpD,OAAO,EAAE,SAAS,CAAC,OAAO;aAC1B,CAAC,CACF,CACD,CAAC;QACH,CAAC;IACF,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE3B,qEAAqE;IACrE,6EAA6E;IAC7E,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACnH,IAAI,OAAO,KAAK,aAAa,IAAI,eAAe,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,IAAI,8BAA8B,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACpF,IAAI,gBAAgB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,+GAA+G;IAC/G,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7D,KAAK,YAAY;aACf,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;aACtC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;aACf,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACvB,YAAY,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,OAAO,EAAE;YACzB,mBAAmB,EAAE,oBAAoB,CAAC,GAAG;YAC7C,2FAAyC;YACzC,yDAAiC;YACjC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC;SAC/E,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE;YACpD,2FAAyC;YACzC,yDAAiC;YACjC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC;YAC/E,iBAAiB;YACjB,kBAAkB;YAClB,oBAAoB;YACpB,cAAc;YACd,aAAa;YACb,eAAe,EAAE,MAAM,CAAC,QAAQ;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,mBAAmB,EAAE,MAAM,CAAC,QAAQ;YACpC,oBAAoB;YACpB,eAAe;SACf,CAAC,CAAC;QACH,yEAAyE;QACzE,oDAAoD;QACpD,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACtF,IAAI,gBAAgB,EAAE,CAAC;YACtB,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC7B,gFAAgF;YAChF,yFAAyF;YACzF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO;QACR,CAAC;QAED,YAAY,EAAE,CAAC;QACf,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACP,YAAY,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;YAC5C,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;YAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc;YACd,aAAa;SACb,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC;QACD,OAAO;IACR,CAAC;AAAA,CACD","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * createAgentSession() options. The SDK does the heavy lifting.\n */\n\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { type ImageContent, modelsAreEqual } from \"@agent-forge/ai\";\nimport { setCapabilityOverrides } from \"@agent-forge/tui\";\nimport chalk from \"chalk\";\nimport { type Args, isValidHostLogLevel, type Mode, normalizeSessionName, parseArgs, printHelp } from \"./cli/args.ts\";\nimport {\n\ttype AuthCheckResult,\n\tcheckProviderAuth,\n\tcreateAuthCheckModelRuntime,\n\tgetProviderCredential,\n} from \"./cli/auth-check.ts\";\nimport {\n\ttype AuthCommand,\n\tAuthCommandError,\n\tgetAuthCommandName,\n\tgetAuthCommandUsage,\n\tisAuthCommandHelp,\n\tparseAuthCommand,\n\tprintAuthCommandHelp,\n\tvalidateAuthCommandArgs,\n} from \"./cli/auth-command.ts\";\nimport { resolveCredentialForPrint } from \"./cli/credential-print.ts\";\nimport { processFileArguments } from \"./cli/file-processor.ts\";\nimport { buildInitialMessage } from \"./cli/initial-message.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { handlePluginEcosystemCommand } from \"./cli/plugin-command.ts\";\nimport type { PluginManagerControllerV1 } from \"./cli/plugin-manager-controller.ts\";\nimport { runServeMode } from \"./cli/serve.ts\";\nimport { resolveSessionPath, selectSession } from \"./cli/session-picker.ts\";\nimport { shouldRunFirstTimeSetup, showFirstTimeSetup, showStartupSelector } from \"./cli/startup-ui.ts\";\nimport { runTraceView } from \"./cli/trace-view.ts\";\nimport {\n\tAPP_NAME,\n\tCONFIG_DIR_NAME,\n\tENV_SESSION_DIR,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetPackageDir,\n\tgetSessionsDir,\n\tVERSION,\n} from \"./config.ts\";\nimport { type CreateAgentSessionRuntimeFactory, createAgentSessionRuntime } from \"./core/agent-session-runtime.ts\";\nimport {\n\ttype AgentSessionRuntimeDiagnostic,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionServices,\n} from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage, ReadOnlyAuthStorage } from \"./core/auth-storage.ts\";\nimport { exportFromFile } from \"./core/export-html/index.ts\";\nimport type { InteractionHostV1 } from \"./core/extensions/index.ts\";\nimport { applyHttpProxySettings, configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { setI18nLanguage, t } from \"./core/i18n/index.ts\";\nimport { createHostLogger, type HostLogger, type HostLogLevel } from \"./core/logger.ts\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.ts\";\nimport { restoreStdout, takeOverStdout } from \"./core/output-guard.ts\";\nimport type { CreateAgentSessionOptions } from \"./core/sdk.ts\";\nimport {\n\tformatMissingSessionCwdPrompt,\n\tgetMissingSessionCwdIssue,\n\tMissingSessionCwdError,\n\ttype SessionCwdIssue,\n} from \"./core/session-cwd.ts\";\nimport { assertValidSessionId, SessionManager } from \"./core/session-manager.ts\";\nimport { collectSettingsDiagnostics, deduplicateDiagnostics } from \"./core/settings-diagnostics.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { sweepTraceFiles } from \"./core/trace-retention.ts\";\nimport type { ActivePluginBindingResolverV1 } from \"./plugins/ecosystem/active-bindings.ts\";\nimport {\n\tcreateDefaultActivePluginBindingsResolverV1,\n\tdefaultPluginHostFactsV1,\n} from \"./plugins/ecosystem/default-active-bindings.ts\";\nimport { runNodePluginBootstrapV1 } from \"./plugins/ecosystem/node-plugin-bootstrap.ts\";\nimport type { PluginBootstrapResultV1 } from \"./plugins/ecosystem/plugin-bootstrap.ts\";\nimport type { PluginSelectionV1 } from \"./plugins/ecosystem/selection.ts\";\nimport { createPluginSelectionStoreV1 } from \"./plugins/ecosystem/selection-store.ts\";\nimport type { HostFactsV1 } from \"./plugins/ecosystem/types.ts\";\nimport {\n\ttype BuiltinPluginManifestOverridesV1,\n\ttype BuiltinPluginProfileIdV1,\n\tdefaultBuiltinVerifiedPluginsV1,\n\tisBuiltinPluginProfileIdV1,\n} from \"./profile/plugin-profiles.ts\";\nimport type { VerifiedToolPluginV1 } from \"./profile/profile-assembly.ts\";\nimport { isBuiltinSuiteId } from \"./profiles/builtin-suites.ts\";\nimport {\n\tclearDanglingSuiteSettings,\n\tcreateSuite,\n\tdeleteSuite,\n\tfindSuiteSessionRefs,\n\treleaseTrashedSuite,\n\tresetSuite,\n\tSuiteLifecycleError,\n\tsweepSuiteTrash,\n} from \"./profiles/suite-lifecycle.ts\";\nimport {\n\tgetSuiteWorkspaceDir,\n\tlistSuiteIds,\n\tSUITE_ENV_VAR,\n\tSUITE_MANIFEST_FILENAME,\n\tSuiteRebindError,\n\tSuiteResolutionError,\n} from \"./profiles/suite-loader.ts\";\n\ntype AppMode = \"interactive\" | \"print\" | \"json\" | \"rpc\";\n\nimport { createSubagentMailbox, createTurnProgressSourceV1 } from \"@agent-forge/protocol/subagent\";\nimport { agentSessionsDir } from \"./core/agent-session-paths.ts\";\nimport { findSessionFile, readAgentSession } from \"./core/agent-session-store.ts\";\nimport {\n\ttype AgentTaskChildProfileV1,\n\tparseAgentTaskChildProfileV1,\n\ttype SubagentCommunicationWiringV1,\n} from \"./core/extensions/public-api.ts\";\nimport { printTimings, resetTimings, time } from \"./core/timings.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { cleanupManagedInstall, handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport { runSubagentTaskRunner } from \"./plugins/subagent-task/runner-entry.ts\";\nimport { createSubagentTaskSessionFactoryV1 } from \"./plugins/subagent-task/session-factory.ts\";\nimport { isLocalPath, normalizePath, resolvePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\n/**\n * Process-level host logger (设计 §5), created lazily by {@link main}. The\n * logger owns the process-wide uncaughtException/unhandledRejection hooks, so\n * repeated `main()` invocations (tests, embedding loops) must reuse the first\n * instance instead of accumulating listeners.\n */\nlet processHostLogger: HostLogger | undefined;\n\n/**\n * Read all content from piped stdin.\n * Returns undefined if stdin is a TTY (interactive terminal).\n */\nasync function readPipedStdin(): Promise<string | undefined> {\n\t// If stdin is a TTY, we're running interactively - don't read stdin\n\tif (process.stdin.isTTY) {\n\t\treturn undefined;\n\t}\n\n\treturn new Promise((resolve) => {\n\t\tlet data = \"\";\n\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\tdata += chunk;\n\t\t});\n\t\tprocess.stdin.on(\"end\", () => {\n\t\t\tresolve(data.trim() || undefined);\n\t\t});\n\t\tprocess.stdin.resume();\n\t});\n}\n\n/**\n * Suite 漂移/升级提示降噪(借鉴 lastChangelogVersion 的\"记已见版本\"模式):\n * 同一 suite 的同版本漂移/升级诊断只呈现一次——首次见到时保留并记录 ack,\n * 之后相同指纹的提示在启动面静默(诊断仍可经 /debug 面查看)。新指纹\n * (锁内容变化、更高的 factory revision)会重新提示。\n */\nfunction filterAcknowledgedSuiteNotices(\n\tdiagnostics: readonly AgentSessionRuntimeDiagnostic[],\n\tsettingsManager: SettingsManager,\n): AgentSessionRuntimeDiagnostic[] {\n\tconst driftPattern = /^Suite \"([^\"]+)\" profile lock (drift|migration required): (.+)$/;\n\tconst upgradePattern = /^Suite \"([^\"]+)\": factory revision (\\d+) available/;\n\tconst kept: AgentSessionRuntimeDiagnostic[] = [];\n\tfor (const diagnostic of diagnostics) {\n\t\tconst drift = driftPattern.exec(diagnostic.message);\n\t\tconst upgrade = drift === null ? upgradePattern.exec(diagnostic.message) : undefined;\n\t\tif (drift === null && upgrade === null) {\n\t\t\tkept.push(diagnostic);\n\t\t\tcontinue;\n\t\t}\n\t\tconst upgradeRevisionMatch = upgrade?.[2];\n\t\tconst suiteId = drift?.[1] ?? upgrade?.[1];\n\t\tif (suiteId === undefined) {\n\t\t\tkept.push(diagnostic);\n\t\t\tcontinue;\n\t\t}\n\t\tconst previous = settingsManager.getSuiteNoticeAcknowledgement(suiteId);\n\t\tif (drift !== null) {\n\t\t\tconst digest = drift[3] ?? \"\";\n\t\t\tif (previous?.driftDigest === digest) continue;\n\t\t\tsettingsManager.setSuiteNoticeAcknowledgement(suiteId, {\n\t\t\t\t...(previous ?? {}),\n\t\t\t\tdriftDigest: digest,\n\t\t\t});\n\t\t} else if (upgrade !== null && upgradeRevisionMatch !== undefined) {\n\t\t\tconst revision = Number.parseInt(upgradeRevisionMatch, 10);\n\t\t\tif (previous?.upgradeRevision !== undefined && previous.upgradeRevision >= revision) continue;\n\t\t\tsettingsManager.setSuiteNoticeAcknowledgement(suiteId, {\n\t\t\t\t...(previous ?? {}),\n\t\t\t\tupgradeRevision: revision,\n\t\t\t});\n\t\t}\n\t\tkept.push(diagnostic);\n\t}\n\treturn kept;\n}\n\nfunction reportDiagnostics(diagnostics: readonly AgentSessionRuntimeDiagnostic[]): void {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : diagnostic.type === \"warning\" ? chalk.yellow : chalk.dim;\n\t\tconst message =\n\t\t\tdiagnostic.type === \"error\"\n\t\t\t\t? t(\"Error: {message}\", { message: diagnostic.message })\n\t\t\t\t: diagnostic.type === \"warning\"\n\t\t\t\t\t? t(\"Warning: {message}\", { message: diagnostic.message })\n\t\t\t\t\t: diagnostic.message;\n\t\tconsole.error(color(message));\n\t}\n}\n\nfunction isTruthyEnvFlag(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\nfunction resolveAppMode(parsed: Args, stdinIsTTY: boolean, stdoutIsTTY: boolean): AppMode {\n\t// Headless subagent runner (D-045): stdout is the subagent-task protocol\n\t// channel, so this mode must never classify as interactive.\n\tif (parsed.subagentRunner === true) {\n\t\treturn \"print\";\n\t}\n\tif (parsed.mode === \"rpc\") {\n\t\treturn \"rpc\";\n\t}\n\tif (parsed.mode === \"json\") {\n\t\treturn \"json\";\n\t}\n\tif (parsed.print || !stdinIsTTY || !stdoutIsTTY) {\n\t\treturn \"print\";\n\t}\n\treturn \"interactive\";\n}\n\nfunction toPrintOutputMode(appMode: AppMode): Exclude<Mode, \"rpc\"> {\n\treturn appMode === \"json\" ? \"json\" : \"text\";\n}\n\nfunction isPlainRuntimeMetadataCommand(parsed: Args): boolean {\n\treturn !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);\n}\n\nasync function runAuthCommand(args: string[]): Promise<boolean> {\n\tif (isAuthCommandHelp(args)) {\n\t\tprintAuthCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet command: AuthCommand | undefined;\n\ttry {\n\t\tcommand = parseAuthCommand(args);\n\t} catch (error) {\n\t\tconst message = error instanceof AuthCommandError ? error.message : t(\"Failed to parse auth command\");\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\tif (!command) return false;\n\n\tconst parsed = parseArgs(command.args);\n\t// Unknown long options keep the dedicated \"Invalid arguments\" surface; every\n\t// other parse diagnostic keeps the auth-check failure semantics (exit 2 for\n\t// `auth check`) via the AuthCommandError path inside the try below.\n\tconst unknownLongOptions = parsed.diagnostics.filter((diagnostic) =>\n\t\tdiagnostic.message.startsWith(\"Unknown option: --\"),\n\t);\n\tif (unknownLongOptions.length > 0) {\n\t\tfor (const diagnostic of unknownLongOptions) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: diagnostic.message })));\n\t\t}\n\t\tconsole.error(chalk.red(t('Invalid arguments for \"{command}\".', { command: getAuthCommandName(command.kind) })));\n\t\tconsole.error(\n\t\t\tchalk.dim(\n\t\t\t\tt('Use \"{help}\" or \"{usage}\".', {\n\t\t\t\t\thelp: `${APP_NAME} --help`,\n\t\t\t\t\tusage: getAuthCommandUsage(command.kind),\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t\tprocess.exitCode = 1;\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tif (parsed.diagnostics.length > 0) {\n\t\t\tthrow new AuthCommandError(parsed.diagnostics.map((diagnostic) => diagnostic.message).join(\"\\n\"));\n\t\t}\n\t\tif (command.kind !== \"check\") {\n\t\t\tconst signal = AbortSignal.timeout(15_000);\n\t\t\tconst modelRuntime = await ModelRuntime.create({ allowModelNetwork: false, signal });\n\t\t\tconst credential = await resolveCredentialForPrint(\n\t\t\t\tparsed,\n\t\t\t\tmodelRuntime,\n\t\t\t\tcommand.kind,\n\t\t\t\tcommand.minExpiryMs,\n\t\t\t\tsignal,\n\t\t\t);\n\t\t\tprocess.stdout.write(`${credential}\\n`);\n\t\t\treturn true;\n\t\t}\n\n\t\tconst requestedAuth = validateAuthCommandArgs(parsed, command.kind);\n\t\tlet result: AuthCheckResult;\n\t\tlet credential: string | undefined;\n\t\ttry {\n\t\t\tconst credentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();\n\t\t\tconst modelRuntime = await createAuthCheckModelRuntime(credentials);\n\t\t\tresult = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh });\n\t\t\tif (command.credentials && result.status === \"ready\") {\n\t\t\t\tcredential = await getProviderCredential(result.provider, modelRuntime, credentials, {\n\t\t\t\t\trefresh: !command.noRefresh,\n\t\t\t\t});\n\t\t\t\tif (!credential) {\n\t\t\t\t\tresult = { status: \"not_ready\", provider: result.provider, reason: \"credential_not_available\" };\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\tresult = {\n\t\t\t\tstatus: \"invalid\",\n\t\t\t\tprovider: requestedAuth.provider ?? requestedAuth.model!,\n\t\t\t\treason: \"invalid_state\",\n\t\t\t};\n\t\t}\n\t\tconst output = command.json\n\t\t\t? JSON.stringify({ ...result, ...(credential ? { credentials: credential } : {}) })\n\t\t\t: (credential ?? result.status);\n\t\tprocess.stdout.write(`${output}\\n`);\n\t\tprocess.exitCode = result.status === \"ready\" ? 0 : result.status === \"not_ready\" ? 1 : 2;\n\t} catch (error) {\n\t\tconst message = error instanceof AuthCommandError ? error.message : t(\"Failed to resolve credential\");\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exitCode = command.kind === \"check\" ? 2 : 1;\n\t}\n\treturn true;\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n\tstdinContent?: string,\n): Promise<{\n\tinitialMessage?: string;\n\tinitialImages?: ImageContent[];\n}> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn buildInitialMessage({ parsed, stdinContent });\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\treturn buildInitialMessage({\n\t\tparsed,\n\t\tfileText: text,\n\t\tfileImages: images,\n\t\tstdinContent,\n\t});\n}\n\nfunction findLocalSessionByExactId(\n\tsessionId: string,\n\tcwd: string,\n\tsessionDir?: string,\n): { type: \"local\"; path: string } | undefined {\n\tconst path = SessionManager.findById(cwd, sessionId, sessionDir);\n\treturn path ? { type: \"local\", path } : undefined;\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nfunction printSuiteLifecycleError(error: unknown): void {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n}\n\nfunction suiteWorkspaceExists(agentDir: string, id: string): boolean {\n\treturn existsSync(join(getSuiteWorkspaceDir(agentDir, id), SUITE_MANIFEST_FILENAME));\n}\n\n/**\n * Suite lifecycle one-shot actions (设计 §9, M4): --suite-create/--suite-delete/\n * --suite-reset. Every performed action terminates the process; without any\n * lifecycle flag this returns and startup continues. Non-interactive stdin\n * refuses destructive actions (safe default).\n */\nasync function handleSuiteLifecycleCommands(parsed: Args, cwd: string, agentDir: string): Promise<void> {\n\tif (parsed.suiteCreate !== undefined) {\n\t\ttry {\n\t\t\tconst result = createSuite({\n\t\t\t\tagentDir,\n\t\t\t\tid: parsed.suiteCreate,\n\t\t\t\t...(parsed.cloneFrom === undefined ? {} : { cloneFrom: parsed.cloneFrom }),\n\t\t\t});\n\t\t\tconsole.log(t('Created suite \"{id}\" at {dir}', { id: result.suiteId, dir: result.suiteDir }));\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\tif (parsed.cloneFrom !== undefined) {\n\t\tconsole.error(chalk.red(t(\"Error: --clone-from requires --suite-create\")));\n\t\tprocess.exit(1);\n\t}\n\n\tif (parsed.suiteDelete !== undefined) {\n\t\tconst id = parsed.suiteDelete;\n\t\tif (isBuiltinSuiteId(id)) {\n\t\t\tprintSuiteLifecycleError(new SuiteLifecycleError(\"delete\", id, [`builtin suite \"${id}\" cannot be deleted`]));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (!suiteWorkspaceExists(agentDir, id)) {\n\t\t\tprintSuiteLifecycleError(new SuiteResolutionError(id, listSuiteIds(agentDir)));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst refs = findSuiteSessionRefs(agentDir, id);\n\t\tif (refs.length > 0) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\tt('Error: suite \"{id}\" is referenced by {count} existing session(s); deletion refused:', {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tcount: refs.length,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t\tfor (const ref of refs) {\n\t\t\t\tconsole.error(` ${ref.sessionId} ${ref.path}`);\n\t\t\t}\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst suiteDir = getSuiteWorkspaceDir(agentDir, id);\n\t\tconsole.log(\n\t\t\tt('Deleting suite \"{id}\": the workspace directory {dir} will be moved to the trash and released.', {\n\t\t\t\tid,\n\t\t\t\tdir: suiteDir,\n\t\t\t}),\n\t\t);\n\t\tif (!process.stdin.isTTY) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\tt(\n\t\t\t\t\t\t'Refusing to delete suite \"{id}\" without an interactive confirmation (non-interactive stdin). Re-run in a terminal to confirm.',\n\t\t\t\t\t\t{ id },\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (!(await promptConfirm(t('Delete suite \"{id}\"?', { id })))) {\n\t\t\tconsole.log(t('Aborted: suite \"{id}\" was not deleted.', { id }));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\ttry {\n\t\t\tconst result = deleteSuite({ agentDir, id, refs });\n\t\t\tconst cleanup = clearDanglingSuiteSettings(SettingsManager.create(cwd, agentDir), id);\n\t\t\tfor (const scope of cleanup.clearedScopes) {\n\t\t\t\tconsole.log(t('Cleared the {scope} settings \"suite\" key (pointed at \"{id}\").', { scope, id }));\n\t\t\t}\n\t\t\treleaseTrashedSuite(result.trashPath);\n\t\t\tconsole.log(\n\t\t\t\tt('Deleted suite \"{id}\"; the workspace was moved to {trashPath} and is being released.', {\n\t\t\t\t\tid,\n\t\t\t\t\ttrashPath: result.trashPath,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.suiteReset !== undefined) {\n\t\tconst id = parsed.suiteReset;\n\t\tif (!isBuiltinSuiteId(id)) {\n\t\t\tconst message = listSuiteIds(agentDir).includes(id)\n\t\t\t\t? t('Suite \"{id}\" is a user suite; only builtin suites can be reset — use --suite-delete instead.', {\n\t\t\t\t\t\tid,\n\t\t\t\t\t})\n\t\t\t\t: new SuiteResolutionError(id, listSuiteIds(agentDir)).message;\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\ttry {\n\t\t\tconst plan = resetSuite({ agentDir, id });\n\t\t\tif (plan.diffText.length === 0) {\n\t\t\t\tconsole.log(t('Suite \"{id}\" already matches the factory contents; nothing to reset.', { id }));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tconsole.log(`${t('Resetting builtin suite \"{id}\" to the factory contents:', { id })}\\n`);\n\t\t\tconsole.log(plan.diffText);\n\t\t\tif (!process.stdin.isTTY) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.red(\n\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t'Refusing to reset suite \"{id}\" without an interactive confirmation (non-interactive stdin). Review the diff above and re-run in a terminal to confirm.',\n\t\t\t\t\t\t\t{ id },\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tif (!(await promptConfirm(t('Apply reset of suite \"{id}\"?', { id })))) {\n\t\t\t\tconsole.log(t('Aborted: suite \"{id}\" was not reset.', { id }));\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tconst result = plan.apply();\n\t\t\tconsole.log(\n\t\t\t\tt('Suite \"{id}\" was reset to the factory contents (profile lock generation {generation}).', {\n\t\t\t\t\tid,\n\t\t\t\t\tgeneration: result.lock.generation,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error: unknown) {\n\t\t\tprintSuiteLifecycleError(error);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n}\n\nfunction validateForkFlags(parsed: Args): void {\n\tif (!parsed.fork) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(\n\t\t\tchalk.red(t(\"Error: --fork cannot be combined with {flags}\", { flags: conflictingFlags.join(\", \") })),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction validateSessionIdFlags(parsed: Args): void {\n\tif (parsed.sessionId === undefined) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\tt(\n\t\t\t\t\t\"Error: --session-id cannot be combined with {flags}. To resume that exact session, drop the other flags and use --session-id alone (or use --continue to resume the most recent session).\",\n\t\t\t\t\t{ flags: conflictingFlags.join(\", \") },\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\ttry {\n\t\tassertValidSessionId(parsed.sessionId);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction openSessionOrExit(path: string, sessionDir?: string): SessionManager {\n\ttry {\n\t\treturn SessionManager.open(path, sessionDir);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction forkSessionOrExit(sourcePath: string, cwd: string, sessionDir?: string, sessionId?: string): SessionManager {\n\ttry {\n\t\treturn SessionManager.forkFrom(sourcePath, cwd, sessionDir, { id: sessionId });\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\tprocess.exit(1);\n\t}\n}\n\nexport async function createSessionManager(\n\tparsed: Args,\n\tcwd: string,\n\tsessionDir: string | undefined,\n\tsettingsManager: SettingsManager,\n): Promise<SessionManager> {\n\tif (parsed.noSession || parsed.help || parsed.listModels !== undefined) {\n\t\treturn SessionManager.inMemory(cwd, parsed.sessionId !== undefined ? { id: parsed.sessionId } : undefined);\n\t}\n\n\tif (parsed.fork) {\n\t\tif (parsed.sessionId) {\n\t\t\tconst existingTarget = findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);\n\t\t\tif (existingTarget) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.red(t(\"Session already exists with id '{sessionId}'\", { sessionId: parsed.sessionId })),\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t}\n\n\t\tconst resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\tcase \"global\":\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir, parsed.sessionId);\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(t(\"No session found matching '{arg}'\", { arg: resolved.arg })));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.session) {\n\t\tconst resolved = await resolveSessionPath(parsed.session, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\t\treturn openSessionOrExit(resolved.path, sessionDir);\n\n\t\t\tcase \"global\": {\n\t\t\t\tconsole.log(chalk.yellow(t(\"Session found in different project: {cwd}\", { cwd: resolved.cwd })));\n\t\t\t\tconst shouldFork = await promptConfirm(t(\"Fork this session into current directory?\"));\n\t\t\t\tif (!shouldFork) {\n\t\t\t\t\tconsole.log(chalk.dim(t(\"Aborted.\")));\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t}\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\t\t\t}\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(t(\"No session found matching '{arg}'\", { arg: resolved.arg })));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.resume) {\n\t\ttry {\n\t\t\tconst selectedPath = await selectSession(\n\t\t\t\t(onProgress, signal) => SessionManager.list(cwd, sessionDir, onProgress, signal),\n\t\t\t\t(onProgress, signal) => SessionManager.listAll(sessionDir, onProgress, signal),\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tif (!selectedPath) {\n\t\t\t\tconsole.log(chalk.dim(t(\"No session selected\")));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn SessionManager.open(selectedPath, sessionDir);\n\t\t} finally {\n\t\t\tstopThemeWatcher();\n\t\t}\n\t}\n\n\tif (parsed.continue) {\n\t\treturn SessionManager.continueRecent(cwd, sessionDir);\n\t}\n\n\tif (parsed.sessionId) {\n\t\tconst existingSession = findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);\n\t\tif (existingSession) {\n\t\t\treturn SessionManager.open(existingSession.path, sessionDir);\n\t\t}\n\t\tconsole.error(\n\t\t\tchalk.yellow(\n\t\t\t\tt(\"Warning: No project session found with id '{sessionId}'; creating a new session with that id.\", {\n\t\t\t\t\tsessionId: parsed.sessionId,\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n\n\treturn SessionManager.create(cwd, sessionDir, { id: parsed.sessionId });\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\thasExistingSession: boolean,\n\tmodelRuntime: ModelRuntime,\n\tsettingsManager: SettingsManager,\n): {\n\toptions: CreateAgentSessionOptions;\n\tcliThinkingFromModel: boolean;\n\tdiagnostics: AgentSessionRuntimeDiagnostic[];\n} {\n\tconst options: CreateAgentSessionOptions = {};\n\t// CRM 座席发现 F1/F2:显式迁移入口——--rebind-suite 采纳当前插件集并重写绑定。\n\tif (parsed.rebindSuite) options.allowSuiteRebind = true;\n\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\tlet cliThinkingFromModel = false;\n\n\t// Model from CLI\n\t// - supports --provider <name> --model <pattern>\n\t// - supports --model <provider>/<pattern>\n\tif (parsed.model) {\n\t\tconst resolved = resolveCliModel({\n\t\t\tcliProvider: parsed.provider,\n\t\t\tcliModel: parsed.model,\n\t\t\tcliThinking: parsed.thinking,\n\t\t\tmodelRuntime,\n\t\t});\n\t\tif (resolved.warning) {\n\t\t\tdiagnostics.push({ type: \"warning\", message: resolved.warning });\n\t\t}\n\t\tif (resolved.error) {\n\t\t\tdiagnostics.push({ type: \"error\", message: resolved.error });\n\t\t}\n\t\tif (resolved.model) {\n\t\t\toptions.model = resolved.model;\n\t\t\t// Allow \"--model <pattern>:<thinking>\" as a shorthand.\n\t\t\t// Explicit --thinking still takes precedence (applied later).\n\t\t\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = resolved.thinkingLevel;\n\t\t\t\tcliThinkingFromModel = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!options.model && scopedModels.length > 0 && !hasExistingSession) {\n\t\t// Check if saved default is in scoped models - use it if so, otherwise first scoped model\n\t\tconst savedProvider = settingsManager.getDefaultProvider();\n\t\tconst savedModelId = settingsManager.getDefaultModel();\n\t\tconst savedModel = savedProvider && savedModelId ? modelRuntime.getModel(savedProvider, savedModelId) : undefined;\n\t\tconst savedInScope = savedModel ? scopedModels.find((sm) => modelsAreEqual(sm.model, savedModel)) : undefined;\n\n\t\tif (savedInScope) {\n\t\t\toptions.model = savedInScope.model;\n\t\t\t// Use thinking level from scoped model config if explicitly set\n\t\t\tif (!parsed.thinking && savedInScope.thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = savedInScope.thinkingLevel;\n\t\t\t}\n\t\t} else {\n\t\t\toptions.model = scopedModels[0].model;\n\t\t\t// Use thinking level from first scoped model if explicitly set\n\t\t\tif (!parsed.thinking && scopedModels[0].thinkingLevel) {\n\t\t\t\toptions.thinkingLevel = scopedModels[0].thinkingLevel;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Thinking level from CLI (takes precedence over scoped model thinking levels set above)\n\tif (parsed.thinking) {\n\t\toptions.thinkingLevel = parsed.thinking;\n\t}\n\n\t// Scoped models for Ctrl+P cycling\n\t// Keep thinking level undefined when not explicitly set in the model pattern.\n\t// Undefined means \"inherit current session thinking level\" during cycling.\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((sm) => ({\n\t\t\tmodel: sm.model,\n\t\t\tthinkingLevel: sm.thinkingLevel,\n\t\t}));\n\t}\n\n\t// API key from CLI - set as a non-persistent runtime override\n\t// (handled by caller before createAgentSession)\n\n\t// Tools\n\tif (parsed.noTools) {\n\t\toptions.noTools = \"all\";\n\t} else if (parsed.noBuiltinTools) {\n\t\toptions.noTools = \"builtin\";\n\t}\n\tif (parsed.tools) {\n\t\toptions.tools = [...parsed.tools];\n\t}\n\tif (parsed.excludeTools) {\n\t\toptions.excludeTools = [...parsed.excludeTools];\n\t}\n\tif (parsed.suite) {\n\t\toptions.suite = parsed.suite;\n\t}\n\n\treturn { options, cliThinkingFromModel, diagnostics };\n}\n\nfunction resolveCliPaths(cwd: string, paths: string[] | undefined): string[] | undefined {\n\treturn paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));\n}\n\nasync function promptForMissingSessionCwd(\n\tissue: SessionCwdIssue,\n\tsettingsManager: SettingsManager,\n): Promise<string | undefined> {\n\treturn showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [\n\t\t{ label: \"Continue\", value: issue.fallbackCwd },\n\t\t{ label: \"Cancel\", value: undefined },\n\t]);\n}\n\ninterface CliPluginSelection {\n\treadonly profileId?: BuiltinPluginProfileIdV1;\n\treadonly selectedPluginIds?: readonly string[];\n\treadonly disabledPluginIds?: readonly string[];\n\treadonly diagnostics: readonly AgentSessionRuntimeDiagnostic[];\n}\n\nfunction selectionDiagnostics(\n\tstatus: \"invalid\" | \"cancelled\",\n\tdiagnostics: readonly { readonly code: string; readonly message: string }[],\n): AgentSessionRuntimeDiagnostic[] {\n\treturn diagnostics.map((item) => ({\n\t\ttype: \"error\" as const,\n\t\tmessage: `Plugin selection ${status} (${item.code}): ${item.message}`,\n\t}));\n}\n\n/**\n * Resolve explicit CLI selection and the optional persisted profile snapshot.\n * The store is deliberately not read for an ordinary run, so a user's saved\n * plugin choices cannot silently change the default session surface.\n */\nasync function resolveCliPluginSelection(parsed: Args, agentDir: string, cwd: string): Promise<CliPluginSelection> {\n\tconst hasExplicitSelection =\n\t\tparsed.pluginProfile !== undefined ||\n\t\tparsed.plugins !== undefined ||\n\t\tparsed.disabledPlugins !== undefined ||\n\t\tparsed.pluginSelectionScope !== undefined;\n\tif (!hasExplicitSelection || parsed.noPlugins) return { diagnostics: [] };\n\tif (parsed.pluginProfile === undefined && parsed.plugins === undefined && parsed.disabledPlugins === undefined) {\n\t\treturn { diagnostics: [{ type: \"error\", message: \"--plugin-scope requires an explicit plugin selection\" }] };\n\t}\n\n\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\tconst selectionScope = parsed.pluginSelectionScope ?? \"global\";\n\tconst selectionPath =\n\t\tselectionScope === \"project\"\n\t\t\t? join(cwd, CONFIG_DIR_NAME, \".plugin-selection.json\")\n\t\t\t: join(agentDir, \".plugin-selection.json\");\n\tconst store = createPluginSelectionStoreV1({ filePath: selectionPath });\n\tlet persistedResult: Awaited<ReturnType<typeof store.read>>;\n\ttry {\n\t\tpersistedResult = await store.read();\n\t} catch {\n\t\tdiagnostics.push({ type: \"error\", message: \"Plugin selection could not be read\" });\n\t\treturn { diagnostics };\n\t}\n\tif (persistedResult.status === \"invalid\" || persistedResult.status === \"cancelled\") {\n\t\tdiagnostics.push(...selectionDiagnostics(persistedResult.status, persistedResult.diagnostics));\n\t\treturn { diagnostics };\n\t}\n\n\tconst explicitProfileId = parsed.pluginProfile;\n\tlet profileId: BuiltinPluginProfileIdV1 | undefined;\n\tif (explicitProfileId !== undefined) {\n\t\tif (!isBuiltinPluginProfileIdV1(explicitProfileId)) {\n\t\t\tdiagnostics.push({ type: \"error\", message: `Unknown plugin profile: ${explicitProfileId}` });\n\t\t\treturn { diagnostics };\n\t\t}\n\t\tprofileId = explicitProfileId;\n\t}\n\n\tlet persistedSelection: PluginSelectionV1 | undefined;\n\tif (profileId !== undefined) {\n\t\tpersistedSelection = persistedResult.snapshot.selections.find((selection) => selection.profileId === profileId);\n\t} else if (parsed.plugins !== undefined || parsed.disabledPlugins !== undefined) {\n\t\tif (persistedResult.snapshot.selections.length !== 1) {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage:\n\t\t\t\t\tpersistedResult.snapshot.selections.length === 0\n\t\t\t\t\t\t? \"--plugin/--disable-plugin requires --plugin-profile or one persisted plugin profile\"\n\t\t\t\t\t\t: \"--plugin/--disable-plugin requires --plugin-profile when multiple persisted profiles exist\",\n\t\t\t});\n\t\t\treturn { diagnostics };\n\t\t}\n\t\tpersistedSelection = persistedResult.snapshot.selections[0];\n\t\tif (persistedSelection !== undefined && isBuiltinPluginProfileIdV1(persistedSelection.profileId)) {\n\t\t\tprofileId = persistedSelection.profileId;\n\t\t} else {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: `Unknown persisted plugin profile: ${persistedSelection?.profileId ?? \"\"}`,\n\t\t\t});\n\t\t\treturn { diagnostics };\n\t\t}\n\t}\n\n\treturn {\n\t\t...(profileId === undefined ? {} : { profileId }),\n\t\t...(parsed.plugins !== undefined\n\t\t\t? { selectedPluginIds: Object.freeze([...parsed.plugins]) }\n\t\t\t: persistedSelection === undefined\n\t\t\t\t? {}\n\t\t\t\t: { selectedPluginIds: persistedSelection.selectedPluginIds }),\n\t\t...(parsed.disabledPlugins !== undefined\n\t\t\t? { disabledPluginIds: Object.freeze([...parsed.disabledPlugins]) }\n\t\t\t: persistedSelection === undefined\n\t\t\t\t? {}\n\t\t\t\t: { disabledPluginIds: persistedSelection.disabledPluginIds }),\n\t\tdiagnostics,\n\t};\n}\n\nexport interface MainOptions {\n\t/** Host facts and runtime adapters used to resolve builtin plugin Profiles. */\n\tpluginHost?: HostFactsV1;\n\t/** Optional host-owned registry/installer manager for the global config UI. */\n\tpluginManagerController?: PluginManagerControllerV1;\n\t/** Optional host-owned registry/installer manager for project config UI. */\n\tprojectPluginManagerController?: PluginManagerControllerV1;\n\tverifiedPlugins?: readonly VerifiedToolPluginV1[];\n\t/** Explicit host-owned active installed manifests; never discovered implicitly. */\n\tmanifestOverrides?: BuiltinPluginManifestOverridesV1;\n\t/**\n\t * Optional host resolver for active state. The default CLI constructs the\n\t * built-in disk resolver (reads the agentDir install store and the\n\t * global/project plugin-state.json with a digest-only verifier); a host\n\t * injection still takes precedence. Network registries and signature trust\n\t * roots remain outside the default path.\n\t */\n\tresolveActivePluginBindings?: ActivePluginBindingResolverV1;\n}\n\nexport async function main(args: string[], options?: MainOptions) {\n\tresetTimings();\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env.AGENT_FORGE_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env.AGENT_FORGE_OFFLINE = \"1\";\n\t\tprocess.env.AGENT_FORGE_SKIP_VERSION_CHECK = \"1\";\n\t}\n\n\tif (await runAuthCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (await handlePluginEcosystemCommand(args)) {\n\t\treturn;\n\t}\n\n\tif (process.platform === \"win32\") {\n\t\tcleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\t}\n\tcleanupManagedInstall();\n\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst bootstrapSettingsManager = SettingsManager.create(cwd, agentDir);\n\tsetI18nLanguage(bootstrapSettingsManager.getUiLanguage());\n\tapplyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher();\n\n\tif (await handlePackageCommand(args)) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tif (process.platform === \"win32\" && exitCode === 0 && args[0] === \"update\") {\n\t\t\t// We normally prefer process.exit(0) for package commands so bad extensions cannot keep\n\t\t\t// one-shot commands alive. On Windows, Node can assert after fetch() if process.exit(0)\n\t\t\t// runs during teardown; let successful `pi update` drain naturally instead.\n\t\t\t// https://github.com/nodejs/node/issues/56645\n\t\t\treturn;\n\t\t}\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\n\tconst configCommandOptions =\n\t\toptions?.pluginManagerController === undefined && options?.projectPluginManagerController === undefined\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\t...(options?.pluginManagerController === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { pluginManagerController: options.pluginManagerController }),\n\t\t\t\t\t...(options?.projectPluginManagerController === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { projectPluginManagerController: options.projectPluginManagerController }),\n\t\t\t\t};\n\tif (await handleConfigCommand(args, configCommandOptions)) {\n\t\treturn;\n\t}\n\n\tconst parsed = parseArgs(args);\n\tif (parsed.diagnostics.length > 0) {\n\t\tfor (const d of parsed.diagnostics) {\n\t\t\tconst color = d.type === \"error\" ? chalk.red : chalk.yellow;\n\t\t\tconsole.error(\n\t\t\t\tcolor(\n\t\t\t\t\td.type === \"error\"\n\t\t\t\t\t\t? t(\"Error: {message}\", { message: d.message })\n\t\t\t\t\t\t: t(\"Warning: {message}\", { message: d.message }),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (parsed.diagnostics.some((d) => d.type === \"error\")) {\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\ttime(\"parseArgs\");\n\n\t// 宿主进程日志(设计 §5):目录随 agentDir(<agentDir>/logs),级别按\n\t// --log-level → AGENT_FORGE_LOG_LEVEL → 默认 info 解析,保留窗口按\n\t// AGENT_FORGE_LOG_MAX_AGE_DAYS 解析(缺省 14,非法值回退默认)。logger 自带\n\t// uncaughtException/unhandledRejection 钩子(默认挂真实 process),一次性命令\n\t// 与 serve 模式同样获得崩溃兜底日志;logger 句柄无需显式 close(进程生命周期)。\n\t// 进程级单例:钩子随创建累积,重复创建会泄漏监听器;生产进程只 run 一次,\n\t// 测试等重复入口复用首例(级别以首次解析为准)。\n\tconst envLogLevel = process.env.AGENT_FORGE_LOG_LEVEL;\n\tconst hostLogLevel: HostLogLevel | undefined =\n\t\tparsed.logLevel ?? (envLogLevel !== undefined && isValidHostLogLevel(envLogLevel) ? envLogLevel : undefined);\n\tconst rawLogMaxAgeDays = process.env.AGENT_FORGE_LOG_MAX_AGE_DAYS;\n\tconst hostLogMaxAgeDays =\n\t\trawLogMaxAgeDays !== undefined && /^\\d+$/.test(rawLogMaxAgeDays)\n\t\t\t? Number.parseInt(rawLogMaxAgeDays, 10)\n\t\t\t: undefined;\n\tif (processHostLogger === undefined) {\n\t\tprocessHostLogger = createHostLogger({\n\t\t\tdir: join(agentDir, \"logs\"),\n\t\t\t...(hostLogLevel === undefined ? {} : { level: hostLogLevel }),\n\t\t\t...(hostLogMaxAgeDays === undefined ? {} : { maxAgeDays: hostLogMaxAgeDays }),\n\t\t});\n\t}\n\n\t// 轨迹保留(设计 §6):AGENT_FORGE_TRACE_MAX_AGE_DAYS(>0 整数开启;缺省/非法 =\n\t// 永久保留)。只清默认 sessions 根(根目录 + 一层子目录)下过期的 *.trace.jsonl,\n\t// 永不触碰会话文件;自定义 sessionDir 不在清扫范围。删除事实经 hostLogger 可见:\n\t// deleted>0 记 info,failed>0 记 warn。宿主启动一次性执行,失败不阻塞启动。\n\tconst rawTraceMaxAgeDays = process.env.AGENT_FORGE_TRACE_MAX_AGE_DAYS;\n\tconst traceMaxAgeDays =\n\t\trawTraceMaxAgeDays !== undefined && /^\\d+$/.test(rawTraceMaxAgeDays)\n\t\t\t? Number.parseInt(rawTraceMaxAgeDays, 10)\n\t\t\t: 0;\n\tif (traceMaxAgeDays > 0) {\n\t\tconst traceSweep = sweepTraceFiles(getSessionsDir(), { maxAgeDays: traceMaxAgeDays, now: Date.now });\n\t\tif (traceSweep.deleted > 0) {\n\t\t\tprocessHostLogger.info(\"retention\", \"trace sweep removed expired trace files\", {\n\t\t\t\tfields: { deleted: traceSweep.deleted, failed: traceSweep.failed },\n\t\t\t});\n\t\t}\n\t\tif (traceSweep.failed > 0) {\n\t\t\tprocessHostLogger.warn(\"retention\", \"trace sweep finished with failures\", {\n\t\t\t\tfields: { deleted: traceSweep.deleted, failed: traceSweep.failed },\n\t\t\t});\n\t\t}\n\t}\n\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.export) {\n\t\tlet result: string;\n\t\ttry {\n\t\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : t(\"Failed to export session\");\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconsole.log(t(\"Exported to: {result}\", { result }));\n\t\tprocess.exit(0);\n\t}\n\n\t// Trace viewer (设计 §8 第 3 期): same exit-style dispatch as --export above,\n\t// which also wins when both are given. The view command needs no runtime\n\t// service, so it runs before any session/manager creation; per the --export\n\t// precedent it is not registered in the --serve conflictingFlags list (this\n\t// dispatch exits before that check is reached).\n\tif (parsed.trace !== undefined) {\n\t\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\t\tconst sessionDir =\n\t\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\t\tbootstrapSettingsManager.getSessionDir();\n\t\tconst result = await runTraceView(parsed.trace, {\n\t\t\tjson: parsed.traceJson === true,\n\t\t\tcwd,\n\t\t\t...(sessionDir === undefined ? {} : { sessionDir }),\n\t\t\t...(parsed.traceKind === undefined ? {} : { kinds: parsed.traceKind }),\n\t\t\t...(parsed.traceLimit === undefined ? {} : { limit: parsed.traceLimit }),\n\t\t});\n\t\tif (!result.ok) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: result.message ?? \"Unknown error\" })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tprocess.exit(0);\n\t}\n\n\t// Remote server mode (E3 tail): serve the coding-agent session runtime over\n\t// TCP and keep the process alive; no session manager or runtime is needed\n\t// for startup, so this runs before any session/runtime service is created.\n\tif (parsed.serve !== undefined) {\n\t\t// help/listModels must win over starting the server, and the generic\n\t\t// handlers below need the full runtime that serve mode deliberately\n\t\t// never creates; answer them here with the same output instead.\n\t\tif (parsed.help || parsed.listModels !== undefined) {\n\t\t\t// Align with the generic path: migrate legacy settings first so the\n\t\t\t// reported diagnostics reflect the post-migration state.\n\t\t\trunMigrations(cwd);\n\t\t\treportDiagnostics(collectSettingsDiagnostics(bootstrapSettingsManager));\n\t\t\tif (parsed.help) {\n\t\t\t\t// Extension CLI flags are registered by the resource loader, which\n\t\t\t\t// serve mode never builds; the generic help text stays accurate.\n\t\t\t\tprintHelp();\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tconst modelRuntime = await ModelRuntime.create({ signal: AbortSignal.timeout(15_000) });\n\t\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\t\tawait listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));\n\t\t\tprocess.exit(0);\n\t\t}\n\t\t// Prompt/session inputs would silently change nothing in serve mode, so\n\t\t// reject them up front with the concrete conflicting flags.\n\t\tconst conflictingFlags = [\n\t\t\tparsed.print ? \"--print\" : undefined,\n\t\t\tparsed.messages.length > 0 ? \"positional args\" : undefined,\n\t\t\tparsed.fileArgs.length > 0 ? \"@file args\" : undefined,\n\t\t\tparsed.continue ? \"--continue\" : undefined,\n\t\t\tparsed.resume ? \"--resume\" : undefined,\n\t\t\tparsed.session ? \"--session\" : undefined,\n\t\t\tparsed.sessionId ? \"--session-id\" : undefined,\n\t\t\tparsed.fork ? \"--fork\" : undefined,\n\t\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t\t\tparsed.mode ? \"--mode\" : undefined,\n\t\t\tparsed.suiteCreate ? \"--suite-create\" : undefined,\n\t\t\tparsed.suiteDelete ? \"--suite-delete\" : undefined,\n\t\t\tparsed.suiteReset ? \"--suite-reset\" : undefined,\n\t\t\tparsed.cloneFrom ? \"--clone-from\" : undefined,\n\t\t].filter((flag): flag is string => flag !== undefined);\n\t\tif (conflictingFlags.length > 0) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(t(\"Error: --serve cannot be combined with {flags}\", { flags: conflictingFlags.join(\", \") })),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// Remaining options would be silently ignored; list the ones the user\n\t\t// actually passed so nothing disappears without a trace.\n\t\tconst ignoredFlagChecks: Array<readonly [string, boolean]> = [\n\t\t\t[\"--name\", parsed.name !== undefined],\n\t\t\t[\"--thinking\", parsed.thinking !== undefined],\n\t\t\t[\"--provider\", parsed.provider !== undefined],\n\t\t\t[\"--model\", parsed.model !== undefined],\n\t\t\t[\"--api-key\", parsed.apiKey !== undefined],\n\t\t\t[\"--models\", (parsed.models?.length ?? 0) > 0],\n\t\t\t[\"--verbose\", parsed.verbose === true],\n\t\t\t[\"--tui-mode\", parsed.tuiMode !== undefined],\n\t\t\t[\"--suite\", parsed.suite !== undefined],\n\t\t\t[\"--tools\", (parsed.tools?.length ?? 0) > 0],\n\t\t\t[\"--exclude-tools\", (parsed.excludeTools?.length ?? 0) > 0],\n\t\t\t[\"--no-tools\", parsed.noTools === true],\n\t\t\t[\"--no-builtin-tools\", parsed.noBuiltinTools === true],\n\t\t\t[\"--skill\", (parsed.skills?.length ?? 0) > 0],\n\t\t\t[\"--prompt-template\", (parsed.promptTemplates?.length ?? 0) > 0],\n\t\t\t[\"--no-prompt-templates\", parsed.noPromptTemplates === true],\n\t\t\t[\"--theme\", (parsed.themes?.length ?? 0) > 0],\n\t\t\t[\"--use-theme\", parsed.useTheme !== undefined],\n\t\t\t[\"--no-themes\", parsed.noThemes === true],\n\t\t\t[\"--no-context-files\", parsed.noContextFiles === true],\n\t\t\t[\"--no-skills\", parsed.noSkills === true],\n\t\t\t[\"--no-plugins\", parsed.noPlugins === true],\n\t\t\t[\"--no-trace\", parsed.noTrace === true],\n\t\t\t[\"--plugin-profile\", parsed.pluginProfile !== undefined],\n\t\t\t[\"--plugin\", (parsed.plugins?.length ?? 0) > 0],\n\t\t\t[\"--disable-plugin\", (parsed.disabledPlugins?.length ?? 0) > 0],\n\t\t\t[\"--system-prompt\", parsed.systemPrompt !== undefined],\n\t\t\t[\"--append-system-prompt\", (parsed.appendSystemPrompt?.length ?? 0) > 0],\n\t\t];\n\t\tconst ignoredFlags = ignoredFlagChecks.flatMap(([flag, passed]) => (passed ? [flag] : []));\n\t\tif (ignoredFlags.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\tchalk.yellow(t(\"--serve ignores session/model/tool options: {flags}\", { flags: ignoredFlags.join(\", \") })),\n\t\t\t);\n\t\t}\n\t\tawait runServeMode(parsed.serve, {\n\t\t\t...(parsed.serveWorkspaceRoots === undefined ? {} : { workspaceRoots: parsed.serveWorkspaceRoots }),\n\t\t\t...(parsed.sessionDir === undefined ? {} : { sessionDir: parsed.sessionDir }),\n\t\t\t// D-067 第一期 S3:serve 会话此前拿不到进程文件 logger(SDK 面为 no-op),\n\t\t\t// 现在与交互模式同源注入,日志落 <agentDir>/logs。\n\t\t\t...(processHostLogger === undefined ? {} : { hostLogger: processHostLogger }),\n\t\t});\n\t\treturn;\n\t}\n\n\t// Suite lifecycle one-shot actions (设计 §9, M4): only cwd + agentDir are\n\t// needed, so they run before any session/runtime service is created and\n\t// always terminate the process.\n\tawait handleSuiteLifecycleCommands(parsed, cwd, agentDir);\n\n\t// Expired suite trash sweep (设计 §9, M4): fire-and-forget best-effort like\n\t// the RPC model catalog refresh below — failures stay silent (7-day default\n\t// retention) and the sweep re-runs on the next start.\n\tvoid sweepSuiteTrash(agentDir).catch(() => {});\n\n\tlet appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);\n\t// Headless subagent runner (D-045) owns its stdout: the subagent-task protocol\n\t// frames must reach the parent on the real stdout, so the non-interactive\n\t// stdout takeover (which redirects process.stdout writes to stderr) is skipped.\n\tconst shouldTakeOverStdout =\n\t\tparsed.subagentRunner !== true && appMode !== \"interactive\" && !isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(t(\"Error: @file arguments are not supported in RPC mode\")));\n\t\tprocess.exit(1);\n\t}\n\n\tvalidateForkFlags(parsed);\n\tvalidateSessionIdFlags(parsed);\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd);\n\ttime(\"runMigrations\");\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir);\n\tconst startupSettingsDiagnostics = collectSettingsDiagnostics(startupSettingsManager);\n\n\t// Experimental first-time setup: theme choice and analytics opt-in.\n\t// Runs before any runtime services are created so the chosen settings apply everywhere.\n\tif (appMode === \"interactive\" && !parsed.help && parsed.listModels === undefined && shouldRunFirstTimeSetup()) {\n\t\tawait showFirstTimeSetup(startupSettingsManager);\n\t\ttime(\"firstTimeSetup\");\n\t}\n\n\tif (appMode === \"interactive\" && parsed.useTheme !== undefined) {\n\t\tstartupSettingsManager.applyOverrides({ theme: parsed.useTheme });\n\t}\n\n\t// Decide the final runtime cwd before creating cwd-bound runtime services.\n\t// --session and --resume may select a session from another project, so project-local\n\t// settings, resources, provider registrations, and models must be resolved only after\n\t// the target session cwd is known. The startup-cwd settings manager is used only for\n\t// sessionDir lookup during session selection.\n\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\tconst sessionDir =\n\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\tstartupSettingsManager.getSessionDir();\n\tlet sessionManager = await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tif (appMode === \"interactive\") {\n\t\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tsessionManager = SessionManager.open(missingSessionCwdIssue.sessionFile!, sessionDir, selectedCwd);\n\t\t} else {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (parsed.name !== undefined) {\n\t\tconst name = normalizeSessionName(parsed.name);\n\t\tif (name === undefined) {\n\t\t\tconsole.error(chalk.red(t(\"Error: --name requires a non-empty value\")));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tsessionManager.appendSessionInfo(name);\n\t}\n\ttime(\"createSessionManager\");\n\tconst cliPluginSelection = await resolveCliPluginSelection(parsed, agentDir, sessionManager.getCwd());\n\n\tconst resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);\n\tconst resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\t// Interaction host wiring (1A.8): createRuntime builds sessions before the\n\t// mode owns its UI, so the interactive/rpc modes install their\n\t// InteractionHostV1 into a late-bound slot after construction. Prompts that\n\t// arrive before installation settle as \"unavailable\"; notify is dropped\n\t// (nothing is on screen to receive it yet).\n\tconst createInteractionHostSlot = (): {\n\t\thost: InteractionHostV1;\n\t\tsetTarget: (target: InteractionHostV1 | undefined) => void;\n\t} => {\n\t\tlet target: InteractionHostV1 | undefined;\n\t\treturn {\n\t\t\thost: {\n\t\t\t\tnotify: (request) => target?.notify(request),\n\t\t\t\tprompt: (request, context) =>\n\t\t\t\t\ttarget ? target.prompt(request, context) : Promise.resolve({ status: \"unavailable\" }),\n\t\t\t},\n\t\t\tsetTarget: (next) => {\n\t\t\t\ttarget = next;\n\t\t\t},\n\t\t};\n\t};\n\tconst interactionHostSlots = {\n\t\tinteractive: createInteractionHostSlot(),\n\t\trpc: createInteractionHostSlot(),\n\t};\n\t// 启动 bootstrap(设计 §4.4):在 suite/profile 解析之前,把出厂清单里缺失的\n\t// 第一方插件经 npm 装入安装店。每进程只跑一次(含本地幂等比对);出厂清单\n\t// 现有 9 项(以 bootstrap-factory-manifest.ts 为准),启动时装入其中缺失的\n\t// 出厂插件。bootstrap 自身异常兜底为诊断结果,绝不阻断启动;\n\t// AGENT_FORGE_PLUGIN_BOOTSTRAP=off 在接线层完全跳过。\n\tlet startupPluginBootstrap: Promise<PluginBootstrapResultV1> | undefined;\n\tconst runStartupPluginBootstrap = (bootstrapCwd: string): Promise<PluginBootstrapResultV1> => {\n\t\tstartupPluginBootstrap ??= runNodePluginBootstrapV1({ agentDir, cwd: bootstrapCwd }).catch(\n\t\t\t(error: unknown): PluginBootstrapResultV1 => ({\n\t\t\t\tversion: 1,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tactions: [],\n\t\t\t\tdiagnostics: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: \"bootstrap_failed\",\n\t\t\t\t\t\tmessage: `Startup plugin bootstrap failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdurationMs: 0,\n\t\t\t}),\n\t\t);\n\t\treturn startupPluginBootstrap;\n\t};\n\tconst createRuntime: CreateAgentSessionRuntimeFactory = async ({\n\t\tcwd,\n\t\tagentDir,\n\t\tsessionManager,\n\t\tchildProfile,\n\t\tchildModelId,\n\t\tsubagentCommunicationWiring,\n\t}) => {\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir);\n\t\t// Bootstrap 先于 active 解析执行(设计 §4.4 触发点):新装入店的第一方插件\n\t\t// 在下面的 bindings 解析中立即可见。诊断走启动 stderr 通道(与 parseArgs\n\t\t// 诊断同风格);installed/skipped 动作静默。\n\t\tif (!parsed.noPlugins) {\n\t\t\tconst bootstrapResult = await runStartupPluginBootstrap(cwd);\n\t\t\tfor (const diagnostic of bootstrapResult.diagnostics) {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\tt(\"Plugin bootstrap {code}: {message}\", { code: diagnostic.code, message: diagnostic.message }),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst resolveActivePluginBindings =\n\t\t\toptions?.resolveActivePluginBindings ?? createDefaultActivePluginBindingsResolverV1();\n\t\tlet activeBindings: Awaited<ReturnType<ActivePluginBindingResolverV1>> | undefined;\n\t\tlet pluginBindingDiagnostics: AgentSessionRuntimeDiagnostic[] = [];\n\t\t// Installed-code-loading is profile-INDEPENDENT (D-075 设计 §\"已装插件\n\t\t// 进会话\"链路): suite capability packages and sdk-membership families\n\t\t// (memory/observability) must surface whenever they are installed, even\n\t\t// without a --plugin-profile selection — the pre-D-075 embedded registry\n\t\t// gave the coding suite its goal/plan/todo tools unconditionally, and\n\t\t// bootstrap (§4.4) exists to make them available out of the box.\n\t\tif (!parsed.noPlugins && options?.manifestOverrides === undefined) {\n\t\t\ttry {\n\t\t\t\tconst resolvedBindings = await resolveActivePluginBindings({ cwd, agentDir });\n\t\t\t\tactiveBindings = resolvedBindings;\n\t\t\t\tpluginBindingDiagnostics = resolvedBindings.diagnostics.map((item) => ({\n\t\t\t\t\ttype: resolvedBindings.status === \"unavailable\" ? (\"warning\" as const) : (\"info\" as const),\n\t\t\t\t\tmessage: `Active plugin binding ${item.code}: ${item.message}`,\n\t\t\t\t}));\n\t\t\t} catch {\n\t\t\t\tpluginBindingDiagnostics = [\n\t\t\t\t\t{ type: \"error\", message: \"Active plugin binding resolver failed; no installed version was selected\" },\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t\tconst activeManifestOverrides = activeBindings?.status === \"ready\" ? activeBindings.manifestOverrides : undefined;\n\t\tconst activeVerifiedPlugins = activeBindings?.status === \"ready\" ? activeBindings.verifiedPlugins : undefined;\n\t\t// Installed-code-loading (D-075 S2): the verified active installations'\n\t\t// plugin.json paths ride the same channel as manifestOverrides into the\n\t\t// sdk's explicit candidate pool (membership-filtered there).\n\t\tconst activeInstalledCapabilityPlugins =\n\t\t\tactiveBindings?.status === \"ready\"\n\t\t\t\t? [...activeBindings.installedManifestPaths].map(([pluginId, manifestPath]) => ({\n\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\tmanifestPath,\n\t\t\t\t\t}))\n\t\t\t\t: undefined;\n\t\t// D-075 S3: category-A plugin code ships in independent packages loaded\n\t\t// from the install store, so the CLI no longer wires host-side adapters\n\t\t// (desktop UIA / lsp / test-runner) into a runtime bridge. Profile\n\t\t// resolution still needs host facts to run the resolver's fail-closed\n\t\t// platform checks, and the packaged plugins declare no host features or\n\t\t// adapters (design §4.1), so the observed runtime facts are sufficient;\n\t\t// host injection always wins.\n\t\tconst pluginHost =\n\t\t\toptions?.pluginHost ??\n\t\t\t(parsed.noPlugins || (cliPluginSelection.profileId === undefined && activeBindings === undefined)\n\t\t\t\t? undefined\n\t\t\t\t: defaultPluginHostFactsV1());\n\t\t// First-party plugins of an explicitly selected Profile are trusted by\n\t\t// default (the builtins ship with the product and the user chose the\n\t\t// Profile explicitly); installed third-party versions still come from\n\t\t// the disk resolver and host injection always wins.\n\t\tconst verifiedPlugins =\n\t\t\toptions?.verifiedPlugins ??\n\t\t\t(cliPluginSelection.profileId === undefined\n\t\t\t\t? activeVerifiedPlugins\n\t\t\t\t: [\n\t\t\t\t\t\t...defaultBuiltinVerifiedPluginsV1(cliPluginSelection.profileId).filter(\n\t\t\t\t\t\t\t(builtin) =>\n\t\t\t\t\t\t\t\t!activeVerifiedPlugins?.some(\n\t\t\t\t\t\t\t\t\t(active) => active.pluginId === builtin.pluginId && active.version === builtin.version,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t...(activeVerifiedPlugins ?? []),\n\t\t\t\t\t]);\n\t\tconst services = await createAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\tmodelRuntimeSignal: AbortSignal.timeout(15_000),\n\t\t\t// First-party entry suite assembly (方案实施计划 §7 范围 2): the\n\t\t\t// three-level agents.md chain, system prompt gate, and association\n\t\t\t// filters apply on this self-built loader; the suite resolves once\n\t\t\t// here and rides to session creation via services.suiteId.\n\t\t\tsuite: parsed.suite,\n\t\t\tsuiteAssembly: true,\n\t\t\t...(parsed.noPlugins || cliPluginSelection.profileId === undefined\n\t\t\t\t? {}\n\t\t\t\t: { pluginProfileId: cliPluginSelection.profileId }),\n\t\t\t...(parsed.noPlugins || cliPluginSelection.selectedPluginIds === undefined\n\t\t\t\t? {}\n\t\t\t\t: { selectedPluginIds: cliPluginSelection.selectedPluginIds }),\n\t\t\t...(parsed.noPlugins || cliPluginSelection.disabledPluginIds === undefined\n\t\t\t\t? {}\n\t\t\t\t: { disabledPluginIds: cliPluginSelection.disabledPluginIds }),\n\t\t\t...(parsed.noPlugins || pluginHost === undefined ? {} : { pluginHost }),\n\t\t\t...(parsed.noPlugins || verifiedPlugins === undefined ? {} : { verifiedPlugins }),\n\t\t\t...(parsed.noPlugins || options?.manifestOverrides === undefined\n\t\t\t\t? activeManifestOverrides === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: { manifestOverrides: activeManifestOverrides }\n\t\t\t\t: { manifestOverrides: options.manifestOverrides }),\n\t\t\t...(parsed.noPlugins || activeInstalledCapabilityPlugins === undefined\n\t\t\t\t? {}\n\t\t\t\t: { installedCapabilityPlugins: activeInstalledCapabilityPlugins }),\n\t\t\t...(pluginBindingDiagnostics.length === 0 ? {} : { pluginBindingDiagnostics }),\n\t\t\tresourceLoaderOptions: {\n\t\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\t\tnoSkills: parsed.noSkills,\n\t\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\t\tnoThemes: parsed.noThemes,\n\t\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\t\t// 档案的 systemPromptAppend(承载退役切片 2):runner 叶子经同一资源\n\t\t\t\t// loader 追加通道落地(shared 侧由 child loader 覆盖点做的事在这里做)。\n\t\t\t\tappendSystemPrompt: [\n\t\t\t\t\t...(parsed.appendSystemPrompt ?? []),\n\t\t\t\t\t...(childProfile?.systemPromptAppend === undefined ? [] : [childProfile.systemPromptAppend]),\n\t\t\t\t],\n\t\t\t},\n\t\t});\n\t\tconst { settingsManager, modelRuntime } = services;\n\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t...cliPluginSelection.diagnostics,\n\t\t\t...services.diagnostics,\n\t\t\t...collectSettingsDiagnostics(settingsManager),\n\t\t];\n\n\t\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\tconst scopedModels =\n\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t? await resolveModelScope(modelPatterns, modelRuntime, { signal: AbortSignal.timeout(15_000) })\n\t\t\t\t: [];\n\t\t// 档案 model 解析(pooled parity 补口):与 shared 侧同一纪律——只能在 runner 自己\n\t\t// 的 scoped models 里挑,解析不到即失败并列出可用 id,不静默回落默认模型。\n\t\tconst profileModel =\n\t\t\tchildModelId === undefined\n\t\t\t\t? undefined\n\t\t\t\t: (() => {\n\t\t\t\t\t\tconst entry = scopedModels.find((candidate) => candidate.model.id === childModelId);\n\t\t\t\t\t\tif (entry === undefined) {\n\t\t\t\t\t\t\tconst available = scopedModels.map((candidate) => candidate.model.id).sort();\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\tt(\"agent task child profile model {model} is not among the runner's scoped models{available}\", {\n\t\t\t\t\t\t\t\t\tmodel: JSON.stringify(childModelId),\n\t\t\t\t\t\t\t\t\tavailable:\n\t\t\t\t\t\t\t\t\t\tavailable.length === 0 ? \" (none configured)\" : `; available: ${available.join(\", \")}`,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn entry.model;\n\t\t\t\t\t})();\n\t\tconst sessionContext = sessionManager.buildSessionContext();\n\t\tconst {\n\t\t\toptions: sessionOptions,\n\t\t\tcliThinkingFromModel,\n\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t} = buildSessionOptions(parsed, scopedModels, sessionContext.messages.length > 0, modelRuntime, settingsManager);\n\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\t\t// Resume model restoration (dogfood 2026-09-25 live defect): the last explicit\n\t\t// model_change in the session file (/model switch) must be honored on restart —\n\t\t// previously the model silently reverted to the default, so turns after the\n\t\t// switch ran on (and were billed to) the old provider. Explicit CLI --model\n\t\t// takes priority over the persisted value.\n\t\tconst resumedSessionModel = (() => {\n\t\t\tif (sessionOptions.model) return undefined;\n\t\t\tconst persisted = sessionContext.model;\n\t\t\tif (!persisted) return undefined;\n\t\t\treturn modelRuntime.getModel(persisted.provider, persisted.modelId) ?? undefined;\n\t\t})();\n\n\t\tif (parsed.apiKey) {\n\t\t\tif (!sessionOptions.model) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tawait modelRuntime.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t}\n\t\t}\n\n\t\t// pooled runner 叶子:档案只收窄(mode 更严、thinkingLevel 更窄),不放大。\n\t\tconst childProfileMode =\n\t\t\tchildProfile !== undefined && childProfile.mode === \"readonly\" && parsed.subagentRunner === true\n\t\t\t\t? (\"readonly\" as const)\n\t\t\t\t: undefined;\n\t\tconst created = await createAgentSessionFromServices({\n\t\t\tservices,\n\t\t\tsessionManager,\n\t\t\tmodel: profileModel ?? sessionOptions.model ?? resumedSessionModel,\n\t\t\tthinkingLevel:\n\t\t\t\t(childProfile?.thinkingLevel as typeof sessionOptions.thinkingLevel) ?? sessionOptions.thinkingLevel,\n\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\ttools: sessionOptions.tools,\n\t\t\texcludeTools: sessionOptions.excludeTools,\n\t\t\tnoTools: sessionOptions.noTools,\n\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\tsuite: sessionOptions.suite,\n\t\t\tdiscoverCapabilityPlugins: parsed.noPlugins ? false : undefined,\n\t\t\t// Trace/log control face (设计 §4.4/§5/§6):--no-trace 关闭本会话轨迹\n\t\t\t// 收集;进程级 logger(含崩溃钩子)传给会话打点,未创建时保持 no-op 契约。\n\t\t\ttraceEnabled: parsed.noTrace === true ? false : undefined,\n\t\t\t// OTLP 遥测导出(设计 §8,D-065 增补 5):标准 OTEL_EXPORTER_OTLP_ENDPOINT\n\t\t\t// 环境变量显式开启 OTLP/HTTP+JSON 轨迹导出;未设置时导出器不存在,行为零变化。\n\t\t\t...(typeof process.env.OTEL_EXPORTER_OTLP_ENDPOINT === \"string\" &&\n\t\t\tprocess.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim().length > 0\n\t\t\t\t? { traceOptions: { otlp: { endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim() } } }\n\t\t\t\t: {}),\n\t\t\thostLogger: processHostLogger,\n\t\t\t...(childProfileMode === undefined ? {} : { capabilityMode: childProfileMode }),\n\t\t\t// 叶子不再整体关闭 agent tasks(承载退役切片 2):它经自动池化获得自己的\n\t\t\t// 委派面(嵌套委派保留,递归边界由 delegate 沿 S2 血缘头的深度硬限与每父级\n\t\t\t// 总量配额执行),并因 sdk 的 reader/lister 注入同时获得回读面。\n\t\t\t// 子代理通信面(D-060 S5 pooled parity):runner 叶子的 post/drainInbox 接线\n\t\t\t// 经 services 装配传入(文件承载信箱,跨进程与父侧 drain 同一目录)。\n\t\t\t...(subagentCommunicationWiring === undefined ? {} : { subagentCommunicationWiring }),\n\t\t\t// 承载退役切片 1(生产 CLI 默认 pooled):CLI 进程声明自身入口可信——\n\t\t\t// 未显式配置池时按 self-invocation 自动池化(叶子路径无害:delegate 不装配池)。\n\t\t\tsubagentPoolFromSelfInvocation: true,\n\t\t\t// Interaction capability (1A.8): only the interactive TUI and RPC hosts\n\t\t\t// serve interaction tasks; print/json hosts leave the feature absent.\n\t\t\t...(appMode === \"interactive\" ? { interactionHost: interactionHostSlots.interactive.host } : {}),\n\t\t\t...(appMode === \"rpc\" ? { interactionHost: interactionHostSlots.rpc.host } : {}),\n\t\t});\n\t\tfor (const rejection of created.pluginRejections) {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\" as const,\n\t\t\t\tmessage: `Capability plugin rejected (${rejection.code}): ${rejection.pluginId ?? rejection.manifestPath}: ${rejection.message}`,\n\t\t\t});\n\t\t}\n\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t}\n\n\t\tif (childProfile?.tools !== undefined) {\n\t\t\t// 档案的工具面是白名单:与叶子继承面求交(不放大),随后由 server 侧核验。\n\t\t\tconst inherited = created.session.getActiveToolNames();\n\t\t\tconst narrowed = inherited.filter((name) => childProfile.tools?.includes(name));\n\t\t\tcreated.session.setActiveToolsByName(narrowed);\n\t\t}\n\t\treturn {\n\t\t\t...created,\n\t\t\tservices: {\n\t\t\t\t...services,\n\t\t\t\t// /metrics 数据源 ref 由 createAgentSession 内建的 services 携带\n\t\t\t\t// (observability 插件工厂挂载时写入)。运行时对外暴露的是外层\n\t\t\t\t// session-independent services,不含该 ref——不对齐的话 TUI/RPC 的\n\t\t\t\t// 惰性闭包永远读到 undefined(/metrics 曾因此永远报未挂载)。\n\t\t\t\tobservabilityGetMetricsRef: created.session.observabilityGetMetricsRef,\n\t\t\t},\n\t\t\tdiagnostics,\n\t\t\t...(childProfile === undefined\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tchildFacts: (() => {\n\t\t\t\t\t\t\tconst sessionApi = created.session.getSessionAPI();\n\t\t\t\t\t\t\tconst systemPromptOptions = sessionApi.getSystemPromptOptions?.();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tactiveTools: created.session.getActiveToolNames(),\n\t\t\t\t\t\t\t\t...(childProfile?.thinkingLevel === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: { thinkingLevel: sessionApi.getThinkingLevel?.() }),\n\t\t\t\t\t\t\t\t// 叶子实际生效的 append 段(CLI append 与档案 append 的合并串,已含\n\t\t\t\t\t\t\t\t// 方案 APPEND_SYSTEM.md 门控结果):server 用包含语义核验档案 append。\n\t\t\t\t\t\t\t\t...(systemPromptOptions?.appendSystemPrompt === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: { systemPromptAppend: systemPromptOptions.appendSystemPrompt }),\n\t\t\t\t\t\t\t\t...(created.session.model === undefined\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\t\t\t\t\t\tprovider: created.session.model.provider,\n\t\t\t\t\t\t\t\t\t\t\t\tid: created.session.model.id,\n\t\t\t\t\t\t\t\t\t\t\t\tcontextWindow: created.session.model.contextWindow,\n\t\t\t\t\t\t\t\t\t\t\t\tmaxTokens: created.session.model.maxTokens,\n\t\t\t\t\t\t\t\t\t\t\t\treasoning: created.session.model.reasoning,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tcapabilityMode: created.session.getCapabilityRuntime().host.mode,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})(),\n\t\t\t\t\t}),\n\t\t};\n\t};\n\ttime(\"createRuntime\");\n\t/**\n\t * runner 叶子的档案解析:形状由公共解析器校验;字段级不支持的情况在这里 fail fast,\n\t * 不做静默忽略(当前全部字段均可落地:model 按 runner 自身 scoped models 解析)。\n\t */\n\tfunction parseSubagentTaskChildProfile(raw: unknown): AgentTaskChildProfileV1 | undefined {\n\t\tif (raw === undefined) return undefined;\n\t\tconst parsed = parseAgentTaskChildProfileV1(raw);\n\t\tif (!parsed.ok) throw new Error(`child task profile is invalid: ${parsed.message}`);\n\t\treturn parsed.profile;\n\t}\n\t// Headless subagent runner (D-045 pooled increment 2b): serve the subagent-task\n\t// protocol on stdio and never construct the parent session runtime — stdout is\n\t// the protocol channel, so this branch must run before any mode startup output.\n\tif (parsed.subagentRunner === true) {\n\t\tconst runnerSessionCwd = sessionManager.getCwd();\n\t\tconst runner = runSubagentTaskRunner({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t\tcreateSession: createSubagentTaskSessionFactoryV1({\n\t\t\t\tcreateSession: async (request) => {\n\t\t\t\t\t// 每任务一个独立叶子会话。档案(若上游带了)在这一层落地:mode/thinkingLevel\n\t\t\t\t\t// 经创建选项,tools 收窄在 createRuntime 内完成,事实回传给 server 核验。\n\t\t\t\t\tconst childProfile = parseSubagentTaskChildProfile(request.profile);\n\t\t\t\t\t// resume(D-060 S5 pooled parity):目标必须是本父会话的**已落盘**子会话,\n\t\t\t\t\t// 血缘不过线与不存在同型失败;命中则打开既有 JSONL 续写(同一 sessionId)。\n\t\t\t\t\tconst resumeRead =\n\t\t\t\t\t\ttypeof request.resumeSessionId === \"string\" && request.resumeSessionId !== \"\"\n\t\t\t\t\t\t\t? readAgentSession({ agentDir, sessionId: request.resumeSessionId })\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tif (typeof request.resumeSessionId === \"string\" && request.resumeSessionId !== \"\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tresumeRead === undefined ||\n\t\t\t\t\t\t\trequest.parentSessionId === undefined ||\n\t\t\t\t\t\t\tresumeRead.parentAgentSession !== request.parentSessionId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\tt(\"resume target {resumeId} is not a persisted child of session {parentId}\", {\n\t\t\t\t\t\t\t\t\tresumeId: request.resumeSessionId,\n\t\t\t\t\t\t\t\t\tparentId: String(request.parentSessionId),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst resumeFilePath =\n\t\t\t\t\t\tresumeRead !== undefined && typeof request.resumeSessionId === \"string\"\n\t\t\t\t\t\t\t? findSessionFile(agentSessionsDir(agentDir), request.resumeSessionId)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t// 通信面(D-060 S5 pooled parity):叶子向自己的父 post(escalate/兄弟消息)\n\t\t\t\t\t// 并 drain 自己的收件箱——文件承载信箱,root 以父会话 id 为键;叶子身份在\n\t\t\t\t\t// create 返回后补上(工厂注册先于身份可知)。\n\t\t\t\t\tconst leafIdentity: { current: string | undefined } = { current: undefined };\n\t\t\t\t\tconst requireIdentity = (): string => {\n\t\t\t\t\t\tif (leafIdentity.current === undefined) throw new Error(\"leaf session identity is not bound yet\");\n\t\t\t\t\t\treturn leafIdentity.current;\n\t\t\t\t\t};\n\t\t\t\t\tconst leafWiring: SubagentCommunicationWiringV1 =\n\t\t\t\t\t\trequest.parentSessionId === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tpostEscalate: (text) => {\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).postEscalate(requireIdentity(), text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tsendSibling: (toSessionId, text) => {\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).postSibling(requireIdentity(), toSessionId, text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdrainInbox: (limit) =>\n\t\t\t\t\t\t\t\t\t\tcreateSubagentMailbox({\n\t\t\t\t\t\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t\t\t\t\t\townerParentSessionId: () => request.parentSessionId,\n\t\t\t\t\t\t\t\t\t\t}).drainInbox(requireIdentity(), limit),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\tconst created = await createRuntime({\n\t\t\t\t\t\tcwd: runnerSessionCwd,\n\t\t\t\t\t\tagentDir,\n\t\t\t\t\t\t// 叶子会话落盘(D-060 §3):与 root 会话同构的 JSONL,放 _agents 目录,\n\t\t\t\t\t\t// 头部写血缘(父 agent 会话 id + 角色 id),父侧可按 sessionId 回读。\n\t\t\t\t\t\t// resume 改为打开既有会话文件续写(同一 sessionId,多轮子任务)。\n\t\t\t\t\t\tsessionManager:\n\t\t\t\t\t\t\tresumeFilePath !== undefined && request.resumeSessionId !== undefined\n\t\t\t\t\t\t\t\t? SessionManager.open(resumeFilePath, agentSessionsDir(agentDir), runnerSessionCwd)\n\t\t\t\t\t\t\t\t: SessionManager.create(runnerSessionCwd, agentSessionsDir(agentDir), {\n\t\t\t\t\t\t\t\t\t\t...(request.parentSessionId === undefined\n\t\t\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t\t\t: { parentAgentSession: request.parentSessionId }),\n\t\t\t\t\t\t\t\t\t\t// 回合级血缘:仅 create 消费;resume(open)不写头。\n\t\t\t\t\t\t\t\t\t\t...(request.parentTraceId === undefined ? {} : { parentTraceId: request.parentTraceId }),\n\t\t\t\t\t\t\t\t\t\t...(childProfile?.roleId === undefined ? {} : { agentRole: childProfile.roleId }),\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t...(childProfile === undefined ? {} : { childProfile }),\n\t\t\t\t\t\t...(childProfile?.model === undefined ? {} : { childModelId: childProfile.model }),\n\t\t\t\t\t\t...(Object.keys(leafWiring).length === 0 ? {} : { subagentCommunicationWiring: leafWiring }),\n\t\t\t\t\t});\n\t\t\t\t\tconst session = created.session;\n\t\t\t\t\tconst sessionApi = session.getSessionAPI();\n\t\t\t\t\tleafIdentity.current = sessionApi.getAgentSessionId?.() ?? sessionApi.getSessionId();\n\t\t\t\t\t// 显式映射到命令面会话契约:不复用 AgentSession 全量面,避免隐藏依赖会话布局。\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprompt: (text) => session.prompt(text, { expandPromptTemplates: false }),\n\t\t\t\t\t\tabort: (reason) => session.abort(reason),\n\t\t\t\t\t\tdispose: () => session.dispose(),\n\t\t\t\t\t\tgetMessages: () => sessionApi.getMessages(),\n\t\t\t\t\t\tgetSessionId: () => sessionApi.getSessionId(),\n\t\t\t\t\t\t// D-044 §5.6:回合级进度(turn_end + 有界工具摘要)经协议 progress 事件回父侧。\n\t\t\t\t\t\tonProgress: createTurnProgressSourceV1(session),\n\t\t\t\t\t\t// 父→子引导(D-060 S5 pooled parity):转发会话自身 steer。\n\t\t\t\t\t\t...(sessionApi.steer === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tsteer: (text: string): Promise<void> => {\n\t\t\t\t\t\t\t\t\t\tconst steerFn = sessionApi.steer;\n\t\t\t\t\t\t\t\t\t\tif (steerFn === undefined) return Promise.resolve();\n\t\t\t\t\t\t\t\t\t\treturn steerFn.call(sessionApi, text);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t// 档案事实:只有带档案的 create 才会被 server 要求自证。\n\t\t\t\t\t\t...(created.childFacts === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { facts: () => created.childFacts as NonNullable<typeof created.childFacts> }),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t}),\n\t\t});\n\t\tawait runner.done;\n\t\treturn;\n\t}\n\tlet runtime: Awaited<ReturnType<typeof createAgentSessionRuntime>>;\n\t// Unresolved startup suite id (设计 §9): interactive mode recovers in-process\n\t// by handing a pending selector to InteractiveMode (the user picks a suite\n\t// before the first prompt); print/json/rpc keep the structured exit-1.\n\tlet pendingSuiteSelector: { requestedId: string; available: readonly string[] } | undefined;\n\ttry {\n\t\truntime = await createAgentSessionRuntime(createRuntime, {\n\t\t\tcwd: sessionManager.getCwd(),\n\t\t\tagentDir,\n\t\t\tsessionManager,\n\t\t});\n\t} catch (error) {\n\t\t// 已绑定会话换 suite / Profile 身份漂移(SuiteRebindError):用户可自行纠正的\n\t\t// 参数错误,干净的一行 stderr + 退出 1,不甩内部栈(dogfood 2026-09-25 实测)。\n\t\tif (error instanceof SuiteRebindError) {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: error.message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// Unknown --suite/env/settings suite ids are a structured startup error\n\t\t// (设计 §9): list the available ids and exit 1 instead of a stack trace.\n\t\tif (!(error instanceof SuiteResolutionError)) throw error;\n\t\tif (appMode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: error.message })));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// One in-process recovery attempt (设计 §9 startup selector): record the\n\t\t// pending pick, clear this run's explicit suite for the retry, and delete\n\t\t// AGENT_FORGE_SUITE when it named the unknown id — the env is the only\n\t\t// source this process may eliminate. A settings-level unknown id cannot\n\t\t// be resolved in-process (silently rewriting the user's settings files is\n\t\t// not a startup decision), so the retry still throws and exits 1 below\n\t\t// with the same structured guidance.\n\t\tpendingSuiteSelector = { requestedId: error.requestedId, available: error.availableSuiteIds };\n\t\tparsed.suite = undefined;\n\t\tif (process.env[SUITE_ENV_VAR] === error.requestedId) {\n\t\t\tdelete process.env[SUITE_ENV_VAR];\n\t\t}\n\t\ttry {\n\t\t\truntime = await createAgentSessionRuntime(createRuntime, {\n\t\t\t\tcwd: sessionManager.getCwd(),\n\t\t\t\tagentDir,\n\t\t\t\tsessionManager,\n\t\t\t});\n\t\t} catch (retryError) {\n\t\t\tif (retryError instanceof SuiteResolutionError) {\n\t\t\t\tconsole.error(chalk.red(t(\"Error: {message}\", { message: retryError.message })));\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tthrow retryError;\n\t\t}\n\t}\n\ttime(\"createAgentSessionRuntime\");\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRuntime } = services;\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tapplyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\n\tif (parsed.help) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tprintHelp();\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.listModels !== undefined) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tawait listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));\n\t\tprocess.exit(0);\n\t}\n\n\t// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC\n\tlet stdinContent: string | undefined;\n\tif (appMode !== \"rpc\") {\n\t\tstdinContent = await readPipedStdin();\n\t\t// v8 ignore next -- stdin 的 isTTY 在两次读取间不会变化,交互模式下不可能读到管道内容\n\t\tif (stdinContent !== undefined && appMode === \"interactive\") {\n\t\t\tappMode = \"print\";\n\t\t}\n\t}\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\n\tinitTheme(settingsManager.getTheme(), appMode === \"interactive\");\n\ttime(\"initTheme\");\n\n\t// Show deprecation warnings in interactive mode\n\tif (appMode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\n\ttime(\"resolveModelScope\");\n\tconst allStartupDiagnostics = deduplicateDiagnostics([...startupSettingsDiagnostics, ...runtime.diagnostics]);\n\tconst startupDiagnostics = filterAcknowledgedSuiteNotices(allStartupDiagnostics, settingsManager);\n\t// ack 经 save() 的异步写队列落盘;print 模式随即退出、TUI 退出链也不经过\n\t// settings flush,这里统一等待落盘,否则\"已读\"记录静默丢失。\n\tawait settingsManager.flush().catch(() => {});\n\tconst hasRuntimeErrors = runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\tif (appMode !== \"interactive\" || hasRuntimeErrors) {\n\t\treportDiagnostics(startupDiagnostics);\n\t}\n\tif (hasRuntimeErrors) {\n\t\tprocess.exit(1);\n\t}\n\t// D-028: interactive mode suppresses startup warnings above, so rejected\n\t// capability plugins get an explicit stderr note before the TUI takes over.\n\tif (appMode === \"interactive\") {\n\t\tfor (const rejection of runtime.pluginRejections) {\n\t\t\tconsole.error(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\tt(\"Warning: capability plugin rejected ({code}): {target}: {message}\", {\n\t\t\t\t\t\tcode: rejection.code,\n\t\t\t\t\t\ttarget: rejection.pluginId ?? rejection.manifestPath,\n\t\t\t\t\t\tmessage: rejection.message,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\ttime(\"createAgentSession\");\n\n\t// With nothing configured, agent core falls back to an all-\"unknown\"\n\t// placeholder model (packages/agent/src/agent.ts DEFAULT_MODEL), so a truthy\n\t// session.model does not mean a usable model. Non-interactive modes must\n\t// stop here with the login guidance instead of dying mid-request.\n\tconst noModelResolved = !session.model || (session.model.provider === \"unknown\" && session.model.id === \"unknown\");\n\tif (appMode !== \"interactive\" && noModelResolved) {\n\t\tconsole.error(chalk.red(modelFallbackMessage ?? formatNoModelsAvailableMessage()));\n\t\tprocess.exit(1);\n\t}\n\n\tconst startupBenchmark = isTruthyEnvFlag(process.env.AGENT_FORGE_STARTUP_BENCHMARK);\n\tif (startupBenchmark && appMode !== \"interactive\") {\n\t\tconsole.error(chalk.red(t(\"Error: AGENT_FORGE_STARTUP_BENCHMARK only supports interactive mode\")));\n\t\tprocess.exit(1);\n\t}\n\n\t// RPC refreshes catalogs here in the background; interactive mode starts its refresh after TUI initialization.\n\tif (!offlineMode && appMode === \"rpc\") {\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), 15_000);\n\t\tvoid modelRuntime\n\t\t\t.refresh({ signal: controller.signal })\n\t\t\t.catch(() => {})\n\t\t\t.finally(() => clearTimeout(timeout));\n\t}\n\n\tif (appMode === \"rpc\") {\n\t\tprintTimings();\n\t\tawait runRpcMode(runtime, {\n\t\t\tinteractionHostSlot: interactionHostSlots.rpc,\n\t\t\t// 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到\n\t\t\t// undefined(/metrics 曾因此永远报未挂载)。\n\t\t\tgetMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),\n\t\t});\n\t} else if (appMode === \"interactive\") {\n\t\tconst interactiveMode = new InteractiveMode(runtime, {\n\t\t\t// 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到\n\t\t\t// undefined(/metrics 曾因此永远报未挂载)。\n\t\t\tgetMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),\n\t\t\tmigratedProviders,\n\t\t\tstartupDiagnostics,\n\t\t\tmodelFallbackMessage,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t\tinitialMessages: parsed.messages,\n\t\t\tverbose: parsed.verbose,\n\t\t\ttuiMode: parsed.tuiMode,\n\t\t\tinitialThemeSetting: parsed.useTheme,\n\t\t\tpendingSuiteSelector,\n\t\t\tsettingsManager,\n\t\t});\n\t\t// Interaction capability (1A.8): the TUI owns the dialog surface, so its\n\t\t// host backs the slot the session was created with.\n\t\tinteractionHostSlots.interactive.setTarget(interactiveMode.createInteractionHostV1());\n\t\tif (startupBenchmark) {\n\t\t\tawait interactiveMode.init();\n\t\t\ttime(\"interactiveMode.init\");\n\t\t\t// Give the TUI's stdin handler a brief chance to consume terminal query replies\n\t\t\t// (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 150));\n\t\t\tinteractiveMode.stop();\n\t\t\tstopThemeWatcher();\n\t\t\tprintTimings();\n\t\t\tif (process.stdout.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t\t}\n\t\t\tif (process.stderr.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tawait interactiveMode.run();\n\t} else {\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(runtime, {\n\t\t\tmode: toPrintOutputMode(appMode),\n\t\t\tmessages: parsed.messages,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t\treturn;\n\t}\n}\n"]}
|