nolo-cli 0.79.0-alpha.1 → 0.79.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 (152) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-T3FPYFVF.js → _executeModel-U5V7LOJX.js} +46 -46
  3. package/{action-D22U6CTH.js → action-EXQVY3UO.js} +11 -11
  4. package/{addContentAction-XAPUTGL4.js → addContentAction-6IXQSRD2.js} +9 -9
  5. package/{addDialogAgentAction-M7VLLBZM.js → addDialogAgentAction-FZOB4BYM.js} +8 -8
  6. package/{agentDeleteCommand-2TYFURBN.js → agentDeleteCommand-4MIJFQQB.js} +30 -28
  7. package/{agentEmailCommands-7P35ZMUA.js → agentEmailCommands-JUXT36BY.js} +62 -60
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-IFUOWXP3.js → agentListCommands-MUVKMMZ5.js} +38 -30
  10. package/{agentMachineCommands-G46ZZ2ZQ.js → agentMachineCommands-56FTZLYV.js} +30 -28
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-TOMVKJOV.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-GLOOXJ2E.js} +3 -3
  13. package/{agentRecordCommands-R74LTQEQ.js → agentRecordCommands-FST3KAKG.js} +59 -57
  14. package/{agentRunCommand-IRSZYCEU.js → agentRunCommand-UMUEVIY2.js} +60 -58
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-PUZINLWJ.js → agentRuntimeLocal-NH6GSGAJ.js} +28 -26
  17. package/{agentSlice-EACXUOWW.js → agentSlice-YZK6KG73.js} +10 -10
  18. package/{appDeleteCommands-U4NTEJYQ.js → appDeleteCommands-U45KXYX7.js} +30 -28
  19. package/{appDeployCommands-FXF45Q7F.js → appDeployCommands-LWQIQCFX.js} +30 -28
  20. package/{appDeployStatusCommands-KONVRM53.js → appDeployStatusCommands-LZO33PGD.js} +30 -28
  21. package/{appGetCommands-3VOGIZ7T.js → appGetCommands-OJSO6BCF.js} +30 -28
  22. package/{appListCommands-A6ROBW7P.js → appListCommands-NE56V7DI.js} +30 -28
  23. package/{authCommand-EVGFLAHO.js → authCommand-U5LA6H4Y.js} +164 -24
  24. package/{authCommands-ILTBI6JV.js → authCommands-RGOGCPP6.js} +4 -5
  25. package/builtinSkillRegistry-4NB7PCOF.js +33 -0
  26. package/{chatQueueReduxAdapter-XEIJO5WR.js → chatQueueReduxAdapter-FRMSYX7N.js} +24 -24
  27. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  28. package/{chunk-U6LKJRJB.js → chunk-377KM42Z.js} +42 -26
  29. package/{chunk-HQUORJTM.js → chunk-3BMYXEUW.js} +1 -1
  30. package/{chunk-AFIWC5NH.js → chunk-3XMOAYRC.js} +1 -1
  31. package/{chunk-UJ63UXGE.js → chunk-4CAPEGHN.js} +1077 -752
  32. package/{chunk-DWPNOYMB.js → chunk-4JBZUECA.js} +1 -1
  33. package/{chunk-NG4UT4K4.js → chunk-4QKBQHPQ.js} +1 -1
  34. package/{chunk-UZ6XXCVR.js → chunk-546FPOW3.js} +15 -2
  35. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  36. package/chunk-5ZUL4CUO.js +10 -0
  37. package/{chunk-E6RGHPDR.js → chunk-6D6VBVEW.js} +4 -6
  38. package/{chunk-G3NT6BM3.js → chunk-7IBK6MYW.js} +142 -59
  39. package/{chunk-BYEJ7K2Z.js → chunk-7S4YWN7P.js} +1 -1
  40. package/{chunk-SREASRV5.js → chunk-ABQYVJBJ.js} +1 -1
  41. package/{chunk-H7UKKEIS.js → chunk-AQDH76OK.js} +1 -1
  42. package/{chunk-L2Y24GRM.js → chunk-B4S7MR5S.js} +16 -12
  43. package/{chunk-E36HZARC.js → chunk-BF2K6MRF.js} +3 -3
  44. package/{chunk-MGU5ADIQ.js → chunk-BKP7CFUD.js} +10 -10
  45. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  46. package/{chunk-AFIKMMGC.js → chunk-COM7GG76.js} +1 -1
  47. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  48. package/{chunk-XWNRAIUL.js → chunk-DM4UNXPK.js} +6 -16
  49. package/{chunk-ZLPA7K55.js → chunk-DSX6K7C2.js} +29 -10
  50. package/{chunk-QA6YKM3H.js → chunk-E2NP7ZQU.js} +32 -4
  51. package/{chunk-FSFQ3A7S.js → chunk-E3VQ6S3A.js} +10 -10
  52. package/{chunk-YFADVSZE.js → chunk-F3UTRUDO.js} +6 -6
  53. package/{chunk-KIS76A2P.js → chunk-G5X57NDE.js} +38 -4
  54. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  55. package/{chunk-DSRXPQWA.js → chunk-GRDSMV4V.js} +43 -43
  56. package/{chunk-733J6D44.js → chunk-HGRDL36J.js} +6 -6
  57. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  58. package/{chunk-3JQ2NRYU.js → chunk-HVURBGF3.js} +4 -4
  59. package/{chunk-QC5LGHYP.js → chunk-HWZAXNO7.js} +10 -5
  60. package/{chunk-Q6FF2MCK.js → chunk-IIKPWSPX.js} +1 -1
  61. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  62. package/{chunk-6XIE5ZGI.js → chunk-JPGCXHNM.js} +1 -1
  63. package/{chunk-AJHEFRGJ.js → chunk-JTYPAMGP.js} +155 -1
  64. package/{chunk-UDQWGU7F.js → chunk-KR3YI36B.js} +1 -1
  65. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  66. package/{chunk-SZLVDREM.js → chunk-LSSBA2TN.js} +3 -3
  67. package/{chunk-CMH2SYHX.js → chunk-MBEEYLGL.js} +2 -2
  68. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  69. package/{chunk-PGSKWZCB.js → chunk-NKIH4Q7W.js} +1 -1
  70. package/{chunk-FPTQQSS6.js → chunk-OH7H6LPC.js} +26 -5
  71. package/{chunk-5J7W2VWW.js → chunk-OOLWKQSM.js} +6 -265
  72. package/{chunk-AETZ7AD6.js → chunk-Q554LLSI.js} +1 -1
  73. package/chunk-Q5FJJ6XI.js +103 -0
  74. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  75. package/{chunk-P7FA2HMM.js → chunk-QMASIHYZ.js} +13 -15
  76. package/{chunk-ZY4K4CZR.js → chunk-R2YY6MWV.js} +909 -304
  77. package/chunk-RLEWGSM5.js +677 -0
  78. package/{chunk-PYXL2CJL.js → chunk-RZYQMSQA.js} +1 -1
  79. package/{chunk-XEEHSS64.js → chunk-S3UI4IUJ.js} +1200 -52
  80. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  81. package/{chunk-QRBAZ5PW.js → chunk-SASGLNUD.js} +3 -3
  82. package/{chunk-D74EWXL4.js → chunk-SUERPXJZ.js} +390 -47
  83. package/{chunk-3QPYFHAH.js → chunk-TMAZ3VHN.js} +1 -1
  84. package/{chunk-BJCWNHVU.js → chunk-U47DH2WO.js} +2 -2
  85. package/{chunk-MEVSATIF.js → chunk-UBNV6CS6.js} +66 -792
  86. package/{chunk-EXMHJN7C.js → chunk-UDEFS2PV.js} +4 -3
  87. package/{chunk-NHRQCXIQ.js → chunk-VMFTFOWF.js} +13 -3
  88. package/{chunk-4EJ5QYB5.js → chunk-VOOTT7HA.js} +1 -1
  89. package/{chunk-PZM3EENV.js → chunk-W2E6HIIK.js} +1 -1
  90. package/chunk-WKEUHK57.js +1625 -0
  91. package/{chunk-GBPZKFYK.js → chunk-WON762L4.js} +4 -4
  92. package/{chunk-X7Z7U4Z6.js → chunk-WP6BC7OF.js} +15 -15
  93. package/{chunk-QUH3XHL5.js → chunk-X2ZTVRXP.js} +7 -7
  94. package/{chunk-MYU3MJCF.js → chunk-XAQAF25W.js} +175 -7
  95. package/chunk-XGJAR4T5.js +283 -0
  96. package/{chunk-ZZCJUXUI.js → chunk-XLGHBHGP.js} +2 -2
  97. package/{chunk-V3ZKNK5D.js → chunk-YOXYA2GU.js} +10 -10
  98. package/{chunk-ALGK6TIE.js → chunk-YPYMGGPJ.js} +3 -3
  99. package/{chunk-K7AG465Q.js → chunk-ZHUTWJ3N.js} +4 -2
  100. package/{chunk-CDVGNZDA.js → chunk-ZKMYGRO7.js} +11 -173
  101. package/{contentThunks-3SPROFG5.js → contentThunks-TC3AENBY.js} +25 -25
  102. package/{createAgentAutomationAction-EIP2EG3O.js → createAgentAutomationAction-67EOD3WK.js} +25 -25
  103. package/{createDialogAction-RLUSTN4D.js → createDialogAction-4OCQC5MW.js} +28 -28
  104. package/{createPageAction-4Y52G7WG.js → createPageAction-JLGVP57B.js} +26 -26
  105. package/{dbSlice-GKGGFNOB.js → dbSlice-RDGCE5MU.js} +8 -8
  106. package/{deleteFile-LWSR674W.js → deleteFile-YG6QMJLU.js} +3 -3
  107. package/{dialogCommands-G223U5WU.js → dialogCommands-JHSDKCR5.js} +32 -30
  108. package/{dialogSlice-THY45JWM.js → dialogSlice-I2DK32ZT.js} +24 -24
  109. package/{docCreateCommands-2P47IJDK.js → docCreateCommands-QUL6VWK2.js} +31 -29
  110. package/{docDeleteCommands-N3EGDOIC.js → docDeleteCommands-DMQ2MU6I.js} +32 -30
  111. package/{docReadCommands-6BFV2HI7.js → docReadCommands-FVHENBU6.js} +31 -29
  112. package/{docStore-ZQ3ECOPY.js → docStore-OLC6MD7B.js} +9 -9
  113. package/{docUpdateCommands-ZTMPXHC5.js → docUpdateCommands-VA6V5C6L.js} +31 -29
  114. package/{fetchMessages-DRABNDPZ.js → fetchMessages-EIU7UFFK.js} +3 -4
  115. package/{getPricing-HRMSOF3E.js → getPricing-YYXTEPBP.js} +4 -4
  116. package/{handleSendMessageAction-CE4M5XIE.js → handleSendMessageAction-GRDIRXAK.js} +24 -24
  117. package/index.js +88 -80
  118. package/{localDialogRead-PUQKFI73.js → localDialogRead-BTFJ4V2I.js} +2 -2
  119. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  120. package/{machineCommands-4OT7KVCD.js → machineCommands-IJJ66MYU.js} +59 -57
  121. package/{machineWsRunDispatch-TR3EYESP.js → machineWsRunDispatch-PP2ZBS6D.js} +57 -55
  122. package/{memberThunks-KATHH3F4.js → memberThunks-WQGQWYYT.js} +9 -9
  123. package/{models-GS72DVJS.js → models-UN7YGMPM.js} +2 -2
  124. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  125. package/package.json +1 -1
  126. package/providerPresetApply-NO73BG45.js +214 -0
  127. package/providerRegistry-OVY4VKNN.js +31 -0
  128. package/{read-LC6HVYBN.js → read-S4WC2OUK.js} +5 -4
  129. package/{readDocTool-N3ERJHHF.js → readDocTool-PQNM63KV.js} +1 -1
  130. package/{readlineWorkspace-GSL5CYNJ.js → readlineWorkspace-ASJECDJD.js} +196 -111
  131. package/{removeDialogAgentAction-F5GPTALR.js → removeDialogAgentAction-YJZ6XJV6.js} +11 -11
  132. package/{runAgentClientLoop-NE5EHXSS.js → runAgentClientLoop-KIOQSDRC.js} +45 -45
  133. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  134. package/{setDialogExtraReferencesAction-AY4ZCF3A.js → setDialogExtraReferencesAction-E6A3WL4E.js} +9 -9
  135. package/{setPrimaryDialogAgentAction-HPMG7V3R.js → setPrimaryDialogAgentAction-WBLIVICQ.js} +11 -11
  136. package/{settingSlice-OEJA4NQO.js → settingSlice-JR6S7TRD.js} +10 -10
  137. package/{spaceCommands-MRP5U3C3.js → spaceCommands-WDUNCAK5.js} +29 -27
  138. package/{streamAgentChatTurn-A6L6O22P.js → streamAgentChatTurn-EGQDPMAO.js} +57 -56
  139. package/{switchDialogAgentAction-HMDZTZ4I.js → switchDialogAgentAction-DTR36ZY2.js} +8 -8
  140. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  141. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  142. package/{tools-JS475NYO.js → tools-AOVE5LKM.js} +41 -39
  143. package/tuiSummaryLlmCaller-XRQCSNYQ.js +127 -0
  144. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  145. package/{updateDialogTitleAction-GMZUT6RP.js → updateDialogTitleAction-T66TXHIR.js} +45 -28
  146. package/chunk-3IT2PFHL.js +0 -611
  147. package/chunk-I42VC5KR.js +0 -15
  148. package/codingSkills-E6KSDNSJ.js +0 -48
  149. package/tuiSummaryLlmCaller-3Z24VUWM.js +0 -116
  150. package/{chunk-3RAG2NAD.js → chunk-UKWGR5SS.js} +3 -3
  151. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  152. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-AFIKMMGC.js";
3
+ } from "./chunk-COM7GG76.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";
@@ -4,7 +4,7 @@ import {
4
4
  openrouterModels,
5
5
  platformHostedModels,
6
6
  zaiModels
7
- } from "./chunk-AJHEFRGJ.js";
7
+ } from "./chunk-JTYPAMGP.js";
8
8
 
9
9
  // packages/ai/llm/modelAbility.ts
10
10
  var MODEL_ABILITY_TABLE = {
@@ -1,3 +1,7 @@
1
+ import {
2
+ BUILTIN_NOLO_AGENT_KEY
3
+ } from "./chunk-XGJAR4T5.js";
4
+
1
5
  // packages/ai/tools/agentCapabilities.ts
2
6
  var SYSTEM_AGENT_CAPABILITIES = [
3
7
  {
@@ -13,7 +17,7 @@ var SYSTEM_AGENT_CAPABILITIES = [
13
17
  label: "\u6DF1\u5EA6\u7F51\u9875\u6293\u53D6",
14
18
  description: "\u5728\u666E\u901A\u8054\u7F51\u641C\u7D22\u4E4B\u5916\uFF0C\u7528 Firecrawl \u505A\u7ED3\u6784\u5316\u641C\u7D22\u4E0E\u6574\u9875\u6293\u53D6\uFF0C\u9002\u5408\u9700\u8981\u5B8C\u6574\u6B63\u6587\u3001\u6587\u6863\u7AD9\u70B9\u6216\u7AD9\u5185\u68C0\u7D22\u7684\u573A\u666F\u3002",
15
19
  tools: ["firecrawl_search", "firecrawl_scrape"],
16
- defaultEnabled: true,
20
+ defaultEnabled: false,
17
21
  icon: "\u{1F578}\uFE0F"
18
22
  },
19
23
  {
@@ -43,8 +47,17 @@ var DEFAULT_SYSTEM_AGENT_CAPABILITIES = Object.fromEntries(
43
47
  ])
44
48
  );
45
49
 
50
+ // packages/core/init.ts
51
+ var nolotusId = "0e95801d90";
52
+ var ADMIN_IDS = /* @__PURE__ */ new Set([nolotusId]);
53
+ var isSystemAdmin = (userId) => userId != null && ADMIN_IDS.has(userId);
54
+ var noloAgentId = BUILTIN_NOLO_AGENT_KEY;
55
+
46
56
  export {
47
57
  SYSTEM_AGENT_CAPABILITIES,
48
58
  SYSTEM_AGENT_CAPABILITY_IDS,
49
- DEFAULT_SYSTEM_AGENT_CAPABILITIES
59
+ DEFAULT_SYSTEM_AGENT_CAPABILITIES,
60
+ nolotusId,
61
+ isSystemAdmin,
62
+ noloAgentId
50
63
  };
@@ -18,9 +18,13 @@ var CORE_DRAINING_MAX_ATTEMPTS = 30;
18
18
  var RETRYABLE_HTTP_STATUSES = /* @__PURE__ */ new Set([429, 503]);
19
19
  function isTransientFetchError(error) {
20
20
  const message = toErrorMessage(error);
21
- return /certificate|handshake|network|socket|timed out|timeout|ECONNRESET/i.test(
21
+ return /certificate|handshake|network|socket|timed out|timeout|ECONNRESET|UND_ERR_SOCKET|other side closed/i.test(
22
22
  message
23
- );
23
+ ) || // undici(Node fetch)连接中途被断开时抛 `TypeError: terminated`,message
24
+ // 就是裸的 "terminated"(真实 cause 是 UND_ERR_SOCKET)。只认「整条就是
25
+ // terminated」或「前缀: terminated」这种形态,避免把 access_terminated_error
26
+ // (配额封禁)或 "process was terminated by signal" 误判成可重试的网络抖动。
27
+ /(?:^|:\s*)terminated$/i.test(message.trim());
24
28
  }
25
29
  async function defaultSleep(ms) {
26
30
  await new Promise((resolve) => setTimeout(resolve, ms));
@@ -0,0 +1,10 @@
1
+ // packages/agent-runtime/devinOAuthPure.ts
2
+ function isDevinOAuthAgent(agent) {
3
+ const ref = agent.apiKeyRef?.trim().toLowerCase();
4
+ const prov = agent.provider?.trim().toLowerCase();
5
+ return ref === "devin" || prov === "devin";
6
+ }
7
+
8
+ export {
9
+ isDevinOAuthAgent
10
+ };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ESHYE7WU.js";
4
4
  import {
5
5
  getDefaultCliLocalRuntimeDb
6
- } from "./chunk-C3FZR5EC.js";
6
+ } from "./chunk-2F7RJC6L.js";
7
7
  import {
8
8
  buildCliRuntimeEnv,
9
9
  clearProfileAuthToken,
@@ -12,7 +12,7 @@ import {
12
12
  getProfileTokens,
13
13
  loadProfileConfig,
14
14
  saveDefaultProfile
15
- } from "./chunk-2KDR4CWE.js";
15
+ } from "./chunk-BYMV6QZG.js";
16
16
  import {
17
17
  resolveAuthTokenFromEnv
18
18
  } from "./chunk-A7GB5UGH.js";
@@ -20,14 +20,12 @@ import {
20
20
  DEFAULT_NOLO_SERVER_URL
21
21
  } from "./chunk-OLZBQWZU.js";
22
22
  import {
23
+ asTrimmedNonEmptyStringArray,
23
24
  createMemoryKey,
24
25
  createMemoryOwnerIndexKey,
25
26
  createMemorySubjectKindIndexKey,
26
27
  memoryOwnerRange
27
- } from "./chunk-NHRQCXIQ.js";
28
- import {
29
- asTrimmedNonEmptyStringArray
30
- } from "./chunk-I42VC5KR.js";
28
+ } from "./chunk-VMFTFOWF.js";
31
29
  import {
32
30
  asTrimmedString
33
31
  } from "./chunk-3EUW3WEO.js";
@@ -4,15 +4,15 @@ import {
4
4
  refreshAntigravityOAuthToken,
5
5
  refreshOpenAiCodexToken,
6
6
  xaiRefresh
7
- } from "./chunk-GBPZKFYK.js";
7
+ } from "./chunk-WON762L4.js";
8
+ import {
9
+ defaultLoopbackRequest
10
+ } from "./chunk-EADNWBAZ.js";
8
11
  import {
9
12
  createChromeConnectorClient,
10
13
  createVerifiedChromeConnectorClient,
11
14
  executeChromeConnectorTool
12
15
  } from "./chunk-QCZX4FTW.js";
13
- import {
14
- defaultLoopbackRequest
15
- } from "./chunk-EADNWBAZ.js";
16
16
  import {
17
17
  ackRunRecord,
18
18
  appendRunQueue,
@@ -29,7 +29,7 @@ import {
29
29
  terminateRunProcess,
30
30
  transitionRunToTerminal,
31
31
  withQueueLock
32
- } from "./chunk-HH65VA5U.js";
32
+ } from "./chunk-CPH3W5A7.js";
33
33
  import {
34
34
  clearCredentialAvailability,
35
35
  markCredentialUnavailable,
@@ -40,27 +40,27 @@ import {
40
40
  } from "./chunk-DWUCB2A3.js";
41
41
  import {
42
42
  buildLocalAgentLookupKeys
43
- } from "./chunk-Q6FF2MCK.js";
43
+ } from "./chunk-IIKPWSPX.js";
44
44
  import {
45
45
  LOCAL_CODEX_AGENT_ID,
46
46
  LOCAL_CODEX_AGENT_KEY,
47
47
  NOLO_DEFAULT_AGENT_ID,
48
48
  NOLO_DEFAULT_AGENT_KEY
49
- } from "./chunk-SPAQ4PVV.js";
49
+ } from "./chunk-SAFZABH7.js";
50
50
  import {
51
51
  CliProviderQuotaError,
52
52
  executeCli
53
53
  } from "./chunk-MP64VFGD.js";
54
54
  import {
55
55
  inferCaptureIntent
56
- } from "./chunk-3QPYFHAH.js";
56
+ } from "./chunk-TMAZ3VHN.js";
57
57
  import {
58
58
  buildCliPrompt
59
59
  } from "./chunk-ATNTHIZI.js";
60
60
  import {
61
61
  inlineImageUrlsForCustomProvider,
62
62
  prepareTools
63
- } from "./chunk-ALGK6TIE.js";
63
+ } from "./chunk-YPYMGGPJ.js";
64
64
  import {
65
65
  getServerProviderSecret
66
66
  } from "./chunk-HS7MLR74.js";
@@ -78,11 +78,11 @@ import {
78
78
  rememberMemoryFunctionSchema,
79
79
  resolveAgentRequiredPackIds,
80
80
  setTodoListFunc
81
- } from "./chunk-MEVSATIF.js";
81
+ } from "./chunk-UBNV6CS6.js";
82
82
  import {
83
83
  fetchWithTransientRetry,
84
84
  isTransientFetchError
85
- } from "./chunk-5XTOKQLW.js";
85
+ } from "./chunk-5UTFL4QJ.js";
86
86
  import {
87
87
  TASK_PREVIEW_MAX,
88
88
  formatListRunsCard,
@@ -101,19 +101,20 @@ import {
101
101
  prepareTokenUsageData,
102
102
  resolveBuiltinPlatformAgentConfig,
103
103
  runKeyed
104
- } from "./chunk-D74EWXL4.js";
104
+ } from "./chunk-SUERPXJZ.js";
105
105
  import {
106
+ BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL,
106
107
  BUILTIN_TITLE_LLM_CONFIG
107
- } from "./chunk-EVBFYPDC.js";
108
+ } from "./chunk-MC4XLIJ7.js";
108
109
  import {
109
110
  fetchServerSyncedCredential
110
- } from "./chunk-QUH3XHL5.js";
111
+ } from "./chunk-X2ZTVRXP.js";
111
112
  import {
112
113
  require_date_fns
113
114
  } from "./chunk-M76ECQRD.js";
114
115
  import {
115
116
  getDefaultCliLocalRuntimeDb
116
- } from "./chunk-C3FZR5EC.js";
117
+ } from "./chunk-2F7RJC6L.js";
117
118
  import {
118
119
  FORCED_TOOLS,
119
120
  addDefaultLightWebToolsForConfiguredAgents,
@@ -123,7 +124,7 @@ import {
123
124
  applySystemBuiltinSkillFilter,
124
125
  expandEnabledPacks,
125
126
  resolveEffectiveEnabledPacks
126
- } from "./chunk-MYU3MJCF.js";
127
+ } from "./chunk-XAQAF25W.js";
127
128
  import {
128
129
  DEFAULT_HYBRID_READ_TIMEOUT_MS,
129
130
  Duration_exports,
@@ -139,6 +140,7 @@ import {
139
140
  buildLocalWorkspaceToolset,
140
141
  buildNoloWorkspaceCliToolExecutors,
141
142
  codexStreamFailureStatus,
143
+ createDevinProvider,
142
144
  createHybridRecordStore,
143
145
  createLocalWorkspaceToolExecutors,
144
146
  evaluateFileWritePolicy,
@@ -159,7 +161,7 @@ import {
159
161
  resolveOpenAiCompatibleProviderConfig,
160
162
  shouldUseGeminiNativeToolRoute,
161
163
  summarizeToolArguments
162
- } from "./chunk-ZY4K4CZR.js";
164
+ } from "./chunk-R2YY6MWV.js";
163
165
  import {
164
166
  PlatformStreamInterruptedError,
165
167
  buildPlatformChatCompletionRequest,
@@ -171,53 +173,56 @@ import {
171
173
  readSseDataValues,
172
174
  resolvePlatformChatProviderConfig,
173
175
  shouldUsePlatformChatProvider
174
- } from "./chunk-QC5LGHYP.js";
176
+ } from "./chunk-HWZAXNO7.js";
175
177
  import {
176
178
  resolveAgentRuntimeConfigFromRecord,
177
179
  resolveHistoricalToolContentCap
178
- } from "./chunk-KIS76A2P.js";
180
+ } from "./chunk-G5X57NDE.js";
181
+ import {
182
+ isDevinOAuthAgent
183
+ } from "./chunk-5ZUL4CUO.js";
179
184
  import {
180
185
  collectStablePromptPrefix,
181
186
  convertMessagesToResponsesInput,
182
187
  stablePromptCacheKey,
183
188
  toResponsesTools
184
189
  } from "./chunk-PUOC4YRO.js";
185
- import {
186
- isAntigravityOAuthAgent
187
- } from "./chunk-PGSKWZCB.js";
188
- import {
189
- resolvePlatformAuthToken
190
- } from "./chunk-CMH2SYHX.js";
191
190
  import {
192
191
  buildNoloWorkspaceOpenAiTools,
193
192
  parseNoloWorkspaceToolArguments,
194
193
  resolveRuntimeToolSurfaceForAgent
195
- } from "./chunk-V3ZKNK5D.js";
194
+ } from "./chunk-YOXYA2GU.js";
196
195
  import {
197
196
  mergeAvailabilityDeadline,
198
197
  resolveAvailabilityAction,
199
198
  resolveCooldownGate
200
199
  } from "./chunk-CJCJF5XB.js";
200
+ import {
201
+ isAntigravityOAuthAgent
202
+ } from "./chunk-NKIH4Q7W.js";
203
+ import {
204
+ resolvePlatformAuthToken
205
+ } from "./chunk-MBEEYLGL.js";
201
206
  import {
202
207
  buildDialogFallbackTitleFromUserInput,
203
208
  normalizeDialogTitle
204
209
  } from "./chunk-2MBTWINN.js";
205
210
  import {
206
211
  normalizeUsage
207
- } from "./chunk-DSRXPQWA.js";
212
+ } from "./chunk-GRDSMV4V.js";
208
213
  import {
209
214
  clipCompactText,
210
215
  createProviderCallTimingTracker,
211
216
  finalizeProviderCallTiming,
212
217
  observeMeaningfulProviderResponseAt,
213
218
  withProviderCallTimingFields
214
- } from "./chunk-E36HZARC.js";
219
+ } from "./chunk-BF2K6MRF.js";
215
220
  import {
216
221
  estimateTokenCount
217
222
  } from "./chunk-PSCNXBYA.js";
218
223
  import {
219
224
  isAdaptiveThinkingModelId
220
- } from "./chunk-UJ63UXGE.js";
225
+ } from "./chunk-4CAPEGHN.js";
221
226
  import {
222
227
  compactWhitespace
223
228
  } from "./chunk-DWLEOOGR.js";
@@ -226,7 +231,7 @@ import {
226
231
  resolveCurrentRunRuntimeToolPolicy,
227
232
  resolveLocalWorkspaceExecutorOptionsFromPolicy,
228
233
  resolveRequestedRuntimeToolNames
229
- } from "./chunk-3JQ2NRYU.js";
234
+ } from "./chunk-HVURBGF3.js";
230
235
  import {
231
236
  createOAuthTokenStore,
232
237
  isTokenExpired,
@@ -251,19 +256,19 @@ import {
251
256
  createTokenStatsKey,
252
257
  createUserKey,
253
258
  dialogMessageRange
254
- } from "./chunk-NHRQCXIQ.js";
259
+ } from "./chunk-VMFTFOWF.js";
255
260
  import {
256
261
  asTrimmedLowercaseString
257
262
  } from "./chunk-QSJ3HFEF.js";
258
263
  import {
259
264
  isSystemBuiltinTrustedAgentKey
260
- } from "./chunk-5J7W2VWW.js";
261
- import {
262
- asTrimmedString
263
- } from "./chunk-3EUW3WEO.js";
265
+ } from "./chunk-XGJAR4T5.js";
264
266
  import {
265
267
  isRecord
266
268
  } from "./chunk-KUG52IAP.js";
269
+ import {
270
+ asTrimmedString
271
+ } from "./chunk-3EUW3WEO.js";
267
272
  import {
268
273
  NOLO_CLUSTER_SERVERS
269
274
  } from "./chunk-LCBAMY2M.js";
@@ -574,6 +579,10 @@ var STRINGS = {
574
579
  en: "\u2713 Copied the selection to the clipboard.",
575
580
  zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002"
576
581
  },
582
+ copiedSelectionBusy: {
583
+ en: "\u2713 Copied the selection to the clipboard. Press Esc to stop generating.",
584
+ zh: "\u2713 \u5DF2\u590D\u5236\u9009\u533A\u5230\u526A\u8D34\u677F\u3002\u6309 Esc \u505C\u6B62\u751F\u6210\u3002"
585
+ },
577
586
  copiedAllHistory: {
578
587
  en: "\u2713 Copied the full conversation to the clipboard.",
579
588
  zh: "\u2713 \u5DF2\u590D\u5236\u5B8C\u6574\u5BF9\u8BDD\u5230\u526A\u8D34\u677F\u3002"
@@ -1715,6 +1724,9 @@ function buildCliChromeConnectorOpenAiTools(args) {
1715
1724
  function buildOpenAiTools(args) {
1716
1725
  const toolset = buildLocalWorkspaceToolsetForEnv(args);
1717
1726
  const workspaceToolNames = toolset.toolNames;
1727
+ const modelWorkspaceToolNames = (args.effectiveToolNames ?? workspaceToolNames).filter(
1728
+ (toolName) => toolName !== "taskWait" || !hasRunWakeChannel(args.env)
1729
+ );
1718
1730
  const toolNameSet = new Set(args.toolNames ?? []);
1719
1731
  const uiAskChoiceTools = toolNameSet.has("ask_user") ? prepareTools(["ask_user"]) : [];
1720
1732
  const readPastedTextTools = toolNameSet.has("readPastedText") ? [
@@ -1756,7 +1768,7 @@ function buildOpenAiTools(args) {
1756
1768
  ...uiAskChoiceTools,
1757
1769
  ...readPastedTextTools,
1758
1770
  ...buildLocalWorkspaceOpenAiTools({
1759
- toolNames: args.effectiveToolNames ?? workspaceToolNames,
1771
+ toolNames: modelWorkspaceToolNames,
1760
1772
  exposeShellTools: toolset.exposeShellTools
1761
1773
  }),
1762
1774
  ...buildCliChromeConnectorOpenAiTools({ toolNames: args.toolNames }),
@@ -9311,6 +9323,59 @@ var resolveCursorTransport = async (ctx) => {
9311
9323
  return null;
9312
9324
  };
9313
9325
 
9326
+ // packages/cli/client/providerResolution/devinTransport.ts
9327
+ var resolveDevinTransport = async (ctx) => {
9328
+ const {
9329
+ agentConfig,
9330
+ apiKeyRefResolver,
9331
+ deps,
9332
+ buildProviderOpenAiTools,
9333
+ additionalToolNames
9334
+ } = ctx;
9335
+ if (isDevinOAuthAgent(agentConfig)) {
9336
+ const accessToken = await apiKeyRefResolver("devin");
9337
+ if (!accessToken) {
9338
+ throw new Error(
9339
+ 'OAuth credential for "devin" not found locally. Run `nolo auth devin`.'
9340
+ );
9341
+ }
9342
+ const model = agentConfig.model || "swe-2-max";
9343
+ const { requestedToolNames, tools } = resolveProviderOpenAiToolBundle(
9344
+ agentConfig,
9345
+ deps.env,
9346
+ buildProviderOpenAiTools,
9347
+ additionalToolNames
9348
+ );
9349
+ const devinProvider = createDevinProvider({
9350
+ token: accessToken,
9351
+ model,
9352
+ fetchImpl: ctx.fetchImpl,
9353
+ tools,
9354
+ // agentConfig.temperature reaches every transport except the Devin one;
9355
+ // forward it so the agent form's sampling knob stops being a no-op here.
9356
+ // Left undefined it keeps the upstream client's value.
9357
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : void 0
9358
+ });
9359
+ logLocalRuntimeDiagnostic("provider.selected", {
9360
+ agentKey: agentConfig.key,
9361
+ transport: "devin-connect",
9362
+ provider: "devin",
9363
+ model,
9364
+ hasApiKey: true,
9365
+ toolCount: tools.length,
9366
+ requestedToolNames,
9367
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : null
9368
+ });
9369
+ return {
9370
+ model,
9371
+ complete: async (messages, options) => {
9372
+ return devinProvider.complete(messages, options);
9373
+ }
9374
+ };
9375
+ }
9376
+ return null;
9377
+ };
9378
+
9314
9379
  // packages/cli/client/providerResolution/directOpenAiCompatibleTransport.ts
9315
9380
  var resolveDirectOpenAiCompatibleTransport = async (ctx) => {
9316
9381
  const { agentConfig, deps, fetchImpl, loopbackRequest, additionalToolNames, buildProviderOpenAiTools, recordLocalAvailability, apiKeyRefResolver, credentialBroker, syncFetcher, serverUrl, authToken } = ctx;
@@ -9704,6 +9769,7 @@ var TRANSPORTS = [
9704
9769
  resolveAnthropicOAuthTransport,
9705
9770
  resolveCodexOAuthTransport,
9706
9771
  resolveCursorTransport,
9772
+ resolveDevinTransport,
9707
9773
  resolveGeminiNativeToolTransport,
9708
9774
  resolvePlatformProxyTransport,
9709
9775
  // 兜底必须留在最后。
@@ -11679,7 +11745,7 @@ var REFRESH_BY_PROVIDER = {
11679
11745
  cursor: cursorRefresh
11680
11746
  };
11681
11747
  function isOAuthProvider(value) {
11682
- return value === "chatgpt" || value === "xai" || value === "antigravity" || value === "claude" || value === "cursor";
11748
+ return value === "chatgpt" || value === "xai" || value === "antigravity" || value === "claude" || value === "cursor" || value === "devin";
11683
11749
  }
11684
11750
  function createOAuthApiKeyRefResolver(options = {}) {
11685
11751
  return async (ref, opts) => {
@@ -11771,13 +11837,18 @@ async function generateLocalDialogTitle(input) {
11771
11837
  return { title: fallbackTitle, source: "fallback" };
11772
11838
  }
11773
11839
  if (input.resolveProviderConfig && input.buildRequest && input.parseResponse) {
11774
- try {
11775
- const providerConfig = await input.resolveProviderConfig({
11776
- agentConfig: { ...BUILTIN_TITLE_LLM_CONFIG, key: BUILTIN_TITLE_LLM_CONFIG.id },
11777
- env
11778
- });
11779
- if (providerConfig?.authToken) {
11780
- const request = input.buildRequest({
11840
+ const resolveProviderConfig = input.resolveProviderConfig;
11841
+ const buildRequest = input.buildRequest;
11842
+ const parseResponse = input.parseResponse;
11843
+ const attemptPlatformTitle = async (model) => {
11844
+ try {
11845
+ const agentConfig = model ? { ...BUILTIN_TITLE_LLM_CONFIG, model } : BUILTIN_TITLE_LLM_CONFIG;
11846
+ const providerConfig = await resolveProviderConfig({
11847
+ agentConfig: { ...agentConfig, key: agentConfig.id },
11848
+ env
11849
+ });
11850
+ if (!providerConfig?.authToken) return null;
11851
+ const request = buildRequest({
11781
11852
  providerConfig,
11782
11853
  messages: [
11783
11854
  {
@@ -11809,21 +11880,26 @@ async function generateLocalDialogTitle(input) {
11809
11880
  body: JSON.stringify(patchedBody),
11810
11881
  signal: AbortSignal.timeout(timeoutMs)
11811
11882
  });
11812
- if (res.ok) {
11813
- const raw = await res.text().catch(() => "");
11814
- const data = safeParseJson(raw);
11815
- if (data) {
11816
- const parsed = input.parseResponse({ providerConfig, data });
11817
- const generated = normalizeDialogTitle(
11818
- extractTitleFromLlmContent(parsed.content)
11819
- );
11820
- if (generated) {
11821
- return { title: generated, source: "llm" };
11822
- }
11823
- }
11824
- }
11883
+ if (!res.ok) return null;
11884
+ const raw = await res.text().catch(() => "");
11885
+ const data = safeParseJson(raw);
11886
+ if (!data) return null;
11887
+ const parsed = parseResponse({ providerConfig, data });
11888
+ const generated = normalizeDialogTitle(
11889
+ extractTitleFromLlmContent(parsed.content)
11890
+ );
11891
+ return generated || null;
11892
+ } catch {
11893
+ return null;
11825
11894
  }
11826
- } catch {
11895
+ };
11896
+ const primaryTitle = await attemptPlatformTitle();
11897
+ if (primaryTitle) return { title: primaryTitle, source: "llm" };
11898
+ const fallbackModelTitle = await attemptPlatformTitle(
11899
+ BUILTIN_DIALOG_LLM_CHAT_FALLBACK_MODEL
11900
+ );
11901
+ if (fallbackModelTitle) {
11902
+ return { title: fallbackModelTitle, source: "llm" };
11827
11903
  }
11828
11904
  }
11829
11905
  if (input.resolveDirectProviderConfig) {
@@ -12583,7 +12659,14 @@ function createCliLocalRuntimeAdapter(deps) {
12583
12659
  agentKey: agentConfig?.key,
12584
12660
  ...runtimeToolExecutionLimits
12585
12661
  });
12586
- const exposedAgentConfig = agentConfig ? { ...agentConfig, exposedToolNames: activeAgentToolNames } : agentConfig;
12662
+ const exposedAgentConfig = agentConfig ? {
12663
+ ...agentConfig,
12664
+ exposedToolNames: activeAgentToolNames,
12665
+ toolSurface: {
12666
+ ...agentConfig.toolSurface ?? {},
12667
+ finalToolNames: activeAgentToolNames
12668
+ }
12669
+ } : agentConfig;
12587
12670
  if (exposedAgentConfig && !deps.pastedTextStore) {
12588
12671
  preparedAgentRuntimeCache.set(cacheKey, {
12589
12672
  agentConfig: exposedAgentConfig,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  dialogMessageRange
3
- } from "./chunk-NHRQCXIQ.js";
3
+ } from "./chunk-VMFTFOWF.js";
4
4
  import {
5
5
  isTombstoneRecord
6
6
  } from "./chunk-GBRG75BQ.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getRuntimeServerContext,
3
3
  scheduleDeleteReplication
4
- } from "./chunk-3RAG2NAD.js";
4
+ } from "./chunk-UKWGR5SS.js";
5
5
  import {
6
6
  fetchFromClientDb
7
7
  } from "./chunk-QOKAKDPE.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  fetchReferenceContents,
3
3
  resolveReferenceAssets
4
- } from "./chunk-U6LKJRJB.js";
4
+ } from "./chunk-377KM42Z.js";
5
5
 
6
6
  // packages/ai/agent/fetchAgentContexts.ts
7
7
  async function fetchAgentContexts(references, dispatch) {
@@ -1,21 +1,22 @@
1
1
  import {
2
2
  listUserRecordsFromServers,
3
3
  readLiveDbRecordAfterTombstoneMerge
4
- } from "./chunk-AFIWC5NH.js";
4
+ } from "./chunk-3XMOAYRC.js";
5
5
  import {
6
6
  agentRecordHasConfiguredCredential
7
- } from "./chunk-QA6YKM3H.js";
7
+ } from "./chunk-E2NP7ZQU.js";
8
8
  import {
9
9
  deriveCredentialGroup,
10
10
  toSafeAgentSummary
11
- } from "./chunk-FPTQQSS6.js";
11
+ } from "./chunk-OH7H6LPC.js";
12
12
  import {
13
13
  PUBLIC_AGENT_KEY_PREFIX,
14
14
  isOwnedAgentKey,
15
15
  ownedAgentKey,
16
+ ownedAgentKeyPrefix,
16
17
  parseOwnedAgentId,
17
18
  publicAgentKey
18
- } from "./chunk-BJIRLHJR.js";
19
+ } from "./chunk-GII32WZW.js";
19
20
 
20
21
  // packages/cli/agentListHelpers.ts
21
22
  function parseAgentRecordId(privateKey, explicitId) {
@@ -105,14 +106,17 @@ function parseAgentListArgs(args) {
105
106
  async function listLocalCachedAgents(args) {
106
107
  const privateRecords = /* @__PURE__ */ new Map();
107
108
  const publicKeys = /* @__PURE__ */ new Set();
108
- for await (const [key, value] of args.db.iterator({ gte: "", lte: "\uFFFF" })) {
109
- if (typeof key !== "string" || !value || typeof value !== "object") continue;
110
- if (isOwnedAgentKey(key, args.userId)) {
111
- privateRecords.set(key, { ...value, dbKey: key });
112
- continue;
113
- }
114
- if (key.startsWith(PUBLIC_AGENT_KEY_PREFIX)) {
115
- publicKeys.add(key);
109
+ const ownedPrefix = ownedAgentKeyPrefix(args.userId);
110
+ for (const prefix of [ownedPrefix, PUBLIC_AGENT_KEY_PREFIX]) {
111
+ for await (const [key, value] of args.db.iterator({ gte: prefix, lte: `${prefix}\uFFFF` })) {
112
+ if (typeof key !== "string" || !value || typeof value !== "object") continue;
113
+ if (isOwnedAgentKey(key, args.userId)) {
114
+ privateRecords.set(key, { ...value, dbKey: key });
115
+ continue;
116
+ }
117
+ if (key.startsWith(PUBLIC_AGENT_KEY_PREFIX)) {
118
+ publicKeys.add(key);
119
+ }
116
120
  }
117
121
  }
118
122
  const agents = sortListedAgents(
@@ -6,13 +6,13 @@ import {
6
6
  } from "./chunk-DWLEOOGR.js";
7
7
  import {
8
8
  addContentAction
9
- } from "./chunk-ZZCJUXUI.js";
9
+ } from "./chunk-XLGHBHGP.js";
10
10
  import {
11
11
  upload
12
- } from "./chunk-YFADVSZE.js";
12
+ } from "./chunk-F3UTRUDO.js";
13
13
  import {
14
14
  getRuntimeServerContext
15
- } from "./chunk-3RAG2NAD.js";
15
+ } from "./chunk-UKWGR5SS.js";
16
16
  import {
17
17
  API_ENDPOINTS
18
18
  } from "./chunk-LCBAMY2M.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-G3NT6BM3.js";
4
+ } from "./chunk-7IBK6MYW.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-MEVSATIF.js";
7
+ } from "./chunk-UBNV6CS6.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-ZY4K4CZR.js";
10
+ } from "./chunk-R2YY6MWV.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
- } from "./chunk-V3ZKNK5D.js";
13
+ } from "./chunk-YOXYA2GU.js";
14
14
  import {
15
15
  resolveLocalRuntimeEnvFromPolicy
16
- } from "./chunk-3JQ2NRYU.js";
16
+ } from "./chunk-HVURBGF3.js";
17
17
  import {
18
18
  toErrorMessage
19
19
  } from "./chunk-HNMXYYJR.js";
@@ -32,19 +32,19 @@ import {
32
32
  } from "./chunk-KX6YBIHG.js";
33
33
  import {
34
34
  asTrimmedNonEmptyStringArray
35
- } from "./chunk-I42VC5KR.js";
35
+ } from "./chunk-VMFTFOWF.js";
36
36
  import {
37
37
  ownedAgentKey
38
- } from "./chunk-BJIRLHJR.js";
38
+ } from "./chunk-GII32WZW.js";
39
+ import {
40
+ isRecord
41
+ } from "./chunk-KUG52IAP.js";
39
42
  import {
40
43
  asTrimmedString
41
44
  } from "./chunk-3EUW3WEO.js";
42
45
  import {
43
46
  asOptionalPositiveFiniteNumber
44
47
  } from "./chunk-U6VC4MU4.js";
45
- import {
46
- isRecord
47
- } from "./chunk-KUG52IAP.js";
48
48
  import {
49
49
  asOptionalTrimmedString
50
50
  } from "./chunk-G3SUCT4W.js";