nolo-cli 0.157.0-alpha.1 → 0.157.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 (164) hide show
  1. package/{_executeModel-5WS2PA62.js → _executeModel-ZIQHOREX.js} +55 -55
  2. package/{accountResolver-7RYB4D2P.js → accountResolver-55EDKEIK.js} +1 -1
  3. package/{action-ZJYUBXFC.js → action-GPPJC5TI.js} +5 -5
  4. package/{addContentAction-TVHB4526.js → addContentAction-XJQEJ4XW.js} +8 -8
  5. package/{addDialogAgentAction-FDPBU6K6.js → addDialogAgentAction-5WZX5CAY.js} +7 -7
  6. package/{agentDeleteCommand-Q6M4F3U6.js → agentDeleteCommand-LQSOJEXY.js} +75 -76
  7. package/{agentEmailCommands-FNH6FEHS.js → agentEmailCommands-HTPKXONW.js} +78 -79
  8. package/{agentListCommands-JUNMFS6E.js → agentListCommands-GOCGOQUB.js} +36 -36
  9. package/{agentMachineCommands-VNLDEKNT.js → agentMachineCommands-T7DAZG77.js} +35 -32
  10. package/{agentProviderCommands-X2HQE6HY.js → agentProviderCommands-CXBHNONN.js} +5 -5
  11. package/{agentPullCommand-FA43RBRU.js → agentPullCommand-GXXEDOSA.js} +4 -4
  12. package/{agentRecordCommands-47XXRVPI.js → agentRecordCommands-HSW3RJ4H.js} +72 -73
  13. package/{agentRunCommand-QEXFJUXQ.js → agentRunCommand-TIRJ57DK.js} +75 -75
  14. package/{agentRunControl-2C5GM3BW.js → agentRunControl-QWFFIAQY.js} +9 -7
  15. package/{agentRuntimeLocal-O5GDAFTN.js → agentRuntimeLocal-J6I63NZC.js} +21 -19
  16. package/{agentSlice-E3XS5FTQ.js → agentSlice-JNM3HF3V.js} +8 -8
  17. package/{appDeleteCommands-C2J5RQ3I.js → appDeleteCommands-KKLAK2UR.js} +31 -29
  18. package/{appDeployCommands-3YRK7PSU.js → appDeployCommands-PXWK4FAX.js} +31 -29
  19. package/{appDeployStatusCommands-FPAX7MOK.js → appDeployStatusCommands-3NGWDZTX.js} +31 -29
  20. package/{appGetCommands-XAC2V766.js → appGetCommands-APWYPEO3.js} +31 -29
  21. package/{appListCommands-ZJL2W5O7.js → appListCommands-OP7IRALO.js} +31 -29
  22. package/{authCommand-J3XILHWW.js → authCommand-3Z52KJID.js} +22 -302
  23. package/{authCommands-77CHYBGF.js → authCommands-QOCKVPX3.js} +5 -5
  24. package/{builtinSkillRegistry-A6VSPJEJ.js → builtinSkillRegistry-LJV7FHNI.js} +4 -4
  25. package/{chromeCommands-OBBNJCLS.js → chromeCommands-IY4NVSXZ.js} +17 -10
  26. package/{chunk-SW4S4XYB.js → chunk-2AB2HA4M.js} +84 -34
  27. package/{chunk-C5VPAHIU.js → chunk-32ZKZET7.js} +1 -1
  28. package/{chunk-XPWGOTBQ.js → chunk-3L2WKC3W.js} +1 -8
  29. package/{chunk-3XZKV7QQ.js → chunk-3L5MSPWX.js} +1 -1
  30. package/{chunk-QLQ573SU.js → chunk-3M52COK5.js} +120 -0
  31. package/{chunk-VSOWPETY.js → chunk-4226O6F7.js} +10 -10
  32. package/{chunk-Z6KQDSZW.js → chunk-43OFVLWJ.js} +6 -6
  33. package/{chunk-TJ2VPCBE.js → chunk-4JCAW7TO.js} +2 -2
  34. package/{chunk-6TF64IF2.js → chunk-4L4K6YR7.js} +16 -2
  35. package/{chunk-PEO24UB5.js → chunk-5E5VB7PS.js} +324 -57
  36. package/{chunk-ZD2BLOY6.js → chunk-5EDQTOUR.js} +7 -7
  37. package/{chunk-HKT6QXP3.js → chunk-5IKRTRRR.js} +5 -5
  38. package/{chunk-P5QACQDK.js → chunk-62TBKWTV.js} +1 -1
  39. package/{chunk-TRW43TSC.js → chunk-6EQD4AQL.js} +41 -1
  40. package/{chunk-YLMMECCH.js → chunk-6XIE5ZGI.js} +1 -1
  41. package/{chunk-OH2M7WEU.js → chunk-6Y3ETA2Y.js} +3 -3
  42. package/{chunk-7A4LJCDR.js → chunk-B3ZIFOFI.js} +5 -5
  43. package/{chunk-WZ6OU4NX.js → chunk-BAWAKW7X.js} +2 -2
  44. package/{chunk-UUPR3TD7.js → chunk-BL4HFN6L.js} +2 -4
  45. package/{chunk-2GGXHQIW.js → chunk-BLVSFYQ3.js} +4 -2
  46. package/{chunk-HP6O6LTV.js → chunk-CDLP56BS.js} +9 -9
  47. package/{chunk-UTIMX333.js → chunk-DJ2BOPJY.js} +1 -1
  48. package/{chunk-36OMEXXR.js → chunk-DLV3H464.js} +8 -8
  49. package/{chunk-CE7PIHQD.js → chunk-ESMZW5PE.js} +3 -3
  50. package/{chunk-PSJWPSKS.js → chunk-EWO77ZGF.js} +9 -43
  51. package/{chunk-ZWG3C7VI.js → chunk-F3SOW2EU.js} +81 -1
  52. package/{chunk-FY4SDK2E.js → chunk-FDLDMJTM.js} +1 -1
  53. package/{chunk-KOB75UNU.js → chunk-FHG46N5C.js} +53 -4
  54. package/{chunk-7KYVUFDG.js → chunk-G3VYRPTV.js} +5 -267
  55. package/{chunk-DW7MGLMG.js → chunk-GGUTTH6C.js} +35 -207
  56. package/{chunk-6MJNEXUU.js → chunk-HGDKT2D6.js} +4 -0
  57. package/{chunk-B2EGWZJG.js → chunk-I7S63QUU.js} +1 -1
  58. package/{chunk-ROPSATAB.js → chunk-IF7V3CBU.js} +1 -1
  59. package/chunk-IKOKYBYJ.js +2685 -0
  60. package/{chunk-T6CBQ6BN.js → chunk-INFHX73M.js} +1 -1
  61. package/{chunk-YBNHPX4S.js → chunk-IW64YHXL.js} +155 -31
  62. package/{chunk-K43ZF2C3.js → chunk-JPPQ3GUO.js} +1 -1
  63. package/{chunk-TZTWMGE3.js → chunk-JWEXJ573.js} +3 -3
  64. package/{chunk-RUNKPFM5.js → chunk-K6Y5T4GE.js} +12 -8
  65. package/{chunk-MVJVF4ED.js → chunk-KESKU5BG.js} +18 -17
  66. package/{chunk-I2ZMGXXF.js → chunk-KFHREHUQ.js} +1 -1
  67. package/{chunk-3C2QLERX.js → chunk-KMDDG73K.js} +1 -1
  68. package/{chunk-5MM7NNO6.js → chunk-KSTEXKL6.js} +78 -39
  69. package/{chunk-EM3YOZJ4.js → chunk-L2JMH4I5.js} +3 -3
  70. package/{chunk-MM3662RS.js → chunk-LPO6AMQU.js} +780 -64
  71. package/{chunk-D4OWHT5Y.js → chunk-MAYW6V3E.js} +2 -2
  72. package/{chunk-IPAW7XLD.js → chunk-MFVOJ6KF.js} +2 -2
  73. package/{chunk-FDT27L7S.js → chunk-MLEANT7D.js} +19 -17
  74. package/{chunk-7GC3EKUG.js → chunk-MMSQTZCJ.js} +3 -3
  75. package/{chunk-XFKZ3MCV.js → chunk-MR3ITQEV.js} +344 -88
  76. package/{chunk-CBHGZRCE.js → chunk-MYOH447Z.js} +1 -1
  77. package/{chunk-6MPAEODB.js → chunk-NHEWV5FD.js} +17 -3
  78. package/{chunk-ZEHTARJA.js → chunk-NLFTBC6S.js} +321 -150
  79. package/{chunk-SKPPKHD3.js → chunk-OLUKIUX6.js} +2 -2
  80. package/{chunk-SUKSWFLP.js → chunk-PIG2IUVZ.js} +1 -1
  81. package/{chunk-SEJ5OS6F.js → chunk-PXYBUFDB.js} +4 -0
  82. package/{chunk-2MTE2PEH.js → chunk-QA2C5NKI.js} +5 -739
  83. package/{chunk-L6EQV5OC.js → chunk-QXZH5UDF.js} +3 -3
  84. package/{chunk-TNIX77YM.js → chunk-R5GO3YZP.js} +34 -1
  85. package/{chunk-X5SUT4CN.js → chunk-R7GCGOGZ.js} +6 -6
  86. package/{chunk-4Z245KOA.js → chunk-SH3XD4E2.js} +8 -4
  87. package/{chunk-JGRPBIZZ.js → chunk-SQX235S2.js} +1 -1
  88. package/chunk-TT644UJD.js +188 -0
  89. package/{chunk-IYBIRCQV.js → chunk-U34KT53V.js} +29 -11
  90. package/{chunk-ANJTRG52.js → chunk-ULQAD7ZY.js} +18 -43
  91. package/{chunk-QDA4Y5O6.js → chunk-UVYSBQ2M.js} +21 -17
  92. package/{chunk-I2RMFLLH.js → chunk-V7PCFWX3.js} +1 -1
  93. package/{chunk-HXHSTRGH.js → chunk-VYNMQ6HW.js} +0 -27
  94. package/{chunk-G47IPDOK.js → chunk-W7FGZRLK.js} +1 -1
  95. package/{chunk-7BSQK2UC.js → chunk-WRCZXJ4N.js} +2 -2
  96. package/{chunk-KX6LPG7W.js → chunk-WYJTNSVL.js} +9 -9
  97. package/{chunk-H4KACZMG.js → chunk-XZIW3Q5B.js} +271 -138
  98. package/chunk-Y5GCAMGP.js +9 -0
  99. package/{chunk-JZX2XLKC.js → chunk-YCRROBDY.js} +1 -1
  100. package/{chunk-FPWT3RH2.js → chunk-YN5DT4JS.js} +22 -22
  101. package/{chunk-SCJD2PNK.js → chunk-YPG7TUQD.js} +3 -3
  102. package/{chunk-EJU23ST5.js → chunk-ZKVS36H3.js} +5069 -3730
  103. package/{chunk-YANF2RR4.js → chunk-ZPKUJROL.js} +1 -1
  104. package/{chunk-TYND6RDQ.js → chunk-ZZDVBZOP.js} +74 -3
  105. package/{commandRegistry-OUBQIF62.js → commandRegistry-DR2RPWK6.js} +88 -96
  106. package/{contentThunks-B3FRQGP7.js → contentThunks-CSJDJDEJ.js} +21 -21
  107. package/{createAgentAutomationAction-T2YFJ6MY.js → createAgentAutomationAction-ISEUEQSY.js} +21 -21
  108. package/{createDialogAction-2NFGFBXW.js → createDialogAction-HUCFOZY3.js} +25 -25
  109. package/{createPageAction-LDAVZDN7.js → createPageAction-DT5CYXCL.js} +24 -25
  110. package/{dbSlice-5QGKMQLO.js → dbSlice-6PVPY44C.js} +7 -7
  111. package/{deleteFile-EW6QNRRT.js → deleteFile-YM6NDPAR.js} +5 -5
  112. package/{dialogCommands-ZLBEAQHE.js → dialogCommands-3W6AIUXT.js} +35 -32
  113. package/{dialogSlice-64S3J6CP.js → dialogSlice-WJEEPG4W.js} +20 -20
  114. package/{dist-NJC2W7I4.js → dist-Q2JSMAKA.js} +7 -361
  115. package/{docCreateCommands-XOG5BBFQ.js → docCreateCommands-KQHQNLRX.js} +32 -30
  116. package/{docDeleteCommands-NCW3BBRX.js → docDeleteCommands-O3DWFX2W.js} +33 -31
  117. package/{docReadCommands-OT7X44Y3.js → docReadCommands-2U2BUONC.js} +32 -30
  118. package/{docStore-NIP7OO4I.js → docStore-7JPYT25V.js} +8 -8
  119. package/{docUpdateCommands-JW7OWW2J.js → docUpdateCommands-MF3C52XI.js} +32 -30
  120. package/{getPricing-TX35D7PI.js → getPricing-XQ3N3RBP.js} +2 -2
  121. package/{handleSendMessageAction-TOKA7ED7.js → handleSendMessageAction-BV5FMID4.js} +43 -39
  122. package/index.js +8 -8
  123. package/{localRuntimeAdapter-EQM6LFYC.js → localRuntimeAdapter-6FBEJJ4D.js} +70 -69
  124. package/{localRuntimeAuthority-JDAD7CB6.js → localRuntimeAuthority-BPN5OAQG.js} +2 -2
  125. package/{localRuntimeDb-CVC62PM5.js → localRuntimeDb-QIVAXMUL.js} +1 -1
  126. package/{machineCommands-WJ7FZ67T.js → machineCommands-WCAFDI5N.js} +80 -79
  127. package/{machineWsRunDispatch-BQT4DEA2.js → machineWsRunDispatch-ZF6BBQ3X.js} +70 -71
  128. package/{memberThunks-KRV5YXOB.js → memberThunks-AZINUM4S.js} +10 -10
  129. package/package.json +6 -2
  130. package/{profileConfig-ZGOFORWV.js → profileConfig-KN3N2BLF.js} +7 -1
  131. package/{providerPresetApply-CRZFMQD5.js → providerPresetApply-PKUOHQJT.js} +5 -5
  132. package/{providerRegistry-7IS43D3X.js → providerRegistry-HNQLIFN2.js} +5 -5
  133. package/{read-5KAZHHDM.js → read-7JPIWRBQ.js} +5 -5
  134. package/{readDocTool-5QO34OSX.js → readDocTool-AAQTB2Y3.js} +1 -1
  135. package/{readlineWorkspace-JHJSU5DS.js → readlineWorkspace-I5MHMEUE.js} +375 -200
  136. package/{removeDialogAgentAction-6X63HMI3.js → removeDialogAgentAction-RMVRILLK.js} +9 -9
  137. package/{runAgentClientLoop-5QIGEALK.js → runAgentClientLoop-TSNSRQEP.js} +59 -54
  138. package/{runtimeDoctorCommands-56NWKNON.js → runtimeDoctorCommands-MMCP4B4U.js} +12 -12
  139. package/{secretCommands-ZXZRLR3R.js → secretCommands-DNY56NSU.js} +11 -1
  140. package/{setDialogExtraReferencesAction-4MAYKKYW.js → setDialogExtraReferencesAction-L3V7JTMG.js} +8 -8
  141. package/{setPrimaryDialogAgentAction-EGBAMREH.js → setPrimaryDialogAgentAction-X52JQGTJ.js} +9 -9
  142. package/settingThunks-N6XFWPOU.js +923 -0
  143. package/{spaceCommands-ZWDPTURU.js → spaceCommands-NDPGHDMD.js} +29 -27
  144. package/{streamAgentChatTurn-456DWXNY.js → streamAgentChatTurn-RJLDV4WZ.js} +154 -95
  145. package/{switchDialogAgentAction-YBKTD6DO.js → switchDialogAgentAction-ZJ5CGU7J.js} +7 -7
  146. package/{tableCommands-U3QDY4L6.js → tableCommands-IVC5S7Y3.js} +11 -11
  147. package/{toolApiClient-7WSJJJBV.js → toolApiClient-HGNO53TC.js} +2 -2
  148. package/{tools-IWNXKK4Y.js → tools-X6QNIYFJ.js} +43 -44
  149. package/{tuiSummaryLlmCaller-KLK6K3Q3.js → tuiSummaryLlmCaller-FESHBDTT.js} +7 -7
  150. package/{updateCommands-NQXAGFM7.js → updateCommands-FJHGWD3Q.js} +5 -3
  151. package/{updateDialogTitleAction-SX53FZWO.js → updateDialogTitleAction-6LURCTMG.js} +21 -21
  152. package/{workloadLifecycle-36DXRZKU.js → workloadLifecycle-6O6PMISX.js} +2 -2
  153. package/chunk-IA7TRNNR.js +0 -11
  154. package/chunk-UKZX3NHN.js +0 -48
  155. package/chunk-VAZHH6FO.js +0 -7012
  156. package/chunk-W4S6OTSC.js +0 -35
  157. package/clipboardy-GCO3GT3I.js +0 -11793
  158. package/settingThunks-FTDRZNSJ.js +0 -1371
  159. package/{agentGrantCommands-HOJ3JBBQ.js → agentGrantCommands-5DPHYEKP.js} +3 -3
  160. package/{chromeOpsCommands-3Z34RKSE.js → chromeOpsCommands-GZVVK7HU.js} +4 -4
  161. package/{chunk-XETG4RIX.js → chunk-AETZ7AD6.js} +4 -4
  162. package/{chunk-2IXDJNZI.js → chunk-GAGGEA7D.js} +3 -3
  163. package/{memoryCommands-CUNBFRVS.js → memoryCommands-ZS3VQJAL.js} +3 -3
  164. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-3GLX4QQY.js} +3 -3
@@ -3,7 +3,7 @@ import {
3
3
  parseFlagWithOptionalValue,
4
4
  runCloudflareOAuthLogin,
5
5
  upsertEnvVariable
6
- } from "./chunk-B2EGWZJG.js";
6
+ } from "./chunk-I7S63QUU.js";
7
7
  import {
8
8
  ANTHROPIC_OAUTH_AUTHORIZE_URL,
9
9
  ANTHROPIC_OAUTH_CALLBACK_PORT,
@@ -19,11 +19,6 @@ import {
19
19
  CURSOR_POLL_MAX_CONSECUTIVE_ERRORS,
20
20
  CURSOR_POLL_MAX_DELAY_MS,
21
21
  CURSOR_POLL_URL,
22
- WORKBUDDY_APP_VERSION,
23
- WORKBUDDY_POLL_INTERVAL_MS,
24
- WORKBUDDY_REQUEST_TIMEOUT_MS,
25
- WORKBUDDY_SIGN_IN_TIMEOUT_MS,
26
- WORKBUDDY_UA_VERSION,
27
22
  XAI_ACCESS_TOKEN_CLIENT_SKEW_MS,
28
23
  XAI_DEVICE_CODE_DEFAULT_EXPIRES_MS,
29
24
  XAI_DEVICE_CODE_DEFAULT_INTERVAL_MS,
@@ -39,9 +34,7 @@ import {
39
34
  XAI_TOKEN_REQUEST_TIMEOUT_MS,
40
35
  decodeJwtExp,
41
36
  generatePkcePair,
42
- getWorkBuddySite,
43
37
  normalizeAnthropicTokenPayload,
44
- normalizeWorkBuddyTokenPayload,
45
38
  readJsonBody,
46
39
  refreshAntigravityOAuthToken,
47
40
  renderDeviceCodeDisplay,
@@ -49,18 +42,16 @@ import {
49
42
  runAntigravityOAuthLogin,
50
43
  runOpenAiCodexBrowserPkce,
51
44
  runOpenAiCodexDeviceCode,
52
- sanitizeWorkBuddyDomain,
53
- sanitizeWorkBuddyError,
54
45
  startCallbackServer,
55
46
  validateXAIEndpoint,
56
47
  xaiOAuthDiscovery
57
- } from "./chunk-7KYVUFDG.js";
48
+ } from "./chunk-G3VYRPTV.js";
58
49
  import {
59
50
  t
60
- } from "./chunk-SW4S4XYB.js";
51
+ } from "./chunk-2AB2HA4M.js";
61
52
  import {
62
53
  defaultOpenBrowser
63
- } from "./chunk-36OMEXXR.js";
54
+ } from "./chunk-DLV3H464.js";
64
55
  import "./chunk-TY3TIUJK.js";
65
56
  import "./chunk-S73EPYNC.js";
66
57
  import "./chunk-ZEZC7IIM.js";
@@ -74,19 +65,30 @@ import {
74
65
  detectLocalDevinCredentials,
75
66
  extractDevinToken,
76
67
  fetchAntigravityCloudCodeCompletion
77
- } from "./chunk-3C2QLERX.js";
68
+ } from "./chunk-KMDDG73K.js";
78
69
  import "./chunk-HNUWUO75.js";
79
70
  import "./chunk-5ZUL4CUO.js";
80
71
  import "./chunk-5EMSBTQ6.js";
81
72
  import "./chunk-I42VC5KR.js";
82
73
  import "./chunk-U6VC4MU4.js";
83
- import "./chunk-JGRPBIZZ.js";
74
+ import "./chunk-FDLDMJTM.js";
75
+ import "./chunk-GLKOYSRU.js";
76
+ import {
77
+ parseUserIdFromAuthToken
78
+ } from "./chunk-A7GB5UGH.js";
79
+ import "./chunk-OLZBQWZU.js";
80
+ import "./chunk-LCBAMY2M.js";
81
+ import {
82
+ getProfileOAuthSync,
83
+ saveProfileOAuthSync
84
+ } from "./chunk-R5GO3YZP.js";
85
+ import "./chunk-SQX235S2.js";
84
86
  import {
85
87
  asOptionalFiniteNumber
86
88
  } from "./chunk-WWC7I6TA.js";
87
- import "./chunk-SUKSWFLP.js";
88
- import "./chunk-I2RMFLLH.js";
89
- import "./chunk-TRW43TSC.js";
89
+ import "./chunk-PIG2IUVZ.js";
90
+ import "./chunk-V7PCFWX3.js";
91
+ import "./chunk-6EQD4AQL.js";
90
92
  import "./chunk-5BHQICF2.js";
91
93
  import {
92
94
  isRecord
@@ -97,20 +99,9 @@ import {
97
99
  import {
98
100
  toErrorMessage
99
101
  } from "./chunk-HNMXYYJR.js";
100
- import "./chunk-FY4SDK2E.js";
101
- import "./chunk-GLKOYSRU.js";
102
- import {
103
- parseUserIdFromAuthToken
104
- } from "./chunk-A7GB5UGH.js";
105
- import "./chunk-OLZBQWZU.js";
106
- import "./chunk-LCBAMY2M.js";
107
102
  import "./chunk-4SN6J65J.js";
108
103
  import "./chunk-CF7PE763.js";
109
104
  import "./chunk-G3SUCT4W.js";
110
- import {
111
- getProfileOAuthSync,
112
- saveProfileOAuthSync
113
- } from "./chunk-TNIX77YM.js";
114
105
  import "./chunk-CGFNDIKK.js";
115
106
  import "./chunk-QSJ3HFEF.js";
116
107
  import {
@@ -725,219 +716,6 @@ async function runDevinOAuthLogin(deps = {}) {
725
716
  return buildDevinOAuthCredential(token);
726
717
  }
727
718
 
728
- // packages/cli/oauth/flows/workbuddy.ts
729
- import { randomBytes as randomBytes2 } from "node:crypto";
730
- function validateWorkBuddyAuthUrl(site, authUrlString) {
731
- let url;
732
- try {
733
- url = new URL(authUrlString);
734
- } catch {
735
- throw new Error(`Invalid WorkBuddy auth URL: "${authUrlString}"`);
736
- }
737
- if (url.protocol !== "https:") {
738
- throw new Error(`WorkBuddy sign-in page must use https:, got ${url.protocol}`);
739
- }
740
- const hostname = url.hostname.toLowerCase();
741
- if (site === "workbuddy") {
742
- const isAllowed = hostname === "copilot.tencent.com" || hostname.endsWith(".tencent.com");
743
- if (!isAllowed) {
744
- throw new Error(`Untrusted authorization host for WorkBuddy: ${hostname}`);
745
- }
746
- } else if (site === "workbuddy-ai") {
747
- const isAllowed = hostname === "www.workbuddy.ai" || hostname === "workbuddy.ai" || hostname.endsWith(".workbuddy.ai");
748
- if (!isAllowed) {
749
- throw new Error(`Untrusted authorization host for WorkBuddy AI: ${hostname}`);
750
- }
751
- }
752
- return url;
753
- }
754
- async function callWorkBuddyApi(siteConfig, method, path, headers, body, fetchImpl) {
755
- let response;
756
- try {
757
- response = await fetchImpl(`${siteConfig.endpoint}${path}`, {
758
- method,
759
- headers: {
760
- "Content-Type": "application/json",
761
- Accept: "application/json",
762
- "User-Agent": `WorkBuddy/${WORKBUDDY_UA_VERSION}`,
763
- ...headers
764
- },
765
- body: body === void 0 ? void 0 : JSON.stringify(body),
766
- signal: AbortSignal.timeout(WORKBUDDY_REQUEST_TIMEOUT_MS)
767
- });
768
- } catch (error) {
769
- throw new Error(
770
- sanitizeWorkBuddyError(`${siteConfig.name} API request failed: ${toErrorMessage(error)}`)
771
- );
772
- }
773
- let text = "";
774
- try {
775
- text = await response.text();
776
- } catch {
777
- }
778
- let env = {};
779
- try {
780
- env = JSON.parse(text);
781
- } catch {
782
- }
783
- const code = typeof env.code === "number" ? env.code : Number.parseInt(String(env.code ?? ""), 10) || 0;
784
- if (!response.ok) {
785
- const why = String(env.msg || env.message || text.slice(0, 200) || response.statusText);
786
- const err = new Error(
787
- sanitizeWorkBuddyError(
788
- `${siteConfig.name}: ${why} (HTTP ${response.status}${code ? `, code ${code}` : ""})`
789
- )
790
- );
791
- err.code = code;
792
- err.status = response.status;
793
- throw err;
794
- }
795
- if (code !== 0) {
796
- const why = String(env.msg || env.message || "error");
797
- const err = new Error(
798
- sanitizeWorkBuddyError(`${siteConfig.name}: ${why} (${code})`)
799
- );
800
- err.code = code;
801
- err.status = response.status;
802
- throw err;
803
- }
804
- return env.data;
805
- }
806
- async function pollWorkBuddyEndpoint(siteConfig, path, headers, retryCodes, deadline, fetchImpl, sleepFn, nowFn) {
807
- while (true) {
808
- if (nowFn() > deadline) {
809
- throw new Error(`${siteConfig.name} sign-in timed out. Please try again.`);
810
- }
811
- try {
812
- const data = await callWorkBuddyApi(siteConfig, "GET", path, headers, void 0, fetchImpl);
813
- if (data && typeof data === "object" && Object.keys(data).length > 0) {
814
- return data;
815
- }
816
- } catch (rawError) {
817
- const err = rawError;
818
- const isRetryable = typeof err.code === "number" && retryCodes.includes(err.code) || err.status === 408 || err.status === 429;
819
- if (!isRetryable) {
820
- throw rawError;
821
- }
822
- }
823
- await sleepFn(WORKBUDDY_POLL_INTERVAL_MS);
824
- }
825
- }
826
- async function resolveEnterpriseId(siteConfig, accessToken, domain, who, fetchImpl) {
827
- const own = typeof who.enterpriseId === "string" ? who.enterpriseId.trim() : "";
828
- if (own) return own;
829
- const type = String(who.type ?? "").trim().toLowerCase();
830
- if (!type || type === "personal") return "";
831
- try {
832
- const list = await callWorkBuddyApi(
833
- siteConfig,
834
- "GET",
835
- "/v2/plugin/accounts",
836
- {
837
- Authorization: `Bearer ${accessToken}`,
838
- "X-Domain": domain
839
- },
840
- void 0,
841
- fetchImpl
842
- );
843
- const mine = (list?.accounts ?? []).filter(
844
- (x) => x?.uid === who.uid && typeof x?.enterpriseId === "string" && x.enterpriseId.trim()
845
- );
846
- const same = mine.filter((x) => String(x.type ?? "").trim().toLowerCase() === type);
847
- const last = mine.filter((x) => x.lastLogin);
848
- const pick = same.length === 1 ? same[0] : last.length === 1 ? last[0] : mine.length === 1 ? mine[0] : void 0;
849
- return pick && typeof pick.enterpriseId === "string" ? pick.enterpriseId.trim() : "";
850
- } catch {
851
- return "";
852
- }
853
- }
854
- async function runWorkBuddyOAuthLogin(site, deps = {}) {
855
- const siteConfig = getWorkBuddySite(site);
856
- const output = deps.output ?? console;
857
- const fetchImpl = deps.fetchImpl ?? fetch;
858
- const sleepFn = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
859
- const nowFn = deps.now ?? (() => Date.now());
860
- const stateData = await callWorkBuddyApi(
861
- siteConfig,
862
- "POST",
863
- `/v2/plugin/auth/state?platform=${encodeURIComponent(siteConfig.platform)}`,
864
- {
865
- "X-No-Authorization": "true",
866
- "X-No-User-Id": "true",
867
- "X-No-Enterprise-Id": "true",
868
- "X-No-Department-Info": "true"
869
- },
870
- {},
871
- fetchImpl
872
- );
873
- if (!stateData?.state || !stateData?.authUrl) {
874
- throw new Error(`${siteConfig.name} gave no sign-in page`);
875
- }
876
- const validatedUrl = validateWorkBuddyAuthUrl(site, stateData.authUrl);
877
- validatedUrl.searchParams.set("version", WORKBUDDY_APP_VERSION);
878
- validatedUrl.searchParams.set("loginSessionId", randomBytes2(16).toString("hex"));
879
- const finalAuthUrl = validatedUrl.toString();
880
- output.log(
881
- `
882
- Open this URL in your browser to authorize ${siteConfig.name}:
883
- ${finalAuthUrl}
884
-
885
- Waiting for browser authentication...`
886
- );
887
- if (deps.openBrowser) {
888
- try {
889
- await deps.openBrowser(finalAuthUrl);
890
- } catch {
891
- }
892
- }
893
- const deadline = nowFn() + WORKBUDDY_SIGN_IN_TIMEOUT_MS;
894
- const qState = encodeURIComponent(stateData.state);
895
- const token = await pollWorkBuddyEndpoint(
896
- siteConfig,
897
- `/v2/plugin/auth/token?state=${qState}`,
898
- {},
899
- [11217],
900
- deadline,
901
- fetchImpl,
902
- sleepFn,
903
- nowFn
904
- );
905
- if (typeof token?.accessToken !== "string" || !token.accessToken.trim()) {
906
- throw new Error(`${siteConfig.name} sent back no token`);
907
- }
908
- const defaultHost = new URL(siteConfig.endpoint).host;
909
- const tokenDomain = sanitizeWorkBuddyDomain(token.domain, defaultHost);
910
- const who = await pollWorkBuddyEndpoint(
911
- siteConfig,
912
- `/v2/plugin/login/account?state=${qState}`,
913
- {
914
- Authorization: `Bearer ${token.accessToken}`,
915
- "X-Domain": tokenDomain,
916
- "X-No-User-Id": "true",
917
- "X-No-Enterprise-Id": "true"
918
- },
919
- [12151],
920
- deadline,
921
- fetchImpl,
922
- sleepFn,
923
- nowFn
924
- );
925
- const enterpriseId = await resolveEnterpriseId(
926
- siteConfig,
927
- token.accessToken,
928
- tokenDomain,
929
- who,
930
- fetchImpl
931
- );
932
- const now = nowFn();
933
- return normalizeWorkBuddyTokenPayload(site, {
934
- ...token,
935
- uid: who.uid,
936
- nickname: who.nickname || who.phoneNumber,
937
- enterpriseId: enterpriseId || who.enterpriseId
938
- }, void 0, now);
939
- }
940
-
941
719
  // packages/cli/oauth/authCommand.ts
942
720
  var SYNC_HELP_LINE = ` --sync-to-server After local save, push the credential to your nolo server and remember this choice.
943
721
  --no-sync-to-server Skip server sync and remember this choice (keeps credentials local only).
@@ -1118,42 +896,6 @@ Options:
1118
896
  ${SYNC_HELP_LINE}
1119
897
  --help, -h Show this help and exit.
1120
898
  `;
1121
- var WORKBUDDY_HELP_TEXT = `Authorize nolo-cli to call WorkBuddy (China) models via your WorkBuddy account.
1122
-
1123
- This authorizes model API access only. It does NOT log you into the Nolo
1124
- platform. To manage agents, docs, spaces, and other Nolo resources, run
1125
- "nolo login" first.
1126
-
1127
- Usage: nolo auth workbuddy [--browser] [--no-browser] [--sync-to-server] [--help]
1128
-
1129
- The flow opens https://copilot.tencent.com in your browser and polls the login status.
1130
- After approval, tokens are stored in $NOLO_HOME/credentials/workbuddy.json (or ~/.nolo/credentials/workbuddy.json when NOLO_HOME is unset).
1131
- Agents can reference the stored token with apiKeyRef: "workbuddy".
1132
-
1133
- Options:
1134
- --browser Open the login URL in your browser automatically (default).
1135
- --no-browser Print the login URL without opening a browser.
1136
- ${SYNC_HELP_LINE}
1137
- --help, -h Show this help and exit.
1138
- `;
1139
- var WORKBUDDY_AI_HELP_TEXT = `Authorize nolo-cli to call WorkBuddy AI (International) models via your WorkBuddy AI account.
1140
-
1141
- This authorizes model API access only. It does NOT log you into the Nolo
1142
- platform. To manage agents, docs, spaces, and other Nolo resources, run
1143
- "nolo login" first.
1144
-
1145
- Usage: nolo auth workbuddy-ai [--browser] [--no-browser] [--sync-to-server] [--help]
1146
-
1147
- The flow opens https://www.workbuddy.ai in your browser and polls the login status.
1148
- After approval, tokens are stored in $NOLO_HOME/credentials/workbuddy-ai.json (or ~/.nolo/credentials/workbuddy-ai.json when NOLO_HOME is unset).
1149
- Agents can reference the stored token with apiKeyRef: "workbuddy-ai".
1150
-
1151
- Options:
1152
- --browser Open the login URL in your browser automatically (default).
1153
- --no-browser Print the login URL without opening a browser.
1154
- ${SYNC_HELP_LINE}
1155
- --help, -h Show this help and exit.
1156
- `;
1157
899
  var HELP_BY_PROVIDER = {
1158
900
  chatgpt: CHATGPT_HELP_TEXT,
1159
901
  xai: XAI_HELP_TEXT,
@@ -1161,9 +903,7 @@ var HELP_BY_PROVIDER = {
1161
903
  claude: CLAUDE_HELP_TEXT,
1162
904
  cloudflare: CLOUDFLARE_HELP_TEXT,
1163
905
  cursor: CURSOR_HELP_TEXT,
1164
- devin: DEVIN_HELP_TEXT,
1165
- workbuddy: WORKBUDDY_HELP_TEXT,
1166
- "workbuddy-ai": WORKBUDDY_AI_HELP_TEXT
906
+ devin: DEVIN_HELP_TEXT
1167
907
  };
1168
908
  function markCredentialServerManaged(provider, credential, syncConfig, deps) {
1169
909
  const output = deps.output ?? console;
@@ -1404,8 +1144,6 @@ async function runAuthProviderCommand(provider, args, _ctx, deps = {}) {
1404
1144
  credential = await runCursorOAuthLogin(flowDeps);
1405
1145
  } else if (provider === "devin") {
1406
1146
  credential = await runDevinOAuthLogin(flowDeps);
1407
- } else if (provider === "workbuddy" || provider === "workbuddy-ai") {
1408
- credential = await runWorkBuddyOAuthLogin(provider, flowDeps);
1409
1147
  } else if (provider === "cloudflare") {
1410
1148
  credential = await runCloudflareOAuthLogin({
1411
1149
  ...flowDeps,
@@ -1460,17 +1198,7 @@ async function runAuthProviderCommand(provider, args, _ctx, deps = {}) {
1460
1198
  saveProfileOAuthSync(p, s);
1461
1199
  });
1462
1200
  let shouldSync = false;
1463
- if (provider === "workbuddy" || provider === "workbuddy-ai") {
1464
- if (hasExplicitSync) {
1465
- setOAuthSync(provider, true);
1466
- shouldSync = true;
1467
- } else {
1468
- if (hasExplicitNoSync) {
1469
- setOAuthSync(provider, false);
1470
- }
1471
- shouldSync = false;
1472
- }
1473
- } else if (hasExplicitNoSync || envAutoSync === "0") {
1201
+ if (hasExplicitNoSync || envAutoSync === "0") {
1474
1202
  if (hasExplicitNoSync) {
1475
1203
  setOAuthSync(provider, false);
1476
1204
  }
@@ -1568,12 +1296,6 @@ async function runAuthCursorCommand(args, ctx, deps) {
1568
1296
  async function runAuthDevinCommand(args, ctx, deps) {
1569
1297
  return runAuthProviderCommand("devin", args, ctx, deps);
1570
1298
  }
1571
- async function runAuthWorkbuddyCommand(args, ctx, deps) {
1572
- return runAuthProviderCommand("workbuddy", args, ctx, deps);
1573
- }
1574
- async function runAuthWorkbuddyAiCommand(args, ctx, deps) {
1575
- return runAuthProviderCommand("workbuddy-ai", args, ctx, deps);
1576
- }
1577
1299
  export {
1578
1300
  resolveServerSyncConfig,
1579
1301
  runAuthAntigravityCommand,
@@ -1583,7 +1305,5 @@ export {
1583
1305
  runAuthCursorCommand,
1584
1306
  runAuthDevinCommand,
1585
1307
  runAuthProviderCommand,
1586
- runAuthWorkbuddyAiCommand,
1587
- runAuthWorkbuddyCommand,
1588
1308
  runAuthXaiCommand
1589
1309
  };
@@ -7,7 +7,7 @@ import {
7
7
  runLogoutCommand,
8
8
  runWhoamiCommand,
9
9
  saveTokenLogin
10
- } from "./chunk-36OMEXXR.js";
10
+ } from "./chunk-DLV3H464.js";
11
11
  import "./chunk-TY3TIUJK.js";
12
12
  import "./chunk-S73EPYNC.js";
13
13
  import "./chunk-ZEZC7IIM.js";
@@ -15,17 +15,17 @@ import "./chunk-OW765XBU.js";
15
15
  import "./chunk-5EMSBTQ6.js";
16
16
  import "./chunk-I42VC5KR.js";
17
17
  import "./chunk-U6VC4MU4.js";
18
- import "./chunk-WWC7I6TA.js";
19
- import "./chunk-3EUW3WEO.js";
20
- import "./chunk-FY4SDK2E.js";
18
+ import "./chunk-FDLDMJTM.js";
21
19
  import "./chunk-GLKOYSRU.js";
22
20
  import "./chunk-A7GB5UGH.js";
23
21
  import "./chunk-OLZBQWZU.js";
24
22
  import "./chunk-LCBAMY2M.js";
23
+ import "./chunk-R5GO3YZP.js";
24
+ import "./chunk-WWC7I6TA.js";
25
+ import "./chunk-3EUW3WEO.js";
25
26
  import "./chunk-4SN6J65J.js";
26
27
  import "./chunk-CF7PE763.js";
27
28
  import "./chunk-G3SUCT4W.js";
28
- import "./chunk-TNIX77YM.js";
29
29
  import "./chunk-4VNS5WPM.js";
30
30
  export {
31
31
  LOGIN_HELP_TEXT,
@@ -7,11 +7,12 @@ import {
7
7
  resolveBuiltinSkillEntry,
8
8
  resolveBuiltinSkillPage,
9
9
  resolveBuiltinSkillSlug
10
- } from "./chunk-4Z245KOA.js";
11
- import "./chunk-JZX2XLKC.js";
10
+ } from "./chunk-SH3XD4E2.js";
11
+ import "./chunk-YCRROBDY.js";
12
12
  import "./chunk-EUGTFFO6.js";
13
- import "./chunk-XETG4RIX.js";
13
+ import "./chunk-AETZ7AD6.js";
14
14
  import "./chunk-Y6ORVLSS.js";
15
+ import "./chunk-KHCLMKZZ.js";
15
16
  import "./chunk-5EBLANFT.js";
16
17
  import "./chunk-NYYFIKHI.js";
17
18
  import "./chunk-LOEO7LRC.js";
@@ -22,7 +23,6 @@ import "./chunk-U6VC4MU4.js";
22
23
  import "./chunk-WWC7I6TA.js";
23
24
  import "./chunk-3EUW3WEO.js";
24
25
  import "./chunk-G3SUCT4W.js";
25
- import "./chunk-KHCLMKZZ.js";
26
26
  import "./chunk-4VNS5WPM.js";
27
27
  export {
28
28
  CAPABILITY_SLUG_COLLISIONS,
@@ -22,7 +22,7 @@ import { resolve as resolve2 } from "node:path";
22
22
  // packages/desktop-chrome-connector/nativeHostInstall.mjs
23
23
  import { chmodSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
24
24
  import { createHash, randomBytes } from "node:crypto";
25
- import { dirname, resolve } from "node:path";
25
+ import { dirname, isAbsolute, resolve } from "node:path";
26
26
  import { execFileSync } from "node:child_process";
27
27
  import { fileURLToPath } from "node:url";
28
28
  var DEFAULT_CONNECTOR_ROOT = dirname(fileURLToPath(import.meta.url));
@@ -34,15 +34,22 @@ function extensionIdFromPublicKey(publicKeyBase64) {
34
34
  (byte) => `${String.fromCharCode(97 + (byte >> 4))}${String.fromCharCode(97 + (byte & 15))}`
35
35
  ).join("");
36
36
  }
37
- function resolveNodePath() {
38
- if (typeof Bun !== "undefined" && typeof Bun.which === "function") {
39
- const bunResolvedNode = Bun.which("node");
40
- if (bunResolvedNode) return bunResolvedNode;
37
+ function resolveNativeHostRuntimePath({ env = process.env } = {}) {
38
+ for (const runtime of ["bun", "node"]) {
39
+ try {
40
+ const output = execFileSync("/usr/bin/env", [
41
+ runtime,
42
+ "-e",
43
+ "console.log(JSON.stringify({execPath:process.execPath,bun:process.versions.bun,node:process.versions.node}))"
44
+ ], { env, encoding: "utf8", timeout: 5e3, stdio: ["ignore", "pipe", "pipe"] });
45
+ const probe = JSON.parse(output.trim());
46
+ if (isAbsolute(probe.execPath) && (runtime === "bun" ? probe.bun : probe.node && !probe.bun)) {
47
+ return probe.execPath;
48
+ }
49
+ } catch {
50
+ }
41
51
  }
42
- const resolved = execFileSync("/usr/bin/env", ["node", "-p", "process.execPath"], {
43
- encoding: "utf8"
44
- }).trim();
45
- return resolved || "node";
52
+ throw new Error("Native host requires a standalone Bun executable (preferred) or Node.js on PATH; install Bun or pass nodePath explicitly.");
46
53
  }
47
54
  function nativeMessagingHostsDir({
48
55
  home = process.env.HOME || "",
@@ -114,7 +121,7 @@ function installNativeHostManifest({
114
121
  const manifest = JSON.parse(readFileSync(paths.templatePath, "utf8"));
115
122
  const extensionManifest = JSON.parse(readFileSync(paths.extensionManifestPath, "utf8"));
116
123
  const resolvedExtensionId = extensionId || (browser === "firefox" ? FIREFOX_EXTENSION_ID : extensionIdFromPublicKey(extensionManifest.key));
117
- const resolvedNodePath = nodePath || resolveNodePath();
124
+ const resolvedNodePath = nodePath || resolveNativeHostRuntimePath();
118
125
  mkdirSync(paths.supportDir, { recursive: true });
119
126
  const existingToken = existsSync(paths.tokenPath) ? readFileSync(paths.tokenPath, "utf8").trim() : "";
120
127
  const token = existingToken || randomBytes(32).toString("hex");