nolo-cli 0.80.0-alpha.1 → 0.80.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.
Files changed (156) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-UXVEB3GO.js} +46 -46
  3. package/{action-D22U6CTH.js → action-YVYQEAAV.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-O7R66HEX.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-74OA7KYP.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-OODHSL4K.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-3R73WSCD.js} +64 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-TBTEXV2E.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-3GKE6ZHG.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-GNPTL5XR.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-O5MPVJ5E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-3664GLRE.js} +61 -57
  14. package/{agentRunCommand-UKJAECQ6.js → agentRunCommand-YNSEOBTR.js} +62 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-5BX6PI4X.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-KTVOEUDX.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-UNTBD55Y.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LOF4JNBZ.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-MMLE6BDW.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-WFJAJK6B.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-NC265RGX.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-F4EFRRX6.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-FUAVTRVZ.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-4YQF4NHY.js} +24 -24
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-FZYAU75D.js} +1 -1
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-62P2Q2YB.js} +31 -1
  29. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  30. package/{chunk-MGU5ADIQ.js → chunk-35EWBHJO.js} +10 -10
  31. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  32. package/{chunk-3QPYFHAH.js → chunk-3DII57IT.js} +1 -1
  33. package/{chunk-KIS76A2P.js → chunk-3IIEFNGY.js} +38 -4
  34. package/{chunk-MEVSATIF.js → chunk-4OZYL5FG.js} +66 -792
  35. package/{chunk-GBPZKFYK.js → chunk-53HEEOTT.js} +4 -4
  36. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  37. package/chunk-5ZUL4CUO.js +10 -0
  38. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  39. package/{chunk-CMH2SYHX.js → chunk-6OZ36FXI.js} +2 -2
  40. package/{chunk-QA6YKM3H.js → chunk-76WEAXJB.js} +49 -10
  41. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  42. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  43. package/chunk-ACTMNVHM.js +93 -0
  44. package/{chunk-XWNRAIUL.js → chunk-AFUORTY4.js} +6 -16
  45. package/{chunk-AFIWC5NH.js → chunk-BLJWCTRL.js} +1 -1
  46. package/chunk-BNGW5ASC.js +344 -0
  47. package/{chunk-SZLVDREM.js → chunk-BP4XNZRM.js} +3 -3
  48. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  49. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  50. package/{chunk-U6LKJRJB.js → chunk-D2P6UDPQ.js} +42 -26
  51. package/{chunk-L2Y24GRM.js → chunk-DEUUPHOO.js} +16 -12
  52. package/{chunk-MYU3MJCF.js → chunk-DHDMC6FO.js} +175 -7
  53. package/{chunk-CDVGNZDA.js → chunk-EFVDQUCT.js} +11 -173
  54. package/{chunk-EXMHJN7C.js → chunk-EYAQT56M.js} +4 -3
  55. package/{chunk-733J6D44.js → chunk-FLLFOP5L.js} +6 -6
  56. package/{chunk-H7UKKEIS.js → chunk-GFD4ALW3.js} +1 -1
  57. package/{chunk-PYXL2CJL.js → chunk-GPCZ7UXG.js} +1 -1
  58. package/{chunk-K7AG465Q.js → chunk-GQBOR3G6.js} +4 -2
  59. package/{chunk-QUH3XHL5.js → chunk-H3PIH2EO.js} +7 -7
  60. package/{chunk-YFADVSZE.js → chunk-H62HCIUP.js} +6 -6
  61. package/{chunk-PZM3EENV.js → chunk-HJUYAD4A.js} +1 -1
  62. package/{chunk-ALGK6TIE.js → chunk-HMPEO3ZE.js} +3 -3
  63. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  64. package/{chunk-FPTQQSS6.js → chunk-IAO6JBYW.js} +26 -5
  65. package/{chunk-V3ZKNK5D.js → chunk-IIVGDG4I.js} +11 -10
  66. package/{chunk-UDQWGU7F.js → chunk-J4MOO56S.js} +1 -1
  67. package/{chunk-DSRXPQWA.js → chunk-JAXOVNM4.js} +43 -43
  68. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  69. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  70. package/chunk-JRQFUXY7.js +1625 -0
  71. package/chunk-KQ4ONNQD.js +677 -0
  72. package/{chunk-D74EWXL4.js → chunk-LBEDNSMY.js} +419 -72
  73. package/{chunk-X7Z7U4Z6.js → chunk-LIIKM7DD.js} +15 -15
  74. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  75. package/{chunk-BJIRLHJR.js → chunk-M2EJHDJP.js} +4 -0
  76. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  77. package/{chunk-G3NT6BM3.js → chunk-MPV6E6WR.js} +608 -60
  78. package/{chunk-ZY4K4CZR.js → chunk-MWAO7TZZ.js} +909 -304
  79. package/{chunk-QRBAZ5PW.js → chunk-NKRYKK7T.js} +3 -3
  80. package/{chunk-ZLPA7K55.js → chunk-OA6Q2A4I.js} +29 -10
  81. package/{chunk-QC5LGHYP.js → chunk-OF7AQZUG.js} +10 -5
  82. package/{chunk-UJ63UXGE.js → chunk-OIVSQH2O.js} +1006 -801
  83. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  84. package/chunk-Q5FJJ6XI.js +103 -0
  85. package/{chunk-AJHEFRGJ.js → chunk-Q67DOFOO.js} +214 -5
  86. package/{chunk-UZ6XXCVR.js → chunk-QDSINZM3.js} +15 -2
  87. package/{chunk-AFIKMMGC.js → chunk-QIAVMDHY.js} +1 -1
  88. package/{chunk-QCZX4FTW.js → chunk-SH43IESU.js} +173 -15
  89. package/{chunk-FSFQ3A7S.js → chunk-SNPMM7H3.js} +137 -12
  90. package/{chunk-P7FA2HMM.js → chunk-SQZDZXP5.js} +13 -15
  91. package/{chunk-SPAQ4PVV.js → chunk-SV5IJK6K.js} +1 -1
  92. package/{chunk-BJCWNHVU.js → chunk-TOP2VXOR.js} +2 -2
  93. package/{chunk-EOU7ZSTU.js → chunk-TRCMIJA7.js} +1198 -50
  94. package/{chunk-4EJ5QYB5.js → chunk-UKZDAFYT.js} +1 -1
  95. package/{chunk-PGSKWZCB.js → chunk-UZGQNTVW.js} +1 -1
  96. package/{chunk-ZZCJUXUI.js → chunk-V4MJDUSR.js} +2 -2
  97. package/{chunk-JYYZCK2Z.js → chunk-V7E4PXQD.js} +1 -1
  98. package/{chunk-OZX2IPKM.js → chunk-VLTIYV3X.js} +1 -1
  99. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  100. package/{chunk-E36HZARC.js → chunk-WADCY6G6.js} +3 -3
  101. package/{chunk-5J7W2VWW.js → chunk-WV42OMV7.js} +6 -265
  102. package/{chunk-DWPNOYMB.js → chunk-YQTQQX2H.js} +1 -1
  103. package/{chunk-Q6FF2MCK.js → chunk-Z77CRGTW.js} +1 -1
  104. package/{contentThunks-3SPROFG5.js → contentThunks-2USKJBI4.js} +25 -25
  105. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-NTLU42X2.js} +25 -25
  106. package/{createDialogAction-RLUSTN4D.js → createDialogAction-UCYF4BUN.js} +28 -28
  107. package/{createPageAction-4Y52G7WG.js → createPageAction-QFGUGZ5M.js} +26 -26
  108. package/{dbSlice-GKGGFNOB.js → dbSlice-XVWBAGYN.js} +8 -8
  109. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  110. package/{dialogCommands-G223U5WU.js → dialogCommands-X4OB6SC6.js} +34 -30
  111. package/{dialogSlice-THY45JWM.js → dialogSlice-HQFQIQDZ.js} +24 -24
  112. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-DFST4PFR.js} +31 -29
  113. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-V37JZOSP.js} +32 -30
  114. package/{docReadCommands-6BFV2HI7.js → docReadCommands-Z64VDPDQ.js} +31 -29
  115. package/{docStore-ZQ3ECOPY.js → docStore-GVWEDN5E.js} +9 -9
  116. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-I6FB6ENK.js} +31 -29
  117. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  118. package/{getPricing-HRMSOF3E.js → getPricing-LUSEABA6.js} +4 -4
  119. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-TLB2SAU4.js} +24 -24
  120. package/index.js +101 -84
  121. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  122. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  123. package/{machineCommands-4OT7KVCD.js → machineCommands-PV5XA7UF.js} +61 -57
  124. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-W2DPC7TZ.js} +59 -55
  125. package/{memberThunks-KATHH3F4.js → memberThunks-QGFLFVCI.js} +9 -9
  126. package/{models-GS72DVJS.js → models-T3SG6MJ5.js} +2 -2
  127. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  128. package/package.json +1 -1
  129. package/providerPresetApply-FG6NZ57W.js +214 -0
  130. package/providerRegistry-757OWH3O.js +31 -0
  131. package/{read-LC6HVYBN.js → read-COE3ZYR6.js} +5 -4
  132. package/{readDocTool-N3ERJHHF.js → readDocTool-5USN4A6V.js} +1 -1
  133. package/{readlineWorkspace-RE3P324X.js → readlineWorkspace-PHZXJKJM.js} +194 -109
  134. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-IX3MN2ZO.js} +11 -11
  135. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-26DG6ZEY.js} +45 -45
  136. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  137. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-X4HCPNZL.js} +9 -9
  138. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-4GMIQLOD.js} +11 -11
  139. package/{settingSlice-OEJA4NQO.js → settingSlice-ZQZVUPKK.js} +10 -10
  140. package/{spaceCommands-MRP5U3C3.js → spaceCommands-3QH2QFNW.js} +29 -27
  141. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-BY7IPY5C.js} +57 -56
  142. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-N52LRPA3.js} +8 -8
  143. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  144. package/{toolApiClient-VGYUB4P5.js → toolApiClient-QVJ6HDNN.js} +2 -2
  145. package/{tools-JS475NYO.js → tools-4Y2EYH5D.js} +41 -39
  146. package/tuiSummaryLlmCaller-T2SHYMDZ.js +127 -0
  147. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  148. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-2S4DCP35.js} +45 -28
  149. package/chunk-3IT2PFHL.js +0 -611
  150. package/chunk-I42VC5KR.js +0 -15
  151. package/chunk-NG4UT4K4.js +0 -79
  152. package/codingSkills-E6KSDNSJ.js +0 -48
  153. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  154. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  155. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  156. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -5,36 +5,38 @@ import {
5
5
  pickDefined,
6
6
  printCliError,
7
7
  resolveCliContext
8
- } from "./chunk-DWPNOYMB.js";
8
+ } from "./chunk-YQTQQX2H.js";
9
9
  import {
10
10
  hasFlag,
11
11
  hasHelpArg
12
- } from "./chunk-AFIKMMGC.js";
13
- import "./chunk-QA6YKM3H.js";
14
- import "./chunk-Q6FF2MCK.js";
15
- import "./chunk-SPAQ4PVV.js";
12
+ } from "./chunk-QIAVMDHY.js";
13
+ import "./chunk-76WEAXJB.js";
14
+ import "./chunk-Z77CRGTW.js";
15
+ import "./chunk-SV5IJK6K.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-ZY4K4CZR.js";
17
+ import "./chunk-MWAO7TZZ.js";
18
+ import "./chunk-OF7AQZUG.js";
19
+ import "./chunk-Q5FJJ6XI.js";
18
20
  import "./chunk-ZNFJWEN4.js";
19
- import "./chunk-QC5LGHYP.js";
20
- import "./chunk-KIS76A2P.js";
21
+ import "./chunk-3IIEFNGY.js";
21
22
  import "./chunk-CQ3WA2NE.js";
23
+ import "./chunk-5ZUL4CUO.js";
22
24
  import "./chunk-N7J63Q6C.js";
23
- import "./chunk-ZLPA7K55.js";
25
+ import "./chunk-OA6Q2A4I.js";
24
26
  import "./chunk-PUOC4YRO.js";
25
- import "./chunk-PGSKWZCB.js";
26
- import "./chunk-CMH2SYHX.js";
27
- import "./chunk-V3ZKNK5D.js";
27
+ import "./chunk-IIVGDG4I.js";
28
28
  import "./chunk-CJCJF5XB.js";
29
+ import "./chunk-UZGQNTVW.js";
30
+ import "./chunk-6OZ36FXI.js";
29
31
  import "./chunk-2MBTWINN.js";
30
- import "./chunk-DSRXPQWA.js";
31
- import "./chunk-E36HZARC.js";
32
- import "./chunk-K7AG465Q.js";
32
+ import "./chunk-JAXOVNM4.js";
33
+ import "./chunk-WADCY6G6.js";
33
34
  import "./chunk-PSCNXBYA.js";
35
+ import "./chunk-GQBOR3G6.js";
34
36
  import "./chunk-BYXBJQAS.js";
35
- import "./chunk-UJ63UXGE.js";
37
+ import "./chunk-OIVSQH2O.js";
36
38
  import "./chunk-DWLEOOGR.js";
37
- import "./chunk-3JQ2NRYU.js";
39
+ import "./chunk-HVURBGF3.js";
38
40
  import "./chunk-ONXOABJR.js";
39
41
  import "./chunk-W7XHHYWM.js";
40
42
  import "./chunk-HNMXYYJR.js";
@@ -46,27 +48,27 @@ import {
46
48
  readOption
47
49
  } from "./chunk-A7GB5UGH.js";
48
50
  import "./chunk-OLZBQWZU.js";
49
- import "./chunk-NG4UT4K4.js";
50
- import "./chunk-AJHEFRGJ.js";
51
+ import "./chunk-ACTMNVHM.js";
52
+ import "./chunk-Q67DOFOO.js";
51
53
  import "./chunk-KX6YBIHG.js";
52
- import "./chunk-ZZCJUXUI.js";
54
+ import "./chunk-V4MJDUSR.js";
53
55
  import "./chunk-UAD2WT54.js";
54
- import "./chunk-YFADVSZE.js";
55
- import "./chunk-NHRQCXIQ.js";
56
+ import "./chunk-H62HCIUP.js";
57
+ import "./chunk-VMFTFOWF.js";
56
58
  import "./chunk-WWC7I6TA.js";
57
- import "./chunk-I42VC5KR.js";
58
- import "./chunk-SREASRV5.js";
59
+ import "./chunk-ABQYVJBJ.js";
59
60
  import "./chunk-QSJ3HFEF.js";
60
- import "./chunk-5J7W2VWW.js";
61
- import "./chunk-BJIRLHJR.js";
62
- import "./chunk-3RAG2NAD.js";
61
+ import "./chunk-WV42OMV7.js";
62
+ import "./chunk-BNGW5ASC.js";
63
+ import "./chunk-M2EJHDJP.js";
64
+ import "./chunk-UKWGR5SS.js";
63
65
  import "./chunk-QOKAKDPE.js";
64
66
  import "./chunk-OW765XBU.js";
65
67
  import "./chunk-SEJ5OS6F.js";
66
68
  import "./chunk-GBRG75BQ.js";
69
+ import "./chunk-KUG52IAP.js";
67
70
  import "./chunk-3EUW3WEO.js";
68
71
  import "./chunk-U6VC4MU4.js";
69
- import "./chunk-KUG52IAP.js";
70
72
  import "./chunk-LCBAMY2M.js";
71
73
  import "./chunk-4SN6J65J.js";
72
74
  import "./chunk-CF7PE763.js";
@@ -5,36 +5,38 @@ import {
5
5
  pickDefined,
6
6
  printCliError,
7
7
  resolveCliContext
8
- } from "./chunk-DWPNOYMB.js";
8
+ } from "./chunk-YQTQQX2H.js";
9
9
  import {
10
10
  hasFlag,
11
11
  hasHelpArg
12
- } from "./chunk-AFIKMMGC.js";
13
- import "./chunk-QA6YKM3H.js";
14
- import "./chunk-Q6FF2MCK.js";
15
- import "./chunk-SPAQ4PVV.js";
12
+ } from "./chunk-QIAVMDHY.js";
13
+ import "./chunk-76WEAXJB.js";
14
+ import "./chunk-Z77CRGTW.js";
15
+ import "./chunk-SV5IJK6K.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-ZY4K4CZR.js";
17
+ import "./chunk-MWAO7TZZ.js";
18
+ import "./chunk-OF7AQZUG.js";
19
+ import "./chunk-Q5FJJ6XI.js";
18
20
  import "./chunk-ZNFJWEN4.js";
19
- import "./chunk-QC5LGHYP.js";
20
- import "./chunk-KIS76A2P.js";
21
+ import "./chunk-3IIEFNGY.js";
21
22
  import "./chunk-CQ3WA2NE.js";
23
+ import "./chunk-5ZUL4CUO.js";
22
24
  import "./chunk-N7J63Q6C.js";
23
- import "./chunk-ZLPA7K55.js";
25
+ import "./chunk-OA6Q2A4I.js";
24
26
  import "./chunk-PUOC4YRO.js";
25
- import "./chunk-PGSKWZCB.js";
26
- import "./chunk-CMH2SYHX.js";
27
- import "./chunk-V3ZKNK5D.js";
27
+ import "./chunk-IIVGDG4I.js";
28
28
  import "./chunk-CJCJF5XB.js";
29
+ import "./chunk-UZGQNTVW.js";
30
+ import "./chunk-6OZ36FXI.js";
29
31
  import "./chunk-2MBTWINN.js";
30
- import "./chunk-DSRXPQWA.js";
31
- import "./chunk-E36HZARC.js";
32
- import "./chunk-K7AG465Q.js";
32
+ import "./chunk-JAXOVNM4.js";
33
+ import "./chunk-WADCY6G6.js";
33
34
  import "./chunk-PSCNXBYA.js";
35
+ import "./chunk-GQBOR3G6.js";
34
36
  import "./chunk-BYXBJQAS.js";
35
- import "./chunk-UJ63UXGE.js";
37
+ import "./chunk-OIVSQH2O.js";
36
38
  import "./chunk-DWLEOOGR.js";
37
- import "./chunk-3JQ2NRYU.js";
39
+ import "./chunk-HVURBGF3.js";
38
40
  import "./chunk-ONXOABJR.js";
39
41
  import "./chunk-W7XHHYWM.js";
40
42
  import "./chunk-HNMXYYJR.js";
@@ -46,27 +48,27 @@ import {
46
48
  readOption
47
49
  } from "./chunk-A7GB5UGH.js";
48
50
  import "./chunk-OLZBQWZU.js";
49
- import "./chunk-NG4UT4K4.js";
50
- import "./chunk-AJHEFRGJ.js";
51
+ import "./chunk-ACTMNVHM.js";
52
+ import "./chunk-Q67DOFOO.js";
51
53
  import "./chunk-KX6YBIHG.js";
52
- import "./chunk-ZZCJUXUI.js";
54
+ import "./chunk-V4MJDUSR.js";
53
55
  import "./chunk-UAD2WT54.js";
54
- import "./chunk-YFADVSZE.js";
55
- import "./chunk-NHRQCXIQ.js";
56
+ import "./chunk-H62HCIUP.js";
57
+ import "./chunk-VMFTFOWF.js";
56
58
  import "./chunk-WWC7I6TA.js";
57
- import "./chunk-I42VC5KR.js";
58
- import "./chunk-SREASRV5.js";
59
+ import "./chunk-ABQYVJBJ.js";
59
60
  import "./chunk-QSJ3HFEF.js";
60
- import "./chunk-5J7W2VWW.js";
61
- import "./chunk-BJIRLHJR.js";
62
- import "./chunk-3RAG2NAD.js";
61
+ import "./chunk-WV42OMV7.js";
62
+ import "./chunk-BNGW5ASC.js";
63
+ import "./chunk-M2EJHDJP.js";
64
+ import "./chunk-UKWGR5SS.js";
63
65
  import "./chunk-QOKAKDPE.js";
64
66
  import "./chunk-OW765XBU.js";
65
67
  import "./chunk-SEJ5OS6F.js";
66
68
  import "./chunk-GBRG75BQ.js";
69
+ import "./chunk-KUG52IAP.js";
67
70
  import "./chunk-3EUW3WEO.js";
68
71
  import "./chunk-U6VC4MU4.js";
69
- import "./chunk-KUG52IAP.js";
70
72
  import "./chunk-LCBAMY2M.js";
71
73
  import "./chunk-4SN6J65J.js";
72
74
  import "./chunk-CF7PE763.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  defaultOpenBrowser
3
- } from "./chunk-E6RGHPDR.js";
3
+ } from "./chunk-6D6VBVEW.js";
4
4
  import {
5
5
  generateCloudflareEmailRoutingToken,
6
6
  parseFlagWithOptionalValue,
7
7
  runCloudflareOAuthLogin,
8
8
  upsertEnvVariable
9
- } from "./chunk-PYXL2CJL.js";
9
+ } from "./chunk-GPCZ7UXG.js";
10
10
  import {
11
11
  ANTHROPIC_OAUTH_AUTHORIZE_URL,
12
12
  ANTHROPIC_OAUTH_CALLBACK_PORT,
@@ -46,15 +46,22 @@ import {
46
46
  startCallbackServer,
47
47
  validateXAIEndpoint,
48
48
  xaiOAuthDiscovery
49
- } from "./chunk-GBPZKFYK.js";
49
+ } from "./chunk-53HEEOTT.js";
50
50
  import "./chunk-ESHYE7WU.js";
51
51
  import "./chunk-JBTJAPUF.js";
52
- import "./chunk-C3FZR5EC.js";
52
+ import "./chunk-2F7RJC6L.js";
53
53
  import "./chunk-GLKOYSRU.js";
54
- import "./chunk-PGSKWZCB.js";
55
- import "./chunk-CMH2SYHX.js";
56
- import "./chunk-K7AG465Q.js";
57
- import "./chunk-UJ63UXGE.js";
54
+ import {
55
+ buildDevinAuthUrl,
56
+ buildDevinOAuthCredential,
57
+ detectLocalDevinCredentials,
58
+ extractDevinToken
59
+ } from "./chunk-Q5FJJ6XI.js";
60
+ import "./chunk-5ZUL4CUO.js";
61
+ import "./chunk-UZGQNTVW.js";
62
+ import "./chunk-6OZ36FXI.js";
63
+ import "./chunk-GQBOR3G6.js";
64
+ import "./chunk-OIVSQH2O.js";
58
65
  import {
59
66
  createOAuthTokenStore
60
67
  } from "./chunk-ONXOABJR.js";
@@ -64,24 +71,25 @@ import {
64
71
  } from "./chunk-HNMXYYJR.js";
65
72
  import {
66
73
  buildEnvFromProfile,
67
- loadProfileConfig
68
- } from "./chunk-2KDR4CWE.js";
74
+ getProfileOAuthSync,
75
+ loadProfileConfig,
76
+ saveProfileOAuthSync
77
+ } from "./chunk-BYMV6QZG.js";
69
78
  import "./chunk-A7GB5UGH.js";
70
79
  import "./chunk-OLZBQWZU.js";
71
- import "./chunk-AJHEFRGJ.js";
72
- import "./chunk-NHRQCXIQ.js";
80
+ import "./chunk-Q67DOFOO.js";
81
+ import "./chunk-VMFTFOWF.js";
73
82
  import {
74
83
  asOptionalFiniteNumber
75
84
  } from "./chunk-WWC7I6TA.js";
76
- import "./chunk-I42VC5KR.js";
77
85
  import "./chunk-QSJ3HFEF.js";
86
+ import {
87
+ isRecord
88
+ } from "./chunk-KUG52IAP.js";
78
89
  import {
79
90
  asTrimmedString
80
91
  } from "./chunk-3EUW3WEO.js";
81
92
  import "./chunk-U6VC4MU4.js";
82
- import {
83
- isRecord
84
- } from "./chunk-KUG52IAP.js";
85
93
  import "./chunk-LCBAMY2M.js";
86
94
  import "./chunk-4SN6J65J.js";
87
95
  import "./chunk-CF7PE763.js";
@@ -652,10 +660,51 @@ Waiting for browser authentication... (polling ${CURSOR_POLL_URL})`
652
660
  };
653
661
  }
654
662
 
663
+ // packages/cli/oauth/flows/devin.ts
664
+ import { createInterface as createInterface2 } from "node:readline/promises";
665
+ async function runDevinOAuthLogin(deps = {}) {
666
+ const detect = deps.detectCredentialsFn ?? detectLocalDevinCredentials;
667
+ const local = detect();
668
+ if (local.found && local.token) {
669
+ deps.output?.log?.(
670
+ `Detected existing local Devin credentials from ${local.source} (${local.sourcePath}). Linking directly...`
671
+ );
672
+ return {
673
+ ...buildDevinOAuthCredential(local.token),
674
+ metadata: {
675
+ source: local.source,
676
+ sourcePath: local.sourcePath
677
+ }
678
+ };
679
+ }
680
+ const authUrl = buildDevinAuthUrl();
681
+ deps.output?.log?.("\nNo local Devin CLI credentials found (~/.local/share/devin/credentials.toml).");
682
+ deps.output?.log?.("Tip: You can run `devin auth login` in another terminal to authenticate automatically.\n");
683
+ deps.output?.log?.("Alternatively, paste your Devin session token (devin-session-token$... or token from windsurf.com/show-auth-token) below:");
684
+ let input = "";
685
+ if (deps.readLine) {
686
+ input = await deps.readLine("Devin Token: ");
687
+ } else {
688
+ const rl = createInterface2({
689
+ input: process.stdin,
690
+ output: process.stdout
691
+ });
692
+ try {
693
+ input = await rl.question("Devin Token: ");
694
+ } finally {
695
+ rl.close();
696
+ }
697
+ }
698
+ const token = extractDevinToken(input);
699
+ if (!token) {
700
+ throw new Error("No valid Devin token provided");
701
+ }
702
+ return buildDevinOAuthCredential(token);
703
+ }
704
+
655
705
  // packages/cli/oauth/authCommand.ts
656
- var SYNC_HELP_LINE = ` --sync-to-server After local save, push the credential to your nolo server
657
- (default when NOLO_SERVER + AUTH_TOKEN / profile are set).
658
- --no-sync-to-server Skip server sync even when server config is available.
706
+ var SYNC_HELP_LINE = ` --sync-to-server After local save, push the credential to your nolo server and remember this choice.
707
+ --no-sync-to-server Skip server sync and remember this choice (keeps credentials local only).
659
708
  --sync-only Push $NOLO_HOME/credentials/<provider>.json (or ~/.nolo/credentials when NOLO_HOME is unset) to the server without re-login.`;
660
709
  var CHATGPT_HELP_TEXT = `Authorize nolo-cli to call the OpenAI Codex / ChatGPT Plus API on your behalf.
661
710
 
@@ -765,6 +814,26 @@ Docker environments too.
765
814
  After approval, tokens are stored in $NOLO_HOME/credentials/cursor.json (or ~/.nolo/credentials/cursor.json when NOLO_HOME is unset).
766
815
  Agents can reference the stored token with apiKeyRef: "cursor".
767
816
 
817
+ Options:
818
+ --no-browser Print the authorization URL without opening a browser.
819
+ ${SYNC_HELP_LINE}
820
+ --help, -h Show this help and exit.
821
+ `;
822
+ var DEVIN_HELP_TEXT = `Authorize nolo-cli to call Devin models (including free SWE-2) via your Devin Pro subscription.
823
+
824
+ This authorizes model API access only. It does NOT log you into the Nolo
825
+ platform. To manage agents, docs, spaces, and other Nolo resources, run
826
+ "nolo login" first.
827
+
828
+ Usage: nolo auth devin [--no-browser] [--sync-to-server] [--help]
829
+
830
+ The flow automatically checks for existing local Devin CLI credentials
831
+ (~/.local/share/devin/credentials.toml). If not found, it opens the Devin
832
+ login page in your browser and prompts for the session token or redirect URL.
833
+
834
+ After approval, tokens are stored in $NOLO_HOME/credentials/devin.json (or ~/.nolo/credentials/devin.json when NOLO_HOME is unset).
835
+ Agents can reference the stored token with apiKeyRef: "devin".
836
+
768
837
  Options:
769
838
  --no-browser Print the authorization URL without opening a browser.
770
839
  ${SYNC_HELP_LINE}
@@ -817,7 +886,8 @@ var HELP_BY_PROVIDER = {
817
886
  antigravity: ANTIGRAVITY_HELP_TEXT,
818
887
  claude: CLAUDE_HELP_TEXT,
819
888
  cloudflare: CLOUDFLARE_HELP_TEXT,
820
- cursor: CURSOR_HELP_TEXT
889
+ cursor: CURSOR_HELP_TEXT,
890
+ devin: DEVIN_HELP_TEXT
821
891
  };
822
892
  function resolveServerSyncConfig() {
823
893
  const envServer = process.env.NOLO_SERVER?.trim() || process.env.NOLO_SERVER_URL?.trim() || process.env.BASE_URL?.trim() || "";
@@ -873,6 +943,7 @@ async function syncCredentialToServer(provider, credential, deps) {
873
943
  });
874
944
  if (res.ok) {
875
945
  output.log(`[nolo] Synced to ${serverOrigin}`);
946
+ output.log(`[nolo] \u7F51\u9875\u7AEF\u73B0\u5728\u53EF\u4EE5\u4F7F\u7528\u8BE5\u8BA2\u9605\u4E86\u3002`);
876
947
  } else {
877
948
  let errorDetail = "";
878
949
  try {
@@ -904,9 +975,6 @@ async function runAuthProviderCommand(provider, args, _ctx, deps = {}) {
904
975
  const useBrowser = args.includes("--browser");
905
976
  const noBrowser = args.includes("--no-browser") || deps.noBrowserByDefault;
906
977
  const syncOnly = args.includes("--sync-only");
907
- const syncConfigAvailable = !!(deps.resolveServerSyncConfig ?? resolveServerSyncConfig)();
908
- const autoSyncDisabled = args.includes("--no-sync-to-server") || process.env.NOLO_OAUTH_AUTO_SYNC === "0";
909
- const syncToServer = syncOnly || args.includes("--sync-to-server") || syncConfigAvailable && !autoSyncDisabled;
910
978
  const generateToken = args.includes("--generate-token");
911
979
  const writeToEnvRaw = parseFlagWithOptionalValue(args, "--write-to-env");
912
980
  const writeToEnvPath = typeof writeToEnvRaw === "string" ? writeToEnvRaw : writeToEnvRaw === true ? ".env" : void 0;
@@ -947,6 +1015,8 @@ async function runAuthProviderCommand(provider, args, _ctx, deps = {}) {
947
1015
  credential = await runAnthropicOAuthLogin(flowDeps);
948
1016
  } else if (provider === "cursor") {
949
1017
  credential = await runCursorOAuthLogin(flowDeps);
1018
+ } else if (provider === "devin") {
1019
+ credential = await runDevinOAuthLogin(flowDeps);
950
1020
  } else if (provider === "cloudflare") {
951
1021
  credential = await runCloudflareOAuthLogin({
952
1022
  ...flowDeps,
@@ -987,7 +1057,73 @@ Store it as CLOUDFLARE_EMAIL_ROUTING_API_TOKEN:
987
1057
  output.log(
988
1058
  `[nolo] ${provider} authorization saved` + (accountLabel ? ` for ${accountLabel}` : "") + `.`
989
1059
  );
990
- if (syncToServer) {
1060
+ const hasExplicitNoSync = args.includes("--no-sync-to-server");
1061
+ const hasExplicitSync = args.includes("--sync-to-server");
1062
+ const envAutoSync = process.env.NOLO_OAUTH_AUTO_SYNC;
1063
+ const getOAuthSync = deps.getOAuthSyncPreference ?? ((p) => getProfileOAuthSync(p));
1064
+ const setOAuthSync = deps.setOAuthSyncPreference ?? ((p, s) => {
1065
+ saveProfileOAuthSync(p, s);
1066
+ });
1067
+ let shouldSync = false;
1068
+ if (hasExplicitNoSync || envAutoSync === "0") {
1069
+ if (hasExplicitNoSync) {
1070
+ setOAuthSync(provider, false);
1071
+ }
1072
+ shouldSync = false;
1073
+ } else if (hasExplicitSync || envAutoSync === "1") {
1074
+ if (hasExplicitSync) {
1075
+ setOAuthSync(provider, true);
1076
+ }
1077
+ shouldSync = true;
1078
+ } else {
1079
+ const remembered = getOAuthSync(provider);
1080
+ if (remembered !== void 0) {
1081
+ shouldSync = remembered;
1082
+ } else {
1083
+ const syncConfig = (deps.resolveServerSyncConfig ?? resolveServerSyncConfig)();
1084
+ if (!syncConfig) {
1085
+ shouldSync = false;
1086
+ output.log(
1087
+ `[nolo] \u672A\u914D\u7F6E\u670D\u52A1\u5668\u3002\u5982\u9700\u5728\u7F51\u9875\u7AEF\u4F7F\u7528\uFF0C\u8BF7\u5148\u8FD0\u884C nolo login\uFF0C\u518D\u8FD0\u884C nolo auth ${provider} --sync-only`
1088
+ );
1089
+ } else {
1090
+ const isTTY = typeof deps.isTTY === "function" ? deps.isTTY() : deps.isTTY ?? Boolean(process.stdin.isTTY && process.stdout.isTTY);
1091
+ if (isTTY) {
1092
+ const question = `\u540C\u6B65\u5230 ${syncConfig.serverOrigin}\uFF0C\u8BA9\u7F51\u9875\u7AEF\u4E5F\u80FD\u4F7F\u7528\u8FD9\u4E2A ${provider} \u8BA2\u9605\uFF1F\u51ED\u8BC1\u52A0\u5BC6\u5B58\u50A8\uFF0C\u53EF\u968F\u65F6 nolo auth ${provider} --no-sync-to-server \u5173\u95ED [Y/n] `;
1093
+ let answer;
1094
+ if (deps.promptOAuthSync) {
1095
+ answer = await deps.promptOAuthSync(question);
1096
+ } else if (deps.readLine) {
1097
+ const raw = await deps.readLine(question);
1098
+ const trimmed = raw.trim().toLowerCase();
1099
+ answer = trimmed === "" || trimmed === "y" || trimmed === "yes";
1100
+ } else {
1101
+ const readline = await import("node:readline");
1102
+ const rl = readline.createInterface({
1103
+ input: process.stdin,
1104
+ output: process.stdout
1105
+ });
1106
+ const raw = await new Promise((resolve) => {
1107
+ rl.question(question, (ans) => {
1108
+ rl.close();
1109
+ resolve(ans);
1110
+ });
1111
+ });
1112
+ const trimmed = raw.trim().toLowerCase();
1113
+ answer = trimmed === "" || trimmed === "y" || trimmed === "yes";
1114
+ }
1115
+ setOAuthSync(provider, answer);
1116
+ shouldSync = answer;
1117
+ } else {
1118
+ shouldSync = false;
1119
+ output.log(
1120
+ `[nolo] \u672A\u540C\u6B65\u51ED\u636E\u5230\u670D\u52A1\u5668\u3002\u5982\u9700\u7F51\u9875\u7AEF\u4F7F\u7528\uFF0C\u8BF7\u8FD0\u884C: nolo auth ${provider} --sync-to-server\uFF08\u6216 --sync-only\uFF09`
1121
+ );
1122
+ }
1123
+ }
1124
+ }
1125
+ }
1126
+ if (shouldSync) {
991
1127
  await syncCredentialToServer(provider, credential, deps);
992
1128
  }
993
1129
  return 0;
@@ -1016,6 +1152,9 @@ async function runAuthClaudeCommand(args, ctx, deps) {
1016
1152
  async function runAuthCursorCommand(args, ctx, deps) {
1017
1153
  return runAuthProviderCommand("cursor", args, ctx, deps);
1018
1154
  }
1155
+ async function runAuthDevinCommand(args, ctx, deps) {
1156
+ return runAuthProviderCommand("devin", args, ctx, deps);
1157
+ }
1019
1158
  export {
1020
1159
  resolveServerSyncConfig,
1021
1160
  runAuthAntigravityCommand,
@@ -1023,6 +1162,7 @@ export {
1023
1162
  runAuthClaudeCommand,
1024
1163
  runAuthCloudflareCommand,
1025
1164
  runAuthCursorCommand,
1165
+ runAuthDevinCommand,
1026
1166
  runAuthProviderCommand,
1027
1167
  runAuthXaiCommand
1028
1168
  };
@@ -7,17 +7,16 @@ import {
7
7
  runLogoutCommand,
8
8
  runWhoamiCommand,
9
9
  saveTokenLogin
10
- } from "./chunk-E6RGHPDR.js";
10
+ } from "./chunk-6D6VBVEW.js";
11
11
  import "./chunk-ESHYE7WU.js";
12
12
  import "./chunk-JBTJAPUF.js";
13
- import "./chunk-C3FZR5EC.js";
13
+ import "./chunk-2F7RJC6L.js";
14
14
  import "./chunk-GLKOYSRU.js";
15
- import "./chunk-2KDR4CWE.js";
15
+ import "./chunk-BYMV6QZG.js";
16
16
  import "./chunk-A7GB5UGH.js";
17
17
  import "./chunk-OLZBQWZU.js";
18
- import "./chunk-NHRQCXIQ.js";
18
+ import "./chunk-VMFTFOWF.js";
19
19
  import "./chunk-WWC7I6TA.js";
20
- import "./chunk-I42VC5KR.js";
21
20
  import "./chunk-3EUW3WEO.js";
22
21
  import "./chunk-U6VC4MU4.js";
23
22
  import "./chunk-LCBAMY2M.js";
@@ -0,0 +1,33 @@
1
+ import {
2
+ CAPABILITY_SLUG_COLLISIONS,
3
+ listBuiltinCapabilities,
4
+ listBuiltinSkills,
5
+ resolveBuiltinCapability,
6
+ resolveBuiltinSkillByName,
7
+ resolveBuiltinSkillEntry,
8
+ resolveBuiltinSkillPage,
9
+ resolveBuiltinSkillSlug
10
+ } from "./chunk-JRQFUXY7.js";
11
+ import "./chunk-DHDMC6FO.js";
12
+ import "./chunk-Q554LLSI.js";
13
+ import "./chunk-KHCLMKZZ.js";
14
+ import "./chunk-O6OSWFZQ.js";
15
+ import "./chunk-QDSINZM3.js";
16
+ import "./chunk-VMFTFOWF.js";
17
+ import "./chunk-WWC7I6TA.js";
18
+ import "./chunk-BNGW5ASC.js";
19
+ import "./chunk-M2EJHDJP.js";
20
+ import "./chunk-3EUW3WEO.js";
21
+ import "./chunk-U6VC4MU4.js";
22
+ import "./chunk-G3SUCT4W.js";
23
+ import "./chunk-4VNS5WPM.js";
24
+ export {
25
+ CAPABILITY_SLUG_COLLISIONS,
26
+ listBuiltinCapabilities,
27
+ listBuiltinSkills,
28
+ resolveBuiltinCapability,
29
+ resolveBuiltinSkillByName,
30
+ resolveBuiltinSkillEntry,
31
+ resolveBuiltinSkillPage,
32
+ resolveBuiltinSkillSlug
33
+ };
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-YPREESF4.js";
5
5
  import {
6
6
  handleSendMessage
7
- } from "./chunk-D74EWXL4.js";
8
- import "./chunk-EVBFYPDC.js";
9
- import "./chunk-HQUORJTM.js";
7
+ } from "./chunk-LBEDNSMY.js";
8
+ import "./chunk-MC4XLIJ7.js";
9
+ import "./chunk-3BMYXEUW.js";
10
10
  import "./chunk-YYLHWIW6.js";
11
11
  import "./chunk-AGGIDPCZ.js";
12
- import "./chunk-QUH3XHL5.js";
13
- import "./chunk-BJCWNHVU.js";
12
+ import "./chunk-H3PIH2EO.js";
13
+ import "./chunk-TOP2VXOR.js";
14
14
  import "./chunk-5RGU3J7P.js";
15
15
  import {
16
16
  clearPendingUserInputQueue,
@@ -21,42 +21,42 @@ import {
21
21
  } from "./chunk-6YTOJY35.js";
22
22
  import "./chunk-M76ECQRD.js";
23
23
  import "./chunk-YDH3FDFQ.js";
24
- import "./chunk-DSRXPQWA.js";
25
- import "./chunk-E36HZARC.js";
26
- import "./chunk-K7AG465Q.js";
24
+ import "./chunk-JAXOVNM4.js";
25
+ import "./chunk-WADCY6G6.js";
27
26
  import "./chunk-PSCNXBYA.js";
27
+ import "./chunk-GQBOR3G6.js";
28
28
  import "./chunk-BYXBJQAS.js";
29
- import "./chunk-UJ63UXGE.js";
29
+ import "./chunk-OIVSQH2O.js";
30
30
  import "./chunk-DWLEOOGR.js";
31
- import "./chunk-3JQ2NRYU.js";
31
+ import "./chunk-HVURBGF3.js";
32
32
  import "./chunk-ONXOABJR.js";
33
33
  import "./chunk-W7XHHYWM.js";
34
34
  import "./chunk-HNMXYYJR.js";
35
- import "./chunk-BYEJ7K2Z.js";
36
- import "./chunk-NG4UT4K4.js";
37
- import "./chunk-AJHEFRGJ.js";
38
- import "./chunk-XWNRAIUL.js";
35
+ import "./chunk-7S4YWN7P.js";
36
+ import "./chunk-ACTMNVHM.js";
37
+ import "./chunk-Q67DOFOO.js";
38
+ import "./chunk-AFUORTY4.js";
39
39
  import "./chunk-Y5GCAMGP.js";
40
- import "./chunk-UZ6XXCVR.js";
40
+ import "./chunk-QDSINZM3.js";
41
41
  import "./chunk-KX6YBIHG.js";
42
- import "./chunk-ZZCJUXUI.js";
42
+ import "./chunk-V4MJDUSR.js";
43
43
  import "./chunk-UAD2WT54.js";
44
- import "./chunk-YFADVSZE.js";
45
- import "./chunk-NHRQCXIQ.js";
44
+ import "./chunk-H62HCIUP.js";
45
+ import "./chunk-VMFTFOWF.js";
46
46
  import "./chunk-WWC7I6TA.js";
47
- import "./chunk-I42VC5KR.js";
48
- import "./chunk-SREASRV5.js";
47
+ import "./chunk-ABQYVJBJ.js";
49
48
  import "./chunk-QSJ3HFEF.js";
50
- import "./chunk-5J7W2VWW.js";
51
- import "./chunk-BJIRLHJR.js";
52
- import "./chunk-3RAG2NAD.js";
49
+ import "./chunk-WV42OMV7.js";
50
+ import "./chunk-BNGW5ASC.js";
51
+ import "./chunk-M2EJHDJP.js";
52
+ import "./chunk-UKWGR5SS.js";
53
53
  import "./chunk-QOKAKDPE.js";
54
54
  import "./chunk-OW765XBU.js";
55
55
  import "./chunk-SEJ5OS6F.js";
56
56
  import "./chunk-GBRG75BQ.js";
57
+ import "./chunk-KUG52IAP.js";
57
58
  import "./chunk-3EUW3WEO.js";
58
59
  import "./chunk-U6VC4MU4.js";
59
- import "./chunk-KUG52IAP.js";
60
60
  import "./chunk-LCBAMY2M.js";
61
61
  import "./chunk-4SN6J65J.js";
62
62
  import "./chunk-CF7PE763.js";
@@ -3,7 +3,7 @@ import {
3
3
  NOLO_CHROME_CONNECTOR_PROTOCOL_VERSION,
4
4
  REQUIRED_CHROME_CONNECTOR_FEATURES,
5
5
  createChromeConnectorClient
6
- } from "./chunk-QCZX4FTW.js";
6
+ } from "./chunk-SH43IESU.js";
7
7
  import {
8
8
  toErrorMessage
9
9
  } from "./chunk-HNMXYYJR.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createChromeConnectorClient
3
- } from "./chunk-QCZX4FTW.js";
3
+ } from "./chunk-SH43IESU.js";
4
4
  import {
5
5
  toErrorMessage
6
6
  } from "./chunk-HNMXYYJR.js";
@@ -23,6 +23,18 @@ function wantsHelp(args) {
23
23
  function readTrimmedOption(args, flag) {
24
24
  return (readOption(args, flag) ?? "").trim();
25
25
  }
26
+ function readAllOptions(args, flag) {
27
+ const values = [];
28
+ for (let i = 0; i < args.length; i++) {
29
+ if (args[i] === flag && i + 1 < args.length) {
30
+ const val = args[i + 1].trim();
31
+ if (val && !val.startsWith("--")) {
32
+ values.push(val);
33
+ }
34
+ }
35
+ }
36
+ return values;
37
+ }
26
38
  function readIntOption(args, flag, usage) {
27
39
  const raw = readOption(args, flag);
28
40
  if (raw === void 0) return void 0;
@@ -112,6 +124,24 @@ var CHROME_OPS_SUBCOMMANDS = {
112
124
  };
113
125
  }
114
126
  },
127
+ upload: {
128
+ action: "set_files",
129
+ usage: "nolo chrome upload --tab <id> (--ref <elementRef> | --selector <css>) --file <path> [--file <path>...]",
130
+ payload: (args, usage) => {
131
+ const files = readAllOptions(args, "--file");
132
+ if (files.length === 0) {
133
+ throw new Error(`Missing required --file <path>. Usage: ${usage}`);
134
+ }
135
+ const target = requireTarget(args, usage);
136
+ const tabId = requireTabId(args, usage);
137
+ return {
138
+ tabId,
139
+ ...target,
140
+ ...target.elementRef ? { ref: target.elementRef } : {},
141
+ files
142
+ };
143
+ }
144
+ },
115
145
  press: {
116
146
  action: "press",
117
147
  usage: "nolo chrome press --tab <id> --key <key>",