cli-jaw 2.2.4 → 2.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/bin/cli-jaw.js +9 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/chat.js +9 -1
- package/dist/bin/commands/chat.js.map +1 -1
- package/dist/bin/commands/design.js +172 -0
- package/dist/bin/commands/design.js.map +1 -0
- package/dist/bin/commands/dispatch-helpers.js +28 -0
- package/dist/bin/commands/dispatch-helpers.js.map +1 -1
- package/dist/bin/commands/dispatch.js +133 -31
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +1 -1
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +1 -1
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/map.js +53 -0
- package/dist/bin/commands/map.js.map +1 -0
- package/dist/bin/commands/mcp.js +1 -1
- package/dist/bin/commands/mcp.js.map +1 -1
- package/dist/bin/commands/skill.js +64 -3
- package/dist/bin/commands/skill.js.map +1 -1
- package/dist/bin/commands/status.js +1 -1
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/commands/tui/channel.js +20 -4
- package/dist/bin/commands/tui/channel.js.map +1 -1
- package/dist/bin/commands/tui/fullscreen-mode.js +17 -9
- package/dist/bin/commands/tui/fullscreen-mode.js.map +1 -1
- package/dist/bin/commands/tui/input-handler.js +30 -22
- package/dist/bin/commands/tui/input-handler.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +36 -8
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/queue-command.js +71 -0
- package/dist/bin/commands/tui/queue-command.js.map +1 -0
- package/dist/bin/commands/tui/renderer.js +1 -0
- package/dist/bin/commands/tui/renderer.js.map +1 -1
- package/dist/bin/commands/tui/simple-mode.js +39 -1
- package/dist/bin/commands/tui/simple-mode.js.map +1 -1
- package/dist/bin/commands/tui/slash-command-runner.js +92 -4
- package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
- package/dist/bin/commands/tui/types.js +6 -4
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/commands/tui/ws-handler.js +78 -9
- package/dist/bin/commands/tui/ws-handler.js.map +1 -1
- package/dist/bin/commands/worker.js +1 -3
- package/dist/bin/commands/worker.js.map +1 -1
- package/dist/bin/postinstall.js +3 -3
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/server.js +7 -2
- package/dist/server.js.map +1 -1
- package/dist/src/agent/args.js +3 -0
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +20 -0
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/spawn.js +24 -2
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/bgtask/notifier.js +2 -1
- package/dist/src/bgtask/notifier.js.map +1 -1
- package/dist/src/bgtask/recover.js +8 -7
- package/dist/src/bgtask/recover.js.map +1 -1
- package/dist/src/bgtask/registry.js +2 -1
- package/dist/src/bgtask/registry.js.map +1 -1
- package/dist/src/bgtask/runner.js +3 -2
- package/dist/src/bgtask/runner.js.map +1 -1
- package/dist/src/browser/vision.js +3 -1
- package/dist/src/browser/vision.js.map +1 -1
- package/dist/src/browser/web-ai/tab-lease-store.js +1 -3
- package/dist/src/browser/web-ai/tab-lease-store.js.map +1 -1
- package/dist/src/cli/commands.js +26 -4
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +7 -1
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers.js +1 -1
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/tui/jawcode-bridge.js +13 -14
- package/dist/src/cli/tui/jawcode-bridge.js.map +1 -1
- package/dist/src/cli/tui/markdown.js +1 -1
- package/dist/src/cli/tui/markdown.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +65 -10
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/cli/tui/render/frame.js +109 -103
- package/dist/src/cli/tui/render/frame.js.map +1 -1
- package/dist/src/cli/tui/transcript.js +31 -9
- package/dist/src/cli/tui/transcript.js.map +1 -1
- package/dist/src/core/bus.js +2 -0
- package/dist/src/core/bus.js.map +1 -1
- package/dist/src/core/chat-sessions.js +2 -0
- package/dist/src/core/chat-sessions.js.map +1 -1
- package/dist/src/core/codex-config.js +2 -1
- package/dist/src/core/codex-config.js.map +1 -1
- package/dist/src/core/config.js +6 -3
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/event-bus.js +1 -1
- package/dist/src/core/event-bus.js.map +1 -1
- package/dist/src/core/logger.js +9 -1
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/main-session.js +2 -1
- package/dist/src/core/main-session.js.map +1 -1
- package/dist/src/core/runtime-settings.js +2 -1
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/session-ops.js +1 -1
- package/dist/src/core/session-ops.js.map +1 -1
- package/dist/src/core/widget-watcher.js +113 -0
- package/dist/src/core/widget-watcher.js.map +1 -0
- package/dist/src/discord/bot.js +42 -31
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/channel-types.js +16 -0
- package/dist/src/discord/channel-types.js.map +1 -1
- package/dist/src/discord/commands.js +8 -6
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/discord-file.js +4 -2
- package/dist/src/discord/discord-file.js.map +1 -1
- package/dist/src/discord/forwarder.js +10 -6
- package/dist/src/discord/forwarder.js.map +1 -1
- package/dist/src/ide/diff.js +1 -1
- package/dist/src/ide/diff.js.map +1 -1
- package/dist/src/manager/dashboard-service.js +5 -5
- package/dist/src/manager/dashboard-service.js.map +1 -1
- package/dist/src/manager/design/path-guards.js +86 -0
- package/dist/src/manager/design/path-guards.js.map +1 -0
- package/dist/src/manager/design/schema.js +54 -0
- package/dist/src/manager/design/schema.js.map +1 -0
- package/dist/src/manager/design/snapshots.js +62 -0
- package/dist/src/manager/design/snapshots.js.map +1 -0
- package/dist/src/manager/design/store.js +269 -0
- package/dist/src/manager/design/store.js.map +1 -0
- package/dist/src/manager/design/watcher.js +49 -0
- package/dist/src/manager/design/watcher.js.map +1 -0
- package/dist/src/manager/memory/embedding/vec-store.js +1 -1
- package/dist/src/manager/memory/embedding/vec-store.js.map +1 -1
- package/dist/src/manager/registry.js +84 -0
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/dashboard-design.js +234 -0
- package/dist/src/manager/routes/dashboard-design.js.map +1 -0
- package/dist/src/manager/routes/dashboard-memory.js +1 -1
- package/dist/src/manager/routes/dashboard-memory.js.map +1 -1
- package/dist/src/manager/routes/embedded-browser.js +497 -0
- package/dist/src/manager/routes/embedded-browser.js.map +1 -0
- package/dist/src/manager/routes/telegram-hub.js +4 -3
- package/dist/src/manager/routes/telegram-hub.js.map +1 -1
- package/dist/src/manager/server.js +17 -2
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/manager/telegram-hub/hub-bot.js +127 -7
- package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
- package/dist/src/memory/heartbeat.js +15 -14
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/memory/identity.js +3 -2
- package/dist/src/memory/identity.js.map +1 -1
- package/dist/src/memory/memory.js +3 -2
- package/dist/src/memory/memory.js.map +1 -1
- package/dist/src/memory/reflect.js +2 -1
- package/dist/src/memory/reflect.js.map +1 -1
- package/dist/src/memory/runtime.js +3 -2
- package/dist/src/memory/runtime.js.map +1 -1
- package/dist/src/memory/shared.js +4 -3
- package/dist/src/memory/shared.js.map +1 -1
- package/dist/src/memory/worklog.js +3 -2
- package/dist/src/memory/worklog.js.map +1 -1
- package/dist/src/messaging/runtime.js +4 -3
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send.js +1 -1
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/orchestrator/attestation.js +33 -0
- package/dist/src/orchestrator/attestation.js.map +1 -1
- package/dist/src/orchestrator/collect.js +9 -4
- package/dist/src/orchestrator/collect.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +0 -142
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +3 -3
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +19 -1
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +93 -16
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/worker-replay-notice.js +31 -11
- package/dist/src/orchestrator/worker-replay-notice.js.map +1 -1
- package/dist/src/prompt/builder.js +20 -20
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/context-hooks.js +2 -1
- package/dist/src/prompt/context-hooks.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +69 -45
- package/dist/src/prompt/templates/employee.md +3 -2
- package/dist/src/prompt/templates/orchestration.md +13 -15
- package/dist/src/prompt/templates/skills.md +1 -0
- package/dist/src/routes/avatar.js +4 -3
- package/dist/src/routes/avatar.js.map +1 -1
- package/dist/src/routes/bgtask.js +2 -1
- package/dist/src/routes/bgtask.js.map +1 -1
- package/dist/src/routes/browser.js +2 -1
- package/dist/src/routes/browser.js.map +1 -1
- package/dist/src/routes/command.js +32 -2
- package/dist/src/routes/command.js.map +1 -1
- package/dist/src/routes/messaging.js +6 -5
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +144 -29
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/quota.js +217 -33
- package/dist/src/routes/quota.js.map +1 -1
- package/dist/src/routes/settings.js +3 -2
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/static.js +37 -2
- package/dist/src/routes/static.js.map +1 -1
- package/dist/src/telegram/bot.js +123 -67
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/elicitation-buttons.js +71 -0
- package/dist/src/telegram/elicitation-buttons.js.map +1 -0
- package/dist/src/telegram/fetch-body.js +11 -0
- package/dist/src/telegram/fetch-body.js.map +1 -0
- package/dist/src/telegram/forwarder.js +3 -5
- package/dist/src/telegram/forwarder.js.map +1 -1
- package/dist/src/telegram/rich-message.js +85 -11
- package/dist/src/telegram/rich-message.js.map +1 -1
- package/dist/src/telegram/status-update-buffer.js +15 -0
- package/dist/src/telegram/status-update-buffer.js.map +1 -0
- package/dist/src/telegram/telegram-file.js +5 -4
- package/dist/src/telegram/telegram-file.js.map +1 -1
- package/dist/src/telegram/voice.js +5 -4
- package/dist/src/telegram/voice.js.map +1 -1
- package/dist/src/workflows/planaudit.js +2 -1
- package/dist/src/workflows/planaudit.js.map +1 -1
- package/dist/src/workflows/repo-map/index.js +157 -0
- package/dist/src/workflows/repo-map/index.js.map +1 -0
- package/dist/src/workflows/scope-sandbox.js +1 -0
- package/dist/src/workflows/scope-sandbox.js.map +1 -1
- package/package.json +5 -2
- package/public/css/chat.css +17 -1
- package/public/css/orc-state.css +2 -1
- package/public/css/variables.css +0 -1
- package/public/dist/assets/{AdvancedExport-qa01DKDO.js → AdvancedExport-DsDpqXoH.js} +1 -1
- package/public/dist/assets/{Agent-CHCXjXSN.js → Agent-CrLn42Jb.js} +1 -1
- package/public/dist/assets/{Browser-Df4B5cnl.js → Browser-B52Bdaeu.js} +1 -1
- package/public/dist/assets/BrowserPanel-Bh3JpkZO.js +3 -0
- package/public/dist/assets/BrowserPanel-DpntR8EJ.css +1 -0
- package/public/dist/assets/{ChannelsDiscord-BqPckWSY.js → ChannelsDiscord-Bt1_rtNC.js} +1 -1
- package/public/dist/assets/{ChannelsTelegram-B9Feggy7.js → ChannelsTelegram-BLV0m1oq.js} +1 -1
- package/public/dist/assets/{CodeCanvas-BzhNLZVF.js → CodeCanvas-COgs1P6U.js} +2 -2
- package/public/dist/assets/{DashboardEmbeddingSection-CocnWvOE.js → DashboardEmbeddingSection-DMgHZQnn.js} +1 -1
- package/public/dist/assets/{DashboardMeta-C9BshDiw.js → DashboardMeta-B7CVqXcU.js} +1 -1
- package/public/dist/assets/DesignPanel-3XpGjuEW.css +1 -0
- package/public/dist/assets/DesignPanel-BGMPhZSx.js +2 -0
- package/public/dist/assets/{DiffPanel-DsFwEFjd.js → DiffPanel-B_ljObDk.js} +1 -1
- package/public/dist/assets/{Display-D_r_BwdJ.js → Display-BF-rACK6.js} +1 -1
- package/public/dist/assets/{DocPanel-6Z_RELzd.js → DocPanel-DtYwv3n3.js} +1 -1
- package/public/dist/assets/{Employees-DL3R3z7K.js → Employees-D3hnciP0.js} +1 -1
- package/public/dist/assets/{FolderPanel-DdlzWAuK.js → FolderPanel-DbPhzzvi.js} +3 -3
- package/public/dist/assets/{Heartbeat-BblY8Z4a.js → Heartbeat-Dk-_TtKV.js} +1 -1
- package/public/dist/assets/{InlineWarn-DrqqH39Y.js → InlineWarn-DDzeHxQw.js} +1 -1
- package/public/dist/assets/{MarkdownRenderer-Cl0oEICj.js → MarkdownRenderer-CHacL2M_.js} +2 -2
- package/public/dist/assets/MarkdownRenderer-DyrB9FbZ.js +1 -0
- package/public/dist/assets/{Mcp-CP6h9IQP.js → Mcp-SfytKWGX.js} +1 -1
- package/public/dist/assets/{Memory-BWcfxzCz.js → Memory-BOicOlcn.js} +1 -1
- package/public/dist/assets/{MilkdownWysiwygEditor-B-j0IUe6.js → MilkdownWysiwygEditor-BNoLGbFC.js} +1 -1
- package/public/dist/assets/{ModelProvider-D4LBX7K2.js → ModelProvider-DQ2AA0gJ.js} +1 -1
- package/public/dist/assets/{Network-TkeE8ldB.js → Network-DISUhige.js} +1 -1
- package/public/dist/assets/{NotesGraphWorkspace-B55jfeiE.js → NotesGraphWorkspace-Dm1xUFl8.js} +1 -1
- package/public/dist/assets/PanelLayoutProvider-XpTo-i_s.js +1 -0
- package/public/dist/assets/{Permissions-Dc5xnPMu.js → Permissions-CnKt44dN.js} +1 -1
- package/public/dist/assets/Permissions-DNT0TxYL.js +1 -0
- package/public/dist/assets/{Profile-Bacunq6W.js → Profile-B8yBO3Ju.js} +1 -1
- package/public/dist/assets/{Prompts-D36Mj9HS.js → Prompts-5lNQ5qOm.js} +1 -1
- package/public/dist/assets/{SpeechKeys-Dda4Dt6M.js → SpeechKeys-BepaIHBa.js} +1 -1
- package/public/dist/assets/{TelegramHub-CuJoPPib.js → TelegramHub--DNjRAwW.js} +1 -1
- package/public/dist/assets/{TerminalPanel-DSCJeGjp.js → TerminalPanel-DQovYfwz.js} +1 -1
- package/public/dist/assets/{TransportStatusChips-C5QcQVCy.js → TransportStatusChips-Bld0yXi7.js} +1 -1
- package/public/dist/assets/app-BJVZZqTm.js +55 -0
- package/public/dist/assets/app-CvNmD8jx.css +1 -0
- package/public/dist/assets/architecture-7EHR7CIX-D-6Nx315.js +1 -0
- package/public/dist/assets/{architectureDiagram-3BPJPVTR-C4lVLx8A.js → architectureDiagram-3BPJPVTR-q8idz3H3.js} +1 -1
- package/public/dist/assets/{bgtask-badge-b7pj_Dbh.js → bgtask-badge-Bz8_kUKd.js} +1 -1
- package/public/dist/assets/bgtask-badge-iOk9R0RF.js +1 -0
- package/public/dist/assets/{blockDiagram-GPEHLZMM-BHjdqDcb.js → blockDiagram-GPEHLZMM-DGB0dsia.js} +1 -1
- package/public/dist/assets/{c4Diagram-AAUBKEIU-B1QuN7gf.js → c4Diagram-AAUBKEIU-ChP5YfVt.js} +1 -1
- package/public/dist/assets/channel-ByNDsZsH.js +1 -0
- package/public/dist/assets/{chunk-2J33WTMH-D1olIwij.js → chunk-2J33WTMH-D3OPoEHg.js} +1 -1
- package/public/dist/assets/{chunk-3OPIFGDE-Cf7991q8.js → chunk-3OPIFGDE-CULJ8ZHF.js} +1 -1
- package/public/dist/assets/{chunk-4BX2VUAB-zmO3Vjrm.js → chunk-4BX2VUAB-DGgktZYr.js} +1 -1
- package/public/dist/assets/{chunk-4EGX6M5U-B-uS9w6F.js → chunk-4EGX6M5U-BD3v8KR4.js} +1 -1
- package/public/dist/assets/chunk-55IACEB6-CQFLXxVc.js +1 -0
- package/public/dist/assets/{chunk-5DO6E6H7-AkI69lqb.js → chunk-5DO6E6H7-B-FbGqHn.js} +1 -1
- package/public/dist/assets/{chunk-5ZQYHXKU-C3d9OOmT.js → chunk-5ZQYHXKU-DVpWOoGS.js} +1 -1
- package/public/dist/assets/{chunk-727SXJPM-BOt5gU_h.js → chunk-727SXJPM-CZjR7q6H.js} +1 -1
- package/public/dist/assets/{chunk-AQP2D5EJ-CrRyjYkJ.js → chunk-AQP2D5EJ-BlGjnlsV.js} +1 -1
- package/public/dist/assets/{chunk-BR22UD5L-DR9GxWFk.js → chunk-BR22UD5L-MK8KuB9X.js} +1 -1
- package/public/dist/assets/{chunk-BSJP7CBP-B24w6Ihw.js → chunk-BSJP7CBP-ypXC4wBv.js} +1 -1
- package/public/dist/assets/{chunk-CSCIHK7Q-BPBO8B3q.js → chunk-CSCIHK7Q-CmvetykJ.js} +1 -1
- package/public/dist/assets/{chunk-FHYWG6QK-CXhRbK1g.js → chunk-FHYWG6QK-Do5csWDm.js} +1 -1
- package/public/dist/assets/{chunk-FMBD7UC4-tu50fn_l.js → chunk-FMBD7UC4-BXpT25MP.js} +1 -1
- package/public/dist/assets/{chunk-KSCS5N6A-CnJg0Z_l.js → chunk-KSCS5N6A-DtlfLqto.js} +1 -1
- package/public/dist/assets/{chunk-L5ZTLDWV-B3Ak80dW.js → chunk-L5ZTLDWV-Czv9NkHn.js} +1 -1
- package/public/dist/assets/{chunk-LZXEDZCA-C3fVGX8q.js → chunk-LZXEDZCA-vD7oFdiq.js} +1 -1
- package/public/dist/assets/{chunk-MPE355IW-iQbf4K4s.js → chunk-MPE355IW-2ei0PVn0.js} +1 -1
- package/public/dist/assets/{chunk-MZUSXYTE-BEKROhpC.js → chunk-MZUSXYTE-JO_qTk4K.js} +1 -1
- package/public/dist/assets/{chunk-N66VUXT2-DUtPpNne.js → chunk-N66VUXT2-BXL-FniY.js} +1 -1
- package/public/dist/assets/{chunk-ND2GUHAM-DW2SkbNq.js → chunk-ND2GUHAM-B9SIO-4a.js} +1 -1
- package/public/dist/assets/{chunk-NZK2D7GU-SJvHIVX3.js → chunk-NZK2D7GU-CqOo06-Z.js} +1 -1
- package/public/dist/assets/{chunk-O5CBEL6O-D_hkyy5c.js → chunk-O5CBEL6O-BWbe_grt.js} +1 -1
- package/public/dist/assets/{chunk-PUPMXCY4-DcRmz6F2.js → chunk-PUPMXCY4-aFTMGBaR.js} +1 -1
- package/public/dist/assets/chunk-QZHKN3VN-Becu19mF.js +1 -0
- package/public/dist/assets/{chunk-UIBZB4QT-CFemVDOF.js → chunk-UIBZB4QT-S8EH0jZR.js} +1 -1
- package/public/dist/assets/{chunk-WCWK7LTN-B6ske8a4.js → chunk-WCWK7LTN-EgrNk7Dj.js} +1 -1
- package/public/dist/assets/chunk-WU5MYG2G-CkoHFn0F.js +1 -0
- package/public/dist/assets/{chunk-XPW4576I-elhPZgkY.js → chunk-XPW4576I-8oydVjY6.js} +1 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-DVGoKviY.js +1 -0
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BIZeptY-.js +1 -0
- package/public/dist/assets/{copy-text-BKruhU_y.js → copy-text-BDs2wKjA.js} +1 -1
- package/public/dist/assets/{cose-bilkent-S5V4N54A-B-gwVajW.js → cose-bilkent-S5V4N54A-PNmvcq_6.js} +1 -1
- package/public/dist/assets/{dagre-BM42HDAG-C9BDjgRM.js → dagre-BM42HDAG-BP_m3uo9.js} +1 -1
- package/public/dist/assets/{dagre-HAOs7bVl.js → dagre-Ct2n78X9.js} +1 -1
- package/public/dist/assets/{diagram-2AECGRRQ-CvEawheC.js → diagram-2AECGRRQ-DhgfR-ol.js} +1 -1
- package/public/dist/assets/{diagram-5GNKFQAL-Da4DwByP.js → diagram-5GNKFQAL-BRLvmdeK.js} +1 -1
- package/public/dist/assets/{diagram-KO2AKTUF-Cnhf5Czo.js → diagram-KO2AKTUF-Co3C18-Q.js} +1 -1
- package/public/dist/assets/{diagram-LMA3HP47-CMusMTT2.js → diagram-LMA3HP47-3SwoWQij.js} +1 -1
- package/public/dist/assets/{diagram-OG6HWLK6-D5nQR5rT.js → diagram-OG6HWLK6-bjEryAd3.js} +1 -1
- package/public/dist/assets/{dist-jZTs_0Zg.js → dist-B6T-R4xY.js} +1 -1
- package/public/dist/assets/{dist-woWoxWmX.js → dist-B8V2LYzt.js} +1 -1
- package/public/dist/assets/{dist-DL8oabBM.js → dist-BDPUxeoi.js} +1 -1
- package/public/dist/assets/{dist-Dpn3ujr3.js → dist-BMC_dTfR.js} +1 -1
- package/public/dist/assets/{dist-C4WouNM7.js → dist-BSf40pae.js} +1 -1
- package/public/dist/assets/{dist-CPOW-jfg.js → dist-BlMOeJym.js} +1 -1
- package/public/dist/assets/dist-BmXnOAlo.js +1 -0
- package/public/dist/assets/{dist-C_6E126b.js → dist-BqzMcuh8.js} +1 -1
- package/public/dist/assets/{dist-CHB0SFvU.js → dist-BvQlb9-o.js} +1 -1
- package/public/dist/assets/{dist-BvgkNZ7r.js → dist-C7pD0dEn.js} +1 -1
- package/public/dist/assets/{dist-DvlZh9GF.js → dist-CC2vK_6S.js} +1 -1
- package/public/dist/assets/{dist-wdt8RQwr.js → dist-CFU9RsAu.js} +1 -1
- package/public/dist/assets/{dist-Y5dy_sSf.js → dist-CS1XLdz3.js} +1 -1
- package/public/dist/assets/{dist-CiaEUSjf.js → dist-CjzfPsGt.js} +1 -1
- package/public/dist/assets/{dist-DlqIM5Y-.js → dist-CvzAXxlb.js} +1 -1
- package/public/dist/assets/{dist-CLMpv9qF.js → dist-D8SW_REQ.js} +1 -1
- package/public/dist/assets/dist-DLY5I6dK.js +1 -0
- package/public/dist/assets/{dist-DfOlJSUk.js → dist-DMZVNaIe.js} +1 -1
- package/public/dist/assets/{dist-BSwjNBYz.js → dist-DN-hkAIC.js} +1 -1
- package/public/dist/assets/dist-DPHcMCqI.js +1 -0
- package/public/dist/assets/{dist-DQR4gW5j.js → dist-DStWZVZ0.js} +1 -1
- package/public/dist/assets/{dist-BpbqDhsq.js → dist-DTcoHNXr.js} +1 -1
- package/public/dist/assets/{dist-DRKfpxOd.js → dist-DdJuxxG7.js} +1 -1
- package/public/dist/assets/{dist-KuP6Gt4m.js → dist-DhgwoIqj.js} +1 -1
- package/public/dist/assets/{dist-nbzW6Sn7.js → dist-DmjSXJAP.js} +1 -1
- package/public/dist/assets/{dist-8hLkyg-D.js → dist-cBBDKBli.js} +1 -1
- package/public/dist/assets/{dist-CKTQ2eXH.js → dist-ph7PUr0c.js} +1 -1
- package/public/dist/assets/{dist-DGJG2rr2.js → dist-qUky5WRy.js} +1 -1
- package/public/dist/assets/{dist-CYw9JGM_.js → dist-w2YzIhc5.js} +1 -1
- package/public/dist/assets/dist-xHOEvyuU.js +1 -0
- package/public/dist/assets/{dockerfile-Bq20q5i6.js → dockerfile-C0jniLkw.js} +1 -1
- package/public/dist/assets/{employees-DbgFV33i.js → employees-BYebrTfH.js} +1 -1
- package/public/dist/assets/{erDiagram-TEJ5UH35-BnsX5Dzt.js → erDiagram-TEJ5UH35-DQBxHU1q.js} +1 -1
- package/public/dist/assets/{error-normalize-DLzj47d_.js → error-normalize-BzeO0SXE.js} +1 -1
- package/public/dist/assets/eventmodeling-FCH6USID-BB1OVDLb.js +1 -0
- package/public/dist/assets/{factor-BfAVKjvH.js → factor-nzjoQ9cK.js} +1 -1
- package/public/dist/assets/{fields-MeoSVgIK.js → fields-zkeByFQW.js} +1 -1
- package/public/dist/assets/{flowDiagram-I6XJVG4X-BSy1p30u.js → flowDiagram-I6XJVG4X-BN90fCt5.js} +1 -1
- package/public/dist/assets/{ganttDiagram-6RSMTGT7-BILWylat.js → ganttDiagram-6RSMTGT7-B-JAlIhh.js} +1 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-DAWTa5Fn.js +1 -0
- package/public/dist/assets/{gitGraphDiagram-PVQCEYII-BaRlZZ_k.js → gitGraphDiagram-PVQCEYII-CLL2G5U-.js} +1 -1
- package/public/dist/assets/{graphlib-DdtRn62K.js → graphlib-B6dRm8vZ.js} +1 -1
- package/public/dist/assets/idb-cache-ZH6lOebk.js +1 -0
- package/public/dist/assets/iframe-renderer-Clu9EYLW.js +1 -0
- package/public/dist/assets/iframe-renderer-DACMLTYf.js +142 -0
- package/public/dist/assets/info-J43DQDTF-C530y5-j.js +1 -0
- package/public/dist/assets/{infoDiagram-5YYISTIA-BElvxLr3.js → infoDiagram-5YYISTIA-CftYDPfc.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-DPQZsd5R.js → ishikawaDiagram-YF4QCWOH-BVa5AJbz.js} +1 -1
- package/public/dist/assets/javascript-DbM-pSY-.js +1 -0
- package/public/dist/assets/{journeyDiagram-JHISSGLW-BJZNR2qA.js → journeyDiagram-JHISSGLW-BeUKm6ME.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-OQLDtH0g.js → kanban-definition-UN3LZRKU-K5DYNY4p.js} +1 -1
- package/public/dist/assets/{manager-rHNwUB4e.css → manager-C4eNDNFt.css} +1 -1
- package/public/dist/assets/manager-pcvo6od1.js +13 -0
- package/public/dist/assets/{memory-QobGT0Kv.js → memory-DLD5Xpk8.js} +1 -1
- package/public/dist/assets/memory-oWWwCkg5.js +1 -0
- package/public/dist/assets/mermaid-loader-Bd9rYyxD.js +1 -0
- package/public/dist/assets/{mermaid-parser.core-D1KUUauv.js → mermaid-parser.core-Cz70RgAa.js} +1 -1
- package/public/dist/assets/mermaid-preprocess-0hqEN7sn.js +5 -0
- package/public/dist/assets/{mermaid.core-R6dUFqZC.js → mermaid.core-Dj5GOPe1.js} +2 -2
- package/public/dist/assets/mermaid.core-TSG49mwm.js +1 -0
- package/public/dist/assets/message-history-C6D4juRe.js +1 -0
- package/public/dist/assets/message-history-DdIshS4Q.js +1 -0
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-B8WJHpYI.js → mindmap-definition-RKZ34NQL-PsH0E_3e.js} +1 -1
- package/public/dist/assets/{nsis-CIoRNUaw.js → nsis-BI3I3OhH.js} +1 -1
- package/public/dist/assets/packet-YPE3B663-BHcxn4sy.js +1 -0
- package/public/dist/assets/{page-shell-BeAyKBJW.js → page-shell-LF7vVVfG.js} +1 -1
- package/public/dist/assets/pi-settings-CBUGDAuT.js +1 -0
- package/public/dist/assets/pie-LRSECV5Y-DjigSia_.js +1 -0
- package/public/dist/assets/{pieDiagram-4H26LBE5-BuBruIcx.js → pieDiagram-4H26LBE5-Dtwtlr0z.js} +1 -1
- package/public/dist/assets/{pug-Cb8OCun5.js → pug-DHfNwv1w.js} +1 -1
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-B6rzGZvr.js → quadrantDiagram-W4KKPZXB-CAFUbaV6.js} +1 -1
- package/public/dist/assets/radar-GUYGQ44K-DPCrmsHJ.js +1 -0
- package/public/dist/assets/{react-dom-CZtrmbYs.js → react-dom-AWKMTIe7.js} +1 -1
- package/public/dist/assets/render-E2PXsTyS.js +122 -0
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-Cvj5JknB.js → requirementDiagram-4Y6WPE33-CvBM4AjK.js} +1 -1
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP-DNGNYR7j.js → sankeyDiagram-5OEKKPKP-cordQgRs.js} +1 -1
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-DuUAH96Z.js → sequenceDiagram-3UESZ5HK-DDAqRdga.js} +1 -1
- package/public/dist/assets/{settings-D70uFh8l.js → settings-DYIfnpYq.js} +1 -1
- package/public/dist/assets/settings-core-BURhLoX3.js +1 -0
- package/public/dist/assets/{settings-core-B2lw2bgO.js → settings-core-DRYE_5Wb.js} +1 -1
- package/public/dist/assets/settings-yyDc7X3c.js +1 -0
- package/public/dist/assets/{sidebar-BqWm2XWP.js → sidebar-Cn-KLQ0U.js} +3 -3
- package/public/dist/assets/{skills-CdNOfXlk.js → skills-Brt3opa5.js} +1 -1
- package/public/dist/assets/skills-KHfKUuAJ.js +1 -0
- package/public/dist/assets/{slash-commands-4Ntm5N7h.js → slash-commands-jMNf0b43.js} +1 -1
- package/public/dist/assets/slash-commands-nb096e6A.js +1 -0
- package/public/dist/assets/{stateDiagram-AJRCARHV-DGZNs20Q.js → stateDiagram-AJRCARHV-DUaoSRgZ.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-BAesfdhr.js +1 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-yDl1yISI.js → timeline-definition-PNZ67QCA-D85QNy9b.js} +1 -1
- package/public/dist/assets/{trace-drawer-DqAwwHHQ.js → trace-drawer-Dv5cDGLR.js} +1 -1
- package/public/dist/assets/treeView-BLDUP644-DmufUMul.js +1 -0
- package/public/dist/assets/treemap-LRROVOQU-Cg48uw_D.js +1 -0
- package/public/dist/assets/ui-BeyzLs7f.js +2 -0
- package/public/dist/assets/ui-DabvyDGc.js +1 -0
- package/public/dist/assets/{vennDiagram-CIIHVFJN-C0TNoBYO.js → vennDiagram-CIIHVFJN-CQSILdx8.js} +1 -1
- package/public/dist/assets/wardley-L42UT6IY-QZOEXU7f.js +1 -0
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-C6cJR4Ib.js → wardleyDiagram-YWT4CUSO-BZEVMlJ4.js} +1 -1
- package/public/dist/assets/{wiki-link-suggestions-BMHWTE4_.js → wiki-link-suggestions-DZQc78gj.js} +1 -1
- package/public/dist/assets/{xychartDiagram-2RQKCTM6-DqEqpcox.js → xychartDiagram-2RQKCTM6-C8573Tgs.js} +1 -1
- package/public/dist/index.html +2 -2
- package/public/dist/manager/index.html +2 -2
- package/public/js/diagram/iframe-renderer.ts +197 -49
- package/public/js/diagram/widget-validator.ts +17 -3
- package/public/js/features/chat-messages.ts +5 -1
- package/public/js/features/chat-scroll.ts +10 -5
- package/public/js/features/chat.ts +9 -1
- package/public/js/features/elicitation.ts +1 -5
- package/public/js/features/message-item-html.ts +3 -1
- package/public/js/features/process-block.ts +46 -3
- package/public/js/features/settings-mcp.ts +1 -1
- package/public/js/locale.ts +2 -2
- package/public/js/main.ts +15 -4
- package/public/js/preview-parent-origin.ts +73 -9
- package/public/js/render/chart-json.ts +2 -5
- package/public/js/render/compose-block.ts +2 -5
- package/public/js/render/dataframe.ts +2 -5
- package/public/js/render/diff-viewer.ts +2 -5
- package/public/js/render/link-preview.ts +1 -5
- package/public/js/render/markdown.ts +22 -0
- package/public/js/render/post-render.ts +7 -3
- package/public/js/render/sanitize.ts +6 -0
- package/public/js/render/search-results.ts +2 -5
- package/public/js/streaming-render.ts +12 -1
- package/public/js/ui.ts +6 -3
- package/public/js/ws.ts +39 -25
- package/public/locales/en.json +2 -1
- package/public/locales/ja.json +2 -1
- package/public/locales/ko.json +2 -1
- package/public/locales/zh.json +2 -1
- package/public/manager/src/InstancePreview.tsx +35 -0
- package/public/manager/src/SidebarRailRouter.tsx +209 -124
- package/public/manager/src/browser-panel/BrowserPanel.tsx +714 -17
- package/public/manager/src/browser-panel/browser-panel.css +305 -0
- package/public/manager/src/browser-panel/use-embedded-target-sync.ts +182 -0
- package/public/manager/src/components/DesktopPanelControls.tsx +1 -1
- package/public/manager/src/design-panel/DesignPageSelector.tsx +27 -0
- package/public/manager/src/design-panel/DesignPanel.tsx +265 -0
- package/public/manager/src/design-panel/DesignViewport.tsx +34 -0
- package/public/manager/src/design-panel/design-api.ts +106 -0
- package/public/manager/src/design-panel/design-panel.css +137 -0
- package/public/manager/src/design-panel/design-types.ts +43 -0
- package/public/manager/src/folder-panel/FolderPanel.tsx +15 -1
- package/public/manager/src/jaw-ceo/JawCeoWorkbenchButton.tsx +10 -5
- package/public/manager/src/jaw-ceo/jaw-ceo.css +8 -0
- package/public/manager/src/jaw-ceo/useJawCeoDashboardBridge.tsx +2 -1
- package/public/manager/src/panels/FileFolderSplitPanel.tsx +97 -0
- package/public/manager/src/panels/PanelErrorBoundary.tsx +44 -0
- package/public/manager/src/panels/PanelLayoutProvider.tsx +569 -86
- package/public/manager/src/panels/RightSidebar.tsx +389 -134
- package/public/manager/src/panels/desktop-bridge.ts +88 -0
- package/public/manager/src/panels/panel-layout-registry-state.ts +252 -10
- package/public/manager/src/panels/panels.css +479 -0
- package/public/manager/src/panels/right-sidebar-tab-display.ts +36 -0
- package/public/manager/src/panels/types.ts +79 -4
- package/public/manager/src/types.ts +11 -0
- package/scripts/bundle-sidecar.sh +3 -0
- package/scripts/check-strict-baseline.mjs +26 -2
- package/scripts/docs/check-docs.mts +87 -0
- package/scripts/docs/extract-commands.mts +215 -0
- package/scripts/docs/extract-routes.mts +350 -0
- package/scripts/release-gates.mjs +32 -0
- package/public/dist/assets/BrowserPanel-CV_bbQpM.css +0 -1
- package/public/dist/assets/BrowserPanel-Ua0Xck6V.js +0 -1
- package/public/dist/assets/MarkdownRenderer-BivJ4hJm.js +0 -1
- package/public/dist/assets/Permissions-CddCEaJl.js +0 -1
- package/public/dist/assets/app-BPsa7jSJ.css +0 -1
- package/public/dist/assets/app-DszWzakT.js +0 -55
- package/public/dist/assets/architecture-7EHR7CIX-GJhmD5MC.js +0 -1
- package/public/dist/assets/bgtask-badge-DZEQ5fMl.js +0 -1
- package/public/dist/assets/channel-Sut8CY6m.js +0 -1
- package/public/dist/assets/chunk-55IACEB6-C3KMx7HH.js +0 -1
- package/public/dist/assets/chunk-QZHKN3VN-C7Qk10ab.js +0 -1
- package/public/dist/assets/chunk-WU5MYG2G-BpCiJpUL.js +0 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-BVeAlcVw.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-mvRsJL7t.js +0 -1
- package/public/dist/assets/dist-BQ6IjZAx.js +0 -1
- package/public/dist/assets/dist-CB1yXHdY.js +0 -1
- package/public/dist/assets/dist-El7lM3OZ.js +0 -1
- package/public/dist/assets/dist-ZXqltO6b.js +0 -1
- package/public/dist/assets/eventmodeling-FCH6USID-BASBZB6y.js +0 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-C6UAXKTO.js +0 -1
- package/public/dist/assets/idb-cache-DQM-odDV.js +0 -1
- package/public/dist/assets/info-J43DQDTF-DZvaZ8fx.js +0 -1
- package/public/dist/assets/javascript-ocJZALE4.js +0 -1
- package/public/dist/assets/manager-CdNOlCyS.js +0 -13
- package/public/dist/assets/memory-BT-rs3ag.js +0 -1
- package/public/dist/assets/mermaid-loader-BMIvbrMb.js +0 -1
- package/public/dist/assets/mermaid-preprocess-CqOBWYEb.js +0 -5
- package/public/dist/assets/mermaid.core-CE6des8A.js +0 -1
- package/public/dist/assets/message-history-BY1UNJAO.js +0 -1
- package/public/dist/assets/message-history-BmP5JKio.js +0 -142
- package/public/dist/assets/packet-YPE3B663-Br_gfHDJ.js +0 -1
- package/public/dist/assets/pi-settings-BVYmGHWD.js +0 -1
- package/public/dist/assets/pie-LRSECV5Y-CPSw09Lc.js +0 -1
- package/public/dist/assets/radar-GUYGQ44K-D5jGe4n0.js +0 -1
- package/public/dist/assets/render-C3r-9_-J.js +0 -119
- package/public/dist/assets/settings-CJm8ZSJs.js +0 -1
- package/public/dist/assets/settings-core-gdS0lo1b.js +0 -1
- package/public/dist/assets/skills-DG_CbTEf.js +0 -1
- package/public/dist/assets/slash-commands-B9kOEhJ_.js +0 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-D2I0t9Bo.js +0 -1
- package/public/dist/assets/treeView-BLDUP644-i3ZwrLGf.js +0 -1
- package/public/dist/assets/treemap-LRROVOQU-CJRBfbOx.js +0 -1
- package/public/dist/assets/ui-Anw2S64o.js +0 -1
- package/public/dist/assets/ui-DsK6r0Xv.js +0 -2
- package/public/dist/assets/wardley-L42UT6IY-B1NLyOET.js +0 -1
- /package/public/dist/assets/{agent-meta-FyI15KAa.js → agent-meta-tiPlp7OI.js} +0 -0
- /package/public/dist/assets/{api-DvCd2Uff.js → api-C9dOxby7.js} +0 -0
- /package/public/dist/assets/{apl-CUNx2Nxr.js → apl-2tE96F_Y.js} +0 -0
- /package/public/dist/assets/{asciiarmor-B9JjJqLb.js → asciiarmor-ynSKiC17.js} +0 -0
- /package/public/dist/assets/{asn1-NstwUq_r.js → asn1-CfqO1VY8.js} +0 -0
- /package/public/dist/assets/{asterisk-Box6GWx7.js → asterisk-DSiRJoqT.js} +0 -0
- /package/public/dist/assets/{brainfuck-DAD60u2v.js → brainfuck-DTcanv-8.js} +0 -0
- /package/public/dist/assets/{chunk-AGHRB4JF-BeNb9aN4.js → chunk-AGHRB4JF-BXLzSehp.js} +0 -0
- /package/public/dist/assets/{chunk-NNHCCRGN-hPUSf84G.js → chunk-NNHCCRGN-D69GtSOc.js} +0 -0
- /package/public/dist/assets/{clike-B-3e4_rA.js → clike-qn72CMAj.js} +0 -0
- /package/public/dist/assets/{clojure-DpNVclFl.js → clojure-m8yDiYVc.js} +0 -0
- /package/public/dist/assets/{cmake-DzNe63Ys.js → cmake-4AHAWHiF.js} +0 -0
- /package/public/dist/assets/{cobol-CoytNvhw.js → cobol-CxxJP5eX.js} +0 -0
- /package/public/dist/assets/{coffeescript-Cq3xHp7h.js → coffeescript-BAB3zi48.js} +0 -0
- /package/public/dist/assets/{commonlisp-CVjsh9SW.js → commonlisp-BPbWuAds.js} +0 -0
- /package/public/dist/assets/{constants-EMUBd5RQ.js → constants-DzwdndBj.js} +0 -0
- /package/public/dist/assets/{crystal-BlIILE-v.js → crystal-CGuSsWYR.js} +0 -0
- /package/public/dist/assets/{css-D1TAh_-V.js → css-DszbR74r.js} +0 -0
- /package/public/dist/assets/{cypher-ZntLuJzU.js → cypher-GUnmv522.js} +0 -0
- /package/public/dist/assets/{cytoscape.esm-89N3cqwG.js → cytoscape.esm-D_XyYSBG.js} +0 -0
- /package/public/dist/assets/{d-CzwXOQ5h.js → d-Cfm0cznj.js} +0 -0
- /package/public/dist/assets/{desktop-bridge-B1whMBS2.js → desktop-bridge-CvdhnJQo.js} +0 -0
- /package/public/dist/assets/{diff-DI7-Ikca.js → diff-C6rPA7NX.js} +0 -0
- /package/public/dist/assets/{dist-B51C28kc.js → dist-AgQwqBLq.js} +0 -0
- /package/public/dist/assets/{dtd-7UKQtPWR.js → dtd-Dxh5tS6M.js} +0 -0
- /package/public/dist/assets/{dylan-CM1mkXYp.js → dylan-BdIVFR1j.js} +0 -0
- /package/public/dist/assets/{ebnf-Llv_5uW5.js → ebnf-iU-8xYFu.js} +0 -0
- /package/public/dist/assets/{ecl-uqtp9saI.js → ecl-DjbzOHI6.js} +0 -0
- /package/public/dist/assets/{eiffel-BqzGlVPY.js → eiffel-B2ID8LZ3.js} +0 -0
- /package/public/dist/assets/{elm-bajSbBYX.js → elm-B6vPcfMj.js} +0 -0
- /package/public/dist/assets/{erlang-B5uEM5Ke.js → erlang-nDQwRdZV.js} +0 -0
- /package/public/dist/assets/{esm-3SgqVBY5.js → esm-CT1xxdH5.js} +0 -0
- /package/public/dist/assets/{fcl-BcH_K33Z.js → fcl-Bf86o55I.js} +0 -0
- /package/public/dist/assets/{folder-drag-payload-DE3ZS9PZ.js → folder-drag-payload-Bhln9Mk2.js} +0 -0
- /package/public/dist/assets/{forth-DpLesGXt.js → forth-CeQJji0n.js} +0 -0
- /package/public/dist/assets/{fortran--G-GJVGI.js → fortran-Dm_CqDsH.js} +0 -0
- /package/public/dist/assets/{gas-DpoQvniR.js → gas-e3EfgE3p.js} +0 -0
- /package/public/dist/assets/{gherkin-Dr59UACG.js → gherkin-Dn_7tSzg.js} +0 -0
- /package/public/dist/assets/{groovy-Cn2K6Dx3.js → groovy-LaKuGRkK.js} +0 -0
- /package/public/dist/assets/{haskell-B7lFmXEG.js → haskell-D9nNX9Mr.js} +0 -0
- /package/public/dist/assets/{haxe-BHWvyysr.js → haxe-Rp176QXJ.js} +0 -0
- /package/public/dist/assets/{http-DBZ5ODWR.js → http-BOeYLbuM.js} +0 -0
- /package/public/dist/assets/{idb-cache-DTKWSF12.js → idb-cache-BzzftUET.js} +0 -0
- /package/public/dist/assets/{idl-D6JLbJZt.js → idl-DHv3vdme.js} +0 -0
- /package/public/dist/assets/{javascript-CMsRa3Ah.js → javascript-Dk2fbl1a.js} +0 -0
- /package/public/dist/assets/{jsx-runtime-B3ZGMGGg.js → jsx-runtime-gFMgZ0TQ.js} +0 -0
- /package/public/dist/assets/{julia-BgEiFqoe.js → julia-D7CKCk5I.js} +0 -0
- /package/public/dist/assets/{livescript-Bl00ljSh.js → livescript-gRbr9rhj.js} +0 -0
- /package/public/dist/assets/{locale-GY3-GGWm.js → locale-DC-ZsWOf.js} +0 -0
- /package/public/dist/assets/{lua-C7XaZlrp.js → lua-CgZ_7bxf.js} +0 -0
- /package/public/dist/assets/{mathematica-8EcxUjYb.js → mathematica-B6bTyoab.js} +0 -0
- /package/public/dist/assets/{mbox-rZy25Spd.js → mbox-C8oQj1cJ.js} +0 -0
- /package/public/dist/assets/{mirc-BUmwqSCT.js → mirc-v6L6kZuh.js} +0 -0
- /package/public/dist/assets/{mllike-BqDqEdQF.js → mllike-CWu4RdWO.js} +0 -0
- /package/public/dist/assets/{modelica-MhacK6Xw.js → modelica-B3NBpX1d.js} +0 -0
- /package/public/dist/assets/{mscgen-B_VJszPL.js → mscgen-C8u7qRYw.js} +0 -0
- /package/public/dist/assets/{mumps-CEdRH9V2.js → mumps-DHjVG4PS.js} +0 -0
- /package/public/dist/assets/{nginx-CnXgGeyP.js → nginx-BMt87X3t.js} +0 -0
- /package/public/dist/assets/{notes-graph-settings-BaqO8hYl.js → notes-graph-settings-BgNrT_58.js} +0 -0
- /package/public/dist/assets/{ntriples-CyZcmI8c.js → ntriples-C8U-Jud2.js} +0 -0
- /package/public/dist/assets/{octave-DGH2kDhB.js → octave-Bq37AoFm.js} +0 -0
- /package/public/dist/assets/{oz-DUSpf7eX.js → oz-D6HxSRn3.js} +0 -0
- /package/public/dist/assets/{pascal-BYIqfrcG.js → pascal-BBqiAVg6.js} +0 -0
- /package/public/dist/assets/{path-utils-DX1HplvB.js → path-utils-LsJeDCKF.js} +0 -0
- /package/public/dist/assets/{perl-C7iNkbFR.js → perl-sHANlXjx.js} +0 -0
- /package/public/dist/assets/{pi-settings-D6opgoo4.js → pi-settings-Dh5lgb87.js} +0 -0
- /package/public/dist/assets/{pig-CR5p2dpV.js → pig-Cufgew--.js} +0 -0
- /package/public/dist/assets/{powershell-UK-_nKBG.js → powershell--Q4mDip6.js} +0 -0
- /package/public/dist/assets/{properties-CJAqwakm.js → properties-DoVpJ-kT.js} +0 -0
- /package/public/dist/assets/{protobuf-D3Vrac9j.js → protobuf-B5OiV2Zv.js} +0 -0
- /package/public/dist/assets/{provider-icons-BXm8sy5x.js → provider-icons-stsNmQKx.js} +0 -0
- /package/public/dist/assets/{puppet-DxgW6kGv.js → puppet-Ce_CFfqW.js} +0 -0
- /package/public/dist/assets/{python-C_ebQp0Y.js → python-pK7Wt6QH.js} +0 -0
- /package/public/dist/assets/{q-IMCDaQ03.js → q-Dd3Ltku0.js} +0 -0
- /package/public/dist/assets/{r-BXdh3mvZ.js → r-CsX__2f0.js} +0 -0
- /package/public/dist/assets/{rough.esm-BJMyUbab.js → rough.esm--LLpAgPj.js} +0 -0
- /package/public/dist/assets/{rpm-DA-4RGFa.js → rpm-D78AjDAl.js} +0 -0
- /package/public/dist/assets/{ruby-Bl1KGNRx.js → ruby-D_-KI498.js} +0 -0
- /package/public/dist/assets/{sas-vK1DtUVf.js → sas-D-GUPiy4.js} +0 -0
- /package/public/dist/assets/{scheme-DiOFQmiy.js → scheme-DF9WwQDv.js} +0 -0
- /package/public/dist/assets/{settings-client-Di8KLXq_.js → settings-client-CjbBShxm.js} +0 -0
- /package/public/dist/assets/{shell-DlO-WCDP.js → shell-BTUwbV-w.js} +0 -0
- /package/public/dist/assets/{sieve-CbtkgRpt.js → sieve--Z-EbGZo.js} +0 -0
- /package/public/dist/assets/{simple-mode-BlwHYanN.js → simple-mode-BUow4bpn.js} +0 -0
- /package/public/dist/assets/{smalltalk-BvKYa3AC.js → smalltalk-C2YIwVx3.js} +0 -0
- /package/public/dist/assets/{solr-BR4fru6p.js → solr-CYVq4fbf.js} +0 -0
- /package/public/dist/assets/{sparql-DXGln-02.js → sparql-Ccd4fsFv.js} +0 -0
- /package/public/dist/assets/{spreadsheet-vehQVAxe.js → spreadsheet-DW0WgMrS.js} +0 -0
- /package/public/dist/assets/{sql-DqGFyXDS.js → sql-C71Zp6qn.js} +0 -0
- /package/public/dist/assets/{stex-BMDhbycI.js → stex-CKuX0g_6.js} +0 -0
- /package/public/dist/assets/{stylus-KnS0CroG.js → stylus-CBH8s0NO.js} +0 -0
- /package/public/dist/assets/{swift-DgdcCI7r.js → swift-CfZoxKRA.js} +0 -0
- /package/public/dist/assets/{tcl-BdAMpvp9.js → tcl-D5MGbeQu.js} +0 -0
- /package/public/dist/assets/{textile-BHP2MzNo.js → textile-DJ3U30FW.js} +0 -0
- /package/public/dist/assets/{tiddlywiki-DXpY2p61.js → tiddlywiki-_fe1dHUq.js} +0 -0
- /package/public/dist/assets/{tiki-rmXXYsbl.js → tiki-Dd1udTrQ.js} +0 -0
- /package/public/dist/assets/{toml-C5KR4pi6.js → toml-xpw8pqjz.js} +0 -0
- /package/public/dist/assets/{troff-CCKOxFhE.js → troff-CgWiec8m.js} +0 -0
- /package/public/dist/assets/{ttcn-DbUUkNp1.js → ttcn-CSwmFrer.js} +0 -0
- /package/public/dist/assets/{ttcn-cfg-DXcL9aHC.js → ttcn-cfg-B5HVIC6z.js} +0 -0
- /package/public/dist/assets/{turtle-C8XIIixq.js → turtle-Cl_SuWQk.js} +0 -0
- /package/public/dist/assets/{vb-6dJ8H6C5.js → vb-BT131bSf.js} +0 -0
- /package/public/dist/assets/{vbscript-DIhYyfyM.js → vbscript-D6S8_XkU.js} +0 -0
- /package/public/dist/assets/{velocity-D4VFCVF7.js → velocity-9HkI645n.js} +0 -0
- /package/public/dist/assets/{vendor-utils-BgdgpA_R.js → vendor-utils-DJY0EWnQ.js} +0 -0
- /package/public/dist/assets/{verilog-CMPJNboz.js → verilog-BzMguKeI.js} +0 -0
- /package/public/dist/assets/{vhdl-CnU0dAe0.js → vhdl-bHScWzT1.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-_Vjqp3zl.js → w3c-keyname-a_sRwNLm.js} +0 -0
- /package/public/dist/assets/{webidl-DrscPGMb.js → webidl-CbgaVHNS.js} +0 -0
- /package/public/dist/assets/{wiki-link-resolver-C197VhRP.js → wiki-link-resolver-BfNXN9px.js} +0 -0
- /package/public/dist/assets/{xquery-B8_nl088.js → xquery-DWZPmAiC.js} +0 -0
- /package/public/dist/assets/{yacas-BCnk2qQq.js → yacas-CEdW4z4K.js} +0 -0
- /package/public/dist/assets/{z80-CG_mQV7a.js → z80-CMH3qxNg.js} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{t}from"./preload-helper-DFYRRz9w.js";import{a as n,i as r,n as i,r as a,t as o}from"./esm-3SgqVBY5.js";import{n as s,t as c}from"./jsx-runtime-B3ZGMGGg.js";import{t as l}from"./react-dom-CZtrmbYs.js";import{t as u}from"./desktop-bridge-B1whMBS2.js";var d=e(s(),1),f=l();function p(e){let t=typeof window<`u`?window.location.origin:``,n=typeof window<`u`?window.location.port:``,r=t&&n===String(e)?t:`http://127.0.0.1:${e}`;async function i(e,t,n){let i={method:e};n&&(i.headers={"Content-Type":`application/json`},i.body=JSON.stringify(n));let a=await(await fetch(`${r}${t}`,i)).json();if(!a.ok)throw Error(a.error||`${e} ${t} failed`);return a}return{async listSessions(){return(await i(`GET`,`/api/code/sessions`)).sessions},async listStoredSessions(e={}){let t=e.scope??`all`,n=new URLSearchParams({scope:t});return t===`cwd`&&e.cwd&&n.set(`cwd`,e.cwd),(await i(`GET`,`/api/code/sessions/stored${`?${n.toString()}`}`)).sessions},async listModelOptions(){return i(`GET`,`/api/code/models`)},async setDefaultModel(e){return i(`POST`,`/api/code/model-default`,{modelId:e})},async listModelAssignments(){return i(`GET`,`/api/code/model-assignments`)},async setModelAssignment(e,t){let n=typeof t==`string`?{modelId:t}:t;return i(`PUT`,`/api/code/model-assignments/${encodeURIComponent(e)}`,n)},async clearModelAssignment(e){return i(`DELETE`,`/api/code/model-assignments/${encodeURIComponent(e)}`)},async listModelPresets(){return i(`GET`,`/api/code/model-presets`)},async getGitInfo(e){return await i(`GET`,`/api/code/git-info?cwd=${encodeURIComponent(e)}`)},async loadSession(e,t){return(await i(`POST`,`/api/code/sessions/load`,{sessionId:e,cwd:t})).session},async createSession(e,t){return(await i(`POST`,`/api/code/sessions`,{cwd:e,...t?{model:t}:{}})).session},async sendPrompt(e,t){return i(`POST`,`/api/code/sessions/${e}/prompt`,{text:t})},async cancelPrompt(e){await i(`POST`,`/api/code/sessions/${e}/cancel`)},async closeSession(e){await i(`DELETE`,`/api/code/sessions/${e}`)},async answerPermission(e,t){await i(`POST`,`/api/code/permissions/${e}`,{optionId:t})},async setSessionConfig(e,t,n){await i(`POST`,`/api/code/sessions/${e}/config`,{configId:t,valueId:n})},async extMethod(e,t,n){return(await i(`POST`,`/api/code/sessions/${e}/ext`,{method:t,params:n})).result},async forkSession(e,t){return(await i(`POST`,`/api/code/sessions/${e}/fork`,{cwd:t})).session},async setSessionModel(e,t){await i(`POST`,`/api/code/sessions/${e}/model`,{modelId:t})},pickWorkspace(){return i(`POST`,`/api/code/workspace/pick`)}}}var m=c();function h({client:e,activeSessionId:t,workingDir:n,onSelectSession:r,onLoadSession:i,onNewSession:a}){let[o,s]=(0,d.useState)([]),[c,l]=(0,d.useState)([]),[u,f]=(0,d.useState)(!0),[p,h]=(0,d.useState)(``),[g,_]=(0,d.useState)(``),[v,y]=(0,d.useState)(`all`),b=(0,d.useCallback)(async()=>{f(!0),h(``);let t=e=>e instanceof Error?e.message:String(e),r=v===`cwd`?{scope:`cwd`,cwd:n}:{scope:`all`},[i,a]=await Promise.allSettled([e.listSessions(),e.listStoredSessions(r)]),o=[];if(i.status===`fulfilled`){let e=i.value;s(e.filter(e=>e.status!==`closed`));let n=new Set(e.map(e=>e.sessionId));a.status===`fulfilled`?l(a.value.filter(e=>!n.has(e.sessionId))):(l([]),o.push(`History: ${t(a.reason)}`))}else s([]),o.push(`Live: ${t(i.reason)}`),a.status===`fulfilled`?l(a.value):(l([]),o.push(`History: ${t(a.reason)}`));o.length>0&&h(o.join(` · `)),f(!1)},[e,v,n]);(0,d.useEffect)(()=>{b()},[b]);let x=e=>e.split(`/`).pop()||e,S=e=>{let t=e.replayEvents?.find(e=>e.event===`code_user_message_chunk`)?.update??{},n=t.content;return String(n?.text??t.text??``).split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()||``},C=e=>e.title?.trim()||S(e)||x(e.cwd)||e.sessionId.slice(0,12)||`Untitled session`,w=e=>x(e.cwd),ee=e=>[e.sessionId,e.title??``,S(e),e.cwd].join(` `).toLowerCase(),T=e=>e.title?.trim()||e.firstMessage?.replace(/\s+/g,` `).trim()||e.sessionId.slice(0,12)||`Untitled session`,E=e=>{if(typeof e.lastModified==`number`)return e.lastModified;if(e.updatedAt){let t=Date.parse(e.updatedAt);if(Number.isFinite(t))return t}return 0},D=e=>{let t=[x(e.cwd)];return e.messageCount!==void 0&&t.push(`${e.messageCount} messages`),t.filter(Boolean).join(` · `)},O=e=>[e.sessionId,e.title??``,e.firstMessage??``,e.cwd].join(` `).toLowerCase(),k=c.filter(e=>!g||O(e).includes(g.toLowerCase())).sort((e,t)=>E(t)-E(e)).slice(0,20),A=k.reduce((e,t)=>{let n=e.find(e=>e.cwd===t.cwd);return n?n.sessions.push(t):e.push({cwd:t.cwd,sessions:[t]}),e},[]),j=p?`Session data could not fully load.`:v===`cwd`?`No sessions for this cwd. Switch to All to browse global history.`:`No JWC sessions found.`;return(0,m.jsxs)(`div`,{className:`code-session-list`,children:[(0,m.jsxs)(`div`,{className:`code-session-list-header`,children:[(0,m.jsx)(`span`,{className:`code-session-list-title`,children:`Sessions`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-new-btn`,onClick:a,"aria-label":`New code session`,children:`+`})]}),(0,m.jsxs)(`div`,{className:`code-session-view-toggle`,"aria-label":`Session view`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`all`?` active`:``}`,onClick:()=>y(`all`),children:`All`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`cwd`?` active`:``}`,onClick:()=>y(`cwd`),children:`This cwd`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`grouped`?` active`:``}`,onClick:()=>y(`grouped`),children:`Group`})]}),v===`cwd`&&(0,m.jsx)(`div`,{className:`code-session-view-hint`,children:x(n)}),p&&(0,m.jsx)(`div`,{className:`code-session-list-error`,role:`status`,children:p}),o.length+c.length>3&&(0,m.jsx)(`input`,{className:`code-session-search`,type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Search sessions...`}),u?(0,m.jsx)(`div`,{className:`code-session-list-loading`,children:`Loading...`}):(0,m.jsxs)(m.Fragment,{children:[o.length>0&&(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:o.filter(e=>!g||ee(e).includes(g.toLowerCase())).map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item ${e.sessionId===t?`active`:``}`,onClick:()=>r(e),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:C(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:w(e)}),(0,m.jsx)(`span`,{className:`code-session-status code-session-status-${e.status}`,children:e.status})]})},e.sessionId))}),k.length>0&&v!==`grouped`&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{className:`code-session-list-divider`,children:`History`}),(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:k.map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item`,onClick:()=>i(e.sessionId,e.cwd),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:T(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:D(e)}),(0,m.jsx)(`span`,{className:`code-session-status`,children:`stored`})]})},e.sessionId))})]}),k.length>0&&v===`grouped`&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{className:`code-session-list-divider`,children:`History by cwd`}),A.map(e=>(0,m.jsxs)(`section`,{className:`code-session-group`,children:[(0,m.jsxs)(`div`,{className:`code-session-group-title`,title:e.cwd,children:[x(e.cwd),` `,(0,m.jsx)(`span`,{children:e.sessions.length})]}),(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:e.sessions.map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item`,onClick:()=>i(e.sessionId,e.cwd),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:T(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:D(e)}),(0,m.jsx)(`span`,{className:`code-session-status`,children:`stored`})]})},e.sessionId))})]},e.cwd))]}),o.length===0&&k.length===0&&(0,m.jsx)(`div`,{className:`code-session-list-empty`,children:j})]})]})}function g(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r?.role===`tool`&&r.toolCallId===t)return n}return-1}function _(e,t){return e?`${e}/${t}`:t}var v=[`allow_once`,`allow_always`,`reject_once`,`reject_always`],y={allow_once:`Allow once`,allow_always:`Always allow`,reject_once:`Deny once`,reject_always:`Always deny`},b={allow_once:`allow-once`,allow_always:`allow-always`,reject_once:`deny-once`,reject_always:`deny-always`},x=[{value:`always-allow`,label:`Always allow`,detail:`Auto-allow gated tools`,tone:`allow`},{value:`ask`,label:`Ask first`,detail:`Review each gated tool`,tone:`ask`},{value:`always-deny`,label:`Always deny`,detail:`Auto-deny gated tools`,tone:`deny`}],S={ask:`Review each gated tool`,"always-allow":`Auto-allow gated tools`,"always-deny":`Auto-deny gated tools`},C={allow_once:/^(allow[_\s-]?once|allow once)$/i,allow_always:/^(allow[_\s-]?always|always allow|always approve)$/i,reject_once:/^(reject[_\s-]?once|deny[_\s-]?once|reject|deny)$/i,reject_always:/^(reject[_\s-]?always|deny[_\s-]?always|always reject|always deny)$/i};function w(e){return[e.kind,e.optionId,e.id,e.name,e.label].map(e=>String(e??``)).join(` `).trim()}function ee(e){let t=e.optionId??e.id;return t==null||t===``?null:String(t)}function T(e,t){let n=e.name??e.label;return n==null||n===``?y[t]:String(n)}function E(e,t){let n=e.find(e=>e.kind===t),r=e.find(e=>e.optionId===t||e.id===t),i=e.find(e=>C[t].test(w(e))),a=n??r??i;if(!a)return null;let o=ee(a);return o?{kind:t,optionId:o,label:T(a,t),raw:a}:null}function D(e){return String(e.toolName??e.title??e.name??`tool`)}function O(e,t){let n={permissionId:e.permissionId,toolName:D(e.toolCall),...t};return{role:`permission`,text:n.error??n.optionLabel??n.decision,permissionAudit:n}}function k(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function A(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(typeof n==`string`){n&&t.push(n);continue}if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=n,r=typeof e.type==`string`?e.type.toLowerCase():``,i=e.text;(!r||r===`text`)&&typeof i==`string`&&i&&t.push(i)}return t.length>0?t.join(`
|
|
3
|
-
`):null}function j(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=A(t.content);if(n)return n;let r=t.details;if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r.displayContent;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.text;if(typeof t==`string`&&t)return t}}return null}function te(e){return j(e)??k(e)}function M(e){if(typeof e==`string`)return{type:`text`,text:e};if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``,r=typeof t.label==`string`?t.label:void 0;if(n===`diff`&&typeof t.diff==`string`)return{type:`diff`,diff:t.diff,...r?{label:r}:{}};if(n===`error`)return{type:`error`,text:k(t.text??t.error??t.message??t),...r?{label:r}:{}};if(n===`args`||n===`arguments`||n===`input`)return{type:`args`,json:t.json??t.args??t.arguments??t.input??t,...r?{label:r}:{}};if(n===`output`)return{type:`output`,text:te(t.text??t.output??t),...r?{label:r}:{}};if(n===`json`)return{type:`json`,json:t.json??t.value??t,...r?{label:r}:{}};if(typeof t.diff==`string`)return{type:`diff`,diff:t.diff,...r?{label:r}:{}};if(typeof t.text==`string`)return{type:`text`,text:t.text,...r?{label:r}:{}};let i=j(t);return i?{type:`text`,text:i,...r?{label:r}:{}}:{type:`json`,json:t,...r?{label:r}:{}}}function N(e,t,n,r){r==null||r===``||(t===`args`||t===`json`?e.push({type:t,label:n,json:r}):e.push({type:t,label:n,text:t===`output`?te(r):k(r)}))}function P(e){let t=[],n=e.content;if(Array.isArray(n))for(let e of n){let n=M(e);n&&t.push(n)}else{let e=M(n);e&&t.push(e)}return N(t,`args`,`Args`,e.args??e.arguments??e.input??e.rawInput),N(t,`output`,`Output`,e.rawOutput??e.output),N(t,`error`,`Error`,e.error??e.errorMessage??e.reason),t}var F={settings:{category:`settings`,popupKind:`settings`},theme:{category:`settings`,popupKind:`settings`},identity:{category:`settings`,popupKind:`settings`},"identity-auto":{category:`settings`,popupKind:`settings`},model:{category:`model`,popupKind:`model`},provider:{category:`provider`,popupKind:`provider`},login:{category:`provider`,popupKind:`provider`}},I={session:`session`,orchestrate:`workflow`,pabcd:`workflow`,goal:`workflow`,mcp:`utility`,move:`utility`,compact:`utility`,dump:`utility`,help:`utility`};function L(e){return e.trim().replace(/^\/+/,``)}function ne(e,t){let n=typeof e.source==`string`?e.source:``,r=typeof e.path==`string`?e.path:``;return n.includes(`skill`)||t.includes(`:`)?`jwc-skill`:n.includes(`custom`)?`jwc-custom`:n.includes(`file`)||r?`jwc-file`:F[t]||I[t]?`jwc-builtin`:`unknown`}function R(e){let t=e.input;if(!t||typeof t!=`object`)return;let n=t.hint;return typeof n==`string`&&n.trim()?n:void 0}function z(e){if(!e||typeof e!=`object`)return null;let t=e,n=L(String(t.name??``));if(!n)return null;let r=F[n],i=r?.category??I[n]??`unknown`,a=ne(t,n),o=t.supported!==!1&&t.disabled!==!0?r?`popup`:i===`unknown`?`pass-through`:`insert`:`unsupported`,s=typeof t.description==`string`&&t.description.trim()?t.description:void 0,c=R(t),l={name:n,displayName:`/${n}`,category:i,actionType:o,source:a,raw:t};return s&&(l.description=s),c&&(l.inputHint=c),r&&(l.popupKind=r.popupKind),o===`unsupported`&&(l.disabledReason=typeof t.disabledReason==`string`&&t.disabledReason.trim()?t.disabledReason:`Unsupported in Code mode`),l}function re(e){let t=Array.isArray(e)?e:[],n=new Set,r=[];for(let e of t){let t=z(e);!t||n.has(t.name)||(n.add(t.name),r.push(t))}return r}function ie(e){return[e.name,e.displayName,e.description??``,e.inputHint??``,e.category,e.source].join(` `).toLowerCase()}function B(e,t){let n=L(t.split(/\s+/)[0]??``).toLowerCase();if(!n)return e;let r=[],i=[];for(let t of e)t.name.toLowerCase().startsWith(n)?r.push(t):ie(t).includes(n)&&i.push(t);return[...r,...i]}function ae({value:e,disabled:t,onChange:n}){let r=x.find(t=>t.value===e)??x[0];return(0,m.jsxs)(`div`,{className:`code-permission-mode-field`,children:[(0,m.jsxs)(`div`,{className:`code-permission-mode-label`,children:[(0,m.jsx)(`span`,{children:`Permission mode`}),(0,m.jsx)(`strong`,{children:`Default: Always allow`})]}),(0,m.jsx)(`div`,{className:`code-permission-mode-list`,role:`listbox`,"aria-label":`Permission mode`,children:x.map(r=>(0,m.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":r.value===e,disabled:t,className:`code-permission-mode-option is-${r.tone}${r.value===e?` is-selected`:``}`,title:r.detail,onClick:()=>n(r.value),children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:r.label}),(0,m.jsx)(`small`,{children:r.detail})]}),r.value===e&&(0,m.jsx)(`em`,{"aria-hidden":`true`,children:`✓`})]},r.value))}),(0,m.jsx)(`p`,{className:`code-permission-mode-note is-${r?.tone??`ask`}`,children:`Automatic modes answer with JWC persistent options and write a transcript audit row.`})]})}function oe(e){return e===`provider`?`Provider`:e===`model`?`Model`:e===`permission`?`Permissions`:e===`session`?`Session`:`Settings`}function V(e){return e===`jwc-cache`?`JWC cache`:`static fallback`}function H({popupKind:e,command:t,modelOptions:n,provider:r,model:i,modelAssignments:a,modelPresets:o,permissionMode:s,disabled:c,activeSessionId:l,error:u,onClose:f,onRefreshProviders:p,onProviderChange:h,onUseModel:g,onUseForNewSessions:_,onSetDefaultModel:v,onSetModelAssignment:y,onClearModelAssignment:b,onPermissionModeChange:x}){let S=(0,d.useRef)(null),C=(0,d.useRef)(null),w=n.providers.find(e=>e.id===r)??n.providers[0],[ee,T]=(0,d.useState)(``),[E,D]=(0,d.useState)(`models`),[O,k]=(0,d.useState)(r),[A,j]=(0,d.useState)(i),[te,M]=(0,d.useState)({}),N=n.providers.find(e=>e.id===O)??w,P=ee.trim().toLowerCase(),F=(0,d.useMemo)(()=>n.providers.filter(e=>P?e.id.toLowerCase().includes(P)||e.models.some(e=>e.toLowerCase().includes(P)):!0),[n.providers,P]),I=(0,d.useMemo)(()=>{let e=N?.models??[];return P?e.filter(e=>e.toLowerCase().includes(P)):e},[N?.models,P]),L=oe(e),ne=(0,d.useMemo)(()=>{let e=n.providers.length;return`${e} authenticated provider${e===1?``:`s`}`},[n.providers.length]),R=!!(l&&O&&A&&!c),z=!!(O&&A&&!c),re=(0,d.useMemo)(()=>[`inherit`,...N?.efforts??[]].map(e=>e===`min`?`minimal`:e).filter((e,t,n)=>e&&n.indexOf(e)===t).map(e=>({value:e,label:e===`inherit`?`inherit`:e===`minimal`?`min`:e})),[N?.efforts]);return(0,d.useEffect)(()=>{S.current?.focus()},[e,t.name]),(0,d.useEffect)(()=>{let e=document.activeElement;return()=>{e?.focus?.()}},[]),(0,d.useEffect)(()=>{e===`model`&&(T(``),k(r),j(i))},[i,e,r]),(0,d.useEffect)(()=>{if(e!==`model`)return;let t=N?.models??[];t.length>0&&!t.includes(A)&&j(t[0]??``)},[A,N?.models,e]),(0,d.useEffect)(()=>{if(e!==`model`||!a)return;let t={};for(let e of a.roles){let n=e.thinkingLevel===`min`?`minimal`:e.thinkingLevel;t[e.role]=n||`inherit`}M(t)},[a,e]),(0,d.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){e.preventDefault(),f();return}if(e.key===`Tab`&&C.current){let t=C.current.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`),n=t[0],r=t[t.length-1];if(!n||!r)return;let i=document.activeElement;e.shiftKey&&i===n?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[f]),(0,m.jsx)(`div`,{className:`code-popup-backdrop`,role:`presentation`,onMouseDown:e=>{e.target===e.currentTarget&&f()},children:(0,m.jsxs)(`section`,{ref:C,className:`code-popup`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`code-command-popup-title`,children:[(0,m.jsxs)(`header`,{className:`code-popup-header`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`p`,{className:`code-popup-command`,children:t.displayName}),(0,m.jsx)(`h2`,{id:`code-command-popup-title`,children:L})]}),(0,m.jsx)(`button`,{ref:S,type:`button`,className:`code-popup-close`,onClick:f,"aria-label":`Close popup`,children:`x`})]}),e===`provider`&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[(0,m.jsxs)(`div`,{className:`code-popup-section-head`,children:[(0,m.jsx)(`span`,{children:ne}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:c,onClick:p,children:`Refresh`})]}),n.degraded&&(0,m.jsx)(`p`,{className:`code-popup-warning`,children:n.error??`Provider discovery is degraded.`}),u&&(0,m.jsx)(`p`,{className:`code-popup-error`,children:u}),(0,m.jsx)(`div`,{className:`code-provider-list`,role:`list`,children:n.providers.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-provider-row${e.id===r?` is-selected`:``}`,onClick:()=>h(e.id),disabled:c,children:[(0,m.jsx)(`span`,{className:`code-provider-name`,children:e.id}),(0,m.jsxs)(`span`,{className:`code-provider-meta`,children:[e.models.length,` models · `,V(e.modelSource)]})]},e.id))}),(0,m.jsxs)(`div`,{className:`code-popup-placeholder-actions`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Add provider`}),(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Login`}),(0,m.jsx)(`span`,{children:`Provider add/login execution is next slice.`})]})]}),(e===`settings`||e===`permission`)&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[(0,m.jsx)(ae,{value:s,disabled:!!c,onChange:x}),e===`settings`&&(0,m.jsxs)(`div`,{className:`code-popup-summary`,children:[(0,m.jsx)(`span`,{children:`Provider`}),(0,m.jsx)(`strong`,{children:r||`-`}),(0,m.jsx)(`span`,{children:`Model`}),(0,m.jsx)(`strong`,{children:i||`-`})]})]}),e===`model`&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[u&&(0,m.jsx)(`p`,{className:`code-popup-error`,children:u}),(0,m.jsx)(`div`,{className:`code-model-tablist`,role:`tablist`,"aria-label":`Model settings tabs`,children:[`models`,`roles`,`profiles`].map(e=>(0,m.jsx)(`button`,{type:`button`,role:`tab`,id:`code-model-tab-${e}`,"aria-selected":E===e,"aria-controls":`code-model-panel-${e}`,tabIndex:E===e?0:-1,className:`code-model-tab${E===e?` is-active`:``}`,onClick:()=>D(e),onKeyDown:e=>{if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`)return;e.preventDefault();let t=[`models`,`roles`,`profiles`],n=e.key===`ArrowRight`?1:t.length-1;D(t[(t.indexOf(E)+n)%t.length]??`models`)},children:e===`models`?`Models`:e===`roles`?`Roles`:`Profiles`},e))}),E===`models`&&(0,m.jsxs)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-models`,"aria-labelledby":`code-model-tab-models`,children:[(0,m.jsxs)(`label`,{className:`code-popup-field`,children:[(0,m.jsx)(`span`,{children:`Search models`}),(0,m.jsx)(`input`,{type:`search`,className:`code-model-search`,placeholder:`Search provider or model`,value:ee,onChange:e=>T(e.target.value),disabled:c})]}),n.usageOrder&&n.usageOrder.length>0&&(0,m.jsxs)(`div`,{className:`code-model-mru-strip`,"aria-label":`Recently used models`,children:[(0,m.jsx)(`span`,{children:`Recently used`}),n.usageOrder.slice(0,3).map(e=>(0,m.jsx)(`strong`,{children:e},e))]}),(0,m.jsxs)(`div`,{className:`code-model-layout`,children:[(0,m.jsx)(`div`,{className:`code-model-providers`,role:`list`,"aria-label":`Providers`,children:F.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-model-provider${e.id===O?` is-selected`:``}`,onClick:()=>{k(e.id),j(e.models[0]??``)},disabled:c,children:[(0,m.jsx)(`span`,{children:e.id}),(0,m.jsx)(`small`,{children:e.models.length})]},e.id))}),(0,m.jsxs)(`div`,{className:`code-model-list`,role:`list`,"aria-label":`Models`,children:[(0,m.jsxs)(`div`,{className:`code-model-list-head`,children:[(0,m.jsx)(`strong`,{children:N?.id??`No provider`}),(0,m.jsxs)(`span`,{children:[I.length,` models · `,V(N?.modelSource)]})]}),I.length===0?(0,m.jsx)(`p`,{className:`code-popup-note`,children:`No models match this search.`}):I.map(e=>{let t=O===r&&e===i,n=e===A;return(0,m.jsxs)(`button`,{type:`button`,className:`code-model-row${t?` is-active`:``}${n?` is-draft`:``}`,onClick:()=>j(e),disabled:c,children:[(0,m.jsx)(`span`,{children:e}),(0,m.jsx)(`small`,{children:t?`Active`:n?`Selected`:`Available`})]},e)})]})]}),(0,m.jsxs)(`div`,{className:`code-popup-action-row`,children:[(0,m.jsxs)(`div`,{className:`code-popup-summary code-popup-summary-compact`,children:[(0,m.jsx)(`span`,{children:`Active`}),(0,m.jsxs)(`strong`,{children:[r||`-`,` / `,i||`-`]}),(0,m.jsx)(`span`,{children:`Selected`}),(0,m.jsxs)(`strong`,{children:[O||`-`,` / `,A||`-`]}),(0,m.jsx)(`span`,{children:`Default`}),(0,m.jsxs)(`strong`,{children:[n.defaultProvider||`-`,` / `,n.defaultModel||`-`]})]}),(0,m.jsxs)(`div`,{className:`code-popup-action-stack`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-popup-primary`,disabled:!R,onClick:()=>{g(O,A)},children:`Use now`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!z,onClick:()=>{_(O,A)},children:`Use for new sessions`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!z,onClick:()=>{v(O,A)},children:`Set default`})]})]}),!l&&(0,m.jsx)(`p`,{className:`code-popup-note`,children:`Start or load a Code session to apply a live model. Use “Use for new sessions” to set the next session’s model.`})]}),E===`roles`&&(0,m.jsx)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-roles`,"aria-labelledby":`code-model-tab-roles`,children:(0,m.jsxs)(`div`,{className:`code-role-assignment-panel`,"aria-label":`Model role assignments`,children:[(0,m.jsxs)(`div`,{className:`code-role-assignment-head`,children:[(0,m.jsx)(`strong`,{children:`Role assignments`}),(0,m.jsx)(`span`,{children:a?.activeModel.note??`Role assignments do not mutate the active Code session model.`})]}),(0,m.jsx)(`div`,{className:`code-role-assignment-grid`,role:`list`,children:(a?.roles??[]).map(e=>{let t=e.modelId?e.modelId:`Unset`,n=te[e.role]??(e.thinkingLevel===`min`?`minimal`:e.thinkingLevel)??`inherit`,r=!!(O&&A&&!c),i=!!(e.modelId&&!c);return(0,m.jsxs)(`article`,{className:`code-role-card`,role:`listitem`,children:[(0,m.jsxs)(`div`,{className:`code-role-card-head`,children:[(0,m.jsx)(`span`,{className:`code-role-tag`,children:e.tag}),(0,m.jsx)(`strong`,{children:e.name})]}),(0,m.jsx)(`p`,{className:`code-role-path`,children:e.settingsPath}),(0,m.jsx)(`p`,{className:`code-role-model`,title:t,children:t}),(0,m.jsxs)(`label`,{className:`code-role-thinking`,children:[(0,m.jsx)(`span`,{children:`Thinking`}),(0,m.jsx)(`select`,{value:n,disabled:c,onChange:t=>{let n=t.target.value;M(t=>({...t,[e.role]:n}))},children:re.map(e=>(0,m.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,m.jsxs)(`div`,{className:`code-role-actions`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!r,onClick:()=>{y(e.role,O,A,n===`inherit`?null:n)},children:`Assign selected`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!i,onClick:()=>{b(e.role)},children:`Clear`})]})]},e.role)})}),!a&&(0,m.jsx)(`p`,{className:`code-popup-note`,children:`Loading role assignments.`})]})}),E===`profiles`&&(0,m.jsx)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-profiles`,"aria-labelledby":`code-model-tab-profiles`,children:(0,m.jsxs)(`div`,{className:`code-model-preset-panel`,"aria-label":`Model profiles and presets`,children:[(0,m.jsxs)(`div`,{className:`code-role-assignment-head`,children:[(0,m.jsx)(`strong`,{children:`Profiles and presets`}),(0,m.jsx)(`span`,{children:o?.applyReason??`Loading JWC profile state.`})]}),(0,m.jsxs)(`div`,{className:`code-model-preset-summary`,children:[(0,m.jsx)(`span`,{children:`Startup profile`}),(0,m.jsx)(`strong`,{children:o?.defaultProfile??`Unset`}),(0,m.jsx)(`span`,{children:`Task presets`}),(0,m.jsx)(`strong`,{children:o?o.taskPresets.length:`-`}),(0,m.jsx)(`span`,{children:`Built-in profiles`}),(0,m.jsx)(`strong`,{children:o?o.builtinProfiles.length:`-`})]}),o&&o.taskPresets.length>0&&(0,m.jsx)(`div`,{className:`code-model-preset-list`,role:`list`,"aria-label":`Task model presets`,children:o.taskPresets.slice(0,4).map(e=>(0,m.jsxs)(`div`,{className:`code-model-preset-row`,role:`listitem`,children:[(0,m.jsx)(`strong`,{children:e.name}),(0,m.jsx)(`span`,{children:e.best?`best ${e.best}`:`best unset`}),(0,m.jsx)(`span`,{children:e.cheap?`cheap ${e.cheap}`:`cheap unset`})]},e.name))}),o&&(0,m.jsx)(`div`,{className:`code-model-profile-chips`,"aria-label":`Built-in profile candidates`,children:o.builtinProfiles.slice(0,8).map(e=>(0,m.jsx)(`span`,{children:e.name},e.name))}),(0,m.jsxs)(`div`,{className:`code-popup-placeholder-actions`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Apply profile`}),(0,m.jsx)(`span`,{children:`Profile activation is read-only here; JWC runtime owns credential checks and rollback.`})]})]})})]})]})})}function se(e,t,n){return n<=0?0:(e+t+n)%n}function U(e){return e.disabledReason?`Disabled`:e.actionType===`popup`?e.popupKind?`${e.popupKind} popup`:`Popup`:e.actionType===`pass-through`?`Pass-through`:e.actionType===`unsupported`?`Unsupported`:`Insert`}function ce(e){let[t,n]=(0,d.useState)(0),r=(0,d.useMemo)(()=>B(e.availableCommands,e.inputText).slice(0,10),[e.availableCommands,e.inputText]),i=r[t],a=i?`code-command-option-${i.name.replace(/[^a-z0-9_-]/gi,`-`)}`:void 0;(0,d.useEffect)(()=>{n(0)},[e.inputText,e.availableCommands]),(0,d.useEffect)(()=>{t>=r.length&&n(Math.max(0,r.length-1))},[t,r.length]);let o=t=>{!t||t.disabledReason||e.onCommandSelect(t)};return(0,m.jsxs)(`div`,{className:`code-composer`,children:[e.showCommands&&r.length>0&&(0,m.jsx)(`div`,{className:`code-command-palette`,role:`listbox`,"aria-label":`Code commands`,id:`code-command-palette`,children:r.map((e,r)=>{let i=r===t;return(0,m.jsxs)(`button`,{id:`code-command-option-${e.name.replace(/[^a-z0-9_-]/gi,`-`)}`,type:`button`,role:`option`,"aria-selected":i,"aria-disabled":e.disabledReason?!0:void 0,className:`code-command-item${i?` is-active`:``}${e.disabledReason?` is-disabled`:``}`,onMouseEnter:()=>n(r),onClick:()=>o(e),children:[(0,m.jsxs)(`span`,{className:`code-command-row-main`,children:[(0,m.jsx)(`span`,{className:`code-command-name`,children:e.displayName}),e.description&&(0,m.jsx)(`span`,{className:`code-command-desc`,children:e.description})]}),(0,m.jsxs)(`span`,{className:`code-command-row-meta`,children:[(0,m.jsx)(`span`,{className:`code-command-chip`,children:e.category}),(0,m.jsx)(`span`,{className:`code-command-chip`,children:e.source}),(0,m.jsx)(`span`,{className:`code-command-chip`,children:U(e)})]})]},e.name)})}),(0,m.jsxs)(`div`,{className:`code-composer-input-shell`,children:[(0,m.jsx)(`textarea`,{className:`code-composer-input`,value:e.inputText,onChange:t=>e.onInputChange(t.target.value),onKeyDown:t=>{if(t.key===`Escape`&&e.showCommands){t.preventDefault(),e.onShowCommandsChange(!1);return}if(e.showCommands&&r.length>0){if(t.key===`ArrowDown`){t.preventDefault(),n(e=>se(e,1,r.length));return}if(t.key===`ArrowUp`){t.preventDefault(),n(e=>se(e,-1,r.length));return}if(t.key===`Enter`&&!t.shiftKey){t.preventDefault(),o(i);return}}t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),e.onSubmit())},"aria-controls":e.showCommands?`code-command-palette`:void 0,"aria-activedescendant":e.showCommands?a:void 0,"aria-expanded":e.showCommands,placeholder:`Describe a task or ask a question...`,rows:1,disabled:e.sending}),(0,m.jsx)(`span`,{className:`code-composer-hint`,children:`Enter to send · / for commands`})]}),(0,m.jsx)(`button`,{type:`button`,className:`code-composer-send`,onClick:e.onSubmit,disabled:!e.inputText.trim()||e.sending,"aria-label":`Send prompt`,children:`Send`})]})}function le({permissions:e,onAnswer:t}){return e.length===0?null:(0,m.jsx)(`div`,{className:`code-permissions`,children:e.map(e=>(0,m.jsxs)(`div`,{className:`code-permission-card`,children:[(0,m.jsxs)(`div`,{className:`code-permission-title`,children:[(0,m.jsx)(`span`,{children:`Permission request`}),(0,m.jsx)(`strong`,{children:D(e.toolCall)}),(0,m.jsxs)(`small`,{children:[e.options.length,` JWC options`]})]}),(0,m.jsx)(`div`,{className:`code-permission-actions`,children:v.map(n=>{let r=E(e.options,n),i=b[n];return(0,m.jsx)(`button`,{type:`button`,className:`code-permission-btn is-${i}`,disabled:!r,title:r?r.optionId:`${y[n]} option was not provided by JWC`,onClick:()=>t(e,n),children:r?.label??y[n]},n)})})]},e.permissionId))})}var W=92,ue=6;function de(e){let[{virtualItems:t,totalSize:s},c]=(0,d.useState)({virtualItems:[],totalSize:0}),l=(0,d.useRef)(null);l.current||=new o({count:e.count,getScrollElement:()=>e.scrollElementRef.current,estimateSize:e.estimateSize||(()=>W),overscan:ue,getItemKey:e.getItemKey,indexAttribute:`data-code-transcript-idx`,useAnimationFrameWithResizeObserver:!0,observeElementRect:n,observeElementOffset:r,scrollToFn:i,measureElement:a,onChange:e=>{c({virtualItems:e.getVirtualItems(),totalSize:e.getTotalSize()})}});let u=l.current;return(0,d.useEffect)(()=>u._didMount(),[u]),(0,d.useLayoutEffect)(()=>{u.setOptions({...u.options,count:e.count,getItemKey:e.getItemKey,estimateSize:e.estimateSize||(()=>W)}),u._willUpdate(),c({virtualItems:u.getVirtualItems(),totalSize:u.getTotalSize()})},[e.count,e.estimateSize,e.getItemKey,u]),{measureElement:e=>{e&&u.measureElement(e)},virtualItems:t,totalSize:s}}var fe=(0,d.lazy)(()=>t(()=>import(`./MarkdownRenderer-BivJ4hJm.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0])));function pe(e,t){let n=e.label??(e.type===`args`?`Args`:e.type===`output`?`Output`:e.type===`error`?`Error`:``),r=`code-tool-${e.type}`,i=e.type===`diff`&&e.diff?e.diff:e.type===`json`||e.type===`args`?JSON.stringify(e.json??e,null,2):e.text??JSON.stringify(e,null,2);return n?(0,m.jsxs)(`div`,{className:`code-tool-section`,children:[(0,m.jsx)(`span`,{className:`code-tool-section-label`,children:n}),(0,m.jsx)(`pre`,{className:r,children:i})]},t):e.type===`diff`&&e.diff?(0,m.jsx)(`pre`,{className:`code-tool-diff`,children:e.diff},t):e.text?(0,m.jsx)(`pre`,{className:`code-tool-text`,children:e.text},t):(0,m.jsx)(`pre`,{className:r,children:i},t)}function me(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.isContentEditable}function G(e){return(e.toolContent?.find(e=>typeof e.text==`string`&&e.text.trim())?.text??e.toolOutput??``).replace(/\s+/g,` `).trim().slice(0,240)}function he(e){return e.split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()??``}function ge(e){let t=e.toolContent?.find(e=>e.type===`args`||e.type===`text`||e.type===`json`);if(!t)return null;if(typeof t.text==`string`){let e=he(t.text);return e?{text:e,...t.type===`args`?{name:`bash`}:/^https?:\/\//.test(e)||e.startsWith(`/`)?{name:`read`}:{}}:null}if(typeof t.json==`string`){let e=he(t.json);return e?{text:e,...t.type===`args`?{name:`bash`}:{}}:null}if(t.json&&typeof t.json==`object`&&!Array.isArray(t.json)){let e=t.json;for(let[t,n]of[[`command`,`bash`],[`cmd`,`bash`],[`path`,`read`],[`url`,`read`],[`file`,`read`],[`query`,`search`]]){let r=e[t];if(typeof r==`string`&&r.trim())return{name:n,text:he(r)}}}return null}function _e(e){let t=he(e.toolName||e.text||`tool`)||`tool`,n=ge(e);return t.includes(`:`)||!n?t:t===`tool`?n.name?`${n.name}: ${n.text}`:n.text:`${t}: ${n.text}`}function ve(e){return e===`pending`?`Pending`:e===`allow_once`?`Allow once`:e===`allow_always`?`Always allow`:e===`reject_once`?`Deny once`:e===`reject_always`?`Always deny`:e===`missing_option`?`Missing JWC option`:e===`answer_error`?`Answer failed`:`Cancelled`}function K(e,t){return`${t}:${e.toolCallId||e.permissionAudit?.permissionId||`${e.role}:${e.text.slice(0,48)}`}`}function ye(e){return e?e.role===`tool`?e.toolStatus===`running`?44:64+Math.min(320,(e.toolOutput?.length??0)/5):e.role===`permission`?72:e.role===`thinking`?48+Math.min(180,e.text.length/8):56+Math.min(420,e.text.length/6):48}function q(e,t,n){return(0,m.jsx)(`div`,{className:`code-message code-message-${e.role}`,children:e.role===`tool`?(()=>{let t=e.toolStatus??`done`,n=t===`failed`||t===`error`,r=n?G(e):``;return(0,m.jsxs)(`details`,{className:`code-tool-card code-tool-${t}`,open:t===`running`||n,children:[(0,m.jsxs)(`summary`,{className:`code-tool-summary`,children:[(0,m.jsx)(`span`,{className:`code-tool-chevron`,children:`>`}),(0,m.jsx)(`span`,{className:`code-tool-name`,children:_e(e)}),(0,m.jsx)(`span`,{className:`code-tool-status`,children:t})]}),r&&(0,m.jsx)(`div`,{className:`code-tool-error-snippet`,children:r}),(e.toolContent?.length??0)>0&&(0,m.jsx)(`div`,{className:`code-tool-content`,children:e.toolContent.map(pe)}),e.toolOutput&&(0,m.jsxs)(`pre`,{className:`code-tool-output`,children:[e.toolOutput.slice(0,2e3),e.toolOutput.length>2e3?`...`:``]})]})})():e.role===`permission`&&e.permissionAudit?(()=>{let t=e.permissionAudit,n=t.decision.startsWith(`allow`)?`is-allow`:t.decision.startsWith(`reject`)?`is-deny`:``;return(0,m.jsxs)(`div`,{className:`code-permission-audit is-${t.decision} ${n}`.trim(),children:[(0,m.jsxs)(`div`,{className:`code-permission-audit-head`,children:[(0,m.jsx)(`span`,{children:`Permission`}),(0,m.jsx)(`strong`,{children:t.toolName}),(0,m.jsx)(`em`,{children:ve(t.decision)})]}),(0,m.jsxs)(`div`,{className:`code-permission-audit-meta`,children:[(0,m.jsxs)(`span`,{children:[`mode `,t.mode]}),(0,m.jsx)(`span`,{children:t.decisionMode}),t.optionId&&(0,m.jsx)(`span`,{children:t.optionId})]}),t.error&&(0,m.jsx)(`div`,{className:`code-permission-audit-error`,children:t.error})]})})():e.role===`thinking`?(0,m.jsxs)(`details`,{className:`code-thinking`,children:[(0,m.jsx)(`summary`,{className:`code-thinking-summary`,children:`Thinking...`}),(0,m.jsx)(`div`,{className:`code-thinking-text`,children:e.text})]}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`span`,{className:`code-message-role`,children:e.role===`user`?`You`:`JWC`}),(0,m.jsx)(`div`,{className:`code-message-text`,children:e.role===`assistant`?(0,m.jsx)(d.Suspense,{fallback:(0,m.jsx)(`span`,{children:e.text}),children:(0,m.jsx)(fe,{markdown:e.text,tableMode:`linear`,onLocalFileOpen:n})}):e.text})]})},t)}function J(){return(0,m.jsxs)(`div`,{className:`code-message code-message-assistant`,children:[(0,m.jsx)(`span`,{className:`code-message-role`,children:`JWC`}),(0,m.jsx)(`div`,{className:`code-message-text code-streaming`,children:`Thinking...`})]})}function Y({messages:e,sending:t,workingDir:n,transcriptRef:r,onOpenLocalFile:i}){let a=t&&e[e.length-1]?.role!==`assistant`,o=de({count:e.length+ +!!a,scrollElementRef:r,getItemKey:(0,d.useCallback)(t=>{let n=e[t];return n?K(n,t):`sending-${t}`},[e]),estimateSize:(0,d.useCallback)(t=>ye(e[t]),[e])});function s(e){if(me(e.target))return;let t=r.current;if(!t)return;let n=e.key.toLowerCase(),i=Math.max(160,Math.floor(t.clientHeight*.78));n===`d`||n===`j`||e.key===`PageDown`?(e.preventDefault(),t.scrollBy({top:i,behavior:`smooth`})):n===`u`||n===`k`||e.key===`PageUp`?(e.preventDefault(),t.scrollBy({top:-i,behavior:`smooth`})):e.key===`End`?(e.preventDefault(),t.scrollTo({top:t.scrollHeight,behavior:`smooth`})):e.key===`Home`&&(e.preventDefault(),t.scrollTo({top:0,behavior:`smooth`}))}return(0,m.jsx)(`div`,{className:`code-transcript`,ref:r,role:`log`,"aria-live":`polite`,tabIndex:0,onKeyDown:s,children:e.length===0?(0,m.jsxs)(`div`,{className:`code-transcript-empty`,children:[(0,m.jsx)(`p`,{children:`Start a Code session by typing a prompt below.`}),(0,m.jsxs)(`p`,{className:`code-transcript-cwd`,children:[`cwd: `,n||`not set`]})]}):(0,m.jsx)(`div`,{className:`code-transcript-virtual-spacer`,style:{height:`${o.totalSize}px`},children:o.virtualItems.map(t=>{let n=e[t.index];return(0,m.jsx)(`div`,{ref:o.measureElement,className:`code-transcript-virtual-row`,"data-code-transcript-idx":t.index,style:{transform:`translateY(${t.start}px)`},children:n?q(n,t.index,i):J()},t.key)})})})}function X(e){return e.split(`/`).filter(Boolean).slice(-2).join(`/`)||e}function be({workingDir:e,gitInfo:t,modelOptions:n,sessionTitle:r,usage:i,planEntries:a,onWorkingDirChange:o,cwdLocked:s=!1,workspaceFrozen:c=!1,onPickWorkingDir:l}){let[u,f]=(0,d.useState)(!1),[p,h]=(0,d.useState)(``),g=t?.status?.dirty,_=t?.worktrees.length??0,v=c||s,y=!!(!v&&l&&o);async function b(){if(!(!y||!l)){f(!0),h(``);try{let e=await l();e&&o?.(e)}catch(e){h(e instanceof Error?e.message:String(e))}finally{f(!1)}}}return(0,m.jsxs)(`div`,{className:`code-workspace-header`,children:[(0,m.jsxs)(`div`,{className:`code-workspace-primary`,children:[v?(0,m.jsx)(`span`,{className:`code-workspace-chip`,title:e,"aria-label":`Current Code workspace: ${e}`,children:X(e||`/tmp`)}):(0,m.jsxs)(`button`,{type:`button`,className:`code-workspace-picker`,disabled:!y||u,title:e||`Select Code workspace folder`,"aria-label":`Code workspace: ${e||`not set`}. Choose a folder.`,onClick:()=>void b(),children:[(0,m.jsx)(`span`,{className:`code-workspace-picker-label`,children:X(e||`/tmp`)}),(0,m.jsx)(`span`,{className:`code-workspace-picker-caret`,"aria-hidden":`true`,children:`▾`})]}),!v&&p&&(0,m.jsx)(`span`,{className:`code-workspace-cwd-error`,children:p}),t?.isRepo&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`span`,{className:`code-workspace-pill`,children:[t.branch??`detached`,t.head?` · ${t.head}`:``]}),(0,m.jsx)(`span`,{className:`code-workspace-pill ${g?`is-dirty`:``}`,children:g?`${t.status?.changed??0} changed · ${t.status?.untracked??0} untracked`:`clean`}),(0,m.jsxs)(`span`,{className:`code-workspace-pill`,title:t.currentWorktree?.path??void 0,children:[`worktree `,_]})]}),n?.degraded&&(0,m.jsx)(`span`,{className:`code-workspace-pill is-warning`,title:n.error,children:`provider fallback`})]}),(r||i.contextTokens!==void 0||a.length>0)&&(0,m.jsxs)(`div`,{className:`code-session-header`,children:[r&&(0,m.jsx)(`span`,{className:`code-session-title`,children:r}),i.contextTokens!==void 0&&i.contextLimit?(0,m.jsx)(`span`,{className:`code-context-meter`,title:`${i.contextTokens.toLocaleString()} / ${i.contextLimit.toLocaleString()} tokens${i.cost===void 0?``:` · $${i.cost.toFixed(4)}`}`,children:(0,m.jsx)(`span`,{className:`code-context-bar`,style:{width:`${Math.min(100,i.contextTokens/i.contextLimit*100)}%`}})}):null,a.length>0&&(0,m.jsx)(`div`,{className:`code-plan-entries`,children:a.map((e,t)=>(0,m.jsxs)(`span`,{className:`code-plan-entry code-plan-${e.status}`,children:[e.status===`completed`?`✓`:e.status===`in_progress`?`↻`:`○`,` `,e.title]},t))})]})]})}function xe({label:e,value:t,options:n,disabled:r,title:i,className:a=``,onChange:o}){let s=(0,d.useId)(),c=(0,d.useRef)(null),[l,u]=(0,d.useState)(!1),f=n.find(e=>e.value===t)??n[0],p=Math.max(0,n.findIndex(e=>e.value===f?.value));(0,d.useEffect)(()=>{if(!l)return;let e=e=>{c.current?.contains(e.target)||u(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[l]);let h=e=>{o(e),u(!1)};return(0,m.jsxs)(`div`,{ref:c,className:`code-footer-menu ${a}`.trim(),children:[(0,m.jsxs)(`button`,{type:`button`,className:`code-footer-menu-trigger`,disabled:r,title:i,"aria-label":e,"aria-haspopup":`listbox`,"aria-expanded":l,"aria-controls":s,onClick:()=>u(e=>!e),onKeyDown:e=>{if(!r){if(e.key===`Escape`){u(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=n[(p+(e.key===`ArrowDown`?1:-1)+n.length)%n.length];t&&h(t.value);return}(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),u(e=>!e))}},children:[(0,m.jsx)(`span`,{className:`code-footer-label`,children:e}),(0,m.jsx)(`strong`,{children:f?.label??t}),(0,m.jsx)(`span`,{className:`code-footer-chevron`,"aria-hidden":`true`,children:`⌃`})]}),l&&(0,m.jsx)(`div`,{id:s,className:`code-footer-dropup`,role:`listbox`,"aria-label":e,children:n.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-footer-dropup-option${e.value===t?` is-selected`:``}`,role:`option`,"aria-selected":e.value===t,onClick:()=>h(e.value),children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:e.label}),e.detail&&(0,m.jsx)(`small`,{children:e.detail})]}),e.value===t&&(0,m.jsx)(`em`,{"aria-hidden":`true`,children:`✓`})]},e.value))})]})}function Se({provider:e,providerOptions:t,model:n,modelOptions:r,effort:i,effortOptions:a,permissionMode:o,disabled:s,onProviderChange:c,onModelChange:l,onEffortChange:u,onPermissionModeChange:d}){return(0,m.jsxs)(`div`,{className:`code-composer-footer`,children:[(0,m.jsx)(xe,{label:`Permission`,value:o,options:x,disabled:s,title:S[o],onChange:d}),t.length>0&&(0,m.jsx)(xe,{label:`Provider`,value:e,options:t.map(e=>({value:e,label:e})),disabled:s,title:e,onChange:c}),(0,m.jsx)(xe,{label:`Model`,value:n,options:r.map(e=>({value:e,label:e})),disabled:s,title:n,className:`code-footer-field-model`,onChange:l}),a.length>0&&(0,m.jsx)(xe,{label:`Effort`,value:i,options:a.map(e=>({value:e,label:e})),disabled:s,title:i,onChange:u})]})}function Ce(e){return(0,m.jsxs)(`div`,{className:`code-canvas-main`,children:[(0,m.jsx)(be,{gitInfo:e.gitInfo,modelOptions:e.modelOptions,sessionTitle:e.sessionTitle,usage:e.usage,planEntries:e.planEntries,workingDir:e.codeWorkingDir,cwdLocked:!!e.activeSessionId,onWorkingDirChange:e.onWorkingDirChange,workspaceFrozen:e.workspaceFrozen,onPickWorkingDir:e.onPickWorkingDir}),e.childRecovery&&(0,m.jsxs)(`section`,{className:`code-child-recovery`,role:`status`,"aria-live":`polite`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`span`,{children:`JWC child recovery`}),(0,m.jsxs)(`strong`,{children:[`ACP child exited: `,e.childRecovery.code]})]}),(0,m.jsx)(`p`,{children:e.childRecovery.message})]}),e.transportState!==`connected`&&(0,m.jsx)(`section`,{className:`code-transport-status is-${e.transportState}`,role:`status`,"aria-live":`polite`,children:e.transportState===`reconnecting`?`Live updates reconnecting…`:`Live updates disconnected — retrying.`}),(0,m.jsx)(Y,{messages:e.messages,sending:e.sending,workingDir:e.codeWorkingDir,transcriptRef:e.transcriptRef,onOpenLocalFile:e.onOpenLocalFile}),(0,m.jsx)(le,{permissions:e.permissions,onAnswer:e.onPermissionAnswer}),(0,m.jsx)(`div`,{className:`code-composer-dock`,children:(0,m.jsxs)(`div`,{className:`code-composer-surface`,"aria-label":`Code composer controls`,children:[(0,m.jsx)(ce,{inputText:e.inputText,sending:e.sending,showCommands:e.showCommands,availableCommands:e.availableCommands,onInputChange:e.onInputChange,onCommandSelect:e.onCommandSelect,onSubmit:e.onSubmit,onShowCommandsChange:e.onShowCommandsChange}),(0,m.jsx)(Se,{provider:e.provider,providerOptions:e.providerOptions,model:e.model,modelOptions:e.currentModelOptions,effort:e.effort,effortOptions:e.currentEffortOptions,permissionMode:e.permissionMode,disabled:e.disabled,onProviderChange:e.onFooterProviderChange,onModelChange:e.onModelChange,onEffortChange:e.onEffortChange,onPermissionModeChange:e.onPermissionModeChange})]})}),e.activePopup&&(0,m.jsx)(H,{popupKind:e.activePopup.kind,command:e.activePopup.command,modelOptions:e.modelOptions,provider:e.provider,model:e.model,modelAssignments:e.modelAssignments,modelPresets:e.modelPresets,permissionMode:e.permissionMode,disabled:e.disabled,activeSessionId:e.activeSessionId,error:e.error,onClose:e.onClosePopup,onRefreshProviders:e.onRefreshProviders,onProviderChange:e.onProviderChange,onUseModel:e.onUseModel,onUseForNewSessions:e.onUseForNewSessions,onSetDefaultModel:e.onSetDefaultModel,onSetModelAssignment:e.onSetModelAssignment,onClearModelAssignment:e.onClearModelAssignment,onPermissionModeChange:e.onPermissionModeChange})]})}var we={providers:[{id:`anthropic`,models:[`claude-sonnet-4-6`,`claude-opus-4-8`,`claude-opus-4-7`,`claude-opus-4-6`,`claude-haiku-4-5`,`claude-fable-5`],efforts:[`off`,`min`,`low`,`medium`,`high`,`xhigh`]}],defaultProvider:`anthropic`,defaultModel:`claude-sonnet-4-6`,degraded:!0},Te=re([{name:`/model`,description:`Choose provider, model, roles, thinking, profiles, and MRU state.`,source:`cli-jaw`},{name:`/provider`,description:`Review authenticated JWC providers.`,source:`cli-jaw`},{name:`/settings`,description:`Adjust Code mode session controls.`,source:`cli-jaw`}]);function Ee(e){let t=new Set,n=[];for(let r of[...e,...Te])t.has(r.name)||(t.add(r.name),n.push(r));return n}function De(e,t,n,r){if(r.appendMessage(O(n,{mode:t,decision:`pending`,decisionMode:t===`ask`?`pending`:`automatic`})),t===`ask`){r.enqueuePermission(n);return}let i=t===`always-allow`?`allow_always`:`reject_always`,a=E(n.options,i);if(!a){r.appendMessage(O(n,{mode:t,decision:`missing_option`,decisionMode:`system`,error:`${i} was not provided by JWC for this request.`})),r.enqueuePermission(n);return}(async()=>{try{await e.answerPermission(n.permissionId,a.optionId),r.appendMessage(O(n,{mode:t,decision:i,decisionMode:`automatic`,optionId:a.optionId,optionLabel:a.label}))}catch(e){r.appendMessage(O(n,{mode:t,decision:`answer_error`,decisionMode:`system`,optionId:a.optionId,optionLabel:a.label,error:e instanceof Error?e.message:String(e)}))}})()}async function Oe(e,t,n,r,i){let a=E(n.options,r);if(!a)return i(O(n,{mode:t,decision:`missing_option`,decisionMode:`system`,error:`${r} was not provided by JWC for this request.`})),!1;try{await e.answerPermission(n.permissionId,a.optionId),i(O(n,{mode:t,decision:r,decisionMode:`manual`,optionId:a.optionId,optionLabel:a.label}))}catch(e){i(O(n,{mode:t,decision:`answer_error`,decisionMode:`system`,optionId:a.optionId,optionLabel:a.label,error:e instanceof Error?e.message:String(e)}))}return!0}var ke=new Set([`code_user_message_chunk`,`code_agent_message_chunk`,`code_agent_thought_chunk`]);function Ae(e){let t=e?.content;return String(t?.text??e?.text??``)}function Z(e){let t=e?.messageId;return typeof t==`string`?t.trim():``}function je(e,t){if(!ke.has(e.event)||!t)return null;let n=Z(e.update??{}),r=typeof e.sseEventId==`string`&&e.sseEventId.trim()?e.sseEventId.trim():``,i=n?`msg:${n}`:r?`sse:${r}`:``;return i?`${e.sessionId??``}:${e.event}:${i}:${t}`:null}function Me(e,t){for(let n of t){let t=je(n,Ae(n.update));t&&e.add(t)}}function Ne(e,t,n){let r=je(t,n);return r?e.has(r)?!0:(e.add(r),!1):!1}function Pe(e,t){let n=e.trim(),r=t.trim();return r.length<80?!1:n===r}var Q=80,Fe=.7,Ie=.78,Le=32,Re=8;function ze(e){return e.replace(/\s+/g,` `).trim()}function Be(e){return e.split(/\r?\n/).map(e=>e.replace(/\s+/g,` `).trim()).filter(e=>e.length>=4)}function $(e,t){if(e.length===0)return 0;let n=0;for(let r of e)t.has(r)&&(n+=1);return n/e.length}function Ve(e){let t=ze(e);if(t.length<Le)return[];let n=[];for(let e=0;e<=t.length-Le;e+=Re)n.push(t.slice(e,e+Le));return n}function He(e,t){let n=ze(e),r=ze(t);if(n.length<Q||r.length<Q)return!1;if(r.includes(n))return!0;let i=Be(e),a=new Set(Be(t));if(i.length>=4&&$(i,a)>=Fe)return!0;let o=Ve(n);return o.length<3?!1:$(o,new Set(Ve(r)))>=Ie}function Ue(e,t){return!e||!t?`append`:e===t?`drop`:t.startsWith(e)?`replace`:e.startsWith(t)?`drop`:t.length>=e.length&&He(e,t)?`replace`:e.length>t.length&&He(t,e)?`drop`:`append`}function We(e){let t=e.toLowerCase();return t===`failed`||t===`error`||t===`errored`?`failed`:t===`completed`||t===`done`||t===`success`?`done`:`running`}function Ge(e){let t=[];for(let n of e){let e=n.update??{};if(n.event===`code_user_message_chunk`){let n=e.content,r=String(n?.text??e.text??``),i=Z(e);r&&t.push({role:`user`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_agent_message_chunk`){let n=e.content,r=String(n?.text??e.text??``);if(!r)continue;let i=Z(e),a=t[t.length-1];if(a?.role===`assistant`){let e=Ue(a.text,r);if(a.messageId&&i&&a.messageId!==i){if(e===`replace`){a.text=r,a.messageId=i;continue}t.push({role:`assistant`,text:r,messageId:i});continue}if(e===`drop`)continue;a.text=e===`replace`?r:a.text+r,i&&!a.messageId&&(a.messageId=i)}else t.push({role:`assistant`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_agent_thought_chunk`){let n=e.content,r=String(n?.text??e.text??``);if(!r)continue;let i=Z(e),a=t[t.length-1];a?.role===`thinking`&&(!a.messageId||!i||a.messageId===i)?(a.text+=r,i&&!a.messageId&&(a.messageId=i)):t.push({role:`thinking`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_tool_call`){let n=String(e.title??e.toolName??`tool`),r=String(e.toolCallId??``),i=String(e.status??`pending`),a=P(e);t.push({role:`tool`,text:n,toolName:n,toolCallId:r,toolContent:a,toolStatus:We(i)})}else if(n.event===`code_tool_call_update`){let n=String(e.toolCallId??``),r=String(e.status??``),i=P(e),a=g(t,n);if(a<0)continue;let o={...t[a]};r&&(o.toolStatus=We(r)),i.length>0&&(o.toolContent=i),t[a]=o}}return t}function Ke(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.isContentEditable}function qe(e,t,n){let r=(0,d.useRef)(null),i=(0,d.useMemo)(()=>{let t=e[e.length-1];if(!t)return`empty`;let n=t.toolContent?.reduce((e,t)=>e+JSON.stringify(t).length,0)??0;return`${e.length}:${t.role}:${t.text.length}:${t.toolOutput?.length??0}:${n}:${t.toolStatus??``}`},[e]),a=(0,d.useCallback)((e=`smooth`)=>{window.requestAnimationFrame(()=>{let t=r.current;t&&(t.scrollTo({top:t.scrollHeight,behavior:e}),window.setTimeout(()=>{let e=r.current;e&&e.scrollTo({top:e.scrollHeight,behavior:`auto`})},80))})},[]),o=(0,d.useCallback)((e,t=`smooth`)=>{window.requestAnimationFrame(()=>{let n=r.current;n&&n.scrollBy({top:e,behavior:t})})},[]),s=(0,d.useCallback)((e=`smooth`)=>{window.requestAnimationFrame(()=>{let t=r.current;t&&t.scrollTo({top:0,behavior:e})})},[]);return(0,d.useEffect)(()=>{a(e.length>1?`smooth`:`auto`)},[i,e.length,t,a]),(0,d.useEffect)(()=>{let e=e=>{if(e.defaultPrevented||n||e.metaKey||e.ctrlKey||e.altKey||Ke(e.target))return;let t=r.current;if(!t)return;let i=e.key.toLowerCase(),c=Math.max(160,Math.floor(t.clientHeight*.78));i===`d`||i===`j`||e.key===`PageDown`?(e.preventDefault(),o(c)):i===`u`||i===`k`||e.key===`PageUp`?(e.preventDefault(),o(-c)):e.key===`End`?(e.preventDefault(),a(`smooth`)):e.key===`Home`&&(e.preventDefault(),s(`smooth`))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,o,a,s]),{transcriptRef:r,scrollTranscriptToBottom:a}}function Je(e){return typeof window<`u`&&window.location.port===String(e)?`${window.location.origin}/api/events`:`http://127.0.0.1:${e}/api/events`}function Ye({port:e,sessionId:t,sessionIdRef:n,onEvent:r,onTransport:i}){let a=(0,d.useRef)(r);a.current=r;let o=(0,d.useRef)(i);o.current=i;let s=(0,d.useRef)(t);s.current=t,(0,d.useEffect)(()=>{if(!e)return;let t=new EventSource(Je(e));return t.onopen=()=>{o.current?.(`connected`)},t.onmessage=e=>{try{let t={...JSON.parse(e.data),sseEventId:e.lastEventId||void 0};if(t.topic!==`jwc`)return;let r=t.event===`code_child_exit`,i=n?.current??s.current;if(!i&&!r||!r&&t.sessionId&&t.sessionId!==i)return;a.current(t)}catch{}},t.onerror=()=>{o.current?.(t.readyState===EventSource.CLOSED?`disconnected`:`reconnecting`)},()=>t.close()},[e])}function Xe({port:e,workingDir:t,onWorkingDirChange:n,onOpenLocalFile:r}){let i=(0,d.useMemo)(()=>p(e),[e]),[a,o]=(0,d.useState)(t),[s,c]=(0,d.useState)(null),[l,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(``),[x,S]=(0,d.useState)(!1),[C,w]=(0,d.useState)([]),[ee,T]=(0,d.useState)([]),[E,D]=(0,d.useState)(Te),[O,k]=(0,d.useState)(!1),[A,j]=(0,d.useState)(null),[te,M]=(0,d.useState)(``),[N,F]=(0,d.useState)(``),[I,L]=(0,d.useState)({}),[ne,R]=(0,d.useState)([]),[z,ie]=(0,d.useState)(`anthropic`),[B,ae]=(0,d.useState)(`claude-sonnet-4-6`),[oe,V]=(0,d.useState)(`high`),[H,se]=(0,d.useState)(`always-allow`),[U,ce]=(0,d.useState)(we),[le,W]=(0,d.useState)(null),[ue,de]=(0,d.useState)(null),[fe,pe]=(0,d.useState)(null),[me,G]=(0,d.useState)(null),[he,ge]=(0,d.useState)(`connected`),[_e,ve]=(0,d.useState)(null),K=(0,d.useRef)(null),ye=(0,d.useRef)(!1),q=(0,d.useRef)(null),J=(0,d.useRef)(null),Y=(0,d.useRef)(new Set),X=(0,d.useRef)(new Set),be=(0,d.useMemo)(()=>B?_(z,B):``,[z,B]),{transcriptRef:xe,scrollTranscriptToBottom:Se}=qe(C,x,!!A);(0,d.useEffect)(()=>{K.current||s||o(t)},[s,t]);let ke=(0,d.useCallback)(e=>{K.current||s||l||(o(e??``),n?.(e))},[s,n,l]),je=(0,d.useCallback)(async()=>{let e=u();if(e?.folder?.pickFolder){let t=await e.folder.pickFolder();if(t.ok&&t.path)return t.path;if(t.error&&t.error!==`cancelled`)throw Error(t.error);return null}let t=await i.pickWorkspace();return t.ok&&t.path?t.path:null},[i]),Q=(0,d.useCallback)(e=>{ce(e);let t=e.providers.find(t=>t.id===e.defaultProvider)??e.providers[0],n=t?.models.includes(e.defaultModel)?e.defaultModel:t?.models[0]??``;ie(t?.id??`anthropic`),ae(n);let r=t?.efforts??[];r.length>0&&V(r.includes(`high`)?`high`:r[0]??``)},[]);(0,d.useEffect)(()=>{K.current=s},[s]),(0,d.useEffect)(()=>{if(typeof document>`u`){ve(null);return}return ve(document.getElementById(`code-session-sidebar-host`)),()=>ve(null)},[]);let Fe=(0,d.useCallback)(async()=>{Q(await i.listModelOptions())},[Q,i]),Ie=(0,d.useCallback)(async()=>{W(await i.listModelAssignments())},[i]);(0,d.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n,r]=await Promise.all([i.listModelOptions(),i.listModelAssignments(),i.listModelPresets()]);if(e)return;Q(t),W(n),de(r)}catch(t){e||(ce({...we,error:t instanceof Error?t.message:String(t)}),W(null),de(null))}})(),()=>{e=!0}},[Q,i]),(0,d.useEffect)(()=>{if(!a){pe(null);return}let e=!1;return i.getGitInfo(a).then(t=>{e||pe(t)},()=>{e||pe(null)}),()=>{e=!0}},[i,a]),(0,d.useEffect)(()=>{if(ye.current){ye.current=!1;return}c(null),K.current=null,w([]),T([]),R([]),F(``),L({}),S(!1),G(null),X.current=new Set},[a]),Ye({port:e,sessionId:s,sessionIdRef:K,onEvent:(0,d.useCallback)(e=>{let t=e.update??{},n=e.event;if(!(J.current&&e.sessionId===J.current&&n!==`code_child_exit`)){if(n===`code_agent_message_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{if(Y.current.has(n)&&e[e.length-1]?.role===`user`)return Y.current.delete(n),e;let t=e[e.length-1];if(t?.role===`assistant`&&Pe(t.text,n))return e;if(t?.role===`assistant`){let i=Ue(t.text,n);if(t.messageId&&r&&t.messageId!==r)return i===`replace`?[...e.slice(0,-1),{...t,text:n,messageId:r}]:[...e,{role:`assistant`,text:n,messageId:r}];if(i===`drop`)return e;let a=i===`replace`?n:t.text+n;return[...e.slice(0,-1),{...t,text:a,...r&&!t.messageId?{messageId:r}:{}}]}return[...e,{role:`assistant`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_user_message_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{if(q.current===n){let t=-1;for(let r=e.length-1;r>=0;--r){let i=e[r];if(i?.role===`user`&&i.text===n&&i.transient===`pending-user-echo`){t=r;break}}if(t>=0){q.current=null;let i=[...e];return i[t]={role:`user`,text:n,...r?{messageId:r}:{}},i}}return[...e,{role:`user`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_agent_thought_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{let t=e[e.length-1];return t?.role===`thinking`&&(!t.messageId||!r||t.messageId===r)?[...e.slice(0,-1),{...t,text:t.text+n,...r&&!t.messageId?{messageId:r}:{}}]:[...e,{role:`thinking`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_tool_call`){let e=String(t.title??t.toolName??`tool`),n=String(t.toolCallId??``),r=String(t.status??`pending`),i=P(t);w(t=>[...t,{role:`tool`,text:e,toolName:e,toolCallId:n,toolContent:i,toolStatus:We(r)}])}else if(n===`code_tool_call_update`){let e=String(t.toolCallId??``),n=String(t.status??``),r=P(t);w(t=>{let i=g(t,e);if(i<0)return t;let a=[...t],o={...a[i]};return n&&(o.toolStatus=We(n)),r.length>0&&(o.toolContent=r),a[i]=o,a})}else if(n===`code_permission_request`){let t=String(e.permissionId??``),n=e.toolCall??{},r=e.options??[];t&&De(i,H,{permissionId:t,toolCall:n,options:r},{appendMessage:e=>w(t=>[...t,e]),enqueuePermission:e=>T(t=>[...t,e])})}else if(n===`code_session_info_update`){let e=t.title;typeof e==`string`&&F(e)}else if(n===`code_usage_update`){let e={};typeof t.contextTokens==`number`&&(e.contextTokens=t.contextTokens),typeof t.contextLimit==`number`&&(e.contextLimit=t.contextLimit),typeof t.totalCost==`number`&&(e.cost=t.totalCost),L(e)}else if(n===`code_plan`)R((t.entries??[]).filter(e=>e.title).map(e=>({title:String(e.title),status:String(e.status??`pending`)})));else if(n===`code_available_commands_update`)D(Ee(re(t.availableCommands)));else if(n===`code_child_exit`){let t=e.code===null||e.code===void 0?`unknown`:String(e.code),n=`JWC ACP child exited (code ${t}). Active Code sessions were closed. Send the prompt again to start a fresh session, or load a stored session from the sidebar.`;K.current=null,c(null),S(!1),T([]),G({code:t,message:n}),w(e=>[...e,{role:`assistant`,text:n}])}else n===`code_turn_done`?S(!1):n===`code_session_error`&&(w(t=>[...t,{role:`assistant`,text:`Error: ${e.reason??`unknown`}`}]),S(!1));setTimeout(()=>Se(`smooth`),50)}},[i,H,Se]),onTransport:ge});let Le=(0,d.useCallback)(async()=>{let e=y.trim();if(!(!e||x)){J.current=null,S(!0),v(!0),G(null),q.current=e,w(t=>[...t,{role:`user`,text:e,transient:`pending-user-echo`}]),b(``);try{let t=s;if(!t){let e=a||`/tmp`;t=(await i.createSession(e,be||void 0)).sessionId,K.current=t,c(t)}await i.sendPrompt(t,e)}catch(e){q.current=null,w(t=>[...t,{role:`assistant`,text:`Error: ${e instanceof Error?e.message:String(e)}`}]),S(!1)}}},[y,x,s,i,a,be]),Re=(0,d.useCallback)(e=>{b(e),k(e===`/`||e.startsWith(`/`)&&!e.includes(` `))},[]),ze=(0,d.useCallback)(e=>{if(!e.disabledReason){if(e.actionType===`popup`&&e.popupKind){M(``),j({kind:e.popupKind,command:e}),k(!1);return}b(`${e.displayName} `),k(!1)}},[]),Be=(0,d.useCallback)(async(e,t)=>{await Oe(i,H,e,t,e=>w(t=>[...t,e]))&&T(t=>t.filter(t=>t.permissionId!==e.permissionId))},[i,H]),$=(0,d.useCallback)(async(e,t,n)=>{M(``),ie(e),ae(t);let r=n?.closePopup??!0,a=n?.requireActiveSession??!0;if(!s){a&&M(`Start or load a Code session before applying a live model.`);return}try{await i.setSessionModel(s,_(e,t)),r&&j(null)}catch(e){M(e instanceof Error?e.message:String(e))}},[s,i]),Ve=(0,d.useCallback)(async(e,t)=>{M(``);try{Q(await i.setDefaultModel(_(e,t))),Ie()}catch(e){M(e instanceof Error?e.message:String(e))}},[Q,i,Ie]),He=(0,d.useCallback)(async(e,t,n,r)=>{M(``);try{W(await i.setModelAssignment(e,{provider:t,model:n,...r===void 0?{}:{thinkingLevel:r}}))}catch(e){M(e instanceof Error?e.message:String(e))}},[i]),Ke=(0,d.useCallback)(async e=>{M(``);try{W(await i.clearModelAssignment(e))}catch(e){M(e instanceof Error?e.message:String(e))}},[i]),Je=U.providers.find(e=>e.id===z)??U.providers[0],Xe=U.providers.map(e=>e.id),Ze=Je?.models??[],Qe=Je?.efforts??[],$e=e=>{let t=Ge(e.replayEvents??[]);X.current=new Set,Me(X.current,e.replayEvents??[]),Y.current=new Set(t.filter(e=>e.role===`assistant`&&e.text).map(e=>e.text)),K.current=e.sessionId,c(e.sessionId),e.cwd!==a&&(ye.current=!0,o(e.cwd)),w(t),T([]),R([]),F(e.title?.trim()||t.find(e=>e.role===`user`)?.text.split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()||``),L({}),S(!1),G(null)};if(!e)return(0,m.jsx)(`div`,{className:`code-canvas`,children:(0,m.jsx)(`div`,{className:`code-transcript-empty`,children:(0,m.jsx)(`p`,{children:`Server not available.`})})});let et=(0,m.jsx)(h,{client:i,activeSessionId:s,workingDir:a,onSelectSession:$e,onLoadSession:(e,t)=>{(async()=>{J.current=e,K.current=e,c(e),q.current=null,Y.current=new Set,X.current=new Set,w([]),R([]),F(``),S(!1);try{let n=await i.loadSession(e,t);if(K.current!==e)return;n.title&&F(n.title);let r=Ge(n.replayEvents??[]);X.current=new Set,Me(X.current,n.replayEvents??[]),Y.current=new Set(r.filter(e=>e.role===`assistant`&&e.text).map(e=>e.text)),w(r),S(!1)}catch(t){K.current===e&&(K.current=null,c(null)),w(e=>[...e,{role:`assistant`,text:`Failed to load session: ${t instanceof Error?t.message:String(t)}`}])}finally{J.current===e&&(J.current=null)}})()},onNewSession:()=>{K.current=null,J.current=null,q.current=null,Y.current=new Set,X.current=new Set,c(null),w([]),R([]),F(``),S(!1),v(!1)}}),tt=e=>{ie(e),ae(U.providers.find(t=>t.id===e)?.models[0]??``)},nt=(0,m.jsx)(Ce,{activePopup:A,activeSessionId:s,availableCommands:E,codeWorkingDir:a,currentEffortOptions:Qe,currentModelOptions:Ze,disabled:x,effort:oe,gitInfo:fe,childRecovery:me,transportState:he,inputText:y,messages:C,model:B,modelAssignments:le,modelOptions:U,modelPresets:ue,permissionMode:H,permissions:ee,planEntries:ne,error:te,provider:z,providerOptions:Xe,sending:x,sessionTitle:N,showCommands:O,transcriptRef:xe,usage:I,onClearModelAssignment:Ke,onClosePopup:()=>{M(``),j(null)},onCommandSelect:ze,onEffortChange:e=>{V(e),s&&i.setSessionConfig(s,`thinking`,e)},onFooterProviderChange:e=>{tt(e);let t=U.providers.find(t=>t.id===e),n=t?.models[0]??``;V(t?.efforts.includes(`high`)?`high`:t?.efforts[0]??``),n&&$(e,n,{closePopup:!1,requireActiveSession:!1})},onInputChange:Re,onModelChange:e=>{$(z,e,{closePopup:!1,requireActiveSession:!1})},onPermissionAnswer:Be,onPermissionModeChange:se,onProviderChange:tt,onRefreshProviders:()=>{Fe()},onSetDefaultModel:Ve,onSetModelAssignment:He,onShowCommandsChange:k,onSubmit:()=>{Le()},onUseModel:$,onUseForNewSessions:(e,t)=>{$(e,t,{requireActiveSession:!1,closePopup:!1}),j(null)},onWorkingDirChange:ke,onOpenLocalFile:r,workspaceFrozen:l,onPickWorkingDir:je});return _e?(0,m.jsxs)(m.Fragment,{children:[(0,f.createPortal)((0,m.jsx)(`div`,{className:`code-manager-session-navigator-content`,children:et}),_e),(0,m.jsx)(`div`,{className:`code-canvas code-canvas-workbench`,children:nt})]}):(0,m.jsxs)(`div`,{className:`code-canvas`,children:[(0,m.jsx)(`div`,{className:`code-canvas-sidebar`,children:et}),nt]})}export{Xe as CodeCanvas};
|
|
2
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{t}from"./preload-helper-DFYRRz9w.js";import{a as n,i as r,n as i,r as a,t as o}from"./esm-CT1xxdH5.js";import{n as s,t as c}from"./jsx-runtime-gFMgZ0TQ.js";import{t as l}from"./react-dom-AWKMTIe7.js";import{t as u}from"./desktop-bridge-CvdhnJQo.js";var d=e(s(),1),f=l();function p(e){let t=typeof window<`u`?window.location.origin:``,n=typeof window<`u`?window.location.port:``,r=t&&n===String(e)?t:`http://127.0.0.1:${e}`;async function i(e,t,n){let i={method:e};n&&(i.headers={"Content-Type":`application/json`},i.body=JSON.stringify(n));let a=await(await fetch(`${r}${t}`,i)).json();if(!a.ok)throw Error(a.error||`${e} ${t} failed`);return a}return{async listSessions(){return(await i(`GET`,`/api/code/sessions`)).sessions},async listStoredSessions(e={}){let t=e.scope??`all`,n=new URLSearchParams({scope:t});return t===`cwd`&&e.cwd&&n.set(`cwd`,e.cwd),(await i(`GET`,`/api/code/sessions/stored${`?${n.toString()}`}`)).sessions},async listModelOptions(){return i(`GET`,`/api/code/models`)},async setDefaultModel(e){return i(`POST`,`/api/code/model-default`,{modelId:e})},async listModelAssignments(){return i(`GET`,`/api/code/model-assignments`)},async setModelAssignment(e,t){let n=typeof t==`string`?{modelId:t}:t;return i(`PUT`,`/api/code/model-assignments/${encodeURIComponent(e)}`,n)},async clearModelAssignment(e){return i(`DELETE`,`/api/code/model-assignments/${encodeURIComponent(e)}`)},async listModelPresets(){return i(`GET`,`/api/code/model-presets`)},async getGitInfo(e){return await i(`GET`,`/api/code/git-info?cwd=${encodeURIComponent(e)}`)},async loadSession(e,t){return(await i(`POST`,`/api/code/sessions/load`,{sessionId:e,cwd:t})).session},async createSession(e,t){return(await i(`POST`,`/api/code/sessions`,{cwd:e,...t?{model:t}:{}})).session},async sendPrompt(e,t){return i(`POST`,`/api/code/sessions/${e}/prompt`,{text:t})},async cancelPrompt(e){await i(`POST`,`/api/code/sessions/${e}/cancel`)},async closeSession(e){await i(`DELETE`,`/api/code/sessions/${e}`)},async answerPermission(e,t){await i(`POST`,`/api/code/permissions/${e}`,{optionId:t})},async setSessionConfig(e,t,n){await i(`POST`,`/api/code/sessions/${e}/config`,{configId:t,valueId:n})},async extMethod(e,t,n){return(await i(`POST`,`/api/code/sessions/${e}/ext`,{method:t,params:n})).result},async forkSession(e,t){return(await i(`POST`,`/api/code/sessions/${e}/fork`,{cwd:t})).session},async setSessionModel(e,t){await i(`POST`,`/api/code/sessions/${e}/model`,{modelId:t})},pickWorkspace(){return i(`POST`,`/api/code/workspace/pick`)}}}var m=c();function h({client:e,activeSessionId:t,workingDir:n,onSelectSession:r,onLoadSession:i,onNewSession:a}){let[o,s]=(0,d.useState)([]),[c,l]=(0,d.useState)([]),[u,f]=(0,d.useState)(!0),[p,h]=(0,d.useState)(``),[g,_]=(0,d.useState)(``),[v,y]=(0,d.useState)(`all`),b=(0,d.useCallback)(async()=>{f(!0),h(``);let t=e=>e instanceof Error?e.message:String(e),r=v===`cwd`?{scope:`cwd`,cwd:n}:{scope:`all`},[i,a]=await Promise.allSettled([e.listSessions(),e.listStoredSessions(r)]),o=[];if(i.status===`fulfilled`){let e=i.value;s(e.filter(e=>e.status!==`closed`));let n=new Set(e.map(e=>e.sessionId));a.status===`fulfilled`?l(a.value.filter(e=>!n.has(e.sessionId))):(l([]),o.push(`History: ${t(a.reason)}`))}else s([]),o.push(`Live: ${t(i.reason)}`),a.status===`fulfilled`?l(a.value):(l([]),o.push(`History: ${t(a.reason)}`));o.length>0&&h(o.join(` · `)),f(!1)},[e,v,n]);(0,d.useEffect)(()=>{b()},[b]);let x=e=>e.split(`/`).pop()||e,S=e=>{let t=e.replayEvents?.find(e=>e.event===`code_user_message_chunk`)?.update??{},n=t.content;return String(n?.text??t.text??``).split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()||``},C=e=>e.title?.trim()||S(e)||x(e.cwd)||e.sessionId.slice(0,12)||`Untitled session`,w=e=>x(e.cwd),ee=e=>[e.sessionId,e.title??``,S(e),e.cwd].join(` `).toLowerCase(),T=e=>e.title?.trim()||e.firstMessage?.replace(/\s+/g,` `).trim()||e.sessionId.slice(0,12)||`Untitled session`,E=e=>{if(typeof e.lastModified==`number`)return e.lastModified;if(e.updatedAt){let t=Date.parse(e.updatedAt);if(Number.isFinite(t))return t}return 0},D=e=>{let t=[x(e.cwd)];return e.messageCount!==void 0&&t.push(`${e.messageCount} messages`),t.filter(Boolean).join(` · `)},O=e=>[e.sessionId,e.title??``,e.firstMessage??``,e.cwd].join(` `).toLowerCase(),k=c.filter(e=>!g||O(e).includes(g.toLowerCase())).sort((e,t)=>E(t)-E(e)).slice(0,20),A=k.reduce((e,t)=>{let n=e.find(e=>e.cwd===t.cwd);return n?n.sessions.push(t):e.push({cwd:t.cwd,sessions:[t]}),e},[]),j=p?`Session data could not fully load.`:v===`cwd`?`No sessions for this cwd. Switch to All to browse global history.`:`No JWC sessions found.`;return(0,m.jsxs)(`div`,{className:`code-session-list`,children:[(0,m.jsxs)(`div`,{className:`code-session-list-header`,children:[(0,m.jsx)(`span`,{className:`code-session-list-title`,children:`Sessions`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-new-btn`,onClick:a,"aria-label":`New code session`,children:`+`})]}),(0,m.jsxs)(`div`,{className:`code-session-view-toggle`,"aria-label":`Session view`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`all`?` active`:``}`,onClick:()=>y(`all`),children:`All`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`cwd`?` active`:``}`,onClick:()=>y(`cwd`),children:`This cwd`}),(0,m.jsx)(`button`,{type:`button`,className:`code-session-view-btn${v===`grouped`?` active`:``}`,onClick:()=>y(`grouped`),children:`Group`})]}),v===`cwd`&&(0,m.jsx)(`div`,{className:`code-session-view-hint`,children:x(n)}),p&&(0,m.jsx)(`div`,{className:`code-session-list-error`,role:`status`,children:p}),o.length+c.length>3&&(0,m.jsx)(`input`,{className:`code-session-search`,type:`text`,value:g,onChange:e=>_(e.target.value),placeholder:`Search sessions...`}),u?(0,m.jsx)(`div`,{className:`code-session-list-loading`,children:`Loading...`}):(0,m.jsxs)(m.Fragment,{children:[o.length>0&&(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:o.filter(e=>!g||ee(e).includes(g.toLowerCase())).map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item ${e.sessionId===t?`active`:``}`,onClick:()=>r(e),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:C(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:w(e)}),(0,m.jsx)(`span`,{className:`code-session-status code-session-status-${e.status}`,children:e.status})]})},e.sessionId))}),k.length>0&&v!==`grouped`&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{className:`code-session-list-divider`,children:`History`}),(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:k.map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item`,onClick:()=>i(e.sessionId,e.cwd),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:T(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:D(e)}),(0,m.jsx)(`span`,{className:`code-session-status`,children:`stored`})]})},e.sessionId))})]}),k.length>0&&v===`grouped`&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`div`,{className:`code-session-list-divider`,children:`History by cwd`}),A.map(e=>(0,m.jsxs)(`section`,{className:`code-session-group`,children:[(0,m.jsxs)(`div`,{className:`code-session-group-title`,title:e.cwd,children:[x(e.cwd),` `,(0,m.jsx)(`span`,{children:e.sessions.length})]}),(0,m.jsx)(`ul`,{className:`code-session-list-items`,children:e.sessions.map(e=>(0,m.jsx)(`li`,{children:(0,m.jsxs)(`button`,{type:`button`,className:`code-session-item`,onClick:()=>i(e.sessionId,e.cwd),children:[(0,m.jsx)(`span`,{className:`code-session-cwd`,children:T(e)}),(0,m.jsx)(`span`,{className:`code-session-meta`,children:D(e)}),(0,m.jsx)(`span`,{className:`code-session-status`,children:`stored`})]})},e.sessionId))})]},e.cwd))]}),o.length===0&&k.length===0&&(0,m.jsx)(`div`,{className:`code-session-list-empty`,children:j})]})]})}function g(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r?.role===`tool`&&r.toolCallId===t)return n}return-1}function _(e,t){return e?`${e}/${t}`:t}var v=[`allow_once`,`allow_always`,`reject_once`,`reject_always`],y={allow_once:`Allow once`,allow_always:`Always allow`,reject_once:`Deny once`,reject_always:`Always deny`},b={allow_once:`allow-once`,allow_always:`allow-always`,reject_once:`deny-once`,reject_always:`deny-always`},x=[{value:`always-allow`,label:`Always allow`,detail:`Auto-allow gated tools`,tone:`allow`},{value:`ask`,label:`Ask first`,detail:`Review each gated tool`,tone:`ask`},{value:`always-deny`,label:`Always deny`,detail:`Auto-deny gated tools`,tone:`deny`}],S={ask:`Review each gated tool`,"always-allow":`Auto-allow gated tools`,"always-deny":`Auto-deny gated tools`},C={allow_once:/^(allow[_\s-]?once|allow once)$/i,allow_always:/^(allow[_\s-]?always|always allow|always approve)$/i,reject_once:/^(reject[_\s-]?once|deny[_\s-]?once|reject|deny)$/i,reject_always:/^(reject[_\s-]?always|deny[_\s-]?always|always reject|always deny)$/i};function w(e){return[e.kind,e.optionId,e.id,e.name,e.label].map(e=>String(e??``)).join(` `).trim()}function ee(e){let t=e.optionId??e.id;return t==null||t===``?null:String(t)}function T(e,t){let n=e.name??e.label;return n==null||n===``?y[t]:String(n)}function E(e,t){let n=e.find(e=>e.kind===t),r=e.find(e=>e.optionId===t||e.id===t),i=e.find(e=>C[t].test(w(e))),a=n??r??i;if(!a)return null;let o=ee(a);return o?{kind:t,optionId:o,label:T(a,t),raw:a}:null}function D(e){return String(e.toolName??e.title??e.name??`tool`)}function O(e,t){let n={permissionId:e.permissionId,toolName:D(e.toolCall),...t};return{role:`permission`,text:n.error??n.optionLabel??n.decision,permissionAudit:n}}function k(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function A(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(typeof n==`string`){n&&t.push(n);continue}if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=n,r=typeof e.type==`string`?e.type.toLowerCase():``,i=e.text;(!r||r===`text`)&&typeof i==`string`&&i&&t.push(i)}return t.length>0?t.join(`
|
|
3
|
+
`):null}function j(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=A(t.content);if(n)return n;let r=t.details;if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r.displayContent;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.text;if(typeof t==`string`&&t)return t}}return null}function te(e){return j(e)??k(e)}function M(e){if(typeof e==`string`)return{type:`text`,text:e};if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=typeof t.type==`string`?t.type.toLowerCase():``,r=typeof t.label==`string`?t.label:void 0;if(n===`diff`&&typeof t.diff==`string`)return{type:`diff`,diff:t.diff,...r?{label:r}:{}};if(n===`error`)return{type:`error`,text:k(t.text??t.error??t.message??t),...r?{label:r}:{}};if(n===`args`||n===`arguments`||n===`input`)return{type:`args`,json:t.json??t.args??t.arguments??t.input??t,...r?{label:r}:{}};if(n===`output`)return{type:`output`,text:te(t.text??t.output??t),...r?{label:r}:{}};if(n===`json`)return{type:`json`,json:t.json??t.value??t,...r?{label:r}:{}};if(typeof t.diff==`string`)return{type:`diff`,diff:t.diff,...r?{label:r}:{}};if(typeof t.text==`string`)return{type:`text`,text:t.text,...r?{label:r}:{}};let i=j(t);return i?{type:`text`,text:i,...r?{label:r}:{}}:{type:`json`,json:t,...r?{label:r}:{}}}function N(e,t,n,r){r==null||r===``||(t===`args`||t===`json`?e.push({type:t,label:n,json:r}):e.push({type:t,label:n,text:t===`output`?te(r):k(r)}))}function P(e){let t=[],n=e.content;if(Array.isArray(n))for(let e of n){let n=M(e);n&&t.push(n)}else{let e=M(n);e&&t.push(e)}return N(t,`args`,`Args`,e.args??e.arguments??e.input??e.rawInput),N(t,`output`,`Output`,e.rawOutput??e.output),N(t,`error`,`Error`,e.error??e.errorMessage??e.reason),t}var F={settings:{category:`settings`,popupKind:`settings`},theme:{category:`settings`,popupKind:`settings`},identity:{category:`settings`,popupKind:`settings`},"identity-auto":{category:`settings`,popupKind:`settings`},model:{category:`model`,popupKind:`model`},provider:{category:`provider`,popupKind:`provider`},login:{category:`provider`,popupKind:`provider`}},I={session:`session`,orchestrate:`workflow`,pabcd:`workflow`,goal:`workflow`,mcp:`utility`,move:`utility`,compact:`utility`,dump:`utility`,help:`utility`};function L(e){return e.trim().replace(/^\/+/,``)}function ne(e,t){let n=typeof e.source==`string`?e.source:``,r=typeof e.path==`string`?e.path:``;return n.includes(`skill`)||t.includes(`:`)?`jwc-skill`:n.includes(`custom`)?`jwc-custom`:n.includes(`file`)||r?`jwc-file`:F[t]||I[t]?`jwc-builtin`:`unknown`}function R(e){let t=e.input;if(!t||typeof t!=`object`)return;let n=t.hint;return typeof n==`string`&&n.trim()?n:void 0}function z(e){if(!e||typeof e!=`object`)return null;let t=e,n=L(String(t.name??``));if(!n)return null;let r=F[n],i=r?.category??I[n]??`unknown`,a=ne(t,n),o=t.supported!==!1&&t.disabled!==!0?r?`popup`:i===`unknown`?`pass-through`:`insert`:`unsupported`,s=typeof t.description==`string`&&t.description.trim()?t.description:void 0,c=R(t),l={name:n,displayName:`/${n}`,category:i,actionType:o,source:a,raw:t};return s&&(l.description=s),c&&(l.inputHint=c),r&&(l.popupKind=r.popupKind),o===`unsupported`&&(l.disabledReason=typeof t.disabledReason==`string`&&t.disabledReason.trim()?t.disabledReason:`Unsupported in Code mode`),l}function re(e){let t=Array.isArray(e)?e:[],n=new Set,r=[];for(let e of t){let t=z(e);!t||n.has(t.name)||(n.add(t.name),r.push(t))}return r}function ie(e){return[e.name,e.displayName,e.description??``,e.inputHint??``,e.category,e.source].join(` `).toLowerCase()}function B(e,t){let n=L(t.split(/\s+/)[0]??``).toLowerCase();if(!n)return e;let r=[],i=[];for(let t of e)t.name.toLowerCase().startsWith(n)?r.push(t):ie(t).includes(n)&&i.push(t);return[...r,...i]}function ae({value:e,disabled:t,onChange:n}){let r=x.find(t=>t.value===e)??x[0];return(0,m.jsxs)(`div`,{className:`code-permission-mode-field`,children:[(0,m.jsxs)(`div`,{className:`code-permission-mode-label`,children:[(0,m.jsx)(`span`,{children:`Permission mode`}),(0,m.jsx)(`strong`,{children:`Default: Always allow`})]}),(0,m.jsx)(`div`,{className:`code-permission-mode-list`,role:`listbox`,"aria-label":`Permission mode`,children:x.map(r=>(0,m.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":r.value===e,disabled:t,className:`code-permission-mode-option is-${r.tone}${r.value===e?` is-selected`:``}`,title:r.detail,onClick:()=>n(r.value),children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:r.label}),(0,m.jsx)(`small`,{children:r.detail})]}),r.value===e&&(0,m.jsx)(`em`,{"aria-hidden":`true`,children:`✓`})]},r.value))}),(0,m.jsx)(`p`,{className:`code-permission-mode-note is-${r?.tone??`ask`}`,children:`Automatic modes answer with JWC persistent options and write a transcript audit row.`})]})}function oe(e){return e===`provider`?`Provider`:e===`model`?`Model`:e===`permission`?`Permissions`:e===`session`?`Session`:`Settings`}function V(e){return e===`jwc-cache`?`JWC cache`:`static fallback`}function H({popupKind:e,command:t,modelOptions:n,provider:r,model:i,modelAssignments:a,modelPresets:o,permissionMode:s,disabled:c,activeSessionId:l,error:u,onClose:f,onRefreshProviders:p,onProviderChange:h,onUseModel:g,onUseForNewSessions:_,onSetDefaultModel:v,onSetModelAssignment:y,onClearModelAssignment:b,onPermissionModeChange:x}){let S=(0,d.useRef)(null),C=(0,d.useRef)(null),w=n.providers.find(e=>e.id===r)??n.providers[0],[ee,T]=(0,d.useState)(``),[E,D]=(0,d.useState)(`models`),[O,k]=(0,d.useState)(r),[A,j]=(0,d.useState)(i),[te,M]=(0,d.useState)({}),N=n.providers.find(e=>e.id===O)??w,P=ee.trim().toLowerCase(),F=(0,d.useMemo)(()=>n.providers.filter(e=>P?e.id.toLowerCase().includes(P)||e.models.some(e=>e.toLowerCase().includes(P)):!0),[n.providers,P]),I=(0,d.useMemo)(()=>{let e=N?.models??[];return P?e.filter(e=>e.toLowerCase().includes(P)):e},[N?.models,P]),L=oe(e),ne=(0,d.useMemo)(()=>{let e=n.providers.length;return`${e} authenticated provider${e===1?``:`s`}`},[n.providers.length]),R=!!(l&&O&&A&&!c),z=!!(O&&A&&!c),re=(0,d.useMemo)(()=>[`inherit`,...N?.efforts??[]].map(e=>e===`min`?`minimal`:e).filter((e,t,n)=>e&&n.indexOf(e)===t).map(e=>({value:e,label:e===`inherit`?`inherit`:e===`minimal`?`min`:e})),[N?.efforts]);return(0,d.useEffect)(()=>{S.current?.focus()},[e,t.name]),(0,d.useEffect)(()=>{let e=document.activeElement;return()=>{e?.focus?.()}},[]),(0,d.useEffect)(()=>{e===`model`&&(T(``),k(r),j(i))},[i,e,r]),(0,d.useEffect)(()=>{if(e!==`model`)return;let t=N?.models??[];t.length>0&&!t.includes(A)&&j(t[0]??``)},[A,N?.models,e]),(0,d.useEffect)(()=>{if(e!==`model`||!a)return;let t={};for(let e of a.roles){let n=e.thinkingLevel===`min`?`minimal`:e.thinkingLevel;t[e.role]=n||`inherit`}M(t)},[a,e]),(0,d.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){e.preventDefault(),f();return}if(e.key===`Tab`&&C.current){let t=C.current.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`),n=t[0],r=t[t.length-1];if(!n||!r)return;let i=document.activeElement;e.shiftKey&&i===n?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[f]),(0,m.jsx)(`div`,{className:`code-popup-backdrop`,role:`presentation`,onMouseDown:e=>{e.target===e.currentTarget&&f()},children:(0,m.jsxs)(`section`,{ref:C,className:`code-popup`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`code-command-popup-title`,children:[(0,m.jsxs)(`header`,{className:`code-popup-header`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`p`,{className:`code-popup-command`,children:t.displayName}),(0,m.jsx)(`h2`,{id:`code-command-popup-title`,children:L})]}),(0,m.jsx)(`button`,{ref:S,type:`button`,className:`code-popup-close`,onClick:f,"aria-label":`Close popup`,children:`x`})]}),e===`provider`&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[(0,m.jsxs)(`div`,{className:`code-popup-section-head`,children:[(0,m.jsx)(`span`,{children:ne}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:c,onClick:p,children:`Refresh`})]}),n.degraded&&(0,m.jsx)(`p`,{className:`code-popup-warning`,children:n.error??`Provider discovery is degraded.`}),u&&(0,m.jsx)(`p`,{className:`code-popup-error`,children:u}),(0,m.jsx)(`div`,{className:`code-provider-list`,role:`list`,children:n.providers.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-provider-row${e.id===r?` is-selected`:``}`,onClick:()=>h(e.id),disabled:c,children:[(0,m.jsx)(`span`,{className:`code-provider-name`,children:e.id}),(0,m.jsxs)(`span`,{className:`code-provider-meta`,children:[e.models.length,` models · `,V(e.modelSource)]})]},e.id))}),(0,m.jsxs)(`div`,{className:`code-popup-placeholder-actions`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Add provider`}),(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Login`}),(0,m.jsx)(`span`,{children:`Provider add/login execution is next slice.`})]})]}),(e===`settings`||e===`permission`)&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[(0,m.jsx)(ae,{value:s,disabled:!!c,onChange:x}),e===`settings`&&(0,m.jsxs)(`div`,{className:`code-popup-summary`,children:[(0,m.jsx)(`span`,{children:`Provider`}),(0,m.jsx)(`strong`,{children:r||`-`}),(0,m.jsx)(`span`,{children:`Model`}),(0,m.jsx)(`strong`,{children:i||`-`})]})]}),e===`model`&&(0,m.jsxs)(`div`,{className:`code-popup-section`,children:[u&&(0,m.jsx)(`p`,{className:`code-popup-error`,children:u}),(0,m.jsx)(`div`,{className:`code-model-tablist`,role:`tablist`,"aria-label":`Model settings tabs`,children:[`models`,`roles`,`profiles`].map(e=>(0,m.jsx)(`button`,{type:`button`,role:`tab`,id:`code-model-tab-${e}`,"aria-selected":E===e,"aria-controls":`code-model-panel-${e}`,tabIndex:E===e?0:-1,className:`code-model-tab${E===e?` is-active`:``}`,onClick:()=>D(e),onKeyDown:e=>{if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`)return;e.preventDefault();let t=[`models`,`roles`,`profiles`],n=e.key===`ArrowRight`?1:t.length-1;D(t[(t.indexOf(E)+n)%t.length]??`models`)},children:e===`models`?`Models`:e===`roles`?`Roles`:`Profiles`},e))}),E===`models`&&(0,m.jsxs)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-models`,"aria-labelledby":`code-model-tab-models`,children:[(0,m.jsxs)(`label`,{className:`code-popup-field`,children:[(0,m.jsx)(`span`,{children:`Search models`}),(0,m.jsx)(`input`,{type:`search`,className:`code-model-search`,placeholder:`Search provider or model`,value:ee,onChange:e=>T(e.target.value),disabled:c})]}),n.usageOrder&&n.usageOrder.length>0&&(0,m.jsxs)(`div`,{className:`code-model-mru-strip`,"aria-label":`Recently used models`,children:[(0,m.jsx)(`span`,{children:`Recently used`}),n.usageOrder.slice(0,3).map(e=>(0,m.jsx)(`strong`,{children:e},e))]}),(0,m.jsxs)(`div`,{className:`code-model-layout`,children:[(0,m.jsx)(`div`,{className:`code-model-providers`,role:`list`,"aria-label":`Providers`,children:F.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-model-provider${e.id===O?` is-selected`:``}`,onClick:()=>{k(e.id),j(e.models[0]??``)},disabled:c,children:[(0,m.jsx)(`span`,{children:e.id}),(0,m.jsx)(`small`,{children:e.models.length})]},e.id))}),(0,m.jsxs)(`div`,{className:`code-model-list`,role:`list`,"aria-label":`Models`,children:[(0,m.jsxs)(`div`,{className:`code-model-list-head`,children:[(0,m.jsx)(`strong`,{children:N?.id??`No provider`}),(0,m.jsxs)(`span`,{children:[I.length,` models · `,V(N?.modelSource)]})]}),I.length===0?(0,m.jsx)(`p`,{className:`code-popup-note`,children:`No models match this search.`}):I.map(e=>{let t=O===r&&e===i,n=e===A;return(0,m.jsxs)(`button`,{type:`button`,className:`code-model-row${t?` is-active`:``}${n?` is-draft`:``}`,onClick:()=>j(e),disabled:c,children:[(0,m.jsx)(`span`,{children:e}),(0,m.jsx)(`small`,{children:t?`Active`:n?`Selected`:`Available`})]},e)})]})]}),(0,m.jsxs)(`div`,{className:`code-popup-action-row`,children:[(0,m.jsxs)(`div`,{className:`code-popup-summary code-popup-summary-compact`,children:[(0,m.jsx)(`span`,{children:`Active`}),(0,m.jsxs)(`strong`,{children:[r||`-`,` / `,i||`-`]}),(0,m.jsx)(`span`,{children:`Selected`}),(0,m.jsxs)(`strong`,{children:[O||`-`,` / `,A||`-`]}),(0,m.jsx)(`span`,{children:`Default`}),(0,m.jsxs)(`strong`,{children:[n.defaultProvider||`-`,` / `,n.defaultModel||`-`]})]}),(0,m.jsxs)(`div`,{className:`code-popup-action-stack`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-popup-primary`,disabled:!R,onClick:()=>{g(O,A)},children:`Use now`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!z,onClick:()=>{_(O,A)},children:`Use for new sessions`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!z,onClick:()=>{v(O,A)},children:`Set default`})]})]}),!l&&(0,m.jsx)(`p`,{className:`code-popup-note`,children:`Start or load a Code session to apply a live model. Use “Use for new sessions” to set the next session’s model.`})]}),E===`roles`&&(0,m.jsx)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-roles`,"aria-labelledby":`code-model-tab-roles`,children:(0,m.jsxs)(`div`,{className:`code-role-assignment-panel`,"aria-label":`Model role assignments`,children:[(0,m.jsxs)(`div`,{className:`code-role-assignment-head`,children:[(0,m.jsx)(`strong`,{children:`Role assignments`}),(0,m.jsx)(`span`,{children:a?.activeModel.note??`Role assignments do not mutate the active Code session model.`})]}),(0,m.jsx)(`div`,{className:`code-role-assignment-grid`,role:`list`,children:(a?.roles??[]).map(e=>{let t=e.modelId?e.modelId:`Unset`,n=te[e.role]??(e.thinkingLevel===`min`?`minimal`:e.thinkingLevel)??`inherit`,r=!!(O&&A&&!c),i=!!(e.modelId&&!c);return(0,m.jsxs)(`article`,{className:`code-role-card`,role:`listitem`,children:[(0,m.jsxs)(`div`,{className:`code-role-card-head`,children:[(0,m.jsx)(`span`,{className:`code-role-tag`,children:e.tag}),(0,m.jsx)(`strong`,{children:e.name})]}),(0,m.jsx)(`p`,{className:`code-role-path`,children:e.settingsPath}),(0,m.jsx)(`p`,{className:`code-role-model`,title:t,children:t}),(0,m.jsxs)(`label`,{className:`code-role-thinking`,children:[(0,m.jsx)(`span`,{children:`Thinking`}),(0,m.jsx)(`select`,{value:n,disabled:c,onChange:t=>{let n=t.target.value;M(t=>({...t,[e.role]:n}))},children:re.map(e=>(0,m.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,m.jsxs)(`div`,{className:`code-role-actions`,children:[(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!r,onClick:()=>{y(e.role,O,A,n===`inherit`?null:n)},children:`Assign selected`}),(0,m.jsx)(`button`,{type:`button`,className:`code-popup-secondary`,disabled:!i,onClick:()=>{b(e.role)},children:`Clear`})]})]},e.role)})}),!a&&(0,m.jsx)(`p`,{className:`code-popup-note`,children:`Loading role assignments.`})]})}),E===`profiles`&&(0,m.jsx)(`div`,{className:`code-popup-tabpanel`,role:`tabpanel`,id:`code-model-panel-profiles`,"aria-labelledby":`code-model-tab-profiles`,children:(0,m.jsxs)(`div`,{className:`code-model-preset-panel`,"aria-label":`Model profiles and presets`,children:[(0,m.jsxs)(`div`,{className:`code-role-assignment-head`,children:[(0,m.jsx)(`strong`,{children:`Profiles and presets`}),(0,m.jsx)(`span`,{children:o?.applyReason??`Loading JWC profile state.`})]}),(0,m.jsxs)(`div`,{className:`code-model-preset-summary`,children:[(0,m.jsx)(`span`,{children:`Startup profile`}),(0,m.jsx)(`strong`,{children:o?.defaultProfile??`Unset`}),(0,m.jsx)(`span`,{children:`Task presets`}),(0,m.jsx)(`strong`,{children:o?o.taskPresets.length:`-`}),(0,m.jsx)(`span`,{children:`Built-in profiles`}),(0,m.jsx)(`strong`,{children:o?o.builtinProfiles.length:`-`})]}),o&&o.taskPresets.length>0&&(0,m.jsx)(`div`,{className:`code-model-preset-list`,role:`list`,"aria-label":`Task model presets`,children:o.taskPresets.slice(0,4).map(e=>(0,m.jsxs)(`div`,{className:`code-model-preset-row`,role:`listitem`,children:[(0,m.jsx)(`strong`,{children:e.name}),(0,m.jsx)(`span`,{children:e.best?`best ${e.best}`:`best unset`}),(0,m.jsx)(`span`,{children:e.cheap?`cheap ${e.cheap}`:`cheap unset`})]},e.name))}),o&&(0,m.jsx)(`div`,{className:`code-model-profile-chips`,"aria-label":`Built-in profile candidates`,children:o.builtinProfiles.slice(0,8).map(e=>(0,m.jsx)(`span`,{children:e.name},e.name))}),(0,m.jsxs)(`div`,{className:`code-popup-placeholder-actions`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:!0,className:`code-popup-secondary`,children:`Apply profile`}),(0,m.jsx)(`span`,{children:`Profile activation is read-only here; JWC runtime owns credential checks and rollback.`})]})]})})]})]})})}function se(e,t,n){return n<=0?0:(e+t+n)%n}function U(e){return e.disabledReason?`Disabled`:e.actionType===`popup`?e.popupKind?`${e.popupKind} popup`:`Popup`:e.actionType===`pass-through`?`Pass-through`:e.actionType===`unsupported`?`Unsupported`:`Insert`}function ce(e){let[t,n]=(0,d.useState)(0),r=(0,d.useMemo)(()=>B(e.availableCommands,e.inputText).slice(0,10),[e.availableCommands,e.inputText]),i=r[t],a=i?`code-command-option-${i.name.replace(/[^a-z0-9_-]/gi,`-`)}`:void 0;(0,d.useEffect)(()=>{n(0)},[e.inputText,e.availableCommands]),(0,d.useEffect)(()=>{t>=r.length&&n(Math.max(0,r.length-1))},[t,r.length]);let o=t=>{!t||t.disabledReason||e.onCommandSelect(t)};return(0,m.jsxs)(`div`,{className:`code-composer`,children:[e.showCommands&&r.length>0&&(0,m.jsx)(`div`,{className:`code-command-palette`,role:`listbox`,"aria-label":`Code commands`,id:`code-command-palette`,children:r.map((e,r)=>{let i=r===t;return(0,m.jsxs)(`button`,{id:`code-command-option-${e.name.replace(/[^a-z0-9_-]/gi,`-`)}`,type:`button`,role:`option`,"aria-selected":i,"aria-disabled":e.disabledReason?!0:void 0,className:`code-command-item${i?` is-active`:``}${e.disabledReason?` is-disabled`:``}`,onMouseEnter:()=>n(r),onClick:()=>o(e),children:[(0,m.jsxs)(`span`,{className:`code-command-row-main`,children:[(0,m.jsx)(`span`,{className:`code-command-name`,children:e.displayName}),e.description&&(0,m.jsx)(`span`,{className:`code-command-desc`,children:e.description})]}),(0,m.jsxs)(`span`,{className:`code-command-row-meta`,children:[(0,m.jsx)(`span`,{className:`code-command-chip`,children:e.category}),(0,m.jsx)(`span`,{className:`code-command-chip`,children:e.source}),(0,m.jsx)(`span`,{className:`code-command-chip`,children:U(e)})]})]},e.name)})}),(0,m.jsxs)(`div`,{className:`code-composer-input-shell`,children:[(0,m.jsx)(`textarea`,{className:`code-composer-input`,value:e.inputText,onChange:t=>e.onInputChange(t.target.value),onKeyDown:t=>{if(t.key===`Escape`&&e.showCommands){t.preventDefault(),e.onShowCommandsChange(!1);return}if(e.showCommands&&r.length>0){if(t.key===`ArrowDown`){t.preventDefault(),n(e=>se(e,1,r.length));return}if(t.key===`ArrowUp`){t.preventDefault(),n(e=>se(e,-1,r.length));return}if(t.key===`Enter`&&!t.shiftKey){t.preventDefault(),o(i);return}}t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),e.onSubmit())},"aria-controls":e.showCommands?`code-command-palette`:void 0,"aria-activedescendant":e.showCommands?a:void 0,"aria-expanded":e.showCommands,placeholder:`Describe a task or ask a question...`,rows:1,disabled:e.sending}),(0,m.jsx)(`span`,{className:`code-composer-hint`,children:`Enter to send · / for commands`})]}),(0,m.jsx)(`button`,{type:`button`,className:`code-composer-send`,onClick:e.onSubmit,disabled:!e.inputText.trim()||e.sending,"aria-label":`Send prompt`,children:`Send`})]})}function le({permissions:e,onAnswer:t}){return e.length===0?null:(0,m.jsx)(`div`,{className:`code-permissions`,children:e.map(e=>(0,m.jsxs)(`div`,{className:`code-permission-card`,children:[(0,m.jsxs)(`div`,{className:`code-permission-title`,children:[(0,m.jsx)(`span`,{children:`Permission request`}),(0,m.jsx)(`strong`,{children:D(e.toolCall)}),(0,m.jsxs)(`small`,{children:[e.options.length,` JWC options`]})]}),(0,m.jsx)(`div`,{className:`code-permission-actions`,children:v.map(n=>{let r=E(e.options,n),i=b[n];return(0,m.jsx)(`button`,{type:`button`,className:`code-permission-btn is-${i}`,disabled:!r,title:r?r.optionId:`${y[n]} option was not provided by JWC`,onClick:()=>t(e,n),children:r?.label??y[n]},n)})})]},e.permissionId))})}var W=92,ue=6;function de(e){let[{virtualItems:t,totalSize:s},c]=(0,d.useState)({virtualItems:[],totalSize:0}),l=(0,d.useRef)(null);l.current||=new o({count:e.count,getScrollElement:()=>e.scrollElementRef.current,estimateSize:e.estimateSize||(()=>W),overscan:ue,getItemKey:e.getItemKey,indexAttribute:`data-code-transcript-idx`,useAnimationFrameWithResizeObserver:!0,observeElementRect:n,observeElementOffset:r,scrollToFn:i,measureElement:a,onChange:e=>{c({virtualItems:e.getVirtualItems(),totalSize:e.getTotalSize()})}});let u=l.current;return(0,d.useEffect)(()=>u._didMount(),[u]),(0,d.useLayoutEffect)(()=>{u.setOptions({...u.options,count:e.count,getItemKey:e.getItemKey,estimateSize:e.estimateSize||(()=>W)}),u._willUpdate(),c({virtualItems:u.getVirtualItems(),totalSize:u.getTotalSize()})},[e.count,e.estimateSize,e.getItemKey,u]),{measureElement:e=>{e&&u.measureElement(e)},virtualItems:t,totalSize:s}}var fe=(0,d.lazy)(()=>t(()=>import(`./MarkdownRenderer-DyrB9FbZ.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0])));function pe(e,t){let n=e.label??(e.type===`args`?`Args`:e.type===`output`?`Output`:e.type===`error`?`Error`:``),r=`code-tool-${e.type}`,i=e.type===`diff`&&e.diff?e.diff:e.type===`json`||e.type===`args`?JSON.stringify(e.json??e,null,2):e.text??JSON.stringify(e,null,2);return n?(0,m.jsxs)(`div`,{className:`code-tool-section`,children:[(0,m.jsx)(`span`,{className:`code-tool-section-label`,children:n}),(0,m.jsx)(`pre`,{className:r,children:i})]},t):e.type===`diff`&&e.diff?(0,m.jsx)(`pre`,{className:`code-tool-diff`,children:e.diff},t):e.text?(0,m.jsx)(`pre`,{className:`code-tool-text`,children:e.text},t):(0,m.jsx)(`pre`,{className:r,children:i},t)}function me(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.isContentEditable}function G(e){return(e.toolContent?.find(e=>typeof e.text==`string`&&e.text.trim())?.text??e.toolOutput??``).replace(/\s+/g,` `).trim().slice(0,240)}function he(e){return e.split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()??``}function ge(e){let t=e.toolContent?.find(e=>e.type===`args`||e.type===`text`||e.type===`json`);if(!t)return null;if(typeof t.text==`string`){let e=he(t.text);return e?{text:e,...t.type===`args`?{name:`bash`}:/^https?:\/\//.test(e)||e.startsWith(`/`)?{name:`read`}:{}}:null}if(typeof t.json==`string`){let e=he(t.json);return e?{text:e,...t.type===`args`?{name:`bash`}:{}}:null}if(t.json&&typeof t.json==`object`&&!Array.isArray(t.json)){let e=t.json;for(let[t,n]of[[`command`,`bash`],[`cmd`,`bash`],[`path`,`read`],[`url`,`read`],[`file`,`read`],[`query`,`search`]]){let r=e[t];if(typeof r==`string`&&r.trim())return{name:n,text:he(r)}}}return null}function _e(e){let t=he(e.toolName||e.text||`tool`)||`tool`,n=ge(e);return t.includes(`:`)||!n?t:t===`tool`?n.name?`${n.name}: ${n.text}`:n.text:`${t}: ${n.text}`}function ve(e){return e===`pending`?`Pending`:e===`allow_once`?`Allow once`:e===`allow_always`?`Always allow`:e===`reject_once`?`Deny once`:e===`reject_always`?`Always deny`:e===`missing_option`?`Missing JWC option`:e===`answer_error`?`Answer failed`:`Cancelled`}function K(e,t){return`${t}:${e.toolCallId||e.permissionAudit?.permissionId||`${e.role}:${e.text.slice(0,48)}`}`}function ye(e){return e?e.role===`tool`?e.toolStatus===`running`?44:64+Math.min(320,(e.toolOutput?.length??0)/5):e.role===`permission`?72:e.role===`thinking`?48+Math.min(180,e.text.length/8):56+Math.min(420,e.text.length/6):48}function q(e,t,n){return(0,m.jsx)(`div`,{className:`code-message code-message-${e.role}`,children:e.role===`tool`?(()=>{let t=e.toolStatus??`done`,n=t===`failed`||t===`error`,r=n?G(e):``;return(0,m.jsxs)(`details`,{className:`code-tool-card code-tool-${t}`,open:t===`running`||n,children:[(0,m.jsxs)(`summary`,{className:`code-tool-summary`,children:[(0,m.jsx)(`span`,{className:`code-tool-chevron`,children:`>`}),(0,m.jsx)(`span`,{className:`code-tool-name`,children:_e(e)}),(0,m.jsx)(`span`,{className:`code-tool-status`,children:t})]}),r&&(0,m.jsx)(`div`,{className:`code-tool-error-snippet`,children:r}),(e.toolContent?.length??0)>0&&(0,m.jsx)(`div`,{className:`code-tool-content`,children:e.toolContent.map(pe)}),e.toolOutput&&(0,m.jsxs)(`pre`,{className:`code-tool-output`,children:[e.toolOutput.slice(0,2e3),e.toolOutput.length>2e3?`...`:``]})]})})():e.role===`permission`&&e.permissionAudit?(()=>{let t=e.permissionAudit,n=t.decision.startsWith(`allow`)?`is-allow`:t.decision.startsWith(`reject`)?`is-deny`:``;return(0,m.jsxs)(`div`,{className:`code-permission-audit is-${t.decision} ${n}`.trim(),children:[(0,m.jsxs)(`div`,{className:`code-permission-audit-head`,children:[(0,m.jsx)(`span`,{children:`Permission`}),(0,m.jsx)(`strong`,{children:t.toolName}),(0,m.jsx)(`em`,{children:ve(t.decision)})]}),(0,m.jsxs)(`div`,{className:`code-permission-audit-meta`,children:[(0,m.jsxs)(`span`,{children:[`mode `,t.mode]}),(0,m.jsx)(`span`,{children:t.decisionMode}),t.optionId&&(0,m.jsx)(`span`,{children:t.optionId})]}),t.error&&(0,m.jsx)(`div`,{className:`code-permission-audit-error`,children:t.error})]})})():e.role===`thinking`?(0,m.jsxs)(`details`,{className:`code-thinking`,children:[(0,m.jsx)(`summary`,{className:`code-thinking-summary`,children:`Thinking...`}),(0,m.jsx)(`div`,{className:`code-thinking-text`,children:e.text})]}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`span`,{className:`code-message-role`,children:e.role===`user`?`You`:`JWC`}),(0,m.jsx)(`div`,{className:`code-message-text`,children:e.role===`assistant`?(0,m.jsx)(d.Suspense,{fallback:(0,m.jsx)(`span`,{children:e.text}),children:(0,m.jsx)(fe,{markdown:e.text,tableMode:`linear`,onLocalFileOpen:n})}):e.text})]})},t)}function J(){return(0,m.jsxs)(`div`,{className:`code-message code-message-assistant`,children:[(0,m.jsx)(`span`,{className:`code-message-role`,children:`JWC`}),(0,m.jsx)(`div`,{className:`code-message-text code-streaming`,children:`Thinking...`})]})}function Y({messages:e,sending:t,workingDir:n,transcriptRef:r,onOpenLocalFile:i}){let a=t&&e[e.length-1]?.role!==`assistant`,o=de({count:e.length+ +!!a,scrollElementRef:r,getItemKey:(0,d.useCallback)(t=>{let n=e[t];return n?K(n,t):`sending-${t}`},[e]),estimateSize:(0,d.useCallback)(t=>ye(e[t]),[e])});function s(e){if(me(e.target))return;let t=r.current;if(!t)return;let n=e.key.toLowerCase(),i=Math.max(160,Math.floor(t.clientHeight*.78));n===`d`||n===`j`||e.key===`PageDown`?(e.preventDefault(),t.scrollBy({top:i,behavior:`smooth`})):n===`u`||n===`k`||e.key===`PageUp`?(e.preventDefault(),t.scrollBy({top:-i,behavior:`smooth`})):e.key===`End`?(e.preventDefault(),t.scrollTo({top:t.scrollHeight,behavior:`smooth`})):e.key===`Home`&&(e.preventDefault(),t.scrollTo({top:0,behavior:`smooth`}))}return(0,m.jsx)(`div`,{className:`code-transcript`,ref:r,role:`log`,"aria-live":`polite`,tabIndex:0,onKeyDown:s,children:e.length===0?(0,m.jsxs)(`div`,{className:`code-transcript-empty`,children:[(0,m.jsx)(`p`,{children:`Start a Code session by typing a prompt below.`}),(0,m.jsxs)(`p`,{className:`code-transcript-cwd`,children:[`cwd: `,n||`not set`]})]}):(0,m.jsx)(`div`,{className:`code-transcript-virtual-spacer`,style:{height:`${o.totalSize}px`},children:o.virtualItems.map(t=>{let n=e[t.index];return(0,m.jsx)(`div`,{ref:o.measureElement,className:`code-transcript-virtual-row`,"data-code-transcript-idx":t.index,style:{transform:`translateY(${t.start}px)`},children:n?q(n,t.index,i):J()},t.key)})})})}function X(e){return e.split(`/`).filter(Boolean).slice(-2).join(`/`)||e}function be({workingDir:e,gitInfo:t,modelOptions:n,sessionTitle:r,usage:i,planEntries:a,onWorkingDirChange:o,cwdLocked:s=!1,workspaceFrozen:c=!1,onPickWorkingDir:l}){let[u,f]=(0,d.useState)(!1),[p,h]=(0,d.useState)(``),g=t?.status?.dirty,_=t?.worktrees.length??0,v=c||s,y=!!(!v&&l&&o);async function b(){if(!(!y||!l)){f(!0),h(``);try{let e=await l();e&&o?.(e)}catch(e){h(e instanceof Error?e.message:String(e))}finally{f(!1)}}}return(0,m.jsxs)(`div`,{className:`code-workspace-header`,children:[(0,m.jsxs)(`div`,{className:`code-workspace-primary`,children:[v?(0,m.jsx)(`span`,{className:`code-workspace-chip`,title:e,"aria-label":`Current Code workspace: ${e}`,children:X(e||`/tmp`)}):(0,m.jsxs)(`button`,{type:`button`,className:`code-workspace-picker`,disabled:!y||u,title:e||`Select Code workspace folder`,"aria-label":`Code workspace: ${e||`not set`}. Choose a folder.`,onClick:()=>void b(),children:[(0,m.jsx)(`span`,{className:`code-workspace-picker-label`,children:X(e||`/tmp`)}),(0,m.jsx)(`span`,{className:`code-workspace-picker-caret`,"aria-hidden":`true`,children:`▾`})]}),!v&&p&&(0,m.jsx)(`span`,{className:`code-workspace-cwd-error`,children:p}),t?.isRepo&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`span`,{className:`code-workspace-pill`,children:[t.branch??`detached`,t.head?` · ${t.head}`:``]}),(0,m.jsx)(`span`,{className:`code-workspace-pill ${g?`is-dirty`:``}`,children:g?`${t.status?.changed??0} changed · ${t.status?.untracked??0} untracked`:`clean`}),(0,m.jsxs)(`span`,{className:`code-workspace-pill`,title:t.currentWorktree?.path??void 0,children:[`worktree `,_]})]}),n?.degraded&&(0,m.jsx)(`span`,{className:`code-workspace-pill is-warning`,title:n.error,children:`provider fallback`})]}),(r||i.contextTokens!==void 0||a.length>0)&&(0,m.jsxs)(`div`,{className:`code-session-header`,children:[r&&(0,m.jsx)(`span`,{className:`code-session-title`,children:r}),i.contextTokens!==void 0&&i.contextLimit?(0,m.jsx)(`span`,{className:`code-context-meter`,title:`${i.contextTokens.toLocaleString()} / ${i.contextLimit.toLocaleString()} tokens${i.cost===void 0?``:` · $${i.cost.toFixed(4)}`}`,children:(0,m.jsx)(`span`,{className:`code-context-bar`,style:{width:`${Math.min(100,i.contextTokens/i.contextLimit*100)}%`}})}):null,a.length>0&&(0,m.jsx)(`div`,{className:`code-plan-entries`,children:a.map((e,t)=>(0,m.jsxs)(`span`,{className:`code-plan-entry code-plan-${e.status}`,children:[e.status===`completed`?`✓`:e.status===`in_progress`?`↻`:`○`,` `,e.title]},t))})]})]})}function xe({label:e,value:t,options:n,disabled:r,title:i,className:a=``,onChange:o}){let s=(0,d.useId)(),c=(0,d.useRef)(null),[l,u]=(0,d.useState)(!1),f=n.find(e=>e.value===t)??n[0],p=Math.max(0,n.findIndex(e=>e.value===f?.value));(0,d.useEffect)(()=>{if(!l)return;let e=e=>{c.current?.contains(e.target)||u(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[l]);let h=e=>{o(e),u(!1)};return(0,m.jsxs)(`div`,{ref:c,className:`code-footer-menu ${a}`.trim(),children:[(0,m.jsxs)(`button`,{type:`button`,className:`code-footer-menu-trigger`,disabled:r,title:i,"aria-label":e,"aria-haspopup":`listbox`,"aria-expanded":l,"aria-controls":s,onClick:()=>u(e=>!e),onKeyDown:e=>{if(!r){if(e.key===`Escape`){u(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=n[(p+(e.key===`ArrowDown`?1:-1)+n.length)%n.length];t&&h(t.value);return}(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),u(e=>!e))}},children:[(0,m.jsx)(`span`,{className:`code-footer-label`,children:e}),(0,m.jsx)(`strong`,{children:f?.label??t}),(0,m.jsx)(`span`,{className:`code-footer-chevron`,"aria-hidden":`true`,children:`⌃`})]}),l&&(0,m.jsx)(`div`,{id:s,className:`code-footer-dropup`,role:`listbox`,"aria-label":e,children:n.map(e=>(0,m.jsxs)(`button`,{type:`button`,className:`code-footer-dropup-option${e.value===t?` is-selected`:``}`,role:`option`,"aria-selected":e.value===t,onClick:()=>h(e.value),children:[(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:e.label}),e.detail&&(0,m.jsx)(`small`,{children:e.detail})]}),e.value===t&&(0,m.jsx)(`em`,{"aria-hidden":`true`,children:`✓`})]},e.value))})]})}function Se({provider:e,providerOptions:t,model:n,modelOptions:r,effort:i,effortOptions:a,permissionMode:o,disabled:s,onProviderChange:c,onModelChange:l,onEffortChange:u,onPermissionModeChange:d}){return(0,m.jsxs)(`div`,{className:`code-composer-footer`,children:[(0,m.jsx)(xe,{label:`Permission`,value:o,options:x,disabled:s,title:S[o],onChange:d}),t.length>0&&(0,m.jsx)(xe,{label:`Provider`,value:e,options:t.map(e=>({value:e,label:e})),disabled:s,title:e,onChange:c}),(0,m.jsx)(xe,{label:`Model`,value:n,options:r.map(e=>({value:e,label:e})),disabled:s,title:n,className:`code-footer-field-model`,onChange:l}),a.length>0&&(0,m.jsx)(xe,{label:`Effort`,value:i,options:a.map(e=>({value:e,label:e})),disabled:s,title:i,onChange:u})]})}function Ce(e){return(0,m.jsxs)(`div`,{className:`code-canvas-main`,children:[(0,m.jsx)(be,{gitInfo:e.gitInfo,modelOptions:e.modelOptions,sessionTitle:e.sessionTitle,usage:e.usage,planEntries:e.planEntries,workingDir:e.codeWorkingDir,cwdLocked:!!e.activeSessionId,onWorkingDirChange:e.onWorkingDirChange,workspaceFrozen:e.workspaceFrozen,onPickWorkingDir:e.onPickWorkingDir}),e.childRecovery&&(0,m.jsxs)(`section`,{className:`code-child-recovery`,role:`status`,"aria-live":`polite`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`span`,{children:`JWC child recovery`}),(0,m.jsxs)(`strong`,{children:[`ACP child exited: `,e.childRecovery.code]})]}),(0,m.jsx)(`p`,{children:e.childRecovery.message})]}),e.transportState!==`connected`&&(0,m.jsx)(`section`,{className:`code-transport-status is-${e.transportState}`,role:`status`,"aria-live":`polite`,children:e.transportState===`reconnecting`?`Live updates reconnecting…`:`Live updates disconnected — retrying.`}),(0,m.jsx)(Y,{messages:e.messages,sending:e.sending,workingDir:e.codeWorkingDir,transcriptRef:e.transcriptRef,onOpenLocalFile:e.onOpenLocalFile}),(0,m.jsx)(le,{permissions:e.permissions,onAnswer:e.onPermissionAnswer}),(0,m.jsx)(`div`,{className:`code-composer-dock`,children:(0,m.jsxs)(`div`,{className:`code-composer-surface`,"aria-label":`Code composer controls`,children:[(0,m.jsx)(ce,{inputText:e.inputText,sending:e.sending,showCommands:e.showCommands,availableCommands:e.availableCommands,onInputChange:e.onInputChange,onCommandSelect:e.onCommandSelect,onSubmit:e.onSubmit,onShowCommandsChange:e.onShowCommandsChange}),(0,m.jsx)(Se,{provider:e.provider,providerOptions:e.providerOptions,model:e.model,modelOptions:e.currentModelOptions,effort:e.effort,effortOptions:e.currentEffortOptions,permissionMode:e.permissionMode,disabled:e.disabled,onProviderChange:e.onFooterProviderChange,onModelChange:e.onModelChange,onEffortChange:e.onEffortChange,onPermissionModeChange:e.onPermissionModeChange})]})}),e.activePopup&&(0,m.jsx)(H,{popupKind:e.activePopup.kind,command:e.activePopup.command,modelOptions:e.modelOptions,provider:e.provider,model:e.model,modelAssignments:e.modelAssignments,modelPresets:e.modelPresets,permissionMode:e.permissionMode,disabled:e.disabled,activeSessionId:e.activeSessionId,error:e.error,onClose:e.onClosePopup,onRefreshProviders:e.onRefreshProviders,onProviderChange:e.onProviderChange,onUseModel:e.onUseModel,onUseForNewSessions:e.onUseForNewSessions,onSetDefaultModel:e.onSetDefaultModel,onSetModelAssignment:e.onSetModelAssignment,onClearModelAssignment:e.onClearModelAssignment,onPermissionModeChange:e.onPermissionModeChange})]})}var we={providers:[{id:`anthropic`,models:[`claude-sonnet-4-6`,`claude-opus-4-8`,`claude-opus-4-7`,`claude-opus-4-6`,`claude-haiku-4-5`,`claude-fable-5`],efforts:[`off`,`min`,`low`,`medium`,`high`,`xhigh`]}],defaultProvider:`anthropic`,defaultModel:`claude-sonnet-4-6`,degraded:!0},Te=re([{name:`/model`,description:`Choose provider, model, roles, thinking, profiles, and MRU state.`,source:`cli-jaw`},{name:`/provider`,description:`Review authenticated JWC providers.`,source:`cli-jaw`},{name:`/settings`,description:`Adjust Code mode session controls.`,source:`cli-jaw`}]);function Ee(e){let t=new Set,n=[];for(let r of[...e,...Te])t.has(r.name)||(t.add(r.name),n.push(r));return n}function De(e,t,n,r){if(r.appendMessage(O(n,{mode:t,decision:`pending`,decisionMode:t===`ask`?`pending`:`automatic`})),t===`ask`){r.enqueuePermission(n);return}let i=t===`always-allow`?`allow_always`:`reject_always`,a=E(n.options,i);if(!a){r.appendMessage(O(n,{mode:t,decision:`missing_option`,decisionMode:`system`,error:`${i} was not provided by JWC for this request.`})),r.enqueuePermission(n);return}(async()=>{try{await e.answerPermission(n.permissionId,a.optionId),r.appendMessage(O(n,{mode:t,decision:i,decisionMode:`automatic`,optionId:a.optionId,optionLabel:a.label}))}catch(e){r.appendMessage(O(n,{mode:t,decision:`answer_error`,decisionMode:`system`,optionId:a.optionId,optionLabel:a.label,error:e instanceof Error?e.message:String(e)}))}})()}async function Oe(e,t,n,r,i){let a=E(n.options,r);if(!a)return i(O(n,{mode:t,decision:`missing_option`,decisionMode:`system`,error:`${r} was not provided by JWC for this request.`})),!1;try{await e.answerPermission(n.permissionId,a.optionId),i(O(n,{mode:t,decision:r,decisionMode:`manual`,optionId:a.optionId,optionLabel:a.label}))}catch(e){i(O(n,{mode:t,decision:`answer_error`,decisionMode:`system`,optionId:a.optionId,optionLabel:a.label,error:e instanceof Error?e.message:String(e)}))}return!0}var ke=new Set([`code_user_message_chunk`,`code_agent_message_chunk`,`code_agent_thought_chunk`]);function Ae(e){let t=e?.content;return String(t?.text??e?.text??``)}function Z(e){let t=e?.messageId;return typeof t==`string`?t.trim():``}function je(e,t){if(!ke.has(e.event)||!t)return null;let n=Z(e.update??{}),r=typeof e.sseEventId==`string`&&e.sseEventId.trim()?e.sseEventId.trim():``,i=n?`msg:${n}`:r?`sse:${r}`:``;return i?`${e.sessionId??``}:${e.event}:${i}:${t}`:null}function Me(e,t){for(let n of t){let t=je(n,Ae(n.update));t&&e.add(t)}}function Ne(e,t,n){let r=je(t,n);return r?e.has(r)?!0:(e.add(r),!1):!1}function Pe(e,t){let n=e.trim(),r=t.trim();return r.length<80?!1:n===r}var Q=80,Fe=.7,Ie=.78,Le=32,Re=8;function ze(e){return e.replace(/\s+/g,` `).trim()}function Be(e){return e.split(/\r?\n/).map(e=>e.replace(/\s+/g,` `).trim()).filter(e=>e.length>=4)}function $(e,t){if(e.length===0)return 0;let n=0;for(let r of e)t.has(r)&&(n+=1);return n/e.length}function Ve(e){let t=ze(e);if(t.length<Le)return[];let n=[];for(let e=0;e<=t.length-Le;e+=Re)n.push(t.slice(e,e+Le));return n}function He(e,t){let n=ze(e),r=ze(t);if(n.length<Q||r.length<Q)return!1;if(r.includes(n))return!0;let i=Be(e),a=new Set(Be(t));if(i.length>=4&&$(i,a)>=Fe)return!0;let o=Ve(n);return o.length<3?!1:$(o,new Set(Ve(r)))>=Ie}function Ue(e,t){return!e||!t?`append`:e===t?`drop`:t.startsWith(e)?`replace`:e.startsWith(t)?`drop`:t.length>=e.length&&He(e,t)?`replace`:e.length>t.length&&He(t,e)?`drop`:`append`}function We(e){let t=e.toLowerCase();return t===`failed`||t===`error`||t===`errored`?`failed`:t===`completed`||t===`done`||t===`success`?`done`:`running`}function Ge(e){let t=[];for(let n of e){let e=n.update??{};if(n.event===`code_user_message_chunk`){let n=e.content,r=String(n?.text??e.text??``),i=Z(e);r&&t.push({role:`user`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_agent_message_chunk`){let n=e.content,r=String(n?.text??e.text??``);if(!r)continue;let i=Z(e),a=t[t.length-1];if(a?.role===`assistant`){let e=Ue(a.text,r);if(a.messageId&&i&&a.messageId!==i){if(e===`replace`){a.text=r,a.messageId=i;continue}t.push({role:`assistant`,text:r,messageId:i});continue}if(e===`drop`)continue;a.text=e===`replace`?r:a.text+r,i&&!a.messageId&&(a.messageId=i)}else t.push({role:`assistant`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_agent_thought_chunk`){let n=e.content,r=String(n?.text??e.text??``);if(!r)continue;let i=Z(e),a=t[t.length-1];a?.role===`thinking`&&(!a.messageId||!i||a.messageId===i)?(a.text+=r,i&&!a.messageId&&(a.messageId=i)):t.push({role:`thinking`,text:r,...i?{messageId:i}:{}})}else if(n.event===`code_tool_call`){let n=String(e.title??e.toolName??`tool`),r=String(e.toolCallId??``),i=String(e.status??`pending`),a=P(e);t.push({role:`tool`,text:n,toolName:n,toolCallId:r,toolContent:a,toolStatus:We(i)})}else if(n.event===`code_tool_call_update`){let n=String(e.toolCallId??``),r=String(e.status??``),i=P(e),a=g(t,n);if(a<0)continue;let o={...t[a]};r&&(o.toolStatus=We(r)),i.length>0&&(o.toolContent=i),t[a]=o}}return t}function Ke(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.isContentEditable}function qe(e,t,n){let r=(0,d.useRef)(null),i=(0,d.useMemo)(()=>{let t=e[e.length-1];if(!t)return`empty`;let n=t.toolContent?.reduce((e,t)=>e+JSON.stringify(t).length,0)??0;return`${e.length}:${t.role}:${t.text.length}:${t.toolOutput?.length??0}:${n}:${t.toolStatus??``}`},[e]),a=(0,d.useCallback)((e=`smooth`)=>{window.requestAnimationFrame(()=>{let t=r.current;t&&(t.scrollTo({top:t.scrollHeight,behavior:e}),window.setTimeout(()=>{let e=r.current;e&&e.scrollTo({top:e.scrollHeight,behavior:`auto`})},80))})},[]),o=(0,d.useCallback)((e,t=`smooth`)=>{window.requestAnimationFrame(()=>{let n=r.current;n&&n.scrollBy({top:e,behavior:t})})},[]),s=(0,d.useCallback)((e=`smooth`)=>{window.requestAnimationFrame(()=>{let t=r.current;t&&t.scrollTo({top:0,behavior:e})})},[]);return(0,d.useEffect)(()=>{a(e.length>1?`smooth`:`auto`)},[i,e.length,t,a]),(0,d.useEffect)(()=>{let e=e=>{if(e.defaultPrevented||n||e.metaKey||e.ctrlKey||e.altKey||Ke(e.target))return;let t=r.current;if(!t)return;let i=e.key.toLowerCase(),c=Math.max(160,Math.floor(t.clientHeight*.78));i===`d`||i===`j`||e.key===`PageDown`?(e.preventDefault(),o(c)):i===`u`||i===`k`||e.key===`PageUp`?(e.preventDefault(),o(-c)):e.key===`End`?(e.preventDefault(),a(`smooth`)):e.key===`Home`&&(e.preventDefault(),s(`smooth`))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,o,a,s]),{transcriptRef:r,scrollTranscriptToBottom:a}}function Je(e){return typeof window<`u`&&window.location.port===String(e)?`${window.location.origin}/api/events`:`http://127.0.0.1:${e}/api/events`}function Ye({port:e,sessionId:t,sessionIdRef:n,onEvent:r,onTransport:i}){let a=(0,d.useRef)(r);a.current=r;let o=(0,d.useRef)(i);o.current=i;let s=(0,d.useRef)(t);s.current=t,(0,d.useEffect)(()=>{if(!e)return;let t=new EventSource(Je(e));return t.onopen=()=>{o.current?.(`connected`)},t.onmessage=e=>{try{let t={...JSON.parse(e.data),sseEventId:e.lastEventId||void 0};if(t.topic!==`jwc`)return;let r=t.event===`code_child_exit`,i=n?.current??s.current;if(!i&&!r||!r&&t.sessionId&&t.sessionId!==i)return;a.current(t)}catch{}},t.onerror=()=>{o.current?.(t.readyState===EventSource.CLOSED?`disconnected`:`reconnecting`)},()=>t.close()},[e])}function Xe({port:e,workingDir:t,onWorkingDirChange:n,onOpenLocalFile:r}){let i=(0,d.useMemo)(()=>p(e),[e]),[a,o]=(0,d.useState)(t),[s,c]=(0,d.useState)(null),[l,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(``),[x,S]=(0,d.useState)(!1),[C,w]=(0,d.useState)([]),[ee,T]=(0,d.useState)([]),[E,D]=(0,d.useState)(Te),[O,k]=(0,d.useState)(!1),[A,j]=(0,d.useState)(null),[te,M]=(0,d.useState)(``),[N,F]=(0,d.useState)(``),[I,L]=(0,d.useState)({}),[ne,R]=(0,d.useState)([]),[z,ie]=(0,d.useState)(`anthropic`),[B,ae]=(0,d.useState)(`claude-sonnet-4-6`),[oe,V]=(0,d.useState)(`high`),[H,se]=(0,d.useState)(`always-allow`),[U,ce]=(0,d.useState)(we),[le,W]=(0,d.useState)(null),[ue,de]=(0,d.useState)(null),[fe,pe]=(0,d.useState)(null),[me,G]=(0,d.useState)(null),[he,ge]=(0,d.useState)(`connected`),[_e,ve]=(0,d.useState)(null),K=(0,d.useRef)(null),ye=(0,d.useRef)(!1),q=(0,d.useRef)(null),J=(0,d.useRef)(null),Y=(0,d.useRef)(new Set),X=(0,d.useRef)(new Set),be=(0,d.useMemo)(()=>B?_(z,B):``,[z,B]),{transcriptRef:xe,scrollTranscriptToBottom:Se}=qe(C,x,!!A);(0,d.useEffect)(()=>{K.current||s||o(t)},[s,t]);let ke=(0,d.useCallback)(e=>{K.current||s||l||(o(e??``),n?.(e))},[s,n,l]),je=(0,d.useCallback)(async()=>{let e=u();if(e?.folder?.pickFolder){let t=await e.folder.pickFolder();if(t.ok&&t.path)return t.path;if(t.error&&t.error!==`cancelled`)throw Error(t.error);return null}let t=await i.pickWorkspace();return t.ok&&t.path?t.path:null},[i]),Q=(0,d.useCallback)(e=>{ce(e);let t=e.providers.find(t=>t.id===e.defaultProvider)??e.providers[0],n=t?.models.includes(e.defaultModel)?e.defaultModel:t?.models[0]??``;ie(t?.id??`anthropic`),ae(n);let r=t?.efforts??[];r.length>0&&V(r.includes(`high`)?`high`:r[0]??``)},[]);(0,d.useEffect)(()=>{K.current=s},[s]),(0,d.useEffect)(()=>{if(typeof document>`u`){ve(null);return}return ve(document.getElementById(`code-session-sidebar-host`)),()=>ve(null)},[]);let Fe=(0,d.useCallback)(async()=>{Q(await i.listModelOptions())},[Q,i]),Ie=(0,d.useCallback)(async()=>{W(await i.listModelAssignments())},[i]);(0,d.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n,r]=await Promise.all([i.listModelOptions(),i.listModelAssignments(),i.listModelPresets()]);if(e)return;Q(t),W(n),de(r)}catch(t){e||(ce({...we,error:t instanceof Error?t.message:String(t)}),W(null),de(null))}})(),()=>{e=!0}},[Q,i]),(0,d.useEffect)(()=>{if(!a){pe(null);return}let e=!1;return i.getGitInfo(a).then(t=>{e||pe(t)},()=>{e||pe(null)}),()=>{e=!0}},[i,a]),(0,d.useEffect)(()=>{if(ye.current){ye.current=!1;return}c(null),K.current=null,w([]),T([]),R([]),F(``),L({}),S(!1),G(null),X.current=new Set},[a]),Ye({port:e,sessionId:s,sessionIdRef:K,onEvent:(0,d.useCallback)(e=>{let t=e.update??{},n=e.event;if(!(J.current&&e.sessionId===J.current&&n!==`code_child_exit`)){if(n===`code_agent_message_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{if(Y.current.has(n)&&e[e.length-1]?.role===`user`)return Y.current.delete(n),e;let t=e[e.length-1];if(t?.role===`assistant`&&Pe(t.text,n))return e;if(t?.role===`assistant`){let i=Ue(t.text,n);if(t.messageId&&r&&t.messageId!==r)return i===`replace`?[...e.slice(0,-1),{...t,text:n,messageId:r}]:[...e,{role:`assistant`,text:n,messageId:r}];if(i===`drop`)return e;let a=i===`replace`?n:t.text+n;return[...e.slice(0,-1),{...t,text:a,...r&&!t.messageId?{messageId:r}:{}}]}return[...e,{role:`assistant`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_user_message_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{if(q.current===n){let t=-1;for(let r=e.length-1;r>=0;--r){let i=e[r];if(i?.role===`user`&&i.text===n&&i.transient===`pending-user-echo`){t=r;break}}if(t>=0){q.current=null;let i=[...e];return i[t]={role:`user`,text:n,...r?{messageId:r}:{}},i}}return[...e,{role:`user`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_agent_thought_chunk`){let n=Ae(t);if(!n)return;let r=Z(t);if(Ne(X.current,e,n))return;w(e=>{let t=e[e.length-1];return t?.role===`thinking`&&(!t.messageId||!r||t.messageId===r)?[...e.slice(0,-1),{...t,text:t.text+n,...r&&!t.messageId?{messageId:r}:{}}]:[...e,{role:`thinking`,text:n,...r?{messageId:r}:{}}]})}else if(n===`code_tool_call`){let e=String(t.title??t.toolName??`tool`),n=String(t.toolCallId??``),r=String(t.status??`pending`),i=P(t);w(t=>[...t,{role:`tool`,text:e,toolName:e,toolCallId:n,toolContent:i,toolStatus:We(r)}])}else if(n===`code_tool_call_update`){let e=String(t.toolCallId??``),n=String(t.status??``),r=P(t);w(t=>{let i=g(t,e);if(i<0)return t;let a=[...t],o={...a[i]};return n&&(o.toolStatus=We(n)),r.length>0&&(o.toolContent=r),a[i]=o,a})}else if(n===`code_permission_request`){let t=String(e.permissionId??``),n=e.toolCall??{},r=e.options??[];t&&De(i,H,{permissionId:t,toolCall:n,options:r},{appendMessage:e=>w(t=>[...t,e]),enqueuePermission:e=>T(t=>[...t,e])})}else if(n===`code_session_info_update`){let e=t.title;typeof e==`string`&&F(e)}else if(n===`code_usage_update`){let e={};typeof t.contextTokens==`number`&&(e.contextTokens=t.contextTokens),typeof t.contextLimit==`number`&&(e.contextLimit=t.contextLimit),typeof t.totalCost==`number`&&(e.cost=t.totalCost),L(e)}else if(n===`code_plan`)R((t.entries??[]).filter(e=>e.title).map(e=>({title:String(e.title),status:String(e.status??`pending`)})));else if(n===`code_available_commands_update`)D(Ee(re(t.availableCommands)));else if(n===`code_child_exit`){let t=e.code===null||e.code===void 0?`unknown`:String(e.code),n=`JWC ACP child exited (code ${t}). Active Code sessions were closed. Send the prompt again to start a fresh session, or load a stored session from the sidebar.`;K.current=null,c(null),S(!1),T([]),G({code:t,message:n}),w(e=>[...e,{role:`assistant`,text:n}])}else n===`code_turn_done`?S(!1):n===`code_session_error`&&(w(t=>[...t,{role:`assistant`,text:`Error: ${e.reason??`unknown`}`}]),S(!1));setTimeout(()=>Se(`smooth`),50)}},[i,H,Se]),onTransport:ge});let Le=(0,d.useCallback)(async()=>{let e=y.trim();if(!(!e||x)){J.current=null,S(!0),v(!0),G(null),q.current=e,w(t=>[...t,{role:`user`,text:e,transient:`pending-user-echo`}]),b(``);try{let t=s;if(!t){let e=a||`/tmp`;t=(await i.createSession(e,be||void 0)).sessionId,K.current=t,c(t)}await i.sendPrompt(t,e)}catch(e){q.current=null,w(t=>[...t,{role:`assistant`,text:`Error: ${e instanceof Error?e.message:String(e)}`}]),S(!1)}}},[y,x,s,i,a,be]),Re=(0,d.useCallback)(e=>{b(e),k(e===`/`||e.startsWith(`/`)&&!e.includes(` `))},[]),ze=(0,d.useCallback)(e=>{if(!e.disabledReason){if(e.actionType===`popup`&&e.popupKind){M(``),j({kind:e.popupKind,command:e}),k(!1);return}b(`${e.displayName} `),k(!1)}},[]),Be=(0,d.useCallback)(async(e,t)=>{await Oe(i,H,e,t,e=>w(t=>[...t,e]))&&T(t=>t.filter(t=>t.permissionId!==e.permissionId))},[i,H]),$=(0,d.useCallback)(async(e,t,n)=>{M(``),ie(e),ae(t);let r=n?.closePopup??!0,a=n?.requireActiveSession??!0;if(!s){a&&M(`Start or load a Code session before applying a live model.`);return}try{await i.setSessionModel(s,_(e,t)),r&&j(null)}catch(e){M(e instanceof Error?e.message:String(e))}},[s,i]),Ve=(0,d.useCallback)(async(e,t)=>{M(``);try{Q(await i.setDefaultModel(_(e,t))),Ie()}catch(e){M(e instanceof Error?e.message:String(e))}},[Q,i,Ie]),He=(0,d.useCallback)(async(e,t,n,r)=>{M(``);try{W(await i.setModelAssignment(e,{provider:t,model:n,...r===void 0?{}:{thinkingLevel:r}}))}catch(e){M(e instanceof Error?e.message:String(e))}},[i]),Ke=(0,d.useCallback)(async e=>{M(``);try{W(await i.clearModelAssignment(e))}catch(e){M(e instanceof Error?e.message:String(e))}},[i]),Je=U.providers.find(e=>e.id===z)??U.providers[0],Xe=U.providers.map(e=>e.id),Ze=Je?.models??[],Qe=Je?.efforts??[],$e=e=>{let t=Ge(e.replayEvents??[]);X.current=new Set,Me(X.current,e.replayEvents??[]),Y.current=new Set(t.filter(e=>e.role===`assistant`&&e.text).map(e=>e.text)),K.current=e.sessionId,c(e.sessionId),e.cwd!==a&&(ye.current=!0,o(e.cwd)),w(t),T([]),R([]),F(e.title?.trim()||t.find(e=>e.role===`user`)?.text.split(/\r?\n/)[0]?.replace(/\s+/g,` `).trim()||``),L({}),S(!1),G(null)};if(!e)return(0,m.jsx)(`div`,{className:`code-canvas`,children:(0,m.jsx)(`div`,{className:`code-transcript-empty`,children:(0,m.jsx)(`p`,{children:`Server not available.`})})});let et=(0,m.jsx)(h,{client:i,activeSessionId:s,workingDir:a,onSelectSession:$e,onLoadSession:(e,t)=>{(async()=>{J.current=e,K.current=e,c(e),q.current=null,Y.current=new Set,X.current=new Set,w([]),R([]),F(``),S(!1);try{let n=await i.loadSession(e,t);if(K.current!==e)return;n.title&&F(n.title);let r=Ge(n.replayEvents??[]);X.current=new Set,Me(X.current,n.replayEvents??[]),Y.current=new Set(r.filter(e=>e.role===`assistant`&&e.text).map(e=>e.text)),w(r),S(!1)}catch(t){K.current===e&&(K.current=null,c(null)),w(e=>[...e,{role:`assistant`,text:`Failed to load session: ${t instanceof Error?t.message:String(t)}`}])}finally{J.current===e&&(J.current=null)}})()},onNewSession:()=>{K.current=null,J.current=null,q.current=null,Y.current=new Set,X.current=new Set,c(null),w([]),R([]),F(``),S(!1),v(!1)}}),tt=e=>{ie(e),ae(U.providers.find(t=>t.id===e)?.models[0]??``)},nt=(0,m.jsx)(Ce,{activePopup:A,activeSessionId:s,availableCommands:E,codeWorkingDir:a,currentEffortOptions:Qe,currentModelOptions:Ze,disabled:x,effort:oe,gitInfo:fe,childRecovery:me,transportState:he,inputText:y,messages:C,model:B,modelAssignments:le,modelOptions:U,modelPresets:ue,permissionMode:H,permissions:ee,planEntries:ne,error:te,provider:z,providerOptions:Xe,sending:x,sessionTitle:N,showCommands:O,transcriptRef:xe,usage:I,onClearModelAssignment:Ke,onClosePopup:()=>{M(``),j(null)},onCommandSelect:ze,onEffortChange:e=>{V(e),s&&i.setSessionConfig(s,`thinking`,e)},onFooterProviderChange:e=>{tt(e);let t=U.providers.find(t=>t.id===e),n=t?.models[0]??``;V(t?.efforts.includes(`high`)?`high`:t?.efforts[0]??``),n&&$(e,n,{closePopup:!1,requireActiveSession:!1})},onInputChange:Re,onModelChange:e=>{$(z,e,{closePopup:!1,requireActiveSession:!1})},onPermissionAnswer:Be,onPermissionModeChange:se,onProviderChange:tt,onRefreshProviders:()=>{Fe()},onSetDefaultModel:Ve,onSetModelAssignment:He,onShowCommandsChange:k,onSubmit:()=>{Le()},onUseModel:$,onUseForNewSessions:(e,t)=>{$(e,t,{requireActiveSession:!1,closePopup:!1}),j(null)},onWorkingDirChange:ke,onOpenLocalFile:r,workspaceFrozen:l,onPickWorkingDir:je});return _e?(0,m.jsxs)(m.Fragment,{children:[(0,f.createPortal)((0,m.jsx)(`div`,{className:`code-manager-session-navigator-content`,children:et}),_e),(0,m.jsx)(`div`,{className:`code-canvas code-canvas-workbench`,children:nt})]}):(0,m.jsxs)(`div`,{className:`code-canvas`,children:[(0,m.jsx)(`div`,{className:`code-canvas-sidebar`,children:et}),nt]})}export{Xe as CodeCanvas};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";var r=e(t(),1),i=n(),a=`/api/dashboard/memory`,o=[`provider`,`apikey`,`test`,`indexing`,`active`],s={provider:`Provider`,apikey:`API Key`,test:`Test connection`,indexing:`Indexing`,active:`Active`},c=[{value:``,label:`(select)`},{value:`openai`,label:`OpenAI`},{value:`gemini`,label:`Gemini`},{value:`voyage`,label:`Voyage AI`},{value:`vertex`,label:`Vertex AI`},{value:`local`,label:`Local (Ollama)`}],l=[{value:`hybrid`,label:`Hybrid (FTS5 + Embedding)`},{value:`embedding`,label:`Embedding only`},{value:`fts5`,label:`FTS5 only (no vectors)`}],u={openai:{model:`text-embedding-3-small`,dimensions:1536},gemini:{model:`gemini-embedding-001`,dimensions:768},voyage:{model:`voyage-3-lite`,dimensions:512},vertex:{model:`text-embedding-005`,dimensions:768},local:{model:`nomic-embed-text`,dimensions:768}};async function d(e,t){let n=await fetch(`${a}${e}`,{credentials:`same-origin`,headers:{"Content-Type":`application/json`},...t});if(!n.ok)throw Error(`HTTP ${n.status}`);return n.json()}function f(e,t,n){return e?.provider?e.provider!==`local`&&!e.apiKey&&!e.apiKeyPresent?`apikey`:t?.state===`ACTIVE_HYBRID`||t?.state===`ACTIVE_EMBEDDING`?`active`:t?.state===`INDEXING`?`indexing`:n?!t?.active&&(t?.indexedChunks??0)<(t?.totalChunks??1)?`indexing`:`active`:`test`:`provider`}function p({current:e}){let t=o.indexOf(e);return(0,i.jsx)(`div`,{className:`embed-stepper`,role:`list`,children:o.map((e,n)=>{let r=n<t,a=n===t;return(0,i.jsxs)(`div`,{className:r?`embed-step is-done`:a?`embed-step is-active`:`embed-step`,role:`listitem`,"aria-current":a?`step`:void 0,children:[(0,i.jsx)(`span`,{className:`embed-step-badge`,children:r?`✓`:n+1}),(0,i.jsx)(`span`,{className:`embed-step-label`,children:s[e]})]},e)})})}function m(){let[e,t]=(0,r.useState)(null),[n,o]=(0,r.useState)(null),[s,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(!0),[_,v]=(0,r.useState)(``),[y,b]=(0,r.useState)(``),[x,S]=(0,r.useState)(1536),[C,w]=(0,r.useState)(``),[T,E]=(0,r.useState)(`hybrid`),[D,O]=(0,r.useState)(``),[k,A]=(0,r.useState)(null),[j,M]=(0,r.useState)(``),[N,P]=(0,r.useState)(!1),[F,I]=(0,r.useState)(!1),[L,R]=(0,r.useState)({done:0,total:0}),[z,B]=(0,r.useState)(null),V=(0,r.useRef)(null),H=(0,r.useCallback)(async()=>{try{let[e,n,r]=await Promise.all([d(`/embed-config`),d(`/embed-state`),d(`/embed-estimate`)]);t(e.config),o(n.status);let{ok:i,...a}=r;m(a)}catch{B(`Failed to load embedding state`)}finally{g(!1)}},[]);(0,r.useEffect)(()=>{H()},[H]),(0,r.useEffect)(()=>{e&&(v(e.provider||``),b(e.model||u[e.provider||``]?.model||``),S(e.dimensions??u[e.provider||``]?.dimensions??1536),w(e.apiKey||``),E(e.searchMode||`hybrid`),O(e.baseUrl||``))},[e]);let U=f(e,n,k),W=(0,r.useCallback)(async e=>{P(!0),B(null);try{await d(`/embed-config`,{method:`POST`,body:JSON.stringify(e)}),await H()}catch(e){B(e instanceof Error?e.message:String(e))}finally{P(!1)}},[H]),G=(0,r.useCallback)(()=>{if(!_)return;A(null),M(``);let e={provider:_,model:y,dimensions:x,searchMode:T};D&&(e.baseUrl=D),W(e)},[_,y,x,T,D,W]),K=(0,r.useCallback)(()=>{W({apiKey:C})},[C,W]),q=(0,r.useCallback)(async()=>{A(null),M(`Testing...`),B(null);try{let e={provider:_,model:y,dimensions:x,test:!0};C.trim()&&(e.apiKey=C.trim());let t=await d(`/embed-config`,{method:`POST`,body:JSON.stringify(e)});t.testResult===`ok`?(A(!0),M(`Connection successful`)):(A(!1),M(t.testError||`Connection failed`))}catch(e){A(!1),M(e instanceof Error?e.message:String(e))}},[_,y,x,C]),J=(0,r.useCallback)(async()=>{I(!0),R({done:0,total:0}),B(null);let e=new AbortController;V.current=e;try{let t=await fetch(`${a}/reindex-stream`,{signal:e.signal,credentials:`same-origin`});if(!t.ok||!t.body)throw Error(`HTTP ${t.status}`);let n=t.body.getReader(),r=new TextDecoder,i=``;for(;;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
|
|
2
2
|
`);i=a.pop()||``;for(let e of a)if(e.startsWith(`data: `))try{let t=JSON.parse(e.slice(6));if(t.complete){I(!1),await H();return}if(t.error){B(String(t.error)),I(!1);return}typeof t.done==`number`&&R({done:t.done,total:t.total||0})}catch{}}I(!1),await H()}catch(e){e.name!==`AbortError`&&B(e instanceof Error?e.message:String(e)),I(!1)}},[H]);if((0,r.useEffect)(()=>()=>V.current?.abort(),[]),h)return(0,i.jsx)(`p`,{className:`dashboard-settings-row-description`,children:`Loading...`});let Y=n?.state===`NEEDS_REINDEX`,X=n?.state===`ACTIVE_HYBRID`||n?.state===`ACTIVE_EMBEDDING`;return(0,i.jsxs)(`div`,{className:`dashboard-embed-section`,children:[(0,i.jsx)(p,{current:U}),(0,i.jsxs)(`fieldset`,{className:`dashboard-embed-fieldset`,children:[(0,i.jsx)(`legend`,{children:`Provider`}),(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-provider`,children:`Provider`}),(0,i.jsx)(`select`,{id:`embed-provider`,value:_,onChange:e=>{let t=e.target.value;v(t),A(null);let n=u[t];n&&(b(n.model),S(n.dimensions))},children:c.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-search-mode`,children:`Search mode`}),(0,i.jsx)(`select`,{id:`embed-search-mode`,value:T,onChange:e=>E(e.target.value),children:l.map(e=>(0,i.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-model`,children:`Model`}),(0,i.jsx)(`input`,{id:`embed-model`,type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:u[_]?.model||`model name`})]}),(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-dimensions`,children:`Dimensions`}),(0,i.jsx)(`input`,{id:`embed-dimensions`,type:`number`,min:64,max:4096,value:x,onChange:e=>S(Number(e.target.value)||1536)})]}),(_===`local`||_===`vertex`)&&(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-base-url`,children:_===`vertex`?`Project ID / Region`:`Base URL`}),(0,i.jsx)(`input`,{id:`embed-base-url`,type:`text`,value:D,onChange:e=>O(e.target.value),placeholder:_===`local`?`http://localhost:11434`:`project-id/us-central1`})]}),(0,i.jsx)(`button`,{type:`button`,className:`dashboard-embed-btn`,disabled:!_||N,onClick:G,children:N?`Saving...`:`Save provider`})]}),(0,i.jsxs)(`fieldset`,{className:`dashboard-embed-fieldset`,children:[(0,i.jsx)(`legend`,{children:`API Key`}),_===`local`?(0,i.jsx)(`p`,{className:`dashboard-settings-row-description`,children:`Local provider uses Ollama — no API key needed.`}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:`dashboard-embed-field`,children:[(0,i.jsx)(`label`,{htmlFor:`embed-api-key`,children:`API Key`}),(0,i.jsx)(`input`,{id:`embed-api-key`,type:`password`,value:C,onChange:e=>w(e.target.value),placeholder:`sk-...`,disabled:!_})]}),(0,i.jsx)(`button`,{type:`button`,className:`dashboard-embed-btn`,disabled:!C||N,onClick:K,children:`Save key`})]})]}),(0,i.jsxs)(`fieldset`,{className:`dashboard-embed-fieldset`,children:[(0,i.jsx)(`legend`,{children:`Connection test`}),(0,i.jsx)(`button`,{type:`button`,className:`dashboard-embed-btn`,disabled:!_||!C&&!e?.apiKeyPresent&&_!==`local`,onClick:()=>void q(),children:`Test connection`}),j&&(0,i.jsxs)(`p`,{className:k?`dashboard-embed-ok`:`dashboard-embed-err`,role:`status`,children:[k?`✓ `:`✗ `,j]})]}),(0,i.jsxs)(`fieldset`,{className:`dashboard-embed-fieldset`,children:[(0,i.jsxs)(`legend`,{children:[`Indexing`,s&&(0,i.jsxs)(`small`,{children:[` — `,s.totalChunks,` chunks · ~`,s.batches,` batches · ~`,Math.ceil(s.estimatedSeconds),`s · $`,s.estimatedCost.toFixed(4)]})]}),F?(0,i.jsxs)(`div`,{className:`embed-progress`,children:[(0,i.jsx)(`div`,{className:`embed-progress-bar`,children:(0,i.jsx)(`div`,{className:`embed-progress-fill`,style:{width:L.total>0?`${Math.round(L.done/L.total*100)}%`:`0%`}})}),(0,i.jsxs)(`span`,{className:`dashboard-settings-row-description`,children:[L.done,`/`,L.total,` batches`]})]}):(0,i.jsx)(`button`,{type:`button`,className:`dashboard-embed-btn`,disabled:!k&&!X&&!Y,onClick:()=>void J(),children:Y?`Re-index (provider changed)`:X?`Re-index`:`Start indexing`})]}),(0,i.jsxs)(`fieldset`,{className:`dashboard-embed-fieldset`,children:[(0,i.jsx)(`legend`,{children:`Status`}),n?(0,i.jsxs)(`dl`,{className:`embed-status-grid`,children:[(0,i.jsx)(`dt`,{children:`State`}),(0,i.jsx)(`dd`,{children:(0,i.jsx)(`code`,{children:n.state})}),(0,i.jsx)(`dt`,{children:`Mode`}),(0,i.jsx)(`dd`,{children:n.mode}),(0,i.jsx)(`dt`,{children:`Provider`}),(0,i.jsxs)(`dd`,{children:[n.provider||`-`,` / `,n.model||`-`]}),(0,i.jsx)(`dt`,{children:`Indexed`}),(0,i.jsxs)(`dd`,{children:[n.indexedChunks,` chunks`]}),(0,i.jsx)(`dt`,{children:`DB size`}),(0,i.jsx)(`dd`,{children:n.dbSizeBytes>0?`${(n.dbSizeBytes/1024/1024).toFixed(1)} MB`:`-`}),(0,i.jsx)(`dt`,{children:`Last sync`}),(0,i.jsx)(`dd`,{children:n.lastSyncAt||`never`}),(0,i.jsx)(`dt`,{children:`Fallback`}),(0,i.jsx)(`dd`,{children:n.fallback?`Yes (${n.reason})`:`No`})]}):(0,i.jsx)(`p`,{className:`dashboard-settings-row-description`,children:`No state available`})]}),z&&(0,i.jsx)(`p`,{className:`dashboard-embed-err`,role:`alert`,children:z})]})}export{m as DashboardEmbeddingSection};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{a as r,i,n as a,t as o}from"./page-shell-LF7vVVfG.js";import{a as s,s as c}from"./fields-zkeByFQW.js";var l=e(t(),1),u=n();function d(){return{async get(e){let t=await fetch(e);if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return await t.json()},async patch(e,t){let n=await fetch(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(`PATCH ${e} → ${n.status}`);return await n.json()}}}var f=[`meta.label`,`meta.group`,`meta.favorite`,`meta.hidden`,`meta.notes`];function p(e,t){let n=e?.registry?.instances?.[String(t)];return{label:n?.label??null,favorite:n?.favorite===!0,group:n?.group??null,hidden:n?.hidden===!0,notes:n?.notes??null}}function m(e){return{label:e.label||``,group:e.group||``,favorite:e.favorite,hidden:e.hidden,notes:e.notes||``}}function h({port:e,client:t,dirty:n,registerSave:h,managerClient:g}){let{state:_,refresh:v,setData:y}=r(t,`__dashboard_meta_unused__`,[e]),[b,x]=(0,l.useState)(null),[S,C]=(0,l.useState)(null),[w,T]=(0,l.useState)({label:``,group:``,favorite:!1,hidden:!1,notes:``}),E=g||d();(0,l.useEffect)(()=>{let t=!1;return C(null),E.get(`/api/dashboard/registry`).then(n=>{t||(x(n),T(m(p(n,e))))}).catch(e=>{t||C(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e]),(0,l.useEffect)(()=>()=>{for(let e of f)n.remove(e)},[n]);let D=p(b,e),O=(0,l.useCallback)((e,t)=>n.set(e,t),[n]),k=(0,l.useCallback)(async()=>{let t=w.label.trim()||null,r=w.group.trim()||null,i=w.notes.trim()||null,a={instances:{[String(e)]:{label:t,group:r,favorite:w.favorite,hidden:w.hidden,notes:i}}},o=await E.patch(`/api/dashboard/registry`,a);x(o),T(m(p(o,e)));for(let e of f)n.remove(e)},[w,E,n,e]);return(0,l.useEffect)(()=>{if(h)return h(k),()=>h(null)},[h,k]),S?(0,u.jsx)(o,{message:S}):b?(0,u.jsx)(`form`,{className:`settings-page-form settings-form`,onSubmit:e=>{e.preventDefault(),k()},children:(0,u.jsxs)(i,{title:`Dashboard meta`,hint:`Manager-side metadata for this instance. Stored in the dashboard registry.`,children:[(0,u.jsx)(c,{id:`dashmeta-label`,label:`Label`,value:w.label,placeholder:`(unset — falls back to home folder name)`,onChange:e=>{T({...w,label:e}),O(`meta.label`,{value:e,original:D.label||``,valid:!0})}}),(0,u.jsx)(c,{id:`dashmeta-group`,label:`Group`,value:w.group,placeholder:`e.g. work, personal`,onChange:e=>{T({...w,group:e}),O(`meta.group`,{value:e,original:D.group||``,valid:!0})}}),(0,u.jsx)(s,{id:`dashmeta-favorite`,label:`Pin favorite`,value:w.favorite,onChange:e=>{T({...w,favorite:e}),O(`meta.favorite`,{value:e,original:D.favorite,valid:!0})}}),(0,u.jsx)(s,{id:`dashmeta-hidden`,label:`Hide by default`,description:`Hide from the default instance list.`,value:w.hidden,onChange:e=>{T({...w,hidden:e}),O(`meta.hidden`,{value:e,original:D.hidden,valid:!0})}}),(0,u.jsxs)(`label`,{className:`settings-field`,htmlFor:`dashmeta-notes`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:`Notes`}),(0,u.jsx)(`textarea`,{id:`dashmeta-notes`,rows:4,value:w.notes,placeholder:`Free-form notes only the dashboard remembers.`,onChange:e=>{let t=e.target.value;T({...w,notes:t}),O(`meta.notes`,{value:t,original:D.notes||``,valid:!0})}})]})]})}):(0,u.jsx)(a,{label:`Loading dashboard registry…`})}var g={readInstance:p,toDraft:m,META_KEYS:f};export{g as __test__,h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.design-panel{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;overflow:hidden}.design-toolbar{border-bottom:1px solid var(--border-subtle);background:var(--bg-panel);flex:none;align-items:center;gap:6px;min-height:34px;padding:4px 8px;display:flex}.design-toolbar-group{flex:none;align-items:center;gap:4px;display:flex}.design-toolbar-btn{all:unset;box-sizing:border-box;border:1px solid var(--border-subtle);height:24px;color:var(--text-dim);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;padding:0 8px;font-size:11px;display:inline-flex}.design-toolbar-btn:hover:not(:disabled),.design-toolbar-btn:focus-visible{background:var(--bg-hover);color:var(--text-base)}.design-toolbar-btn:disabled{opacity:.4;cursor:default}.design-page-selector{border:1px solid var(--border-subtle);background:var(--bg-panel);min-width:0;height:24px;color:var(--text-base);text-overflow:ellipsis;border-radius:6px;flex:auto;padding:0 6px;font-size:12px}.design-viewport{background:var(--bg-panel);flex:auto;min-width:0;min-height:0;position:relative;overflow:hidden}.design-viewport-frame{background:#fff;border:0;width:100%;height:100%;display:block}.design-viewport-empty{color:var(--text-dim);text-align:center;justify-content:center;align-items:center;padding:24px;font-size:12px;display:flex}.design-status{border-bottom:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-dim);flex:none;align-items:center;gap:8px;padding:4px 8px;font-size:11px;display:flex}.design-status-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.design-status-dismiss{all:unset;cursor:pointer;color:var(--text-dim);margin-left:auto;padding:0 4px}.design-status-dismiss:hover{color:var(--text-base)}.design-create-row{border-bottom:1px solid var(--border-subtle);background:var(--bg-panel);flex:none;align-items:center;gap:6px;padding:4px 8px;display:flex}.design-create-input{border:1px solid var(--border-subtle);background:var(--bg-panel);min-width:0;height:24px;color:var(--text-base);border-radius:6px;flex:auto;padding:0 8px;font-size:12px}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{T as r}from"./api-C9dOxby7.js";import{t as i}from"./desktop-bridge-CvdhnJQo.js";import{i as a}from"./PanelLayoutProvider-XpTo-i_s.js";var o=e(t(),1),s=`/api/dashboard/design`,c=class extends Error{constructor(e){super(`design store unavailable (${e})`),this.name=`DesignApiUnavailableError`}};async function l(e,t){let n=await fetch(`${s}${e}`,t);if(n.status===404||n.status===501)throw new c(n.status);let r=await n.json().catch(()=>null);if(!n.ok||r===null)throw Error(r?.error??`design api failed: ${n.status}`);return r}async function u(e){return(await l(`/pages${e?`?project=${encodeURIComponent(e)}`:``}`)).pages??[]}async function d(e){let t=await l(`/pages`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.page)throw Error(`create failed`);return t.page}async function f(e){let t=await l(`/pages/${encodeURIComponent(e)}/local-paths`);if(!t.paths)throw Error(`paths unavailable`);return t.paths}async function p(e,t){return l(`/pages/${encodeURIComponent(e)}/export`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t?{target:t}:{})})}async function m(e,t=`manual`){let n=await l(`/pages/${encodeURIComponent(e)}/snapshots`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({label:t})});if(!n.snapshot)throw Error(`snapshot failed`);return n.snapshot}async function h(){return(await l(`/version`)).version??0}function g(e,t){let n=typeof t==`number`?`?rev=${t}`:``;return`${s}/pages/${encodeURIComponent(e)}/preview${n}`}var _=n();function v(e){return(0,_.jsxs)(`select`,{className:`design-page-selector`,"aria-label":`Design pages (${e.pages.length})`,title:`${e.pages.length} pages`,disabled:e.disabled||e.pages.length===0,value:e.selectedPageId??``,onChange:t=>e.onSelect(t.target.value||null),children:[e.pages.length===0&&(0,_.jsx)(`option`,{value:``,children:`No pages`}),e.pages.map(e=>(0,_.jsx)(`option`,{value:e.id,children:e.title},e.id))]})}function y(e){if(!e.previewUrl)return(0,_.jsx)(`div`,{className:`design-viewport design-viewport-empty`,children:(0,_.jsx)(`span`,{children:e.emptyMessage})});let t=e.zoom>0?e.zoom:1;return(0,_.jsx)(`div`,{className:`design-viewport`,children:(0,_.jsx)(`iframe`,{className:`design-viewport-frame`,title:`Design preview`,src:e.previewUrl,sandbox:``,style:t===1?void 0:{transform:`scale(${t})`,transformOrigin:`0 0`,width:`${100/t}%`,height:`${100/t}%`}})})}var b=[.5,.75,1,1.25,1.5];function x(e){let{dispatch:t}=a(),n=e.tab.id,s=e.tab.design??{},l=s.zoom&&s.zoom>0?s.zoom:1,[x,S]=(0,o.useState)({kind:`loading`}),[C,w]=(0,o.useState)(null),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(``);(0,o.useEffect)(()=>{(s.projectKey===void 0||s.projectKey===null)&&t({type:`SET_DESIGN_TAB_STATE`,tabId:n,patch:{projectKey:e.primaryProjectDir}})},[]);let k=s.projectKey??e.primaryProjectDir??null,A=(0,o.useCallback)(async()=>{S({kind:`loading`});try{S({kind:`ready`,pages:await u(k)})}catch(e){e instanceof c?S({kind:`unavailable`}):S({kind:`error`,message:e.message})}},[k]);(0,o.useEffect)(()=>{A()},[A]),(0,o.useEffect)(()=>{let e=!1,t=-1,n=window.setInterval(()=>{h().then(n=>{e||(t!==-1&&n!==t&&A(),t=n)}).catch(()=>{})},3e3);return()=>{e=!0,window.clearInterval(n)}},[A]);let j=(0,o.useCallback)(()=>{let e=D.trim();e&&(w(`Creating page...`),d({title:e,projectKey:k}).then(e=>(E(!1),O(``),w(`Created ${e.title}`),t({type:`SET_DESIGN_TAB_STATE`,tabId:n,patch:{pageId:e.id}}),A())).catch(e=>w(e.message)))},[t,D,k,A,n]),M=x.kind===`ready`?x.pages:[],N=M.find(e=>e.id===s.pageId)??M[0]??null;(0,o.useEffect)(()=>{let e=N?.id??null;x.kind===`ready`&&e!==(s.pageId??null)&&t({type:`SET_DESIGN_TAB_STATE`,tabId:n,patch:{pageId:e}})},[s.pageId,t,N?.id,x.kind,n]),(0,o.useEffect)(()=>{N&&t({type:`SET_RIGHT_SIDEBAR_TAB_META`,tabId:n,patch:{specificName:N.title,sourceLabel:N.id}})},[t,N,n]);let P=(0,o.useCallback)(e=>{t({type:`SET_DESIGN_TAB_STATE`,tabId:n,patch:{pageId:e}})},[t,n]),F=(0,o.useCallback)(()=>{if(N){if(e.selectedInstancePort==null){w(`Select an instance before running a design generation.`);return}w(`Queueing design run...`),m(N.id,`before`).then(()=>f(N.id)).then(t=>r(e.selectedInstancePort,[`Design run request`,``,`Page: ${N.title} (${N.id})`,`Page directory (your ONLY write target for this run): ${t.pageDir}`,`Artifact: ${t.artifactPath}`,`Brief: ${t.promptPath} — read it first; it holds the page requirements.`,``,"Update artifact.html in place (direct file write or `jaw design files ... write --stdin`).",`Write allowlist inside the page directory: artifact.html, prompt.md, page.json, assets/*.`,`Preview is CSP-locked (script-src 'none'): produce STATIC self-contained HTML/CSS — no <script>, no external CDN references; inline styles/SVG only.`,`A before-snapshot was already taken; restore points live under the page snapshots/ directory.`,`Do not write anywhere else; the user reviews the result live in the Manager Design tab.`,`If the design skill is active, follow its "Design run request" agent contract.`].join(`
|
|
2
|
+
`))).then(t=>{w(t.ok?`Design run queued on instance ${e.selectedInstancePort}.`:`Run enqueue failed (${t.status}).`)}).catch(e=>w(e.message))}},[e.selectedInstancePort,N]),I=(0,o.useCallback)(()=>{!N||!e.onOpenInBrowser||e.onOpenInBrowser(`${window.location.origin}${g(N.id,N.revision)}`)},[e,N]),L=(0,o.useCallback)(()=>{N&&f(N.id).then(e=>i()?.folder?.revealPath?.(e.pageDir)).catch(e=>w(e.message))},[N]),R=(0,o.useCallback)(()=>{N&&(w(`Exporting...`),p(N.id).then(e=>{w(`Exported to ${e.exportedTo}`),t({type:`FOCUS_OR_CREATE_FIRST_RIGHT_SIDEBAR_TAB`,kind:`diff`})}).catch(e=>w(e.message)))},[t,N]),z=(0,o.useCallback)(()=>{t({type:`SET_DESIGN_TAB_STATE`,tabId:n,patch:{zoom:b[(b.indexOf(l)+1)%b.length]??1}})},[t,n,l]),B=N?g(N.id,N.revision):null,V=x.kind===`loading`?`Loading design pages...`:x.kind===`unavailable`?`Design store unavailable — update and restart the manager server (Phase 2 backend).`:x.kind===`error`?`Design store error: ${x.message}`:"No design pages yet. Create one with `jaw design create` or an agent run.";return(0,_.jsxs)(`div`,{className:`design-panel`,children:[(0,_.jsxs)(`div`,{className:`design-toolbar`,children:[(0,_.jsxs)(`div`,{className:`design-toolbar-group`,children:[(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Reveal page directory`,"aria-label":`Reveal page directory`,disabled:!N,onClick:L,children:`Reveal`}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Export to project`,"aria-label":`Export to project`,disabled:!N,onClick:R,children:`Export`}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Reload from disk`,"aria-label":`Reload from disk`,onClick:()=>void A(),children:`Reload`})]}),(0,_.jsx)(v,{pages:M,selectedPageId:N?.id??null,disabled:x.kind!==`ready`,onSelect:P}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`New design page`,"aria-label":`New design page`,disabled:x.kind!==`ready`,onClick:()=>E(e=>!e),children:`+`}),(0,_.jsxs)(`div`,{className:`design-toolbar-group`,children:[(0,_.jsxs)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Cycle zoom`,"aria-label":`Zoom ${Math.round(l*100)}%`,onClick:z,children:[Math.round(l*100),`%`]}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Run: queue a design generation on the selected instance`,"aria-label":`Run design generation`,disabled:!N,onClick:F,children:`Run`}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,title:`Open preview in a Browser tab`,"aria-label":`Open in Browser`,disabled:!N||!e.onOpenInBrowser,onClick:I,children:`Browser`})]})]}),T&&(0,_.jsxs)(`div`,{className:`design-create-row`,children:[(0,_.jsx)(`input`,{className:`design-create-input`,type:`text`,value:D,placeholder:`New page title...`,"aria-label":`New page title`,onChange:e=>O(e.target.value),onKeyDown:e=>{e.key===`Enter`&&j(),e.key===`Escape`&&E(!1)}}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,disabled:!D.trim(),onClick:j,children:`Create`}),(0,_.jsx)(`button`,{type:`button`,className:`design-toolbar-btn`,onClick:()=>E(!1),children:`Cancel`})]}),C&&(0,_.jsxs)(`div`,{className:`design-status`,role:`status`,children:[(0,_.jsx)(`span`,{className:`design-status-text`,children:C}),(0,_.jsx)(`button`,{type:`button`,className:`design-status-dismiss`,"aria-label":`Dismiss`,onClick:()=>w(null),children:`×`})]}),(0,_.jsx)(y,{previewUrl:B,zoom:l,emptyMessage:V})]})}export{x as DesignPanel};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{t as r}from"./desktop-bridge-CvdhnJQo.js";var i=e(t(),1);async function a(e,t){let n=await e();return n.ok?n:t()}function o(e,t){return e?{getRepoRoot:n=>a(()=>e.getRepoRoot(n),()=>t.getRepoRoot(n)),getRepoCandidates:n=>a(()=>e.getRepoCandidates(n),()=>t.getRepoCandidates(n)),getScmSnapshot:(n,r)=>a(()=>e.getScmSnapshot(n,r),()=>t.getScmSnapshot(n,r)),runScmOperation:(n,r)=>a(()=>e.runScmOperation(n,r),()=>t.runScmOperation(n,r)),getDiffSummary:(n,r)=>a(()=>e.getDiffSummary(n,r),()=>t.getDiffSummary(n,r)),getFileDiff:(n,r,i)=>a(()=>e.getFileDiff(n,r,i),()=>t.getFileDiff(n,r,i))}:t}async function s(e,t){let n=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await n.json().catch(()=>null);return!n.ok||!r?{ok:!1,error:r?.error??`request failed: ${n.status}`}:r}function c(e,t){return{selectedInstancePort:e?.port??null,settings:{diffRootPolicy:t.diffRootPolicy,diffPinnedRootByPort:t.diffPinnedRootByPort,diffRecentRepoRoots:t.diffRecentRepoRoots}}}function l(e,t){return{getRepoRoot:async()=>({ok:!1,error:`Repository root resolution is server-derived in web mode`}),getRepoCandidates:async n=>s(`/api/dashboard/git/repo-candidates`,c(e,t)),getScmSnapshot:async(n,r)=>s(`/api/dashboard/git/scm-snapshot`,{...c(e,t),repoRoot:n,options:r}),runScmOperation:async(n,r)=>s(`/api/dashboard/git/scm-operation`,{...c(e,t),repoRoot:n,operation:r}),getDiffSummary:async(n,r)=>s(`/api/dashboard/git/diff-summary`,{...c(e,t),repoRoot:n,options:r}),getFileDiff:async(n,r,i)=>s(`/api/dashboard/git/file-diff`,{...c(e,t),repoRoot:n,filePath:r,options:i})}}function u(e,t,n){let r=n.path.trim();!r||t.has(r)||(t.add(r),e.push({...n,path:r}))}function d(e,t,n){let r=[],i=new Set,a=e?.port==null?null:String(e.port),o=a?n.diffPinnedRootByPort[a]:null,s=e?.projectDirs?.filter(Boolean)??[],c=e?.workingDir??null;n.diffRootPolicy===`manual`&&o&&u(r,i,{path:o,label:`Pinned root`,source:`pinned`});let l=s.map((e,t)=>({path:e,label:t===0?`Project root`:`Project root ${t+1}`,source:`project`})),d=c?[{path:c,label:`Working dir`,source:`working-dir`}]:[],f=n.diffRootPolicy===`working-dir-first`?[...d,...l]:[...l,...d];for(let e of f)u(r,i,e);return n.diffRootPolicy!==`manual`&&o&&u(r,i,{path:o,label:`Pinned root`,source:`pinned`}),n.diffRecentRepoRoots.forEach((e,t)=>{u(r,i,{path:e,label:t===0?`Recent repo`:`Recent repo ${t+1}`,source:`recent`})}),t&&u(r,i,{path:t,label:`Home fallback`,source:`home`}),r}var f=n(),p=[`unstaged`,`staged`,`head`,`base`],m=8;function h(e){return e.startsWith(`@@`)?`diff-line-hunk`:e.startsWith(`diff `)||e.startsWith(`index `)||e.startsWith(`--- `)||e.startsWith(`+++ `)?`diff-line-meta`:e.startsWith(`+`)?`diff-line-add`:e.startsWith(`-`)?`diff-line-del`:``}function g(e){return e?e.split(`
|
|
2
2
|
`).map((e,t)=>{let n=h(e);return(0,f.jsxs)(`span`,{className:`diff-line${n?` ${n}`:``}`,children:[e,`
|
|
3
3
|
`]},t)}):null}function ee(){return r()?.diff??null}function _(e){let t={mode:e.diffDefaultMode,includeUntracked:e.diffIncludeUntracked};return e.diffDefaultMode===`base`&&(t.ref=e.diffBaseRef.trim()||`HEAD`),t}function v(e){let t=e.branch??e.head??`detached`;return`${e.label}: ${e.root} (${t}${e.dirty?`, dirty`:``})`}function y(e,t){return[t,...e.filter(e=>e!==t)].slice(0,m)}function b(e){return{path:e,label:`Picked repo`,source:`recent`}}function x(e){return{path:e,label:`Folder root`,source:`recent`}}function S(e){return e.replace(/\/+$/,``)}function C(e,t){let n=S(e),r=S(t);return n===r||n.startsWith(`${r}/`)}function w(e,t){return!e||!t?null:t.startsWith(`/`)?t:`${S(e)}/${t.replace(/^\/+/,``)}`}function T(e,t){if(!e||!t||!t.startsWith(`/`))return null;let n=S(e),r=S(t);return r===n||!r.startsWith(`${n}/`)?null:r.slice(n.length+1)}function E(e,t){if(t){let n=e.find(e=>C(t,e.root))?.root??null;if(n)return n}return e[0]?.root??null}function D(e,t){if(!e)return t.length>0?[{id:`changes`,label:`Changes`,files:t}]:[];let n=new Map(t.map(e=>[e.path,e]));return e.groups.map(e=>({id:e.id,label:`${e.label} (${e.files.length})`,...e.id===`staged`?{action:`unstage`}:e.id===`changes`||e.id===`untracked`?{action:`stage`}:{},files:e.files.map(e=>{let t=n.get(e.repoRelativePath);return{path:e.repoRelativePath,status:e.kind,insertions:t?.insertions??0,deletions:t?.deletions??0,conflict:e.conflict,staged:e.staged,unstaged:e.unstaged}})})).filter(e=>e.files.length>0)}function O(e){let t=e.repoRootPath??null,n=e.repoRootMode??`instance`,a=e.folderRootPath??null,s=e.onRepoRootChange,c=ee(),u=(0,i.useMemo)(()=>o(c,l(e.selectedInstance,e.settings)),[c,e.selectedInstance,e.settings]),[m,h]=(0,i.useState)([]),[S,C]=(0,i.useState)(null),[O,k]=(0,i.useState)([]),[A,j]=(0,i.useState)(null),[M,N]=(0,i.useState)(null),[P,F]=(0,i.useState)(``),[I,L]=(0,i.useState)(null),[R,z]=(0,i.useState)(null),[B,V]=(0,i.useState)(!1),H=`${e.selectedInstance?.port??`none`}:${e.selectedInstance?.workingDir??``}:${e.selectedInstance?.projectDirs?.join(`\0`)??``}`,U=(0,i.useMemo)(()=>_(e.settings),[e.settings.diffDefaultMode,e.settings.diffBaseRef,e.settings.diffIncludeUntracked]),W=m.find(e=>e.root===S)??null,G=(0,i.useCallback)(async()=>{if(!u)return;let i=r()?.getHomePath?.()||`/tmp`,o=d(e.selectedInstance,i,{diffRootPolicy:e.settings.diffRootPolicy,diffPinnedRootByPort:e.settings.diffPinnedRootByPort,diffRecentRepoRoots:e.settings.diffRecentRepoRoots});a&&o.unshift(x(a));let c=await u.getRepoCandidates(o);if(!c.ok){L(c.error??`Failed to resolve git repositories`);return}let l=c.candidates??[];h(l),C(e=>{let r=t&&l.some(e=>e.root===t)?t:null,i=e&&l.some(t=>t.root===e)?e:null,o=n===`manual`?r??i??l[0]?.root??null:r??E(l,a);return n!==`manual`&&o!==t&&s?.(o,`instance`),o}),l.length===0?(n!==`manual`&&s?.(null,`instance`),L(`No git repository found from the selected instance roots.`)):L(null)},[u,H,a,s,e.selectedInstance,e.settings.diffRootPolicy,e.settings.diffPinnedRootByPort,e.settings.diffRecentRepoRoots,t,n]);(0,i.useEffect)(()=>{if(t!==S){if(t&&m.some(e=>e.root===t)){C(t);return}t===null&&C(null)}},[t,m,S]);let K=(0,i.useCallback)(async()=>{if(!u||!S)return;let[t,n]=await Promise.all([u.getDiffSummary(S,U),u.getScmSnapshot(S,{includeUntracked:e.settings.diffIncludeUntracked})]);t.ok&&t.files?(k(t.files),N(e=>e&&t.files?.some(t=>t.path===e)?e:t.files?.[0]?.path??null),j(n.ok?n.snapshot??null:null),L(null)):(k([]),j(null),N(null),L(t.error??`Failed to get diff summary`))},[u,U,e.settings.diffIncludeUntracked,S]);(0,i.useEffect)(()=>{G()},[G]),(0,i.useEffect)(()=>{K()},[K]),(0,i.useEffect)(()=>{let t=T(S,e.selectedFilePath??null);!t||t===M||O.some(e=>e.path===t)&&N(t)},[O,S,e.selectedFilePath,M]),(0,i.useEffect)(()=>{if(!u||!S||!M){F(``);return}(async()=>{let e=await u.getFileDiff(S,M,U);e.ok&&e.diff!==void 0?F(e.diff||`No textual diff for this file.`):F(`Error: ${e.error??`unknown`}`)})()},[u,U,S,M]);function q(t,n,r=`manual`){C(t),N(null),s?.(t,r);let i=e.selectedInstance?.port,a={};i!=null&&(a.diffPinnedRootByPort={...e.settings.diffPinnedRootByPort,[String(i)]:t}),n&&(a.diffRecentRepoRoots=n),Object.keys(a).length>0&&e.onSettingsPatch?.(a)}function J(){let t=E(m,a);C(t),N(null),e.onFollowInstanceRepoRoot?.(t);let n=e.selectedInstance?.port;if(n==null)return;let r={...e.settings.diffPinnedRootByPort};delete r[String(n)],e.onSettingsPatch?.({diffPinnedRootByPort:r})}function Y(t){N(t);let n=w(S,t);n&&e.onPreviewFile?.(n)}function X(t){e.onSettingsPatch?.({diffDefaultMode:t})}let Z=(0,i.useMemo)(()=>D(A,O),[O,A]);async function Q(t){if(!u||!S)return;z(t.kind===`stage`?`Staging...`:`Unstaging...`);let n=await u.runScmOperation(S,t);if(!n.ok){z(n.error??`Git operation failed`);return}n.result?.snapshot&&j(n.result.snapshot),z(t.kind===`stage`?`Staged`:`Unstaged`),await K(),e.onGitRefresh?.()}function $(e){return e===`stage`?`Stage`:`Unstage`}async function te(){let t=r()?.folder;if(!t?.pickFolder){L(`Choose Repository is available in the Electron app.`);return}if(!u){L(`Diff bridge is unavailable.`);return}V(!0);try{let n=await t.pickFolder();if(!n.ok||!n.path){n.error&&n.error!==`cancelled`&&L(n.error);return}let r=await u.getRepoCandidates([b(n.path)]);if(!r.ok){L(r.error??`Failed to validate selected repository`);return}let i=r.candidates?.[0]??null;if(!i){L(`Selected folder is not a git repository.`);return}let a=y(e.settings.diffRecentRepoRoots,i.root);h(e=>e.some(e=>e.root===i.root)?e.map(e=>e.root===i.root?i:e):[i,...e]),L(null),q(i.root,a,`manual`)}finally{V(!1)}}return(0,f.jsxs)(`div`,{className:`diff-panel`,children:[(0,f.jsxs)(`div`,{className:`diff-toolbar`,children:[(0,f.jsxs)(`select`,{className:`diff-root-select`,value:S??``,"aria-label":`Git repository root`,onChange:e=>q(e.currentTarget.value,void 0,`manual`),children:[m.map(e=>(0,f.jsx)(`option`,{value:e.root,children:v(e)},e.root)),m.length===0&&(0,f.jsx)(`option`,{value:``,children:`No repo`})]}),(0,f.jsx)(`span`,{className:`diff-head-chip`,children:W?.branch??W?.head??`no repo`}),(0,f.jsx)(`button`,{type:`button`,className:`diff-pick-repo`,onClick:()=>void te(),disabled:B,children:B?`Choosing...`:`Choose Repository`}),(0,f.jsx)(`button`,{type:`button`,className:`diff-follow-instance`,onClick:J,disabled:n!==`manual`,children:`Follow Instance`}),(0,f.jsx)(`button`,{type:`button`,className:`diff-refresh`,onClick:()=>void G(),children:`Refresh`})]}),(0,f.jsxs)(`div`,{className:`diff-toolbar diff-options`,children:[(0,f.jsx)(`div`,{className:`diff-mode-group`,"aria-label":`Diff mode`,children:p.map(t=>(0,f.jsx)(`button`,{type:`button`,className:`diff-mode-button${e.settings.diffDefaultMode===t?` is-active`:``}`,"aria-pressed":e.settings.diffDefaultMode===t,onClick:()=>X(t),children:t===`head`?`HEAD`:t===`base`?`Base`:t},t))}),(0,f.jsx)(`input`,{className:`diff-ref-input`,type:`text`,value:e.settings.diffBaseRef,"aria-label":`Base ref`,disabled:e.settings.diffDefaultMode!==`base`,onChange:t=>e.onSettingsPatch?.({diffBaseRef:t.currentTarget.value})}),(0,f.jsxs)(`label`,{className:`diff-untracked-toggle`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:e.settings.diffIncludeUntracked,onChange:t=>e.onSettingsPatch?.({diffIncludeUntracked:t.currentTarget.checked})}),(0,f.jsx)(`span`,{children:`untracked`})]})]}),I&&(0,f.jsx)(`div`,{className:`diff-error`,children:I}),R&&(0,f.jsx)(`div`,{className:`diff-action-status`,role:`status`,"aria-live":`polite`,children:R}),(0,f.jsxs)(`div`,{className:`diff-body`,children:[(0,f.jsxs)(`div`,{className:`diff-file-list`,children:[Z.map(e=>(0,f.jsxs)(`div`,{className:`diff-file-group`,children:[(0,f.jsxs)(`div`,{className:`diff-file-group-heading`,children:[(0,f.jsx)(`span`,{children:e.label}),e.action&&(0,f.jsxs)(`button`,{type:`button`,className:`diff-scm-action`,onClick:()=>void Q({kind:e.action,paths:e.files.map(e=>e.path)}),children:[$(e.action),` All`]})]}),e.files.map(t=>(0,f.jsxs)(`div`,{className:`diff-file-item ${t.path===M?`is-selected`:``} diff-status-${t.status}${t.conflict?` is-conflict`:``}`,children:[(0,f.jsxs)(`button`,{type:`button`,className:`diff-file-select`,onClick:()=>Y(t.path),children:[(0,f.jsx)(`span`,{className:`diff-file-name`,children:t.path}),(0,f.jsxs)(`span`,{className:`diff-file-stats`,children:[t.insertions>0&&(0,f.jsxs)(`span`,{className:`diff-ins`,children:[`+`,t.insertions]}),t.deletions>0&&(0,f.jsxs)(`span`,{className:`diff-del`,children:[`-`,t.deletions]}),t.status===`untracked`&&(0,f.jsx)(`span`,{className:`diff-ins`,children:`new`})]})]}),e.action&&(0,f.jsx)(`button`,{type:`button`,className:`diff-scm-inline-action`,onClick:()=>{Q({kind:e.action,paths:[t.path]})},"aria-label":`${$(e.action)} ${t.path}`,children:e.action===`stage`?`+`:`-`})]},`${e.id}:${t.path}`))]},e.id)),Z.length===0&&!I&&(0,f.jsx)(`div`,{className:`diff-empty`,children:`No changes`})]}),(0,f.jsx)(`div`,{className:`diff-content`,children:(0,f.jsx)(`pre`,{className:`diff-pre`,children:g(P)})})]})]})}export{O as DiffPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-LF7vVVfG.js";import{i as c,r as l}from"./fields-zkeByFQW.js";import{t as u}from"./path-utils-LsJeDCKF.js";var d=e(t(),1),f=n(),p=[{value:`jaw-default`,label:`Jaw default`},{value:`jaw-dark`,label:`Jaw dark`},{value:`jaw-light`,label:`Jaw light`},{value:`jaw-contrast`,label:`High contrast`}],m=[{value:`default`,label:`default`},{value:`vim`,label:`vim`},{value:`emacs`,label:`emacs`}],h=[{value:`summary`,label:`summary`},{value:`unified`,label:`unified`},{value:`side-by-side`,label:`side-by-side`}],g=[`tui.themeSeed`,`tui.keymapPreset`,`tui.pasteCollapseLines`,`tui.pasteCollapseChars`,`tui.diffStyle`];function _({port:e,client:t,dirty:n,registerSave:_}){let{state:v,refresh:y,setData:b}=r(t,`/api/settings`),[x,S]=(0,d.useState)({});(0,d.useEffect)(()=>{v.kind===`ready`&&S({...v.data.tui||{}})},[v]),(0,d.useEffect)(()=>()=>{for(let e of g)n.remove(e)},[n]);let C=(0,d.useCallback)((e,t)=>n.set(e,t),[n]),w=(0,d.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=u(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),S({...a.tui||{}}),b(a),await y()},[t,n,y,b]);if((0,d.useEffect)(()=>{if(_)return _(w),()=>_(null)},[_,w]),v.kind===`loading`)return(0,f.jsx)(a,{});if(v.kind===`offline`)return(0,f.jsx)(o,{port:e});if(v.kind===`error`)return(0,f.jsx)(s,{message:v.message});let T=v.data.tui||{};return(0,f.jsx)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),w()},children:(0,f.jsxs)(i,{title:`Display`,hint:`TUI options applied to /i/${e}.`,children:[(0,f.jsx)(c,{id:`display-themeSeed`,label:`Theme seed`,value:x.themeSeed??T.themeSeed??`jaw-default`,options:p,onChange:e=>{S({...x,themeSeed:e}),C(`tui.themeSeed`,{value:e,original:T.themeSeed??`jaw-default`,valid:!0})}}),(0,f.jsx)(c,{id:`display-keymapPreset`,label:`Keymap preset`,value:x.keymapPreset??T.keymapPreset??`default`,options:m,onChange:e=>{S({...x,keymapPreset:e}),C(`tui.keymapPreset`,{value:e,original:T.keymapPreset??`default`,valid:!0})}}),(0,f.jsx)(l,{id:`display-pasteCollapseLines`,label:`Paste collapse — lines`,value:x.pasteCollapseLines??T.pasteCollapseLines??2,min:0,step:1,onChange:e=>{S({...x,pasteCollapseLines:e}),C(`tui.pasteCollapseLines`,{value:e,original:T.pasteCollapseLines??2,valid:Number.isFinite(e)&&e>=0})}}),(0,f.jsx)(l,{id:`display-pasteCollapseChars`,label:`Paste collapse — chars`,value:x.pasteCollapseChars??T.pasteCollapseChars??160,min:0,step:10,onChange:e=>{S({...x,pasteCollapseChars:e}),C(`tui.pasteCollapseChars`,{value:e,original:T.pasteCollapseChars??160,valid:Number.isFinite(e)&&e>=0})}}),(0,f.jsx)(c,{id:`display-diffStyle`,label:`Diff style`,value:x.diffStyle??T.diffStyle??`summary`,options:h,onChange:e=>{S({...x,diffStyle:e}),C(`tui.diffStyle`,{value:e,original:T.diffStyle??`summary`,valid:!0})}})]})})}export{_ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{c as r}from"./api-C9dOxby7.js";import{t as i}from"./desktop-bridge-CvdhnJQo.js";import{t as a}from"./copy-text-BDs2wKjA.js";import{n as o,t as s}from"./MarkdownRenderer-CHacL2M_.js";var c=e(t(),1),l=n(),u={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,py:`python`,rs:`rust`,go:`go`,java:`java`,cpp:`cpp`,c:`cpp`,css:`css`,html:`html`,htm:`html`,xml:`xml`,json:`json`,yaml:`yaml`,yml:`yaml`,sh:`bash`,bash:`bash`,sql:`sql`};function d(e){let t=e.split(`.`).pop()?.toLowerCase();return t?u[t]??null:null}function f(e){return/\.(md|mdx)$/i.test(e)}function p(e){return/\.html?$/i.test(e)}function m(){return i()?.folder??null}function h(e){return!e.startsWith(`/`)&&!/^[a-zA-Z]:[\\/]/.test(e)}function g(e){return e.split(/[\\/]/).pop()||e}function _(e){return[`<!doctype html>`,`<html>`,`<head>`,`<meta http-equiv="Content-Security-Policy" content="${[`default-src 'none'`,`img-src data: blob:`,`style-src 'unsafe-inline' data:`,`font-src data:`,`script-src 'none'`,`connect-src 'none'`,`object-src 'none'`,`base-uri 'none'`,`form-action 'none'`,`frame-src 'none'`].join(`; `)}">`,`<meta charset="utf-8">`,`<style>html,body{margin:0;min-height:100%;}body{font-family:system-ui,sans-serif;}</style>`,`</head>`,`<body>`,e,`</body>`,`</html>`].join(``)}function v(e){return(0,l.jsx)(`iframe`,{className:`doc-html-preview`,title:e.title,sandbox:``,referrerPolicy:`no-referrer`,srcDoc:_(e.content)})}function y(e){if(e.raw)return(0,l.jsx)(`pre`,{className:`doc-pre`,children:(0,l.jsx)(`code`,{children:e.content})});if(f(e.filePath))return(0,l.jsx)(`article`,{className:`notes-preview doc-markdown`,children:(0,l.jsx)(s,{markdown:e.content,onLocalFileOpen:e.onOpenLocalFile})});if(p(e.filePath))return(0,l.jsx)(v,{content:e.content,title:`Rendered preview of ${g(e.filePath)}`});let t=d(e.filePath);return t?(0,l.jsx)(o,{code:e.content,language:t}):(0,l.jsx)(`pre`,{className:`doc-pre`,children:(0,l.jsx)(`code`,{children:e.content})})}function b(e){let t=m(),n=(0,c.useRef)(null),i=(0,c.useRef)(null),o=(0,c.useRef)(void 0),s=(0,c.useRef)({filePath:``,scrollTop:0}),u=(0,c.useRef)(null),d=(0,c.useRef)(null),[f,p]=(0,c.useState)(``),[_,v]=(0,c.useState)(null),[b,x]=(0,c.useState)(!1),[S,C]=(0,c.useState)(!1),[w,T]=(0,c.useState)(!1),[E,D]=(0,c.useState)(null),O=(0,c.useCallback)(e=>{d.current!==null&&window.clearTimeout(d.current),D(e),d.current=window.setTimeout(()=>{d.current=null,D(t=>t===e?null:t)},1200)},[]),k=(0,c.useCallback)(()=>{let t=e.filePath;t&&a(t).then(e=>{e.ok?O(`path`):console.error(`[doc-panel:path-copy]`,e.error)})},[O,e.filePath]),A=(0,c.useCallback)(()=>{a(f).then(e=>{e.ok?O(`content`):console.error(`[doc-panel:content-copy]`,e.error)})},[f,O]),j=(0,c.useCallback)(e=>{u.current!==null&&cancelAnimationFrame(u.current);let t=s.current.filePath===e?s.current.scrollTop:0;u.current=requestAnimationFrame(()=>{u.current=null;let r=n.current;!r||s.current.filePath!==e||(r.scrollTop=t)})},[]);return(0,c.useEffect)(()=>{if(!e.filePath){p(``),v(null),C(!1),D(null),T(!1);return}let n=e.filePath,i=!1;return D(null),T(!1),(async()=>{if(t){let e=await t.readFile(n);if(!e.ok&&e.error?.includes(`path not allowed`)){if(await t.getDefaultRoot(),i)return;e=await t.readFile(n)}if(i)return;e.ok&&e.content!==void 0?(x(e.binary===!0),C(e.truncated===!0&&e.binary!==!0),p(e.binary||e.truncated?``:e.content),v(null)):v(e.error??`Failed to read file`);return}if(!h(n)){i||v(`Document preview for arbitrary local files requires Electron desktop app`);return}try{let e=await r(n);if(i)return;x(!1),C(!1),p(e.content),v(null)}catch(e){i||v(e.message)}})(),()=>{i=!0}},[t,e.filePath]),(0,c.useLayoutEffect)(()=>{let t=n.current,r=e.filePath;if(!(!t||!r)){if(o.current!==r){o.current=r,t.scrollTop=0,s.current={filePath:r,scrollTop:0};return}j(r)}},[f,e.filePath,j]),(0,c.useEffect)(()=>{let t=i.current,n=e.filePath;if(!t||!n)return;let r=new ResizeObserver(()=>{s.current.filePath===n&&j(n)});return r.observe(t),()=>{r.disconnect()}},[f,e.filePath,j]),(0,c.useEffect)(()=>()=>{u.current!==null&&(cancelAnimationFrame(u.current),u.current=null),d.current!==null&&(window.clearTimeout(d.current),d.current=null)},[]),e.filePath?_?(0,l.jsx)(`div`,{className:`doc-panel doc-error`,children:_}):b?(0,l.jsx)(`div`,{className:`doc-panel doc-binary`,children:`Binary file — cannot preview`}):S?(0,l.jsx)(`div`,{className:`doc-panel doc-binary`,children:`File too large to preview (512KB cap) — open it in an editor instead.`}):(0,l.jsxs)(`div`,{className:`doc-panel`,children:[(0,l.jsxs)(`div`,{className:`doc-toolbar`,children:[(0,l.jsx)(`span`,{className:`doc-file-name`,title:e.filePath,children:g(e.filePath)}),(0,l.jsxs)(`div`,{className:`doc-toolbar-actions`,"aria-label":`Document actions`,children:[(0,l.jsx)(`button`,{type:`button`,className:`doc-toolbar-button ${w?`is-active`:``}`,"aria-pressed":w,title:`Show raw source`,onClick:()=>T(e=>!e),children:`Raw`}),(0,l.jsx)(`button`,{type:`button`,className:`doc-toolbar-button`,title:`Copy full path`,onClick:k,children:E===`path`?`Copied`:`Path`}),(0,l.jsx)(`button`,{type:`button`,className:`doc-toolbar-button`,title:`Copy file content`,onClick:A,children:E===`content`?`Copied`:`Copy`})]})]}),(0,l.jsx)(`div`,{className:`doc-content`,ref:n,onScroll:t=>{e.filePath&&(s.current={filePath:e.filePath,scrollTop:t.currentTarget.scrollTop})},children:(0,l.jsx)(`div`,{className:`doc-content-body`,ref:i,children:(0,l.jsx)(y,{filePath:e.filePath,content:f,raw:w,onOpenLocalFile:e.onOpenLocalFile})})})]}):(0,l.jsx)(`div`,{className:`doc-panel doc-empty`,children:`Open Folders and select a file to preview it here.`})}export{b as DocPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{i as r}from"./page-shell-LF7vVVfG.js";var i=e(t(),1),a=n(),o=[`employees`],s=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],c=0;function l(){return c+=1,`emp_${Date.now().toString(36)}_${c}`}function u(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`)try{return e.randomUUID()}catch{}return l()}function d(e=u()){return{id:e,name:``,cli:`claude`,role:``,prompt:``,active:!0}}function f(e){if(!Array.isArray(e))return[];let t=[],n=0;for(let r of e){if(typeof r==`string`){n+=1,t.push({...d(`emp_legacy_${n}`),name:r});continue}if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.name==`string`?e.name:``;if(!i&&!e.id)continue;n+=1;let a=typeof e.id==`string`&&e.id.trim()?e.id.trim():`emp_unknown_${n}`,o=typeof e.cli==`string`&&e.cli.trim()?e.cli.trim():`claude`,s=typeof e.role==`string`?e.role:``,c=typeof e.prompt==`string`?e.prompt:``,l=e.active!==!1;t.push({id:a,name:i,cli:o,role:s,prompt:c,active:l})}return t}function p(e){return e.name.trim()?e.cli.trim()?null:`CLI is required`:`Name is required`}function m(e){return e.some(e=>p(e)!==null)}function h(e){let t=new Map;for(let n of e){let e=n.name.trim().toLowerCase();e&&t.set(e,(t.get(e)??0)+1)}let n=new Set;for(let[e,r]of t)r>1&&n.add(e);return n}function g(e){return e.map(e=>{let t={id:e.id,name:e.name.trim(),cli:e.cli.trim()||`claude`,role:e.role.trim(),active:e.active};return e.prompt.trim()&&(t.prompt=e.prompt),t})}function _({registerSave:e}){return(0,i.useEffect)(()=>{if(e)return e(null),()=>e(null)},[e]),(0,a.jsx)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:(0,a.jsx)(r,{title:`Employees`,hint:`Runtime employees are now managed from the Agent page.`,children:(0,a.jsx)(`p`,{className:`settings-section-hint`,children:`Open Runtime / Agent to edit dispatchable employees, static employee model overrides, and database-backed employees in one place.`})})})}export{s as DEFAULT_CLI_OPTIONS,o as EMPLOYEE_KEYS,_ as default,h as duplicateNameSet,p as employeeRowError,m as employeesHaveErrors,d as makeDefaultEmployee,u as newEmployeeId,f as normalizeEmployees,g as toPersistShape};
|