nextclaw 0.48.2 → 0.49.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 (205) hide show
  1. package/dist/cli/app/index.js +1 -1
  2. package/dist/{nextclaw-cli-app-C1L77sjJ.js → nextclaw-cli-app-CjtgVEdo.js} +300 -3
  3. package/dist/nextclaw-cli-app-CjtgVEdo.js.map +1 -0
  4. package/package.json +17 -17
  5. package/resources/USAGE.md +33 -85
  6. package/ui-dist/.vite/manifest.json +538 -525
  7. package/ui-dist/.vite/manifest.json.gz +0 -0
  8. package/ui-dist/assets/{account-panel-BxMlLXYH.js → account-panel-UvHFa8Kl.js} +1 -1
  9. package/ui-dist/assets/account-panel-UvHFa8Kl.js.gz +0 -0
  10. package/ui-dist/assets/{api-Utt-xzrT.js → api-Dffeij78.js} +5 -5
  11. package/ui-dist/assets/api-Dffeij78.js.gz +0 -0
  12. package/ui-dist/assets/{app-data-DYXDL6X2.js → app-data-DzaIMy4D.js} +1 -1
  13. package/ui-dist/assets/app-data-DzaIMy4D.js.gz +0 -0
  14. package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js +109 -0
  15. package/ui-dist/assets/app-presenter-provider-O2tUKKGf.js.gz +0 -0
  16. package/ui-dist/assets/{appearance-settings-page-BfYznAK5.js → appearance-settings-page-D8cWniw-.js} +1 -1
  17. package/ui-dist/assets/appearance-settings-page-D8cWniw-.js.gz +0 -0
  18. package/ui-dist/assets/{book-open-DDW_3XpM.js → book-open-xqEj1OLE.js} +1 -1
  19. package/ui-dist/assets/{boxes-DwJeuK_h.js → boxes-D6uPnkGo.js} +1 -1
  20. package/ui-dist/assets/{card-IevY2nm-.js → card-CS8su2Zh.js} +1 -1
  21. package/ui-dist/assets/card-CS8su2Zh.js.gz +0 -0
  22. package/ui-dist/assets/{channels-list-page-DitnqbMR.js → channels-list-page-B_fYP1Pn.js} +1 -1
  23. package/ui-dist/assets/channels-list-page-B_fYP1Pn.js.gz +0 -0
  24. package/ui-dist/assets/{chevron-down-An7Km-t4.js → chevron-down-BL-yMYcX.js} +1 -1
  25. package/ui-dist/assets/{circle-alert-CDXqELuo.js → circle-alert-lSa3LRvS.js} +1 -1
  26. package/ui-dist/assets/{circle-dashed-CapXEpiV.js → circle-dashed-CU3yApvP.js} +1 -1
  27. package/ui-dist/assets/{client-B0krol7A.js → client-BtGBwLTs.js} +1 -1
  28. package/ui-dist/assets/{config-split-page-BtnkqWVp.js → config-split-page-6hHiiapl.js} +1 -1
  29. package/ui-dist/assets/config-split-page-6hHiiapl.js.gz +0 -0
  30. package/ui-dist/assets/{confirm-dialog-DFt4jpN7.js → confirm-dialog-ClT6iaj8.js} +1 -1
  31. package/ui-dist/assets/confirm-dialog-ClT6iaj8.js.gz +0 -0
  32. package/ui-dist/assets/{createLucideIcon-BTHK0Ot9.js → createLucideIcon-BNKf0_kc.js} +1 -1
  33. package/ui-dist/assets/{desktop-capabilities-page-CCf14WId.js → desktop-capabilities-page-CB5pniTx.js} +1 -1
  34. package/ui-dist/assets/desktop-capabilities-page-CB5pniTx.js.gz +0 -0
  35. package/ui-dist/assets/{desktop-update-config-DVoVgfFi.js → desktop-update-config-OuQV73gg.js} +1 -1
  36. package/ui-dist/assets/desktop-update-config-OuQV73gg.js.gz +0 -0
  37. package/ui-dist/assets/{dialog-BFN_1DBH.js → dialog-Xe73hpQz.js} +1 -1
  38. package/ui-dist/assets/dialog-Xe73hpQz.js.gz +0 -0
  39. package/ui-dist/assets/{dist-Bc9hOVNN.js → dist-BiIcnf9j.js} +1 -1
  40. package/ui-dist/assets/dist-BiIcnf9j.js.gz +0 -0
  41. package/ui-dist/assets/{dist-CEhIDAnr.js → dist-C5I0v8Qn.js} +1 -1
  42. package/ui-dist/assets/dist-C5I0v8Qn.js.gz +0 -0
  43. package/ui-dist/assets/{dist-hkVPP1th.js → dist-czPa8xFO.js} +1 -1
  44. package/ui-dist/assets/dist-czPa8xFO.js.gz +0 -0
  45. package/ui-dist/assets/doc-browser-BFkslEzY.js +1 -0
  46. package/ui-dist/assets/{doc-browser-BNUxmwD6.js → doc-browser-Cu58uiEg.js} +1 -1
  47. package/ui-dist/assets/doc-browser-Cu58uiEg.js.gz +0 -0
  48. package/ui-dist/assets/{doc-browser-context-C4yQrKrH.js → doc-browser-context-CekJxJFm.js} +1 -1
  49. package/ui-dist/assets/doc-browser-context-CekJxJFm.js.gz +0 -0
  50. package/ui-dist/assets/{ellipsis-BRI6ROeu.js → ellipsis-C5YXdOUx.js} +1 -1
  51. package/ui-dist/assets/{es2015-MOCbM0Eu.js → es2015-cuwbYI-l.js} +1 -1
  52. package/ui-dist/assets/es2015-cuwbYI-l.js.gz +0 -0
  53. package/ui-dist/assets/{extensions-DxUBMtHW.js → extensions-B5r-0jCq.js} +1 -1
  54. package/ui-dist/assets/extensions-B5r-0jCq.js.gz +0 -0
  55. package/ui-dist/assets/{eye-cnynUDGt.js → eye-C84inPcV.js} +1 -1
  56. package/ui-dist/assets/{form-actions-gQ0JEUwB.js → form-actions-AIdXOoCL.js} +1 -1
  57. package/ui-dist/assets/{i18n-B9yXA8KO.js → i18n-CPjq_hQX.js} +2 -2
  58. package/ui-dist/assets/i18n-CPjq_hQX.js.gz +0 -0
  59. package/ui-dist/assets/{i18n-provider-BYBJua91.js → i18n-provider-BYO9AhFy.js} +1 -1
  60. package/ui-dist/assets/keyboard-shortcuts-settings-page-1efEkGwq.js +1 -0
  61. package/ui-dist/assets/loader-circle-K1BDdHR5.js +1 -0
  62. package/ui-dist/assets/{login-page-CqrHhzaN.js → login-page-DBqkVTVD.js} +1 -1
  63. package/ui-dist/assets/login-page-DBqkVTVD.js.gz +0 -0
  64. package/ui-dist/assets/login-page-DjcRQLQe.js +1 -0
  65. package/ui-dist/assets/{logo-badge-Cr03YceJ.js → logo-badge-C-5-zim6.js} +1 -1
  66. package/ui-dist/assets/logo-badge-C-5-zim6.js.gz +0 -0
  67. package/ui-dist/assets/main-CLwCjK9U.css +1 -0
  68. package/ui-dist/assets/main-CLwCjK9U.css.gz +0 -0
  69. package/ui-dist/assets/main-CQ6GUYdX.js +2 -0
  70. package/ui-dist/assets/main-CQ6GUYdX.js.gz +0 -0
  71. package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js +1 -0
  72. package/ui-dist/assets/main-i18n-catalog.config-QB4DfJRJ.js.gz +0 -0
  73. package/ui-dist/assets/{mcp-marketplace-page-CifiVgFD.js → mcp-marketplace-page-CWAxBNaS.js} +1 -1
  74. package/ui-dist/assets/mcp-marketplace-page-CWAxBNaS.js.gz +0 -0
  75. package/ui-dist/assets/mcp-marketplace-page-Ct090ceA.js +1 -0
  76. package/ui-dist/assets/{model-config-page-C6jVNbSj.js → model-config-page-DBcuZyRC.js} +1 -1
  77. package/ui-dist/assets/model-config-page-DBcuZyRC.js.gz +0 -0
  78. package/ui-dist/assets/{navigation-link-kbCLRSr_.js → navigation-link-BAQjgx2F.js} +1 -1
  79. package/ui-dist/assets/navigation-link-BAQjgx2F.js.gz +0 -0
  80. package/ui-dist/assets/panel-app-i18n-catalog.config-CQFujXqt.js +1 -0
  81. package/ui-dist/assets/panel-app-maumVhbl.js +1 -0
  82. package/ui-dist/assets/panel-app-maumVhbl.js.gz +0 -0
  83. package/ui-dist/assets/{panelStandalone-DMBnYyTw.js → panelStandalone-BGA1s7JG.js} +2 -2
  84. package/ui-dist/assets/panelStandalone-BGA1s7JG.js.gz +0 -0
  85. package/ui-dist/assets/plus-LA8-jpxP.js +1 -0
  86. package/ui-dist/assets/{popover-XVDgjxcl.js → popover-NkrFlWHp.js} +1 -1
  87. package/ui-dist/assets/popover-NkrFlWHp.js.gz +0 -0
  88. package/ui-dist/assets/{privacy-settings-page-BN27MBVA.js → privacy-settings-page-DVC-aq1v.js} +1 -1
  89. package/ui-dist/assets/privacy-settings-page-DVC-aq1v.js.gz +0 -0
  90. package/ui-dist/assets/projects-Cq0E3c7N.js +1 -0
  91. package/ui-dist/assets/projects-Cq0E3c7N.js.gz +0 -0
  92. package/ui-dist/assets/{provider-scoped-model-input-BGZMCThn.js → provider-scoped-model-input-BGdZMWWa.js} +1 -1
  93. package/ui-dist/assets/provider-scoped-model-input-BGdZMWWa.js.gz +0 -0
  94. package/ui-dist/assets/{providers-config-page-D5aBwbOD.js → providers-config-page-B-IhHl6x.js} +1 -1
  95. package/ui-dist/assets/providers-config-page-B-IhHl6x.js.gz +0 -0
  96. package/ui-dist/assets/{puzzle-D5Dhacmb.js → puzzle-D6gulz7u.js} +1 -1
  97. package/ui-dist/assets/{pwa-ClQK56Qe.js → pwa-C3kR9mdy.js} +1 -1
  98. package/ui-dist/assets/pwa-C3kR9mdy.js.gz +0 -0
  99. package/ui-dist/assets/{refresh-cw-Bw5BY7vp.js → refresh-cw-h9Xq3LY3.js} +1 -1
  100. package/ui-dist/assets/remote-Cnawibbg.js +1 -0
  101. package/ui-dist/assets/{rotate-cw-BksCLAeE.js → rotate-cw-B6xm41Wn.js} +1 -1
  102. package/ui-dist/assets/runtime-config-page-LmrB2q65.js +1 -0
  103. package/ui-dist/assets/runtime-config-page-LmrB2q65.js.gz +0 -0
  104. package/ui-dist/assets/{save-CVi8VWzb.js → save-fff_WpY2.js} +1 -1
  105. package/ui-dist/assets/{search-DN-f7IIC.js → search-CUe41wjm.js} +1 -1
  106. package/ui-dist/assets/{search-config-page-BmuZTVxs.js → search-config-page-BIXmv5FY.js} +1 -1
  107. package/ui-dist/assets/search-config-page-BIXmv5FY.js.gz +0 -0
  108. package/ui-dist/assets/{secrets-config-page-NPHpg9sb.js → secrets-config-page-DU3fadrq.js} +1 -1
  109. package/ui-dist/assets/secrets-config-page-DU3fadrq.js.gz +0 -0
  110. package/ui-dist/assets/security-config-9s0i0I4N.js +1 -0
  111. package/ui-dist/assets/{select-CmDTqk2C.js → select-CG5YWnwe.js} +1 -1
  112. package/ui-dist/assets/select-CG5YWnwe.js.gz +0 -0
  113. package/ui-dist/assets/{service-apps-panel-BYGJ9_pO.js → service-apps-panel-Bshf3Wmq.js} +1 -1
  114. package/ui-dist/assets/service-apps-panel-Bshf3Wmq.js.gz +0 -0
  115. package/ui-dist/assets/{settings-2-B62YtZon.js → settings-2-CE3ELQyk.js} +1 -1
  116. package/ui-dist/assets/skeleton-BL9h32W7.js +1 -0
  117. package/ui-dist/assets/{tabs-Bk_mG7ql.js → tabs-BuE0qKMh.js} +1 -1
  118. package/ui-dist/assets/tabs-BuE0qKMh.js.gz +0 -0
  119. package/ui-dist/assets/{tag-chip-DgqKlI5D.js → tag-chip-gAH1IOsZ.js} +1 -1
  120. package/ui-dist/assets/{theme-provider-CeBY2pyu.js → theme-provider-DE7m9jvf.js} +1 -1
  121. package/ui-dist/assets/theme-provider-DE7m9jvf.js.gz +0 -0
  122. package/ui-dist/assets/{tooltip-CgGbBdYf.js → tooltip-DYcuWhuP.js} +1 -1
  123. package/ui-dist/assets/tooltip-DYcuWhuP.js.gz +0 -0
  124. package/ui-dist/assets/{trash-2-CVOev8yc.js → trash-2-BPPYt2NV.js} +1 -1
  125. package/ui-dist/assets/{use-config-b2DN67gs.js → use-config-Cyiw06-j.js} +1 -1
  126. package/ui-dist/assets/use-config-Cyiw06-j.js.gz +0 -0
  127. package/ui-dist/assets/{use-desktop-capabilities-B3tLU1yl.js → use-desktop-capabilities-OKG96v4y.js} +1 -1
  128. package/ui-dist/assets/use-desktop-capabilities-OKG96v4y.js.gz +0 -0
  129. package/ui-dist/assets/{use-panel-app-scroll-restoration-BekzoX6z.js → use-panel-app-scroll-restoration-DsV1IJx-.js} +1 -1
  130. package/ui-dist/assets/use-panel-app-scroll-restoration-DsV1IJx-.js.gz +0 -0
  131. package/ui-dist/assets/{use-viewport-layout-CUA3jQsA.js → use-viewport-layout-BS18drMT.js} +1 -1
  132. package/ui-dist/assets/use-viewport-layout-BS18drMT.js.gz +0 -0
  133. package/ui-dist/assets/{utils-UBHTdG5Q.js → utils-CBZPzC_b.js} +1 -1
  134. package/ui-dist/assets/{utils-UBHTdG5Q.js.gz → utils-CBZPzC_b.js.gz} +0 -0
  135. package/ui-dist/assets/x-DdXOqLnX.js +1 -0
  136. package/ui-dist/index.html +50 -50
  137. package/ui-dist/index.html.gz +0 -0
  138. package/ui-dist/panel-standalone.html +15 -15
  139. package/ui-dist/panel-standalone.html.gz +0 -0
  140. package/dist/nextclaw-cli-app-C1L77sjJ.js.map +0 -1
  141. package/ui-dist/assets/account-panel-BxMlLXYH.js.gz +0 -0
  142. package/ui-dist/assets/api-Utt-xzrT.js.gz +0 -0
  143. package/ui-dist/assets/app-data-DYXDL6X2.js.gz +0 -0
  144. package/ui-dist/assets/app-presenter-provider-CLsFiXvV.js +0 -109
  145. package/ui-dist/assets/app-presenter-provider-CLsFiXvV.js.gz +0 -0
  146. package/ui-dist/assets/appearance-settings-page-BfYznAK5.js.gz +0 -0
  147. package/ui-dist/assets/card-IevY2nm-.js.gz +0 -0
  148. package/ui-dist/assets/channels-list-page-DitnqbMR.js.gz +0 -0
  149. package/ui-dist/assets/config-split-page-BtnkqWVp.js.gz +0 -0
  150. package/ui-dist/assets/confirm-dialog-DFt4jpN7.js.gz +0 -0
  151. package/ui-dist/assets/desktop-capabilities-page-CCf14WId.js.gz +0 -0
  152. package/ui-dist/assets/desktop-update-config-DVoVgfFi.js.gz +0 -0
  153. package/ui-dist/assets/dialog-BFN_1DBH.js.gz +0 -0
  154. package/ui-dist/assets/dist-Bc9hOVNN.js.gz +0 -0
  155. package/ui-dist/assets/dist-CEhIDAnr.js.gz +0 -0
  156. package/ui-dist/assets/dist-hkVPP1th.js.gz +0 -0
  157. package/ui-dist/assets/doc-browser-BNUxmwD6.js.gz +0 -0
  158. package/ui-dist/assets/doc-browser-context-C4yQrKrH.js.gz +0 -0
  159. package/ui-dist/assets/doc-browser-w4eGZXLu.js +0 -1
  160. package/ui-dist/assets/es2015-MOCbM0Eu.js.gz +0 -0
  161. package/ui-dist/assets/extensions-DxUBMtHW.js.gz +0 -0
  162. package/ui-dist/assets/i18n-B9yXA8KO.js.gz +0 -0
  163. package/ui-dist/assets/loader-circle-rWr5Yo0E.js +0 -1
  164. package/ui-dist/assets/login-page-CfMSkOsg.js +0 -1
  165. package/ui-dist/assets/login-page-CqrHhzaN.js.gz +0 -0
  166. package/ui-dist/assets/logo-badge-Cr03YceJ.js.gz +0 -0
  167. package/ui-dist/assets/main-8cVkMfgE.css +0 -1
  168. package/ui-dist/assets/main-8cVkMfgE.css.gz +0 -0
  169. package/ui-dist/assets/main-Bys58GxY.js +0 -2
  170. package/ui-dist/assets/main-Bys58GxY.js.gz +0 -0
  171. package/ui-dist/assets/main-i18n-catalog.config-BSq9yiUQ.js +0 -1
  172. package/ui-dist/assets/main-i18n-catalog.config-BSq9yiUQ.js.gz +0 -0
  173. package/ui-dist/assets/mcp-marketplace-page-CifiVgFD.js.gz +0 -0
  174. package/ui-dist/assets/mcp-marketplace-page-DX5VE3mU.js +0 -1
  175. package/ui-dist/assets/model-config-page-C6jVNbSj.js.gz +0 -0
  176. package/ui-dist/assets/navigation-link-kbCLRSr_.js.gz +0 -0
  177. package/ui-dist/assets/panel-app-BUUle0gP.js +0 -1
  178. package/ui-dist/assets/panel-app-BUUle0gP.js.gz +0 -0
  179. package/ui-dist/assets/panel-app-i18n-catalog.config-C2St67SP.js +0 -1
  180. package/ui-dist/assets/panelStandalone-DMBnYyTw.js.gz +0 -0
  181. package/ui-dist/assets/plus-BHnKwuPq.js +0 -1
  182. package/ui-dist/assets/popover-XVDgjxcl.js.gz +0 -0
  183. package/ui-dist/assets/privacy-settings-page-BN27MBVA.js.gz +0 -0
  184. package/ui-dist/assets/projects-DV3UuJMS.js +0 -1
  185. package/ui-dist/assets/projects-DV3UuJMS.js.gz +0 -0
  186. package/ui-dist/assets/provider-scoped-model-input-BGZMCThn.js.gz +0 -0
  187. package/ui-dist/assets/providers-config-page-D5aBwbOD.js.gz +0 -0
  188. package/ui-dist/assets/pwa-ClQK56Qe.js.gz +0 -0
  189. package/ui-dist/assets/remote-Bl005fzu.js +0 -1
  190. package/ui-dist/assets/runtime-config-page-CmktQcMW.js +0 -1
  191. package/ui-dist/assets/runtime-config-page-CmktQcMW.js.gz +0 -0
  192. package/ui-dist/assets/search-config-page-BmuZTVxs.js.gz +0 -0
  193. package/ui-dist/assets/secrets-config-page-NPHpg9sb.js.gz +0 -0
  194. package/ui-dist/assets/security-config-Djptuyf2.js +0 -1
  195. package/ui-dist/assets/select-CmDTqk2C.js.gz +0 -0
  196. package/ui-dist/assets/service-apps-panel-BYGJ9_pO.js.gz +0 -0
  197. package/ui-dist/assets/skeleton-Eh64l4T2.js +0 -1
  198. package/ui-dist/assets/tabs-Bk_mG7ql.js.gz +0 -0
  199. package/ui-dist/assets/theme-provider-CeBY2pyu.js.gz +0 -0
  200. package/ui-dist/assets/tooltip-CgGbBdYf.js.gz +0 -0
  201. package/ui-dist/assets/use-config-b2DN67gs.js.gz +0 -0
  202. package/ui-dist/assets/use-desktop-capabilities-B3tLU1yl.js.gz +0 -0
  203. package/ui-dist/assets/use-panel-app-scroll-restoration-BekzoX6z.js.gz +0 -0
  204. package/ui-dist/assets/use-viewport-layout-CUA3jQsA.js.gz +0 -0
  205. package/ui-dist/assets/x-C0iaOsRW.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextclaw",
3
- "version": "0.48.2",
3
+ "version": "0.49.0",
4
4
  "description": "Powerful AI assistant for coordinating agents, skills, CLI tools, automations, and messaging apps.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -44,22 +44,22 @@
44
44
  "commander": "^12.1.0",
45
45
  "jszip": "^3.10.1",
46
46
  "yaml": "^2.8.1",
47
- "@nextclaw/app-runtime": "0.16.2",
48
- "@nextclaw/core": "0.17.17",
49
- "@nextclaw/kernel": "0.15.2",
50
- "@nextclaw/mcp": "0.3.44",
47
+ "@nextclaw/app-runtime": "0.16.3",
48
+ "@nextclaw/core": "0.17.19",
51
49
  "@nextclaw/ncp": "0.10.0",
52
- "@nextclaw/ncp-agent-runtime": "0.4.22",
53
- "@nextclaw/ncp-mcp": "0.2.44",
54
- "@nextclaw/ncp-toolkit": "0.6.23",
55
- "@nextclaw/nextclaw-ncp-runtime-http-client": "0.3.22",
56
- "@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.3.44",
57
- "@nextclaw/runtime": "0.4.43",
58
- "@nextclaw/remote": "0.3.56",
59
- "@nextclaw/service": "0.6.2",
60
- "@nextclaw/shared": "0.5.0",
61
- "@nextclaw/server": "0.22.2",
62
- "@nextclaw/nextclaw-hermes-acp-bridge": "0.3.21"
50
+ "@nextclaw/mcp": "0.3.46",
51
+ "@nextclaw/kernel": "0.16.1",
52
+ "@nextclaw/ncp-agent-runtime": "0.4.23",
53
+ "@nextclaw/ncp-mcp": "0.2.46",
54
+ "@nextclaw/ncp-toolkit": "0.6.24",
55
+ "@nextclaw/nextclaw-hermes-acp-bridge": "0.3.21",
56
+ "@nextclaw/remote": "0.3.58",
57
+ "@nextclaw/runtime": "0.4.45",
58
+ "@nextclaw/service": "0.6.4",
59
+ "@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.3.46",
60
+ "@nextclaw/server": "0.23.1",
61
+ "@nextclaw/shared": "0.5.1",
62
+ "@nextclaw/nextclaw-ncp-runtime-http-client": "0.3.22"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@types/node": "^20.17.6",
@@ -67,7 +67,7 @@
67
67
  "tsx": "^4.19.2",
68
68
  "typescript": "^5.6.3",
69
69
  "vitest": "^4.1.2",
70
- "@nextclaw/ui": "0.24.2"
70
+ "@nextclaw/ui": "0.25.0"
71
71
  },
72
72
  "scripts": {
73
73
  "dev": "tsx watch --tsconfig ../../scripts/dev/dev-runtime.tsconfig.json src/cli/app/index.ts",
@@ -179,62 +179,34 @@ Unknown ingress types are rejected instead of being turned into chat messages. U
179
179
 
180
180
  ## Configuration
181
181
 
182
- - **Config file:** `~/.nextclaw/config.json`
183
- - **Data directory:** Override with `NEXTCLAW_HOME=/path/to/dir` (config path becomes `$NEXTCLAW_HOME/config.json`).
182
+ Use the UI or the object-level CLI commands below to manage providers, models and search. These commands require a running NextClaw host and return JSON, including with `--json`. Use `NEXTCLAW_HOME` to select a separate data directory when needed.
184
183
 
185
- ### Minimal config
184
+ ### Connect a provider and select a model
186
185
 
187
- ```json
188
- {
189
- "providers": {
190
- "openrouter": { "apiKey": "sk-or-v1-xxx" }
191
- },
192
- "agents": {
193
- "defaults": { "model": "minimax/MiniMax-M2.5" }
194
- }
195
- }
186
+ ```bash
187
+ nextclaw providers templates --json
188
+ nextclaw providers list --json
189
+ # MY_PROVIDER_KEY is an environment variable containing your API key.
190
+ nextclaw providers add office --type openai --api-key-env MY_PROVIDER_KEY --json
191
+ nextclaw providers models discover office --json
192
+ nextclaw providers models set office <provider-scoped-model-id> --json
193
+ nextclaw providers test office --model <provider-scoped-model-id> --json
194
+ nextclaw models set <provider-scoped-model-id> --json
195
+ nextclaw models show --json
196
+ nextclaw providers show office --json
196
197
  ```
197
198
 
198
- ### Provider examples
199
+ Discovery returns upstream model names. For a provider-scoped model id, prefix the chosen name with the instance id: a discovered `gpt-example` on `office` becomes `office/gpt-example`; an upstream name containing slashes keeps those slashes. Do not add the instance prefix again if it is already present.
199
200
 
200
- **OpenRouter (recommended)**
201
+ Choose a template returned by `providers templates`; use `--type custom --api-base <url>` for a custom endpoint. Use `providers update <id>` for an existing provider. Options include `--name`, `--api-base`, `--wire-api auto|chat|responses`, `--api-key-env`, `--clear-api-key`, `--header name=value` (repeatable, replaces all custom headers), and `--clear-headers`. Read commands do not print API keys or custom header values.
201
202
 
202
- ```json
203
- {
204
- "providers": { "openrouter": { "apiKey": "sk-or-v1-xxx" } },
205
- "agents": { "defaults": { "model": "minimax/MiniMax-M2.5" } }
206
- }
207
- ```
203
+ `providers enable|disable|remove <id>` manages availability and removal. `providers models list <id>` shows configured models and capability overrides. `models list` shows the runtime catalog and discovery status. Discovery does not save models. `providers models set <id> [models...]` replaces the complete configured list; no models clears it.
208
204
 
209
- **MiniMax (Mainland China)**
205
+ `providers models configure <id>` replaces all capability overrides while leaving the model list unchanged. Supply repeatable `--vision <model=true|false>`, `--thinking <model=off,low,high>`, and `--thinking-default <model=high>`, or `--clear` to remove all overrides. Include every override you want to retain. A default thinking level must be included in that model's supplied supported levels. Vision `false` removes the positive vision override; it does not override built-in model capabilities with a negative capability.
210
206
 
211
- ```json
212
- {
213
- "providers": {
214
- "minimax": {
215
- "apiKey": "sk-api-xxx",
216
- "apiBase": "https://api.minimaxi.com/v1"
217
- }
218
- },
219
- "agents": { "defaults": { "model": "minimax/MiniMax-M2.5" } }
220
- }
221
- ```
207
+ For supported provider authorization, use `providers auth start <id> [--method <method-id>]`, follow the returned verification URI and user code, then `providers auth poll <id> <session-id>`. Respect the returned polling interval; pending is not completion. `providers auth import <id>` imports credentials from a supported provider CLI. Connection failures and denied/expired/error authorization results exit non-zero.
222
208
 
223
- **Local vLLM (or any OpenAI-compatible server)**
224
-
225
- ```json
226
- {
227
- "providers": {
228
- "vllm": {
229
- "apiKey": "dummy",
230
- "apiBase": "http://localhost:8000/v1"
231
- }
232
- },
233
- "agents": { "defaults": { "model": "meta-llama/Llama-3.1-8B-Instruct" } }
234
- }
235
- ```
236
-
237
- Supported providers include OpenRouter, OpenAI, Anthropic, MiniMax, Moonshot, Gemini, DeepSeek, DashScope, Zhipu, Groq, vLLM, and AiHubMix. You can configure them in the UI or by editing `config.json`.
209
+ After changes, use the corresponding `show` command to verify saved settings; use `providers test` to verify connectivity. Writes use the same running host API as the UI and await its configuration apply step. A reported apply failure must be investigated even if a subsequent query shows the saved value. These commands do not restart the host.
238
210
 
239
211
  ### Runtime config apply behavior (no restart)
240
212
 
@@ -421,10 +393,10 @@ Pass criteria: stable routing, no cross-session context leakage, predictable gro
421
393
 
422
394
  For internal AI operations (same as other built-in capabilities):
423
395
 
424
- - Yes, the runtime registers the `gateway` tool (`config.get` / `config.schema` / `config.apply` / `config.patch`).
425
- - The AI can use it to manage the same config surface when you explicitly ask.
426
- - As with all config mutations, it follows the explicit-request rule (no silent self-mutation).
427
- - **Required safe flow for AI config writes:**
396
+ - Prefer object-level CLI commands for providers, models, search, Agents, MCP and other covered tasks. Do not read or edit configuration files, or substitute generic `config set/unset`, for these normal operations.
397
+ - The `gateway` config actions and generic `config get/set/unset` remain transitional paths for documented capabilities not yet covered by object-level commands, or explicit manual recovery. They are not the recommended management interface.
398
+ - Configuration changes still require user intent; do not silently self-mutate.
399
+ - **Only when a transitional config write is necessary:**
428
400
  1. run `config.get` to read current config + hash;
429
401
  2. run `config.schema` and copy enum values exactly (no invented suffixes/variants);
430
402
  3. run `config.patch` with minimal patch;
@@ -461,9 +433,6 @@ nextclaw projects create research --template empty --json
461
433
  # Create a knowledge-base project at an explicit path
462
434
  nextclaw projects create knowledge --path ~/Projects/knowledge --template knowledge-base --json
463
435
 
464
- # Read the same project observation snapshot used by the Projects page
465
- nextclaw projects observe ~/Projects/knowledge --json
466
-
467
436
  # Remove a project from the list without deleting its folder, sessions, or work
468
437
  nextclaw projects remove <project-id> --confirm <project-id> --json
469
438
 
@@ -729,7 +698,6 @@ nextclaw app dev <app-dir> --reset-data --confirm <app-id> --json
729
698
  | `nextclaw projects templates` | List built-in project templates |
730
699
  | `nextclaw projects create <name>` | Create an empty or knowledge-base project |
731
700
  | `nextclaw projects remove <project-id>` | Remove a project from the list while preserving its folder, sessions, and work; requires `--confirm <project-id>` |
732
- | `nextclaw projects observe <root-path>` | Read the registered project's read-only observation snapshot |
733
701
  | `nextclaw sessions rename <session-id> <label>` | Rename a session |
734
702
  | `nextclaw sessions set-project <session-id> <directory>` | Bind a session to an existing project directory |
735
703
  | `nextclaw sessions clear-project <session-id>` | Clear a session project binding |
@@ -920,7 +888,7 @@ Status/diagnostics tips:
920
888
 
921
889
  Silent reply behavior:
922
890
 
923
- - If the model contains `<noreply/>`, NextClaw does not send any channel reply.
891
+ - If the model's entire normalized reply matches `<noreply/>`, NextClaw does not send any channel reply. Mentioning the token inside normal content remains visible.
924
892
  - If the final normalized reply is empty/whitespace, NextClaw also keeps silent (no fallback text).
925
893
  - This matches OpenClaw's core no-reply expectation while keeping logic minimal.
926
894
 
@@ -1217,38 +1185,18 @@ After changing channel config, NextClaw hot-reloads channel runtime automaticall
1217
1185
 
1218
1186
  ### Web search (Bocha default; Tavily, Brave, and Exa optional)
1219
1187
 
1220
- Configure the active search provider under `search`. Bocha is the default and is recommended for mainland China users. Tavily supports configurable retrieval depth and optional synthesized answers. Exa provides semantic web search with extracted page content:
1188
+ Use `nextclaw search` with a running host. Bocha is the default. Tavily supports retrieval depth and synthesized answers; Exa supports semantic search with extracted content.
1221
1189
 
1222
- ```json
1223
- {
1224
- "search": {
1225
- "provider": "exa",
1226
- "enabledProviders": ["bocha", "tavily", "brave", "exa"],
1227
- "defaults": {
1228
- "maxResults": 10
1229
- },
1230
- "providers": {
1231
- "bocha": {
1232
- "apiKey": "YOUR_BOCHA_KEY",
1233
- "summary": true,
1234
- "freshness": "noLimit"
1235
- },
1236
- "tavily": {
1237
- "apiKey": "YOUR_TAVILY_KEY",
1238
- "searchDepth": "advanced",
1239
- "includeAnswer": true
1240
- },
1241
- "brave": {
1242
- "apiKey": "YOUR_BRAVE_KEY"
1243
- },
1244
- "exa": {
1245
- "apiKey": "YOUR_EXA_KEY"
1246
- }
1247
- }
1248
- }
1249
- }
1190
+ ```bash
1191
+ nextclaw search show --json
1192
+ nextclaw search provider exa --api-key-env MY_EXA_KEY --json
1193
+ nextclaw search configure --provider exa --enabled-provider exa tavily --max-results 10 --json
1194
+ nextclaw search provider tavily --api-key-env MY_TAVILY_KEY --search-depth advanced --include-answer true --json
1195
+ nextclaw search show --json
1250
1196
  ```
1251
1197
 
1198
+ `search configure --enabled-provider` replaces the enabled list; `--clear-enabled-providers` disables all. `--max-results` accepts 1–50. All four providers support `--api-key-env`, `--clear-api-key` and `--base-url`. Bocha additionally supports `--summary true|false`, `--freshness` and `--docs-url`; Tavily supports `--search-depth basic|advanced` and `--include-answer true|false`. Options for another provider are rejected. Use `search show` to confirm saved settings; it does not test the upstream search service.
1199
+
1252
1200
  ### Command execution (exec)
1253
1201
 
1254
1202
  Allow the agent to run shell commands: