@letrquan/book 0.2.0 → 0.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3771 -40
- package/README.md +135 -1311
- package/dist/additional-roots-VAWRQ625.js +32 -0
- package/dist/{app-MOXXWEOY.js → app-J7BVPSUH.js} +9648 -5509
- package/dist/app-J7BVPSUH.js.map +1 -0
- package/dist/chunk-2AAOF5B5.js +28 -0
- package/dist/chunk-2AAOF5B5.js.map +1 -0
- package/dist/chunk-32WBCUAN.js +660 -0
- package/dist/chunk-32WBCUAN.js.map +1 -0
- package/dist/chunk-4DKHLZRI.js +120 -0
- package/dist/chunk-4DKHLZRI.js.map +1 -0
- package/dist/{chunk-CAGOB2N4.js → chunk-62EEAUID.js} +6 -4
- package/dist/chunk-62EEAUID.js.map +1 -0
- package/dist/chunk-AHC7OU75.js +1124 -0
- package/dist/chunk-AHC7OU75.js.map +1 -0
- package/dist/{chunk-E75IPST5.js → chunk-AJZWLKLQ.js} +73 -70
- package/dist/chunk-AJZWLKLQ.js.map +1 -0
- package/dist/chunk-B5FC3MYZ.js +395 -0
- package/dist/chunk-B5FC3MYZ.js.map +1 -0
- package/dist/{chunk-KWHQ2XXL.js → chunk-DNFQTSMJ.js} +55 -13
- package/dist/chunk-DNFQTSMJ.js.map +1 -0
- package/dist/{chunk-J7MIZ5CA.js → chunk-E5WLQSKA.js} +719 -89
- package/dist/chunk-E5WLQSKA.js.map +1 -0
- package/dist/chunk-ECLC4CIJ.js +1181 -0
- package/dist/chunk-ECLC4CIJ.js.map +1 -0
- package/dist/chunk-EEX6QNXV.js +127 -0
- package/dist/chunk-EEX6QNXV.js.map +1 -0
- package/dist/chunk-EFXVSQ5J.js +931 -0
- package/dist/chunk-EFXVSQ5J.js.map +1 -0
- package/dist/{chunk-V4BOYR52.js → chunk-ENLB7NYV.js} +1304 -326
- package/dist/chunk-ENLB7NYV.js.map +1 -0
- package/dist/chunk-FPR7SKIE.js +6926 -0
- package/dist/chunk-FPR7SKIE.js.map +1 -0
- package/dist/{chunk-DGMQEI6Y.js → chunk-HFB74CLM.js} +30 -9
- package/dist/chunk-HFB74CLM.js.map +1 -0
- package/dist/{chunk-5RDRAO4B.js → chunk-HOZXKOE3.js} +37 -1
- package/dist/chunk-HOZXKOE3.js.map +1 -0
- package/dist/chunk-IDYWN37T.js +36 -0
- package/dist/chunk-IDYWN37T.js.map +1 -0
- package/dist/chunk-J4F2QLM2.js +273 -0
- package/dist/chunk-J4F2QLM2.js.map +1 -0
- package/dist/chunk-JGF5HLSI.js +1065 -0
- package/dist/chunk-JGF5HLSI.js.map +1 -0
- package/dist/{chunk-XIFFTATU.js → chunk-KDNWMKXV.js} +7166 -4237
- package/dist/chunk-KDNWMKXV.js.map +1 -0
- package/dist/chunk-KXAYUIKP.js +90 -0
- package/dist/chunk-KXAYUIKP.js.map +1 -0
- package/dist/{chunk-3U5IBM24.js → chunk-MEOB2DZA.js} +12 -2
- package/dist/chunk-MEOB2DZA.js.map +1 -0
- package/dist/{chunk-WKBO5R4O.js → chunk-MV5PQNIA.js} +2 -2
- package/dist/chunk-MV5PQNIA.js.map +1 -0
- package/dist/chunk-N2G4Q7ME.js +2672 -0
- package/dist/chunk-N2G4Q7ME.js.map +1 -0
- package/dist/chunk-OJBMDM5H.js +299 -0
- package/dist/chunk-OJBMDM5H.js.map +1 -0
- package/dist/{chunk-URLQAXTR.js → chunk-PTDC7ZUP.js} +2 -2
- package/dist/chunk-PTDC7ZUP.js.map +1 -0
- package/dist/{chunk-574C6MQR.js → chunk-REASC2QG.js} +173 -64
- package/dist/chunk-REASC2QG.js.map +1 -0
- package/dist/{chunk-7N4J557C.js → chunk-RT5SATF7.js} +1 -1
- package/dist/chunk-RT5SATF7.js.map +1 -0
- package/dist/chunk-SBTU5BEC.js +114 -0
- package/dist/chunk-SBTU5BEC.js.map +1 -0
- package/dist/{chunk-5KLVH3PY.js → chunk-SWPDKLNM.js} +5 -3
- package/dist/chunk-SWPDKLNM.js.map +1 -0
- package/dist/chunk-UCFJ43OS.js +520 -0
- package/dist/chunk-UCFJ43OS.js.map +1 -0
- package/dist/{chunk-VZQXX3WW.js → chunk-W7SLYS3M.js} +80 -16
- package/dist/chunk-W7SLYS3M.js.map +1 -0
- package/dist/{chunk-ANSJPYGI.js → chunk-WV3O5PGX.js} +3 -3
- package/dist/chunk-WV3O5PGX.js.map +1 -0
- package/dist/chunk-XHAO3K7I.js +18 -0
- package/dist/chunk-XHAO3K7I.js.map +1 -0
- package/dist/chunk-XJRJVXJR.js +1050 -0
- package/dist/chunk-XJRJVXJR.js.map +1 -0
- package/dist/chunk-YIL6HTJX.js +663 -0
- package/dist/chunk-YIL6HTJX.js.map +1 -0
- package/dist/{chunk-24AXE6SP.js → chunk-ZPSZZUWF.js} +1 -1
- package/dist/chunk-ZPSZZUWF.js.map +1 -0
- package/dist/{command-approvals-6Y57VCWZ.js → command-approvals-ZRY66LCW.js} +7 -5
- package/dist/context-C3RAP6K5.js +41 -0
- package/dist/{hook-approvals-CTUFKEJT.js → hook-approvals-DPQD5H65.js} +6 -5
- package/dist/index.js +947 -203
- package/dist/index.js.map +1 -1
- package/dist/{interactive-assets-CCAAWVKH.js → interactive-assets-73AQO5WP.js} +18 -9
- package/dist/interactive-assets-73AQO5WP.js.map +1 -0
- package/dist/job-runner.js +166 -111
- package/dist/job-runner.js.map +1 -1
- package/dist/job-supervisor.d.ts +2 -0
- package/dist/job-supervisor.js +121 -0
- package/dist/job-supervisor.js.map +1 -0
- package/dist/loader-DQNPDKOX.js +27 -0
- package/dist/{mcp-approvals-WNPH65BK.js → mcp-approvals-27LJYADQ.js} +6 -5
- package/dist/{mcp-config-YIJIES2C.js → mcp-config-GXSODNCM.js} +4 -3
- package/dist/memory-store-I6Z54VUN.js +51 -0
- package/dist/{model-window-store-YFVNXCIP.js → model-window-store-6VKXXTPJ.js} +9 -4
- package/dist/openai-compatible-IPUNBJ53.js +16 -0
- package/dist/permission-approvals-Q5IMFEZI.js +15 -0
- package/dist/permissions-7Y35X6HZ.js +62 -0
- package/dist/provider-approvals-5AGH3RVT.js +76 -0
- package/dist/sandbox-N2RY72GN.js +42 -0
- package/dist/{scrollback-LUKLIBVI.js → scrollback-GD76GNM4.js} +44 -26
- package/dist/scrollback-GD76GNM4.js.map +1 -0
- package/dist/sdk.d.ts +2739 -2069
- package/dist/sdk.js +77 -42
- package/dist/sdk.js.map +1 -1
- package/dist/settings-loader-KDBH45AQ.js +43 -0
- package/dist/settings-loader-KDBH45AQ.js.map +1 -0
- package/dist/{settings-removed-JWWPT4WA.js → settings-removed-3ATWJEF3.js} +2 -2
- package/dist/settings-removed-3ATWJEF3.js.map +1 -0
- package/dist/shell-selection-Z5WORZU4.js +31 -0
- package/dist/shell-selection-Z5WORZU4.js.map +1 -0
- package/package.json +25 -24
- package/dist/app-MOXXWEOY.js.map +0 -1
- package/dist/chunk-24AXE6SP.js.map +0 -1
- package/dist/chunk-3U5IBM24.js.map +0 -1
- package/dist/chunk-574C6MQR.js.map +0 -1
- package/dist/chunk-5GDZ22YP.js +0 -449
- package/dist/chunk-5GDZ22YP.js.map +0 -1
- package/dist/chunk-5KLVH3PY.js.map +0 -1
- package/dist/chunk-5RDRAO4B.js.map +0 -1
- package/dist/chunk-7N4J557C.js.map +0 -1
- package/dist/chunk-A7JLBK2Y.js +0 -3506
- package/dist/chunk-A7JLBK2Y.js.map +0 -1
- package/dist/chunk-ANSJPYGI.js.map +0 -1
- package/dist/chunk-BTZZUCLI.js +0 -264
- package/dist/chunk-BTZZUCLI.js.map +0 -1
- package/dist/chunk-C7D4NJ2D.js +0 -217
- package/dist/chunk-C7D4NJ2D.js.map +0 -1
- package/dist/chunk-CAGOB2N4.js.map +0 -1
- package/dist/chunk-DGMQEI6Y.js.map +0 -1
- package/dist/chunk-E75IPST5.js.map +0 -1
- package/dist/chunk-EYGD6X2T.js +0 -180
- package/dist/chunk-EYGD6X2T.js.map +0 -1
- package/dist/chunk-GTVB4HEM.js +0 -765
- package/dist/chunk-GTVB4HEM.js.map +0 -1
- package/dist/chunk-J7MIZ5CA.js.map +0 -1
- package/dist/chunk-KWHQ2XXL.js.map +0 -1
- package/dist/chunk-L6LK2QIQ.js +0 -657
- package/dist/chunk-L6LK2QIQ.js.map +0 -1
- package/dist/chunk-MAQXCUR4.js +0 -1007
- package/dist/chunk-MAQXCUR4.js.map +0 -1
- package/dist/chunk-S4XL7HOM.js +0 -402
- package/dist/chunk-S4XL7HOM.js.map +0 -1
- package/dist/chunk-URLQAXTR.js.map +0 -1
- package/dist/chunk-V4BOYR52.js.map +0 -1
- package/dist/chunk-VZQXX3WW.js.map +0 -1
- package/dist/chunk-WKBO5R4O.js.map +0 -1
- package/dist/chunk-XIFFTATU.js.map +0 -1
- package/dist/context-ZC5IFEAX.js +0 -25
- package/dist/interactive-assets-CCAAWVKH.js.map +0 -1
- package/dist/loader-4IDS2RIE.js +0 -15
- package/dist/openai-compatible-RHZUBHV6.js +0 -10
- package/dist/permission-approvals-76PVREFD.js +0 -14
- package/dist/permissions-CHCKTFQQ.js +0 -28
- package/dist/sandbox-CNVAQDA7.js +0 -23
- package/dist/scrollback-LUKLIBVI.js.map +0 -1
- package/dist/settings-loader-M2QP5TX2.js +0 -21
- package/dist/shell-selection-V6QAYXPX.js +0 -17
- package/patches/ink+6.8.0.patch +0 -13
- package/scripts/apply-ink-patch.mjs +0 -29
- package/scripts/ink-patch.mjs +0 -59
- package/scripts/verify-ink-patch.mjs +0 -11
- /package/dist/{command-approvals-6Y57VCWZ.js.map → additional-roots-VAWRQ625.js.map} +0 -0
- /package/dist/{context-ZC5IFEAX.js.map → command-approvals-ZRY66LCW.js.map} +0 -0
- /package/dist/{hook-approvals-CTUFKEJT.js.map → context-C3RAP6K5.js.map} +0 -0
- /package/dist/{loader-4IDS2RIE.js.map → hook-approvals-DPQD5H65.js.map} +0 -0
- /package/dist/{mcp-approvals-WNPH65BK.js.map → loader-DQNPDKOX.js.map} +0 -0
- /package/dist/{mcp-config-YIJIES2C.js.map → mcp-approvals-27LJYADQ.js.map} +0 -0
- /package/dist/{model-window-store-YFVNXCIP.js.map → mcp-config-GXSODNCM.js.map} +0 -0
- /package/dist/{openai-compatible-RHZUBHV6.js.map → memory-store-I6Z54VUN.js.map} +0 -0
- /package/dist/{permission-approvals-76PVREFD.js.map → model-window-store-6VKXXTPJ.js.map} +0 -0
- /package/dist/{permissions-CHCKTFQQ.js.map → openai-compatible-IPUNBJ53.js.map} +0 -0
- /package/dist/{sandbox-CNVAQDA7.js.map → permission-approvals-Q5IMFEZI.js.map} +0 -0
- /package/dist/{settings-loader-M2QP5TX2.js.map → permissions-7Y35X6HZ.js.map} +0 -0
- /package/dist/{settings-removed-JWWPT4WA.js.map → provider-approvals-5AGH3RVT.js.map} +0 -0
- /package/dist/{shell-selection-V6QAYXPX.js.map → sandbox-N2RY72GN.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tui/theme.ts","../src/types/theme.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\r\nimport type { ThemeTokens } from '../types/theme.js';\r\nimport { DEFAULT_THEME } from '../types/theme.js';\r\nimport { readFileSync, existsSync, readdirSync } from 'fs';\r\nimport { join } from 'path';\r\n\r\n/** Quiet editorial dark theme. This is the same as DEFAULT_THEME. */\r\nexport const DARK_THEME: ThemeTokens = { ...DEFAULT_THEME };\r\n\r\n/**\r\n * Apple-inspired default palette: near-black neutral surfaces, bright grey\r\n * text, and one blue action accent. Every other hue is a system colour that\r\n * appears only when a state needs attention, so ordinary chrome never competes\r\n * with the work.\r\n *\r\n * Roles stay distinct, as in the editorial palettes: blue is the user and the\r\n * composer (the things you act on), cyan is the agent speaking, indigo is\r\n * product chrome, teal carries references, and the orange/red/green trio is\r\n * status. A token that reuses another role's hue makes the two indistinguishable\r\n * on screen, which is exactly what the calm palette exists to avoid.\r\n */\r\nexport const APPLE_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#5E5CE6',\r\n brandShimmer: '#8E8CFF',\r\n\r\n text: '#F5F5F7',\r\n inverseText: '#111113',\r\n inactive: '#6E6E73',\r\n subtle: '#98989D',\r\n suggestion: '#8E8E93',\r\n permission: '#FF9F0A',\r\n remember: '#BF5AF2',\r\n\r\n surface: '#1C1C1E',\r\n surfaceActive: '#2C2C2E',\r\n border: '#3A3A3C',\r\n selectionText: '#FFFFFF',\r\n userAccent: '#0A84FF',\r\n assistantAccent: '#64D2FF',\r\n toolRail: '#636366',\r\n\r\n success: '#30D158',\r\n error: '#FF453A',\r\n warning: '#FF9F0A',\r\n merged: '#66D4CF',\r\n\r\n promptBorder: '#0A84FF',\r\n planMode: '#BF5AF2',\r\n autoAccept: '#30D158',\r\n bashBorder: '#FF9F0A',\r\n\r\n // `default` is the quiet mode: neutral grey, so an ordinary session carries\r\n // no permission-mode signal at all.\r\n modeDefault: '#98989D',\r\n modePlan: '#BF5AF2',\r\n modeAcceptEdits: '#30D158',\r\n modeAuto: '#66D4CF',\r\n modeDontAsk: '#FF453A',\r\n modeBypass: '#FF9F0A',\r\n\r\n diffAdded: '#173A28',\r\n diffRemoved: '#3A1E22',\r\n diffAddedWord: '#24633D',\r\n diffRemovedWord: '#6B2932',\r\n diffAddedDimmed: '#122B1E',\r\n diffRemovedDimmed: '#2B181C',\r\n\r\n usageMeter: '#66D4CF',\r\n usageMeterHigh: '#FF9F0A',\r\n usageMeterCritical: '#FF453A',\r\n\r\n // The spinner is the agent speaking, so it keeps the cyan identity.\r\n shimmerPair: ['#64D2FF', '#A5E3FF'],\r\n\r\n subagentColors: [\r\n '#FF453A',\r\n '#FF9F0A',\r\n '#FFD60A',\r\n '#30D158',\r\n '#64D2FF',\r\n '#0A84FF',\r\n '#BF5AF2',\r\n '#5E5CE6',\r\n ],\r\n\r\n mdCodeBackground: '#161618',\r\n mdCodeBorder: '#3A3A3C',\r\n mdCodeText: '#F5F5F7',\r\n mdCodeKeyword: '#BF5AF2',\r\n mdCodeString: '#30D158',\r\n mdCodeComment: '#6E6E73',\r\n mdCodeNumber: '#FF9F0A',\r\n mdCodeFunction: '#64D2FF',\r\n mdCodeLineNumber: '#636366',\r\n mdInlineCodeBg: '#2C2C2E',\r\n mdInlineCodeText: '#66D4CF',\r\n // Three distinct brightness steps, none at `text`, so heading depth stays\r\n // legible without markers.\r\n mdHeadingH1: '#FFFFFF',\r\n mdHeadingH2: '#E5E5EA',\r\n mdHeading: '#AEAEB2',\r\n mdBlockquoteBorder: '#636366',\r\n mdBlockquoteText: '#98989D',\r\n mdLink: '#66D4CF',\r\n mdListMarker: '#0A84FF',\r\n mdHr: '#3A3A3C',\r\n mdTableBorder: '#3A3A3C',\r\n mdThinkBg: '#161618',\r\n mdThinkBorder: '#3A3A3C',\r\n mdThinkText: '#8E8E93',\r\n mdTurnSeparator: '#3A3A3C',\r\n mdCheckboxChecked: '#30D158',\r\n mdCheckboxUnchecked: '#6E6E73',\r\n\r\n userBg: '#202022',\r\n};\r\n\r\n/** Matched editorial palette for terminals with light backgrounds. */\r\n/**\r\n * Warm editorial light palette. Mirrors DEFAULT_THEME role for role: the same\r\n * seven hues, darkened for a light background.\r\n */\r\nexport const LIGHT_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#A45F48',\r\n brandShimmer: '#B87458',\r\n\r\n text: '#302E2A',\r\n inverseText: '#FBF7EE',\r\n inactive: '#928A7E',\r\n subtle: '#746F66',\r\n suggestion: '#8A8378',\r\n permission: '#94662B',\r\n remember: '#805F6E',\r\n\r\n surface: '#EEE8DC',\r\n surfaceActive: '#DDE6D6',\r\n border: '#C9C1B3',\r\n selectionText: '#293126',\r\n userAccent: '#A45F48',\r\n assistantAccent: '#607257',\r\n toolRail: '#A79F91',\r\n\r\n success: '#4F7746',\r\n error: '#A54F44',\r\n warning: '#94662B',\r\n merged: '#4F7B71',\r\n\r\n promptBorder: '#7C8A76',\r\n planMode: '#805F6E',\r\n autoAccept: '#4F7746',\r\n bashBorder: '#94662B',\r\n\r\n modeDefault: '#7C8A76',\r\n modePlan: '#805F6E',\r\n modeAcceptEdits: '#4F7746',\r\n modeAuto: '#4F7B71',\r\n modeDontAsk: '#A54F44',\r\n modeBypass: '#94662B',\r\n\r\n usageMeter: '#4F7B71',\r\n usageMeterHigh: '#94662B',\r\n usageMeterCritical: '#A54F44',\r\n\r\n diffAdded: '#DFECDC',\r\n diffRemoved: '#F1DDDA',\r\n diffAddedWord: '#BFD8BD',\r\n diffRemovedWord: '#E6BFBA',\r\n diffAddedDimmed: '#EAF3E9',\r\n diffRemovedDimmed: '#F7E9E7',\r\n\r\n shimmerPair: ['#607257', '#75886A'],\r\n subagentColors: [\r\n '#A54F44',\r\n '#4F7B71',\r\n '#4F7746',\r\n '#94662B',\r\n '#805F6E',\r\n '#A45F48',\r\n '#8D6277',\r\n '#607257',\r\n ],\r\n\r\n mdCodeBackground: '#E7E2D8',\r\n mdCodeBorder: '#CFC7B9',\r\n mdCodeText: '#302E2A',\r\n mdCodeKeyword: '#805F6E',\r\n mdCodeString: '#4F7746',\r\n mdCodeComment: '#8A8378',\r\n mdCodeNumber: '#94662B',\r\n mdCodeFunction: '#4F7B71',\r\n mdCodeLineNumber: '#A79F91',\r\n mdInlineCodeBg: '#E4DED2',\r\n mdInlineCodeText: '#A45F48',\r\n mdHeadingH1: '#14130F',\r\n mdHeadingH2: '#23211D',\r\n mdHeading: '#5F5B51',\r\n mdBlockquoteBorder: '#A79F91',\r\n mdBlockquoteText: '#746F66',\r\n mdLink: '#4F7B71',\r\n mdListMarker: '#7C8A76',\r\n mdHr: '#CFC7B9',\r\n mdTableBorder: '#CFC7B9',\r\n mdThinkBg: '#EEE8DC',\r\n mdThinkBorder: '#CFC7B9',\r\n mdThinkText: '#746F66',\r\n mdTurnSeparator: '#C9C1B3',\r\n mdCheckboxChecked: '#4F7746',\r\n mdCheckboxUnchecked: '#928A7E',\r\n\r\n userBg: '#F3E7DE',\r\n};\r\n\r\n/**\r\n * Soothing pastel dark palette based on Catppuccin Mocha.\r\n * Medium contrast, soft pastels, reduced eye fatigue.\r\n */\r\nexport const CATPPUCCIN_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#CBA6F7',\r\n brandShimmer: '#F5C2E7',\r\n\r\n text: '#CDD6F4',\r\n inverseText: '#11111B',\r\n inactive: '#6C7086',\r\n subtle: '#A6ADC8',\r\n suggestion: '#7F849C',\r\n permission: '#F9E2AF',\r\n remember: '#F5C2E7',\r\n\r\n surface: '#1E1E2E',\r\n surfaceActive: '#313244',\r\n border: '#45475A',\r\n selectionText: '#F5E0DC',\r\n userAccent: '#89B4FA',\r\n assistantAccent: '#B4BEFE',\r\n toolRail: '#585B70',\r\n\r\n success: '#A6E3A1',\r\n error: '#F38BA8',\r\n warning: '#F9E2AF',\r\n merged: '#94E2D5',\r\n\r\n promptBorder: '#89B4FA',\r\n planMode: '#F5C2E7',\r\n autoAccept: '#A6E3A1',\r\n bashBorder: '#FAB387',\r\n\r\n modeDefault: '#89B4FA',\r\n modePlan: '#F5C2E7',\r\n modeAcceptEdits: '#A6E3A1',\r\n modeAuto: '#94E2D5',\r\n modeDontAsk: '#F38BA8',\r\n modeBypass: '#FAB387',\r\n\r\n diffAdded: '#23342E',\r\n diffRemoved: '#3B2430',\r\n diffAddedWord: '#315444',\r\n diffRemovedWord: '#5C2C40',\r\n diffAddedDimmed: '#1B2A24',\r\n diffRemovedDimmed: '#2D1D26',\r\n\r\n usageMeter: '#94E2D5',\r\n usageMeterHigh: '#FAB387',\r\n usageMeterCritical: '#F38BA8',\r\n\r\n shimmerPair: ['#B4BEFE', '#C7CEFF'],\r\n subagentColors: [\r\n '#F38BA8',\r\n '#FAB387',\r\n '#F9E2AF',\r\n '#A6E3A1',\r\n '#94E2D5',\r\n '#89B4FA',\r\n '#CBA6F7',\r\n '#F5C2E7',\r\n ],\r\n\r\n mdCodeBackground: '#181825',\r\n mdCodeBorder: '#313244',\r\n mdCodeText: '#CDD6F4',\r\n mdCodeKeyword: '#CBA6F7',\r\n mdCodeString: '#A6E3A1',\r\n mdCodeComment: '#6C7086',\r\n mdCodeNumber: '#FAB387',\r\n mdCodeFunction: '#89B4FA',\r\n mdCodeLineNumber: '#585B70',\r\n mdInlineCodeBg: '#313244',\r\n mdInlineCodeText: '#F5C2E7',\r\n mdHeadingH1: '#F5E0DC',\r\n mdHeadingH2: '#BAC2DE',\r\n mdHeading: '#A6ADC8',\r\n mdBlockquoteBorder: '#585B70',\r\n mdBlockquoteText: '#A6ADC8',\r\n mdLink: '#89DCEB',\r\n mdListMarker: '#89B4FA',\r\n mdHr: '#45475A',\r\n mdTableBorder: '#45475A',\r\n mdThinkBg: '#181825',\r\n mdThinkBorder: '#313244',\r\n mdThinkText: '#7F849C',\r\n mdTurnSeparator: '#45475A',\r\n mdCheckboxChecked: '#A6E3A1',\r\n mdCheckboxUnchecked: '#6C7086',\r\n\r\n userBg: '#24273A',\r\n};\r\n\r\n/**\r\n * Arctic and glacial slate palette based on Nord.\r\n * Low blue-light glare, tranquil cool tones.\r\n */\r\nexport const NORD_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#88C0D0',\r\n brandShimmer: '#8FBCBB',\r\n\r\n text: '#D8DEE9',\r\n inverseText: '#2E3440',\r\n inactive: '#4C566A',\r\n subtle: '#9AA7BC',\r\n suggestion: '#616E88',\r\n permission: '#EBCB8B',\r\n remember: '#B48EAD',\r\n\r\n surface: '#2E3440',\r\n surfaceActive: '#3B4252',\r\n border: '#434C5E',\r\n selectionText: '#ECEFF4',\r\n userAccent: '#81A1C1',\r\n assistantAccent: '#8FBCBB',\r\n toolRail: '#4C566A',\r\n\r\n success: '#A3BE8C',\r\n error: '#BF616A',\r\n warning: '#EBCB8B',\r\n merged: '#88C0D0',\r\n\r\n promptBorder: '#81A1C1',\r\n planMode: '#B48EAD',\r\n autoAccept: '#A3BE8C',\r\n bashBorder: '#D08770',\r\n\r\n modeDefault: '#5E81AC',\r\n modePlan: '#B48EAD',\r\n modeAcceptEdits: '#A3BE8C',\r\n modeAuto: '#8FBCBB',\r\n modeDontAsk: '#BF616A',\r\n modeBypass: '#D08770',\r\n\r\n diffAdded: '#2A3B35',\r\n diffRemoved: '#3D2930',\r\n diffAddedWord: '#385648',\r\n diffRemovedWord: '#5E353F',\r\n diffAddedDimmed: '#23302B',\r\n diffRemovedDimmed: '#312127',\r\n\r\n usageMeter: '#81A1C1',\r\n usageMeterHigh: '#EBCB8B',\r\n usageMeterCritical: '#BF616A',\r\n\r\n shimmerPair: ['#8FBCBB', '#A3CECD'],\r\n subagentColors: [\r\n '#BF616A',\r\n '#D08770',\r\n '#EBCB8B',\r\n '#A3BE8C',\r\n '#8FBCBB',\r\n '#88C0D0',\r\n '#81A1C1',\r\n '#B48EAD',\r\n ],\r\n\r\n mdCodeBackground: '#242933',\r\n mdCodeBorder: '#3B4252',\r\n mdCodeText: '#D8DEE9',\r\n mdCodeKeyword: '#81A1C1',\r\n mdCodeString: '#A3BE8C',\r\n mdCodeComment: '#616E88',\r\n mdCodeNumber: '#B48EAD',\r\n mdCodeFunction: '#88C0D0',\r\n mdCodeLineNumber: '#4C566A',\r\n mdInlineCodeBg: '#3B4252',\r\n mdInlineCodeText: '#88C0D0',\r\n mdHeadingH1: '#ECEFF4',\r\n mdHeadingH2: '#E5E9F0',\r\n mdHeading: '#9AA7BC',\r\n mdBlockquoteBorder: '#4C566A',\r\n mdBlockquoteText: '#9AA7BC',\r\n mdLink: '#81A1C1',\r\n mdListMarker: '#88C0D0',\r\n mdHr: '#434C5E',\r\n mdTableBorder: '#434C5E',\r\n mdThinkBg: '#242933',\r\n mdThinkBorder: '#3B4252',\r\n mdThinkText: '#616E88',\r\n mdTurnSeparator: '#434C5E',\r\n mdCheckboxChecked: '#A3BE8C',\r\n mdCheckboxUnchecked: '#4C566A',\r\n\r\n userBg: '#353C4A',\r\n};\r\n\r\n/**\r\n * Warm earthy dark palette based on Gruvbox Dark.\r\n * Reduced blue light, high legibility, warm tones.\r\n */\r\nexport const GRUVBOX_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#FE8019',\r\n brandShimmer: '#FABD2F',\r\n\r\n text: '#EBDBB2',\r\n inverseText: '#282828',\r\n inactive: '#7C6F64',\r\n subtle: '#A89984',\r\n suggestion: '#928374',\r\n permission: '#FABD2F',\r\n remember: '#D3869B',\r\n\r\n surface: '#282828',\r\n surfaceActive: '#3C3836',\r\n border: '#504945',\r\n selectionText: '#FBF1C7',\r\n userAccent: '#FE8019',\r\n assistantAccent: '#8EC07C',\r\n toolRail: '#665C54',\r\n\r\n success: '#B8BB26',\r\n error: '#FB4934',\r\n warning: '#FABD2F',\r\n merged: '#83A598',\r\n\r\n promptBorder: '#83A598',\r\n planMode: '#D3869B',\r\n autoAccept: '#B8BB26',\r\n bashBorder: '#FABD2F',\r\n\r\n modeDefault: '#689D6A',\r\n modePlan: '#D3869B',\r\n modeAcceptEdits: '#B8BB26',\r\n modeAuto: '#8EC07C',\r\n modeDontAsk: '#FB4934',\r\n modeBypass: '#FE8019',\r\n\r\n diffAdded: '#2B3322',\r\n diffRemoved: '#3B2320',\r\n diffAddedWord: '#3E522C',\r\n diffRemovedWord: '#5C2B25',\r\n diffAddedDimmed: '#23291C',\r\n diffRemovedDimmed: '#2E1C1A',\r\n\r\n usageMeter: '#83A598',\r\n usageMeterHigh: '#FABD2F',\r\n usageMeterCritical: '#FB4934',\r\n\r\n shimmerPair: ['#8EC07C', '#B8BB26'],\r\n subagentColors: [\r\n '#FB4934',\r\n '#FE8019',\r\n '#FABD2F',\r\n '#B8BB26',\r\n '#8EC07C',\r\n '#83A598',\r\n '#D3869B',\r\n '#D5C4A1',\r\n ],\r\n\r\n mdCodeBackground: '#1D2021',\r\n mdCodeBorder: '#3C3836',\r\n mdCodeText: '#EBDBB2',\r\n mdCodeKeyword: '#FB4934',\r\n mdCodeString: '#B8BB26',\r\n mdCodeComment: '#928374',\r\n mdCodeNumber: '#D3869B',\r\n mdCodeFunction: '#8EC07C',\r\n mdCodeLineNumber: '#665C54',\r\n mdInlineCodeBg: '#3C3836',\r\n mdInlineCodeText: '#FE8019',\r\n mdHeadingH1: '#FBF1C7',\r\n mdHeadingH2: '#F2E5BC',\r\n mdHeading: '#D5C4A1',\r\n mdBlockquoteBorder: '#665C54',\r\n mdBlockquoteText: '#A89984',\r\n mdLink: '#83A598',\r\n mdListMarker: '#FE8019',\r\n mdHr: '#504945',\r\n mdTableBorder: '#504945',\r\n mdThinkBg: '#1D2021',\r\n mdThinkBorder: '#3C3836',\r\n mdThinkText: '#928374',\r\n mdTurnSeparator: '#504945',\r\n mdCheckboxChecked: '#B8BB26',\r\n mdCheckboxUnchecked: '#7C6F64',\r\n\r\n userBg: '#32302F',\r\n};\r\n\r\n/**\r\n * Scientifically tuned low-contrast dark palette based on Solarized Dark.\r\n * Engineered Lab color space contrast for zero eye fatigue.\r\n */\r\nexport const SOLARIZED_DARK_THEME: ThemeTokens = {\r\n ...DEFAULT_THEME,\r\n brand: '#268BD2',\r\n brandShimmer: '#2AA198',\r\n\r\n text: '#839496',\r\n inverseText: '#002B36',\r\n inactive: '#586E75',\r\n subtle: '#657B83',\r\n suggestion: '#586E75',\r\n permission: '#B58900',\r\n remember: '#D33682',\r\n\r\n surface: '#002B36',\r\n surfaceActive: '#073642',\r\n border: '#0E4B5B',\r\n selectionText: '#FDF6E3',\r\n userAccent: '#268BD2',\r\n assistantAccent: '#2AA198',\r\n toolRail: '#586E75',\r\n\r\n success: '#859900',\r\n error: '#DC322F',\r\n warning: '#B58900',\r\n merged: '#2AA198',\r\n\r\n promptBorder: '#268BD2',\r\n planMode: '#D33682',\r\n autoAccept: '#859900',\r\n bashBorder: '#CB4B16',\r\n\r\n modeDefault: '#586E75',\r\n modePlan: '#D33682',\r\n modeAcceptEdits: '#859900',\r\n modeAuto: '#2AA198',\r\n modeDontAsk: '#DC322F',\r\n modeBypass: '#CB4B16',\r\n\r\n diffAdded: '#0A3326',\r\n diffRemoved: '#36191E',\r\n diffAddedWord: '#134F3A',\r\n diffRemovedWord: '#54222A',\r\n diffAddedDimmed: '#08291F',\r\n diffRemovedDimmed: '#2B1418',\r\n\r\n usageMeter: '#2AA198',\r\n usageMeterHigh: '#B58900',\r\n usageMeterCritical: '#DC322F',\r\n\r\n shimmerPair: ['#2AA198', '#859900'],\r\n subagentColors: [\r\n '#DC322F',\r\n '#CB4B16',\r\n '#B58900',\r\n '#859900',\r\n '#2AA198',\r\n '#268BD2',\r\n '#6C71C4',\r\n '#D33682',\r\n ],\r\n\r\n mdCodeBackground: '#00212B',\r\n mdCodeBorder: '#073642',\r\n mdCodeText: '#839496',\r\n mdCodeKeyword: '#859900',\r\n mdCodeString: '#2AA198',\r\n mdCodeComment: '#586E75',\r\n mdCodeNumber: '#D33682',\r\n mdCodeFunction: '#268BD2',\r\n mdCodeLineNumber: '#586E75',\r\n mdInlineCodeBg: '#073642',\r\n mdInlineCodeText: '#2AA198',\r\n mdHeadingH1: '#FDF6E3',\r\n mdHeadingH2: '#EEE8D5',\r\n mdHeading: '#93A1A1',\r\n mdBlockquoteBorder: '#586E75',\r\n mdBlockquoteText: '#657B83',\r\n mdLink: '#6C71C4',\r\n mdListMarker: '#2AA198',\r\n mdHr: '#073642',\r\n mdTableBorder: '#073642',\r\n mdThinkBg: '#00212B',\r\n mdThinkBorder: '#073642',\r\n mdThinkText: '#586E75',\r\n mdTurnSeparator: '#073642',\r\n mdCheckboxChecked: '#859900',\r\n mdCheckboxUnchecked: '#586E75',\r\n\r\n userBg: '#073642',\r\n};\r\n\r\nexport interface ResolvedTheme {\r\n preference: string;\r\n resolvedName: string;\r\n tokens: ThemeTokens;\r\n}\r\n\r\nconst CUSTOM_THEME_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\r\n\r\n/**\r\n * React context for theme tokens.\r\n * Components that render colors read from this instead of hardcoded strings,\r\n * so custom themes can override the palette globally.\r\n */\r\nexport const ThemeContext = createContext<ThemeTokens>(DEFAULT_THEME);\r\n\r\n/**\r\n * Hook to access the current theme tokens.\r\n */\r\nexport function useTheme(): ThemeTokens {\r\n return useContext(ThemeContext);\r\n}\r\n\r\n/** Detect whether COLORFGBG reports a light terminal background. */\r\nexport function hasLightTerminalBackground(colorFgBg = process.env.COLORFGBG ?? ''): boolean {\r\n const background = Number(colorFgBg.split(';').at(-1));\r\n return background === 7 || background === 15;\r\n}\r\n\r\n/** List safe custom theme names from .book/themes. */\r\nexport function listCustomThemes(workspace: string): string[] {\r\n const themesDir = join(workspace, '.book', 'themes');\r\n try {\r\n return readdirSync(themesDir, { withFileTypes: true })\r\n .filter((entry) => entry.isFile() && entry.name.endsWith('.json'))\r\n .map((entry) => entry.name.slice(0, -'.json'.length))\r\n .filter((name) => CUSTOM_THEME_NAME.test(name))\r\n .sort((a, b) => a.localeCompare(b));\r\n } catch {\r\n return [];\r\n }\r\n}\r\n\r\n/**\r\n * Try to load a custom theme from .book/themes/<name>.json.\r\n * Returns the loaded theme tokens, or null if not found.\r\n */\r\nexport function loadCustomTheme(workspace: string, name: string): ThemeTokens | null {\r\n if (!CUSTOM_THEME_NAME.test(name)) return null;\r\n const themePath = join(workspace, '.book', 'themes', `${name}.json`);\r\n if (!existsSync(themePath)) return null;\r\n try {\r\n const raw = readFileSync(themePath, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<ThemeTokens>;\r\n return { ...DEFAULT_THEME, ...parsed };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/** Resolve a built-in, automatic, or project theme preference into tokens. */\r\nexport function resolveTheme(\r\n workspace: string,\r\n preference: string,\r\n colorFgBg = process.env.COLORFGBG ?? '',\r\n): ResolvedTheme | null {\r\n const requested = preference.trim();\r\n const builtin = requested.toLowerCase();\r\n if (builtin === 'apple' || builtin === 'apple-dark') {\r\n return { preference: 'apple', resolvedName: 'apple', tokens: APPLE_THEME };\r\n }\r\n if (builtin === 'dark') {\r\n return { preference: 'dark', resolvedName: 'dark', tokens: DARK_THEME };\r\n }\r\n if (builtin === 'light') {\r\n return { preference: 'light', resolvedName: 'light', tokens: LIGHT_THEME };\r\n }\r\n if (builtin === 'auto') {\r\n // A dark terminal gets the default palette, not the warm editorial one, so\r\n // `auto` never looks different from a fresh install on the same screen.\r\n const isLight = hasLightTerminalBackground(colorFgBg);\r\n return {\r\n preference: 'auto',\r\n resolvedName: isLight ? 'light' : 'apple',\r\n tokens: isLight ? LIGHT_THEME : APPLE_THEME,\r\n };\r\n }\r\n if (builtin === 'catppuccin' || builtin === 'catppuccin-mocha' || builtin === 'mocha') {\r\n return { preference: 'catppuccin', resolvedName: 'catppuccin', tokens: CATPPUCCIN_THEME };\r\n }\r\n if (builtin === 'nord') {\r\n return { preference: 'nord', resolvedName: 'nord', tokens: NORD_THEME };\r\n }\r\n if (builtin === 'gruvbox' || builtin === 'gruvbox-dark') {\r\n return { preference: 'gruvbox', resolvedName: 'gruvbox', tokens: GRUVBOX_THEME };\r\n }\r\n if (builtin === 'solarized-dark' || builtin === 'solarized') {\r\n return {\r\n preference: 'solarized-dark',\r\n resolvedName: 'solarized-dark',\r\n tokens: SOLARIZED_DARK_THEME,\r\n };\r\n }\r\n if (!requested) return null;\r\n const custom = loadCustomTheme(workspace, requested);\r\n return custom ? { preference: requested, resolvedName: requested, tokens: custom } : null;\r\n}\r\n\r\nexport { DEFAULT_THEME };\r\nexport type { ThemeTokens };\r\n","/**\r\n * Theme token system matching Claude Code's color token architecture.\r\n * All values are Ink-compatible color strings (named colors, hex, rgb, ansi256, ansi:<name>).\r\n */\r\nexport interface ThemeTokens {\r\n /** Identity */\r\n brand: string;\r\n brandShimmer: string;\r\n\r\n /** Text */\r\n text: string;\r\n inverseText: string;\r\n inactive: string;\r\n subtle: string;\r\n suggestion: string;\r\n permission: string;\r\n remember: string;\r\n\r\n /** Shared TUI chrome */\r\n /**\r\n * Panel fill.\r\n *\r\n * Built-in components fill only *verbatim* content — a code block keeps\r\n * `mdCodeBackground`. Secondary content (expanded tool output, reasoning)\r\n * gets a left rail and nothing else, so no built-in currently renders this\r\n * token or `mdThinkBg`. Both stay in the contract for custom themes in\r\n * `.book/themes/*.json`.\r\n */\r\n surface: string;\r\n surfaceActive: string;\r\n border: string;\r\n selectionText: string;\r\n userAccent: string;\r\n assistantAccent: string;\r\n toolRail: string;\r\n\r\n /** Status */\r\n success: string;\r\n error: string;\r\n warning: string;\r\n merged: string;\r\n\r\n /** Mode borders */\r\n promptBorder: string;\r\n planMode: string;\r\n autoAccept: string;\r\n bashBorder: string;\r\n\r\n /** Permission mode colors (one per mode) */\r\n modeDefault: string;\r\n modePlan: string;\r\n modeAcceptEdits: string;\r\n modeAuto: string;\r\n modeDontAsk: string;\r\n modeBypass: string;\r\n\r\n /** Diff rendering */\r\n diffAdded: string;\r\n diffRemoved: string;\r\n diffAddedWord: string;\r\n diffRemovedWord: string;\r\n diffAddedDimmed: string;\r\n diffRemovedDimmed: string;\r\n\r\n /** Usage meter */\r\n usageMeter: string;\r\n usageMeterHigh: string;\r\n usageMeterCritical: string;\r\n\r\n /** Shimmer pairs for animated gradients */\r\n shimmerPair: [string, string];\r\n\r\n /** Subagent colors (8 named colors) */\r\n subagentColors: string[];\r\n\r\n /** Markdown rendering */\r\n mdCodeBackground: string;\r\n mdCodeBorder: string;\r\n mdCodeText: string;\r\n mdCodeKeyword: string;\r\n mdCodeString: string;\r\n mdCodeComment: string;\r\n mdCodeNumber: string;\r\n mdCodeFunction: string;\r\n mdCodeLineNumber: string;\r\n /**\r\n * Retained for custom theme files that still set it; inline code renders\r\n * with `mdInlineCodeText` alone and never paints a background.\r\n */\r\n mdInlineCodeBg: string;\r\n mdInlineCodeText: string;\r\n mdHeading: string;\r\n mdHeadingH1: string;\r\n mdHeadingH2: string;\r\n mdBlockquoteBorder: string;\r\n mdBlockquoteText: string;\r\n mdLink: string;\r\n mdListMarker: string;\r\n mdHr: string;\r\n mdTableBorder: string;\r\n mdThinkBg: string;\r\n mdThinkBorder: string;\r\n mdThinkText: string;\r\n mdTurnSeparator: string;\r\n mdCheckboxChecked: string;\r\n mdCheckboxUnchecked: string;\r\n\r\n /** User message background */\r\n userBg: string;\r\n}\r\n\r\n/**\r\n * Warm editorial dark palette.\r\n *\r\n * Roles are kept visually distinct on purpose: sage belongs to the agent, clay\r\n * to product chrome, teal to references, and the amber/rust/green trio to\r\n * status. A token that reuses another role's hue makes the two indistinguishable\r\n * on screen, which is exactly what this palette exists to prevent.\r\n */\r\nexport const DEFAULT_THEME: ThemeTokens = {\r\n brand: '#D3A17E',\r\n brandShimmer: '#E5BB9B',\r\n\r\n text: '#E7E1D4',\r\n inverseText: '#171815',\r\n inactive: '#6D6961',\r\n subtle: '#938E84',\r\n suggestion: '#7E7A72',\r\n permission: '#D1AA6C',\r\n remember: '#C09CAD',\r\n\r\n surface: '#20221D',\r\n surfaceActive: '#30362B',\r\n border: '#4B4D45',\r\n selectionText: '#F3EEE4',\r\n userAccent: '#D3A17E',\r\n assistantAccent: '#AFC19D',\r\n toolRail: '#5C6156',\r\n\r\n success: '#91B77C',\r\n error: '#D68174',\r\n warning: '#D1AA6C',\r\n merged: '#7FA89C',\r\n\r\n promptBorder: '#8C9A86',\r\n planMode: '#C09CAD',\r\n autoAccept: '#91B77C',\r\n bashBorder: '#D1AA6C',\r\n\r\n // `default` is the quiet mode: desaturated so the sage of an agent turn never\r\n // reads as a permission-mode signal.\r\n modeDefault: '#8C9A86',\r\n modePlan: '#C09CAD',\r\n modeAcceptEdits: '#91B77C',\r\n modeAuto: '#7FA89C',\r\n modeDontAsk: '#D68174',\r\n modeBypass: '#D1AA6C',\r\n\r\n diffAdded: '#243326',\r\n diffRemoved: '#382624',\r\n diffAddedWord: '#36523A',\r\n diffRemovedWord: '#5B3430',\r\n diffAddedDimmed: '#1D2B20',\r\n diffRemovedDimmed: '#302120',\r\n\r\n usageMeter: '#7FA89C',\r\n usageMeterHigh: '#D1AA6C',\r\n usageMeterCritical: '#D68174',\r\n\r\n // The spinner is the agent speaking, so it keeps the sage identity.\r\n shimmerPair: ['#AFC19D', '#C4D3B5'],\r\n\r\n subagentColors: [\r\n '#D68174',\r\n '#7FA89C',\r\n '#91B77C',\r\n '#D1AA6C',\r\n '#C09CAD',\r\n '#D3A17E',\r\n '#B88FA4',\r\n '#AFC19D',\r\n ],\r\n\r\n mdCodeBackground: '#1B1D1A',\r\n mdCodeBorder: '#3A3C36',\r\n mdCodeText: '#E7E1D4',\r\n mdCodeKeyword: '#C09CAD',\r\n mdCodeString: '#91B77C',\r\n mdCodeComment: '#6D6961',\r\n mdCodeNumber: '#D1AA6C',\r\n mdCodeFunction: '#7FA89C',\r\n mdCodeLineNumber: '#5C6156',\r\n mdInlineCodeBg: '#2B2C27',\r\n mdInlineCodeText: '#D3A17E',\r\n // A three-step brightness ramp, all bold. Depth is legible only if these\r\n // differ from each other *and* from `text` — otherwise a heading is\r\n // indistinguishable from a bold run in body copy.\r\n mdHeadingH1: '#F7F3EA',\r\n mdHeadingH2: '#EFEADC',\r\n mdHeading: '#B4AE9F',\r\n mdBlockquoteBorder: '#5C6156',\r\n mdBlockquoteText: '#938E84',\r\n mdLink: '#7FA89C',\r\n mdListMarker: '#8C9A86',\r\n mdHr: '#3A3C36',\r\n mdTableBorder: '#3A3C36',\r\n mdThinkBg: '#1E201C',\r\n mdThinkBorder: '#3A3C36',\r\n mdThinkText: '#7E7A72',\r\n mdTurnSeparator: '#4B4D45',\r\n mdCheckboxChecked: '#91B77C',\r\n mdCheckboxUnchecked: '#6D6961',\r\n\r\n userBg: '#262220',\r\n};\r\n"],"mappings":";AAAA,SAAS,eAAe,kBAAkB;;;ACuHnC,IAAM,gBAA6B;AAAA,EACxC,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA;AAAA,EAIZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA;AAAA,EAGpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAElC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIlB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;;;ADnNA,SAAS,cAAc,YAAY,mBAAmB;AACtD,SAAS,YAAY;AAGd,IAAM,aAA0B,EAAE,GAAG,cAAc;AAcnD,IAAM,cAA2B;AAAA,EACtC,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA;AAAA,EAIZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA;AAAA,EAGpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAElC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA;AAAA;AAAA,EAGlB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAOO,IAAM,cAA2B;AAAA,EACtC,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EAEpB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,aAAa,CAAC,WAAW,SAAS;AAAA,EAClC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAMO,IAAM,mBAAgC;AAAA,EAC3C,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EAEpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAClC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAMO,IAAM,aAA0B;AAAA,EACrC,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EAEpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAClC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAMO,IAAM,gBAA6B;AAAA,EACxC,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EAEpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAClC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAMO,IAAM,uBAAoC;AAAA,EAC/C,GAAG;AAAA,EACH,OAAO;AAAA,EACP,cAAc;AAAA,EAEd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,UAAU;AAAA,EAEV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,cAAc;AAAA,EACd,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EAEnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EAEpB,aAAa,CAAC,WAAW,SAAS;AAAA,EAClC,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EAErB,QAAQ;AACV;AAQA,IAAM,oBAAoB;AAOnB,IAAM,eAAe,cAA2B,aAAa;AAK7D,SAAS,WAAwB;AACtC,SAAO,WAAW,YAAY;AAChC;AAGO,SAAS,2BAA2B,YAAY,QAAQ,IAAI,aAAa,IAAa;AAC3F,QAAM,aAAa,OAAO,UAAU,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AACrD,SAAO,eAAe,KAAK,eAAe;AAC5C;AAGO,SAAS,iBAAiB,WAA6B;AAC5D,QAAM,YAAY,KAAK,WAAW,SAAS,QAAQ;AACnD,MAAI;AACF,WAAO,YAAY,WAAW,EAAE,eAAe,KAAK,CAAC,EAClD,OAAO,CAAC,UAAU,MAAM,OAAO,KAAK,MAAM,KAAK,SAAS,OAAO,CAAC,EAChE,IAAI,CAAC,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC,QAAQ,MAAM,CAAC,EACnD,OAAO,CAAC,SAAS,kBAAkB,KAAK,IAAI,CAAC,EAC7C,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,EACtC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAMO,SAAS,gBAAgB,WAAmB,MAAkC;AACnF,MAAI,CAAC,kBAAkB,KAAK,IAAI,EAAG,QAAO;AAC1C,QAAM,YAAY,KAAK,WAAW,SAAS,UAAU,GAAG,IAAI,OAAO;AACnE,MAAI,CAAC,WAAW,SAAS,EAAG,QAAO;AACnC,MAAI;AACF,UAAM,MAAM,aAAa,WAAW,OAAO;AAC3C,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,WAAO,EAAE,GAAG,eAAe,GAAG,OAAO;AAAA,EACvC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,aACd,WACA,YACA,YAAY,QAAQ,IAAI,aAAa,IACf;AACtB,QAAM,YAAY,WAAW,KAAK;AAClC,QAAM,UAAU,UAAU,YAAY;AACtC,MAAI,YAAY,WAAW,YAAY,cAAc;AACnD,WAAO,EAAE,YAAY,SAAS,cAAc,SAAS,QAAQ,YAAY;AAAA,EAC3E;AACA,MAAI,YAAY,QAAQ;AACtB,WAAO,EAAE,YAAY,QAAQ,cAAc,QAAQ,QAAQ,WAAW;AAAA,EACxE;AACA,MAAI,YAAY,SAAS;AACvB,WAAO,EAAE,YAAY,SAAS,cAAc,SAAS,QAAQ,YAAY;AAAA,EAC3E;AACA,MAAI,YAAY,QAAQ;AAGtB,UAAM,UAAU,2BAA2B,SAAS;AACpD,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,cAAc,UAAU,UAAU;AAAA,MAClC,QAAQ,UAAU,cAAc;AAAA,IAClC;AAAA,EACF;AACA,MAAI,YAAY,gBAAgB,YAAY,sBAAsB,YAAY,SAAS;AACrF,WAAO,EAAE,YAAY,cAAc,cAAc,cAAc,QAAQ,iBAAiB;AAAA,EAC1F;AACA,MAAI,YAAY,QAAQ;AACtB,WAAO,EAAE,YAAY,QAAQ,cAAc,QAAQ,QAAQ,WAAW;AAAA,EACxE;AACA,MAAI,YAAY,aAAa,YAAY,gBAAgB;AACvD,WAAO,EAAE,YAAY,WAAW,cAAc,WAAW,QAAQ,cAAc;AAAA,EACjF;AACA,MAAI,YAAY,oBAAoB,YAAY,aAAa;AAC3D,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,EACF;AACA,MAAI,CAAC,UAAW,QAAO;AACvB,QAAM,SAAS,gBAAgB,WAAW,SAAS;AACnD,SAAO,SAAS,EAAE,YAAY,WAAW,cAAc,WAAW,QAAQ,OAAO,IAAI;AACvF;","names":[]}
|