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,7 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { lstat, mkdir, readFile, readdir, realpath, rename, stat, writeFile, } from 'node:fs/promises';
|
|
4
|
-
import { basename, dirname } from 'node:path';
|
|
4
|
+
import { basename, dirname, join } from 'node:path';
|
|
5
5
|
import { dashboardPath } from '../dashboard-home.js';
|
|
6
6
|
import { MAX_NOTE_BYTES, NOTE_FILE_EXT, assertNoteFolderRelPath, assertNoteRelPath, assertNotSymlink, assertRealPathInside, notePathError, parentRelPath, resolveNotePath, } from './path-guards.js';
|
|
7
7
|
import { hasReservedNoteSegment } from './constants.js';
|
|
@@ -306,5 +306,75 @@ export class NotesStore {
|
|
|
306
306
|
size,
|
|
307
307
|
};
|
|
308
308
|
}
|
|
309
|
+
// ── Themes & CSS Snippets ──
|
|
310
|
+
snippetsDir() {
|
|
311
|
+
return join(this.root, '_snippets');
|
|
312
|
+
}
|
|
313
|
+
snippetsConfigPath() {
|
|
314
|
+
return join(this.snippetsDir(), '.config.json');
|
|
315
|
+
}
|
|
316
|
+
async readSnippetsConfig() {
|
|
317
|
+
try {
|
|
318
|
+
const raw = await this.fs.readFile(this.snippetsConfigPath(), 'utf8');
|
|
319
|
+
return JSON.parse(raw);
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
return { enabled: {}, activeTheme: null };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
async writeSnippetsConfig(config) {
|
|
326
|
+
const dir = this.snippetsDir();
|
|
327
|
+
await this.fs.mkdir(dir, { recursive: true });
|
|
328
|
+
await this.fs.writeFile(this.snippetsConfigPath(), JSON.stringify(config, null, 2));
|
|
329
|
+
}
|
|
330
|
+
async listSnippets() {
|
|
331
|
+
await this.ensureRoot();
|
|
332
|
+
const dir = this.snippetsDir();
|
|
333
|
+
const config = await this.readSnippetsConfig();
|
|
334
|
+
const snippets = [];
|
|
335
|
+
try {
|
|
336
|
+
const entries = await this.fs.readdir(dir, { withFileTypes: true });
|
|
337
|
+
for (const entry of entries) {
|
|
338
|
+
if (entry.name.startsWith('.'))
|
|
339
|
+
continue;
|
|
340
|
+
if (!entry.isFile() || !entry.name.endsWith('.css'))
|
|
341
|
+
continue;
|
|
342
|
+
snippets.push({
|
|
343
|
+
name: entry.name.replace(/\.css$/, ''),
|
|
344
|
+
file: entry.name,
|
|
345
|
+
enabled: config.enabled[entry.name] === true,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch { /* dir doesn't exist */ }
|
|
350
|
+
return { snippets: snippets.sort((a, b) => a.name.localeCompare(b.name)), activeTheme: config.activeTheme };
|
|
351
|
+
}
|
|
352
|
+
assertSnippetName(name) {
|
|
353
|
+
const fileName = name.endsWith('.css') ? name : `${name}.css`;
|
|
354
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*\.css$/.test(fileName)) {
|
|
355
|
+
throw notePathError(400, 'invalid_snippet_name', 'invalid snippet name');
|
|
356
|
+
}
|
|
357
|
+
return fileName;
|
|
358
|
+
}
|
|
359
|
+
async readSnippet(name) {
|
|
360
|
+
const fileName = this.assertSnippetName(name);
|
|
361
|
+
const filePath = join(this.snippetsDir(), fileName);
|
|
362
|
+
return await this.fs.readFile(filePath, 'utf8');
|
|
363
|
+
}
|
|
364
|
+
async toggleSnippet(name, enabled) {
|
|
365
|
+
const fileName = this.assertSnippetName(name);
|
|
366
|
+
const config = await this.readSnippetsConfig();
|
|
367
|
+
config.enabled[fileName] = enabled;
|
|
368
|
+
await this.writeSnippetsConfig(config);
|
|
369
|
+
}
|
|
370
|
+
static BUILTIN_THEMES = new Set(['default', 'sepia', 'nord', 'solarized-dark']);
|
|
371
|
+
async setActiveTheme(theme) {
|
|
372
|
+
if (theme !== null && !NotesStore.BUILTIN_THEMES.has(theme)) {
|
|
373
|
+
throw notePathError(400, 'invalid_theme', 'unknown theme name');
|
|
374
|
+
}
|
|
375
|
+
const config = await this.readSnippetsConfig();
|
|
376
|
+
config.activeTheme = theme;
|
|
377
|
+
await this.writeSnippetsConfig(config);
|
|
378
|
+
}
|
|
309
379
|
}
|
|
310
380
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/manager/notes/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/manager/notes/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,47 @@
|
|
|
1
1
|
import { watch } from 'node:fs';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
+
const RESERVED_DIRS = new Set(['.assets', '_templates', '_snippets', '_plugins', '.git']);
|
|
3
4
|
export function createNotesWatcher(rootPath) {
|
|
4
5
|
let version = 0;
|
|
5
6
|
let watcher = null;
|
|
6
7
|
let debounceTimer;
|
|
8
|
+
const listeners = [];
|
|
9
|
+
const pendingChanges = new Map();
|
|
10
|
+
function emit(event) {
|
|
11
|
+
for (const listener of listeners) {
|
|
12
|
+
try {
|
|
13
|
+
listener(event);
|
|
14
|
+
}
|
|
15
|
+
catch { /* ignore */ }
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function handleChange(_eventType, filename) {
|
|
19
|
+
if (!filename)
|
|
20
|
+
return;
|
|
21
|
+
const topDir = filename.split('/')[0] ?? '';
|
|
22
|
+
if (topDir.startsWith('.') && topDir !== '.')
|
|
23
|
+
return;
|
|
24
|
+
if (RESERVED_DIRS.has(topDir))
|
|
25
|
+
return;
|
|
26
|
+
clearTimeout(debounceTimer);
|
|
27
|
+
debounceTimer = setTimeout(() => {
|
|
28
|
+
version++;
|
|
29
|
+
emit({ type: 'tree-changed' });
|
|
30
|
+
}, 200);
|
|
31
|
+
const isMd = filename.endsWith('.md');
|
|
32
|
+
if (!isMd)
|
|
33
|
+
return;
|
|
34
|
+
const existing = pendingChanges.get(filename);
|
|
35
|
+
if (existing)
|
|
36
|
+
clearTimeout(existing);
|
|
37
|
+
pendingChanges.set(filename, setTimeout(() => {
|
|
38
|
+
pendingChanges.delete(filename);
|
|
39
|
+
emit({ type: 'file-changed', path: filename });
|
|
40
|
+
}, 500));
|
|
41
|
+
}
|
|
7
42
|
if (existsSync(rootPath)) {
|
|
8
43
|
try {
|
|
9
|
-
watcher = watch(rootPath, { recursive: true },
|
|
10
|
-
clearTimeout(debounceTimer);
|
|
11
|
-
debounceTimer = setTimeout(() => { version++; }, 200);
|
|
12
|
-
});
|
|
44
|
+
watcher = watch(rootPath, { recursive: true }, handleChange);
|
|
13
45
|
watcher.on('error', () => { });
|
|
14
46
|
}
|
|
15
47
|
catch {
|
|
@@ -20,8 +52,12 @@ export function createNotesWatcher(rootPath) {
|
|
|
20
52
|
version: () => version,
|
|
21
53
|
close: () => {
|
|
22
54
|
clearTimeout(debounceTimer);
|
|
55
|
+
for (const timer of pendingChanges.values())
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
pendingChanges.clear();
|
|
23
58
|
watcher?.close();
|
|
24
59
|
},
|
|
60
|
+
onEvent: (listener) => { listeners.push(listener); },
|
|
25
61
|
};
|
|
26
62
|
}
|
|
27
63
|
//# sourceMappingURL=watcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../../src/manager/notes/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../../src/manager/notes/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAcrC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1F,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAC/C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAqB,IAAI,CAAC;IACrC,IAAI,aAAwD,CAAC;IAC7D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyC,CAAC;IAExE,SAAS,IAAI,CAAC,KAAmB;QAC7B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC;gBAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAED,SAAS,YAAY,CAAC,UAAkB,EAAE,QAAuB;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO;QACrD,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAEtC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACnC,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACb,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACD,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACL,wDAAwD;QAC5D,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;QACtB,KAAK,EAAE,GAAG,EAAE;YACR,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACjE,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACvD,CAAC;AACN,CAAC"}
|
|
@@ -2,9 +2,16 @@ import { unified } from 'unified';
|
|
|
2
2
|
import remarkParse from 'remark-parse';
|
|
3
3
|
import remarkFrontmatter from 'remark-frontmatter';
|
|
4
4
|
import { visit } from 'unist-util-visit';
|
|
5
|
+
import { posix } from 'node:path';
|
|
6
|
+
import { NOTE_FILE_EXT } from './path-guards.js';
|
|
5
7
|
const markdownProcessor = unified()
|
|
6
8
|
.use(remarkParse)
|
|
7
9
|
.use(remarkFrontmatter, ['yaml']);
|
|
10
|
+
const URL_SCHEME_RE = /^[a-z][a-z0-9+.-]*:/i;
|
|
11
|
+
const WIKI_OPEN = '[[';
|
|
12
|
+
const WIKI_OPEN_MARKDOWN_ESCAPED = '\\[\\[';
|
|
13
|
+
const WIKI_CLOSE = ']]';
|
|
14
|
+
const WIKI_CLOSE_MARKDOWN_ESCAPED = '\\]\\]';
|
|
8
15
|
function lineStarts(source) {
|
|
9
16
|
const starts = [0];
|
|
10
17
|
for (let index = 0; index < source.length; index++) {
|
|
@@ -58,27 +65,85 @@ function parseInner(inner) {
|
|
|
58
65
|
...(heading ? { heading } : {}),
|
|
59
66
|
};
|
|
60
67
|
}
|
|
68
|
+
function earliestMatch(text, cursor, patterns) {
|
|
69
|
+
let best = null;
|
|
70
|
+
for (const pattern of patterns) {
|
|
71
|
+
const index = text.indexOf(pattern, cursor);
|
|
72
|
+
if (index === -1)
|
|
73
|
+
continue;
|
|
74
|
+
if (!best || index < best.index)
|
|
75
|
+
best = { index, pattern };
|
|
76
|
+
}
|
|
77
|
+
return best;
|
|
78
|
+
}
|
|
79
|
+
function safeDecodePath(value) {
|
|
80
|
+
try {
|
|
81
|
+
return decodeURIComponent(value);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function noteLikeMarkdownPath(path) {
|
|
88
|
+
const ext = posix.extname(path).toLowerCase();
|
|
89
|
+
return ext === '' || ext === NOTE_FILE_EXT;
|
|
90
|
+
}
|
|
91
|
+
function parseMarkdownLinkTarget(sourcePath, url) {
|
|
92
|
+
const trimmed = url.trim();
|
|
93
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('//') || trimmed.startsWith('/')) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
if (URL_SCHEME_RE.test(trimmed))
|
|
97
|
+
return null;
|
|
98
|
+
const withoutQuery = trimmed.split('?')[0] || '';
|
|
99
|
+
const hashIndex = firstUnescaped(withoutQuery, '#');
|
|
100
|
+
const rawPath = (hashIndex === -1 ? withoutQuery : withoutQuery.slice(0, hashIndex)).trim();
|
|
101
|
+
const heading = hashIndex === -1 ? '' : withoutQuery.slice(hashIndex + 1).trim();
|
|
102
|
+
if (!rawPath)
|
|
103
|
+
return null;
|
|
104
|
+
const decodedPath = safeDecodePath(rawPath);
|
|
105
|
+
if (!noteLikeMarkdownPath(decodedPath))
|
|
106
|
+
return null;
|
|
107
|
+
const sourceDir = posix.dirname(sourcePath);
|
|
108
|
+
const normalized = posix.normalize(posix.join(sourceDir === '.' ? '' : sourceDir, decodedPath));
|
|
109
|
+
if (normalized === '.' || normalized === '..' || normalized.startsWith('../'))
|
|
110
|
+
return null;
|
|
111
|
+
return {
|
|
112
|
+
target: normalized,
|
|
113
|
+
...(heading ? { heading: safeDecodePath(heading) } : {}),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function textFromLink(node) {
|
|
117
|
+
const parts = [];
|
|
118
|
+
visit(node, 'text', (child) => {
|
|
119
|
+
parts.push(child.value);
|
|
120
|
+
});
|
|
121
|
+
return parts.join('').trim();
|
|
122
|
+
}
|
|
61
123
|
function scanTextNode(sourcePath, text, absoluteStart, starts) {
|
|
62
124
|
const refs = [];
|
|
63
125
|
let cursor = 0;
|
|
64
126
|
while (cursor < text.length) {
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
127
|
+
const openMatch = earliestMatch(text, cursor, [WIKI_OPEN, WIKI_OPEN_MARKDOWN_ESCAPED]);
|
|
128
|
+
if (!openMatch)
|
|
67
129
|
break;
|
|
68
|
-
|
|
69
|
-
|
|
130
|
+
const open = openMatch.index;
|
|
131
|
+
if (openMatch.pattern === WIKI_OPEN && isEscaped(text, open)) {
|
|
132
|
+
cursor = open + WIKI_OPEN.length;
|
|
70
133
|
continue;
|
|
71
134
|
}
|
|
72
|
-
const
|
|
73
|
-
|
|
135
|
+
const innerStart = open + openMatch.pattern.length;
|
|
136
|
+
const closeMatch = earliestMatch(text, innerStart, [WIKI_CLOSE, WIKI_CLOSE_MARKDOWN_ESCAPED]);
|
|
137
|
+
if (!closeMatch)
|
|
74
138
|
break;
|
|
139
|
+
const close = closeMatch.index;
|
|
75
140
|
const startOffset = absoluteStart + open;
|
|
76
|
-
const endOffset = absoluteStart + close +
|
|
77
|
-
const parsed = parseInner(text.slice(
|
|
141
|
+
const endOffset = absoluteStart + close + closeMatch.pattern.length;
|
|
142
|
+
const parsed = parseInner(text.slice(innerStart, close));
|
|
78
143
|
const position = offsetToLineColumn(starts, startOffset);
|
|
79
144
|
refs.push({
|
|
80
145
|
sourcePath,
|
|
81
|
-
raw: text.slice(open, close +
|
|
146
|
+
raw: text.slice(open, close + closeMatch.pattern.length),
|
|
82
147
|
target: parsed.target,
|
|
83
148
|
...(parsed.displayText ? { displayText: parsed.displayText } : {}),
|
|
84
149
|
...(parsed.heading ? { heading: parsed.heading } : {}),
|
|
@@ -89,7 +154,7 @@ function scanTextNode(sourcePath, text, absoluteStart, starts) {
|
|
|
89
154
|
status: 'missing',
|
|
90
155
|
reason: 'not_found',
|
|
91
156
|
});
|
|
92
|
-
cursor = close +
|
|
157
|
+
cursor = close + closeMatch.pattern.length;
|
|
93
158
|
}
|
|
94
159
|
return refs;
|
|
95
160
|
}
|
|
@@ -104,6 +169,30 @@ export function extractWikiLinks(sourcePath, markdown) {
|
|
|
104
169
|
return;
|
|
105
170
|
refs.push(...scanTextNode(sourcePath, markdown.slice(start, end), start, starts));
|
|
106
171
|
});
|
|
172
|
+
visit(tree, 'link', (node) => {
|
|
173
|
+
const start = node.position?.start.offset;
|
|
174
|
+
const end = node.position?.end.offset;
|
|
175
|
+
if (start === undefined || end === undefined)
|
|
176
|
+
return;
|
|
177
|
+
const parsed = parseMarkdownLinkTarget(sourcePath, node.url);
|
|
178
|
+
if (!parsed)
|
|
179
|
+
return;
|
|
180
|
+
const displayText = textFromLink(node);
|
|
181
|
+
const position = offsetToLineColumn(starts, start);
|
|
182
|
+
refs.push({
|
|
183
|
+
sourcePath,
|
|
184
|
+
raw: markdown.slice(start, end),
|
|
185
|
+
target: parsed.target,
|
|
186
|
+
...(displayText ? { displayText } : {}),
|
|
187
|
+
...(parsed.heading ? { heading: parsed.heading } : {}),
|
|
188
|
+
line: position.line,
|
|
189
|
+
column: position.column,
|
|
190
|
+
startOffset: start,
|
|
191
|
+
endOffset: end,
|
|
192
|
+
status: 'missing',
|
|
193
|
+
reason: 'not_found',
|
|
194
|
+
});
|
|
195
|
+
});
|
|
107
196
|
return refs;
|
|
108
197
|
}
|
|
109
198
|
//# sourceMappingURL=wiki-links.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiki-links.js","sourceRoot":"","sources":["../../../../src/manager/notes/wiki-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"wiki-links.js","sourceRoot":"","sources":["../../../../src/manager/notes/wiki-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { WebSocketServer } from 'ws';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
const TOKEN_TTL_MS = 60_000;
|
|
4
|
+
export class NoteWsServer {
|
|
5
|
+
wss;
|
|
6
|
+
pendingTokens = [];
|
|
7
|
+
constructor(options) {
|
|
8
|
+
const wsPath = options.path ?? '/api/dashboard/notes/ws';
|
|
9
|
+
this.wss = new WebSocketServer({ noServer: true });
|
|
10
|
+
options.server.on('upgrade', (request, socket, head) => {
|
|
11
|
+
const url = new URL(request.url ?? '', `http://${request.headers.host}`);
|
|
12
|
+
if (url.pathname !== wsPath)
|
|
13
|
+
return;
|
|
14
|
+
const addr = request.socket.remoteAddress ?? '';
|
|
15
|
+
const isLoopback = addr === '127.0.0.1' || addr === '::1' || addr === '::ffff:127.0.0.1';
|
|
16
|
+
if (!isLoopback) {
|
|
17
|
+
const token = url.searchParams.get('token');
|
|
18
|
+
if (!token || !this.consumeToken(token)) {
|
|
19
|
+
socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n');
|
|
20
|
+
socket.destroy();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
this.wss.handleUpgrade(request, socket, head, (ws) => {
|
|
25
|
+
this.wss.emit('connection', ws, request);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
options.watcher.onEvent((event) => this.broadcast(event));
|
|
29
|
+
}
|
|
30
|
+
issueToken() {
|
|
31
|
+
this.pruneExpiredTokens();
|
|
32
|
+
const token = randomBytes(32).toString('hex');
|
|
33
|
+
this.pendingTokens.push({ token, expiresAt: Date.now() + TOKEN_TTL_MS });
|
|
34
|
+
return token;
|
|
35
|
+
}
|
|
36
|
+
consumeToken(token) {
|
|
37
|
+
this.pruneExpiredTokens();
|
|
38
|
+
const index = this.pendingTokens.findIndex(t => t.token === token);
|
|
39
|
+
if (index === -1)
|
|
40
|
+
return false;
|
|
41
|
+
this.pendingTokens.splice(index, 1);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
pruneExpiredTokens() {
|
|
45
|
+
const now = Date.now();
|
|
46
|
+
this.pendingTokens = this.pendingTokens.filter(t => t.expiresAt > now);
|
|
47
|
+
}
|
|
48
|
+
broadcast(event) {
|
|
49
|
+
const message = JSON.stringify(event);
|
|
50
|
+
for (const client of this.wss.clients) {
|
|
51
|
+
if (client.readyState === 1) {
|
|
52
|
+
client.send(message);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
close() {
|
|
57
|
+
for (const client of this.wss.clients)
|
|
58
|
+
client.close();
|
|
59
|
+
this.wss.close();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../../src/manager/notes/ws.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const LINK_POLICY_MARKER = 'data-jaw-preview-link-policy';
|
|
2
|
+
const PREVIEW_LINK_POLICY_SCRIPT = `<script ${LINK_POLICY_MARKER}>(function(){function e(e){try{return new URL(e,location.href)}catch{return null}}function t(e){if(!e)return false;if(e.protocol!=="http:"&&e.protocol!=="https:")return false;if(e.username||e.password)return false;return e.origin!==location.origin}function n(e){var t=e&&e.nodeType===1?e:e&&e.parentElement;return t&&t.closest?t.closest("a[href]"):null}function r(e){if(!t(e))return false;window.open(e.href,"_blank","noopener,noreferrer");return true}document.addEventListener("click",function(o){var i=n(o.target);if(!i)return;var a=e(i.getAttribute("href")||"");if(!t(a))return;o.preventDefault();r(a)},true);document.addEventListener("submit",function(n){var r=n.target;if(!r||!r.action)return;var o=e(r.action);if(!t(o))return;r.target="_blank"},true);})();</script>`;
|
|
3
|
+
function headerValue(headers, key) {
|
|
4
|
+
const value = headers[key] ?? headers[key.toLowerCase()];
|
|
5
|
+
if (Array.isArray(value))
|
|
6
|
+
return value.join(', ');
|
|
7
|
+
return String(value ?? '');
|
|
8
|
+
}
|
|
9
|
+
export function preferIdentityEncoding(headers) {
|
|
10
|
+
return {
|
|
11
|
+
...headers,
|
|
12
|
+
'accept-encoding': 'identity',
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function shouldInjectPreviewLinkPolicy(method, statusCode, headers) {
|
|
16
|
+
if (method === 'HEAD')
|
|
17
|
+
return false;
|
|
18
|
+
if (!statusCode || statusCode < 200 || statusCode >= 300)
|
|
19
|
+
return false;
|
|
20
|
+
if (!headerValue(headers, 'content-type').toLowerCase().includes('text/html'))
|
|
21
|
+
return false;
|
|
22
|
+
const encoding = headerValue(headers, 'content-encoding').trim().toLowerCase();
|
|
23
|
+
return !encoding || encoding === 'identity';
|
|
24
|
+
}
|
|
25
|
+
export function prepareInjectedPreviewHeaders(headers) {
|
|
26
|
+
const next = { ...headers };
|
|
27
|
+
for (const key of Object.keys(next)) {
|
|
28
|
+
const lower = key.toLowerCase();
|
|
29
|
+
if (lower === 'content-length' || lower === 'content-encoding') {
|
|
30
|
+
delete next[key];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return next;
|
|
34
|
+
}
|
|
35
|
+
export function injectPreviewLinkPolicy(html) {
|
|
36
|
+
if (!html || html.includes(LINK_POLICY_MARKER))
|
|
37
|
+
return html;
|
|
38
|
+
if (/<head(?:\s[^>]*)?>/i.test(html)) {
|
|
39
|
+
return html.replace(/<head(?:\s[^>]*)?>/i, match => `${match}${PREVIEW_LINK_POLICY_SCRIPT}`);
|
|
40
|
+
}
|
|
41
|
+
if (/<html(?:\s[^>]*)?>/i.test(html)) {
|
|
42
|
+
return html.replace(/<html(?:\s[^>]*)?>/i, match => `${match}${PREVIEW_LINK_POLICY_SCRIPT}`);
|
|
43
|
+
}
|
|
44
|
+
return `${PREVIEW_LINK_POLICY_SCRIPT}${html}`;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=preview-link-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-link-policy.js","sourceRoot":"","sources":["../../../src/manager/preview-link-policy.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAE1D,MAAM,0BAA0B,GAAG,WAAW,kBAAkB,qwBAAqwB,CAAC;AAEt0B,SAAS,WAAW,CAAC,OAAkD,EAAE,GAAW;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,OAAkD;IAElD,OAAO;QACH,GAAG,OAAO;QACV,iBAAiB,EAAE,UAAU;KAChC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,6BAA6B,CACzC,MAA0B,EAC1B,UAA8B,EAC9B,OAA4B;IAE5B,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5F,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,OAAO,CAAC,QAAQ,IAAI,QAAQ,KAAK,UAAU,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,6BAA6B,CACzC,OAA4B;IAE5B,MAAM,IAAI,GAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAChD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,0BAA0B,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,0BAA0B,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,GAAG,0BAA0B,GAAG,IAAI,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -2,6 +2,7 @@ import http from 'node:http';
|
|
|
2
2
|
import net from 'node:net';
|
|
3
3
|
import { MANAGED_INSTANCE_HOST, } from './constants.js';
|
|
4
4
|
import { sanitizeProxyResponseHeaders, targetOriginForPort, rewriteUpstreamRequestHeaders, buildProxyUpgradeRequest, } from './proxy.js';
|
|
5
|
+
import { injectPreviewLinkPolicy, preferIdentityEncoding, prepareInjectedPreviewHeaders, shouldInjectPreviewLinkPolicy, } from './preview-link-policy.js';
|
|
5
6
|
import { assertRangeDoesNotContainPort, assertRangesDoNotOverlap, assertValidPortRange, isExpectedHostHeader, isPortInRange, isAllowedOriginHeader, toPortRange, } from './security.js';
|
|
6
7
|
function escapeHtml(value) {
|
|
7
8
|
return value.replace(/[&<>"']/g, char => ({
|
|
@@ -49,7 +50,7 @@ function isAbsoluteProxyUrl(path) {
|
|
|
49
50
|
}
|
|
50
51
|
export function createPreviewOriginProxyController(options) {
|
|
51
52
|
const bindHost = options.bindHost || '127.0.0.1';
|
|
52
|
-
const timeoutMs = options.requestTimeoutMs ||
|
|
53
|
+
const timeoutMs = options.requestTimeoutMs || 30_000;
|
|
53
54
|
const range = validatePreviewOriginProxyOptions(options);
|
|
54
55
|
const targetRange = { from: range.targetFrom, to: range.targetTo };
|
|
55
56
|
const states = new Map();
|
|
@@ -101,13 +102,19 @@ export function createPreviewOriginProxyController(options) {
|
|
|
101
102
|
sendDiagnostic(res, validation.status, validation.reason);
|
|
102
103
|
return;
|
|
103
104
|
}
|
|
105
|
+
let deadlineTimer = null;
|
|
106
|
+
const clearDeadline = () => {
|
|
107
|
+
if (deadlineTimer) {
|
|
108
|
+
clearTimeout(deadlineTimer);
|
|
109
|
+
deadlineTimer = null;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
104
112
|
const upstream = http.request({
|
|
105
113
|
hostname: MANAGED_INSTANCE_HOST,
|
|
106
114
|
port: state.targetPort,
|
|
107
115
|
method: req.method,
|
|
108
116
|
path: req.url || '/',
|
|
109
|
-
headers: rewriteUpstreamRequestHeaders(req.headers, state.targetPort),
|
|
110
|
-
timeout: timeoutMs,
|
|
117
|
+
headers: preferIdentityEncoding(rewriteUpstreamRequestHeaders(req.headers, state.targetPort)),
|
|
111
118
|
}, (upstreamRes) => {
|
|
112
119
|
const headers = sanitizeProxyResponseHeaders(upstreamRes.headers, {
|
|
113
120
|
targetOrigin: targetOriginForPort(state.targetPort),
|
|
@@ -116,15 +123,31 @@ export function createPreviewOriginProxyController(options) {
|
|
|
116
123
|
headers['x-jaw-preview-proxy'] = 'origin-port';
|
|
117
124
|
headers['x-jaw-preview-port'] = String(state.previewPort);
|
|
118
125
|
headers['x-jaw-target-port'] = String(state.targetPort);
|
|
126
|
+
if (shouldInjectPreviewLinkPolicy(req.method, upstreamRes.statusCode, upstreamRes.headers)) {
|
|
127
|
+
const chunks = [];
|
|
128
|
+
upstreamRes.setEncoding('utf8');
|
|
129
|
+
upstreamRes.on('data', chunk => chunks.push(String(chunk)));
|
|
130
|
+
upstreamRes.on('end', () => {
|
|
131
|
+
clearDeadline();
|
|
132
|
+
res.writeHead(upstreamRes.statusCode || 502, upstreamRes.statusMessage, prepareInjectedPreviewHeaders(headers));
|
|
133
|
+
res.end(injectPreviewLinkPolicy(chunks.join('')));
|
|
134
|
+
});
|
|
135
|
+
upstreamRes.on('close', clearDeadline);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
119
138
|
res.writeHead(upstreamRes.statusCode || 502, upstreamRes.statusMessage, headers);
|
|
139
|
+
upstreamRes.on('end', clearDeadline);
|
|
140
|
+
upstreamRes.on('close', clearDeadline);
|
|
120
141
|
upstreamRes.pipe(res);
|
|
121
142
|
});
|
|
122
|
-
|
|
143
|
+
deadlineTimer = setTimeout(() => {
|
|
123
144
|
upstream.destroy(new Error('preview proxy timeout'));
|
|
124
|
-
});
|
|
145
|
+
}, timeoutMs);
|
|
125
146
|
upstream.on('error', (error) => {
|
|
147
|
+
clearDeadline();
|
|
126
148
|
sendDiagnostic(res, error.message === 'preview proxy timeout' ? 504 : 502, error.message);
|
|
127
149
|
});
|
|
150
|
+
upstream.on('close', clearDeadline);
|
|
128
151
|
req.pipe(upstream);
|
|
129
152
|
}
|
|
130
153
|
function handleUpgrade(req, socket, head, state) {
|