nextclaw 0.44.1 → 0.45.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 (243) hide show
  1. package/dist/cli/app/index.js +2 -2
  2. package/dist/cli/launcher/index.js +1 -1
  3. package/dist/{nextclaw-cli-app-scOxgGRP.js → nextclaw-cli-app-Bwa2L2Jv.js} +306 -22
  4. package/dist/nextclaw-cli-app-Bwa2L2Jv.js.map +1 -0
  5. package/dist/{nextclaw-distribution.utils-BneKclXo.js → nextclaw-distribution.utils-Bba2GRvc.js} +4 -2
  6. package/dist/nextclaw-distribution.utils-Bba2GRvc.js.map +1 -0
  7. package/package.json +15 -14
  8. package/resources/USAGE.md +36 -4
  9. package/resources/apps/nextclaw-personal-organizer/README.md +1 -1
  10. package/resources/apps/nextclaw-portable-runtime-lab/README.md +34 -0
  11. package/resources/apps/nextclaw-portable-runtime-lab/assets/icon.svg +12 -0
  12. package/resources/apps/nextclaw-portable-runtime-lab/manifest.json +74 -0
  13. package/resources/apps/nextclaw-portable-runtime-lab/marketplace.json +21 -0
  14. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-contacts.panel/assets/app.js +92 -0
  15. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-contacts.panel/assets/style.css +43 -0
  16. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-contacts.panel/index.html +43 -0
  17. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-contacts.panel/panel-app.json +10 -0
  18. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-focus.panel/assets/app.js +132 -0
  19. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-focus.panel/assets/style.css +39 -0
  20. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-focus.panel/index.html +40 -0
  21. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-focus.panel/panel-app.json +14 -0
  22. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-notes.panel/assets/app.js +117 -0
  23. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-notes.panel/assets/style.css +41 -0
  24. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-notes.panel/index.html +41 -0
  25. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-notes.panel/panel-app.json +12 -0
  26. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-panel.panel/assets/app.js +266 -0
  27. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-panel.panel/assets/style.css +87 -0
  28. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-panel.panel/index.html +154 -0
  29. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-panel.panel/panel-app.json +29 -0
  30. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-todos.panel/assets/app.js +143 -0
  31. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-todos.panel/assets/style.css +48 -0
  32. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-todos.panel/index.html +45 -0
  33. package/resources/apps/nextclaw-portable-runtime-lab/panels/nextclaw-portable-runtime-lab-todos.panel/panel-app.json +12 -0
  34. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-capabilities/service-app.json +20 -0
  35. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-capabilities/service.wasm +0 -0
  36. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-composition/service-app.json +30 -0
  37. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-composition/service.wasm +0 -0
  38. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-provider/service-app.json +30 -0
  39. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-provider/service.wasm +0 -0
  40. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-resident/service-app.json +31 -0
  41. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-resident/service.wasm +0 -0
  42. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-state/service-app.json +49 -0
  43. package/resources/apps/nextclaw-portable-runtime-lab/service-components/nextclaw-portable-runtime-lab-state/service.wasm +0 -0
  44. package/ui-dist/assets/abnfDiagram-VRR7QNED-BcFJp_1X.js.gz +0 -0
  45. package/ui-dist/assets/aiden0z-pptx-renderer.es-Dp2ezlQn.js.gz +0 -0
  46. package/ui-dist/assets/{api-iMkU_o5P.js → api-m33O1Kb0.js} +6 -6
  47. package/ui-dist/assets/api-m33O1Kb0.js.gz +0 -0
  48. package/ui-dist/assets/{appearance-settings-page-CU5k4b-M.js → appearance-settings-page-x4Vjnfmz.js} +1 -1
  49. package/ui-dist/assets/appearance-settings-page-x4Vjnfmz.js.gz +0 -0
  50. package/ui-dist/assets/arc-CkgyPMyW.js.gz +0 -0
  51. package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-CMd4cIjI.js.gz +0 -0
  52. package/ui-dist/assets/blockDiagram-677ZJIJ3-Bz3tbhet.js.gz +0 -0
  53. package/ui-dist/assets/{book-open-nD8gdMhA.js → book-open-BHiasMCg.js} +1 -1
  54. package/ui-dist/assets/c4Diagram-LMCZKHZV-D9hFNAGv.js.gz +0 -0
  55. package/ui-dist/assets/{channels-list-page-Drlt62kY.js → channels-list-page-DOxJZeXq.js} +2 -2
  56. package/ui-dist/assets/channels-list-page-DOxJZeXq.js.gz +0 -0
  57. package/ui-dist/assets/chunk-32BRIVSS-7NrjEITq.js.gz +0 -0
  58. package/ui-dist/assets/chunk-52WLFC77-viIcqj9q.js.gz +0 -0
  59. package/ui-dist/assets/chunk-5JV3BV7I-CuKgJQ4W.js.gz +0 -0
  60. package/ui-dist/assets/chunk-5TONJI2A-CYeiWZKb.js.gz +0 -0
  61. package/ui-dist/assets/chunk-7BUUIJ7U-BvydOcm3.js.gz +0 -0
  62. package/ui-dist/assets/chunk-C7G6YPKG-DAizzYwr.js.gz +0 -0
  63. package/ui-dist/assets/chunk-DseTPa7n.js.gz +0 -0
  64. package/ui-dist/assets/chunk-EX3LRPZG-BmlDFIRW.js.gz +0 -0
  65. package/ui-dist/assets/chunk-FWX5IMBZ-D0ksHZZ9.js.gz +0 -0
  66. package/ui-dist/assets/chunk-HOUHSVGY-DPkq8FCm.js.gz +0 -0
  67. package/ui-dist/assets/chunk-ICXQ74PX-FAatv5fC.js.gz +0 -0
  68. package/ui-dist/assets/chunk-JG7HCLWE-DLkIi4F7.js.gz +0 -0
  69. package/ui-dist/assets/chunk-KEIR6QF5-f9psyCXK.js.gz +0 -0
  70. package/ui-dist/assets/chunk-MOJQB5TN-Di52TorW.js.gz +0 -0
  71. package/ui-dist/assets/chunk-PUDLZKDR-f3IJh3sN.js.gz +0 -0
  72. package/ui-dist/assets/chunk-Q4XR5HBZ-DQFeUPxZ.js.gz +0 -0
  73. package/ui-dist/assets/chunk-R7FJI6CG-C3XpZ-2u.js.gz +0 -0
  74. package/ui-dist/assets/chunk-RYQCIY6F-CAqa5klQ.js.gz +0 -0
  75. package/ui-dist/assets/chunk-U6XO7XAA-D_WXezeD.js.gz +0 -0
  76. package/ui-dist/assets/chunk-V7JOEXUC-CZ70oOtp.js.gz +0 -0
  77. package/ui-dist/assets/chunk-WYO6CB5R-Dn9To_OI.js.gz +0 -0
  78. package/ui-dist/assets/chunk-ZGVPDNZ5-C6YtZDU0.js.gz +0 -0
  79. package/ui-dist/assets/chunk-ZIRB5QZD-DMuYtnHF.js.gz +0 -0
  80. package/ui-dist/assets/{config-split-page-BtJZp1E5.js → config-split-page-DBnMEP1o.js} +1 -1
  81. package/ui-dist/assets/config-split-page-DBnMEP1o.js.gz +0 -0
  82. package/ui-dist/assets/{confirm-dialog-k2-Jq_x3.js → confirm-dialog-f5NKLh5I.js} +2 -2
  83. package/ui-dist/assets/confirm-dialog-f5NKLh5I.js.gz +0 -0
  84. package/ui-dist/assets/cose-bilkent-JH36ORCC-Bc2Ex5Y3.js.gz +0 -0
  85. package/ui-dist/assets/{createLucideIcon-DxlwKLr-.js → createLucideIcon-CHALGA42.js} +1 -1
  86. package/ui-dist/assets/cynefinDiagram-TSTJHNR4-DVysQoGz.js.gz +0 -0
  87. package/ui-dist/assets/cytoscape.esm-0uDtdD0l.js.gz +0 -0
  88. package/ui-dist/assets/dagre-CMhQ1cAG.js.gz +0 -0
  89. package/ui-dist/assets/dagre-VKFMJZFB-RYyWpPJZ.js.gz +0 -0
  90. package/ui-dist/assets/defaultLocale-DSWXGgt0.js.gz +0 -0
  91. package/ui-dist/assets/desktop-capabilities-page-DixayAe6.js +1 -0
  92. package/ui-dist/assets/desktop-capabilities-page-DixayAe6.js.gz +0 -0
  93. package/ui-dist/assets/desktop-update-config-ChhfeOHj.js +1 -0
  94. package/ui-dist/assets/desktop-update-config-ChhfeOHj.js.gz +0 -0
  95. package/ui-dist/assets/diagram-FQU43EPY-BD6KONdF.js.gz +0 -0
  96. package/ui-dist/assets/diagram-G47NLZAW-CGB2ptRR.js.gz +0 -0
  97. package/ui-dist/assets/diagram-NH7WQ7WH-DnkOI6cU.js.gz +0 -0
  98. package/ui-dist/assets/diagram-OA4YK3LP-DF82RZ7P.js.gz +0 -0
  99. package/ui-dist/assets/diagram-WEI45ONY-Be2v7Ck9.js.gz +0 -0
  100. package/ui-dist/assets/dist--ta5rX12.js.gz +0 -0
  101. package/ui-dist/assets/{dist-Cy_e4kNb.js → dist-_UMsWSY0.js} +1 -1
  102. package/ui-dist/assets/dist-_UMsWSY0.js.gz +0 -0
  103. package/ui-dist/assets/{dist-m08DUswB.js → dist-sD6V4nHX.js} +1 -1
  104. package/ui-dist/assets/dist-sD6V4nHX.js.gz +0 -0
  105. package/ui-dist/assets/doc-browser-Bq7LJsQY.js +1 -0
  106. package/ui-dist/assets/doc-browser-Bq7LJsQY.js.gz +0 -0
  107. package/ui-dist/assets/doc-browser-BuDgpY2e.js +1 -0
  108. package/ui-dist/assets/{doc-browser-context-jiy-O4F8.js → doc-browser-context-Capim3og.js} +1 -1
  109. package/ui-dist/assets/doc-browser-context-Capim3og.js.gz +0 -0
  110. package/ui-dist/assets/docx-preview-BqwAjrj3.js.gz +0 -0
  111. package/ui-dist/assets/ebnfDiagram-CCIWWBDH-CP98OYk8.js.gz +0 -0
  112. package/ui-dist/assets/erDiagram-Q63AITRT-ZLlx8xfs.js.gz +0 -0
  113. package/ui-dist/assets/{extensions-CIb17__o.js → extensions-Bdclr3Wr.js} +1 -1
  114. package/ui-dist/assets/extensions-Bdclr3Wr.js.gz +0 -0
  115. package/ui-dist/assets/{form-actions-DGf5zUg_.js → form-actions-CH0kWhEt.js} +1 -1
  116. package/ui-dist/assets/ganttDiagram-NO4QXBWP-DXCDjHR2.js.gz +0 -0
  117. package/ui-dist/assets/gitGraphDiagram-IHSO6WYX-l2HWrTJp.js.gz +0 -0
  118. package/ui-dist/assets/graphlib-CQ6QV4yP.js.gz +0 -0
  119. package/ui-dist/assets/index-BjxnLYE3.js +109 -0
  120. package/ui-dist/assets/index-BjxnLYE3.js.gz +0 -0
  121. package/ui-dist/assets/index-CBmwJjwE.css +1 -0
  122. package/ui-dist/assets/index-CBmwJjwE.css.gz +0 -0
  123. package/ui-dist/assets/ishikawaDiagram-FXEZZL3T-y_Xy128F.js.gz +0 -0
  124. package/ui-dist/assets/journeyDiagram-5HDEW3XC-DJn5xYcQ.js.gz +0 -0
  125. package/ui-dist/assets/jszip.min-8hyJpgpx.js.gz +0 -0
  126. package/ui-dist/assets/kanban-definition-HUTT4EX6-DJVIOR21.js.gz +0 -0
  127. package/ui-dist/assets/katex-ARhY9PS1.js.gz +0 -0
  128. package/ui-dist/assets/linear-BtDLqtzF.js.gz +0 -0
  129. package/ui-dist/assets/loader-circle-CH_0iPLy.js +1 -0
  130. package/ui-dist/assets/map-BKnQyvd0.js.gz +0 -0
  131. package/ui-dist/assets/mcp-marketplace-page-BUsxLVB5.js +10 -0
  132. package/ui-dist/assets/mcp-marketplace-page-BUsxLVB5.js.gz +0 -0
  133. package/ui-dist/assets/mcp-marketplace-page-GPRV3fB0.js +1 -0
  134. package/ui-dist/assets/mermaid-parser.core-XUNZhr2W.js.gz +0 -0
  135. package/ui-dist/assets/mermaid.core-ySrvolIe.js.gz +0 -0
  136. package/ui-dist/assets/middleware-DXsbf9xI.js.gz +0 -0
  137. package/ui-dist/assets/mindmap-definition-LN4V7U3C-BypL9tei.js.gz +0 -0
  138. package/ui-dist/assets/model-config-page-CIevwqp4.js +1 -0
  139. package/ui-dist/assets/model-config-page-CIevwqp4.js.gz +0 -0
  140. package/ui-dist/assets/{navigation-link-DAfwFCj4.js → navigation-link-CAUiM3zS.js} +1 -1
  141. package/ui-dist/assets/navigation-link-CAUiM3zS.js.gz +0 -0
  142. package/ui-dist/assets/ordinal-CxxVWxYU.js.gz +0 -0
  143. package/ui-dist/assets/path-10BjdyLh.js.gz +0 -0
  144. package/ui-dist/assets/pegDiagram-2B236MQR-D-U2KBGv.js.gz +0 -0
  145. package/ui-dist/assets/pieDiagram-ENE6RG2P-CBi3GusJ.js.gz +0 -0
  146. package/ui-dist/assets/plus-B3obD55V.js +1 -0
  147. package/ui-dist/assets/preload-helper-D4M6sveU.js.gz +0 -0
  148. package/ui-dist/assets/privacy-settings-page-CNKfZsYH.js +1 -0
  149. package/ui-dist/assets/privacy-settings-page-CNKfZsYH.js.gz +0 -0
  150. package/ui-dist/assets/providers-config-page-DAah2NIS.js +1 -0
  151. package/ui-dist/assets/providers-config-page-DAah2NIS.js.gz +0 -0
  152. package/ui-dist/assets/quadrantDiagram-ABIIQ3AL-H0ZuvnZL.js.gz +0 -0
  153. package/ui-dist/assets/railroadDiagram-RFXS5EU6-D7Y2EqSd.js.gz +0 -0
  154. package/ui-dist/assets/react-Co6JiC1n.js +8 -0
  155. package/ui-dist/assets/react-Co6JiC1n.js.gz +0 -0
  156. package/ui-dist/assets/{refresh-cw-D_Eibznw.js → refresh-cw-BG_LX3SS.js} +1 -1
  157. package/ui-dist/assets/remote-DuscgfvR.js +1 -0
  158. package/ui-dist/assets/requirementDiagram-TGXJPOKE-BiXNX1NN.js.gz +0 -0
  159. package/ui-dist/assets/{rotate-cw-QQjmoWuq.js → rotate-cw-Cz7I_m7O.js} +1 -1
  160. package/ui-dist/assets/rough.esm-DxgC_14r.js.gz +0 -0
  161. package/ui-dist/assets/runtime-config-page-Cl1RpmSC.js +1 -0
  162. package/ui-dist/assets/runtime-config-page-Cl1RpmSC.js.gz +0 -0
  163. package/ui-dist/assets/sankeyDiagram-HTMAVEWB-qzDeLztW.js.gz +0 -0
  164. package/ui-dist/assets/{save-W2xthJJ2.js → save-BiHnb8ps.js} +1 -1
  165. package/ui-dist/assets/{search-Vih1R2BD.js → search-C47TyRg0.js} +1 -1
  166. package/ui-dist/assets/{search-config-page-CtBcL2uc.js → search-config-page-BAIzd6gN.js} +1 -1
  167. package/ui-dist/assets/search-config-page-BAIzd6gN.js.gz +0 -0
  168. package/ui-dist/assets/{secrets-config-page-Q6XfIj0h.js → secrets-config-page-Ddi-n43R.js} +2 -2
  169. package/ui-dist/assets/secrets-config-page-Ddi-n43R.js.gz +0 -0
  170. package/ui-dist/assets/security-config-C8MHnE1r.js +1 -0
  171. package/ui-dist/assets/{select-lNdozU4o.js → select-BzQKfW1e.js} +2 -2
  172. package/ui-dist/assets/select-BzQKfW1e.js.gz +0 -0
  173. package/ui-dist/assets/sequenceDiagram-DBY2YBRQ-BtRbPQtL.js.gz +0 -0
  174. package/ui-dist/assets/skeleton-BXFAE9SE.js +1 -0
  175. package/ui-dist/assets/src-Bw-mzbQb.js.gz +0 -0
  176. package/ui-dist/assets/stateDiagram-2N3HPSRC-BJ-mFeOz.js.gz +0 -0
  177. package/ui-dist/assets/swimlanes-5IMT3BWC-BsucVOO2.js.gz +0 -0
  178. package/ui-dist/assets/{tag-chip-gdaU9bE7.js → tag-chip-C3K814HZ.js} +1 -1
  179. package/ui-dist/assets/timeline-definition-FHXFAJF6-Bicewlzo.js.gz +0 -0
  180. package/ui-dist/assets/vennDiagram-L72KCM5P-BxOOnO9x.js.gz +0 -0
  181. package/ui-dist/assets/wardleyDiagram-EHGQE667-Cl7NltMv.js.gz +0 -0
  182. package/ui-dist/assets/x-C1r9IXet.js +1 -0
  183. package/ui-dist/assets/xlsx-DrDuDNAa.js.gz +0 -0
  184. package/ui-dist/assets/xychartDiagram-FW5EYKEG-DiMIxQ7N.js.gz +0 -0
  185. package/ui-dist/index.html +29 -21
  186. package/ui-dist/index.html.gz +0 -0
  187. package/ui-dist/logos/discord.svg.gz +0 -0
  188. package/ui-dist/logos/feishu.svg.gz +0 -0
  189. package/ui-dist/logos/gemini.svg.gz +0 -0
  190. package/ui-dist/logos/mimo.svg.gz +0 -0
  191. package/ui-dist/logos/openai.svg.gz +0 -0
  192. package/ui-dist/logos/slack.svg.gz +0 -0
  193. package/ui-dist/logos/vllm.svg.gz +0 -0
  194. package/ui-dist/logos/weixin.svg.gz +0 -0
  195. package/ui-dist/logos/whatsapp.svg.gz +0 -0
  196. package/ui-dist/logos/zhipu.svg.gz +0 -0
  197. package/ui-dist/offline.html.gz +0 -0
  198. package/ui-dist/runtime-icons/codex-openai.svg.gz +0 -0
  199. package/ui-dist/sw.js.gz +0 -0
  200. package/ui-dist/themes/island/island-atmosphere.webp +0 -0
  201. package/dist/nextclaw-cli-app-scOxgGRP.js.map +0 -1
  202. package/dist/nextclaw-distribution.utils-BneKclXo.js.map +0 -1
  203. package/ui-dist/assets/api-iMkU_o5P.js.gz +0 -0
  204. package/ui-dist/assets/appearance-settings-page-CU5k4b-M.js.gz +0 -0
  205. package/ui-dist/assets/channels-list-page-Drlt62kY.js.gz +0 -0
  206. package/ui-dist/assets/config-split-page-BtJZp1E5.js.gz +0 -0
  207. package/ui-dist/assets/confirm-dialog-k2-Jq_x3.js.gz +0 -0
  208. package/ui-dist/assets/desktop-update-config-BiZmy7FC.js +0 -1
  209. package/ui-dist/assets/desktop-update-config-BiZmy7FC.js.gz +0 -0
  210. package/ui-dist/assets/dist-Cy_e4kNb.js.gz +0 -0
  211. package/ui-dist/assets/dist-m08DUswB.js.gz +0 -0
  212. package/ui-dist/assets/doc-browser-CPsPHh12.js +0 -1
  213. package/ui-dist/assets/doc-browser-context-jiy-O4F8.js.gz +0 -0
  214. package/ui-dist/assets/doc-browser-npOvWtgf.js +0 -1
  215. package/ui-dist/assets/doc-browser-npOvWtgf.js.gz +0 -0
  216. package/ui-dist/assets/extensions-CIb17__o.js.gz +0 -0
  217. package/ui-dist/assets/index-C86hxgv5.css +0 -1
  218. package/ui-dist/assets/index-C86hxgv5.css.gz +0 -0
  219. package/ui-dist/assets/index-CYBXR7zN.js +0 -109
  220. package/ui-dist/assets/index-CYBXR7zN.js.gz +0 -0
  221. package/ui-dist/assets/loader-circle-BlLuRFVW.js +0 -1
  222. package/ui-dist/assets/mcp-marketplace-page-B12JNh7Q.js +0 -1
  223. package/ui-dist/assets/mcp-marketplace-page-kLWW6kzt.js +0 -9
  224. package/ui-dist/assets/mcp-marketplace-page-kLWW6kzt.js.gz +0 -0
  225. package/ui-dist/assets/model-config-page-DSeAjVT_.js +0 -1
  226. package/ui-dist/assets/model-config-page-DSeAjVT_.js.gz +0 -0
  227. package/ui-dist/assets/navigation-link-DAfwFCj4.js.gz +0 -0
  228. package/ui-dist/assets/plus-D4LtWtTk.js +0 -1
  229. package/ui-dist/assets/privacy-settings-page-tN0Mt15x.js +0 -1
  230. package/ui-dist/assets/privacy-settings-page-tN0Mt15x.js.gz +0 -0
  231. package/ui-dist/assets/providers-config-page-CgPrXR1u.js +0 -1
  232. package/ui-dist/assets/providers-config-page-CgPrXR1u.js.gz +0 -0
  233. package/ui-dist/assets/react-8iBFECZE.js +0 -8
  234. package/ui-dist/assets/react-8iBFECZE.js.gz +0 -0
  235. package/ui-dist/assets/remote-Derr_AQp.js +0 -1
  236. package/ui-dist/assets/runtime-config-page-Crq96Jjq.js +0 -1
  237. package/ui-dist/assets/runtime-config-page-Crq96Jjq.js.gz +0 -0
  238. package/ui-dist/assets/search-config-page-CtBcL2uc.js.gz +0 -0
  239. package/ui-dist/assets/secrets-config-page-Q6XfIj0h.js.gz +0 -0
  240. package/ui-dist/assets/security-config-CE9rkQvq.js +0 -1
  241. package/ui-dist/assets/select-lNdozU4o.js.gz +0 -0
  242. package/ui-dist/assets/skeleton-B__aTcly.js +0 -1
  243. package/ui-dist/assets/x-CWdWBu_U.js +0 -1
@@ -0,0 +1,143 @@
1
+ const actionIds = {
2
+ list: "nextclaw-portable-runtime-lab-state.records_list",
3
+ upsert: "nextclaw-portable-runtime-lab-state.record_upsert",
4
+ remove: "nextclaw-portable-runtime-lab-state.record_delete",
5
+ };
6
+
7
+ const elements = {
8
+ form: document.querySelector("[data-todo-form]"),
9
+ input: document.querySelector("[data-todo-input]"),
10
+ list: document.querySelector("[data-todo-list]"),
11
+ openCount: document.querySelector("[data-open-count]"),
12
+ doneCount: document.querySelector("[data-done-count]"),
13
+ notice: document.querySelector("[data-notice]"),
14
+ revision: document.querySelector("[data-proof-revision]"),
15
+ };
16
+
17
+ let todos = [];
18
+
19
+ function serviceActions() {
20
+ const bridge = window.nextclaw?.serviceActions;
21
+ if (!bridge) throw new Error("应用还没有连接到 NextClaw,请刷新后重试。");
22
+ return bridge;
23
+ }
24
+
25
+ async function invoke(actionId, input = {}) {
26
+ return await serviceActions().invoke(actionId, input);
27
+ }
28
+
29
+ function setNotice(message, tone = "") {
30
+ elements.notice.textContent = message;
31
+ elements.notice.dataset.tone = tone;
32
+ }
33
+
34
+ function setBusy(busy) {
35
+ for (const control of document.querySelectorAll("button, input")) control.disabled = busy;
36
+ }
37
+
38
+ function createTodoRow(todo) {
39
+ const row = document.createElement("article");
40
+ row.className = `todo-item${todo.status === "done" ? " is-done" : ""}`;
41
+
42
+ const toggle = document.createElement("button");
43
+ toggle.type = "button";
44
+ toggle.className = "check-button";
45
+ toggle.dataset.todoToggle = todo.id;
46
+ toggle.setAttribute("aria-label", todo.status === "done" ? "恢复任务" : "完成任务");
47
+ toggle.textContent = todo.status === "done" ? "✓" : "";
48
+
49
+ const title = document.createElement("p");
50
+ title.textContent = todo.title;
51
+
52
+ const remove = document.createElement("button");
53
+ remove.type = "button";
54
+ remove.className = "remove-button";
55
+ remove.dataset.todoRemove = todo.id;
56
+ remove.setAttribute("aria-label", `删除 ${todo.title}`);
57
+ remove.textContent = "删除";
58
+
59
+ row.append(toggle, title, remove);
60
+ return row;
61
+ }
62
+
63
+ function render() {
64
+ const ordered = [...todos].sort((left, right) =>
65
+ Number(left.status === "done") - Number(right.status === "done") ||
66
+ right.version - left.version
67
+ );
68
+ elements.list.replaceChildren();
69
+ if (ordered.length === 0) {
70
+ const empty = document.createElement("div");
71
+ empty.className = "empty";
72
+ empty.innerHTML = "<strong>今天还没有任务</strong><span>从上面添加第一件要做的事吧。</span>";
73
+ elements.list.append(empty);
74
+ } else {
75
+ for (const todo of ordered) elements.list.append(createTodoRow(todo));
76
+ }
77
+ elements.openCount.textContent = String(todos.filter((todo) => todo.status !== "done").length);
78
+ elements.doneCount.textContent = String(todos.filter((todo) => todo.status === "done").length);
79
+ }
80
+
81
+ async function refresh() {
82
+ const data = await invoke(actionIds.list);
83
+ todos = (Array.isArray(data.records) ? data.records : [])
84
+ .filter((record) => Array.isArray(record.tags) && record.tags.includes("todo"));
85
+ elements.revision.textContent = `revision ${data.revision} · ${data.contentHash}`;
86
+ render();
87
+ }
88
+
89
+ async function run(operation, successMessage) {
90
+ setBusy(true);
91
+ setNotice("正在保存…");
92
+ try {
93
+ await operation();
94
+ await refresh();
95
+ setNotice(successMessage, "success");
96
+ } catch (error) {
97
+ setNotice(error instanceof Error ? error.message : String(error), "error");
98
+ } finally {
99
+ setBusy(false);
100
+ elements.input.focus();
101
+ }
102
+ }
103
+
104
+ elements.form.addEventListener("submit", (event) => {
105
+ event.preventDefault();
106
+ const title = elements.input.value.trim();
107
+ if (!title) return;
108
+ void run(async () => {
109
+ await invoke(actionIds.upsert, {
110
+ id: `todo-${Date.now().toString(36)}`,
111
+ title,
112
+ status: "open",
113
+ tags: ["todo", "daily"],
114
+ });
115
+ elements.input.value = "";
116
+ }, "已加入今天的清单");
117
+ });
118
+
119
+ elements.list.addEventListener("click", (event) => {
120
+ const target = event.target instanceof Element ? event.target : null;
121
+ const toggleId = target?.closest("[data-todo-toggle]")?.dataset.todoToggle;
122
+ const removeId = target?.closest("[data-todo-remove]")?.dataset.todoRemove;
123
+ if (toggleId) {
124
+ const todo = todos.find((entry) => entry.id === toggleId);
125
+ if (!todo) return;
126
+ void run(() => invoke(actionIds.upsert, {
127
+ id: todo.id,
128
+ title: todo.title,
129
+ status: todo.status === "done" ? "open" : "done",
130
+ tags: todo.tags,
131
+ }), todo.status === "done" ? "任务已恢复" : "做得好,完成一件");
132
+ }
133
+ if (removeId) void run(() => invoke(actionIds.remove, { id: removeId }), "任务已删除");
134
+ });
135
+
136
+ document.querySelector("[data-refresh]").addEventListener("click", () => {
137
+ void run(async () => undefined, "清单已刷新");
138
+ });
139
+
140
+ const now = new Date();
141
+ document.querySelector("[data-date-day]").textContent = String(now.getDate()).padStart(2, "0");
142
+ document.querySelector("[data-date-label]").textContent = now.toLocaleDateString("zh-CN", { month: "long", weekday: "short" });
143
+ void refresh().catch((error) => setNotice(error instanceof Error ? error.message : String(error), "error"));
@@ -0,0 +1,48 @@
1
+ :root {
2
+ color-scheme: light;
3
+ font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
4
+ color: #24352d;
5
+ background: #edf3ed;
6
+ }
7
+
8
+ * { box-sizing: border-box; }
9
+ body { margin: 0; min-width: 320px; background: radial-gradient(circle at top left, #fff 0, #f6f8f3 36%, #e7efe8 100%); }
10
+ button, input { font: inherit; }
11
+ button { cursor: pointer; }
12
+ button:disabled, input:disabled { cursor: wait; opacity: .6; }
13
+ .app-shell { width: min(760px, calc(100% - 32px)); margin: 0 auto; padding: 36px 0 48px; }
14
+ .hero { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
15
+ .eyebrow { margin: 0 0 8px; color: #538164; font-size: 12px; font-weight: 800; letter-spacing: .18em; }
16
+ h1 { margin: 0; font-family: Georgia, "Noto Serif SC", serif; font-size: clamp(36px, 7vw, 56px); letter-spacing: -.04em; }
17
+ .hero p:last-child { margin: 8px 0 0; color: #6b7a70; }
18
+ .date-card { flex: 0 0 auto; width: 90px; padding: 16px 10px; border: 1px solid #d4dfd6; border-radius: 22px; background: rgba(255,255,255,.75); text-align: center; box-shadow: 0 12px 28px rgba(56,83,66,.08); }
19
+ .date-card strong { display: block; font-size: 32px; line-height: 1; }
20
+ .date-card span { display: block; margin-top: 7px; color: #738078; font-size: 12px; }
21
+ .composer { display: flex; gap: 10px; padding: 9px; border: 1px solid #dbe4dc; border-radius: 18px; background: #fff; box-shadow: 0 18px 50px rgba(64,90,72,.1); }
22
+ .composer input { min-width: 0; flex: 1; border: 0; outline: 0; padding: 12px 14px; color: #263a2e; background: transparent; }
23
+ .composer button, .actions button { border: 0; border-radius: 12px; padding: 12px 22px; color: #fff; background: #347052; font-weight: 700; }
24
+ .summary { display: flex; align-items: center; gap: 18px; padding: 18px 4px 10px; color: #68776d; font-size: 14px; }
25
+ .summary strong { color: #2d5d44; }
26
+ .text-button { margin-left: auto; border: 0; color: #4d725b; background: transparent; }
27
+ .todo-list { display: grid; gap: 10px; margin-top: 8px; }
28
+ .todo-item { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 16px 18px; border: 1px solid #dae4db; border-radius: 16px; background: rgba(255,255,255,.88); transition: transform .16s ease, opacity .16s ease; }
29
+ .todo-item:hover { transform: translateY(-1px); }
30
+ .todo-item p { margin: 0; line-height: 1.55; }
31
+ .todo-item.is-done { opacity: .62; }
32
+ .todo-item.is-done p { text-decoration: line-through; }
33
+ .check-button { width: 24px; height: 24px; padding: 0; border: 2px solid #76a083; border-radius: 50%; color: #fff; background: transparent; font-size: 13px; }
34
+ .is-done .check-button { background: #4d8663; }
35
+ .remove-button { border: 0; color: #9a695f; background: transparent; font-size: 13px; opacity: .7; }
36
+ .empty { display: flex; min-height: 180px; flex-direction: column; align-items: center; justify-content: center; gap: 8px; border: 1px dashed #cbd8cd; border-radius: 18px; color: #7d8b81; text-align: center; }
37
+ .empty strong { color: #4e6254; font-size: 18px; }
38
+ .notice { min-height: 22px; margin: 14px 4px; color: #6e7d72; font-size: 14px; }
39
+ .notice[data-tone="success"] { color: #347052; }
40
+ .notice[data-tone="error"] { color: #b14e43; }
41
+ .behind-scenes { margin-top: 28px; padding: 16px 18px; border: 1px solid #dce4dc; border-radius: 16px; color: #66746a; background: rgba(255,255,255,.55); font-size: 13px; }
42
+ .behind-scenes summary { color: #46594b; cursor: pointer; font-weight: 700; }
43
+ .behind-scenes p { line-height: 1.65; }
44
+ .behind-scenes dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 12px 0 0; }
45
+ .behind-scenes dl div { padding: 10px; border-radius: 10px; background: #fff; }
46
+ .behind-scenes dt { color: #879188; font-size: 11px; }
47
+ .behind-scenes dd { margin: 3px 0 0; color: #3e5143; overflow-wrap: anywhere; }
48
+ @media (max-width: 560px) { .app-shell { width: min(100% - 22px, 760px); padding-top: 24px; } .hero { align-items: flex-end; } .date-card { width: 76px; } .composer button { padding-inline: 16px; } .summary { gap: 10px; } .behind-scenes dl { grid-template-columns: 1fr; } }
@@ -0,0 +1,45 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>今日清单</title>
7
+ <link rel="stylesheet" href="assets/style.css" />
8
+ </head>
9
+ <body>
10
+ <main class="app-shell">
11
+ <header class="hero">
12
+ <div>
13
+ <p class="eyebrow">TODAY</p>
14
+ <h1>今日清单</h1>
15
+ <p>把脑子里的事情放下来,一件一件完成。</p>
16
+ </div>
17
+ <div class="date-card"><strong data-date-day>—</strong><span data-date-label>—</span></div>
18
+ </header>
19
+
20
+ <form class="composer" data-todo-form>
21
+ <input data-todo-input maxlength="160" placeholder="今天还要做什么?" autocomplete="off" />
22
+ <button type="submit">添加</button>
23
+ </form>
24
+
25
+ <section class="summary" aria-label="任务概况">
26
+ <span><strong data-open-count>0</strong> 件待完成</span>
27
+ <span><strong data-done-count>0</strong> 件已完成</span>
28
+ <button type="button" class="text-button" data-refresh>刷新</button>
29
+ </section>
30
+
31
+ <section class="todo-list" data-todo-list aria-live="polite">
32
+ <div class="empty">正在读取你的清单…</div>
33
+ </section>
34
+
35
+ <p class="notice" data-notice></p>
36
+
37
+ <details class="behind-scenes">
38
+ <summary>这个小应用背后发生了什么?</summary>
39
+ <p>每次添加、完成和删除都会调用同一组 Rust/WASM Service Action,并写入 NextClaw 管理的持久数据。关掉再打开,清单仍然存在;授权后的 Agent 也可以操作同一份数据。</p>
40
+ <dl><div><dt>数据</dt><dd data-proof-revision>等待读取</dd></div><div><dt>存储</dt><dd>NextClaw Host KV</dd></div></dl>
41
+ </details>
42
+ </main>
43
+ <script src="assets/app.js"></script>
44
+ </body>
45
+ </html>
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-todos",
3
+ "title": "今日清单",
4
+ "description": "记下今天要做的事,完成后轻轻划掉。",
5
+ "entry": "index.html",
6
+ "actions": [
7
+ "nextclaw-portable-runtime-lab-state.records_list",
8
+ "nextclaw-portable-runtime-lab-state.record_upsert",
9
+ "nextclaw-portable-runtime-lab-state.record_delete",
10
+ "nextclaw-portable-runtime-lab-state.data_snapshot"
11
+ ]
12
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-capabilities",
3
+ "title": "Portable Capability Component",
4
+ "description": "Rust/WASM 网络、拒绝、错误与超时演示模块。",
5
+ "protocol": "wasi-component",
6
+ "component": {
7
+ "entry": "service.wasm"
8
+ },
9
+ "actions": {
10
+ "network_allowed": { "risk": "external", "title": "访问允许的网络" },
11
+ "network_denied": { "risk": "read", "title": "验证网络拒绝" },
12
+ "structured_failure": { "risk": "dangerous", "title": "触发结构化失败" },
13
+ "simulate_timeout": {
14
+ "risk": "dangerous",
15
+ "title": "触发执行超时",
16
+ "timeoutMs": 1200
17
+ },
18
+ "runtime_info": { "risk": "read", "title": "查看共享宿主" }
19
+ }
20
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-composition",
3
+ "title": "Portable Composition Consumer",
4
+ "description": "通过宿主受控 component-call 调用 manifest 声明的 Provider。",
5
+ "protocol": "wasi-component",
6
+ "component": {
7
+ "entry": "service.wasm"
8
+ },
9
+ "providers": [
10
+ "nextclaw-portable-runtime-lab-provider"
11
+ ],
12
+ "actions": {
13
+ "compose_contact": {
14
+ "risk": "write",
15
+ "title": "组合联系人工作流",
16
+ "inputSchema": {
17
+ "type": "object",
18
+ "properties": {
19
+ "name": { "type": "string", "minLength": 1 },
20
+ "email": { "type": "string", "minLength": 3 },
21
+ "tags": { "type": "array", "items": { "type": "string" } }
22
+ },
23
+ "required": ["name", "email"],
24
+ "additionalProperties": false
25
+ }
26
+ },
27
+ "provider_denied": { "risk": "read", "title": "验证 Provider 拒绝" },
28
+ "runtime_info": { "risk": "read", "title": "查看 Consumer 宿主" }
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-provider",
3
+ "title": "Portable Contact Provider",
4
+ "description": "以独立 Rust/WASM 实例提供可复用联系人规范化合同。",
5
+ "protocol": "wasi-component",
6
+ "component": {
7
+ "entry": "service.wasm"
8
+ },
9
+ "lifecycle": {
10
+ "mode": "provider"
11
+ },
12
+ "actions": {
13
+ "contact_normalize": {
14
+ "risk": "write",
15
+ "title": "规范化联系人",
16
+ "inputSchema": {
17
+ "type": "object",
18
+ "properties": {
19
+ "name": { "type": "string", "minLength": 1 },
20
+ "email": { "type": "string", "minLength": 3 },
21
+ "tags": { "type": "array", "items": { "type": "string" } }
22
+ },
23
+ "required": ["name", "email"],
24
+ "additionalProperties": false
25
+ }
26
+ },
27
+ "provider_status": { "risk": "read", "title": "读取 Provider 状态" },
28
+ "runtime_info": { "risk": "read", "title": "查看 Provider 宿主" }
29
+ }
30
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-resident",
3
+ "title": "Portable Resident Component",
4
+ "description": "宿主持有同一个 Rust/WASM 实例,并在 Panel 关闭后继续投递定时事件。",
5
+ "protocol": "wasi-component",
6
+ "component": {
7
+ "entry": "service.wasm"
8
+ },
9
+ "lifecycle": {
10
+ "mode": "resident",
11
+ "eventIntervalMs": 1000
12
+ },
13
+ "actions": {
14
+ "resident_status": { "risk": "read", "title": "读取 Resident 状态" },
15
+ "resident_emit_event": {
16
+ "risk": "write",
17
+ "title": "向 Resident 投递事件",
18
+ "inputSchema": {
19
+ "type": "object",
20
+ "properties": {
21
+ "eventId": { "type": "string" },
22
+ "kind": { "type": "string" },
23
+ "triggeredAt": { "type": "string" }
24
+ },
25
+ "additionalProperties": false
26
+ }
27
+ },
28
+ "resident_reset": { "risk": "write", "title": "重置 Resident 证据" },
29
+ "runtime_info": { "risk": "read", "title": "查看 Resident 宿主" }
30
+ }
31
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "id": "nextclaw-portable-runtime-lab-state",
3
+ "title": "Portable State Component",
4
+ "description": "Rust/WASM 状态与共享宿主演示模块。",
5
+ "protocol": "wasi-component",
6
+ "component": {
7
+ "entry": "service.wasm"
8
+ },
9
+ "actions": {
10
+ "counter_read": { "risk": "read", "title": "读取持久计数" },
11
+ "counter_increment": {
12
+ "risk": "write",
13
+ "title": "增加持久计数",
14
+ "inputSchema": {
15
+ "type": "object",
16
+ "properties": { "step": { "type": "integer" } }
17
+ }
18
+ },
19
+ "records_seed": { "risk": "write", "title": "生成验证数据" },
20
+ "records_list": { "risk": "read", "title": "列出验证数据" },
21
+ "record_upsert": {
22
+ "risk": "write",
23
+ "title": "创建或修改记录",
24
+ "inputSchema": {
25
+ "type": "object",
26
+ "properties": {
27
+ "id": { "type": "string", "minLength": 1, "maxLength": 48 },
28
+ "title": { "type": "string", "minLength": 1 },
29
+ "status": { "type": "string" },
30
+ "tags": { "type": "array", "items": { "type": "string" } }
31
+ },
32
+ "required": ["id", "title"],
33
+ "additionalProperties": false
34
+ }
35
+ },
36
+ "record_delete": {
37
+ "risk": "write",
38
+ "title": "删除记录",
39
+ "inputSchema": {
40
+ "type": "object",
41
+ "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 48 } },
42
+ "required": ["id"],
43
+ "additionalProperties": false
44
+ }
45
+ },
46
+ "data_snapshot": { "risk": "read", "title": "读取数据快照" },
47
+ "runtime_info": { "risk": "read", "title": "查看共享宿主" }
48
+ }
49
+ }