cli-jaw 2.0.10 → 2.0.16
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.ja.md +8 -5
- package/README.ko.md +8 -5
- package/README.md +31 -14
- package/README.zh-CN.md +8 -5
- package/dist/bin/commands/browser-web-ai.js +1 -0
- package/dist/bin/commands/browser-web-ai.js.map +1 -1
- package/dist/bin/commands/browser.js +1 -1
- package/dist/bin/commands/dashboard-memory.js +1 -0
- package/dist/bin/commands/dashboard-memory.js.map +1 -1
- package/dist/bin/commands/dispatch.js +34 -7
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +12 -6
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +1 -2
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/orchestrate.js +6 -4
- package/dist/bin/commands/orchestrate.js.map +1 -1
- package/dist/bin/commands/serve.js +3 -1
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +4 -4
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/types.js +2 -0
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/postinstall.js +0 -176
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/scripts/fresh-install-smoke.js +1 -2
- package/dist/scripts/fresh-install-smoke.js.map +1 -1
- package/dist/server.js +52 -18
- package/dist/server.js.map +1 -1
- package/dist/src/agent/agy-runtime.js +4 -0
- package/dist/src/agent/agy-runtime.js.map +1 -1
- package/dist/src/agent/alert-escalation.js +8 -2
- package/dist/src/agent/alert-escalation.js.map +1 -1
- package/dist/src/agent/args.js +35 -2
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/codex-app-client.js +3 -0
- package/dist/src/agent/codex-app-client.js.map +1 -1
- package/dist/src/agent/cursor-runtime.js +240 -0
- package/dist/src/agent/cursor-runtime.js.map +1 -0
- package/dist/src/agent/events/acp.js +7 -3
- package/dist/src/agent/events/acp.js.map +1 -1
- package/dist/src/agent/events/claude.js +5 -2
- package/dist/src/agent/events/claude.js.map +1 -1
- package/dist/src/agent/events/codex.js +21 -13
- package/dist/src/agent/events/codex.js.map +1 -1
- package/dist/src/agent/events/cursor.js +176 -0
- package/dist/src/agent/events/cursor.js.map +1 -0
- package/dist/src/agent/events/grok.js +13 -3
- package/dist/src/agent/events/grok.js.map +1 -1
- package/dist/src/agent/events/index.js +27 -0
- package/dist/src/agent/events/index.js.map +1 -1
- package/dist/src/agent/events/tool-labels.js +13 -6
- package/dist/src/agent/events/tool-labels.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +150 -5
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/resume-classifier.js +2 -0
- package/dist/src/agent/resume-classifier.js.map +1 -1
- package/dist/src/agent/spawn/resume.js +13 -2
- package/dist/src/agent/spawn/resume.js.map +1 -1
- package/dist/src/agent/spawn.js +44 -17
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/claude-models.js +3 -0
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/commands.js +66 -10
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +2 -2
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers-workflows.js +339 -0
- package/dist/src/cli/handlers-workflows.js.map +1 -0
- package/dist/src/cli/handlers.js +11 -1
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/readiness.js +22 -1
- package/dist/src/cli/readiness.js.map +1 -1
- package/dist/src/cli/registry.js +12 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +2 -2
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/command-contract/catalog.js +3 -1
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/cli-detection.js +203 -0
- package/dist/src/core/cli-detection.js.map +1 -0
- package/dist/src/core/config.js +2 -140
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/runtime-settings.js +31 -0
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/discord/bot.js +47 -26
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/commands.js +4 -10
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/send-only-client.js +79 -0
- package/dist/src/discord/send-only-client.js.map +1 -0
- package/dist/src/goal/heartbeat.js +51 -0
- package/dist/src/goal/heartbeat.js.map +1 -0
- package/dist/src/goal/runtime.js +31 -0
- package/dist/src/goal/runtime.js.map +1 -0
- package/dist/src/goal/store.js +153 -0
- package/dist/src/goal/store.js.map +1 -0
- package/dist/src/goal/types.js +2 -0
- package/dist/src/goal/types.js.map +1 -0
- package/dist/src/goal-run/controller.js +113 -0
- package/dist/src/goal-run/controller.js.map +1 -0
- package/dist/src/goal-run/events.js +25 -0
- package/dist/src/goal-run/events.js.map +1 -0
- package/dist/src/goal-run/failure-matrix.js +26 -0
- package/dist/src/goal-run/failure-matrix.js.map +1 -0
- package/dist/src/goal-run/policy.js +46 -0
- package/dist/src/goal-run/policy.js.map +1 -0
- package/dist/src/goal-run/types.js +2 -0
- package/dist/src/goal-run/types.js.map +1 -0
- package/dist/src/manager/git/diff-service.js +202 -0
- package/dist/src/manager/git/diff-service.js.map +1 -0
- package/dist/src/manager/notes/assets.js +11 -4
- package/dist/src/manager/notes/assets.js.map +1 -1
- package/dist/src/manager/notes/auth.js +123 -0
- package/dist/src/manager/notes/auth.js.map +1 -0
- package/dist/src/manager/notes/git.js +154 -0
- package/dist/src/manager/notes/git.js.map +1 -0
- package/dist/src/manager/notes/plugins.js +107 -0
- package/dist/src/manager/notes/plugins.js.map +1 -0
- package/dist/src/manager/notes/routes.js +91 -2
- package/dist/src/manager/notes/routes.js.map +1 -1
- package/dist/src/manager/notes/store.js +71 -1
- package/dist/src/manager/notes/store.js.map +1 -1
- package/dist/src/manager/notes/watcher.js +40 -4
- package/dist/src/manager/notes/watcher.js.map +1 -1
- package/dist/src/manager/notes/wiki-links.js +99 -10
- package/dist/src/manager/notes/wiki-links.js.map +1 -1
- package/dist/src/manager/notes/ws.js +62 -0
- package/dist/src/manager/notes/ws.js.map +1 -0
- package/dist/src/manager/preview-link-policy.js +46 -0
- package/dist/src/manager/preview-link-policy.js.map +1 -0
- package/dist/src/manager/preview-origin-proxy.js +28 -5
- package/dist/src/manager/preview-origin-proxy.js.map +1 -1
- package/dist/src/manager/preview-ports.js +12 -0
- package/dist/src/manager/preview-ports.js.map +1 -0
- package/dist/src/manager/proxy.js +15 -3
- package/dist/src/manager/proxy.js.map +1 -1
- package/dist/src/manager/registry.js +115 -0
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/dashboard-git.js +106 -0
- package/dist/src/manager/routes/dashboard-git.js.map +1 -0
- package/dist/src/manager/server.js +60 -4
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/memory/heartbeat.js +4 -1
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/messaging/channel-health.js +54 -0
- package/dist/src/messaging/channel-health.js.map +1 -0
- package/dist/src/messaging/runtime.js +1 -0
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send-result.js +9 -0
- package/dist/src/messaging/send-result.js.map +1 -0
- package/dist/src/orchestrator/pipeline.js +45 -0
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +50 -1
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +16 -8
- package/dist/src/prompt/templates/employee.md +3 -1
- package/dist/src/prompt/templates/orchestration.md +15 -5
- package/dist/src/routes/goal-run.js +86 -0
- package/dist/src/routes/goal-run.js.map +1 -0
- package/dist/src/routes/goal.js +118 -0
- package/dist/src/routes/goal.js.map +1 -0
- package/dist/src/routes/messaging.js +17 -11
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +47 -17
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/quota-agy-reverse.js +133 -0
- package/dist/src/routes/quota-agy-reverse.js.map +1 -0
- package/dist/src/routes/quota-cursor-dashboard.js +200 -0
- package/dist/src/routes/quota-cursor-dashboard.js.map +1 -0
- package/dist/src/routes/settings.js +6 -6
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/team/collector.js +45 -0
- package/dist/src/team/collector.js.map +1 -0
- package/dist/src/team/dispatcher.js +35 -0
- package/dist/src/team/dispatcher.js.map +1 -0
- package/dist/src/team/planner.js +58 -0
- package/dist/src/team/planner.js.map +1 -0
- package/dist/src/team/preflight.js +46 -0
- package/dist/src/team/preflight.js.map +1 -0
- package/dist/src/team/types.js +12 -0
- package/dist/src/team/types.js.map +1 -0
- package/dist/src/telegram/bot.js +41 -10
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/types/cli-engine.js +1 -0
- package/dist/src/types/cli-engine.js.map +1 -1
- package/dist/src/types/cli-events.js +1 -1
- package/dist/src/types/cli-events.js.map +1 -1
- package/dist/src/workflows/artifacts.js +148 -0
- package/dist/src/workflows/artifacts.js.map +1 -0
- package/dist/src/workflows/browser-web-ai.js +18 -0
- package/dist/src/workflows/browser-web-ai.js.map +1 -0
- package/dist/src/workflows/checkpoint/store.js +31 -0
- package/dist/src/workflows/checkpoint/store.js.map +1 -0
- package/dist/src/workflows/checkpoint/types.js +4 -0
- package/dist/src/workflows/checkpoint/types.js.map +1 -0
- package/dist/src/workflows/competitive-gap.js +96 -0
- package/dist/src/workflows/competitive-gap.js.map +1 -0
- package/dist/src/workflows/context-map/builder.js +61 -0
- package/dist/src/workflows/context-map/builder.js.map +1 -0
- package/dist/src/workflows/context.js +19 -0
- package/dist/src/workflows/context.js.map +1 -0
- package/dist/src/workflows/deliberate.js +67 -0
- package/dist/src/workflows/deliberate.js.map +1 -0
- package/dist/src/workflows/employee-boundary.js +33 -0
- package/dist/src/workflows/employee-boundary.js.map +1 -0
- package/dist/src/workflows/events.js +24 -0
- package/dist/src/workflows/events.js.map +1 -0
- package/dist/src/workflows/guards.js +18 -0
- package/dist/src/workflows/guards.js.map +1 -0
- package/dist/src/workflows/handoff.js +48 -0
- package/dist/src/workflows/handoff.js.map +1 -0
- package/dist/src/workflows/index.js +6 -0
- package/dist/src/workflows/index.js.map +1 -0
- package/dist/src/workflows/permissions/policy.js +25 -0
- package/dist/src/workflows/permissions/policy.js.map +1 -0
- package/dist/src/workflows/permissions/types.js +26 -0
- package/dist/src/workflows/permissions/types.js.map +1 -0
- package/dist/src/workflows/plan.js +70 -0
- package/dist/src/workflows/plan.js.map +1 -0
- package/dist/src/workflows/planaudit.js +64 -0
- package/dist/src/workflows/planaudit.js.map +1 -0
- package/dist/src/workflows/runtime-guards.js +46 -0
- package/dist/src/workflows/runtime-guards.js.map +1 -0
- package/dist/src/workflows/runtime.js +25 -0
- package/dist/src/workflows/runtime.js.map +1 -0
- package/dist/src/workflows/status.js +49 -0
- package/dist/src/workflows/status.js.map +1 -0
- package/dist/src/workflows/types.js +4 -0
- package/dist/src/workflows/types.js.map +1 -0
- package/dist/src/workflows/web-ai-guards.js +22 -0
- package/dist/src/workflows/web-ai-guards.js.map +1 -0
- package/package.json +9 -4
- package/public/assets/providers/cursor-color.svg +2 -0
- package/public/assets/providers/cursor.svg +2 -0
- package/public/css/chat.css +99 -0
- package/public/css/orc-state.css +11 -1
- package/public/css/sidebar.css +34 -0
- package/public/css/variables.css +23 -2
- package/public/css/workflow-cockpit.css +62 -0
- package/public/dist/assets/{AdvancedExport-CZEVPqHb.js → AdvancedExport-DLCgT_ZP.js} +1 -1
- package/public/dist/assets/{Agent-BBrJGd5m.js → Agent-CIUGaUVn.js} +1 -1
- package/public/dist/assets/{Browser-dBaU9G9D.js → Browser-C4TCAhKR.js} +1 -1
- package/public/dist/assets/BrowserPanel-BN01Lfc5.css +1 -0
- package/public/dist/assets/BrowserPanel-weeCb2qu.js +1 -0
- package/public/dist/assets/ChannelsDiscord-Bwt2-Jva.js +1 -0
- package/public/dist/assets/ChannelsTelegram-xjA3-Mr8.js +1 -0
- package/public/dist/assets/{DashboardMeta-LVAL7TtE.js → DashboardMeta-CBckkL_V.js} +1 -1
- package/public/dist/assets/DiffPanel-BHvC0wCX.css +1 -0
- package/public/dist/assets/DiffPanel-DZ4-3QSH.js +3 -0
- package/public/dist/assets/{Display-CFm1UmEo.js → Display-BPbCVOoi.js} +1 -1
- package/public/dist/assets/DocPanel-C1pGgE-S.js +1 -0
- package/public/dist/assets/DocPanel-CL1scIfq.css +1 -0
- package/public/dist/assets/Employees-BL9MAzzx.js +1 -0
- package/public/dist/assets/FolderPanel-DSkanaGN.js +1 -0
- package/public/dist/assets/FolderPanel-XCno5AI9.css +1 -0
- package/public/dist/assets/Heartbeat-D64JCg4t.js +1 -0
- package/public/dist/assets/MarkdownRenderer-CS6jvLpf.js +15 -0
- package/public/dist/assets/{Mcp-9NU4YkKO.js → Mcp-wYwJA_61.js} +1 -1
- package/public/dist/assets/{Memory-uZT30fww.js → Memory-BgN8djV4.js} +1 -1
- package/public/dist/assets/MilkdownWysiwygEditor-Btwmr5Re.js +160 -0
- package/public/dist/assets/{ModelProvider-CsIOyoZP.js → ModelProvider-DHQ1Zvw0.js} +1 -1
- package/public/dist/assets/{Network-D7hGwnyG.js → Network-B-WvB6R5.js} +1 -1
- package/public/dist/assets/NotesGraphWorkspace-CK8kKY8A.js +1 -0
- package/public/dist/assets/{Permissions-DwdU3wi8.js → Permissions-BvtVczZS.js} +1 -1
- package/public/dist/assets/Permissions-QxvByCop.js +1 -0
- package/public/dist/assets/{Profile-BNTKD_Ex.js → Profile-D_6kFj73.js} +1 -1
- package/public/dist/assets/{Prompts-D_mCfYiu.js → Prompts--4CM3enz.js} +1 -1
- package/public/dist/assets/{SpeechKeys-BTXCM-Fs.js → SpeechKeys-Cx4_SXTM.js} +1 -1
- package/public/dist/assets/TerminalPanel-AKKXu8dJ.js +36 -0
- package/public/dist/assets/TerminalPanel-DdE69MNo.css +1 -0
- package/public/dist/assets/TransportStatusChips-BwR7Sq4s.js +1 -0
- package/public/dist/assets/agent-meta-BhEbjy4P.js +1 -0
- package/public/dist/assets/api-30EcU_Lb.js +1 -0
- package/public/dist/assets/app-DLDdZ41k.js +48 -0
- package/public/dist/assets/app-RpnKs-sT.css +1 -0
- package/public/dist/assets/architecture-7EHR7CIX-GHIeXYpv.js +1 -0
- package/public/dist/assets/{architectureDiagram-3BPJPVTR-CJCPEsxo.js → architectureDiagram-3BPJPVTR-ByOUFrxp.js} +1 -1
- package/public/dist/assets/{blockDiagram-GPEHLZMM-CO1bkn0E.js → blockDiagram-GPEHLZMM-BcefwseF.js} +2 -2
- package/public/dist/assets/{c4Diagram-AAUBKEIU-D2R36Xu6.js → c4Diagram-AAUBKEIU-C9FinBRA.js} +1 -1
- package/public/dist/assets/channel-5QxFRU5l.js +1 -0
- package/public/dist/assets/{chunk-2J33WTMH-xiPJWKcl.js → chunk-2J33WTMH-N9wxleFR.js} +1 -1
- package/public/dist/assets/{chunk-3OPIFGDE-DixnEkZw.js → chunk-3OPIFGDE-B1qdy3mP.js} +1 -1
- package/public/dist/assets/{chunk-4BX2VUAB-6lTRwyT0.js → chunk-4BX2VUAB-Dbg5PjGD.js} +1 -1
- package/public/dist/assets/{chunk-4EGX6M5U-DXtAEgX6.js → chunk-4EGX6M5U-BIFnMXqg.js} +1 -1
- package/public/dist/assets/chunk-55IACEB6-C9gRJHcb.js +1 -0
- package/public/dist/assets/{chunk-5DO6E6H7-DDcMHB95.js → chunk-5DO6E6H7-Dc9k92pO.js} +1 -1
- package/public/dist/assets/{chunk-5ZQYHXKU-Bli4k6GI.js → chunk-5ZQYHXKU-BOYB4Qmp.js} +2 -2
- package/public/dist/assets/{chunk-727SXJPM-sp4W8bhf.js → chunk-727SXJPM-2OgKkBMF.js} +1 -1
- package/public/dist/assets/{chunk-AQP2D5EJ-Co6ucdGq.js → chunk-AQP2D5EJ-CIXopxD6.js} +1 -1
- package/public/dist/assets/{chunk-BR22UD5L-CVuYkAd1.js → chunk-BR22UD5L-DlNCrhSA.js} +1 -1
- package/public/dist/assets/{chunk-BSJP7CBP-B47GpxcW.js → chunk-BSJP7CBP-CpgaSqhR.js} +1 -1
- package/public/dist/assets/{chunk-CSCIHK7Q-CAE1p4Em.js → chunk-CSCIHK7Q-R-Y9ue5N.js} +1 -1
- package/public/dist/assets/{chunk-FHYWG6QK-CxZt-yZZ.js → chunk-FHYWG6QK-DVrRFYRd.js} +1 -1
- package/public/dist/assets/{chunk-FMBD7UC4-CwqBlx0l.js → chunk-FMBD7UC4-jn5b6_kv.js} +1 -1
- package/public/dist/assets/{chunk-KSCS5N6A-Beq1s5eO.js → chunk-KSCS5N6A-DayXQgYz.js} +2 -2
- package/public/dist/assets/{chunk-L5ZTLDWV-DfUlBdXN.js → chunk-L5ZTLDWV-CtcQ12uz.js} +1 -1
- package/public/dist/assets/{chunk-LZXEDZCA-B_yP4UKw.js → chunk-LZXEDZCA-BuEa86aU.js} +1 -1
- package/public/dist/assets/{chunk-MPE355IW-Bp4qAOUf.js → chunk-MPE355IW-Be8tT5FQ.js} +1 -1
- package/public/dist/assets/{chunk-MZUSXYTE-DAU-v-0c.js → chunk-MZUSXYTE-bFnwST0F.js} +1 -1
- package/public/dist/assets/{chunk-N66VUXT2-CpPz1L5u.js → chunk-N66VUXT2-BSpsJq6A.js} +1 -1
- package/public/dist/assets/{chunk-ND2GUHAM-3qbNb7I9.js → chunk-ND2GUHAM-CnEcVn6T.js} +1 -1
- package/public/dist/assets/{chunk-NZK2D7GU-CTqFQ8K5.js → chunk-NZK2D7GU-asW9Yrwq.js} +1 -1
- package/public/dist/assets/{chunk-O5CBEL6O-D-jDqsN2.js → chunk-O5CBEL6O-BVoXQ09V.js} +1 -1
- package/public/dist/assets/{chunk-PUPMXCY4-ppZvktf-.js → chunk-PUPMXCY4-BU48euO5.js} +1 -1
- package/public/dist/assets/chunk-QZHKN3VN-CC7ecfZE.js +1 -0
- package/public/dist/assets/{chunk-UIBZB4QT-rJZEVBX0.js → chunk-UIBZB4QT-aXCea_7h.js} +1 -1
- package/public/dist/assets/{chunk-WCWK7LTN-CGvUyB8h.js → chunk-WCWK7LTN-fR0CutHV.js} +1 -1
- package/public/dist/assets/chunk-WU5MYG2G-CDC6hlhk.js +1 -0
- package/public/dist/assets/{chunk-XPW4576I-BaQfzRci.js → chunk-XPW4576I-CFkDqujt.js} +1 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-Bfu4_8Yk.js +1 -0
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-_XyS72AY.js +1 -0
- package/public/dist/assets/constants-ahKI_aEG.js +1 -0
- package/public/dist/assets/{cose-bilkent-S5V4N54A-Bt9AAJCx.js → cose-bilkent-S5V4N54A-CZbCTJt4.js} +1 -1
- package/public/dist/assets/{dagre-BM42HDAG-CXEA1wvZ.js → dagre-BM42HDAG-BB0IJKjW.js} +1 -1
- package/public/dist/assets/{dagre-Ve-IAfyz.js → dagre-D4AB5Dyv.js} +1 -1
- package/public/dist/assets/desktop-bridge-CrqidwSb.js +1 -0
- package/public/dist/assets/{diagram-2AECGRRQ-CCB0OKc2.js → diagram-2AECGRRQ-CHUQ78BD.js} +1 -1
- package/public/dist/assets/{diagram-5GNKFQAL-Cki9HABy.js → diagram-5GNKFQAL-onxHMGMn.js} +1 -1
- package/public/dist/assets/{diagram-KO2AKTUF-DNBDjE2o.js → diagram-KO2AKTUF-BlgkTTwi.js} +1 -1
- package/public/dist/assets/{diagram-LMA3HP47-Cy23RDPa.js → diagram-LMA3HP47-BVWYubzU.js} +1 -1
- package/public/dist/assets/{diagram-OG6HWLK6-CT_YF8cA.js → diagram-OG6HWLK6-BM7IcJ6z.js} +1 -1
- package/public/dist/assets/dist-2S2B_MeU.js +1 -0
- package/public/dist/assets/dist-B2d2NOJ3.js +1 -0
- package/public/dist/assets/dist-BSF2Z7j1.js +6 -0
- package/public/dist/assets/dist-BZh7LRrp.js +1 -0
- package/public/dist/assets/dist-BaazPVzw.js +1 -0
- package/public/dist/assets/dist-Bn4kv_Se.js +1 -0
- package/public/dist/assets/dist-CB1fgeSN.js +1 -0
- package/public/dist/assets/dist-CG0XIeov.js +1 -0
- package/public/dist/assets/dist-CG65f_qI.js +1 -0
- package/public/dist/assets/dist-CJwXuDux.js +39 -0
- package/public/dist/assets/dist-CU9b0vPA.js +1 -0
- package/public/dist/assets/dist-CkWMWu5F.js +23 -0
- package/public/dist/assets/dist-CsK9fYYW.js +1 -0
- package/public/dist/assets/dist-CuNACpdD.js +1 -0
- package/public/dist/assets/dist-CzDHA1yv.js +1 -0
- package/public/dist/assets/dist-D0mdXpwq.js +1 -0
- package/public/dist/assets/{dist-3R3GxjCf.js → dist-DCefgfkj.js} +5 -5
- package/public/dist/assets/dist-DJ5byDHS2.js +1 -0
- package/public/dist/assets/dist-DLSl_Nbu.js +1 -0
- package/public/dist/assets/dist-DLa7--1u.js +1 -0
- package/public/dist/assets/dist-DZ1vWpde.js +1 -0
- package/public/dist/assets/dist-D_ULP6ER.js +1 -0
- package/public/dist/assets/dist-Dgo6P711.js +1 -0
- package/public/dist/assets/dist-DtkJvqbT.js +9 -0
- package/public/dist/assets/dist-DwzmyMDC.js +1 -0
- package/public/dist/assets/dist-H3yurMdo.js +11 -0
- package/public/dist/assets/dist-HtoUbUb4.js +1 -0
- package/public/dist/assets/dist-P76w4V8t.js +2 -0
- package/public/dist/assets/{dist-DuuoJfRB.js → dist-SWkyI5gN.js} +2 -2
- package/public/dist/assets/dist-w85EQGWO.js +1 -0
- package/public/dist/assets/{dockerfile-DAfh5qoE.js → dockerfile-O79f3xVO.js} +1 -1
- package/public/dist/assets/employees-DZSPGlaH.js +33 -0
- package/public/dist/assets/{erDiagram-TEJ5UH35-Cq7oHdXg.js → erDiagram-TEJ5UH35-Dr-3ziJG.js} +1 -1
- package/public/dist/assets/eventmodeling-FCH6USID-Du0rADZ8.js +1 -0
- package/public/dist/assets/{factor-BpoYJieo.js → factor-2MJ0aFHQ.js} +1 -1
- package/public/dist/assets/{flowDiagram-I6XJVG4X-D8CdEnfM.js → flowDiagram-I6XJVG4X-COxvv8bU.js} +1 -1
- package/public/dist/assets/{ganttDiagram-6RSMTGT7-B1rzKXi_.js → ganttDiagram-6RSMTGT7-BztWk1Ow.js} +2 -2
- package/public/dist/assets/gitGraph-WXDBUCRP-Cw5oPUI1.js +1 -0
- package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CqLh-joi.js → gitGraphDiagram-PVQCEYII-Dw-pLiB8.js} +1 -1
- package/public/dist/assets/{graphlib-W5bESv3F.js → graphlib-DCNdUnXF.js} +1 -1
- package/public/dist/assets/info-J43DQDTF-bda--3fv.js +1 -0
- package/public/dist/assets/{infoDiagram-5YYISTIA-C1zVxumj.js → infoDiagram-5YYISTIA-BSM5RFYV.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-x-9J6xPM.js → ishikawaDiagram-YF4QCWOH-DGqEaMN9.js} +1 -1
- package/public/dist/assets/javascript-BIzwdG_f.js +1 -0
- package/public/dist/assets/{journeyDiagram-JHISSGLW-BDYzHrtn.js → journeyDiagram-JHISSGLW-CBGlHr__.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-BJ-06i6Z.js → kanban-definition-UN3LZRKU-CtvwD90I.js} +1 -1
- package/public/dist/assets/manager-CFxbpg7j.css +1 -0
- package/public/dist/assets/manager-wAHlX68t.js +12 -0
- package/public/dist/assets/memory-B4RpXXJ7.js +20 -0
- package/public/dist/assets/memory-C9EVOb_D.js +1 -0
- package/public/dist/assets/mermaid-loader-BPeAxEES.js +1 -0
- package/public/dist/assets/{mermaid-parser.core-C62NUJRb.js → mermaid-parser.core-BB62R3s0.js} +1 -1
- package/public/dist/assets/mermaid.core-86z3EI0c.js +1 -0
- package/public/dist/assets/{mermaid.core-D8VnfThU.js → mermaid.core-Eh0d41ge.js} +2 -2
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-D8NDuIhn.js → mindmap-definition-RKZ34NQL-Cg1Nirgc.js} +1 -1
- package/public/dist/assets/notes-graph-settings-CznA-Qu0.js +1 -0
- package/public/dist/assets/{nsis-Ch4QINLN.js → nsis-CVYtDIFk.js} +1 -1
- package/public/dist/assets/packet-YPE3B663-CdmMldz9.js +1 -0
- package/public/dist/assets/pie-LRSECV5Y-Bh7evnjl.js +1 -0
- package/public/dist/assets/{pieDiagram-4H26LBE5-CpBePil_.js → pieDiagram-4H26LBE5--PRag7Te.js} +1 -1
- package/public/dist/assets/{provider-icons-ClVd2suJ.js → provider-icons-XEfJPGTe.js} +9 -5
- package/public/dist/assets/{pug-CXYqmmpP.js → pug-DplZiQL-.js} +1 -1
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-C1WWpn88.js → quadrantDiagram-W4KKPZXB-BTql-Bsn.js} +1 -1
- package/public/dist/assets/radar-GUYGQ44K-Bi6iY53d.js +1 -0
- package/public/dist/assets/render-DnylWKO1.js +28 -0
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-C_D5VbNk.js → requirementDiagram-4Y6WPE33-43_zBMme.js} +1 -1
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP--RH3Es8R.js → sankeyDiagram-5OEKKPKP-Bhvu7fVp.js} +1 -1
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-CVI4AjhN.js → sequenceDiagram-3UESZ5HK-DiT6UbHL.js} +1 -1
- package/public/dist/assets/settings-DIG_i79X.js +1 -0
- package/public/dist/assets/settings-VCXKhhhz.js +66 -0
- package/public/dist/assets/sidebar-Bi_ktFVw.js +18 -0
- package/public/dist/assets/{skills-DbRVI-zf.js → skills-CW7NEhew.js} +2 -2
- package/public/dist/assets/skills-RjRqvykb.js +1 -0
- package/public/dist/assets/slash-commands-CAydTUgf.js +19 -0
- package/public/dist/assets/slash-commands-DdXu96Zd.js +1 -0
- package/public/dist/assets/{state-xhhyIPlq.js → state-D04-chBy.js} +1 -1
- package/public/dist/assets/{stateDiagram-AJRCARHV-4bx1rPZ3.js → stateDiagram-AJRCARHV-EdHNB699.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CwXjV0-w.js +1 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-DeQoGRE2.js → timeline-definition-PNZ67QCA-DLCG8ciJ.js} +1 -1
- package/public/dist/assets/{trace-drawer-CIVBXyRH.js → trace-drawer-G-KP3IbQ.js} +1 -1
- package/public/dist/assets/treeView-BLDUP644-gIRuNooA.js +1 -0
- package/public/dist/assets/treemap-LRROVOQU-DGFQnuQ3.js +1 -0
- package/public/dist/assets/ui-CIQjTLzc.js +1 -0
- package/public/dist/assets/ui-CkHB9Jmo.js +140 -0
- package/public/dist/assets/vendor-utils-BydMkEGM.js +1 -0
- package/public/dist/assets/{vennDiagram-CIIHVFJN-CejyJK0L.js → vennDiagram-CIIHVFJN-C93tL0id.js} +1 -1
- package/public/dist/assets/wardley-L42UT6IY-D7Pv8rzC.js +1 -0
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-DqXV0sa1.js → wardleyDiagram-YWT4CUSO-BQQr2bW2.js} +1 -1
- package/public/dist/assets/wiki-link-resolver-CQwLeKpN.js +22 -0
- package/public/dist/assets/wiki-link-suggestions-DnVtu7Jb.js +2 -0
- package/public/dist/assets/{xychartDiagram-2RQKCTM6-CWLoVl2b.js → xychartDiagram-2RQKCTM6-DGZ5VpP9.js} +2 -2
- package/public/dist/index.html +36 -10
- package/public/dist/manager/index.html +2 -2
- package/public/index.html +35 -8
- package/public/js/constants.ts +22 -1
- package/public/js/diagram/iframe-renderer.ts +2 -1
- package/public/js/features/chat-messages.ts +2 -2
- package/public/js/features/chat.ts +144 -17
- package/public/js/features/copy-text.ts +39 -0
- package/public/js/features/employees.ts +5 -5
- package/public/js/features/memory.ts +3 -4
- package/public/js/features/message-actions.ts +3 -2
- package/public/js/features/message-history.ts +2 -2
- package/public/js/features/pending-queue.ts +3 -2
- package/public/js/features/preview-shortcut-bridge.ts +25 -10
- package/public/js/features/settings-channel.ts +3 -0
- package/public/js/features/settings-cli-status.ts +254 -45
- package/public/js/features/settings-core.ts +8 -0
- package/public/js/features/settings.ts +1 -1
- package/public/js/features/slash-commands.ts +34 -2
- package/public/js/features/theme.ts +34 -6
- package/public/js/features/transport-status-row.ts +91 -0
- package/public/js/features/workflow-event-adapter.ts +77 -0
- package/public/js/main.ts +21 -4
- package/public/js/preview-parent-origin.ts +38 -0
- package/public/js/provider-icons.ts +6 -1
- package/public/js/render/code-copy.ts +16 -18
- package/public/js/render/file-links.ts +127 -30
- package/public/js/render/notes-vault-path.ts +64 -0
- package/public/js/render/post-render.ts +2 -2
- package/public/js/render/svg-actions.ts +4 -1
- package/public/js/render.ts +1 -0
- package/public/js/state.ts +19 -1
- package/public/js/ws.ts +121 -8
- package/public/locales/en.json +40 -0
- package/public/locales/ja.json +31 -0
- package/public/locales/ko.json +40 -0
- package/public/locales/zh.json +31 -0
- package/public/manager/src/App.tsx +65 -64
- package/public/manager/src/AppChrome.tsx +14 -5
- package/public/manager/src/InstancePreview.tsx +113 -2
- package/public/manager/src/SidebarRailRouter.tsx +67 -4
- package/public/manager/src/api.ts +46 -0
- package/public/manager/src/browser-panel/BrowserPanel.tsx +445 -0
- package/public/manager/src/browser-panel/browser-panel.css +241 -0
- package/public/manager/src/browser-panel/browser-url.ts +55 -0
- package/public/manager/src/clipboard/copy-text.ts +27 -0
- package/public/manager/src/components/CommandBar.tsx +2 -0
- package/public/manager/src/components/CommandCenter.tsx +3 -1
- package/public/manager/src/components/DesktopPanelControls.tsx +79 -0
- package/public/manager/src/components/SidebarRail.tsx +1 -1
- package/public/manager/src/components/WorkspaceLayout.tsx +71 -1
- package/public/manager/src/dashboard-settings/DashboardDeveloperSettingsSection.tsx +123 -0
- package/public/manager/src/dashboard-settings/DashboardSettingsSidebar.tsx +6 -2
- package/public/manager/src/dashboard-settings/DashboardSettingsWorkspace.tsx +4 -1
- package/public/manager/src/dashboard-settings/dashboard-settings-ui.ts +8 -0
- package/public/manager/src/desktop-link.tsx +6 -1
- package/public/manager/src/diff-panel/DiffPanel.tsx +219 -0
- package/public/manager/src/diff-panel/diff-client.ts +46 -0
- package/public/manager/src/diff-panel/diff-panel.css +163 -0
- package/public/manager/src/diff-panel/diff-root-candidates.ts +54 -0
- package/public/manager/src/doc-panel/DocPanel.tsx +113 -0
- package/public/manager/src/doc-panel/doc-panel.css +57 -0
- package/public/manager/src/folder-panel/FolderPanel.tsx +144 -0
- package/public/manager/src/folder-panel/folder-panel.css +82 -0
- package/public/manager/src/folder-panel/folder-sources.ts +93 -0
- package/public/manager/src/help/helpContent.tsx +3 -0
- package/public/manager/src/hooks/useDashboardView.ts +22 -1
- package/public/manager/src/main.tsx +2 -0
- package/public/manager/src/manager-components.css +12 -0
- package/public/manager/src/manager-dashboard-reminders-priority.css +11 -0
- package/public/manager/src/manager-dashboard-reminders.css +29 -0
- package/public/manager/src/manager-layout.css +68 -22
- package/public/manager/src/manager-notes.css +181 -0
- package/public/manager/src/manager-p0-1-1.css +118 -1
- package/public/manager/src/manager-polish.css +15 -12
- package/public/manager/src/manager-shortcuts.ts +17 -0
- package/public/manager/src/manager-tokens.css +25 -0
- package/public/manager/src/notes/MarkdownEditor.tsx +26 -3
- package/public/manager/src/notes/NotesFileTree.tsx +24 -2
- package/public/manager/src/notes/NotesGraphView.tsx +1 -145
- package/public/manager/src/notes/NotesSidebar.tsx +4 -0
- package/public/manager/src/notes/NotesThemeLoader.tsx +104 -0
- package/public/manager/src/notes/NotesWorkspace.tsx +33 -5
- package/public/manager/src/notes/graph/NotesGraphCanvas.tsx +195 -0
- package/public/manager/src/notes/graph/NotesGraphControlsPanel.tsx +172 -0
- package/public/manager/src/notes/graph/NotesGraphWorkspace.tsx +116 -0
- package/public/manager/src/notes/graph/notes-graph-filter.ts +192 -0
- package/public/manager/src/notes/graph/notes-graph-force.ts +36 -0
- package/public/manager/src/notes/graph/notes-graph-settings.ts +121 -0
- package/public/manager/src/notes/notes-graph.css +382 -0
- package/public/manager/src/notes/rendering/CodeBlock.tsx +5 -4
- package/public/manager/src/notes/rendering/MarkdownRenderer.tsx +3 -0
- package/public/manager/src/notes/useNoteSync.ts +67 -0
- package/public/manager/src/notes/wysiwyg/MilkdownWysiwygEditor.tsx +4 -0
- package/public/manager/src/notes/wysiwyg/milkdown-code-block-view.ts +5 -1
- package/public/manager/src/notes/wysiwyg/milkdown-slash-menu.ts +192 -0
- package/public/manager/src/notes/wysiwyg/milkdown-table-menu.ts +120 -0
- package/public/manager/src/panels/BottomPanel.tsx +61 -0
- package/public/manager/src/panels/BottomPanelTabBar.tsx +71 -0
- package/public/manager/src/panels/PanelLayoutProvider.tsx +288 -0
- package/public/manager/src/panels/PanelResizer.tsx +71 -0
- package/public/manager/src/panels/RightSidebar.tsx +192 -0
- package/public/manager/src/panels/desktop-bridge.ts +112 -0
- package/public/manager/src/panels/panel-capabilities.ts +44 -0
- package/public/manager/src/panels/panel-layout-registry-state.ts +38 -0
- package/public/manager/src/panels/panel-shortcut-bus.ts +15 -0
- package/public/manager/src/panels/panels.css +274 -0
- package/public/manager/src/panels/types.ts +16 -0
- package/public/manager/src/preview.ts +11 -1
- package/public/manager/src/settings/pages/ChannelsDiscord.tsx +3 -1
- package/public/manager/src/settings/pages/ChannelsTelegram.tsx +3 -1
- package/public/manager/src/settings/pages/components/ActiveChannelToggle.tsx +2 -2
- package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +108 -0
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +22 -3
- package/public/manager/src/settings/pages/components/employees-helpers.ts +1 -0
- package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +1 -0
- package/public/manager/src/settings-controls.css +57 -0
- package/public/manager/src/settings-embedding.css +3 -3
- package/public/manager/src/terminal/TerminalPanel.tsx +362 -0
- package/public/manager/src/terminal/terminal-bridge.ts +12 -0
- package/public/manager/src/terminal/terminal.css +175 -0
- package/public/manager/src/types.ts +66 -2
- package/public/manager/src/usePreviewShortcutMessages.ts +12 -3
- package/scripts/fresh-install-smoke.ts +1 -2
- package/scripts/install-risk-gate.mjs +0 -18
- package/scripts/install-wsl.sh +0 -46
- package/scripts/install.sh +0 -28
- package/scripts/release-gates.mjs +52 -0
- package/scripts/release.sh +9 -1
- package/scripts/require-release-evidence.mjs +0 -2
- package/public/dist/assets/ChannelsDiscord-CbmWms9-.js +0 -1
- package/public/dist/assets/ChannelsTelegram-BD4Eyztg.js +0 -1
- package/public/dist/assets/Employees-DcMChleU.js +0 -1
- package/public/dist/assets/HealthBadge-CfLTPTPW.js +0 -1
- package/public/dist/assets/Heartbeat-BoobN35p.js +0 -1
- package/public/dist/assets/MilkdownWysiwygEditor-Otw40DDF.js +0 -160
- package/public/dist/assets/NotesGraphView-CwdEnL7d.js +0 -1
- package/public/dist/assets/Permissions-CcIBptg3.js +0 -1
- package/public/dist/assets/agent-meta-BC7mLqo6.js +0 -1
- package/public/dist/assets/app-C7MAcAMu.js +0 -39
- package/public/dist/assets/app-CkFBKUf8.css +0 -1
- package/public/dist/assets/architecture-7EHR7CIX-wVaUQezY.js +0 -1
- package/public/dist/assets/channel-CCQujL1n.js +0 -1
- package/public/dist/assets/chunk-55IACEB6-DhWWzzdj.js +0 -1
- package/public/dist/assets/chunk-QZHKN3VN-CBAtPPT7.js +0 -1
- package/public/dist/assets/chunk-WU5MYG2G-DlBJtD7-.js +0 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-DmPJvqRM.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-ECmTUt7U.js +0 -1
- package/public/dist/assets/constants-BXWl7LTi.js +0 -1
- package/public/dist/assets/dist-BLd7xdyq.js +0 -1
- package/public/dist/assets/dist-BaRrwDy3.js +0 -1
- package/public/dist/assets/dist-Bbsp4OF7.js +0 -1
- package/public/dist/assets/dist-BkBGlG70.js +0 -1
- package/public/dist/assets/dist-BkJ_1mj9.js +0 -1
- package/public/dist/assets/dist-BxCRVW5D.js +0 -1
- package/public/dist/assets/dist-C-v7Rm67.js +0 -23
- package/public/dist/assets/dist-CNgDEAy8.js +0 -1
- package/public/dist/assets/dist-CO_W5rr2.js +0 -1
- package/public/dist/assets/dist-ChAUfTbO.js +0 -1
- package/public/dist/assets/dist-D-k-lzQT.js +0 -1
- package/public/dist/assets/dist-D1hPukqY.js +0 -1
- package/public/dist/assets/dist-D5Qx-jQQ.js +0 -1
- package/public/dist/assets/dist-D7VNzYBv.js +0 -6
- package/public/dist/assets/dist-DAxnodoa.js +0 -1
- package/public/dist/assets/dist-DHSyODkR.js +0 -1
- package/public/dist/assets/dist-DaYTPjbb2.js +0 -1
- package/public/dist/assets/dist-DlWi9tVO.js +0 -1
- package/public/dist/assets/dist-Dv36UUXz.js +0 -1
- package/public/dist/assets/dist-F4CVhitP.js +0 -9
- package/public/dist/assets/dist-LHbJYy3N.js +0 -1
- package/public/dist/assets/dist-VIlx7JdU.js +0 -1
- package/public/dist/assets/dist-cgDt2PmY.js +0 -11
- package/public/dist/assets/dist-eW2LjRIK.js +0 -1
- package/public/dist/assets/dist-vGn3_sWA.js +0 -1
- package/public/dist/assets/employees-BmxY8Mw3.js +0 -33
- package/public/dist/assets/eventmodeling-FCH6USID-Cq0nylxO.js +0 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-DDq6-3D3.js +0 -1
- package/public/dist/assets/info-J43DQDTF-OUnqwpUV.js +0 -1
- package/public/dist/assets/javascript-CZjRNq5R.js +0 -1
- package/public/dist/assets/manager-B2NWzG7j.css +0 -1
- package/public/dist/assets/manager-q68thm66.js +0 -25
- package/public/dist/assets/memory-BqqibBIE.js +0 -1
- package/public/dist/assets/memory-CRL72HB-.js +0 -20
- package/public/dist/assets/mermaid-loader-Dqb4ZUz6.js +0 -1
- package/public/dist/assets/mermaid.core-DYHvk6Pd.js +0 -1
- package/public/dist/assets/packet-YPE3B663-Bb9hBQ06.js +0 -1
- package/public/dist/assets/pie-LRSECV5Y-CNRQnRNZ.js +0 -1
- package/public/dist/assets/radar-GUYGQ44K-BxngU2v0.js +0 -1
- package/public/dist/assets/render-o_YEiCEO.js +0 -28
- package/public/dist/assets/settings-B0RlyAkI.js +0 -1
- package/public/dist/assets/settings-CCXRL5Ar.js +0 -46
- package/public/dist/assets/sidebar-DRJffqO1.js +0 -14
- package/public/dist/assets/skills-CFdzXbtK.js +0 -1
- package/public/dist/assets/slash-commands-BUM6u-Ex.js +0 -1
- package/public/dist/assets/slash-commands-C2YBMaQV.js +0 -14
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CrfGPzHb.js +0 -1
- package/public/dist/assets/treeView-BLDUP644-cXRzPGzz.js +0 -1
- package/public/dist/assets/treemap-LRROVOQU-BsZE5HPE.js +0 -1
- package/public/dist/assets/ui-C3ArwMhv.js +0 -140
- package/public/dist/assets/ui-CboUuc_E.js +0 -1
- package/public/dist/assets/vendor-utils-rVejrfMR.js +0 -1
- package/public/dist/assets/wardley-L42UT6IY-D_qm0cZD.js +0 -1
- package/public/dist/assets/wiki-link-suggestions-e5BzJAZH.js +0 -23
- /package/public/dist/assets/{DashboardEmbeddingSection-6F8zSSja.js → DashboardEmbeddingSection-ChF63KXJ.js} +0 -0
- /package/public/dist/assets/{InlineWarn-C7ISyzDI.js → InlineWarn-CY6dBBMq.js} +0 -0
- /package/public/dist/assets/{apl-CieDeb7B.js → apl-CQGZdmVU.js} +0 -0
- /package/public/dist/assets/{asciiarmor-BRTyulZY.js → asciiarmor-6rdc1JOx.js} +0 -0
- /package/public/dist/assets/{asn1-DoNAtQ5o.js → asn1-D8iCH-On.js} +0 -0
- /package/public/dist/assets/{asterisk-CR7oKPxi.js → asterisk-ChqZLgq_.js} +0 -0
- /package/public/dist/assets/{brainfuck-abzPcrOz.js → brainfuck-CDmGO_27.js} +0 -0
- /package/public/dist/assets/{chunk-AGHRB4JF-CYdXVA2-.js → chunk-AGHRB4JF-BgIXD8KY.js} +0 -0
- /package/public/dist/assets/{chunk-NNHCCRGN-BaiX9a5F.js → chunk-NNHCCRGN-BPmsUfnh.js} +0 -0
- /package/public/dist/assets/{clike-B71Zq38G.js → clike-CSGpadKW.js} +0 -0
- /package/public/dist/assets/{clojure-Zm0UzHPq.js → clojure-CST35Ic-.js} +0 -0
- /package/public/dist/assets/{cmake-D3UNdg6L.js → cmake-BVvLLL-M.js} +0 -0
- /package/public/dist/assets/{cobol-4fYvwQR0.js → cobol-Ck6DkJOz.js} +0 -0
- /package/public/dist/assets/{coffeescript-Ct6bZdRU.js → coffeescript-D_Wxovbg.js} +0 -0
- /package/public/dist/assets/{commonlisp-CrgXVPcd.js → commonlisp-B8ANOF1p.js} +0 -0
- /package/public/dist/assets/{crystal-bGOl67VM.js → crystal-Daoo63FI.js} +0 -0
- /package/public/dist/assets/{css-B_EV3Xq2.js → css-BLiiJuyL.js} +0 -0
- /package/public/dist/assets/{cypher-DXDlHTYf.js → cypher-BMqftmWo.js} +0 -0
- /package/public/dist/assets/{cytoscape.esm-BK7ao2Ti.js → cytoscape.esm-Dgu56jtY.js} +0 -0
- /package/public/dist/assets/{d-RL5ynsiz.js → d-DOGkwbDi.js} +0 -0
- /package/public/dist/assets/{diff-B5McBGjz.js → diff-VsLDmRbo.js} +0 -0
- /package/public/dist/assets/{dist-DrIWh2fi.js → dist-DJlNCT5R.js} +0 -0
- /package/public/dist/assets/{dtd-l3sK4p_C.js → dtd-CxrLPib8.js} +0 -0
- /package/public/dist/assets/{dylan-WjJGY-rW.js → dylan-QB82VE9N.js} +0 -0
- /package/public/dist/assets/{ebnf-BGY79HOS.js → ebnf-B6cp6Red.js} +0 -0
- /package/public/dist/assets/{ecl-BKh7OE1d.js → ecl-zYbBq-k7.js} +0 -0
- /package/public/dist/assets/{eiffel-Bzvlg3oK.js → eiffel-DnQZC9e4.js} +0 -0
- /package/public/dist/assets/{elm-5_BqNmKu.js → elm-Cx44SA5e.js} +0 -0
- /package/public/dist/assets/{erlang-BdVwz8I8.js → erlang-CEHBsR_g.js} +0 -0
- /package/public/dist/assets/{fcl-B9cnfODD.js → fcl-D0vOEWq5.js} +0 -0
- /package/public/dist/assets/{fields-BwD_NGxe.js → fields-C-y_8RgA.js} +0 -0
- /package/public/dist/assets/{forth-wZbbnGzb.js → forth-KL0mdDBU.js} +0 -0
- /package/public/dist/assets/{fortran-BAJZrRfU.js → fortran-Dq4mvV2Z.js} +0 -0
- /package/public/dist/assets/{gas-D60ZhBat.js → gas-C1IQIiP2.js} +0 -0
- /package/public/dist/assets/{gherkin-B8tKjAAi.js → gherkin-DJavHCGq.js} +0 -0
- /package/public/dist/assets/{groovy-BAG9eJUD.js → groovy-DYXu3zX-.js} +0 -0
- /package/public/dist/assets/{haskell-Cj4TmWbg.js → haskell-CEbLR9qt.js} +0 -0
- /package/public/dist/assets/{haxe-8chnvz-o.js → haxe-BpJF7A4A.js} +0 -0
- /package/public/dist/assets/{http-DDYeO71z.js → http-DWdENtd1.js} +0 -0
- /package/public/dist/assets/{idl-D1hY-Gp_.js → idl-CE1kS3NQ.js} +0 -0
- /package/public/dist/assets/{javascript-Sh0ZUMP2.js → javascript-CJNkmBfh.js} +0 -0
- /package/public/dist/assets/{julia-BibioBF2.js → julia-BJgPYrDa.js} +0 -0
- /package/public/dist/assets/{livescript-CSZrB6F4.js → livescript-DsrJVqPX.js} +0 -0
- /package/public/dist/assets/{lua-BvTlo5w3.js → lua-C7UuQSXZ.js} +0 -0
- /package/public/dist/assets/{mathematica-Bexv8BWZ.js → mathematica-DUerNKxF.js} +0 -0
- /package/public/dist/assets/{mbox-BAhbA8z2.js → mbox-l0MV8RAb.js} +0 -0
- /package/public/dist/assets/{mirc-BzT5Kh4S.js → mirc-Bs-bacTk.js} +0 -0
- /package/public/dist/assets/{mllike-DeoJnUZQ.js → mllike-DDa-ra-x.js} +0 -0
- /package/public/dist/assets/{modelica-FD_-Fxlc.js → modelica-DorVekoh.js} +0 -0
- /package/public/dist/assets/{mscgen-C-OyhbwB.js → mscgen-Bu9Rmf5j.js} +0 -0
- /package/public/dist/assets/{mumps-BxkCDTK7.js → mumps-BERv0OoY.js} +0 -0
- /package/public/dist/assets/{nginx-2JaV__gC.js → nginx-Bsa-KRWy.js} +0 -0
- /package/public/dist/assets/{ntriples--rhhCzqb.js → ntriples-CQMTRhrZ.js} +0 -0
- /package/public/dist/assets/{octave-rS4nMzRe.js → octave-Bl83K6Ag.js} +0 -0
- /package/public/dist/assets/{oz-I4fMb_NC.js → oz-CCTboWOh.js} +0 -0
- /package/public/dist/assets/{page-shell-uNOxwdbr.js → page-shell-k5-hYhKb.js} +0 -0
- /package/public/dist/assets/{pascal-BEghJs8t.js → pascal-D-i7gVLf.js} +0 -0
- /package/public/dist/assets/{path-utils-h2GAj3hH.js → path-utils-ztBHV7MX.js} +0 -0
- /package/public/dist/assets/{perl-BRO9ZFo9.js → perl-BiLLXF9c.js} +0 -0
- /package/public/dist/assets/{pig-L4Ii6KI0.js → pig-D_F2azNe.js} +0 -0
- /package/public/dist/assets/{powershell-BBeqUCRp.js → powershell-AJ59gf0u.js} +0 -0
- /package/public/dist/assets/{properties-Boi0jF2J.js → properties-CPYgUZZu.js} +0 -0
- /package/public/dist/assets/{protobuf-fB2aGypX.js → protobuf-BTkGCn64.js} +0 -0
- /package/public/dist/assets/{puppet-BRmsErtO.js → puppet-CQcFSvge.js} +0 -0
- /package/public/dist/assets/{python-Be4P9Dgp.js → python-txj4co98.js} +0 -0
- /package/public/dist/assets/{q-DZGhDLYt.js → q-D48iiS-J.js} +0 -0
- /package/public/dist/assets/{r-B4NERjRM.js → r-KvgSjvcw.js} +0 -0
- /package/public/dist/assets/{rough.esm-C0Gkx4O1.js → rough.esm-DEk5_dnJ.js} +0 -0
- /package/public/dist/assets/{rpm-e-QbHJ1q.js → rpm-BcHYZFkz.js} +0 -0
- /package/public/dist/assets/{ruby-BSVP_v59.js → ruby-C_Hj_59H.js} +0 -0
- /package/public/dist/assets/{sas-DHlU4v4g.js → sas-iqYBvleh.js} +0 -0
- /package/public/dist/assets/{scheme-BGXbz5Hz.js → scheme-BIcb4en6.js} +0 -0
- /package/public/dist/assets/{shell-yonx6xY2.js → shell-CJbQRqgD.js} +0 -0
- /package/public/dist/assets/{sieve-ClPJUZyi.js → sieve-CEVqHONw.js} +0 -0
- /package/public/dist/assets/{simple-mode-CjViblDK.js → simple-mode-CyEi8-qy.js} +0 -0
- /package/public/dist/assets/{smalltalk-CHXubeqS.js → smalltalk-CzJ9RPAW.js} +0 -0
- /package/public/dist/assets/{solr-C6q6YwPz.js → solr-DhrIF5tD.js} +0 -0
- /package/public/dist/assets/{sparql-CcspZvEd.js → sparql-p9uHdCLs.js} +0 -0
- /package/public/dist/assets/{spreadsheet-DH3a4LBS.js → spreadsheet-BEYojJ7u.js} +0 -0
- /package/public/dist/assets/{sql-meoY6gNi.js → sql-CnA4GIza.js} +0 -0
- /package/public/dist/assets/{stex-D2bn6Zsh.js → stex-6IVJg-2X.js} +0 -0
- /package/public/dist/assets/{stylus-DbXGih0S.js → stylus-fqPouKsv.js} +0 -0
- /package/public/dist/assets/{swift-Ch391uOd.js → swift-DHXFQ55a.js} +0 -0
- /package/public/dist/assets/{tcl-CQBgGWDP.js → tcl-DI621_2I.js} +0 -0
- /package/public/dist/assets/{textile-4i3oG3tg.js → textile-CpiPRB46.js} +0 -0
- /package/public/dist/assets/{tiddlywiki-CXG1-CcK.js → tiddlywiki-DASPoia0.js} +0 -0
- /package/public/dist/assets/{tiki-DJqKUhA-.js → tiki-H2_-xfcb.js} +0 -0
- /package/public/dist/assets/{toml-C1FnyICQ.js → toml-BLGegqRu.js} +0 -0
- /package/public/dist/assets/{troff-Cp8NvRO0.js → troff-BH_j1MPi.js} +0 -0
- /package/public/dist/assets/{ttcn-cfg-BVuxfGZf.js → ttcn-cfg-kxhuYjqY.js} +0 -0
- /package/public/dist/assets/{ttcn-NlmW_fji.js → ttcn-q84VxP8I.js} +0 -0
- /package/public/dist/assets/{turtle-Ba9ERlnm.js → turtle-COu2Ajrp.js} +0 -0
- /package/public/dist/assets/{vb-DDs4gjJb.js → vb-7GRadaxb.js} +0 -0
- /package/public/dist/assets/{vbscript-gOFmdMJN.js → vbscript-Bibo3Rcb.js} +0 -0
- /package/public/dist/assets/{velocity-DtSNZA7i.js → velocity-CRfDkZn8.js} +0 -0
- /package/public/dist/assets/{verilog-Pldmtxe7.js → verilog-B1kgqsBR.js} +0 -0
- /package/public/dist/assets/{vhdl-BFfSgWGp.js → vhdl-qL7iOc7c.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-BggQEPNo.js → w3c-keyname-BkTDclMX.js} +0 -0
- /package/public/dist/assets/{webidl-B6ZFYE2L.js → webidl-Bpu8XQq2.js} +0 -0
- /package/public/dist/assets/{xquery-DhxUT98N.js → xquery-C_ocxvPR.js} +0 -0
- /package/public/dist/assets/{yacas-jSkQeF1Q.js → yacas-DByFiVRK.js} +0 -0
- /package/public/dist/assets/{z80-D7Lt6v61.js → z80-CKuzqVbN.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{a as c,i as l,n as u,r as d,s as f}from"./fields-C-y_8RgA.js";import{n as p}from"./agent-meta-BhEbjy4P.js";import{t as m}from"./path-utils-ztBHV7MX.js";var h=e(t(),1),g=n();function _(e,t,n=!0){return{value:e,original:t,valid:n}}function v({cli:e,meta:t,original:n,value:r,setValue:i,setEntry:a}){let o=`percli-${e}-models`,s=e===`ai-e`,u=r.provider||t.defaultProvider||t.providers?.[0]||`claude`,d=s?t.modelsByProvider?.[u]??t.models:t.models,p=s?t.effortsByProvider?.[u]??t.efforts:t.efforts;return(0,g.jsxs)(`div`,{className:`settings-percli-row`,"data-cli":e,children:[(0,g.jsx)(`h3`,{className:`settings-percli-title`,children:t.label}),(0,g.jsxs)(`div`,{className:`settings-percli-grid`,children:[s&&t.providers?.length?(0,g.jsx)(l,{id:`percli-${e}-provider`,label:`Provider`,value:u,options:t.providers.map(e=>({value:e,label:e})),onChange:o=>{let s=t.modelsByProvider?.[o]??[],c=t.effortsByProvider?.[o]??[],l=s.includes(r.model||``)?r.model||``:s[0]||``,u=c.includes(r.effort||``)&&r.effort||``;i({...r,provider:o,model:l,effort:u}),a(`perCli.${e}.provider`,_(o,n.provider??t.defaultProvider??`claude`)),a(`perCli.${e}.model`,_(l,n.model??``)),a(`perCli.${e}.effort`,_(u,n.effort??``))}}):null,(0,g.jsxs)(`div`,{className:`settings-percli-model`,children:[(0,g.jsx)(f,{id:`percli-${e}-model`,label:`Model`,value:r.model??``,onChange:t=>{i({...r,model:t}),a(`perCli.${e}.model`,_(t,n.model??``))},placeholder:d[0]??`model id`}),d.length>0?(0,g.jsx)(`datalist`,{id:o,children:d.map(e=>(0,g.jsx)(`option`,{value:e},e))}):null]}),p.length>0?(0,g.jsx)(l,{id:`percli-${e}-effort`,label:`Effort`,value:r.effort??``,options:[{value:``,label:`(default)`},...p.map(e=>({value:e,label:e}))],onChange:t=>{i({...r,effort:t}),a(`perCli.${e}.effort`,_(t,n.effort??``))}}):null,(0,g.jsx)(c,{id:`percli-${e}-fastmode`,label:`Fast mode`,value:!!r.fastMode,onChange:t=>{i({...r,fastMode:t}),a(`perCli.${e}.fastMode`,_(t,!!n.fastMode))}})]})]})}function y(e){let t=new Set;for(let n of Object.keys(e.activeOverrides||{}))t.add(n);for(let n of Object.keys(e.perCli||{}))t.add(n);let n={};for(let e of t)n[e]={model:``,effort:``};return{activeOverrides:n}}function b({port:e,client:t,dirty:n,registerSave:c}){let{state:l,refresh:f,setData:_}=r(t,`/api/settings`),[b,x]=(0,h.useState)({}),[S,C]=(0,h.useState)([]),[w,T]=(0,h.useState)({}),[E,D]=(0,h.useState)(!1),[O,k]=(0,h.useState)(null);(0,h.useEffect)(()=>{if(l.kind!==`ready`)return;x({...l.data.perCli||{}}),C([...l.data.fallbackOrder||[]]);let e=l.data.perCli?.codex||{},t={};typeof e.contextWindowSize==`number`&&(t.contextWindowSize=e.contextWindowSize),typeof e.contextWindowCompactLimit==`number`&&(t.contextWindowCompactLimit=e.contextWindowCompactLimit),T(t)},[l]),(0,h.useEffect)(()=>()=>{for(let e of Array.from(n.pending.keys()))(e===`fallbackOrder`||e.startsWith(`perCli.`))&&n.remove(e)},[n]);let A=(0,h.useCallback)((e,t)=>n.set(e,t),[n]),j=(0,h.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=m(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),_(a),x({...a.perCli||{}}),C([...a.fallbackOrder||[]]),await f()},[t,n,f,_]);(0,h.useEffect)(()=>{if(c)return c(j),()=>c(null)},[c,j]);let M=(0,h.useCallback)(async()=>{if(l.kind===`ready`&&window.confirm(`Reset all active overrides?`)){D(!0),k(null);try{let e=y(l.data),n=await t.put(`/api/settings`,e);_(n&&typeof n==`object`&&`data`in n?n.data:n),await f()}catch(e){k(e instanceof Error?e.message:String(e))}finally{D(!1)}}},[t,f,_,l]);if(l.kind===`loading`)return(0,g.jsx)(a,{});if(l.kind===`offline`)return(0,g.jsx)(o,{port:e});if(l.kind===`error`)return(0,g.jsx)(s,{message:l.message});let N=l.data,P=N.perCli||{},F=Object.keys(P),I=P.codex||{},L=N.activeOverrides||{},R=Object.entries(L);return(0,g.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),j()},children:[(0,g.jsx)(i,{title:`Model defaults`,hint:`Per-CLI defaults applied when no active override is set on the Agent page.`,children:F.length===0?(0,g.jsx)(`p`,{className:`settings-empty`,children:`No CLIs registered for this instance.`}):F.map(e=>(0,g.jsx)(v,{cli:e,meta:p(e),original:P[e]||{},value:b[e]||P[e]||{},setValue:t=>x({...b,[e]:t}),setEntry:A},e))}),P.codex?(0,g.jsxs)(i,{title:`Codex context window`,hint:`Codex-only sliders. Other CLIs ignore these values.`,children:[(0,g.jsx)(d,{id:`model-codex-ctx`,label:`Context window size`,value:w.contextWindowSize??(typeof I.contextWindowSize==`number`?I.contextWindowSize:1e6),min:0,step:1e4,onChange:e=>{T({...w,contextWindowSize:e}),A(`perCli.codex.contextWindowSize`,{value:e,original:I.contextWindowSize??1e6,valid:Number.isFinite(e)&&e>=0})}}),(0,g.jsx)(d,{id:`model-codex-compact`,label:`Compact limit`,value:w.contextWindowCompactLimit??(typeof I.contextWindowCompactLimit==`number`?I.contextWindowCompactLimit:9e5),min:0,step:1e4,onChange:e=>{T({...w,contextWindowCompactLimit:e}),A(`perCli.codex.contextWindowCompactLimit`,{value:e,original:I.contextWindowCompactLimit??9e5,valid:Number.isFinite(e)&&e>=0})}})]}):null,(0,g.jsx)(i,{title:`Fallback order`,hint:`Order of CLIs used when the active CLI fails. Press Enter to add a chip; Backspace to remove the last.`,children:(0,g.jsx)(u,{id:`model-fallbackOrder`,label:`Fallback order`,value:S,onChange:e=>{C(e),A(`fallbackOrder`,{value:e,original:N.fallbackOrder||[],valid:!0})},placeholder:`cli name`})}),(0,g.jsxs)(i,{title:`Active overrides`,hint:`Per-session overrides applied on top of per-CLI defaults.`,children:[R.length===0?(0,g.jsx)(`p`,{className:`settings-empty`,children:`No active overrides.`}):(0,g.jsxs)(`table`,{className:`settings-overrides-table`,children:[(0,g.jsx)(`thead`,{children:(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`th`,{scope:`col`,children:`CLI`}),(0,g.jsx)(`th`,{scope:`col`,children:`Model`}),(0,g.jsx)(`th`,{scope:`col`,children:`Effort`})]})}),(0,g.jsx)(`tbody`,{children:R.map(([e,t])=>(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`td`,{children:e}),(0,g.jsx)(`td`,{children:(0,g.jsx)(`code`,{children:t?.model||`—`})}),(0,g.jsx)(`td`,{children:(0,g.jsx)(`code`,{children:t?.effort||`—`})})]},e))})]}),(0,g.jsxs)(`div`,{className:`settings-overrides-actions`,children:[(0,g.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void M(),disabled:E||R.length===0,children:E?`Resetting…`:`Reset overrides`}),O?(0,g.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:O}):null]})]})]})}export{y as buildResetOverridesPatch,b as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{a as c,i as l,s as u}from"./fields-C-y_8RgA.js";import{t as d}from"./InlineWarn-CY6dBBMq.js";import{t as f}from"./path-utils-ztBHV7MX.js";var p=e(t(),1),m=n(),h=[`off`,`http-only`,`full`];function g(e){return e===`off`||e===`http-only`||e===`full`}var _=[`network.bindHost`,`network.lanBypass`,`network.remoteAccess.mode`,`network.remoteAccess.trustProxies`,`network.remoteAccess.trustForwardedFor`,`network.remoteAccess.publicOriginHint`],v=[{value:`127.0.0.1`,label:`127.0.0.1 — loopback only (recommended)`},{value:`0.0.0.0`,label:`0.0.0.0 — all interfaces (LAN exposed)`}],y=[{value:`off`,label:`off — block remote requests`},{value:`http-only`,label:`http-only — read-only HTTP from remote`},{value:`full`,label:`full — HTTP + WebSocket from remote`}];function b(e){let t={};return e.bindHost!==void 0&&(t.bindHost=e.bindHost),e.lanBypass!==void 0&&(t.lanBypass=e.lanBypass),t.remoteAccess={...e.remoteAccess??{}},t}function x(e){let t=(e||``).trim();if(t===``)return{kind:`empty`};let n;try{n=new URL(t)}catch{return{kind:`invalid`,reason:`Must be an absolute URL (https://… or http://…).`}}return n.protocol!==`http:`&&n.protocol!==`https:`?{kind:`invalid`,reason:`Only http:// or https:// origins are accepted.`}:n.hostname?n.pathname&&n.pathname!==`/`?{kind:`invalid`,reason:`Origin must not include a path.`}:n.search||n.hash?{kind:`invalid`,reason:`Origin must not include query or hash.`}:{kind:`valid`,origin:n.origin}:{kind:`invalid`,reason:`Origin must include a host.`}}function S(e){let t=(e.locationHost||``).toLowerCase().split(`:`)[0]||``;return t===``||t===`localhost`||t===`127.0.0.1`||t===`::1`||e.currentMode===e.nextMode?!1:e.nextMode===`off`}function C({port:e,client:t,dirty:n,registerSave:h}){let{state:C,refresh:w,setData:T}=r(t,`/api/settings`),[E,D]=(0,p.useState)({});(0,p.useEffect)(()=>{C.kind===`ready`&&D(b(C.data.network??{}))},[C]),(0,p.useEffect)(()=>()=>{for(let e of _)n.remove(e)},[n]);let O=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),k=(0,p.useMemo)(()=>C.kind===`ready`?C.data.network??{}:{},[C]),A=k.remoteAccess??{},j=E.remoteAccess??{},M=E.bindHost??k.bindHost??`127.0.0.1`,N=!!(E.lanBypass??k.lanBypass),P=g(j.mode)?j.mode:g(A.mode)?A.mode:`off`,F=P!==`off`,I=!!(j.trustProxies??A.trustProxies),L=!!(j.trustForwardedFor??A.trustForwardedFor),R=j.publicOriginHint??A.publicOriginHint??``,z=x(R),B=S({currentMode:g(A.mode)?A.mode:`off`,nextMode:P,locationHost:typeof window<`u`?window.location.host:``}),V=(0,p.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0||B&&typeof window<`u`&&!window.confirm(`You are accessing this dashboard over a remote origin. Saving with remote access "off" will lock you out. Continue?`))return;let r=f(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),D(b(a.network??{})),T(a),await w()},[t,n,B,w,T]);if((0,p.useEffect)(()=>{if(h)return h(V),()=>h(null)},[h,V]),C.kind===`loading`)return(0,m.jsx)(a,{});if(C.kind===`offline`)return(0,m.jsx)(o,{port:e});if(C.kind===`error`)return(0,m.jsx)(s,{message:C.message});let H=(E.bindHost??k.bindHost)!==(k.bindHost??`127.0.0.1`);return(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),V()},children:[(0,m.jsxs)(i,{title:`Bind`,hint:`Listening interface for /i/${e}. Changes require an instance restart.`,children:[(0,m.jsx)(l,{id:`network-bindHost`,label:`Bind host`,value:M,options:v,onChange:e=>{D({...E,bindHost:e}),O(`network.bindHost`,{value:e,original:k.bindHost??`127.0.0.1`,valid:!0})}}),M===`0.0.0.0`&&(0,m.jsxs)(d,{children:[`Listening on `,(0,m.jsx)(`code`,{children:`0.0.0.0`}),` exposes this instance's API to anyone on your LAN. Pair with auth + firewall rules.`]}),H&&(0,m.jsx)(d,{tone:`info`,children:`Restart the instance for the new bind host to take effect.`}),(0,m.jsx)(c,{id:`network-lanBypass`,label:`LAN bypass`,description:`Skip auth checks for clients on the same LAN.`,value:N,onChange:e=>{D({...E,lanBypass:e}),O(`network.lanBypass`,{value:e,original:!!k.lanBypass,valid:!0})}}),N&&(0,m.jsx)(d,{children:`LAN bypass disables auth for any client on the same network. Only enable on a trusted network.`})]}),(0,m.jsxs)(i,{title:`Remote access`,hint:`Mode controls what reaches the API from outside the loopback interface.`,children:[(0,m.jsx)(l,{id:`network-remoteAccess-mode`,label:`Remote access mode`,value:P,options:y,onChange:e=>{g(e)&&(D({...E,remoteAccess:{...j,mode:e}}),O(`network.remoteAccess.mode`,{value:e,original:g(A.mode)?A.mode:`off`,valid:!0}))}}),(0,m.jsxs)(`p`,{className:`settings-section-hint`,children:[(0,m.jsx)(`strong`,{children:`off`}),` — only loopback can talk to the API.`,` `,(0,m.jsx)(`strong`,{children:`http-only`}),` — remote can issue HTTP requests but no WebSocket upgrades. `,(0,m.jsx)(`strong`,{children:`full`}),` — HTTP + WebSocket open to remote (use with auth).`]}),B&&(0,m.jsxs)(d,{role:`alert`,children:[`Saving will close remote access while you're connected from`,(0,m.jsxs)(`code`,{children:[` `,typeof window<`u`?window.location.host:``,` `]}),`— you will be locked out. Reach the dashboard over loopback first.`]}),F&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(c,{id:`network-remoteAccess-trustProxies`,label:`Trust proxies`,description:`Honor proxy headers when computing the client origin.`,value:I,onChange:e=>{D({...E,remoteAccess:{...j,trustProxies:e}}),O(`network.remoteAccess.trustProxies`,{value:e,original:!!A.trustProxies,valid:!0})}}),(0,m.jsx)(c,{id:`network-remoteAccess-trustForwardedFor`,label:`Trust X-Forwarded-For`,description:`Use X-Forwarded-For for the client IP. Only enable behind a known proxy.`,value:L,onChange:e=>{D({...E,remoteAccess:{...j,trustForwardedFor:e}}),O(`network.remoteAccess.trustForwardedFor`,{value:e,original:!!A.trustForwardedFor,valid:!0})}}),L&&!I&&(0,m.jsx)(d,{children:`Trusting X-Forwarded-For without trusting the proxy chain lets any client spoof its IP. Enable "Trust proxies" too.`}),(0,m.jsx)(u,{id:`network-remoteAccess-publicOriginHint`,label:`Public origin hint`,value:R,placeholder:`https://your-tunnel-url`,error:z.kind===`invalid`?z.reason:null,onChange:e=>{D({...E,remoteAccess:{...j,publicOriginHint:e}});let t=x(e);O(`network.remoteAccess.publicOriginHint`,{value:t.kind===`valid`?t.origin:e,original:A.publicOriginHint??``,valid:t.kind!==`invalid`})}})]})]})]})}export{h as REMOTE_ACCESS_MODES,C as default,S as detectSelfLockoutRisk,g as isRemoteAccessMode,x as parsePublicOriginHint};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,o,r as s,t as c}from"./notes-graph-settings-CznA-Qu0.js";import{Bt as l,Ft as u,H as d,It as f,Lt as p,Pt as m,Rt as h,V as g,Vt as _}from"./vendor-utils-BydMkEGM.js";var v=e(t(),1);function y(e){return{nodeSize:e.nodeSize,linkDistance:e.linkDistance,chargeStrength:e.chargeStrength,labelDensity:e.labelDensity,showArrows:e.showArrows,animate:e.animate}}function b(e,t){let n=e.kind===`tag`?5:e.kind===`missing`||e.kind===`ambiguous`?6:7,r=Math.sqrt(Math.max(0,e.degree))*2.4;return Math.min(26,Math.max(4,(n+r)*t.nodeSize))}function x(e,t,n){return e.kind===`missing`||e.kind===`ambiguous`?t>=.45:e.kind===`tag`?n.labelDensity>.35&&t>=.65:n.labelDensity>=.75?t>=.35:n.labelDensity>=.45?e.degree>0&&t>=.6:e.degree>=2&&t>=.85}var S=n();function C(e,t){let n=e.id===t?` is-selected`:``;return`notes-graph-node notes-graph-node-${e.kind}${n}`}function w(e){return`notes-graph-link notes-graph-link-${e.status}${e.virtual?` is-virtual`:``}`}function T(e){let t=(0,v.useRef)(null),n=(0,v.useRef)(null),r=(0,v.useRef)(e.onNavigate),[i,a]=(0,v.useState)({width:900,height:650});r.current=e.onNavigate;let o=(0,v.useMemo)(()=>y(e.settings),[e.settings]);return(0,v.useEffect)(()=>{let e=n.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();a({width:Math.max(320,Math.floor(t.width||900)),height:Math.max(320,Math.floor(t.height||650))})};if(t(),typeof window.ResizeObserver!=`function`)return;let r=new window.ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[]),(0,v.useEffect)(()=>{let n=t.current;if(!n)return;let a=_(n);if(a.selectAll(`*`).remove(),a.attr(`viewBox`,`0 0 ${i.width} ${i.height}`),e.data.nodes.length===0)return;let s=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,c=e.data.nodes.map(e=>({...e})),v=new Map(c.map(e=>[e.id,e])),y=e.data.edges.flatMap(e=>{let t=v.get(e.source),n=v.get(e.target),r={raw:e.raw,status:e.status,...e.resolvedPath?{resolvedPath:e.resolvedPath}:{},...e.virtual?{virtual:e.virtual}:{}};return t&&n?[{...r,source:t,target:n}]:[]});a.append(`defs`).append(`marker`).attr(`id`,`notes-graph-arrow`).attr(`viewBox`,`0 -5 10 10`).attr(`refX`,15).attr(`refY`,0).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto`).append(`path`).attr(`d`,`M0,-5L10,0L0,5`).attr(`fill`,`currentColor`);let S=a.append(`g`).attr(`class`,`notes-graph-viewport`),T=S.append(`g`).attr(`class`,`notes-graph-links`).selectAll(`line`).data(y).join(`line`).attr(`class`,w).attr(`marker-end`,o.showArrows?`url(#notes-graph-arrow)`:null),E=S.append(`g`).attr(`class`,`notes-graph-nodes`).selectAll(`g`).data(c).join(`g`).attr(`class`,t=>C(t,e.selectedPath)).attr(`tabindex`,e=>e.kind===`note`?0:-1).attr(`role`,e=>e.kind===`note`?`button`:`img`).attr(`aria-label`,e=>`${e.title}, ${e.kind}, ${e.degree} links`).on(`click`,(e,t)=>{t.kind===`note`&&t.path&&r.current(t.path)}).on(`keydown`,(e,t)=>{t.kind!==`note`||!t.path||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),r.current(t.path))});E.append(`circle`).attr(`r`,e=>b(e,o)).attr(`fill`,e=>e.groupColor??null),E.append(`text`).attr(`class`,`notes-graph-label`).attr(`x`,e=>b(e,o)+8).attr(`y`,4).text(e=>e.title),E.append(`title`).text(e=>e.groupLabel?`${e.title} · ${e.groupLabel}`:e.title);let D=u(c).force(`link`,f(y).id(e=>e.id).distance(o.linkDistance)).force(`charge`,m().strength(o.chargeStrength)).force(`center`,h(i.width/2,i.height/2)).force(`collision`,p().radius(e=>b(e,o)+8));function O(){T.attr(`x1`,e=>e.source.x??0).attr(`y1`,e=>e.source.y??0).attr(`x2`,e=>e.target.x??0).attr(`y2`,e=>e.target.y??0),E.attr(`transform`,e=>`translate(${e.x??i.width/2},${e.y??i.height/2})`)}let k=g().scaleExtent([.18,5]).on(`zoom`,e=>{S.attr(`transform`,e.transform),E.classed(`is-label-visible`,t=>x(t,e.transform.k,o))});a.call(k);let A=d.translate(0,0).scale(1);a.call(k.transform,A);let j=l().on(`start`,(e,t)=>{!e.active&&o.animate&&!s&&D.alphaTarget(.25).restart(),t.fx=t.x,t.fy=t.y}).on(`drag`,(e,t)=>{t.fx=e.x,t.fy=e.y}).on(`end`,(e,t)=>{e.active||D.alphaTarget(0),t.fx=null,t.fy=null});return E.call(j),o.animate&&!s?D.on(`tick`,O):(D.tick(120),O(),D.stop()),()=>{D.stop(),a.on(`.zoom`,null)}},[e.data,e.selectedPath,i,o,e.fitToken]),(0,S.jsxs)(`div`,{ref:n,className:`notes-graph-canvas`,"data-empty":e.data.nodes.length===0?`true`:`false`,children:[e.data.nodes.length===0?(0,S.jsx)(`div`,{className:`notes-graph-empty-state`,children:`No matching graph nodes`}):null,(0,S.jsx)(`svg`,{ref:t,className:`notes-graph-svg`,"aria-label":`Notes graph`})]})}function E(e){return e===`filters`?`Filters`:e===`display`?`Display`:e===`forces`?`Forces`:`Groups`}function D(e,t){return{...e,...t,collapsedSections:t.collapsedSections??e.collapsedSections,groups:t.groups??e.groups}}function O(e){return(0,S.jsxs)(`label`,{className:`notes-graph-toggle${e.disabled?` is-disabled`:``}`,children:[(0,S.jsx)(`span`,{children:e.label}),(0,S.jsx)(`input`,{type:`checkbox`,checked:e.checked,disabled:e.disabled,onChange:t=>e.onChange(t.currentTarget.checked)})]})}function k(e){let{settings:t}=e;function n(n){e.onChange(D(t,n))}function i(e){n({[e]:!t[e]})}function o(e){n({collapsedSections:{...t.collapsedSections,[e]:!t.collapsedSections[e]}})}function c(e,r){n({groups:t.groups.map(t=>t.id===e?{...t,...r}:t)})}function l(){n({groups:[...t.groups,r(t.groups.length,t.query)]})}function u(e){n({groups:t.groups.filter(t=>t.id!==e)})}return(0,S.jsxs)(`aside`,{className:`notes-graph-controls`,"aria-label":`Graph controls`,children:[(0,S.jsxs)(`header`,{className:`notes-graph-controls-header`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h3`,{children:`Graph`}),(0,S.jsx)(`span`,{children:e.selectedPath?`Focus-ready`:`Global view`})]}),(0,S.jsx)(`button`,{type:`button`,className:`notes-graph-icon-button`,onClick:e.onClose,"aria-label":`Close graph controls`,children:`X`})]}),s.map(r=>(0,S.jsxs)(`section`,{className:`notes-graph-control-section`,children:[(0,S.jsxs)(`button`,{type:`button`,className:`notes-graph-section-toggle`,onClick:()=>o(r),"aria-expanded":!t.collapsedSections[r],children:[(0,S.jsx)(`span`,{children:E(r)}),(0,S.jsx)(`span`,{children:t.collapsedSections[r]?`+`:`-`})]}),!t.collapsedSections[r]&&r===`filters`?(0,S.jsxs)(`div`,{className:`notes-graph-control-body`,children:[(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsx)(`span`,{children:`Search`}),(0,S.jsx)(`input`,{value:t.query,onChange:e=>n({query:e.currentTarget.value}),placeholder:`title, path:, tag:, kind:`})]}),(0,S.jsx)(O,{label:`Existing files only`,checked:t.existingFilesOnly,onChange:()=>i(`existingFilesOnly`)}),(0,S.jsx)(O,{label:`Show orphans`,checked:t.showOrphans,onChange:()=>i(`showOrphans`)}),(0,S.jsx)(O,{label:`Show tags`,checked:t.showTags,onChange:()=>i(`showTags`)}),(0,S.jsx)(O,{label:`Show attachments`,checked:t.showAttachments,onChange:()=>i(`showAttachments`)}),(0,S.jsx)(O,{label:`Focus selected`,checked:t.focusSelected,disabled:!e.selectedPath,onChange:()=>i(`focusSelected`)}),(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsxs)(`span`,{children:[`Depth `,t.focusDepth]}),(0,S.jsx)(`input`,{type:`range`,min:`1`,max:`4`,value:t.focusDepth,disabled:!t.focusSelected||!e.selectedPath,onChange:e=>n({focusDepth:Number(e.currentTarget.value)})})]})]}):null,!t.collapsedSections[r]&&r===`display`?(0,S.jsxs)(`div`,{className:`notes-graph-control-body`,children:[(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsxs)(`span`,{children:[`Node size `,t.nodeSize.toFixed(1)]}),(0,S.jsx)(`input`,{type:`range`,min:`0.6`,max:`2`,step:`0.1`,value:t.nodeSize,onChange:e=>n({nodeSize:Number(e.currentTarget.value)})})]}),(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsxs)(`span`,{children:[`Labels `,Math.round(t.labelDensity*100),`%`]}),(0,S.jsx)(`input`,{type:`range`,min:`0`,max:`1`,step:`0.05`,value:t.labelDensity,onChange:e=>n({labelDensity:Number(e.currentTarget.value)})})]}),(0,S.jsx)(O,{label:`Show arrows`,checked:t.showArrows,onChange:()=>i(`showArrows`)}),(0,S.jsx)(O,{label:`Animate`,checked:t.animate,onChange:()=>i(`animate`)})]}):null,!t.collapsedSections[r]&&r===`forces`?(0,S.jsxs)(`div`,{className:`notes-graph-control-body`,children:[(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsxs)(`span`,{children:[`Link distance `,t.linkDistance]}),(0,S.jsx)(`input`,{type:`range`,min:`40`,max:`240`,value:t.linkDistance,onChange:e=>n({linkDistance:Number(e.currentTarget.value)})})]}),(0,S.jsxs)(`label`,{className:`notes-graph-field`,children:[(0,S.jsxs)(`span`,{children:[`Repel `,Math.abs(t.chargeStrength)]}),(0,S.jsx)(`input`,{type:`range`,min:`-800`,max:`-20`,value:t.chargeStrength,onChange:e=>n({chargeStrength:Number(e.currentTarget.value)})})]}),(0,S.jsxs)(`div`,{className:`notes-graph-control-row`,children:[(0,S.jsx)(`button`,{type:`button`,onClick:e.onFit,children:`Fit`}),(0,S.jsx)(`button`,{type:`button`,onClick:e.onReset,children:`Reset`})]})]}):null,!t.collapsedSections[r]&&r===`groups`?(0,S.jsxs)(`div`,{className:`notes-graph-control-body`,children:[(0,S.jsx)(O,{label:`Query groups`,checked:t.groupMode===`query`,onChange:e=>n({groupMode:e?`query`:`off`})}),(0,S.jsx)(`div`,{className:`notes-graph-groups`,children:t.groups.map((e,t)=>(0,S.jsxs)(`div`,{className:`notes-graph-group-row`,children:[(0,S.jsx)(`input`,{className:`notes-graph-color`,type:`color`,value:e.color,onChange:t=>c(e.id,{color:t.currentTarget.value})}),(0,S.jsx)(`input`,{value:e.label,onChange:t=>c(e.id,{label:t.currentTarget.value}),"aria-label":`Group ${t+1} label`}),(0,S.jsx)(`input`,{value:e.query,onChange:t=>c(e.id,{query:t.currentTarget.value}),"aria-label":`Group ${t+1} query`}),(0,S.jsx)(`button`,{type:`button`,onClick:()=>c(e.id,{enabled:!e.enabled}),"aria-pressed":e.enabled,children:e.enabled?`On`:`Off`}),(0,S.jsx)(`button`,{type:`button`,className:`notes-graph-icon-button`,onClick:()=>u(e.id),"aria-label":`Remove ${e.label}`,children:`X`})]},e.id))}),(0,S.jsx)(`div`,{className:`notes-graph-swatches`,"aria-label":`Group color presets`,children:a.map(e=>(0,S.jsx)(`span`,{style:{background:e}},e))}),(0,S.jsx)(`button`,{type:`button`,onClick:l,children:`Add group`})]}):null]},r))]})}var A={note:0,tag:1,missing:2,ambiguous:3,attachment:4};function j(e){return e.trim().replace(/^#/,``).toLowerCase()}function M(e){return`tag:${j(e)}`}function N(e,t){let n=[e.id,e.title,e.path??``];return t&&n.push(t.title,t.path,...t.aliases,...t.tags),n.filter(Boolean).map(e=>e.toLowerCase())}function P(e,t,n){let r=e.toLowerCase();if(r.startsWith(`kind:`))return t.kind===r.slice(5);if(r.startsWith(`path:`))return(t.path??t.id).toLowerCase().includes(r.slice(5));if(r.startsWith(`tag:`)){let e=j(r.slice(4));return e?t.kind===`tag`?j(t.title).includes(e)||t.id.includes(e):!!n?.tags.some(t=>j(t).includes(e)):!0}return N(t,n).some(e=>e.includes(r))}function F(e,t,n){let r=e.trim().split(/\s+/).filter(Boolean);return r.length===0?!0:r.every(e=>P(e,t,n))}function I(e,t,n){if(n.groupMode!==`off`)return n.groups.find(n=>n.enabled&&F(n.query,e,t))}function L(e,t){let n=new Map;for(let t of e.graph.nodes)n.set(t.id,{...t});for(let t of e.notes)n.has(t.path)||n.set(t.path,{id:t.path,title:t.title,kind:`note`,path:t.path});let r=e.graph.edges.map(e=>({...e}));if(t.showTags)for(let t of e.notes)for(let e of t.tags){let i=j(e);if(!i)continue;let a=M(i);n.has(a)||n.set(a,{id:a,title:`#${i}`,kind:`tag`}),r.push({source:t.path,target:a,raw:`#${i}`,status:`resolved`,resolvedPath:t.path})}return{nodes:[...n.values()],edges:r}}function R(e){let t=new Map;for(let n of e)t.set(n.source,(t.get(n.source)??0)+1),t.set(n.target,(t.get(n.target)??0)+1);return t}function z(e,t,n){let r=new Map;for(let t of e)r.has(t.source)||r.set(t.source,new Set),r.has(t.target)||r.set(t.target,new Set),r.get(t.source)?.add(t.target),r.get(t.target)?.add(t.source);let i=new Set([t]),a=new Set([t]);for(let e=0;e<n;e+=1){let e=new Set;for(let t of a)for(let n of r.get(t)??[])i.has(n)||(i.add(n),e.add(n));if(a=e,a.size===0)break}return i}function B(e,t){return A[e.kind]-A[t.kind]||e.title.localeCompare(t.title)||e.id.localeCompare(t.id)}function V(e,t,n){if(!e)return{nodes:[],edges:[],noteCount:0,linkCount:0,missingCount:0,tagCount:0,hiddenCount:0};let r=new Map(e.notes.map(e=>[e.path,e])),i=L(e,t),a=i.nodes.filter(e=>t.existingFilesOnly&&(e.kind===`missing`||e.kind===`ambiguous`)||!t.showTags&&e.kind===`tag`||!t.showAttachments&&e.kind===`attachment`?!1:F(t.query,e,r.get(e.path??e.id))),o=new Set(a.map(e=>e.id)),s=i.edges.filter(e=>o.has(e.source)&&o.has(e.target));if(!t.showOrphans){let e=R(s);a=a.filter(t=>t.id===n||(e.get(t.id)??0)>0||t.kind!==`note`),o=new Set(a.map(e=>e.id)),s=s.filter(e=>o.has(e.source)&&o.has(e.target))}if(t.focusSelected&&n&&o.has(n)){let e=z(s,n,t.focusDepth);a=a.filter(t=>e.has(t.id)),o=new Set(a.map(e=>e.id)),s=s.filter(e=>o.has(e.source)&&o.has(e.target))}let c=R(s),l=a.map(e=>{let n=r.get(e.path??e.id),i=I(e,n,t);return{...e,degree:c.get(e.id)??0,...i?{groupColor:i.color,groupLabel:i.label}:{},searchMatch:F(t.query,e,n)}}).sort(B),u=new Set(l.map(e=>e.id)),d=s.filter(e=>u.has(e.source)&&u.has(e.target)).map(e=>({...e,virtual:e.target.startsWith(`tag:`)||e.source.startsWith(`tag:`)})).sort((e,t)=>e.source.localeCompare(t.source)||e.target.localeCompare(t.target)||e.raw.localeCompare(t.raw));return{nodes:l,edges:d,noteCount:l.filter(e=>e.kind===`note`).length,linkCount:d.filter(e=>!e.virtual).length,missingCount:l.filter(e=>e.kind===`missing`||e.kind===`ambiguous`).length,tagCount:l.filter(e=>e.kind===`tag`).length,hiddenCount:i.nodes.length-l.length}}var H={dataPlane:`dashboard-notes-api`,shellPanels:`render-only`};function U(){return i(c)}function W(e){let[t,n]=(0,v.useState)(()=>o(e.settings??U())),[r,i]=(0,v.useState)(0),a=(0,v.useRef)(null);(0,v.useEffect)(()=>{n(o(e.settings??U()))},[e.settings]),(0,v.useEffect)(()=>()=>{a.current!=null&&window.clearTimeout(a.current)},[]);function s(t,r=!1){if(n(t),e.onSettingsChange){if(a.current!=null&&window.clearTimeout(a.current),r){e.onSettingsChange(t);return}a.current=window.setTimeout(()=>e.onSettingsChange?.(t),140)}}function c(){s(U(),!0),i(e=>e+1)}function l(){s({...t,panelOpen:!1},!0)}function u(){s({...t,panelOpen:!0},!0)}let d=(0,v.useMemo)(()=>V(e.vaultIndex,t,e.selectedPath),[e.vaultIndex,t,e.selectedPath]);return(0,S.jsxs)(`div`,{className:`notes-graph-workspace${t.panelOpen?` has-controls`:``}`,children:[(0,S.jsxs)(`header`,{className:`notes-graph-toolbar`,children:[(0,S.jsxs)(`div`,{className:`notes-graph-counts`,"aria-live":`polite`,children:[(0,S.jsx)(`strong`,{children:d.noteCount}),` notes`,(0,S.jsxs)(`span`,{children:[d.linkCount,` links`]}),(0,S.jsxs)(`span`,{children:[d.missingCount,` unresolved`]}),d.tagCount>0?(0,S.jsxs)(`span`,{children:[d.tagCount,` tags`]}):null]}),(0,S.jsxs)(`div`,{className:`notes-graph-actions`,children:[(0,S.jsx)(`button`,{type:`button`,onClick:()=>i(e=>e+1),children:`Fit`}),(0,S.jsx)(`button`,{type:`button`,onClick:c,children:`Reset`}),t.panelOpen?null:(0,S.jsx)(`button`,{type:`button`,onClick:u,children:`Controls`})]})]}),(0,S.jsxs)(`div`,{className:`notes-graph-body`,children:[(0,S.jsx)(T,{data:d,selectedPath:e.selectedPath,settings:t,fitToken:r,onNavigate:e.onNavigate}),t.panelOpen?(0,S.jsx)(k,{settings:t,selectedPath:e.selectedPath,onChange:e=>s(e),onReset:c,onFit:()=>i(e=>e+1),onClose:l}):null]})]})}export{H as NOTES_GRAPH_RUNTIME_BOUNDARY,W as NotesGraphWorkspace};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{i as c,n as l}from"./fields-C-y_8RgA.js";import{t as u}from"./InlineWarn-CY6dBBMq.js";var d=e(t(),1),f=n(),p=/^[a-zA-Z0-9._:*-]+$/,m=[`bash`,`read`,`write`,`edit`,`mcp.*`];function h(e){return e===`auto`}function g(e){return h(e)?{mode:`auto`}:Array.isArray(e)?{mode:`custom`,tokens:e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0)}:{mode:`unknown`}}function _(e){return typeof e!=`string`||e.length===0||e.length>64?!1:p.test(e)}function v(e){return Array.isArray(e)&&e.length>0?Array.from(new Set(e.filter(_))):[...m]}function y(e){return e.length===0?!1:e.every(_)}var b=[{value:`auto`,label:`Auto — runtime resolves the allowlist`},{value:`custom`,label:`Custom — explicit allowlist below`}];function x({port:e,client:t,dirty:n,registerSave:p}){let{state:m,refresh:h,setData:x}=r(t,`/api/settings`),[S,C]=(0,d.useState)(`auto`),[w,T]=(0,d.useState)([]),E=(0,d.useMemo)(()=>m.kind===`ready`?g(m.data.permissions):null,[m]);(0,d.useEffect)(()=>{if(m.kind!==`ready`)return;let e=g(m.data.permissions);e.mode===`custom`?(C(`custom`),T(e.tokens)):(C(`auto`),T([]))},[m]),(0,d.useEffect)(()=>()=>{n.remove(`permissions`)},[n]);let D=(0,d.useCallback)(e=>n.set(`permissions`,e),[n]),O=(0,d.useMemo)(()=>E&&E.mode===`custom`?E.tokens:`auto`,[E]),k=(0,d.useCallback)(e=>{if(e===`auto`){C(`auto`),T([]),D({value:`auto`,original:O,valid:!0});return}if(e===`custom`){C(`custom`);let e=E&&E.mode===`custom`&&E.tokens.length>0?[...E.tokens]:v(null);T(e),D({value:e,original:O,valid:y(e)})}},[E,O,D]),A=(0,d.useCallback)(e=>{let t=e.map(e=>e.trim()).filter(e=>e.length>0);T(t),D({value:t,original:O,valid:y(t)})},[O,D]),j=(0,d.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=await t.put(`/api/settings`,e),i=r&&typeof r==`object`&&`data`in r?r.data:r;n.clear();let a=g(i.permissions);a.mode===`custom`?(C(`custom`),T(a.tokens)):(C(`auto`),T([])),x(i),await h()},[t,n,h,x]);if((0,d.useEffect)(()=>{if(p)return p(j),()=>p(null)},[p,j]),m.kind===`loading`)return(0,f.jsx)(a,{});if(m.kind===`offline`)return(0,f.jsx)(o,{port:e});if(m.kind===`error`)return(0,f.jsx)(s,{message:m.message});let M=w.filter(e=>!_(e)),N=M.length>0,P=S===`custom`&&w.length===0,F=E?.mode===`custom`?`${E.tokens.length} explicit token${E.tokens.length===1?``:`s`}: ${E.tokens.join(`, `)}`:E?.mode===`auto`?`auto (runtime decides)`:`unknown shape — saved value will overwrite on next save`;return(0,f.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:[(0,f.jsxs)(i,{title:`Permissions`,hint:`Controls which capabilities the CLI can use. Auto delegates to the runtime; Custom freezes the list to your allowlist.`,children:[(0,f.jsx)(c,{id:`permissions-mode`,label:`Mode`,value:S,options:b,onChange:k}),S===`custom`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(l,{id:`permissions-allowlist`,label:`Allowlist`,value:w,onChange:A,placeholder:`bash, read, mcp.*`,error:N?`Invalid token${M.length===1?``:`s`}: ${M.join(`, `)}`:P?`Allowlist cannot be empty in Custom mode.`:null}),(0,f.jsxs)(`p`,{className:`settings-section-hint`,children:[`Each chip is a permission token. Examples: `,(0,f.jsx)(`code`,{children:`bash`}),`,`,(0,f.jsx)(`code`,{children:` read`}),`, `,(0,f.jsx)(`code`,{children:` write`}),`, `,(0,f.jsx)(`code`,{children:` mcp.*`}),`.`]}),P&&(0,f.jsx)(u,{role:`alert`,children:`Saving with an empty Custom allowlist would deny every action. Add at least one token or switch back to Auto.`})]})]}),(0,f.jsx)(i,{title:`Currently active`,hint:`Reflects the saved snapshot from /api/settings.`,children:(0,f.jsxs)(`p`,{className:`settings-readonly-line`,children:[(0,f.jsx)(`span`,{className:`settings-field-label`,children:`Resolved permissions`}),(0,f.jsx)(`span`,{children:F})]})})]})}export{g as a,h as i,y as n,v as o,_ as r,x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,i as t,n,o as r,r as i,t as a}from"./Permissions-BvtVczZS.js";export{a as default,n as isAllowlistValid,i as isPermissionToken,t as isPermissionsAuto,e as parsePermissionsValue,r as seedAutoAllowlist};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{a as c,i as l}from"./fields-C-y_8RgA.js";import{t as u}from"./path-utils-ztBHV7MX.js";var d=e(t(),1),f=n(),p=`image/png,image/jpeg,image/webp,image/gif`;function m({kind:e,port:t}){let[n,r]=(0,d.useState)(null),[i,a]=(0,d.useState)(!1),[o,s]=(0,d.useState)(null),c=(0,d.useRef)(null);(0,d.useEffect)(()=>{let n=!1;return s(null),r(null),fetch(`/i/${t}/api/avatar`).then(e=>e.ok?e.json():Promise.reject(Error(`avatar HTTP ${e.status}`))).then(t=>{n||r((`data`in t&&t.data?t.data:t)[e]||null)}).catch(e=>{n||s(e instanceof Error?e.message:String(e))}),()=>{n=!0}},[e,t]);let l=()=>c.current?.click(),u=async n=>{a(!0),s(null);try{let i=await n.arrayBuffer(),a=n.type||`application/octet-stream`,o=await fetch(`/i/${t}/api/avatar/${e}/upload`,{method:`POST`,headers:{"content-type":a,"x-filename":encodeURIComponent(n.name)},body:i});if(!o.ok){let e=await o.text().catch(()=>``);throw Error(`upload failed: ${o.status} ${e}`)}let s=await o.json();r(`data`in s&&s.data?s.data:s)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1),c.current&&(c.current.value=``)}},m=async()=>{a(!0),s(null);try{let n=await fetch(`/i/${t}/api/avatar/${e}/image`,{method:`DELETE`});if(!n.ok)throw Error(`clear failed: ${n.status}`);let i=await n.json();r(`data`in i&&i.data?i.data:i)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},h=n&&n.kind===`image`?`/i/${t}${n.imageUrl}`:null,g=e===`agent`?`Agent avatar`:`User avatar`;return(0,f.jsxs)(`div`,{className:`settings-avatar-card`,children:[(0,f.jsx)(`div`,{className:`settings-avatar-preview`,"aria-label":`${g} preview`,children:h?(0,f.jsx)(`img`,{src:h,alt:`${g} current`}):(0,f.jsx)(`span`,{className:`settings-avatar-placeholder`,"aria-hidden":`true`,children:e===`agent`?`🦈`:`👤`})}),(0,f.jsxs)(`div`,{className:`settings-avatar-controls`,children:[(0,f.jsx)(`span`,{className:`settings-field-label`,children:g}),(0,f.jsx)(`input`,{ref:c,type:`file`,accept:p,style:{display:`none`},onChange:e=>{let t=e.target.files?.[0];t&&u(t)}}),(0,f.jsxs)(`div`,{className:`settings-avatar-buttons`,children:[(0,f.jsx)(`button`,{type:`button`,className:`settings-action settings-action-secondary`,onClick:l,disabled:i,children:i?`Working…`:`Upload image`}),h?(0,f.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void m(),disabled:i,children:`Clear`}):null]}),o?(0,f.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:o}):null]})]})}var h=[{value:`ko`,label:`한국어 (ko)`},{value:`en`,label:`English (en)`},{value:`ja`,label:`日本語 (ja)`},{value:`zh`,label:`中文 (zh)`}];function g({port:e,client:t,dirty:n,registerSave:p}){let{state:g,refresh:_,setData:v}=r(t,`/api/settings`),[y,b]=(0,d.useState)({});(0,d.useEffect)(()=>{g.kind===`ready`&&b(g.data)},[g]),(0,d.useEffect)(()=>()=>{for(let e of Array.from(n.pending.keys()))(e===`locale`||e===`showReasoning`)&&n.remove(e)},[n]);let x=(0,d.useCallback)((e,t)=>n.set(e,t),[n]),S=(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(),b(a),v(a),await _()},[t,n,_,v]);if((0,d.useEffect)(()=>{if(p)return p(S),()=>p(null)},[p,S]),g.kind===`loading`)return(0,f.jsx)(a,{});if(g.kind===`offline`)return(0,f.jsx)(o,{port:e});if(g.kind===`error`)return(0,f.jsx)(s,{message:g.message});let C=g.data;return(0,f.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),S()},children:[(0,f.jsxs)(i,{title:`Profile`,hint:`Identity and display preferences for this instance.`,children:[(0,f.jsx)(l,{id:`profile-locale`,label:`Locale`,value:y.locale??C.locale??`ko`,options:h,onChange:e=>{b({...y,locale:e}),x(`locale`,{value:e,original:C.locale??`ko`,valid:!0})}}),(0,f.jsx)(c,{id:`profile-showReasoning`,label:`Show reasoning traces`,value:!!(y.showReasoning??C.showReasoning),onChange:e=>{b({...y,showReasoning:e}),x(`showReasoning`,{value:e,original:!!C.showReasoning,valid:!0})}})]}),(0,f.jsxs)(i,{title:`Avatars`,hint:`Uploads write to the instance's home folder.`,children:[(0,f.jsx)(m,{kind:`agent`,port:e}),(0,f.jsx)(m,{kind:`user`,port:e})]})]})}export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{t as c}from"./InlineWarn-CY6dBBMq.js";var l=e(t(),1),u=n(),d=`prompt.system`;function f(e){return`prompt.template.${e}`}function p(e){return!e||!Array.isArray(e.templates)?[]:e.templates.filter(e=>!!e&&typeof e.id==`string`&&typeof e.content==`string`)}function m(e){let t=p(e),n=e?.tree,r=[],i=new Set;if(Array.isArray(n)){for(let e of n)if(!(!e||!Array.isArray(e.children)))for(let n of e.children){if(i.has(n))continue;let a=t.find(e=>e.id===n);if(!a)continue;let o=e.emoji?`${e.emoji} ${e.label} · `:`${e.label} · `;r.push({value:a.id,label:`${o}${a.id}`}),i.add(n)}}for(let e of t)i.has(e.id)||(r.push({value:e.id,label:e.id}),i.add(e.id));return r}function h(e,t){return p(e).find(e=>e.id===t)??null}function g({port:e,client:t,dirty:n,registerSave:g}){let _=r(t,`/api/prompt`),v=r(t,`/api/prompt-templates`),[y,b]=(0,l.useState)(``),[x,S]=(0,l.useState)(null),[C,w]=(0,l.useState)(``),T=(0,l.useMemo)(()=>_.state.kind===`ready`?_.state.data?.content??``:``,[_.state]),E=(0,l.useMemo)(()=>v.state.kind===`ready`?v.state.data:null,[v.state]),D=(0,l.useMemo)(()=>m(E),[E]),O=(0,l.useRef)(new Set);(0,l.useEffect)(()=>{_.state.kind===`ready`&&b(_.state.data?.content??``)},[_.state]),(0,l.useEffect)(()=>{if(!E||x!==null)return;let e=p(E);if(e.length===0)return;let t=D[0]?.value??e[0].id;S(t),w(h(E,t)?.content??``)},[E,D,x]),(0,l.useEffect)(()=>()=>{n.remove(d);for(let e of O.current)n.remove(e)},[n]);let k=(0,l.useCallback)((e,t)=>{n.set(e,t),O.current.add(e)},[n]),A=(0,l.useCallback)(e=>{b(e),n.set(d,{value:e,original:T,valid:!0})},[n,T]),j=(0,l.useCallback)(e=>{if(!x)return;w(e);let t=h(E,x)?.content??``;k(f(x),{value:e,original:t,valid:!0})},[x,k,E]),M=(0,l.useCallback)(e=>{if(!x||e===x)return;let t=f(x);if(n.pending.get(t)&&typeof window<`u`&&!window.confirm(`You have unsaved edits to "${x}". Switching will keep them pending — Save will write all dirty templates.`))return;S(e);let r=f(e),i=n.pending.get(r),a=h(E,e)?.content??``;w(i&&typeof i.value==`string`?i.value:a)},[x,n,E]),N=(0,l.useCallback)(async()=>{let e=n.saveBundle(),r=[];d in e&&r.push(t.put(`/api/prompt`,{content:e[d]}));for(let[n,i]of Object.entries(e)){if(!n.startsWith(`prompt.template.`))continue;let e=n.slice(16);r.push(t.put(`/api/prompt-templates/${e}`,{content:i}))}if(r.length!==0){for(let e of r)await e;n.clear(),O.current.clear(),await Promise.all([_.refresh(),v.refresh()])}},[t,n,_,v]);if((0,l.useEffect)(()=>{if(g)return g(N),()=>g(null)},[g,N]),_.state.kind===`loading`||v.state.kind===`loading`)return(0,u.jsx)(a,{});if(_.state.kind===`offline`||v.state.kind===`offline`)return(0,u.jsx)(o,{port:e});if(_.state.kind===`error`)return(0,u.jsx)(s,{message:_.state.message});if(v.state.kind===`error`)return(0,u.jsx)(s,{message:v.state.message});let P=p(E),F=x?h(E,x)?.content??``:``,I=x!==null&&C!==F;return(0,u.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:[(0,u.jsxs)(i,{title:`System prompt`,hint:`The agent's a2/system prompt. Saved to a2.md; regenerates the merged b prompt.`,children:[(0,u.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`prompt-system-body`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:`a2.md`}),(0,u.jsx)(`textarea`,{id:`prompt-system-body`,className:`settings-field-monospace`,value:y,rows:14,spellCheck:!1,onChange:e=>A(e.target.value)})]}),y!==T&&(0,u.jsx)(`p`,{className:`settings-section-hint`,children:`Pending edits to a2.md.`})]}),(0,u.jsx)(i,{title:`Templates`,hint:`Edit individual prompt template bodies. Saving regenerates b automatically.`,children:P.length===0?(0,u.jsx)(c,{tone:`info`,children:`No templates returned by /api/prompt-templates.`}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`label`,{className:`settings-field settings-field-select`,htmlFor:`prompt-template-select`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,u.jsx)(`select`,{id:`prompt-template-select`,value:x??``,onChange:e=>M(e.target.value),children:D.map(e=>(0,u.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,u.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`prompt-template-body`,children:[(0,u.jsx)(`span`,{className:`settings-field-label`,children:x?`${x}.md`:`Template body`}),(0,u.jsx)(`textarea`,{id:`prompt-template-body`,className:`settings-field-monospace`,value:C,rows:16,spellCheck:!1,disabled:!x,onChange:e=>j(e.target.value)})]}),I&&(0,u.jsxs)(`p`,{className:`settings-section-hint`,children:[`Pending edits to `,x,`.md.`]})]})})]})}export{m as buildTemplateOptions,g as default,h as findTemplate,p as flattenTemplates,f as templateDirtyKey};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-k5-hYhKb.js";import{i as c,o as l,s as u,t as d}from"./fields-C-y_8RgA.js";import{t as f}from"./path-utils-ztBHV7MX.js";var p=e(t(),1),m=n();function h({title:e,hint:t,children:n}){return(0,m.jsxs)(`fieldset`,{className:`settings-engine-subsection`,children:[(0,m.jsx)(`legend`,{className:`settings-engine-subsection-legend`,children:e}),t?(0,m.jsx)(`p`,{className:`settings-engine-subsection-hint`,children:t}):null,(0,m.jsx)(`div`,{className:`settings-engine-subsection-body`,children:n})]})}var g=[`auto`,`gemini`,`openai`,`whisper`,`vertex`],_={auto:`Auto (try in order)`,gemini:`Gemini`,openai:`OpenAI`,whisper:`Whisper (local MLX)`,vertex:`Vertex AI`};function v(e){return e===`auto`?[`gemini`,`openai`,`whisper`,`vertex`]:[e]}function y(e){if(e.trim()===``)return{valid:!0,error:null};try{return JSON.parse(e),{valid:!0,error:null}}catch(e){return{valid:!1,error:e instanceof Error?e.message:`Invalid JSON`}}}var b=[`stt.engine`,`stt.geminiApiKey`,`stt.geminiModel`,`stt.openaiApiKey`,`stt.openaiBaseUrl`,`stt.openaiModel`,`stt.whisperModel`,`stt.vertexConfig`];function x(e){return g.includes(e)?e:`auto`}function S({port:e,client:t,dirty:n,registerSave:S}){let{state:C,refresh:w,setData:T}=r(t,`/api/settings`),[E,D]=(0,p.useState)(`auto`),[O,k]=(0,p.useState)(``),[A,j]=(0,p.useState)(``),[M,N]=(0,p.useState)(``),[P,F]=(0,p.useState)(``),[I,L]=(0,p.useState)(``),[R,z]=(0,p.useState)(``),[B,V]=(0,p.useState)(``),[H,U]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(C.kind!==`ready`)return;let e=C.data.stt||{};D(x(e.engine)),k(``),j(e.geminiModel??``),N(``),F(e.openaiBaseUrl??``),L(e.openaiModel??``),z(e.whisperModel??``),V(e.vertexConfig??``),U(null)},[C]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let W=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),G=(0,p.useMemo)(()=>C.kind===`ready`&&C.data.stt||{},[C]),K=(0,p.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=f(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),T(a);let o=a.stt||{};D(x(o.engine)),k(``),j(o.geminiModel??``),N(``),F(o.openaiBaseUrl??``),L(o.openaiModel??``),z(o.whisperModel??``),V(o.vertexConfig??``),U(null),await w()},[t,n,w,T]);if((0,p.useEffect)(()=>{if(S)return S(K),()=>S(null)},[S,K]),C.kind===`loading`)return(0,m.jsx)(a,{});if(C.kind===`offline`)return(0,m.jsx)(o,{port:e});if(C.kind===`error`)return(0,m.jsx)(s,{message:C.message});let q=v(E),J=q.includes(`gemini`),Y=q.includes(`openai`),X=q.includes(`whisper`),Z=q.includes(`vertex`),Q=G.geminiKeySet?`••••••••${G.geminiKeyLast4??``}`:`(empty)`,$=G.openaiKeySet?`••••••••${G.openaiKeyLast4??``}`:`(empty)`;return(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),K()},children:[(0,m.jsx)(i,{title:`Engine`,hint:`Pick a single engine, or 'auto' to fall back through the ladder.`,children:(0,m.jsx)(c,{id:`stt-engine`,label:`Speech-to-text engine`,value:E,options:g.map(e=>({value:e,label:_[e]})),onChange:e=>{let t=x(e);D(t),W(`stt.engine`,{value:t,original:x(G.engine),valid:!0})}})}),J?(0,m.jsx)(i,{title:`Gemini`,hint:`Google AI Studio key. Used by the Gemini transcription path.`,children:(0,m.jsxs)(h,{title:`Credentials`,children:[(0,m.jsx)(l,{id:`stt-gemini-key`,label:`API key`,value:O,placeholder:Q,onChange:e=>{if(k(e),e.length===0){n.remove(`stt.geminiApiKey`);return}W(`stt.geminiApiKey`,{value:e,original:``,valid:!0})}}),(0,m.jsx)(u,{id:`stt-gemini-model`,label:`Model`,value:A,placeholder:`gemini-2.5-flash-lite`,onChange:e=>{j(e),W(`stt.geminiModel`,{value:e,original:G.geminiModel??``,valid:!0})}})]})}):null,Y?(0,m.jsx)(i,{title:`OpenAI`,hint:`Compatible with OpenAI-style transcription endpoints (incl. self-hosted).`,children:(0,m.jsxs)(h,{title:`Credentials`,children:[(0,m.jsx)(l,{id:`stt-openai-key`,label:`API key`,value:M,placeholder:$,onChange:e=>{if(N(e),e.length===0){n.remove(`stt.openaiApiKey`);return}W(`stt.openaiApiKey`,{value:e,original:``,valid:!0})}}),(0,m.jsx)(u,{id:`stt-openai-base-url`,label:`Base URL (optional)`,value:P,placeholder:`https://api.openai.com/v1`,onChange:e=>{F(e),W(`stt.openaiBaseUrl`,{value:e,original:G.openaiBaseUrl??``,valid:!0})}}),(0,m.jsx)(u,{id:`stt-openai-model`,label:`Model`,value:I,placeholder:`whisper-1`,onChange:e=>{L(e),W(`stt.openaiModel`,{value:e,original:G.openaiModel??``,valid:!0})}})]})}):null,X?(0,m.jsx)(i,{title:`Whisper (local MLX)`,hint:`Runs on-device via mlx-whisper. No API key required.`,children:(0,m.jsx)(h,{title:`Model`,children:(0,m.jsx)(u,{id:`stt-whisper-model`,label:`Model identifier`,value:R,placeholder:`mlx-community/whisper-large-v3-mlx`,onChange:e=>{z(e),W(`stt.whisperModel`,{value:e,original:G.whisperModel??``,valid:!0})}})})}):null,Z?(0,m.jsx)(i,{title:`Vertex AI`,hint:`Service-account credentials JSON for Google Cloud Vertex transcription.`,children:(0,m.jsxs)(h,{title:`Service account`,hint:`Paste the service-account credentials JSON. Treated as a secret — invalid JSON refuses to save.`,children:[(0,m.jsx)(d,{id:`stt-vertex-config`,label:`Credentials JSON`,value:B,onChange:(e,t)=>{let n=typeof e==`string`?e:e==null?``:JSON.stringify(e);V(n);let r=y(n);U(t?null:r.error),W(`stt.vertexConfig`,{value:n,original:G.vertexConfig??``,valid:t&&r.valid})}}),H?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:H}):null]})}):null,(0,m.jsx)(i,{title:`Probe`,hint:`A live mic-test isn't available yet — verify by triggering speech-to-text from the active channel.`,children:(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No backend self-test endpoint is exposed for speech today; this lands as a Phase 9 polish.`})})]})}export{g as STT_ENGINES,S as default,v as revealsForEngine,y as validateVertexConfig};
|