nolo-cli 0.88.0-alpha.2 → 0.90.0-alpha.1

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 (139) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-S7KQX4XS.js → _executeModel-W26HVI75.js} +38 -38
  3. package/{action-JZ62BXLX.js → action-6DXQGJMX.js} +7 -7
  4. package/{addContentAction-2ETXWERA.js → addContentAction-I7VX5SAC.js} +5 -5
  5. package/{addDialogAgentAction-COSPGJ4K.js → addDialogAgentAction-OJSFV7DZ.js} +4 -4
  6. package/{agentDeleteCommand-J6Y2C5X2.js → agentDeleteCommand-XNFWCKBH.js} +25 -24
  7. package/{agentEmailCommands-TGZ5DJAB.js → agentEmailCommands-W3X3EJ3V.js} +53 -52
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-UIDWO3EG.js → agentListCommands-DFWFU6XO.js} +33 -26
  10. package/{agentMachineCommands-FPSZ6FJ4.js → agentMachineCommands-LMFOAEL4.js} +25 -24
  11. package/{agentProviderCommands-65ZC2WB4.js → agentProviderCommands-ZBYHGTGY.js} +87 -0
  12. package/{agentPullCommand-N7L2CT7L.js → agentPullCommand-GLOOXJ2E.js} +3 -3
  13. package/{agentRecordCommands-6SCONH5I.js → agentRecordCommands-FVVVCQFM.js} +51 -50
  14. package/{agentRunCommand-2IXI6Z2U.js → agentRunCommand-HTBVIBGV.js} +52 -51
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-UYU2POZ7.js → agentRuntimeLocal-2JFG4HDU.js} +21 -20
  17. package/{agentSlice-J5XXG3H7.js → agentSlice-ZNLGFUB5.js} +5 -5
  18. package/{appDeleteCommands-BVSKDJNM.js → appDeleteCommands-2UN4N2NR.js} +25 -24
  19. package/{appDeployCommands-UTPULKP3.js → appDeployCommands-37D74KRR.js} +25 -24
  20. package/{appDeployStatusCommands-DKDE2ECO.js → appDeployStatusCommands-QBLWL2IA.js} +25 -24
  21. package/{appGetCommands-KT7A7JJQ.js → appGetCommands-6KXIDF2T.js} +25 -24
  22. package/{appListCommands-MTHRLBXS.js → appListCommands-G2WFGEWQ.js} +25 -24
  23. package/{authCommand-NNFLRLGJ.js → authCommand-V2DJ7DB7.js} +85 -19
  24. package/{authCommands-364ESL7K.js → authCommands-RGOGCPP6.js} +3 -3
  25. package/{builtinSkillRegistry-VXSNE7LM.js → builtinSkillRegistry-WBGYKIAZ.js} +5 -5
  26. package/{chatQueueReduxAdapter-6I4F5TQW.js → chatQueueReduxAdapter-XCJHIY3R.js} +17 -17
  27. package/{chunk-BXLB7DXE.js → chunk-2ADBVBEM.js} +98 -2
  28. package/{chunk-WKJC6UOK.js → chunk-2AYMFHUG.js} +4 -4
  29. package/{chunk-CADAR6QU.js → chunk-2F4VYGFW.js} +2 -2
  30. package/{chunk-C3FZR5EC.js → chunk-2F7RJC6L.js} +1 -1
  31. package/{chunk-IBT5GKZM.js → chunk-3CMTBX3X.js} +6 -6
  32. package/{chunk-T2EUOLNJ.js → chunk-3CR2LC6X.js} +1 -1
  33. package/{chunk-UMYXJWI3.js → chunk-3R5PH4IP.js} +1 -1
  34. package/{chunk-EVCXTAOR.js → chunk-4BYPU626.js} +294 -203
  35. package/{chunk-M67M3AK5.js → chunk-4DRWWIOL.js} +1 -1
  36. package/{chunk-KR3MGGC7.js → chunk-576IMUGH.js} +1 -1
  37. package/{chunk-MGRRXGZD.js → chunk-5DFFKASO.js} +3 -3
  38. package/{chunk-SENTM5XJ.js → chunk-5NMZNPTN.js} +5 -5
  39. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  40. package/{chunk-5CEIOSBX.js → chunk-5V4NJHRM.js} +6 -6
  41. package/chunk-5ZUL4CUO.js +10 -0
  42. package/{chunk-XPMTSMUR.js → chunk-6BEA566T.js} +2 -2
  43. package/{chunk-KIAHQ37Z.js → chunk-6D6VBVEW.js} +2 -2
  44. package/{chunk-PP3LAL6G.js → chunk-7MYYE7WX.js} +23 -19
  45. package/{chunk-BQKN5ZHZ.js → chunk-A2C4AKKM.js} +1 -1
  46. package/{chunk-PBMUDRON.js → chunk-AQZRTHDZ.js} +1192 -44
  47. package/{chunk-AJHEFRGJ.js → chunk-ASGDO77C.js} +122 -1
  48. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  49. package/{chunk-WVXCW7DR.js → chunk-CLI4LFSM.js} +9 -4
  50. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  51. package/{chunk-A3GDWRW6.js → chunk-DNQPPRHY.js} +1 -1
  52. package/{chunk-SR2I44ML.js → chunk-DPQ2WVBY.js} +1 -1
  53. package/{chunk-IZWQKAGJ.js → chunk-F2CGG72C.js} +40 -40
  54. package/{chunk-QDOYVIIL.js → chunk-FQYMLZ6C.js} +5 -5
  55. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  56. package/{chunk-TR54UTFI.js → chunk-GRYGRGPS.js} +4 -4
  57. package/{chunk-QIU65GHY.js → chunk-HMEMJ7GH.js} +364 -24
  58. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  59. package/{chunk-KMIMGCZT.js → chunk-HYZHJ5GW.js} +3 -3
  60. package/{chunk-OAJRZ35U.js → chunk-IIKPWSPX.js} +1 -1
  61. package/{chunk-EFWQMKEG.js → chunk-JBBZ5KUM.js} +10 -10
  62. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  63. package/{chunk-4YIWJYIX.js → chunk-JTK3TJYV.js} +1 -1
  64. package/{chunk-TMPLPCVX.js → chunk-K7M3MWCE.js} +2 -2
  65. package/{chunk-OHUU52T3.js → chunk-L2ICPOAL.js} +1 -1
  66. package/{chunk-RXX4GDIH.js → chunk-LS2ZANRJ.js} +1 -1
  67. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  68. package/{chunk-LHDV2QUI.js → chunk-MJHQ3NRV.js} +1 -1
  69. package/{chunk-WHYTL6XG.js → chunk-N3OAPEZE.js} +28 -9
  70. package/{chunk-PZCTYKGU.js → chunk-ND2J3NRB.js} +2 -2
  71. package/{chunk-M2ZBPSGH.js → chunk-NFMHIUY3.js} +65 -50
  72. package/{chunk-S6FCVZ4I.js → chunk-PH5J5VUY.js} +2 -2
  73. package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
  74. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  75. package/{chunk-5XV64MAU.js → chunk-QHETQ3KI.js} +35 -1
  76. package/{chunk-BEQGQMYW.js → chunk-RZANZZL2.js} +2 -2
  77. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  78. package/{chunk-6LUUGZTS.js → chunk-SMZSWB44.js} +10 -5
  79. package/{chunk-HJKGQPYF.js → chunk-TL6L5XUT.js} +1 -1
  80. package/{chunk-M5K26BH3.js → chunk-TVNI5FLG.js} +4 -4
  81. package/{chunk-X7WAX4JU.js → chunk-UA5S3LQQ.js} +3 -3
  82. package/{chunk-2LX7X7HX.js → chunk-UTCCPWB2.js} +31 -3
  83. package/{chunk-DJM4BCSB.js → chunk-VHJLQHPQ.js} +2 -2
  84. package/{chunk-MXUSPS2N.js → chunk-VRLI2WNW.js} +1563 -1529
  85. package/{chunk-NG4UT4K4.js → chunk-WS22FPWT.js} +1 -1
  86. package/{chunk-NJBLAV2R.js → chunk-WXPVOQD7.js} +35 -33
  87. package/{chunk-5HKWE6OQ.js → chunk-XKQJJK4F.js} +1 -1
  88. package/{chunk-N4X2KIYL.js → chunk-XMGHGEN6.js} +1 -1
  89. package/{chunk-6IHWRTUK.js → chunk-XTUY5EL4.js} +16 -12
  90. package/{chunk-OKCTLCKS.js → chunk-YOXYA2GU.js} +1 -1
  91. package/{chunk-EDZAJS6E.js → chunk-Z33ARZCP.js} +1 -1
  92. package/chunk-ZAB3A45K.js +677 -0
  93. package/{chunk-YZHP76TR.js → chunk-ZBT3WNBK.js} +1 -1
  94. package/{contentThunks-2N2J3EGF.js → contentThunks-VURN3DFW.js} +18 -18
  95. package/{createAgentAutomationAction-7QO4ZVVP.js → createAgentAutomationAction-QZAAY77R.js} +18 -18
  96. package/{createDialogAction-PC2IQ4T7.js → createDialogAction-CHGXVTAC.js} +20 -20
  97. package/{createPageAction-EFL5EC22.js → createPageAction-IOGAFIN7.js} +18 -18
  98. package/{dbSlice-JNK4XZ27.js → dbSlice-YXQ6RYIH.js} +4 -4
  99. package/{dialogCommands-BSOWO6CA.js → dialogCommands-XREAP6WQ.js} +26 -25
  100. package/{dialogSlice-W6X5G2KS.js → dialogSlice-DOPGWGS4.js} +17 -17
  101. package/{docCreateCommands-LWZU23FP.js → docCreateCommands-3PYZGSCL.js} +24 -23
  102. package/{docDeleteCommands-RR6GKDDF.js → docDeleteCommands-3Y6MU44Q.js} +25 -24
  103. package/{docReadCommands-JP77ZTCY.js → docReadCommands-UBANMAFR.js} +24 -23
  104. package/{docStore-DMNGPTL4.js → docStore-SYYFBENY.js} +5 -5
  105. package/{docUpdateCommands-T4OACV4V.js → docUpdateCommands-4GK2X6BN.js} +24 -23
  106. package/{getPricing-QVTUQQTM.js → getPricing-F2C65RIX.js} +3 -3
  107. package/{handleSendMessageAction-RJEXW5VS.js → handleSendMessageAction-NPVTY2GE.js} +17 -17
  108. package/index.js +85 -81
  109. package/{localDialogRead-GKTRZFAP.js → localDialogRead-BTFJ4V2I.js} +1 -1
  110. package/{localRuntimeDb-P37ZTX55.js → localRuntimeDb-SYQGUF4U.js} +1 -1
  111. package/{machineCommands-K3VQUSAX.js → machineCommands-I66X2XB7.js} +49 -48
  112. package/{machineWsRunDispatch-P7RNOLMU.js → machineWsRunDispatch-W4FVBOUM.js} +49 -48
  113. package/{memberThunks-A6OAY77F.js → memberThunks-5T4J6KXQ.js} +5 -5
  114. package/{models-GS72DVJS.js → models-WW7VFNXB.js} +2 -2
  115. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  116. package/package.json +1 -1
  117. package/providerPresetApply-OCWWKBSD.js +214 -0
  118. package/providerRegistry-ZJQU7AJ7.js +31 -0
  119. package/{read-2PV4PN2E.js → read-M2Q6WEKB.js} +3 -3
  120. package/{readDocTool-FGK5XGAW.js → readDocTool-T37P3YPB.js} +1 -1
  121. package/{readlineWorkspace-FGQLVWLE.js → readlineWorkspace-VY5AMOGR.js} +127 -95
  122. package/{removeDialogAgentAction-6SGBZWSW.js → removeDialogAgentAction-HB3JBVAI.js} +7 -7
  123. package/{runAgentClientLoop-75TQMT2H.js → runAgentClientLoop-3NDADLVE.js} +36 -36
  124. package/{runtimeDoctorCommands-CROTMULY.js → runtimeDoctorCommands-X6WDBEQX.js} +2 -2
  125. package/{setDialogExtraReferencesAction-LC3SOVJO.js → setDialogExtraReferencesAction-4XLHRV37.js} +5 -5
  126. package/{setPrimaryDialogAgentAction-XE2HIEVY.js → setPrimaryDialogAgentAction-C3JOFC4W.js} +7 -7
  127. package/{settingSlice-GJYAXZZ6.js → settingSlice-CZRURSTH.js} +6 -6
  128. package/{spaceCommands-7GMVZQYI.js → spaceCommands-ENYCUUZH.js} +24 -23
  129. package/{streamAgentChatTurn-JYKKAOEU.js → streamAgentChatTurn-634OFUSR.js} +46 -44
  130. package/{switchDialogAgentAction-EDYI5RLR.js → switchDialogAgentAction-C6KVUKJP.js} +4 -4
  131. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  132. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  133. package/{tools-PCY3TDNR.js → tools-ILBLCF7D.js} +33 -33
  134. package/tuiSummaryLlmCaller-LFUBZKXK.js +127 -0
  135. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  136. package/{updateDialogTitleAction-36NOSXEX.js → updateDialogTitleAction-RKFET73N.js} +38 -21
  137. package/tuiSummaryLlmCaller-CCYGQDGB.js +0 -116
  138. package/{db-VQSAOWAO.js → db-WK5MDZVN.js} +1 -1
  139. package/{localRuntimeAuthority-R5UBODT3.js → localRuntimeAuthority-6IR6BBXE.js} +3 -3
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-YPREESF4.js";
5
5
  import {
6
6
  handleSendMessage
7
- } from "./chunk-QIU65GHY.js";
8
- import "./chunk-EVBFYPDC.js";
7
+ } from "./chunk-HMEMJ7GH.js";
8
+ import "./chunk-MC4XLIJ7.js";
9
9
  import "./chunk-3BMYXEUW.js";
10
10
  import "./chunk-YYLHWIW6.js";
11
11
  import "./chunk-AGGIDPCZ.js";
12
- import "./chunk-M5K26BH3.js";
13
- import "./chunk-XPMTSMUR.js";
12
+ import "./chunk-TVNI5FLG.js";
13
+ import "./chunk-6BEA566T.js";
14
14
  import "./chunk-5RGU3J7P.js";
15
15
  import {
16
16
  clearPendingUserInputQueue,
@@ -21,34 +21,34 @@ import {
21
21
  } from "./chunk-6YTOJY35.js";
22
22
  import "./chunk-M76ECQRD.js";
23
23
  import "./chunk-YDH3FDFQ.js";
24
- import "./chunk-IZWQKAGJ.js";
25
- import "./chunk-DJM4BCSB.js";
26
- import "./chunk-PZCTYKGU.js";
24
+ import "./chunk-F2CGG72C.js";
25
+ import "./chunk-VHJLQHPQ.js";
27
26
  import "./chunk-PSCNXBYA.js";
27
+ import "./chunk-ND2J3NRB.js";
28
28
  import "./chunk-BYXBJQAS.js";
29
- import "./chunk-MXUSPS2N.js";
29
+ import "./chunk-VRLI2WNW.js";
30
30
  import "./chunk-DWLEOOGR.js";
31
31
  import "./chunk-HVURBGF3.js";
32
32
  import "./chunk-ONXOABJR.js";
33
33
  import "./chunk-W7XHHYWM.js";
34
34
  import "./chunk-HNMXYYJR.js";
35
35
  import "./chunk-7S4YWN7P.js";
36
- import "./chunk-NG4UT4K4.js";
37
- import "./chunk-AJHEFRGJ.js";
38
- import "./chunk-S6FCVZ4I.js";
36
+ import "./chunk-WS22FPWT.js";
37
+ import "./chunk-ASGDO77C.js";
38
+ import "./chunk-PH5J5VUY.js";
39
39
  import "./chunk-Y5GCAMGP.js";
40
- import "./chunk-BEQGQMYW.js";
40
+ import "./chunk-RZANZZL2.js";
41
41
  import "./chunk-KX6YBIHG.js";
42
- import "./chunk-M67M3AK5.js";
42
+ import "./chunk-4DRWWIOL.js";
43
43
  import "./chunk-UAD2WT54.js";
44
- import "./chunk-X7WAX4JU.js";
44
+ import "./chunk-UA5S3LQQ.js";
45
45
  import "./chunk-VMFTFOWF.js";
46
46
  import "./chunk-WWC7I6TA.js";
47
47
  import "./chunk-ABQYVJBJ.js";
48
48
  import "./chunk-QSJ3HFEF.js";
49
- import "./chunk-OHUU52T3.js";
50
- import "./chunk-HJKGQPYF.js";
51
- import "./chunk-BJIRLHJR.js";
49
+ import "./chunk-L2ICPOAL.js";
50
+ import "./chunk-TL6L5XUT.js";
51
+ import "./chunk-GII32WZW.js";
52
52
  import "./chunk-UKWGR5SS.js";
53
53
  import "./chunk-QOKAKDPE.js";
54
54
  import "./chunk-OW765XBU.js";
@@ -6,7 +6,7 @@ import {
6
6
  buildBuiltinObjectSkillDbKey,
7
7
  buildBuiltinObjectSkillPageContent,
8
8
  buildCodeWorkDiscipline
9
- } from "./chunk-WVXCW7DR.js";
9
+ } from "./chunk-CLI4LFSM.js";
10
10
  import {
11
11
  buildSkillDocMarkdown,
12
12
  resolvePageSkillMetadata
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-O6OSWFZQ.js";
17
17
  import {
18
18
  nolotusId
19
- } from "./chunk-BEQGQMYW.js";
19
+ } from "./chunk-RZANZZL2.js";
20
20
  import {
21
21
  asNonEmptyStringArray
22
22
  } from "./chunk-VMFTFOWF.js";
@@ -55,6 +55,7 @@ var buildSkillGuidancePromptBlock = (options) => {
55
55
  return [
56
56
  title,
57
57
  recommendedSkillHints.length > 0 ? `\u4EE5\u4E0B\u6280\u80FD\u4E0E\u5F53\u524D\u4EFB\u52A1\u66F4\u76F8\u5173\uFF0C\u53EF\u4F18\u5148\u8003\u8651\uFF1A${recommendedSkillHints.join("\u3001")}` : "",
58
+ recommendedSkillHints.length > 0 ? "\u8FD9\u4E9B\u63A8\u8350\u6280\u80FD\u662F\u6309\u9700\u52A0\u8F7D\u7684\u8BF4\u660E\u4E66\uFF0C\u4E0D\u662F\u88C5\u9970\u6027\u6807\u7B7E\uFF1A\u5F53\u5F53\u524D\u4EFB\u52A1\u660E\u663E\u547D\u4E2D\u67D0\u9879\u6280\u80FD\u7684\u540D\u79F0\u6216\u804C\u8D23\u65F6\uFF0C\u5148\u7528 loadSkill \u8BFB\u53D6\u5BF9\u5E94\u6280\u80FD\uFF0C\u518D\u6309\u5176\u65B9\u6CD5\u6267\u884C\uFF1B\u4E0D\u547D\u4E2D\u65F6\u4E0D\u8981\u4E3A\u4E86\u2018\u7528 Skill\u2019\u800C\u52A0\u8F7D\u3002\u82E5\u6CA1\u6709 loadSkill \u5DE5\u5177\uFF0C\u5219\u6309\u73B0\u6709\u4E0A\u4E0B\u6587\u7EE7\u7EED\uFF0C\u4E0D\u8981\u5047\u88C5\u5DF2\u8BFB\u53D6\u6280\u80FD\u6B63\u6587\u3002" : "",
58
59
  ...skillPromptPatches
59
60
  ].filter(Boolean).join("\n");
60
61
  };
@@ -1339,6 +1340,94 @@ function buildSkillCreatorSkillContentBySlug(slug) {
1339
1340
  });
1340
1341
  }
1341
1342
 
1343
+ // packages/ai/skills/agentProviderSetupSkill.ts
1344
+ var AGENT_PROVIDER_SETUP_SKILL_SLUGS = ["agent-provider-setup"];
1345
+ function deterministicId11(prefix, seed) {
1346
+ let h = 2166136261;
1347
+ for (let i = 0; i < seed.length; i++) {
1348
+ h ^= seed.charCodeAt(i);
1349
+ h = h * 16777619 >>> 0;
1350
+ }
1351
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1352
+ return (prefix + suffix).slice(0, 26);
1353
+ }
1354
+ function normalizeSkillSeed11(input) {
1355
+ return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1356
+ }
1357
+ function buildAgentProviderSetupSkillId(slug) {
1358
+ return deterministicId11("01SK", normalizeSkillSeed11(slug) || slug);
1359
+ }
1360
+ function buildAgentProviderSetupSkillPageKey(userId, slug) {
1361
+ return `page-${userId}-${buildAgentProviderSetupSkillId(slug)}`;
1362
+ }
1363
+ function buildAgentProviderSetupSkillConfig(slug) {
1364
+ return {
1365
+ version: "0.1",
1366
+ kind: "skill",
1367
+ id: buildAgentProviderSetupSkillId(slug),
1368
+ name: "\u81EA\u5EFA Provider Agent \u5F15\u5BFC\uFF08agent-provider-setup\uFF09",
1369
+ triggerMode: "recommended",
1370
+ // execShell runs `nolo agent providers` + `nolo agent create`; ask_user is
1371
+ // used for the model/effort fork and the key-confirm gate.
1372
+ toolNames: ["execShell", "ask_user", "loadSkill"],
1373
+ description: 'Guide the user through creating an Agent on a subscription token-plan or metered own-API-key provider (Step Plan, Kimi Code, DeepSeek, OpenCode Go, \u2026). Use when the user wants to create an agent that is NOT platform-hosted \u2014 e.g. "\u7528\u8BA2\u9605\u4F1A\u5458\u5EFA agent", "create an agent on Step Plan / my own API key", or names a provider subscription. Reads `nolo agent providers --json` for the live preset list; never hardcode providers.'
1374
+ };
1375
+ }
1376
+ function buildAgentProviderSetupSkillContentBySlug(slug) {
1377
+ return buildSkillDocMarkdown({
1378
+ skillConfig: buildAgentProviderSetupSkillConfig(slug),
1379
+ body: `Help the user create an Agent that runs on their own subscription plan or API key, not a platform-hosted model.
1380
+
1381
+ The preset catalog is DATA-DRIVEN \u2014 do not hardcode provider names or base URLs. Always read the live list first.
1382
+
1383
+ ## Step 1 \u2014 List available presets
1384
+
1385
+ Run (via execShell):
1386
+ \`\`\`
1387
+ nolo agent providers --json
1388
+ \`\`\`
1389
+ This returns the registry presets grouped by \`group\`:
1390
+ - \`subscription\` \u2014 token-plan subscriptions (Step Plan, Kimi Code, OpenCode Go\u2026): need an API key + a locked baseUrl.
1391
+ - \`metered_api\` \u2014 pay-per-use own-key APIs (stepfun-api, deepseek-api, minimax\u2026).
1392
+ - \`subscription_oauth\` \u2014 OAuth brands (ChatGPT, Claude, Cursor\u2026): **cannot be created from a key here** \u2014 tell the user these require Nolo Desktop OAuth login, and stop.
1393
+
1394
+ Match the user's request to a preset \`id\`. If the user already named one (e.g. "stepfun \u8BA2\u9605" \u2192 \`step-plan\`), skip straight to it. If ambiguous between subscription vs metered for the same vendor (e.g. \`step-plan\` vs \`stepfun-api\`), ask which they mean \u2014 subscription is the monthly-Credit plan, metered is pay-per-token.
1395
+
1396
+ ## Step 2 \u2014 Model & reasoning effort: fork on how much the user knows
1397
+
1398
+ - **User is specific** (names a model or effort): use the preset's \`models[]\` list to confirm the choice is valid, and ask for reasoning effort only among what that model supports (\`low/medium/high\` for stepfun; check \`supportsReasoningEffort\`).
1399
+ - **User doesn't know / says "\u968F\u4FBF / \u4F60\u770B\u7740\u529E"**: just use the preset's \`defaultModel\` and default effort \u2014 do NOT interrogate them. The recommended model is already marked \`recommended:true\` in the list.
1400
+
1401
+ ## Step 3 \u2014 Collect the API key
1402
+
1403
+ Show the preset's \`keyFormatHint\` if present (it says where to get the key). Ask the user to paste their API key. Never invent one.
1404
+
1405
+ ## Step 4 \u2014 Confirm & create (sensitive \u2014 confirm first)
1406
+
1407
+ Show the user the exact command you will run, with the key masked, and get an explicit yes before executing. Then run it with the key passed via env so it never lands on the command line / in logs:
1408
+
1409
+ \`\`\`
1410
+ CUSTOM_API_KEY='<the-key>' nolo agent create <slug> \\
1411
+ --preset <preset-id> --api-key "$CUSTOM_API_KEY" --verify
1412
+ \`\`\`
1413
+
1414
+ - \`--preset\` auto-fills provider/baseUrl/model from the registry; add \`--model <id>\` only if the user picked a non-default model.
1415
+ - \`--verify\` probes the endpoint end-to-end and confirms the key works.
1416
+ - For a metered preset use its \`metered_api\` id the same way.
1417
+
1418
+ ## Step 5 \u2014 Report
1419
+
1420
+ On success report the created agentKey and model. If \`--verify\` fails, relay the endpoint's error verbatim and suggest checking the key / plan tier.
1421
+
1422
+ ## Hard rules
1423
+
1424
+ - API key goes through the \`CUSTOM_API_KEY\` env var, never as a literal arg, never echoed back.
1425
+ - Always show the resolved command (key masked) and get confirmation before running \u2014 creating an agent + storing a credential is a sensitive action.
1426
+ - OAuth subscription presets \u2192 redirect to Nolo Desktop; do not attempt to create them via key.
1427
+ - If \`nolo agent providers\` fails or the list is empty, say so and ask the user for the provider's base URL + key to build a manual custom agent instead.`
1428
+ });
1429
+ }
1430
+
1342
1431
  // packages/ai/skills/builtinSkillRegistry.ts
1343
1432
  var codePlannerContentBySlug = /* @__PURE__ */ (() => {
1344
1433
  const cache = /* @__PURE__ */ new Map();
@@ -1431,6 +1520,13 @@ var SOURCES = [
1431
1520
  buildPageKey: buildSkillCreatorSkillPageKey,
1432
1521
  buildConfig: buildSkillCreatorSkillConfig,
1433
1522
  buildContent: buildSkillCreatorSkillContentBySlug
1523
+ },
1524
+ {
1525
+ slugs: AGENT_PROVIDER_SETUP_SKILL_SLUGS,
1526
+ buildSkillId: buildAgentProviderSetupSkillId,
1527
+ buildPageKey: buildAgentProviderSetupSkillPageKey,
1528
+ buildConfig: buildAgentProviderSetupSkillConfig,
1529
+ buildContent: buildAgentProviderSetupSkillContentBySlug
1434
1530
  }
1435
1531
  ];
1436
1532
  var buildRegistry = () => {
@@ -3,18 +3,18 @@ import {
3
3
  } from "./chunk-YYLHWIW6.js";
4
4
  import {
5
5
  compareAgentSelection
6
- } from "./chunk-OKCTLCKS.js";
6
+ } from "./chunk-YOXYA2GU.js";
7
7
  import {
8
8
  isAntigravityOAuthAgent
9
- } from "./chunk-LHDV2QUI.js";
9
+ } from "./chunk-MJHQ3NRV.js";
10
10
  import {
11
11
  getModelAbility
12
- } from "./chunk-NG4UT4K4.js";
12
+ } from "./chunk-WS22FPWT.js";
13
13
  import {
14
14
  isOwnedAgentKey,
15
15
  ownedAgentKey,
16
16
  publicAgentKey
17
- } from "./chunk-BJIRLHJR.js";
17
+ } from "./chunk-GII32WZW.js";
18
18
  import {
19
19
  fnv1a32Hex
20
20
  } from "./chunk-UKWGR5SS.js";
@@ -6,10 +6,10 @@ import {
6
6
  } from "./chunk-AGGIDPCZ.js";
7
7
  import {
8
8
  getModelConfig
9
- } from "./chunk-MXUSPS2N.js";
9
+ } from "./chunk-VRLI2WNW.js";
10
10
  import {
11
11
  isPlatformHostedImageModel
12
- } from "./chunk-AJHEFRGJ.js";
12
+ } from "./chunk-ASGDO77C.js";
13
13
  import {
14
14
  asOptionalFiniteNumber
15
15
  } from "./chunk-WWC7I6TA.js";
@@ -14,7 +14,7 @@ function buildCliLocalRuntimeDbEnv(env = process.env) {
14
14
  };
15
15
  }
16
16
  async function getDefaultCliLocalRuntimeDb(options = {}) {
17
- const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-R5UBODT3.js");
17
+ const { getDefaultCliLocalRuntimeDb: getAuthorityBackedDb } = await import("./localRuntimeAuthority-6IR6BBXE.js");
18
18
  return getAuthorityBackedDb(options);
19
19
  }
20
20
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-M2ZBPSGH.js";
3
+ } from "./chunk-NFMHIUY3.js";
4
4
  import {
5
5
  getReadableCliDb
6
- } from "./chunk-RXX4GDIH.js";
6
+ } from "./chunk-LS2ZANRJ.js";
7
7
  import {
8
8
  buildCreatedAgentRecord,
9
9
  buildUpdatedAgentRecord,
@@ -12,10 +12,10 @@ import {
12
12
  resolveAgentRecordFromHybridStore,
13
13
  sanitizeAgentRecordForCliOutput,
14
14
  writeAgentRecord
15
- } from "./chunk-2LX7X7HX.js";
15
+ } from "./chunk-UTCCPWB2.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
- } from "./chunk-SPAQ4PVV.js";
18
+ } from "./chunk-SAFZABH7.js";
19
19
  import {
20
20
  toErrorMessage
21
21
  } from "./chunk-HNMXYYJR.js";
@@ -167,7 +167,7 @@ async function runAgentCreateCommand(args, deps = {}) {
167
167
  }
168
168
  if (!parsed) {
169
169
  output.write(
170
- "Usage: nolo agent create <agent> [--model <id>] [--cli-provider <provider>] [--api-source <source>] [--max-concurrent <n>] [--expires-at <iso>] [--prompt <text> | --prompt-file <path> | --prompt-doc <pageKey>] [--tools <json>] [--copy-provider-from <agent>] [--name <name>] [--custom-provider-url <url>] [--api-key <key>|--provider-api-key <key>] [--verify] [--field key=value]\n".replace("[--field key=value]", "[--handle <name>] [--field key=value]")
170
+ "Usage: nolo agent create <agent> [--preset <id>] [--model <id>] [--cli-provider <provider>] [--api-source <source>] [--max-concurrent <n>] [--expires-at <iso>] [--prompt <text> | --prompt-file <path> | --prompt-doc <pageKey>] [--tools <json>] [--copy-provider-from <agent>] [--name <name>] [--custom-provider-url <url>] [--api-key <key>|--provider-api-key <key>] [--verify] [--field key=value]\n" + " --preset <id> resolves a `nolo agent providers` preset (e.g. step-plan) into provider/baseUrl/model; explicit flags override it.\n".replace("[--field key=value]", "[--handle <name>] [--field key=value]")
171
171
  );
172
172
  return args[0] ? 0 : 1;
173
173
  }
@@ -212,7 +212,7 @@ async function runAgentCreateCommand(args, deps = {}) {
212
212
  clearCliLocalRuntimePreparedAgentCache();
213
213
  let verifyResult;
214
214
  if (parsed.verify) {
215
- const { verifyCustomProvider } = await import("./agentProviderCommands-65ZC2WB4.js");
215
+ const { verifyCustomProvider } = await import("./agentProviderCommands-ZBYHGTGY.js");
216
216
  const rec = built.nextRecord;
217
217
  verifyResult = await verifyCustomProvider({
218
218
  providerUrl: rec.customProviderUrl,
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-UAD2WT54.js";
8
8
  import {
9
9
  toTimestampMs
10
- } from "./chunk-X7WAX4JU.js";
10
+ } from "./chunk-UA5S3LQQ.js";
11
11
  import {
12
12
  fetchFromServer,
13
13
  getAllServers
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-5HKWE6OQ.js";
3
+ } from "./chunk-XKQJJK4F.js";
4
4
  import {
5
5
  resolveServerUrl
6
6
  } from "./chunk-A7GB5UGH.js";