nolo-cli 0.212.0-alpha.1 → 0.222.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/{_executeModel-KE6MBNUJ.js → _executeModel-4GGQQHOB.js} +111 -82
- package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
- package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
- package/{addContentAction-N2YC5IL3.js → addContentAction-GDHDOF4U.js} +18 -17
- package/{addDialogAgentAction-3NKVQCEC.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
- package/{agentDeleteCommand-NWK7VU4N.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
- package/{agentEmailCommands-UZ4DHEX2.js → agentEmailCommands-EJOS75YL.js} +132 -124
- package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
- package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
- package/{agentListCommands-HE7L2A6L.js → agentListCommands-HIZODBF3.js} +196 -124
- package/{agentMachineCommands-6TE4MBMP.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -53
- package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
- package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
- package/agentRecordCommands-OMXVDLDX.js +176 -0
- package/agentRunCommand-CB34YWMV.js +206 -0
- package/{agentRunControl-OI3LOENH.js → agentRunControl-JNONH3RP.js} +30 -15
- package/{agentRuntimeLocal-HL526DNQ.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
- package/{agentSlice-TMYP2UEA.js → agentSlice-RD2CDU7T.js} +20 -19
- package/{appDeleteCommands-ZERW4AXY.js → appDeleteCommands-QCCFDIEQ.js} +61 -52
- package/{appDeployCommands-DUWSMYHL.js → appDeployCommands-V2T7TNMQ.js} +61 -52
- package/{appDeployStatusCommands-N2KIE4BF.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -52
- package/{appGetCommands-YVR4NPVY.js → appGetCommands-3L7WWJA6.js} +61 -52
- package/{appListCommands-JS6HOHZS.js → appListCommands-ENJCK4PO.js} +61 -52
- package/{authCommand-FE2C3ZUM.js → authCommand-6V47SYGK.js} +29 -28
- package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
- package/{builtinSkillRegistry-3YOIGEF6.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
- package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
- package/{chromeOpsCommands-HEN5AX2J.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
- package/{chunk-DM6UMOEL.js → chunk-27PCUMJI.js} +2 -2
- package/chunk-2CI3ZFWD.js +97 -0
- package/{chunk-HIRC32DV.js → chunk-2GJKRKI6.js} +543 -29
- package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
- package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
- package/chunk-2YGBI2XB.js +30 -0
- package/chunk-2ZKFCIJJ.js +13 -0
- package/{chunk-CJRONOYL.js → chunk-34J5K2YA.js} +19 -75
- package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
- package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
- package/chunk-44X52WOJ.js +1621 -0
- package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
- package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
- package/chunk-5CHGAKRT.js +364 -0
- package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
- package/{chunk-LKDF3ATR.js → chunk-5RKUPJYL.js} +1 -1
- package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
- package/{chunk-IF45XG7K.js → chunk-6WU5572L.js} +40 -24
- package/{chunk-OHNELDTO.js → chunk-7EEZJ6BS.js} +11 -152
- package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
- package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
- package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
- package/{chunk-IIQ6JGRI.js → chunk-AD5EWDFD.js} +2 -2
- package/{chunk-WXYLV624.js → chunk-AIHYNKGV.js} +4 -4
- package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
- package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
- package/{chunk-PJNFNEJE.js → chunk-AMEOV5VZ.js} +59 -13
- package/chunk-AN74ON4G.js +675 -0
- package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
- package/{chunk-CQ46IRNN.js → chunk-B4GOW4MT.js} +445 -201
- package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
- package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
- package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
- package/{chunk-D2MDMY2M.js → chunk-BV3FLP2L.js} +47 -1
- package/{chunk-25JZEIXN.js → chunk-C4VAR65S.js} +92 -150
- package/{chunk-AVTVGMDY.js → chunk-C4WTX5TU.js} +2 -2
- package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
- package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
- package/{chunk-M6RL5JCD.js → chunk-CMZ3Z5PT.js} +14 -14
- package/{secretCommands-4QS3HCA2.js → chunk-D726I5AZ.js} +191 -16
- package/{chunk-INSBKSBB.js → chunk-DNKTQ3IN.js} +4 -4
- package/chunk-DVQH4BTR.js +1137 -0
- package/{chunk-SOHTHFV2.js → chunk-DWX2HEVC.js} +91 -132
- package/{chunk-NOMIGOST.js → chunk-EIAI3PPH.js} +116 -124
- package/chunk-EUCFKKDM.js +247 -0
- package/chunk-EWQ3HGNZ.js +90 -0
- package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
- package/{chunk-GSQNH63I.js → chunk-FIYSMXHY.js} +3 -19
- package/{chunk-KSTEXKL6.js → chunk-FJ23FZXF.js} +76 -31
- package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
- package/chunk-FS2XP5D7.js +142 -0
- package/{chunk-QT6PKHYJ.js → chunk-FYF2TONJ.js} +5 -5
- package/{chunk-OXME3PEE.js → chunk-GBWGPTA7.js} +2 -1
- package/{chunk-RU4SD66C.js → chunk-GYVCJABP.js} +30 -254
- package/{chunk-YUXQAVRD.js → chunk-HOCHUZQ7.js} +257 -90
- package/{chunk-Y2WUYX4I.js → chunk-HXER7YJF.js} +4 -4
- package/chunk-HYIETXA6.js +99 -0
- package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
- package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
- package/{chunk-5RYBGBQH.js → chunk-IILMY4W4.js} +14 -9
- package/chunk-JA3ICVJY.js +271 -0
- package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
- package/{chunk-JNKSDZFS.js → chunk-KEN3N2TN.js} +310 -66
- package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
- package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
- package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
- package/chunk-LKA64WH4.js +227 -0
- package/{chunk-6OQUPIQF.js → chunk-LVL6GFCM.js} +4 -4
- package/{chunk-UTV2AYEG.js → chunk-MAIITKBT.js} +2 -2
- package/chunk-MBG66ZBH.js +226 -0
- package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
- package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
- package/{chunk-B7NJ3T4A.js → chunk-MS4NZNKI.js} +10 -10
- package/{chunk-3AKFVZ2I.js → chunk-MYHNBEXD.js} +3 -3
- package/{chunk-VZKUKCA6.js → chunk-MZLE5HQ3.js} +3673 -241
- package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
- package/chunk-NIZ2BXFD.js +526 -0
- package/{chunk-YPD3VJZW.js → chunk-NWP2OYOX.js} +20 -20
- package/{chunk-3FOQHGHN.js → chunk-O6J3OTOP.js} +4 -4
- package/{chunk-3RQVYR4B.js → chunk-OB6DVWPF.js} +197 -65
- package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
- package/{chunk-5AQR3DGV.js → chunk-ODJ7BVSI.js} +80 -11
- package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
- package/{chunk-GNDJKC4B.js → chunk-ON37YXGX.js} +29 -29
- package/{chunk-D5RCRX4A.js → chunk-P5ZJRTCH.js} +9415 -5169
- package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
- package/{chunk-EZFQ6XRV.js → chunk-PJCIP64Z.js} +861 -59
- package/{chunk-GPO7FCEZ.js → chunk-PJVKMGPZ.js} +1222 -1719
- package/{chunk-CKAHAVMK.js → chunk-PPJYZRSQ.js} +40 -26
- package/chunk-QHEN7NZ7.js +46 -0
- package/{chunk-4KH4J3G5.js → chunk-QNWG52I4.js} +19 -7
- package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
- package/chunk-RDH5CQ4T.js +1382 -0
- package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
- package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
- package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
- package/{chunk-IAPCBNEE.js → chunk-SQYIK6HO.js} +1 -1
- package/{chunk-22CIEBYO.js → chunk-SVT62ULE.js} +50 -48
- package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
- package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
- package/{chunk-6NSSLV67.js → chunk-T6DXNI6Z.js} +52 -50
- package/chunk-TLE77UJ5.js +230 -0
- package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
- package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
- package/{chunk-MMNYUVLW.js → chunk-UB3D4TRQ.js} +11 -77
- package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
- package/{chunk-YOIW77S2.js → chunk-UYOICCYG.js} +29 -19
- package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
- package/{chunk-JIT6FSXJ.js → chunk-WAE3GFCJ.js} +3 -3
- package/{chunk-IJXYFTV7.js → chunk-WI67URFP.js} +20 -20
- package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
- package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
- package/{chunk-YJMRHHGY.js → chunk-WUUH4LWZ.js} +60 -30
- package/{chunk-PDGKOTO7.js → chunk-X7UF53VA.js} +33 -22
- package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
- package/{chunk-OOF4UPC5.js → chunk-XWVCYUUU.js} +16 -159
- package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
- package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
- package/chunk-YL3EFYL3.js +199 -0
- package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
- package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
- package/{chunk-NJR3WKVP.js → chunk-YWWDC3O7.js} +281 -159
- package/chunk-YZMNK53S.js +68 -0
- package/{chunk-FHU44LN3.js → chunk-Z2PITYZN.js} +2179 -552
- package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
- package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
- package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
- package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
- package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
- package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
- package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
- package/{commandRegistry-VVMTPFAX.js → commandRegistry-5DA5UP7S.js} +106 -98
- package/{contentThunks-N52O67MI.js → contentThunks-5GUQ7FWJ.js} +47 -43
- package/{cooldownCommands-YXLWOXWR.js → cooldownCommands-X7P5M2V5.js} +5 -4
- package/{createAgentAutomationAction-ZC57YRSV.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
- package/{createDialogAction-VQW5WDYX.js → createDialogAction-UPN774AF.js} +46 -48
- package/{createPageAction-M5VDA7SC.js → createPageAction-JRQ2TA4O.js} +50 -48
- package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
- package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
- package/{dbSlice-HP7G4LX3.js → dbSlice-WNON7TOL.js} +17 -16
- package/{deleteFile-7VQGLK2V.js → deleteFile-Q3YDB4ML.js} +9 -9
- package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
- package/{dialogCommands-JHMR2N2Y.js → dialogCommands-VRI7VCXH.js} +64 -57
- package/dialogNotifyCommand-6TMCX4D2.js +36 -0
- package/{dialogSlice-GRSVGDTF.js → dialogSlice-LFNVUSAN.js} +42 -40
- package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
- package/{docCreateCommands-F2K3UPSQ.js → docCreateCommands-AMPXMOX3.js} +61 -54
- package/{docDeleteCommands-XGXB5RFT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
- package/{docReadCommands-7HWZZV6J.js → docReadCommands-X53ELNIE.js} +61 -54
- package/{docStore-KNZK6Y2G.js → docStore-2VAWVLWH.js} +21 -20
- package/{docUpdateCommands-OZZ7NQII.js → docUpdateCommands-6QPNDC7M.js} +64 -57
- package/{fetchMessages-M3QU7ZCQ.js → fetchMessages-TQEUZD7H.js} +8 -7
- package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
- package/{handleSendMessageAction-SHIH74GJ.js → handleSendMessageAction-AAJOHXOB.js} +193 -301
- package/{hostCredentialCreate-X64WK4JD.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
- package/index.js +29 -29
- package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
- package/legacyMigration-TF4SYJCZ.js +19 -0
- package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
- package/{localDialogRead-XRLAH4CZ.js → localDialogRead-SVTPA5GY.js} +3 -3
- package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
- package/localRecall-2J6QPOK2.js +15 -0
- package/{localRuntimeAdapter-A7K3ABA6.js → localRuntimeAdapter-BMP57P42.js} +119 -110
- package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
- package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
- package/{machineCommands-DE3MR7CJ.js → machineCommands-3MLIAK5Q.js} +128 -119
- package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
- package/machineWsRunDispatch-FKIGROQF.js +191 -0
- package/{memberThunks-7WJAY5V6.js → memberThunks-ZGLZ36PK.js} +29 -28
- package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
- package/models-ULVWLSQ6.js +9 -0
- package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
- package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
- package/overlay-THLKYIWY.js +11 -0
- package/package.json +2 -2
- package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
- package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
- package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
- package/{projectArchive-GGL5HLMD.js → projectArchive-HK63GMF4.js} +52 -50
- package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
- package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
- package/{read-4VZQODSN.js → read-MRQHJMJ2.js} +10 -10
- package/{readDocTool-AVD32RUJ.js → readDocTool-4BGTXTXA.js} +2 -2
- package/{readlineWorkspace-XKYKNL2I.js → readlineWorkspace-AKAHSCNY.js} +6505 -4634
- package/{removeDialogAgentAction-FKL4BYMR.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
- package/{runAgentClientLoop-V7E2WBVM.js → runAgentClientLoop-UVAWGEON.js} +81 -79
- package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
- package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
- package/secretCommands-LJXOOYA7.js +24 -0
- package/{setDialogExtraReferencesAction-TLIOLWWI.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
- package/{setPrimaryDialogAgentAction-2OLWRFYR.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
- package/{settingThunks-UGBPCNYF.js → settingThunks-ENOAK2WV.js} +97 -88
- package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
- package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
- package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
- package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
- package/{spaceCommands-4KSLKVNF.js → spaceCommands-DTTNAS2L.js} +61 -53
- package/store-JRVN62NM.js +46 -0
- package/{streamAgentChatTurn-7FR7X2NU.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
- package/{switchDialogAgentAction-UZSAG2N5.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
- package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
- package/tombstones-FQQMEDOW.js +32 -0
- package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
- package/{tools-ZLKCC25W.js → tools-HWFG6GMJ.js} +75 -74
- package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
- package/{updateCommands-4744PL3P.js → updateCommands-RJVCRSBP.js} +10 -8
- package/{updateDialogTitleAction-U53ZT7PJ.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
- package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
- package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
- package/userDataMerge-HT2ZVHBJ.js +13 -0
- package/{windowsSelfUpdate-XSQVF2GK.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
- package/{workloadLifecycle-4BEQHMSD.js → workloadLifecycle-DYNEYHV5.js} +7 -6
- package/agentRecordCommands-L3QQ7HZ4.js +0 -167
- package/agentRunCommand-2IFGQHCO.js +0 -196
- package/chunk-3CGG2PAL.js +0 -594
- package/chunk-5XBUWM6I.js +0 -89
- package/chunk-BFM34N54.js +0 -842
- package/chunk-CJEIOP3E.js +0 -0
- package/chunk-CZM5YTZ7.js +0 -977
- package/chunk-EYUBHHFB.js +0 -636
- package/chunk-JTDORD5P.js +0 -415
- package/chunk-NRFKLKRU.js +0 -339
- package/chunk-VPAZOH2D.js +0 -115
- package/chunk-WJZOQR2J.js +0 -151
- package/chunk-ZCWRMUWT.js +0 -89
- package/dist-M676ULYG.js +0 -7314
- package/machineWsRunDispatch-R26P5V36.js +0 -182
- package/models-PJBE6JDV.js +0 -9
- package/tuiSummaryLlmCaller-WC54MVGP.js +0 -160
- package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
- package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
- package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
- package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
- package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
|
@@ -11,26 +11,902 @@ import {
|
|
|
11
11
|
getAntigravityUserAgent,
|
|
12
12
|
normalizeAntigravityTokenPayload,
|
|
13
13
|
refreshAntigravityToken
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-SY3C4SQ7.js";
|
|
15
|
+
import {
|
|
16
|
+
buildEnvFromProfile,
|
|
17
|
+
loadProfileConfig
|
|
18
|
+
} from "./chunk-R5GO3YZP.js";
|
|
19
|
+
import {
|
|
20
|
+
getCliLocale
|
|
21
|
+
} from "./chunk-OB6DVWPF.js";
|
|
15
22
|
import {
|
|
16
23
|
toErrorMessage
|
|
17
24
|
} from "./chunk-HNMXYYJR.js";
|
|
25
|
+
import {
|
|
26
|
+
asTrimmedString
|
|
27
|
+
} from "./chunk-3EUW3WEO.js";
|
|
18
28
|
import {
|
|
19
29
|
isRecord
|
|
20
30
|
} from "./chunk-KUG52IAP.js";
|
|
21
|
-
import {
|
|
22
|
-
buildEnvFromProfile,
|
|
23
|
-
loadProfileConfig
|
|
24
|
-
} from "./chunk-R5GO3YZP.js";
|
|
25
|
-
import {
|
|
26
|
-
writeOAuthCredential
|
|
27
|
-
} from "./chunk-G7Y4GXTY.js";
|
|
28
31
|
import {
|
|
29
32
|
asOptionalFiniteNumber
|
|
30
33
|
} from "./chunk-WWC7I6TA.js";
|
|
31
34
|
import {
|
|
32
|
-
|
|
33
|
-
} from "./chunk-
|
|
35
|
+
writeOAuthCredential
|
|
36
|
+
} from "./chunk-G7Y4GXTY.js";
|
|
37
|
+
|
|
38
|
+
// packages/cli/tui/wtAmbiguousWidth.ts
|
|
39
|
+
import fs from "node:fs";
|
|
40
|
+
import path from "node:path";
|
|
41
|
+
var WT_PACKAGE_NAMES = [
|
|
42
|
+
"Microsoft.WindowsTerminal_8wekyb3d8bbwe",
|
|
43
|
+
"Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe"
|
|
44
|
+
];
|
|
45
|
+
function wtSettingsCandidates(env = process.env) {
|
|
46
|
+
const localAppData = env.LOCALAPPDATA;
|
|
47
|
+
if (typeof localAppData !== "string" || localAppData.trim() === "") return [];
|
|
48
|
+
return WT_PACKAGE_NAMES.map(
|
|
49
|
+
(name) => path.join(localAppData, "Packages", name, "LocalState", "settings.json")
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
function stripJsonComments(text) {
|
|
53
|
+
let out = "";
|
|
54
|
+
let inString = false;
|
|
55
|
+
let inLineComment = false;
|
|
56
|
+
let inBlockComment = false;
|
|
57
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
58
|
+
const ch = text[i];
|
|
59
|
+
const next = text[i + 1];
|
|
60
|
+
if (inLineComment) {
|
|
61
|
+
if (ch === "\n") {
|
|
62
|
+
inLineComment = false;
|
|
63
|
+
out += ch;
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (inBlockComment) {
|
|
68
|
+
if (ch === "*" && next === "/") {
|
|
69
|
+
inBlockComment = false;
|
|
70
|
+
i += 1;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (inString) {
|
|
75
|
+
out += ch;
|
|
76
|
+
if (ch === "\\") {
|
|
77
|
+
out += next ?? "";
|
|
78
|
+
i += 1;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (ch === '"') inString = false;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (ch === '"') {
|
|
85
|
+
inString = true;
|
|
86
|
+
out += ch;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (ch === "/" && next === "/") {
|
|
90
|
+
inLineComment = true;
|
|
91
|
+
i += 1;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (ch === "/" && next === "*") {
|
|
95
|
+
inBlockComment = true;
|
|
96
|
+
i += 1;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
out += ch;
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function parseAmbiguousWidthSetting(text) {
|
|
104
|
+
const active = stripJsonComments(text);
|
|
105
|
+
const match = active.match(/"(?:[A-Za-z0-9_]+\.)?ambiguousWidth"\s*:\s*"([A-Za-z]+)"/);
|
|
106
|
+
if (!match) return null;
|
|
107
|
+
const value = match[1].toLowerCase();
|
|
108
|
+
if (value === "wide") return "wide";
|
|
109
|
+
if (value === "narrow") return "narrow";
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
function detectWindowsTerminalAmbiguousWidth(deps = {}) {
|
|
113
|
+
const platform = deps.platform ?? process.platform;
|
|
114
|
+
if (platform !== "win32") return null;
|
|
115
|
+
const env = deps.env ?? process.env;
|
|
116
|
+
const readFile = deps.readFile ?? ((filePath) => {
|
|
117
|
+
try {
|
|
118
|
+
return fs.readFileSync(filePath, "utf8");
|
|
119
|
+
} catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
for (const candidate of wtSettingsCandidates(env)) {
|
|
124
|
+
const text = readFile(candidate);
|
|
125
|
+
if (text === null) continue;
|
|
126
|
+
const parsed = parseAmbiguousWidthSetting(text);
|
|
127
|
+
return parsed ?? "narrow";
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// node_modules/ansi-regex/index.js
|
|
133
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
134
|
+
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
135
|
+
const osc = `(?:\\u001B\\][^\\u0007\\u001B\\u009C]*${ST})`;
|
|
136
|
+
const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
|
|
137
|
+
const pattern = `${osc}|${csi}`;
|
|
138
|
+
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// node_modules/strip-ansi/index.js
|
|
142
|
+
var regex = ansiRegex();
|
|
143
|
+
function stripAnsi(string) {
|
|
144
|
+
if (typeof string !== "string") {
|
|
145
|
+
throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
146
|
+
}
|
|
147
|
+
if (!string.includes("\x1B") && !string.includes("\x9B")) {
|
|
148
|
+
return string;
|
|
149
|
+
}
|
|
150
|
+
return string.replace(regex, "");
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// node_modules/get-east-asian-width/lookup-data.js
|
|
154
|
+
var ambiguousMinimalCodePoint = 161;
|
|
155
|
+
var ambiguousMaximumCodePoint = 1114109;
|
|
156
|
+
var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
|
|
157
|
+
var fullwidthMinimalCodePoint = 12288;
|
|
158
|
+
var fullwidthMaximumCodePoint = 65510;
|
|
159
|
+
var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
160
|
+
var wideMinimalCodePoint = 4352;
|
|
161
|
+
var wideMaximumCodePoint = 262141;
|
|
162
|
+
var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101594, 101631, 101664, 101760, 101874, 101888, 102801, 102816, 102866, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110888, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110952, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127406, 127406, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128729, 128732, 128735, 128747, 128748, 128756, 128764, 128986, 128986, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129734, 129736, 129736, 129740, 129757, 129759, 129771, 129775, 129786, 131072, 196605, 196608, 262141];
|
|
163
|
+
|
|
164
|
+
// node_modules/get-east-asian-width/utilities.js
|
|
165
|
+
var isInRange = (ranges, codePoint) => {
|
|
166
|
+
let low = 0;
|
|
167
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
168
|
+
while (low <= high) {
|
|
169
|
+
const mid = Math.floor((low + high) / 2);
|
|
170
|
+
const i = mid * 2;
|
|
171
|
+
if (codePoint < ranges[i]) {
|
|
172
|
+
high = mid - 1;
|
|
173
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
174
|
+
low = mid + 1;
|
|
175
|
+
} else {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// node_modules/get-east-asian-width/lookup.js
|
|
183
|
+
var commonCjkCodePoint = 19968;
|
|
184
|
+
var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
|
|
185
|
+
function findWideFastPathRange(ranges) {
|
|
186
|
+
let fastPathStart = ranges[0];
|
|
187
|
+
let fastPathEnd = ranges[1];
|
|
188
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
189
|
+
const start = ranges[index];
|
|
190
|
+
const end = ranges[index + 1];
|
|
191
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
192
|
+
return [start, end];
|
|
193
|
+
}
|
|
194
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
195
|
+
fastPathStart = start;
|
|
196
|
+
fastPathEnd = end;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return [fastPathStart, fastPathEnd];
|
|
200
|
+
}
|
|
201
|
+
var isAmbiguous = (codePoint) => {
|
|
202
|
+
if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
206
|
+
};
|
|
207
|
+
var isFullwidth = (codePoint) => {
|
|
208
|
+
if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
212
|
+
};
|
|
213
|
+
var isWide = (codePoint) => {
|
|
214
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
return isInRange(wideRanges, codePoint);
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
// node_modules/get-east-asian-width/index.js
|
|
224
|
+
function validate(codePoint) {
|
|
225
|
+
if (!Number.isSafeInteger(codePoint)) {
|
|
226
|
+
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
230
|
+
validate(codePoint);
|
|
231
|
+
if (isFullwidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
|
|
232
|
+
return 2;
|
|
233
|
+
}
|
|
234
|
+
return 1;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// node_modules/string-width/index.js
|
|
238
|
+
var segmenter = new Intl.Segmenter();
|
|
239
|
+
var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
|
|
240
|
+
var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
|
|
241
|
+
var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
|
|
242
|
+
var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
|
|
243
|
+
var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
|
|
244
|
+
var extendedPictographicRegex = new RegExp("\\p{Extended_Pictographic}", "gu");
|
|
245
|
+
function isDoubleWidthNonRgiEmojiSequence(segment) {
|
|
246
|
+
if (segment.length > 50) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
if (unqualifiedKeycapRegex.test(segment)) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
if (segment.includes("\u200D")) {
|
|
253
|
+
const pictographics = segment.match(extendedPictographicRegex);
|
|
254
|
+
return pictographics !== null && pictographics.length >= 2;
|
|
255
|
+
}
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
function baseVisible(segment) {
|
|
259
|
+
return segment.replace(leadingNonPrintingRegex, "");
|
|
260
|
+
}
|
|
261
|
+
function isZeroWidthCluster(segment) {
|
|
262
|
+
return zeroWidthClusterRegex.test(segment);
|
|
263
|
+
}
|
|
264
|
+
function isHangulLeadingJamo(codePoint) {
|
|
265
|
+
return codePoint >= 4352 && codePoint <= 4447 || codePoint >= 43360 && codePoint <= 43388;
|
|
266
|
+
}
|
|
267
|
+
function isHangulVowelJamo(codePoint) {
|
|
268
|
+
return codePoint >= 4448 && codePoint <= 4519 || codePoint >= 55216 && codePoint <= 55238;
|
|
269
|
+
}
|
|
270
|
+
function isHangulTrailingJamo(codePoint) {
|
|
271
|
+
return codePoint >= 4520 && codePoint <= 4607 || codePoint >= 55243 && codePoint <= 55291;
|
|
272
|
+
}
|
|
273
|
+
function isHangulJamo(codePoint) {
|
|
274
|
+
return isHangulLeadingJamo(codePoint) || isHangulVowelJamo(codePoint) || isHangulTrailingJamo(codePoint);
|
|
275
|
+
}
|
|
276
|
+
function hangulClusterWidth(visibleSegment, eastAsianWidthOptions) {
|
|
277
|
+
const codePoints = [];
|
|
278
|
+
for (const character of visibleSegment) {
|
|
279
|
+
if (zeroWidthClusterRegex.test(character)) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
codePoints.push(character.codePointAt(0));
|
|
283
|
+
}
|
|
284
|
+
if (codePoints.length === 0) {
|
|
285
|
+
return void 0;
|
|
286
|
+
}
|
|
287
|
+
let width = 0;
|
|
288
|
+
for (let index = 0; index < codePoints.length; index++) {
|
|
289
|
+
const codePoint = codePoints[index];
|
|
290
|
+
if (!isHangulJamo(codePoint)) {
|
|
291
|
+
if (width === 0) {
|
|
292
|
+
return void 0;
|
|
293
|
+
}
|
|
294
|
+
for (let remaining = index; remaining < codePoints.length; remaining++) {
|
|
295
|
+
width += eastAsianWidth(codePoints[remaining], eastAsianWidthOptions);
|
|
296
|
+
}
|
|
297
|
+
return width;
|
|
298
|
+
}
|
|
299
|
+
if (isHangulLeadingJamo(codePoint) && isHangulVowelJamo(codePoints[index + 1])) {
|
|
300
|
+
width += 2;
|
|
301
|
+
index += isHangulTrailingJamo(codePoints[index + 2]) ? 2 : 1;
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
305
|
+
}
|
|
306
|
+
return width;
|
|
307
|
+
}
|
|
308
|
+
function trailingWidth(visibleSegment, eastAsianWidthOptions) {
|
|
309
|
+
let extra = 0;
|
|
310
|
+
let first = true;
|
|
311
|
+
for (const character of visibleSegment) {
|
|
312
|
+
if (first) {
|
|
313
|
+
first = false;
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
if (spacingMarkRegex.test(character) || character >= "\uFF00" && character <= "\uFFEF") {
|
|
317
|
+
extra += eastAsianWidth(character.codePointAt(0), eastAsianWidthOptions);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return extra;
|
|
321
|
+
}
|
|
322
|
+
function stringWidth(input, options = {}) {
|
|
323
|
+
if (typeof input !== "string" || input.length === 0) {
|
|
324
|
+
return 0;
|
|
325
|
+
}
|
|
326
|
+
const {
|
|
327
|
+
ambiguousIsNarrow = true,
|
|
328
|
+
countAnsiEscapeCodes = false
|
|
329
|
+
} = options;
|
|
330
|
+
let string = input;
|
|
331
|
+
if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("\x9B"))) {
|
|
332
|
+
string = stripAnsi(string);
|
|
333
|
+
}
|
|
334
|
+
if (string.length === 0) {
|
|
335
|
+
return 0;
|
|
336
|
+
}
|
|
337
|
+
if (/^[\u0020-\u007E]*$/.test(string)) {
|
|
338
|
+
return string.length;
|
|
339
|
+
}
|
|
340
|
+
let width = 0;
|
|
341
|
+
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
342
|
+
for (const { segment } of segmenter.segment(string)) {
|
|
343
|
+
if (isZeroWidthCluster(segment)) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
|
|
347
|
+
width += 2;
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
const visibleSegment = baseVisible(segment);
|
|
351
|
+
const hangulWidth = hangulClusterWidth(visibleSegment, eastAsianWidthOptions);
|
|
352
|
+
if (hangulWidth !== void 0) {
|
|
353
|
+
width += hangulWidth;
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
356
|
+
const codePoint = visibleSegment.codePointAt(0);
|
|
357
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
358
|
+
width += trailingWidth(visibleSegment, eastAsianWidthOptions);
|
|
359
|
+
}
|
|
360
|
+
return width;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// packages/cli/tui/tuiAnsi.ts
|
|
364
|
+
var ANSI_ESCAPE_REGEX = /\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g;
|
|
365
|
+
var OSC8_HYPERLINK_REGEX = /\x1b\]8;;[^\x1b]*\x1b\\/g;
|
|
366
|
+
var ALL_ANSI_ESCAPE_REGEX = ansiRegex();
|
|
367
|
+
var FIRST_ANSI_ESCAPE_REGEX = ansiRegex({ onlyFirst: true });
|
|
368
|
+
function stripOsc8Hyperlinks(text) {
|
|
369
|
+
return text.replace(OSC8_HYPERLINK_REGEX, "");
|
|
370
|
+
}
|
|
371
|
+
function stripAnsi2(text) {
|
|
372
|
+
return text.replace(ANSI_ESCAPE_REGEX, "").replace(ALL_ANSI_ESCAPE_REGEX, "");
|
|
373
|
+
}
|
|
374
|
+
var SGR_SEQUENCE_REGEX = /^\x1b\[[0-9;]*m/;
|
|
375
|
+
var TRAILING_SGR_REGEX = /(?:\x1b\[[0-9;]*m)+$/;
|
|
376
|
+
function applyTerminalOutputToText(existing, chunk) {
|
|
377
|
+
if (!chunk) return existing;
|
|
378
|
+
let text = existing;
|
|
379
|
+
let index = 0;
|
|
380
|
+
while (index < chunk.length) {
|
|
381
|
+
if (chunk[index] === "\x1B") {
|
|
382
|
+
const sgr = SGR_SEQUENCE_REGEX.exec(chunk.slice(index));
|
|
383
|
+
if (sgr) {
|
|
384
|
+
text += sgr[0];
|
|
385
|
+
index += sgr[0].length;
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
const osc = chunk.slice(index).match(/^\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)/);
|
|
389
|
+
if (osc) {
|
|
390
|
+
index += osc[0].length;
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
const csi = chunk.slice(index).match(/^\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/);
|
|
394
|
+
if (csi) {
|
|
395
|
+
index += csi[0].length;
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
index += 1;
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
const ch = chunk[index];
|
|
402
|
+
if (ch === "\r") {
|
|
403
|
+
const lastNl = text.lastIndexOf("\n");
|
|
404
|
+
text = lastNl === -1 ? "" : text.slice(0, lastNl + 1);
|
|
405
|
+
index += 1;
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
if (ch === "\n") {
|
|
409
|
+
text += "\n";
|
|
410
|
+
index += 1;
|
|
411
|
+
continue;
|
|
412
|
+
}
|
|
413
|
+
if (ch === "\b") {
|
|
414
|
+
const trailing = TRAILING_SGR_REGEX.exec(text);
|
|
415
|
+
const sgrTail = trailing ? trailing[0] : "";
|
|
416
|
+
const head = sgrTail ? text.slice(0, -sgrTail.length) : text;
|
|
417
|
+
if (head.length > 0 && head[head.length - 1] !== "\n") {
|
|
418
|
+
text = head.slice(0, -1) + sgrTail;
|
|
419
|
+
}
|
|
420
|
+
index += 1;
|
|
421
|
+
continue;
|
|
422
|
+
}
|
|
423
|
+
const code = ch.charCodeAt(0);
|
|
424
|
+
if (code < 32 && ch !== " " || code === 127) {
|
|
425
|
+
index += 1;
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
text += ch;
|
|
429
|
+
index += 1;
|
|
430
|
+
}
|
|
431
|
+
return text;
|
|
432
|
+
}
|
|
433
|
+
function resolveAmbiguousWidth(explicit, env = process.env) {
|
|
434
|
+
if (explicit === "wide" || explicit === "narrow") return explicit;
|
|
435
|
+
const raw = env.NOLO_TUI_AMBIGUOUS_WIDTH;
|
|
436
|
+
if (typeof raw === "string") {
|
|
437
|
+
const trimmed = raw.trim().toLowerCase();
|
|
438
|
+
if (trimmed === "wide") return "wide";
|
|
439
|
+
if (trimmed === "narrow") return "narrow";
|
|
440
|
+
}
|
|
441
|
+
return detectedWindowsTerminalAmbiguousWidth() ?? "narrow";
|
|
442
|
+
}
|
|
443
|
+
var wtAmbiguousWidthCache;
|
|
444
|
+
function detectedWindowsTerminalAmbiguousWidth() {
|
|
445
|
+
if (wtAmbiguousWidthCache === void 0) {
|
|
446
|
+
wtAmbiguousWidthCache = detectWindowsTerminalAmbiguousWidth();
|
|
447
|
+
}
|
|
448
|
+
return wtAmbiguousWidthCache;
|
|
449
|
+
}
|
|
450
|
+
function isCjkFontWideSymbolCode(code) {
|
|
451
|
+
return code >= 9728 && code <= 10175 && !(code >= 10088 && code <= 10101) || code >= 11008 && code <= 11263 || code >= 127744 && code <= 129791 || code >= 8986 && code <= 8987 || // ⌚ ⌛
|
|
452
|
+
code >= 9193 && code <= 9210;
|
|
453
|
+
}
|
|
454
|
+
function isCjkQuoteCode(code) {
|
|
455
|
+
return code === 8220 || code === 8221 || code === 8216 || code === 8217;
|
|
456
|
+
}
|
|
457
|
+
var UNICODE_BOX_GLYPHS = {
|
|
458
|
+
h: "\u2500",
|
|
459
|
+
v: "\u2502",
|
|
460
|
+
tl: "\u250C",
|
|
461
|
+
tm: "\u252C",
|
|
462
|
+
tr: "\u2510",
|
|
463
|
+
ml: "\u251C",
|
|
464
|
+
mm: "\u253C",
|
|
465
|
+
mr: "\u2524",
|
|
466
|
+
bl: "\u2514",
|
|
467
|
+
bm: "\u2534",
|
|
468
|
+
br: "\u2518"
|
|
469
|
+
};
|
|
470
|
+
var ASCII_BOX_GLYPHS = {
|
|
471
|
+
h: "-",
|
|
472
|
+
v: "|",
|
|
473
|
+
tl: "+",
|
|
474
|
+
tm: "+",
|
|
475
|
+
tr: "+",
|
|
476
|
+
ml: "+",
|
|
477
|
+
mm: "+",
|
|
478
|
+
mr: "+",
|
|
479
|
+
bl: "+",
|
|
480
|
+
bm: "+",
|
|
481
|
+
br: "+"
|
|
482
|
+
};
|
|
483
|
+
function resolveBoxCharset(ambiguousWidth = resolveAmbiguousWidth(), env = process.env) {
|
|
484
|
+
const raw = env.NOLO_TUI_BOX;
|
|
485
|
+
if (typeof raw === "string") {
|
|
486
|
+
const trimmed = raw.trim().toLowerCase();
|
|
487
|
+
if (trimmed === "ascii") return "ascii";
|
|
488
|
+
if (trimmed === "unicode") return "unicode";
|
|
489
|
+
}
|
|
490
|
+
return ambiguousWidth === "wide" ? "ascii" : "unicode";
|
|
491
|
+
}
|
|
492
|
+
function boxGlyphs(charset) {
|
|
493
|
+
return charset === "ascii" ? ASCII_BOX_GLYPHS : UNICODE_BOX_GLYPHS;
|
|
494
|
+
}
|
|
495
|
+
function scanWidthNeeds(plain, locale, ambiguousWidth) {
|
|
496
|
+
let hasNonAscii = false;
|
|
497
|
+
const isWideMode = ambiguousWidth === "wide";
|
|
498
|
+
for (let i = 0; i < plain.length; i++) {
|
|
499
|
+
const cc = plain.charCodeAt(i);
|
|
500
|
+
if (cc < 8192) {
|
|
501
|
+
if (cc >= 128) hasNonAscii = true;
|
|
502
|
+
continue;
|
|
503
|
+
}
|
|
504
|
+
hasNonAscii = true;
|
|
505
|
+
let code = cc;
|
|
506
|
+
if (cc >= 55296 && cc <= 56319 && i + 1 < plain.length) {
|
|
507
|
+
const lo = plain.charCodeAt(i + 1);
|
|
508
|
+
if (lo >= 56320 && lo <= 57343) {
|
|
509
|
+
code = (cc - 55296) * 1024 + (lo - 56320) + 65536;
|
|
510
|
+
i += 1;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
const isSymbolCandidate = isWideMode && isCjkFontWideSymbolCode(code);
|
|
514
|
+
const isQuoteCandidate = locale === "zh" && isCjkQuoteCode(code);
|
|
515
|
+
if (isSymbolCandidate || isQuoteCandidate) {
|
|
516
|
+
return { hasNonAscii: true, hasCandidate: true };
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return { hasNonAscii, hasCandidate: false };
|
|
520
|
+
}
|
|
521
|
+
var displayWidthCache = /* @__PURE__ */ new Map();
|
|
522
|
+
var DISPLAY_WIDTH_CACHE_MAX = 4096;
|
|
523
|
+
function displayWidth(str, ambiguousWidth = resolveAmbiguousWidth()) {
|
|
524
|
+
const plain = stripAnsi2(str);
|
|
525
|
+
const locale = getCliLocale();
|
|
526
|
+
const widthOptions = { ambiguousIsNarrow: ambiguousWidth !== "wide" };
|
|
527
|
+
const needs = scanWidthNeeds(plain, locale, ambiguousWidth);
|
|
528
|
+
if (!needs.hasNonAscii) {
|
|
529
|
+
return stringWidth(plain, widthOptions);
|
|
530
|
+
}
|
|
531
|
+
const key = locale + "\0" + ambiguousWidth + "\0" + plain;
|
|
532
|
+
const cached = displayWidthCache.get(key);
|
|
533
|
+
if (cached !== void 0) return cached;
|
|
534
|
+
const remember = (width2) => {
|
|
535
|
+
if (displayWidthCache.size >= DISPLAY_WIDTH_CACHE_MAX) {
|
|
536
|
+
const eldest = displayWidthCache.keys().next().value;
|
|
537
|
+
if (eldest !== void 0) displayWidthCache.delete(eldest);
|
|
538
|
+
}
|
|
539
|
+
displayWidthCache.set(key, width2);
|
|
540
|
+
return width2;
|
|
541
|
+
};
|
|
542
|
+
const base = stringWidth(plain, widthOptions);
|
|
543
|
+
if (!needs.hasCandidate) {
|
|
544
|
+
return remember(base);
|
|
545
|
+
}
|
|
546
|
+
let width = base;
|
|
547
|
+
const isWideMode = ambiguousWidth === "wide";
|
|
548
|
+
for (const { segment } of graphemeSegmenter.segment(plain)) {
|
|
549
|
+
const code = segment.codePointAt(0) ?? 0;
|
|
550
|
+
const isSymbol = isWideMode && isCjkFontWideSymbolCode(code);
|
|
551
|
+
const isQuote = locale === "zh" && isCjkQuoteCode(code);
|
|
552
|
+
if (isSymbol || isQuote) {
|
|
553
|
+
if (stringWidth(segment, widthOptions) === 1) width += 1;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
return remember(width);
|
|
557
|
+
}
|
|
558
|
+
function visibleWidth(str) {
|
|
559
|
+
return displayWidth(stripAnsi2(str));
|
|
560
|
+
}
|
|
561
|
+
function truncateAnsi(text, maxWidth) {
|
|
562
|
+
if (maxWidth <= 0) return "";
|
|
563
|
+
text = stripOsc8Hyperlinks(text);
|
|
564
|
+
if (visibleWidth(text) <= maxWidth) return text;
|
|
565
|
+
let width = 0;
|
|
566
|
+
let out = "";
|
|
567
|
+
let i = 0;
|
|
568
|
+
let sawAnsi = false;
|
|
569
|
+
while (i < text.length) {
|
|
570
|
+
if (text[i] === "\x1B" && text[i + 1] === "[") {
|
|
571
|
+
sawAnsi = true;
|
|
572
|
+
let j = i + 2;
|
|
573
|
+
while (j < text.length) {
|
|
574
|
+
const code = text.charCodeAt(j);
|
|
575
|
+
j += 1;
|
|
576
|
+
if (code >= 64 && code <= 126) break;
|
|
577
|
+
}
|
|
578
|
+
out += text.slice(i, j);
|
|
579
|
+
i = j;
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
const codePoint = text.codePointAt(i) ?? 0;
|
|
583
|
+
const char = String.fromCodePoint(codePoint);
|
|
584
|
+
const charWidth = displayWidth(char);
|
|
585
|
+
if (width + charWidth > maxWidth) break;
|
|
586
|
+
out += char;
|
|
587
|
+
width += charWidth;
|
|
588
|
+
i += char.length;
|
|
589
|
+
}
|
|
590
|
+
return sawAnsi ? `${out}\x1B[0m` : out;
|
|
591
|
+
}
|
|
592
|
+
function fitAnsiLine(text, width, ellipsis = "\u2026") {
|
|
593
|
+
if (width <= 0) return "";
|
|
594
|
+
if (visibleWidth(text) <= width) return text;
|
|
595
|
+
const ellipsisWidth = displayWidth(ellipsis);
|
|
596
|
+
if (width < ellipsisWidth) return truncateAnsi(text, width);
|
|
597
|
+
if (width === ellipsisWidth) return truncateAnsi(ellipsis, width) || truncateAnsi(text, width);
|
|
598
|
+
return `${truncateAnsi(text, width - ellipsisWidth)}${ellipsis}`;
|
|
599
|
+
}
|
|
600
|
+
function countPhysicalLines(text, columns) {
|
|
601
|
+
const lines = text.split("\n");
|
|
602
|
+
let total = 0;
|
|
603
|
+
for (const line of lines) {
|
|
604
|
+
const width = visibleWidth(stripOsc8Hyperlinks(line));
|
|
605
|
+
total += Math.max(1, Math.ceil(width / columns));
|
|
606
|
+
}
|
|
607
|
+
return Math.max(total, 1);
|
|
608
|
+
}
|
|
609
|
+
function takeDisplayWidth(text, width) {
|
|
610
|
+
let used = 0;
|
|
611
|
+
let index = 0;
|
|
612
|
+
for (const char of text) {
|
|
613
|
+
const charWidth = displayWidth(char);
|
|
614
|
+
if (used + charWidth > width && used > 0) break;
|
|
615
|
+
used += charWidth;
|
|
616
|
+
index += char.length;
|
|
617
|
+
}
|
|
618
|
+
return { prefix: text.slice(0, index), rest: text.slice(index) };
|
|
619
|
+
}
|
|
620
|
+
function padOrTruncateToWidth(text, width) {
|
|
621
|
+
const textWidth = visibleWidth(text);
|
|
622
|
+
if (textWidth > width) {
|
|
623
|
+
return truncateAnsi(text, width);
|
|
624
|
+
}
|
|
625
|
+
return `${text}${" ".repeat(width - textWidth)}`;
|
|
626
|
+
}
|
|
627
|
+
var SGR_RESET_REGEX = /^\x1b\[0?m$/;
|
|
628
|
+
var graphemeSegmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
629
|
+
function tokenizeAnsiLine(line) {
|
|
630
|
+
const tokens = [];
|
|
631
|
+
let index = 0;
|
|
632
|
+
while (index < line.length) {
|
|
633
|
+
if (line[index] === "\x1B") {
|
|
634
|
+
const osc = line.slice(index).match(/^\x1b\]8;;[^\x07\x1b]*(?:\x07|\x1b\\)/);
|
|
635
|
+
if (osc) {
|
|
636
|
+
tokens.push({ kind: "sgr", value: osc[0], width: 0, charIndex: index });
|
|
637
|
+
index += osc[0].length;
|
|
638
|
+
continue;
|
|
639
|
+
}
|
|
640
|
+
const sgr = SGR_SEQUENCE_REGEX.exec(line.slice(index));
|
|
641
|
+
if (sgr) {
|
|
642
|
+
tokens.push({ kind: "sgr", value: sgr[0], width: 0, charIndex: index });
|
|
643
|
+
index += sgr[0].length;
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
const csi = line.slice(index).match(/^\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/);
|
|
647
|
+
if (csi) {
|
|
648
|
+
index += csi[0].length;
|
|
649
|
+
continue;
|
|
650
|
+
}
|
|
651
|
+
const escape = FIRST_ANSI_ESCAPE_REGEX.exec(line.slice(index));
|
|
652
|
+
if (escape?.index === 0) {
|
|
653
|
+
index += escape[0].length;
|
|
654
|
+
continue;
|
|
655
|
+
}
|
|
656
|
+
index += 1;
|
|
657
|
+
continue;
|
|
658
|
+
}
|
|
659
|
+
let nextEsc = line.indexOf("\x1B", index);
|
|
660
|
+
if (nextEsc === -1) nextEsc = line.length;
|
|
661
|
+
const chunk = line.slice(index, nextEsc);
|
|
662
|
+
for (const item of graphemeSegmenter.segment(chunk)) {
|
|
663
|
+
tokens.push({
|
|
664
|
+
kind: "char",
|
|
665
|
+
value: item.segment,
|
|
666
|
+
width: displayWidth(item.segment),
|
|
667
|
+
charIndex: index + item.index
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
index = nextEsc;
|
|
671
|
+
}
|
|
672
|
+
return tokens;
|
|
673
|
+
}
|
|
674
|
+
function buildSourceMapping(rawLine, styledLine, prefixCharCount) {
|
|
675
|
+
let contentStart = 0;
|
|
676
|
+
const headingMatch = rawLine.match(/^(#{1,3})\s+(.+)$/);
|
|
677
|
+
let lineToParse = rawLine;
|
|
678
|
+
if (headingMatch) {
|
|
679
|
+
contentStart = headingMatch[1].length + 1;
|
|
680
|
+
while (contentStart < rawLine.length && rawLine[contentStart] === " ") contentStart++;
|
|
681
|
+
lineToParse = rawLine.slice(contentStart);
|
|
682
|
+
}
|
|
683
|
+
const INLINE_RE = /(\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`|\*\*(.+?)\*\*|(?<!\*)\*([^*]+?)\*(?!\*)|~~([^~]+?)~~)/g;
|
|
684
|
+
const mapping = [];
|
|
685
|
+
let lastIdx = 0;
|
|
686
|
+
let match;
|
|
687
|
+
while ((match = INLINE_RE.exec(lineToParse)) !== null) {
|
|
688
|
+
const plainBefore = lineToParse.slice(lastIdx, match.index);
|
|
689
|
+
for (let c = 0; c < plainBefore.length; c++) {
|
|
690
|
+
mapping.push(contentStart + lastIdx + c);
|
|
691
|
+
}
|
|
692
|
+
const fullMatch = match[0];
|
|
693
|
+
if (match[2] !== void 0 && match[3] !== void 0) {
|
|
694
|
+
const linkText = match[2];
|
|
695
|
+
const linkUrl = match[3];
|
|
696
|
+
const textOffset = contentStart + match.index + 1;
|
|
697
|
+
for (let c = 0; c < linkText.length; c++) {
|
|
698
|
+
mapping.push(textOffset + c);
|
|
699
|
+
}
|
|
700
|
+
const parenOffset = textOffset + linkText.length;
|
|
701
|
+
mapping.push(parenOffset);
|
|
702
|
+
mapping.push(parenOffset + 1);
|
|
703
|
+
const urlOffset = parenOffset + 2;
|
|
704
|
+
for (let c = 0; c < linkUrl.length; c++) {
|
|
705
|
+
mapping.push(urlOffset + c);
|
|
706
|
+
}
|
|
707
|
+
mapping.push(urlOffset + linkUrl.length);
|
|
708
|
+
} else if (match[4] !== void 0) {
|
|
709
|
+
const codeText = match[4];
|
|
710
|
+
const codeOffset = contentStart + match.index + 1;
|
|
711
|
+
for (let c = 0; c < codeText.length; c++) {
|
|
712
|
+
mapping.push(codeOffset + c);
|
|
713
|
+
}
|
|
714
|
+
} else if (match[5] !== void 0) {
|
|
715
|
+
const boldText = match[5];
|
|
716
|
+
const boldOffset = contentStart + match.index + 2;
|
|
717
|
+
for (let c = 0; c < boldText.length; c++) {
|
|
718
|
+
mapping.push(boldOffset + c);
|
|
719
|
+
}
|
|
720
|
+
} else if (match[6] !== void 0) {
|
|
721
|
+
const italicText = match[6];
|
|
722
|
+
const italicOffset = contentStart + match.index + 1;
|
|
723
|
+
for (let c = 0; c < italicText.length; c++) {
|
|
724
|
+
mapping.push(italicOffset + c);
|
|
725
|
+
}
|
|
726
|
+
} else if (match[7] !== void 0) {
|
|
727
|
+
const strikeText = match[7];
|
|
728
|
+
const strikeOffset = contentStart + match.index + 2;
|
|
729
|
+
for (let c = 0; c < strikeText.length; c++) {
|
|
730
|
+
mapping.push(strikeOffset + c);
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
lastIdx = match.index + fullMatch.length;
|
|
734
|
+
}
|
|
735
|
+
const plainRest = lineToParse.slice(lastIdx);
|
|
736
|
+
for (let c = 0; c < plainRest.length; c++) {
|
|
737
|
+
mapping.push(contentStart + lastIdx + c);
|
|
738
|
+
}
|
|
739
|
+
return mapping;
|
|
740
|
+
}
|
|
741
|
+
function wrapTranscriptLineWithLayout(line, columns, hangingIndent = "", lineSourceStart = 0, prefixWidth = 0, prefixCharCount = 0, sourceMapping, rawLineLength) {
|
|
742
|
+
if (line === "") {
|
|
743
|
+
const rawLen = rawLineLength ?? 0;
|
|
744
|
+
return [
|
|
745
|
+
{
|
|
746
|
+
rendered: "",
|
|
747
|
+
sourceStart: lineSourceStart,
|
|
748
|
+
sourceEnd: lineSourceStart + rawLen,
|
|
749
|
+
prefixWidth
|
|
750
|
+
}
|
|
751
|
+
];
|
|
752
|
+
}
|
|
753
|
+
const tokens = tokenizeAnsiLine(line);
|
|
754
|
+
const rows = [];
|
|
755
|
+
let activeStyles = [];
|
|
756
|
+
const applyStyleToken = (value) => {
|
|
757
|
+
if (SGR_RESET_REGEX.test(value)) {
|
|
758
|
+
activeStyles = [];
|
|
759
|
+
} else {
|
|
760
|
+
activeStyles.push(value);
|
|
761
|
+
}
|
|
762
|
+
};
|
|
763
|
+
let lastContentTokenIndex = -1;
|
|
764
|
+
for (let i = tokens.length - 1; i >= 0; i -= 1) {
|
|
765
|
+
if (tokens[i].kind !== "sgr") {
|
|
766
|
+
lastContentTokenIndex = i;
|
|
767
|
+
break;
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
let plainCharIndexAtStart = 0;
|
|
771
|
+
let start = 0;
|
|
772
|
+
while (start < tokens.length) {
|
|
773
|
+
if (start > lastContentTokenIndex && rows.length > 0) break;
|
|
774
|
+
const openingStyles = [...activeStyles];
|
|
775
|
+
const isContinuation = rows.length > 0;
|
|
776
|
+
const currentPrefixWidth = isContinuation ? visibleWidth(hangingIndent) : prefixWidth;
|
|
777
|
+
const indentWidth = isContinuation ? visibleWidth(hangingIndent) : 0;
|
|
778
|
+
const maxSegmentWidth = Math.max(1, columns - indentWidth);
|
|
779
|
+
let width = 0;
|
|
780
|
+
let end = start;
|
|
781
|
+
let lastBreak = -1;
|
|
782
|
+
while (end < tokens.length) {
|
|
783
|
+
const token = tokens[end];
|
|
784
|
+
if (token.kind === "sgr") {
|
|
785
|
+
end += 1;
|
|
786
|
+
continue;
|
|
787
|
+
}
|
|
788
|
+
if (width + token.width > maxSegmentWidth && width > 0) break;
|
|
789
|
+
width += token.width;
|
|
790
|
+
end += 1;
|
|
791
|
+
if ((token.value === " " || token.value === " ") && token.charIndex >= prefixCharCount) {
|
|
792
|
+
lastBreak = end;
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
let segmentEnd = end;
|
|
796
|
+
if (end < tokens.length && lastBreak > start) {
|
|
797
|
+
const overflowToken = tokens[end];
|
|
798
|
+
if (overflowToken.kind === "char" && overflowToken.value !== " " && overflowToken.width === 1) {
|
|
799
|
+
segmentEnd = lastBreak;
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
if (segmentEnd === start) segmentEnd = start + 1;
|
|
803
|
+
let segment = "";
|
|
804
|
+
let sawStyle = openingStyles.length > 0;
|
|
805
|
+
for (let i = start; i < segmentEnd; i += 1) {
|
|
806
|
+
const token = tokens[i];
|
|
807
|
+
segment += token.value;
|
|
808
|
+
if (token.kind === "sgr") {
|
|
809
|
+
sawStyle = true;
|
|
810
|
+
applyStyleToken(token.value);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
const prefix = openingStyles.join("");
|
|
814
|
+
const needsReset = (sawStyle || activeStyles.length > 0) && !segment.endsWith("\x1B[0m");
|
|
815
|
+
const lineContent = `${prefix}${segment}${needsReset ? "\x1B[0m" : ""}`;
|
|
816
|
+
const rowRendered = isContinuation && hangingIndent.length > 0 ? `${hangingIndent}${lineContent}` : lineContent;
|
|
817
|
+
let segSourceStart = lineSourceStart;
|
|
818
|
+
let segSourceEnd = lineSourceStart;
|
|
819
|
+
let foundFirst = false;
|
|
820
|
+
const rowMapping = [];
|
|
821
|
+
let plainCharIndex = plainCharIndexAtStart;
|
|
822
|
+
for (let i = start; i < segmentEnd; i++) {
|
|
823
|
+
const tok = tokens[i];
|
|
824
|
+
if (tok.kind === "char" && tok.charIndex >= prefixCharCount) {
|
|
825
|
+
const mappedOffset = sourceMapping && sourceMapping[plainCharIndex] !== void 0 ? sourceMapping[plainCharIndex] : plainCharIndex;
|
|
826
|
+
if (!foundFirst) {
|
|
827
|
+
segSourceStart = lineSourceStart + mappedOffset;
|
|
828
|
+
foundFirst = true;
|
|
829
|
+
}
|
|
830
|
+
for (let c = 0; c < tok.value.length; c++) {
|
|
831
|
+
const idx = plainCharIndex + c;
|
|
832
|
+
const mapped = sourceMapping && sourceMapping[idx] !== void 0 ? sourceMapping[idx] : idx;
|
|
833
|
+
rowMapping.push(lineSourceStart + mapped);
|
|
834
|
+
}
|
|
835
|
+
const lastCharIdx = plainCharIndex + tok.value.length - 1;
|
|
836
|
+
const mappedEndOffset = sourceMapping && sourceMapping[lastCharIdx] !== void 0 ? sourceMapping[lastCharIdx] + 1 : plainCharIndex + tok.value.length;
|
|
837
|
+
segSourceEnd = lineSourceStart + mappedEndOffset;
|
|
838
|
+
plainCharIndex += tok.value.length;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
start = segmentEnd;
|
|
842
|
+
let softWrapJoiner = "";
|
|
843
|
+
while (start < tokens.length) {
|
|
844
|
+
const token = tokens[start];
|
|
845
|
+
if (token.kind === "char" && token.value === " " && token.charIndex >= prefixCharCount) {
|
|
846
|
+
softWrapJoiner += token.value;
|
|
847
|
+
const mappedOffset = sourceMapping && sourceMapping[plainCharIndex] !== void 0 ? sourceMapping[plainCharIndex] + 1 : plainCharIndex + 1;
|
|
848
|
+
segSourceEnd = lineSourceStart + mappedOffset;
|
|
849
|
+
plainCharIndex += token.value.length;
|
|
850
|
+
start += 1;
|
|
851
|
+
continue;
|
|
852
|
+
}
|
|
853
|
+
break;
|
|
854
|
+
}
|
|
855
|
+
if (start >= tokens.length && rawLineLength !== void 0) {
|
|
856
|
+
segSourceEnd = lineSourceStart + rawLineLength;
|
|
857
|
+
}
|
|
858
|
+
plainCharIndexAtStart = plainCharIndex;
|
|
859
|
+
rows.push({
|
|
860
|
+
rendered: rowRendered,
|
|
861
|
+
sourceStart: segSourceStart,
|
|
862
|
+
sourceEnd: segSourceEnd,
|
|
863
|
+
prefixWidth: currentPrefixWidth,
|
|
864
|
+
sourceMapping: rowMapping.length > 0 ? rowMapping : void 0,
|
|
865
|
+
softWrapped: start < tokens.length,
|
|
866
|
+
softWrapJoiner
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
return rows.length > 0 ? rows : [
|
|
870
|
+
{
|
|
871
|
+
rendered: "",
|
|
872
|
+
sourceStart: lineSourceStart,
|
|
873
|
+
sourceEnd: lineSourceStart + (rawLineLength ?? 0),
|
|
874
|
+
prefixWidth
|
|
875
|
+
}
|
|
876
|
+
];
|
|
877
|
+
}
|
|
878
|
+
function wrapTranscriptLine(line, columns, hangingIndent = "") {
|
|
879
|
+
return wrapTranscriptLineWithLayout(line, columns, hangingIndent).map((r) => r.rendered);
|
|
880
|
+
}
|
|
881
|
+
function buildWindowTitle(title) {
|
|
882
|
+
const plain = stripAnsi2(title).replace(/[\x00-\x1f\x7f]+/g, " ");
|
|
883
|
+
let truncated = "";
|
|
884
|
+
let width = 0;
|
|
885
|
+
const maxCols = 80;
|
|
886
|
+
for (const char of plain) {
|
|
887
|
+
const charWidth = displayWidth(char);
|
|
888
|
+
if (width + charWidth > maxCols) break;
|
|
889
|
+
truncated += char;
|
|
890
|
+
width += charWidth;
|
|
891
|
+
}
|
|
892
|
+
return `\x1B]0;${truncated}\x07\x1B]2;${truncated}\x07`;
|
|
893
|
+
}
|
|
894
|
+
function wrapTextToLines(text, columns) {
|
|
895
|
+
const result = [];
|
|
896
|
+
for (const logicalLine of text.split("\n")) {
|
|
897
|
+
if (logicalLine === "") {
|
|
898
|
+
result.push("");
|
|
899
|
+
continue;
|
|
900
|
+
}
|
|
901
|
+
let remaining = logicalLine;
|
|
902
|
+
while (remaining.length > 0) {
|
|
903
|
+
const { prefix, rest } = takeDisplayWidth(remaining, columns);
|
|
904
|
+
result.push(prefix);
|
|
905
|
+
remaining = rest;
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
return result;
|
|
909
|
+
}
|
|
34
910
|
|
|
35
911
|
// packages/cli/oauth/callback-server.ts
|
|
36
912
|
import { createServer } from "node:http";
|
|
@@ -575,13 +1451,14 @@ function renderDeviceCodeDisplay(args) {
|
|
|
575
1451
|
plain: ` Code: ${userCode} `
|
|
576
1452
|
});
|
|
577
1453
|
const innerWidth = Math.max(...rows.map((row) => row.plain.length));
|
|
578
|
-
const
|
|
579
|
-
const
|
|
1454
|
+
const g = boxGlyphs(resolveBoxCharset());
|
|
1455
|
+
const top = `${g.tl}${g.h.repeat(innerWidth)}${g.tr}`;
|
|
1456
|
+
const bottom = `${g.bl}${g.h.repeat(innerWidth)}${g.br}`;
|
|
580
1457
|
return [
|
|
581
1458
|
`Authorize nolo-cli for ${provider} (device code / headless):`,
|
|
582
1459
|
top,
|
|
583
1460
|
...rows.map(
|
|
584
|
-
(row) =>
|
|
1461
|
+
(row) => `${g.v}${row.rendered}${" ".repeat(innerWidth - row.plain.length)}${g.v}`
|
|
585
1462
|
),
|
|
586
1463
|
bottom,
|
|
587
1464
|
...notes
|
|
@@ -1468,6 +2345,24 @@ async function refreshCursorToken(credential, deps = {}) {
|
|
|
1468
2345
|
var cursorRefresh = refreshCursorToken;
|
|
1469
2346
|
|
|
1470
2347
|
export {
|
|
2348
|
+
ANSI_ESCAPE_REGEX,
|
|
2349
|
+
stripAnsi2 as stripAnsi,
|
|
2350
|
+
applyTerminalOutputToText,
|
|
2351
|
+
resolveBoxCharset,
|
|
2352
|
+
boxGlyphs,
|
|
2353
|
+
displayWidth,
|
|
2354
|
+
visibleWidth,
|
|
2355
|
+
truncateAnsi,
|
|
2356
|
+
fitAnsiLine,
|
|
2357
|
+
countPhysicalLines,
|
|
2358
|
+
takeDisplayWidth,
|
|
2359
|
+
padOrTruncateToWidth,
|
|
2360
|
+
tokenizeAnsiLine,
|
|
2361
|
+
buildSourceMapping,
|
|
2362
|
+
wrapTranscriptLineWithLayout,
|
|
2363
|
+
wrapTranscriptLine,
|
|
2364
|
+
buildWindowTitle,
|
|
2365
|
+
wrapTextToLines,
|
|
1471
2366
|
resolveClaudeCodeVersion,
|
|
1472
2367
|
getClaudeCodeUserAgent,
|
|
1473
2368
|
adoptRequiredClaudeCodeVersion,
|